feat: 代码合并

This commit is contained in:
2025-04-22 10:17:05 +08:00
parent 21eda68ab0
commit 73e20ad617

View File

@@ -1,50 +1,25 @@
<template>
<div class="addgoods">
<el-form
ref="ruleFormRef"
:model="ruleForm"
:rules="rules"
label-width="150px"
class="demo-ruleForm"
status-icon
>
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="150px" class="demo-ruleForm" status-icon>
<el-form-item label="商品名称" required>
<el-col :span="12">
<el-form-item prop="name">
<el-input
v-model="ruleForm.name"
placeholder="请输入商品名称"
:disabled="isSyncStatus()"
/>
<el-input v-model="ruleForm.name" placeholder="请输入商品名称" :disabled="isSyncStatus()" />
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="商品介绍">
<el-col :span="12">
<el-form-item>
<el-input
v-model="ruleForm.shortTitle"
type="textarea"
placeholder="请输入商品介绍"
:disabled="isSyncStatus()"
/>
<el-input v-model="ruleForm.shortTitle" type="textarea" placeholder="请输入商品介绍" :disabled="isSyncStatus()" />
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="单位" required>
<el-col :span="12">
<el-form-item prop="unitId">
<el-select
v-model="ruleForm.unitId"
placeholder="请选择单位"
:disabled="isSyncStatus()"
>
<el-option
:label="item.name"
:value="item.id"
v-for="item in datas.Company"
:key="item.id"
/>
<el-select v-model="ruleForm.unitId" placeholder="请选择单位" :disabled="isSyncStatus()">
<el-option :label="item.name" :value="item.id" v-for="item in datas.Company" :key="item.id" />
</el-select>
</el-form-item>
</el-col>
@@ -52,17 +27,8 @@
<el-form-item label="商品分类" required>
<el-col :span="12">
<el-form-item prop="region">
<el-select
v-model="ruleForm.categoryId"
placeholder="请选择商品分类"
:disabled="isSyncStatus()"
>
<el-option
:label="item.name"
:value="item.id"
v-for="item in datas.classification"
:key="item.id"
/>
<el-select v-model="ruleForm.categoryId" placeholder="请选择商品分类" :disabled="isSyncStatus()">
<el-option :label="item.name" :value="item.id" v-for="item in datas.classification" :key="item.id" />
</el-select>
</el-form-item>
</el-col>
@@ -72,21 +38,11 @@
</el-form-item> -->
<el-form-item label="商品图片" required prop="images">
<div style="display: flex; flex-wrap: wrap">
<div
v-for="(item, index) in ruleForm.images"
:key="index"
style="position: relative"
class="showStyle"
>
<div v-for="(item, index) in ruleForm.images" :key="index" style="position: relative" class="showStyle">
<el-icon class="buttonstyle" @click="deleteEvent(item)">
<DeleteFilled />
</el-icon>
<img
style="width: 148px; height: 148px; margin-right: 6px"
class="imgStyle"
:src="item"
alt=""
/>
<img style="width: 148px; height: 148px; margin-right: 6px" class="imgStyle" :src="item" alt="" />
</div>
<div class="upImgStyle" @click="addimgEvent">+</div>
</div>
@@ -98,11 +54,7 @@
<AddImg ref="addImg" @successEvent="successEvent"></AddImg>
<el-form-item label="商品类型">
<el-radio-group
v-model="ruleForm.type"
@change="changeTypeEnum(ruleForm.type)"
:disabled="isSyncStatus()"
>
<el-radio-group v-model="ruleForm.type" @change="changeTypeEnum(ruleForm.type)" :disabled="isSyncStatus()">
<el-radio value="single">单规格商品</el-radio>
<el-radio value="sku">多规格商品</el-radio>
<el-radio value="package">套餐商品</el-radio>
@@ -119,12 +71,7 @@
</el-radio-group>
</div>
<div v-if="ruleForm.groupType == '0'">
<el-table
border
:data="item.goods"
v-for="(item, index) in ruleForm.proGroupVo"
:key="index"
>
<el-table border :data="item.goods" v-for="(item, index) in ruleForm.proGroupVo" :key="index">
<el-table-column label="名称" prop="proName"></el-table-column>
<el-table-column label="规格" prop="skuName"></el-table-column>
<el-table-column label="价格" prop="price"></el-table-column>
@@ -140,19 +87,10 @@
</el-button>
</template>
<template v-slot="scope">
<el-button
type="text"
:disabled="scope.row.type != 'sku' && isSyncStatus()"
@click="showSelectSkuHandle(scope.row, scope.$index, index)"
>
设置规格
</el-button>
<el-button
type="text"
@click="ruleForm.proGroupVo[index].goods.splice(scope.$index, 1)"
>
删除
</el-button>
<el-button type="text" :disabled="scope.row.type != 'sku' && isSyncStatus()"
@click="showSelectSkuHandle(scope.row, scope.$index, index)">设置规格</el-button>
<el-button type="text"
@click="ruleForm.proGroupVo[index].goods.splice(scope.$index, 1)">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -167,10 +105,7 @@
<el-input v-model="item.number" :disabled="isSyncStatus()" />
</el-form-item>
<el-form-item>
<el-button
@click="ruleForm.proGroupVo.splice(index, 1)"
:disabled="isSyncStatus()"
>
<el-button @click="ruleForm.proGroupVo.splice(index, 1)" :disabled="isSyncStatus()">
删除
</el-button>
</el-form-item>
@@ -182,11 +117,7 @@
<el-table-column label="价格" prop="price"></el-table-column>
<el-table-column label="数量" prop="number">
<template v-slot="scope">
<el-input-number
v-model="scope.row.number"
:min="0"
:disabled="isSyncStatus()"
/>
<el-input-number v-model="scope.row.number" :min="0" :disabled="isSyncStatus()" />
</template>
</el-table-column>
<el-table-column width="150">
@@ -196,20 +127,10 @@
</el-button>
</template>
<template v-slot="scope">
<el-button
type="text"
:disabled="scope.row.type != 'sku' && isSyncStatus()"
@click="showSelectSkuHandle(scope.row, scope.$index, index)"
>
设置规格
</el-button>
<el-button
type="text"
@click="ruleForm.proGroupVo[index].goods.splice(scope.$index, 1)"
:disabled="isSyncStatus()"
>
删除
</el-button>
<el-button type="text" :disabled="scope.row.type != 'sku' && isSyncStatus()"
@click="showSelectSkuHandle(scope.row, scope.$index, index)">设置规格</el-button>
<el-button type="text" @click="ruleForm.proGroupVo[index].goods.splice(scope.$index, 1)"
:disabled="isSyncStatus()">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -222,51 +143,26 @@
</div>
</el-form-item>
<el-form-item label="选择规格" v-if="ruleForm.type == 'sku'">
<el-select
v-model="ruleForm.specId"
placeholder="请选择规格"
style="width: 500px"
@change="selectSpecHandle"
:disabled="isSyncStatus()"
>
<el-option
:label="item.name"
:value="item.id"
v-for="item in datas.specificationsconfig"
:key="item.id"
></el-option>
<el-select v-model="ruleForm.specId" placeholder="请选择规格" style="width: 500px" @change="selectSpecHandle"
:disabled="isSyncStatus()">
<el-option :label="item.name" :value="item.id" v-for="item in datas.specificationsconfig"
:key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item
:label="ele.name"
v-if="datas.selectSpeclist.length"
v-for="ele in datas.selectSpeclist"
:key="ele.name"
>
<el-form-item :label="ele.name" v-if="datas.selectSpeclist.length" v-for="ele in datas.selectSpeclist"
:key="ele.name">
<el-checkbox-group v-model="ele.selectSpecResult" @change="selectSpecResultChange">
<el-checkbox
:value="element.name"
:label="element.name"
v-for="(element, index) in ele.children"
:key="index"
></el-checkbox>
<el-checkbox :value="element.name" :label="element.name" v-for="(element, index) in ele.children"
:key="index"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<!-- 规格属性 -->
<!-- 单规格称重 -->
<SpecificationAttribute
v-if="ruleForm.type != 'sku'"
:info="ruleForm"
:list="list"
ref="specificationAttributeRef"
></SpecificationAttribute>
<SpecificationAttribute
v-if="ruleForm.type == 'sku' && list.length"
:specTableHeaders="datas.specTableHeaders"
:info="ruleForm"
:list="list"
ref="specificationAttributeRef"
></SpecificationAttribute>
<SpecificationAttribute v-if="ruleForm.type != 'sku'" :info="ruleForm" :list="list"
ref="specificationAttributeRef">
</SpecificationAttribute>
<SpecificationAttribute v-if="ruleForm.type == 'sku' && list.length" :specTableHeaders="datas.specTableHeaders"
:info="ruleForm" :list="list" ref="specificationAttributeRef"></SpecificationAttribute>
<el-form-item label="重量">
<el-col :span="12">
<div style="display: block">
@@ -300,30 +196,24 @@
</el-checkbox-group>
</el-form-item>
<el-form-item>
<el-col :span="12">
<el-time-picker
v-model="ruleForm.useTime"
is-range
range-separator=""
start-placeholder="开始时间"
end-placeholder="结束时间"
value-format="HH:mm:ss"
format="HH:mm:ss"
/>
<el-col :span="20">
<!-- <el-time-picker v-model="ruleForm.useTime" is-range range-separator="至" start-placeholder="开始时间"
end-placeholder="结束时间" value-format="HH:mm:ss" format="HH:mm:ss" />
-->
<el-time-picker v-model="ruleForm.startTime" value-format="HH:mm:ss" format="HH:mm:ss" placeholder="选择开始时间">
</el-time-picker>-
<el-time-picker v-model="ruleForm.endTime" value-format="HH:mm:ss" format="HH:mm:ss" placeholder="选择结束时间">
</el-time-picker>
</el-col>
</el-form-item>
<el-form-item label="上架">
<el-switch v-model="ruleForm.isSale" :active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item label="库存开关">
<div style="display: block">
<el-switch
v-model="ruleForm.isStock"
:active-value="1"
:inactive-value="0"
:disabled="isSyncStatus()"
/>
<div style="color: #999">关闭则不计算出入库数据</div>
<div style="display: block;">
<el-switch v-model="ruleForm.isStock" :active-value="1" :inactive-value="0" :disabled="isSyncStatus()" />
<div style="color: #999;">关闭则不计算出入库数据</div>
</div>
</el-form-item>
<el-form-item label="设为推荐" prop="delivery">
@@ -334,13 +224,10 @@
</el-form-item>
<el-form-item label="打包费" prop="delivery">
<div style="display: block">
<el-input-number
v-model="ruleForm.packFee"
controls-position="right"
:disabled="isSyncStatus()"
></el-input-number>
<div style="color: #999">单份商品打包费店铺开启外卖模式下该数据才生效</div>
<div style="display: block;">
<el-input-number v-model="ruleForm.packFee" controls-position="right"
:disabled="isSyncStatus()"></el-input-number>
<div style="color: #999;">单份商品打包费店铺开启外卖模式下该数据才生效</div>
</div>
</el-form-item>
<el-form-item>
@@ -355,13 +242,8 @@
<div class="item">
<div class="row">
<div class="title">选项值</div>
<div
class="tag"
:class="{ active: item.active }"
v-for="(item, index) in datas.selectSkuItem.skuList"
:key="item.id"
@click="selectSkuHandle(item, index)"
>
<div class="tag" :class="{ active: item.active }" v-for="(item, index) in datas.selectSkuItem.skuList"
:key="item.id" @click="selectSkuHandle(item, index)">
{{ item.specInfo }}
</div>
</div>
@@ -566,13 +448,11 @@ onMounted(() => {
if (router.currentRoute.value.query.goods_id) {
tbProductGetDetail(router.currentRoute.value.query.goods_id);
}
});
watch(
() => router.currentRoute.value.query.goods_id,
(val) => {
tbProductGetDetail(val);
}
);
})
watch(() => router.currentRoute.value.query.goods_id, (val) => {
tbProductGetDetail(val);
})
async function tbProductGetDetail(id: any) {
// 获取商品详情
const res = await UserAPI3.getDetail(id);
@@ -628,8 +508,8 @@ function selectSkuHandle(item: any, index: number) {
}
function addimgEvent() {
if (isSyncStatus()) {
ElMessage.error("当前同步启用状态下不可修改");
return;
ElMessage.error('当前同步启用状态下不可修改')
return
}
(addImg.value as any)?.show();
}
@@ -667,8 +547,8 @@ function addgoods(index: number = -1) {
}
function deleteEvent(d: any) {
if (isSyncStatus()) {
ElMessage.error("当前同步启用状态下不可修改");
return;
ElMessage.error('当前同步启用状态下不可修改')
return
}
let index = ruleForm.images.findIndex((ele) => ele == d);
ruleForm.images.splice(index, 1);
@@ -883,19 +763,11 @@ const submitForm = async (formEl: FormInstance | undefined) => {
// 规格id修改
// ruleForm.specId = specIdFunction(ruleForm.type)
let selectTitle = false;
ruleForm.proGroupVo.forEach((item: any) => {});
ruleForm.proGroupVo.forEach((item: any) => { });
if (selectTitle) {
ElMessage.error("请填写组名和几选几");
return;
}
// 修改时间
console.log(ruleForm.useTime);
if (!ruleForm.useTime) {
ElMessage.error("请选择定时上下架时间");
return;
}
ruleForm.startTime = ruleForm.useTime[0];
ruleForm.endTime = ruleForm.useTime[1];
// 拿到sku数据
ruleForm.skuList = (specificationAttributeRef.value as any)?.getdata();
// 多规格 selectSpecInfo 添加
@@ -924,7 +796,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
}
}
}
ruleForm.days = ruleForm.days.join(",");
ruleForm.days = ruleForm.days.join(',')
setTimeout(() => {
ruleForm.days = ruleForm.days.split(",");
}, 200);
@@ -1043,7 +915,7 @@ const resetForm = (formEl: FormInstance | undefined) => {
margin-bottom: 20px;
}
.showStyle:hover > .buttonstyle {
.showStyle:hover>.buttonstyle {
display: block;
}