Commit a41bd5c7 by lijiabin

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

对接后端新增的 changeProductEnable/batchDeleteProduct 接口(字段是 enable,
不是 isDisplay),按竞拍页已有的批量操作交互模式加了两个按钮,选中行才可
点击。
parent 542e7fde
...@@ -40,6 +40,28 @@ export const deleteShopItem = (id: number) => { ...@@ -40,6 +40,28 @@ export const deleteShopItem = (id: number) => {
method: 'POST', 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 @@ ...@@ -45,6 +45,12 @@
<el-icon><IEpPlus /></el-icon> <el-icon><IEpPlus /></el-icon>
新增 新增
</el-button> </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> </div>
<!-- 表格区域 --> <!-- 表格区域 -->
...@@ -185,9 +191,15 @@ ...@@ -185,9 +191,15 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="tsx">
import { usePageSearch, useResetData } from '@/hooks' 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 { FormInstance, FormRules } from 'element-plus'
import type { BackendColumnListItemDto } from '@/api/backend' import type { BackendColumnListItemDto } from '@/api/backend'
import dayjs from 'dayjs' import dayjs from 'dayjs'
...@@ -302,6 +314,53 @@ const handleEnableChange = async (row: BackendColumnListItemDto) => { ...@@ -302,6 +314,53 @@ const handleEnableChange = async (row: BackendColumnListItemDto) => {
push.success('修改成功') push.success('修改成功')
refresh() 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> </script>
<style scoped lang="scss"> <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