cashier-web/src/views/product/indexconfig/addgoods.vue

883 lines
27 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="addgoods">
<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="请输入商品名称" />
</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="请输入商品介绍" />
</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="请选择单位">
<el-option :label="item.name" :value="item.id" v-for="item in datas.Company" :key="item.id" />
</el-select>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="商品分类" required>
<el-col :span="12">
<el-form-item prop="region">
<el-select v-model="ruleForm.categoryId" placeholder="请选择商品分类">
<el-option :label="item.name" :value="item.id" v-for="item in datas.classification" :key="item.id" />
</el-select>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="商品图片" required prop="images">
<MultiImageUpload v-model="ruleForm.images" />
</el-form-item>
<!-- <el-form-item label="商品图片" required prop="images">
<div style="display: flex; flex-wrap: wrap">
<div v-for="(item, index) in datas.imgList" :key="index" style="position: relative" class="showStyle">
<i class="el-icon-error buttonstyle" @click="deleteEvent(item)"></i>
<img style="width: 148px; height: 148px; margin-right: 6px" class="imgStyle" :key="item.id" :src="item.url"
alt="" />
</div>
<div class="upImgStyle" @click="addimgEvent">+</div>
</div>
</el-form-item> -->
<el-form-item>
<div class="tips">注第一张图为商品封面图图片尺寸为750×750</div>
</el-form-item>
<!-- 选择图片 -->
<AddImg ref="addImg" @successEvent="successEvent"></AddImg>
<!-- <el-form-item label="显示/隐藏" required prop="type">
<el-checkbox-group v-model="ruleForm.showType">
<el-checkbox label="table">堂食</el-checkbox>
<el-checkbox label="dine">自取</el-checkbox>
<el-checkbox label="delivery">配送</el-checkbox>
<el-checkbox label="express">快递</el-checkbox>
</el-checkbox-group>
</el-form-item> -->
<el-form-item label="商品类型">
<el-radio-group v-model="ruleForm.type" @change="changeTypeEnum(ruleForm.type)">
<el-radio value="single">单规格商品</el-radio>
<el-radio value="sku">多规格商品</el-radio>
<el-radio value="package">套餐商品</el-radio>
<el-radio value="weight">称重商品</el-radio>
<!-- <el-radio label="coupon">团购券</el-radio> -->
</el-radio-group>
</el-form-item>
<el-form-item label="套餐商品" v-if="ruleForm.type == 'package'">
<div style="display: block;width: 100%;">
<div class="head-container">
<el-radio-group v-model="ruleForm.groupType" @change="typeChange">
<el-radio-button :label="0">固定套餐</el-radio-button>
<el-radio-button :label="1">可选套餐</el-radio-button>
</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-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>
<el-table-column label="数量" prop="number">
<template v-slot="scope">
<el-input-number v-model="scope.row.number" :min="0" />
</template>
</el-table-column>
<el-table-column width="150">
<template #header>
<el-button type="primary" @click="addgoods(-1)">添加商品</el-button>
</template>
<template v-slot="scope">
<el-button type="text" :disabled="scope.row.type != 'sku'"
@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>
</div>
<div v-if="ruleForm.groupType == '1'">
<div class="group_wrap" v-for="(item, index) in ruleForm.proGroupVo" :key="index">
<el-form inline :model="item">
<el-form-item label="规格组名">
<el-input v-model="item.title" />
</el-form-item>
<el-form-item :label="`本组菜品${item.goods.length}选`">
<el-input v-model="item.number" />
</el-form-item>
<el-form-item>
<el-button @click="ruleForm.proGroupVo.splice(index, 1)">删除</el-button>
</el-form-item>
</el-form>
<div style="margin-top: 20px;">
<el-table border :data="item.goods">
<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>
<el-table-column label="数量" prop="number">
<template v-slot="scope">
<el-input-number v-model="scope.row.number" :min="0" />
</template>
</el-table-column>
<el-table-column width="150">
<template #header>
<el-button type="primary" @click="addgoods(index);">添加商品</el-button>
</template>
<template v-slot="scope">
<el-button type="text" :disabled="scope.row.type != 'sku'"
@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>
</div>
</div>
<el-button type="primary" @click="addtaocan">添加套餐组</el-button>
</div>
</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">
<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-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-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>
<el-form-item label="重量">
<el-col :span="12">
<div style="display: block;">
<el-input v-model="ruleForm.weight" placeholder="">
<template #append>千克</template>
</el-input>
<div style="color: #999;">用于快递或配送运费计重</div>
</div>
</el-col>
</el-form-item>
<el-form-item label="是否允许临时改价">
<el-radio-group v-model="ruleForm.isAllowTempModifyPrice">
<el-radio :value="1">允许</el-radio>
<el-radio :value="0">不允许</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="每日销量上限">
<el-input-number v-model="ruleForm.dayLimit" :min="0" />
</el-form-item>
<el-form-item label="每单限购">
<el-input-number v-model="ruleForm.dayLimit" :min="0" />
</el-form-item>
<el-form-item label="每人限购">
<el-input-number v-model="ruleForm.dayLimit" :min="0" />
</el-form-item> -->
<el-form-item label="定时上下架">
<el-checkbox-group v-model="ruleForm.days">
<el-checkbox v-for="(item, index) in datas.cycle" :key="item.value" :value="item.value">
{{ item.label }}
</el-checkbox>
</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="结束时间" :default-value="[new Date('00:00'), new Date('23:59')]" value-format="HH:mm"
format="HH:mm" />
</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" />
<div style="color: #999;">注:关闭则不计算出入库数据</div>
</div>
</el-form-item>
<el-form-item label="设为推荐" prop="delivery">
<el-switch v-model="ruleForm.isHot" :active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item label="库存数量">
<el-input-number v-model="ruleForm.stockNumber" :min="0" />
</el-form-item>
<el-form-item label="打包费" prop="delivery">
<div style="display: block;">
<el-input-number v-model="ruleForm.packFee" controls-position="right"></el-input-number>
<div style="color: #999;">单份商品打包费。注:店铺开启外卖模式下该数据才生效</div>
</div>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm(ruleFormRef)">
确定
</el-button>
<el-button @click="resetForm(ruleFormRef)">取消</el-button>
</el-form-item>
</el-form>
<!-- 选择商品 -->
<shopList ref="shopListRef" @success="selectShopRes" />
<el-dialog :title="datas.selectSkuItem.proName" v-model="datas.showSelectSku">
<div class="pro_sku">
<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)">
{{ item.specInfo }}
</div>
</div>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="datas.showSelectSku = false">取 消</el-button>
<el-button type="primary" @click="showSelectSkuConfirm">确 定</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts" setup>
import { reactive, ref } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'
// 规格属性
import SpecificationAttribute from './SpecificationAttribute.vue'
import UserAPI from "@/api/product/productclassification";
import UserAPI2 from "@/api/product/commonUnits";
import UserAPI3 from "@/api/product/index";
import UserAPI4 from "@/api/product/specificationsconfig";
import shopList from "@/components/mycomponents/shopList.vue";
import AddImg from '@/components/mycomponents/addImg.vue';
import { useRouter } from 'vue-router';
import { useTagsViewStore } from "@/store";
const tagsViewStore = useTagsViewStore();
const router = useRouter();
let list = ref<any[]>([{
"originPrice": 0,
"costPrice": 0,
"salePrice": 0,
"memberPrice": 0,
"suitNum": 1,
"coverImg": "",
"weight": 0,
"barCode": "88888888888888888888"
}]);
let datas = reactive<datasForm>({
cycle: [
{ label: "周一", value: "Monday" },
{ label: "周二", value: "Tuesday" },
{ label: "周三", value: "Wednesday" },
{ label: "周四", value: "Thursday" },
{ label: "周五", value: "Friday" },
{ label: "周六", value: "Saturday" },
{ label: "周七", value: "Sunday" }
],
Company: [],
classification: [],
// 商品规格
specificationsconfig: [],
selectSpeclist: [],
defaultSku: {
"originPrice": 0,
"costPrice": 0,
"salePrice": 0,
"memberPrice": 0,
"suitNum": 1,
"coverImg": "",
"weight": 0,
"barCode": "88888888888888888888"
},
specTableHeaders: [],
// 套餐商品-单规格index
selectSkuTableIndex: 0,
selectSkuConfirmIndex: 0,
showSelectSku: false,
selectSkuItem: {},
addGroupIndex: -1,
imgList: [],
})
let shopListRef = ref(null)
let addImg = ref(null)
let isedit = ref(true)
interface datasForm {
cycle: { label: string, value: string }[],
Company: any[],
classification: any[],
specificationsconfig: any[],
selectSpeclist: any[],
defaultSku: any,
specTableHeaders: any[],
selectSkuTableIndex: any,
selectSkuConfirmIndex: number,
showSelectSku: boolean,
selectSkuItem: any,
addGroupIndex: any,
imgList: any[]
}
interface RuleForm {
name: string,
shortTitle: string,
unitId: string,
categoryId: string,
coverImg: string,
images: string[],
type: string,
specId: any,
groupType: any,
skuList: string[],
weight: any,
isAllowTempModifyPrice: any,
days: string[],
useTime: string[],
startTime: string,
endTime: string,
isSale: string,
isStock: string,
isHot: string,
stockNumber: any,
packFee: any,
sort: Number,
proGroupVo: any[],
selectSpecInfo: any
}
const ruleFormRef = ref<FormInstance>()
const ruleForm = reactive<RuleForm>({
//商品名称
name: '',
//商品介绍
shortTitle: '',
// 单位id
unitId: '',
// 分类id
categoryId: '',
// 封面图url
coverImg: '',
// 详情图urls
images: [],
// 商品类型
type: 'single',
// 规格id
specId: '',
// 套餐类型
groupType: '0',
// 套餐入参
proGroupVo: [{
title: '',
count: '',
number: '',
goods: []
}],
// sku集合
skuList: [],
// 重量
weight: 0,
// 是否允许改价
isAllowTempModifyPrice: 1,
// 定时上下架周期
days: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
useTime: ['00:00:00', '23:59:59'],
// 开始时间
startTime: '',
// 结束时间
endTime: "",
// 是否上架
isSale: "1",
// 是否开启库存
isStock: "1",
// 设为推荐
isHot: "1",
// 库存数量
stockNumber: 0,
// 打包费
packFee: 0,
// 排序值
sort: 1,
selectSpecInfo: {}
})
const rules = reactive<FormRules<RuleForm>>({
name: [
{ required: true, message: '请输入商品名称', trigger: 'blur' },
],
unitId: [
{
required: true,
message: '请选择单位',
trigger: 'change',
},
],
categoryId: [
{
required: true,
message: '请选择商品分类',
trigger: 'change',
},
],
images: [
{
required: true,
message: '请选择图片',
trigger: 'change',
},
],
})
onMounted(() => {
getList()
if (router.currentRoute.value.query.goods_id) {
tbProductGetDetail(router.currentRoute.value.query.goods_id);
}
})
watch(() => router.currentRoute.value.query.goods_id, (val) => {
tbProductGetDetail(val);
})
async function tbProductGetDetail(id: any) {
// 获取商品详情
const res = await UserAPI3.getDetail(id);
changeTypeEnum(res.type)
for (const key in res) {
if (key !== 'images' && key !== 'days') {
(ruleForm as any)[key] = res[key];
}
}
ruleForm.images = res.images.map((item: any, index: number) => item);
ruleForm.days = res.days.split(',');
ruleForm.useTime = [res.startTime, res.endTime];
ruleForm.proGroupVo = res.groupSnap
if (res.type === "sku") {
await tbProductSpecGet()
selectSpecHandle(ruleForm.specId)
datas.selectSpeclist.forEach((item: any) => {
item.selectSpecResult = res.selectSpecInfo[item.name]
// if (item.name === res.selectSpecInfo.name
// ) { }
// item.children.forEach((ele: any) => {
// item.selectSpecResult.push(ele.name)
// })
})
selectSpecResultChange()
} else {
list.value = ruleForm.skuList
}
}
// 选择套餐商品sku
function selectSkuHandle(item: any, index: number) {
// 把所有的设置为false
datas.selectSkuItem.skuList.map((item: any, index: number) => {
let nitem = { ...item }
nitem.active = false
datas.selectSkuItem.skuList[index] = nitem
})
if (item.active) {
item.active = false
} else {
item.active = true
}
datas.selectSkuItem.skuList[index] = { ...item }
// let arr = datas.selectSkuItem.skuList.filter((item:any) => item.active)
// if (arr.length) {
// this.selectSkuConfirmDisabled = false
// } else {
// this.selectSkuConfirmDisabled = true
// }
}
function addimgEvent() {
(addImg.value as any)?.show()
}
// 确认套餐商品设置规格
function showSelectSkuConfirm() {
let item = datas.selectSkuItem.skuList.filter((item: any) => item.active)
ruleForm.proGroupVo[datas.selectSkuTableIndex].goods[datas.selectSkuConfirmIndex] = { ...ruleForm.proGroupVo[datas.selectSkuTableIndex].goods[datas.selectSkuConfirmIndex], skuId: item[0].id }
ruleForm.proGroupVo[datas.selectSkuTableIndex].goods[datas.selectSkuConfirmIndex] = { ...ruleForm.proGroupVo[datas.selectSkuTableIndex].goods[datas.selectSkuConfirmIndex], skuName: item[0].specInfo }
datas.showSelectSku = false
}
// 显示套餐商品设置规格
function showSelectSkuHandle(row: any, index: any, tabIndex: any) {
datas.selectSkuTableIndex = tabIndex
datas.selectSkuConfirmIndex = index
datas.showSelectSku = true
let obj = { ...row }
obj.skuList.map((item: any) => {
item.active = false
})
datas.selectSkuItem = obj
}
// 添加商品
function addgoods(index: number = -1) {
datas.addGroupIndex = index;
(shopListRef.value as any)?.opens()
}
function deleteEvent(d: any) {
let index = datas.imgList.findIndex((ele) => ele.url == d.url);
datas.imgList.splice(index, 1);
}
function successEvent(d: any) {
// this.form.images.push(d[0].url);
// this.imgList.push(d[0]);
}
// 分组选择商品
function selectShopRes(res: Array<any>) {
let newres = res.map(item => {
item.proId = item.id
item.proName = item.name
item.price = item.lowPrice
item.skuId = ''
item.skuName = ''
item.number = 1
return item
})
if (ruleForm.groupType == '0') {
let obj = {
title: '',
count: newres.length,
number: '',
goods: newres
}
ruleForm.proGroupVo = [{ ...obj }]
} else {
if (datas.addGroupIndex != -1) {
ruleForm.proGroupVo[datas.addGroupIndex].count = newres.length
ruleForm.proGroupVo[datas.addGroupIndex].goods = newres
} else {
let arr = [...ruleForm.proGroupVo]
arr.push({
title: '',
count: newres.length,
number: '',
goods: newres
})
ruleForm.proGroupVo = [...arr]
}
}
}
// 获取单位、分类数据
async function getList() {
datas.Company = (await UserAPI2.getList(null)) as any[]
datas.classification = (await UserAPI.getList(null)) as any[]
}
// 选择规格属性
function selectSpecResultChange() {
createSkuHeader();
createSkuBody();
}
function createSkuHeader() {
const headers = [];
for (let item of datas.selectSpeclist) {
if (item.selectSpecResult.length) {
headers.push({
label: item.name,
value: item.name,
});
}
}
datas.specTableHeaders = headers;
}
// 可选套餐弹窗
function addtaocan() {
datas.addGroupIndex = -1;
(shopListRef.value as any)?.opens()
}
// 生成多规格表体
function createSkuBody() {
let bodys = [];
for (let item of datas.selectSpeclist) {
if (item.selectSpecResult.length) {
let arr = [];
for (let val of item.selectSpecResult) {
arr.push({
[item.name]: val,
});
}
bodys.push(arr);
}
}
let arr = cartesian(bodys);
const m = {
coverImg: "",
...datas.defaultSku,
};
let newarr = [];
for (let item of arr) {
if (Array.isArray(item)) {
let obj: Record<string, any> = {};
let specSnap = [];
for (let v of item) {
for (let key in v) {
obj[`${key}`] = v[key];
specSnap.push(v[key]);
}
}
let specSnapStr = specSnap.join(",");
newarr.push({
specSnap: specSnapStr,
specInfo: specSnapStr,
...m,
...obj,
// barCode: `${dayjs().valueOf()}${RandomNumBoth(1, 9999)}`,
});
} else {
let specSnap = [];
for (let key in item) {
specSnap.push(item[key]);
}
let specSnapStr = specSnap.join(",");
newarr.push({
specSnap: specSnapStr,
specInfo: specSnapStr,
...m,
...item,
// barCode: `${dayjs().valueOf()}${RandomNumBoth(1, 9999)}`,
});
}
}
if (ruleForm.skuList.length) {
if (isedit.value) {
let arr: any[] = []
ruleForm.skuList.forEach((item: any, index: number) => {
newarr.forEach((val: any, i: number) => {
if (item.specInfo == val.specInfo) {
// newarr[i] = item
Object.assign(val, item)
arr.push(val)
}
});
});
list.value = arr
isedit.value = false
} else {
list.value = newarr;
}
} else {
list.value = newarr;
}
}
// 切换类型
function changeTypeEnum(item: string) {
// single-单规格商品 sku-多规格商品 package-套餐商品 weight-称重商品 coupon-团购券
list.value = []
if (item == 'sku') {
tbProductSpecGet();
} else {
ruleForm.specId = ""
datas.selectSpeclist = []
list.value = [datas.defaultSku]
}
}
// 笛卡尔积算法
function cartesian(arr) {
if (arr.length < 2) return arr[0] || [];
return [].reduce.call(arr, (col, set) => {
let res = [];
col.forEach((c) => {
set.forEach((s) => {
let t = [].concat(Array.isArray(c) ? c : [c]);
t.push(s);
res.push(t);
});
});
return res;
});
}
// 套餐类型切换
function typeChange() {
// ruleForm.typeEnum = 'normal'
if (ruleForm.groupType == '0') {
ruleForm.proGroupVo = []
ruleForm.proGroupVo[0] = {
title: '',
count: '',
number: 1,
goods: []
}
} else {
ruleForm.proGroupVo = []
}
// this.changeTypeEnum()
}
// 获取规格列表
async function tbProductSpecGet() {
datas.specificationsconfig = (await UserAPI4.getPage(null)) as []
}
// 选择规格
function selectSpecHandle(e: any) {
const selectSpec = JSON.parse(JSON.stringify(datas.specificationsconfig.find((item) => item.id == e).children));
for (let item in selectSpec) {
selectSpec[item].selectSpecResult = [];
}
datas.selectSpeclist = selectSpec;
}
const specificationAttributeRef = ref(null)
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return
await formEl.validate(async (valid, fields) => {
if (valid) {
ruleForm.days = ruleForm.days.join(',')
// 第一张图片作为封面图
ruleForm.coverImg = ruleForm.images[0]
// 规格id修改
// ruleForm.specId = specIdFunction(ruleForm.type)
// 修改时间
ruleForm.startTime = ruleForm.useTime[0]
ruleForm.endTime = ruleForm.useTime[1]
// 拿到sku数据
ruleForm.skuList = (specificationAttributeRef.value as any)?.getdata()
// 多规格 selectSpecInfo 添加
if (ruleForm.type == 'sku') {
let obj: any = {}
datas.selectSpeclist.forEach((item: any) => {
obj[item.name] = item.selectSpecResult
})
ruleForm.selectSpecInfo = obj
} else if (ruleForm.type == 'package') {
// console.log(ruleForm, '套餐')
}
if (ruleForm.id) {
let res = await UserAPI3.update(ruleForm)
if (res.code == 200) {
ElMessage.success("修改成功");
}
} else {
let res = await UserAPI3.addunit(ruleForm)
if (res.code == 200) {
ElMessage.success("添加成功");
}
}
setTimeout(() => {
closeSelectedTag({
"name": "addgoods",
"title": "新增商品",
"path": "/product/addgoods",
"fullPath": "/product/addgoods",
"affix": false,
"keepAlive": true,
"query": {}
})
router.push({ name: 'productIndex' });
}, 500);
} else {
ElMessage.error("请填写完整信息");
console.log('error submit!', fields)
}
})
}
// 关闭当前窗口
function closeSelectedTag(view: TagView) {
tagsViewStore.delView(view).then((res: any) => {
if (tagsViewStore.isActive(view)) {
tagsViewStore.toLastView(res.visitedViews, view);
}
});
}
// 规格id过滤
const specIdFunction = (type: string) => {
if (type === 'single') {
return ''
} else if (type === '2') {
return 2
} else if (type === '3') {
return 3
} else if (type === '4') {
return 4
} else if (type === '5') {
return 5
}
}
const resetForm = (formEl: FormInstance | undefined) => {
closeSelectedTag({
"name": "addgoods",
"title": "新增商品",
"path": "/product/addgoods",
"fullPath": "/product/addgoods",
"affix": false,
"keepAlive": true,
"query": {}
})
if (!formEl) return
formEl.resetFields()
}
</script>
<style scoped lang="scss">
.addgoods {
padding: 20px;
background-color: #fff;
}
.pro_sku {
.item {
.row {
display: flex;
align-items: center;
&:not(:first-child) {
margin-top: 20px;
}
.title {
width: 80px;
}
.tag {
background-color: #F7F7FA;
padding: 6px 12px;
margin-right: 10px;
border-radius: 4px;
&.no {
background: none;
padding: 6px 0;
}
&.active {
background-color: #46A6FF;
color: #fff;
}
}
}
}
}
.group_wrap {
padding: 20px;
background-color: #F7F7FA;
margin-bottom: 20px;
}
.upImgStyle {
cursor: pointer;
width: 148px;
height: 148px;
line-height: 148px;
text-align: center;
border: 1px dashed #ccc;
border-radius: 1%;
font-size: 30px;
color: #ccc;
}
</style>