fix: rewrite all CRUD JSON files to match crud-definition-spec

- Replace wrong format (tablename/grid/form/joins/select_fields/widget)
  with correct spec format (tblname/params/browserfields/editexclouded/alters)
- Use uitype:code with data arrays for dropdown fields
- Add logined_userorgid for multi-tenant data isolation
- Only reference actual table fields, no cross-table joins
- Hide system fields (id, org_id, created_at, updated_at) in browser/edit views

Files: financial_vouchers.json, payments.json, receipt_allocations.json, receipts.json, receivables.json
This commit is contained in:
yumoqing 2026-05-07 10:55:45 +08:00
parent e78941a59d
commit 09c374d47a
5 changed files with 122 additions and 601 deletions

View File

@ -1,114 +1,22 @@
{ {
"tablename": "financial_vouchers", "tblname": "financial_vouchers",
"grid": { "title": "财务凭证",
"fields": [ "params": {
{ "sortby": ["created_at desc"],
"name": "voucher_number", "logined_userorgid": "org_id",
"title": "凭证编号", "confidential_fields": [],
"width": 150 "browserfields": {
}, "exclouded": ["id", "contract_id", "order_id", "reference_id", "org_id"],
{ "alters": {
"name": "voucher_type", "voucher_type": {
"title": "凭证类型", "uitype": "code",
"width": 100, "data": [
"alter": "code:VOUCHER_TYPE" {"value": "receipt", "text": "收款"},
}, {"value": "payment", "text": "支出"}
{ ]
"name": "contract_number", }
"title": "合同编号", }
"width": 150 },
}, "editexclouded": ["id", "contract_id", "order_id", "reference_id", "org_id", "created_at"]
{ }
"name": "order_number",
"title": "订单编号",
"width": 150
},
{
"name": "amount",
"title": "金额",
"width": 120,
"alter": "money"
},
{
"name": "voucher_date",
"title": "凭证日期",
"width": 120,
"alter": "date"
},
{
"name": "description",
"title": "描述",
"width": 300
},
{
"name": "created_at",
"title": "创建时间",
"width": 180,
"alter": "datetime"
}
],
"joins": [
{
"table": "contract",
"alias": "c",
"on": "financial_vouchers.contract_id = c.id"
},
{
"table": "orders",
"alias": "o",
"on": "financial_vouchers.order_id = o.id"
}
],
"select_fields": [
"financial_vouchers.*",
"c.contract_number",
"o.order_number"
]
},
"form": {
"fields": [
{
"name": "voucher_number",
"title": "凭证编号",
"widget": "text",
"readonly": true
},
{
"name": "voucher_type",
"title": "凭证类型",
"widget": "select",
"options": "code:VOUCHER_TYPE"
},
{
"name": "contract_id",
"title": "合同ID",
"widget": "hidden"
},
{
"name": "order_id",
"title": "订单ID",
"widget": "hidden"
},
{
"name": "amount",
"title": "金额",
"widget": "number"
},
{
"name": "voucher_date",
"title": "凭证日期",
"widget": "date"
},
{
"name": "description",
"title": "描述",
"widget": "textarea"
},
{
"name": "reference_id",
"title": "引用ID",
"widget": "hidden"
}
]
}
} }

View File

