超市调整

This commit is contained in:
weiwei committed 2025-03-06 11:11:07 +08:00
1 parent 71e0c15a7c
commit 8bdf76ae3a
4 files changed
+92 -54

No files matched your search

@@ -32,20 +32,20 @@
<vxe-column type="seq" width="50" fixed="left" />
<vxe-column field="unit" title="单位" :edit-render="{}">
<template #edit="{ row }">
<el-select v-model="row.unit">
<el-select v-model="row.unitId">
<div v-for="item in smErpUnitEntityList">
<el-option v-if="item.unit !== ''" :label="item.unit" :value="item.unit" />
<el-option :label="item.unit" :value="item.id" />
</div>
</el-select>
</template>
<template #default="{ row }">
<span v-if="row.unit">{{ row.unit }}</span>
<span v-if="row.unitId">{{ smErpUnitEntityList?.find((item) => item.id === row.unitId)?.unit }}</span>
<span v-else style="color: #c0c4cf">请选择</span>
</template>
</vxe-column>
<vxe-column field="barCode" title="条码">
<template #default="{ row }">
{{ smErpUnitEntityList?.find((item: any) => item.unit == row.unit)?.barCode }}
{{ smErpUnitEntityList?.find((item) => item.id == row.unitId)?.barCode }}
</template>
</vxe-column>
</vxe-table>
@@ -54,32 +54,49 @@
<script setup lang="ts">
import { nanoid } from "nanoid"
import { useMessage } from "/@/hooks/message"
import { rowVU } from "./packageUnit.vue"
export interface rowVC {
id: string
unitId: string
barCode: string
isNew?: boolean
}
const auxiliaryCodeList = defineModel("modelValue", {
default: [
{
id: nanoid(5),
unit: "",
unitId: "",
barCode: "",
},
],
})
defineProps<{
smErpUnitEntityList: any[]
}>()
const props = withDefaults(
defineProps<{
smErpUnitEntityList?: rowVU[]
}>(),
{
smErpUnitEntityList: [] as any,
},
)
const editableTableRef = ref()
// const validRules = {
// unit: [{ required: true, message: "包装单位不能为空", trigger: "blur" }],
// // barCode: [{ required: true, message: "条码不能为空", trigger: "blur" }],
// barCode: [{ required: true, message: "条码不能为空", trigger: "blur" }],
// }
// 底部表格行新增
const pushEvent = () => {
const newRow: any = {
if (props.smErpUnitEntityList?.length === 0) return useMessage().warning("请先添加包装单位")
const newRow: rowVC = {
id: nanoid(5),
unit: "",
unitId: "",
barCode: "",
isNew: true,
}
@@ -98,7 +115,7 @@ const removeSelectRowEvent = () => {
if ($table) {
const selectRecords = $table.getCheckboxRecords()
if (selectRecords.length > 0) {
auxiliaryCodeList.value = auxiliaryCodeList.value.filter((item: any) => !selectRecords.some((row: any) => row.id === item.id))
auxiliaryCodeList.value = auxiliaryCodeList.value.filter((item: rowVC) => !selectRecords.some((row: rowVC) => row.id === item.id))
}
}
}
@@ -100,7 +100,22 @@
<script setup lang="ts">
import { nanoid } from "nanoid"
const packageUnitList = defineModel("modelValue", {
export interface rowVU {
id: string
barCode: string
spec: string
unit: string
status: string
packageNum: number
purchasePrice: number
retailPrice: number
promotionPrice: number
costPrice: number
isNew?: boolean
isBase?: boolean | null
}
const packageUnitList = defineModel<rowVU[]>("modelValue", {
default: [
{
id: nanoid(5),
@@ -127,12 +142,11 @@ const validRules = {
retailPrice: [{ required: true, message: "零售价不能为空", trigger: "blur" }],
purchasePrice: [{ required: true, message: "进价不能为空", trigger: "blur" }],
promotionPrice: [{ required: true, message: "促销价不能为空", trigger: "blur" }],
// costPrice: [{ required: true, message: "成本价不能为空", trigger: "blur" }],
}
// 底部表格行新增
const pushEvent = () => {
const newRow: any = {
const newRow: rowVU = {
id: nanoid(5),
barCode: "",
spec: "",
@@ -160,7 +174,7 @@ const removeSelectRowEvent = () => {
if ($table) {
const selectRecords = $table.getCheckboxRecords()
if (selectRecords.length > 0) {
packageUnitList.value = packageUnitList.value.filter((item: any) => !selectRecords.some((row: any) => row.id === item.id))
packageUnitList.value = packageUnitList.value.filter((item: rowVU) => !selectRecords.some((row: rowVU) => row.id === item.id))
}
}
}
@@ -25,7 +25,7 @@
</template>
<script setup lang="ts">
const stock = defineModel<number | null>("stock")
const inventoryUpperLimit = defineModel<number | null>("inventoryUpperLimit")
const inventoryLowerLimit = defineModel<number | null>("inventoryLowerLimit")
const stock = defineModel<number | null>("stock", { default: 0 })
const inventoryUpperLimit = defineModel<number | null>("inventoryUpperLimit", { default: 0 })
const inventoryLowerLimit = defineModel<number | null>("inventoryLowerLimit", { default: 0 })
</script>
@@ -1,5 +1,5 @@
<template>
<el-dialog width="70%" :title="form.id ? '编辑' : '新增'" v-model="visible" :close-on-click-modal="false" draggable>
<el-dialog width="95%" :title="form.id ? '编辑' : '新增'" v-model="visible" :close-on-click-modal="false" draggable>
<el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="auto" v-loading="loading">
<el-tabs v-model="tabPaneActiveName" @tab-change="handleTabChange">
<el-tab-pane class="el-tab-pane" label="基础信息" name="基础信息">
@@ -32,9 +32,9 @@
<script setup lang="ts">
import baseInfo from "./components/baseInfo.vue"
import packageUnit from "./components/packageUnit.vue"
import packageUnit, { type rowVU } from "./components/packageUnit.vue"
import productInventory from "./components/productInventory.vue"
import auxiliaryCode from "./components/auxiliaryCode.vue"
import auxiliaryCode, { rowVC } from "./components/auxiliaryCode.vue"
import { getObj, addObj, putObj } from "/@/api/supermarketerp/supermarketSpu"
import { TabPaneName } from "element-plus"
import { useMessage } from "/@/hooks/message"
@@ -126,32 +126,28 @@ const openDialog = async (id: string) => {
// 初始化表单数据
const getsupermarketSpuData = async (id: string) => {
// 获取数据
loading.value = true
try {
const res = await getObj(id).finally(() => (loading.value = false))
if (res.code === 0) {
res.data.smErpUnitEntityList = res.data.smErpUnitEntityList.map((item: any) => {
// 格式化数据
item.retailPrice = parseFloat(displayPrice(item.retailPrice, ""))
item.promotionPrice = parseFloat(displayPrice(item.promotionPrice, ""))
item.purchasePrice = parseFloat(displayPrice(item.purchasePrice, ""))
item.costPrice = parseFloat(displayPrice(item.costPrice, ""))
res.data.smErpUnitEntityList = res.data.smErpUnitEntityList.map((item: rowVU) => {
// 格式化金额数据
item.retailPrice = parseFloat(displayPrice(item.retailPrice, "", 2))
item.promotionPrice = parseFloat(displayPrice(item.promotionPrice, "", 2))
item.purchasePrice = parseFloat(displayPrice(item.purchasePrice, "", 2))
item.costPrice = parseFloat(displayPrice(item.costPrice, "", 2))
return item
})
Object.assign(form, {
...res.data,
costPrice: parseFloat(displayPrice(res.data.costPrice, "")),
purchasePrice: parseFloat(displayPrice(res.data.purchasePrice, "")),
retailPrice: parseFloat(displayPrice(res.data.retailPrice, "")),
grossMargin: parseFloat(displayPrice(res.data.grossMargin, "", 2)),
})
console.log("获取的商品详情:", res.data)
}
} catch (error: any) {
loading.value = false
useMessage().error(error.msg)
} finally {
loading.value = false
}
}
@@ -160,19 +156,16 @@ const resetForm = () => {
dataFormRef.value?.resetFields()
form.smErpUnitEntityList = []
form.smErpAuxiliaryCodeEntityList = []
form.stock = 0
form.inventoryUpperLimit = 0
form.inventoryLowerLimit = 0
}
// tab栏切换
const handleTabChange = (name: TabPaneName) => (currentTabPaneIndex.value = tabPaneEnum.findIndex((item) => item === name))
// 整理包装单位列表
const useHandleUnit = () => {
const curRadioRow = packageUnitRef.value.getRadioEvent()
return form.smErpUnitEntityList.map((item: any) => {
if (item.id === curRadioRow.id) {
const usePackageUnitList = () => {
const curRadioRowUnit = packageUnitRef.value.getRadioEvent()
return form.smErpUnitEntityList.map((item: rowVU) => {
if (item.id === curRadioRowUnit.id) {
item.isBase = true
} else {
item.isBase = null
@@ -190,10 +183,10 @@ const useHandleUnit = () => {
}
// 整理辅助条码列表
const useHandleAuxiliaryCode = () => {
return form.smErpAuxiliaryCodeEntityList.map((item: any) => {
const barCode = form.smErpUnitEntityList.find((item2: any) => item2.unit === item.unit)?.barCode
item.barCode = barCode
const useAuxiliaryCode = () => {
return form.smErpAuxiliaryCodeEntityList.map((item: rowVC) => {
const barCode = form.smErpUnitEntityList.find((unitItem: any) => unitItem.id === item.unitId)?.barCode
if (barCode) item.barCode = barCode
if (item.isNew) {
item.id = ""
delete item.isNew
@@ -213,17 +206,31 @@ const onSubmit = async () => {
// if (!form.smErpAuxiliaryCodeEntityList || form.smErpAuxiliaryCodeEntityList.length <= 0) return useMessage().warning("请添加辅助条码")
// if (!(await auxiliaryCodeRef.value.editableTableValidate())) return useMessage().warning("辅助条码必填项未填写完整")
const handleUnit = useHandleUnit()
const handleAuxiliaryCode = useHandleAuxiliaryCode()
console.log("提交的数据", { ...form, smErpUnitEntityList: handleUnit, smErpAuxiliaryCodeEntityList: handleAuxiliaryCode })
const handlePackageUnit = usePackageUnitList()
const handleAuxiliaryCode = useAuxiliaryCode()
console.log("提交的数据", {
...form,
grossMargin: storePrice(form.grossMargin),
smErpUnitEntityList: handlePackageUnit,
smErpAuxiliaryCodeEntityList: handleAuxiliaryCode,
})
try {
loading.value = true
const _pa = { ...form, smErpUnitEntityList: handleUnit, smErpAuxiliaryCodeEntityList: handleAuxiliaryCode }
form.id ? await putObj(_pa) : await addObj(_pa)
useMessage().success(form.id ? "修改成功" : "添加成功")
visible.value = false
emit("refresh")
const _pa = {
...form,
grossMargin: storePrice(form.grossMargin),
smErpUnitEntityList: handlePackageUnit,
smErpAuxiliaryCodeEntityList: handleAuxiliaryCode,
}
const res = form.id ? await putObj(_pa) : await addObj(_pa)
if (res.code === 0) {
useMessage().success(form.id ? "修改成功" : "添加成功")
visible.value = false
emit("refresh")
} else {
useMessage().error(res.msg ?? "修改失败")
}
} catch (err: any) {
useMessage().error(err.msg)
} finally {