diff --git a/web/main.js b/web/main.js index ed653be..2f759bd 100644 --- a/web/main.js +++ b/web/main.js @@ -31,6 +31,7 @@ const app = createApp({ // ==================== 字段元数据管理 ==================== const metaTableLabels = Vue.ref({}); const recommendedMeta = Vue.ref([]); + const metadataVersion = Vue.ref(0); // 用于触发树重新计算的响应式变量 /** * 加载字段元数据 @@ -44,18 +45,22 @@ const app = createApp({ fieldsManager.updateMetadata(tables, recommended); metaTableLabels.value = fieldsManager.tableLabels; recommendedMeta.value = recommended; + metadataVersion.value++; // 触发树重新计算 return recommended; } catch (error) { console.error('加载字段元数据失败:', error); fieldsManager.updateMetadata([], []); metaTableLabels.value = {}; recommendedMeta.value = []; + metadataVersion.value++; // 即使失败也触发更新 return []; } }; // ==================== 树形选择器数据 ==================== const fieldTreeData = Vue.computed(() => { + // 引用 metadataVersion 以确保元数据更新时重新计算 + const _version = metadataVersion.value; return fieldsManager.buildFieldTree( state.form.datasource, state.form.orderType @@ -63,6 +68,8 @@ const app = createApp({ }); const editFieldTreeData = Vue.computed(() => { + // 引用 metadataVersion 以确保元数据更新时重新计算 + const _version = metadataVersion.value; return fieldsManager.buildFieldTree( state.edit.datasource, state.edit.orderType, diff --git a/web/modules/fields.js b/web/modules/fields.js index 23a1e80..00e76a2 100644 --- a/web/modules/fields.js +++ b/web/modules/fields.js @@ -110,17 +110,30 @@ class FieldsManager { const orderFields = this.getTableFields('order'); const children = orderFields.map(f => ({ value: f.value, label: f.label })); - // 添加公共子表(这些表与订单类型无关,应始终展示) + // 添加公共子表(所有订单类型都有) children.push(this.buildTreeNode('merchant', this.getTableFields('merchant'))); children.push(this.buildTreeNode('activity', this.getTableFields('activity'))); - // 为避免“有时显示有时不显示”的问题,这里不再按订单类型裁剪子表, - // 而是始终展示所有与订单相关的子表,由业务在导出层面控制是否使用。 - children.push(this.buildTreeNode('order_digit', this.getTableFields('order_digit'))); - children.push(this.buildTreeNode('order_voucher', this.getTableFields('order_voucher'))); - children.push(this.buildTreeNode('order_cash', this.getTableFields('order_cash'))); - children.push(this.buildTreeNode('goods_voucher_batch', this.getTableFields('goods_voucher_batch'))); - children.push(this.buildTreeNode('goods_voucher_subject_config', this.getTableFields('goods_voucher_subject_config'))); + // 根据订单类型添加特定子表 + if (orderType === 2) { + // 直充卡密 + children.push(this.buildTreeNode('order_digit', this.getTableFields('order_digit'))); + } else if (orderType === 3) { + // 立减金 + children.push(this.buildTreeNode('order_voucher', this.getTableFields('order_voucher'))); + children.push(this.buildTreeNode('goods_voucher_batch', this.getTableFields('goods_voucher_batch'))); + children.push(this.buildTreeNode('goods_voucher_subject_config', this.getTableFields('goods_voucher_subject_config'))); + } else if (orderType === 1) { + // 红包 + children.push(this.buildTreeNode('order_cash', this.getTableFields('order_cash'))); + } else { + // 未指定类型或全部类型(orderType = 0 或其他) + children.push(this.buildTreeNode('order_voucher', this.getTableFields('order_voucher'))); + children.push(this.buildTreeNode('order_cash', this.getTableFields('order_cash'))); + children.push(this.buildTreeNode('order_digit', this.getTableFields('order_digit'))); + children.push(this.buildTreeNode('goods_voucher_batch', this.getTableFields('goods_voucher_batch'))); + children.push(this.buildTreeNode('goods_voucher_subject_config', this.getTableFields('goods_voucher_subject_config'))); + } return children; }