From 09c374d47aabae3a4ab4f45771b295c4951b3d48 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 7 May 2026 10:55:45 +0800 Subject: [PATCH] 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 --- json/financial_vouchers.json | 134 +++++--------------------- json/payments.json | 171 +++++++--------------------------- json/receipt_allocations.json | 109 +++------------------- json/receipts.json | 142 +++++++--------------------- json/receivables.json | 167 +++++---------------------------- 5 files changed, 122 insertions(+), 601 deletions(-) diff --git a/json/financial_vouchers.json b/json/financial_vouchers.json index d077f93..0f02113 100644 --- a/json/financial_vouchers.json +++ b/json/financial_vouchers.json @@ -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" - } - ] - } -} \ No newline at end of file + "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"] + } +} diff --git a/json/payments.json b/json/payments.json index 23ddbb8..033e3ec 100644 --- a/json/payments.json +++ b/json/payments.json @@ -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" - } - ] - } -} \ No newline at end of file + "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"] + } +} diff --git a/json/receipt_allocations.json b/json/receipt_allocations.json index 6dc92d0..b333384 100644 --- a/json/receipt_allocations.json +++ b/json/receipt_allocations.json @@ -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" - } - ] - } -} \ No newline at end of file + "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"] + } +} diff --git a/json/receipts.json b/json/receipts.json index e8cdf0b..514426c 100644 --- a/json/receipts.json +++ b/json/receipts.json @@ -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" - } - ] - } -} \ No newline at end of file + "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"] + } +} diff --git a/json/receivables.json b/json/receivables.json index 5bc9aa2..5af1a4f 100644 --- a/json/receivables.json +++ b/json/receivables.json @@ -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" - } - ] - } -} \ No newline at end of file + "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"] + } +}