feat(goods): 商品-基础设置添加秒杀配置

This commit is contained in:
woody 2025-07-31 15:04:51 +08:00
parent dcd0bd7356
commit 3ad71821ba
5 changed files with 625 additions and 1131 deletions

View File

@ -761,3 +761,11 @@ export function getMaxSortNum(params) {
params params
}) })
} }
export function resetInventoryUse(data) {
return request({
url: 'sale/manage/wares/resetInventoryUse',
method: 'post',
data
})
}

View File

@ -0,0 +1,510 @@
import { getToken } from '@/utils/auth'
import { getAwardsListChiose } from '@/api/level'
import * as api from '@/api/product.js'
import { specialArea } from '@/api/configManage'
const initFlashSaleForm = {
inventory: '',
inventoryUse: 0,
inventoryRatio: '',
memberLimit: '',
memberMonthLimit: ''
}
export default {
data() {
const validateMemberMonthLimit = (rule, value, callback) => {
if (value > this.form.memberLimit) {
callback(new Error('会员月限购不能大于会员总限购'))
} else {
callback()
}
}
return {
levelAll: false,
gradeAll: false,
// 产品明细
cpList: [],
uploadImgUrl: process.env.VUE_APP_BASE_API + '/system/upload',
headers: {
Authorization: getToken()
},
dialogImageUrl: '',
dialogVisible: false,
form: {
isMakerGift: 1,
waresGradeIds: [],
waresAwardsIds: [],
sales: '',
sortStatus: 0,
waresCode: '',
sort: '',
sptw: '',
ysList: [],
bzList: [],
pkGuaranteeLabel: [],
specialArea: '',
checkList: [],
waresMemberAuthorizeList: [],
waresAuthorityList: [
{
authorityType: 5,
memberCode: ''
}
],
waresSpecsPackList: [{ key: '', value: '' }],
...initFlashSaleForm
},
tabActive: 0,
waresDetailList: [],
waresSpecsSkuList: [],
waresRangeList: [],
agreeList: [
{
text: '允许',
val: 0
},
{
text: '禁止',
val: 1
}
],
// 套餐类型
tcList: [
{
text: '套装',
val: 0
},
{
text: '单品',
val: 1
}
],
postList: [
{
text: '包邮',
val: 0
},
{
text: '不包邮',
val: 1
}
],
isTj: [
{
label: '推荐',
value: 0
},
{
label: '不推荐',
value: 1
}
],
xsList: [
{
text: '允许出售',
val: 0
},
{
text: '禁止出售',
val: 1
}
],
topList: [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
],
goodList: [],
copyArr: [],
// 血缘列表
xyList: '',
// 海陆空
transportTypeList: [],
// 商品分类
hierarchyList: [],
// 所属专区
areaList: [],
// 预售状态
presaleList: [],
// 供应方式
gyList: [],
// 前缀标签
qzList: [],
// 酷炫标签
kxList: [],
// 保障标签
bzList: [],
// 卖点标签
mdList: [],
// 协议
agreementList: [],
// 邮费模板
postMoneyList1: [],
postMoneyList2: [],
postMoneyList3: [],
rules: {
waresName: [
{ required: true, message: '请输入商品名称', trigger: 'blur' }
],
sortStatus: [
{ required: true, message: '请选择', trigger: 'change' }
],
waresCode: [
{ required: true, message: '请输入商品编码', trigger: 'blur' }
],
sellingPoints: [
{ required: true, message: '请输入商品卖点', trigger: 'blur' }
],
sales: [{ required: true, message: '请输入商品销量', trigger: 'blur' }],
waresPrice: [
{ required: true, message: '请输入商品价格', trigger: 'blur' }
],
waresAchieve: [
{ required: true, message: '请输入商品业绩', trigger: 'blur' }
],
sort: [
{ required: true, message: '请输入排列序号', trigger: 'blur' }
],
pkAreaClassifys: [
{ required: true, message: '请选择商品分类', trigger: 'change' }
],
specialArea: [
{ required: true, message: '请选择所属专区', trigger: 'change' }
],
isPutOn: [
{ required: true, message: '请选择上架状态', trigger: 'change' }
],
operateScope: [
{ required: true, message: '请选择供应方式', trigger: 'change' }
],
preSaleStatus: [
{
required: true,
message: '请选择预售状态',
trigger: 'change'
}
],
isSale: [
{ required: true, message: '请选择销售状态', trigger: 'change' }
],
isSingle: [
{
required: true,
message: '请选择套餐类型',
trigger: 'change'
}
],
pkAgreement: [
{ required: true, message: '请选择补充协议', trigger: 'change' }
],
isFreeMail: [
{ required: true, message: '请选择包邮类型', trigger: 'change' }
],
// videoUrl: [
// { required: true, message: '请上传商品视频', trigger: 'blur' }
// ],
cover: [{ required: true, message: '请上传商品封面', trigger: 'blur' }],
cover1: [
{ required: true, message: '请上传图片', trigger: 'blur' }
],
// cover2: [
// { required: true, message: '请上传图片', trigger: 'blur' }
// ],
// cover3: [
// { required: true, message: '请上传图片', trigger: 'blur' }
// ],
// cover4: [
// { required: true, message: '请上传图片', trigger: 'blur' }
// ],
details: [
{ required: true, message: '请输入商品详情', trigger: 'blur' }
],
afterGuarantee: [
{ required: true, message: '请输入售后保障', trigger: 'blur' }
],
inventory: [
{ required: true, message: '请输入库存数量', trigger: 'blur' }
],
inventoryRatio: [
{ required: true, message: '请输入库存倒计时比例', trigger: 'blur' }
],
memberLimit: [
{ required: true, message: '请输入会员总限购', trigger: 'blur' }
],
memberMonthLimit: [
{ required: true, message: '请输入会员月限购', trigger: 'blur' },
{ validator: validateMemberMonthLimit, trigger: 'blur' }
]
},
levelList: [],
yesNo: [],
waresTypeList: [],
specialCurrency: [],
awardsList: [],
authorityList: [],
sortList: []
}
},
methods: {
get_hierarchy_list(val) {
api
.get_hierarchy_list({
specialArea: val || null
})
.then((res) => {
this.hierarchyList = res.data
})
},
// 运输方式
getTransportType() {
api.transportType().then((res) => {
this.transportTypeList = res.data
})
},
setTopList(specialAreaId) {
if (
[3, 26, 12, 22].includes(specialAreaId)
) {
const idx = this.topList.findIndex((item) => item.id === 3)
this.topList.splice(idx, 0, {
name: '级差配置',
id: 4
})
} else {
const idx = this.topList.findIndex((item) => item.id === 4)
this.topList.splice(idx, 1)
}
},
selSpecial(e) {
this.get_hierarchy_list(e)
this.setTopList(e)
},
getGrade(e) {
if (e) {
const gradeArr = this.awardsList.map((item) => {
return item.pkId
})
this.form.waresAwardsIds = gradeArr
} else {
this.form.waresAwardsIds = []
}
},
getGradeAll(e) {
if (e.length == this.awardsList.length) {
this.gradeAll = true
} else {
this.gradeAll = false
}
},
getRangeList() {
api.rangeList().then((res) => {
this.levelList = res.data
})
},
getWaresCode() {
api.getWaresCode().then((res) => {
this.form.waresCode = res.msg
})
},
getLevel(e) {
if (e) {
const levelArr = this.levelList.map((item) => {
return item.pkId
})
this.form.waresGradeIds = levelArr
} else {
this.form.waresGradeIds = []
}
},
getLevelAll(e) {
if (e.length == this.levelList.length) {
this.levelAll = true
} else {
this.levelAll = false
}
},
getOther() {
api.get_sort().then((res) => {
this.sortList = res.data
})
api.yes_no().then((res) => {
this.yesNo = res.data
})
api.wares_type().then((res) => {
this.waresTypeList = res.data
})
api.special_currency().then((res) => {
this.specialCurrency = res.data
})
getAwardsListChiose().then((res) => {
this.awardsList = res.rows
})
api.ERegistrationAuthority().then((res) => {
this.authorityList = res.data
})
},
getTrans(data) {
this.form.isLandTrans = ''
this.form.isAirTrans = ''
this.form.isOceanTrans = ''
data.forEach((item) => {
if (item == 1) {
this.form.isLandTrans = 0
} else if (item == 2) {
this.form.isAirTrans = 0
} else if (item == 3) {
this.form.isOceanTrans = 0
}
})
},
getTeamList(val) {
if (val == 5) {
this.form.waresAuthorityList = [
{
authorityType: 5,
memberCode: ''
}
]
}
},
getPostageList() {
// 陆运
api.getPostageList({ tranType: 1 }).then((res) => {
this.postMoneyList1 = res.data
})
// 空运
api.getPostageList({ tranType: 2 }).then((res) => {
this.postMoneyList2 = res.data
})
// 海运
api.getPostageList({ tranType: 3 }).then((res) => {
this.postMoneyList3 = res.data
})
},
getAgreementList() {
api.getAgreementList().then((res) => {
this.agreementList = res.data
})
},
// 四个标签
labelAll() {
// 前缀标签
api.labelAll({ labelType: 1 }).then((res) => {
this.qzList = res.data
})
// 酷炫标签
api.labelAll({ labelType: 2 }).then((res) => {
this.kxList = res.data
})
// 保障标签
api.labelAll({ labelType: 3 }).then((res) => {
this.bzList = res.data
})
// 卖点标签
api.labelAll({ labelType: 4 }).then((res) => {
this.mdList = res.data
})
},
// 供应方式
supply_way() {
api.supply_way().then((res) => {
this.gyList = res.data
})
},
// 查询预售状态
presale_status() {
api.presale_status().then((res) => {
this.presaleList = res.data
})
},
// 获取专区
getArea() {
specialArea().then((res) => {
this.areaList = res.data
})
},
getImg1(data) {
this.form.videoUrl = data
},
delImg1() {},
getImg2(data) {
this.form.cover = data
},
delImg2() {},
getImg3(data) {
this.form.cover1 = data
},
delImg3() {},
getImg4(data) {
this.form.cover2 = data
},
delImg4() {},
getImg5(data) {
this.form.cover3 = data
},
delImg5() {},
getImg6(data) {
this.form.cover4 = data
},
delImg6() {},
getImg7(data) {
this.form.cover5 = data
},
delImg7() {},
getImg8(data) {
this.form.cover6 = data
},
delImg8() {},
removeGg(index) {
this.form.waresSpecsPackList.splice(index, 1)
},
removeTeamPz(index) {
this.form.waresAuthorityList.splice(index, 1)
},
getRangList(data) {
this.form.waresRangeList = data
},
// 商品分类赋值
flChange(value) {
this.form.pkAreaClassify = value[value.length - 1]
},
getXYList() {
api.getEWaresPermissionTypeList().then((res) => {
this.xyList = res.data
})
},
addTeamPz() {
this.form.waresAuthorityList.push({
kjlx: '',
teamOrder: ''
})
}
}
}

