|
@@ -1,211 +1,211 @@
|
|
|
-import {
|
|
|
- getProjectPermission,
|
|
|
- getUserProjectPermissions,
|
|
|
- getUserOrganizationPermissions,
|
|
|
- validationProjectPermission,
|
|
|
- validationOrganizationPermission,
|
|
|
- getSetApprove
|
|
|
-} from '@/httpApi/datacenter'
|
|
|
-import store from '../store';
|
|
|
-import {
|
|
|
- MessageBox,
|
|
|
- Message
|
|
|
-} from 'element-ui';
|
|
|
-import message from './message.js';
|
|
|
-let organization, project, user;
|
|
|
-let checker = []; //审核人
|
|
|
-const initData = () => {
|
|
|
- organization = store.getters.organization;
|
|
|
- project = store.getters.project;
|
|
|
- user = store.getters.user;
|
|
|
-}
|
|
|
-//permission:1-公开 2-私密 3-密码
|
|
|
-const permission = (option, callback) => {
|
|
|
- switch (option.permissions) {
|
|
|
- case '1':
|
|
|
- callback();
|
|
|
- break;
|
|
|
- case '2':
|
|
|
- privacy(option, callback);
|
|
|
- break;
|
|
|
- case '3':
|
|
|
- password(option, callback);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-}
|
|
|
-//私密操作
|
|
|
-const privacy = (option, callback) => {
|
|
|
- if (option.approveType === 1) {
|
|
|
- getUserProjectPermissions(option.id, user.userId).then(res => {
|
|
|
- privacySuccessFunc(res, option, callback)
|
|
|
- })
|
|
|
- } else if (option.approveType === 2) {
|
|
|
- getUserOrganizationPermissions(option.id, user.userId).then(res => {
|
|
|
- privacySuccessFunc(res, option, callback)
|
|
|
- })
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-const privacySuccessFunc = (res, option, callback) => {
|
|
|
- if (res.state) {
|
|
|
- let data = res.data || {};
|
|
|
- //权限通过
|
|
|
- if (data[option.type]) return callback();
|
|
|
- //权限不通过,是否申请权限
|
|
|
- approveUser(option, callback);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-const approveUser = (option, callback) => {
|
|
|
- getSetApprove({
|
|
|
- project: project.id,
|
|
|
- operationOrganizationId: option.operationOrganizationId,
|
|
|
- type: option.approveType
|
|
|
- }).then(res => {
|
|
|
- if (res.state) {
|
|
|
- let obj = res.data[0] || {};
|
|
|
- if (obj.checker) checker = JSON.parse(obj.checker).map(node => -node[node.length - 1]);
|
|
|
- if (checker.filter(id => id === user.userId).length > 0) return callback();
|
|
|
- //仅申请文件夹访问和文件下载
|
|
|
- approveTip(option)
|
|
|
- }
|
|
|
- })
|
|
|
-}
|
|
|
-
|
|
|
-const approveTip = (option) => {
|
|
|
- let title = option.type === 'access' ? '该文件是私密文件夹,是否申请访问?' : '该文件是私密文件,是否申请下载?';
|
|
|
- MessageBox.confirm(title, '系统提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- cancelButtonClass: 'cancel',
|
|
|
- confirmButtonClass: 'confirm',
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- if (checker.length === 0) return Message.warning('暂未设置审核人');
|
|
|
- let folder = '';
|
|
|
- for (let i = 0; i < option.folderList.length; i++) {
|
|
|
- folder += ('-' + option.folderList[i].name);
|
|
|
- }
|
|
|
- let folderName = `【${option.typeName}${folder}-${option.name}】`;
|
|
|
- let title = option.type === 'access' ? `申请访问${folderName}` : `申请下载${folderName}`;
|
|
|
- message.sendFlowMessage({}, {
|
|
|
- operation: title,
|
|
|
- receiver: checker.join(','),
|
|
|
- messageType: 5,
|
|
|
- dataType: returnType(option)[option.type],
|
|
|
- dataId: option.id
|
|
|
- }).then(res => {
|
|
|
- if (res.state) Message.success('申请成功,请等待审核');
|
|
|
- })
|
|
|
- }).catch(() => {});
|
|
|
-}
|
|
|
-
|
|
|
-const returnType = (option) => {
|
|
|
- let obj = {};
|
|
|
- switch (option.approveType) {
|
|
|
- case 1:
|
|
|
- obj = {
|
|
|
- access: 1,
|
|
|
- fileDownload: 2
|
|
|
- }
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- obj = {
|
|
|
- access: 3,
|
|
|
- fileDownload: 4
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- return obj;
|
|
|
-}
|
|
|
-//密码验证
|
|
|
-const password = (option, callback) => {
|
|
|
- let title = option.type === 'access' ? '该文件是加密文件夹,请输入密码访问' : '该文件是加密文件,请输入密码下载?';
|
|
|
- MessageBox.prompt(title, '系统提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- cancelButtonClass: 'cancel',
|
|
|
- confirmButtonClass: 'confirm',
|
|
|
- type: 'warning',
|
|
|
- inputType: 'password',
|
|
|
- customClass:'input-message'
|
|
|
- }).then(({
|
|
|
- value
|
|
|
- }) => {
|
|
|
- if (option.approveType === 1) {
|
|
|
- validationProjectPermission(option.permissionsId, value).then(res => {
|
|
|
- passwordSuccessFunc(res, callback)
|
|
|
- })
|
|
|
- } else if (option.approveType === 2) {
|
|
|
- validationOrganizationPermission(option.id, value).then(res => {
|
|
|
- passwordSuccessFunc(res, callback)
|
|
|
- })
|
|
|
- }
|
|
|
- }).catch(() => {});
|
|
|
-}
|
|
|
-const passwordSuccessFunc = (res, callback) => {
|
|
|
- if (res.state) {
|
|
|
- if (res.data) return callback();
|
|
|
- Message.warning('密码错误');
|
|
|
- }
|
|
|
-}
|
|
|
-/*
|
|
|
- * 项目中心文件夹以及文件权限
|
|
|
- * option['type'] = access-访问/create创建/delete-删除/edit-修改/fileDelete-文件删除/fileDownload-文件下载/fileUpload-文件上传/fileView-文件预览
|
|
|
- */
|
|
|
-export function projectPermission(option, callback) {
|
|
|
- if (!user) initData();
|
|
|
- //获取最新权限
|
|
|
- option['dataType'] = 'project';
|
|
|
- option['typeName'] = '项目中心';
|
|
|
- option['approveType'] = 1;
|
|
|
- option['operationOrganizationId'] = -1;
|
|
|
- getProjectPermission(option.id, -1).then(res => {
|
|
|
- if (res.state) {
|
|
|
- option['permissions'] = res.data == null ? option.oldPermission : res.data.permissions;
|
|
|
- if (res.data) option['permissionsId'] = res.data.id;
|
|
|
- permission(option, callback);
|
|
|
- }
|
|
|
- })
|
|
|
-}
|
|
|
-/*
|
|
|
- * 企业中心文件夹以及文件权限
|
|
|
- *
|
|
|
- */
|
|
|
-export function organizationPermission(option, callback) {
|
|
|
- if (!user) initData();
|
|
|
- option['dataType'] = 'organization';
|
|
|
- option['typeName'] = '企业中心';
|
|
|
- option['approveType'] = 2;
|
|
|
- option['operationOrganizationId'] = organization.id;
|
|
|
- permission(option, callback);
|
|
|
-}
|
|
|
-/*
|
|
|
- * 下载文件
|
|
|
- *
|
|
|
- */
|
|
|
-export function downloadFileDom(data, fileName) {
|
|
|
- let blob = new Blob([data], {
|
|
|
- type: 'application/octet-stream'
|
|
|
- }); // 转化为blob对象
|
|
|
- if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
|
|
- window.navigator.msSaveBlob(blob, fileName);
|
|
|
- } else {
|
|
|
- var blobURL = window.URL.createObjectURL(blob); // 将blob对象转为一个URL
|
|
|
- var tempLink = document.createElement('a'); // 创建一个a标签
|
|
|
- tempLink.style.display = 'none';
|
|
|
- tempLink.href = blobURL;
|
|
|
- tempLink.setAttribute('download', fileName); // 给a标签添加下载属性
|
|
|
- if (typeof tempLink.download === 'undefined') {
|
|
|
- tempLink.setAttribute('target', '_blank');
|
|
|
- }
|
|
|
- document.body.appendChild(tempLink); // 将a标签添加到body当中
|
|
|
- tempLink.click(); // 启动下载
|
|
|
- document.body.removeChild(tempLink); // 下载完毕删除a标签
|
|
|
- window.URL.revokeObjectURL(blobURL);
|
|
|
- }
|
|
|
+import {
|
|
|
+ getProjectPermission,
|
|
|
+ getUserProjectPermissions,
|
|
|
+ getUserOrganizationPermissions,
|
|
|
+ validationProjectPermission,
|
|
|
+ validationOrganizationPermission,
|
|
|
+ getSetApprove
|
|
|
+} from '@/httpApi/datacenter'
|
|
|
+import store from '../store';
|
|
|
+import {
|
|
|
+ MessageBox,
|
|
|
+ Message
|
|
|
+} from 'element-ui';
|
|
|
+import message from './message.js';
|
|
|
+let organization, project, user;
|
|
|
+let checker = []; //审核人
|
|
|
+const initData = () => {
|
|
|
+ organization = store.getters.organization;
|
|
|
+ project = store.getters.project;
|
|
|
+ user = store.getters.user;
|
|
|
+}
|
|
|
+//permission:1-公开 2-私密 3-密码
|
|
|
+const permission = (option, callback) => {
|
|
|
+ switch (option.permissions) {
|
|
|
+ case '1':
|
|
|
+ callback();
|
|
|
+ break;
|
|
|
+ case '2':
|
|
|
+ privacy(option, callback);
|
|
|
+ break;
|
|
|
+ case '3':
|
|
|
+ password(option, callback);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+//私密操作
|
|
|
+const privacy = (option, callback) => {
|
|
|
+ if (option.approveType === 1) {
|
|
|
+ getUserProjectPermissions(option.id, user.userId).then(res => {
|
|
|
+ privacySuccessFunc(res, option, callback)
|
|
|
+ })
|
|
|
+ } else if (option.approveType === 2) {
|
|
|
+ getUserOrganizationPermissions(option.id, user.userId).then(res => {
|
|
|
+ privacySuccessFunc(res, option, callback)
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const privacySuccessFunc = (res, option, callback) => {
|
|
|
+ if (res.state) {
|
|
|
+ let data = res.data || {};
|
|
|
+ //权限通过
|
|
|
+ if (data[option.type]) return callback();
|
|
|
+ //权限不通过,是否申请权限
|
|
|
+ approveUser(option, callback);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const approveUser = (option, callback) => {
|
|
|
+ getSetApprove({
|
|
|
+ projectId: project.id,
|
|
|
+ operationOrganizationId: option.operationOrganizationId,
|
|
|
+ type: option.approveType
|
|
|
+ }).then(res => {
|
|
|
+ if (res.state) {
|
|
|
+ let obj = res.data[0] || {};
|
|
|
+ if (obj.checker) checker = JSON.parse(obj.checker).map(node => -node[node.length - 1]);
|
|
|
+ if (checker.filter(id => id === user.userId).length > 0) return callback();
|
|
|
+ //仅申请文件夹访问和文件下载
|
|
|
+ approveTip(option)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const approveTip = (option) => {
|
|
|
+ let title = option.type === 'access' ? '该文件是私密文件夹,是否申请访问?' : '该文件是私密文件,是否申请下载?';
|
|
|
+ MessageBox.confirm(title, '系统提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ cancelButtonClass: 'cancel',
|
|
|
+ confirmButtonClass: 'confirm',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ if (checker.length === 0) return Message.warning('暂未设置审核人');
|
|
|
+ let folder = '';
|
|
|
+ for (let i = 0; i < option.folderList.length; i++) {
|
|
|
+ folder += ('-' + option.folderList[i].name);
|
|
|
+ }
|
|
|
+ let folderName = `【${option.typeName}${folder}-${option.name}】`;
|
|
|
+ let title = option.type === 'access' ? `申请访问${folderName}` : `申请下载${folderName}`;
|
|
|
+ message.sendFlowMessage({}, {
|
|
|
+ operation: title,
|
|
|
+ receiver: checker.join(','),
|
|
|
+ messageType: 5,
|
|
|
+ dataType: returnType(option)[option.type],
|
|
|
+ dataId: option.id
|
|
|
+ }).then(res => {
|
|
|
+ if (res.state) Message.success('申请成功,请等待审核');
|
|
|
+ })
|
|
|
+ }).catch(() => {});
|
|
|
+}
|
|
|
+
|
|
|
+const returnType = (option) => {
|
|
|
+ let obj = {};
|
|
|
+ switch (option.approveType) {
|
|
|
+ case 1:
|
|
|
+ obj = {
|
|
|
+ access: 1,
|
|
|
+ fileDownload: 2
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ obj = {
|
|
|
+ access: 3,
|
|
|
+ fileDownload: 4
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
+}
|
|
|
+//密码验证
|
|
|
+const password = (option, callback) => {
|
|
|
+ let title = option.type === 'access' ? '该文件是加密文件夹,请输入密码访问' : '该文件是加密文件,请输入密码下载?';
|
|
|
+ MessageBox.prompt(title, '系统提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ cancelButtonClass: 'cancel',
|
|
|
+ confirmButtonClass: 'confirm',
|
|
|
+ type: 'warning',
|
|
|
+ inputType: 'password',
|
|
|
+ customClass: 'input-message'
|
|
|
+ }).then(({
|
|
|
+ value
|
|
|
+ }) => {
|
|
|
+ if (option.approveType === 1) {
|
|
|
+ validationProjectPermission(option.permissionsId, value).then(res => {
|
|
|
+ passwordSuccessFunc(res, callback)
|
|
|
+ })
|
|
|
+ } else if (option.approveType === 2) {
|
|
|
+ validationOrganizationPermission(option.id, value).then(res => {
|
|
|
+ passwordSuccessFunc(res, callback)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }).catch(() => {});
|
|
|
+}
|
|
|
+const passwordSuccessFunc = (res, callback) => {
|
|
|
+ if (res.state) {
|
|
|
+ if (res.data) return callback();
|
|
|
+ Message.warning('密码错误');
|
|
|
+ }
|
|
|
+}
|
|
|
+/*
|
|
|
+ * 项目中心文件夹以及文件权限
|
|
|
+ * option['type'] = access-访问/create创建/delete-删除/edit-修改/fileDelete-文件删除/fileDownload-文件下载/fileUpload-文件上传/fileView-文件预览
|
|
|
+ */
|
|
|
+export function projectPermission(option, callback) {
|
|
|
+ if (!user) initData();
|
|
|
+ //获取最新权限
|
|
|
+ option['dataType'] = 'project';
|
|
|
+ option['typeName'] = '项目中心';
|
|
|
+ option['approveType'] = 1;
|
|
|
+ option['operationOrganizationId'] = -1;
|
|
|
+ getProjectPermission(option.id, -1).then(res => {
|
|
|
+ if (res.state) {
|
|
|
+ option['permissions'] = res.data == null ? option.oldPermission : res.data.permissions;
|
|
|
+ if (res.data) option['permissionsId'] = res.data.id;
|
|
|
+ permission(option, callback);
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+/*
|
|
|
+ * 企业中心文件夹以及文件权限
|
|
|
+ *
|
|
|
+ */
|
|
|
+export function organizationPermission(option, callback) {
|
|
|
+ if (!user) initData();
|
|
|
+ option['dataType'] = 'organization';
|
|
|
+ option['typeName'] = '企业中心';
|
|
|
+ option['approveType'] = 2;
|
|
|
+ option['operationOrganizationId'] = organization.id;
|
|
|
+ permission(option, callback);
|
|
|
+}
|
|
|
+/*
|
|
|
+ * 下载文件
|
|
|
+ *
|
|
|
+ */
|
|
|
+export function downloadFileDom(data, fileName) {
|
|
|
+ let blob = new Blob([data], {
|
|
|
+ type: 'application/octet-stream'
|
|
|
+ }); // 转化为blob对象
|
|
|
+ if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
|
|
+ window.navigator.msSaveBlob(blob, fileName);
|
|
|
+ } else {
|
|
|
+ var blobURL = window.URL.createObjectURL(blob); // 将blob对象转为一个URL
|
|
|
+ var tempLink = document.createElement('a'); // 创建一个a标签
|
|
|
+ tempLink.style.display = 'none';
|
|
|
+ tempLink.href = blobURL;
|
|
|
+ tempLink.setAttribute('download', fileName); // 给a标签添加下载属性
|
|
|
+ if (typeof tempLink.download === 'undefined') {
|
|
|
+ tempLink.setAttribute('target', '_blank');
|
|
|
+ }
|
|
|
+ document.body.appendChild(tempLink); // 将a标签添加到body当中
|
|
|
+ tempLink.click(); // 启动下载
|
|
|
+ document.body.removeChild(tempLink); // 下载完毕删除a标签
|
|
|
+ window.URL.revokeObjectURL(blobURL);
|
|
|
+ }
|
|
|
}
|