From ba9490368b8bf27e0d4a6471420044dadf5b720e Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期二, 21 一月 2025 15:33:42 +0800 Subject: [PATCH] 产品结构树: 1、新增指定文档为当前版本功能与文档版本内容差异比对功能(新增插件vue-code-diff) 2、调整产品及部件属性tab栏标题为属性信息 3、删除产品及部件属性信息中对应层级名称 全局: 调整设置后端接口地址方式由vue.config.js改为env环境文件配置 --- src/views/dnc/common/ImportFileModal.vue | 173 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 127 insertions(+), 46 deletions(-) diff --git a/src/views/dnc/common/ImportFileModal.vue b/src/views/dnc/common/ImportFileModal.vue index 13aee43..585022f 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,9 @@ visible: false, title: '', fileList: [], - uploading: false + uploadParams: {}, + uploading: false, + isUploadMultiple: true } }, created() { @@ -42,55 +46,129 @@ this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) }, methods: { - handleImport(modalTitle) { - this.handleModalOpen(modalTitle) + /** + * 鐐瑰嚮瀵煎叆鏂囨。鎴朜C绋嬪簭鏃惰Е鍙� + * @param treeNodeInfo 鐐瑰嚮鏍戣妭鐐瑰彸閿彍鍗曞鍏ョ▼搴忔椂浼犲叆鏍戣妭鐐逛俊鎭� + * @param tableRowInfo 鍙抽敭琛ㄦ牸琛屾椂浼犲叆琛屼俊鎭� + */ + handleImport(treeNodeInfo, tableRowInfo) { + this.isUploadMultiple = true + let attributionId // 鏂囨。鎵�灞炲眰绾d + let attributionType // 鏂囨。鎵�灞炲眰绾х被鍨� + let docClassCode // 鏂囨。绫诲瀷 + if (treeNodeInfo) { + attributionId = treeNodeInfo.treeKey + attributionType = treeNodeInfo.type + } else { + attributionId = tableRowInfo.attributionId + attributionType = tableRowInfo.attributionType + } + if (attributionType === 5 || attributionType === 6) docClassCode = 'NC' + else docClassCode = 'OTHER' + this.uploadParams = Object.assign({}, { attributionId, attributionType, docClassCode }) + 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() newFileList.splice(index, 1) 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 }, /** @@ -101,8 +179,11 @@ this.fileList = [] }, - triggerCorrespondingMethod({ methodName, modalTitle }) { - if (this[methodName]) this[methodName](modalTitle) + triggerCorrespondingMethod({ methodName, modalTitle, treeNodeInfo, tableRowInfo }) { + if (this[methodName]) { + this[methodName](treeNodeInfo, tableRowInfo) + this.title = modalTitle + } } } } -- Gitblit v1.9.3