1.优化编辑商品规格选择,只能重新添加 2.优化商品列表新增字段shopid 3.修复添加商品图片不生效 4.修复用户登录404

This commit is contained in:
gyq
2024-03-06 17:01:47 +08:00
parent 799ee9a5b5
commit bf60ee88e2
9 changed files with 85 additions and 33 deletions

View File

@@ -17,7 +17,7 @@
<el-input v-model="form.name" placeholder="请输入商品名称" style="width: 500px;"></el-input>
</el-form-item>
<el-form-item label="单位">
<el-select v-model="form.unitId" placeholder="请选择单位" style="width: 500px;">
<el-select v-model="form.unitId" placeholder="请选择单位" style="width: 500px;" @change="selectUnitt">
<el-option :label="item.name" :value="item.id" v-for="item in units" :key="item.id"></el-option>
</el-select>
<el-button type="primary" plain icon="el-icon-plus" @click="$refs.addUnitRef.show()">添加单位</el-button>
@@ -27,11 +27,12 @@
<el-select v-model="form.categoryId" placeholder="请选择商品分类" style="width: 500px;">
<el-option :label="item.name" :value="item.id" v-for="item in categorys" :key="item.id"></el-option>
</el-select>
<el-button type="primary" plain icon="el-icon-plus" @click="$refs.addClassifyRef.show()">添加分类</el-button>
<el-button type="primary" plain icon="el-icon-plus"
@click="$refs.addClassifyRef.show()">添加分类</el-button>
<addClassify ref="addClassifyRef" @success="tbShopCategoryGet" />
</el-form-item>
<el-form-item label="商品图片">
<uploadImg ref="uploadImg" :limit="9" @success="uploadSuccess" />
<uploadImg ref="uploadImg" :limit="9" @success="uploadSuccess" @remove="uploadRemove" />
<div class="tips">第一张图为商品封面图图片尺寸为750×750(可拖动图片排序)</div>
</el-form-item>
<el-form-item label="套餐商品" v-if="shopTypes[shopTypesActive].typeEnum == 'group'">
@@ -42,6 +43,7 @@
</template>
</el-table-column>
<el-table-column label="商品信息">
<template v-slot="scope">
<div class="shop_list">
<div class="item" v-for="item in scope.row.goods" :key="item.id">
@@ -55,6 +57,7 @@
</template>
</el-table-column>
<el-table-column label="几选几">
<template v-slot="scope">
<span>{{ scope.row.goods.length }}</span>
<el-input-number v-model="scope.row.number" controls-position="right"
@@ -62,6 +65,7 @@
</template>
</el-table-column>
<el-table-column label="操作" width="160">
<template v-slot="scope">
<el-button type="text" @click="tableAddShop(scope.$index, scope.row.goods)">添加商品</el-button>
<el-button type="text" @click="form.groupSnap.splice(scope.$index, 1)">删除分组</el-button>
@@ -74,31 +78,37 @@
<el-form-item label="规格属性" v-if="shopTypes[shopTypesActive].typeEnum != 'sku'">
<el-table :data="form.skuList" border>
<el-table-column label="售价" prop="salePrice">
<template v-slot="scope">
<el-input-number v-model="scope.row.salePrice"></el-input-number>
</template>
</el-table-column>
<el-table-column label="会员价" prop="memberPrice">
<template v-slot="scope">
<el-input-number v-model="scope.row.memberPrice"></el-input-number>
</template>
</el-table-column>
<el-table-column label="成本价" prop="costPrice">
<template v-slot="scope">
<el-input-number v-model="scope.row.costPrice"></el-input-number>
</template>
</el-table-column>
<el-table-column label="原价" prop="originPrice">
<template v-slot="scope">
<el-input-number v-model="scope.row.originPrice"></el-input-number>
</template>
</el-table-column>
<el-table-column label="库存数量" prop="stockNumber">
<template v-slot="scope">
<el-input-number v-model="scope.row.stockNumber"></el-input-number>
</template>
</el-table-column>
<el-table-column label="分销金额" prop="firstShared">
<template v-slot="scope">
<el-input-number v-model="scope.row.firstShared"></el-input-number>
</template>
@@ -110,7 +120,8 @@
<el-option :label="item.name" :value="item.id" v-for="item in specList" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="item.name" v-if="selectSpec.length" v-for="item in selectSpec" :key="item.name">
<el-form-item :label="item.name" v-if="selectSpec.length && !isEditor" v-for="item in selectSpec"
:key="item.name">
<el-checkbox-group v-model="item.selectSpecResult" @change="selectSpecResultChange">
<el-checkbox :label="item" v-for="(item, index) in item.value
" :key="index"></el-checkbox>
@@ -122,6 +133,7 @@
:key="index">
</el-table-column>
<el-table-column label="图片" prop="coverImg" width="80">
<template v-slot="scope">
<uploadImg type="text" :limit="1" @success="res => scope.row.coverImg = res[0]"
v-if="!scope.row.coverImg" />
@@ -129,40 +141,52 @@
</template>
</el-table-column>
<el-table-column label="售价" prop="salePrice">
<template slot="header" slot-scope="scope">
<span>售价</span>
<i class="icon el-icon-edit" @click="showNumberChange(scope.$index)"></i>
</template>
<template slot-scope="scope">
<el-input-number v-model="scope.row.salePrice" controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column label="会员价" prop="memberPrice">
<template v-slot="scope">
<el-input-number v-model="scope.row.memberPrice" controls-position="right"></el-input-number>
<el-input-number v-model="scope.row.memberPrice"
controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column label="成本价" prop="costPrice">
<template v-slot="scope">
<el-input-number v-model="scope.row.costPrice" controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column label="原价" prop="originPrice">
<template v-slot="scope">
<el-input-number v-model="scope.row.originPrice" controls-position="right"></el-input-number>
<el-input-number v-model="scope.row.originPrice"
controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column label="库存数量" prop="stockNumber">
<template v-slot="scope">
<el-input-number v-model="scope.row.stockNumber" controls-position="right"></el-input-number>
<el-input-number v-model="scope.row.stockNumber"
controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column label="分销金额" prop="firstShared">
<template v-slot="scope">
<el-input-number v-model="scope.row.firstShared" controls-position="right"></el-input-number>
<el-input-number v-model="scope.row.firstShared"
controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column label="操作" width="80">
<template v-slot="scope">
<el-button type="text" @click="form.skuList.splice(scope.$index, 1)">删除</el-button>
</template>
@@ -185,7 +209,7 @@
<el-input-number v-model="form.sort" controls-position="right" :min="0"></el-input-number>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitHandle">确定</el-button>
<el-button type="primary" v-loading="loading" @click="submitHandle">确定</el-button>
<el-button>取消</el-button>
</el-form-item>
</el-form>
@@ -251,11 +275,14 @@ export default {
firstShared: 0
},
tableAddShopIndex: null,
isEditor: false,
loading: false,
form: {
id: '',
typeEnum: 'normal',
name: '',
unitId: '',
unitName: '',
categoryId: '', // 商品分类id
coverImg: '',
images: [],
@@ -309,6 +336,9 @@ export default {
}
},
methods: {
selectUnitt(e) {
this.form.unitName = this.units.find(item => item.id == e).name
},
showNumberChange(index) {
console.log(index)
},
@@ -323,16 +353,21 @@ export default {
this.selectSpec = JSON.parse(res.selectSpec)
// 初始化上传图片
const images = JSON.parse(res.images);
this.$refs.uploadImg.fileList = images.map(item => {
this.$refs.uploadImg.fileList = res.images.map(item => {
return {
url: item
}
})
this.form = res
this.form.skuList = JSON.parse(res.specInfo)
if (res.typeEnum == 'sku' && this.form.skuList.length) {
if (res.typeEnum == 'sku') {
let skuList = [...res.skuList]
let specInfo = JSON.parse(res.specInfo)
this.isEditor = true
this.form.skuList = skuList.map((item, index) => {
specInfo[index].id = item.id
return specInfo[index]
})
this.selectSpecResult = true
}
} catch (error) {
@@ -344,14 +379,15 @@ export default {
try {
this.$refs.formRef.validate(async faild => {
if (faild) {
this.loading = true
this.form.lowPrice = this.form.skuList[0].salePrice
this.form.coverImg = this.form.images[0]
this.form.selectSpec = JSON.stringify(this.selectSpec)
this.form.specTableHeaders = JSON.stringify(this.specTableHeaders)
this.form.specInfo = JSON.stringify(this.form.skuList)
if (this.form.id) {
await tbProductPut(this.form)
} else {
this.form.specInfo = JSON.stringify(this.form.skuList)
await tbProductPost(this.form)
}
this.$notify({
@@ -360,9 +396,11 @@ export default {
type: 'success'
});
this.$router.back()
this.loading = true
}
})
} catch (error) {
this.loading = true
console.log(error)
}
},
@@ -404,6 +442,10 @@ export default {
uploadSuccess(res) {
this.form.images.push(res[0])
},
// 删除突破按
uploadRemove(arr) {
this.form.images = arr
},
// 选择规格属性
selectSpecResultChange() {
this.createSkuHeader()
@@ -466,11 +508,8 @@ export default {
})
}
}
this.form.skuList = []
this.form.skuList = newarr
// console.log(this.form.skuList)
},
// 笛卡尔积算法
cartesian(arr) {
@@ -505,6 +544,7 @@ export default {
},
// 选择规格
selectSpecHandle(e) {
this.isEditor = false
const selectSpec = JSON.parse(JSON.stringify(this.specList.find(item => item.id == e).specList))
for (let item in selectSpec) {
selectSpec[item].selectSpecResult = []