From ba4c123c096535c5459b1f7c30fefaa50643a554 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sun, 21 Jun 2026 11:40:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20supplier=5Fresource=5Fprice=20CRUD=20JSO?= =?UTF-8?q?N=E5=90=88=E8=A7=84=E6=A0=BC=E5=BC=8F=20+=20CRUD=20dspy=20+=20l?= =?UTF-8?q?oad=5Fpath?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - supplier_resource_price_list.json重写为规范格式(tblname+params) - 3个新CRUD dspy(create/update/delete) - load_path.py LOGINED+OPERATOR注册完整路径 --- json/supplier_resource_price_list.json | 27 +++++++++++---- scripts/load_path.py | 13 +++++++ .../api/supplier_resource_price_create.dspy | 34 +++++++++++++++++++ .../api/supplier_resource_price_delete.dspy | 16 +++++++++ .../api/supplier_resource_price_update.dspy | 18 ++++++++++ 5 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 wwwroot/api/supplier_resource_price_create.dspy create mode 100644 wwwroot/api/supplier_resource_price_delete.dspy create mode 100644 wwwroot/api/supplier_resource_price_update.dspy diff --git a/json/supplier_resource_price_list.json b/json/supplier_resource_price_list.json index 74460e4..fe4ed54 100644 --- a/json/supplier_resource_price_list.json +++ b/json/supplier_resource_price_list.json @@ -1,10 +1,25 @@ { - "supplier_resource_price": { - "params": { - "supplier_org_id": {"type": "str"}, - "resource_type": {"type": "str"}, - "resource_ref_id": {"type": "str"}, - "status": {"type": "str"} + "tblname": "supplier_resource_price", + "alias": "supplier_resource_price_list", + "title": "供应商资源定价管理", + "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"} + ] + }, + "browserfields": { + "exclouded": [], + "alters": {} + }, + "editexclouded": ["id", "created_at", "updated_at"], + "editable": { + "new_data_url": "{{entire_url('../api/supplier_resource_price_create.dspy')}}", + "update_data_url": "{{entire_url('../api/supplier_resource_price_update.dspy')}}", + "delete_data_url": "{{entire_url('../api/supplier_resource_price_delete.dspy')}}" } } } diff --git a/scripts/load_path.py b/scripts/load_path.py index 6730280..05bc3f8 100755 --- a/scripts/load_path.py +++ b/scripts/load_path.py @@ -155,6 +155,16 @@ PATHS_LOGINED = [ "/supplychain/api/query_platform_suppliers.dspy", "/supplychain/api/query_platform_products.dspy", "/supplychain/api/import_supplier_product.dspy", + # Supplier resource pricing + "/supplychain/supplier_resource_price_list", + "/supplychain/supplier_resource_price_list/index.ui", + "/supplychain/supplier_resource_price_list/get_supplier_resource_price.dspy", + "/supplychain/supplier_resource_price_list/add_supplier_resource_price.dspy", + "/supplychain/supplier_resource_price_list/update_supplier_resource_price.dspy", + "/supplychain/supplier_resource_price_list/delete_supplier_resource_price.dspy", + "/supplychain/api/supplier_resource_price_create.dspy", + "/supplychain/api/supplier_resource_price_update.dspy", + "/supplychain/api/supplier_resource_price_delete.dspy", ] # 角色专属权限 @@ -214,6 +224,9 @@ PATHS_OPERATOR = [ "/supplychain/supplier_resource_price_list/add_supplier_resource_price.dspy", "/supplychain/supplier_resource_price_list/update_supplier_resource_price.dspy", "/supplychain/supplier_resource_price_list/delete_supplier_resource_price.dspy", + "/supplychain/api/supplier_resource_price_create.dspy", + "/supplychain/api/supplier_resource_price_update.dspy", + "/supplychain/api/supplier_resource_price_delete.dspy", ] PATHS_SALE = [ diff --git a/wwwroot/api/supplier_resource_price_create.dspy b/wwwroot/api/supplier_resource_price_create.dspy new file mode 100644 index 0000000..425b71e --- /dev/null +++ b/wwwroot/api/supplier_resource_price_create.dspy @@ -0,0 +1,34 @@ +result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid', 'type': 'error'}} + +try: + dbname = get_module_dbname('supplychain') + data = dict(params_kw) + data['id'] = getID() + data['created_at'] = timestampstr() + data['updated_at'] = timestampstr() + if 'status' not in data: + data['status'] = '1' + if 'unit_price' not in data: + data['unit_price'] = '0' + if 'currency' not in data: + data['currency'] = 'CNY' + + if not data.get('supplier_org_id'): + raise ValueError('供应商ID不能为空') + if not data.get('resource_type'): + raise ValueError('资源类型不能为空') + if not data.get('resource_ref_id'): + raise ValueError('资源引用ID不能为空') + if not data.get('price_unit'): + raise ValueError('价格单位不能为空') + if not data.get('effective_date'): + raise ValueError('生效日期不能为空') + + async with DBPools().sqlorContext(dbname) as sor: + await sor.C('supplier_resource_price', data) + + result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '定价创建成功', 'type': 'success'}} +except Exception as e: + result['options'] = {'title': 'Error', 'message': '创建失败: ' + str(e), 'type': 'error'} + +return json.dumps(result, ensure_ascii=False) diff --git a/wwwroot/api/supplier_resource_price_delete.dspy b/wwwroot/api/supplier_resource_price_delete.dspy new file mode 100644 index 0000000..c0b901d --- /dev/null +++ b/wwwroot/api/supplier_resource_price_delete.dspy @@ -0,0 +1,16 @@ +result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid', 'type': 'error'}} + +try: + dbname = get_module_dbname('supplychain') + record_id = params_kw.get('id') + if not record_id: + raise ValueError('Missing id') + + async with DBPools().sqlorContext(dbname) as sor: + await sor.D('supplier_resource_price', {'id': record_id}) + + result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '定价已删除', 'type': 'success'}} +except Exception as e: + result['options'] = {'title': 'Error', 'message': '删除失败: ' + str(e), 'type': 'error'} + +return json.dumps(result, ensure_ascii=False) diff --git a/wwwroot/api/supplier_resource_price_update.dspy b/wwwroot/api/supplier_resource_price_update.dspy new file mode 100644 index 0000000..59d24ca --- /dev/null +++ b/wwwroot/api/supplier_resource_price_update.dspy @@ -0,0 +1,18 @@ +result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid', 'type': 'error'}} + +try: + dbname = get_module_dbname('supplychain') + data = dict(params_kw) + record_id = data.pop('id', None) + if not record_id: + raise ValueError('Missing id') + data['updated_at'] = timestampstr() + + async with DBPools().sqlorContext(dbname) as sor: + await sor.U('supplier_resource_price', data, {'id': record_id}) + + result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '定价更新成功', 'type': 'success'}} +except Exception as e: + result['options'] = {'title': 'Error', 'message': '更新失败: ' + str(e), 'type': 'error'} + +return json.dumps(result, ensure_ascii=False)