田源
2023-09-07 230a76788e7b899f8b78908bc161b01c796de323
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -84,7 +84,7 @@
    trendsSpan: {
      type: Number,
      default: 8,
    },
    }
  },
  data() {
    return {
@@ -130,14 +130,16 @@
  methods: {
    // 渲染表单模板
    templateRender(formItemList) {
      console.log(formItemList, "formItemList");
      // 无需分组数据
      let column = [];
      let group = [];
      let dictKeys = [];
      let slotColumnList = [];
      let value=''
      formItemList.forEach((formItem) => {
        formItem = this.resetFormConfig(formItem);
        // console.log('formItem',formItem)
        // console.log('formItem.dicData.value',formItem.dicData)
        if (formItem.type === "line") {
          group.push({
            label: formItem.text,
@@ -170,6 +172,12 @@
          message = "请输入";
          trigger = "blur";
        }
        let fieldMapKey=''
        if( formItem.type == "refer"){
          if(!formItem.fieldMap){
            fieldMapKey=formItem.field+'Id'
          }
        }
        let columnItem = {
          label: formItem.text,
          labelslot: true,
@@ -184,13 +192,14 @@
          append: this.preOrSufFixShow("text", formItem.suffix),
          prefixIcon: this.preOrSufFixShow("icon", formItem.prefix),
          suffixIcon: this.preOrSufFixShow("icon", formItem.suffix),
          valueFormat: formItem.dateFormate,
          valueFormat:formItem.dateFormate,
          format: formItem.dateFormate,
          keyAttr: formItem.keyAttr,
          value: formItem.defaultValue,
          value: formItem.dicData && formItem.dicData.length > 0 && formItem.type == 'combox' ? formItem.dicData[0].id : null,
          placeholder: formItem.inputTip,
          comboxKey: formItem.comboxKey,
          tip: formItem.tooltips,
          // readonly:true,
          display: !formItem.hidden,
          maxlength: formItem.maxlength,
          filterable: true,
@@ -200,8 +209,9 @@
                  title: formItem.text,
                  showField: formItem.showField || formItem.field,
                  field: formItem.field,
                  fieldMap:formItem.fieldMap || {fieldMapKey:'id'},
                  placeholder: formItem.inputTip,
                  options: formItem.referConfig,
                  options: formItem.referConfig
                }
              : {},
          span: formItem.span
@@ -212,7 +222,7 @@
          rules: [
            {
              required: formItem.required,
              message: `请${message}${formItem.text}`,
              message: `${message}${formItem.text}`,
              trigger,
            },
            {
@@ -227,6 +237,10 @@
            value: "key",
          },
        };
        if(columnItem.type == "select"){
        }
        console.log('columnItem',columnItem)
        slotColumnList.push(columnItem);
        if (group.length === 0) {
          column.push(columnItem);
@@ -235,7 +249,6 @@
        }
      });
      this.slotColumnList = slotColumnList;
      console.log(column, "column");
      this.$set(this.option, "column", column);
      this.$set(this.option, "group", group);
      this.updateIndex++;
@@ -245,6 +258,7 @@
      this.geDictData(dictKeys);
      this.getFormDetail();
    },
    // 使用传入的表单数据配置
    resetFormConfig(formItem) {
@@ -356,6 +370,42 @@
      if (data.field) {
        this.form[data.field] = data.value || "";
        this.form[data.showField] = data.text || "";
        if (data.fieldMap) {
          //说明需要映射
          for (let key in data.fieldMap) {
            let mapFields = data.fieldMap[key].split(",");
            let value = [];
            data.rawData.forEach(_item => {
              var temp;
              if (!_item.attributes) {
                _item.attributes = _item;
              }
              if (mapFields.length == 1) {
                var mapField = mapFields[0];
                if (mapField.indexOf("attribute.") > -1) {
                  temp = _item['attributes'][mapField.subString("attribute.".length)];
                } else {
                  temp = _item['attributes'][mapField] || _item[mapField];
                }
              } else {
                //有多个
                var mutiTemp = [];
                layui.each(mapFields, function (_indexField, _itemField) {
                  if (_itemField.indexOf("attribute.") > -1) {
                    mutiTemp.push(_item['attributes'][_itemField.subString("attribute.".length)]);
                  } else {
                    mutiTemp.push(_item['attributes'][_itemField] || _item[_itemField]);
                  }
                });
                temp = mutiTemp.join(' ');
              }
              if (temp != null && temp != '') {
                value.push(temp);
              }
            })
            this.form[key] = value.join(',');
          }
        }
        this.$emit("getFormData", this.form);
        this.$emit("referConfigDataUpdate", data);
      }