From a4e4026aee8c5e6d12c1065ce71efee81a2b5518 Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期一, 26 六月 2023 18:17:05 +0800
Subject: [PATCH] 批量导入申请

---
 Source/UBCS-WEB/src/components/BatchImport/index.vue |  203 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 137 insertions(+), 66 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/BatchImport/index.vue b/Source/UBCS-WEB/src/components/BatchImport/index.vue
index fbfd844..c73ac79 100644
--- a/Source/UBCS-WEB/src/components/BatchImport/index.vue
+++ b/Source/UBCS-WEB/src/components/BatchImport/index.vue
@@ -12,12 +12,24 @@
         {{ item }}
       </li>
     </ul>
-    <div class="radio_box">
+    <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 && type === 'batchImportApply'">
+      <Divider text="缂栫爜瑙勫垯鐨勭爜娈典俊鎭紝璇峰厛閫夋嫨鍚庡啀瀵煎叆" left="30px"></Divider>
+      <FormTemplate
+        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
@@ -30,10 +42,7 @@
       :on-success="onSuccess"
       :show-file-list="false"
       :on-change="uploadChange"
-      :data="{
-        codeClassifyOid: this.codeClassifyOid,
-        classifyAttr: this.classifyAttr,
-      }"
+      :data="upParams"
     >
       <el-button size="small" type="primary"
         ><i class="el-icon-upload"></i> 鐐瑰嚮涓婁紶</el-button
@@ -51,11 +60,12 @@
     </template>
     <ShowImportData
       :visible.sync="showVisible"
-      v-if="dialogVisible"
+      v-if="showVisible"
       :leftTree="leftTree"
       :classifyAttr="classifyAttr"
       :codeClassifyOid="codeClassifyOid"
       :redisOid="redisOid"
+      :type="type"
     ></ShowImportData>
   </el-dialog>
 </template>
@@ -65,12 +75,16 @@
 import {
   downloadHistoryImportTemplate,
   downloadErrorFile,
-  getHistoryLeftTree
+  getHistoryLeftTree,
+  downloadBatchImportApplyTemplate
 } 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",
-  components: { ShowImportData },
+  mixins: [codeApply],
+  components: { ShowImportData, FormTemplate },
   props: {
     visible: {
       type: Boolean,
@@ -89,17 +103,6 @@
       default: "",
     },
   },
