437 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			437 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|   | <template> | |||
|  |   <el-container> | |||
|  |     <div v-if="category!='org'" key="dialog2" class="repository-import"> | |||
|  |       <el-dialog | |||
|  |         title="导入模型" | |||
|  |         :visible.sync="dialogVisible" | |||
|  |         width="500px" | |||
|  |         :close-on-click-modal=false | |||
|  |         :before-close="handleClose"> | |||
|  |         <div style="height: 250px;" v-loading="loading" element-loading-text="请稍等"> | |||
|  |           <div style="text-align: center;padding-top: 10px;"> | |||
|  |             <awsui-button style="width: 130px;" class="button-general-color" type="primary" @click="openFileSelect('file')">本地文件上传</awsui-button> | |||
|  |           </div> | |||
|  |           <div class="text-second-color" style="font-size: 12px;margin-top: 10px;margin-left: 15px;">请上传export文件,支持多个文件同时导入</div> | |||
|  |           <div style="height: 180px;margin: 10px 10px;overflow:auto;"> | |||
|  |             <PALUpload ref="palUpload" style="width: 100%;" | |||
|  |                class="upload-demo" | |||
|  |                appId="com.actionsoft.apps.coe.pal" | |||
|  |                repositoryName="tmp" | |||
|  |                groupValue="_import" | |||
|  |                fileValue="Normal" | |||
|  |                :multiple=true | |||
|  |                :on-preview="handlePreview" | |||
|  |                :on-success="handleSuccess" | |||
|  |                :on-remove="handleRemove" | |||
|  |                :on-error="handleError" | |||
|  |                :before-remove="beforeRemove" | |||
|  |                :before-upload="beforeUpload" | |||
|  |                :on-exceed="handleExceed" | |||
|  |                :on-progress="handleProgress" | |||
|  |                accept=".export" | |||
|  |                :file-list="fileList"> | |||
|  |               <div style="display: none;"> | |||
|  |                 <awsui-button name="selectFileButton" style="width: 130px;" class="button-general-color" type="primary">本地文件上传</awsui-button> | |||
|  |               </div> | |||
|  |             </PALUpload> | |||
|  |           </div> | |||
|  |         </div> | |||
|  |         <span slot="footer" class="dialog-footer"> | |||
|  |           <awsui-button class="button-general-color" :disabled="buttonDisabled" type="primary"  @click="importSave">确定</awsui-button> | |||
|  |           <awsui-button @click="cancel">取消</awsui-button> | |||
|  |         </span> | |||
|  |       </el-dialog> | |||
|  |     </div> | |||
|  |     <div v-else="category=='org'" key="dialog1" class="repository-import"> | |||
|  |       <el-dialog | |||
|  |         title="导入组织模型" | |||
|  |         :visible.sync="dialogVisible" | |||
|  |         :close-on-click-modal=false | |||
|  |         width="500px" | |||
|  |         :before-close="handleClose"> | |||
|  |         <div v-show="step1" id="step1" style="height: 250px;text-align: center;" v-loading="loading" element-loading-text="请稍等"> | |||
|  |           <div style="position: relative;top:35%;"> | |||
|  |             <div style="margin-bottom: 25px;"> | |||
|  |               <awsui-button style="width: 130px;" class="button-general-color" type="primary" @click="openFileSelect('file')">直接导入</awsui-button> | |||
|  |             </div> | |||
|  |             <div> | |||
|  |               <awsui-button style="width: 130px;" class="button-general-color-reverse" @click="openFileSelect('excel')">模板导入</awsui-button> | |||
|  |             </div> | |||
|  |           </div> | |||
|  |         </div> | |||
|  |         <div v-show="step2" id="step2" style="height: 250px;" v-loading="loading" element-loading-text="请稍等"> | |||
|  |           <div style="text-align: center;padding-top: 10px;"> | |||
|  |             <awsui-button style="width: 130px;" :class="{'button-general-color': type == 'file', 'button-general-color-reverse': type == 'excel'}" :type="type == 'file' ? 'primary' : ''" @click="openFileSelect('file')">直接导入</awsui-button> | |||
|  |             <awsui-button style="width: 130px;" :class="{'button-general-color': type == 'excel', 'button-general-color-reverse': type == 'file'}" :type="type == 'excel' ? 'primary' : ''" @click="openFileSelect('excel')">模板导入</awsui-button> | |||
|  |           </div> | |||
|  |           <div v-if="type == 'file'"> | |||
|  |             <div class="text-second-color" style="font-size: 12px;margin-top: 10px;margin-left: 15px;">请点击"直接导入"按钮上传export文件,支持多个文件同时导入</div> | |||
|  |             <div style="height: 180px;margin: 10px 10px;overflow:auto;"> | |||
|  |               <PALUpload ref="palUpload" style="width: 100%;" | |||
|  |                  class="upload-demo" | |||
|  |                  appId="com.actionsoft.apps.coe.pal" | |||
|  |                  repositoryName="tmp" | |||
|  |                  groupValue="_import" | |||
|  |                  fileValue="Normal" | |||
|  |                  :multiple=true | |||
|  |                  :on-preview="handlePreview" | |||
|  |                  :on-success="handleSuccess" | |||
|  |                  :on-remove="handleRemove" | |||
|  |                  :on-error="handleError" | |||
|  |                  :before-remove="beforeRemove" | |||
|  |                  :before-upload="beforeUpload" | |||
|  |                  :on-exceed="handleExceed" | |||
|  |                  :on-progress="handleProgress" | |||
|  |                  accept=".export" | |||
|  |                  :file-list="fileList"> | |||
|  |                 <div style="display: none;"> | |||
|  |                   <awsui-button name="selectFileButton" style="width: 130px;" class="button-general-color" type="primary">本地文件上传</awsui-button> | |||
|  |                 </div> | |||
|  |               </PALUpload> | |||
|  |             </div> | |||
|  |           </div> | |||
|  |           <div v-if="type == 'excel'"> | |||
|  |             <div style="height: 200px;margin: 25px 10px 10px;overflow:auto;"> | |||
|  |               <div style="width: 438px;height: 80px;border: 1px solid #F2F2F2;"> | |||
|  |                 <div style="float: left;height: 100%;width: 80px;display: inline-block;background-color: #F5F7FA;text-align: center;line-height: 85px;vertical-align: middle;"> | |||
|  |                   <i style="font-size: 40px;" class="iconfont text-second-color"></i> | |||
|  |                 </div> | |||
|  |                 <div style="float: left;height: 100%;"> | |||
|  |                   <div style="display: inline-block;height: 100%;margin-left: 15px;margin-top: 9px;"> | |||
|  |                     <p class="text-general-color">填写导入组织信息</p> | |||
|  |                     <p class="text-second-color" style="font-size: 12px;padding-top: 4px;padding-bottom: 4px;">请按照说明格式正确填写Excel文件</p> | |||
|  |                     <p style="font-size: 12px;cursor: pointer;" class="text-linker-color" @click="downloadOrgTemplate()">下载模板</p> | |||
|  |                   </div> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |               <div style="height: 20px;"></div> | |||
|  |               <div style="width: 438px;height: 80px;border: 1px solid #F2F2F2;"> | |||
|  |                 <div style="float: left;height: 100%;width: 80px;display: inline-block;background-color: #F5F7FA;text-align: center;line-height: 85px;vertical-align: middle;"> | |||
|  |                   <i style="font-size: 40px;" class="iconfont text-second-color"></i> | |||
|  |                 </div> | |||
|  |                 <div style="float: left;height: 100%;"> | |||
|  |                   <div style="display: inline-block;height: 100%;margin-left: 15px;margin-top: 9px;"> | |||
|  |                     <p class="text-general-color">上传填好的组织信息文件</p> | |||
|  |                     <p class="text-second-color" style="font-size: 12px;padding-top: 4px;padding-bottom: 4px;">文件后缀必须为xls或xlsx(即Excel格式)</p> | |||
|  |                     <p v-if="!isOrgUploaded" style="font-size: 12px;cursor: pointer;" class="text-linker-color" @click="uploadOrgExcel">上传文件</p> | |||
|  |                     <p v-else style="font-size: 12px;cursor: pointer;" class="text-linker-color"><label style="display: inline-block;max-width: 300px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">{{orgUploadFileName}}</label> <i class="iconfont text-important-color" style="font-size: 12px;position: relative;top: -3px;" @click="removeOrgUpload"></i></p> | |||
|  |                   </div> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </div> | |||
|  |             <PALUpload ref="orgUpload" style="width: 100%;" | |||
|  |                class="upload-demo" | |||
|  |                appId="com.actionsoft.apps.coe.pal" | |||
|  |                repositoryName="tmp" | |||
|  |                groupValue="_import" | |||
|  |                fileValue="Normal" | |||
|  |                :limit="1" | |||
|  |                :show-file-list=false | |||
|  |                :on-success="handleOrgUploadSuccess" | |||
|  |                accept=".xls,.xlsx" | |||
|  |                :file-list="orgFileList"> | |||
|  |               <div style="display: none;"> | |||
|  |                 <awsui-button name="selectOrgFileButton" style="width: 130px;" class="button-general-color" type="primary">Excel文件上传</awsui-button> | |||
|  |               </div> | |||
|  |             </PALUpload> | |||
|  |           </div> | |||
|  |         </div> | |||
|  | 
 | |||
