diff --git a/scripts/load_path.py b/scripts/load_path.py index 8763d97..981d8af 100755 --- a/scripts/load_path.py +++ b/scripts/load_path.py @@ -76,6 +76,7 @@ paths = [ ("/supplychain/api/contract_attach_list.dspy", "logined"), ("/supplychain/api/contract_attach.ui", "logined"), ("/supplychain/api/contract_upload.dspy", "logined"), + ("/supplychain/api/contract_attach_delete.dspy", "logined"), ("/supplychain/distribution_agreement_items_list", "logined"), ("/supplychain/distribution_agreement_items_list/add_distribution_agreement_items.dspy", "logined"), ("/supplychain/distribution_agreement_items_list/delete_distribution_agreement_items.dspy", "logined"), diff --git a/wwwroot/api/contract_attach.ui b/wwwroot/api/contract_attach.ui index 4875920..fcc15a9 100644 --- a/wwwroot/api/contract_attach.ui +++ b/wwwroot/api/contract_attach.ui @@ -8,6 +8,7 @@ {% set folder = ensure_contract_folder(request, contract_id, fiid) %} {% set upload_url = entire_url('contract_upload.dspy') %} {% set list_url = entire_url('contract_attach_list.dspy') %} +{% set delete_url = entire_url('contract_attach_delete.dspy') %} { "widgettype": "VBox", "options": { @@ -50,6 +51,10 @@ "data_url": "{{list_url}}?folderid={{folder}}&fiid={{fiid}}", "data_method": "GET", "page_rows": 50, + "record_toolbar": [ + {"name": "download", "label": "下载", "icon": "{{entire_url('/imgs/download.svg')}}"}, + {"name": "delete_attach", "label": "删除", "icon": "{{entire_url('/imgs/delete.svg')}}"} + ], "row_options": { "browserfields": { "exclouded": [], @@ -61,7 +66,23 @@ {"name": "filetype", "title": "类型", "type": "str", "uitype": "str", "label": "类型", "cwidth": 8} ] } - } + }, + "binds": [ + { + "wid": "self", + "event": "download", + "actiontype": "script", + "target": "self", + "script": "var d=this.select_row.user_data;if(d&&d.webpath)window.open(d.webpath,'_blank')" + }, + { + "wid": "self", + "event": "delete_attach", + "actiontype": "script", + "target": "self", + "script": "var d=this.select_row.user_data;if(!d||!d.id)return;if(!confirm('确定删除 '+d.filename+' ?'))return;var self=this;fetch('{{delete_url}}?id='+d.id+'&fiid={{fiid}}',{method:'POST'}).then(function(r){return r.json()}).then(function(r){if(r.widgettype==='Message'){self.render({})}else{alert(r.options.message)}})" + } + ] } ] } diff --git a/wwwroot/api/contract_attach_delete.dspy b/wwwroot/api/contract_attach_delete.dspy new file mode 100644 index 0000000..b4721ed --- /dev/null +++ b/wwwroot/api/contract_attach_delete.dspy @@ -0,0 +1,10 @@ +fiid = params_kw.fiid or 'supply_contract_attach' +fid = params_kw.id +if not fid: + return UiError(title='删除失败', message='缺少文件id') + +fmgr = ContractAttachMgr(fiid) +stat = await fmgr.del_file(request, fid) +if stat.status == 'success': + return UiMessage(title='删除成功', message='文件已删除') +return UiError(title='删除失败', message=stat.message or 'unknown error')