Browse Source

fix: 修复原始、自助数据集,扩展了输出字段后,新增、编辑数据没有回显的问题

wu.jian2 1 year ago
parent
commit
fc407145f6

+ 18 - 9
data-room-ui/packages/DataSetManagement/src/CustomEditForm.vue

@@ -240,7 +240,10 @@
                 :options="cOptions"
                 style="margin-top: 2px"
               />
-              <div class="bs-codemirror-bottom-text" v-if="dataForm.syntaxType === 'mybatis'">
+              <div
+                v-if="dataForm.syntaxType === 'mybatis'"
+                class="bs-codemirror-bottom-text"
+              >
                 示例:
                 <strong><br>
                   1、常规使用
@@ -265,7 +268,10 @@
                   >${参数名称}</span> <span style="color: #2F67A7;">&lt;/if&gt;</span>
                 </strong>
               </div>
-              <div class="bs-codemirror-bottom-text" v-else>
+              <div
+                v-else
+                class="bs-codemirror-bottom-text"
+              >
                 示例:
                 <strong><br>
                   1、常规使用 select * from table where table_field = <span style="color: #CC7832;">${参数名称}</span><br>
@@ -1220,7 +1226,7 @@ export default {
             paramsList: this.dataForm.paramsList,
             fieldList: this.dataForm.fieldList,
             fieldDesc: this.dataForm.fieldDesc,
-            syntaxType: this.dataForm.syntaxType,
+            syntaxType: this.dataForm.syntaxType
           }
         }
         datasetSave(datasetParams).then(res => {
@@ -1245,7 +1251,7 @@ export default {
       this.isTest = true
       // 匹配 ${}
       const reg = /\${(.*?)}/g
-      let paramNames = [...new Set([...this.dataForm.sqlProcess.matchAll(reg)].map(item => item[1]))]
+      const paramNames = [...new Set([...this.dataForm.sqlProcess.matchAll(reg)].map(item => item[1]))]
       // 匹配 #{}
       const reg2 = /#{(.*?)}/g
       const paramNames2 = [...new Set([...this.dataForm.sqlProcess.matchAll(reg2)].map(item => item[1]))]
@@ -1315,12 +1321,15 @@ export default {
         this.dataPreviewList = res.data.list
         this.structurePreviewList = res.structure
         // 输出字段描述合并
-        this.structurePreviewList.forEach(field => {
-          const fieldInfo = this.dataForm.fieldList.find(item => item.fieldName === field.fieldName)
+        this.structurePreviewList = this.dataForm.fieldList.map(field => {
+          const fieldInfo = this.structurePreviewList.find(item => item.fieldName === field.fieldName)
           if (fieldInfo) {
-            field.fieldDesc = fieldInfo.fieldDesc
-            field.orderNum = fieldInfo.orderNum
-            field.sourceTable = fieldInfo.sourceTable
+            return {
+              ...field,
+              fieldDesc: fieldInfo.fieldDesc,
+              orderNum: fieldInfo.orderNum,
+              sourceTable: fieldInfo.sourceTable
+            }
           }
         })
         this.structurePreviewList.forEach(item => {

+ 9 - 6
data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue

@@ -867,7 +867,7 @@ export default {
      * 选中原始表
      * @param value
      */
-    async setTable(value) {
+    async setTable (value) {
       this.fieldList = []
       if (!this.dataForm.tableName) {
         this.dataForm.fieldInfo = []
@@ -883,7 +883,7 @@ export default {
     /**
      * 获取原始表字段列表
      */
-    queryAllField() {
+    queryAllField () {
       return new Promise((resolve, reject) => {
         getTableFieldList(this.dataForm.sourceId, this.dataForm.tableName)
           .then((data) => {
@@ -984,10 +984,13 @@ export default {
               }
               this.$set(item, 'fieldDesc', fieldDesc)
               // this.structurePreviewList 和 this.oldStructurePreviewList 比较,如果旧的数据里fieldDesc有值则重新赋值给新的数据
-              this.structurePreviewList.forEach(item => {
-                const oldItem = this.oldStructurePreviewList.find(oldItem => oldItem.fieldName === item.fieldName)
-                if (oldItem && oldItem.fieldDesc) {
-                  item.fieldDesc = oldItem.fieldDesc
+              this.structurePreviewList = this.oldStructurePreviewList.map(oldItem => {
+                const data = this.structurePreviewList.find(item => oldItem.fieldName === item.fieldName)
+                if (data) {
+                  return {
+                    ...oldItem,
+                    fieldDesc: oldItem.fieldDesc
+                  }
                 }
               })
             }