-  data() {
-    return {
-      classifyAttr: "id",
-      uploadParams: {},
-      downloadLoading: false,
-      showVisible: false,
-      leftTree: [],
-      redisOid:'',
-      pageLoading: null
-    };
-  },
   computed: {
     uploadHeaders() {
       return {
@@ -114,44 +117,115 @@
         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') {
+        return {
+        codeClassifyOid: this.codeClassifyOid,
+        classifyAttr: this.classifyAttr,
+      }
+      } else if(this.type === 'batchImportApply') {
+        return {
+          codeClassifyOid: this.codeClassifyOid,
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      classifyAttr: "id",
+      uploadParams: {},
+      downloadLoading: false,
+      showVisible: false,
+      leftTree: [],
+      redisOid: "",
+      pageLoading: null,
+      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: false
+        }
+      },
+    };
   },
   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) {
+    // getDataByType() {
+    //   if (this.type === "historyImport") {
+    //   } else if (this.type === "codeApply_leaf") {
+    //     this.title = "鎵归噺缂栫爜鐢宠";
+    //     this.tipList = [
+    //       "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」",
+    //       "2.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粠褰撳墠閫夋嫨鍒嗙被鑺傜偣鐨勪笅绾у紑濮嬪~鍐欙紝鐩村埌鏈�鏈熬鑺傜偣锛屽 浜у搧#涓绘満浜у搧#涓绘満浜у搧",
+    //     ];
+    //     this.action =
+    //       "/api/ubcs-code/mdmEngineController/batchImportHistoryData";
+    //   } else {
+    //     this.title = "鍘嗗彶鏁版嵁瀵煎叆";
+    //     this.tipList = [
+    //       "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」",
+    //       "2.浼佷笟缂栫爜锛岄泦鍥㈢爜鍜岀姸鎬侀兘闇�瑕佸鍏�",
+    //       "3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹紝濡傛灉鍑洪敊浼氳繑鍥為敊璇殑鏁版嵁鍜屽師鍥狅紝浣嗘槸姝g‘鐨勬暟鎹細淇濆瓨",
+    //       "4.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粎濉啓褰撳墠閫夌殑鍒嗙被鏍戜笂鐨勪笅绾у垎绫荤殑璺緞锛屽鏋滃綋鍓嶅垎绫诲凡缁忔槸鍙跺瓙鑺傜偣锛屽垯涓嶅~鍐�",
+    //     ];
+    //     this.action =
+    //       "/api/ubcs-code/mdmEngineController/batchImportHistoryData";
+    //   }
+    // },
+    async beforeUpload(file) {
+      console.log(223344);
       const fileType = file.name.split(".").pop();
       if (fileType !== "xlsx" && fileType !== "xls") {
         // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼�
         this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�");
-        return false;
+        return Promise.reject(false)
+      }
+      if (this.type === 'batchImportApply') {
+        const flag = await this.$refs.CodeApply.validate()
+        if (!flag) {
+          return Promise.reject(false)
+        }
       }
       return true;
     },
     // 涓嬭浇瀵煎叆妯℃澘
     downloadTemplateFun() {
       this.downloadLoading = true;
-      downloadHistoryImportTemplate({
+      this.downloadTemplateApi({
         codeClassifyOid: this.codeClassifyOid,
       })
         .then((res) => {
-          this.$utilFunc.downloadFileByBlob(res.data, "鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls");
+          this.$utilFunc.downloadFileByBlob(res.data, this.title + "妯℃澘.xls");
           this.downloadLoading = false;
         })
         .catch(() => {
@@ -159,7 +233,7 @@
         });
     },
     onSuccess(res) {
-      let fileName = res.data.filePath.split('/').pop()
+      let fileName = res.data.filePath.split("/").pop();
       if (res.data.fileOid) {
         this.$message.error("璇蜂笅杞介敊璇俊鎭枃浠惰繘琛屾煡鐪嬶紒");
         downloadErrorFile({ uuid: res.data.fileOid }).then((res2) => {
@@ -167,39 +241,33 @@
         });
       }
       if (res.data.redisUuid) {
-        this.redisOid = res.data.redisUuid
-        getHistoryLeftTree(res.data.redisUuid).then(res => {
-          this.leftTree = res.obj.map(item => {
+        this.redisOid = res.data.redisUuid;
+        getHistoryLeftTree(res.data.redisUuid).then((res) => {
+          this.leftTree = res.obj.map((item) => {
             return {
               ...item.codeClassifyTemplateVO,
-              cloNamesList: item.cloNamesList
-            }
-          })
-          this.showVisible = true
-        })
+              cloNamesList: item.cloNamesList,
+            };
+          });
+          this.showVisible = true;
+        });
       }
     },
     uploadChange(file) {
-      if (file.status === 'ready') {
+      if (file.status === "uploadin") {
         this.pageLoading = this.$loading({
           lock: true,
-          text: '鏂囦欢涓婁紶涓�',
-          spinner: 'el-icon-loading',
-          background: 'rgba(0, 0, 0, 0.7)'
+          text: "鏂囦欢涓婁紶涓�",
+          spinner: "el-icon-loading",
+          background: "rgba(0, 0, 0, 0.7)",
         });
       }
-      if (file.status === 'success' || file.status === 'error') {
-        this.pageLoading.close()
+      if (file.status === "success" || file.status === "error") {
+        this.pageLoading.close();
       }
-    }
+    },
   },
   watch: {
-    visible: {
-      immediate: true,
-      handler() {
-        this.getDataByType();
-      },
-    },
   },
 };
 </script>
@@ -207,7 +275,7 @@
 <style lang="scss" scoped>
 ul {
   color: rgb(188, 188, 188);
-  margin: 20px 0 0 0;
+  margin: 20px 0 20px 0;
   padding: 0;
   padding-left: 30px;
   list-style: none;
@@ -218,7 +286,7 @@
 }
 .radio_box {
   padding-left: 30px;
-  margin: 20px 0 25px 0;
+  margin: 0px 0 25px 0;
   display: flex;
   align-items: center;
   span {
@@ -229,4 +297,7 @@
   padding-left: 30px;
   margin-top: 30px;
 }
+/deep/ .no-print {
+  display: none !important;
+}
 </style>

--
Gitblit v1.9.3