Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
78062dd4
authored
Oct 06, 2023
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
promotion:调整拼团活动的界面
parent
cf7ac2cb
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
191 additions
and
90 deletions
+191
-90
src/api/mall/promotion/bargain/bargainActivity.ts
+5
-0
src/api/mall/promotion/combination/combinationActivity.ts
+5
-0
src/views/mall/promotion/bargain/activity/index.vue
+2
-3
src/views/mall/promotion/combination/activity/combinationActivity.data.ts
+0
-31
src/views/mall/promotion/combination/activity/index.vue
+179
-56
No files found.
src/api/mall/promotion/bargain/bargainActivity.ts
View file @
78062dd4
...
...
@@ -57,6 +57,11 @@ export const updateBargainActivity = async (data: BargainActivityVO) => {
return
await
request
.
put
({
url
:
'/promotion/bargain-activity/update'
,
data
})
}
// 关闭砍价活动
export
const
closeBargainActivity
=
async
(
id
:
number
)
=>
{
return
await
request
.
put
({
url
:
'/promotion/bargain-activity/close?id='
+
id
})
}
// 删除砍价活动
export
const
deleteBargainActivity
=
async
(
id
:
number
)
=>
{
return
await
request
.
delete
({
url
:
'/promotion/bargain-activity/delete?id='
+
id
})
...
...
src/api/mall/promotion/combination/combinationActivity.ts
View file @
78062dd4
...
...
@@ -55,6 +55,11 @@ export const updateCombinationActivity = async (data: CombinationActivityVO) =>
return
await
request
.
put
({
url
:
'/promotion/combination-activity/update'
,
data
})
}
// 关闭拼团活动
export
const
closeCombinationActivity
=
async
(
id
:
number
)
=>
{
return
await
request
.
put
({
url
:
'/promotion/bargain-combination/close?id='
+
id
})
}
// 删除拼团活动
export
const
deleteCombinationActivity
=
async
(
id
:
number
)
=>
{
return
await
request
.
delete
({
url
:
'/promotion/combination-activity/delete?id='
+
id
})
...
...
src/views/mall/promotion/bargain/activity/index.vue
View file @
78062dd4
...
...
@@ -149,7 +149,6 @@ import * as BargainActivityApi from '@/api/mall/promotion/bargain/bargainActivit
import
BargainActivityForm
from
'./BargainActivityForm.vue'
import
{
formatDate
}
from
'@/utils/formatTime'
import
{
fenToYuanFormat
}
from
'@/utils/formatter'
import
{
fenToYuan
}
from
'@/utils'
defineOptions
({
name
:
'PromotionBargainActivity'
})
...
...
@@ -203,7 +202,7 @@ const openForm = (type: string, id?: number) => {
const
handleClose
=
async
(
id
:
number
)
=>
{
try
{
// 关闭的二次确认
await
message
.
confirm
(
'确认关闭该
秒杀
活动吗?'
)
await
message
.
confirm
(
'确认关闭该
砍价
活动吗?'
)
// 发起关闭
await
BargainActivityApi
.
closeSeckillActivity
(
id
)
message
.
success
(
'关闭成功'
)
...
...
@@ -218,7 +217,7 @@ const handleDelete = async (id: number) => {
// 删除的二次确认
await
message
.
delConfirm
()
// 发起删除
await
BargainActivityApi
.
delet
eBargainActivity
(
id
)
await
BargainActivityApi
.
clos
eBargainActivity
(
id
)
message
.
success
(
t
(
'common.delSuccess'
))
// 刷新列表
await
getList
()
...
...
src/views/mall/promotion/combination/activity/combinationActivity.data.ts
View file @
78062dd4
...
...
@@ -115,32 +115,6 @@ const crudSchemas = reactive<CrudSchema[]>([
}
},
{
label
:
'购买人数'
,
field
:
'userSize'
,
isSearch
:
false
,
isForm
:
false
},
{
label
:
'开团组数'
,
field
:
'totalCount'
,
isSearch
:
false
,
isForm
:
false
},
{
label
:
'成团组数'
,
field
:
'successCount'
,
isSearch
:
false
,
isForm
:
false
},
{
label
:
'活动状态'
,
field
:
'status'
,
dictType
:
DICT_TYPE
.
COMMON_STATUS
,
dictClass
:
'number'
,
isSearch
:
true
,
isForm
:
false
},
{
label
:
'拼团商品'
,
field
:
'spuId'
,
isSearch
:
false
,
...
...
@@ -149,11 +123,6 @@ const crudSchemas = reactive<CrudSchema[]>([
span
:
24
}
}
},
{
label
:
'操作'
,
field
:
'action'
,
isForm
:
false
}
])
export
const
{
allSchemas
}
=
useCrudSchemas
(
crudSchemas
)
src/views/mall/promotion/combination/activity/index.vue
View file @
78062dd4
<
template
>
<doc-alert
title=
"功能开启"
url=
"https://doc.iocoder.cn/mall/build/"
/>
<!-- 搜索工作栏 -->
<ContentWrap>
<Search
:schema=
"allSchemas.searchSchema"
@
reset=
"setSearchParams"
@
search=
"setSearchParams"
>
<!-- 新增等操作按钮 -->
<template
#
actionMore
>
<!-- 搜索工作栏 -->
<el-form
class=
"-mb-15px"
:model=
"queryParams"
ref=
"queryFormRef"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"活动名称"
prop=
"name"
>
<el-input
v-model=
"queryParams.name"
placeholder=
"请输入活动名称"
clearable
@
keyup
.
enter=
"handleQuery"
class=
"!w-240px"
/>
</el-form-item>
<el-form-item
label=
"活动状态"
prop=
"status"
>
<el-select
v-model=
"queryParams.status"
placeholder=
"请选择活动状态"
clearable
class=
"!w-240px"
>
<el-option
v-for=
"dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
<el-button
v-hasPermi=
"['promotion:combination-activity:create']"
plain
type=
"primary"
plain
@
click=
"openForm('create')"
v-hasPermi=
"['promotion:combination-activity:create']"
>
<Icon
class=
"mr-5px"
icon=
"ep:plus
"
/>
新增
<Icon
icon=
"ep:plus"
class=
"mr-5px
"
/>
新增
</el-button>
</
template
>
</
Search
>
</
el-form-item
>
</
el-form
>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<
Table
v-model:currentPage=
"tableObject.currentPage"
v-model:pageSize=
"tableObject.pageSize"
:columns=
"allSchemas.tableColumns"
:data=
"tableObject.tableList"
:loading=
"tableObject.loading"
:pagination=
"{
total: tableObject.total
}"
>
<
template
#
spuId=
"{ row }
"
>
<
el-table
v-loading=
"loading"
:data=
"list"
:stripe=
"true"
:show-overflow-tooltip=
"true"
>
<el-table-column
label=
"活动编号"
prop=
"id"
min-width=
"80"
/>
<el-table-column
label=
"活动名称"
prop=
"name"
min-width=
"140"
/>
<el-table-column
label=
"活动时间"
min-width=
"210"
>
<template
#
default=
"scope"
>
{{
formatDate
(
scope
.
row
.
startTime
,
'YYYY-MM-DD'
)
}}
~
{{
formatDate
(
scope
.
row
.
endTime
,
'YYYY-MM-DD'
)
}}
</
template
>
</el-table-column>
<el-table-column
label=
"商品图片"
prop=
"spuName"
min-width=
"80"
>
<
template
#
default=
"scope
"
>
<el-image
:src=
"row.picUrl"
class=
"mr-5px h-30px w-30px align-middle"
@
click=
"imagePreview(row.picUrl)"
:src=
"scope.row.picUrl"
class=
"h-40px w-40px"
:preview-src-list=
"[scope.row.picUrl]"
preview-teleported
/>
<span
class=
"align-middle"
>
{{
row
.
spuName
}}
</span>
</
template
>
<
template
#
action=
"{ row }"
>
</el-table-column>
<el-table-column
label=
"商品标题"
prop=
"spuName"
min-width=
"300"
/>
<el-table-column
label=
"原价"
prop=
"combinationFirstPrice"
min-width=
"100"
:formatter=
"fenToYuanFormat"
/>
<el-table-column
label=
"拼团价"
prop=
"combinationMinPrice"
min-width=
"100"
:formatter=
"fenToYuanFormat"
/>
<el-table-column
label=
"拼团人数"
prop=
"recordUserCount"
min-width=
"100"
/>
<el-table-column
label=
"参与人数"
prop=
"recordSuccessUserCount"
min-width=
"110"
/>
<el-table-column
label=
"成团人数"
prop=
"helpUserCount"
min-width=
"100"
/>
<el-table-column
label=
"活动状态"
align=
"center"
prop=
"status"
min-width=
"100"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.COMMON_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"库存"
align=
"center"
prop=
"stock"
min-width=
"80"
/>
<el-table-column
label=
"总库存"
align=
"center"
prop=
"totalStock"
min-width=
"80"
/>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
:formatter=
"dateFormatter"
width=
"180px"
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"150px"
fixed=
"right"
>
<
template
#
default=
"scope"
>
<el-button
v-hasPermi=
"['promotion:combination-activity:update']"
link
type=
"primary"
@
click=
"openForm('update', row.id)"
@
click=
"openForm('update', scope.row.id)"
v-hasPermi=
"['promotion:combination-activity:update']"
>
编辑
</el-button>
<el-button
v-hasPermi=
"['promotion:combination-activity:delete']"
link
type=
"danger"
@
click=
"handleDelete(row.id)"
@
click=
"handleClose(scope.row.id)"
v-if=
"scope.row.status === 0"
v-hasPermi=
"['promotion:combination-activity:close']"
>
关闭
</el-button>
<el-button
link
type=
"danger"
@
click=
"handleDelete(scope.row.id)"
v-else
v-hasPermi=
"['promotion:combination-activity:delete']"
>
删除
</el-button>
</
template
>
</Table>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</ContentWrap>
<!-- 表单弹窗:添加/修改 -->
<CombinationActivityForm
ref=
"formRef"
@
success=
"getList"
/>
</template>
<
script
lang=
"ts"
setup
>
import
{
allSchemas
}
from
'./combinationActivity.data'
<
script
setup
lang=
"ts"
>
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
*
as
CombinationActivityApi
from
'@/api/mall/promotion/combination/combinationActivity'
import
CombinationActivityForm
from
'./CombinationActivityForm.vue'
import
{
sortTableColumns
}
from
'@/hooks/web/useCrudSchemas
'
import
{
createImageViewer
}
from
'@/components/ImageView
er'
import
{
formatDate
}
from
'@/utils/formatTime
'
import
{
fenToYuanFormat
}
from
'@/utils/formatt
er'
defineOptions
({
name
:
'Promotion
Combinatio
nActivity'
})
defineOptions
({
name
:
'Promotion
Bargai
nActivity'
})
// tableObject:表格的属性对象,可获得分页大小、条数等属性
// tableMethods:表格的操作对象,可进行获得分页、删除记录等操作
// 详细可见:https://doc.iocoder.cn/vue3/crud-schema/
const
{
tableObject
,
tableMethods
}
=
useTable
({
getListApi
:
CombinationActivityApi
.
getCombinationActivityPage
,
// 分页接口
delListApi
:
CombinationActivityApi
.
deleteCombinationActivity
// 删除接口
const
message
=
useMessage
()
// 消息弹窗
const
{
t
}
=
useI18n
()
// 国际化
const
loading
=
ref
(
true
)
// 列表的加载中
const
total
=
ref
(
0
)
// 列表的总页数
const
list
=
ref
([])
// 列表的数据
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
name
:
null
,
status
:
null
})
// 获得表格的各种操作
const
{
getList
,
setSearchParams
}
=
tableMethods
const
queryFormRef
=
ref
()
// 搜索的表单
const
exportLoading
=
ref
(
false
)
// 导出的加载中
/** 商品图预览 */
const
imagePreview
=
(
imgUrl
:
string
)
=>
{
createImageViewer
({
urlList
:
[
imgUrl
]
})
/** 查询列表 */
const
getList
=
async
()
=>
{
loading
.
value
=
true
try
{
const
data
=
await
CombinationActivityApi
.
getCombinationActivityPage
(
queryParams
)
list
.
value
=
data
.
list
total
.
value
=
data
.
total
}
finally
{
loading
.
value
=
false
}
}
/** 搜索按钮操作 */
const
handleQuery
=
()
=>
{
queryParams
.
pageNo
=
1
getList
()
}
/** 重置按钮操作 */
const
resetQuery
=
()
=>
{
queryFormRef
.
value
.
resetFields
()
handleQuery
()
}
/** 添加/修改操作 */
...
...
@@ -94,15 +197,35 @@ const openForm = (type: string, id?: number) => {
formRef
.
value
.
open
(
type
,
id
)
}
// TODO 芋艿:这里要改下
/** 关闭按钮操作 */
const
handleClose
=
async
(
id
:
number
)
=>
{
try
{
// 关闭的二次确认
await
message
.
confirm
(
'确认关闭该秒杀活动吗?'
)
// 发起关闭
await
CombinationActivityApi
.
closeCombinationActivity
(
id
)
message
.
success
(
'关闭成功'
)
// 刷新列表
await
getList
()
}
catch
{}
}
/** 删除按钮操作 */
const
handleDelete
=
(
id
:
number
)
=>
{
tableMethods
.
delList
(
id
,
false
)
const
handleDelete
=
async
(
id
:
number
)
=>
{
try
{
// 删除的二次确认
await
message
.
delConfirm
()
// 发起删除
await
CombinationActivityApi
.
deleteCombinationActivity
(
id
)
message
.
success
(
t
(
'common.delSuccess'
))
// 刷新列表
await
getList
()
}
catch
{}
}
/** 初始化 **/
onMounted
(()
=>
{
// 获得活动列表
sortTableColumns
(
allSchemas
.
tableColumns
,
'spuId'
)
getList
()
onMounted
(
async
()
=>
{
await
getList
()
})
</
script
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment