zhaoke 1 year ago
parent
commit
c376e2634f
2 changed files with 77 additions and 10 deletions
  1. 45 1
      src/components/publicPageForm/index.vue
  2. 32 9
      src/views/tablePage/index.vue

+ 45 - 1
src/components/publicPageForm/index.vue

@@ -10,6 +10,12 @@
                 </el-option>
               </el-select>
             </template>
+            <template v-else-if="fromDataType(item.datatype) == 'DROP'">
+              <el-select class="input-shadow" size="small" multiple filterable default-first-option style="width: 100%" v-model="tableForm[item.pagecode]" @change="changeSelect(item.pagecode, item)" placeholder="请选择" clearable @clear="tableForm[item.pagecode] = ''">
+                <el-option v-for="itemParams in tableOptions[item.pagecode]" :key="itemParams['dropdownlistid']" :label="itemParams['dropdownlistlabel']" :value="itemParams['dropdownlistid']">
+                </el-option>
+              </el-select>
+            </template>
             <template v-else-if="fromDataType(item.datatype) == 'TEXT' || fromDataType(item.datatype) == 'VARCHAR'">
               <el-input size="small" @change="inputChangeHandler(item.pagecode)" v-model="tableForm[item.pagecode]"></el-input>
             </template>
@@ -79,6 +85,10 @@ export default {
       type: Array,
       default: () => new Array()
     },
+    formPass: {
+      type: Array,
+      default: () => new Array()
+    },
     formData: {
       type: Object,
       default: () => new Object()
@@ -168,7 +178,7 @@ export default {
       const [allResult, allResultKey] = [[], []]
       formItemCopy.map(({ dropdownlist, pagecode, defaultparameters }) => {
         if (((dropdownlist || dropdownlist == 0) && dropdownlist != "")) {
-          const datacontent = defaultparameters ? { filter:this.formatDefault(defaultparameters)} : { filter: { 1: 1 } }
+          const datacontent = defaultparameters ? { filter: this.formatDefault(defaultparameters) } : { filter: { 1: 1 } }
           allResultKey.push(pagecode)
           allResult.push(Query({ serviceid: dropdownlist, datacontent, event: '0' }))
         }
@@ -191,6 +201,16 @@ export default {
       } else {
         this.formItemArr = formItem
       }
+      const passitem = this.formItemArr.filter(item => item.pagecode == 'passparameters')
+      if (passitem?.length) {
+        const passitemkey = passitem[0]
+        passitemkey.datatype = 'DROP'
+        this.formPass.map(item => {
+          item.dropdownlistid = item.pageconfigurationid
+          item.dropdownlistlabel = item.pagename
+        })
+        this.tableOptions['passparameters'] = this.formPass
+      }
       this.loading = false
     },
     formatData (returnData) {
@@ -227,6 +247,28 @@ export default {
         })
       }
     },
+    formatPass (npass = []) {
+      const datas = []
+      const maps = []
+      if (npass?.length) {
+        this.formPass.filter(item => {
+          npass.map(p => {
+            if (item.dropdownlistid == p) {
+              datas.push(item)
+            }
+          })
+        })
+      }
+      if (datas?.length) {
+        datas.map(item => {
+          const nitem = {}
+          nitem[item.pagecode] = item.alias ? item.alias : item.pagecode
+          nitem['keyVal'] = item.pageconfigurationid
+          maps.push(nitem)
+        })
+        this.tableForm.passparameters = JSON.stringify(maps)
+      }
+    },
     clearTypeUpload (nload = []) {
       if (nload?.length) {
         const files = this.$refs['upload']
@@ -241,8 +283,10 @@ export default {
       let flag = false
       const ndata = this.formItemArr.filter(item => item.datatype == 'password' || item.datatype == 'PASSWORD')
       const nload = this.formItemArr.filter(item => item.datatype == 'upload' || item.datatype == 'UPLOAD')
+      const npass = this.tableForm.passparameters
       if (nload?.length) this.addTypeUpload(nload)
       if (ndata?.length) this.addTypePassWord(ndata)
+      if (npass?.length) this.formatPass(npass)
       this.$refs["ruleForm"].validate((valid) => {
         if (valid) {
           flag = true

+ 32 - 9
src/views/tablePage/index.vue

@@ -17,7 +17,7 @@
     <div class="TablePage_dialog">
       <!--新增/编辑-->
       <PublicPageDialog :dialog-title="tableTitle" dialogSize="630px" :form-auth="formAuth" :dialog-drawer="flag" @handleClose="submitClickClose('ruleForm')" @handleSubmit="submitClickHandler">
-        <PublicPageForm ref="ruleForm" :label-width="labelWidth" :form-type="tableType" :form-item="formItem" :form-data="tableForm" />
+        <PublicPageForm ref="ruleForm" :label-width="labelWidth" :form-pass="tableData" :form-type="tableType" :form-item="formItem" :form-data="tableForm" />
       </PublicPageDialog>
       <!--高级查询-->
       <PublicPageDialog dialog-title="高级查询" dialogSize="600px" :dialog-drawer="advancedDrawer" @handleClose="advancedDrawer = false" @handleSubmit="advancedTable('advancedDialogForm')">
@@ -438,20 +438,43 @@ export default {
         return classes.join(' ')
       }
     },
+    formatPass (pass = []) {
+      if (typeof pass != 'string') return {}
+      const ndata = JSON.parse(pass)
+      if (!ndata) return {}
+      const nitem = {}
+      ndata.map(item => {
+        const ns = Object.values(item)
+        nitem[ns[0]] = ns[1]
+      })
+      return nitem
+    },
     //添加-表格-单元格-点击事件
     cellClickHandler (row, column, cell, event) {
       const { property } = column
       const ndata = _.cloneDeep(this.tableCols).filter(item => item.pagecode == property)
       if (ndata?.length) {
-        const { defaultfilter, pageroute } = ndata[0]
+        const { defaultfilter, pageroute, passparameters } = ndata[0]
         if (!pageroute) return
-        if (defaultfilter) {
-          const filterItem = this.formatDefault(defaultfilter, row)
-          this.$router.push({
-            path: pageroute,
-            query: filterItem
-          })
-        } else {
+        if (defaultfilter || passparameters) {
+          if (passparameters) {
+            const nitem = this.formatPass(passparameters)
+            this.$router.push({
+              path: pageroute,
+              query: nitem
+            })
+            return
+          }
+          if (defaultfilter) {
+            const filterItem = this.formatDefault(defaultfilter, row)
+            this.$router.push({
+              path: pageroute,
+              query: filterItem
+            })
+            return
+          }
+        }
+        else {
           this.$router.push(pageroute)
         }
       }