Commit b27963ec by qinjianhui

feat: 删除功能调整

parent 1f311f82
......@@ -47,3 +47,12 @@ export function getWarehouseRuleSettingDetailApi(id: number | undefined) {
},
)
}
export function deleteSharedInventoryGroupApi(ids: string) {
return axios.get<never, BaseRespData<never>>(
'/factory/sharedInventoryGroup/delete-ids',
{
params: { ids },
},
)
}
......@@ -23,6 +23,7 @@ export interface WarehouseRuleSpuItem {
skuImage?: string
skuName?: string
warehouseId?: number
warehouseName?: string
}
export interface EditForm {
......@@ -30,6 +31,7 @@ export interface EditForm {
groupName?: string
status?: boolean
warehouseId?: number
dataVersion?: number
spuList?: WarehouseRuleSpuItem[]
skuList?: WarehouseRuleSpuItem[]
}
......@@ -31,7 +31,7 @@
v-model="editForm.status"
:active-value="true"
:inactive-value="false"
style="--el-switch-on-color: #42b983"
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
/>
</ElFormItem>
......@@ -114,8 +114,8 @@
<template #spuImage="{ row }">
<ImageView :src="row.skuImage" width="40px" height="40px" />
</template>
<template #operation="{ index }">
<ElButton link type="danger" @click="handleRemoveSpu(index)">
<template #operation="{ index, row }">
<ElButton link type="danger" @click="handleRemoveSpu(index, row)">
删除
</ElButton>
</template>
......@@ -211,6 +211,7 @@ const resetFields = (data?: EditForm) => {
editForm.value = {
id: data.id,
groupName: data.groupName ?? '',
dataVersion: data.dataVersion ?? 0,
status:
typeof data.status === 'boolean' ? data.status : data.status === 1,
spuList: updateSortNo(
......@@ -337,6 +338,16 @@ const handleAddSpu = (row: WarehouseRuleSpuItem) => {
ElMessage.warning('该SPU已添加')
return
}
const existingList = editForm.value.spuList ?? []
if (
existingList.length > 0 &&
existingList[0].warehouseId !== row.warehouseId
) {
ElMessageBox.alert('请选择同一仓库内的SPU', '提示', {
type: 'warning',
})
return
}
editForm.value.spuList = updateSortNo([
...(editForm.value.spuList ?? []),
{
......@@ -344,6 +355,7 @@ const handleAddSpu = (row: WarehouseRuleSpuItem) => {
skuName: row.skuName,
skuImage: row.skuImage,
warehouseId: row.warehouseId,
warehouseName: row.warehouseName,
},
])
spuSearchResultList.value = spuSearchResultList.value.filter(
......@@ -354,7 +366,18 @@ const handleAddSpu = (row: WarehouseRuleSpuItem) => {
}
}
const handleRemoveSpu = (index: number) => {
const handleRemoveSpu = async (index: number, row: WarehouseRuleSpuItem) => {
try {
await ElMessageBox.confirm(
`确定删除${row.warehouseSpu}与共享库存组${editForm.value.groupName}关系吗?`,
'提示',
{
type: 'warning',
},
)
} catch {
return
}
const list = [...(editForm.value.spuList ?? [])]
list.splice(index, 1)
editForm.value.spuList = updateSortNo(list)
......@@ -388,6 +411,8 @@ const handleSave = async () => {
const res = await request({
groupName: editForm.value.groupName!,
status: !!editForm.value.status,
id: editId,
dataVersion: editForm.value.dataVersion!,
skuList: editForm.value.spuList.map((item) => ({
warehouseSpu: item.warehouseSpu!,
sortOrder: item.sortOrder!,
......
import { ElButton, ElTag } from 'element-plus'
import type { WarehouseRuleSettingData } from '@/types/api/warehouse/warehouseRuleSetting'
const statusMap: Record<'true' | 'false', { label: string; type: 'success' | 'info' }> = {
const statusMap: Record<'true' | 'false', { label: string; type: 'success' | 'danger' }> = {
true: { label: '启用', type: 'success' },
false: { label: '禁用', type: 'info' },
false: { label: '禁用', type: 'danger' },
}
export interface UseWarehouseRuleSettingTableColumnsOptions {
......@@ -99,6 +99,12 @@ export function useWarehouseRuleSettingTableColumns(
align: 'left',
},
{
label: '所属仓库',
prop: 'warehouseName',
width: 120,
align: 'center',
},
{
label: '操作',
width: 80,
align: 'center',
......@@ -125,6 +131,12 @@ export function useWarehouseRuleSettingTableColumns(
align: 'left',
},
{
label: '所属仓库',
prop: 'warehouseName',
width: 120,
align: 'center',
},
{
label: '操作',
width: 80,
align: 'center',
......
......@@ -50,6 +50,7 @@
v-model="searchForm.status"
placeholder="请选择"
style="width: 140px"
clearable
>
<ElOption label="启用" :value="1" />
<ElOption label="禁用" :value="0" />
......@@ -65,7 +66,7 @@
<ElButton type="success" @click="() => handleEdit()">新增</ElButton>
</ElFormItem>
<ElFormItem>
<ElButton type="danger">删除</ElButton>
<ElButton type="danger" @click="handleDelete">删除</ElButton>
</ElFormItem>
</ElForm>
</div>
......@@ -109,6 +110,7 @@
import {
getWarehouseRuleSettingListApi,
getWarehouseRuleSettingDetailApi,
deleteSharedInventoryGroupApi,
} from '@/api/warehouse/warehouseRuleSetting'
import {
SearchForm,
......@@ -147,9 +149,15 @@ const {
onPageSizeChange: handleSizeChange,
} = usePageList<WarehouseRuleSettingData>({
query: (page, pageSize) =>
getWarehouseRuleSettingListApi(searchForm.value, page, pageSize).then(
(res) => res.data,
),
getWarehouseRuleSettingListApi(
{
...searchForm.value,
createEndTime: dateRange.value && dateRange.value[1],
createStartTime: dateRange.value && dateRange.value[0],
},
page,
pageSize,
).then((res) => res.data),
})
const selectedRows = ref<WarehouseRuleSettingData[]>([])
const handleSelectionChange = (selection: WarehouseRuleSettingData[]) => {
......@@ -178,7 +186,66 @@ const handleEdit = async (row?: WarehouseRuleSettingData) => {
}
editDialogVisible.value = true
}
const getSharedSpuText = (rows: WarehouseRuleSettingData[]) =>
[
...new Set(
rows.flatMap((row) =>
(row.skuList ?? [])
.map((item) => item.warehouseSpu)
.filter(Boolean),
),
),
].join(',')
const handleDelete = async () => {
if (selectedRows.value.length === 0) {
ElMessage.warning('请选择要删除的数据')
return
}
const groupNames = selectedRows.value
.map((item) => item.groupName)
.join(',')
const spuText = getSharedSpuText(selectedRows.value)
try {
await ElMessageBox.confirm(
`<div>
<div style="font-size: 16px; color: #303133; line-height: 24px; margin-bottom: 8px;">
确定删除共享库存组${groupNames}吗?
</div>
<div style="font-size: 14px; color: #606266; line-height: 22px;">
共享库存组SPU:${spuText || '-'}
</div>
</div>`,
'',
{
type: 'warning',
dangerouslyUseHTMLString: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
customClass: 'delete-shared-inventory-group-box',
},
)
} catch {
return
}
const loading = ElLoading.service({
fullscreen: true,
text: '加载中...',
background: 'rgba(0, 0, 0, 0.3)',
})
try {
const res = await deleteSharedInventoryGroupApi(
selectedRows.value.map((item) => item.id).join(','),
)
if (res.code !== 200) return
ElMessage.success(res.message)
search()
} catch (error) {
console.error(error)
} finally {
loading.close()
}
}
const { columns: tableColumns } = useWarehouseRuleSettingTableColumns({
onEdit: handleEdit,
})
......@@ -225,3 +292,18 @@ onMounted(async () => {
white-space: nowrap;
}
</style>
<style>
.delete-shared-inventory-group-box .el-message-box__title {
display: none;
}
.delete-shared-inventory-group-box .el-message-box__header {
padding-bottom: 0;
}
.delete-shared-inventory-group-box .el-message-box__message {
word-break: break-all;
line-height: 1.6;
padding: 10px 0;
}
</style>
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