Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
e8b4b3c8
提交
e8b4b3c8
authored
11月 11, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
差异文件
合并冲突
上级
2e55dbb9
b0558a07
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
145 行增加
和
39 行删除
+145
-39
App.vue
src/App.vue
+1
-1
index.vue
...y/sales_point_inspection/examine/inspectionTask/index.vue
+104
-23
newTerminal.vue
...t_activity/sales_point_inspection/examine/newTerminal.vue
+0
-1
taskList.vue
...udit_activity/sales_point_inspection/examine/taskList.vue
+40
-14
没有找到文件。
src/App.vue
浏览文件 @
e8b4b3c8
...
...
@@ -52,6 +52,6 @@ onMounted(() => {
<
style
scoped
lang=
"scss"
>
.wm-class
{
height
:
100%
;
min-
height
:
100%
;
}
</
style
>
src/views/mobile/pages/audit_activity/sales_point_inspection/examine/inspectionTask/index.vue
浏览文件 @
e8b4b3c8
...
...
@@ -3,6 +3,7 @@
<div
class=
"wrap"
>
<van-nav-bar
left-arrow
left-text=
"返回"
fixed
@
click-left=
"router.back()"
>
</van-nav-bar>
<div
class=
"content"
>
...
...
@@ -42,7 +43,8 @@
<p
v-else
>
{{
addressStr
}}
</p>
<van-icon
name=
"replay"
class=
"refresh-icon"
@
click=
"handleClickLocation"
/>
@
click=
"handleClickLocation"
v-if=
"!isEdit"
/>
</div>
<!-- 门头照上传 -->
...
...
@@ -52,7 +54,6 @@
<template
#
input
>
<van-uploader
:max-count=
"1"
accept=
"image/*"
capture=
"camera"
:model-value=
"form.commitStorePicture"
:after-read=
"commitStorePhotosRead"
preview-size=
"2.13333rem"
...
...
@@ -79,21 +80,7 @@
</el-select>
</
template
>
</van-field>
<!-- <van-field :model-value="form.selectedType.join('')"
readonly
label="渠道类型"
label-align="top"
placeholder="请选择"
@click="showTypePopup = true"
class="store-type" />
<van-popup v-model:show="showTypePopup"
position="bottom"
@close="showTypePopup = false">
<van-picker v-model="form.selectedType"
:columns="typeOptions"
@confirm="handleTypeConfirm"
@cancel="showTypePopup = false" />
</van-popup> -->
<!-- 信息填写组 -->
<van-tabs
v-model:active=
"active"
class=
"tabs"
...
...
@@ -121,6 +108,47 @@
ref=
"categoryInformationRef"
/>
</van-tab>
</van-tabs>
<!-- 竞品填写组 -->
<div
class=
"comper-summary"
>
<p
class=
"title"
>
竞品信息:
</p>
<van-field
v-model
.
number=
"form.competitorWangjiafuSkuTotal"
label=
"旺家福SKU总数:"
type=
"number"
placeholder=
"请输入"
label-align=
"left"
@
change=
"handleComPePrdChange"
/>
<van-field
v-model
.
number=
"form.competitorWangjiafuFacingTotal"
label=
"旺家福排面总数:"
type=
"number"
placeholder=
"请输入"
label-align=
"left"
@
change=
"handleComPePrdChange"
/>
<van-field
v-model
.
number=
"form.competitorQianjiaxiangSkuTotal"
label=
"钱家香SKU总数:"
type=
"number"
placeholder=
"请输入"
label-align=
"left"
@
change=
"handleComPePrdChange"
/>
<van-field
v-model
.
number=
"form.competitorQianjiaxiangFacingTotal"
label=
"钱家香排面总数:"
type=
"number"
placeholder=
"请输入"
label-align=
"left"
@
change=
"handleComPePrdChange"
/>
<van-field
v-model
.
number=
"form.competitorJinchuniangSkuTotal"
label=
"金厨娘SKU总数:"
type=
"number"
placeholder=
"请输入"
label-align=
"left"
@
change=
"handleComPePrdChange"
/>
<van-field
v-model
.
number=
"form.competitorJinchuniangFacingTotal"
label=
"金厨娘排面总数:"
type=
"number"
placeholder=
"请输入"
label-align=
"left"
@
change=
"handleComPePrdChange"
/>
</div>
<!-- 任务总结 -->
<div
class=
"task-summary"
>
<p
class=
"title"
>
其他:
</p>
...
...
@@ -202,6 +230,7 @@ const categoryInformationRef = ref(null)
/*************** 稽查任务总体 ***************/
const
isInitializing
=
ref
(
true
)
const
isEdit
=
ref
(
Boolean
(
route
.
query
.
rstId
))
const
form
=
reactive
({
// 当前页信息总对象
rstId
:
route
.
query
.
rstId
,
// 稽查任务 ID(获取详情接口有则保存,没有则主动新建一次并获取 id)
storePicture
:
route
.
query
.
storePicture
,
// 门店照片(原始门店照片,来自于上一页的接口)
...
...
@@ -228,7 +257,7 @@ const getInspectionTaskDetailFn = async () => {
})
if
(
res
.
data
)
{
Object
.
assign
(
form
,
res
.
data
)
const
{
storeName
,
lhldArr
,
longTimePictureArr
,
storePicture
,
storeType
,
skuNum
,
cgclRiskRArr
,
dqclRiskRArr
,
dealerName
,
storeAddr
}
=
res
.
data
const
{
storeName
,
lhldArr
,
longTimePictureArr
,
storePicture
,
storeType
,
skuNum
,
cgclRiskRArr
,
dqclRiskRArr
,
dealerName
,
storeAddr
,
address
}
=
res
.
data
// 终端门店照片一直应该是路由上的照片参数,如果路由上没有门头照证明上一个页面列表里这个门店就本身没有照片,那就用门头照拍摄的
if
(
route
.
query
.
storePicture
)
form
.
storePicture
=
route
.
query
.
storePicture
// 详情接口有门头照照片,需要设置到特有的属性commitStorePicture
...
...
@@ -261,6 +290,12 @@ const getInspectionTaskDetailFn = async () => {
if
(
storeType
)
form
.
selectedType
=
storeType
// 保存地址
if
(
address
)
{
addressLoading
.
value
=
false
addressStr
.
value
=
address
}
}
else
{
// 没有的话调用新建接口,得到一个总体稽查任务 id
const
res
=
await
createInspectionTaskAPI
({
...
...
@@ -270,22 +305,23 @@ const getInspectionTaskDetailFn = async () => {
dealerCode
:
form
.
dealerCode
})
form
.
rstId
=
res
.
data
.
rstId
// 一定在这里获取地理位置(保证稽查任务 id 创建完毕)
getLocationFn
()
}
nextTick
(()
=>
{
isInitializing
.
value
=
false
// 初始化 4 个分组
conventionRef
.
value
.
init
()
scheduleDisplayRef
.
value
.
init
()
scheduleAdjustmentRef
.
value
.
init
()
categoryInformationRef
.
value
.
init
()
})
// 一定在这里获取地理位置(保证稽查任务 id 创建完毕)
getLocationFn
()
}
getInspectionTaskDetailFn
()
// 门店图片预览
const
previewStoreImage
=
()
=>
{
showImagePreview
({
...
...
@@ -398,7 +434,6 @@ const deleteCommitStorePhotos = async () => {
showNotify
({
type
:
'success'
,
message
:
'门头照,删除成功'
})
}
/*************** 渠道类型 ***************/
const
typeOptions
=
ref
(
typeOption
)
// 渠道类型
const
showTypePopup
=
ref
(
false
)
...
...
@@ -416,6 +451,23 @@ const handleTypeConfirm = async () => {
/*************** tabs 组 ***************/
const
active
=
ref
(
0
)
/*************** 竞品组 ***************/
const
handleComPePrdChange
=
async
()
=>
{
await
createInspectionTaskAPI
({
storeCode
:
form
.
storeCode
,
storeName
:
form
.
storeName
,
rstId
:
form
.
rstId
,
// 判断空字符串传 null
"competitorWangjiafuSkuTotal"
:
form
.
competitorWangjiafuSkuTotal
||
null
,
"competitorWangjiafuFacingTotal"
:
form
.
competitorWangjiafuFacingTotal
||
null
,
"competitorQianjiaxiangSkuTotal"
:
form
.
competitorQianjiaxiangSkuTotal
||
null
,
"competitorQianjiaxiangFacingTotal"
:
form
.
competitorQianjiaxiangFacingTotal
||
null
,
"competitorJinchuniangSkuTotal"
:
form
.
competitorJinchuniangSkuTotal
||
null
,
"competitorJinchuniangFacingTotal"
:
form
.
competitorJinchuniangFacingTotal
||
null
,
})
showNotify
({
type
:
'success'
,
message
:
'竞品信息,修改成功'
})
}
/*************** 其他信息填写 ***************/
// 礼盒礼袋在售
const
handleLhldArrChange
=
async
()
=>
{
...
...
@@ -495,8 +547,13 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
min-height
:
100vh
;
font-size
:
16px
;
.van-nav-bar
{
z-index
:
1000
;
}
.content
{
padding
:
20px
;
padding-top
:
66px
;
.title
{
margin
:
0
;
...
...
@@ -573,6 +630,7 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
/* 位置信息 */
.location-wrap
{
width
:
100%
;
margin-top
:
10px
;
padding
:
10px
;
background-color
:
#fff
;
...
...
@@ -580,7 +638,8 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
box-shadow
:
0
0
10px
rgba
(
0
,
0
,
0
,
0
.1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
/* justify-content: space-between; */
gap
:
20px
;
.location-icon
{
font-size
:
20px
;
...
...
@@ -591,6 +650,10 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
font-size
:
14px
;
margin
:
0
;
}
.refresh-icon
{
margin-left
:
auto
;
}
}
/* 门头照 */
...
...
@@ -627,6 +690,24 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
margin-top
:
10px
;
}
/* 竞品信息组 */
.comper-summary
{
margin-top
:
10px
;
background
:
white
;
padding
:
10px
;
color
:
var
(
--
main-color
);
--van-field-label-width
:
120px
!
important
;
.title
{
margin-bottom
:
10px
;
}
.van-cell
{
padding
:
0
;
margin-bottom
:
20px
;
}
}
/* 其他 */
.task-summary
{
...
...
src/views/mobile/pages/audit_activity/sales_point_inspection/examine/newTerminal.vue
浏览文件 @
e8b4b3c8
...
...
@@ -22,7 +22,6 @@
<template
#
input
>
<van-uploader
:max-count=
"1"
accept=
"image/*"
capture=
"camera"
:model-value=
"form.storePicture"
:after-read=
"posPhotosRead"
preview-size=
"2.13333rem"
...
...
src/views/mobile/pages/audit_activity/sales_point_inspection/examine/taskList.vue
浏览文件 @
e8b4b3c8
...
...
@@ -59,44 +59,61 @@
<
/template
>
<
/van-field
>
<!--
日期区间
-->
<
van
-
field
type
=
"text"
>
<
template
#
input
>
<
el
-
date
-
picker
v
-
model
=
"query.operDate"
type
=
"date"
value
-
format
=
"YYYY-MM-DD"
placeholder
=
"输入搜索的日期"
@
change
=
"search"
/>
<
/template
>
<
/van-field
>
<
van
-
field
type
=
"text"
:
model
-
value
=
"query.operDate.map(item => parseTime(item, '{y
}
-{m
}
-{d
}
')).join(' - ')"
label
=
"日期范围:"
readonly
placeholder
=
"请选择日期范围"
@
click
=
"showCalendar = true"
/>
<!--
重置按钮
-->
<
van
-
button
icon
=
"replay"
class
=
"reset-btn"
block
@
click
=
"resetFn"
>
重置
<
/van-button
>
<
/van-popup
>
<!--
搜索日期范围组件
-->
<
van
-
calendar
v
-
model
:
show
=
"showCalendar"
:
min
-
date
=
"minDate"
:
max
-
date
=
"maxDate"
:
default
-
date
=
"query.operDate"
allow
-
same
-
day
type
=
"range"
@
confirm
=
"handleConfirm"
/>
<
/div
>
<
/template
>
<
script
setup
>
import
{
getInspectionTaskListAPI
}
from
'@/api'
import
{
getInspectionTaskListAPI
}
from
'@/api'
import
{
parseTime
}
from
'@/utils'
const
router
=
useRouter
();
// 搜索
const
showSearch
=
ref
(
false
)
const
showSearch
=
ref
(
false
)
// 搜索抽屉
const
showCalendar
=
ref
(
false
)
// 日期选择器
// 当年 1 月 1 日
const
minDate
=
new
Date
(
new
Date
().
getFullYear
(),
0
,
1
)
// 当月最后一天
const
maxDate
=
new
Date
(
new
Date
().
getFullYear
(),
new
Date
().
getMonth
(),
new
Date
().
getDate
())
// 获取列表
const
query
=
reactive
({
pageNum
:
1
,
pageSize
:
10
pageSize
:
10
,
// 当月 1 号到当前日期
operDate
:
[
new
Date
(
new
Date
().
getFullYear
(),
new
Date
().
getMonth
(),
1
),
maxDate
]
}
)
const
resultList
=
ref
([])
const
loading
=
ref
(
false
);
const
finished
=
ref
(
true
);
const
refreshLoading
=
ref
(
false
)
const
getInspectionTaskListFn
=
async
()
=>
{
const
res
=
await
getInspectionTaskListAPI
(
query
)
const
res
=
await
getInspectionTaskListAPI
({
...
query
,
operDateStart
:
parseTime
(
query
.
operDate
[
0
],
'{y
}
-{m
}
-{d
}
'
),
operDateEnd
:
parseTime
(
query
.
operDate
[
1
],
'{y
}
-{m
}
-{d
}
'
),
}
)
resultList
.
value
=
[...
resultList
.
value
,
...
res
.
data
.
rows
]
finished
.
value
=
res
.
data
.
total
<=
resultList
.
value
.
length
}
...
...
@@ -122,7 +139,7 @@ const onLoadMore = async () => {
const
resetFn
=
()
=>
{
query
.
pageNum
=
1
query
.
storeName
=
''
query
.
operDate
=
''
query
.
operDate
=
[
new
Date
(
new
Date
().
getFullYear
(),
new
Date
().
getMonth
(),
1
),
maxDate
]
resultList
.
value
=
[]
getInspectionTaskListFn
()
}
...
...
@@ -168,6 +185,15 @@ const deleteFn = async (item, index) => {
//
}
)
}
// 日期范围确认
const
handleConfirm
=
(
dates
)
=>
{
if
(
dates
.
length
===
2
)
{
query
.
operDate
=
dates
showCalendar
.
value
=
false
search
()
}
}
<
/script
>
<
style
scoped
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论