From 1d69b2703aa304f9e8b2c470b8a3d74d43cb4809 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期五, 28 七月 2023 17:46:45 +0800 Subject: [PATCH] 主题库导入 导出功能 --- Source/UBCS-WEB/src/components/Theme/ThemeImport.vue | 155 +++++++++ Source/UBCS-WEB/src/components/Master/MasterTransfer.vue | 2 Source/UBCS-WEB/src/components/file/main.vue | 2 Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue | 10 Source/UBCS-WEB/src/util/func.js | 18 + Source/UBCS-WEB/src/api/GetItem.js | 1 Source/UBCS-WEB/src/components/BatchImport/index.vue | 670 ++++++++++++++++++++++---------------------- Source/UBCS-WEB/vue.config.js | 4 Source/UBCS-WEB/src/api/template/templateAttr.js | 37 + 9 files changed, 531 insertions(+), 368 deletions(-) diff --git a/Source/UBCS-WEB/src/api/GetItem.js b/Source/UBCS-WEB/src/api/GetItem.js index a367b7e..976018e 100644 --- a/Source/UBCS-WEB/src/api/GetItem.js +++ b/Source/UBCS-WEB/src/api/GetItem.js @@ -75,3 +75,4 @@ data }) } + diff --git a/Source/UBCS-WEB/src/api/template/templateAttr.js b/Source/UBCS-WEB/src/api/template/templateAttr.js index 476ed6c..9c4779b 100644 --- a/Source/UBCS-WEB/src/api/template/templateAttr.js +++ b/Source/UBCS-WEB/src/api/template/templateAttr.js @@ -58,13 +58,7 @@ }) } -export const importClassify = (data) =>{ - return request({ - url:'/api/ubcs-code/codeClassify/importClassify', - method: 'post', - data:data - }) -} + //涓婚敭鑾峰彇鍒嗙被妯℃澘灞炴�� export const gridCodeClassifyTemplate = (params) =>{ @@ -227,6 +221,33 @@ } }) } - +//瀵煎叆 +export const importClassify = (data) =>{ + return request({ + url:'/api/ubcs-code/codeClassify/importClassify', + method: 'post', + data:data + }) +} +//涓婚搴撳鍏ヤ笅杞介敊璇俊鎭� +export const downloadErrorFile = (params) =>{ + return request({ + url:'/api/ubcs-code/codeClassify/downloadErrorFile', + method: 'get', + responseType: 'blob', + params:{ + ...params + } + }) +} +//涓嬭浇妯℃澘 +export const downloadBatchImportApplyTemplate = (params) => { + return request({ + url: '/api/ubcs-code/mdmEngineController/downloadImportExcel', + method: 'get', + params, + responseType: 'blob' + }) +} diff --git a/Source/UBCS-WEB/src/components/BatchImport/index.vue b/Source/UBCS-WEB/src/components/BatchImport/index.vue index e9fb97f..c904bf3 100644 --- a/Source/UBCS-WEB/src/components/BatchImport/index.vue +++ b/Source/UBCS-WEB/src/components/BatchImport/index.vue @@ -1,334 +1,336 @@ -<template> - <el-dialog - v-if="dialogVisible" - :title="title" - :visible.sync="dialogVisible" - append-to-body - v-dialogDrag - > - <Divider text="瀵煎叆鎻愮ず" left="30px"></Divider> - <ul> - <li v-for="(item, index) in tipList" :key="index"> - {{ item }} - </li> - </ul> - <div - class="radio_box" - v-show="currentTypeObj[type]['upParams'] === 'classifyAttr'" - > - <span>鍒嗙被鐨勮矾寰勪娇鐢ㄧ殑灞炴��:</span> - <el-radio-group v-model="classifyAttr"> - <el-radio label="id">鍒嗙被缂栧彿</el-radio> - <el-radio label="name">鍒嗙被鍚嶇О</el-radio> - </el-radio-group> - </div> - <div - style="margin-top: 20px" - v-if="showCodeApply && currentTypeObj[type]['upParams'] === 'codeApply'" - > - <Divider - text="缂栫爜瑙勫垯鐨勭爜娈典俊鎭紝璇峰厛閫夋嫨鍚庡啀瀵煎叆" - left="30px" - ></Divider> - <FormTemplate - v-loading="!showCodeApply" - style="margin-top: 30px" - type="add" - :selfColumnType="selfColumnType" - :selfColumnConfig="selfColumnConfig" - ref="CodeApply" - @getFormData="getCodeApplyFormData" - @referConfigDataUpdate="referConfigDataUpdate" - ></FormTemplate> - </div> - <Divider text="excel鏂囦欢锛岄�夋嫨鏂囦欢鍚庝細鑷姩涓婁紶" left="30px"></Divider> - <el-upload - class="upload" - :accept="accept" - :action="action" - :before-upload="beforeUpload" - :on-exceed="handleExceed" - :headers="uploadHeaders" - :on-success="onSuccess" - :on-error="onError" - :show-file-list="false" - :on-change="uploadChange" - :data="upParams" - > - <el-button size="small" type="primary" - ><i class="el-icon-upload"></i> 鐐瑰嚮涓婁紶</el-button - > - </el-upload> - <template #footer> - <el-button - type="primary" - size="small" - @click="downloadTemplateFun" - :loading="downloadLoading" - >涓嬭浇瀵煎叆妯℃澘</el-button - > - <el-button size="small" @click="dialogVisible = false">鍏抽棴</el-button> - </template> - <ShowImportData - :visible.sync="showVisible" - v-if="showVisible" - :leftTree="leftTree" - :classifyAttr="classifyAttr" - :codeClassifyOid="codeClassifyOid" - :redisOid="redisOid" - :type="type" - :title="title" - :secDTOList="secDTOList" - :resetTable="resetTable" - ></ShowImportData> - </el-dialog> -</template> - -<script> -import ShowImportData from "./ShowImportData.vue"; -import { - downloadHistoryImportTemplate, - downloadErrorFile, - importDataShow, - downloadBatchImportApplyTemplate, - downloadBatchApplyCodeTemplate, -} from "../../api/batchImport/index"; -import FormTemplate from "../FormTemplate/FormTemplate.vue"; -import { getToken } from "@/util/auth"; -import codeApply from "@/mixins/codeApply.js"; -export default { - name: "BatchImport", - mixins: [codeApply], - components: { ShowImportData, FormTemplate }, - props: { - visible: { - type: Boolean, - default: false, - }, - accept: { - type: String, - default: ".xlsx, .xls", - }, - codeClassifyOid: { - type: String, - default: "", - }, - type: { - type: String, - default: "", - }, - resetTable: Function - }, - computed: { - uploadHeaders() { - return { - "Blade-Auth": "bearer " + getToken(), - }; - }, - dialogVisible: { - get() { - return this.visible; - }, - set(val) { - this.$emit("update:visible", val); - }, - }, - title() { - return this.currentTypeObj[this.type]["title"]; - }, - tipList() { - return this.currentTypeObj[this.type]["tipList"]; - }, - downloadTemplateApi() { - console.log(this.currentTypeObj[this.type], "this.type"); - return this.currentTypeObj[this.type]["downloadTemplateFun"]; - }, - action() { - return this.currentTypeObj[this.type]["action"]; - }, - upParams() { - if (this.type === "historyImport" || this.type === "batchApplyCode") { - return { - codeClassifyOid: this.codeClassifyOid, - classifyAttr: this.classifyAttr, - }; - } else if (this.type === "batchImportApply") { - // eslint-disable-next-line vue/no-side-effects-in-computed-properties - this.secDTOList = this.localSecVOList.map((item) => { - return { - secOid: item.oid, - secValue: this.codeApplyForm[item.oid], - }; - }); - return { - codeClassifyOid: this.codeClassifyOid, - secDTOList: JSON.stringify(this.secDTOList), - ...this.codeApplyForm, - }; - } - }, - }, - data() { - return { - classifyAttr: "id", - downloadLoading: false, - showVisible: false, - leftTree: [], - redisOid: "", - pageLoading: null, - showCodeApply: true, - currentTypeObj: { - historyImport: { - title: "鍘嗗彶鏁版嵁瀵煎叆", - tipList: [ - "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」", - "2.浼佷笟缂栫爜锛岄泦鍥㈢爜鍜岀姸鎬侀兘闇�瑕佸鍏�", - "3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹紝濡傛灉鍑洪敊浼氳繑鍥為敊璇殑鏁版嵁鍜屽師鍥狅紝浣嗘槸姝g‘鐨勬暟鎹細淇濆瓨", - "4.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粎濉啓褰撳墠閫夌殑鍒嗙被鏍戜笂鐨勪笅绾у垎绫荤殑璺緞锛屽鏋滃綋鍓嶅垎绫诲凡缁忔槸鍙跺瓙鑺傜偣锛屽垯涓嶅~鍐�", - ], - action: "/api/ubcs-code/mdmEngineController/batchImportHistoryData", - downloadTemplateFun: downloadHistoryImportTemplate, - upParams: "classifyAttr", - }, - batchImportApply: { - title: "鎵归噺鐢宠缂栫爜", - tipList: [ - "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」", - "2.璇蜂竴瀹氬厛閫夋嫨/杈撳叆缂栫爜瑙勫垯鐨勭爜娈靛�煎悗鍐嶉�夋嫨excel鏂囦欢", - "3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹紝濡傛灉鍑洪敊浼氳繑鍥為敊璇殑鏁版嵁鍜屽師鍥狅紝浣嗘槸姝g‘鐨勬暟鎹細淇濆瓨", - "4.濡傛灉灞炴�т负鍙傜収锛屽湪鍙傜収閰嶇疆涓缃涓睘鎬ф椂锛屼紭鍏堜娇鐢╪ame灞炴�х殑鍊硷紝鍚﹀垯濉啓绗竴涓睘鎬х殑鍊笺��", - ], - action: "/api/ubcs-code/mdmEngineController/batchImportCode", - downloadTemplateFun: downloadBatchImportApplyTemplate, - upParams: "codeApply", - }, - batchApplyCode: { - title: "鎵归噺鐢宠缂栫爜", - tipList: [ - "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」", - "2.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粠褰撳墠閫夋嫨鍒嗙被鑺傜偣鐨勪笅绾у紑濮嬪~鍐欙紝鐩村埌鏈�鏈熬鑺傜偣锛屽 浜у搧#涓绘満浜у搧#涓绘満浜у搧", - ], - action: "/api/ubcs-code/mdmEngineController/batchTopImportCode", - downloadTemplateFun: downloadBatchApplyCodeTemplate, - upParams: "classifyAttr", - }, - }, - secDTOList: [], - }; - }, - methods: { - async beforeUpload(file) { - const fileType = file.name.split(".").pop(); - if (fileType !== "xlsx" && fileType !== "xls") { - // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼� - this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�"); - return Promise.reject(false); - } - if (this.type === "batchImportApply" && this.showCodeApply) { - const flag = await this.$refs.CodeApply.validate(); - if (!flag) { - return Promise.reject(false); - } - } - this.pageLoading = this.$loading({ - lock: true, - text: "鏂囦欢涓婁紶涓�", - spinner: "el-icon-loading", - background: "rgba(0, 0, 0, 0.7)", - }); - return true; - }, - // 涓嬭浇瀵煎叆妯℃澘 - downloadTemplateFun() { - this.downloadLoading = true; - this.downloadTemplateApi({ - codeClassifyOid: this.codeClassifyOid, - }) - .then((res) => { - this.$utilFunc.downloadFileByBlob(res.data, this.title + "妯℃澘.xls"); - this.downloadLoading = false; - }) - .catch(() => { - this.downloadLoading = false; - }); - }, - onSuccess(res) { - if (Object.keys(res.data).length === 0) { - this.$message.success(this.title + "瀵煎叆鎴愬姛锛�"); - this.dialogVisible = false; - return; - } - if (res.data.fileOid) { - const fileName = res.data.filePath.split("/").pop(); - this.$message.error("璇蜂笅杞介敊璇俊鎭枃浠惰繘琛屾煡鐪嬶紒"); - downloadErrorFile({ uuid: res.data.fileOid }).then((res2) => { - this.$utilFunc.downloadFileByBlob(res2.data, fileName); - }); - } - if (res.data.redisUuid) { - this.redisOid = res.data.redisUuid; - importDataShow(res.data.redisUuid).then((res2) => { - this.leftTree = res2.data.data.map((item) => { - if (this.type === 'batchApplyCode') { - return { - cloNamesList: item.cloNamesList, - oid: item.codeTemplateOid, - codeClassifyOid: item.codeClassifyOid, - codeRuleOid: item.codeRuleOid, - name: item.codeRuleVO.name - } - } else { - return { - ...item.codeClassifyTemplateVO, - cloNamesList: item.cloNamesList, - codeClassifyOid: item.codeClassifyTemplateVO.codeclassifyoid - }; - } - }); - this.showVisible = true; - }); - } - }, - onError(err) { - console.log(err, "err"); - this.pageLoading.close(); - }, - uploadChange(file) { - if (file.status === "success" || file.status === "error") { - this.pageLoading.close(); - } - }, - }, - watch: {}, -}; -</script> - -<style lang="scss" scoped> -ul { - color: rgb(188, 188, 188); - margin: 20px 0 20px 0; - padding: 0; - padding-left: 30px; - list-style: none; - li { - margin-bottom: 5px; - font-size: 12px; - } -} -.radio_box { - padding-left: 30px; - margin: 0px 0 25px 0; - display: flex; - align-items: center; - span { - margin-right: 20px; - } -} -.upload { - padding-left: 30px; - margin-top: 30px; -} -/deep/ .no-print { - display: none !important; -} -</style> +<template> + <el-dialog + v-if="dialogVisible" + :title="title" + :visible.sync="dialogVisible" + append-to-body + v-dialogDrag + > + <Divider text="瀵煎叆鎻愮ず" left="30px"></Divider> + <ul> + <li v-for="(item, index) in tipList" :key="index"> + {{ item }} + </li> + </ul> + <div + class="radio_box" + v-show="currentTypeObj[type]['upParams'] === 'classifyAttr'" + > + <span>鍒嗙被鐨勮矾寰勪娇鐢ㄧ殑灞炴��:</span> + <el-radio-group v-model="classifyAttr"> + <el-radio label="id">鍒嗙被缂栧彿</el-radio> + <el-radio label="name">鍒嗙被鍚嶇О</el-radio> + </el-radio-group> + </div> + <div + style="margin-top: 20px" + v-if="showCodeApply && currentTypeObj[type]['upParams'] === 'codeApply'" + > + <Divider + text="缂栫爜瑙勫垯鐨勭爜娈典俊鎭紝璇峰厛閫夋嫨鍚庡啀瀵煎叆" + left="30px" + ></Divider> + <FormTemplate + v-loading="!showCodeApply" + style="margin-top: 30px" + type="add" + :selfColumnType="selfColumnType" + :selfColumnConfig="selfColumnConfig" + ref="CodeApply" + @getFormData="getCodeApplyFormData" + @referConfigDataUpdate="referConfigDataUpdate" + ></FormTemplate> + </div> + <Divider text="excel鏂囦欢锛岄�夋嫨鏂囦欢鍚庝細鑷姩涓婁紶" left="30px"></Divider> + <el-upload + class="upload" + :accept="accept" + :action="action" + :before-upload="beforeUpload" + :on-exceed="handleExceed" + :headers="uploadHeaders" + :on-success="onSuccess" + :on-error="onError" + :show-file-list="false" + :on-change="uploadChange" + :data="upParams" + > + <el-button size="small" type="primary" + ><i class="el-icon-upload"></i> 鐐瑰嚮涓婁紶</el-button + > + </el-upload> + <template #footer> + <el-button + type="primary" + size="small" + @click="downloadTemplateFun" + :loading="downloadLoading" + >涓嬭浇瀵煎叆妯℃澘</el-button + > + <el-button size="small" @click="dialogVisible = false">鍏抽棴</el-button> + </template> + <ShowImportData + :visible.sync="showVisible" + v-if="showVisible" + :leftTree="leftTree" + :classifyAttr="classifyAttr" + :codeClassifyOid="codeClassifyOid" + :redisOid="redisOid" + :type="type" + :title="title" + :secDTOList="secDTOList" + :resetTable="resetTable" + ></ShowImportData> + </el-dialog> +</template> + +<script> +import ShowImportData from "./ShowImportData.vue"; +import { + downloadHistoryImportTemplate, + downloadErrorFile, + importDataShow, + downloadBatchImportApplyTemplate, + downloadBatchApplyCodeTemplate, +} from "../../api/batchImport/index"; +import FormTemplate from "../FormTemplate/FormTemplate.vue"; +import { getToken } from "@/util/auth"; +import codeApply from "@/mixins/codeApply.js"; +export default { + name: "BatchImport", + mixins: [codeApply], + components: { ShowImportData, FormTemplate }, + props: { + visible: { + type: Boolean, + default: false, + }, + accept: { + type: String, + default: ".xlsx, .xls", + }, + codeClassifyOid: { + type: String, + default: "", + }, + type: { + type: String, + default: "", + }, + resetTable: Function + }, + computed: { + uploadHeaders() { + return { + "Blade-Auth": "bearer " + getToken(), + }; + }, + dialogVisible: { + get() { + return this.visible; + }, + set(val) { + this.$emit("update:visible", val); + }, + }, + title() { + return this.currentTypeObj[this.type]["title"]; + }, + tipList() { + return this.currentTypeObj[this.type]["tipList"]; + }, + downloadTemplateApi() { + console.log(this.currentTypeObj[this.type], "this.type"); + return this.currentTypeObj[this.type]["downloadTemplateFun"]; + }, + action() { + return this.currentTypeObj[this.type]["action"]; + }, + upParams() { + if (this.type === "historyImport" || this.type === "batchApplyCode") { + return { + codeClassifyOid: this.codeClassifyOid, + classifyAttr: this.classifyAttr, + }; + } else if (this.type === "batchImportApply") { + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + this.secDTOList = this.localSecVOList.map((item) => { + return { + secOid: item.oid, + secValue: this.codeApplyForm[item.oid], + }; + }); + return { + codeClassifyOid: this.codeClassifyOid, + secDTOList: JSON.stringify(this.secDTOList), + ...this.codeApplyForm, + }; + } + }, + }, + data() { + return { + classifyAttr: "id", + downloadLoading: false, + showVisible: false, + leftTree: [], + redisOid: "", + pageLoading: null, + showCodeApply: true, + currentTypeObj: { + historyImport: { + title: "鍘嗗彶鏁版嵁瀵煎叆", + tipList: [ + "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」", + "2.浼佷笟缂栫爜锛岄泦鍥㈢爜鍜岀姸鎬侀兘闇�瑕佸鍏�", + "3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹紝濡傛灉鍑洪敊浼氳繑鍥為敊璇殑鏁版嵁鍜屽師鍥狅紝浣嗘槸姝g‘鐨勬暟鎹細淇濆瓨", + "4.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粎濉啓褰撳墠閫夌殑鍒嗙被鏍戜笂鐨勪笅绾у垎绫荤殑璺緞锛屽鏋滃綋鍓嶅垎绫诲凡缁忔槸鍙跺瓙鑺傜偣锛屽垯涓嶅~鍐�", + ], + action: "/api/ubcs-code/mdmEngineController/batchImportHistoryData", + downloadTemplateFun: downloadHistoryImportTemplate, + upParams: "classifyAttr", + }, + batchImportApply: { + title: "鎵归噺鐢宠缂栫爜", + tipList: [ + "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」", + "2.璇蜂竴瀹氬厛閫夋嫨/杈撳叆缂栫爜瑙勫垯鐨勭爜娈靛�煎悗鍐嶉�夋嫨excel鏂囦欢", + "3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹紝濡傛灉鍑洪敊浼氳繑鍥為敊璇殑鏁版嵁鍜屽師鍥狅紝浣嗘槸姝g‘鐨勬暟鎹細淇濆瓨", + "4.濡傛灉灞炴�т负鍙傜収锛屽湪鍙傜収閰嶇疆涓缃涓睘鎬ф椂锛屼紭鍏堜娇鐢╪ame灞炴�х殑鍊硷紝鍚﹀垯濉啓绗竴涓睘鎬х殑鍊笺��", + ], + action: "/api/ubcs-code/mdmEngineController/batchImportCode", + downloadTemplateFun: downloadBatchImportApplyTemplate, + upParams: "codeApply", + }, + batchApplyCode: { + title: "鎵归噺鐢宠缂栫爜", + tipList: [ + "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」", + "2.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粠褰撳墠閫夋嫨鍒嗙被鑺傜偣鐨勪笅绾у紑濮嬪~鍐欙紝鐩村埌鏈�鏈熬鑺傜偣锛屽 浜у搧#涓绘満浜у搧#涓绘満浜у搧", + ], + action: "/api/ubcs-code/mdmEngineController/batchTopImportCode", + downloadTemplateFun: downloadBatchApplyCodeTemplate, + upParams: "classifyAttr", + }, + }, + secDTOList: [], + }; + }, + methods: { + async beforeUpload(file) { + const fileType = file.name.split(".").pop(); + if (fileType !== "xlsx" && fileType !== "xls") { + // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼� + this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�"); + return Promise.reject(false); + } + if (this.type === "batchImportApply" && this.showCodeApply) { + const flag = await this.$refs.CodeApply.validate(); + if (!flag) { + return Promise.reject(false); + } + } + this.pageLoading = this.$loading({ + lock: true, + text: "鏂囦欢涓婁紶涓�", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + return true; + }, + // 涓嬭浇瀵煎叆妯℃澘 + downloadTemplateFun() { + this.downloadLoading = true; + this.downloadTemplateApi({ + codeClassifyOid: this.codeClassifyOid, + }) + .then((res) => { + this.$utilFunc.downloadFileByBlob(res.data, this.title + "妯℃澘.xls"); + this.downloadLoading = false; + }) + .catch(() => { + this.downloadLoading = false; + }); + }, + onSuccess(res) { + console.log('res',res) + if (Object.keys(res.data).length === 0) { + this.$message.success(this.title + "瀵煎叆鎴愬姛锛�"); + this.dialogVisible = false; + return; + } + if (res.data.fileOid) { + const fileName = res.data.filePath.split("/").pop(); + this.$message.error("璇蜂笅杞介敊璇俊鎭枃浠惰繘琛屾煡鐪嬶紒"); + downloadErrorFile({ uuid: res.data.fileOid }).then((res2) => { + console.log('res2',res2) + this.$utilFunc.downloadFileByBlob(res2.data, fileName); + }); + } + if (res.data.redisUuid) { + this.redisOid = res.data.redisUuid; + importDataShow(res.data.redisUuid).then((res2) => { + this.leftTree = res2.data.data.map((item) => { + if (this.type === 'batchApplyCode') { + return { + cloNamesList: item.cloNamesList, + oid: item.codeTemplateOid, + codeClassifyOid: item.codeClassifyOid, + codeRuleOid: item.codeRuleOid, + name: item.codeRuleVO.name + } + } else { + return { + ...item.codeClassifyTemplateVO, + cloNamesList: item.cloNamesList, + codeClassifyOid: item.codeClassifyTemplateVO.codeclassifyoid + }; + } + }); + this.showVisible = true; + }); + } + }, + onError(err) { + console.log(err, "err"); + this.pageLoading.close(); + }, + uploadChange(file) { + if (file.status === "success" || file.status === "error") { + this.pageLoading.close(); + } + }, + }, + watch: {}, +}; +</script> + +<style lang="scss" scoped> +ul { + color: rgb(188, 188, 188); + margin: 20px 0 20px 0; + padding: 0; + padding-left: 30px; + list-style: none; + li { + margin-bottom: 5px; + font-size: 12px; + } +} +.radio_box { + padding-left: 30px; + margin: 0px 0 25px 0; + display: flex; + align-items: center; + span { + margin-right: 20px; + } +} +.upload { + padding-left: 30px; + margin-top: 30px; +} +/deep/ .no-print { + display: none !important; +} +</style> diff --git a/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue b/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue index ef65f83..cdb319c 100644 --- a/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue +++ b/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue @@ -188,7 +188,7 @@ exportCode({ codeClassifyOid: this.codeClassifyOid, ...this.exportArr, limit: this.limit, page: start, endPage: end }).then((res) => { // console.log('res',res) if (res) { - func.downloadFileByBlob(res); + func.downloadFileByBlobHandler(res); this.escHandler() } }); diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue index 4fbe436..48db372 100644 --- a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue +++ b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue @@ -16,7 +16,7 @@ <div style="display: flex; margin-top: 10px"> <el-button plain size="small" type="primary" @click="Enable">鍚敤</el-button> <el-button plain size="small" type="primary" @click="Deactivate">鍋滅敤</el-button> - <el-button plain size="small" type="primary" @click="ImportExcel">瀵煎叆</el-button> + <el-button plain size="small" type="primary" @click.native="ImportExcel">瀵煎叆</el-button> <el-button plain size="small" type="primary" @click="ExportExcel">瀵煎嚭</el-button> </div> </div> @@ -312,7 +312,7 @@ </div> </div> </el-dialog> - <ThemeImport :visible.sync="ThemeImportVisible"></ThemeImport> + <ThemeImport :visible.sync="ThemeImportVisible" :codeClassifyOid="this.codeClassifyOid"></ThemeImport> </basic-container> </el-main> </el-container> @@ -682,7 +682,7 @@ label: '', prop: 'radio', width: 60, - hide: false, + display: false }, { label: "妯℃澘缂栧彿", @@ -731,11 +731,7 @@ methods: { /** 瀵煎叆 */ ImportExcel(){ - // debugger - // this.batchImportData.visible = true - // this.batchImportData.codeClassifyOid = this.codeClassifyOid this.ThemeImportVisible=true; - console.log('ThemeImportVisible',this.ThemeImportVisible) }, /** 瀵煎嚭 */ ExportExcel(){ diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeImport.vue b/Source/UBCS-WEB/src/components/Theme/ThemeImport.vue index 70caaaa..f2d533d 100644 --- a/Source/UBCS-WEB/src/components/Theme/ThemeImport.vue +++ b/Source/UBCS-WEB/src/components/Theme/ThemeImport.vue @@ -1,33 +1,160 @@ <template> <el-dialog - title="涓婚搴撳鍏�" + title="涓婚搴撳垎绫诲鍏�" :visible.sync="dialogVisible" append-to-body - v-dialogDrag - ></el-dialog> + > + <Divider text="瀵煎叆鎻愮ず" left="30px"></Divider> + <ul> + <li> + 1.绾㈣壊瀛椾綋琛ㄧず蹇呰緭椤� + </li> + <li> + 2.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧 + </li> + <li> + 3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹� + </li> + </ul> + <Divider text="excel鏂囦欢锛岄�夋嫨鏂囦欢鍚庝細鑷姩涓婁紶" left="30px"></Divider> + <el-upload + accept=".xlsx, .xls" + action="/api/ubcs-code/codeClassify/importClassify" + :on-success="onSuccess" + :on-error="onError" + :headers="uploadHeaders" + :show-file-list="false" + :before-upload="beforeUpload" + :on-change="uploadChange" + class="upload-demo"> + <el-button size="small" type="primary" style="margin: 15px 35px">娴忚鏂囦欢</el-button> + </el-upload> + <template #footer> + <el-button + type="primary" + size="small" + @click="downloadTemplateFun" + :loading="downloadLoading" + >涓嬭浇瀵煎叆妯℃澘</el-button + > + <el-button size="small" @click="dialogVisible = false">鍏抽棴</el-button> + </template> + </el-dialog> </template> <script> +import {downloadErrorFile,downloadBatchImportApplyTemplate} from '@/api/template/templateAttr' +import {getToken} from "@/util/auth"; +import func from "@/util/func"; export default { name: "ThemeImport", - props:{ - dialogVisible: { - get() { - return this.dialogVisible; - }, - set(val) { - this.$emit("update:dialogVisible", val); - }, + props: { + visible: { + type: Boolean, + default: false, + }, + codeClassifyOid: { + type: String, + default: "", }, }, data(){ return{ - + flga:true, + pageLoading: null, + downloadLoading: false, + } + }, + watch:{ + visible:{ + handler(newval,oldval){ + console.log('newval',newval) + } + } + }, + computed:{ + uploadHeaders() { + return { + "Blade-Auth": "bearer " + getToken(), + }; + }, + dialogVisible: { + get() { + return this.visible; + }, + set(val) { + this.$emit("update:visible", val); + }, + }, + }, + methods:{ + //鏂囦欢涓婁紶鍓� + async beforeUpload(file) { + const fileType = file.name.split(".").pop(); + if (fileType !== "xlsx" && fileType !== "xls") { + // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼� + this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�"); + return Promise.reject(false); + } + this.pageLoading = this.$loading({ + lock: true, + text: "鏂囦欢涓婁紶涓�", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + return true; + }, + // 鏂囦欢涓婁紶鎴愬姛 + onSuccess(resbonse){ + if (Object.keys(resbonse.data).length === 0) { + this.$message.success( "涓婚搴撳垎绫诲鍏ユ垚鍔燂紒"); + this.dialogVisible = false; + return; + } + if (resbonse.data.fileOid) { + const fileName = resbonse.data.filePath.split("/").pop(); + this.$message.error("璇蜂笅杞介敊璇俊鎭枃浠惰繘琛屾煡鐪嬶紒"); + downloadErrorFile({ uuid: resbonse.data.fileOid }).then((res) => { + func.downloadFileByBlobHandler(res); + }); + } + }, + //鐐瑰嚮涓嬭浇妯℃澘 + downloadTemplateFun(){ + this.downloadLoading = true; + downloadBatchImportApplyTemplate({codeClassifyOid: this.codeClassifyOid}).then(res=>{ + console.log(res) + this.$utilFunc.downloadFileByBlob(res.data, "涓婚搴撳垎绫绘ā鏉�.xls"); + this.downloadLoading = false; + }).catch((res)=>{ + this.$message.warning(res) + this.downloadLoading = false; + }) + }, + //鏂囦欢涓婁紶澶辫触 + onError(res){ + console.log(res) + this.pageLoading.close(); + }, + //鏂囦欢鐘舵�佹敼鍙� + uploadChange(file){ + if (file.status === "success" || file.status === "error") { + this.pageLoading.close(); + } } } } </script> -<style scoped> - +<style scoped lang="scss"> +ul { + color: rgb(188, 188, 188); + margin: 20px 0 20px 0; + padding: 0 0 0 30px; + list-style: none; + li { + margin-bottom: 5px; + font-size: 13px; + } +} </style> diff --git a/Source/UBCS-WEB/src/components/file/main.vue b/Source/UBCS-WEB/src/components/file/main.vue index abf9230..251148c 100644 --- a/Source/UBCS-WEB/src/components/file/main.vue +++ b/Source/UBCS-WEB/src/components/file/main.vue @@ -395,7 +395,7 @@ download(data).then(res=>{ // console.log(res); if(res){ - func.downloadFileByBlob(res); + func.downloadFileByBlobHandler(res); } }); }, diff --git a/Source/UBCS-WEB/src/util/func.js b/Source/UBCS-WEB/src/util/func.js index eb37dd5..ac2bdb8 100644 --- a/Source/UBCS-WEB/src/util/func.js +++ b/Source/UBCS-WEB/src/util/func.js @@ -115,7 +115,7 @@ * @param value * @returns {Boolean} */ - static downloadFileByBlob(res) { + static downloadFileByBlobHandler(res) { const fileNames = res.headers['content-disposition'].split(";"); let characterSet = fileNames[2].split("filename*=")[1]; let fileName = decodeURI(fileNames[1].split("filename=")[1],characterSet); // 涓嬭浇鐨勬枃浠跺悕 @@ -131,4 +131,20 @@ document.body.removeChild(link); //鍒犻櫎涓嬭浇 window.URL.revokeObjectURL(url); //閲婃斁鎺塨lob瀵硅薄 } + + /** + * 鑾峰彇娴佹枃浠惰繘琛屾枃浠朵笅 + * @param value + * @returns {Boolean} + */ + static downloadFileByBlob(blobData, name) { + const url = URL.createObjectURL(blobData); // 鐢熸垚涓嬭浇閾炬帴 + const link = document.createElement("a"); + link.href = url; + link.download = name; // 鎸囧畾鏂囦欢鍚嶅拰鏍煎紡 + document.body.appendChild(link); // 娣诲姞涓嬭浇閾炬帴鍒伴〉闈� + link.click(); // 瑙﹀彂涓嬭浇 + document.body.removeChild(link); //鍒犻櫎涓嬭浇 + } + } diff --git a/Source/UBCS-WEB/vue.config.js b/Source/UBCS-WEB/vue.config.js index e8b80d9..d12f1f9 100644 --- a/Source/UBCS-WEB/vue.config.js +++ b/Source/UBCS-WEB/vue.config.js @@ -28,8 +28,8 @@ //鏈湴鏈嶅姟鎺ュ彛鍦板潃 // target: 'http://localhost:37000', // target: 'http://192.168.1.51:37000', - // target: 'http://192.168.0.102:37000', - target: 'http://dev.vci-tech.com:37000', + target: 'http://192.168.0.102:37000', + // target: 'http://dev.vci-tech.com:37000', // target: 'http://192.168.1.104:37000', // target: 'http://192.168.1.63:37000', // target: 'http://192.168.3.7:37000', -- Gitblit v1.9.3