Explorar o código

feat: 自定义弹窗表格渲染

johnsen hai 8 meses
pai
achega
d5cd44ec22

+ 8 - 2
src/business/platform/data/data-template/field-formatter.vue

@@ -1,7 +1,11 @@
 <template>
 <template>
   <div>
   <div>
     <!-- {{ data }} -->
     <!-- {{ data }} -->
-    <span class="ibps-data-template-data" v-html="label || '/'" />
+    <span
+      :data-field-type="newFieldType"
+      class="ibps-data-template-data"
+      v-html="label || '/'"
+    />
     <!-- <div>
     <!-- <div>
       <div v-for="(item, i) in data" :key="i">
       <div v-for="(item, i) in data" :key="i">
         <span v-if="item.label">{{ item.label }}</span>
         <span v-if="item.label">{{ item.label }}</span>
@@ -73,7 +77,8 @@ export default {
       roleList,
       roleList,
       deptList,
       deptList,
       userList,
       userList,
-      label: ''
+      label: '',
+      newFieldType: ''
     }
     }
   },
   },
   watch: {
   watch: {
@@ -109,6 +114,7 @@ export default {
         this.descField && this.descField.same === 'N'
         this.descField && this.descField.same === 'N'
           ? this.descField.field_options
           ? this.descField.field_options
           : this.fieldOptions
           : this.fieldOptions
+      this.newFieldType = fieldType
       if (
       if (
         this.$utils.isEmpty(value) ||
         this.$utils.isEmpty(value) ||
         this.$utils.isEmpty(fieldType) ||
         this.$utils.isEmpty(fieldType) ||

+ 30 - 9
src/views/platform/data/dataTemplate/field-formatter.vue

@@ -21,6 +21,7 @@
         </template>
         </template>
       </van-tag>
       </van-tag>
     </template>
     </template>
+
     <div
     <div
       v-else-if="hasCustomFormatter(descField.name)"
       v-else-if="hasCustomFormatter(descField.name)"
       v-html="customFormatter(descField.name, label, data, descField)"
       v-html="customFormatter(descField.name, label, data, descField)"
@@ -216,7 +217,6 @@ export default {
             fieldOptions['options'],
             fieldOptions['options'],
             'val'
             'val'
           )
           )
-          this.tag = true
           break
           break
         case 'switch': // 开关
         case 'switch': // 开关
           this.label = this.formatterOptions(
           this.label = this.formatterOptions(
@@ -229,6 +229,7 @@ export default {
           this.formatterDictionary(value, fieldOptions)
           this.formatterDictionary(value, fieldOptions)
           break
           break
         case 'customDialog': // TODO 自定义对话框
         case 'customDialog': // TODO 自定义对话框
+          console.log('descField===>', this.descField)
           this.formatterSelectorData(value, 'position')
           this.formatterSelectorData(value, 'position')
           break
           break
         case 'linkdata': // TODO 关联数据
         case 'linkdata': // TODO 关联数据
@@ -254,7 +255,7 @@ export default {
     /**
     /**
      * 格式化数字
      * 格式化数字
      */
      */
-    formatterNumber(value, fieldOptions) {
+    formatterNumber(value) {
       return value
       return value
     },
     },
     /**
     /**
@@ -383,7 +384,7 @@ export default {
               console.error(e)
               console.error(e)
             })
             })
         } else if (type === 'position') {
         } else if (type === 'position') {
-          // console.log('this.deptList===>', this.deptList)
+          // console.log('this.deptList===>11111111111', this.deptList, id)
           let lab = ''
           let lab = ''
           this.deptList.forEach((item, i) => {
           this.deptList.forEach((item, i) => {
             // console.log('item===>', id)
             // console.log('item===>', id)
@@ -393,17 +394,36 @@ export default {
             }
             }
           })
           })
           this.label = lab.replace(/,$/, '')
           this.label = lab.replace(/,$/, '')
-          // console.log()
+          // console.log(
+          //   'this.label===>',
+          //   this.labelKey,
+          //   type,
+          //   this.deptList.filter((t) => id.includes(t.positionId))
+          // )
           if (!this.label) {
           if (!this.label) {
             remoteRequest('dataTemplate', { id }, () => {
             remoteRequest('dataTemplate', { id }, () => {
-              return getPositionById({ positionId: id })
+              return this.getRemoteDataTemplateFunc(
+                this.descField.field_options['dialog']
+              )
             })
             })
               .then((response) => {
               .then((response) => {
-                const data = response.data
-                if (data) {
-                  this.label = data[nameKey]
-                  SELECTOR_CACHE[key] = data[nameKey]
+                console.log('dasdsa==>', this.labelKey)
+                const dataTem = JSON.parse(response.data)
+                const data = dataTem?.datasets[0]
+                if (!data) {
+                  return
                 }
                 }
+                const tableName = data.name
+                const sql = `select ${this.labelKey} from ${tableName} where id_='${id}'`
+                remoteRequest('dataTemplatesql', { id }, () => {
+                  return this.$common.request('sql', sql)
+                }).then((res) => {
+                  const { data = [] } = res.variables || {}
+                  if (data) {
+                    this.label = data[0] ? data[0][this.labelKey] : '/'
+                    SELECTOR_CACHE[key] = this.label
+                  }
+                })
               })
               })
               .catch((e) => {
               .catch((e) => {
                 console.error(e)
                 console.error(e)
@@ -566,6 +586,7 @@ export default {
       // this.getLinkdataValue(__key, __linkKey, __linkText, value)
       // this.getLinkdataValue(__key, __linkKey, __linkText, value)
     },
     },
     async getRemoteDataTemplateFunc(templateKey) {
     async getRemoteDataTemplateFunc(templateKey) {
+      console.log('templateKey==>', templateKey)
       return remoteRequest('dataTemplate1', templateKey, () => {
       return remoteRequest('dataTemplate1', templateKey, () => {
         return getByKey({ dataTemplateKey: templateKey })
         return getByKey({ dataTemplateKey: templateKey })
       })
       })