From 33c8db885ab2b5117c064d064f6e7c7eb0357a1c Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期五, 02 六月 2023 16:24:54 +0800
Subject: [PATCH] 动态模块

---
 Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue |  127 +++++++++++++++++++++++++++---------------
 1 files changed, 82 insertions(+), 45 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue b/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue
index 8b86bd3..242fbac 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue
@@ -1,39 +1,85 @@
 <template>
-  <div></div>
+  <FormTempalte
+    ref="FormTempalte"
+    :visible="visible"
+    :selfColumnType="selfColumnType"
+    :selfColumnConfig="selfColumnConfig"
+    :columnList="columnList"
+  ></FormTempalte>
 </template>
 
 <script>
 import { getCodeRule } from "@/api/formTemplate.js";
-
+import FormTempalte from "./FormTempalte.vue";
 export default {
   name: "CodeApply",
+  components: { FormTempalte },
   props: {
+    visible: {
+      type: Boolean,
+      default: false
+    },
     codeClassifyOid: {
       type: String,
-      default: ''
-    }
+      default: "",
+    },
   },
   data() {
     return {
       secVOList: [],
       formItems: [],
-      trendsSpan: 8
+      trendsSpan: 8,
+      selfColumnType: {
+        codefixedsec: "combox",
+        codeclassifysec: "refer",
+        codevariablesec: "text",
+        coderefersec: "refer",
+      },
+      selfColumnConfig: {
+        function: {
+          required: this.isRequired,
+          dicData: this.getOptionList,
+          type: this.getType,
+        },
+        exchange: {
+          text: "name",
+          field: "oid",
+          prop: "oid",
+          showField: "name",
+          parentClassifySecOid: "parentClassifySecOid",
+          label: "name",
+          maxlength: "codeSecLength",
+          data: "fixedValueVOList",
+        },
+        directVoluation: {
+          search: true,
+          props: {
+            label: "id",
+            value: "id",
+          },
+        },
+      },
+      columnList: [],
     };
   },
   created() {
     this.handleResize();
-    this.getCodeRule();
   },
-  mounted() {
-    
-  },
+  mounted() {},
   methods: {
+    getType(item) {
+      return this.selfColumnType[item.sectype];
+    },
     getCodeRule() {
       getCodeRule({ codeClassifyOid: this.codeClassifyOid }).then((res) => {
         if (res.data && res.data.code === 200) {
           this.defaultValue = res.data.data;
-          this.secVOList = res.data.data.secVOList || [];
+          this.columnList = res.data.data.secVOList || [];
+          console.log(res.data.data.secVOList, 'res.data.data.secVOList');
           this.codeRuleOid = res.data.data.oid;
+          this.$nextTick(() => {
+            this.$refs.FormTempalte.init(res.data.data.secVOList)
+          })
         }
       });
     },
@@ -41,43 +87,34 @@
       let windowWidth = document.body.clientWidth;
       this.trendsSpan = 24 / Math.floor(windowWidth / 500);
     },
+    isRequired(item) {
+      return item.nullableFlag != "true";
+    },
+    getOptionList(item) {
+      if (
+        Array.isArray(item.fixedValueVOList) &&
+        item.fixedValueVOList.length > 0
+      ) {
+        const configAttr = {
+          key: "id",
+          value: "id",
+        };
+        const optionList = item.fixedValueVOList.map((item) => {
+          for (const key in configAttr) {
+            if (Object.hasOwnProperty.call(configAttr, key)) {
+              const element = configAttr[key];
+              item[key] = item[element];
+            }
+          }
+          return item;
+        });
+        return optionList;
+      } else {
+        return [];
+      }
+    },
   },
   watch: {
-    secVOList: {
-      deep: true,
-      handler(newV) {
-        this.formItems = [];
-        newV.forEach((item) => {
-          let itemObj = {};
-          let options = [];
-          //鍥哄畾鐮佹
-          if (item.sectype == "codefixedsec") {
-            options = item.fixedValueVOList.map((item) => {
-              item.key = item.id;
-              item.value = item.id;
-            });
-            itemObj = {
-              field: item.oid,
-              title: item.name,
-              required: item.nullableFlag != "true",
-              type: "combox",
-              data: options,
-              search: true,
-            };
-            //鍙彉鐮佹
-          } else if (item.sectype == "codevariablesec") {
-            itemObj = {
-              field: item.oid,
-              title: item.name,
-              required: item.nullableFlag != "true",
-              type: "text",
-            };
-          }
-          itemObj.span = item.type === "textarea" ? 24 : this.trendsSpan,
-          this.formItems.push(itemObj);
-        });
-      },
-    },
   },
 };
 </script>

--
Gitblit v1.9.3