27 lines
2.7 KiB
XML
27 lines
2.7 KiB
XML
{
|
|
"widgettype": "Form",
|
|
"id": "new_ticket_form",
|
|
"options": {
|
|
"cols": 1,
|
|
"title": "提交工单",
|
|
"padding": "16px",
|
|
"submit_url": "{{entire_url('/ticket/api/ticket_create.dspy')}}",
|
|
"method": "POST",
|
|
"fields": [
|
|
{"name": "title", "label": "问题标题", "uitype": "str", "required": true, "placeholder": "一句话概括您的问题"},
|
|
{"name": "description", "label": "问题描述", "uitype": "text", "required": true, "placeholder": "详细描述问题现象、发生时间、涉及的功能/账户等,便于快速定位"},
|
|
{"name": "category", "label": "问题分类", "uitype": "code", "value": "consult",
|
|
"data": [{"value": "consult", "text": "使用咨询"}, {"value": "fault", "text": "故障报修"}, {"value": "billing", "text": "计费账务"}, {"value": "other", "text": "其他"}]},
|
|
{"name": "priority", "label": "优先级", "uitype": "code", "value": "normal",
|
|
"data": [{"value": "low", "text": "低"}, {"value": "normal", "text": "普通"}, {"value": "high", "text": "高"}, {"value": "urgent", "text": "紧急"}]},
|
|
{"name": "attachments", "label": "附件(可选):最多 9 个,总大小 ≤9.5MB,截图/日志等有助于定位问题", "uitype": "file", "multiple": true, "preview": true}
|
|
]
|
|
},
|
|
"binds": [
|
|
{"wid": "attachments", "event": "changed", "actiontype": "script", "target": "self",
|
|
"script": "var v=(event&&event.params)?event.params.attachments:null; var fs=v?(Array.isArray(v)?v:[v]):[]; var tot=0; for(var i=0;i<fs.length;i++){tot+=(fs[i].size||0);} var w=bricks.getWidgetById('attachments',bricks.app); if(fs.length>9){new bricks.Message({title:'附件过多',message:'单条消息最多上传 9 个附件,已清空请重新选择'}).open(); if(w&&w.reset){w.reset();} return;} if(tot>9.5*1024*1024){new bricks.Message({title:'附件过大',message:'单次提交附件总大小不能超过 9.5MB,已清空请重新选择'}).open(); if(w&&w.reset){w.reset();} return;}"},
|
|
{"wid": "self", "event": "submited", "actiontype": "script", "target": "self",
|
|
"script": "var resp=event.params||{}; var d=null; try{ d=(resp&&typeof resp.json==='function')?await resp.json():resp; }catch(e){ d=null; } if(d&&d.success){ var pw=bricks.getWidgetById('new_ticket_pw',bricks.app); if(pw){pw.destroy();} var tbl=bricks.getWidgetById('my_ticket_table',bricks.app.root); if(tbl){await tbl.render({});} if(window.refreshTodo){window.refreshTodo();} new bricks.Message({title:'提交成功',message:d.message||'工单已提交,智能助手正在处理'}).open(); }else{ new bricks.Message({title:'提交失败',message:(d&&d.error)||'提交失败,请重试'}).open(); }"}
|
|
]
|
|
}
|