Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
8066864f
提交
8066864f
authored
9月 26, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor(display_schedule): 修复:链路中心_AP 上报_平铺模式纯表格,填报模式添加表单
上级
936718d3
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
890 行增加
和
301 行删除
+890
-301
index.vue
src/views/promotion/components/CommonPlan/index.vue
+0
-0
display.vue
src/views/promotion/display_schedule/tabs/display.vue
+372
-128
schedule.vue
src/views/promotion/display_schedule/tabs/schedule.vue
+518
-173
没有找到文件。
src/views/promotion/components/CommonPlan/index.vue
0 → 100644
浏览文件 @
8066864f
src/views/promotion/display_schedule/tabs/display.vue
浏览文件 @
8066864f
...
@@ -43,7 +43,7 @@
...
@@ -43,7 +43,7 @@
</span>
</span>
</
template
>
</
template
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<div
v-if=
"col.type === 'select'"
<div
v-if=
"col.type === 'select'
&& operation === '填报模式'
"
class=
"cell-style"
>
class=
"cell-style"
>
<!-- 实际主货架-数量(要根据实际主货架-形式不为空时才可以选择否则为 0) -->
<!-- 实际主货架-数量(要根据实际主货架-形式不为空时才可以选择否则为 0) -->
<div
v-if=
"col.prop === 'actualMainShelfQty'"
>
<div
v-if=
"col.prop === 'actualMainShelfQty'"
>
...
@@ -78,7 +78,7 @@
...
@@ -78,7 +78,7 @@
{{
col
.
func
(
row
)
}}
{{
col
.
func
(
row
)
}}
</div>
</div>
<!-- 输入框 -->
<!-- 输入框 -->
<div
v-else-if=
"col.type === 'input'"
<div
v-else-if=
"col.type === 'input'
&& operation === '填报模式'
"
class=
"cell-style"
>
class=
"cell-style"
>
<div>
<div>
<span>
{{
row
[
col
.
referenceKey
]
||
'-'
}}
</span>
<span>
{{
row
[
col
.
referenceKey
]
||
'-'
}}
</span>
...
@@ -87,7 +87,6 @@
...
@@ -87,7 +87,6 @@
placeholder=
""
placeholder=
""
@
input=
"submitChange(row, col)"
/>
@
input=
"submitChange(row, col)"
/>
</div>
</div>
</div>
</div>
<!-- 为其他类型或未定义类型提供默认显示 -->
<!-- 为其他类型或未定义类型提供默认显示 -->
<div
v-else
>
<div
v-else
>
...
@@ -117,37 +116,204 @@ const operation = ref('平铺模式');
...
@@ -117,37 +116,204 @@ const operation = ref('平铺模式');
const
tableRef
=
ref
(
null
)
const
tableRef
=
ref
(
null
)
// 全部列
// 全部列
const
baseColumns
=
ref
([
const
baseColumns
=
ref
([
// 一级类
{
{
label
:
"基础信息"
,
label
:
"基础信息"
,
// 类型标题
children
:
[
children
:
[
{
label
:
'计划月份'
,
prop
:
'salesMonth'
,
visible
:
true
,
type
:
'string'
,
fill
:
false
,
fixed
:
'left'
},
{
{
label
:
"销售大区"
,
prop
:
"regionName"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
label
:
'计划月份'
,
// 列标题
{
label
:
"销售战区"
,
prop
:
"districtName"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
prop
:
'salesMonth'
,
// 列属性
{
label
:
"经销商-省份"
,
prop
:
"dealerProvince"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
visible
:
true
,
// 是否显示
{
label
:
"经销商-城市"
,
prop
:
"dealerCity"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
type
:
'string'
,
// 列类型
{
label
:
"经销商-代码"
,
prop
:
"dealerCode"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
fill
:
false
,
// 是否为填报列
fixed
:
'left'
// 是否固定在左侧
{
label
:
"经销商-类型"
,
prop
:
"dealerType"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
},
{
label
:
"开户日期"
,
prop
:
"openingDate"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
{
label
:
"闭户日期"
,
prop
:
"closingDate"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
label
:
"销售大区"
,
{
label
:
"大区总监"
,
prop
:
"regionManager"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
prop
:
"regionName"
,
{
label
:
"战区经理"
,
prop
:
"districtManager"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
visible
:
true
,
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
type
:
'string'
,
{
label
:
"门店名称"
,
prop
:
"storeName"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
fill
:
false
{
label
:
"门店编码"
,
prop
:
"storeCode"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
},
{
label
:
"经销商名称"
,
prop
:
"dealerName"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
{
{
label
:
"系统类型"
,
prop
:
"lineType"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
label
:
"销售战区"
,
{
label
:
"门店-省份"
,
prop
:
"storeProvince"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
prop
:
"districtName"
,
{
label
:
"门店-城市"
,
prop
:
"storeCity"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
visible
:
true
,
{
label
:
"系统名称"
,
prop
:
"lineName"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
},
type
:
'string'
,
{
label
:
"渠道大类"
,
prop
:
"channelDl"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
fill
:
false
{
label
:
"渠道小类"
,
prop
:
"channelXl"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
},
{
label
:
"门店类型"
,
prop
:
"storeType"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
{
label
:
"系统业态"
,
prop
:
"systemFormat"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
label
:
"经销商-省份"
,
{
label
:
"门店面积"
,
prop
:
"storeArea"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
prop
:
"dealerProvince"
,
{
label
:
"门店分级(销量坎级)"
,
prop
:
"storeLevel"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
visible
:
true
,
{
label
:
"门店地址"
,
prop
:
"storeAddress"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
type
:
'string'
,
{
label
:
"品项数"
,
prop
:
"productCount"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
}
fill
:
false
},
{
label
:
"经销商-城市"
,
prop
:
"dealerCity"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"经销商-代码"
,
prop
:
"dealerCode"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"经销商-类型"
,
prop
:
"dealerType"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"开户日期"
,
prop
:
"openingDate"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"闭户日期"
,
prop
:
"closingDate"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"大区总监"
,
prop
:
"regionManager"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"战区经理"
,
prop
:
"districtManager"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"门店名称"
,
prop
:
"storeName"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
{
label
:
"门店编码"
,
prop
:
"storeCode"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
{
label
:
"经销商名称"
,
prop
:
"dealerName"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
{
label
:
"系统类型"
,
prop
:
"lineType"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
},
{
label
:
"门店-省份"
,
prop
:
"storeProvince"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"门店-城市"
,
prop
:
"storeCity"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"系统名称"
,
prop
:
"lineName"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
},
{
label
:
"渠道大类"
,
prop
:
"channelDl"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"渠道小类"
,
prop
:
"channelXl"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"门店类型"
,
prop
:
"storeType"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"系统业态"
,
prop
:
"systemFormat"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"门店面积"
,
prop
:
"storeArea"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"门店分级(销量坎级)"
,
prop
:
"storeLevel"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"门店地址"
,
prop
:
"storeAddress"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"品项数"
,
prop
:
"productCount"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
}
],
],
prop
:
'baseColumns'
,
prop
:
'baseColumns'
,
visible
:
true
visible
:
true
...
@@ -155,8 +321,20 @@ const baseColumns = ref([
...
@@ -155,8 +321,20 @@ const baseColumns = ref([
{
{
label
:
"大业态测试"
,
label
:
"大业态测试"
,
children
:
[
children
:
[
{
label
:
"大业态测试-动销模型"
,
prop
:
"lfSalesModel"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
{
label
:
"大业态测试-月均POS"
,
prop
:
"lfMonthlyPos"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
label
:
"大业态测试-动销模型"
,
prop
:
"lfSalesModel"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"大业态测试-月均POS"
,
prop
:
"lfMonthlyPos"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
}
],
],
prop
:
'lfColumns'
,
prop
:
'lfColumns'
,
visible
:
true
visible
:
true
...
@@ -165,10 +343,34 @@ const baseColumns = ref([
...
@@ -165,10 +343,34 @@ const baseColumns = ref([
label
:
"费用计划"
,
label
:
"费用计划"
,
prop
:
'fpColumns'
,
prop
:
'fpColumns'
,
children
:
[
children
:
[
// { label: "计划主货架-形式", prop: "plannedMainShelfType", visible: true, type: 'string' },
{
// { label: "计划主货架-数量", prop: "plannedMainShelfQty", visible: true, type: 'string' },
label
:
"计划主货架-形式"
,
{
label
:
"计划主货架-单个费用"
,
prop
:
"plannedMainShelfUnitCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
prop
:
"plannedMainShelfType"
,
{
label
:
"计划主货架-总费用"
,
prop
:
"plannedMainShelfTotalCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"计划主货架-数量"
,
prop
:
"plannedMainShelfQty"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"计划主货架-单个费用"
,
prop
:
"plannedMainShelfUnitCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"计划主货架-总费用"
,
prop
:
"plannedMainShelfTotalCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
{
label
:
"实际主货架-形式"
,
label
:
"实际主货架-形式"
,
prop
:
"actualMainShelfType"
,
prop
:
"actualMainShelfType"
,
...
@@ -200,7 +402,7 @@ const baseColumns = ref([
...
@@ -200,7 +402,7 @@ const baseColumns = ref([
label
:
"实际主货架-是否执行"
,
label
:
"实际主货架-是否执行"
,
prop
:
"actualMainShelfExecuted"
,
prop
:
"actualMainShelfExecuted"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
// 公式
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
row
.
actualMainShelfExecuted
=
((
parseInt
(
row
.
actualMainShelfType
)
>=
parseInt
(
row
.
plannedMainShelfType
))
&&
(
parseInt
(
row
.
actualMainShelfQty
)
>=
parseInt
(
row
.
plannedMainShelfQty
)))
?
'是'
:
'否'
;
row
.
actualMainShelfExecuted
=
((
parseInt
(
row
.
actualMainShelfType
)
>=
parseInt
(
row
.
plannedMainShelfType
))
&&
(
parseInt
(
row
.
actualMainShelfQty
)
>=
parseInt
(
row
.
plannedMainShelfQty
)))
?
'是'
:
'否'
;
return
row
.
actualMainShelfExecuted
;
return
row
.
actualMainShelfExecuted
;
...
@@ -208,16 +410,22 @@ const baseColumns = ref([
...
@@ -208,16 +410,22 @@ const baseColumns = ref([
formulaStr
:
'公式:(实际主货架形式 >= 计划主货架形式)并且(实际主货架数量 >= 计划主货架数量)'
,
formulaStr
:
'公式:(实际主货架形式 >= 计划主货架形式)并且(实际主货架数量 >= 计划主货架数量)'
,
fill
:
true
fill
:
true
},
},
// {
// label: "计划端架-数量", prop: "plannedEndCapQty", visible: true, type: 'string',
// fill: true
// },
{
{
label
:
"计划端架-总费用"
,
prop
:
"plannedEndCapTotalCost"
,
visible
:
true
,
type
:
'string'
,
label
:
"计划端架-数量"
,
prop
:
"plannedEndCapQty"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"计划端架-总费用"
,
prop
:
"plannedEndCapTotalCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
label
:
"计划端架-单个费用"
,
prop
:
"plannedEndCapUnitCost"
,
visible
:
true
,
type
:
'string'
,
label
:
"计划端架-单个费用"
,
prop
:
"plannedEndCapUnitCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
...
@@ -238,7 +446,7 @@ const baseColumns = ref([
...
@@ -238,7 +446,7 @@ const baseColumns = ref([
label
:
"实际端架-是否执行"
,
label
:
"实际端架-是否执行"
,
prop
:
"actualEndCapExecuted"
,
prop
:
"actualEndCapExecuted"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
// 公式
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
row
.
actualEndCapExecuted
=
((
parseFloat
(
row
.
actualEndCapQty
)
>=
parseFloat
(
row
.
plannedEndCapQty
)))
?
'是'
:
'否'
;
row
.
actualEndCapExecuted
=
((
parseFloat
(
row
.
actualEndCapQty
)
>=
parseFloat
(
row
.
plannedEndCapQty
)))
?
'是'
:
'否'
;
return
row
.
actualEndCapExecuted
;
return
row
.
actualEndCapExecuted
;
...
@@ -254,19 +462,31 @@ const baseColumns = ref([
...
@@ -254,19 +462,31 @@ const baseColumns = ref([
fill
:
true
fill
:
true
},
},
{
{
label
:
"计划地堆-数量"
,
prop
:
"plannedFloorStackQty"
,
visible
:
true
,
type
:
'string'
,
label
:
"计划地堆-数量"
,
prop
:
"plannedFloorStackQty"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
fill
:
true
},
},
{
{
label
:
"计划主题地堆-是否"
,
prop
:
"plannedThemedFloorStack"
,
visible
:
true
,
type
:
'string'
,
label
:
"计划主题地堆-是否"
,
prop
:
"plannedThemedFloorStack"
,
visible
:
true
,
type
:
'string'
,
fill
:
true
fill
:
true
},
},
{
{
label
:
"计划地堆-总费用"
,
prop
:
"plannedFloorStackTotalCost"
,
visible
:
true
,
type
:
'string'
,
label
:
"计划地堆-总费用"
,
prop
:
"plannedFloorStackTotalCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
label
:
"计划折算1㎡-单个费用"
,
prop
:
"plannedFloorStackUnitCostPerSqm"
,
visible
:
true
,
type
:
'string'
,
label
:
"计划折算1㎡-单个费用"
,
prop
:
"plannedFloorStackUnitCostPerSqm"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
...
@@ -281,7 +501,7 @@ const baseColumns = ref([
...
@@ -281,7 +501,7 @@ const baseColumns = ref([
{
label
:
'1'
,
value
:
1
},
{
label
:
'1'
,
value
:
1
},
{
label
:
'2'
,
value
:
2
},
{
label
:
'2'
,
value
:
2
},
{
label
:
'3'
,
value
:
3
},
{
label
:
'3'
,
value
:
3
},
{
label
:
'4'
,
value
:
4
}
,
{
label
:
'4'
,
value
:
4
}
],
],
referenceKey
:
"plannedFloorStackArea"
,
referenceKey
:
"plannedFloorStackArea"
,
fill
:
true
fill
:
true
...
@@ -307,7 +527,7 @@ const baseColumns = ref([
...
@@ -307,7 +527,7 @@ const baseColumns = ref([
type
:
'select'
,
type
:
'select'
,
options
:
[
options
:
[
{
label
:
'是'
,
value
:
'是'
},
{
label
:
'是'
,
value
:
'是'
},
{
label
:
'否'
,
value
:
'否'
}
,
{
label
:
'否'
,
value
:
'否'
}
],
],
referenceKey
:
"plannedThemedFloorStack"
,
referenceKey
:
"plannedThemedFloorStack"
,
fill
:
true
fill
:
true
...
@@ -316,7 +536,7 @@ const baseColumns = ref([
...
@@ -316,7 +536,7 @@ const baseColumns = ref([
label
:
"实际地堆是否执行"
,
label
:
"实际地堆是否执行"
,
prop
:
"actualFloorStackExecuted"
,
prop
:
"actualFloorStackExecuted"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
// 公式
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
row
.
actualFloorStackExecuted
=
((
parseFloat
(
row
.
actualFloorStackArea
)
>=
parseFloat
(
row
.
plannedFloorStackArea
))
&&
(
parseInt
(
row
.
actualFloorStackQty
)
>=
parseInt
(
row
.
plannedFloorStackQty
)))
?
'是'
:
'否'
;
row
.
actualFloorStackExecuted
=
((
parseFloat
(
row
.
actualFloorStackArea
)
>=
parseFloat
(
row
.
plannedFloorStackArea
))
&&
(
parseInt
(
row
.
actualFloorStackQty
)
>=
parseInt
(
row
.
plannedFloorStackQty
)))
?
'是'
:
'否'
;
return
row
.
actualFloorStackExecuted
;
return
row
.
actualFloorStackExecuted
;
...
@@ -324,12 +544,18 @@ const baseColumns = ref([
...
@@ -324,12 +544,18 @@ const baseColumns = ref([
formulaStr
:
'公式:(实际地堆平米数 >= 计划地堆平米数)并且(实际地堆数量 >= 计划地堆数量)'
,
formulaStr
:
'公式:(实际地堆平米数 >= 计划地堆平米数)并且(实际地堆数量 >= 计划地堆数量)'
,
fill
:
true
fill
:
true
},
},
// {
// label: "计划多点陈列-数量+形式", prop: "plannedMultiDisplay", visible: true, type: 'string',
// fill: true
// },
{
{
label
:
"计划多点陈列-总费用"
,
prop
:
"plannedMultiDisplayTotalCost"
,
visible
:
true
,
type
:
'string'
,
label
:
"计划多点陈列-数量+形式"
,
prop
:
"plannedMultiDisplay"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
},
{
label
:
"计划多点陈列-总费用"
,
prop
:
"plannedMultiDisplayTotalCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
...
@@ -351,23 +577,29 @@ const baseColumns = ref([
...
@@ -351,23 +577,29 @@ const baseColumns = ref([
type
:
'select'
,
type
:
'select'
,
options
:
[
options
:
[
{
label
:
'是'
,
value
:
'是'
},
{
label
:
'是'
,
value
:
'是'
},
{
label
:
'否'
,
value
:
'否'
}
,
{
label
:
'否'
,
value
:
'否'
}
],
],
fill
:
true
fill
:
true
},
},
{
{
label
:
"合计费用-费用"
,
prop
:
"totalCost"
,
visible
:
true
,
type
:
'string'
,
label
:
"合计费用-费用"
,
prop
:
"totalCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
label
:
"合计费用-费率"
,
prop
:
"totalCostRate"
,
visible
:
true
,
type
:
'string'
,
label
:
"合计费用-费率"
,
prop
:
"totalCostRate"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
label
:
"常规陈列是否执行"
,
label
:
"常规陈列是否执行"
,
prop
:
"regularDisplayExecuted"
,
prop
:
"regularDisplayExecuted"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
// 公式
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
// 实际主货架-是否执行 && 实际端架-是否执行 && 实际地堆-是否执行 && 实际多点陈列-是否执行
// 实际主货架-是否执行 && 实际端架-是否执行 && 实际地堆-是否执行 && 实际多点陈列-是否执行
row
.
regularDisplayExecuted
=
(
row
.
actualMainShelfExecuted
===
'是'
&&
row
.
actualEndCapExecuted
===
'是'
&&
row
.
actualFloorStackExecuted
===
'是'
&&
row
.
actualMultiDisplayExecuted
===
'是'
)
?
'是'
:
'否'
;
row
.
regularDisplayExecuted
=
(
row
.
actualMainShelfExecuted
===
'是'
&&
row
.
actualEndCapExecuted
===
'是'
&&
row
.
actualFloorStackExecuted
===
'是'
&&
row
.
actualMultiDisplayExecuted
===
'是'
)
?
'是'
:
'否'
;
...
@@ -377,19 +609,31 @@ const baseColumns = ref([
...
@@ -377,19 +609,31 @@ const baseColumns = ref([
fill
:
true
fill
:
true
},
},
{
{
label
:
"综合标签-拜访辅助列"
,
prop
:
"visitAssistTag"
,
visible
:
true
,
type
:
'string'
,
label
:
"综合标签-拜访辅助列"
,
prop
:
"visitAssistTag"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
label
:
"付费陈列- 是否"
,
prop
:
"paidDisplay"
,
visible
:
true
,
type
:
'string'
,
label
:
"付费陈列- 是否"
,
prop
:
"paidDisplay"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
label
:
"当月拜访目标"
,
prop
:
"monthlyVisitTarget"
,
visible
:
true
,
type
:
'string'
,
label
:
"当月拜访目标"
,
prop
:
"monthlyVisitTarget"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
},
},
{
{
label
:
"当月是否拜访"
,
prop
:
"monthlyVisited"
,
visible
:
true
,
type
:
'string'
,
label
:
"当月是否拜访"
,
prop
:
"monthlyVisited"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
fill
:
false
}
}
],
],
...
@@ -497,7 +741,7 @@ const tableData = ref([])
...
@@ -497,7 +741,7 @@ const tableData = ref([])
const
isLoading
=
ref
(
true
)
const
isLoading
=
ref
(
true
)
const
params
=
reactive
({
const
params
=
reactive
({
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
})
const
total
=
ref
(
0
)
const
total
=
ref
(
0
)
...
@@ -521,67 +765,67 @@ getTableList()
...
@@ -521,67 +765,67 @@ getTableList()
const
getColumnMinWidth
=
(
column
)
=>
{
const
getColumnMinWidth
=
(
column
)
=>
{
// 根据列名或属性判断合适的最小宽度
// 根据列名或属性判断合适的最小宽度
const
widthMap
=
{
const
widthMap
=
{
'salesMonth'
:
85
,
'salesMonth'
:
90
,
'regionName'
:
85
,
'regionName'
:
90
,
'districtName'
:
85
,
'districtName'
:
90
,
'dealerProvince'
:
10
0
,
'dealerProvince'
:
10
5
,
'dealerCity'
:
10
0
,
'dealerCity'
:
10
5
,
'dealerCode'
:
10
0
,
'dealerCode'
:
10
5
,
'dealerName'
:
21
0
,
'dealerName'
:
21
5
,
'dealerType'
:
14
0
,
'dealerType'
:
14
5
,
'openingDate'
:
10
0
,
'openingDate'
:
10
5
,
'closingDate'
:
10
0
,
'closingDate'
:
10
5
,
'regionManager'
:
85
,
'regionManager'
:
90
,
'districtManager'
:
85
,
'districtManager'
:
90
,
'cityManager'
:
85
,
'cityManager'
:
90
,
'storeCode'
:
10
0
,
'storeCode'
:
10
5
,
'storeName'
:
17
0
,
'storeName'
:
17
5
,
'storeProvince'
:
85
,
'storeProvince'
:
90
,
'storeCity'
:
85
,
'storeCity'
:
90
,
'lineName'
:
85
,
'lineName'
:
90
,
'lineType'
:
85
,
'lineType'
:
90
,
'channelDl'
:
85
,
'channelDl'
:
90
,
'channelXl'
:
1
35
,
'channelXl'
:
1
40
,
'storeType'
:
85
,
'storeType'
:
90
,
'systemFormat'
:
85
,
'systemFormat'
:
90
,
'storeArea'
:
85
,
'storeArea'
:
90
,
'storeLevel'
:
16
0
,
'storeLevel'
:
16
5
,
'storeAddress'
:
25
0
,
'storeAddress'
:
25
5
,
'productCount'
:
75
,
'productCount'
:
80
,
'lfSalesModel'
:
15
0
,
'lfSalesModel'
:
15
5
,
'lfMonthlyPos'
:
15
0
,
'lfMonthlyPos'
:
15
5
,
'plannedMainShelfType'
:
1
25
,
'plannedMainShelfType'
:
1
30
,
'plannedMainShelfQty'
:
1
25
,
'plannedMainShelfQty'
:
1
30
,
'plannedMainShelfUnitCost'
:
15
0
,
'plannedMainShelfUnitCost'
:
15
5
,
'plannedMainShelfTotalCost'
:
14
0
,
'plannedMainShelfTotalCost'
:
14
5
,
'actualMainShelfType'
:
1
35
,
'actualMainShelfType'
:
1
40
,
'actualMainShelfQty'
:
1
25
,
'actualMainShelfQty'
:
1
30
,
'actualMainShelfExecuted'
:
1
65
,
'actualMainShelfExecuted'
:
1
70
,
'plannedEndCapQty'
:
11
0
,
'plannedEndCapQty'
:
11
5
,
'plannedEndCapTotalCost'
:
1
25
,
'plannedEndCapTotalCost'
:
1
30
,
'plannedEndCapUnitCost'
:
1
35
,
'plannedEndCapUnitCost'
:
1
40
,
'actualEndCapQty'
:
11
0
,
'actualEndCapQty'
:
11
5
,
'actualEndCapExecuted'
:
15
0
,
'actualEndCapExecuted'
:
15
5
,
'plannedFloorStackArea'
:
1
65
,
'plannedFloorStackArea'
:
1
70
,
'plannedFloorStackQty'
:
11
0
,
'plannedFloorStackQty'
:
11
5
,
'plannedThemedFloorStack'
:
1
35
,
'plannedThemedFloorStack'
:
1
40
,
'plannedFloorStackTotalCost'
:
1
25
,
'plannedFloorStackTotalCost'
:
1
30
,
'plannedFloorStackUnitCostPerSqm'
:
1
55
,
'plannedFloorStackUnitCostPerSqm'
:
1
60
,
'actualFloorStackArea'
:
1
65
,
'actualFloorStackArea'
:
1
70
,
'actualFloorStackQty'
:
11
0
,
'actualFloorStackQty'
:
11
5
,
'actualThemedFloorStack'
:
1
35
,
'actualThemedFloorStack'
:
1
40
,
'actualFloorStackExecuted'
:
1
45
,
'actualFloorStackExecuted'
:
1
50
,
'plannedMultiDisplay'
:
17
0
,
'plannedMultiDisplay'
:
17
5
,
'plannedMultiDisplayTotalCost'
:
15
0
,
'plannedMultiDisplayTotalCost'
:
15
5
,
'actualMultiDisplay'
:
17
0
,
'actualMultiDisplay'
:
17
5
,
'actualMultiDisplayExecuted'
:
1
65
,
'actualMultiDisplayExecuted'
:
1
70
,
'totalCost'
:
11
0
,
'totalCost'
:
11
5
,
'totalCostRate'
:
11
0
,
'totalCostRate'
:
11
5
,
'regularDisplayExecuted'
:
1
45
,
'regularDisplayExecuted'
:
1
50
,
'visitAssistTag'
:
1
55
,
'visitAssistTag'
:
1
60
,
'paidDisplay'
:
1
15
,
'paidDisplay'
:
1
20
,
'monthlyVisitTarget'
:
1
05
,
'monthlyVisitTarget'
:
1
10
,
'monthlyVisited'
:
1
05
'monthlyVisited'
:
1
10
};
};
return
widthMap
[
column
.
prop
]
||
100
;
// 默认宽度
return
widthMap
[
column
.
prop
]
||
100
;
// 默认宽度
...
...
src/views/promotion/display_schedule/tabs/schedule.vue
浏览文件 @
8066864f
...
@@ -43,7 +43,7 @@
...
@@ -43,7 +43,7 @@
</span>
</span>
</
template
>
</
template
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<div
v-if=
"col.type === 'select'"
<div
v-if=
"col.type === 'select'
&& operation === '填报模式'
"
class=
"cell-style"
>
class=
"cell-style"
>
<div>
<div>
<el-tooltip
effect=
"dark"
<el-tooltip
effect=
"dark"
...
@@ -69,7 +69,7 @@
...
@@ -69,7 +69,7 @@
{{
col
.
func
(
row
)
}}
{{
col
.
func
(
row
)
}}
</div>
</div>
<!-- 输入框 -->
<!-- 输入框 -->
<div
v-else-if=
"col.type === 'input'"
<div
v-else-if=
"col.type === 'input'
&& operation === '填报模式'
"
class=
"cell-style"
>
class=
"cell-style"
>
<div>
<div>
<el-tooltip
effect=
"dark"
<el-tooltip
effect=
"dark"
...
@@ -86,7 +86,7 @@
...
@@ -86,7 +86,7 @@
</div>
</div>
</div>
</div>
<!-- 日期选择 -->
<!-- 日期选择 -->
<div
v-else-if=
"col.type === 'date'"
<div
v-else-if=
"col.type === 'date'
&& operation === '填报模式'
"
class=
"cell-style"
>
class=
"cell-style"
>
<div>
<div>
<span
class=
"ellipsis-tooltip"
>
{{
row
[
col
.
referenceKey
]
||
'-'
}}
</span>
<span
class=
"ellipsis-tooltip"
>
{{
row
[
col
.
referenceKey
]
||
'-'
}}
</span>
...
@@ -131,25 +131,142 @@ const baseColumns = ref([
...
@@ -131,25 +131,142 @@ const baseColumns = ref([
{
{
label
:
"基础信息"
,
label
:
"基础信息"
,
children
:
[
children
:
[
{
label
:
'计划月份'
,
prop
:
'salesMonth'
,
visible
:
true
,
type
:
'string'
,
fill
:
false
,
fixed
:
'left'
},
{
{
"label"
:
"销售大区"
,
"prop"
:
"regionName"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
label
:
'计划月份'
,
{
"label"
:
"销售战区"
,
"prop"
:
"districtName"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
prop
:
'salesMonth'
,
{
"label"
:
"经销商-省份"
,
"prop"
:
"dealerProvince"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
visible
:
true
,
{
"label"
:
"经销商-城市"
,
"prop"
:
"dealerCity"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
type
:
'string'
,
{
"label"
:
"经销商-代码"
,
"prop"
:
"dealerCode"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
fill
:
false
,
{
"label"
:
"经销商名称"
,
"prop"
:
"dealerName"
,
visible
:
true
,
type
:
"string"
,
fill
:
true
,
fixed
:
'left'
},
fixed
:
'left'
{
"label"
:
"经销商类型"
,
"prop"
:
"dealerType"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
},
{
"label"
:
"开户日期"
,
"prop"
:
"openingDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"闭户日期"
,
"prop"
:
"closingDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
label
:
"销售大区"
,
{
"label"
:
"大区总监"
,
"prop"
:
"regionManager"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
prop
:
"regionName"
,
{
"label"
:
"战区经理"
,
"prop"
:
"districtManager"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
visible
:
true
,
{
"label"
:
"城市经理"
,
"prop"
:
"cityManager"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
type
:
"string"
,
{
"label"
:
"系统名称"
,
"prop"
:
"lineName"
,
visible
:
true
,
type
:
"string"
,
fill
:
true
,
fixed
:
'left'
},
fill
:
false
{
"label"
:
"系统类型"
,
"prop"
:
"lineType"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
},
{
"label"
:
"渠道大类"
,
"prop"
:
"channelDl"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"渠道小类"
,
"prop"
:
"channelXl"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
label
:
"销售战区"
,
{
"label"
:
"系统业态"
,
"prop"
:
"lineLf"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
prop
:
"districtName"
,
{
"label"
:
"门店数"
,
"prop"
:
"storeCount"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
}
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"经销商-省份"
,
prop
:
"dealerProvince"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"经销商-城市"
,
prop
:
"dealerCity"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"经销商-代码"
,
prop
:
"dealerCode"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"经销商名称"
,
prop
:
"dealerName"
,
visible
:
true
,
type
:
"string"
,
fill
:
true
,
fixed
:
'left'
},
{
label
:
"经销商类型"
,
prop
:
"dealerType"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"开户日期"
,
prop
:
"openingDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"闭户日期"
,
prop
:
"closingDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"大区总监"
,
prop
:
"regionManager"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"战区经理"
,
prop
:
"districtManager"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"城市经理"
,
prop
:
"cityManager"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"系统名称"
,
prop
:
"lineName"
,
visible
:
true
,
type
:
"string"
,
fill
:
true
,
fixed
:
'left'
},
{
label
:
"系统类型"
,
prop
:
"lineType"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"渠道大类"
,
prop
:
"channelDl"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"渠道小类"
,
prop
:
"channelXl"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"系统业态"
,
prop
:
"lineLf"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"门店数"
,
prop
:
"storeCount"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
}
],
],
prop
:
'baseColumns'
,
prop
:
'baseColumns'
,
visible
:
true
visible
:
true
...
@@ -157,38 +274,80 @@ const baseColumns = ref([
...
@@ -157,38 +274,80 @@ const baseColumns = ref([
{
{
label
:
"档期基础信息"
,
label
:
"档期基础信息"
,
children
:
[
children
:
[
{
"label"
:
"档期执行月份"
,
"prop"
:
"promotionExecutionMonth"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"档期计划-促销规格"
,
"prop"
:
"plannedPromotionSpec"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"档期计划-促销口味"
,
"prop"
:
"plannedPromotionFlavor"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"档期执行-促销规格"
,
label
:
"档期执行月份"
,
"prop"
:
"actualPromotionSpec"
,
prop
:
"promotionExecutionMonth"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"档期计划-促销规格"
,
prop
:
"plannedPromotionSpec"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"档期计划-促销口味"
,
prop
:
"plannedPromotionFlavor"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"档期执行-促销规格"
,
prop
:
"actualPromotionSpec"
,
visible
:
true
,
visible
:
true
,
type
:
'select'
,
type
:
'select'
,
options
:
[
options
:
[
{
label
:
'虎皮105g'
,
value
:
'虎皮105g'
},
{
{
label
:
'虎皮210g'
,
value
:
'虎皮210g'
},
label
:
'虎皮105g'
,
{
label
:
'去骨72g'
,
value
:
'去骨72g'
},
value
:
'虎皮105g'
{
label
:
'去骨138g'
,
value
:
'去骨138g'
},
},
{
label
:
'小鸡腿80g'
,
value
:
'小鸡腿80g'
},
{
{
label
:
'老卤95g'
,
value
:
'老卤95g'
},
label
:
'虎皮210g'
,
{
label
:
'鸡肉豆堡'
,
value
:
'鸡肉豆堡'
},
value
:
'虎皮210g'
{
label
:
'牛肉豆堡'
,
value
:
'牛肉豆堡'
},
},
{
label
:
'去骨72g'
,
value
:
'去骨72g'
},
{
label
:
'去骨138g'
,
value
:
'去骨138g'
},
{
label
:
'小鸡腿80g'
,
value
:
'小鸡腿80g'
},
{
label
:
'老卤95g'
,
value
:
'老卤95g'
},
{
label
:
'鸡肉豆堡'
,
value
:
'鸡肉豆堡'
},
{
label
:
'牛肉豆堡'
,
value
:
'牛肉豆堡'
}
],
],
referenceKey
:
"plannedPromotionSpec"
,
referenceKey
:
"plannedPromotionSpec"
,
fill
:
true
fill
:
true
},
},
{
{
"label"
:
"档期执行-促销口味"
,
label
:
"档期执行-促销口味"
,
"prop"
:
"actualPromotionFlavor"
,
prop
:
"actualPromotionFlavor"
,
visible
:
true
,
visible
:
true
,
type
:
'input'
,
type
:
'input'
,
referenceKey
:
"plannedPromotionFlavor"
,
referenceKey
:
"plannedPromotionFlavor"
,
fill
:
true
fill
:
true
},
},
{
{
"label"
:
"档期规格是否执行"
,
label
:
"档期规格是否执行"
,
"prop"
:
"specExecutionStatus"
,
prop
:
"specExecutionStatus"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
...
@@ -197,7 +356,7 @@ const baseColumns = ref([
...
@@ -197,7 +356,7 @@ const baseColumns = ref([
},
},
formulaStr
:
'公式:(档期计划促销规格 = 档期执行促销规格)'
,
formulaStr
:
'公式:(档期计划促销规格 = 档期执行促销规格)'
,
fill
:
true
fill
:
true
}
,
}
],
],
prop
:
'scheduleInfo'
,
prop
:
'scheduleInfo'
,
visible
:
true
visible
:
true
...
@@ -206,8 +365,20 @@ const baseColumns = ref([
...
@@ -206,8 +365,20 @@ const baseColumns = ref([
label
:
"合计费用"
,
label
:
"合计费用"
,
prop
:
'totalCostParent'
,
prop
:
'totalCostParent'
,
children
:
[
children
:
[
{
"label"
:
"合计费用"
,
"prop"
:
"totalCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"合计费率"
,
"prop"
:
"totalCostRate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
label
:
"合计费用"
,
prop
:
"totalCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"合计费率"
,
prop
:
"totalCostRate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
}
],
],
visible
:
true
visible
:
true
},
},
...
@@ -215,40 +386,76 @@ const baseColumns = ref([
...
@@ -215,40 +386,76 @@ const baseColumns = ref([
label
:
"促销计划"
,
label
:
"促销计划"
,
prop
:
'promotionPlan'
,
prop
:
'promotionPlan'
,
children
:
[
children
:
[
{
"label"
:
"计划-档期形式"
,
"prop"
:
"plannedPromotionFormat"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划-核销方式"
,
"prop"
:
"plannedVerificationMethod"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划-档期规则"
,
"prop"
:
"plannedPromotionRules"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划-档期前补差天数"
,
"prop"
:
"plannedPrePromotionAdjustDays"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划-档期后补差天数"
,
"prop"
:
"plannedPostPromotionAdjustDays"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"计划-档期开始时间
"
,
label
:
"计划-档期形式
"
,
"prop"
:
"plannedPromotionStartDate
"
,
prop
:
"plannedPromotionFormat
"
,
visible
:
true
,
visible
:
true
,
type
:
"string"
,
type
:
"string"
,
fill
:
false
fill
:
false
},
},
{
{
"label"
:
"实际-档期开始时间"
,
label
:
"计划-核销方式"
,
"prop"
:
"actualPromotionStartDate"
,
prop
:
"plannedVerificationMethod"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划-档期规则"
,
prop
:
"plannedPromotionRules"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划-档期前补差天数"
,
prop
:
"plannedPrePromotionAdjustDays"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划-档期后补差天数"
,
prop
:
"plannedPostPromotionAdjustDays"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划-档期开始时间"
,
prop
:
"plannedPromotionStartDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"实际-档期开始时间"
,
prop
:
"actualPromotionStartDate"
,
visible
:
true
,
visible
:
true
,
type
:
'date'
,
type
:
'date'
,
format
:
'MM-DD'
,
format
:
'MM-DD'
,
referenceKey
:
"plannedPromotionStartDate"
,
referenceKey
:
"plannedPromotionStartDate"
,
fill
:
true
fill
:
true
},
},
{
"label"
:
"计划-档期结束时间"
,
"prop"
:
"plannedPromotionEndDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"实际-档期结束时间"
,
label
:
"计划-档期结束时间"
,
"prop"
:
"actualPromotionEndDate"
,
prop
:
"plannedPromotionEndDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"实际-档期结束时间"
,
prop
:
"actualPromotionEndDate"
,
visible
:
true
,
visible
:
true
,
type
:
'date'
,
type
:
'date'
,
format
:
'MM-DD'
,
format
:
'MM-DD'
,
fill
:
true
,
fill
:
true
,
referenceKey
:
"plannedPromotionEndDate"
,
referenceKey
:
"plannedPromotionEndDate"
},
},
{
{
"label"
:
"档期是否开展"
,
label
:
"档期是否开展"
,
"prop"
:
"promotionImplementationStatus"
,
prop
:
"promotionImplementationStatus"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
...
@@ -259,8 +466,8 @@ const baseColumns = ref([
...
@@ -259,8 +466,8 @@ const baseColumns = ref([
fill
:
true
fill
:
true
},
},
{
{
"label"
:
"时间是否执行"
,
label
:
"时间是否执行"
,
"prop"
:
"timeExecutionStatus"
,
prop
:
"timeExecutionStatus"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
...
@@ -270,51 +477,106 @@ const baseColumns = ref([
...
@@ -270,51 +477,106 @@ const baseColumns = ref([
formulaStr
:
'公式:(实际档期开始时间 = 计划档期开始时间,并且实际档期结束时间 = 计划档期结束时间)'
,
formulaStr
:
'公式:(实际档期开始时间 = 计划档期开始时间,并且实际档期结束时间 = 计划档期结束时间)'
,
fill
:
true
fill
:
true
},
},
{
"label"
:
"计划-补差开始时间"
,
"prop"
:
"plannedAdjustmentStartDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划-补差结束时间"
,
"prop"
:
"plannedAdjustmentEndDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划促销机制"
,
"prop"
:
"plannedPromotionMechanism"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"实际促销机制"
,
label
:
"计划-补差开始时间"
,
"prop"
:
"actualPromotionMechanism"
,
prop
:
"plannedAdjustmentStartDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划-补差结束时间"
,
prop
:
"plannedAdjustmentEndDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划促销机制"
,
prop
:
"plannedPromotionMechanism"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"实际促销机制"
,
prop
:
"actualPromotionMechanism"
,
visible
:
true
,
visible
:
true
,
type
:
'input'
,
type
:
'input'
,
fill
:
true
fill
:
true
},
},
{
{
"label"
:
"促销机制是否执行"
,
label
:
"促销机制是否执行"
,
"prop"
:
"promotionMechanismExecutionStatus"
,
prop
:
"promotionMechanismExecutionStatus"
,
visible
:
true
,
visible
:
true
,
type
:
'select'
,
type
:
'select'
,
options
:
[
options
:
[
{
label
:
'是'
,
value
:
'是'
},
{
{
label
:
'否'
,
value
:
'否'
},
label
:
'是'
,
value
:
'是'
},
{
label
:
'否'
,
value
:
'否'
}
],
],
fill
:
true
fill
:
true
},
},
{
"label"
:
"预估袋数"
,
"prop"
:
"estimatedBagCount"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"档期备货量(袋)"
,
label
:
"预估袋数"
,
"prop"
:
"promotionStockQuantity"
,
prop
:
"estimatedBagCount"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"档期备货量(袋)"
,
prop
:
"promotionStockQuantity"
,
visible
:
true
,
visible
:
true
,
type
:
'input'
,
type
:
'input'
,
format
:
'number'
,
format
:
'number'
,
fill
:
true
fill
:
true
},
},
{
"label"
:
"单包厂价(单包)"
,
"prop"
:
"unitFactoryPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"正常供价(单包)"
,
"prop"
:
"normalSupplyPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"日常零售价(单包)"
,
"prop"
:
"regularRetailPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划促销售价(单包)"
,
"prop"
:
"plannedPromotionPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"实际促销售价(单包)"
,
label
:
"单包厂价(单包)"
,
"prop"
:
"actualPromotionPrice"
,
prop
:
"unitFactoryPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"正常供价(单包)"
,
prop
:
"normalSupplyPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"日常零售价(单包)"
,
prop
:
"regularRetailPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划促销售价(单包)"
,
prop
:
"plannedPromotionPrice"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"实际促销售价(单包)"
,
prop
:
"actualPromotionPrice"
,
visible
:
true
,
visible
:
true
,
type
:
'input'
,
type
:
'input'
,
format
:
'number'
,
format
:
'number'
,
fill
:
true
fill
:
true
},
},
{
{
"label"
:
"促销价是否执行"
,
label
:
"促销价是否执行"
,
"prop"
:
"promotionPriceExecutionStatus"
,
visible
:
true
,
prop
:
"promotionPriceExecutionStatus"
,
visible
:
true
,
type
:
'formula'
,
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
row
.
promotionPriceExecutionStatus
=
row
.
plannedPromotionPrice
==
row
.
actualPromotionPrice
?
'是'
:
'否'
;
row
.
promotionPriceExecutionStatus
=
row
.
plannedPromotionPrice
==
row
.
actualPromotionPrice
?
'是'
:
'否'
;
...
@@ -323,17 +585,65 @@ const baseColumns = ref([
...
@@ -323,17 +585,65 @@ const baseColumns = ref([
formulaStr
:
'公式:(计划促销售价 = 实际促销售价)'
,
formulaStr
:
'公式:(计划促销售价 = 实际促销售价)'
,
fill
:
true
fill
:
true
},
},
{
"label"
:
"正常经销商毛利现状"
,
"prop"
:
"normalDealerMarginStatus"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"系统前台毛利保证"
,
"prop"
:
"systemFrontendMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"系统后台毛利保证"
,
"prop"
:
"systemBackendMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"系统促销毛利保证"
,
"prop"
:
"systemPromotionMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"经销商毛利保证"
,
"prop"
:
"dealerMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"单袋补差金额(费用)"
,
"prop"
:
"unitBagAdjustmentAmount"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"补差费比(%)"
,
"prop"
:
"adjustmentCostRatio"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"整体补差(费用)"
,
"prop"
:
"totalAdjustmentCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"档期是否执行"
,
label
:
"正常经销商毛利现状"
,
"prop"
:
"promotionExecutionStatus"
,
prop
:
"normalDealerMarginStatus"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"系统前台毛利保证"
,
prop
:
"systemFrontendMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"系统后台毛利保证"
,
prop
:
"systemBackendMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"系统促销毛利保证"
,
prop
:
"systemPromotionMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"经销商毛利保证"
,
prop
:
"dealerMarginGuarantee"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"单袋补差金额(费用)"
,
prop
:
"unitBagAdjustmentAmount"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"补差费比(%)"
,
prop
:
"adjustmentCostRatio"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"整体补差(费用)"
,
prop
:
"totalAdjustmentCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"档期是否执行"
,
prop
:
"promotionExecutionStatus"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
...
@@ -343,29 +653,48 @@ const baseColumns = ref([
...
@@ -343,29 +653,48 @@ const baseColumns = ref([
},
},
formulaStr
:
'公式:(促销价是否执行 = 是,并且促销机制是否执行 = 是,并且促销规格是否执行 = 是,并且档期是否开展 = 是)'
,
formulaStr
:
'公式:(促销价是否执行 = 是,并且促销机制是否执行 = 是,并且促销规格是否执行 = 是,并且档期是否开展 = 是)'
,
fill
:
true
fill
:
true
}
,
}
],
],
visible
:
true
visible
:
true
},
{
},
{
label
:
"海报计划"
,
label
:
"海报计划"
,
prop
:
'posterPlan'
,
prop
:
'posterPlan'
,
children
:
[
children
:
[
{
"label"
:
"计划-海报形式"
,
"prop"
:
"plannedPosterFormat"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
"label"
:
"计划-海报费用"
,
"prop"
:
"plannedPosterCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"实际-海报形式"
,
label
:
"计划-海报形式"
,
"prop"
:
"actualPosterFormat"
,
prop
:
"plannedPosterFormat"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"计划-海报费用"
,
prop
:
"plannedPosterCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"实际-海报形式"
,
prop
:
"actualPosterFormat"
,
visible
:
true
,
visible
:
true
,
type
:
'select'
,
type
:
'select'
,
options
:
[
options
:
[
{
label
:
'电子'
,
value
:
'电子'
},
{
{
label
:
'纸制'
,
value
:
'纸制'
}
label
:
'电子'
,
value
:
'电子'
},
{
label
:
'纸制'
,
value
:
'纸制'
}
],
],
fill
:
true
fill
:
true
},
},
{
{
"label"
:
"海报是否执行"
,
label
:
"海报是否执行"
,
"prop"
:
"posterExecutionStatus"
,
prop
:
"posterExecutionStatus"
,
visible
:
true
,
visible
:
true
,
type
:
'formula'
,
type
:
'formula'
,
func
:
(
row
)
=>
{
func
:
(
row
)
=>
{
...
@@ -374,7 +703,7 @@ const baseColumns = ref([
...
@@ -374,7 +703,7 @@ const baseColumns = ref([
},
},
formulaStr
:
'公式:(计划海报形式 = 实际海报形式)'
,
formulaStr
:
'公式:(计划海报形式 = 实际海报形式)'
,
fill
:
true
fill
:
true
}
,
}
],
],
visible
:
true
visible
:
true
},
},
...
@@ -382,9 +711,27 @@ const baseColumns = ref([
...
@@ -382,9 +711,27 @@ const baseColumns = ref([
label
:
"档期陈列"
,
label
:
"档期陈列"
,
prop
:
'displayPlan'
,
prop
:
'displayPlan'
,
children
:
[
children
:
[
{
"label"
:
"门店数"
,
"prop"
:
"storeCountInt"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
{
"label"
:
"店均费用"
,
"prop"
:
"averageStoreCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
label
:
"门店数"
,
{
"label"
:
"费用"
,
"prop"
:
"cost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
prop
:
"storeCountInt"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"店均费用"
,
prop
:
"averageStoreCost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
},
{
label
:
"费用"
,
prop
:
"cost"
,
visible
:
true
,
type
:
"string"
,
fill
:
false
}
],
],
visible
:
true
visible
:
true
}
}
...
@@ -496,7 +843,7 @@ const tableData = ref([])
...
@@ -496,7 +843,7 @@ const tableData = ref([])
const
isLoading
=
ref
(
true
)
const
isLoading
=
ref
(
true
)
const
params
=
reactive
({
const
params
=
reactive
({
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
})
const
total
=
ref
(
0
)
const
total
=
ref
(
0
)
...
@@ -530,80 +877,78 @@ getTableList()
...
@@ -530,80 +877,78 @@ getTableList()
const
getColumnMinWidth
=
(
column
)
=>
{
const
getColumnMinWidth
=
(
column
)
=>
{
// 根据列名或属性判断合适的最小宽度
// 根据列名或属性判断合适的最小宽度
const
widthMap
=
{
const
widthMap
=
{
'salesMonth'
:
85
,
'salesMonth'
:
90
,
'regionName'
:
85
,
'regionName'
:
90
,
'districtName'
:
85
,
'districtName'
:
90
,
'dealerProvince'
:
10
0
,
'dealerProvince'
:
10
5
,
'dealerCity'
:
10
0
,
'dealerCity'
:
10
5
,
'dealerCode'
:
10
0
,
'dealerCode'
:
10
5
,
'dealerName'
:
21
0
,
'dealerName'
:
21
5
,
'dealerType'
:
11
0
,
'dealerType'
:
11
5
,
'openingDate'
:
10
0
,
'openingDate'
:
10
5
,
'closingDate'
:
10
0
,
'closingDate'
:
10
5
,
'regionManager'
:
85
,
'regionManager'
:
90
,
'districtManager'
:
85
,
'districtManager'
:
90
,
'cityManager'
:
85
,
'cityManager'
:
90
,
'lineName'
:
85
,
'lineName'
:
90
,
'lineType'
:
85
,
'lineType'
:
90
,
'channelDl'
:
85
,
'channelDl'
:
90
,
'channelXl'
:
1
35
,
'channelXl'
:
1
40
,
'lineLf'
:
85
,
'lineLf'
:
90
,
'storeCount'
:
7
0
,
'storeCount'
:
7
5
,
'promotionExecutionMonth'
:
1
05
,
'promotionExecutionMonth'
:
1
10
,
'plannedPromotionSpec'
:
1
35
,
'plannedPromotionSpec'
:
1
40
,
'plannedPromotionFlavor'
:
1
35
,
'plannedPromotionFlavor'
:
1
40
,
'actualPromotionSpec'
:
1
35
,
'actualPromotionSpec'
:
1
40
,
'actualPromotionFlavor'
:
1
35
,
'actualPromotionFlavor'
:
1
40
,
'specExecutionStatus'
:
1
45
,
'specExecutionStatus'
:
1
50
,
'totalCost'
:
10
0
,
'totalCost'
:
10
5
,
'totalCostRate'
:
8
0
,
'totalCostRate'
:
8
5
,
'plannedPromotionFormat'
:
11
0
,
'plannedPromotionFormat'
:
11
5
,
'plannedVerificationMethod'
:
11
0
,
'plannedVerificationMethod'
:
11
5
,
'plannedPromotionRules'
:
11
0
,
'plannedPromotionRules'
:
11
5
,
'plannedPrePromotionAdjustDays'
:
15
0
,
'plannedPrePromotionAdjustDays'
:
15
5
,
'plannedPostPromotionAdjustDays'
:
15
0
,
'plannedPostPromotionAdjustDays'
:
15
5
,
'plannedPromotionStartDate'
:
1
35
,
'plannedPromotionStartDate'
:
1
40
,
'actualPromotionStartDate'
:
1
35
,
'actualPromotionStartDate'
:
1
40
,
'plannedPromotionEndDate'
:
1
35
,
'plannedPromotionEndDate'
:
1
40
,
'actualPromotionEndDate'
:
1
35
,
'actualPromotionEndDate'
:
1
40
,
'promotionImplementationStatus'
:
12
0
,
'promotionImplementationStatus'
:
12
5
,
'timeExecutionStatus'
:
12
0
,
'timeExecutionStatus'
:
12
5
,
'plannedAdjustmentStartDate'
:
1
35
,
'plannedAdjustmentStartDate'
:
1
40
,
'plannedAdjustmentEndDate'
:
1
35
,
'plannedAdjustmentEndDate'
:
1
40
,
'plannedPromotionMechanism'
:
11
0
,
'plannedPromotionMechanism'
:
11
5
,
'actualPromotionMechanism'
:
11
0
,
'actualPromotionMechanism'
:
11
5
,
'promotionMechanismExecutionStatus'
:
13
0
,
'promotionMechanismExecutionStatus'
:
13
5
,
'estimatedBagCount'
:
85
,
'estimatedBagCount'
:
90
,
'promotionStockQuantity'
:
13
0
,
'promotionStockQuantity'
:
13
5
,
'unitFactoryPrice'
:
13
0
,
'unitFactoryPrice'
:
13
5
,
'normalSupplyPrice'
:
13
0
,
'normalSupplyPrice'
:
13
5
,
'regularRetailPrice'
:
1
45
,
'regularRetailPrice'
:
1
50
,
'plannedPromotionPrice'
:
16
0
,
'plannedPromotionPrice'
:
16
5
,
'actualPromotionPrice'
:
16
0
,
'actualPromotionPrice'
:
16
5
,
'promotionPriceExecutionStatus'
:
1
35
,
'promotionPriceExecutionStatus'
:
1
40
,
'normalDealerMarginStatus'
:
1
45
,
'normalDealerMarginStatus'
:
1
50
,
'systemFrontendMarginGuarantee'
:
13
0
,
'systemFrontendMarginGuarantee'
:
13
5
,
'systemBackendMarginGuarantee'
:
13
0
,
'systemBackendMarginGuarantee'
:
13
5
,
'systemPromotionMarginGuarantee'
:
13
0
,
'systemPromotionMarginGuarantee'
:
13
5
,
'dealerMarginGuarantee'
:
12
0
,
'dealerMarginGuarantee'
:
12
5
,
'unitBagAdjustmentAmount'
:
16
0
,
'unitBagAdjustmentAmount'
:
16
5
,
'adjustmentCostRatio'
:
12
0
,
'adjustmentCostRatio'
:
12
5
,
'totalAdjustmentCost'
:
13
0
,
'totalAdjustmentCost'
:
13
5
,
'promotionExecutionStatus'
:
12
0
,
'promotionExecutionStatus'
:
12
5
,
'plannedPosterFormat'
:
11
0
,
'plannedPosterFormat'
:
11
5
,
'plannedPosterCost'
:
11
0
,
'plannedPosterCost'
:
11
5
,
'actualPosterFormat'
:
11
0
,
'actualPosterFormat'
:
11
5
,
'posterExecutionStatus'
:
12
0
,
'posterExecutionStatus'
:
12
5
,
'storeCountInt'
:
7
0
,
'storeCountInt'
:
7
5
,
'averageStoreCost'
:
11
0
,
'averageStoreCost'
:
11
5
,
'cost'
:
11
0
'cost'
:
11
5
};
};
return
widthMap
[
column
.
prop
]
||
150
;
// 默认宽度
return
widthMap
[
column
.
prop
]
||
150
;
// 默认宽度
};
};
const
isContentOverflow
=
(
key
,
content
)
=>
{
const
isContentOverflow
=
(
key
,
content
)
=>
{
// 创建临时元素用于测量
// 创建临时元素用于测量
if
(
!
content
)
return
false
;
if
(
!
content
)
return
false
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论