yrik 4 éve
szülő
commit
ea8913417b

+ 69 - 30
ruoyi-ui/src/components/DynamicFormsteo/index.vue

@@ -1,13 +1,13 @@
 <template>
 <template>
   <!-- <el-row  class="row-bg"> -->
   <!-- <el-row  class="row-bg"> -->
   <el-col :span="ieug !== null? ieug : 8 "  >
   <el-col :span="ieug !== null? ieug : 8 "  >
-  <el-form-item   :label="formConfig.columnComment"  :prop="formConfig.columnName">
+  <el-form-item label-width="120px" :label="formConfig.columnComment" style="display: inline-block;" :prop="formConfig.columnName">
     <!-- 输入框 -->
     <!-- 输入框 -->
-    <el-input v-if="formConfig.htmlType == 'input'" v-model="config[formConfig.columnName]" :placeholder="'请输入'+formConfig.columnComment"
-      clearable @keyup.enter.native="handleQuery"  :disabled="formConfig.disabshow" />
+    <el-input v-if="formConfig.htmlType == 'input'" @change="iChange" v-model="config[formConfig.columnName]" :placeholder="'请输入'+formConfig.columnComment"
+      clearable @keyup.enter.native="handleQuery" :disabled="formConfig.disabshow" />
     <!-- 多行输入框 -->
     <!-- 多行输入框 -->
-    <el-input v-if="formConfig.htmlType == 'textarea'" type="textarea" v-model="config[formConfig.columnName]"
-      :placeholder="'请输入'+formConfig.columnComment" clearable @keyup.enter.native="handleQuery" :disabled="formConfig.disabshow"/>
+    <el-input v-if="formConfig.htmlType == 'textarea'" @change="iChange" type="textarea" v-model="config[formConfig.columnName]"
+      :placeholder="'请输入'+formConfig.columnComment" clearable @keyup.enter.native="handleQuery" :disabled="formConfig.disabshow" />
     <!-- 下拉框 -->
     <!-- 下拉框 -->
     <el-select v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'&&(!formConfig.fkInfo)"
     <el-select v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'&&(!formConfig.fkInfo)"
       filterable :placeholder="'请输入'+formConfig.columnComment" :disabled="formConfig.disabshow">
       filterable :placeholder="'请输入'+formConfig.columnComment" :disabled="formConfig.disabshow">
@@ -18,7 +18,8 @@
     <!-- 下拉框搜索 -->
     <!-- 下拉框搜索 -->
     <el-select :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'&&(formConfig.fkInfo)"
     <el-select :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'&&(formConfig.fkInfo)"
       filterable remote :remote-method="remoteMethod" :loading="loading" :placeholder="'请输入'+formConfig.columnComment">
       filterable remote :remote-method="remoteMethod" :loading="loading" :placeholder="'请输入'+formConfig.columnComment">
-      <el-option v-for="itemChild in filterList" :key="itemChild[formConfig.fkInfo.fkColumnName]" :label="itemChild[formConfig.fkInfo.dkColumnName]" :value="itemChild[formConfig.fkInfo.fkColumnName]">
+      <el-option v-for="itemChild in filterList" :key="itemChild[formConfig.fkInfo.fkColumnName]" :label="itemChild[formConfig.fkInfo.dkColumnName]"
+        :value="itemChild[formConfig.fkInfo.fkColumnName]">
       </el-option>
       </el-option>
     </el-select>
     </el-select>
     <!-- 复选框 -->
     <!-- 复选框 -->
@@ -33,27 +34,28 @@
       <el-radio v-for="itemChild in formConfig.sysDictData" :key="itemChild.dictValue" :label="itemChild.dictValue">{{itemChild.dictLabel}}</el-radio>
       <el-radio v-for="itemChild in formConfig.sysDictData" :key="itemChild.dictValue" :label="itemChild.dictValue">{{itemChild.dictLabel}}</el-radio>
     </el-radio-group>
     </el-radio-group>
     <!-- 时间控件 -->
     <!-- 时间控件 -->
-    <el-date-picker :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'datetime'" type="date"
-      :placeholder="'请输入'+formConfig.columnComment">
+    <el-date-picker :disabled="formConfig.disabshow" @change="iChange" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'datetime'"
+      type="date" :placeholder="'请输入'+formConfig.columnComment">
     </el-date-picker>
     </el-date-picker>
     <!-- 上传图片 -->
     <!-- 上传图片 -->