View File

@ -28,7 +28,7 @@
:model="form" :model="form"
:rules="rules" :rules="rules"
style="width:1200px" style="width:1200px"
label-width="100px" label-width="120px"
> >
<el-row :gutter="40"> <el-row :gutter="40">
<el-col :span="16"> <el-col :span="16">
@ -98,7 +98,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item <el-form-item
:label="'商品业绩'+`(${isLocals()})`" label="商品业绩"
prop="waresAchieve" prop="waresAchieve"
> >
<el-input <el-input
@ -139,6 +139,39 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<template v-if="form.specialArea === 14">
<el-col :span="8">
<el-form-item label="库存数量" prop="inventory">
<el-input-number v-model="form.inventory" style="width: 100%" :min="0" :max="999999999" :controls="false" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="已用库存数量" prop="inventoryUse">
<el-input v-model="form.inventoryUse" readonly>
<el-button slot="append" style="background-color: #409EFF; color: #fff; border-color: #409EFF" type="primary" @click="resetInventoryUse">
重置
</el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="库存倒计时比例" prop="inventoryRatio">
<el-input v-model="form.inventoryRatio" style="width: 100%">
<template slot="append">%</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="会员总限购" prop="memberLimit">
<el-input-number v-model="form.memberLimit" style="width: 100%" :min="0" :max="999999999" :controls="false" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="会员月限购" prop="memberMonthLimit">
<el-input-number v-model="form.memberMonthLimit" style="width: 100%" :min="0" :max="999999999" :controls="false" />
</el-form-item>
</el-col>
</template>
<el-col :span="8"> <el-col :span="8">
<el-form-item <el-form-item
:label="'商品分类'" :label="'商品分类'"
@ -940,260 +973,25 @@ import Editor from '@/components/Editor'
import Cpmx from '@/views/goodsManage/goodsList/goodsEdit/cpmx.vue' import Cpmx from '@/views/goodsManage/goodsList/goodsEdit/cpmx.vue'
import Ggmx from '@/views/goodsManage/goodsList/goodsEdit/ggmx.vue' import Ggmx from '@/views/goodsManage/goodsList/goodsEdit/ggmx.vue'
import Jcpz from '@/views/goodsManage/goodsList/goodsEdit/jcpz.vue' import Jcpz from '@/views/goodsManage/goodsList/goodsEdit/jcpz.vue'
import { getToken } from '@/utils/auth'
import UpDataImg from '@/components/upDataImg'
import * as api from '@/api/product.js' import * as api from '@/api/product.js'
import { specialArea } from '@/api/configManage'
import ImageUpload from '@/components/ImageUpload' import ImageUpload from '@/components/ImageUpload'
import { isLocals } from '@/utils/numberToCurrency' import { isLocals } from '@/utils/numberToCurrency'
import { getAwardsListChiose } from '@/api/level' import jcszMixins from '@/views/goodsManage/common/jcsz-mixins'
export default { export default {
name: 'Jcsz', name: 'Jcsz',
components: { components: {
ImageUpload, ImageUpload,
Editor, Editor,
UpDataImg,
Jcpz, Jcpz,
Cpmx, Cpmx,
Ggmx Ggmx
}, },
mixins: [jcszMixins],
data() { data() {
return { return {
isMakerGift: 1,
levelAll: false,
gradeAll: false,
//
cpList: [],
uploadImgUrl: process.env.VUE_APP_BASE_API + '/system/upload',
headers: {
Authorization: getToken()
},
dialogImageUrl: '',
dialogVisible: false,
form: {
waresGradeIds: [],
waresAwardsIds: [],
sales: '',
sortStatus: 0,
sort: '',
sptw: '',
ysList: [],
bzList: [],
pkGuaranteeLabel: [],
specialArea: '',
checkList: [],
waresMemberAuthorizeList: [],
waresAuthorityList: [
{
authorityType: 5,
memberCode: ''
}
],
waresSpecsPackList: [{ key: '', value: '' }]
},
moren: '/goodsManage/goodsRelease/jcsz',
tabActive: 0,
waresDetailList: [],
waresSpecsSkuList: [],
waresRangeList: [],
agreeList: [
{
text: '允许',
val: 0
},
{
text: '禁止',
val: 1
}
],
//
tcList: [
{
text: '套装',
val: 0
},
{
text: '单品',
val: 1
}
],
postList: [
{
text: '包邮',
val: 0
},
{
text: '不包邮',
val: 1
}
],
xsList: [
{
text: '允许出售',
val: 0
},
{
text: '禁止出售',
val: 1
}
],
isTj: [
{
label: '推荐',
value: 0
},
{
label: '不推荐',
value: 1
}
],
topList: [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
],
goodList: [],
copyArr: [],
//
xyList: '',
//
transportTypeList: [],
//
hierarchyList: [],
//
areaList: [],
//
presaleList: [],
//
gyList: [],
//
qzList: [],
//
kxList: [],
//
bzList: [],
//
mdList: [],
//
agreementList: [],
//
postMoneyList1: [],
postMoneyList2: [],
postMoneyList3: [],
rules: {
waresName: [
{ required: true, message: '请输入商品名称', trigger: 'blur' }
],
sortStatus: [
{ required: true, message: '请选择', trigger: 'change' }
],
waresCode: [{ required: true, message: '', trigger: 'blur' }],
sellingPoints: [
{ required: true, message: '请输入商品卖点', trigger: 'blur' }
],
sales: [{ required: true, message: '请输入商品销量', trigger: 'blur' }],
waresPrice: [
{ required: true, message: '请输入商品价格', trigger: 'blur' }
],
waresAchieve: [
{ required: true, message: '请输入商品业绩', trigger: 'blur' }
],
sort: [
{ required: true, message: '请输入排列序号', trigger: 'blur' }
],
pkAreaClassifys: [
{ required: true, message: '请选择商品分类', trigger: 'change' }
],
specialArea: [
{ required: true, message: '请选择所属专区', trigger: 'change' }
],
isPutOn: [
{ required: true, message: '请选择上架状态', trigger: 'change' }
],
operateScope: [
{ required: true, message: '请选择供应方式', trigger: 'change' }
],
preSaleStatus: [
{
required: true,
message: '请选择预售状态',
trigger: 'change'
}
],
isSale: [
{ required: true, message: '请选择销售状态', trigger: 'change' }
],
isSingle: [
{
required: true,
message: '请选择套餐类型',
trigger: 'change'
}
],
pkAgreement: [
{ required: true, message: '请选择补充协议', trigger: 'change' }
],
isFreeMail: [
{ required: true, message: '请选择包邮类型', trigger: 'change' }
],
// videoUrl: [
// { required: true, message: '', trigger: 'blur' }
// ],
cover: [{ required: true, message: '请上传商品封面', trigger: 'blur' }],
cover1: [
{ required: true, message: '请上传图片', trigger: 'blur' }
],
// cover2: [
// { required: true, message: '', trigger: 'blur' }
// ],
// cover3: [
// { required: true, message: '', trigger: 'blur' }
// ],
// cover4: [
// { required: true, message: '', trigger: 'blur' }
// ],
details: [
{ required: true, message: '请输入商品详情', trigger: 'blur' }
],
afterGuarantee: [
{ required: true, message: '请输入售后保障', trigger: 'blur' }
]
},
pkId: '', pkId: '',
methods: 1, methods: 1,
levelList: [], moren: '/goodsManage/goodsRelease/jcsz'
yesNo: [],
specialCurrency: [],
waresTypeList: [],
awardsList: [],
authorityList: [],
sortList: []
} }
}, },
created() { created() {
@ -1230,75 +1028,6 @@ export default {
// }, // },
methods: { methods: {
isLocals, isLocals,
getOther() {
api.get_sort().then((res) => {
this.sortList = res.data
})
api.yes_no().then((res) => {
this.yesNo = res.data
})
api.wares_type().then((res) => {
this.waresTypeList = res.data
})
api.special_currency().then((res) => {
this.specialCurrency = res.data
})
getAwardsListChiose().then((res) => {
this.awardsList = res.rows
})
api.ERegistrationAuthority().then((res) => {
this.authorityList = res.data
})
},
// getWaresSort() {
// api.waresSort().then((res) => {
// this.form.sort = res.data
// })
// },
getLevel(e) {
if (e) {
const levelArr = this.levelList.map((item) => {
return item.pkId
})
this.form.waresGradeIds = levelArr
} else {
this.form.waresGradeIds = []
}
},
getLevelAll(e) {
if (e.length == this.levelList.length) {
this.levelAll = true
} else {
this.levelAll = false
}
},
getGrade(e) {
if (e) {
const gradeArr = this.awardsList.map((item) => {
return item.pkId
})
this.form.waresAwardsIds = gradeArr
} else {
this.form.waresAwardsIds = []
}
},
getGradeAll(e) {
if (e.length == this.awardsList.length) {
this.gradeAll = true
} else {
this.gradeAll = false
}
},
getRangeList() {
api.rangeList().then((res) => {
this.levelList = res.data
})
},
getWaresCode() {
api.getWaresCode().then((res) => {
this.form.waresCode = res.msg
})
},
getEduitdata() { getEduitdata() {
api api
.waresDetail({ .waresDetail({
@ -1352,48 +1081,7 @@ export default {
// //
// this.getWaresSort() // this.getWaresSort()
} }
if ( this.setTopList(this.form.specialArea)
this.form.specialArea == 3 ||
this.form.specialArea == 26 ||
this.form.specialArea == 12 ||
this.form.specialArea == 22 ||
this.form.specialArea == 14
) {
this.topList = [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
{
name: '级差配置',
id: 4
},
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
]
}
setTimeout(() => { setTimeout(() => {
that.$refs.box.scrollTop = 0 that.$refs.box.scrollTop = 0
}, 50) }, 50)
@ -1443,202 +1131,7 @@ export default {
} }
}) })
}, },
getTrans(data) {
this.form.isLandTrans = ''
this.form.isAirTrans = ''
this.form.isOceanTrans = ''
data.forEach((item) => {
if (item == 1) {
this.form.isLandTrans = 0
} else if (item == 2) {
this.form.isAirTrans = 0
} else if (item == 3) {
this.form.isOceanTrans = 0
}
})
},
getTeamList(val) {
if (val == 5) {
this.form.waresAuthorityList = [
{
authorityType: 5,
memberCode: ''
}
]
}
},
getPostageList() {
//
api.getPostageList({ tranType: 1 }).then((res) => {
this.postMoneyList1 = res.data
})
//
api.getPostageList({ tranType: 2 }).then((res) => {
this.postMoneyList2 = res.data
})
//
api.getPostageList({ tranType: 3 }).then((res) => {
this.postMoneyList3 = res.data
})
},
getAgreementList() {
api.getAgreementList().then((res) => {
this.agreementList = res.data
})
},
//
labelAll() {
//
api.labelAll({ labelType: 1 }).then((res) => {
this.qzList = res.data
})
//
api.labelAll({ labelType: 2 }).then((res) => {
this.kxList = res.data
})
//
api.labelAll({ labelType: 3 }).then((res) => {
this.bzList = res.data
})
//
api.labelAll({ labelType: 4 }).then((res) => {
this.mdList = res.data
})
},
//
supply_way() {
api.supply_way().then((res) => {
this.gyList = res.data
})
},
//
presale_status() {
api.presale_status().then((res) => {
this.presaleList = res.data
})
},
//
getArea() {
specialArea().then((res) => {
this.areaList = res.data
})
},
//
flChange(value) {
console.log(
'%c [ value ]-827',
'font-size:13px; background:#7eb846; color:#c2fc8a;',
value
)
this.form.pkAreaClassify = value[value.length - 1]
},
selSpecial(e) {
this.get_hierarchy_list(e)
if (e == 3 || e == 26 || e == 12 || e == 22 || e == 14) {
this.$set(this, 'topList', [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
{
name: '级差配置',
id: 4
},
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
])
} else {
this.$set(this, 'topList', [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
])
}
},
//
get_hierarchy_list(val) {
api
.get_hierarchy_list({
specialArea: val || null
})
.then((res) => {
this.hierarchyList = res.data
})
},
//
getTransportType() {
api.transportType().then((res) => {
this.transportTypeList = res.data
})
},
getXYList() {
api.getEWaresPermissionTypeList().then((res) => {
this.xyList = res.data
})
},
addTeamPz() {
this.form.waresAuthorityList.push({
kjlx: '',
teamOrder: ''
})
},
removeGg(index) {
this.form.waresSpecsPackList.splice(index, 1)
},
removeTeamPz(index) {
this.form.waresAuthorityList.splice(index, 1)
},
getRangList(data) {
this.form.waresRangeList = data
},
// tab // tab
handleLink(id) { handleLink(id) {
if (id == 2) { if (id == 2) {
@ -1689,8 +1182,6 @@ export default {
mdChange(val) { mdChange(val) {
this.form.pkSellingPoint = val this.form.pkSellingPoint = val
}, },
//
changeYsfs() {},
// //
getTableList(data) { getTableList(data) {
this.form.waresDetailList = data this.form.waresDetailList = data
@ -1703,38 +1194,21 @@ export default {
}) })
this.$refs.ggmxed.getData(this.cpList, this.form.specialArea) this.$refs.ggmxed.getData(this.cpList, this.form.specialArea)
}, },
getImg1(data) { resetInventoryUse() {
this.form.videoUrl = data this.$confirm('确定重置库存吗?', '提示', {
}, confirmButtonText: '确定',
delImg1() {}, cancelButtonText: '取消',
getImg2(data) { type: 'warning'
this.form.cover = data }).then(() => {
}, api.resetInventoryUse({
delImg2() {}, waresId: this.form.waresId
getImg3(data) { }).then((res) => {
this.form.cover1 = data if (res.code === 200) {
}, this.form.inventoryUse = 0
delImg3() {}, }
getImg4(data) { })
this.form.cover2 = data })
}, }
delImg4() {},
getImg5(data) {
this.form.cover3 = data
},
delImg5() {},
getImg6(data) {
this.form.cover4 = data
},
delImg6() {},
getImg7(data) {
this.form.cover5 = data
},
delImg7() {},
getImg8(data) {
this.form.cover6 = data
},
delImg8() {}
} }
} }
</script> </script>
@ -1744,6 +1218,9 @@ export default {
.el-cascader { .el-cascader {
width: 100%; width: 100%;
} }
::v-deep .el-input-group__append {
background-color: transparent;
}
::v-deep .el-date-editor.el-input, ::v-deep .el-date-editor.el-input,
.el-date-editor.el-input__inner { .el-date-editor.el-input__inner {
@ -1793,6 +1270,7 @@ export default {
overflow: hidden; overflow: hidden;
background: #f9f9f9; background: #f9f9f9;
padding-top: 20px; padding-top: 20px;
padding-left: 0 !important;
} }
.main { .main {

View File

@ -487,9 +487,13 @@
/> />
<el-table-column <el-table-column
align="center" align="center"
prop="actualSales" prop="inventoryUse"
:label="'实际销量'" label="实际销量"
/> >
<template slot-scope="scope">
{{ (scope.row.inventoryUse || scope.row.inventoryUse === 0) ? scope.row.inventoryUse : '-' }}
</template>
</el-table-column>
<el-table-column <el-table-column
align="center" align="center"

View File

@ -28,7 +28,7 @@
:rules="rules" :rules="rules"
:model="form" :model="form"
style="width:1200px" style="width:1200px"
label-width="auto" label-width="120px"
> >
<el-row :gutter="40"> <el-row :gutter="40">
<el-col :span="16"> <el-col :span="16">
@ -95,7 +95,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item <el-form-item
:label="'商品业绩'+`(${isLocals()})`" label="商品业绩"
prop="waresAchieve" prop="waresAchieve"
> >
<el-input <el-input
@ -134,6 +134,36 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<template v-if="form.specialArea === 14">
<el-col :span="8">
<el-form-item label="库存数量" prop="inventory">
<el-input-number v-model="form.inventory" style="width: 100%" :min="0" :max="999999999" :controls="false" />
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="已用库存数量" prop="inventoryUse">
<el-input-number v-model="form.inventoryUse" readonly :min="0" style="width: 100%" :max="form.inventory || 9999999999" :controls="false" />
</el-form-item>
</el-col> -->
<el-col :span="8">
<el-form-item label="库存倒计时比例" prop="inventoryRatio">
<el-input v-model="form.inventoryRatio" style="width: 100%">
<template slot="append">%</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="会员总限购" prop="memberLimit">
<el-input-number v-model="form.memberLimit" style="width: 100%" :min="0" :max="999999999" :controls="false" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="会员月限购" prop="memberMonthLimit">
<el-input-number v-model="form.memberMonthLimit" style="width: 100%" :min="0" :max="999999999" :controls="false" />
</el-form-item>
</el-col>
</template>
<el-col :span="8"> <el-col :span="8">
<el-form-item <el-form-item
:label="'商品分类'" :label="'商品分类'"
@ -874,262 +904,25 @@ import Editor from '@/components/Editor'
import Cpmx from '@/views/goodsManage/goodsRelease/cpmx.vue' import Cpmx from '@/views/goodsManage/goodsRelease/cpmx.vue'
import Ggmx from '@/views/goodsManage/goodsRelease/ggmx.vue' import Ggmx from '@/views/goodsManage/goodsRelease/ggmx.vue'
import Jcpz from '@/views/goodsManage/goodsRelease/jcpz.vue' import Jcpz from '@/views/goodsManage/goodsRelease/jcpz.vue'
import { getToken } from '@/utils/auth'
import UpDataImg from '@/components/upDataImg'
import * as api from '@/api/product.js' import * as api from '@/api/product.js'
import { specialArea } from '@/api/configManage' import { specialArea } from '@/api/configManage'
import ImageUpload from '@/components/ImageUpload' import ImageUpload from '@/components/ImageUpload'
import { isLocals } from '@/utils/numberToCurrency' import { isLocals } from '@/utils/numberToCurrency'
import { getAwardsListChiose } from '@/api/level' import jcszMixins from '@/views/goodsManage/common/jcsz-mixins'
export default { export default {
name: 'Jcsz', name: 'Jcsz',
components: { components: {
ImageUpload, ImageUpload,
Editor, Editor,
UpDataImg,
Jcpz, Jcpz,
Cpmx, Cpmx,
Ggmx Ggmx
}, },
mixins: [jcszMixins],
data() { data() {
return { return {
levelAll: false,
gradeAll: false,
//
cpList: [],
uploadImgUrl: process.env.VUE_APP_BASE_API + '/system/upload',
headers: {
Authorization: getToken()
},
dialogImageUrl: '',
dialogVisible: false,
form: {
isMakerGift: 1,
waresGradeIds: [],
waresAwardsIds: [],
sales: '',
sortStatus: 0,
waresCode: '',
sort: '',
sptw: '',
ysList: [],
bzList: [],
pkGuaranteeLabel: [],
specialArea: '',
checkList: [],
waresMemberAuthorizeList: [],
waresAuthorityList: [
{
authorityType: 5,
memberCode: ''
}
],
waresSpecsPackList: [{ key: '', value: '' }]
},
moren: '/goodsManage/goodsRelease/jcsz', moren: '/goodsManage/goodsRelease/jcsz',
tabActive: 0, isTrue: false
agreeList: [
{
text: '允许',
val: 0
},
{
text: '禁止',
val: 1
}
],
//
tcList: [
{
text: '套装',
val: 0
},
{
text: '单品',
val: 1
}
],
postList: [
{
text: '包邮',
val: 0
},
{
text: '不包邮',
val: 1
}
],
isTj: [
{
label: '推荐',
value: 0
},
{
label: '不推荐',
value: 1
}
],
xsList: [
{
text: '允许出售',
val: 0
},
{
text: '禁止出售',
val: 1
}
],
topList: [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
// {
// name: '',
// id: 4,
// },
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
],
goodList: [],
copyArr: [],
//
xyList: '',
//
transportTypeList: [],
//
hierarchyList: [],
//
areaList: [],
//
presaleList: [],
//
gyList: [],
//
qzList: [],
//
kxList: [],
//
bzList: [],
//
mdList: [],
//
agreementList: [],
//
postMoneyList1: [],
postMoneyList2: [],
postMoneyList3: [],
levelList: [],
rules: {
waresName: [
{ required: true, message: '请输入商品名称', trigger: 'blur' }
],
sortStatus: [
{ required: true, message: '请选择', trigger: 'change' }
],
waresCode: [
{ required: true, message: '请输入商品编码', trigger: 'blur' }
],
sellingPoints: [
{ required: true, message: '请输入商品卖点', trigger: 'blur' }
],
sales: [{ required: true, message: '请输入商品销量', trigger: 'blur' }],
waresPrice: [
{ required: true, message: '请输入商品价格', trigger: 'blur' }
],
waresAchieve: [
{ required: true, message: '请输入商品业绩', trigger: 'blur' }
],
sort: [
{ required: true, message: '请输入排列序号', trigger: 'blur' }
],
pkAreaClassifys: [
{ required: true, message: '请选择商品分类', trigger: 'change' }
],
specialArea: [
{ required: true, message: '请选择所属专区', trigger: 'change' }
],
isPutOn: [
{ required: true, message: '请选择上架状态', trigger: 'change' }
],
operateScope: [
{ required: true, message: '请选择供应方式', trigger: 'change' }
],
preSaleStatus: [
{
required: true,
message: '请选择预售状态',
trigger: 'change'
}
],
isSale: [
{ required: true, message: '请选择销售状态', trigger: 'change' }
],
isSingle: [
{
required: true,
message: '请选择套餐类型',
trigger: 'change'
}
],
pkAgreement: [
{ required: true, message: '请选择补充协议', trigger: 'change' }
],
isFreeMail: [
{ required: true, message: '请选择包邮类型', trigger: 'change' }
],
// videoUrl: [
// { required: true, message: '', trigger: 'blur' }
// ],
cover: [{ required: true, message: '请上传商品封面', trigger: 'blur' }],
cover1: [
{ required: true, message: '请上传图片', trigger: 'blur' }
],
// cover2: [
// { required: true, message: '', trigger: 'blur' }
// ],
// cover3: [
// { required: true, message: '', trigger: 'blur' }
// ],
// cover4: [
// { required: true, message: '', trigger: 'blur' }
// ],
details: [
{ required: true, message: '请输入商品详情', trigger: 'blur' }
],
afterGuarantee: [
{ required: true, message: '请输入售后保障', trigger: 'blur' }
]
},
yesNo: [],
waresTypeList: [],
specialCurrency: [],
awardsList: [],
authorityList: [],
isTrue: false,
sortList: []
} }
}, },
mounted() { mounted() {
@ -1172,75 +965,6 @@ export default {
} }
}) })
}, },
getOther() {
api.get_sort().then((res) => {
this.sortList = res.data
})
api.yes_no().then((res) => {
this.yesNo = res.data
})
api.wares_type().then((res) => {
this.waresTypeList = res.data
})
api.special_currency().then((res) => {
this.specialCurrency = res.data
})
getAwardsListChiose().then((res) => {
this.awardsList = res.rows
})
api.ERegistrationAuthority().then((res) => {
this.authorityList = res.data
})
},
// getWaresSort() {
// api.waresSort().then((res) => {
// this.form.sort = res.data
// })
// },
getLevel(e) {
if (e) {
const levelArr = this.levelList.map((item) => {
return item.pkId
})
this.form.waresGradeIds = levelArr
} else {
this.form.waresGradeIds = []
}
},
getLevelAll(e) {
if (e.length == this.levelList.length) {
this.levelAll = true
} else {
this.levelAll = false
}
},
getGrade(e) {
if (e) {
const gradeArr = this.awardsList.map((item) => {
return item.pkId
})
this.form.waresAwardsIds = gradeArr
} else {
this.form.waresAwardsIds = []
}
},
getGradeAll(e) {
if (e.length == this.awardsList.length) {
this.gradeAll = true
} else {
this.gradeAll = false
}
},
getRangeList() {
api.rangeList().then((res) => {
this.levelList = res.data
})
},
getWaresCode() {
api.getWaresCode().then((res) => {
this.form.waresCode = res.msg
})
},
goBack() { goBack() {
this.$router.go(-1) this.$router.go(-1)
}, },
@ -1288,207 +1012,6 @@ export default {
} }
}) })
}, },
getTrans(data) {
this.form.isLandTrans = ''
this.form.isAirTrans = ''
this.form.isOceanTrans = ''
data.forEach((item) => {
if (item == 1) {
this.form.isLandTrans = 0
} else if (item == 2) {
this.form.isAirTrans = 0
} else if (item == 3) {
this.form.isOceanTrans = 0
}
})
},
getTeamList(val) {
if (val == 5) {
this.form.waresAuthorityList = [
{
authorityType: 5,
memberCode: ''
}
]
}
},
getPostageList() {
//
api.getPostageList({ tranType: 1 }).then((res) => {
this.postMoneyList1 = res.data
})
//
api.getPostageList({ tranType: 2 }).then((res) => {
this.postMoneyList2 = res.data
})
//
api.getPostageList({ tranType: 3 }).then((res) => {
this.postMoneyList3 = res.data
})
},
getAgreementList() {
api.getAgreementList().then((res) => {
this.agreementList = res.data
})
},
//
labelAll() {
//
api.labelAll({ labelType: 1 }).then((res) => {
this.qzList = res.data
})
//
api.labelAll({ labelType: 2 }).then((res) => {
this.kxList = res.data
})
//
api.labelAll({ labelType: 3 }).then((res) => {
this.bzList = res.data
})
//
api.labelAll({ labelType: 4 }).then((res) => {
this.mdList = res.data
})
},
//
supply_way() {
api.supply_way().then((res) => {
this.gyList = res.data
})
},
//
presale_status() {
api.presale_status().then((res) => {
this.presaleList = res.data
})
},
//
getArea() {
specialArea().then((res) => {
this.areaList = res.data
})
},
//
flChange(value) {
console.log(
'%c [ form.pkAreaClassifys ]-770',
'font-size:13px; background:#42289a; color:#866cde;',
this.form.pkAreaClassifys
)
this.form.pkAreaClassify = value[value.length - 1]
},
selSpecial(e) {
this.get_hierarchy_list(e)
if (e == 3 || e == 26 || e == 12 || e == 22 || e == 14) {
this.$set(this, 'topList', [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
{
name: '级差配置',
id: 4
},
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
])
} else {
this.$set(this, 'topList', [
{
name: '基础设置',
id: 0
},
{
name: '产品明细',
id: 1
},
{
name: '规格明细',
id: 2
},
{
name: '团队配置',
id: 3
},
{
name: '等级配置',
id: 5
},
{
name: '奖衔配置',
id: 6
},
{
name: '商品权限',
id: 7
}
])
}
},
//
get_hierarchy_list(val) {
api
.get_hierarchy_list({
specialArea: val || null
})
.then((res) => {
this.hierarchyList = res.data
})
},
//
getTransportType() {
api.transportType().then((res) => {
this.transportTypeList = res.data
})
},
getXYList() {
api.getEWaresPermissionTypeList().then((res) => {
console.log(
'%c [ res ]-451',
'font-size:13px; background:#73d160; color:#b7ffa4;',
res
)
this.xyList = res.data
})
},
addTeamPz() {
this.form.waresAuthorityList.push({
kjlx: '',
teamOrder: ''
})
},
removeGg(index) {
this.form.waresSpecsPackList.splice(index, 1)
},
removeTeamPz(index) {
this.form.waresAuthorityList.splice(index, 1)
},
getRangList(data) {
this.form.waresRangeList = data
},
// tab // tab
handleLink(id) { handleLink(id) {
if (id == 2) { if (id == 2) {
@ -1540,11 +1063,8 @@ export default {
// console.log('%c [ val ]-828', 'font-size:13px; background:#f8a68c; color:#ffead0;', val) // console.log('%c [ val ]-828', 'font-size:13px; background:#f8a68c; color:#ffead0;', val)
// this.form.pkSellingPoint = val // this.form.pkSellingPoint = val
// }, // },
//
changeYsfs() {},
// //
getTableList(data, isTrue) { getTableList(data, isTrue) {
console.log('%c [ data ]-1313', 'font-size:13px; background:#442827; color:#886c6b;', data)
this.isTrue = isTrue this.isTrue = isTrue
this.form.waresDetailList = data this.form.waresDetailList = data
this.cpList = data.map((item) => { this.cpList = data.map((item) => {
@ -1554,39 +1074,7 @@ export default {
quantity: item.quantity quantity: item.quantity
} }
}) })
}, }
getImg1(data) {
this.form.videoUrl = data
},
delImg1() {},
getImg2(data) {
this.form.cover = data
},
delImg2() {},
getImg3(data) {
this.form.cover1 = data
},
delImg3() {},
getImg4(data) {
this.form.cover2 = data
},
delImg4() {},
getImg5(data) {
this.form.cover3 = data
},
delImg5() {},
getImg6(data) {
this.form.cover4 = data
},
delImg6() {},
getImg7(data) {
this.form.cover5 = data
},
delImg7() {},
getImg8(data) {
this.form.cover6 = data
},
delImg8() {}
} }
} }
</script> </script>
@ -1595,6 +1083,12 @@ export default {
.el-cascader { .el-cascader {
width: 100%; width: 100%;
} }
::v-deep .el-input-group__append {
background-color: transparent;
}
::v-deep .el-input-number {
width: 100% !important;
}
::v-deep .el-date-editor.el-input, ::v-deep .el-date-editor.el-input,
.el-date-editor.el-input__inner { .el-date-editor.el-input__inner {
width: 100%; width: 100%;