|
|
<template> <view class="qaBox" v-if="ifShow" > <view class="qaTopInfo"> <view class="qaTopInfoBox" @click="goGoodsDetails" > <image :src="detailList.image"></image> <view class="qaInfoText"> <h3>{{ detailList.productName }}</h3> <span>共{{ detailList.count }}个问题</span> </view> </view> <view class="qaTitBox"> <view class="qaTit"><i>问</i> <h3>{{ detailList.problem }}</h3></view> <view class="qaTitTime"><img :src="detailList.headImage" /> <span class="qaName">{{ detailList.name }}</span> <span class="qaTimeInfo">{{ detailList.createTime }}</span></view> </view> </view> <view class="answerListBox"> <view class="answerNum">共{{ answerslength }}条回答</view> <view class="answerList" v-for="item in detailList.answers" :key="item.answerId" > <view class="answerItem"> <view class="itemTit"> <view class="itemAvatarBox"> <img :src="item.headImage" alt="" > <span class="answerName">{{ item.name }}</span> </view> <view class="answerTime">{{ item.createTime }}</view> </view> <view class="answerInfo">{{ item.answer }}</view> </view> </view> </view> <view v-if="detailList.ifExhibition==1" class="pad-bot-100" ></view> <view class="answerBtn" v-if="detailList.ifExhibition==1" :style="{'padding-bottom':(isIphone==true? 50:0)+'rpx'}" > <view class="uni-form-item uni-column answerBtnBox"> <input class="uni-input" v-model="answerText" maxlength="200" focus placeholder="被邀请的用户才能回答" /> <view class="answerButton" @click="answer" >回答 </view> </view> </view> </view> </template>
<script> const NET = require('../../utils/request') const API = require('../../config/api') import QuestionsAndAnswersList from "./components/QuestionsAndAnswersList"; export default { name: "qADetail", components:{QuestionsAndAnswersList}, data() { return { detailList: {},//商品问答详情
productId: '', images: '', productName: '', problemsData: {}, answerText: "", answerslength: 0, num: 0, isIphone: false, ifShow: false } }, onLoad(options) { this.isIphone = getApp().globalData.isIphone; this.problemsData = this.$getJumpParam(options) this.getProblems() }, methods: { goGoodsDetails() { let shopId = this.detailList.shopId let productId = this.detailList.productId let skuId = this.detailList.skuId uni.navigateTo({ url: 'goodsDetails?shopId=' + shopId + '&productId=' + productId + '&skuId=' + skuId }) }, //商品问答数据
getProblems() { NET.request(API.getProblemDetail, { problemId: this.problemsData.problemId, productId: this.problemsData.productId, }, 'GET').then(res => { this.detailList = res.data this.ifShow = true this.answerslength = this.detailList.answers.length uni.removeStorageSync('seeAllFnData') }).catch(res => { uni.showToast({ title: '失败', icon: "none" }) }) }, //回答
answer() { NET.request(API.addAnswer, { productId: this.problemsData.productId, answer: this.answerText, problemId: this.problemsData.problemId }, 'POST').then(res => { this.getProblems() this.answerText = "" uni.showToast({ title: '回答成功', icon: "success" }) }).catch(res => { uni.showToast({ title: '失败', icon: "none" }) }) } } } </script>
<style lang="scss" scoped > .qaBox { padding: 0 30upx;
.qaTopInfo { margin-top: 20upx;
.qaTopInfoBox { border-radius: 10upx; display: flex; align-items: center; padding: 15upx 20upx; margin-bottom: 55upx;
image { border: 2px solid #E4E5E6; width: 120upx; height: 120upx; margin-right: 20upx; }
.qaInfoText { h3 { font-size: 30upx; font-weight: 500; color: #333333; margin-bottom: 20rpx; }
span { font-size: 24upx; color: #999999; } } }
.qaTitBox { padding-bottom: 30upx; border-bottom: 1upx solid #EEEEEE;
.qaTit { display: flex; align-items: center; margin-bottom: 35upx;
i { width: 38upx; height: 38upx; background: #C83732; font-style: normal; text-align: center; color: #FFFFFF; font-size: 20upx; margin-right: 30upx; }
h3 { font-size: 28upx; font-weight: 500; color: #333333; } }
.qaTitTime { display: flex; align-items: center;
img { width: 44upx; height: 44upx; margin-right: 20upx; }
.qaName { font-size: 28upx; color: #666666; margin-right: 35upx; }
.qaTimeInfo { color: #CCCCCC; font-size: 22upx; } } } }
.answerListBox { .answerNum { font-size: 24upx; color: #CCCCCC; margin-bottom: 40upx; margin-top: 30upx; }
.answerList { padding-bottom: 50upx;
.answerItem { margin-bottom: 10upx;
.itemTit { display: flex; align-items: center; justify-content: space-between;
.itemAvatarBox { display: flex;
img { width: 46upx; height: 46upx; margin-right: 20upx; }
.answerName { font-size: 26upx; color: #333333; font-weight: bold; } }
.answerTime { color: #CCCCCC; font-size: 20upx; } }
.answerInfo { color: #333333; font-size: 28upx; margin-top: 20upx; font-weight: 400; } } } }
.answerBtn { position: fixed; width: 100%; bottom: 0; left: 0;
.answerBtnBox { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 30upx; background: #FFFFFF;
input { margin-right: 30upx; width: 530upx; background: #F1F1F1; min-height: 84upx; padding-left: 30upx; font-size: 28upx; color: #999999; }
.input-placeholder { font-size: 24upx; color: #999999; }
.answerButton { width: 152upx; height: 84upx; background: #333333; text-align: center; line-height: 84upx; font-size: 30upx; color: #FFEBC4; } } } } </style>
|