fix: supplier_resource_price CRUD JSON合规格式 + CRUD dspy + load_path
- supplier_resource_price_list.json重写为规范格式(tblname+params) - 3个新CRUD dspy(create/update/delete) - load_path.py LOGINED+OPERATOR注册完整路径
This commit is contained in:
parent
c06d54d86a
commit
ba4c123c09
@ -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')}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 = [
|
||||
|
||||
34
wwwroot/api/supplier_resource_price_create.dspy
Normal file
34
wwwroot/api/supplier_resource_price_create.dspy
Normal file
@ -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)
|
||||
16
wwwroot/api/supplier_resource_price_delete.dspy
Normal file
16
wwwroot/api/supplier_resource_price_delete.dspy
Normal file
@ -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)
|
||||
18
wwwroot/api/supplier_resource_price_update.dspy
Normal file
18
wwwroot/api/supplier_resource_price_update.dspy
Normal file
@ -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)
|
||||
Loading…
x
Reference in New Issue
Block a user