From 2ceb99a629b70a3d63154656b534dcc603af78e7 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期五, 14 二月 2025 13:55:45 +0800 Subject: [PATCH] 1、调整产品和设备结构树权限配置分配用户时,admin只有在分配后或者有权限时才会被禁用 --- src/views/dnc/common/ImportFileModal.vue | 196 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 147 insertions(+), 49 deletions(-) diff --git a/src/views/dnc/common/ImportFileModal.vue b/src/views/dnc/common/ImportFileModal.vue index 13aee43..e9ae1a0 100644 --- a/src/views/dnc/common/ImportFileModal.vue +++ b/src/views/dnc/common/ImportFileModal.vue @@ -1,7 +1,7 @@ <template> <a-modal :title="title" :visible="visible" @cancel="handleModalClose" :maskClosable="false"> <a-upload :multiple="true" :file-list="fileList" :remove="handleRemove" :before-upload="beforeUpload"> - <a-button type="primary"> + <a-button type="primary" :disabled="uploading"> <a-icon type="import"/> 閫夊彇鏂囦欢 </a-button> @@ -26,6 +26,8 @@ </template> <script> + import dncApi from '@/api/dnc' + export default { name: 'ImportFileModal', components: {}, @@ -34,7 +36,11 @@ visible: false, title: '', fileList: [], - uploading: false + uploadParams: {}, + uploading: false, + isUploadMultiple: true, + currentDeviceDocClassCode: 'SEND', + currentTitleAfterClass: '' } }, created() { @@ -42,10 +48,125 @@ this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) }, methods: { - handleImport(modalTitle) { - this.handleModalOpen(modalTitle) + /** + * 鐐瑰嚮瀵煎叆鏂囨。鎴朜C绋嬪簭鏃惰Е鍙� + * @param treeNodeInfo 鐐瑰嚮鏍戣妭鐐瑰彸閿彍鍗曞鍏ョ▼搴忔椂浼犲叆鏍戣妭鐐逛俊鎭� + * @param tableRowInfo 鍙抽敭琛ㄦ牸琛屾椂浼犲叆琛屼俊鎭� + * @param modalTitle 寮圭獥鏍囬 + */ + handleImport(treeNodeInfo, tableRowInfo, modalTitle) { + this.isUploadMultiple = true + let attributionId // 鏂囨。鎵�灞炲眰绾d + let attributionType // 鏂囨。鎵�灞炲眰绾х被鍨� + let docClassCode // 鏂囨。绫诲瀷 + if (treeNodeInfo) { + attributionId = treeNodeInfo.treeKey + attributionType = treeNodeInfo.type + docClassCode = treeNodeInfo.param + } else { + attributionId = tableRowInfo.attributionId + attributionType = tableRowInfo.attributionType + docClassCode = tableRowInfo.param + } + this.setModalTitle(modalTitle, docClassCode) + this.uploadParams = Object.assign({}, { attributionId, attributionType, docClassCode }) + console.log('uploadParams=====================', this.uploadParams) + this.visible = true }, + /** + * 鐐瑰嚮鏂囨。鐢熷懡鍛ㄦ湡鐨勫叆搴撴椂瑙﹀彂 + * @param _ + * @param tableRowInfo 鍙抽敭琛ㄦ牸琛屾椂浼犲叆琛屼俊鎭� + */ + handlePush(_, tableRowInfo) { + this.isUploadMultiple = false + console.log('tableRowInfo', tableRowInfo) + this.uploadParams = Object.assign({}, { + docId: tableRowInfo.docId, + attributionId: tableRowInfo.attributionId, + docClassCode: tableRowInfo.param + }) + this.visible = true + }, + + /** + * 閫夋嫨濂芥枃浠剁偣鍑荤‘瀹氬悗 + * @param file 鏂囦欢瀵硅薄 + */ + beforeUpload(file) { + if (this.isUploadMultiple) { + if (!this.fileList.find(item => item.name === file.name)) this.fileList = [...this.fileList, file] + } + else this.fileList.splice(0, 1, file) + return false + }, + + // 鐐瑰嚮涓婁紶鑷虫湇鍔″櫒鎸夐挳鏃惰Е鍙� + handleUpload() { + const { fileList, $notification, isUploadMultiple, uploadParams, $bus, handleModalClose } = this + this.uploading = true + let uploadedFileCount = 0 + let uploadSuccessFileCount = 0 + let apiMethod + let params + + fileList.forEach((file, index) => { + const formData = new FormData() + formData.append('file', file) + file.status = 'uploading' + // 鐩墠鏍规嵁鏄惁涓婁紶澶氫釜鏂囦欢鍒ゆ柇涓や釜鍔熻兘锛岃嫢鍚庣画澧炲姞鍔熻兘鎴栬皟鏁撮渶姹傚垯璋冩暣鍒ゆ柇鏉′欢 + if (isUploadMultiple) { + apiMethod = dncApi.importDocumentFromLocalApi + params = Object.assign({}, { params: uploadParams, formData }) + } else { + apiMethod = dncApi.documentVersionUpdateApi + params = Object.assign({}, { docId: uploadParams.docId, formData }) + } + apiMethod(params) + .then(res => { + if (res.success) { + file.status = 'done' + uploadSuccessFileCount++ + console.log('uploadSuccessFileCount++', uploadSuccessFileCount) + $notification.success({ + message: '娑堟伅', + description: res.message + }) + } else { + file.status = 'error' + $notification.error({ + message: '娑堟伅', + description: res.message + }) + } + }) + .catch(err => { + file.status = 'error' + }) + .finally(() => { + uploadedFileCount++ + fileList.splice(index, 1, file) + // 褰撴枃浠跺叏閮ㄤ笂浼犲畬鎴愬悗 + if (uploadedFileCount === fileList.length) { + // 鑷冲皯鏈変竴涓枃浠朵笂浼犳垚鍔熷悗灏遍渶瑕侀噸鏂板姞杞芥枃妗e垪琛� + if (uploadSuccessFileCount > 0) { + $bus.$emit('reloadDocumentListData', uploadParams) + if (!isUploadMultiple) { + $bus.$emit('reloadMainBottomTableData', 'documentVersion') + handleModalClose() //鏃犳硶杩炵画鍏ュ簱澶氫釜鐗堟湰鍥犳鍏ュ簱鎴愬姛鍚庡嵆鍙��鍑虹獥鍙� + } + } + this.uploading = false + } + }) + }) + }, + + /** + * 鍒犻櫎鏂囦欢鍒楄〃椤规椂瑙﹀彂 + * @param file 鏂囦欢瀵硅薄 + */ handleRemove(file) { const index = this.fileList.indexOf(file) const newFileList = this.fileList.slice() @@ -53,56 +174,33 @@ this.fileList = newFileList }, - beforeUpload(file) { - this.fileList = [...this.fileList, file] - return false - }, - - handleUpload() { - const { fileList } = this - const formData = new FormData() - fileList.forEach(file => { - formData.append('files[]', file) - }) - this.uploading = true - - // You can use any AJAX library you like - request({ - url: 'https://www.mocky.io/v2/5cc8019d300000980a055e76', - method: 'post', - processData: false, - data: formData, - success: () => { - this.fileList = [] - this.uploading = false - this.$message.success('upload successfully.') - }, - error: () => { - this.uploading = false - this.$message.error('upload failed.') - } - }) - }, - - /** - * 鎺у埗鏂囦欢涓婁紶绐楀彛寮�鍚苟璁剧疆绐楀彛鏍囬 - * @param modalTitle 绐楀彛鏍囬 - */ - handleModalOpen(modalTitle) { - this.title = modalTitle - this.visible = true - }, - - /** - * 鎺у埗鏂囦欢涓婁紶绐楀彛鍏抽棴骞舵竻绌烘枃浠跺垪琛� - */ + // 鎺у埗鏂囦欢涓婁紶绐楀彛鍏抽棴骞舵竻绌烘枃浠跺垪琛� handleModalClose() { this.visible = false this.fileList = [] }, - triggerCorrespondingMethod({ methodName, modalTitle }) { - if (this[methodName]) this[methodName](modalTitle) + /** + * 璁剧疆寮圭獥鏍囬 + * @param modalTitle 寮圭獥鏍囬 + * @param docClassCode 鏂囨。绫诲瀷 + */ + setModalTitle(modalTitle, docClassCode) { + switch (docClassCode) { + case 'SEND': + this.title = modalTitle + '锛堝彂閫侊級' + break + case 'REC': + this.title = modalTitle + '锛堟帴鏀讹級' + break + } + }, + + triggerCorrespondingMethod({ methodName, modalTitle, treeNodeInfo, tableRowInfo }) { + if (this[methodName]) { + this.title = modalTitle + this[methodName](treeNodeInfo, tableRowInfo, modalTitle) + } } } } -- Gitblit v1.9.3