-    <el-upload :disabled="formConfig.disabshow" v-if="formConfig.htmlType == 'imageUpload'" :headers="{Authorization: 'Bearer ' + getToken()}" :action="process + '/boman-file/upload'"
-      :file-list="config" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-success="upImageFn"
-      :on-remove="reseImage">
+    <el-upload :disabled="formConfig.disabshow" v-if="formConfig.htmlType == 'imageUpload'" :headers="{Authorization: 'Bearer ' + getToken()}"
+      :action="process + '/boman-file/upload'" :file-list="config" list-type="picture-card" :on-preview="handlePictureCardPreview"
+      :on-success="upImageFn" :on-remove="reseImage">
       <i class="el-icon-plus"></i>
       <i class="el-icon-plus"></i>
     </el-upload>
     </el-upload>
     <el-dialog :disabled="formConfig.disabshow" :visible.sync="dialogVisible" v-if="formConfig.htmlType == 'imageUpload'">
     <el-dialog :disabled="formConfig.disabshow" :visible.sync="dialogVisible" v-if="formConfig.htmlType == 'imageUpload'">
       <img :src="dialogImageUrl" alt="">
       <img :src="dialogImageUrl" alt="">
     </el-dialog>
     </el-dialog>
     <!-- 上传文件 -->
     <!-- 上传文件 -->
-    <el-upload :disabled="formConfig.disabshow" class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}" v-if="formConfig.htmlType == 'fileUpload'"
-      :action="process + '/boman-file/upload'" :on-change="handleChange" :on-success="upImageFn" :on-remove="reseImage"
-      :file-list="config">
+    <el-upload :disabled="formConfig.disabshow" class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}"
+      v-if="formConfig.htmlType == 'fileUpload'" :action="process + '/boman-file/upload'" :on-change="handleChange"
+      :on-success="upImageFn" :on-remove="reseImage" :file-list="config">
       <el-button size="small" type="primary">点击上传</el-button>
       <el-button size="small" type="primary">点击上传</el-button>
       <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
       <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
     </el-upload>
     </el-upload>
     <!-- 富文本 -->
     <!-- 富文本 -->
-    <editor :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'editor'" :min-height="192" />
+    <editor :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'editor'"
+      :min-height="192" />
   </el-form-item>
   </el-form-item>
   </el-col>
   </el-col>
   <!-- </el-row> -->
   <!-- </el-row> -->
@@ -96,6 +98,14 @@
       Editor
       Editor
     },
     },
     props: {
     props: {
+      queryData: {
+        type: Object,
+        default: res => {
+          return {
+            showData: []
+          }
+        }
+      },
       formConfig: {
       formConfig: {
         type: Object,
         type: Object,
         required: true,
         required: true,
@@ -127,23 +137,51 @@
       }else{
       }else{
         this.ieug = 24 / (this.formConfig.tableColumnuy -0)
         this.ieug = 24 / (this.formConfig.tableColumnuy -0)
       }
       }
-        
-      
-      console.log(this.formConfig.tableColumnuy -0)
+
+
+      // console.log(this.formConfig.tableColumnuy -0)
       this.init()
       this.init()
+      if (this.formConfig.extendedAttributes) {
+        let extend = JSON.parse(this.formConfig.extendedAttributes)
+        this.extFn(extend.col, extend.comp)
+      }
     },
     },
