feat(metadata): 添加表标签支持并调整字段可见性
添加 metaTableLabels 用于存储表标签,优化字段显示逻辑 在 metadata.go 中设置所有字段 hidden 为 false 由前端控制 调整部分营销表字段的 hidden 值为 false 以显示重要字段
This commit is contained in:
parent
b19b05f873
commit
1aec9c6660
|
|
@ -17,6 +17,7 @@ func MetadataHandler(meta, marketing, ymt *sql.DB) http.Handler {
|
|||
} else {
|
||||
tables = marketingMetadataTables()
|
||||
}
|
||||
setAllHiddenFalse(tables)
|
||||
|
||||
sort.Slice(tables, func(i, j int) bool { return tables[i].Table < tables[j].Table })
|
||||
rec := recommendedDefaults(ds, ot)
|
||||
|
|
@ -37,6 +38,15 @@ type fieldInfo struct {
|
|||
Hidden bool `json:"hidden"`
|
||||
}
|
||||
|
||||
// setAllHiddenFalse sets every field hidden flag to false for client-side control.
|
||||
func setAllHiddenFalse(tables []tableInfo) {
|
||||
for ti := range tables {
|
||||
for fi := range tables[ti].Fields {
|
||||
tables[ti].Fields[fi].Hidden = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// marketingMetadataTables 静态列出 Marketing 库的所有表字段(hidden 默认 true)
|
||||
func marketingMetadataTables() []tableInfo {
|
||||
return []tableInfo{
|
||||
|
|
@ -152,11 +162,11 @@ func marketingMetadataTables() []tableInfo {
|
|||
{Key: "order.status", Field: "status", Label: "状态", Hidden: true},
|
||||
{Key: "order.account", Field: "account", Label: "账号", Hidden: true},
|
||||
{Key: "order.product_id", Field: "product_id", Label: "商品id", Hidden: true},
|
||||
{Key: "order.reseller_id", Field: "reseller_id", Label: "所属分销商ID(冗余)", Hidden: true},
|
||||
{Key: "order.reseller_id", Field: "reseller_id", Label: "所属分销商ID(冗余)", Hidden: false},
|
||||
{Key: "order.plan_id", Field: "plan_id", Label: "所属营销计划ID(冗余)", Hidden: false},
|
||||
{Key: "order.key_batch_id", Field: "key_batch_id", Label: "所属KEY批次ID(冗余)", Hidden: false},
|
||||
{Key: "order.code_batch_id", Field: "code_batch_id", Label: "Code批次ID(冗余)", Hidden: false},
|
||||
{Key: "order.contract_price", Field: "contract_price", Label: "合同单价(冗余)", Hidden: true},
|
||||
{Key: "order.contract_price", Field: "contract_price", Label: "合同单价(冗余)", Hidden: false},
|
||||
{Key: "order.total", Field: "total", Label: "总价", Hidden: true},
|
||||
{Key: "order.num", Field: "num", Label: "购买数量", Hidden: true},
|
||||
{Key: "order.pay_amount", Field: "pay_amount", Label: "支付金额", Hidden: true},
|
||||
|
|
|
|||
BIN
server/server
BIN
server/server
Binary file not shown.
12
web/main.js
12
web/main.js
|
|
@ -107,6 +107,7 @@ const app = createApp({
|
|||
|
||||
// ==================== 字段元数据管理 ====================
|
||||
const metaFM = Vue.ref({});
|
||||
const metaTableLabels = Vue.ref({});
|
||||
const recommendedMeta = Vue.ref([]);
|
||||
|
||||
const loadFieldsMeta = async (ds, type) => {
|
||||
|
|
@ -115,13 +116,18 @@ const app = createApp({
|
|||
const data = await res.json();
|
||||
const tables = Array.isArray(data?.data?.tables) ? data.data.tables : (Array.isArray(data?.tables) ? data.tables : []);
|
||||
const m = {};
|
||||
const tblLabels = {};
|
||||
tables.forEach(t => {
|
||||
const arr = Array.isArray(t.fields) ? t.fields : [];
|
||||
m[t.table] = arr.map(it => ({ value: it.field, label: it.label }));
|
||||
const visibleFields = arr.filter(it => !it.hidden);
|
||||
m[t.table] = visibleFields.map(it => ({ value: it.field, label: it.label }));
|
||||
if (t.label) tblLabels[t.table] = t.label;
|
||||
});
|
||||
metaFM.value = m;
|
||||
metaTableLabels.value = tblLabels;
|
||||
} catch (_e) {
|
||||
metaFM.value = {};
|
||||
metaTableLabels.value = {};
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -158,11 +164,13 @@ const app = createApp({
|
|||
goods_voucher_batch: '立减金批次表',
|
||||
goods_voucher_subject_config: '立减金主体配置'
|
||||
};
|
||||
|
||||
const tableLabel = (table) => metaTableLabels.value[table] || TABLE_LABELS[table] || table;
|
||||
|
||||
// ==================== 字段选项构建 ====================
|
||||
const buildFieldNode = (table, children = []) => ({
|
||||
value: table,
|
||||
label: TABLE_LABELS[table] || table,
|
||||
label: tableLabel(table),
|
||||
children
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue