Commit b1614d17 by lijiabin

【需求 20331】 feat: 完成后台相关页面

parent a26cfd3d
......@@ -43,7 +43,9 @@
搜索</el-button
>
<el-button @click="reset">重置</el-button>
<el-button type="primary" @click="downloadImportTemplate">
<el-icon><IEpDownload /></el-icon>下载导入模板</el-button
>
<ImportExcelBtn :api="importCaseExcel" @success="refresh" @error="handleError" />
<el-button type="primary" @click="handleBatchPublish"> 批量发布/隐藏 </el-button>
<el-button type="danger" @click="handleBatchDelete"> 批量删除 </el-button>
......@@ -380,6 +382,13 @@ const handleError = (list: BackendCaseListItemDto[]) => {
errorListDialogVisible.value = true
errorList.value = list
}
const downloadImportTemplate = () => {
window.open(
'https://soundasia.oss-cn-shenzhen.aliyuncs.com/OA/readName/xlsx/2026/03/11/Common/1773219970707.xlsx',
'_blank',
)
}
</script>
<style scoped lang="scss">
......
......@@ -5,6 +5,7 @@
<el-input
v-model="searchParams.itemName"
placeholder="请输入商品名称"
clearable
class="w-200px"
></el-input>
......@@ -14,19 +15,22 @@
class="search-select mx-12px"
clearable
>
<el-option label="待发" :value="0" />
<el-option label="已发" :value="1" />
<el-option label="待发" :value="0" />
<el-option label="已发" :value="1" />
<el-option label="已取消" :value="2" />
</el-select>
<el-select
v-model="searchParams.source"
v-model="searchParams.sourceType"
placeholder="请选择来源"
class="search-select"
clearable
>
<el-option label="商城" :value="1" />
<el-option label="大转盘" :value="2" />
<el-option label="每日抽奖" :value="3" />
<el-option
v-for="item in goodsDistributionTypeListOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-button type="primary" @click="refresh" class="ml-12px">
<el-icon><IEpSearch /></el-icon>
......@@ -51,21 +55,26 @@
height="100%"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"> </el-table-column>
<!-- <el-table-column type="selection" width="55"> </el-table-column> -->
<el-table-column prop="itemName" label="商品名称" min-width="200" />
<el-table-column prop="imageUrl" label="图片" width="300">
<template #default="{ row }">
<el-image
v-if="row.imageUrl"
:preview-teleported="true"
:src="row.imageUrl"
class="w-20 h-20 object-cover"
:preview-src-list="[row.imageUrl]"
/>
<span v-else>暂无图片</span>
</template>
</el-table-column>
<el-table-column prop="source" label="来源" min-width="200">
<el-table-column prop="sourceType" label="来源" min-width="200">
<template #default="{ row }">
{{ row.source === 1 ? '商城' : row.source === 2 ? '大转盘' : '每日抽奖' }}
{{
goodsDistributionTypeListOptions.find((item) => item.value === row.sourceType)
?.label
}}
</template>
</el-table-column>
<el-table-column prop="num" label="兑换数量" min-width="200"> </el-table-column>
......@@ -88,23 +97,22 @@
</el-table-column>
<el-table-column prop="status" label="发放状态" min-width="200">
<template #default="{ row }">
{{ row.status === 0 ? '待发货' : row.status === 1 ? '已发货' : '已取消' }}
{{ row.status === 0 ? '待发放' : row.status === 1 ? '已发放' : '已取消' }}
</template>
</el-table-column>
<el-table-column prop="memo" label="发放人备注" min-width="200" />
<el-table-column label="操作" width="150" fixed="right">
<template #default="{ row }">
<el-button v-if="row.status === 0" type="primary" link @click="handleIssue(row)">
<el-button :disabled="row.status === 1" type="primary" link @click="handleIssue(row)">
发放
</el-button>
<el-button
<!-- <el-button
v-if="row.status === 1"
type="warning"
link
@click="handleCancelIssue(row)"
>
取消发放
</el-button>
</el-button> -->
<!-- <el-button type="danger" link @click="handleDelete(row)">删除</el-button> -->
</template>
</el-table-column>
......@@ -176,8 +184,9 @@ import ExportExcelBtn from '@/components/common/ExportExcelBtn/index.vue'
import type { ExportColumn } from '@/utils'
import { push } from 'notivue'
import { useMessageBox } from '@/hooks'
import { goodsDistributionTypeListOptions } from '@/constants'
const { confirm, prompt } = useMessageBox()
const { prompt } = useMessageBox()
const { loading, list, total, reset, goToPage, changePageSize, refresh, searchParams, search } =
usePageSearch(getBackendExchangeList, {
defaultParams: {},
......@@ -195,9 +204,9 @@ const columns: ExportColumn<BackendShopItemDto>[] = [
},
{
title: '来源',
key: 'source',
key: 'sourceType',
formatter: (value) => {
return value === 1 ? '商城' : value === 2 ? '大转盘' : '每日抽奖'
return goodsDistributionTypeListOptions.find((item) => item.value === value)?.label
},
},
......@@ -229,14 +238,14 @@ const columns: ExportColumn<BackendShopItemDto>[] = [
title: '发放时间',
key: 'issueTime',
formatter: (value) => {
return value ? dayjs((value as number) * 1000).format('YYYY-MM-DD HH:mm:ss') : '未发'
return value ? dayjs((value as number) * 1000).format('YYYY-MM-DD HH:mm:ss') : '未发'
},
},
{
title: '发放状态',
key: 'status',
formatter: (value) => {
return value === 0 ? '待发货' : value === 1 ? '已发货' : '已取消'
return value === 0 ? '待发放' : value === 1 ? '已发放' : '已取消'
},
},
{
......@@ -267,21 +276,21 @@ const formRules: FormRules = {
}
// 取消发放
const handleCancelIssue = async (row: BackendColumnListItemDto) => {
await confirm({
title: '提示',
message: '确定要取消发放吗?',
confirmText: '确定',
cancelText: '取消',
type: 'warning',
})
await issueProduct({
id: row.id,
status: 0,
})
push.success('取消发放成功')
refresh()
}
// const handleCancelIssue = async (row: BackendColumnListItemDto) => {
// await confirm({
// title: '提示',
// message: '确定要取消发放吗?',
// confirmText: '确定',
// cancelText: '取消',
// type: 'warning',
// })
// await issueProduct({
// id: row.id,
// status: 0,
// })
// push.success('取消发放成功')
// refresh()
// }
// 发放
const handleIssue = async (row: BackendColumnListItemDto) => {
......@@ -294,6 +303,7 @@ const handleIssue = async (row: BackendColumnListItemDto) => {
id: row.id,
memo,
status: 1,
sourceType: row.sourceType,
})
push.success('发放成功')
refresh()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment