Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
996665dd
提交
996665dd
authored
11月 28, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'ap' into dev
上级
d65c4804
d07b2536
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
696 行增加
和
492 行删除
+696
-492
index.vue
src/views/promotion/components/Table/index.vue
+334
-168
index.vue
src/views/promotion/display_schedule/index.vue
+2
-1
display.vue
src/views/promotion/display_schedule/tabs/display.vue
+78
-71
schedule.vue
src/views/promotion/display_schedule/tabs/schedule.vue
+117
-104
schedule_dis.vue
src/views/promotion/display_schedule/tabs/schedule_dis.vue
+64
-53
six_little_diamonds.vue
...s/promotion/display_schedule/tabs/six_little_diamonds.vue
+32
-30
snack.vue
src/views/promotion/display_schedule/tabs/snack.vue
+36
-34
three_two_seconds.vue
...ews/promotion/display_schedule/tabs/three_two_seconds.vue
+33
-31
没有找到文件。
src/views/promotion/components/Table/index.vue
浏览文件 @
996665dd
<
template
>
<!-- 操作类型 -->
<el-row>
<el-form-item>
<el-radio-group
v-model=
"operation"
@
change=
"checkTableColumns"
>
<el-radio-button
label=
"展示模式"
value=
"展示模式"
/>
<el-radio-button
label=
"填报模式"
value=
"填报模式"
v-if=
"showFill"
/>
</el-radio-group>
<!-- 提示文字 -->
<span
class=
"tip-title"
>
请真实,及时,准确填写!
</span>
</el-form-item>
<right-toolbar
v-model:showSearch=
"showSearch"
@
queryTable=
"getTableList()"
:columns=
"chooseColumns"
:showColumnsType=
"operation === '展示模式' ? 'tree' : 'checkbox'"
:defaultCheckedKeys=
"visibleProps"
>
</right-toolbar>
</el-row>
<!-- 数据表格 -->
<el-table
:data=
"tableData"
border
ref=
"tableRef"
class=
"auto-fit-header-table"
v-loading=
"isLoading"
show-overflow-tooltip
:class=
"
{ 'cell-no-padding': operation === '填报模式' }">
<template
v-for=
"col in tableColumns"
>
<el-table-column
v-if=
"col.visible"
:label=
"col.label"
:prop=
"col.prop"
:key=
"col.prop"
align=
"center"
class-name=
"column-style"
:width=
"col.width"
:fixed=
"operation === '填报模式' && col.fixed"
>
<template
#
header=
"
{ column }">
<!-- 只为特定公式列添加问号图标 -->
<span
class=
"formula-column"
>
<div
class=
"column"
>
<p>
{{
column
.
label
}}
</p>
<p
v-if=
"col.subLabel"
>
{{
col
.
subLabel
}}
</p>
</div>
<el-tooltip
v-if=
"col.type === 'formula'"
:content=
"col.formulaStr"
placement=
"top"
>
<el-icon><question-filled
/></el-icon>
</el-tooltip>
</span>
<div
class=
"flex-container"
>
<!-- 操作类型 -->
<el-row>
<el-form-item>
<el-radio-group
v-model=
"operation"
@
change=
"checkTableColumns"
>
<el-radio-button
label=
"展示模式"
value=
"展示模式"
/>
<el-radio-button
label=
"填报模式"
value=
"填报模式"
v-if=
"showFill"
/>
</el-radio-group>
<!-- 提示文字 -->
<span
class=
"tip-title"
>
请真实,及时,准确填写!
</span>
</el-form-item>
<right-toolbar
v-model:showSearch=
"showSearch"
@
queryTable=
"getTableList()"
:columns=
"chooseColumns"
:showColumnsType=
"operation === '展示模式' ? 'tree' : 'checkbox'"
:defaultCheckedKeys=
"visibleProps"
>
<!-- 添加自定义工具栏插槽 -->
<template
#
default
>
<!-- 默认插槽内容,父组件可以覆盖 -->
<el-tooltip
class=
"item"
effect=
"dark"
content=
"放大表格"
placement=
"top"
>
<el-button
circle
icon=
"Rank"
@
click=
"openTableDialog"
/>
</el-tooltip>
</
template
>
<
template
#
default=
"{ row }"
>
<!-- 填报模式 -->
<div
v-if=
"operation === '填报模式'"
>
<!-- 自定义渲染内容单元格 -->
<div
v-if=
"col.render"
class=
"cell-style"
>
<component
:is=
"col.render(h, row, col)"
/>
</div>
<!-- 公式计算 -->
<div
v-else-if=
"col.type === 'formula'"
>
{{
col
.
func
(
row
)
}}
</div>
<!-- 其他类型内容 -->
<div
v-else
>
<!-- 正常显示 -->
<span>
{{
row
[
col
.
prop
]
||
'-'
}}
</span>
</div>
</div>
<!-- 展示模式 -->
<div
class=
"show-cell-style"
v-else
>
{{
formatter
(
row
,
col
,
row
[
col
.
prop
]
||
'-'
)
}}
</div>
</right-toolbar>
</el-row>
<!-- 表格容器 - 用于DOM移动 -->
<div
ref=
"tableContainer"
class=
"table-container"
>
<!-- 数据表格 -->
<el-table
:data=
"tableData"
border
ref=
"tableRef"
class=
"auto-fit-header-table"
v-loading=
"isLoading"
show-overflow-tooltip
:class=
"{ 'cell-no-padding': operation === '填报模式' }"
>
<
template
v-for=
"col in tableColumns"
>
<el-table-column
v-if=
"col.visible"
:label=
"col.label"
:prop=
"col.prop"
:key=
"col.prop"
align=
"center"
class-name=
"column-style"
:width=
"col.width"
:fixed=
"operation === '填报模式' && col.fixed"
>
<template
#
header=
"
{ column }">
<!-- 只为特定公式列添加问号图标 -->
<span
class=
"formula-column"
>
<div
class=
"column"
>
<p>
{{
column
.
label
}}
</p>
<p
v-if=
"col.subLabel"
>
{{
col
.
subLabel
}}
</p>
</div>
<el-tooltip
v-if=
"col.type === 'formula'"
:content=
"col.formulaStr"
placement=
"top"
>
<el-icon><question-filled
/></el-icon>
</el-tooltip>
</span>
</
template
>
<
template
#
default=
"{ row }"
>
<!-- 填报模式 -->
<div
v-if=
"operation === '填报模式'"
>
<!-- 自定义渲染内容单元格 -->
<div
v-if=
"col.render"
class=
"cell-style"
>
<component
:is=
"col.render(h, row, col)"
/>
</div>
<!-- 公式计算 -->
<div
v-else-if=
"col.type === 'formula'"
>
{{
col
.
func
(
row
)
}}
</div>
<!-- 其他类型内容 -->
<div
cllass=
"fill-span-wrap"
v-else
>
<!-- 正常显示 -->
<span
class=
"fill-span"
>
{{
row
[
col
.
prop
]
||
'-'
}}
</span>
</div>
</div>
<!-- 展示模式 -->
<div
class=
"show-cell-style"
v-else
>
{{
formatter
(
row
,
col
,
row
[
col
.
prop
]
||
'-'
)
}}
</div>
</
template
>
</el-table-column>
</template>
</el-table-column>
</template>
</el-table>
<!-- 分页 -->
<pagination
:total=
"total"
v-model:page=
"params.pageNum"
v-model:limit=
"params.pageSize"
@
pagination=
"getTableList"
/>
</el-table>
<!-- 分页 -->
<pagination
:total=
"total"
v-model:page=
"params.pageNum"
v-model:limit=
"params.pageSize"
@
pagination=
"getTableList"
/>
</div>
</div>
<!-- 表格弹窗 - 使用DOM移动而非复制 -->
<el-dialog
v-model=
"showTableInDialog"
title=
"表格详情"
modal-class=
"table-dialog-modal"
fullscreen
:before-close=
"handleDialogClose"
>
<!-- 弹窗内的表格容器 -->
<div
ref=
"dialogTableContainer"
class=
"dialog-table-container"
></div>
</el-dialog>
</template>
<
script
setup
>
...
...
@@ -130,8 +160,8 @@ const emit = defineEmits(['updateColumns', 'getTableList', 'updateShowSearch'])
/*************** 工具栏 ***************/
// 切换平铺/填报模式
const
operation
=
ref
(
'展示模式'
);
//
const operation = ref('填报模式');
//
const operation = ref('展示模式');
const
operation
=
ref
(
'填报模式'
);
const
tableRef
=
ref
(
null
)
const
checkTableColumns
=
async
()
=>
{
// 通知外面传入 tableColumns / chooseColumns 数据源
...
...
@@ -157,143 +187,278 @@ watch(showSearch, (newVal) => {
const
getTableList
=
()
=>
{
emit
(
'getTableList'
)
}
/************** 弹框控制 ***************/
// 控制表格弹框显隐
const
tableContainer
=
ref
(
null
)
// 原始表格容器引用
const
dialogTableContainer
=
ref
(
null
)
// 弹窗内表格容器引用
const
showTableInDialog
=
ref
(
false
)
// DOM移动需要的引用
let
containerElement
=
null
// 保存整个可移动容器
let
originalParent
=
null
// 保存原始父容器
// 打开表格弹窗并移动DOM
const
openTableDialog
=
async
()
=>
{
// 保存容器元素和原始父容器引用
if
(
tableContainer
.
value
)
{
containerElement
=
tableContainer
.
value
originalParent
=
containerElement
.
parentElement
}
// 显示弹窗
showTableInDialog
.
value
=
true
// 等待弹窗渲染完成后移动DOM
await
nextTick
()
moveContentToDialog
()
}
// 移动内容到弹窗
const
moveContentToDialog
=
()
=>
{
if
(
containerElement
&&
dialogTableContainer
.
value
)
{
// 关键DOM移动操作 - 现在会移动整个容器(包含表格和分页器)
dialogTableContainer
.
value
.
appendChild
(
containerElement
)
// 调整表格布局
nextTick
(()
=>
{
if
(
tableRef
.
value
)
{
tableRef
.
value
.
doLayout
()
}
})
}
}
// 移动内容回原位
const
moveContentBack
=
()
=>
{
if
(
containerElement
&&
originalParent
)
{
// 关键DOM移动操作
originalParent
.
appendChild
(
containerElement
)
// 调整表格布局
nextTick
(()
=>
{
if
(
tableRef
.
value
)
{
tableRef
.
value
.
doLayout
()
}
})
}
}
// 关闭弹窗
const
handleDialogClose
=
()
=>
{
// 先移动内容回原位
moveContentBack
()
// 然后关闭弹窗
showTableInDialog
.
value
=
false
}
</
script
>
<
style
scoped
lang=
"scss"
>
/* 工具栏 */
.el-row
{
.el-form-item
{
.tip-title
{
font-size
:
32px
;
color
:
red
;
margin-left
:
50px
;
font-weight
:
900
;
margin-top
:
-5px
;
/* 根容器设置为flex布局,占据整个可用空间 */
.flex-container
{
flex
:
1
;
display
:
flex
;
flex-direction
:
column
;
overflow
:
hidden
;
/* 工具栏 */
.el-row
{
.el-form-item
{
.tip-title
{
font-size
:
32px
;
color
:
red
;
margin-left
:
50px
;
font-weight
:
900
;
margin-top
:
-5px
;
}
}
}
}
/* 因为表格会被挪走,所以必须独立样式无法嵌套在别人内 */
/* 表格样式 */
.auto-fit-header-table
{
height
:
100%
;
.table-container
{
flex
:
1
;
/* 这是关键,让表格容器自动占据剩余空间 */
display
:
flex
;
flex-direction
:
column
;
min-height
:
0
;
/* 解决flex子项内容溢出问题 */
/* 列样式 */
.column-style
{
/* overflow-y: scroll; */
.auto-fit-header-table
{
flex
:
1
;
/* 列头样式 */
.formula-column
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
/* 列样式 */
.column-style
{
.column
{
/* 列头样式 */
.formula-column
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
flex-direction
:
column
;
p
{
margin
:
0
;
font-size
:
12px
;
color
:
#606266
;
.column
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
flex-direction
:
column
;
p
{
margin
:
0
;
font-size
:
12px
;
color
:
#606266
;
}
}
.el-icon
{
margin-left
:
2px
;
}
}
.el-icon
{
margin-left
:
2px
;
/* 单元格样式 */
/* 展示模式单元格(仅展示模式生效) */
.show-cell-style
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
}
/* 单元格样式 */
/* 展示模式单元格(仅展示模式生效) */
.show-cell-style
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.cell-style
{
>
div
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
>
span
{
text-align
:
left
;
text-indent
:
5px
;
display
:
inline-block
;
width
:
80%
;
background-color
:
#e1e2e6
;
border-bottom
:
1px
solid
#ebeef5
;
}
}
/* 表格内下拉框 */
.el-select
{
width
:
100%
!
important
;
padding
:
10px
;
.cell-style
{
>
div
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
flex-start
;
/* 非 disabled 状态下的背景颜色 */
&.
no-disabled
:
:
v-deep
(
.
el-select__wrapper
)
{
border
:
4px
solid
var
(
--
el-background-editor-cell
)
!
important
;
}
}
>
span
{
text-align
:
lef
t
;
text-indent
:
5px
;
display
:
inline-block
;
.el-input
{
height
:
32px
!
importan
t
;
/* box-sizing: content-box; */
padding
:
0
10px
;
width
:
100%
;
background-color
:
#e1e2e6
;
border-bottom
:
1px
solid
#ebeef5
;
}
}
/* 表格内下拉框 */
.el-select
{
width
:
100%
!
important
;
padding
:
10px
;
::v-deep
(
.el-select__wrapper
)
{
border
:
4px
solid
var
(
--
el-background-editor-cell
)
!
important
;
}
/* 非 disabled 状态下的背景颜色 */
&.
no-disabled
:
:
v-deep
(
.
el-input__wrapper
)
{
border
:
4px
solid
var
(
--
el-background-editor-cell
)
!
important
;
}
/* 非 disabled 状态下的背景颜色 */
/* &.no-disabled {
background-color: ;
} */
}
}
.date-picker
{
width
:
100%
;
padding
:
10px
;
.el-input
{
padding
:
10px
;
/* 非 disabled 状态下的背景颜色 */
&.
no-disabled
:
:
v-deep
(
.
el-input__wrapper
)
{
border
:
4px
solid
var
(
--
el-background-editor-cell
)
!
important
;
}
::v-deep
(
.el-input__wrapper
)
{
border
:
4px
solid
var
(
--
el-background-editor-cell
)
!
important
;
::v-deep
(
.el-input
)
{
width
:
100%
;
padding
:
0
;
}
}
}
/* &.no-disabled {
background-color: var(--el-background-editor-cell);
} */
/* 填充模式下的普通战士文字 */
.fill-span-wrap
{
/* line-height: 1; */
.fill-span
{
display
:
inline-block
;
width
:
80%
!
important
;
/* 超出省略号 */
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
}
.date-picker
{
width
:
100%
;
padding
:
10px
;
}
&
.no-disabled
{
background-color
:
var
(
--
el-background-editor-cell
);
}
/* 填报模式-单元格 */
&
.cell-no-padding
{
::v-deep
(
.el-input
)
{
width
:
100%
;
/* 无上下内边距 */
::v-deep
(
.el-table__row
)
{
.el-table__cell
{
padding
:
0
;
.cell
{
padding
:
0
!
important
;
}
}
}
}
}
/* 填报模式-单元格 */
&
.cell-no-padding
{
/* 分页器 */
.pagination-container
{
margin
:
10px
;
}
}
</
style
>
<
style
lang=
"scss"
>
/* 表格弹窗 */
.table-dialog-modal
{
padding
:
0
;
/* 关键:覆盖Element Plus对话框的默认最大宽度 */
.el-dialog
{
width
:
100%
!
important
;
max-width
:
none
!
important
;
margin
:
0
!
important
;
height
:
100vh
;
display
:
flex
;
flex-direction
:
column
;
/* 无上下内边距 */
::v-deep
(
.el-table__row
)
{
.el-table__cell
{
padding
:
0
;
.el-dialog__body
{
flex
:
1
;
display
:
flex
;
flex-direction
:
column
;
overflow
:
hidden
!
important
;
.cell
{
padding
:
0
!
important
;
.dialog-table-container
{
flex
:
1
;
height
:
100%
;
.table-container
{
flex
:
1
;
display
:
flex
;
flex-direction
:
column
;
height
:
100%
;
.pagination-container
{
margin-left
:
auto
;
}
}
}
}
}
/* 分页器 */
.pagination-container
{
margin
:
10px
;
}
}
</
style
>
\ No newline at end of file
src/views/promotion/display_schedule/index.vue
浏览文件 @
996665dd
...
...
@@ -41,7 +41,8 @@ import Snack from './tabs/snack.vue'
import
ThreeTwoSeconds
from
'./tabs/three_two_seconds.vue'
import
SixLittleDiamonds
from
'./tabs/six_little_diamonds.vue'
const
activeName
=
ref
(
'常规陈列'
);
// const activeName = ref('常规陈列');
const
activeName
=
ref
(
'档期计划'
);
const
handleClickTabs
=
(
tab
)
=>
{
activeName
.
value
=
tab
.
name
;
}
...
...
src/views/promotion/display_schedule/tabs/display.vue
浏览文件 @
996665dd
...
...
@@ -58,7 +58,7 @@
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
false
,
// 是否为填报列
width
:
9
0
width
:
10
0
},
{
label
:
"销售大区"
,
...
...
@@ -66,7 +66,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"销售战区"
,
...
...
@@ -74,7 +74,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"经销商-省份"
,
...
...
@@ -82,7 +82,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"经销商-城市"
,
...
...
@@ -90,7 +90,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"经销商-代码"
,
...
...
@@ -98,7 +98,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"经销商-类型"
,
...
...
@@ -107,7 +107,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
45
width
:
1
00
},
{
label
:
"开户日期"
,
...
...
@@ -115,7 +115,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"闭户日期"
,
...
...
@@ -123,7 +123,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"大区总监"
,
...
...
@@ -131,7 +131,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"战区经理"
,
...
...
@@ -139,7 +139,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"城市经理"
,
...
...
@@ -147,7 +147,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
// {
// label: "门店名称",
...
...
@@ -177,7 +177,7 @@
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
,
width
:
195
width
:
220
},
{
label
:
"门店编码"
,
...
...
@@ -186,7 +186,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
true
,
width
:
1
25
width
:
1
10
},
{
label
:
"经销商名称"
,
...
...
@@ -196,7 +196,7 @@
type
:
'string'
,
fill
:
true
,
// fixed: 'left',
width
:
2
15
width
:
2
20
},
{
label
:
"系统类型"
,
...
...
@@ -205,7 +205,7 @@
type
:
'string'
,
fill
:
false
,
fixed
:
'left'
,
width
:
9
0
width
:
10
0
},
{
label
:
"门店-省份"
,
...
...
@@ -213,7 +213,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"门店-城市"
,
...
...
@@ -221,7 +221,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"系统名称"
,
...
...
@@ -230,7 +230,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
3
0
width
:
1
0
0
},
{
label
:
"渠道大类"
,
...
...
@@ -239,7 +239,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"渠道小类"
,
...
...
@@ -248,7 +248,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
4
0
width
:
1
0
0
},
{
label
:
"门店类型"
,
...
...
@@ -257,7 +257,7 @@
type
:
'string'
,
showOverflowTooltip
:
true
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"系统业态"
,
...
...
@@ -266,7 +266,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"门店面积"
,
...
...
@@ -275,7 +275,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
4
0
width
:
1
0
0
},
{
label
:
"门店分级(销量坎级)"
,
...
...
@@ -284,7 +284,7 @@
showOverflowTooltip
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
215
width
:
100
},
{
label
:
"门店地址"
,
...
...
@@ -293,7 +293,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
325
width
:
100
},
{
label
:
"品项数"
,
...
...
@@ -301,7 +301,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
8
0
width
:
10
0
}
],
prop
:
'baseColumns'
,
...
...
@@ -316,7 +316,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
55
width
:
1
00
},
{
label
:
"大业态测试-月均POS"
,
...
...
@@ -324,7 +324,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
55
width
:
1
00
}
],
prop
:
'lfColumns'
,
...
...
@@ -341,16 +341,16 @@
visible
:
true
,
type
:
'string'
,
fill
:
true
,
width
:
1
0
0
width
:
1
3
0
},
{
label
:
"主货架单个费用计划"
,
prop
:
"plannedMainShelfUnitCost"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
55
width
:
1
30
},
{
label
:
"主货架总费用计划"
,
...
...
@@ -358,7 +358,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
45
width
:
1
30
},
{
label
:
"主货架形式"
,
...
...
@@ -376,7 +376,7 @@
],
referenceKey
:
"plannedMainShelfType"
,
fill
:
true
,
width
:
1
1
0
,
width
:
1
3
0
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
...
...
@@ -404,7 +404,7 @@
// 请求时需要额外携带影响的列字段值
requestKey
:
[
"actualMainShelfQty"
,
"actualMainShelfExecuted"
,
"regularDisplayExecuted"
]
},
{
{
label
:
"主货架数量"
,
subLabel
:
'计划'
,
prop
:
"plannedMainShelfQty"
,
...
...
@@ -433,12 +433,14 @@
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
{
/* 限制只能输入数字 */
}
if
(
!
/^
\d
*$/
.
test
(
value
))
{
return
;
}
const
numValue
=
value
===
''
?
0
:
Number
(
value
);
row
[
col
.
prop
]
=
numValue
;
submitChange
(
row
,
col
);
}}
min
=
"0"
type
=
"number"
placeholder
=
""
disabled
=
{
!
row
[
col
.
referenceKey
]}
class
=
{{
'no-disabled'
:
row
[
col
.
referenceKey
]
}}
...
...
@@ -450,7 +452,8 @@
requestKey
:
[
"actualMainShelfExecuted"
,
"regularDisplayExecuted"
]
},
{
label
:
"主货架是否执行实际"
,
label
:
"主货架是否"
,
subLabel
:
'按计划执行'
,
prop
:
"actualMainShelfExecuted"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -476,7 +479,7 @@
},
formulaStr
:
'公式:(实际主货架形式 >= 计划主货架形式)并且(实际主货架数量 >= 计划主货架数量)'
,
fill
:
true
,
width
:
1
7
0
width
:
1
3
0
},
{
label
:
"端架数量"
,
...
...
@@ -485,7 +488,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
true
,
width
:
1
15
width
:
1
30
},
{
label
:
"端架总费用计划"
,
...
...
@@ -501,7 +504,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
4
0
width
:
1
3
0
},
{
label
:
"端架数量"
,
...
...
@@ -517,7 +520,7 @@
],
referenceKey
:
"plannedEndCapQty"
,
fill
:
true
,
width
:
1
15
,
width
:
1
30
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
...
...
@@ -550,7 +553,8 @@
requestKey
:
[
"actualEndCapExecuted"
,
"regularDisplayExecuted"
]
},
{
label
:
"端架是否执行实际"
,
label
:
"端架是否"
,
subLabel
:
'按计划执行'
,
prop
:
"actualEndCapExecuted"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -565,7 +569,7 @@
},
formulaStr
:
'公式:(实际端架数量 >= 计划端架数量)'
,
fill
:
true
,
width
:
1
55
width
:
1
30
},
{
label
:
"地堆平米数(㎡)"
,
...
...
@@ -574,16 +578,16 @@
visible
:
true
,
type
:
'string'
,
fill
:
true
,
width
:
1
7
0
width
:
1
3
0
},
{
label
:
"主题地堆是否计划"
,
prop
:
"plannedThemedFloorStack"
,
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
4
0
width
:
1
3
0
},
{
label
:
"地堆总费用计划"
,
...
...
@@ -599,7 +603,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
6
0
width
:
1
3
0
},
{
label
:
"地堆平米数(㎡)"
,
...
...
@@ -620,7 +624,7 @@
],
referenceKey
:
"plannedFloorStackArea"
,
fill
:
true
,
width
:
1
7
0
,
width
:
1
3
0
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
...
...
@@ -659,7 +663,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
true
,
width
:
1
15
width
:
1
30
},
{
label
:
"地堆数量"
,
...
...
@@ -676,7 +680,7 @@
],
referenceKey
:
"plannedFloorStackQty"
,
fill
:
true
,
width
:
1
15
,
width
:
1
30
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
...
...
@@ -719,7 +723,7 @@
{
label
:
'否'
,
value
:
'否'
}
],
fill
:
false
,
width
:
1
4
0
,
width
:
1
3
0
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
...
...
@@ -744,7 +748,8 @@
}
},
{
label
:
"地堆是否执行实际"
,
label
:
"地堆是否"
,
subLabel
:
'按计划执行'
,
prop
:
"actualFloorStackExecuted"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -759,7 +764,7 @@
},
formulaStr
:
'公式:(实际地堆平米数 >= 计划地堆平米数)并且(实际地堆数量 >= 计划地堆数量)'
,
fill
:
true
,
width
:
1
5
0
width
:
1
3
0
},
{
label
:
"多点陈列数量形式"
,
...
...
@@ -768,7 +773,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
true
,
width
:
1
75
width
:
1
30
},
{
label
:
"多点陈列总费用计划"
,
...
...
@@ -776,7 +781,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
55
width
:
1
30
},
{
label
:
"多点陈列数量形式"
,
...
...
@@ -790,7 +795,7 @@
],
referenceKey
:
"plannedMultiDisplay"
,
fill
:
true
,
width
:
1
75
,
width
:
1
30
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
...
...
@@ -819,7 +824,8 @@
requestKey
:
[
"actualMultiDisplayExecuted"
]
},
{
label
:
"多点陈列是否执行实际"
,
label
:
"多点陈列是否"
,
subLabel
:
'按计划执行'
,
prop
:
"actualMultiDisplayExecuted"
,
referenceKey
:
'actualMultiDisplay'
,
visible
:
true
,
...
...
@@ -835,7 +841,7 @@
},
formulaStr
:
'公式:实际与计划是否一致'
,
fill
:
true
,
width
:
1
8
0
,
width
:
1
4
0
,
},
{
label
:
"挂条数量形式"
,
...
...
@@ -844,7 +850,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
true
,
width
:
1
75
width
:
1
30
},
{
label
:
"挂条数量形式"
,
...
...
@@ -858,7 +864,7 @@
],
referenceKey
:
"plannedHangingStripQuantityForm"
,
fill
:
true
,
width
:
1
75
,
width
:
1
30
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
...
...
@@ -887,7 +893,8 @@
requestKey
:
[
"actualMultiDisplayExecuted"
]
},
{
label
:
"挂条-是否执行"
,
label
:
"挂条是否"
,
subLabel
:
'按计划执行'
,
prop
:
"hangingStripExecuted"
,
referenceKey
:
'actualHangingStripQuantityForm'
,
visible
:
true
,
...
...
@@ -903,7 +910,7 @@
},
formulaStr
:
'公式:实际与计划是否一致'
,
fill
:
true
,
width
:
1
8
0
,
width
:
1
3
0
,
},
{
label
:
"合计费用-费用"
,
...
...
@@ -911,7 +918,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
15
width
:
1
30
},
{
label
:
"合计费用-费率"
,
...
...
@@ -919,7 +926,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
15
width
:
1
30
},
// {
// label: "常规陈列是否执行",
...
...
@@ -958,7 +965,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
2
0
width
:
1
3
0
},
{
label
:
"当月拜访目标计划"
,
...
...
@@ -966,7 +973,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
13
5
width
:
13
0
},
{
label
:
"当月是否拜访实际"
,
...
...
@@ -974,7 +981,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
13
5
width
:
13
0
},
{
label
:
'修改人'
,
...
...
@@ -982,7 +989,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
2
0
width
:
1
0
0
},
{
label
:
'修改时间'
,
...
...
@@ -990,7 +997,7 @@
visible
:
true
,
type
:
'string'
,
fill
:
false
,
width
:
1
8
0
width
:
1
0
0
}
],
visible
:
true
...
...
@@ -1072,7 +1079,7 @@
const
isLoading
=
ref
(
true
)
let
params
=
reactive
({
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
const
total
=
ref
(
0
)
...
...
src/views/promotion/display_schedule/tabs/schedule.vue
浏览文件 @
996665dd
...
...
@@ -66,32 +66,31 @@
{
label
:
"基础信息"
,
children
:
[
{
label
:
'操作提示'
,
prop
:
'operationTip'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
100
,
onlyFill
:
true
,
// 只在填报列显示
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
class
=
"operation_tip_cell"
>
<
p
>
计划
<
/p
>
<
p
>
实际
<
/p
>
<
/div
>
)
}
},
//
{
//
label: '操作提示',
//
prop: 'operationTip', // 列属性
//
visible: true, // 是否显示
//
type: 'string', // 列类型
//
fill: true, // 是否为填报列
//
fixed: 'left', // 是否固定在左侧
//
width: 100,
//
onlyFill: true, // 只在填报列显示
//
render: (_, row, col) => {
//
return (
//
<
div
class
=
"operation_tip_cell"
>
//
<
p
>
计划
<
/p
>
//
<
p
>
实际
<
/p
>
//
<
/div
>
//
)
//
}
//
},
{
label
:
'计划月份'
,
prop
:
'salesMonth'
,
visible
:
true
,
type
:
'string'
,
fill
:
true
,
fixed
:
'left'
,
width
:
90
fill
:
false
,
width
:
100
},
{
label
:
"销售大区"
,
...
...
@@ -99,7 +98,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"销售战区"
,
...
...
@@ -107,7 +106,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"经销商-省份"
,
...
...
@@ -115,7 +114,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"经销商-城市"
,
...
...
@@ -123,7 +122,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"经销商-代码"
,
...
...
@@ -131,7 +130,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"经销商名称"
,
...
...
@@ -150,7 +149,7 @@
showOverflowTooltip
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
1
55
width
:
1
00
},
{
label
:
"开户日期"
,
...
...
@@ -158,7 +157,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"闭户日期"
,
...
...
@@ -166,7 +165,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
10
5
width
:
10
0
},
{
label
:
"大区总监"
,
...
...
@@ -174,7 +173,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"战区经理"
,
...
...
@@ -182,7 +181,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"城市经理"
,
...
...
@@ -190,7 +189,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"系统名称"
,
...
...
@@ -198,18 +197,16 @@
visible
:
true
,
type
:
"string"
,
fill
:
true
,
fixed
:
'left'
,
showOverflowTooltip
:
true
,
// fixed: 'left',
width
:
100
},
{
label
:
"系统类型"
,
prop
:
"lineType"
,
showOverflowTooltip
:
true
,
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"渠道大类"
,
...
...
@@ -218,7 +215,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"渠道小类"
,
...
...
@@ -227,7 +224,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
1
4
0
width
:
1
0
0
},
{
label
:
"系统业态"
,
...
...
@@ -236,7 +233,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
9
0
width
:
10
0
},
{
label
:
"门店数"
,
...
...
@@ -244,7 +241,7 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
75
width
:
100
}
],
prop
:
'baseColumns'
,
...
...
@@ -259,28 +256,21 @@
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
1
1
0
width
:
1
0
0
},
{
label
:
"档期计划-促销规格"
,
label
:
"档期促销规格"
,
subLabel
:
'计划'
,
prop
:
"plannedPromotionSpec"
,
showOverflowTooltip
:
true
,
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
140
},
{
label
:
"档期计划-促销口味"
,
prop
:
"plannedPromotionFlavor"
,
showOverflowTooltip
:
true
,
visible
:
true
,
type
:
"string"
,
fill
:
false
,
width
:
140
fill
:
true
,
width
:
150
},
{
label
:
"档期执行-促销规格"
,
label
:
"档期促销规格"
,
subLabel
:
'实际'
,
prop
:
"actualPromotionSpec"
,
visible
:
true
,
type
:
'select'
,
...
...
@@ -320,7 +310,7 @@
],
referenceKey
:
"plannedPromotionSpec"
,
fill
:
true
,
width
:
1
9
0
,
width
:
1
5
0
,
render
:
(
_
,
row
,
col
)
=>
{
let
list
=
splitAndFilter
(
row
[
col
.
referenceKey
])
list
=
list
.
map
(
item
=>
({
...
...
@@ -332,7 +322,7 @@
}])
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
el
-
select
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{
async
(
value
)
=>
{
row
[
col
.
prop
]
=
value
;
...
...
@@ -399,7 +389,7 @@
<
div
>
{
row
.
actualPromotionSpec
!==
'其他'
?
(
<
div
style
=
"width: 100%; text-align: center;"
>-<
/div>
)
:
(
<
el
-
input
style
=
"margin-top:24px;"
modelValue
=
{
row
[
col
.
prop
]}
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
row
[
col
.
prop
]
=
value
;
submitChange
(
row
,
col
);
...
...
@@ -413,10 +403,11 @@
)
},
fill
:
true
,
width
:
1
4
0
width
:
1
5
0
},
{
label
:
"档期规格是否执行"
,
label
:
"档期规格是否"
,
subLabel
:
'按计划执行'
,
prop
:
"specExecutionStatus"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -434,14 +425,24 @@
width
:
150
},
{
label
:
"档期执行-促销口味"
,
label
:
"档期促销口味"
,
subLabel
:
'计划'
,
prop
:
"plannedPromotionFlavor"
,
visible
:
true
,
type
:
"string"
,
fill
:
true
,
width
:
150
},
{
label
:
"档期促销口味"
,
subLabel
:
'实际'
,
prop
:
"actualPromotionFlavor"
,
visible
:
true
,
type
:
'select'
,
options
:
[],
referenceKey
:
"plannedPromotionFlavor"
,
fill
:
true
,
width
:
1
7
0
,
width
:
1
5
0
,
render
:
(
_
,
row
,
col
)
=>
{
// options 根据参考属性值来决定(计划值)
let
list
=
splitAndFilter
(
row
[
col
.
referenceKey
])
...
...
@@ -472,11 +473,11 @@
// span 标签超出宽度时显示省略号
return
(
<
div
>
<
el
-
tooltip
placement
=
"top"
content
=
{
row
[
col
.
referenceKey
]
||
'-'
}
disabled
=
{
!
isContentOverflow
(
col
.
referenceKey
,
row
[
col
.
referenceKey
],
col
)}
>
{
/*
<el-tooltip placement="top" content={row[col.referenceKey] || '-'} disabled={!isContentOverflow(col.referenceKey, row[col.referenceKey], col)}>
<span >
{row[col.referenceKey] || '-'}
</span>
<
/el-tooltip
>
</el-tooltip>
*/
}
<
el
-
select
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{
async
(
value
)
=>
{
row
[
col
.
prop
]
=
value
;
...
...
@@ -546,7 +547,7 @@
<
div
>
{
row
.
actualPromotionFlavor
.
includes
(
'其他'
)
?
(
<
el
-
input
style
=
"margin-top: 24px;"
modelValue
=
{
row
[
col
.
prop
]}
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
row
[
col
.
prop
]
=
value
;
submitChange
(
row
,
col
);
...
...
@@ -560,10 +561,11 @@
)
},
fill
:
true
,
width
:
1
7
0
,
width
:
1
5
0
,
},
{
label
:
"档期口味是否执行"
,
label
:
"档期口味是否"
,
subLabel
:
'按计划执行'
,
prop
:
"flavorExecutionStatus"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -674,12 +676,13 @@
width
:
155
},
{
label
:
"计划-档期开始时间"
,
label
:
"档期开始时间"
,
subLabel
:
'计划'
,
prop
:
"plannedPromotionStartDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
fals
e
,
width
:
1
4
0
fill
:
tru
e
,
width
:
1
5
0
},
{
label
:
"计划-补差开始时间"
,
...
...
@@ -690,17 +693,18 @@
width
:
140
},
{
label
:
"实际-档期开始时间"
,
label
:
"档期开始时间"
,
subLabel
:
'实际'
,
prop
:
"actualPromotionStartDate"
,
visible
:
true
,
type
:
'date'
,
referenceKey
:
"plannedPromotionStartDate"
,
fill
:
true
,
width
:
1
4
0
,
width
:
1
5
0
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
div
class
=
{[
'date-picker'
,
{
'no-disabled'
:
row
[
col
.
referenceKey
]
}]}
>
<
el
-
date
-
picker
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
...
...
@@ -719,12 +723,13 @@
requestKey
:
[
"timeExecutionStatus"
,
'promotionImplementationStatus'
]
},
{
label
:
"计划-档期结束时间"
,
label
:
"档期结束时间"
,
subLabel
:
'计划'
,
prop
:
"plannedPromotionEndDate"
,
visible
:
true
,
type
:
"string"
,
fill
:
fals
e
,
width
:
1
4
0
,
fill
:
tru
e
,
width
:
1
5
0
,
},
{
label
:
"计划-补差结束时间"
,
...
...
@@ -735,17 +740,18 @@
width
:
140
},
{
label
:
"实际-档期结束时间"
,
label
:
"档期结束时间"
,
subLabel
:
'实际'
,
prop
:
"actualPromotionEndDate"
,
visible
:
true
,
type
:
'date'
,
fill
:
true
,
referenceKey
:
"plannedPromotionEndDate"
,
width
:
1
4
0
,
width
:
1
5
0
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
div
class
=
{[
'date-picker'
,
{
'no-disabled'
:
row
[
col
.
referenceKey
]
}]}
>
<
el
-
date
-
picker
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
...
...
@@ -764,7 +770,8 @@
requestKey
:
[
"timeExecutionStatus"
,
'promotionImplementationStatus'
]
},
{
label
:
"档期是否开展"
,
label
:
"档期是否"
,
subLabel
:
'按计划执行'
,
prop
:
"promotionImplementationStatus"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -774,15 +781,16 @@
row
.
promotionImplementationStatus
=
'-'
;
return
'-'
;
}
row
.
promotionImplementationStatus
=
row
.
actualPromotionStartDate
&&
row
.
actualPromotionEndDate
?
'
是'
:
'否
'
;
row
.
promotionImplementationStatus
=
row
.
actualPromotionStartDate
&&
row
.
actualPromotionEndDate
?
'
执行'
:
'未执行
'
;
return
row
.
promotionImplementationStatus
;
},
formulaStr
:
'公式:(实际档期开始时间不为空,并且实际档期结束时间不为空)'
,
fill
:
true
,
width
:
1
25
width
:
1
50
},
{
label
:
"时间是否执行"
,
label
:
"时间是否"
,
subLabel
:
'按计划执行'
,
prop
:
"timeExecutionStatus"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -797,24 +805,26 @@
},
formulaStr
:
'公式:(实际档期开始时间 = 计划档期开始时间,并且实际档期结束时间 = 计划档期结束时间)'
,
fill
:
true
,
width
:
1
25
width
:
1
50
},
{
label
:
"计划促销机制"
,
label
:
"促销机制"
,
subLabel
:
'计划'
,
prop
:
"plannedPromotionMechanism"
,
visible
:
true
,
type
:
"string"
,
fill
:
fals
e
,
width
:
1
15
fill
:
tru
e
,
width
:
1
50
},
{
label
:
"实际促销机制"
,
label
:
"促销机制"
,
subLabel
:
'实际'
,
prop
:
"actualPromotionMechanism"
,
visible
:
true
,
type
:
'select'
,
referenceKey
:
"plannedPromotionMechanism"
,
fill
:
true
,
width
:
1
85
,
width
:
1
90
,
options
:
[
{
label
:
'执行与计划一致'
,
...
...
@@ -828,7 +838,7 @@
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
div
style
=
"width: 100%"
>
<
el
-
select
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{
async
(
value
)
=>
{
...
...
@@ -891,7 +901,7 @@
<
div
>
{
row
.
actualPromotionMechanism
!==
'执行与计划不一致'
?
(
<
div
style
=
"width: 100%; text-align: center;"
>-<
/div>
)
:
(
<
el
-
input
style
=
"margin-top: 24px;"
modelValue
=
{
row
[
col
.
prop
]}
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
row
[
col
.
prop
]
=
value
;
submitChange
(
row
,
col
);
...
...
@@ -905,7 +915,7 @@
)
},
fill
:
true
,
width
:
20
0
width
:
15
0
},
// {
// label: "促销机制是否执行",
...
...
@@ -923,7 +933,7 @@
// },
// formulaStr: '公式:实际促销机制,是否有值',
// fill: true,
// width: 1
45
,
// width: 1
50
,
// },
{
label
:
"预估袋数"
,
...
...
@@ -1023,7 +1033,8 @@
// requestKey: ["promotionPriceExecutionStatus"]
// },
{
label
:
"促销价是否执行"
,
label
:
"促销价是否"
,
subLabel
:
'按计划执行'
,
prop
:
"promotionPriceExecutionStatus"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -1033,7 +1044,7 @@
},
formulaStr
:
'公式:(计划促销机制 = 执行促销机制)'
,
fill
:
true
,
width
:
1
4
0
width
:
1
5
0
},
{
label
:
"正常经销商毛利现状"
,
...
...
@@ -1129,12 +1140,13 @@
prop
:
'posterPlan'
,
children
:
[
{
label
:
"计划-海报形式"
,
label
:
"海报形式"
,
subLabel
:
'计划'
,
prop
:
"plannedPosterFormat"
,
visible
:
true
,
type
:
"string"
,
fill
:
fals
e
,
width
:
1
15
fill
:
tru
e
,
width
:
1
50
},
{
label
:
"计划-海报费用"
,
...
...
@@ -1145,7 +1157,8 @@
width
:
115
},
{
label
:
"实际-海报形式"
,
label
:
"海报形式"
,
subLabel
:
'实际'
,
prop
:
"actualPosterFormat"
,
visible
:
true
,
type
:
'select'
,
...
...
@@ -1177,11 +1190,10 @@
],
referenceKey
:
"plannedPosterFormat"
,
fill
:
true
,
width
:
1
15
,
width
:
1
50
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
<
div
style
=
"width: 100%"
>
<
el
-
select
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
...
...
@@ -1189,7 +1201,7 @@
submitChange
(
row
,
col
);
}}
disabled
=
{
!
row
[
col
.
referenceKey
]}
class
=
{{
'no-disabled'
:
row
[
col
.
referenceKey
]
}}
class
=
{{
'no-disabled'
:
row
[
col
.
referenceKey
]
}}
placeholder
=
""
clearable
>
...
...
@@ -1204,7 +1216,8 @@
requestKey
:
[
"posterExecutionStatus"
]
},
{
label
:
"海报是否执行"
,
label
:
"海报是否"
,
subLabel
:
'按计划执行'
,
prop
:
"posterExecutionStatus"
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -1216,7 +1229,7 @@
},
formulaStr
:
'公式:(计划海报形式 = 实际海报形式)'
,
fill
:
true
,
width
:
1
25
width
:
1
50
}
],
visible
:
true
...
...
@@ -1343,7 +1356,7 @@
const
isLoading
=
ref
(
true
)
let
params
=
reactive
({
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
const
total
=
ref
(
0
)
...
...
src/views/promotion/display_schedule/tabs/schedule_dis.vue
浏览文件 @
996665dd
...
...
@@ -34,32 +34,31 @@
{
label
:
"基础信息"
,
// 类型标题(用于右上角控制显隐列)
children
:
[
{
label
:
'操作提示'
,
// 列标题
prop
:
'operationTip'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否在填报模式显示
fixed
:
'left'
,
// 是否固定在左侧
width
:
100
,
// 列宽度
onlyFill
:
true
,
// 只在填报列显示(展示模式不显示)
render
:
(
_
,
row
,
col
)
=>
{
// 列自定义渲染内容
return
(
<
div
class
=
"operation_tip_cell"
>
<
p
>
计划
<
/p
>
<
p
>
实际
<
/p
>
<
/div
>
)
}
},
//
{
//
label: '操作提示', // 列标题
//
prop: 'operationTip', // 列属性
//
visible: true, // 是否显示
//
type: 'string', // 列类型
//
fill: true, // 是否在填报模式显示
//
fixed: 'left', // 是否固定在左侧
//
width: 100, // 列宽度
//
onlyFill: true, // 只在填报列显示(展示模式不显示)
//
render: (_, row, col) => { // 列自定义渲染内容
//
return (
//
<
div
class
=
"operation_tip_cell"
>
//
<
p
>
计划
<
/p
>
//
<
p
>
实际
<
/p
>
//
<
/div
>
//
)
//
}
//
},
{
label
:
'计划月份'
,
// 列标题
prop
:
'salesMonth'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
90
fill
:
false
,
// 是否为填报列
width
:
100
},
{
"label"
:
"销售大区"
,
...
...
@@ -167,7 +166,7 @@
"type"
:
"string"
,
"fill"
:
true
,
"width"
:
100
,
fixed
:
'left'
//
fixed: 'left'
},
{
"label"
:
"系统类型"
,
...
...
@@ -372,11 +371,12 @@
// "width": 280
// },
{
"label"
:
"计划端架 - 数量"
,
"label"
:
"端架数量"
,
"subLabel"
:
'计划'
,
"prop"
:
"plannedEndCapQty"
,
"visible"
:
true
,
"type"
:
"string"
,
"fill"
:
fals
e
,
"fill"
:
tru
e
,
"width"
:
140
},
// {
...
...
@@ -388,7 +388,8 @@
// "width": 140
// },
{
"label"
:
"实际端架 - 数量"
,
"label"
:
"端架数量"
,
"subLabel"
:
'实际'
,
"prop"
:
"actualEndCapQty"
,
"visible"
:
true
,
"type"
:
"select"
,
...
...
@@ -414,7 +415,7 @@
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
el
-
select
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
if
(
!
value
)
{
...
...
@@ -443,12 +444,13 @@
requestKey
:
[
"actualEndCapExecuted"
,
"promotionDisplayExecuted"
]
},
{
"label"
:
"实际端架 - 是否执行"
,
"label"
:
"端架是否"
,
"subLabel"
:
'按计划执行'
,
"prop"
:
"actualEndCapExecuted"
,
"visible"
:
true
,
"type"
:
"formula"
,
"fill"
:
true
,
"width"
:
1
6
0
,
"width"
:
1
4
0
,
func
:
(
row
)
=>
{
// 如果计划端架数量为空则返回 '-'
if
(
!
row
.
plannedEndCapQty
)
{
...
...
@@ -461,21 +463,15 @@
formulaStr
:
"执行端架数量 >= 计划端架数量"
},
{
"label"
:
"计划地堆 - 平米数(㎡)"
,
"label"
:
"地堆平米数(㎡)"
,
"subLabel"
:
'计划'
,
"prop"
:
"plannedFloorStackArea"
,
"visible"
:
true
,
"type"
:
"string"
,
"fill"
:
false
,
"width"
:
180
},
{
"label"
:
"计划地堆 - 数量"
,
"prop"
:
"plannedFloorStackQty"
,
"visible"
:
true
,
"type"
:
"string"
,
"fill"
:
false
,
"fill"
:
true
,
"width"
:
140
},
// {
// "label": "计划地堆 - 费用",
// "prop": "plannedFloorStackTotalCost",
...
...
@@ -485,12 +481,13 @@
// "width": 140
// },
{
"label"
:
"实际地堆 - 平米数(㎡)"
,
"label"
:
"地堆平米数(㎡)"
,
"subLabel"
:
'实际'
,
"prop"
:
"actualFloorStackArea"
,
"visible"
:
true
,
"type"
:
"input"
,
"fill"
:
true
,
"width"
:
1
8
0
,
"width"
:
1
4
0
,
referenceKey
:
"plannedFloorStackArea"
,
// "options": [
// {
...
...
@@ -529,7 +526,7 @@
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
// 判断空字符串给 0
...
...
@@ -550,7 +547,17 @@
requestKey
:
[
"actualFloorStackExecuted"
,
"promotionDisplayExecuted"
]
},
{
"label"
:
"实际地堆 - 数量"
,
"label"
:
"地堆数量"
,
"subLabel"
:
'计划'
,
"prop"
:
"plannedFloorStackQty"
,
"visible"
:
true
,
"type"
:
"string"
,
"fill"
:
true
,
"width"
:
140
},
{
"label"
:
"地堆数量"
,
"subLabel"
:
'实际'
,
"prop"
:
"actualFloorStackQty"
,
"visible"
:
true
,
"type"
:
"input"
,
...
...
@@ -583,7 +590,7 @@
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
const
numValue
=
value
===
''
?
0
:
Number
(
value
);
...
...
@@ -603,12 +610,13 @@
requestKey
:
[
"actualFloorStackExecuted"
,
"promotionDisplayExecuted"
]
},
{
"label"
:
"实际地堆是否执行"
,
"label"
:
"地堆是否"
,
"subLabel"
:
'按计划执行'
,
"prop"
:
"actualFloorStackExecuted"
,
"visible"
:
true
,
"type"
:
"formula"
,
"fill"
:
true
,
"width"
:
1
5
0
,
"width"
:
1
4
0
,
func
:
(
row
)
=>
{
// 如果计划端架数量为空则返回 '-'
if
(
!
row
.
plannedFloorStackArea
||
!
row
.
plannedFloorStackQty
)
{
...
...
@@ -621,12 +629,13 @@
formulaStr
:
"执行平米数 >= 计划平米数,并且 执行地堆数量 >= 计划地堆数量"
},
{
"label"
:
"计划其他陈列数量 + 形式"
,
"label"
:
"其他陈列数量+形式"
,
"subLabel"
:
'计划'
,
"prop"
:
"plannedOtherDisplay"
,
"visible"
:
true
,
"type"
:
"string"
,
"fill"
:
fals
e
,
"width"
:
1
8
0
"fill"
:
tru
e
,
"width"
:
1
4
0
},
// {
// "label": "计划其他陈列 - 总费用",
...
...
@@ -637,7 +646,8 @@
// "width": 160
// },
{
"label"
:
"实际其他陈列 - 数量 + 形式"
,
"label"
:
"其他陈列数量+形式"
,
"subLabel"
:
'实际'
,
"prop"
:
"actualOtherDisplay"
,
"visible"
:
true
,
"type"
:
"select"
,
...
...
@@ -651,7 +661,7 @@
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
el
-
select
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
row
[
col
.
prop
]
=
value
;
...
...
@@ -676,12 +686,13 @@
requestKey
:
[
"actualOtherDisplayExecuted"
,
"promotionDisplayExecuted"
]
},
{
"label"
:
"实际其他陈列 - 是否执行"
,
"label"
:
"其他陈列是否"
,
"subLabel"
:
'按计划执行'
,
"prop"
:
"actualOtherDisplayExecuted"
,
"visible"
:
true
,
"type"
:
"formula"
,
"fill"
:
true
,
"width"
:
1
9
0
,
"width"
:
1
4
0
,
func
:
(
row
)
=>
{
if
(
!
row
.
plannedOtherDisplay
)
{
row
.
actualOtherDisplayExecuted
=
'-'
...
...
@@ -828,7 +839,7 @@
const
isLoading
=
ref
(
true
)
let
params
=
reactive
({
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
const
total
=
ref
(
0
)
...
...
src/views/promotion/display_schedule/tabs/six_little_diamonds.vue
浏览文件 @
996665dd
...
...
@@ -34,32 +34,31 @@
{
label
:
"基础信息"
,
children
:
[
{
label
:
'操作提示'
,
prop
:
'operationTip'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
100
,
onlyFill
:
true
,
// 只在填报列显示
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
class
=
"operation_tip_cell"
>
<
p
>
计划
<
/p
>
<
p
>
实际
<
/p
>
<
/div
>
)
}
},
//
{
//
label: '操作提示',
//
prop: 'operationTip', // 列属性
//
visible: true, // 是否显示
//
type: 'string', // 列类型
//
fill: true, // 是否为填报列
//
fixed: 'left', // 是否固定在左侧
//
width: 100,
//
onlyFill: true, // 只在填报列显示
//
render: (_, row, col) => {
//
return (
//
<
div
class
=
"operation_tip_cell"
>
//
<
p
>
计划
<
/p
>
//
<
p
>
实际
<
/p
>
//
<
/div
>
//
)
//
}
//
},
{
label
:
'计划月份'
,
// 列标题
prop
:
'salesMonth'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
90
fill
:
false
,
// 是否为填报列
width
:
100
},
{
label
:
'销售大区'
,
...
...
@@ -225,15 +224,17 @@
label
:
"六小金刚批发挂网"
,
children
:
[
{
label
:
'计划执行-六小金刚批发挂网'
,
label
:
'六小金刚批发挂网'
,
subLabel
:
'计划'
,
prop
:
'plannedGw6'
,
visible
:
true
,
type
:
'string'
,
fill
:
fals
e
,
width
:
18
0
fill
:
tru
e
,
width
:
21
0
},
{
label
:
'实际执行-六小金刚批发挂网'
,
label
:
'六小金刚批发挂网'
,
subLabel
:
'实际'
,
prop
:
'actualGw6'
,
referenceKey
:
'plannedGw6'
,
visible
:
true
,
...
...
@@ -247,8 +248,8 @@
// ],
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
<
div
style
=
"padding: 10px 0;"
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
const
numValue
=
value
===
''
?
0
:
Number
(
value
);
...
...
@@ -266,7 +267,7 @@
)
},
fill
:
true
,
width
:
19
0
width
:
21
0
},
{
label
:
'六小金刚批发挂网陈列费'
,
...
...
@@ -277,7 +278,8 @@
width
:
160
},
{
label
:
'六小金刚批发挂网-是否执行'
,
label
:
'六小金刚批发挂网是否'
,
subLabel
:
'按实际执行'
,
prop
:
'gwExecuted6'
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -357,7 +359,7 @@
const
params
=
ref
({
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
const
showFill
=
ref
(
true
)
const
getTableList
=
()
=>
{
...
...
src/views/promotion/display_schedule/tabs/snack.vue
浏览文件 @
996665dd
...
...
@@ -33,32 +33,31 @@
{
label
:
"基础信息"
,
children
:
[
{
label
:
'操作提示'
,
prop
:
'operationTip'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
100
,
onlyFill
:
true
,
// 只在填报列显示
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
class
=
"operation_tip_cell"
>
<
p
>
计划
<
/p
>
<
p
>
实际
<
/p
>
<
/div
>
)
}
},
//
{
//
label: '操作提示',
//
prop: 'operationTip', // 列属性
//
visible: true, // 是否显示
//
type: 'string', // 列类型
//
fill: true, // 是否为填报列
//
fixed: 'left', // 是否固定在左侧
//
width: 100,
//
onlyFill: true, // 只在填报列显示
//
render: (_, row, col) => {
//
return (
//
<
div
class
=
"operation_tip_cell"
>
//
<
p
>
计划
<
/p
>
//
<
p
>
实际
<
/p
>
//
<
/div
>
//
)
//
}
//
},
{
label
:
'计划月份'
,
// 列标题
prop
:
'salesMonth'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
90
fill
:
false
,
// 是否为填报列
width
:
100
},
{
"label"
:
"销售大区"
,
...
...
@@ -250,15 +249,17 @@
"width"
:
280
},
{
"label"
:
"计划 - 陈列形式"
,
"label"
:
"陈列形式"
,
subLabel
:
'计划'
,
"prop"
:
"plannedDisplay"
,
"visible"
:
true
,
"type"
:
"string"
,
"fill"
:
fals
e
,
"width"
:
1
4
0
"fill"
:
tru
e
,
"width"
:
1
9
0
},
{
"label"
:
"实际 - 陈列形式"
,
"label"
:
"陈列形式"
,
subLabel
:
'实际'
,
"prop"
:
"actualDisplay"
,
"visible"
:
true
,
"type"
:
"input"
,
...
...
@@ -276,7 +277,7 @@
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
div
style
=
"width: 100%"
>
<
el
-
select
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
...
...
@@ -297,7 +298,7 @@
)
},
"fill"
:
true
,
"width"
:
1
6
0
,
"width"
:
1
9
0
,
// "options": [
// {
// "label": "端架",
...
...
@@ -360,15 +361,17 @@
// formulaStr: "实际陈列形式 === 计划陈列形式"
// },
{
"label"
:
"计划 - 端架数量(组)"
,
"label"
:
"端架数量(组)"
,
subLabel
:
'计划'
,
"prop"
:
"plannedEndCapQty"
,
"visible"
:
true
,
"type"
:
"string"
,
"fill"
:
fals
e
,
"width"
:
1
6
0
"fill"
:
tru
e
,
"width"
:
1
9
0
},
{
"label"
:
"实际 - 端架数量(组)"
,
"label"
:
"端架数量(组)"
,
subLabel
:
'实际'
,
"prop"
:
"actualEndCapQty"
,
"visible"
:
true
,
"type"
:
"input"
,
...
...
@@ -395,7 +398,6 @@
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
<
div
>
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
...
...
@@ -414,7 +416,7 @@
<
/div
>
)
},
"width"
:
1
6
0
,
"width"
:
1
9
0
,
// requestKey: ["endCapQtyExecuted", "snackDisplayExecuted"]
requestKey
:
[
"endCapQtyExecuted"
]
},
...
...
@@ -621,7 +623,7 @@
const
isLoading
=
ref
(
true
)
let
params
=
reactive
({
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
const
total
=
ref
(
0
)
...
...
src/views/promotion/display_schedule/tabs/three_two_seconds.vue
浏览文件 @
996665dd
...
...
@@ -37,32 +37,31 @@
{
label
:
"基础信息"
,
children
:
[
{
label
:
'操作提示'
,
prop
:
'operationTip'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
100
,
onlyFill
:
true
,
// 只在填报列显示
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
class
=
"operation_tip_cell"
>
<
p
>
计划
<
/p
>
<
p
>
实际
<
/p
>
<
/div
>
)
}
},
//
{
//
label: '操作提示',
//
prop: 'operationTip', // 列属性
//
visible: true, // 是否显示
//
type: 'string', // 列类型
//
fill: true, // 是否为填报列
//
fixed: 'left', // 是否固定在左侧
//
width: 100,
//
onlyFill: true, // 只在填报列显示
//
render: (_, row, col) => {
//
return (
//
<
div
class
=
"operation_tip_cell"
>
//
<
p
>
计划
<
/p
>
//
<
p
>
实际
<
/p
>
//
<
/div
>
//
)
//
}
//
},
{
label
:
'计划月份'
,
// 列标题
prop
:
'salesMonth'
,
// 列属性
visible
:
true
,
// 是否显示
type
:
'string'
,
// 列类型
fill
:
true
,
// 是否为填报列
fixed
:
'left'
,
// 是否固定在左侧
width
:
90
fill
:
false
,
// 是否为填报列
width
:
100
},
{
label
:
'销售大区'
,
...
...
@@ -228,12 +227,13 @@
label
:
"60g挂条陈列"
,
children
:
[
{
label
:
'计划-60g挂条陈列数量'
,
label
:
'60g挂条陈列数量'
,
subLabel
:
'计划'
,
prop
:
'plannedDisplayQty60'
,
visible
:
true
,
type
:
'string'
,
fill
:
fals
e
,
width
:
16
0
fill
:
tru
e
,
width
:
20
0
},
{
label
:
'60g挂条陈列费'
,
...
...
@@ -244,19 +244,20 @@
width
:
140
},
{
label
:
'实际-60g挂条陈列数量'
,
label
:
'60g挂条陈列数量'
,
subLabel
:
'实际'
,
prop
:
'actualDisplayQty60'
,
referenceKey
:
'plannedDisplayQty60'
,
visible
:
true
,
type
:
'input'
,
fill
:
true
,
width
:
16
0
,
width
:
20
0
,
render
:
(
_
,
row
,
col
)
=>
{
return
(
<
div
>
<
span
>
{
row
[
col
.
referenceKey
]
||
'-'
}
<
/span
>
<
div
style
=
"padding: 10px 0;"
>
{
/* <span>{row[col.referenceKey] || '-'}</span> */
}
<
div
>
<
el
-
input
<
el
-
input
modelValue
=
{
row
[
col
.
prop
]}
onUpdate
:
modelValue
=
{(
value
)
=>
{
const
numValue
=
value
===
''
?
0
:
Number
(
value
);
...
...
@@ -278,7 +279,8 @@
},
// 60g挂条陈列-是否执行
{
label
:
'60g挂条陈列-是否执行'
,
label
:
'60g挂条陈列是否'
,
subLabel
:
'按计划执行'
,
prop
:
'displayQtyExecuted60'
,
visible
:
true
,
type
:
'formula'
,
...
...
@@ -358,7 +360,7 @@
const
params
=
ref
({
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
})
const
showFill
=
ref
(
true
)
const
getTableList
=
()
=>
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论