{ "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;i9){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(); }"} ] }