Преглед изворни кода

fix: 排序刷新逻辑变更

johnsen пре 7 месеци
родитељ
комит
ca62cc8288

+ 17 - 6
src/business/platform/form/formrender/dynamic-form/dynamic-form-table-item.vue

@@ -62,14 +62,24 @@ export default {
   },
   data() {
     let defaultVal = ''
+    let initData = this.models[this.field.name]
     if (this.field.field_type === 'table') {
       // 一对多,是数组,一对一是对象
       defaultVal = []
+      if (initData) {
+        const tem = JSON.parse(JSON.stringify(initData))
+        tem.sort &&
+          tem.sort(
+            (a, b) =>
+              (a.tenantId || a.tenant_id_) - (b.tenantId || b.tenant_id_)
+          )
+        initData = tem
+      }
     } else {
       defaultVal = ''
     }
     return {
-      dataModel: this.models[this.field.name] || defaultVal,
+      dataModel: initData || defaultVal,
       fieldRights: this.rights[this.field.name] || 'e'
     }
   },
@@ -106,16 +116,16 @@ export default {
       return this.mode === 'dialog'
         ? true
         : this.readonlyRights
-          ? true
-          : this.fieldRights === FormOptions.t.PERMISSIONS.READ
+        ? true
+        : this.fieldRights === FormOptions.t.PERMISSIONS.READ
     },
     required() {
       // 必填  【只读隐藏,都设置非必填】
       return this.readonly || this.hidden
         ? false
         : this.fieldRights === FormOptions.t.PERMISSIONS.REQUIRED
-          ? true
-          : this.field.field_options.required || false
+        ? true
+        : this.field.field_options.required || false
     },
     rules() {
       if (this.readonly || this.hidden) {
@@ -173,7 +183,8 @@ export default {
           this.field.field_type === 'selector' ||
           this.field.field_type === 'select' ||
           this.field.field_type === 'customDialog' ||
-          this.field.field_type === 'linkdata'
+          this.field.field_type === 'linkdata' ||
+          this.field.field_type === 'table'
         ) {
           this.handleModels(this.field.name, val)
         }

+ 7 - 5
src/business/platform/form/formrender/dynamic-form/dynamic-form-table.vue

@@ -565,11 +565,7 @@ export default {
           this.dataModel = []
           return
         }
-        // this.dataModel = []
         this.dataModel = val
-        // if (!valueEquals(val, oldVal)) {
-        //     this.dispatch('ElFormItem', 'el.form.change', val)
-        // }
       },
       deep: true,
       immediate: true
@@ -654,6 +650,9 @@ export default {
       const tem = JSON.parse(JSON.stringify(this.copDataModel))
       const currRow = tem.splice(oldIndex, 1)[0]
       tem.splice(newIndex, 0, currRow)
+      tem.forEach((t, index) => {
+        t.tenantId = index
+      })
       this.$emit('update:value', tem)
     },
     handleRefreshTable() {
@@ -675,7 +674,9 @@ export default {
       this.$emit('change-data', key, val)
     },
     handlePagination(val) {
-      this.copDataModel = []
+      if (this.canSortable) {
+        this.copDataModel = []
+      }
       this.$nextTick(() => {
         this.totalCount = val.length
         // 限制最小页数为1
@@ -1468,6 +1469,7 @@ export default {
     afterScript(action, position, params, callback) {
       // 刷新拖拽表格排序实例
       this.canSortable && this.refreshSortable()
+      this.$emit('update:value', this.dataModel)
       if (!this.hasScript()) {
         if (callback) {
           const flag = true