You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

348 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="page" v-if="showPage">
<view class="pageMain">
<view class="padding-bottom-25">
<view class="line-40 margin-bottom-15">
<text class="text-30 text-e62 text-bold">*</text>
<text class="text-30 text-bold text-33">添加商品封面图</text>
<text class="text-24 text-aa">一张建议尺寸300*300</text>
</view>
<ty-image-images-upload :count="1" :video-count="0" @imageChange="coverImgChange"
:image_list="coverImg">
</ty-image-images-upload>
</view>
<view class="padding-bottom-25">
<view class="line-40 margin-bottom-15">
<text class="text-30 text-bold text-33">添加商品展示图</text>
<text class="text-24 text-aa">最多5张</text>
</view>
<ty-image-images-upload :count="5" :video-count="0" @imageChange="showImgChange"
:image_list="showImgList">
</ty-image-images-upload>
</view>
<view class="padding-bottom-25">
<view class="line-40 margin-bottom-15">
<text class="text-30 text-bold text-33">添加商品视频</text>
</view>
<ty-image-images-upload :count="0" :video-count="1" @videoChange="showVideoChange"
:video_list="showVideo" @openVideoPop="openVideoPop" @closeVideoPop="closeVideoPop">
</ty-image-images-upload>
</view>
<view class="margin-bottom-10">
<view class="line-40 margin-bottom-15">
<text class="text-30 text-e62 text-bold">*</text>
<text class="text-30 text-bold text-33">商品标题</text>
</view>
<view class="margin-top-25 padding-bottom-30 border-bottom-ed">
<input placeholder="请输入商品名称" class="line-height-40 text-26" placeholder-class="text-aa"
v-model="goodsName" maxlength="20" />
</view>
</view>
<view class="border-bottom-ed flex align-center margin-bottom-40">
<view class="">
<text class="text-30 text-e62 text-bold">*</text>
<text class="text-30 text-bold text-33">选择商品分类</text>
</view>
<picker :range="cates" range-key="name" :value="cateIndex" @change="changeCate"
class="flex-one margin-left-30">
<view class="flex line-height-100 align-center justify-end">
<view class="text-30" :class="cateIndex == null ? 'text-aa' : ''">
{{cateIndex == null ? '请选择' : cates[cateIndex].name}}
</view>
<view class="tyIcon-huaban text-4d text-32 margin-left-10"></view>
</view>
</picker>
</view>
<view class="margin-bottom-40">
<view class="text-30 text-bold margin-bottom-15">
商品详情-文字
</view>
<view class="areaBox">
<textarea v-model="goodsDetail" placeholder="请输入商品详情" class="text-30 line-45 textareaBox"
placeholder-class="text-aa" maxlength="500"></textarea>
<view class="text-right margin-top-20 text-24 text-aa">
{{goodsDetail.length > 500 ? 500 : goodsDetail.length}}/500
</view>
</view>
</view>
<view class="padding-bottom-25">
<view class="line-40 margin-bottom-15">
<text class="text-30 text-bold text-33">商品详情-图片</text>
<text class="text-24 text-aa">最多9张</text>
</view>
<ty-image-images-upload :count="9" :video-count="0" @imageChange="detailImgListChange"
:image_list="detailImgList">
</ty-image-images-upload>
</view>
<view class="margin-bottom-40">
<view class="text-30 text-bold margin-bottom-15">
商品价格-文字
</view>
<view class="areaBox">
<textarea v-model="goodsPrice" placeholder="请输入商品价格" class="text-30 line-45 textareaBox"
placeholder-class="text-aa"></textarea>
<view class="text-right margin-top-20 text-24 text-aa">
{{goodsPrice.length > 500 ? 500 : goodsPrice.length}}/500
</view>
</view>
</view>
<view class="padding-bottom-25">
<view class="line-40 margin-bottom-15">
<text class="text-30 text-bold text-33">商品价格-图片</text>
<text class="text-24 text-aa">最多5张</text>
</view>
<ty-image-images-upload :count="5" :video-count="0" @imageChange="priceImgListChange"
:image_list="priceImgList">
</ty-image-images-upload>
</view>
<view class="margin-bottom-40">
<view class="text-30 text-bold margin-bottom-15">
消防检测报告-文字
</view>
<view class="areaBox">
<textarea v-model="reportMsg" placeholder="请输入商品检测报告文字" class="text-30 line-45 textareaBox"
placeholder-class="text-aa"></textarea>
<view class="text-right margin-top-20 text-24 text-aa">
{{reportMsg.length > 500 ? 500 : reportMsg.length}}/500
</view>
</view>
</view>
<view class="padding-bottom-45">
<view class="line-40 margin-bottom-15">
<text class="text-30 text-bold text-33">消防检测报告-图片</text>
<text class="text-24 text-aa">最多5张</text>
</view>
<ty-image-images-upload :count="5" :video-count="0" @imageChange="reporImgListChange"
:image_list="reporImgList">
</ty-image-images-upload>
</view>
<block v-if="status == 5">
<view class="text-ff85 text-28 text-bold line-40 margin-bottom-15">
审核意见
</view>
<view class="bg-f5 padding-20 text-28 text-33 line-40">
{{refuseReason}}
</view>
</block>
</view>
<cover-view class="flex align-center justify-center bottomBox" v-if="showBottomBtn">
<cover-view class="btn1 margin-right-30 text-30 text-33 text-bold" @click="tapSave(1)">暂存</cover-view>
<cover-view class="btn2 text-30 text-ff text-bold" @click="tapSave(2)"></cover-view>
</cover-view>
</view>
</template>
<script>
export default {
data() {
return {
id: '',
coverImg: [], //封面图
showImgList: [], //展示图
showVideo: [], //商品视频
goodsName: '', //商品名称
cates: [],
cateIndex: null,
goodsDetail: '', //商品详情
detailImgList: [], //商品详情图片
goodsPrice: '', //商品价格
priceImgList: [], //商品价格图片
reportMsg: '', //消防检测报告
reporImgList: [], //报告图片
status: 1, //1-暂存 2-待审核 3-未上架 4-已通过 5-已拒绝
refuseReason: '',
showPage: false,
showBottomBtn:true,
}
},
onLoad(options) {
this.id = options.id ? options.id : '';
uni.setNavigationBarTitle({
title: this.id ? '编辑商品' : '添加商品'
})
this.getPageData()
},
methods: {
getPageData() {
this.rq.getData('fire/api/Supply/getProductData', {
product_id: this.id ? this.id : 0
}, {
loading: 1
}).then(res => {
if (res.code == 0) {
this.cates = res.data.category;
if (this.id) {
if (res.data.product_data.cover_img) {
this.coverImg.push(res.data.product_data.cover_img);
}
this.showImgList = res.data.product_data.img_path == '' ? [] : res.data.product_data.img_path;
if (res.data.product_data.video_url) {
this.showVideo.push({
video_url: res.data.product_data.video_url,
image_url: res.data.product_data.video_cover_img
});
}
this.goodsName = res.data.product_data.name;
this.cates.forEach((item, index) => {
if (item.id == res.data.product_data.category_id) {
this.cateIndex = index;
}
})
this.goodsDetail = res.data.product_data.detail;
this.detailImgList = res.data.product_data.detail_img == '' ? [] : res.data.product_data.detail_img;
this.reportMsg = res.data.product_data.report;
this.reporImgList = res.data.product_data.report_img == '' ? [] : res.data.product_data.report_img;
this.goodsPrice = res.data.product_data.price;
this.priceImgList = res.data.product_data.price_img == '' ? [] : res.data.product_data.price_img;
this.status = res.data.product_data.status;
this.refuseReason = res.data.product_data.examine_idea;
}
this.showPage = true;
}
})
},
// 上传封面图
coverImgChange(e) {
this.coverImg = e.image_list;
},
// 展示图
showImgChange(e) {
this.showImgList = e.image_list;
},
// 视频
showVideoChange(e) {
this.showVideo = e.video_list;
},
// 选择分类
changeCate(e) {
this.cateIndex = e.detail.value;
},
// 商品详情图
detailImgListChange(e) {
this.detailImgList = e.image_list;
},
// 商品价格图片
priceImgListChange(e) {
this.priceImgList = e.image_list;
},
// 消防检测图片
reporImgListChange(e) {
this.reporImgList = e.image_list;
},
// 播放视频
openVideoPop(e){
this.showBottomBtn = false
},
closeVideoPop(e){
this.showBottomBtn = true
},
// 保存
tapSave(type) {
//1-暂存 2-提交
if (type == 1) {
if (this.goodsName == '') {
this.cn.alert('请输入商品名称');
return;
}
}
if (type == 2) {
if (this.coverImg.length == 0) {
this.cn.alert('请添加商品封面图');
return;
}
if (this.goodsName == '') {
this.cn.alert('请输入商品名称');
return;
}
if (this.cateIndex == null) {
this.cn.alert('请选择商品分类');
return;
}
}
this.rq.getData('fire/api/Supply/supplyAddProduct', {
type: type,
id: this.id ? this.id : 0,
name: this.goodsName,
cover_img: this.coverImg.join(','),
category_id: this.cateIndex == null ? '' : this.cates[this.cateIndex].id,
img_path: this.showImgList.join(','),
video_url: this.showVideo.length ? this.showVideo[0].video_url : '',
detail: this.goodsDetail,
detail_img: this.detailImgList.join(','),
report: this.reportMsg,
report_img: this.reporImgList.join(','),
price: this.goodsPrice,
price_img: this.priceImgList.join(','),
}).then(res => {
if (res.code == 0) {
if (type == 1) {
this.cn.alert('暂存成功')
} else {
this.cn.alert('提交成功,请等待后台审核').then(() => {
uni.navigateBack({
delta: 1
})
})
}
}
})
}
}
}
</script>
<style scoped>
.pageMain {
width: 100vw;
min-height: 100vh;
background: #fff;
padding: 20rpx 30rpx calc(150rpx + env(safe-area-inset-bottom));
box-sizing: border-box;
}
.areaBox {
width: 100%;
border-radius: 10rpx;
border: 1rpx solid #DDDDDD;
padding: 20rpx;
}
.textareaBox {
width: 100%;
height: 210rpx;
}
.bottomBox {
width: 100vw;
background: #fff;
position: fixed;
left: 0;
bottom: 0;
padding: 10rpx 30rpx calc(10rpx + env(safe-area-inset-bottom));
box-sizing: border-box;
z-index: 6;
}
.btn2,
.btn1 {
width: 248rpx;
line-height: 42rpx;
padding: 22rpx 0;
text-align: center;
border-radius: 10px;
}
.btn2 {
background: #2F97FF;
border: 2rpx solid #2F97FF;
}
.btn1 {
background: #fff;
border: 2rpx solid #777777;
}
</style>