|  |         <span slot="footer" class="dialog-footer"> | |||
|  |           <awsui-button class="button-general-color" :disabled="buttonDisabled" type="primary"  @click="importSave">确定</awsui-button> | |||
|  |           <awsui-button @click="cancel">取消</awsui-button> | |||
|  |         </span> | |||
|  |       </el-dialog> | |||
|  |     </div> | |||
|  |   </el-container> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  |   import PALUpload from "@/components/common/upload/index.vue"; | |||
|  |   import awsuiAxios from "../../awsuiAxios"; | |||
|  |     export default { | |||
|  |       name: "RepositoryImport", | |||
|  |       components: {PALUpload}, | |||
|  |       data() { | |||
|  |         return { | |||
|  |           dialogVisible: false, | |||
|  |           buttonDisabled: false, | |||
|  |           category: '', | |||
|  |           obj: null, | |||
|  |           fileList: [], | |||
|  |           step1: true, | |||
|  |           step2: false, | |||
|  |           type: 'file', | |||
|  |           orgFileList: [], | |||
|  |           isOrgUploaded: false, | |||
|  |           orgUploadFileName: '', | |||
|  |           parentId: '', | |||
|  |           loading: false | |||
|  |         } | |||
|  |       }, | |||
|  |       inject: ['getIsHighSecurity','setSecurityVisible','securityFileList','setSecurityType'], | |||
|  |       computed:{ | |||
|  |         isHighSecurity(){ | |||
|  |           return this.getIsHighSecurity(); | |||
|  |         }, | |||
|  |       }, | |||
|  |       methods: { | |||
|  |         clearParam() { | |||
|  |           this.category = ''; | |||
|  |           this.obj = null; | |||
|  |           this.fileList = []; | |||
|  |           this.orgFileList = []; | |||
|  |           this.buttonDisabled = false; | |||
|  |           this.dialogVisible = false; | |||
|  |           this.step1 = true; | |||
|  |           this.step2 = false; | |||
|  |           this.type = ''; | |||
|  |           this.isOrgUploaded = false; | |||
|  |           this.orgUploadFileName = ''; | |||
|  |           this.parentId = ''; | |||
|  |           this.loading = false; | |||
|  |           if (this.$refs.palUpload) { | |||
|  |             this.$refs.palUpload.clearFiles(); | |||
|  |           } | |||
|  |           if (this.$refs.orgUpload) { | |||
|  |             this.$refs.orgUpload.clearFiles(); | |||
|  |           } | |||
|  |         }, | |||
|  |         openImportRepositoryDlg(obj, category, parentId) { | |||
|  |           const that = this; | |||
|  |           that.category = category; | |||
|  |           that.obj = obj; | |||
|  |           that.parentId = parentId; | |||
|  |           setTimeout(() => { | |||
|  |             that.dialogVisible = true; | |||
|  |             that.$nextTick(() => { | |||
|  |               if (that.category != 'org') { | |||
|  |                 that.openFileSelect('file'); | |||
|  |               } | |||
|  |             }); | |||
|  |           }, 300); | |||
|  |         }, | |||
|  |         cancel() { | |||
|  |           this.clearParam(); | |||
|  |         }, | |||
|  |         importSave() { | |||
|  |           const that = this; | |||
|  |           const wsId = that.$store.getters.getWsIdFn; | |||
|  |           const teamId = that.$store.getters.getTeamIdFn; | |||
|  |           let fileName = ''; | |||
|  |           if (that.type == 'file') { | |||
|  |             if (that.fileList.length == 0) { | |||
|  |               that.$message({message: '请上传需要导入的文件',type: 'warning'}); | |||
|  |               return; | |||
|  |             } | |||
|  |             const fileList = []; | |||
|  |             for (let i = 0; i < that.fileList.length; i++) { | |||
|  |               fileList.push(that.fileList[i].name); | |||
|  |             } | |||
|  |             that.buttonDisabled = true; | |||
|  |             that.loading = true; | |||
|  |             const data = { | |||
|  |               url:'jd', | |||
|  |               data:{ | |||
|  |                 cmd: 'com.actionsoft.apps.coe.pal_pl_import', | |||
|  |                 fileList: JSON.stringify(fileList), | |||
|  |                 wsId: wsId, | |||
|  |                 teamId: teamId, | |||
|  |                 plCategory: that.category, | |||
|  |                 parentId: that.parentId | |||
|  |               } | |||
|  |             }; | |||
|  |             // 查询数据
 | |||
|  |             awsuiAxios.post(data).then(function (ro) { | |||
|  |               if(ro.result == 'ok') { | |||
|  |                 //三员管理,密级标定
 | |||
|  |                 if(that.isHighSecurity){ | |||
|  |                   let securityBindList = ro.data.data.securityBindList; | |||
|  |                   if(undefined !=securityBindList && securityBindList.length>0){ | |||
|  |                     for(let i=0;i<securityBindList.length;i++){ | |||
|  |                       let securityBind = securityBindList[i]; | |||
|  |                       that.securityFileList.push(securityBind); | |||
|  |                     } | |||
|  |                     that.setSecurityType("import") | |||
|  |                     that.setSecurityVisible(true); | |||
|  |                   } | |||
|  |                 }else{ | |||
|  |                   that.$message({ | |||
|  |                     message: '导入成功', | |||
|  |                     type: 'success' | |||
|  |                   }); | |||
|  |                 } | |||
|  |                 // 刷新节点,重新打开
 | |||
|  |                 that.obj.refreshNode(); | |||
|  |                 that.obj.openRepositoryList(that.parentId); | |||
|  |                 that.cancel(); | |||
|  |               } else { | |||
|  |                 that.$message.error(ro.msg); | |||
|  |                 that.buttonDisabled = false; | |||
|  |                 that.loading = false; | |||
|  |               } | |||
|  |             }).catch(error=>{ | |||
|  |               console.log(error); | |||
|  |             }) | |||
|  |           } else if (that.category == 'org' && that.type == 'excel') {// 组织Excel导入
 | |||
|  |             if (that.orgFileList.length == 0) { | |||
|  |               that.$message({message: '请上传需要导入的组织文件',type: 'warning'}); | |||
|  |               return; | |||
|  |             } | |||
|  |             fileName = that.orgFileList[0].name;// 组织文件
 | |||
|  |             that.loading = true; | |||
|  | 
 | |||
|  |             const data = { | |||
|  |               url:'jd', | |||
|  |               data:{ | |||
|  |                 cmd: 'com.actionsoft.apps.coe.pal_repository_import_org', | |||
|  |                 fileName: fileName, | |||
|  |                 wsId: wsId, | |||
|  |                 teamId: teamId, | |||
|  |                 parentId: that.parentId | |||
|  |               } | |||
|  |             }; | |||
|  |             // 查询数据
 | |||
|  |             awsuiAxios.post(data).then(function (ro) { | |||
|  |               if(ro.result == 'ok') { | |||
|  |                 //三员管理,密级标定
 | |||
|  |                 if(that.isHighSecurity){ | |||
|  |                   let securityBindList = ro.data.securityBindList; | |||
|  |                   if(undefined !=securityBindList && securityBindList.length>0){ | |||
|  |                     for(let i=0;i<securityBindList.length;i++){ | |||
|  |                       let securityBind = securityBindList[i]; | |||
|  |                       that.securityFileList.push(securityBind); | |||
|  |                     } | |||
|  |                     that.setSecurityType("import") | |||
|  |                     that.setSecurityVisible(true); | |||
|  |                   } | |||
|  |                 }else{ | |||
|  |                   that.$message({ | |||
|  |                     message: '导入成功', | |||
|  |                     type: 'success' | |||
|  |                   }); | |||
|  |                 }  | |||
|  |                 // 刷新节点,重新打开
 | |||
|  |                 that.obj.refreshNode(); | |||
|  |                 that.obj.openRepositoryList(that.parentId); | |||
|  |                 that.cancel(); | |||
|  |               } else { | |||
|  |                 that.$message.error(ro.msg); | |||
|  |                 that.buttonDisabled = false; | |||
|  |                 that.loading = false; | |||
|  |               } | |||
|  |             }).catch(error=>{ | |||
|  |               console.log(error); | |||
|  |             }) | |||
|  |           } | |||
|  |         }, | |||
|  |         handleClose(done) { | |||
|  |           this.clearParam(); | |||
|  |           done(); | |||
|  |         }, | |||
|  |         handleRemove(file, fileList) { | |||
|  |           this.fileList = fileList; | |||
|  |         }, | |||
|  |         handlePreview(file) { | |||
|  |           console.log(file); | |||
|  |         }, | |||
|  | 
 | |||
|  |         handleExceed(files, fileList) { | |||
|  | 
 | |||
|  |         }, | |||
|  |         handleError(err, file, fileList) { | |||
|  |         }, | |||
|  |         beforeUpload(file) { | |||
|  |         }, | |||
|  |         handleProgress(event, file, fileList) { | |||
|  |         }, | |||
|  |         handleSuccess(response, file, fileList) { | |||
|  |           const that = this; | |||
|  |           that.fileList = []; | |||
|  |           let hash = {}; | |||
|  |           for (let i = fileList.length-1; i >= 0; i--) { | |||
|  |             let currFile = fileList[i]; | |||
|  |             if (!hash[currFile.name]) { | |||
|  |               that.fileList.unshift(currFile); | |||
|  |               hash[currFile.name] = true; | |||
|  |             } | |||
|  |           } | |||
|  |         }, | |||
|  |         beforeRemove(file, fileList) { | |||
|  |           if (file.status == 'success') { | |||
|  |             // 删除之前,进行服务器文件删除
 | |||
|  |           } | |||
|  |         }, | |||
|  |         openFileSelect(type) { | |||
|  |           this.type = type; | |||
|  |           if (this.category != 'org') { | |||
|  |             this.$nextTick(()=>{ | |||
|  |               document.getElementsByName("selectFileButton")[0].click(); | |||
|  |             }); | |||
|  |           } else { | |||
|  |             if (type == 'file') { | |||
|  |               this.step1 = false; | |||
|  |               this.step2 = true; | |||
|  |               this.$nextTick(()=>{ | |||
|  |                 document.getElementsByName("selectFileButton")[0].click(); | |||
|  |               }); | |||
|  |             } else { | |||
|  |               this.type = type; | |||
|  |               this.step1 = false; | |||
|  |               this.step2 = true; | |||
|  |             } | |||
|  |           } | |||
|  |         }, | |||
|  |         downloadOrgTemplate() {// 下载组织模板
 | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_repository_import_org_template', | |||
|  |               category: that.category | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             window.open(ro.url); | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         }, | |||
|  |         uploadOrgExcel() {// 上传组织文件
 | |||
|  |           if (this.$refs.orgUpload) { | |||
|  |             this.$refs.orgUpload.clearFiles(); | |||
|  |           } | |||
|  |           document.getElementsByName("selectOrgFileButton")[0].click(); | |||
|  |         }, | |||
|  |         handleOrgUploadSuccess(response, file, fileList) { | |||
|  |           this.orgFileList = []; | |||
|  |           this.orgFileList.push(file); | |||
|  |           // 赋值
 | |||
|  |           this.orgUploadFileName = file.name; | |||
|  |           this.isOrgUploaded = true; | |||
|  |         }, | |||
|  |         removeOrgUpload() { | |||
|  |           this.isOrgUploaded = false; | |||
|  |           this.orgFileList = []; | |||
|  |           this.orgUploadFileName = ''; | |||
|  |         } | |||
|  |       } | |||
|  |     } | |||
|  | </script> | |||
|  | 
 | |||
|  | <style scoped> | |||
|  |   .repository-import >>> .el-dialog__body { | |||
|  |     padding: 10px 20px; | |||
|  |     color: #606266; | |||
|  |     font-size: 14px; | |||
|  |     word-break: break-all; | |||
|  |   } | |||
|  |   .repository-import >>> .el-upload-list__item:first-child { | |||
|  |     margin-top: 0px; | |||
|  |   } | |||
|  |   .repository-import >>> .el-upload { | |||
|  |     display: none; | |||
|  |   } | |||
|  | </style> |