菜品导入增加不覆盖选项
This commit is contained in:
1 parent
b964535313
commit
15c6a4ae85
2 files changed
+23
-12
No files matched your search
@@ -55,7 +55,7 @@ export function putObj(obj?: Object) {
|
||||
})
|
||||
}
|
||||
|
||||
/** Excel 导入菜品:cover=true 覆盖,false 仅新增 */
|
||||
/** Excel 导入菜品:importMode=cover|skip|force;兼容 cover=true/false */
|
||||
export function importSpu(data: FormData, params: Object) {
|
||||
return request({
|
||||
url: "/canteen/canteenSpu/import",
|
||||
|
||||
@@ -130,9 +130,9 @@
|
||||
<!-- 编辑、新增 -->
|
||||
<form-dialog ref="formDialogRef" @refresh="getDataList(false)" />
|
||||
|
||||
<el-dialog v-model="importVisible" title="导入菜品" width="520px" :close-on-click-modal="false" destroy-on-close>
|
||||
<el-dialog v-model="importVisible" title="导入菜品" width="560px" :close-on-click-modal="false" destroy-on-close>
|
||||
<el-alert type="info" :closable="false" show-icon class="mb-4"
|
||||
title="覆盖导入:有则更新、无则新增。同一菜品若既有「单品行」又在套餐里,以单品行单价为准。导出含菜品ID请勿删。分类不存在会自动新建。" />
|
||||
title="覆盖:同名更新;新增:同名跳过;不覆盖:同名套餐/单品也新增(分类仍按名称复用)。同一菜品若既有单品行又在套餐里,覆盖时以单品行单价为准。" />
|
||||
<el-form label-width="110px">
|
||||
<el-form-item label="商户" required>
|
||||
<select-mch v-model="importMerchantId" :apiParams="{ types: '1' }" style="width: 100%" />
|
||||
@@ -142,9 +142,10 @@
|
||||
<span class="ml-2 text-gray-400 text-xs">Excel 分类名匹配不到时使用</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="导入方式" required>
|
||||
<el-radio-group v-model="importCover">
|
||||
<el-radio :label="true">覆盖导入(同名更新价格/库存等)</el-radio>
|
||||
<el-radio :label="false">新增导入(同名跳过)</el-radio>
|
||||
<el-radio-group v-model="importMode" class="import-mode-radios">
|
||||
<el-radio label="cover">覆盖导入(同名更新价格/库存等)</el-radio>
|
||||
<el-radio label="skip">新增导入(同名跳过)</el-radio>
|
||||
<el-radio label="force">不覆盖导入(同名也新增,分类除外)</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="Excel 文件" required>
|
||||
@@ -252,14 +253,15 @@ const importVisible = ref(false)
|
||||
const importLoading = ref(false)
|
||||
const importMerchantId = ref<string | number>()
|
||||
const importCategoryId = ref<string | number>()
|
||||
const importCover = ref(true)
|
||||
/** cover=覆盖 | skip=同名跳过 | force=同名也新增 */
|
||||
const importMode = ref<"cover" | "skip" | "force">("cover")
|
||||
const importFile = ref<File | null>(null)
|
||||
const importUploadRef = ref<UploadInstance>()
|
||||
|
||||
const openImport = () => {
|
||||
importMerchantId.value = state.queryForm?.merchantId || undefined
|
||||
importCategoryId.value = undefined
|
||||
importCover.value = true
|
||||
importMode.value = "cover"
|
||||
importFile.value = null
|
||||
importVisible.value = true
|
||||
}
|
||||
@@ -277,23 +279,23 @@ const submitImport = async () => {
|
||||
useMessage().warning("请选择 Excel 文件")
|
||||
return
|
||||
}
|
||||
const cover = importCover.value === true
|
||||
const mode = importMode.value || "skip"
|
||||
const fd = new FormData()
|
||||
fd.append("file", importFile.value)
|
||||
fd.append("merchantId", String(importMerchantId.value))
|
||||
if (importCategoryId.value != null && importCategoryId.value !== "") {
|
||||
fd.append("categoryId", String(importCategoryId.value))
|
||||
}
|
||||
fd.append("cover", cover ? "true" : "false")
|
||||
fd.append("importMode", mode)
|
||||
importLoading.value = true
|
||||
try {
|
||||
const res: any = await importSpu(fd, {
|
||||
merchantId: importMerchantId.value,
|
||||
categoryId: importCategoryId.value || undefined,
|
||||
cover: cover ? "true" : "false",
|
||||
importMode: mode,
|
||||
})
|
||||
const tip = res.msg || "导入成功"
|
||||
if (!cover && String(tip).includes("跳过")) {
|
||||
if (mode === "skip" && String(tip).includes("跳过")) {
|
||||
useMessage().warning(tip)
|
||||
} else {
|
||||
useMessage().success(tip)
|
||||
@@ -332,3 +334,12 @@ const handleDelete = async (ids: string[]) => {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.import-mode-radios {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user