This commit is contained in:
dzc committed 2025-01-03 16:19:40 +08:00
commit 20e0b20867
5 files changed
+122 -102

No files matched your search

@@ -2,7 +2,7 @@
<el-dialog :title="form.id ? '编辑' : '新增'" v-model="visible" :close-on-click-modal="false" draggable>
<el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="90px" v-loading="loading">
<el-row :gutter="24">
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 mx-auto">
<el-form-item label="条码" prop="barCode">
<el-input v-model="form.barCode" placeholder="请输入条码" />
</el-form-item>
@@ -45,28 +45,30 @@
></right-toolbar> -->
</div>
</el-row>
<el-table :data="supermarketAuxiliaryCodeEntityList" border :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle">
<!-- <el-table-column type="selection" width="40" align="center" fixed /> -->
<el-table-column type="index" label="#" width="50" />
<el-table-column prop="barCode" label="条码" show-overflow-tooltip />
<!-- <el-table-column prop="spuId" label="spuID" show-overflow-tooltip /> -->
<el-table-column label="操作" width="150" fixed="right">
<template #default="scope">
<el-button
icon="edit-pen"
text
type="primary"
v-auth="'supermarket_supermarketAuxiliaryCode_edit'"
@click="formDialogRef.openDialog(scope.row)"
>
编辑
</el-button>
<el-button icon="delete" text type="primary" v-auth="'supermarket_supermarketAuxiliaryCode_del'" @click="handleDelete(scope.row)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-form-item label="" prop="supermarketAuxiliaryCodeEntityList">
<el-table :data="supermarketAuxiliaryCodeEntityList" border :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle">
<!-- <el-table-column type="selection" width="40" align="center" fixed /> -->
<el-table-column type="index" label="#" width="50" />
<el-table-column prop="barCode" label="条码" show-overflow-tooltip />
<!-- <el-table-column prop="spuId" label="spuID" show-overflow-tooltip /> -->
<el-table-column label="操作" width="150" fixed="right">
<template #default="scope">
<el-button
icon="edit-pen"
text
type="primary"
v-auth="'supermarket_supermarketAuxiliaryCode_edit'"
@click="formDialogRef.openDialog(scope.row)"
>
编辑
</el-button>
<el-button icon="delete" text type="primary" v-auth="'supermarket_supermarketAuxiliaryCode_del'" @click="handleDelete(scope.row)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<!-- <pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" /> -->
<!-- 编辑、新增 -->
@@ -110,13 +112,14 @@ const tableStyle = {
const getDataList = (formData: any) => {
console.log(formData);
const index = supermarketAuxiliaryCodeEntityList.value.findIndex((item: any) => item.id === formData.id);
if (index === -1) {
supermarketAuxiliaryCodeEntityList.value.push(formData);
const index = supermarketAuxiliaryCodeEntityList.value?.findIndex((item: any) => item.id === formData.id);
if (supermarketAuxiliaryCodeEntityList.value == null || index == undefined) {
supermarketAuxiliaryCodeEntityList.value = [{ ...formData, isNew: true }];
} else if (index === -1) {
supermarketAuxiliaryCodeEntityList.value.push({ ...formData, isNew: true });
} else {
supermarketAuxiliaryCodeEntityList.value[index] = formData;
}
console.log('a', supermarketAuxiliaryCodeEntityList.value);
};
// 清空搜索条件
// const resetQuery = () => {
@@ -53,33 +53,35 @@
></right-toolbar> -->
</div>
</el-row>
<el-table :data="supermarketUnitEntityList" border :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle">
<!-- <el-table-column type="selection" width="40" align="center" fixed /> -->
<el-table-column type="index" label="#" width="50" />
<el-table-column prop="barCode" label="条码" show-overflow-tooltip />
<el-table-column prop="spec" label="规格" show-overflow-tooltip />
<el-table-column prop="unit" label="单位" show-overflow-tooltip />
<el-table-column prop="status" label="状态" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.status == 0" type="success">正常</el-tag>
<el-tag v-if="scope.row.status == 1" type="danger">停销</el-tag>
</template>
</el-table-column>
<el-table-column prop="packageNum" label="内装数量" show-overflow-tooltip />
<el-table-column prop="purchasePrice" label="进价/单位分" show-overflow-tooltip />
<el-table-column prop="retailPrice" label="零售价/单位分" show-overflow-tooltip />
<!-- <el-table-column prop="spuId" label="spuId" show-overflow-tooltip /> -->
<el-table-column prop="promotionPrice" label="促销价" show-overflow-tooltip />
<el-table-column prop="costPrice" label="成本价" show-overflow-tooltip />
<el-table-column label="操作" width="150" fixed="right">
<template #default="scope">
<el-button icon="edit-pen" text type="primary" v-auth="'supermarket_supermarketUnit_edit'" @click="formDialogRef.openDialog(scope.row)">
编辑
</el-button>
<el-button icon="delete" text type="primary" v-auth="'supermarket_supermarketUnit_del'" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-form-item label="" prop="supermarketUnitEntityList">
<el-table :data="supermarketUnitEntityList" border :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle">
<!-- <el-table-column type="selection" width="40" align="center" fixed /> -->
<el-table-column type="index" label="#" width="50" />
<el-table-column prop="barCode" label="条码" show-overflow-tooltip />
<el-table-column prop="spec" label="规格" show-overflow-tooltip />
<el-table-column prop="unit" label="单位" show-overflow-tooltip />
<el-table-column prop="status" label="状态" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.status == 0" type="success">正常</el-tag>
<el-tag v-if="scope.row.status == 1" type="danger">停销</el-tag>
</template>
</el-table-column>
<el-table-column prop="packageNum" label="内装数量" show-overflow-tooltip />
<el-table-column prop="purchasePrice" label="进价/单位分" show-overflow-tooltip />
<el-table-column prop="retailPrice" label="零售价/单位分" show-overflow-tooltip />
<!-- <el-table-column prop="spuId" label="spuId" show-overflow-tooltip /> -->
<el-table-column prop="promotionPrice" label="促销价" show-overflow-tooltip />
<el-table-column prop="costPrice" label="成本价" show-overflow-tooltip />
<el-table-column label="操作" width="150" fixed="right">
<template #default="scope">
<el-button icon="edit-pen" text type="primary" v-auth="'supermarket_supermarketUnit_edit'" @click="formDialogRef.openDialog(scope.row)">
编辑
</el-button>
<el-button icon="delete" text type="primary" v-auth="'supermarket_supermarketUnit_del'" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<!-- <pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" /> -->
<!-- 编辑、新增 -->
@@ -122,13 +124,14 @@ const tableStyle = {
const getDataList = (formData: any) => {
console.log(formData);
const index = supermarketUnitEntityList.value.findIndex((item: any) => item.id === formData.id);
if (index === -1) {
supermarketUnitEntityList.value.push(formData);
const index = supermarketUnitEntityList.value?.findIndex((item: any) => item.id === formData.id);
if (supermarketUnitEntityList.value == null || index == undefined) {
supermarketUnitEntityList.value = [{ ...formData, isNew: true }];
} else if (index === -1) {
supermarketUnitEntityList.value.push({ ...formData, isNew: true });
} else {
supermarketUnitEntityList.value[index] = formData;
}
console.log('a', supermarketUnitEntityList.value);
};
// 清空搜索条件
+52 -38
View File
@@ -4,179 +4,179 @@
<el-tabs v-model="tabPaneActiveName" @tab-change="handleTabChange">
<el-tab-pane label="基础信息" name="基础信息" style="overflow-y: auto; height: 60vh">
<el-row style="padding: 10px">
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="货号" prop="productCode">
<el-input v-model="form.productCode" placeholder="请输入货号" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="自编码/条码" prop="barcode">
<el-input v-model="form.barcode" placeholder="请输入自编码/条码" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="商品名称" prop="productName">
<el-input v-model="form.productName" placeholder="请输入商品名称" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="商品分类" prop="categoryId">
<el-select v-model="form.categoryId" placeholder="请选择商品分类">
<el-option v-for="item in categoryOptions" :key="item?.id" :label="item?.name" :value="item?.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="品牌" prop="brandId">
<el-select v-model="form.brandId" placeholder="请选择品牌">
<el-option v-for="item in brandOptions" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24" class="mb20">
<el-col :span="24" class="mb20 pr-10">
<el-form-item label="商品封面图" prop="picUrl">
<upload-img v-model:imageUrl="form.picUrl"></upload-img>
</el-form-item>
</el-col>
<el-col :span="24" class="mb20">
<el-col :span="24" class="mb20 pr-10">
<el-form-item label="商品轮播图" prop="sliderPicUrls">
<upload-imgs v-model:imageUrl="form.sliderPicUrls"></upload-imgs>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="排序字段" prop="sort">
<el-input-number :min="0" :max="1000" v-model="form.sort" placeholder="请输入排序字段"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="商品状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio :label="item.value" v-for="(item, index) in status" border :key="index">{{ item.label }} </el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="成本单价" prop="costPrice">
<el-input-number v-model="form.costPrice" placeholder="请输入成本单价,单位:分"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="库存" prop="stock">
<el-input-number v-model="form.stock" placeholder="请输入库存"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="赠送积分" prop="giveIntegral">
<el-input-number v-model="form.giveIntegral" placeholder="请输入赠送积分"></el-input-number>
</el-form-item>
</el-col>
<!-- <el-col :span="12" class="mb20">
<!-- <el-col :span="12" class="mb20 pr-10">
<el-form-item label="商户编号" prop="merchantId">
<el-select v-model="form.merchantId" placeholder="请选择商户编号">
<el-option label="请选择" :value="1">1???</el-option>
</el-select>
</el-form-item>
</el-col> -->
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="规格" prop="specification">
<el-input v-model="form.specification" placeholder="请输入规格" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="产地" prop="origin">
<el-input v-model="form.origin" placeholder="请输入产地" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="装数" prop="packingQuantity">
<el-input-number :min="0" v-model="form.packingQuantity" placeholder="请输入装数"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="零售价" prop="retailPrice">
<el-input-number v-model="form.retailPrice" placeholder="请输入零售价"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="进价" prop="purchasePrice">
<el-input-number v-model="form.purchasePrice" placeholder="请输入进价"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="货商" prop="supplierId">
<el-select v-model="form.supplierId" placeholder="请选择货商">
<el-option v-for="item in supplierOptions" :key="item.supplierId" :label="item.supplierName" :value="item.supplierId" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="会员价1" prop="memberPrice1">
<el-input-number v-model="form.memberPrice1" placeholder="请输入会员价1"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="会员价2" prop="memberPrice2">
<el-input-number v-model="form.memberPrice2" placeholder="请输入会员价2"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="会员价3" prop="memberPrice3">
<el-input-number v-model="form.memberPrice3" placeholder="请输入会员价3"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="批发价1" prop="wholesalePrice1">
<el-input-number v-model="form.wholesalePrice1" placeholder="请输入批发价1"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="批发价2" prop="wholesalePrice2">
<el-input-number v-model="form.wholesalePrice2" placeholder="请输入批发价2"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="批发价3" prop="wholesalePrice3">
<el-input-number v-model="form.wholesalePrice3" placeholder="请输入批发价3"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="促销价" prop="promotionPrice">
<el-input-number v-model="form.promotionPrice" placeholder="请输入促销价"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="商品性质" prop="productNature">
<el-select v-model="form.productNature" placeholder="请选择商品性质">
<el-option :value="item.value" :label="item.label" v-for="(item, index) in supermarket_nature" :key="index"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24" class="mb20">
<el-col :span="24" class="mb20 pr-10">
<el-form-item label="商品简介" prop="introduction">
<el-input type="textarea" v-model="form.introduction" rows="4" placeholder="请输入商品简介" maxlength="400" show-word-limit />
</el-form-item>
</el-col>
<el-col :span="24" class="mb20">
<el-col :span="24" class="mb20 pr-10">
<el-form-item label="商品详情" prop="description">
<editor v-if="visible" v-model:get-html="form.description" placeholder="请输入商品详情"></editor>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="库存上限" prop="inventoryUpperLimit">
<el-input-number v-model="form.inventoryUpperLimit" placeholder="请输入库存上限"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="库存下限" prop="inventoryLowerLimit">
<el-input-number v-model="form.inventoryLowerLimit" placeholder="请输入库存下限"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-col :span="12" class="mb20 pr-10">
<el-form-item label="毛利率" prop="grossMargin">
<el-input-number v-model="form.grossMargin" placeholder="请输入毛利率"></el-input-number>
</el-form-item>
@@ -203,7 +203,7 @@
</el-dialog>
</template>
<script setup lang="ts" name="SupermarketSpuDialog">
<script setup lang="ts">
import { useDict } from '/@/hooks/dict';
import { useMessage } from '/@/hooks/message';
import { getObj, addObj, putObj, getSupermarketCategory, getSupermarketBrand } from '/@/api/supermarket/supermarketSpu';
@@ -256,7 +256,7 @@ const form = reactive({
promotionPrice: 0,
productNature: '',
introduction: '',
description: '',
description: '<p></p>',
inventoryUpperLimit: 0,
inventoryLowerLimit: 0,
grossMargin: 0,
@@ -275,6 +275,8 @@ const dataRules = {
status: [{ required: true, message: '请选择商品状态', trigger: 'blur' }],
merchantId: [{ required: true, message: '商户编号不能为空', trigger: 'blur' }],
supplierId: [{ required: true, message: '请选择货商', trigger: 'blur' }],
supermarketUnitEntityList: [{ required: true, message: '请添加包装单位', trigger: 'change' }],
supermarketAuxiliaryCodeEntityList: [{ required: true, message: '请添加辅助条码', trigger: 'change' }],
};
const { supermarket_nature, status } = useDict('supermarket_nature', 'status');
const categoryOptions = ref<any>([]); // 商品分类的下拉选项
@@ -317,9 +319,7 @@ const openDialog = async (id: string) => {
form.supermarketAuxiliaryCodeEntityList = [];
// 重置表单数据
nextTick(() => {
dataFormRef.value?.resetFields();
});
dataFormRef.value?.resetFields();
// 获取supermarketSpu信息
if (id) {
@@ -368,11 +368,25 @@ const onSubmit = async () => {
console.log(form);
const valid = await dataFormRef.value.validate().catch(() => {});
if (!form.supermarketUnitEntityList || form.supermarketUnitEntityList.length <= 0) useMessage().warning('请添加包装单位');
if (!form.supermarketAuxiliaryCodeEntityList || form.supermarketAuxiliaryCodeEntityList.length <= 0) useMessage().warning('请添加辅助条码');
if (!valid) return false;
try {
loading.value = true;
if (form.id) {
form.supermarketUnitEntityList.map((item: any) => {
if (item.isNew) {
item.id = '';
delete item.isNew;
}
});
form.supermarketAuxiliaryCodeEntityList.map((item: any) => {
if (item.isNew) {
item.id = '';
delete item.isNew;
}
});
await putObj(form);
} else {
form.supermarketUnitEntityList.map((item: any) => {
@@ -73,16 +73,16 @@
<dict-tag :options="status" :value="scope.row.status"></dict-tag>
</template>
</el-table-column>
<el-table-column prop="costPrice" label="成本单价" show-overflow-tooltip width="100" />
<!-- <el-table-column prop="costPrice" label="成本单价" show-overflow-tooltip width="100" />-->
<el-table-column prop="stock" label="库存" show-overflow-tooltip />
<!-- <el-table-column prop="giveIntegral" label="赠送积分" show-overflow-tooltip /> -->
<!-- <el-table-column prop="merchantId" label="商户编号" show-overflow-tooltip /> -->
<el-table-column prop="specification" label="规格" show-overflow-tooltip />
<!-- <el-table-column prop="specification" label="规格" show-overflow-tooltip />-->
<!-- <el-table-column prop="origin" label="产地" show-overflow-tooltip /> -->
<el-table-column prop="packingQuantity" label="装数" show-overflow-tooltip />
<el-table-column prop="purchasePrice" label="进价)" show-overflow-tooltip />
<el-table-column prop="retailPrice" label="零售价" show-overflow-tooltip />
<el-table-column prop="promotionPrice" label="促销价" show-overflow-tooltip />
<!-- <el-table-column prop="packingQuantity" label="装数" show-overflow-tooltip />-->
<!-- <el-table-column prop="purchasePrice" label="进价)" show-overflow-tooltip />-->
<!-- <el-table-column prop="retailPrice" label="零售价" show-overflow-tooltip />-->
<!-- <el-table-column prop="promotionPrice" label="促销价" show-overflow-tooltip />-->
<el-table-column prop="productNature" label="商品性质" show-overflow-tooltip width="150">
<template #default="scope">
<dict-tag :options="supermarket_nature" :value="scope.row.productNature"></dict-tag>