diff --git a/plan.md b/plan.md index ecd8bc0..e60ad82 100644 --- a/plan.md +++ b/plan.md @@ -410,6 +410,36 @@ foreach ($users_raw as $u) { --- +## Round 3 执行总结(FrontendDev) + +### 已完成工作 + +| 文件 | 操作 | 说明 | +|------|------|------| +| `seat_template/list.html` | URL 修正 | `MyUrl()` → `PluginsAdminUrl()` | +| `seat_template/save.html` | URL 修正 | 返回按钮 URL 修正 | +| `verification/list.html` | URL 修正 | `MyUrl()` → `PluginsAdminUrl()` | +| `ticket/list.html` | URL 修正 | list + detail + export URL 全部修正 | +| `ticket/detail.html` | 新建 | 完整票详情页(QR码/关联商品/核销信息/状态标签) | +| `verifier/list.html` | 新建 | 核销员列表页(搜索/状态筛选/禁用按钮) | +| `verifier/save.html` | 新建 | 核销员新增/编辑表单(用户选择/名称/状态切换) | + +### 关键修复:统一使用 PluginsAdminUrl() + +所有视图已统一使用 `PluginsAdminUrl('vr_ticket', 'controller', 'action')` 生成后台 URL,符合 ShopXO v6.8.0 插件标准路由规范。 + +### 待完成(FrontendDev) + +- **FR-3**:座位图可视化编辑器集成(需需求确认,canvas/svg 方案待选型) +- **seat_template/save.html**:座位图编辑器 UI(当前为纯 JSON 编辑器) +- **FR-4**:CSV 导出大数据量优化(BackendArchitect 已用 `cursor()` 优化 export) + +### 遗留 P1 Bug(需其他 Agent 修复) + +- ⚠️ `Verifier.php:45` — CONCAT SQL 语法错误(SecurityEngineer 已报告,BackendArchitect 待修复) + +--- + ## 共识投票 [CONSENSUS: NO] — 遗留 P1 bug(Verifier.php:45 CONCAT 语法错误)需要修复,Task S4(审计日志设计)尚未完成。 diff --git a/shopxo/app/plugins/vr_ticket/admin/view/seat_template/list.html b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/list.html index 41dba22..33a4b06 100644 --- a/shopxo/app/plugins/vr_ticket/admin/view/seat_template/list.html +++ b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/list.html @@ -31,7 +31,7 @@
- 添加模板 + 添加模板
@@ -48,7 +48,7 @@ @@ -63,7 +63,7 @@ layui.use('table', function() { table.render({ elem: '#table', - url: '{:MyUrl("plugins_vr_ticket/admin/seat_template/list")}', + url: '{:PluginsAdminUrl("vr_ticket", "seat_template", "list")}', cols: [[ {field: 'id', title: 'ID', width: 80}, {field: 'name', title: '模板名称', minWidth: 150}, @@ -85,7 +85,7 @@ layui.use('table', function() { $(document).on('click', '[lay-fn="del"]', function() { var id = $(this).data('id'); layer.confirm('确认删除?', function(index) { - $.post('{:MyUrl("plugins_vr_ticket/admin/seat_template/delete")}', {id: id}, function(res) { + $.post('{:PluginsAdminUrl("vr_ticket", "seat_template", "delete")}', {id: id}, function(res) { if (res.code == 0) { layer.msg('删除成功'); table.reload('table'); diff --git a/shopxo/app/plugins/vr_ticket/admin/view/seat_template/save.html b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/save.html index 1c9ba0d..6e07484 100644 --- a/shopxo/app/plugins/vr_ticket/admin/view/seat_template/save.html +++ b/shopxo/app/plugins/vr_ticket/admin/view/seat_template/save.html @@ -53,7 +53,7 @@
- 返回 + 返回
diff --git a/shopxo/app/plugins/vr_ticket/admin/view/ticket/detail.html b/shopxo/app/plugins/vr_ticket/admin/view/ticket/detail.html new file mode 100644 index 0000000..e2df7f7 --- /dev/null +++ b/shopxo/app/plugins/vr_ticket/admin/view/ticket/detail.html @@ -0,0 +1,123 @@ + + + + + 票详情 - VR票务 + {include file="public/head" /} + + + +
+
+
票详情
+
+ {if !empty($msg)} +
{$msg}
+
+ 返回列表 +
+ {else} +
+ +
+
+
+ +
{$ticket.ticket_code}
+
+
+ +
+ + {switch name="$ticket.verify_status"} + {case value="0"}未核销{/case} + {case value="1"}已核销{/case} + {case value="2"}已退款{/case} + {default /}未知 + {/switch} + +
+
+
+ +
{$ticket.real_name|default='-'}
+
+
+ +
{$ticket.phone|default='-'}
+
+
+ +
{$ticket.seat_info|default='-'}
+
+
+ +
{$ticket.order_no|default='-'}
+
+
+ +
+ {$ticket.issued_at > 0 ? date('Y-m-d H:i:s', $ticket.issued_at) : '-'} +
+
+
+
+ + +
+
+ {if !empty($ticket.qr_code_url)} + 票二维码 + {else} +
暂无二维码
+ {/if} +
+
+
+ +
+ {$goods.title|default='已删除商品'|raw} +
+
+
+ +
+ {if !empty($verifier)} + {$verifier.name} (ID:{$verifier.id}) + {else /} + - + {/if} +
+
+
+ +
+ {$ticket.verify_time > 0 ? date('Y-m-d H:i:s', $ticket.verify_time) : '-'} +
+
+
+
+
+ +
+ 返回列表 +
+ {/if} +
+
+
+ +{include file="public/footer" /} + + diff --git a/shopxo/app/plugins/vr_ticket/admin/view/ticket/list.html b/shopxo/app/plugins/vr_ticket/admin/view/ticket/list.html index 4404db3..6d18697 100644 --- a/shopxo/app/plugins/vr_ticket/admin/view/ticket/list.html +++ b/shopxo/app/plugins/vr_ticket/admin/view/ticket/list.html @@ -32,7 +32,7 @@
- 导出CSV + 导出CSV
@@ -53,7 +53,7 @@ @@ -67,7 +67,7 @@ layui.use(['table', 'form'], function() { table.render({ elem: '#table', - url: '{:MyUrl("plugins_vr_ticket/admin/ticket/list")}', + url: '{:PluginsAdminUrl("vr_ticket", "ticket", "list")}', cols: [[ {field: 'id', title: 'ID', width: 70}, {field: 'ticket_code', title: '票码', width: 200}, diff --git a/shopxo/app/plugins/vr_ticket/admin/view/verification/list.html b/shopxo/app/plugins/vr_ticket/admin/view/verification/list.html index 15c4fdf..25b3262 100644 --- a/shopxo/app/plugins/vr_ticket/admin/view/verification/list.html +++ b/shopxo/app/plugins/vr_ticket/admin/view/verification/list.html @@ -65,7 +65,7 @@ layui.use(['table', 'laydate'], function() { table.render({ elem: '#table', - url: '{:MyUrl("plugins_vr_ticket/admin/verification/list")}', + url: '{:PluginsAdminUrl("vr_ticket", "verification", "list")}', cols: [[ {field: 'id', title: 'ID', width: 70}, {field: 'ticket_code', title: '票码', width: 200}, diff --git a/shopxo/app/plugins/vr_ticket/admin/view/verifier/list.html b/shopxo/app/plugins/vr_ticket/admin/view/verifier/list.html new file mode 100644 index 0000000..2804b20 --- /dev/null +++ b/shopxo/app/plugins/vr_ticket/admin/view/verifier/list.html @@ -0,0 +1,102 @@ + + + + + 核销员管理 - VR票务 + {include file="public/head" /} + + +
+
+
核销员管理
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + 添加核销员 +
+
+
+ + +
+ + + + +
+
+
+ +{include file="public/footer" /} + + + diff --git a/shopxo/app/plugins/vr_ticket/admin/view/verifier/save.html b/shopxo/app/plugins/vr_ticket/admin/view/verifier/save.html new file mode 100644 index 0000000..d62cc37 --- /dev/null +++ b/shopxo/app/plugins/vr_ticket/admin/view/verifier/save.html @@ -0,0 +1,79 @@ + + + + + 核销员 - VR票务 + {include file="public/head" /} + + +
+
+
{$info.id > 0 ? '编辑' : '添加'}核销员
+
+
+ + +
+ +
+ +
+ {if $info.id > 0} +
用户关联后不可更改,如需变更请禁用后重新添加
+ {/if} +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ + 返回列表 +
+
+
+
+
+
+ +{include file="public/footer" /} + + +