Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
4847502e
提交
4847502e
authored
12月 19, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'ap'
上级
6bf26d6d
591b2a9a
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
253 行增加
和
197 行删除
+253
-197
index.vue
...pages/storeExecution/dashboard/components/Table/index.vue
+57
-11
data.jsx
...views/mobile/pages/storeExecution/dashboard/tabs/data.jsx
+4
-101
display.vue
...ws/mobile/pages/storeExecution/dashboard/tabs/display.vue
+22
-9
schedule.vue
...s/mobile/pages/storeExecution/dashboard/tabs/schedule.vue
+23
-9
schedule_dis.vue
...bile/pages/storeExecution/dashboard/tabs/schedule_dis.vue
+25
-10
six_little_diamonds.vue
...ges/storeExecution/dashboard/tabs/six_little_diamonds.vue
+24
-9
snack.vue
...iews/mobile/pages/storeExecution/dashboard/tabs/snack.vue
+23
-9
three_two_seconds.vue
...pages/storeExecution/dashboard/tabs/three_two_seconds.vue
+23
-9
index.vue
...romotion/display_schedule/components/SearchList/index.vue
+0
-2
index.vue
...ews/promotion/display_schedule/components/Table/index.vue
+37
-13
data.jsx
src/views/promotion/display_schedule/tabs/data.jsx
+8
-7
display.vue
src/views/promotion/display_schedule/tabs/display.vue
+0
-1
schedule.vue
src/views/promotion/display_schedule/tabs/schedule.vue
+0
-1
schedule_dis.vue
src/views/promotion/display_schedule/tabs/schedule_dis.vue
+0
-1
six_little_diamonds.vue
...s/promotion/display_schedule/tabs/six_little_diamonds.vue
+0
-1
snack.vue
src/views/promotion/display_schedule/tabs/snack.vue
+0
-1
three_two_seconds.vue
...ews/promotion/display_schedule/tabs/three_two_seconds.vue
+0
-1
index.vue
...ion/display_schedule_dashboard/components/Table/index.vue
+7
-2
没有找到文件。
src/views/mobile/pages/storeExecution/dashboard/components/Table/index.vue
浏览文件 @
4847502e
...
...
@@ -3,12 +3,15 @@
<!-- 操作类型 -->
<el-row>
<el-form-item>
<el-radio-group
v-model=
"operation"
@
change=
"handleChange"
>
<el-radio-group
v-model=
"operation"
@
change=
"handleChange"
>
<el-radio-button
label=
"大区战区-分析"
value=
"大区战区-分析"
v-hasPermi=
"['promotion:dashboard:list-show']"
/>
<el-radio-button
label=
"城市经理-分析"
value=
"城市经理-分析"
/>
<el-radio-button
label=
"经销商-分析"
value=
"经销商-分析"
/>
</el-radio-group>
</el-form-item>
</el-row>
...
...
@@ -37,7 +40,8 @@
:label=
"col.label"
:prop=
"col.prop"
align=
"center"
:width=
"col.width"
>
:width=
"col.width"
:fixed=
"col.fixed"
>
</el-table-column>
</
template
>
</el-table>
...
...
@@ -45,6 +49,7 @@
</template>
<
script
setup
>
import
userStore
from
'@/store/modules/user'
const
props
=
defineProps
({
tableData
:
{
// 数据源
...
...
@@ -66,7 +71,11 @@ const props = defineProps({
formatter
:
{
// 格式化函数
type
:
Function
,
default
:
(
row
,
col
,
cellValue
)
=>
cellValue
}
},
queryParams
:
{
// 查询参数
type
:
Object
,
default
:
()
=>
({})
},
})
const
emit
=
defineEmits
([
'getTableList'
])
...
...
@@ -98,25 +107,62 @@ onMounted(() => {
// 初始化列选择的函数
const
initColumns
=
()
=>
{
if
(
operation
.
value
===
'大区战区-分析'
)
{
chooseColumns
.
value
=
props
.
baseColumns
.
filter
(
item
=>
item
.
prop
!==
'cityManager'
)
chooseColumns
.
value
=
[{
label
:
"大区"
,
prop
:
"regionName"
,
width
:
100
,
childCol
:
[],
fixed
:
'left'
},
{
label
:
"战区"
,
prop
:
"districtName"
,
childCol
:
[],
}].
concat
(
props
.
baseColumns
)
}
else
if
(
operation
.
value
===
'经销商-分析'
)
{
chooseColumns
.
value
=
[{
label
:
'经销商'
,
prop
:
"dealerName"
,
childCol
:
[],
width
:
120
,
fixed
:
'left'
},
{
label
:
'经销商编码'
,
prop
:
"dealerCode"
,
childCol
:
[],
}].
concat
(
props
.
baseColumns
)
}
else
{
chooseColumns
.
value
=
props
.
baseColumns
chooseColumns
.
value
=
[{
label
:
"大区"
,
prop
:
"regionName"
,
childCol
:
[],
fixed
:
'left'
},
{
label
:
"战区"
,
prop
:
"districtName"
,
childCol
:
[],
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
childCol
:
[],
}].
concat
(
props
.
baseColumns
)
}
}
watch
(
operation
,
(
newVal
)
=>
{
watch
(
operation
,
()
=>
{
// 如果是大区战区-分析,则隐藏城市经理列
if
(
newVal
===
'大区战区-分析'
)
{
chooseColumns
.
value
=
props
.
baseColumns
.
filter
(
item
=>
item
.
prop
!==
'cityManager'
)
}
else
{
chooseColumns
.
value
=
props
.
baseColumns
}
initColumns
()
},
{
immediate
:
true
})
// 切换操作类型时触发的函数
const
handleChange
=
(
newVal
)
=>
{
console
.
log
(
'table'
,
newVal
)
props
.
queryParams
.
operation
=
newVal
emit
(
'getTableList'
,
newVal
)
}
...
...
src/views/mobile/pages/storeExecution/dashboard/tabs/data.jsx
浏览文件 @
4847502e
...
...
@@ -9,22 +9,6 @@ export const getDisplayConfig = () => {
// width: 100,
// childCol: []
// },
{
label
:
"大区"
,
prop
:
"regionName"
,
childCol
:
[]
},
{
label
:
"战区"
,
prop
:
"districtName"
,
childCol
:
[],
width
:
110
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
childCol
:
[]
},
{
label
:
'主货架'
,
prop
:
"mainShelf"
,
...
...
@@ -40,7 +24,6 @@ export const getDisplayConfig = () => {
{
label
:
'执行率'
,
prop
:
"msExecRate"
,
width
:
90
}
]
},
...
...
@@ -59,7 +42,6 @@ export const getDisplayConfig = () => {
{
label
:
'执行率'
,
prop
:
"endcapExecRate"
,
width
:
90
}
]
},
...
...
@@ -78,7 +60,6 @@ export const getDisplayConfig = () => {
{
label
:
'执行率'
,
prop
:
"gsExecRate"
,
width
:
90
}
]
},
...
...
@@ -97,7 +78,6 @@ export const getDisplayConfig = () => {
{
label
:
'执行率'
,
prop
:
"mpDispExecRate"
,
width
:
90
}
]
},
...
...
@@ -116,7 +96,6 @@ export const getDisplayConfig = () => {
{
label
:
'执行率'
,
prop
:
"HsExecRate"
,
width
:
90
}
]
}
...
...
@@ -131,21 +110,6 @@ export const getSchedulePlanConfig = (submitChange) => {
// prop: "salesMonth",
// width: 100
// },
{
label
:
"大区"
,
prop
:
"regionName"
,
width
:
100
},
{
label
:
"战区"
,
prop
:
"districtName"
,
width
:
100
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
width
:
100
},
{
label
:
'大区反馈'
,
prop
:
"regionFeedback"
,
...
...
@@ -161,7 +125,6 @@ export const getSchedulePlanConfig = (submitChange) => {
{
label
:
'执行率'
,
prop
:
"launchRatePromoPeriExec"
,
width
:
90
}
]
},
...
...
@@ -176,7 +139,6 @@ export const getSchedulePlanConfig = (submitChange) => {
{
label
:
'执行率'
,
prop
:
"psExecRatePromoPeriExec"
,
width
:
90
}
]
},
...
...
@@ -191,7 +153,6 @@ export const getSchedulePlanConfig = (submitChange) => {
{
label
:
'执行率'
,
prop
:
"pfExecRatePromoPeriExec"
,
width
:
90
}
]
},
...
...
@@ -206,7 +167,6 @@ export const getSchedulePlanConfig = (submitChange) => {
{
label
:
'执行率'
,
prop
:
"ppExecRatePromoPeriExec"
,
width
:
90
}
]
},
...
...
@@ -225,7 +185,6 @@ export const getSchedulePlanConfig = (submitChange) => {
{
label
:
'执行率'
,
prop
:
"posterExecRate"
,
width
:
90
}
]
},
...
...
@@ -240,21 +199,7 @@ export const getScheduleDisConfig = (submitChange) => {
// prop: "salesMonth",
// width: 100
// },
{
label
:
"大区"
,
prop
:
"regionName"
,
width
:
100
},
{
label
:
"战区"
,
prop
:
"districtName"
,
width
:
100
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
width
:
100
},
{
label
:
'端架'
,
prop
:
"endShelf"
,
...
...
@@ -320,21 +265,7 @@ export const getSnackCofing = (submitChange) => {
// prop: "salesMonth",
// width: 100
// },
{
label
:
"大区"
,
prop
:
"regionName"
,
width
:
100
},
{
label
:
"战区"
,
prop
:
"districtName"
,
width
:
100
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
width
:
100
},
{
label
:
'计划'
,
prop
:
"planSnackStoreCnt"
,
...
...
@@ -358,21 +289,7 @@ export const getThreeTwoSecondsConfig = (submitChange) => {
// prop: "salesMonth",
// width: 100
// },
{
label
:
"大区"
,
prop
:
"regionName"
,
width
:
100
},
{
label
:
"战区"
,
prop
:
"districtName"
,
width
:
100
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
width
:
100
},
{
label
:
'计划'
,
prop
:
"planSLStoreCnt"
,
...
...
@@ -396,21 +313,7 @@ export const getSixLittleDiamondsConfig = (submitChange) => {
// prop: "salesMonth",
// width: 100
// },
{
label
:
"大区"
,
prop
:
"regionName"
,
width
:
100
},
{
label
:
"战区"
,
prop
:
"districtName"
,
width
:
100
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
width
:
100
},
{
label
:
'计划'
,
prop
:
"planSixJdStoreCnt"
,
...
...
src/views/mobile/pages/storeExecution/dashboard/tabs/display.vue
浏览文件 @
4847502e
...
...
@@ -14,6 +14,7 @@
<CustomTable
:tableData=
"tableData"
:baseColumns=
"baseColumns"
:isLoading=
"isLoading"
:queryParams=
"queryParams"
@
getTableList=
"getTableList"
@
updateShowSearch=
"v => showSearch.value = v"
/>
</
template
>
...
...
@@ -21,7 +22,7 @@
<
script
setup
lang=
"jsx"
>
import
CustomTable
from
'../components/Table'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
}
from
'@/api'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
,
getDisplayScheduleDashboardListStore
}
from
'@/api'
import
{
getDisplayConfig
}
from
'./data.jsx'
import
{
parseTime
}
from
'@/utils'
...
...
@@ -35,32 +36,44 @@
// 表格数据
const
queryParams
=
reactive
({
salesMonth
:
new
Date
(),
operation
:
''
})
const
tableData
=
ref
([])
const
isLoading
=
ref
(
true
)
const
total
=
ref
(
0
)
// 筛选列表数据
const
getTableList
=
async
(
operation
)
=>
{
const
apiObj
=
{
'大区战区-分析'
:
getDisplayScheduleDashboardList
,
'城市经理-分析'
:
getDisplayScheduleDashboardListArea
,
'经销商-分析'
:
getDisplayScheduleDashboardListStore
,
}
const
getTableList
=
async
()
=>
{
isLoading
.
value
=
true
const
res
=
await
(
operation
===
'大区战区-分析'
?
getDisplayScheduleDashboardList
:
getDisplayScheduleDashboardListArea
)
({
const
res
=
await
apiObj
[
queryParams
.
operation
]
({
...
queryParams
,
salesMonth
:
parseTime
(
queryParams
.
salesMonth
,
'{y}-{m}'
)
})
if
(
operation
===
'大区战区-分析'
)
{
if
(
queryParams
.
operation
===
'大区战区-分析'
)
{
// 合并战区大区结构为扁平化
const
{
zq
,
dq
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
]
const
{
zq
,
dq
,
hz
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
,
...
hz
]
}
else
if
(
queryParams
.
operation
===
'经销商-分析'
)
{
// 合并经销商结构为扁平化
const
{
dist
,
hz
}
=
res
.
data
tableData
.
value
=
[...
dist
,
...
hz
]
}
else
{
// 合并城市经理结构为扁平化
tableData
.
value
=
res
.
data
}
isLoading
.
value
=
false
}
const
{
proxy
}
=
getCurrentInstance
()
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
getTableList
(
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
)
onMounted
(()
=>
{
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
queryParams
.
operation
=
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
getTableList
()
})
</
script
>
<
style
lang=
"scss"
>
...
...
src/views/mobile/pages/storeExecution/dashboard/tabs/schedule.vue
浏览文件 @
4847502e
...
...
@@ -15,6 +15,7 @@
<CustomTable
:tableData=
"tableData"
:baseColumns=
"baseColumns"
:isLoading=
"isLoading"
:queryParams=
"queryParams"
@
getTableList=
"getTableList"
@
updateShowSearch=
"v => showSearch.value = v"
/>
</
template
>
...
...
@@ -22,7 +23,7 @@
<
script
setup
lang=
"jsx"
>
import
CustomTable
from
'../components/Table'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
}
from
'@/api'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
,
getDisplayScheduleDashboardListStore
}
from
'@/api'
import
{
parseTime
}
from
'@/utils'
import
{
getSchedulePlanConfig
}
from
'./data.jsx'
...
...
@@ -68,29 +69,42 @@
// 表格数据
const
queryParams
=
reactive
({
salesMonth
:
new
Date
(),
operation
:
''
})
const
tableData
=
ref
([])
const
isLoading
=
ref
(
true
)
const
total
=
ref
(
0
)
// 筛选列表数据
const
getTableList
=
async
(
operation
)
=>
{
const
apiObj
=
{
'大区战区-分析'
:
getDisplayScheduleDashboardList
,
'城市经理-分析'
:
getDisplayScheduleDashboardListArea
,
'经销商-分析'
:
getDisplayScheduleDashboardListStore
,
}
const
getTableList
=
async
()
=>
{
isLoading
.
value
=
true
const
res
=
await
(
operation
===
'大区战区-分析'
?
getDisplayScheduleDashboardList
:
getDisplayScheduleDashboardListArea
)
({
const
res
=
await
apiObj
[
queryParams
.
operation
]
({
...
queryParams
,
salesMonth
:
parseTime
(
queryParams
.
salesMonth
,
'{y}-{m}'
)
})
if
(
operation
===
'大区战区-分析'
)
{
if
(
queryParams
.
operation
===
'大区战区-分析'
)
{
// 合并战区大区结构为扁平化
const
{
zq
,
dq
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
]
const
{
zq
,
dq
,
hz
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
,
...
hz
]
}
else
if
(
queryParams
.
operation
===
'经销商-分析'
)
{
// 合并经销商结构为扁平化
const
{
dist
,
hz
}
=
res
.
data
tableData
.
value
=
[...
dist
,
...
hz
]
}
else
{
// 合并城市经理结构为扁平化
tableData
.
value
=
res
.
data
}
isLoading
.
value
=
false
}
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
getTableList
(
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
)
onMounted
(()
=>
{
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
queryParams
.
operation
=
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
getTableList
()
})
</
script
>
src/views/mobile/pages/storeExecution/dashboard/tabs/schedule_dis.vue
浏览文件 @
4847502e
...
...
@@ -14,6 +14,7 @@
<CustomTable
:tableData=
"tableData"
:baseColumns=
"baseColumns"
:isLoading=
"isLoading"
:queryParams=
"queryParams"
@
getTableList=
"getTableList"
@
updateShowSearch=
"v => showSearch.value = v"
/>
</
template
>
...
...
@@ -21,7 +22,7 @@
<
script
setup
lang=
"jsx"
>
import
CustomTable
from
'../components/Table'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
}
from
'@/api'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
,
getDisplayScheduleDashboardListStore
}
from
'@/api'
import
{
parseTime
}
from
'@/utils'
import
{
getScheduleDisConfig
}
from
'./data'
...
...
@@ -61,33 +62,46 @@
// 全部列
const
baseColumns
=
ref
(
getScheduleDisConfig
(
submitChange
));
// 表格数据
const
queryParams
=
reactive
({
salesMonth
:
new
Date
(),
operation
:
''
})
const
tableData
=
ref
([])
const
isLoading
=
ref
(
true
)
const
total
=
ref
(
0
)
// 筛选列表数据
const
getTableList
=
async
(
operation
)
=>
{
const
apiObj
=
{
'大区战区-分析'
:
getDisplayScheduleDashboardList
,
'城市经理-分析'
:
getDisplayScheduleDashboardListArea
,
'经销商-分析'
:
getDisplayScheduleDashboardListStore
,
}
const
getTableList
=
async
()
=>
{
isLoading
.
value
=
true
const
res
=
await
(
operation
===
'大区战区-分析'
?
getDisplayScheduleDashboardList
:
getDisplayScheduleDashboardListArea
)
({
const
res
=
await
apiObj
[
queryParams
.
operation
]
({
...
queryParams
,
salesMonth
:
parseTime
(
queryParams
.
salesMonth
,
'{y}-{m}'
)
})
if
(
operation
===
'大区战区-分析'
)
{
if
(
queryParams
.
operation
===
'大区战区-分析'
)
{
// 合并战区大区结构为扁平化
const
{
zq
,
dq
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
]
const
{
zq
,
dq
,
hz
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
,
...
hz
]
}
else
if
(
queryParams
.
operation
===
'经销商-分析'
)
{
// 合并经销商结构为扁平化
const
{
dist
,
hz
}
=
res
.
data
tableData
.
value
=
[...
dist
,
...
hz
]
}
else
{
// 合并城市经理结构为扁平化
tableData
.
value
=
res
.
data
}
isLoading
.
value
=
false
}
const
{
proxy
}
=
getCurrentInstance
()
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
getTableList
(
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
)
onMounted
(()
=>
{
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
queryParams
.
operation
=
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
getTableList
()
})
</
script
>
\ No newline at end of file
src/views/mobile/pages/storeExecution/dashboard/tabs/six_little_diamonds.vue
浏览文件 @
4847502e
...
...
@@ -14,6 +14,7 @@
<CustomTable
:tableData=
"tableData"
:baseColumns=
"baseColumns"
:isLoading=
"isLoading"
:queryParams=
"queryParams"
@
getTableList=
"getTableList"
@
updateShowSearch=
"v => showSearch.value = v"
/>
</
template
>
...
...
@@ -21,7 +22,7 @@
<
script
setup
lang=
"jsx"
>
import
CustomTable
from
'../components/Table'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
}
from
'@/api'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
,
getDisplayScheduleDashboardListStore
}
from
'@/api'
import
{
getSixLittleDiamondsConfig
}
from
'./data.jsx'
import
{
parseTime
}
from
'@/utils'
...
...
@@ -64,30 +65,43 @@
// 表格数据
const
queryParams
=
reactive
({
salesMonth
:
new
Date
(),
operation
:
''
})
const
tableData
=
ref
([])
const
isLoading
=
ref
(
true
)
const
total
=
ref
(
0
)
// 筛选列表数据
const
getTableList
=
async
(
operation
)
=>
{
const
apiObj
=
{
'大区战区-分析'
:
getDisplayScheduleDashboardList
,
'城市经理-分析'
:
getDisplayScheduleDashboardListArea
,
'经销商-分析'
:
getDisplayScheduleDashboardListStore
,
}
const
getTableList
=
async
()
=>
{
isLoading
.
value
=
true
const
res
=
await
(
operation
===
'大区战区-分析'
?
getDisplayScheduleDashboardList
:
getDisplayScheduleDashboardListArea
)
({
const
res
=
await
apiObj
[
queryParams
.
operation
]
({
...
queryParams
,
salesMonth
:
parseTime
(
queryParams
.
salesMonth
,
'{y}-{m}'
)
})
if
(
operation
===
'大区战区-分析'
)
{
if
(
queryParams
.
operation
===
'大区战区-分析'
)
{
// 合并战区大区结构为扁平化
const
{
zq
,
dq
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
]
const
{
zq
,
dq
,
hz
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
,
...
hz
]
}
else
if
(
queryParams
.
operation
===
'经销商-分析'
)
{
// 合并经销商结构为扁平化
const
{
dist
,
hz
}
=
res
.
data
tableData
.
value
=
[...
dist
,
...
hz
]
}
else
{
// 合并城市经理结构为扁平化
tableData
.
value
=
res
.
data
}
isLoading
.
value
=
false
}
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
getTableList
(
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
)
onMounted
(()
=>
{
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
queryParams
.
operation
=
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
getTableList
()
})
</
script
>
<
style
scoped
></
style
>
\ No newline at end of file
src/views/mobile/pages/storeExecution/dashboard/tabs/snack.vue
浏览文件 @
4847502e
...
...
@@ -14,6 +14,7 @@
<CustomTable
:tableData=
"tableData"
:baseColumns=
"baseColumns"
:isLoading=
"isLoading"
:queryParams=
"queryParams"
@
getTableList=
"getTableList"
@
updateShowSearch=
"v => showSearch.value = v"
/>
</
template
>
...
...
@@ -21,7 +22,7 @@
<
script
setup
lang=
"jsx"
>
import
CustomTable
from
'../components/Table'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
}
from
'@/api'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
,
getDisplayScheduleDashboardListStore
}
from
'@/api'
import
{
parseTime
}
from
'@/utils'
import
{
getSnackCofing
}
from
'./data.jsx'
;
...
...
@@ -60,31 +61,44 @@
// 表格数据
const
queryParams
=
reactive
({
salesMonth
:
new
Date
(),
operation
:
''
})
const
tableData
=
ref
([])
const
isLoading
=
ref
(
true
)
const
total
=
ref
(
0
)
// 筛选列表数据
const
getTableList
=
async
(
operation
)
=>
{
const
apiObj
=
{
'大区战区-分析'
:
getDisplayScheduleDashboardList
,
'城市经理-分析'
:
getDisplayScheduleDashboardListArea
,
'经销商-分析'
:
getDisplayScheduleDashboardListStore
,
}
const
getTableList
=
async
()
=>
{
isLoading
.
value
=
true
const
res
=
await
(
operation
===
'大区战区-分析'
?
getDisplayScheduleDashboardList
:
getDisplayScheduleDashboardListArea
)
({
const
res
=
await
apiObj
[
queryParams
.
operation
]
({
...
queryParams
,
salesMonth
:
parseTime
(
queryParams
.
salesMonth
,
'{y}-{m}'
)
})
if
(
operation
===
'大区战区-分析'
)
{
if
(
queryParams
.
operation
===
'大区战区-分析'
)
{
// 合并战区大区结构为扁平化
const
{
zq
,
dq
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
]
const
{
zq
,
dq
,
hz
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
,
...
hz
]
}
else
if
(
queryParams
.
operation
===
'经销商-分析'
)
{
// 合并经销商结构为扁平化
const
{
dist
,
hz
}
=
res
.
data
tableData
.
value
=
[...
dist
,
...
hz
]
}
else
{
// 合并城市经理结构为扁平化
tableData
.
value
=
res
.
data
}
isLoading
.
value
=
false
}
const
{
proxy
}
=
getCurrentInstance
()
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
getTableList
(
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
)
onMounted
(()
=>
{
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
queryParams
.
operation
=
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
getTableList
()
})
</
script
>
<
style
scoped
...
...
src/views/mobile/pages/storeExecution/dashboard/tabs/three_two_seconds.vue
浏览文件 @
4847502e
...
...
@@ -14,6 +14,7 @@
<CustomTable
:tableData=
"tableData"
:baseColumns=
"baseColumns"
:isLoading=
"isLoading"
:queryParams=
"queryParams"
@
getTableList=
"getTableList"
@
updateShowSearch=
"v => showSearch.value = v"
/>
</
template
>
...
...
@@ -21,7 +22,7 @@
<
script
setup
lang=
"jsx"
>
import
CustomTable
from
'../components/Table'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
}
from
'@/api'
import
{
getDisplayScheduleDashboardList
,
getDisplayScheduleDashboardListArea
,
getDisplayScheduleDashboardListStore
}
from
'@/api'
import
{
getThreeTwoSecondsConfig
}
from
'./data.jsx'
import
{
parseTime
}
from
'@/utils'
...
...
@@ -66,30 +67,43 @@
// 表格数据
const
queryParams
=
reactive
({
salesMonth
:
new
Date
(),
operation
:
''
})
const
tableData
=
ref
([])
const
isLoading
=
ref
(
true
)
const
total
=
ref
(
0
)
// 筛选列表数据
const
getTableList
=
async
(
operation
)
=>
{
const
apiObj
=
{
'大区战区-分析'
:
getDisplayScheduleDashboardList
,
'城市经理-分析'
:
getDisplayScheduleDashboardListArea
,
'经销商-分析'
:
getDisplayScheduleDashboardListStore
,
}
const
getTableList
=
async
()
=>
{
isLoading
.
value
=
true
const
res
=
await
(
operation
===
'大区战区-分析'
?
getDisplayScheduleDashboardList
:
getDisplayScheduleDashboardListArea
)
({
const
res
=
await
apiObj
[
queryParams
.
operation
]
({
...
queryParams
,
salesMonth
:
parseTime
(
queryParams
.
salesMonth
,
'{y}-{m}'
)
})
if
(
operation
===
'大区战区-分析'
)
{
if
(
queryParams
.
operation
===
'大区战区-分析'
)
{
// 合并战区大区结构为扁平化
const
{
zq
,
dq
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
]
const
{
zq
,
dq
,
hz
}
=
res
.
data
tableData
.
value
=
[...
zq
,
...
dq
,
...
hz
]
}
else
if
(
queryParams
.
operation
===
'经销商-分析'
)
{
// 合并经销商结构为扁平化
const
{
dist
,
hz
}
=
res
.
data
tableData
.
value
=
[...
dist
,
...
hz
]
}
else
{
// 合并城市经理结构为扁平化
tableData
.
value
=
res
.
data
}
isLoading
.
value
=
false
}
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
getTableList
(
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
)
onMounted
(()
=>
{
const
isDaQuZQ
=
proxy
.
checkPermi
([
'promotion:dashboard:list-show'
])
queryParams
.
operation
=
isDaQuZQ
?
'大区战区-分析'
:
'城市经理-分析'
getTableList
()
})
</
script
>
...
...
src/views/promotion/display_schedule/components/SearchList/index.vue
浏览文件 @
4847502e
...
...
@@ -41,8 +41,6 @@
placeholder=
"请选择筛选状态"
@
change=
"handleChange"
clearable
>
<el-option
label=
"全部"
value=
"全部"
/>
<el-option
label=
"未执行"
value=
"未执行"
/>
</el-select>
...
...
src/views/promotion/display_schedule/components/Table/index.vue
浏览文件 @
4847502e
...
...
@@ -32,7 +32,8 @@
<el-tooltip
class=
"item"
effect=
"dark"
content=
"下载表格"
placement=
"top"
>
placement=
"top"
v-if=
"tabsType === '常规陈列'"
>
<el-button
@
click=
"downloadTable"
type=
"primary"
v-hasPermi=
"['display_downExcel']"
>
...
...
@@ -42,7 +43,8 @@
<el-tooltip
class=
"item"
effect=
"dark"
content=
"上传表格"
placement=
"top"
>
placement=
"top"
v-if=
"tabsType === '常规陈列'"
>
<el-button
@
click=
"uploadExcel"
type=
"success"
v-hasPermi=
"['display_upExcel']"
>
...
...
@@ -137,6 +139,7 @@
:close-on-press-escape=
"false"
draggable
overflow
body-class=
"dialog-table-container"
@
close=
"handleDialogCloseUpload"
>
<div
class=
"table-container"
>
<!-- 计划表格 -->
...
...
@@ -304,6 +307,7 @@ const downloadTable = async () => {
const
res
=
await
downloadDisplayScheduleTable
({
...
props
.
params
,
salesMonth
:
parseTime
(
props
.
params
.
salesMonth
,
'{y}-{m}'
),
rqStatus
:
props
.
params
.
rqStatus
===
'全部'
?
null
:
props
.
params
.
rqStatus
,
pageNum
:
null
,
pageSize
:
null
,
pageType
:
typeObj
[
props
.
tabsType
]
...
...
@@ -655,22 +659,37 @@ const tableRowStyle = ({ row }) => {
}
// 上传表格确认框内表格的样式
.el-table
{
::v-deep
(
.error-row
)
{
--el-table-tr-bg-color
:
var
(
--
el-color-error-light-9
);
}
</
style
>
/* 灰色过期行颜色 */
::v-deep
(
.timeout-row
)
{
--el-table-tr-bg-color
:
var
(
--
el-timeout-row
);
}
<
style
lang=
"scss"
>
// 上传表格确认框内表格的样式
.dialog-table-container
{
overflow-y
:
hidden
!
important
;
// 消除滚动条
::-webkit-scrollbar
{
display
:
none
;
}
</
style
>
.table-container
{
height
:
100%
;
overflow-y
:
scroll
;
.el-table
{
::v-deep
(
.error-row
)
{
--el-table-tr-bg-color
:
var
(
--
el-color-error-light-9
);
}
/* 灰色过期行颜色 */
::v-deep
(
.timeout-row
)
{
--el-table-tr-bg-color
:
var
(
--
el-timeout-row
);
}
}
}
}
<
style
lang=
"scss"
>
/* 表格弹窗 */
.table-dialog-modal
{
padding
:
0
;
...
...
@@ -726,5 +745,9 @@ const tableRowStyle = ({ row }) => {
input
{
color
:
red
!
important
;
}
// 下拉框
.el-select__placeholder
{
color
:
red
!
important
;
}
}
</
style
>
\ No newline at end of file
src/views/promotion/display_schedule/tabs/data.jsx
浏览文件 @
4847502e
...
...
@@ -488,7 +488,8 @@ export const getDisplayConfig = (submitChange) => {
submitChange
(
row
,
col
);
}
}
disabled=
{
disabled
}
class=
{
{
'no-disabled'
:
row
[
col
.
referenceKey
]
}
}
style=
{
{
color
:
'#ff0000'
}
}
class=
{
{
'no-disabled'
:
row
[
col
.
referenceKey
],
'red-text'
:
row
[
col
.
prop
]
>
row
[
col
.
referenceKey
]
}
}
placeholder=
""
clearable
>
{
col
.
options
.
map
(
item
=>
(
...
...
@@ -635,7 +636,7 @@ export const getDisplayConfig = (submitChange) => {
submitChange
(
row
,
col
);
}
}
disabled=
{
!
row
.
actualFloorStackArea
||
disabled
}
class=
{
{
'no-disabled'
:
row
.
actualFloorStackArea
&&
row
[
col
.
referenceKey
]
}
}
class=
{
{
'no-disabled'
:
row
.
actualFloorStackArea
&&
row
[
col
.
referenceKey
]
,
'red-text'
:
row
[
col
.
prop
]
>
row
[
col
.
referenceKey
]
}
}
placeholder=
""
clearable
>
{
col
.
options
.
map
(
item
=>
(
...
...
@@ -3316,17 +3317,17 @@ export const getSnackCofing = (submitChange) => {
"width"
:
150
,
func
:
(
row
)
=>
{
if
((
row
.
plannedDisplay
&&
row
.
actualDisplay
===
'执行与计划一致'
))
{
// 判断实际端架数量为 0 或者空时就是未执行,如果小于计划是部分执行,如果大于等于就是执行
if
(
!
row
.
actualEndCapQty
||
row
.
actualEndCapQty
==
0
)
{
row
.
snackDisplayExecuted
=
'未执行'
}
else
{
// 判断端架数量实际>=端架数量计划时为执行
if
(
row
.
actualEndCapQty
>=
row
.
plannedEndCapQty
)
{
row
.
snackDisplayExecuted
=
'执行'
}
else
{
row
.
snackDisplayExecuted
=
'未执行'
}
}
else
{
row
.
snackDisplayExecuted
=
'未执行'
}
},
formulaStr
:
"公式:陈列形式执行,并且端架数量
执行
(某项无计划时,忽略该项)"
formulaStr
:
"公式:陈列形式执行,并且端架数量
实际>=端架数量计划
(某项无计划时,忽略该项)"
},
{
"label"
:
"计划 - 陈列费用"
,
...
...
src/views/promotion/display_schedule/tabs/display.vue
浏览文件 @
4847502e
...
...
@@ -83,7 +83,6 @@
isLoading
.
value
=
true
const
res
=
await
getDisplayList
({
...
params
.
value
,
rqStatus
:
params
.
value
.
rqStatus
===
'全部'
?
''
:
params
.
value
.
rqStatus
,
salesMonth
:
parseTime
(
params
.
value
.
salesMonth
,
'{y}-{m}'
)
})
res
.
data
.
rows
.
forEach
(
item
=>
{
...
...
src/views/promotion/display_schedule/tabs/schedule.vue
浏览文件 @
4847502e
...
...
@@ -104,7 +104,6 @@
isLoading
.
value
=
true
const
res
=
await
getDisplayScheduleList
({
...
params
.
value
,
rqStatus
:
params
.
value
.
rqStatus
===
'全部'
?
''
:
params
.
value
.
rqStatus
,
salesMonth
:
parseTime
(
params
.
value
.
salesMonth
,
'{y}-{m}'
)
})
// 处理日期格式
...
...
src/views/promotion/display_schedule/tabs/schedule_dis.vue
浏览文件 @
4847502e
...
...
@@ -78,7 +78,6 @@
isLoading
.
value
=
true
const
res
=
await
getDisplayScheduleDetail
({
...
params
.
value
,
rqStatus
:
params
.
value
.
rqStatus
===
'全部'
?
''
:
params
.
value
.
rqStatus
,
salesMonth
:
parseTime
(
params
.
value
.
salesMonth
,
'{y}-{m}'
)
})
res
.
data
.
rows
.
forEach
(
item
=>
{
...
...
src/views/promotion/display_schedule/tabs/six_little_diamonds.vue
浏览文件 @
4847502e
...
...
@@ -73,7 +73,6 @@
isLoading
.
value
=
true
getSixLittleDiamondsPlanList
({
...
params
.
value
,
rqStatus
:
params
.
value
.
rqStatus
===
'全部'
?
''
:
params
.
value
.
rqStatus
,
salesMonth
:
parseTime
(
params
.
value
.
salesMonth
,
'{y}-{m}'
)
}).
then
(
res
=>
{
isLoading
.
value
=
false
...
...
src/views/promotion/display_schedule/tabs/snack.vue
浏览文件 @
4847502e
...
...
@@ -108,7 +108,6 @@
isLoading
.
value
=
true
const
res
=
await
getSnackPlanList
({
...
params
.
value
,
rqStatus
:
params
.
value
.
rqStatus
===
'全部'
?
''
:
params
.
value
.
rqStatus
,
salesMonth
:
parseTime
(
params
.
value
.
salesMonth
,
'{y}-{m}'
)
})
res
.
data
.
rows
.
forEach
(
item
=>
{
...
...
src/views/promotion/display_schedule/tabs/three_two_seconds.vue
浏览文件 @
4847502e
...
...
@@ -72,7 +72,6 @@
isLoading
.
value
=
true
getThreeMetersTwoSecondsPlanList
({
...
params
.
value
,
rqStatus
:
params
.
value
.
rqStatus
===
'全部'
?
''
:
params
.
value
.
rqStatus
,
salesMonth
:
proxy
.
parseTime
(
params
.
value
.
salesMonth
,
'{y}-{m}'
)
}).
then
(
res
=>
{
isLoading
.
value
=
false
...
...
src/views/promotion/display_schedule_dashboard/components/Table/index.vue
浏览文件 @
4847502e
...
...
@@ -40,7 +40,8 @@
:label=
"col.label"
:prop=
"col.prop"
align=
"center"
:width=
"col.width"
>
:width=
"col.width"
:fixed=
"col.fixed"
>
</el-table-column>
</
template
>
</el-table>
...
...
@@ -109,6 +110,8 @@ const initColumns = () => {
label
:
"大区"
,
prop
:
"regionName"
,
childCol
:
[],
width
:
100
,
fixed
:
'left'
},
{
label
:
"战区"
,
...
...
@@ -120,7 +123,8 @@ const initColumns = () => {
label
:
'经销商'
,
prop
:
"dealerName"
,
childCol
:
[],
width
:
220
width
:
220
,
fixed
:
'left'
},
{
label
:
'经销商编码'
,
...
...
@@ -132,6 +136,7 @@ const initColumns = () => {
label
:
"大区"
,
prop
:
"regionName"
,
childCol
:
[],
fixed
:
'left'
},
{
label
:
"战区"
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论