海南旅游项目 前端仓库
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.
 
 
 
 

321 lines
9.0 KiB

<template>
<view v-if="$isRight(orderDetails)">
<view class="lf-bg-white lf-p-t-30 lf-p-b-30 lf-p-l-32 lf-p-r-32">
<view class="lf-row-between">
<image :src="orderDetails.picture" mode="aspectFill" style="width: 240rpx; height: 240rpx;border-radius: 20rpx;" @click="$url('/pages/goodsDetail/index?goods_id='+orderDetails.agent_product_id)"></image>
<view class="flex-sub padding-left-sm">
<view class="bref-box lf-font-32 lf-color-333 lf-line-2" style="height: 88rpx;line-height: 44rpx;">
{{orderDetails.title}}
</view>
<view class="flex lf-m-t-25 align-center text-center">
<text class="block lf-color-gray lf-font-24" style="line-height: 40rpx;">数量</text>
<text class="lf-m-l-10 lf-color-gray lf-font-24">x {{orderDetails.num}}</text>
</view>
<view class="flex align-center text-center lf-m-t-25">
<lf-price :price="orderDetails.price" />
<!-- <view class="lf-m-l-20 lf-line-through lf-color-gray">
{{orderDetails.price}}
</view> -->
</view>
</view>
</view>
</view>
<self-line/>
<view class="bg-white padding-lr">
<view class="cu-bar lf-border-bottom">
<text class="lf-color-555 lf-font-28">可退金额</text>
<text class="text-price lf-font-36 lf-color-price">{{orderDetails.price}}</text>
</view>
<view class="cu-bar flex justify-between align-center text-center">
<text class="lf-color-555 lf-font-28">订单编号</text>
<view>
<text class="lf-font-28 text-black1">{{orderDetails.order_no}}</text>
<!-- <text class="text-orange lf-font-28" @click="copy(2368492461046128742764)">复制</text> -->
</view>
</view>
</view>
<self-line/>
<view class="bg-white lf-m-b-6">
<view class="lf-p-t-30 lf-p-l-32 lf-p-r-32 lf-p-b-36">
<view class="lf-font-28 lf-color-black">退款说明</view>
<!-- <input type="text" value="" placeholder="请输入退款说明" class="lf-m-t-30 lf-border-bottom" /> -->
<view class="cu-self menu" style="margin-top: 30rpx; position: relative;">
<textarea :cursor-spacing="120" maxlength="300" :adjust-position="true" type="text" v-model="applyInfo" class="text-left lf-font-32 area-self" placeholder="请输入退款说明" />
<view class="font-change">{{ dynamicLength() }}/300</view>
</view>
</view>
</view>
<view class="cu-form-group">
<view class="grid col-4 grid-square flex-sub">
<view style="width: 212rpx;height: 212rpx;border-radius: 10rpx;" class="bg-img" v-for="(item,index) in img_list" :key="index" @tap="showImg(index)" :data-url="img_list[index]">
<image :src="img_list[index]" mode="aspectFill"></image>
<view class="cu-tag bg-red" @tap.stop="DelImg(index)" :data-index="index">
<!-- <text class='cuIcon-close'></text> -->
<text class="lf-iconfont lf-icon-cuowu lf-font-40 lf-color-price"></text>
</view>
</view>
<view style="width: 212rpx;height: 212rpx;border-radius: 10rpx;" class="solids" @tap="ChooseImage" v-if="img_list.length<3">
<text class='cuIcon-cameraadd'></text>
</view>
</view>
</view>
<view class="lf-m-t-40 lf-m-b-40">
<view class="padding-lr-lg">
<button class="cu-btn block lf-bg-blue lg round" @tap="subimitApply()">
<text class="text-df text-white">确认申请</text>
</button>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
hostImg: '',
img_list: [], // 反馈问题图片
applyInfo: '', // 退款说明
order_id: 0,
orderDetails: {}
}
},
onLoad(e) {
this.order_id = e.order_id
if(this.order_id) {
this.getOrderDetails()
}
},
methods: {
subimitApply() {
if(!this.applyInfo) {
this.$msg('请先输入反馈信息!')
return
}
this.upload()
},
getOrderDetails() {
this.$http(this.API.API_ORDER_DETAILS, {
id: this.order_id
}).then(res => {
this.orderDetails = res.data
console.log(res.data)
}).catch(err => {
setTimeout(() => {
this.$toBack()
}, 1000)
});
},
dynamicLength(){
return parseInt(this.applyInfo.length);
},
checkImgInfo(tempFilePath, suc){
uni.getImageInfo({
src: tempFilePath,
success (res) {
let type = res.type;
console.log('checkImgInfo...', type);
if(type == 'png' || type == 'jpeg' || type == 'jpg'){
suc && suc(true);
} else {
suc && suc(false);
}
},
fail(err) {
suc && suc(false);
}
})
},
// 选择图片
ChooseImage(e) {
let that = this;
uni.chooseImage({
count: 1,
sizeType: ['original'], // 可以指定是原图original还是压缩图compressed ,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: res => {
that.hostImg = res.tempFilePaths[0];
let tempFile = res.tempFiles.shift();
let tempFilePath = res.tempFilePaths.shift();
console.log('临时路径',res)
that.checkImgInfo(tempFilePath, (res) => {
// 过滤不是图片不是png、jpeg 格式
if(res){
if(tempFile.size > 10000000){
uni.showModal({
title: '',
content: '您选择的图片过大:'+ (tempFile.size / 1024000).toFixed(2) +"M,请点击确定重新上传",
success: res2 => {
if(res2.confirm){
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: (res3) => {
let tempFilePath = res3.tempFilePaths.shift();
that.is_wx_reduce = true;
that.img_list.push(tempFilePath);
}
})
}
}
})
} else{
that.img_list.push(tempFilePath);
console.log('图片数组',that.img_list)
}
} else {
uni.showModal({
title: '',
content: '选择的图片须为jpg、jpeg或png格式',
showCancel: false,
confirmColor: '#1697EE'
})
}
});
}
});
},
// 上传图片到服务器
upload(url){
let that = this;
let uploads = [];
// 商品banner图上传
if (that.img_list.length > 0) {
for (let i = 0; i < that.img_list.length; i++) {
let upload_img = new Promise((resolve, reject) => {
that.uploadFile(that.img_list[i], (res) => {
resolve(res);
}, (err) => {
reject(err);
});
})
uploads.push(upload_img);
}
}
if(uploads.length == 0) {
that.realSubmitInfo([]);
return
}
Promise.all(uploads).then((result) => {
let img_url_list = [];
if(result.length > 0){
img_url_list = result;
}
if(img_url_list) {
that.realSubmitInfo(img_url_list);
}
}).catch(err => {
that.is_publish = false; // 恢复提交按钮
uni.showModal({
title: '',
content: '图片上传失败,请重新提交',
confirmColor: '#1697EE'
})
})
},
// 提交反馈
realSubmitInfo(img_url_list){
let that = this;
console.log('上次时的图片数组',img_url_list)
let params = {id: that.order_id,desc: that.applyInfo,pictures:img_url_list}
if(img_url_list.length == 0) {
delete params.images;
}
uni.showToast({
title: '请求中',
icon: "loading",
duration: 10000
})
that.$http(that.API.API_APPLYREFUND, params).then(res => {
if(res.code == 0) {
that.$msg('提交成功')
that.img_list = []
that.applyInfo = ''
console.log(that.order_id)
setTimeout(() => {
console.log(that.order_id)
that.$url('/pages/order/refund_detail?order_id='+that.order_id,{type:'launch'})
},1000)
}
}).catch(err => {
});
},
// 预览图片
showImg(index) {
this.$u.throttle(() => {
let goods_banner = this.img_list || [];
let banners = goods_banner.map(item => item);
uni.previewImage({
urls: banners,
current: index
})
}, 200);
},
// 删除图片
DelImg(index) {
uni.showModal({
title: '提示',
content: '即将取消上传这张图片,请确认?',
success: e => {
if (!e.confirm) return;
this.img_list.splice(index, 1);
}
});
},
// 点击复制
copy(text) {
uni.setClipboardData({
data: text
});
},
}
}
</script>
<style>
.btn{
margin: 0;
padding: 0;
width: 212rpx;
height: 82rpx;
background-color: #1998FE;
color: #FFFFFF;
line-height: 80rpx;
font-size: 32rpx;
border-radius: 41rpx;
}
.bref-box {
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.area-self {
width: 100%;
padding: 30rpx;
padding-bottom: 36rpx;
color: #333;
border: 1px solid #D0D0D0;
border-radius: 10rpx;
}
.font-change{
position: absolute;
right: 10rpx;
bottom: 10rpx;
width: max-content;
color: #777777;
}
</style>