123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- import {
- getProjectPermission,
- getUserProjectPermissions,
- getUserOrganizationPermissions,
- validationProjectPermission,
- validationOrganizationPermission,
- getSetApprove
- } from '@/request/api/datacenter.js'
- import store from '../store';
- 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) => {
- console.log(option);
- 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.code === 200) {
- 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.code === 200) {
- 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 operationName = (type) => {
- let str = '';
- switch (type) {
- case 'access':
- str = '访问';
- break;
- case 'create':
- str = '创建';
- break;
- case 'delete':
- str = '删除';
- break;
- case 'edit':
- str = '编辑';
- break;
- case 'fileDelete':
- str = '删除';
- break;
- case 'fileDownload':
- str = '下载';
- break;
- case 'fileUpload':
- str = '上传';
- break;
- case 'fileView':
- str = '预览';
- break;
- default:
- break;
- }
- return str;
- }
- const approveTip = (option) => {
- let title = `该文件是私密文件夹,是否申请${operationName(option.type)}?`;
- uni.showModal({
- title: '系统提示',
- content: title,
- success: function(res) {
- if (res.confirm) {
- if (checker.length === 0) return uni.showToast({
- title: '暂未设置审核人',
- icon: "none"
- });
- 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 = `申请${operationName(option.type)}${folderName}`;
- message.sendFlowMessage({}, {
- operation: title,
- receiver: checker.join(','),
- messageType: 5,
- dataType: returnType(option)[option.type],
- dataId: option.id
- }).then(res => {
- if (res.code === 200) uni.showToast({
- title: '申请成功,请等待审核',
- icon: "none"
- });
- })
- }
- }
- });
- }
- const returnType = (option) => {
- let obj = {};
- switch (option.approveType) {
- case 1:
- obj = {
- access: 1,
- create: 2,
- delete: 3,
- edit: 4,
- fileDelete: 5,
- fileDownload: 6,
- fileUpload: 7,
- fileView: 8
- }
- break;
- case 2:
- obj = {
- access: 9,
- create: 10,
- delete: 11,
- edit: 12,
- fileDelete: 13,
- fileDownload: 14,
- fileUpload: 15,
- fileView: 16
- }
- break;
- default:
- break;
- }
- return obj;
- }
- //密码验证
- const password = (option, callback) => {
- let title = `该文件是加密文件夹,请输入密码${operationName(option.type)}?`;
- uni.showModal({
- title: title,
- editable: true,
- placeholderText: '请输入密码',
- success: function(res) {
- if (res.confirm) {
- if (res.content) return uni.showToast({
- title: '密码错误',
- icon: "none"
- });
- if (option.approveType === 1) {
- validationProjectPermission(option.permissionsId, res.content).then(res => {
- passwordSuccessFunc(res, callback)
- })
- } else if (option.approveType === 2) {
- validationOrganizationPermission(option.id, res.content).then(res => {
- passwordSuccessFunc(res, callback)
- })
- }
- }
- }
- });
- }
- const passwordSuccessFunc = (res, callback) => {
- if (res.code === 200) {
- if (res.data) return callback();
- uni.showToast({
- title: '密码错误',
- icon: "none"
- });
- }
- }
- /*
- * 项目中心文件夹以及文件权限
- * 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.code === 200) {
- 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);
- }
- }
|