From ce567eb11cd0cdbd826214c355d1a8caff175dca Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 15 十一月 2023 14:25:22 +0800
Subject: [PATCH] bug列表:181(修复新增,修改,删除接口,新增时没设置默认值,导致在建分类时无法查询到,关键属性查重规则)183(历史数据导入模板下载,过滤掉模板中配置的默认属性)

---
 Source/UBCS-WEB/src/components/BatchImport/index.vue |  499 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 334 insertions(+), 165 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/BatchImport/index.vue b/Source/UBCS-WEB/src/components/BatchImport/index.vue
index f9baddc..0f7ca74 100644
--- a/Source/UBCS-WEB/src/components/BatchImport/index.vue
+++ b/Source/UBCS-WEB/src/components/BatchImport/index.vue
@@ -1,165 +1,334 @@
-<template>
-  <el-dialog :title="title" :visible="visible" append-to-body>
-    <Divider text="瀵煎叆鎻愮ず" left="30px"></Divider>
-    <ul>
-      <li v-for="(item, index) in tipList" :key="index">
-        {{ item }}
-      </li>
-    </ul>
-    <div class="radio_box">
-      <span>鍒嗙被鐨勮矾寰勪娇鐢ㄧ殑灞炴��:</span>
-      <el-radio-group v-model="classifyAttr">
-        <el-radio label="id">鍒嗙被缂栧彿</el-radio>
-        <el-radio label="name">鍒嗙被鍚嶇О</el-radio>
-      </el-radio-group>
-    </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"
-      :show-file-list="false"
-      :data="{
-        codeClassifyOid: this.codeClassifyOid,
-        classifyAttr: this.classifyAttr,
-      }"
-    >
-      <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">鍏抽棴</el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script>
-import { downloadHistoryImportTemplate, downloadErrorFile } from "../../api/batchImport/index";
-import { getToken } from "@/util/auth";
-export default {
-  name: "",
-  props: {
-    visible: {
-      type: Boolean,
-      default: false,
-    },
-    accept: {
-      type: String,
-      default: ".xlsx, .xls",
-    },
-    codeClassifyOid: {
-      type: String,
-      default: "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
-    },
-    type: {
-      type: String,
-      default: "",
-    },
-  },
-  data() {
-    return {
-      classifyAttr: "id",
-      uploadParams: {},
-      downloadLoading: false
-    };
-  },
-  computed: {
-    uploadHeaders() {
-      return {
-        "Blade-Auth": "bearer " + getToken(),
-      };
-    },
-  },
-  methods: {
-    getDataByType() {
-      if (this.type === "historyImport") {
-        this.title = "鍘嗗彶鏁版嵁瀵煎叆";
-        this.tipList = [
-          "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」",
-          "2.浼佷笟缂栫爜锛岄泦鍥㈢爜鍜岀姸鎬侀兘闇�瑕佸鍏�",
-          "3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹紝濡傛灉鍑洪敊浼氳繑鍥為敊璇殑鏁版嵁鍜屽師鍥狅紝浣嗘槸姝g‘鐨勬暟鎹細淇濆瓨",
-          "4.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粎濉啓褰撳墠閫夌殑鍒嗙被鏍戜笂鐨勪笅绾у垎绫荤殑璺緞锛屽鏋滃綋鍓嶅垎绫诲凡缁忔槸鍙跺瓙鑺傜偣锛屽垯涓嶅~鍐�",
-        ];
-        this.action =
-          "/api/ubcs-code/mdmEngineController/batchImportHistoryData";
-      } else if (this.type === "codeApply") {
-        this.title = "鎵归噺缂栫爜鐢宠";
-        this.tipList = [
-          "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」",
-          "2.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粠褰撳墠閫夋嫨鍒嗙被鑺傜偣鐨勪笅绾у紑濮嬪~鍐欙紝鐩村埌鏈�鏈熬鑺傜偣锛屽 浜у搧#涓绘満浜у搧#涓绘満浜у搧",
-        ];
-      }
-    },
-    beforeUpload(file) {
-      const fileType = file.name.split(".").pop();
-      if (fileType !== "xlsx" && fileType !== "xls") {
-        // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼�
-        this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�");
-        return false;
-      }
-      return true;
-    },
-    // 涓嬭浇瀵煎叆妯℃澘
-    downloadTemplateFun() {
-      this.downloadLoading = true
-      downloadHistoryImportTemplate({
-        codeClassifyOid: "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
-      }).then(res => {
-        this.downloadLoading = false
-        console.log(res);
-      }).catch(() => {
-        this.downloadLoading = false
-      });
-    },
-    onSuccess(res) {
-      if (res.code === 400) {
-        this.$message.error(`${res.msg}锛岃涓嬭浇閿欒淇℃伅杩涜鏌ョ湅锛乣)
-      }
-      downloadErrorFile({uuid: res.data.fileOid})
-    }
-  },
-  watch: {
-    visible: {
-      immediate:true,
-      handler() {
-        this.getDataByType();
-      }
-    }
-  },
-};
-</script>
-
-<style lang="scss" scoped>
-ul {
-  color: rgb(188, 188, 188);
-  margin: 20px 0 0 0;
-  padding: 0;
-  padding-left: 30px;
-  list-style: none;
-  li {
-    margin-bottom: 5px;
-    font-size: 12px;
-  }
-}
-.radio_box {
-  padding-left: 30px;
-  margin: 20px 0 25px 0;
-  display: flex;
-  align-items: center;
-  span {
-    margin-right: 20px;
-  }
-}
-.upload {
-  padding-left: 30px;
-  margin-top: 30px;
-}
-</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() {
+      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.姣忔浠呰兘鏈�澶氬鍏�5000鏉℃暟鎹�(鍙�氳繃nacos杩涜閰嶇疆锛屾帹鑽�5000/娆″鍏�)锛屽鏋滃嚭閿欎細杩斿洖閿欒鐨勬暟鎹拰鍘熷洜锛屼絾鏄纭暟鎹彲浠ョ户缁繚瀛�",
+            "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) {
+      this.pageLoading.close();
+      //console.log('onError')
+    },
+    uploadChange(file) {
+      if (file.status === "success" || file.status === "error") {
+        this.pageLoading.close();
+        //console.log('uploadChange')
+      }
+    },
+  },
+  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>

--
Gitblit v1.9.3