- Updated core.py, init.py, opportunity_core.py, mysql.ddl.sql - Updated UI: base.ui, opportunity_management.ui - Added: opportunity.json, opportunity_stage_history.json - Added API files: opportunities CRUD, sales_stages_list, check_tables - Added UI/DSPY: opportunity_edit, opportunity_list, sales_stages_list
47 lines
2.1 KiB
XML
47 lines
2.1 KiB
XML
{
|
|
"widgettype": "Page",
|
|
"options": {
|
|
"title": "商机管理",
|
|
"style": {"height": "100vh", "padding": "0"}
|
|
},
|
|
"subwidgets": [
|
|
{
|
|
"widgettype": "VBox",
|
|
"options": {"style": {"padding": "16px", "flex": 1, "overflow": "hidden"}},
|
|
"subwidgets": [
|
|
{
|
|
"widgettype": "HBox",
|
|
"options": {"style": {"marginBottom": "16px", "gap": "8px"}},
|
|
"subwidgets": [
|
|
{"widgettype": "TextField", "id": "search_keyword", "options": {"label": "搜索", "placeholder": "商机名称/客户", "style": {"flex": 1}}},
|
|
{"widgettype": "Button", "id": "btn_search", "options": {"text": "搜索", "variant": "primary"}},
|
|
{"widgettype": "Button", "id": "btn_add", "options": {"text": "新增", "variant": "primary", "action": "navigate('main/opportunity_management/opportunity_edit.ui')"}}
|
|
]
|
|
},
|
|
{
|
|
"widgettype": "DataGrid",
|
|
"id": "opportunity_grid",
|
|
"options": {
|
|
"url": "{{entire_url('api/opportunities_list.dspy')}}",
|
|
"style": {"flex": 1},
|
|
"columns": [
|
|
{"field": "opportunity_name", "header": "商机名称", "width": 200},
|
|
{"field": "customer_name", "header": "客户", "width": 150},
|
|
{"field": "estimated_amount", "header": "预估金额", "width": 120},
|
|
{"field": "current_stage", "header": "阶段", "width": 120},
|
|
{"field": "probability", "header": "概率", "width": 80},
|
|
{"field": "expected_close_date", "header": "预计成交", "width": 120},
|
|
{"field": "owner_name", "header": "负责人", "width": 100},
|
|
{"field": "status", "header": "状态", "width": 80}
|
|
],
|
|
"toolbar": [
|
|
{"type": "button", "text": "编辑", "icon": "edit", "action": "navigate('main/opportunity_management/opportunity_edit.ui?id={% raw %}{{selectedRow.id}}{% endraw %}')"},
|
|
{"type": "button", "text": "删除", "icon": "delete", "action": "doDelete('{% raw %}{{selectedRow.id}}{% endraw %}')"}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|