@ -1,140 +1,33 @@
{ {
"tablename": "payments", "tblname": "payments",
"grid": { "title": "支出管理",
"fields": [ "params": {
{ "sortby": ["created_at desc"],
"name": "payment_number", "logined_userorgid": "org_id",
"title": "支出编号", "confidential_fields": [],
"width": 150 "browserfields": {
}, "exclouded": ["id", "contract_id", "vendor_id", "approved_by", "created_by", "org_id"],
{ "alters": {
"name": "contract_number", "payment_method": {
"title": "合同编号", "uitype": "code",
"width": 150 "data": [
}, {"value": "bank_transfer", "text": "银行转账"},
{ {"value": "cash", "text": "现金"},
"name": "vendor_name", {"value": "check", "text": "支票"},
"title": "供应商", {"value": "other", "text": "其他"}
"width": 200 ]
}, },
{ "payment_status": {
"name": "payment_amount", "uitype": "code",
"title": "支出金额", "data": [
"width": 120, {"value": "pending", "text": "待审批"},
"alter": "money" {"value": "approved", "text": "已审批"},
}, {"value": "rejected", "text": "已拒绝"},
{ {"value": "paid", "text": "已支付"}
"name": "payment_date", ]
"title": "支出日期", }
"width": 120, }
"alter": "date" },
}, "editexclouded": ["id", "contract_id", "vendor_id", "approved_by", "created_by", "org_id", "created_at", "updated_at"]
{ }
"name": "payment_method",
"title": "支出方式",
"width": 120,
"alter": "code:PAYMENT_METHOD"
},
{
"name": "payment_status",
"title": "状态",
"width": 100,
"alter": "code:PAYMENT_STATUS"
},
{
"name": "approved_by_name",
"title": "审批人",
"width": 120
},
{
"name": "created_by_name",
"title": "创建人",
"width": 120
}
],
"joins": [
{
"table": "contract",
"alias": "c",
"on": "payments.contract_id = c.id"
},
{
"table": "vendors",
"alias": "v",
"on": "payments.vendor_id = v.id"
},
{
"table": "users",
"alias": "u1",
"on": "payments.approved_by = u1.id"
},
{
"table": "users",
"alias": "u2",
"on": "payments.created_by = u2.id"
}
],
"select_fields": [
"payments.*",
"c.contract_number",
"v.name as vendor_name",
"u1.username as approved_by_name",
"u2.username as created_by_name"
]
},
"form": {
"fields": [
{
"name": "payment_number",
"title": "支出编号",
"widget": "text",
"readonly": true
},
{
"name": "contract_id",
"title": "关联合同",
"widget": "select",
"options": "contract"
},
{
"name": "vendor_id",
"title": "供应商",
"widget": "select",
"options": "vendors"
},
{
"name": "payment_amount",
"title": "支出金额",
"widget": "number"
},
{
"name": "payment_date",
"title": "支出日期",
"widget": "date"
},
{
"name": "payment_method",
"title": "支出方式",
"widget": "select",
"options": "code:PAYMENT_METHOD"
},
{
"name": "payment_status",
"title": "状态",
"widget": "select",
"options": "code:PAYMENT_STATUS"
},
{
"name": "approved_by",
"title": "审批人",
"widget": "select",
"options": "users"
},
{
"name": "description",
"title": "备注",
"widget": "textarea"
}
]
}
} }

View File

@ -1,97 +1,14 @@
{ {
"tablename": "receipt_allocations", "tblname": "receipt_allocations",
"grid": { "title": "收款分配",
"fields": [ "params": {
{ "sortby": ["created_at desc"],
"name": "receipt_number", "logined_userorgid": "org_id",
"title": "收款编号", "confidential_fields": [],
"width": 150 "browserfields": {
}, "exclouded": ["id", "receipt_id", "order_id", "receivable_id", "contract_id", "org_id"],
{ "alters": {}
"name": "order_number", },
"title": "订单编号", "editexclouded": ["id", "receipt_id", "order_id", "receivable_id", "contract_id", "org_id", "created_at"]
"width": 150 }
},
{
"name": "contract_number",
"title": "合同编号",
"width": 150
},
{
"name": "allocated_amount",
"title": "分配金额",
"width": 120,
"alter": "money"
},
{
"name": "allocation_percentage",
"title": "分配比例",
"width": 100,
"alter": "percentage"
},
{
"name": "created_at",
"title": "创建时间",
"width": 180,
"alter": "datetime"
}
],
"joins": [
{
"table": "receipts",
"alias": "r",
"on": "receipt_allocations.receipt_id = r.id"
},
{
"table": "orders",
"alias": "o",
"on": "receipt_allocations.order_id = o.id"
},
{
"table": "contract",
"alias": "c",
"on": "receipt_allocations.contract_id = c.id"
}
],
"select_fields": [
"receipt_allocations.*",
"r.receipt_number",
"o.order_number",
"c.contract_number"
]
},
"form": {
"fields": [
{
"name": "receipt_id",
"title": "收款ID",
"widget": "hidden"
},
{
"name": "order_id",
"title": "订单ID",
"widget": "hidden"
},
{
"name": "receivable_id",
"title": "应收ID",
"widget": "hidden"
},
{
"name": "contract_id",
"title": "合同ID",
"widget": "hidden"
},
{
"name": "allocated_amount",
"title": "分配金额",
"widget": "number"
},
{
"name": "allocation_percentage",
"title": "分配比例",
"widget": "number"
}
]
}
} }

View File