-    watch: {
-      'config': {
-         handler: function() {
-             this.$emit('modelFn',this.formConfig.columnName,this.config[this.formConfig.columnName])
-         },
-         deep: true
-     }
-    },
+   watch: {
+     'config': {
+       handler: function() {
+         this.$emit('modelFn', this.formConfig.columnName, this.config[this.formConfig.columnName])
+       },
+       deep: true
+     },
+     'queryData': {
+       handler: function() {
+         if (this.formConfig.extendedAttributes) {
+           console.log(this.formConfig,222)
+           let extend = JSON.parse(this.formConfig.extendedAttributes)
+           this.extFn(extend.col, extend.comp)
+         }
+       },
+       deep: true
+     },
+   },
     mounted() {
     mounted() {
-      console.log(this.formConfig)
+      // console.log(this.formConfig)
     },
     },
     methods: {
     methods: {
+      iChange(val){
+        if(this.formConfig.isUseExtend){
+          console.log(this.formConfig.columnName)
+          this.$emit('iChange',this.formConfig.columnName,val)
+        }
+      },
+      extFn(col, comp) {
+        let str = this.getDyn(col, this.queryData.showData,comp)
+        this.config[this.formConfig.columnName] = str
+      },
+      eval(code){
+        let fun = new Function(`return ${code}`)();
+        return fun
+      },
       listIndexfouFn() {
       listIndexfouFn() {
         listIndexfou(this.aliemg).then(response => {
         listIndexfou(this.aliemg).then(response => {
           if (response.data) {
           if (response.data) {
@@ -169,12 +207,13 @@
           'fileUpload') {
           'fileUpload') {
           this.config = []
           this.config = []
         } else {
         } else {
-          this.$set(this.config, this.formConfig.columnName, (this.formConfig.columnValue || ''))
+          this.$set(this.config, this.formConfig.columnName, ((this.formConfig.columnValue ? this.formConfig.columnValue :
+            this.formConfig.defaultValue) || ''))
         }
         }
 
 
-        if(this.formConfig.fkInfo){
+        if (this.formConfig.fkInfo) {
           this.aliemg.table = this.formConfig.fkInfo.fkTableName
           this.aliemg.table = this.formConfig.fkInfo.fkTableName
-          if(this.formConfig.fkInfo.value){
+          if (this.formConfig.fkInfo.value) {
             this.aliemg.fixedData.condition[this.formConfig.fkInfo.dkColumnName] = this.formConfig.fkInfo.value
             this.aliemg.fixedData.condition[this.formConfig.fkInfo.dkColumnName] = this.formConfig.fkInfo.value
           }
           }
           this.listIndexfouFn()
           this.listIndexfouFn()

+ 9 - 0
ruoyi-ui/src/views/system/editing/index.vue

@@ -184,6 +184,15 @@
     },
     },
     filters: {},
     filters: {},
     methods: {
     methods: {
+      iChange(name,val){
+        for(let item of this.queryData.showData){
+          for(let itemChild of item.hrChildren){
+            if(itemChild.columnName == name){
+              itemChild.columnValue = (val?val:null)
+            }
+          }
+        }
+      },
       modelFn(obj, cont) {
       modelFn(obj, cont) {
         this.$set(this.queryParams,obj,cont)
         this.$set(this.queryParams,obj,cont)
       },
       },

+ 10 - 1
ruoyi-ui/src/views/system/form/index.vue

@@ -224,6 +224,15 @@
 
 
     },
     },
     methods: {
     methods: {
+      iChange(name,val){
+        for(let item of this.queryData.showData){
+          for(let itemChild of item.hrChildren){
+            if(itemChild.columnName == name){
+              itemChild.columnValue = (val?val:null)
+            }
+          }
+        }
+      },
       imgBtn(url) {
       imgBtn(url) {
         this.pir_imgs = url
         this.pir_imgs = url
         this.$refs.BigPicture.hidden.status = true
         this.$refs.BigPicture.hidden.status = true
@@ -606,7 +615,7 @@
              this.msgInfo('基本信息暂未保存')
              this.msgInfo('基本信息暂未保存')
            }
            }
          }
          }
-         
+
        }else if(index == '修改'){
        }else if(index == '修改'){
          if (this.single) {
          if (this.single) {
            this.msgInfo('请勾选一条信息')
            this.msgInfo('请勾选一条信息')

+ 1 - 1
ruoyi-ui/src/views/system/table/index.vue

@@ -17,7 +17,7 @@
       <el-collapse v-model="activeNames" @change="handleChange">
       <el-collapse v-model="activeNames" @change="handleChange">
         <el-form :model="queryParams" :rules="queryData.rules" ref="queryForm" :inline="true" :label-width="this.queryData.table_column == 6 ? '70px' :'110px'" >
         <el-form :model="queryParams" :rules="queryData.rules" ref="queryForm" :inline="true" :label-width="this.queryData.table_column == 6 ? '70px' :'110px'" >
           <el-collapse-item :title="item.columnComment" :name="index" v-for="(item,index) in queryData.showData" :key="index">
           <el-collapse-item :title="item.columnComment" :name="index" v-for="(item,index) in queryData.showData" :key="index">
-                <dynamic-forms @iChange="iChange" :queryData="queryData" @modelFn="modelFn" :ref="items.columnName" :config="queryParams" @inputs="changeFn" :formConfig="items" v-for="(items,indexs) in item.hrChildren"
+                <dynamic-formsteo @iChange="iChange" :queryData="queryData" @modelFn="modelFn" :ref="items.columnName" :config="queryParams" @inputs="changeFn" :formConfig="items" v-for="(items,indexs) in item.hrChildren"
                   :key='indexs' />
                   :key='indexs' />
           </el-collapse-item>
           </el-collapse-item>
         </el-form>
         </el-form>