超市调整
This commit is contained in:
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 {
|
||||
|
||||
Reference in new issue
Block a user