From aff1e52e3e2464bd3b4074a6e3b803b3c12c6fb4 Mon Sep 17 00:00:00 2001 From: weicw1996 Date: Sun, 11 Oct 2026 22:50:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=87=AA=E4=B8=BB=E5=A1=AB=E6=8A=A5):=20?= =?UTF-8?q?=E6=8B=86=E5=88=86=E9=A9=BB=E5=BA=97/=E8=B7=91=E5=BA=97?= =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E5=B9=B6=E6=96=B0=E5=A2=9E=E8=B7=91=E5=BA=97?= =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 「自主填报」原本只有一种表单。本次拆成两种类型: 1. 新增选择填报类型页 packageUser/self-report/select - 按设计稿:hero 页头 + 两张类型卡(驻店填报 / 跑店填报)+ 确认选择 - 入口(首页、我的)由直接进 create 改为先进 select 2. 原自主填报页改为「驻店填报」 - 仅改导航标题,表单内容不变 3. 新增跑店填报页 packageUser/self-report/visit - 复制现有跑店/巡店任务(pages/task/detail 的 cateId=4 分支)的填报页并改造: 保留巡店列表与下方内容,去掉列表上方的任务卡片/总进度/任务详情; 打卡、摆台照、销量、小票、门店评分一并不保留 - 巡店列表内「连锁筛选」「门店筛选」是两个并列的独立输入框, 各自弹各自的选择器(不串联),样式与驻店填报逐项对齐; 换连锁会清空已选门店 - 每条巡店可新增/删除,独立获取定位 + 打卡拍照(最多 9 张) - 定位不强制(巡店任务里是强制的,这里放开) - 底部「保存草稿」+「提交填报」,草稿交互与驻店填报一致: 进页面询问是否加载、提交成功后清除;storage key 与驻店分开 - 驳回后重新提交复用同一页面(mode=resubmit) 4. 填报记录页加「驻店 / 跑店」类型切换 - 两表分表查询,各自分页;跑店卡片展示门店数、巡店列表(门店/定位/照片) - 连锁与门店关键词筛选落到巡店列表的每一行 5. 药审核加「跑店填报」类型 - 新增 AuditVisitReportItem,展开时按 id 拉详情(列表不下发 store_list) - 跑店没有销量小计,审核通过需手填奖金,故补奖金输入弹层 顺带重构: - 门店解析(扁平列表 / 连锁嵌套两种结构的兼容、门店明细不入页面 data 的性能处理)抽到 util/store-picker,create 与 visit 共用一份, 避免两页各自维护导致解析口径不一致 --- api/visit-report.js | 21 + packageUser/self-report/create.vue | 144 +- packageUser/self-report/records.vue | 211 ++- packageUser/self-report/select.vue | 268 ++++ packageUser/self-report/visit.vue | 1216 +++++++++++++++++ pages.json | 16 +- .../audit/components/AuditVisitReportItem.vue | 185 +++ pages/audit/index.vue | 195 ++- pages/index/index.vue | 3 +- pages/mine/index.vue | 3 +- util/store-picker.js | 142 ++ 11 files changed, 2264 insertions(+), 140 deletions(-) create mode 100644 api/visit-report.js create mode 100644 packageUser/self-report/select.vue create mode 100644 packageUser/self-report/visit.vue create mode 100644 pages/audit/components/AuditVisitReportItem.vue create mode 100644 util/store-picker.js diff --git a/api/visit-report.js b/api/visit-report.js new file mode 100644 index 0000000..b519436 --- /dev/null +++ b/api/visit-report.js @@ -0,0 +1,21 @@ +import post, {get, put, del} from "@/api/request"; + +// 跑店填报(巡店列表 + 活动小结) +export const visitReportAddReq = data => post('/yxe/yxe-visit-report', data) + +export const visitReportListReq = params => get('/yxe/yxe-visit-report', {params}) + +export const visitReportPageReq = params => get('/yxe/yxe-visit-report/page', {params}) + +export const visitReportAuditPageReq = params => get('/yxe/yxe-visit-report/audit/page', {params}) + +export const visitReportInfoReq = id => get(`/yxe/yxe-visit-report/${id}`) + +export const visitReportUserListReq = params => get('/yxe/yxe-visit-report/userList', {params}) + +export const visitReportChangeReq = data => put('/yxe/yxe-visit-report', data) + +// 驳回后重新提交:仅本人、仅已驳回记录可调用,状态由服务端置回待审核 +export const visitReportResubmitReq = data => put('/yxe/yxe-visit-report/resubmit', data) + +export const visitReportDeleteReq = id => del(`/yxe/yxe-visit-report/${id}`) diff --git a/packageUser/self-report/create.vue b/packageUser/self-report/create.vue index 73b3041..b6e6faf 100644 --- a/packageUser/self-report/create.vue +++ b/packageUser/self-report/create.vue @@ -1,6 +1,6 @@