refactor(goods): 重构分类页面装修,使用图片预览替代CSS示意图

- 将"货号"统一重命名为"SKU编码"
- 重构分类页面装修,使用图片预览替代CSS示意图
- 修复商家端主容器横向溢出隐藏问题
This commit is contained in:
pikachu1995@126.com
2026-10-22 16:37:54 +08:00
parent 67e8c86b5b
commit 1395f2ad24
15 changed files with 1620 additions and 1127 deletions

View File

@@ -33,17 +33,6 @@
style="width: 240px"
/>
</el-form-item>
<el-form-item label="销售模式" prop="salesModel">
<el-select
v-model="searchForm.salesModel"
placeholder="请选择"
clearable
style="width: 240px"
>
<el-option label="零售" value="RETAIL" />
<el-option label="批发" value="WHOLESALE" />
</el-select>
</el-form-item>
<el-form-item label="商品类型" prop="goodsType">
<el-select
v-model="searchForm.goodsType"
@@ -159,11 +148,6 @@
</el-table-column>
<el-table-column prop="buyCount" label="销量" width="150" />
<el-table-column prop="quantity" label="库存" width="150" />
<el-table-column label="销售模式" width="150">
<template #default="{ row }">
<span v-if="row">{{ salesModelText(row.salesModel) }}</span>
</template>
</el-table-column>
<el-table-column label="商品类型" width="150">
<template #default="{ row }">
<span v-if="row">{{ goodsTypeText(row.goodsType) }}</span>
@@ -344,7 +328,6 @@ const { loading, data, total, searchForm, getDataList, handleSearch, resetSearch
goodsName: "",
id: "",
storeName: "",
salesModel: "",
goodsType: "",
groupId: "",
},
@@ -403,11 +386,6 @@ function onStatusTabClick(tab) {
const status = tab.paneName ?? tab.props?.name;
goodsStatusClick(status);
}
function salesModelText(v) {
if (v === "RETAIL") return "零售";
if (v === "WHOLESALE") return "批发";
return "其他类型";
}
function goodsTypeText(v) {
if (v === "PHYSICAL_GOODS") return "实物商品";
if (v === "VIRTUAL_GOODS") return "虚拟商品";

View File

@@ -246,37 +246,23 @@
<span class="goods-section-index">{{ sectionNo("price") }}</span>
<div class="goods-section-hd-text">
<h3>价格库存</h3>
<p>销售模式、规格与库存</p>
<p>商品规格与库存</p>
</div>
</div>
<div class="goods-section-bd">
<el-form-item label="销售模式">
<span class="detail-value">{{ salesModelDisplayText }}</span>
</el-form-item>
<el-form-item v-if="goods.salesModel === 'WHOLESALE'" label="销售规则">
<el-table border :data="wholesaleData" style="width: 100%">
<el-table-column label="销售规则" min-width="320">
<template #default="{ row }">
<span v-if="row">
当商品购买数量 ≥ {{ row.num }} 时,售价为 ¥{{ row.price }} / {{ goods.goodsUnit || "件" }}
</span>
</template>
</el-table-column>
</el-table>
</el-form-item>
<div class="goods-submodule">
<div class="goods-submodule-hd">SKU 规格</div>
<el-table :data="skuData" border style="width: 100%">
<el-table-column prop="id" label="SKU ID" min-width="180" show-overflow-tooltip />
<el-table-column prop="specs" label="规格" min-width="160" show-overflow-tooltip />
<el-table-column prop="sn" label="货号" min-width="120" show-overflow-tooltip />
<el-table-column v-if="goods.salesModel !== 'WHOLESALE'" label="价格" width="120">
<el-table-column prop="sn" label="SKU编码" min-width="120" show-overflow-tooltip />
<el-table-column label="价格" width="120">
<template #default="{ row }">
<priceColorScheme v-if="row" :value="row.price" :color="$mainColor" />
</template>
</el-table-column>
<el-table-column
v-if="!isAppointmentGoods && goods.salesModel !== 'WHOLESALE'"
v-if="!isAppointmentGoods"
prop="quantity"
label="库存"
width="90"
@@ -392,7 +378,6 @@ const goods = ref({});
const brandList = ref([]);
const previewGoodsPicture = ref("");
const goodsPictureVisible = ref(false);
const wholesaleData = ref([]);
const skuData = ref([]);
const activeTab = ref("basic");
const slotCapacityVisible = ref(false);
@@ -409,16 +394,6 @@ const isAppointmentGoods = computed(() => {
const needsLogistics = computed(() => {
return goods.value.goodsType === "PHYSICAL_GOODS";
});
const salesModelDisplayText = computed(() => {
const type = goods.value.goodsType;
const model = goods.value.salesModel;
if (type === "APPOINTMENT_GOODS") return "预约型";
if (type === "E_COUPON") return "电子卡券";
if (type === "VIRTUAL_GOODS") return "虚拟型";
if (model === "WHOLESALE") return "批发型";
if (model === "RETAIL") return "零售型";
return model || "—";
});
const sectionTabs = computed(() => {
const tabs = [
{ name: "basic", label: "基础信息" },
@@ -568,7 +543,6 @@ function initGoods(id) {
quantity: sku.quantity,
slotCapacities: sku.slotCapacities,
}));
wholesaleData.value = res.result?.wholesaleList || [];
})
.finally(() => {
loading.value = false;

View File

@@ -25,10 +25,10 @@
style="width: 240px"
/>
</el-form-item>
<el-form-item label="SKU货号" prop="sn">
<el-form-item label="SKU编码" prop="sn">
<el-input
v-model="searchForm.sn"
placeholder="请输入SKU货号"
placeholder="请输入SKU编码"
clearable
style="width: 240px"
/>