Commit a41bd5c7 by lijiabin

【需求 25171】feat: 积分商城配置新增批量修改展示、批量删除功能

对接后端新增的 changeProductEnable/batchDeleteProduct 接口(字段是 enable,
不是 isDisplay),按竞拍页已有的批量操作交互模式加了两个按钮,选中行才可
点击。
parent 542e7fde
......@@ -40,6 +40,28 @@ export const deleteShopItem = (id: number) => {
method: 'POST',
})
}
/**
* 批量修改商品是否展示在前台。注意商城这边字段叫 enable,跟其它模块的 isDisplay 不是一回事。
*/
export const changeProductEnable = (data: { idList: number[]; enable: number }) => {
return service.request({
url: '/api/culture/shop/item/changeProductEnable',
method: 'POST',
data,
})
}
/**
* 批量删除商品
*/
export const batchDeleteProduct = (idList: number[]) => {
return service.request({
url: '/api/culture/shop/item/batchDeleteProduct',
method: 'POST',
data: { idList },
})
}
/**
* 后台商品领用列表
*/
......
......@@ -45,6 +45,12 @@
<el-icon><IEpPlus /></el-icon>
新增
</el-button>
<el-button type="primary" @click="handleBatchEnable" :disabled="selectedRows.length === 0">
批量修改展示
</el-button>
<el-button type="danger" @click="handleBatchDelete" :disabled="selectedRows.length === 0">
批量删除
</el-button>
</div>
<!-- 表格区域 -->
......@@ -185,9 +191,15 @@
</div>
</template>
<script setup lang="ts">
<script setup lang="tsx">
import { usePageSearch, useResetData } from '@/hooks'
import { getShopItemList, addOrUpdateShopItem, deleteShopItem } from '@/api/backend'
import {
getShopItemList,
addOrUpdateShopItem,
deleteShopItem,
changeProductEnable,
batchDeleteProduct,
} from '@/api/backend'
import type { FormInstance, FormRules } from 'element-plus'
import type { BackendColumnListItemDto } from '@/api/backend'
import dayjs from 'dayjs'
......@@ -302,6 +314,53 @@ const handleEnableChange = async (row: BackendColumnListItemDto) => {
push.success('修改成功')
refresh()
}
// 批量修改是否展示在前台:商城这边的展示字段叫 enable,接口是 changeProductEnable
const handleBatchEnable = async () => {
const enable = ref<BooleanFlag>(BooleanFlag.YES)
await ElMessageBox({
title: '是否展示在前台',
message: () => (
<el-radio-group v-model={enable.value}>
<el-radio value={BooleanFlag.YES}>是</el-radio>
<el-radio value={BooleanFlag.NO}>否</el-radio>
</el-radio-group>
),
showCancelButton: true,
async beforeClose(action, instance, done) {
if (action === 'confirm') {
instance.confirmButtonLoading = true
try {
await changeProductEnable({
idList: selectedRows.value.map((item) => item.id),
enable: enable.value,
})
push.success('批量修改展示成功')
refresh()
done()
} catch (error) {
console.error(error)
} finally {
instance.confirmButtonLoading = false
}
} else {
done()
}
},
})
}
// 批量删除
const handleBatchDelete = async () => {
await confirm({
title: '提示',
message: `确定要删除选中的 ${selectedRows.value.length} 个商品吗?`,
type: 'danger',
})
await batchDeleteProduct(selectedRows.value.map((item) => item.id))
refresh()
push.success('删除成功')
}
</script>
<style scoped lang="scss">
......
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