feat:口味字段和校验修改
This commit is contained in:
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()
|
||||
|
||||
Reference in new issue
Block a user