feat: 线上菜品分类的餐段类型

This commit is contained in:
weiwei committed 2025-08-12 17:45:02 +08:00
1 parent 01fb67fa1b
commit 1d5413b5e5
6 files changed
+91 -47

No files matched your search

+31 -24
View File
@@ -1,41 +1,48 @@
import request from "/@/utils/request"
export function fetchList(query?: Object) {
return request({
url: '/canteen/canteenOnlineSpu/page',
method: 'get',
params: query
})
return request({
url: "/canteen/canteenOnlineSpu/page",
method: "get",
params: query,
})
}
export function addObj(obj?: Object) {
return request({
url: '/canteen/canteenOnlineSpu',
method: 'post',
data: obj
})
return request({
url: "/canteen/canteenOnlineSpu",
method: "post",
data: obj,
})
}
export function getObj(id?: string) {
return request({
url: '/canteen/canteenOnlineSpu/' + id,
method: 'get'
})
return request({
url: "/canteen/canteenOnlineSpu/" + id,
method: "get",
})
}
export function delObjs(ids?: Object) {
return request({
url: '/canteen/canteenOnlineSpu',
method: 'delete',
data: ids
})
return request({
url: "/canteen/canteenOnlineSpu",
method: "delete",
data: ids,
})
}
export function putObj(obj?: Object) {
return request({
url: '/canteen/canteenOnlineSpu',
method: 'put',
data: obj
})
return request({
url: "/canteen/canteenOnlineSpu",
method: "put",
data: obj,
})
}
export function saveCanteenSpuBatch(obj?: Object) {
return request({
url: "/canteen/canteenOnlineSpu/saveCanteenSpuBatch",
method: "post",
data: obj,
})
}
+1 -6
View File
@@ -10,12 +10,7 @@
<el-col :span="14" class="mb20">
<el-form-item label="餐段类型" prop="categoryType">
<el-select v-model="form.categoryType" placeholder="请选择餐段类型" multiple>
<el-option
:value="item.value"
:label="item.label"
v-for="(item, index) in daily_menu"
:key="index"
></el-option>
<el-option :value="item.value" :label="item.label" v-for="(item, index) in daily_menu" :key="index"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -12,6 +12,13 @@
<el-input v-model.trim="form.name" placeholder="请输入分类名称" />
</el-form-item>
</el-col>
<el-col :span="14" class="mb20">
<el-form-item label="餐段类型" prop="categoryType">
<el-select v-model="form.categoryType" placeholder="请选择餐段类型" multiple>
<el-option :value="item.value" :label="item.label" v-for="(item, index) in daily_menu" :key="index"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24" class="mb20">
<el-form-item label="分类图" prop="picUrl">
<upload-img v-model:imageUrl="form.picUrl" />
@@ -44,8 +51,11 @@
import { useMessage } from "/@/hooks/message"
import { getObj, addObj, putObj } from "/@/api/canteen/canteenOnlineCategory"
import { rule } from "/@/utils/validate"
import { useDict } from "/@/hooks/dict"
const emit = defineEmits(["refresh"])
const { daily_menu } = useDict("daily_menu")
// 定义变量内容
const dataFormRef = ref()
const visible = ref(false)
@@ -61,6 +71,7 @@ const form = reactive({
sort: 0,
status: "",
deptId: "",
categoryType: [],
})
// 定义校验规则
@@ -71,6 +82,7 @@ const dataRules = ref({
{ required: true, message: "分类排序不能为空", trigger: "blur" },
{ validator: rule.number, trigger: "blur" },
],
categoryType: [{ required: true, message: "餐段类型不能为空", trigger: "blur" }],
})
// 打开弹窗
@@ -95,7 +107,9 @@ const onSubmit = async () => {
try {
loading.value = true
form.id ? await putObj(form) : await addObj(form)
form.id
? await putObj({ ...form, categoryType: form.categoryType.join(",") })
: await addObj({ ...form, categoryType: form.categoryType.join(",") })
useMessage().success(form.id ? "修改成功" : "添加成功")
visible.value = false
emit("refresh")
@@ -112,7 +126,7 @@ const getcanteenOnlineCategoryData = (id: string) => {
loading.value = true
getObj(id)
.then((res: any) => {
Object.assign(form, res.data)
Object.assign(form, res.data, { categoryType: res.data.categoryType.split(",") })
})
.finally(() => {
loading.value = false
@@ -55,12 +55,18 @@
<el-table-column type="selection" width="40" align="center" />
<el-table-column type="index" label="#" width="40" />
<el-table-column prop="name" label="分类名称" show-overflow-tooltip />
<el-table-column prop="categoryType" label="餐段类型" show-overflow-tooltip width="180">
<template #default="scope">
<dict-tag :options="daily_menu" :value="scope.row.categoryType?.split(',')"></dict-tag>
</template>
</el-table-column>
<el-table-column prop="picUrl" label="分类图" show-overflow-tooltip>
<template #default="{ row }">
<preview-image :src="row.picUrl" />
</template>
</el-table-column>
<el-table-column prop="sort" label="分类排序" show-overflow-tooltip />
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip min-width="160" />
<!-- <el-table-column prop="status" label="开启状态" show-overflow-tooltip /> -->
<el-table-column label="操作" width="150">
<template #default="scope">
@@ -91,10 +97,13 @@
import { BasicTableProps, useTable } from "/@/hooks/table"
import { fetchList, delObjs } from "/@/api/canteen/canteenOnlineCategory"
import { useMessage, useMessageBox } from "/@/hooks/message"
import { useDict } from "/@/hooks/dict"
// 引入组件
const FormDialog = defineAsyncComponent(() => import("./form.vue"))
const { daily_menu } = useDict("daily_menu")
// 定义变量内容
const formDialogRef = ref()
// 搜索变量
@@ -95,8 +95,9 @@ import { displayPrice } from "/@/utils/formatMoney"
import { useDict } from "/@/hooks/dict"
import { getAllSimple as getCanteenCategory } from "/@/api/canteen/canteenCategory"
import { useMessage } from "/@/hooks/message"
import { saveCanteenSpuBatch } from "/@/api/canteen/canteenOnlineSpu"
const emit = defineEmits(["getSelectedRows", "refresh"])
const emit = defineEmits(["refresh"])
const { spu_status, is_show } = useDict("spu_status", "is_show")
@@ -164,15 +165,37 @@ const resetQuery = () => {
}
// 商品选择对话框确认
const dialogConfirm = () => {
const dialogConfirm = async () => {
if (!merchantId.value) return useMessage().error("请选择商户")
const $table = tableRef.value
if ($table) {
const currentSelectedRows = $table.getSelectionRows()
dialogVisible.value = false
emit("getSelectedRows", currentSelectedRows)
emit("refresh")
const items = currentSelectedRows.map((item: any) => {
return {
name: item.name,
linkSpuId: item.id,
categoryId: item.categoryId,
picUrl: item.picUrl,
sort: item.sort,
status: item.status,
price: item.price,
stock: item.stock,
}
})
try {
loading.value = true
const { code, msg } = await saveCanteenSpuBatch({ merchantId: merchantId.value, items })
if (code != 0) return useMessage().error(msg)
useMessage().success("保存成功")
dialogVisible.value = false
emit("refresh")
} catch (error) {
useMessage().error(error as string)
} finally {
loading.value = false
}
}
}
+6 -10
View File
@@ -88,11 +88,11 @@
{{ displayPrice(scope.row.price) }}
</template>
</el-table-column>
<!-- <el-table-column prop="marketPrice" label="市场价" show-overflow-tooltip min-width="100">-->
<!-- <template #default="scope">-->
<!-- {{ displayPrice(scope.row.marketPrice) }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column prop="marketPrice" label="市场价" show-overflow-tooltip min-width="100">-->
<!-- <template #default="scope">-->
<!-- {{ displayPrice(scope.row.marketPrice) }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="stock" label="库存" show-overflow-tooltip min-width="100" />
<el-table-column prop="salesCount" label="商品销量" show-overflow-tooltip min-width="100" />
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip min-width="160" />
@@ -119,7 +119,7 @@
<!-- 编辑、新增 -->
<form-dialog ref="formDialogRef" @refresh="getDataList(false)" />
<!-- 关联每日菜品 -->
<export-form-dialog ref="exportFormDialogRef" @getSelectedRows="getSelectedRows" @refresh="getDataList(false)" />
<export-form-dialog ref="exportFormDialogRef" @refresh="getDataList(false)" />
</div>
</template>
@@ -161,10 +161,6 @@ onMounted(async () => {
const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, downBlobFile, tableStyle } = useTable(state)
const getSelectedRows = (selectRows: any) => {
console.log(selectRows)
}
// 清空搜索条件
const resetQuery = () => {
// 清空搜索条件