Merge branch 'bd-test' of gitee.com:cabbage_qd/web-base-admin into bd-online

This commit is contained in:
woody 2025-08-07 09:25:42 +08:00
commit 158b877131
7 changed files with 737 additions and 1169 deletions

View File

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

View File

@ -5,37 +5,54 @@
<breadcrumb class="breadcrumb-container" />
<div class="right-menu">
<div class="check" v-if="user.userType!=9">
<el-select v-model="languageItem"
@change="setLanguage"
<div v-if="user.userType!=9" class="check">
<el-select
v-model="languageItem"
popper-class="selectCls"
size="mini">
<el-option v-for="item in languageList"
size="mini"
@change="setLanguage"
>
<el-option
v-for="item in languageList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
:value="item.value"
/>
</el-select>
<el-dropdown trigger="click"
placement="bottom-start">
<el-dropdown
trigger="click"
placement="bottom-start"
>
<div class="kuang">
<div class="dropdown_i">
<img :src="ruleForm.nationalFlag2"
alt="">
<img
:src="ruleForm.nationalFlag2"
alt=""
>
<div>{{ ruleForm.name }}</div>
</div>
<i slot="suffix"
class="el-icon-arrow-down"></i>
<i
slot="suffix"
class="el-icon-arrow-down"
/>
</div>
<el-dropdown-menu slot="dropdown"
class="dropdown-container">
<el-dropdown-item v-for="(item, i) in countryList"
:key="i">
<div class="dropdown_i"
@click="handleClick(item)">
<img :src="item.nationalFlag2"
alt="">
<el-dropdown-menu
slot="dropdown"
class="dropdown-container"
>
<el-dropdown-item
v-for="(item, i) in countryList"
:key="i"
>
<div
class="dropdown_i"
@click="handleClick(item)"
>
<img
:src="item.nationalFlag2"
alt=""
>
<div>{{ item.name }}</div>
</div>
@ -43,8 +60,10 @@
</el-dropdown-menu>
</el-dropdown>
</div>
<div class="login"
@click="logout">退出登录</div>
<div
class="login"
@click="logout"
>退出登录</div>
<!-- <el-dropdown class="avatar-container" trigger="click">
<div class="avatar-wrapper">
<img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar">
@ -74,10 +93,10 @@ import { userCountryList, changeList, languages } from '@/api/user'
export default {
components: {
Breadcrumb,
Hamburger,
Hamburger
},
computed: {
...mapGetters(['sidebar', 'avatar', 'user']),
...mapGetters(['sidebar', 'avatar', 'user'])
},
data() {
return {
@ -85,14 +104,14 @@ export default {
ruleForm: {
pkCountry: '',
nationalFlag2: '',
name: '',
name: ''
},
languageList: [],
languageItem: 0,
languageItem: 0
}
},
mounted() {
let that = this
const that = this
setTimeout(() => {
//
that.getJScountry()
@ -160,16 +179,16 @@ export default {
this.$confirm('确定注销并退出系统吗?', this.$t('w_0034'), {
confirmButtonText: this.$t('w_0035'),
cancelButtonText: this.$t('ENU_P_TYPE0'),
type: 'warning',
type: 'warning'
})
.then(() => {
this.$store.dispatch('user/LogOut').then(() => {
this.$router.push(`/login?redirect=${this.$route.fullPath}`)
this.$router.push(`/login?redirect=${encodeURIComponent(this.$route.fullPath)}`)
})
})
.catch(() => {})
},
},
}
}
}
</script>

View File

@ -0,0 +1,511 @@
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
this.$set(this.form, 'pkAreaClassifys', [])
})
},
// 运输方式
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"
:rules="rules"
style="width:1200px"
label-width="100px"
label-width="120px"
>
<el-row :gutter="40">
<el-col :span="16">
@ -98,7 +98,7 @@
</el-col>
<el-col :span="8">
<el-form-item
:label="'商品业绩'+`(${isLocals()})`"
label="商品业绩"
prop="waresAchieve"
>
<el-input
@ -558,7 +558,49 @@
/>
</el-form-item>
</el-col>
</el-row>
<template v-if="form.specialArea === 14">
<el-row style="margin-bottom: 18px;">
<el-col :span="24" class="extra-wrapper">
<el-col :span="24">
<div class="extra-title">秒杀配置</div>
</el-col>
<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="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>
<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>
</el-row>
</template>
<el-row>
<!-- <el-col :span="8">
<el-form-item
@ -940,260 +982,25 @@ import Editor from '@/components/Editor'
import Cpmx from '@/views/goodsManage/goodsList/goodsEdit/cpmx.vue'
import Ggmx from '@/views/goodsManage/goodsList/goodsEdit/ggmx.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 { specialArea } from '@/api/configManage'
import ImageUpload from '@/components/ImageUpload'
import { isLocals } from '@/utils/numberToCurrency'
import { getAwardsListChiose } from '@/api/level'
import jcszMixins from '@/views/goodsManage/common/jcsz-mixins'
export default {
name: 'Jcsz',
components: {
ImageUpload,
Editor,
UpDataImg,
Jcpz,
Cpmx,
Ggmx
},
mixins: [jcszMixins],
data() {
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: '',
methods: 1,
levelList: [],
yesNo: [],
specialCurrency: [],
waresTypeList: [],
awardsList: [],
authorityList: [],
sortList: []
moren: '/goodsManage/goodsRelease/jcsz'
}
},
created() {
@ -1230,75 +1037,6 @@ export default {
// },
methods: {
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() {
api
.waresDetail({
@ -1352,48 +1090,7 @@ export default {
//
// this.getWaresSort()
}
if (
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
}
]
}
this.setTopList(this.form.specialArea)
setTimeout(() => {
that.$refs.box.scrollTop = 0
}, 50)
@ -1443,202 +1140,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
handleLink(id) {
if (id == 2) {
@ -1689,8 +1191,6 @@ export default {
mdChange(val) {
this.form.pkSellingPoint = val
},
//
changeYsfs() {},
//
getTableList(data) {
this.form.waresDetailList = data
@ -1703,38 +1203,21 @@ export default {
})
this.$refs.ggmxed.getData(this.cpList, this.form.specialArea)
},
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() {}
resetInventoryUse() {
this.$confirm('确定重置库存吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
api.resetInventoryUse({
waresId: this.form.waresId
}).then((res) => {
if (res.code === 200) {
this.form.inventoryUse = 0
}
})
})
}
}
}
</script>
@ -1744,6 +1227,9 @@ export default {
.el-cascader {
width: 100%;
}
::v-deep .el-input-group__append {
background-color: transparent;
}
::v-deep .el-date-editor.el-input,
.el-date-editor.el-input__inner {
@ -1793,6 +1279,7 @@ export default {
overflow: hidden;
background: #f9f9f9;
padding-top: 20px;
padding-left: 0 !important;
}
.main {
@ -1908,4 +1395,19 @@ export default {
// ::v-deep .el-select .el-input__suffix {
// top: 5px;
// }
.extra-title {
font-size: 16px;
font-weight: bold;
color: #333333;
margin-bottom: 10px;
margin-top: 10px;
text-indent: 40px;
}
.extra-wrapper {
margin-top: 10px;
padding: 10px;
border-radius: 5px;
border: 1px dashed #cccccc;
}
</style>

View File

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

View File

@ -28,7 +28,7 @@
:rules="rules"
:model="form"
style="width:1200px"
label-width="auto"
label-width="120px"
>
<el-row :gutter="40">
<el-col :span="16">
@ -95,7 +95,7 @@
</el-col>
<el-col :span="8">
<el-form-item
:label="'商品业绩'+`(${isLocals()})`"
label="商品业绩"
prop="waresAchieve"
>
<el-input
@ -528,6 +528,49 @@
</el-form-item>
</el-col>
</el-row>
<template v-if="form.specialArea === 14">
<el-row style="margin-bottom: 18px;">
<el-row style="margin-bottom: 18px;">
<el-col :span="24" class="extra-wrapper">
<el-col :span="24">
<div class="extra-title">秒杀配置</div>
</el-col>
<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="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>
<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>
</el-row>
</el-row>
</template>
<el-row>
<!-- <el-col :span="8">
<el-form-item
@ -550,6 +593,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 10px; margin-bottom: 10px;">
<el-col :span="8">
<el-form-item
@ -874,262 +918,25 @@ import Editor from '@/components/Editor'
import Cpmx from '@/views/goodsManage/goodsRelease/cpmx.vue'
import Ggmx from '@/views/goodsManage/goodsRelease/ggmx.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 { specialArea } from '@/api/configManage'
import ImageUpload from '@/components/ImageUpload'
import { isLocals } from '@/utils/numberToCurrency'
import { getAwardsListChiose } from '@/api/level'
import jcszMixins from '@/views/goodsManage/common/jcsz-mixins'
export default {
name: 'Jcsz',
components: {
ImageUpload,
Editor,
UpDataImg,
Jcpz,
Cpmx,
Ggmx
},
mixins: [jcszMixins],
data() {
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',
tabActive: 0,
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: []
isTrue: false
}
},
mounted() {
@ -1172,75 +979,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() {
this.$router.go(-1)
},
@ -1288,207 +1026,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
handleLink(id) {
if (id == 2) {
@ -1540,11 +1077,8 @@ export default {
// console.log('%c [ val ]-828', 'font-size:13px; background:#f8a68c; color:#ffead0;', val)
// this.form.pkSellingPoint = val
// },
//
changeYsfs() {},
//
getTableList(data, isTrue) {
console.log('%c [ data ]-1313', 'font-size:13px; background:#442827; color:#886c6b;', data)
this.isTrue = isTrue
this.form.waresDetailList = data
this.cpList = data.map((item) => {
@ -1554,39 +1088,7 @@ export default {
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>
@ -1595,6 +1097,12 @@ export default {
.el-cascader {
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,
.el-date-editor.el-input__inner {
width: 100%;
@ -1641,7 +1149,8 @@ export default {
height: calc(100vh - 50px);
overflow: hidden;
background: #f9f9f9;
padding-top: 20px;
// padding-top: 20px;
padding: 20px
}
.main {
display: flex;
@ -1653,7 +1162,7 @@ export default {
background: #ffffff;
border-radius: 8px;
box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
margin: 0px 20px 0 20px;
// margin: 0px 20px 0 20px;
height: 100%;
overflow-y: auto;
padding: 0 10px;
@ -1744,4 +1253,19 @@ export default {
::v-deep .el-form-item {
margin-bottom: 15px;
}
.extra-title {
font-size: 16px;
font-weight: bold;
color: #333333;
margin-bottom: 10px;
margin-top: 10px;
text-indent: 40px;
}
.extra-wrapper {
margin-top: 10px;
padding: 10px;
border-radius: 5px;
border: 1px dashed #cccccc;
}
</style>

View File

@ -249,7 +249,7 @@ export default {
this.$store
.dispatch('user/login', this.loginForm)
.then(() => {
this.$router.push({ path: this.redirect || '/' })
this.$router.push({ path: decodeURIComponent(this.redirect) || '/' })
this.loading = false
})
.catch(() => {