@ -1,111 +1,33 @@
{ {
"tablename": "receipts", "tblname": "receipts",
"grid": { "title": "收款管理",
"fields": [ "params": {
{ "sortby": ["created_at desc"],
"name": "receipt_number", "logined_userorgid": "org_id",
"title": "收款编号", "confidential_fields": [],
"width": 150 "browserfields": {
}, "exclouded": ["id", "customer_id", "created_by", "org_id"],
{ "alters": {
"name": "customer_name", "receipt_method": {
"title": "客户名称", "uitype": "code",
"width": 200 "data": [
}, {"value": "bank_transfer", "text": "银行转账"},
{ {"value": "cash", "text": "现金"},
"name": "total_amount", {"value": "check", "text": "支票"},
"title": "收款总额", {"value": "other", "text": "其他"}
"width": 120, ]
"alter": "money" },
}, "receipt_status": {
{ "uitype": "code",
"name": "receipt_date", "data": [
"title": "收款日期", {"value": "pending", "text": "待确认"},
"width": 120, {"value": "confirmed", "text": "已确认"},
"alter": "date" {"value": "allocated", "text": "已分配"},
}, {"value": "cancelled", "text": "已取消"}
{ ]
"name": "receipt_method", }
"title": "收款方式", }
"width": 120, },
"alter": "code:PAYMENT_METHOD" "editexclouded": ["id", "customer_id", "created_by", "org_id", "created_at", "updated_at"]
}, }
{
"name": "receipt_status",
"title": "状态",
"width": 100,
"alter": "code:RECEIPT_STATUS"
},
{
"name": "created_by_name",
"title": "创建人",
"width": 120
},
{
"name": "description",
"title": "备注",
"width": 200
}
],
"joins": [
{
"table": "customers",
"alias": "cu",
"on": "receipts.customer_id = cu.id"
},
{
"table": "users",
"alias": "u",
"on": "receipts.created_by = u.id"
}
],
"select_fields": [
"receipts.*",
"cu.name as customer_name",
"u.username as created_by_name"
]
},
"form": {
"fields": [
{
"name": "receipt_number",
"title": "收款编号",
"widget": "text",
"readonly": true
},
{
"name": "customer_id",
"title": "客户",
"widget": "select",
"options": "customers"
},
{
"name": "total_amount",
"title": "收款总额",
"widget": "number"
},
{
"name": "receipt_date",
"title": "收款日期",
"widget": "date"
},
{
"name": "receipt_method",
"title": "收款方式",
"widget": "select",
"options": "code:PAYMENT_METHOD"
},
{
"name": "receipt_status",
"title": "状态",
"widget": "select",
"options": "code:RECEIPT_STATUS"
},
{
"name": "description",
"title": "备注",
"widget": "textarea"
}
]
}
} }

View File

@ -1,144 +1,25 @@
{ {
"tablename": "receivables", "tblname": "receivables",
"grid": { "title": "应收款项",
"fields": [ "params": {
{ "sortby": ["due_date asc"],
"name": "order_number", "logined_userorgid": "org_id",
"title": "订单编号", "confidential_fields": [],
"width": 150 "browserfields": {
}, "exclouded": ["id", "order_id", "contract_id", "customer_id", "org_id"],
{ "alters": {
"name": "contract_number", "status": {
"title": "合同编号", "uitype": "code",
"width": 150 "data": [
}, {"value": "pending", "text": "待收款"},
{ {"value": "partial", "text": "部分收款"},
"name": "customer_name", {"value": "completed", "text": "已完成"},
"title": "客户名称", {"value": "overdue", "text": "已逾期"},
"width": 200 {"value": "cancelled", "text": "已取消"}
}, ]
{ }
"name": "receivable_amount", }
"title": "应收金额", },
"width": 120, "editexclouded": ["id", "order_id", "contract_id", "customer_id", "org_id", "created_at", "updated_at", "received_amount"]
"alter": "money" }
},
{
"name": "received_amount",
"title": "已收金额",
"width": 120,
"alter": "money"
},
{
"name": "receivable_date",
"title": "应收日期",
"width": 120,
"alter": "date"
},
{
"name": "due_date",
"title": "到期日期",
"width": 120,
"alter": "date"
},
{
"name": "status",
"title": "状态",
"width": 100,
"alter": "code:RECEIVABLE_STATUS"
},
{
"name": "sales_owner_name",
"title": "销售负责人",
"width": 120
}
],
"joins": [
{
"table": "orders",
"alias": "o",
"on": "receivables.order_id = o.id"
},
{
"table": "contract",
"alias": "c",
"on": "receivables.contract_id = c.id"
},
{
"table": "customers",
"alias": "cu",
"on": "receivables.customer_id = cu.id"
},
{
"table": "users",
"alias": "u",
"on": "receivables.sales_owner_id = u.id"
}
],
"select_fields": [
"receivables.*",
"o.order_number",
"c.contract_number",
"cu.name as customer_name",
"u.username as sales_owner_name"
]
},
"form": {
"fields": [
{
"name": "order_id",
"title": "订单ID",
"widget": "hidden"
},
{
"name": "contract_id",
"title": "合同ID",
"widget": "hidden"
},
{
"name": "customer_id",
"title": "客户ID",
"widget": "hidden"
},
{
"name": "receivable_amount",
"title": "应收金额",
"widget": "number",
"readonly": true
},
{
"name": "received_amount",
"title": "已收金额",
"widget": "number",
"readonly": true
},
{
"name": "receivable_date",
"title": "应收日期",
"widget": "date"
},
{
"name": "due_date",
"title": "到期日期",
"widget": "date"
},
{
"name": "credit_period",
"title": "账期天数",
"widget": "number"
},
{
"name": "status",
"title": "状态",
"widget": "select",
"options": "code:RECEIVABLE_STATUS"
},
{
"name": "sales_owner_id",
"title": "销售负责人",
"widget": "select",
"options": "users"
}
]
}
} }