fujunling
2023-06-02 33c8db885ab2b5117c064d064f6e7c7eb0357a1c
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>