Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
c9c9c92b
提交
c9c9c92b
authored
9月 05, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
style(inspectiontask/*): 修改:门店类型由 vant 改成 element 组件样式下拉效果
上级
a784c35d
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
77 行增加
和
38 行删除
+77
-38
index.vue
...y/sales_point_inspection/examine/inspectionTask/index.vue
+37
-13
categoryInformation.vue
...ction/examine/inspectionTask/tabs/categoryInformation.vue
+16
-15
scheduleDisplay.vue
...nspection/examine/inspectionTask/tabs/scheduleDisplay.vue
+2
-2
newTerminal.vue
...t_activity/sales_point_inspection/examine/newTerminal.vue
+22
-8
没有找到文件。
src/views/mobile/pages/audit_activity/sales_point_inspection/examine/inspectionTask/index.vue
浏览文件 @
c9c9c92b
...
@@ -56,12 +56,28 @@
...
@@ -56,12 +56,28 @@
</van-field>
</van-field>
</div>
</div>
<!-- 门店类型选择 -->
<!-- 门店类型选择 -->
<van-field
:model-value=
"form.selectedType.join('')"
<van-field
label-width=
"150px"
label-position=
"top"
label=
"门店类型:"
:model-value=
"form.selectedType"
placeholder=
"请选择"
>
<
template
#
input
>
<el-select
v-model=
"form.selectedType"
placeholder=
"请选择"
@
change=
"handleTypeConfirm"
>
<el-option
v-for=
"item in typeOptions"
:label=
"item.text"
:value=
"item.value"
/>
</el-select>
</
template
>
</van-field>
<!-- <van-field :model-value="form.selectedType.join('')"
readonly
readonly
label="门店类型"
label="门店类型"
label-align="top"
label-align="top"
placeholder="请选择"
placeholder="请选择"
@
click=
"showTypePopup = true"
/>
@click="showTypePopup = true"
class="store-type" />
<van-popup v-model:show="showTypePopup"
<van-popup v-model:show="showTypePopup"
position="bottom"
position="bottom"
@close="showTypePopup = false">
@close="showTypePopup = false">
...
@@ -69,7 +85,7 @@
...
@@ -69,7 +85,7 @@
:columns="typeOptions"
:columns="typeOptions"
@confirm="handleTypeConfirm"
@confirm="handleTypeConfirm"
@cancel="showTypePopup = false" />
@cancel="showTypePopup = false" />
</van-popup>
</van-popup>
-->
<!-- 信息填写组 -->
<!-- 信息填写组 -->
<van-tabs
v-model:active=
"active"
<van-tabs
v-model:active=
"active"
class=
"tabs"
class=
"tabs"
...
@@ -191,7 +207,7 @@ const form = reactive({ // 当前页信息总对象
...
@@ -191,7 +207,7 @@ const form = reactive({ // 当前页信息总对象
longTimePictureArr
:
[],
// 大日期产品照片
longTimePictureArr
:
[],
// 大日期产品照片
// 前端特有属性和后端接口不一致
// 前端特有属性和后端接口不一致
commitStorePicture
:
[],
// 上报拍摄的门店照片
commitStorePicture
:
[],
// 上报拍摄的门店照片
selectedType
:
[]
,
// 门店类型
selectedType
:
""
,
// 门店类型
})
})
// 稽查任务详情
// 稽查任务详情
...
@@ -201,7 +217,7 @@ const getInspectionTaskDetailFn = async () => {
...
@@ -201,7 +217,7 @@ const getInspectionTaskDetailFn = async () => {
})
})
if
(
res
.
data
)
{
if
(
res
.
data
)
{
Object
.
assign
(
form
,
res
.
data
)
Object
.
assign
(
form
,
res
.
data
)
const
{
storeName
,
lhldArr
,
longTimePictureArr
,
storePicture
,
storeType
,
skuNum
,
cgclRiskRArr
}
=
res
.
data
const
{
storeName
,
lhldArr
,
longTimePictureArr
,
storePicture
,
storeType
,
skuNum
,
cgclRiskRArr
,
dqclRiskRArr
}
=
res
.
data
// 终端门店照片一直应该是路由上的照片参数,如果路由上没有门头照证明上一个页面列表里这个门店就本身没有照片,那就用门头照拍摄的
// 终端门店照片一直应该是路由上的照片参数,如果路由上没有门头照证明上一个页面列表里这个门店就本身没有照片,那就用门头照拍摄的
if
(
route
.
query
.
storePicture
)
form
.
storePicture
=
route
.
query
.
storePicture
if
(
route
.
query
.
storePicture
)
form
.
storePicture
=
route
.
query
.
storePicture
// 详情接口有门头照照片,需要设置到特有的属性commitStorePicture
// 详情接口有门头照照片,需要设置到特有的属性commitStorePicture
...
@@ -211,6 +227,7 @@ const getInspectionTaskDetailFn = async () => {
...
@@ -211,6 +227,7 @@ const getInspectionTaskDetailFn = async () => {
// 详情接口门店名称如果是空的就用路由传递的
// 详情接口门店名称如果是空的就用路由传递的
if
(
!
storeName
)
form
.
storeName
=
route
.
query
.
storeName
if
(
!
storeName
)
form
.
storeName
=
route
.
query
.
storeName
if
(
!
lhldArr
)
form
.
lhldArr
=
[]
if
(
!
lhldArr
)
form
.
lhldArr
=
[]
if
(
!
longTimePictureArr
)
form
.
longTimePictureArr
=
[]
if
(
!
longTimePictureArr
)
form
.
longTimePictureArr
=
[]
else
{
else
{
// 前端特有结构数据格式处理
// 前端特有结构数据格式处理
...
@@ -220,14 +237,15 @@ const getInspectionTaskDetailFn = async () => {
...
@@ -220,14 +237,15 @@ const getInspectionTaskDetailFn = async () => {
}
}
if
(
skuNum
===
0
)
form
.
skuNum
=
''
if
(
skuNum
===
0
)
form
.
skuNum
=
''
if
(
!
cgclRiskRArr
)
form
.
cgclRiskRArr
=
[]
if
(
!
cgclRiskRArr
)
form
.
cgclRiskRArr
=
[]
if
(
route
.
query
.
selectedType
)
form
.
selectedType
=
[
route
.
query
.
selectedType
]
if
(
!
dqclRiskRArr
)
form
.
dqclRiskRArr
=
[]
if
(
route
.
query
.
selectedType
)
form
.
selectedType
=
route
.
query
.
selectedType
// 如果从新建稽查任务页面过来的,门头照路由上传递过来的
// 如果从新建稽查任务页面过来的,门头照路由上传递过来的
if
(
route
.
query
.
taskStatus
&&
route
.
query
.
storePicture
)
form
.
commitStorePicture
=
[{
if
(
route
.
query
.
taskStatus
&&
route
.
query
.
storePicture
)
form
.
commitStorePicture
=
[{
url
:
route
.
query
.
storePicture
url
:
route
.
query
.
storePicture
}]
}]
if
(
storeType
)
form
.
selectedType
=
[
storeType
]
if
(
storeType
)
form
.
selectedType
=
storeType
}
else
{
}
else
{
// 没有的话调用新建接口,得到一个总体稽查任务 id
// 没有的话调用新建接口,得到一个总体稽查任务 id
...
@@ -356,13 +374,11 @@ const deleteCommitStorePhotos = async () => {
...
@@ -356,13 +374,11 @@ const deleteCommitStorePhotos = async () => {
const
typeOptions
=
ref
(
typeOption
)
// 门店类型
const
typeOptions
=
ref
(
typeOption
)
// 门店类型
const
showTypePopup
=
ref
(
false
)
const
showTypePopup
=
ref
(
false
)
// 确认门店类型
// 确认门店类型
const
handleTypeConfirm
=
async
({
selectedValues
})
=>
{
const
handleTypeConfirm
=
async
()
=>
{
form
.
selectedType
=
selectedValues
showTypePopup
.
value
=
false
await
createInspectionTaskAPI
({
await
createInspectionTaskAPI
({
storeCode
:
form
.
storeCode
,
storeCode
:
form
.
storeCode
,
rstId
:
form
.
rstId
,
rstId
:
form
.
rstId
,
storeType
:
selectedValues
.
join
(
','
)
storeType
:
form
.
selectedType
})
})
}
}
...
@@ -403,7 +419,7 @@ const handleRemarkChange = async () => {
...
@@ -403,7 +419,7 @@ const handleRemarkChange = async () => {
// 大日期照片上传
// 大日期照片上传
const
longTimePictureArrRead
=
async
(
file
)
=>
{
const
longTimePictureArrRead
=
async
(
file
)
=>
{
const
date
=
new
Date
()
const
date
=
new
Date
()
const
month
=
date
.
getMonth
()
+
1
const
month
=
date
.
getMonth
()
+
1
const
theDate
=
date
.
getDate
()
const
theDate
=
date
.
getDate
()
const
pictureUrl
=
await
uploadFileToOSSAPI
(
`risk/
${
date
.
getFullYear
()}
-
${
month
}
/longTimePicture/
${
useUserStore
().
empInfo
.
empNo
}
/
${
form
.
storeCode
}
/
${
uuidv4
()}
.png`
,
file
.
file
)
const
pictureUrl
=
await
uploadFileToOSSAPI
(
`risk/
${
date
.
getFullYear
()}
-
${
month
}
/longTimePicture/
${
useUserStore
().
empInfo
.
empNo
}
/
${
form
.
storeCode
}
/
${
uuidv4
()}
.png`
,
file
.
file
)
...
@@ -428,7 +444,6 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
...
@@ -428,7 +444,6 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
showNotify
({
type
:
'success'
,
message
:
'大日期产品照片,删除成功'
})
showNotify
({
type
:
'success'
,
message
:
'大日期产品照片,删除成功'
})
}
}
</
script
>
</
script
>
<
style
scoped
<
style
scoped
...
@@ -447,6 +462,8 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
...
@@ -447,6 +462,8 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
font-weight
:
bold
;
font-weight
:
bold
;
}
}
/* 终端名称信息 */
/* 终端名称信息 */
.terminal-wrap
{
.terminal-wrap
{
margin-top
:
10px
;
margin-top
:
10px
;
...
@@ -490,6 +507,13 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
...
@@ -490,6 +507,13 @@ const deleteLongTimePictureArr = async (file, { name, index }) => {
}
}
.store-type
{
::v-deep
(
input
)
{
border-bottom
:
1px
solid
gray
;
}
}
/* 位置信息 */
/* 位置信息 */
.location-wrap
{
.location-wrap
{
margin-top
:
10px
;
margin-top
:
10px
;
...
...
src/views/mobile/pages/audit_activity/sales_point_inspection/examine/inspectionTask/tabs/categoryInformation.vue
浏览文件 @
c9c9c92b
...
@@ -2,15 +2,14 @@
...
@@ -2,15 +2,14 @@
<div
class=
"mobile-page-container"
>
<div
class=
"mobile-page-container"
>
<!-- 类型选择 -->
<!-- 类型选择 -->
<div
class=
"category-select"
>
<div
class=
"category-select"
>
<van-field
label-width=
"
150px
"
<van-field
label-width=
"
3.8rem
"
label-position=
"left"
label-position=
"left"
label=
"品类选择:"
label=
"品类选择:"
:model-value=
"selectedTypeObj.label"
:model-value=
"selectedTypeObj.label"
placeholder=
"请输入"
>
placeholder=
"请输入"
>
<template
#
input
>
<template
#
input
>
<el-select
v-model=
"selectedTypeObj"
<el-select
v-model=
"selectedTypeObj"
placeholder=
"请选择"
placeholder=
"请选择"
>
filterable
>
<el-option
v-for=
"item in typeOptions"
<el-option
v-for=
"item in typeOptions"
:label=
"item.label"
:label=
"item.label"
:value=
"item"
/>
:value=
"item"
/>
...
@@ -20,7 +19,7 @@
...
@@ -20,7 +19,7 @@
<van-field
v-model=
"selectedTypeObj.price"
<van-field
v-model=
"selectedTypeObj.price"
type=
"number"
type=
"number"
:label=
"selectedTypeObj.label + ' 价格:'"
:label=
"selectedTypeObj.label + ' 价格:'"
label-width=
"
150px
"
label-width=
"
3.8rem
"
placeholder=
"请输入价格"
placeholder=
"请输入价格"
clearable
clearable
class=
"search-input"
class=
"search-input"
...
@@ -310,17 +309,6 @@ const typeOptions = ref([
...
@@ -310,17 +309,6 @@ const typeOptions = ref([
]);
]);
const
selectedTypeObj
=
ref
(
typeOptions
.
value
[
0
])
const
selectedTypeObj
=
ref
(
typeOptions
.
value
[
0
])
// 创建任务
const
createTask
=
async
()
=>
{
const
{
data
}
=
await
createInspectionTaskDetailAPI
({
taskDetail
:
{
rstId
:
props
.
form
.
rstId
,
detailName
:
'品类信息'
}
})
displayGroup
.
value
.
push
(
data
)
}
// 价格改变
// 价格改变
const
handlePriceChange
=
async
()
=>
{
const
handlePriceChange
=
async
()
=>
{
const
res
=
await
createInspectionTaskDetailAPI
({
const
res
=
await
createInspectionTaskDetailAPI
({
...
@@ -368,6 +356,15 @@ const init = () => {
...
@@ -368,6 +356,15 @@ const init = () => {
return
return
}
}
}
}
// 手动创建品类信息,得到 rstdId
createInspectionTaskDetailAPI
({
taskDetail
:
{
rstId
:
props
.
form
.
rstId
,
detailName
:
'品类信息'
}
}).
then
(
res
=>
{
nowRstdId
.
value
=
res
.
data
.
rstdId
})
}
}
defineExpose
({
defineExpose
({
init
init
...
@@ -398,6 +395,10 @@ defineExpose({
...
@@ -398,6 +395,10 @@ defineExpose({
.search-input
{
.search-input
{
margin-top
:
.2667rem
;
margin-top
:
.2667rem
;
::v-deep
(
input
)
{
border-bottom
:
1px
solid
gray
;
}
}
}
}
}
...
...
src/views/mobile/pages/audit_activity/sales_point_inspection/examine/inspectionTask/tabs/scheduleDisplay.vue
浏览文件 @
c9c9c92b
...
@@ -62,7 +62,7 @@
...
@@ -62,7 +62,7 @@
<!-- 总体判定 -->
<!-- 总体判定 -->
<div
class=
"overall"
>
<div
class=
"overall"
>
<p
class=
"title"
>
档期陈列总体判定结果:
</p>
<p
class=
"title"
>
档期陈列总体判定结果:
</p>
<van-checkbox-group
v-model=
"form.
cg
clRiskRArr"
<van-checkbox-group
v-model=
"form.
dq
clRiskRArr"
direction=
"horizontal"
direction=
"horizontal"
shape=
"square"
shape=
"square"
@
change=
"handleOverallChange"
>
@
change=
"handleOverallChange"
>
...
@@ -232,7 +232,7 @@ const handleOverallChange = async () => {
...
@@ -232,7 +232,7 @@ const handleOverallChange = async () => {
if
(
props
.
isInitializing
)
return
if
(
props
.
isInitializing
)
return
await
createInspectionTaskAPI
({
await
createInspectionTaskAPI
({
rstId
:
props
.
form
.
rstId
,
rstId
:
props
.
form
.
rstId
,
cgclRiskRArr
:
props
.
form
.
cg
clRiskRArr
dqclRiskRArr
:
props
.
form
.
dq
clRiskRArr
})
})
showNotify
({
type
:
'success'
,
message
:
'核查结果,保存成功'
})
showNotify
({
type
:
'success'
,
message
:
'核查结果,保存成功'
})
}
}
...
...
src/views/mobile/pages/audit_activity/sales_point_inspection/examine/newTerminal.vue
浏览文件 @
c9c9c92b
...
@@ -32,7 +32,21 @@
...
@@ -32,7 +32,21 @@
</van-field>
</van-field>
</div>
</div>
<!-- 门店类型选择 -->
<!-- 门店类型选择 -->
<van-field
:model-value=
"form.selectedType.join('')"
<van-field
label-width=
"150px"
label-position=
"top"
label=
"门店类型:"
:model-value=
"form.selectedType"
placeholder=
"请选择"
>
<
template
#
input
>
<el-select
v-model=
"form.selectedType"
placeholder=
"请选择"
>
<el-option
v-for=
"item in typeOptions"
:label=
"item.text"
:value=
"item.value"
/>
</el-select>
</
template
>
</van-field>
<!-- <van-field :model-value="form.selectedType.join('')"
readonly
readonly
label="门店类型"
label="门店类型"
label-align="top"
label-align="top"
...
@@ -46,7 +60,7 @@
...
@@ -46,7 +60,7 @@
:columns="typeOptions"
:columns="typeOptions"
@confirm="handleTypeConfirm"
@confirm="handleTypeConfirm"
@cancel="showTypePopup = false" />
@cancel="showTypePopup = false" />
</van-popup>
</van-popup>
-->
</van-form>
</van-form>
</div>
</div>
</div>
</div>
...
@@ -74,7 +88,7 @@ const router = useRouter();
...
@@ -74,7 +88,7 @@ const router = useRouter();
const
form
=
reactive
({
const
form
=
reactive
({
storeName
:
''
,
storeName
:
''
,
storePicture
:
[],
storePicture
:
[],
selectedType
:
[]
selectedType
:
''
})
})
const
typeOptions
=
ref
(
typeOption
);
// 门店类型
const
typeOptions
=
ref
(
typeOption
);
// 门店类型
const
showTypePopup
=
ref
(
false
);
const
showTypePopup
=
ref
(
false
);
...
@@ -97,10 +111,10 @@ const deletePosPhotos = async () => {
...
@@ -97,10 +111,10 @@ const deletePosPhotos = async () => {
}
}
// 确认门店类型
// 确认门店类型
const
handleTypeConfirm
=
({
selectedValues
})
=>
{
//
const handleTypeConfirm = ({ selectedValues }) => {
form
.
selectedType
=
selectedValues
;
//
form.selectedType = selectedValues;
showTypePopup
.
value
=
false
;
//
showTypePopup.value = false;
};
//
};
// 创建任务(跳转路由传参即可)
// 创建任务(跳转路由传参即可)
const
myFormRef
=
ref
(
null
)
const
myFormRef
=
ref
(
null
)
...
@@ -115,7 +129,7 @@ const handleCreateTask = () => {
...
@@ -115,7 +129,7 @@ const handleCreateTask = () => {
storeName
:
form
.
storeName
,
storeName
:
form
.
storeName
,
storeCode
:
null
,
storeCode
:
null
,
storePicture
:
form
.
storePicture
[
0
]?.
url
,
storePicture
:
form
.
storePicture
[
0
]?.
url
,
selectedType
:
form
.
selectedType
[
0
]
selectedType
:
form
.
selectedType
}
}
})
})
})
})
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论