|
|
|
@ -6,14 +6,14 @@ |
|
|
|
|
</cu-custom> |
|
|
|
|
<view id="chooseType" :class="currentBoxId == 'chooseType' ? 'show' : 'hidden'"> |
|
|
|
|
<uni-forms ref="productForm" :modelValue="productDate" :rules="rules" label-width="200rpx"> |
|
|
|
|
<uni-forms-item label="商品分类:" name="name"> |
|
|
|
|
<uni-forms-item label="商品分类:" name="demandRegion"> |
|
|
|
|
<mulpicker |
|
|
|
|
v-model="productDate.demandRegion" |
|
|
|
|
:list="productList" |
|
|
|
|
:list="productList" |
|
|
|
|
rangekey="categoryName" |
|
|
|
|
code="id" |
|
|
|
|
pidkey="id" |
|
|
|
|
childkey="classificationTwoList" |
|
|
|
|
pidkey="id" |
|
|
|
|
childkey="classificationTwoList" |
|
|
|
|
:emitPath="true" |
|
|
|
|
:level="2" |
|
|
|
|
:placeholder="'选择商品分类'" |
|
|
|
@ -55,8 +55,8 @@ |
|
|
|
|
<view id="next" @click="changeBox">下一步</view> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<view id="instruction" :class="currentBoxId == 'instruction' ? 'show' : 'hidden'"> |
|
|
|
|
<uni-forms :modelValue="productDate" label-width="200rpx"> |
|
|
|
|
<uni-forms-item label="属性类别:" > |
|
|
|
@ -74,20 +74,20 @@ |
|
|
|
|
<view class="uni-px-5" v-for="(item,index) in attributesList"> |
|
|
|
|
<view style="display: inline-block;">{{item.attributeName}}:</view> |
|
|
|
|
<view style="display: inline-block;"> |
|
|
|
|
<uni-data-checkbox v-if="index==0" mode="tag" v-model="radioAttributes" :localdata="item.attributesList"></uni-data-checkbox> |
|
|
|
|
<uni-data-checkbox v-else-if="index!=0" mode="tag" multiple v-model="checkboxAttributes" :localdata="hobby"></uni-data-checkbox> |
|
|
|
|
<uni-data-checkbox v-if="index==0" mode="tag" @change="changeRadio(item,index)" v-model="radioAttributes" :localdata="item.attributesList"></uni-data-checkbox> |
|
|
|
|
<uni-data-checkbox v-else-if="index!=0" mode="tag" @change="changeCheckBox(item,index)" multiple v-model="checkboxAttributes" :localdata="item.attributesList"></uni-data-checkbox> |
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</view> |
|
|
|
|
</uni-section> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
<view> |
|
|
|
|
<view style="padding-bottom: 20rpx;border-bottom: 1rpx solid #f6f6f6;"> |
|
|
|
|
<view>批量填充:<text style="color: #999999;margin: 10rpx 0;">批量填充填入信息后,可以批量将内容填写到SKU 信息里</text></view> |
|
|
|
|
<view class="tagButton" @tap="changeChecked(item)" v-for="item in bottonList">{{item.label}}</view> |
|
|
|
|
<view class="redButton" @tap="addStockList">确定</view> |
|
|
|
|
</view> |
|
|
|
|
<view v-for="(items,index) in stockList"> |
|
|
|
|
<view style="padding: 20rpx 0;;border-bottom: 1rpx solid #f6f6f6;" v-for="(items,index) in stockList"> |
|
|
|
|
<view style="margin: 10rpx 0;"> |
|
|
|
|
<text style="color: red;">*</text> |
|
|
|
|
<text>规格:</text> |
|
|
|
@ -131,7 +131,7 @@ |
|
|
|
|
<uni-icons type="camera-filled" size="30"></uni-icons> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</view> |
|
|
|
|
<!-- <view> |
|
|
|
|
<view>详情图片:<text style="color: #999999;">最多可上传10张图片</text></view> |
|
|
|
@ -143,7 +143,7 @@ |
|
|
|
|
<view @click="addCompleted">完成</view> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -163,6 +163,7 @@ |
|
|
|
|
currentBoxId: 'chooseType', //当前显示的view的id |
|
|
|
|
isBoxShow: false, |
|
|
|
|
productDate:{ |
|
|
|
|
productStatus:'1', |
|
|
|
|
images:[] |
|
|
|
|
}, |
|
|
|
|
productList:[], |
|
|
|
@ -175,9 +176,9 @@ |
|
|
|
|
checked: false |
|
|
|
|
}], |
|
|
|
|
rules:{ |
|
|
|
|
name:{rules:[{required: true,errorMessage: '请选择商品分类'}]}, |
|
|
|
|
demandRegion:{rules:[{required: true,errorMessage: '请选择商品分类'}]}, |
|
|
|
|
productName:{rules:[{required: true,errorMessage: '请输入商品名称'}]}, |
|
|
|
|
brandId:{rules:[{required: true,errorMessage: '请输入商品品牌'}]}, |
|
|
|
|
brandId:{rules:[{required: true,errorMessage: '请选择商品品牌'}]}, |
|
|
|
|
price:{rules:[{required: true,errorMessage: '请输入商品售价'}]}, |
|
|
|
|
}, |
|
|
|
|
attributesTypeList:[], |
|
|
|
@ -190,7 +191,8 @@ |
|
|
|
|
], |
|
|
|
|
radioAttributes:'', |
|
|
|
|
checkboxAttributes:[], |
|
|
|
|
stockList:[] |
|
|
|
|
stockList:[], |
|
|
|
|
checkedList:[] |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -207,7 +209,12 @@ |
|
|
|
|
this.productDate.categoryOneId = val.split(',')[0] |
|
|
|
|
this.productDate.categoryTwoId = val.split(',')[1] |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
'productDate.attributesTypeId'(val){ |
|
|
|
|
if(!val){ |
|
|
|
|
this.stockList = [] |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
getEdit(options){ |
|
|
|
@ -236,6 +243,7 @@ |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
this.checkedList = this.productDate.checkedList |
|
|
|
|
if(this.productDate.checkedList.length==1){ |
|
|
|
|
this.radioAttributes = this.productDate.checkedList[0].checked |
|
|
|
|
}else{ |
|
|
|
@ -247,8 +255,8 @@ |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
this.stockList = this.productDate.stockList |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
console.log(res.data) |
|
|
|
|
}) |
|
|
|
@ -272,7 +280,7 @@ |
|
|
|
|
res.data.forEach(tab=>{ |
|
|
|
|
this.brandIdList.push({value:tab.id,text:tab.brandName}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
checkbox (e) { |
|
|
|
@ -298,24 +306,44 @@ |
|
|
|
|
}else{ |
|
|
|
|
this.productDate.recommend = 2 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
changeBox(e){ |
|
|
|
|
let currentFlag = e.currentTarget.id; |
|
|
|
|
switch(currentFlag){ |
|
|
|
|
case 'next': |
|
|
|
|
this.currentBoxId = 'instruction' |
|
|
|
|
break; |
|
|
|
|
case 'previous': |
|
|
|
|
this.currentBoxId = 'chooseType' |
|
|
|
|
if(currentFlag == 'next'){ |
|
|
|
|
this.$refs.productForm.validate().then(res=>{ |
|
|
|
|
console.log('表单数据信息:', res); |
|
|
|
|
switch(currentFlag){ |
|
|
|
|
case 'next': |
|
|
|
|
this.currentBoxId = 'instruction' |
|
|
|
|
break; |
|
|
|
|
case 'previous': |
|
|
|
|
this.currentBoxId = 'chooseType' |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
this.currentBoxId = 'viewInstruction' |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if(currentFlag == 'next'){ |
|
|
|
|
this.getAttributesType() |
|
|
|
|
} |
|
|
|
|
}).catch(err =>{ |
|
|
|
|
console.log('表单错误信息:', err); |
|
|
|
|
}) |
|
|
|
|
}else{ |
|
|
|
|
switch(currentFlag){ |
|
|
|
|
case 'next': |
|
|
|
|
this.currentBoxId = 'instruction' |
|
|
|
|
break; |
|
|
|
|
case 'previous': |
|
|
|
|
this.currentBoxId = 'chooseType' |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
this.currentBoxId = 'viewInstruction' |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
this.currentBoxId = 'viewInstruction' |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if(currentFlag == 'next'){ |
|
|
|
|
this.getAttributesType() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
getAttributesType(){ |
|
|
|
|
this.attributesTypeList = [] |
|
|
|
@ -328,7 +356,7 @@ |
|
|
|
|
attributesList:tab.attributesList |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
attributesData(){ |
|
|
|
|
if(this.productDate.attributesTypeId){ |
|
|
|
@ -341,14 +369,33 @@ |
|
|
|
|
tab.attributesList.push({value:item,text:item}) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
}else{ |
|
|
|
|
this.attributesList = [] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
changeRadio(item,index){ |
|
|
|
|
if(JSON.stringify(this.checkedList) == '[]'){ |
|
|
|
|
this.checkedList.push({attributeId:item.id,checked:item.attributeName}) |
|
|
|
|
}else{ |
|
|
|
|
this.checkedList[index].checked = item.attributeName |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
changeCheckBox(item,index){ |
|
|
|
|
if(this.checkedList.length<index+1){ |
|
|
|
|
this.checkedList.push({attributeId:item.id,checked:item.attributeName}) |
|
|
|
|
}else{ |
|
|
|
|
let checked = [] |
|
|
|
|
this.checkboxAttributes.forEach(tab=>{ |
|
|
|
|
checked.push(tab) |
|
|
|
|
}) |
|
|
|
|
this.checkedList[index].checked = checked.join(',') |
|
|
|
|
this.checkedList.checked |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
deleteCheckAll(i){ |
|
|
|
|
if(this.checkboxAttributes.length>1){ |
|
|
|
|
this.checkboxAttributes.splice(i,1) |
|
|
|
@ -390,7 +437,7 @@ |
|
|
|
|
obj.attributeJson = JSON.stringify(data) |
|
|
|
|
this.stockList.push(obj) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
//调起上传图片 |
|
|
|
@ -402,8 +449,6 @@ |
|
|
|
|
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 |
|
|
|
|
sourceType: ['album'], //从相册选择 |
|
|
|
|
success: function(res) { |
|
|
|
|
console.log(res) |
|
|
|
|
console.log('进入1') |
|
|
|
|
const JSESSIONID = utils.uuid() |
|
|
|
|
uni.uploadFile({ |
|
|
|
|
url: 'http://uat.xingoil.com/adminapi/oil-oss/obejct/uploadFile', |
|
|
|
@ -424,14 +469,11 @@ |
|
|
|
|
'token': utils.md5Salt(JSESSIONID) |
|
|
|
|
}, |
|
|
|
|
success(e) { |
|
|
|
|
console.log('进入2') |
|
|
|
|
console.log(e) |
|
|
|
|
let obj = JSON.parse(e.data), |
|
|
|
|
imageUrl = obj.data.publicUrl |
|
|
|
|
_that.getImage(imageUrl) |
|
|
|
|
}, |
|
|
|
|
fail(err) { |
|
|
|
|
console.log(err) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
},fail() { |
|
|
|
@ -483,21 +525,31 @@ |
|
|
|
|
}else{ |
|
|
|
|
this.productDate.recommend == '2' |
|
|
|
|
} |
|
|
|
|
this.productDate.checkedList = this.checkedList |
|
|
|
|
this.productDate.stockList = this.stockList |
|
|
|
|
serve.updateProduct(this.productDate).then(res=>{ |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: res.msg, |
|
|
|
|
icon: 'none' |
|
|
|
|
}) |
|
|
|
|
uni.navigateTo({ |
|
|
|
|
url: `../productList/index` |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.fadeBox{ |
|
|
|
|
width: 100%; |
|
|
|
|
margin-bottom: 20rpx; |
|
|
|
|
} |
|
|
|
|
#chooseType{ |
|
|
|
|
padding: 30rpx; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mulpicker{ |
|
|
|
|
height: 72rpx; |
|
|
|
|
line-height: 72rpx; |
|
|
|
@ -509,12 +561,12 @@ |
|
|
|
|
font-size: 28rpx; |
|
|
|
|
font-weight: bold; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/deep/ .uni-forms-item{ |
|
|
|
|
width: 100%; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/deep/ .uni-forms-item__label{ |
|
|
|
|
color: #333 !important; |
|
|
|
|
font-size: 30rpx; |
|
|
|
@ -527,7 +579,7 @@ |
|
|
|
|
line-height: 72rpx; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch{ |
|
|
|
|
margin-top: 9rpx; |
|
|
|
|
} |
|
|
|
@ -536,11 +588,11 @@ |
|
|
|
|
} |
|
|
|
|
switch::after{ |
|
|
|
|
content: ''; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#instruction{ |
|
|
|
|
padding: 30rpx; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mulpicker{ |
|
|
|
|
height: 72rpx; |
|
|
|
|
line-height: 72rpx; |
|
|
|
@ -551,7 +603,7 @@ |
|
|
|
|
/deep/ .uni-forms-item{ |
|
|
|
|
width: 100%; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/deep/ .uni-forms-item__label{ |
|
|
|
|
color: #333 !important; |
|
|
|
|
font-size: 30rpx; |
|
|
|
@ -627,9 +679,9 @@ |
|
|
|
|
z-index: 20; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.checkbox-con{ |
|
|
|
|
margin-top: 40rpx; |
|
|
|
|
text-align: center; |
|
|
|
@ -654,7 +706,7 @@ |
|
|
|
|
left: 50rpx; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.checked{ |
|
|
|
|
color: #FFFFFF; |
|
|
|
|
background: #FE0606; |
|
|
|
@ -663,16 +715,16 @@ |
|
|
|
|
.checkbox checkbox{ |
|
|
|
|
display: none |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.buttons { |
|
|
|
|
width: 100%; |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: space-evenly; |
|
|
|
|
margin-top: 180rpx; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>view { |
|
|
|
|
width: 250rpx; |
|
|
|
|
height: 76rpx; |
|
|
|
@ -680,13 +732,13 @@ |
|
|
|
|
line-height: 76rpx; |
|
|
|
|
border-radius: 10rpx; |
|
|
|
|
font-size: 28rpx; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-of-type(1) { |
|
|
|
|
background: #FFFFFF; |
|
|
|
|
border: 1rpx solid #B6B6B6; |
|
|
|
|
color: #333; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-of-type(2) { |
|
|
|
|
background: #FE0505; |
|
|
|
|
color: #fff; |
|
|
|
|