From c6a54f63df671de4592e336b9b8cd8406d4e3b51 Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期五, 02 六月 2023 16:25:27 +0800
Subject: [PATCH] 解决动态模块冲突

---
 Source/UBCS-WEB/src/components/FormTemplate/index.vue |  202 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 160 insertions(+), 42 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index 10b6e40..23edc8f 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -1,42 +1,160 @@
-<template>
-  <div>
-  </div>
-</template>
-
-<script>
-  import { getFormTemplate } from '../../api/common';
-  export default {
-    name: 'FormTemplate',
-    props: {
-      visible: {
-        type: Boolean,
-        default: false
-      },
-    },
-    created() {
-      this.getFormTemplate()
-    },
-    data() {
-      return {
-        load: false
-      }
-    },
-    methods: {
-      getFormTemplate() {
-        this.load = true
-        getFormTemplate({
-          templateOid: '78B8C7C5-A042-0B96-FE6D-65421451782A',
-          codeClassifyOid: '4524E801-6CC6-92E8-1AC3-2AB9604E8F96'
-        }).then(res => {
-          console.log(res);
-        }).catch(err => {
-          console.log(err);
-        })
-      }
-    }
-  }
-</script>
-
-<style lang='less' scoped>
-
-</style>
\ No newline at end of file
+<template>
+  <el-dialog
+    :visible.sync="dialogVisible"
+    v-dialogDrag
+    top="0vh"
+    :title="title"
+    class="avue-dialog avue-dialog--top"
+    :width="width"
+    append-to-body
+    @opened="openDialog"
+  >
+    <FormTempalte
+      v-bind="$attrs"
+      :visible="visible"
+      :type="type"
+      v-if="dialogVisible"
+      ref="FormTempalte"
+      @getFormTemplateEnd="getFormTemplate"
+      @getFormData="getFormData"
+    ></FormTempalte>
+
+    <div class="tab_box" v-if="type !== 'detail' && dialogVisible">
+      <el-tabs v-model="activeName" type="card">
+        <el-tab-pane label="鐮佸�肩敵璇�" name="codeApply" v-if="showCodeApply">
+          <CodeApply ref="CodeApply" v-bind="$attrs" @getCodeRuleOid="getCodeRuleOid"></CodeApply>
+        </el-tab-pane>
+        <el-tab-pane
+          label="鐩镐技椤规煡璇�"
+          name="resembleQuery"
+          v-if="showResembleQuery"
+        >
+          <ResembleQuery
+            v-bind="$attrs"
+            ref="resembleQueryRef"
+            :hasResemble="this.hasResemble"
+            :column="this.resembleTableColumn"
+            :form="this.form"
+            :codeRuleOid="codeRuleOid"
+          ></ResembleQuery>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+    <div class="avue-dialog__footer" v-if="type !== 'detail'">
+      <el-button @click="close()">鍙� 娑�</el-button>
+      <el-button @click="close()" type="primary" :loading="submitBtnLoading"
+        >纭� 瀹�</el-button
+      >
+      <el-button @click="resembleQuerySubmit" type="primary" v-if="hasResemble"
+        >鐩镐技鍍忔煡璇�</el-button
+      >
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import FormTempalte from "./FormTempalte";
+import ResembleQuery from "./ResembleQuery";
+import CodeApply from "./CodeApply";
+export default {
+  name: "FormTemplateDialog",
+  components: { ResembleQuery, FormTempalte, CodeApply },
+  props: {
+    visible: {
+      type: Boolean,
+      default: false,
+    },
+    type: {
+      type: String,
+      default: "add",
+    },
+    title: {
+      type: String,
+      default: "琛ㄥ崟妯℃澘",
+    },
+    width: {
+      type: String,
+      default: "80%",
+    },
+  },
+  data() {
+    return {
+      loading: false,
+      submitBtnLoading: false,
+      hasResemble: false,
+      resembleTableColumn: [],
+      secVOList: [],
+      activeName: "resembleQuery",
+      codeRuleOid: '',
+      form: {}
+    };
+  },
+  created() {},
+  computed: {
+    dialogVisible: {
+      get() {
+        return this.visible;
+      },
+      set(val) {
+        this.$emit("update:visible", val);
+      },
+    },
+    showCodeApply() {
+      if (this.type === "add") {
+        if (this.hasResemble && this.secVOList.length === 0) {
+          return false;
+        }
+      } else {
+        if (this.hasResemble) {
+          return false;
+        }
+      }
+      return true;
+    },
+    showResembleQuery() {
+      return this.hasResemble;
+    },
+  },
+  methods: {
+    openDialog() {
+      this.$nextTick(() => {
+        this.$refs.FormTempalte.init()
+        this.$refs.CodeApply.getCodeRule()
+      })
+    },
+    close() {
+      this.dialogVisible = false;
+    },
+    getCodeRuleOid(data) {
+      this.codeRuleOid = data.oid
+      this.secVOList = data.secVOList
+    },
+    getFormTemplate(data) {
+      this.hasResemble =
+        data.resembleTableVO &&
+        data.resembleTableVO.cols &&
+        data.resembleTableVO.cols.length > 0;
+      this.resembleTableColumn = data.resembleTableVO.cols || [];
+    },
+    getFormData(form) {
+      this.form = form
+    },
+    resembleQuerySubmit() {
+      this.$refs.resembleQueryRef.resembleQuery(this.form);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.key_attr_icon {
+  font-size: 24px;
+  position: relative;
+  top: 2px;
+  color: red;
+}
+// 瑙e喅swich缁勪欢涓嶅瀭鐩村眳涓殑闂
+/deep/ .el-switch {
+  vertical-align: baseline;
+}
+</style>

--
Gitblit v1.9.3