Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
219ccbaf
提交
219ccbaf
authored
2月 13, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(promotion): 促销计划上传完成
同上
上级
9ca91c61
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
146 行增加
和
66 行删除
+146
-66
plan.js
src/api/promotion/plan.js
+26
-1
jimu.vue
src/views/jimureport/jimu.vue
+32
-20
view.vue
src/views/jimureport/view.vue
+33
-36
index.vue
src/views/promotion/plan/index.vue
+55
-9
没有找到文件。
src/api/promotion/plan.js
浏览文件 @
219ccbaf
...
...
@@ -18,7 +18,7 @@ export function getPlanListAPI(queryParams) {
})
}
// 表格新增计划
// 表格新增计划
(城市经理)
export
function
addPlanAPI
(
data
)
{
return
request
({
baseURL
:
VITE_APP_PROMOTION
,
...
...
@@ -28,6 +28,17 @@ export function addPlanAPI(data) {
})
}
// 表格新增计划(职能角色)
export
function
addPlanByRoleAPI
(
data
)
{
return
request
({
baseURL
:
VITE_APP_PROMOTION
,
url
:
'/plan/v2/core/auth/upload'
,
method
:
'POST'
,
data
})
}
// 确认保存活动计划
export
function
savePlanAPI
(
uuid
)
{
return
request
({
...
...
@@ -35,4 +46,17 @@ export function savePlanAPI(uuid) {
url
:
`/plan/v2/core/upload/
${
uuid
}
`
,
method
:
'GET'
})
}
// 删除活动计划
export
function
deletePlanAPI
(
ids
)
{
return
request
({
baseURL
:
VITE_APP_PROMOTION
,
url
:
`/plan/v2/core/delete`
,
method
:
'DELETE'
,
data
:
{
planIds
:
ids
}
})
}
\ No newline at end of file
src/views/jimureport/jimu.vue
浏览文件 @
219ccbaf
<
template
>
<i-frame
:src=
"openUrl"
id=
"jimuReportFrame"
></i-frame>
</
template
>
<
script
>
import
{
getToken
}
from
'@/utils/auth'
import
iFrame
from
'@/components/iFrame/index'
export
default
{
name
:
"Jimu"
,
components
:
{
iFrame
},
data
()
{
return
{
// 这里写暴露的统一的网关地址
openUrl
:
"http://192.168.100.39:8080/report/jmreport/list?token="
+
getToken
(),
};
},
mounted
:
function
()
{
}
<i-frame
:src=
"openUrl"
id=
"jimuReportFrame"
></i-frame>
</
template
>
<
script
>
// 报表设计器
import
{
getToken
}
from
'@/utils/auth'
import
iFrame
from
'@/components/iFrame/index'
export
default
{
name
:
"Jimu"
,
components
:
{
iFrame
},
data
()
{
return
{
// 这里写暴露的统一的网关地址
openUrl
:
"http://192.168.100.39:8080/report/jmreport/list?token="
+
getToken
(),
};
</
script
>
\ No newline at end of file
},
mounted
:
function
()
{
}
};
</
script
>
<
style
lang=
"scss"
>
#jimuReportFrame
{
width
:
100%
;
height
:
100%
;
::v-deep
(
.layout
)
{
background-color
:
transparent
!
important
;
}
}
</
style
>
\ No newline at end of file
src/views/jimureport/view.vue
浏览文件 @
219ccbaf
<
template
>
<i-frame
:src=
"openUrl"
/>
</
template
>
<
script
>
import
{
getToken
}
from
'@/utils/auth'
import
iFrame
from
"@/components/iFrame/index"
;
export
default
{
name
:
'jimuview'
,
components
:
{
iFrame
},
props
:
{
reportID
:
{
type
:
[
String
],
required
:
false
,
default
:
''
},
},
data
()
{
return
{
serverUrl
:
'http://192.168.100.39:8080'
,
openUrl
:
''
,
}
<i-frame
:src=
"openUrl"
id=
"jimuview"
/>
</
template
>
<
script
>
import
{
getToken
}
from
'@/utils/auth'
import
iFrame
from
"@/components/iFrame/index"
;
// 好像暂时没用上
export
default
{
name
:
'jimuview'
,
components
:
{
iFrame
},
props
:
{
reportID
:
{
type
:
[
String
],
required
:
false
,
default
:
''
},
created
()
{
if
(
this
.
reportID
.
length
!=
0
)
{
this
.
openUrl
=
this
.
serverUrl
+
'/report/jmreport/view/'
+
this
.
reportID
+
'?token='
+
getToken
()
}
else
{
this
.
openUrl
=
this
.
serverUrl
+
'/report/jmreport/view/'
+
this
.
$route
.
path
.
substring
(
this
.
$route
.
path
.
lastIndexOf
(
"/"
)
+
1
)
+
'?token='
+
getToken
()
}
console
.
log
(
this
.
openUrl
)
},
data
()
{
return
{
serverUrl
:
'http://192.168.100.39:8080'
,
openUrl
:
''
,
}
},
created
()
{
if
(
this
.
reportID
.
length
!=
0
)
{
this
.
openUrl
=
this
.
serverUrl
+
'/report/jmreport/view/'
+
this
.
reportID
+
'?token='
+
getToken
()
}
else
{
this
.
openUrl
=
this
.
serverUrl
+
'/report/jmreport/view/'
+
this
.
$route
.
path
.
substring
(
this
.
$route
.
path
.
lastIndexOf
(
"/"
)
+
1
)
+
'?token='
+
getToken
()
}
console
.
log
(
'jimuview'
,
this
.
openUrl
)
}
</
script
>
<
style
scoped
>
</
style
>
\ No newline at end of file
}
</
script
>
<
style
scoped
></
style
>
\ No newline at end of file
src/views/promotion/plan/index.vue
浏览文件 @
219ccbaf
...
...
@@ -13,7 +13,8 @@
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
:shortcuts=
"pickerOptions"
/>
:shortcuts=
"pickerOptions"
@
change=
"getPlanList"
/>
</el-form-item>
<el-form-item
label=
"上传计划"
>
<el-upload
class=
"upload-demo"
...
...
@@ -27,12 +28,24 @@
</el-upload>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"danger"
plain
icon=
"Delete"
:disabled=
"multiple"
@
click=
"handleDelete"
v-hasPermi=
"['system:user:remove']"
>
删除
</el-button>
</el-col>
</el-row>
<!-- 表格列表 -->
<el-table
:data=
"tableList"
:cell-style=
"{ 'word-wrap': 'break-word', 'white-space': 'normal' }"
border
style=
"width: 100%"
show-overflow-tooltip
>
show-overflow-tooltip
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
...
...
@@ -43,7 +56,21 @@
:width=
"item.width"
:formatter=
"formatter"
:fixed=
"item.fixed"
/>
<el-table-column
label=
"操作"
>
<
template
#
default=
"scope"
>
<el-button
type=
"danger"
link
@
click=
"deletePlane(scope.row)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<pagination
:total=
"total"
v-model:page=
"queryParams.pageNum"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getPlanList"
/>
<!-- 弹窗确认上传计划 -->
<el-dialog
title=
"上传计划"
v-model=
"dialogVisible"
...
...
@@ -66,7 +93,6 @@
:formatter=
"formatterConfirm"
/>
</el-table>
</div>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<p
style=
"color: red; float: left;"
>
如果表格有红色行,请根据错误提示修改本地表格重新上传
</p>
...
...
@@ -84,7 +110,7 @@
</template>
<
script
setup
>
import
{
getPlanListAPI
,
uploadFileToOSSAPI
,
addPlanAPI
,
savePlanAPI
}
from
'@/api'
import
{
getPlanListAPI
,
uploadFileToOSSAPI
,
addPlanAPI
,
savePlanAPI
,
deletePlanAPI
,
addPlanByRoleAPI
}
from
'@/api'
import
{
useDatePickerOptions
}
from
'@/hooks'
import
{
v4
as
uuidv4
}
from
'uuid'
;
import
store
from
'@/store'
...
...
@@ -97,9 +123,19 @@ const queryParams = reactive({
pageSize
:
10
,
activityDate
:
thisYearDate
})
// 等待被删除的数据
const
deleteList
=
ref
([])
// 全选
const
handleSelectionChange
=
(
val
)
=>
{
deleteList
.
value
=
val
multiple
.
value
=
!
(
deleteList
.
value
.
length
>
0
)
}
// 任务列表
const
tableList
=
ref
([])
const
total
=
ref
(
0
)
const
multiple
=
ref
(
true
)
const
columns
=
ref
([
{
label
:
'活动 ID'
,
...
...
@@ -157,15 +193,12 @@ const columns = ref([
label
:
'上传文件名称'
,
prop
:
''
,
width
:
150
},
{
label
:
'操作'
,
prop
:
''
}
])
const
getPlanList
=
async
()
=>
{
const
res
=
await
getPlanListAPI
(
queryParams
)
tableList
.
value
=
res
.
data
.
records
total
.
value
=
res
.
data
.
totalRecord
}
getPlanList
()
const
formatter
=
(
row
,
col
,
value
)
=>
{
...
...
@@ -180,11 +213,13 @@ const formatter = (row, col, value) => {
// 上传计划
const
uploadFile
=
async
(
file
)
=>
{
// 拼接当前月数为文件夹名
const
date
=
new
Date
()
const
month
=
date
.
getMonth
()
+
1
const
excelUrl
=
await
uploadFileToOSSAPI
(
`planExcel/
${
date
.
getFullYear
()}
-
${
month
}
/
${
store
.
state
.
value
.
user
.
userInfo
.
userName
}
/
${
uuidv4
()}
.xlsx`
,
file
.
file
)
const
res
=
await
addPlanAPI
({
const
targetAPI
=
store
.
state
.
value
.
user
.
userInfo
.
privilegeId
===
1
?
addPlanAPI
:
addPlanByRoleAPI
const
res
=
await
targetAPI
({
"excelUrl"
:
excelUrl
,
"employeeNo"
:
store
.
state
.
value
.
user
.
userInfo
.
userName
})
...
...
@@ -272,6 +307,17 @@ const confirmPlanBtn = async () => {
dialogVisible
.
value
=
false
getPlanList
()
}
// 删除计划
const
deletePlane
=
(
row
)
=>
{
deleteList
.
value
=
[
row
]
handleDelete
()
}
const
handleDelete
=
async
()
=>
{
await
deletePlanAPI
(
deleteList
.
value
.
map
(
o
=>
o
.
id
))
ElMessage
.
success
(
'删除成功'
)
getPlanList
()
}
</
script
>
<
style
scoped
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论