金诚优选前端代码
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.
 
 
 
 
 

436 lines
11 KiB

<template>
<view id="order-apply">
<view class="title">选择类型</view>
<view class="content">
<text>服务类型</text>
<picker :value="selectedIndex" :range="list" @change="change" range-key="name">
<!--<view class="picker">{{list[selectedIndex]}}</view>-->
<input type="text" placeholder="选择售后服务类型" disabled :value="list[selectedIndex].name"></input>
</picker>
</view>
<view class="title">退款信息</view>
<view class="list">
<view class="list-detail">
<text>申请数量</text>
<view class="num">
<view class="subtraction" @tap="plus">+</view>
<view class="text-number">{{applyNum}}</view>
<view class="plus" @tap="minus">-</view>
</view>
<!--<input type="range" />-->
</view>
<view class="content">
<text>退换原因</text>
<picker :value="reasonIndex" :range="reason" range-key="name" @change="changeCause" mode = selector>
<!--<view class="picker">{{list[selectedIndex]}}</view>-->
<input type="text" placeholder="选择退换原因" disabled :value="reason[reasonIndex].name"></input>
</picker>
</view>
<view class="list-detail">
<text>退款金额</text>
<view class="right"><input type="text" @input="changeValue" :value="amount" :placeholder="'最多可退' + availableAmount + '元'"></input></view>
</view>
</view>
<view class="title">
问题描述
</view>
<view class="text-area">
<textarea @input="changeDetail" :value="qestionDetail" contenteditable="true"></textarea>
</view>
<view class="title">
上传凭证
</view>
<view class="content btn-box">
<view class="imgContainer" v-for="(img, index) in imgList" :key="index">
<image :src="img"></image>
<view class="delete" :data-index="index" @tap="deleteImg">X</view>
</view>
<view class="append" @tap="selectImage" v-if="imgList.length<5">
+
</view>
</view>
<view class="submit" :style="'background: ' + config.mainColor" @tap="submitApplication">
提交
</view>
</view>
</template>
<script>
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
export default {
data() {
return {
list: [{
name:'',
value:''
}],
// 最大的申请数量
maxNum: "",
selectedIndex:0,
// 申请数量
applyNum: 1,
// 退款金额
amount: "",
// 问题描述
qestionDetail: "",
// 可退的金额
availableAmount: "",
reason: [{
name:'',
value:''
}],
reasonIndex:0,
imgList: [],
order_id: "",
order_item_id: "",
good: {
money: "",
number: ""
},
config: ''
};
},
onLoad(e) {
// 第三方平台配置颜色
var config = this.$cookieStorage.get('globalConfig') || '';
this.setData({
config: config
});
var id = e.id,
no = e.no;
this.setData({
order_id: no,
order_item_id: id
});
pageLogin(getUrl(), () => {
this.queryRefundBaseInfo(id);
this.queryCauseList();
});
},
onShow() {// let app =getApp();
// app.isBirthday().then(()=>{
// if(this.$cookieStorage.get("birthday_gift")){
// var giftData=this.$cookieStorage.get("birthday_gift").data;
// new app.ToastPannel().__page.showText(giftData);
// }
// });
},
methods: {
changeValue(e) {
let amount = e.detail.value;
if (!amount) {
amount = '';
} else if (/\S*$/.test(amount)) {
amount = amount.replace(/[^\d\.]|^\./g, '').replace(/\.{2}/g, '.').replace(/^([1-9]\d*|0)(\.\d{1,2})(\.|\d{1})?$/, '$1$2').replace(/^0\d{1}/g, '0');
}
if (Number(amount) > this.availableAmount) {
amount = this.availableAmount;
}
this.setData({
amount: amount
});
},
changeDetail(e) {
var str = e.detail.value;
if (e.detail.value.length > 150) {
wx.showModal({
title: '提示',
content: '超出字数限制'
});
str = str.slice(0, 150);
}
this.setData({
qestionDetail: str
});
},
setAmount(i) {
this.setData({
availableAmount: (this.good.money / this.good.number * i).toFixed(2)
});
},
change(e) {
console.log(e);
// 修改选中项文案
this.setData({
selectedIndex: e.detail.value
});
console.log('this.selectedIndex',this.selectedIndex)
},
changeCause: function (e) {
this.setData({
reasonIndex: e.detail.value
});
},
getValue: function (e) {
console.log(e.detail.value);
},
deleteImg(e) {
var i = e.currentTarget.dataset.index;
var arr = this.imgList;
arr.splice(i, 1);
this.setData({
imgList: arr
});
},
selectImage() {
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: res => {
var tempFilePaths = res.tempFilePaths;
var token = this.$cookieStorage.get('user_token');
/* this.$http.uploadFile({
header: {
'content-type': 'multipart/form-data',
Authorization: token
},
api: 'api/users/upload/avatar',
//仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'avatar_file'
}).then(res => {
var result = JSON.parse(res.data);
var arr = this.imgList;
arr.push(result.data.url); // this.imgList.push();
this.setData({
imgList: arr
});
}); */
uni.uploadFile({
header: {
Authorization: token
},
url: config.GLOBAL.baseUrl + 'api/users/upload/avatar',
filePath: tempFilePaths[0],
fileType: 'image',
name: 'avatar_file',
success: res => {
var result = JSON.parse(res.data);
var arr = this.imgList;
arr.push(result.data.url); // this.imgList.push();
this.setData({
imgList: arr
});
}
})
}
});
},
submitApplication() {
var applyItem = {
order_no: this.order_id,
order_item_id: parseInt(this.order_item_id),
quantity: parseInt(this.applyNum),
images: this.imgList,
amount: parseFloat(this.amount),
content: this.qestionDetail,
type: this.list[this.selectedIndex].value,
reason:this.reason[this.reasonIndex].value
},
message = null;
if (!is.has(applyItem.type)) {
message = "请选择售后类型";
} else if (!is.has(applyItem.reason)) {
message = '请填写退换原因';
} else if (!is.has(applyItem.amount)) {
message = '请填写退款金额';
}
/* else if (!is.has(applyItem.content)) {
message = "请输入问题描述";
} */
if (message) {
wx.showModal({
title: '提示',
content: message,
showCancel: false
});
} else {
applyItem.type = parseInt(applyItem.type);
this.applyretreat(applyItem);
}
},
applyretreat(data) {
wx.showLoading({
mask: true,
title: '正在申请'
});
this.$http.post({
api: "api/refund/apply",
data: data,
header: {
Authorization: this.$cookieStorage.get('user_token')
}
}).then(res => {
if (res.statusCode == 200) {
res = res.data;
if (res.status) {
wx.showToast({
title: "申请成功请等待审核",
duration: 1500,
success: () => {
setTimeout(() => {
wx.redirectTo({
url: '/pages/afterSales/detail/detail?no=' + res.data.refund_no
});
}, 1500);
}
});
} else {
wx.showModal({
content: res.message || '申请失败',
showCancel: false
});
}
wx.hideLoading();
} else {
wx.showModal({
content: '申请失败',
showCancel: false
});
wx.hideLoading();
}
});
},
plus() {
var num = this.applyNum;
num++;
if (num > this.maxNum) return;
this.setData({
applyNum: num
});
this.setAmount(num);
},
minus() {
var num = this.applyNum;
if (num <= 1) return;
num--;
this.setData({
applyNum: num
});
this.setAmount(num);
},
queryRefundBaseInfo(id) {
this.$http.get({
api: "api/refund/base_info",
header: {
Authorization: this.$cookieStorage.get('user_token')
},
data: {
order_item_id: id
}
}).then(res => {
var store = res.data.data;
var meta = res.data.meta.type;
var list = [];
meta.forEach(v => {
list.push({
name: v.value,
value: String(v.key)
});
});
/*var list=[{
name: meta[0].value,
value: meta[0].key
}];*/
this.setData({
'good.money': store.total / 100,
'good.number': store.quantity,
availableAmount: (store.total / 100 / store.quantity).toFixed(2),
maxNum: store.quantity,
list: list
});
});
},
queryServiceList(status, distribution_status) {
this.$http.get({
api: 'api/users/BankAccount/show-bank',
header: {
Authorization: this.$cookieStorage.get('user_token')
}
}).then(res => {
res = res.data;
});
},
queryCauseList(type = 'order_refund_reason') {
this.$http.get({
api: 'api/system/settings',
header: {
Authorization: this.$cookieStorage.get('user_token')
},
data: {
type: type
}
}).then(res => {
res = res.data;
var list = [];
res.data.forEach(v => {
if (v.is_enabled != 0) {
list.push({
name: v.value,
value: String(v.key)
});
}
});
this.setData({
reason: list
});
});
},
setData: function (obj) {
let that = this;
let keys = [];
let val, data;
Object.keys(obj).forEach(function (key) {
keys = key.split('.');
val = obj[key];
data = that.$data;
keys.forEach(function (key2, index) {
if (index + 1 == keys.length) {
that.$set(data, key2, val);
} else {
if (!data[key2]) {
that.$set(data, key2, {});
}
}
data = data[key2];
});
});
}
},
computed: {},
watch: {}
};
</script>
<style rel="stylesheet/less" lang="less">
@import "apply";
</style>