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",
"grid": {
"fields": [
{
"name": "voucher_number",
"title": "凭证编号",
"width": 150
},
{
"name": "voucher_type",
"title": "凭证类型",
"width": 100,
"alter": "code:VOUCHER_TYPE"
},
{
"name": "contract_number",
"title": "合同编号",
"width": 150
},
{
"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"
}
]
}
}
"tblname": "financial_vouchers",
"title": "财务凭证",
"params": {
"sortby": ["created_at desc"],
"logined_userorgid": "org_id",
"confidential_fields": [],
"browserfields": {
"exclouded": ["id", "contract_id", "order_id", "reference_id", "org_id"],
"alters": {
"voucher_type": {
"uitype": "code",
"data": [
{"value": "receipt", "text": "收款"},
{"value": "payment", "text": "支出"}
]
}
}
},
"editexclouded": ["id", "contract_id", "order_id", "reference_id", "org_id", "created_at"]
}
}

View File

@ -1,140 +1,33 @@
{
"tablename": "payments",
"grid": {
"fields": [
{
"name": "payment_number",
"title": "支出编号",
"width": 150
},
{
"name": "contract_number",
"title": "合同编号",
"width": 150
},
{
"name": "vendor_name",
"title": "供应商",
"width": 200
},
{
"name": "payment_amount",
"title": "支出金额",
"width": 120,
"alter": "money"
},
{
"name": "payment_date",
"title": "支出日期",
"width": 120,
"alter": "date"
},
{
"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"
}
]
}
}
"tblname": "payments",
"title": "支出管理",
"params": {
"sortby": ["created_at desc"],
"logined_userorgid": "org_id",
"confidential_fields": [],
"browserfields": {
"exclouded": ["id", "contract_id", "vendor_id", "approved_by", "created_by", "org_id"],
"alters": {
"payment_method": {
"uitype": "code",
"data": [
{"value": "bank_transfer", "text": "银行转账"},
{"value": "cash", "text": "现金"},
{"value": "check", "text": "支票"},
{"value": "other", "text": "其他"}
]
},
"payment_status": {
"uitype": "code",
"data": [
{"value": "pending", "text": "待审批"},
{"value": "approved", "text": "已审批"},
{"value": "rejected", "text": "已拒绝"},
{"value": "paid", "text": "已支付"}
]
}
}
},
"editexclouded": ["id", "contract_id", "vendor_id", "approved_by", "created_by", "org_id", "created_at", "updated_at"]
}
}

View File

@ -1,97 +1,14 @@
{
"tablename": "receipt_allocations",
"grid": {
"fields": [
{
"name": "receipt_number",
"title": "收款编号",
"width": 150
},
{
"name": "order_number",
"title": "订单编号",
"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"
}
]
}
}
"tblname": "receipt_allocations",
"title": "收款分配",
"params": {
"sortby": ["created_at desc"],
"logined_userorgid": "org_id",
"confidential_fields": [],
"browserfields": {
"exclouded": ["id", "receipt_id", "order_id", "receivable_id", "contract_id", "org_id"],
"alters": {}
},
"editexclouded": ["id", "receipt_id", "order_id", "receivable_id", "contract_id", "org_id", "created_at"]
}
}

View File

@ -1,111 +1,33 @@
{
"tablename": "receipts",
"grid": {
"fields": [
{
"name": "receipt_number",
"title": "收款编号",
"width": 150
},
{
"name": "customer_name",
"title": "客户名称",
"width": 200
},
{
"name": "total_amount",
"title": "收款总额",
"width": 120,
"alter": "money"
},
{
"name": "receipt_date",
"title": "收款日期",
"width": 120,
"alter": "date"
},
{
"name": "receipt_method",
"title": "收款方式",
"width": 120,
"alter": "code:PAYMENT_METHOD"
},
{
"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"
}
]
}
}
"tblname": "receipts",
"title": "收款管理",
"params": {
"sortby": ["created_at desc"],
"logined_userorgid": "org_id",
"confidential_fields": [],
"browserfields": {
"exclouded": ["id", "customer_id", "created_by", "org_id"],
"alters": {
"receipt_method": {
"uitype": "code",
"data": [
{"value": "bank_transfer", "text": "银行转账"},
{"value": "cash", "text": "现金"},
{"value": "check", "text": "支票"},
{"value": "other", "text": "其他"}
]
},
"receipt_status": {
"uitype": "code",
"data": [
{"value": "pending", "text": "待确认"},
{"value": "confirmed", "text": "已确认"},
{"value": "allocated", "text": "已分配"},
{"value": "cancelled", "text": "已取消"}
]
}
}
},
"editexclouded": ["id", "customer_id", "created_by", "org_id", "created_at", "updated_at"]
}
}

View File

@ -1,144 +1,25 @@
{
"tablename": "receivables",
"grid": {
"fields": [
{
"name": "order_number",
"title": "订单编号",
"width": 150
},
{
"name": "contract_number",
"title": "合同编号",
"width": 150
},
{
"name": "customer_name",
"title": "客户名称",
"width": 200
},
{
"name": "receivable_amount",
"title": "应收金额",
"width": 120,
"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"
}
]
}
}
"tblname": "receivables",
"title": "应收款项",
"params": {
"sortby": ["due_date asc"],
"logined_userorgid": "org_id",
"confidential_fields": [],
"browserfields": {
"exclouded": ["id", "order_id", "contract_id", "customer_id", "org_id"],
"alters": {
"status": {
"uitype": "code",
"data": [
{"value": "pending", "text": "待收款"},
{"value": "partial", "text": "部分收款"},
{"value": "completed", "text": "已完成"},
{"value": "overdue", "text": "已逾期"},
{"value": "cancelled", "text": "已取消"}
]
}
}
},
"editexclouded": ["id", "order_id", "contract_id", "customer_id", "org_id", "created_at", "updated_at", "received_amount"]
}
}