451 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			451 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|   | <template> | |||
|  |   <el-container> | |||
|  |     <div id="repositoryInfoUpfile" style="height: 500px;width: 100%;"> | |||
|  |       <div v-if="havingWritePerm && !isPublish && !isStop && !isApproval" style="height: 40px;"> | |||
|  |         <el-tooltip class="item" placement="bottom-start" :hide-after=5000> | |||
|  |           <div slot="content">附件格式支持:<br/>jpg, jpeg, gif, png, bmp, pdf, doc, docx, ppt, pptx, xls, xlsx, txt, mp3, mp4, avi, mpeg, flv, swf, wmv</div> | |||
|  |           <awsui-button style="width: 130px;" class="button-general-color" type="primary" @click="openFileSelect()" :disabled="isPublish || isStop || isApproval">上传附件</awsui-button> | |||
|  |         </el-tooltip> | |||
|  |         <PALUpload ref="orgUpload" style="width: 100%;" | |||
|  |                    class="upload-demo" | |||
|  |                    appId="com.actionsoft.apps.coe.pal" | |||
|  |                    :repositoryName=repositoryName | |||
|  |                    :multiple=true | |||
|  |                    :groupValue=groupValue | |||
|  |                    :fileValue=id | |||
|  |                    :show-file-list=false | |||
|  |                    :on-success="uploadSuccess" | |||
|  |                    :before-upload="beforeUpload" | |||
|  |                    accept=".jpg,.jpeg,.gif,.png,.bmp,.pdf,.doc,.docx,.ppt,.pptx,.xls,.xlsx,.txt,.mp3,.mp4,.avi,.mpeg,.flv,.swf,.wmv" | |||
|  |                    :file-list="fileList"> | |||
|  |           <div style="display: none;"> | |||
|  |             <awsui-button id="selectFileButton" style="width: 130px;" class="button-general-color" type="primary">Excel文件上传</awsui-button> | |||
|  |           </div> | |||
|  |         </PALUpload> | |||
|  |       </div> | |||
|  |       <div style="height: 460px;width: 100%;overflow: auto;"> | |||
|  |         <div> | |||
|  |           <el-table | |||
|  |             :show-header=false | |||
|  |             :data="fileTable" | |||
|  |             style="width: 100%"> | |||
|  |             <el-table-column | |||
|  |               prop="name" | |||
|  |               label="名称" | |||
|  |               min-width="300"> | |||
|  |             </el-table-column> | |||
|  |             <el-table-column v-if="isHighSecurity" | |||
|  |               prop="securityLevel" | |||
|  |               label="文件密级" | |||
|  |               min-width="50"> | |||
|  |             </el-table-column> | |||
|  |             <el-table-column | |||
|  |               prop="operate" | |||
|  |               label="操作" | |||
|  |               align="center" | |||
|  |               width="150"> | |||
|  |               <template slot-scope="scope"> | |||
|  |                 <el-tooltip v-if="onlineDoc" content="预览" placement="bottom" :hide-after=2000> | |||
|  |                   <i class="iconfont operate-icon-display" style="cursor: pointer;" @click="readFile(scope.row.id)"></i> | |||
|  |                 </el-tooltip> | |||
|  |                 <el-tooltip content="下载" placement="bottom" :hide-after=2000> | |||
|  |                   <i class="iconfont operate-icon-display" style="cursor: pointer;padding-left: 15px;" @click="downloadFile(scope.row.url)"></i> | |||
|  |                 </el-tooltip> | |||
|  |                 <el-tooltip v-if="havingRemovePerm && !isPublish && !isStop && !isApproval" content="删除" placement="bottom" :hide-after=2000> | |||
|  |                   <i class="iconfont icon-lajitong1 operate-icon-display" style="cursor: pointer;padding-left: 15px;" @click="deleteFile(scope.row.name, scope.row.id)"></i> | |||
|  |                 </el-tooltip> | |||
|  |               </template> | |||
|  |             </el-table-column> | |||
|  |           </el-table> | |||
|  |         </div> | |||
|  |         <div style="height: 25px;line-height: 25px;vertical-align: center;margin: 30px 30px 15px 0px;border-left: 3px solid #4E7FF9;"><p style="padding-left: 5px;"><b>关联附件</b></p></div> | |||
|  |         <div> | |||
|  |           <el-table | |||
|  |             :show-header=false | |||
|  |             :data="relationFileTable" | |||
|  |             style="width: 100%"> | |||
|  |             <el-table-column | |||
|  |               prop="name" | |||
|  |               label="名称" | |||
|  |               min-width="300"> | |||
|  |             </el-table-column> | |||
|  |             <el-table-column v-if="isHighSecurity" | |||
|  |               prop="securityLevel" | |||
|  |               label="文件密级" | |||
|  |               min-width="50"> | |||
|  |             </el-table-column> | |||
|  |             <el-table-column | |||
|  |               prop="operate" | |||
|  |               label="操作" | |||
|  |               align="center" | |||
|  |               width="150"> | |||
|  |               <template slot-scope="scope"> | |||
|  |                 <el-tooltip content="预览" placement="bottom" :hide-after=2000> | |||
|  |                   <i class="iconfont operate-icon-display" style="cursor: pointer;" @click="readFile(scope.row.id)"></i> | |||
|  |                 </el-tooltip> | |||
|  |                 <el-tooltip content="下载" placement="bottom" :hide-after=2000> | |||
|  |                   <i class="iconfont operate-icon-display" style="cursor: pointer;padding-left: 15px;" @click="downloadFile(scope.row.url)"></i> | |||
|  |                 </el-tooltip> | |||
|  |               </template> | |||
|  |             </el-table-column> | |||
|  |           </el-table> | |||
|  |         </div> | |||
|  |       </div> | |||
|  |     </div> | |||
|  |     <div > | |||
|  |       <awsui-dialog | |||
|  |             title="密级标定" | |||
|  |             :visible.sync="securityVisible" | |||
|  |             :border="false" | |||
|  |             append-to-body | |||
|  |             width="500px"> | |||
|  |           <div style="max-height:500px;overflow-y: auto"> | |||
|  |             <awsui-form :ref="file.uid" label-width="200px" id="securityDialog" :rules="securityRules" v-for="file in securityFileList" :key="file.uid" :model="file"> | |||
|  |               <awsui-form-item :label="file.name"  prop="securityLevel"> | |||
|  |                   <awsui-select v-model="file.securityLevel" :options="securityOptions" style="width:70%"></awsui-select> | |||
|  |               </awsui-form-item> | |||
|  |             </awsui-form> | |||
|  |           </div> | |||
|  |         <div slot="footer" class="dialog-footer"> | |||
|  |             <awsui-button type="primary" @click="uploadServer">确定</awsui-button> | |||
|  |             <awsui-button @click="securityVisible = false">取 消</awsui-button> | |||
|  |         </div> | |||
|  |       </awsui-dialog> | |||
|  |     </div> | |||
|  |   </el-container> | |||
|  |    | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  |   import PALUpload from "@/components/common/upload/index.vue"; | |||
|  |   import awsuiAxios from "../../awsuiAxios"; | |||
|  |     export default { | |||
|  |       name: "RepositoryInfoUpfile", | |||
|  |       components: {PALUpload}, | |||
|  |       props: ['id', 'versionId', 'isUse', 'isPublish', 'isStop', 'isApproval'], | |||
|  |       data() { | |||
|  |           var securityValidate = (rule, value, callback) => { | |||
|  |             if (value === undefined ) { | |||
|  |               callback(new Error('请选择文件密级')); | |||
|  |             } else { | |||
|  |               callback(); | |||
|  |             } | |||
|  |           }; | |||
|  |           return { | |||
|  |             fileTable: [], | |||
|  |             relationFileTable: [], | |||
|  |             fileList: [], | |||
|  |             groupValue: 'file', | |||
|  |             onlineDoc: true, | |||
|  |             havingWritePerm: false, | |||
|  |             havingRemovePerm: false, | |||
|  |             havingVersionManagePerm: false, | |||
|  |             isHighSecurity: false, | |||
|  |             isFileSecurity: false, | |||
|  |             securityList: {}, | |||
|  |             repositoryName: 'COE_Upfile', | |||
|  |             securityVisible: false, | |||
|  |             securityFileList: [], | |||
|  |             securityOptions:[], | |||
|  |             securityRules: { | |||
|  |               securityLevel: [{ required: true, trigger: "change", validator: securityValidate ,type: "number"}], | |||
|  |             }, | |||
|  |             validateFlag: true, | |||
|  |           } | |||
|  |       }, | |||
|  |       created() { | |||
|  |         this.initData(); | |||
|  |         this.initRelationData(); | |||
|  |       }, | |||
|  |       watch: { | |||
|  |         //密级选择dialogVisible 变为false,清空securityFileList
 | |||
|  |         securityVisible(newval, oldval){ | |||
|  |             if(!newval){ | |||
|  |               this.securityFileList.splice(0,this.securityFileList.length); | |||
|  |             } | |||
|  |         }, | |||
|  |       }, | |||
|  |       methods: { | |||
|  |         initData() { | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_processlevel_upfile_load', | |||
|  |               pl_uuid: that.id, | |||
|  |               type: 'file', | |||
|  |               wsId: that.$store.getters.getWsIdFn, | |||
|  |               teamId: that.$store.getters.getTeamIdFn | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             if(ro.result == 'ok') { | |||
|  |               that.havingWritePerm = ro.data.havingWritePerm; | |||
|  |               that.havingRemovePerm = ro.data.havingRemovePerm; | |||
|  |               that.havingVersionManagePerm = ro.data.havingVersionManagePerm; | |||
|  |               //三员管理
 | |||
|  |               that.isHighSecurity = ro.data.isHighSecurity; | |||
|  |               that.isFileSecurity = ro.data.isFileSecurity; | |||
|  |               that.securityList = ro.data.securityList; | |||
|  |               if(ro.data.isHighSecurity){ | |||
|  |                 that.repositoryName = 'tmp'; | |||
|  |               } | |||
|  |               const list = ro.data.list; | |||
|  |               let fileTable = []; | |||
|  |               for (let i = 0; i < list.length; i++) { | |||
|  |                 const curr = list[i]; | |||
|  |                 const tableRow = { | |||
|  |                   id: curr.uuid, | |||
|  |                   name: curr.fileName, | |||
|  |                   url: curr.url, | |||
|  |                   securityLevel: that.isHighSecurity ? ro.data.securityList[curr.securityLevel]: "", | |||
|  |                 }; | |||
|  |                 fileTable.push(tableRow); | |||
|  |               } | |||
|  |               that.fileTable = fileTable; | |||
|  |             } | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         }, | |||
|  |         initRelationData() { | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_processlevel_relation_upfile_load', | |||
|  |               pl_uuid: that.id, | |||
|  |               type: 'file' | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             if(ro.result == 'ok') { | |||
|  |               //三员管理
 | |||
|  |               that.isHighSecurity = ro.data.isHighSecurity; | |||
|  |               that.securityList = ro.data.securityList; | |||
|  |               if(ro.data.isHighSecurity){ | |||
|  |                 that.repositoryName = 'tmp'; | |||
|  |               } | |||
|  |               const list = ro.data.list; | |||
|  |               let relationFileTable = []; | |||
|  |               for (let i = 0; i < list.length; i++) { | |||
|  |                 const curr = list[i]; | |||
|  |                 const tableRow = { | |||
|  |                   id: curr.uuid, | |||
|  |                   name: curr.fileName, | |||
|  |                   url: curr.url, | |||
|  |                   securityLevel: that.isHighSecurity ? that.securityList[curr.securityLevel] : "", | |||
|  |                 }; | |||
|  |                 relationFileTable.push(tableRow); | |||
|  |               } | |||
|  |               that.relationFileTable = relationFileTable; | |||
|  |             } | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         }, | |||
|  |         openFileSelect() { | |||
|  |           let that = this; | |||
|  |           // 文件访问权限控制
 | |||
|  |           if(that.isHighSecurity && that.isFileSecurity){ | |||
|  |             const data = { | |||
|  |               url:'jd', | |||
|  |               data:{ | |||
|  |                 cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_query', | |||
|  |                 uuid: that.id, | |||
|  |               } | |||
|  |             }; | |||
|  |             awsuiAxios.post(data).then(function (ro) { | |||
|  |               if(ro.result == 'ok') { | |||
|  |                 document.getElementById("selectFileButton").click(); | |||
|  |               }else{ | |||
|  |                 that.$message.error(ro.msg); | |||
|  |               } | |||
|  |             }).catch(error=>{ | |||
|  |               console.log(error); | |||
|  |               that.$message.error(error.msg); | |||
|  |             }) | |||
|  |           }else{ | |||
|  |             document.getElementById("selectFileButton").click(); | |||
|  |           } | |||
|  |         }, | |||
|  |         uploadSuccess(response, file, fileList) {// 上传完成后保存
 | |||
|  |           //开启三员管理
 | |||
|  |           if(this.isHighSecurity){ | |||
|  |             //开启密级标定dialog
 | |||
|  |             if(!this.securityVisible){ | |||
|  |               this.securityVisible = true; | |||
|  |             } | |||
|  |             //设置密级options
 | |||
|  |             if(this.securityOptions.length == 0){ | |||
|  |                Object.keys(this.securityList).map(key =>{ | |||
|  |                    let option= { | |||
|  |                    value: key, | |||
|  |                    label: this.securityList[key] | |||
|  |                  } | |||
|  |                  this.securityOptions.push(option); | |||
|  |                }) | |||
|  |             } | |||
|  |             this.securityFileList.push(file);        | |||
|  |           }else{ | |||
|  |             const that = this; | |||
|  |             const data = { | |||
|  |               url:'jd', | |||
|  |               data:{ | |||
|  |                 cmd: 'com.actionsoft.apps.coe.pal_processlevel_upfile_add', | |||
|  |                 pl_uuid: that.id, | |||
|  |                 shape_uuid: "", | |||
|  |                 type: 'file', | |||
|  |                 fileName: file.name, | |||
|  |                 download: 1 // 全部可下载
 | |||
|  |               } | |||
|  |             }; | |||
|  |             // 查询数据
 | |||
|  |             awsuiAxios.post(data).then(function (ro) { | |||
|  |               if(ro.result == 'ok') { | |||
|  |                 that.$message({ | |||
|  |                   message: '['+ file.name +']上传成功', | |||
|  |                   type: 'success' | |||
|  |                 }); | |||
|  |                 that.initData(); | |||
|  |               } else { | |||
|  |                 that.$message.error('['+ file.name +']上传失败'); | |||
|  |               } | |||
|  |             }).catch(error=>{ | |||
|  |               console.log(error); | |||
|  |             }) | |||
|  |           } | |||
|  |         }, | |||
|  |         uploadServer(){ //三员管理下附件上传
 | |||
|  |           this.validateFlag = true; | |||
|  |           //规则校验
 | |||
|  |           for(let i=0;i<this.securityFileList.length;i++){ | |||
|  |             let file = this.securityFileList[i]; | |||
|  |             this.$refs[file.uid][0].validate(valid =>{ | |||
|  |               if(!valid){ | |||
|  |                 this.validateFlag = false; | |||
|  |                 return false; | |||
|  |               } | |||
|  |             }); | |||
|  |           } | |||
|  |           //文件上传
 | |||
|  |           if(this.validateFlag){ | |||
|  |             for(let i=0;i<this.securityFileList.length;i++){ | |||
|  |               let file = this.securityFileList[i]; | |||
|  |               const that = this; | |||
|  |               const data = { | |||
|  |                 url:'jd', | |||
|  |                 data:{ | |||
|  |                   cmd: 'com.actionsoft.apps.coe.pal_processlevel_upfile_add', | |||
|  |                   pl_uuid: that.id, | |||
|  |                   shape_uuid: "", | |||
|  |                   type: 'file', | |||
|  |                   fileName: file.name, | |||
|  |                   download: 1 ,// 全部可下载,
 | |||
|  |                   securityLevel: file.securityLevel == undefined ? "" : file.securityLevel, | |||
|  |                 } | |||
|  |               }; | |||
|  |                    | |||
|  |               // 查询数据
 | |||
|  |               awsuiAxios.post(data).then(function (ro) { | |||
|  |                 if(ro.result == 'ok') { | |||
|  |                   that.$message({ | |||
|  |                     message: '['+ file.name +']上传成功', | |||
|  |                     type: 'success' | |||
|  |                   }); | |||
|  |                   that.initData(); | |||
|  |                 } else { | |||
|  |                   that.$message.error('['+ file.name +']上传失败'); | |||
|  |                 } | |||
|  |               }).catch(error=>{ | |||
|  |                 console.log(error); | |||
|  |               }) | |||
|  |             } | |||
|  |             this.securityVisible = false; | |||
|  |           } | |||
|  |            | |||
|  |         }, | |||
|  |         beforeUpload(file) {// 单个文件校验,返回false不影响其他文件上传
 | |||
|  |           if (file.size > 256 * 1024 * 1024) { | |||
|  |             this.$message({message: '文件[' + file.name + ']不允许大于256M,上传失败',type: 'warning'}); | |||
|  |             return false; | |||
|  |           } | |||
|  |           // 校验上传名称是否存在相同,相同则提示上传失败
 | |||
|  |           for (let i = 0; i < this.fileTable.length; i++) { | |||
|  |             const currFile = this.fileTable[i]; | |||
|  |             if (currFile.name == file.name) { | |||
|  |               this.$message({message: '文件[' + file.name + ']已存在,不允许重复上传',type: 'warning'}); | |||
|  |               return false; | |||
|  |             } | |||
|  |           } | |||
|  |         }, | |||
|  |         readFile(id) {// 在线预览
 | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_processlevel_upfile_read', | |||
|  |               uuid: id | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             if(ro.result == 'ok') { | |||
|  |               window.open(ro.data.url); | |||
|  |             } else { | |||
|  |               that.$message.error(ro.msg); | |||
|  |             } | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         }, | |||
|  |         downloadFile(url) { | |||
|  |           window.open(url); | |||
|  |         }, | |||
|  |         deleteFile(name, id) { | |||
|  |           this.$confirm('确定要删除吗?', '提示', { | |||
|  |             confirmButtonText: '确定', | |||
|  |             confirmButtonClass: 'button-general-color', | |||
|  |             cancelButtonText: '取消', | |||
|  |             type: 'warning' | |||
|  |           }).then(() => { | |||
|  |             const that = this; | |||
|  |             const data = { | |||
|  |               url:'jd', | |||
|  |               data:{ | |||
|  |                 cmd: 'com.actionsoft.apps.coe.pal_processlevel_upfile_del', | |||
|  |                 uuid: id, | |||
|  |               } | |||
|  |             }; | |||
|  |             // 查询数据
 | |||
|  |             awsuiAxios.post(data).then(function (ro) { | |||
|  |               if(ro.result == 'ok') { | |||
|  |                 that.$message({ | |||
|  |                   message: '删除成功', | |||
|  |                   type: 'success' | |||
|  |                 }); | |||
|  |                 that.initData(); | |||
|  |               } else { | |||
|  |                 that.$message.error('删除失败'); | |||
|  |               } | |||
|  |             }).catch(error=>{ | |||
|  |               console.log(error); | |||
|  |             }) | |||
|  |           }).catch(() => { | |||
|  |           }); | |||
|  |         } | |||
|  |       } | |||
|  |     } | |||
|  | </script> | |||
|  | 
 | |||
|  | <style scoped> | |||
|  |   #repositoryInfoUpfile >>> .el-table__row .operate-icon-display{ | |||
|  |     display: none; | |||
|  |   } | |||
|  |   #repositoryInfoUpfile >>> .el-table__row:hover .operate-icon-display{ | |||
|  |     display: inline-block; | |||
|  |   } | |||
|  | </style> |