From c4039d2b30ded895744d88babb87d33b49eb2989 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 25 Jun 2026 16:07:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E9=93=BE=E6=A8=A1=E5=9D=97=E5=85=A8=E9=83=A8CRUD=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - suppliers_list: 添加orgid的code配置(dataurl+valueField/textField),加入editexclouded - supplier_resource_price_list: 修正data_filter格式(fields→AND),补充alters全部code字段 - product_supplier_mapping_list: 添加editexclouded,补充product_id的code配置 - platform_supply_products_list: 添加editexclouded,补充relation_id/source_product_id的code配置 - platform_supply_relations_list: 添加editexclouded,补充supplier_org_id/buyer_org_id的code配置 - sales_ledger_list: 添加editexclouded,补充6个FK字段的code配置 - sub_resellers_list: 添加editexclouded - supplychain_accounting_list: 添加data_filter+filter_labels,补充7个code字段的alters配置 - 新增get_search_sub_distributor_id.dspy和get_search_supply_relation_id.dspy - load_path.py注册新路径 --- json/platform_supply_products_list.json | 13 ++++ json/platform_supply_relations_list.json | 13 ++++ json/product_supplier_mapping_list.json | 9 ++- json/sales_ledger_list.json | 37 +++++++++++ json/sub_resellers_list.json | 1 + json/supplier_resource_price_list.json | 40 ++++++++++-- json/suppliers_list.json | 8 ++- json/supplychain_accounting_list.json | 63 ++++++++++++++++++- scripts/load_path.py | 2 + .../api/get_search_sub_distributor_id.dspy | 16 +++++ .../api/get_search_supply_relation_id.dspy | 13 ++++ 11 files changed, 206 insertions(+), 9 deletions(-) create mode 100644 wwwroot/api/get_search_sub_distributor_id.dspy create mode 100644 wwwroot/api/get_search_supply_relation_id.dspy diff --git a/json/platform_supply_products_list.json b/json/platform_supply_products_list.json index 2031f70..fda4b0a 100644 --- a/json/platform_supply_products_list.json +++ b/json/platform_supply_products_list.json @@ -17,6 +17,18 @@ "browserfields": { "exclouded": ["id", "supplier_org_id", "buyer_org_id"], "alters": { + "relation_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_supply_relation_id.dspy')}}", + "valueField": "relation_id", + "textField": "relation_id_text" + }, + "source_product_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_productid.dspy')}}", + "valueField": "productid", + "textField": "productid_text" + }, "status": { "uitype": "code", "data": [ @@ -26,6 +38,7 @@ } } }, + "editexclouded": ["id", "supplier_org_id", "buyer_org_id", "created_at", "updated_at"], "editable": { "new_data_url": "{{entire_url('../api/platform_supply_products_create.dspy')}}", "update_data_url": "{{entire_url('../api/platform_supply_products_update.dspy')}}", diff --git a/json/platform_supply_relations_list.json b/json/platform_supply_relations_list.json index 72984e4..6fbcd3f 100644 --- a/json/platform_supply_relations_list.json +++ b/json/platform_supply_relations_list.json @@ -21,6 +21,18 @@ "browserfields": { "exclouded": ["id"], "alters": { + "supplier_org_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_orgid.dspy')}}", + "valueField": "orgid", + "textField": "orgid_text" + }, + "buyer_org_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_orgid.dspy')}}", + "valueField": "orgid", + "textField": "orgid_text" + }, "status": { "uitype": "code", "data": [ @@ -47,6 +59,7 @@ } } }, + "editexclouded": ["id", "relation_code", "created_by", "created_at", "updated_at"], "subtables": [ { "field": "relation_id", diff --git a/json/product_supplier_mapping_list.json b/json/product_supplier_mapping_list.json index bb12b35..695a990 100644 --- a/json/product_supplier_mapping_list.json +++ b/json/product_supplier_mapping_list.json @@ -16,8 +16,9 @@ "buyer_org_id": "采购方", "status": "状态" }, + "editexclouded": ["id", "created_at", "updated_at"], "browserfields": { - "exclouded": ["id"], + "exclouded": ["id", "supplier_org_id", "buyer_org_id"], "alters": { "supplier_type": { "uitype": "code", @@ -26,6 +27,12 @@ {"value": "external", "text": "外部供应商"} ] }, + "product_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_productid.dspy')}}", + "valueField": "productid", + "textField": "productid_text" + }, "is_preferred": { "uitype": "code", "data": [ diff --git a/json/sales_ledger_list.json b/json/sales_ledger_list.json index a9dbd29..54b1371 100644 --- a/json/sales_ledger_list.json +++ b/json/sales_ledger_list.json @@ -22,6 +22,42 @@ "browserfields": { "exclouded": ["id"], "alters": { + "sub_reseller_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_sub_reseller_id.dspy')}}", + "valueField": "sub_reseller_id", + "textField": "sub_reseller_id_text" + }, + "supplier_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_supplier_id.dspy')}}", + "valueField": "supplier_id", + "textField": "supplier_id_text" + }, + "agreement_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_agreement_id.dspy')}}", + "valueField": "agreement_id", + "textField": "agreement_id_text" + }, + "contract_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_contract_id.dspy')}}", + "valueField": "contract_id", + "textField": "contract_id_text" + }, + "prodtypeid": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_prodtypeid.dspy')}}", + "valueField": "prodtypeid", + "textField": "prodtypeid_text" + }, + "productid": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_productid.dspy')}}", + "valueField": "productid", + "textField": "productid_text" + }, "settlement_status": { "uitype": "code", "data": [ @@ -31,6 +67,7 @@ } } }, + "editexclouded": ["id", "resellerid", "settlement_status", "created_by", "created_at", "updated_at"], "editable": { "new_data_url": "{{entire_url('../api/sales_ledger_create.dspy')}}", "update_data_url": "{{entire_url('../api/sales_ledger_update.dspy')}}", diff --git a/json/sub_resellers_list.json b/json/sub_resellers_list.json index 98d414d..fbd86ed 100644 --- a/json/sub_resellers_list.json +++ b/json/sub_resellers_list.json @@ -15,6 +15,7 @@ "sub_reseller_name": "二级分销商名称", "status": "状态" }, + "editexclouded": ["id", "resellerid", "sub_reseller_code", "created_by", "created_at", "updated_at"], "browserfields": { "exclouded": ["id"], "alters": { diff --git a/json/supplier_resource_price_list.json b/json/supplier_resource_price_list.json index fe4ed54..c38668b 100644 --- a/json/supplier_resource_price_list.json +++ b/json/supplier_resource_price_list.json @@ -5,15 +5,43 @@ "params": { "sortby": ["effective_date desc", "created_at desc"], "data_filter": { - "fields": [ - {"field": "supplier_org_id", "title": "供应商", "uitype": "code"}, - {"field": "resource_type", "title": "资源类型", "uitype": "code"}, - {"field": "status", "title": "状态", "uitype": "code"} + "AND": [ + {"field": "supplier_org_id", "op": "=", "var": "supplier_org_id"}, + {"field": "resource_type", "op": "=", "var": "resource_type"}, + {"field": "status", "op": "=", "var": "status"} ] }, + "filter_labels": { + "supplier_org_id": "供应商", + "resource_type": "资源类型", + "status": "状态" + }, "browserfields": { - "exclouded": [], - "alters": {} + "exclouded": ["id"], + "alters": { + "supplier_org_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_orgid.dspy')}}", + "valueField": "orgid", + "textField": "orgid_text" + }, + "resource_type": { + "uitype": "code", + "data": [ + {"value": "llm", "text": "大语言模型"}, + {"value": "tts", "text": "语音合成"}, + {"value": "image", "text": "图像生成"}, + {"value": "video", "text": "视频生成"} + ] + }, + "status": { + "uitype": "code", + "data": [ + {"value": "1", "text": "生效中"}, + {"value": "0", "text": "已失效"} + ] + } + } }, "editexclouded": ["id", "created_at", "updated_at"], "editable": { diff --git a/json/suppliers_list.json b/json/suppliers_list.json index 7c3a6c7..a421733 100644 --- a/json/suppliers_list.json +++ b/json/suppliers_list.json @@ -17,10 +17,16 @@ "is_external": "供应商类型", "status": "状态" }, - "editexclouded": ["id", "resellerid", "status", "created_by", "created_at", "updated_at"], + "editexclouded": ["id", "resellerid", "orgid", "status", "created_by", "created_at", "updated_at"], "browserfields": { "exclouded": ["id", "resellerid", "created_by"], "alters": { + "orgid": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_orgid.dspy')}}", + "valueField": "orgid", + "textField": "orgid_text" + }, "is_external": { "uitype": "code", "data": [ diff --git a/json/supplychain_accounting_list.json b/json/supplychain_accounting_list.json index 9842747..a74c9b2 100644 --- a/json/supplychain_accounting_list.json +++ b/json/supplychain_accounting_list.json @@ -8,11 +8,72 @@ "created_at desc" ], "logined_userorgid": "resellerid", + "data_filter": { + "AND": [ + {"field": "sale_date", "op": ">=", "var": "sale_date_start"}, + {"field": "sale_date", "op": "<=", "var": "sale_date_end"}, + {"field": "supplier_id", "op": "=", "var": "supplier_id"}, + {"field": "productid", "op": "=", "var": "productid"} + ] + }, + "filter_labels": { + "sale_date_start": "销售开始日期", + "sale_date_end": "销售结束日期", + "supplier_id": "供应商", + "productid": "产品" + }, "browserfields": { "exclouded": [ + "id", + "resellerid", "created_by", "created_at" - ] + ], + "alters": { + "supply_contract_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_contract_id.dspy')}}", + "valueField": "contract_id", + "textField": "contract_id_text" + }, + "distribution_agreement_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_agreement_id.dspy')}}", + "valueField": "agreement_id", + "textField": "agreement_id_text" + }, + "sub_distributor_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_sub_distributor_id.dspy')}}", + "valueField": "sub_distributor_id", + "textField": "sub_distributor_id_text" + }, + "supplier_id": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_supplier_id.dspy')}}", + "valueField": "supplier_id", + "textField": "supplier_id_text" + }, + "prodtypeid": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_prodtypeid.dspy')}}", + "valueField": "prodtypeid", + "textField": "prodtypeid_text" + }, + "productid": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_productid.dspy')}}", + "valueField": "productid", + "textField": "productid_text" + }, + "source_type": { + "uitype": "code", + "data": [ + {"value": "1", "text": "手动录入"}, + {"value": "2", "text": "销售记账"} + ] + } + } }, "editexclouded": [ "id", diff --git a/scripts/load_path.py b/scripts/load_path.py index 05bc3f8..8b2f1f2 100755 --- a/scripts/load_path.py +++ b/scripts/load_path.py @@ -103,6 +103,8 @@ PATHS_LOGINED = [ "/supplychain/api/get_search_sub_reseller_id.dspy", "/supplychain/api/get_search_agreement_id.dspy", "/supplychain/api/get_search_orgid.dspy", + "/supplychain/api/get_search_sub_distributor_id.dspy", + "/supplychain/api/get_search_supply_relation_id.dspy", # CRUD API — sub_distributors "/supplychain/api/sub_distributors_create.dspy", "/supplychain/api/sub_distributors_update.dspy", diff --git a/wwwroot/api/get_search_sub_distributor_id.dspy b/wwwroot/api/get_search_sub_distributor_id.dspy new file mode 100644 index 0000000..eb73828 --- /dev/null +++ b/wwwroot/api/get_search_sub_distributor_id.dspy @@ -0,0 +1,16 @@ +result = [{'sub_distributor_id': '', 'sub_distributor_id_text': '全部'}] +try: + userorgid = await get_userorgid() + if not userorgid: + return json.dumps(result, ensure_ascii=False) + db = DBPools() + dbname = get_module_dbname('supplychain') + async with db.sqlorContext(dbname) as sor: + rows = await sor.sqlExe( + "select id as sub_distributor_id, sub_dist_name as sub_distributor_id_text from sub_distributors where resellerid = ${userorgid}$ and status = '1' order by sub_dist_name", + {"userorgid": userorgid} + ) + return json.dumps(result + list(rows), ensure_ascii=False) +except Exception as e: + debug(f'get_search_sub_distributor_id error: {e}') +return json.dumps(result, ensure_ascii=False) diff --git a/wwwroot/api/get_search_supply_relation_id.dspy b/wwwroot/api/get_search_supply_relation_id.dspy new file mode 100644 index 0000000..0a87a5e --- /dev/null +++ b/wwwroot/api/get_search_supply_relation_id.dspy @@ -0,0 +1,13 @@ +result = [{'relation_id': '', 'relation_id_text': '全部'}] +try: + db = DBPools() + dbname = get_module_dbname('supplychain') + async with db.sqlorContext(dbname) as sor: + rows = await sor.sqlExe( + "select id as relation_id, relation_name as relation_id_text from platform_supply_relations where status = '1' order by relation_name", + {} + ) + return json.dumps(result + list(rows), ensure_ascii=False) +except Exception as e: + debug(f'get_search_supply_relation_id error: {e}') +return json.dumps(result, ensure_ascii=False)