Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
5f33bbc9
提交
5f33bbc9
authored
12月 04, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'ap' into dev
上级
fd207a95
e8ca781b
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
158 行增加
和
166 行删除
+158
-166
index.vue
...ews/promotion/display_schedule/components/Table/index.vue
+25
-2
data.jsx
src/views/promotion/display_schedule/tabs/data.jsx
+5
-6
index.vue
...ion/display_schedule_dashboard/components/Table/index.vue
+108
-158
index.vue
src/views/promotion/display_schedule_dashboard/index.vue
+20
-0
没有找到文件。
src/views/promotion/display_schedule/components/Table/index.vue
浏览文件 @
5f33bbc9
...
...
@@ -42,7 +42,8 @@
class=
"auto-fit-header-table"
v-loading=
"isLoading"
show-overflow-tooltip
:class=
"{ 'cell-no-padding': operation === '填报模式' }"
>
:class=
"{ 'cell-no-padding': operation === '填报模式' }"
:row-style=
"tableRowStyle"
>
<
template
v-for=
"col in tableColumns"
>
<el-table-column
v-if=
"col.visible"
:label=
"col.label"
...
...
@@ -72,7 +73,7 @@
<!-- 自定义渲染内容单元格 -->
<div
v-if=
"col.render"
class=
"cell-style"
>
<component
:is=
"col.render(h, row, col
)"
/>
<component
:is=
"col.render(h, row, col, !isCurrentMonth(row.salesMonth)
)"
/>
</div>
<!-- 公式计算 -->
<div
v-else-if=
"col.type === 'formula'"
>
...
...
@@ -270,6 +271,28 @@ const handleDialogClose = () => {
// 然后关闭弹窗
showTableInDialog
.
value
=
false
}
/*************** 非当月置灰行 ***************/
// 获取当前月份的函数
const
getCurrentMonth
=
()
=>
{
const
now
=
new
Date
();
const
year
=
now
.
getFullYear
();
const
month
=
String
(
now
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
);
return
`
${
year
}
-
${
month
}
`
;
};
// 检查是否为当前月的函数
const
isCurrentMonth
=
(
salesMonth
)
=>
{
return
salesMonth
===
getCurrentMonth
();
};
// 行样式函数
const
tableRowStyle
=
({
row
})
=>
{
if
(
!
isCurrentMonth
(
row
.
salesMonth
))
{
return
{
backgroundColor
:
'#f5f7fa'
};
// 灰色背景
}
return
{};
};
</
script
>
<
style
scoped
...
...
src/views/promotion/display_schedule/tabs/data.jsx
浏览文件 @
5f33bbc9
...
...
@@ -3791,7 +3791,8 @@ export const getSixLittleDiamondsConfig = (submitChange) => {
)
},
fill
:
true
,
width
:
210
width
:
210
,
requestKey
:
[
'gwExecuted6'
]
},
{
label
:
'六小金刚批发挂网陈列费'
,
...
...
@@ -3803,15 +3804,13 @@ export const getSixLittleDiamondsConfig = (submitChange) => {
},
{
label
:
'六小金刚批发挂网是否'
,
subLabel
:
'按
实际
执行'
,
subLabel
:
'按
计划
执行'
,
prop
:
'gwExecuted6'
,
visible
:
true
,
type
:
'formula'
,
func
:
(
row
)
=>
{
// 判断区间,未执行,部分执行,执行
if
(
!
row
.
actualGw6
||
row
.
actualGw6
==
0
)
{
row
.
gwExecuted6
=
'未执行'
}
else
if
(
row
.
actualGw6
!==
row
.
plannedGw6
)
{
// 实际不等于计划的都是未执行
if
(
row
.
actualGw6
!==
row
.
plannedGw6
)
{
row
.
gwExecuted6
=
'未执行'
}
else
{
row
.
gwExecuted6
=
'执行'
...
...
src/views/promotion/display_schedule_dashboard/components/Table/index.vue
浏览文件 @
5f33bbc9
...
...
@@ -101,206 +101,157 @@ const getTableList = () => {
display
:
flex
;
flex-direction
:
column
;
overflow
:
hidden
;
}
/* 因为表格会被挪走,所以必须独立样式无法嵌套在别人内 */
/* 表格样式 */
.table-container
{
flex
:
1
;
/* 这是关键,让表格容器自动占据剩余空间 */
display
:
flex
;
flex-direction
:
column
;
min-height
:
0
;
/* 解决flex子项内容溢出问题 */
.auto-fit-header-table
{
/* 表格样式 */
.table-container
{
flex
:
1
;
/* 这是关键,让表格容器自动占据剩余空间 */
display
:
flex
;
flex-direction
:
column
;
min-height
:
0
;
/* 列样式 */
.column-style
{
/* 解决flex子项内容溢出问题 */
.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
;
}
/* 自定义单元格样式(仅填充模式生效) */
.cell-style
{
>
div
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
/* 单元格样式 */
/* 展示模式单元格(仅展示模式生效) */
.show-cell-style
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
>
span
{
text-align
:
left
;
text-indent
:
5px
;
display
:
inline-block
;
width
:
80%
;
background-color
:
#e1e2e6
;
border-bottom
:
1px
solid
#ebeef5
;
/* 自定义单元格样式(仅填充模式生效) */
.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
;
/* 表格内下拉框 */
.el-select
{
width
:
100%
!
important
;
padding
:
10px
;
/* 非 disabled 状态下的背景颜色 */
&.
no-disabled
:
:
v-deep
(
.
el-select__wrapper
)
{
border
:
4px
solid
var
(
--
el-background-editor-cell
)
!
important
;
/* 非 disabled 状态下的背景颜色 */
&.
no-disabled
:
:
v-deep
(
.
el-select__wrapper
)
{
border
:
4px
solid
var
(
--
el-background-editor-cell
)
!
important
;
}
}
}
.el-input
{
height
:
32px
!
important
;
/* box-sizing: content-box; */
padding
:
0
10px
;
width
:
100%
;
.el-input
{
height
:
32px
!
important
;
/* box-sizing: content-box; */
padding
:
0
10px
;
width
:
100%
;
/* 非 disabled 状态下的背景颜色 */
&.
no-disabled
:
:
v-deep
(
.
el-input__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
;
}
}
.date-picker
{
width
:
100%
;
padding
:
10px
;
.date-picker
{
width
:
100%
;
padding
:
10px
;
/* 非 disabled 状态下的背景颜色 */
&.
no-disabled
:
:
v-deep
(
.
el-input__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
;
::v-deep
(
.el-input
)
{
width
:
100%
;
padding
:
0
;
}
}
}
::v-deep
(
.el-input
)
{
width
:
100%
;
padding
:
0
;
}
/* 普通文字单元格(仅填充模式生效) */
.fill-span-wrap
{
/* 超出省略号 */
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
padding
:
0
10px
;
}
}
/* 普通文字单元格(仅填充模式生效) */
.fill-span-wrap
{
/* 超出省略号 */
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
padding
:
0
10px
;
}
}
/* 填报模式-单元格 */
&
.cell-no-padding
{
/* 填报模式-单元格 */
&
.cell-no-padding
{
/* 无上下内边距 */
::v-deep
(
.el-table__row
)
{
.el-table__cell
{
padding-top
:
0
;
padding-bottom
:
0
;
/* 无上下内边距 */
::v-deep
(
.el-table__row
)
{
.el-table__cell
{
padding-top
:
0
;
padding-bottom
:
0
;
.cell
{
padding
:
0
!
important
;
.cell
{
padding
:
0
!
important
;
}
}
}
}
}
}
/* 分页器 */
.pagination-container
{
margin
:
10px
;
/* 分页器 */
.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
;
.el-dialog__body
{
flex
:
1
;
display
:
flex
;
flex-direction
:
column
;
overflow
:
hidden
!
important
;
padding-bottom
:
5px
;
.dialog-table-container
{
flex
:
1
;
height
:
100%
;
.table-container
{
flex
:
1
;
display
:
flex
;
flex-direction
:
column
;
height
:
100%
;
.pagination-container
{
margin-left
:
auto
;
}
}
/* 加深表头背景颜色 */
::v-deep
(
.el-table__header-wrapper
)
{
.el-table__header
{
th
{
background-color
:
#dcdfe6
!
important
;
color
:
#303133
!
important
;
font-weight
:
bold
;
}
}
}
}
// 不显示数字输入框的 spinner
.
no-spinner
input
:
:-
webkit-inner-spin-button
,
.
no-spinner
input
::-
webkit-outer-spin-button
{
-webkit-appearance
:
none
;
margin
:
0
;
}
.no-spinner
{
-moz-appearance
:
textfield
;
}
// 填入数字超过计划值时,红色文字提示
.red-text
{
input
{
color
:
red
!
important
;
}
}
</
style
>
\ No newline at end of file
</
style
>
src/views/promotion/display_schedule_dashboard/index.vue
浏览文件 @
5f33bbc9
...
...
@@ -46,6 +46,7 @@ const handleClickTabs = (tab) => {
}
</
script
>
<
style
scoped
lang=
"scss"
>
.app-container
{
...
...
@@ -53,6 +54,24 @@ const handleClickTabs = (tab) => {
.container
{
padding
:
10px
;
.el-tabs
{
height
:
100%
;
display
:
flex
;
flex-direction
:
column-reverse
;
.el-tabs__content
{
display
:
flex
;
flex-direction
:
column
;
height
:
100%
;
.el-tab-pane
{
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
}
}
}
}
}
</
style
>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论