fix: mall SeckillConfig
This commit is contained in:
parent
b67fabcf1f
commit
3fd9f1b43e
@ -5,7 +5,7 @@ export interface SeckillConfigVO {
|
|||||||
name: string
|
name: string
|
||||||
startTime: string
|
startTime: string
|
||||||
endTime: string
|
endTime: string
|
||||||
picUrl: string
|
sliderPicUrls: string[]
|
||||||
status: number
|
status: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
<script lang="ts" name="SeckillConfigForm" setup>
|
<script lang="ts" name="SeckillConfigForm" setup>
|
||||||
import * as SeckillConfigApi from '@/api/mall/promotion/seckill/seckillConfig'
|
import * as SeckillConfigApi from '@/api/mall/promotion/seckill/seckillConfig'
|
||||||
import { allSchemas, rules } from './seckillConfig.data'
|
import { allSchemas, rules } from './seckillConfig.data'
|
||||||
|
import { cloneDeep } from 'lodash-es'
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
@ -30,6 +31,9 @@ const open = async (type: string, id?: number) => {
|
|||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = await SeckillConfigApi.getSeckillConfig(id)
|
const data = await SeckillConfigApi.getSeckillConfig(id)
|
||||||
|
data.sliderPicUrls = data['sliderPicUrls']?.map((item) => ({
|
||||||
|
url: item
|
||||||
|
}))
|
||||||
formRef.value.setValues(data)
|
formRef.value.setValues(data)
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
@ -48,12 +52,20 @@ const submitForm = async () => {
|
|||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
|
// 处理轮播图列表
|
||||||
const data = formRef.value.formModel as SeckillConfigApi.SeckillConfigVO
|
const data = formRef.value.formModel as SeckillConfigApi.SeckillConfigVO
|
||||||
|
const cloneData = cloneDeep(data)
|
||||||
|
const newSliderPicUrls = []
|
||||||
|
cloneData.sliderPicUrls.forEach((item) => {
|
||||||
|
// 如果是前端选的图
|
||||||
|
typeof item === 'object' ? newSliderPicUrls.push(item.url) : newSliderPicUrls.push(item)
|
||||||
|
})
|
||||||
|
cloneData.sliderPicUrls = newSliderPicUrls
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
await SeckillConfigApi.createSeckillConfig(data)
|
await SeckillConfigApi.createSeckillConfig(cloneData)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
} else {
|
} else {
|
||||||
await SeckillConfigApi.updateSeckillConfig(data)
|
await SeckillConfigApi.updateSeckillConfig(cloneData)
|
||||||
message.success(t('common.updateSuccess'))
|
message.success(t('common.updateSuccess'))
|
||||||
}
|
}
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
|
@ -29,8 +29,14 @@
|
|||||||
total: tableObject.total
|
total: tableObject.total
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<template #picUrl="{ row }">
|
<template #sliderPicUrls="{ row }">
|
||||||
<el-image :src="row.picUrl" class="w-30px h-30px" @click="imagePreview(row.picUrl)" />
|
<el-image
|
||||||
|
v-for="(item, index) in row.sliderPicUrls"
|
||||||
|
:key="index"
|
||||||
|
:src="item"
|
||||||
|
class="w-60px h-60px mr-10px"
|
||||||
|
@click="imagePreview(row.sliderPicUrls)"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #status="{ row }">
|
<template #status="{ row }">
|
||||||
<el-switch
|
<el-switch
|
||||||
@ -70,6 +76,7 @@ import * as SeckillConfigApi from '@/api/mall/promotion/seckill/seckillConfig'
|
|||||||
import SeckillConfigForm from './SeckillConfigForm.vue'
|
import SeckillConfigForm from './SeckillConfigForm.vue'
|
||||||
import { createImageViewer } from '@/components/ImageViewer'
|
import { createImageViewer } from '@/components/ImageViewer'
|
||||||
import { CommonStatusEnum } from '@/utils/constants'
|
import { CommonStatusEnum } from '@/utils/constants'
|
||||||
|
import { isArray } from '@/utils/is'
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
// tableObject:表格的属性对象,可获得分页大小、条数等属性
|
// tableObject:表格的属性对象,可获得分页大小、条数等属性
|
||||||
@ -82,10 +89,18 @@ const { tableObject, tableMethods } = useTable({
|
|||||||
// 获得表格的各种操作
|
// 获得表格的各种操作
|
||||||
const { getList, setSearchParams } = tableMethods
|
const { getList, setSearchParams } = tableMethods
|
||||||
|
|
||||||
/** 商品图预览 */
|
/** 轮播图预览预览 */
|
||||||
const imagePreview = (imgUrl: string) => {
|
const imagePreview = (args) => {
|
||||||
|
const urlList = []
|
||||||
|
if (isArray(args)) {
|
||||||
|
args.forEach((item) => {
|
||||||
|
urlList.push(item)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
urlList.push(args)
|
||||||
|
}
|
||||||
createImageViewer({
|
createImageViewer({
|
||||||
urlList: [imgUrl]
|
urlList
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,11 +46,14 @@ const crudSchemas = reactive<CrudSchema[]>([
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '秒杀主图',
|
label: '秒杀轮播图',
|
||||||
field: 'picUrl',
|
field: 'sliderPicUrls',
|
||||||
isSearch: false,
|
isSearch: false,
|
||||||
form: {
|
form: {
|
||||||
component: 'UploadImg'
|
component: 'UploadImgs'
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
width: 300
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user