Kaynağa Gözat

代码上传

zhangqi 10 ay önce
ebeveyn
işleme
54e19b404d
4 değiştirilmiş dosya ile 103 ekleme ve 0 silme
  1. BIN
      .DS_Store
  2. BIN
      src/.DS_Store
  3. BIN
      src/components/.DS_Store
  4. 103 0
      src/components/customForm/customForm.vue

BIN
.DS_Store


BIN
src/.DS_Store


BIN
src/components/.DS_Store


+ 103 - 0
src/components/customForm/customForm.vue

@@ -0,0 +1,103 @@
+<template>
+  <el-form :model="form" ref="form" label-width="100px" size="small">
+    <el-row :gutter="20">
+      <el-col
+        v-for="(item, index) in formLayout"
+        :key="index"
+        :span="item.span"
+      >
+        <el-form-item :label="item.title" :rules="[{ required: item.required, message: `${item.title}不正确`,pattern:regex(item.regex),trigger:'change'}]" :prop="item.columnname">
+          <el-input
+            v-if="item.type === 'Input'"
+            v-model="form[item.columnname]"
+            :placeholder="`请输入${item.title}`"
+            @change="onChange"
+          ></el-input>
+          <el-select
+            v-else-if="item.type === 'Select' && item.isselect"
+            style="width: 100%;"
+            v-model="form[item.columnname]"
+            :placeholder="`请选择${item.title}`"
+          >
+            <el-option
+              v-for="option in item.options"
+              :key="option.value"
+              :label="option.label"
+              :value="option.value"
+            ></el-option>
+          </el-select>
+          <el-date-picker
+            style="width: 100%;"
+            v-else-if="item.type === 'DatePicker'"
+            v-model="form[item.columnname]"
+            value-format="yyyy-MM-dd"
+            type="date"
+            placeholder="选择日期">
+          </el-date-picker>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+export default {
+  name: "customForm",
+  props: ["formname"],
+  data() {
+    return {
+      form: {},
+      formLayout: {},
+    };
+  },
+  methods: {
+    // 获取表单数据
+    getFormLayoutData() {
+      const app = JSON.parse(sessionStorage.getItem("activeApp"));
+      app.meta.forms[this.formname].formcols.forEach(async e=>{
+        if (e.request.id) {
+          e.isselect = false
+          const res = await this.$api.requested(e.request)
+          
+          e.options = res.data.map(rs=>{
+            return {
+              label:rs.remarks,
+              value:rs.value
+            }
+          })
+          e.isselect = true
+        }
+      })
+      this.formLayout = app.meta.forms[this.formname].formcols
+    },
+    onChange () {
+      console.log(this.form)
+    },
+    restForm () {
+      this.$refs['form'].resetFields();
+    },
+    validateFields (fn) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          fn()
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    regex (str) {
+      let st =  atob(str)
+      return eval(st)
+    },
+
+  },
+  created() {
+    this.getFormLayoutData();
+  },
+  mounted(){
+  }
+};
+</script>
+
+<style lang="scss" scoped></style>