feat:口味字段和校验修改

This commit is contained in:
weiwei committed 2025-08-20 18:14:35 +08:00
1 parent ff3a47dcab
commit 6517d33d1c
3 files changed
+35 -20

No files matched your search

@@ -65,8 +65,8 @@
<template #default="{ row }">
{{ tasteList?.find((item) => item.id === row.tasteId)?.tasteName || "" }}
</template>
<template #edit="{ row }">
<el-select v-model="row.tasteId" placeholder="请选择包装单位">
<template #edit="slotParams">
<el-select v-model="slotParams.row.tasteId" placeholder="请选择包装单位" @change="slotInputChange(slotParams)">
<el-option v-for="item in tasteList" :key="item.id" :label="item.tasteName" :value="item.id">
<span class="float-left">口味:{{ item.tasteName }}</span>
<span class="float-right ml-4">库存:{{ item.stock }}</span>
@@ -121,7 +121,7 @@
</vxe-column>
</vxe-table>
<taste-form ref="tasteFormRef" v-model="tasteList" />
<taste-form ref="tasteFormRef" v-model:tasteList="tasteList" />
</template>
<script setup lang="ts">
@@ -145,6 +145,7 @@ export interface rowVU {
flag?: string
taste?: string
tasteId: string
tasteName?: string
}
export interface TasteItem {
id: string
@@ -167,10 +168,10 @@ const validRules = ref<VxeTablePropTypes.EditRules<rowVU>>({
if (
cellValue &&
packageUnitList.value
.filter((item: rowVU, index: number) => rowIndex != index && item.taste == row.taste)
.filter((item: rowVU, index: number) => rowIndex != index && item.tasteId == row.tasteId)
.some((v: rowVU) => v.unit == row.unit)
)
return new Error("该包装单位的口味已存在")
return new Error("相同包装单位的口味不能相同")
},
},
],
@@ -178,16 +179,16 @@ const validRules = ref<VxeTablePropTypes.EditRules<rowVU>>({
packageNum: [{ required: true, message: "不能为空" }],
retailPrice: [{ required: true, type: "number", min: 0.01, message: "不能为0" }],
purchasePrice: [{ required: true, message: "不能为空" }],
taste: [
tasteId: [
{
validator({ cellValue, row, rowIndex }) {
if (
cellValue &&
packageUnitList.value
.filter((item: rowVU, index: number) => rowIndex != index && item.taste == row.taste)
.filter((item: rowVU, index: number) => rowIndex != index && item.tasteId == row.tasteId)
.some((v: rowVU) => v.unit == row.unit)
)
return new Error("该包装单位的口味已存在")
return new Error("相同包装单位的口味不能相同")
},
},
],
@@ -255,17 +256,27 @@ const getRadioRow = () => {
}
// 校验表格 成功返回 true 失败返回 false
const tableValidate = async () => {
// 全量校验
const tableValidate = async (filed?: string) => {
const $table = tableRef.value
if ($table) {
const errMap = await $table.validate(true)
if (errMap) {
console.log("全量校验失败!", errMap)
return false
if (filed) {
const errMap = await $table.validateField(packageUnitList.value, filed)
if (errMap) {
console.log("字段校验失败!", errMap)
return false
} else {
console.log("字段校验成功!")
return true
}
} else {
console.log("全量校验成功!")
return true
const errMap = await $table.validate(true)
if (errMap) {
console.log("全量校验失败!", errMap)
return false
} else {
console.log("全量校验成功!")
return true
}
}
}
}
@@ -41,7 +41,7 @@
</vxe-column>
<vxe-column title="操作">
<template #default="scope">
<el-popconfirm title="是否删除?" @confirm="removeRow(scope.$rowIndex)">
<el-popconfirm title="是否删除?" placement="right" @confirm="removeRow(scope.$rowIndex)">
<template #reference><el-button size="small">删除</el-button></template>
</el-popconfirm>
</template>
@@ -64,7 +64,7 @@ type Row = {
stock: number
}
const tasteList = defineModel<any>("modelValue", { default: [] })
const tasteList = defineModel<any>("tasteList", { default: [] })
const tableTasteList = ref<Row[]>([])
const tableRef = ref()
const visible = ref(false)
@@ -248,7 +248,10 @@ const settlePackageUnitList = () => {
item.isBase = false
}
if (item.id.startsWith("tmp_")) item.id = ""
if (item.tasteId.startsWith("tmp_")) item.tasteId = ""
if (item.tasteId.startsWith("tmp_")) {
item.tasteName = form.smErpTasteStockEntityList.find((tasteItem: any) => tasteItem.id === item.tasteId).tasteName
item.tasteId = ""
}
// 转换金额单位
item.costPrice = storePrice(item.costPrice)
item.promotionPrice = storePrice(item.promotionPrice)
@@ -284,7 +287,8 @@ const onSubmit = async () => {
const valid = await formRef.value.validate().catch(() => {})
if (!valid) return useMessage().warning("基础信息或库存必填项未填写完整")
if (!form.smErpUnitEntityList || form.smErpUnitEntityList.length <= 0) return useMessage().warning("请添加包装单位")
if (!(await packageUnitRef.value.tableValidate())) return useMessage().warning("包装单位必填项未填写完整 且 相同包装单位的口味不能相同")
if (!(await packageUnitRef.value.tableValidate("tasteId"))) return useMessage().warning("相同包装单位的口味不能相同")
if (!(await packageUnitRef.value.tableValidate())) return useMessage().warning("包装单位必填项未填写完整")
if (!packageUnitRef.value.getRadioRow()) return useMessage().warning("请选择基础包装单位")
const smErpAuxiliaryCodeEntityList = settleAuxiliaryCode()