mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-11-02 16:00:40 +00:00
Merge branch 'v4.7.0dev' into v5.0.0dev
# Conflicts: # template/uni-app/pages/goods/order_confirm/index.vue
This commit is contained in:
commit
9d6f9dd6a4
@ -1 +1 @@
|
||||
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = #DB_HOST#
HOSTPORT = #DB_PORT#
USERNAME = #DB_USER#
PASSWORD = '#DB_PWD#'
DATABASE = #DB_NAME#
PREFIX = #DB_PREFIX#
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
[CACHE]
DRIVER = #CACHE_TYPE#
CACHE_PREFIX = #CACHE_PREFIX#
CACHE_TAG_PREFIX = #CACHE_TAG_PREFIX#
[REDIS]
REDIS_HOSTNAME = #RB_HOST#
PORT = #RB_PORT#
REDIS_PASSWORD = '#RB_PWD#'
SELECT = #RB_SELECT#
[QUEUE]
QUEUE_NAME = #QUEUE_NAME#
|
||||
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = #DB_HOST#
HOSTPORT = #DB_PORT#
USERNAME = #DB_USER#
PASSWORD = '#DB_PWD#'
DATABASE = #DB_NAME#
PREFIX = #DB_PREFIX#
CHARSET = utf8mb4
DEBUG = true
[LANG]
default_lang = zh-cn
[CACHE]
DRIVER = #CACHE_TYPE#
CACHE_PREFIX = #CACHE_PREFIX#
CACHE_TAG_PREFIX = #CACHE_TAG_PREFIX#
[REDIS]
REDIS_HOSTNAME = #RB_HOST#
PORT = #RB_PORT#
REDIS_PASSWORD = '#RB_PWD#'
SELECT = #RB_SELECT#
[QUEUE]
QUEUE_NAME = #QUEUE_NAME#
|
||||
@ -8,7 +8,7 @@
|
||||
<Radio label="3">虚拟</Radio>
|
||||
</RadioGroup>
|
||||
</FormItem>
|
||||
<FormItem v-show="formItem.type === '1' && export_open" label="发货类型:">
|
||||
<FormItem v-show="formItem.type == '1' && export_open" label="发货类型:">
|
||||
<RadioGroup v-model="formItem.express_record_type" @on-change="changeExpress">
|
||||
<Radio label="1">手动填写</Radio>
|
||||
<Radio label="2">电子面单打印</Radio>
|
||||
@ -142,7 +142,7 @@ export default {
|
||||
// ]
|
||||
// },
|
||||
temp: {},
|
||||
export_open: true,
|
||||
export_open: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
|
||||
@ -8,8 +8,8 @@
|
||||
<Col span="12">收货人:{{ orderDatalist.orderInfo.real_name }}</Col>
|
||||
</Row>
|
||||
<Row class="mb10">
|
||||
<Col span="12">联系电话:{{ orderDatalist.orderInfo.user_phone }}</Col>
|
||||
<Col span="12">收货地址:{{ orderDatalist.orderInfo.user_address }}</Col>
|
||||
<Col span="12">联系电话:{{ orderDatalist.orderInfo.user_phone || '' }}</Col>
|
||||
<Col span="12">收货地址:{{ orderDatalist.orderInfo.user_address || '' }}</Col>
|
||||
</Row>
|
||||
<Divider style="margin: 20px 0 !important" />
|
||||
<div class="ivu-description-list-title">订单信息</div>
|
||||
@ -18,7 +18,7 @@
|
||||
<Col span="12" class="fontColor1"
|
||||
>订单状态:{{ orderDatalist.orderInfo._status._title }}
|
||||
{{
|
||||
orderDatalist.orderInfo.refund.length
|
||||
orderDatalist.orderInfo.refund && orderDatalist.orderInfo.refund.length
|
||||
? orderDatalist.orderInfo.is_all_refund
|
||||
? '退款中'
|
||||
: '部分退款中'
|
||||
|
||||
@ -567,15 +567,17 @@ export default {
|
||||
getData(id) {
|
||||
getDataInfoNew(id)
|
||||
.then(async (res) => {
|
||||
this.$refs.detailss.modals = true;
|
||||
this.orderDatalist = res.data;
|
||||
if (this.orderDatalist.orderInfo.refund_img) {
|
||||
if (this.orderDatalist.orderInfo.refund_img.length) {
|
||||
try {
|
||||
this.orderDatalist.orderInfo.refund_img = JSON.parse(this.orderDatalist.orderInfo.refund_img);
|
||||
} catch (e) {
|
||||
this.orderDatalist.orderInfo.refund_img = [];
|
||||
}
|
||||
}
|
||||
this.$nextTick((e) => {
|
||||
this.$refs.detailss.modals = true;
|
||||
});
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
@ -668,7 +670,7 @@ export default {
|
||||
position: relative;
|
||||
}
|
||||
.ivu-form-item{
|
||||
|
||||
|
||||
}
|
||||
.QRpic {
|
||||
width: 180px;
|
||||
|
||||
@ -20,11 +20,11 @@
|
||||
<view class='vip-money acea-row row-middle'
|
||||
v-if="item.is_vip && item.vip_price && item.vip_price > 0">
|
||||
{{$t(`¥`)}}{{item.vip_price || 0}}
|
||||
<image src='../../static/images/vip.png'></image><text class='num'>{{$t(`已售`)}}
|
||||
{{item.sales}}{{$t(item.unit_name)}}</text>
|
||||
<image src='../../static/images/vip.png'></image><text class='num'>
|
||||
{{$t(`已售`)}}{{item.sales}}{{$t(item.unit_name)}}</text>
|
||||
</view>
|
||||
<view class='vip-money acea-row row-middle' v-else><text class='num'>{{$t(`已售`)}}
|
||||
{{item.sales}}{{$t(item.unit_name)}}</text></view>
|
||||
<view class='vip-money acea-row row-middle' v-else><text class='num'>
|
||||
{{$t(`已售`)}}{{item.sales}}{{$t(item.unit_name)}}</text></view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class='iconfont icon-gouwuche cart-color acea-row row-center-wrapper'></view> -->
|
||||
@ -148,6 +148,11 @@
|
||||
color: #aaa;
|
||||
font-weight: normal;
|
||||
margin-top: -2rpx;
|
||||
white-space: nowrap;
|
||||
|
||||
text {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
~.num {
|
||||
margin-left: 22rpx;
|
||||
|
||||
@ -13,8 +13,8 @@
|
||||
<image :src='item.image'></image>
|
||||
</view>
|
||||
<view class='text acea-row row-column-around'>
|
||||
<view class='name line1'>{{item.title}}</view>
|
||||
<view class='num'><text class='iconfont icon-pintuan'></text>{{item.people}}{{$t(`人正在参与`)}}
|
||||
<view class='name line1'>{{item.title || ''}}</view>
|
||||
<view class='num'><text class='iconfont icon-pintuan'></text>{{item.people || ''}}{{$t(`人正在参与`)}}
|
||||
</view>
|
||||
<view class='money'>{{$t(`最低`)}} : {{$t(`¥`)}}<text class='price'>{{item.min_price}}</text>
|
||||
</view>
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<image src="../static/groupLine.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="list" v-if="combinationList.length">
|
||||
<view class="item acea-row row-between-wrapper" v-for="(item,index) in combinationList" :key='index'
|
||||
@tap="openSubcribe(item)">
|
||||
<view class="pictrue">
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<view class='timeList'>
|
||||
<block v-for="(item,index) in timeList" :key='index'>
|
||||
<view @tap='settimeList(item,item.key)' class='item' :class="active == index + 1?'on':''">
|
||||
<view class='time'><span>{{item.name}}</span></view>
|
||||
<view class='time'><span>{{item.name || ''}}</span></view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
@ -21,10 +21,10 @@
|
||||
<image :src='item.image'></image>
|
||||
</view>
|
||||
<view class='text acea-row row-column-around'>
|
||||
<view class='name line2'>{{item.store_name}}</view>
|
||||
<view class='name line2'>{{item.store_name || ''}}</view>
|
||||
<view class='booking'>
|
||||
<text v-if="item.presell_type != 0 && active != 1" class="count"
|
||||
style="color: #999;">{{$t(`已预定`)}}{{item.sales ? item.sales : 0}}{{item.unit_name}}</text>
|
||||
style="color: #999;">{{$t(`已预定`)}}{{item.sales ? item.sales : 0}}{{item.unit_name || ''}}</text>
|
||||
<text v-else style="color: #999; font-size: 24rpx;">{{$t(`未开始`)}}</text>
|
||||
</view>
|
||||
<view v-if="item.coupon" class='coupon acea-row row-between-wrapper'
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
<view class="application-record" v-if="listData.length">
|
||||
<view class="card-list" v-for="item in listData" :key="item.mer_intention_id">
|
||||
<view class="card-top">
|
||||
<view class="title">{{item.mer_name}}</view>
|
||||
<view class="time">{{$t(`提交时间`)}}:{{item.create_time}}</view>
|
||||
<view v-if="item.fail_msg" class="reason">{{$t(`原因`)}}:{{item.fail_msg}}</view>
|
||||
<view class="title">{{item.mer_name || ''}}</view>
|
||||
<view class="time">{{$t(`提交时间`)}}:{{item.create_time || ''}}</view>
|
||||
<view v-if="item.fail_msg" class="reason">{{$t(`原因`)}}:{{item.fail_msg || ''}}</view>
|
||||
</view>
|
||||
<view class="line"></view>
|
||||
<view class="card-bottom">
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
{{$t(`¥`)}}
|
||||
<input v-model.number="money" class="input" name="money" type="digit" @input="inputChange" placeholder="0.00" />
|
||||
</view>
|
||||
<view v-if="payPrice && show" class="discount">{{$t(`会员优惠价`)}}:{{$t(`¥`)}}{{ payPrice }}</view>
|
||||
<view v-if="payPrice && show" class="discount">{{$t(`会员优惠价`)}}:{{$t(`¥`)}}{{ payPrice || 0 }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="radio-section">
|
||||
|
||||
@ -22,8 +22,8 @@
|
||||
<view v-for="item in memberRights" :key="item.id" class="acea-row row-middle item">
|
||||
<image class="image" :src="item.pic"></image>
|
||||
<view class="text">
|
||||
<view class="name">{{item.title}}</view>
|
||||
<view>{{item.explain}}</view>
|
||||
<view class="name">{{item.title || ''}}</view>
|
||||
<view>{{item.explain || ''}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="title">{{agreement.title}}</view>
|
||||
<view class="title">{{agreement.title || ''}}</view>
|
||||
<view class="cont" v-html="agreement.content"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@ -4,19 +4,19 @@
|
||||
<view class="acea-row row-middle">
|
||||
<image class="image" :src="userInfo.avatar"></image>
|
||||
<view class="text">
|
||||
<view class="name line1">{{userInfo.nickname}}</view>
|
||||
<view class="name line1">{{userInfo.nickname || ''}}</view>
|
||||
<view v-if="userInfo.is_ever_level">{{$t(`永久SVIP会员`)}}</view>
|
||||
<view v-else-if="userInfo.is_money_level">{{$t(`SVIP会员`)}} {{userInfo.overdue_time | dateFormat}}
|
||||
{{$t(`到期`)}}
|
||||
</view>
|
||||
<view v-else>{{$t(`您与`)}} {{userInfo.shop_name}} {{$t(`商城的第`)}} {{userInfo.register_days}}
|
||||
<view v-else>{{$t(`您与`)}} {{userInfo.shop_name || ''}} {{$t(`商城的第`)}} {{userInfo.register_days || ''}}
|
||||
{{$t(`天.`)}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="acea-row row-between-wrapper info">
|
||||
<view v-if="userInfo.is_money_level">{{$t(`已累积为您节省`)}} {{$t(`¥`)}}<text
|
||||
class="num">{{userInfo.economize_money}}</text>
|
||||
class="num">{{userInfo.economize_money || ''}}</text>
|
||||
</view>
|
||||
<view v-else>{{$t(`开通即享会员权益`)}}</view>
|
||||
<view class="btn" @click="scrollToCard" v-if="!userInfo.is_ever_level">
|
||||
|
||||
@ -1,49 +1,53 @@
|
||||
<template>
|
||||
<view v-if="shareInfoStatus" class="poster-first">
|
||||
<view class="mask-share">
|
||||
<image :src="imgHost + '/statics/images/share-info.png'" @click="shareInfoClose" @touchmove.stop.prevent="false"></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {HTTP_REQUEST_URL} from '@/config/app';
|
||||
export default {
|
||||
props: {
|
||||
shareInfoStatus: {
|
||||
type: Boolean,
|
||||
default:false,
|
||||
}
|
||||
},
|
||||
data: function() {
|
||||
return {
|
||||
imgHost:HTTP_REQUEST_URL,
|
||||
};
|
||||
},
|
||||
mounted: function() {},
|
||||
methods: {
|
||||
shareInfoClose: function() {
|
||||
this.$emit("setShareInfoStatus");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.poster-first {
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
.mask-share {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 99;
|
||||
}
|
||||
.mask-share image {
|
||||
width: 100%;
|
||||
height:100%;
|
||||
}
|
||||
<template>
|
||||
<view v-if="shareInfoStatus" class="poster-first">
|
||||
<view class="mask-share">
|
||||
<image :src="imgHost + '/statics/images/share-info.png'" @click="shareInfoClose"
|
||||
@touchmove.stop.prevent="false"></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
HTTP_REQUEST_URL
|
||||
} from '@/config/app';
|
||||
export default {
|
||||
props: {
|
||||
shareInfoStatus: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
}
|
||||
},
|
||||
data: function() {
|
||||
return {
|
||||
imgHost: HTTP_REQUEST_URL,
|
||||
};
|
||||
},
|
||||
mounted: function() {},
|
||||
methods: {
|
||||
shareInfoClose: function() {
|
||||
this.$emit("setShareInfoStatus");
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.poster-first {
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
.mask-share {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.mask-share image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<view :style="colorStyle">
|
||||
<view class='newsDetail'>
|
||||
<view class='title'>{{articleInfo.title}}</view>
|
||||
<view class='title'>{{articleInfo.title || ''}}</view>
|
||||
<view class='list acea-row row-middle'>
|
||||
<view class='label'>{{articleInfo.catename}}</view>
|
||||
<view class='item'></text>{{articleInfo.add_time}}</view>
|
||||
<view class='item'><text class='iconfont icon-liulan'></text>{{articleInfo.visit}}</view>
|
||||
<view class='label'>{{articleInfo.catename || ''}}</view>
|
||||
<view class='item'></text>{{articleInfo.add_time || ''}}</view>
|
||||
<view class='item'><text class='iconfont icon-liulan'></text>{{articleInfo.visit || ''}}</view>
|
||||
</view>
|
||||
<view class='conters'>
|
||||
<jyf-parser :html="content" ref="article" :tag-style="tagStyle"></jyf-parser>
|
||||
@ -16,11 +16,11 @@
|
||||
<image :src="store_info.image"></image>
|
||||
</view>
|
||||
<view class="text">
|
||||
<view class="name line1">{{store_info.store_name}}</view>
|
||||
<view class="name line1">{{store_info.store_name || ''}}</view>
|
||||
<view class="money font-color">
|
||||
{{$t(`¥`)}}<text class="num">{{store_info.price}}</text>
|
||||
{{$t(`¥`)}}<text class="num">{{store_info.price || 0}}</text>
|
||||
</view>
|
||||
<view class="y_money">{{$t(`¥`)}}{{store_info.ot_price}}</view>
|
||||
<view class="y_money">{{$t(`¥`)}}{{store_info.ot_price || 0}}</view>
|
||||
</view>
|
||||
<navigator class="label"><text class="span">{{$t(`查看商品`)}}</text></navigator>
|
||||
</navigator>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -256,6 +256,7 @@
|
||||
title: that.$t(`支付中`)
|
||||
});
|
||||
if (paytype == 'friend' && that.orderId) {
|
||||
uni.hideLoading();
|
||||
return uni.navigateTo({
|
||||
url: '/pages/users/payment_on_behalf/index?order_id=' + that.orderId + '&spread=' +
|
||||
this.$store.state.app.uid,
|
||||
@ -290,7 +291,6 @@
|
||||
'&spread=' +
|
||||
this
|
||||
.$store.state.app.uid
|
||||
|
||||
switch (status) {
|
||||
case 'ORDER_EXIST':
|
||||
case 'EXTEND_ORDER':
|
||||
@ -518,16 +518,16 @@
|
||||
|
||||
case 'ALIPAY_PAY':
|
||||
//#ifdef H5
|
||||
uni.hideLoading();
|
||||
that.$util.Tips({
|
||||
title: that.$t(`等待支付中`)
|
||||
}, {
|
||||
tab: 4,
|
||||
url: goPages + '&status=0'
|
||||
uni.hideLoading();
|
||||
that.$util.Tips({
|
||||
title: that.$t(`等待支付中`)
|
||||
}, {
|
||||
tab: 4,
|
||||
url: goPages + '&status=0'
|
||||
});
|
||||
that.formContent = res.data.result.jsConfig;
|
||||
setTimeout(() => {
|
||||
document.getElementById('alipaysubmit').submit();
|
||||
that.formContent = res.data.result.jsConfig;
|
||||
setTimeout(() => {
|
||||
document.getElementById('alipaysubmit').submit();
|
||||
}, 1500);
|
||||
//#endif
|
||||
// #ifdef MP
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
v-if='store_self_mention && is_shipping'></view>
|
||||
</view>
|
||||
<view class='address acea-row row-between-wrapper' @tap='onAddress' v-if='shippingType == 0'>
|
||||
<view class='addressCon' v-if="addressInfo.real_name">
|
||||
<view class='name'>{{addressInfo.real_name}}
|
||||
<text class='phone'>{{addressInfo.phone}}</text>
|
||||
<view class='addressCon' v-if="addressInfo.real_name || ''">
|
||||
<view class='name'>{{addressInfo.real_name || ''}}
|
||||
<text class='phone'>{{addressInfo.phone || ''}}</text>
|
||||
</view>
|
||||
<view class="line1">
|
||||
<text class='default font-num'
|
||||
@ -29,8 +29,8 @@
|
||||
<view class='address acea-row row-between-wrapper' v-else @tap="showStoreList">
|
||||
<block v-if="storeList.length>0">
|
||||
<view class='addressCon'>
|
||||
<view class='name'>{{system_store.name}}
|
||||
<text class='phone'>{{system_store.phone}}</text>
|
||||
<view class='name'>{{system_store.name || ''}}
|
||||
<text class='phone'>{{system_store.phone || ''}}</text>
|
||||
</view>
|
||||
<view class="line1"> {{system_store.address}}{{", " + system_store.detailed_address}}</view>
|
||||
</view>
|
||||
@ -172,7 +172,7 @@
|
||||
<view class='item acea-row row-between-wrapper'>
|
||||
<view>{{$t(`商品总价`)}}:</view>
|
||||
<view class='money'>
|
||||
{{$t(`¥`)}}{{totalPriceAll || ''}}
|
||||
{{$t(`¥`)}}{{allPrice || 0}}
|
||||
</view>
|
||||
</view>
|
||||
<view class='item acea-row row-between-wrapper'
|
||||
@ -388,7 +388,6 @@
|
||||
priceGroup: {},
|
||||
animated: false,
|
||||
totalPrice: 0,
|
||||
totalPriceAll: 0,
|
||||
integralRatio: "0",
|
||||
pagesUrl: "",
|
||||
orderKey: "",
|
||||
@ -823,7 +822,6 @@
|
||||
that.$set(that, 'store_self_mention', res.data.store_self_mention);
|
||||
that.$set(that, 'virtual_type', res.data.virtual_type || 0);
|
||||
that.$set(that, 'integral_open', res.data.integral_open);
|
||||
this.totalPriceAll= (parseFloat(res.data.priceGroup.totalPrice) + parseFloat(res.data.priceGroup.vipPrice)).toFixed(2)
|
||||
uni.hideLoading()
|
||||
//微信支付是否开启
|
||||
that.cartArr[0].payStatus = res.data.pay_weixin_open || 0
|
||||
|
||||
@ -146,7 +146,7 @@
|
||||
<image src="../static/shuoming.png" mode=""></image>
|
||||
{{$t(`拒绝退款`)}}
|
||||
</view>
|
||||
<view class="con">{{$t(`拒绝原因`)}}:{{orderInfo.refuse_reason}}</view>
|
||||
<view class="con">{{$t(`拒绝原因`)}}:{{orderInfo.refuse_reason || ''}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<orderGoods v-for="(item,index) in split" :key="item.id" :evaluate='item._status._type == 3 ? 3 : 0'
|
||||
|
||||
@ -1,298 +1,307 @@
|
||||
<template>
|
||||
<view :style="colorStyle">
|
||||
<form @submit="subRefund">
|
||||
<view class='apply-return'>
|
||||
<view class='goodsStyle acea-row row-between' v-for="(item,index) in orderInfo.cart_info" :key="index">
|
||||
<view class='pictrue'>
|
||||
<image :src='item.productInfo.attrInfo?item.productInfo.attrInfo.image:item.productInfo.image'></image>
|
||||
</view>
|
||||
<view class='text acea-row row-between'>
|
||||
<view class='name line2'>{{item.productInfo.store_name}}</view>
|
||||
<view class='money'>
|
||||
<view>{{$t(`¥`)}}{{item.truePrice}}</view>
|
||||
<view class='num'>x{{item.cart_num}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='list'>
|
||||
<view class='item acea-row row-between-wrapper' v-if="expressList.length">
|
||||
<view>{{$t(`快递公司`)}}</view>
|
||||
<picker class='num' @change="bindPickerChange" :value="seIndex" :range="expressList" range-key="name">
|
||||
<view class="picker acea-row row-between-wrapper">
|
||||
<view class='reason'>{{expressList[seIndex].name}}</view>
|
||||
<text class='iconfont icon-jiantou'></text>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class='item acea-row row-between-wrapper'>
|
||||
<view>{{$t(`快递单号`)}}</view>
|
||||
<input class="input" type="text" :placeholder="$t(`填写快递单号`)" placeholder-class='placeholder' v-model="refundInfo.refund_express" />
|
||||
</view>
|
||||
<view class='item acea-row row-between-wrapper'>
|
||||
<view>{{$t(`联系电话`)}}</view>
|
||||
<input class="input" type="number" :placeholder="$t(`请输入手机号`)" placeholder-class='placeholder' v-model="refundInfo.refund_phone" />
|
||||
</view>
|
||||
<view class='item textarea acea-row row-between'>
|
||||
<view>{{$t(`备注说明`)}}</view>
|
||||
<textarea :placeholder='$t(`填写备注信息,100字以内`)' class='num' v-model="refundInfo.refund_explain"></textarea>
|
||||
</view>
|
||||
<view class='item acea-row row-between'>
|
||||
<view class='title acea-row row-between-wrapper'>
|
||||
<view>{{$t(`上传图片`)}}</view>
|
||||
<view class='tip'>{{$t(`最多可上传3张`)}}</view>
|
||||
</view>
|
||||
<view class='upload acea-row row-middle'>
|
||||
<view class='pictrue' v-for="(item,index) in refund_reason_wap_img" :key="index">
|
||||
<image :src='item'></image>
|
||||
<view class='iconfont icon-guanbi1 font-num' @tap='DelPic(index)'></view>
|
||||
</view>
|
||||
<view class='pictrue acea-row row-center-wrapper row-column' @tap='uploadpic'
|
||||
v-if="refund_reason_wap_img.length < 3">
|
||||
<text class='iconfont icon-icon25201'></text>
|
||||
<view>{{$t(`上传图片`)}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<button class='returnBnt bg-color' form-type="submit">{{$t(`提交`)}}</button>
|
||||
</view>
|
||||
</form>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import { refundOrderDetail, refundExpress } from '@/api/order.js';
|
||||
import {
|
||||
toLogin
|
||||
} from '@/libs/login.js';
|
||||
import {
|
||||
mapGetters
|
||||
} from "vuex";
|
||||
import colors from '@/mixins/color.js';
|
||||
export default {
|
||||
mixins: [colors],
|
||||
data() {
|
||||
return {
|
||||
expressList:[],
|
||||
orderInfo:{},
|
||||
seIndex: 0,
|
||||
refund_reason_wap_img: [],
|
||||
refundInfo:{
|
||||
refund_express:'',
|
||||
refund_phone:'',
|
||||
refund_explain:'',
|
||||
id:'',
|
||||
refund_express_name:'',
|
||||
refund_img:''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: mapGetters(['isLogin']),
|
||||
watch: {
|
||||
isLogin: {
|
||||
handler: function(newV, oldV) {
|
||||
if (newV) {
|
||||
this.getOrderInfo();
|
||||
}
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
this.orderId = options.orderId;
|
||||
if (this.isLogin) {
|
||||
this.getOrderInfo();
|
||||
} else {
|
||||
toLogin();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 申请退货
|
||||
*/
|
||||
subRefund: function(e) {
|
||||
let that = this
|
||||
if (!that.refundInfo.refund_express) return this.$util.Tips({
|
||||
title: that.$t(`填写快递单号`)
|
||||
});
|
||||
if (!that.refundInfo.refund_phone) return this.$util.Tips({
|
||||
title: that.$t(`请输入手机号`)
|
||||
});
|
||||
if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.refundInfo.refund_phone)) return this.$util.Tips({
|
||||
title: that.$t(`请输入正确的手机号码`)
|
||||
});
|
||||
that.refundInfo.refund_express_name = that.expressList[that.seIndex].name;
|
||||
that.refundInfo.refund_img = that.refund_reason_wap_img.join(',');
|
||||
refundExpress(that.refundInfo).then(res => {
|
||||
return this.$util.Tips({
|
||||
title: res.msg,
|
||||
icon: 'success'
|
||||
}, {
|
||||
tab: 5,
|
||||
url: '/pages/users/user_return_list/index?isT=1'
|
||||
});
|
||||
}).catch(err => {
|
||||
return this.$util.Tips({
|
||||
title: err
|
||||
});
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 删除图片
|
||||
*
|
||||
*/
|
||||
DelPic: function(e) {
|
||||
let index = e,
|
||||
that = this,
|
||||
pic = this.refund_reason_wap_img[index];
|
||||
that.refund_reason_wap_img.splice(index, 1);
|
||||
that.$set(that, 'refund_reason_wap_img', that.refund_reason_wap_img);
|
||||
},
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*
|
||||
*/
|
||||
uploadpic: function() {
|
||||
let that = this;
|
||||
this.$util.uploadImageOne('upload/image', function(res) {
|
||||
that.refund_reason_wap_img.push(res.data.url);
|
||||
that.$set(that, 'refund_reason_wap_img', that.refund_reason_wap_img);
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 获取订单详情
|
||||
*
|
||||
*/
|
||||
getOrderInfo: function() {
|
||||
let that = this;
|
||||
refundOrderDetail(that.orderId).then(res => {
|
||||
that.$set(that, 'orderInfo', res.data);
|
||||
that.expressList = res.data.express_list;
|
||||
that.refundInfo.id = res.data.id;
|
||||
});
|
||||
},
|
||||
bindPickerChange(e) {
|
||||
this.$set(this, 'seIndex', e.detail.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.apply-return .list {
|
||||
background-color: #fff;
|
||||
margin-top: 18rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item {
|
||||
margin-left: 30rpx;
|
||||
padding-right: 30rpx;
|
||||
min-height: 90rpx;
|
||||
border-bottom: 1rpx solid #eee;
|
||||
font-size: 30rpx;
|
||||
color: #333;
|
||||
.input{
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.apply-return .list .item .num {
|
||||
color: #282828;
|
||||
width: 427rpx;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.apply-return .list .item .num .picker .reason {
|
||||
width: 385rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .num .picker .iconfont {
|
||||
color: #666;
|
||||
font-size: 30rpx;
|
||||
margin-top: 2rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item.textarea {
|
||||
padding: 30rpx 30rpx 30rpx 0;
|
||||
}
|
||||
|
||||
.apply-return .list .item textarea {
|
||||
height: 100rpx;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .placeholder {
|
||||
color: #bbb;
|
||||
font-size: 30rpx;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.apply-return .list .item .title {
|
||||
height: 95rpx;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.apply-return .list .item .title .tip {
|
||||
font-size: 30rpx;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload {
|
||||
padding-bottom: 36rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue {
|
||||
margin: 22rpx 23rpx 0 0;
|
||||
width: 156rpx;
|
||||
height: 156rpx;
|
||||
position: relative;
|
||||
font-size: 24rpx;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue:nth-of-type(4n) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 3rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue .icon-guanbi1 {
|
||||
position: absolute;
|
||||
font-size: 45rpx;
|
||||
top: -10rpx;
|
||||
right: -10rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue .icon-icon25201 {
|
||||
color: #bfbfbf;
|
||||
font-size: 50rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue:nth-last-child(1) {
|
||||
border: 1rpx solid #ddd;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.apply-return .returnBnt {
|
||||
font-size: 32rpx;
|
||||
color: #fff;
|
||||
width: 690rpx;
|
||||
height: 86rpx;
|
||||
border-radius: 50rpx;
|
||||
text-align: center;
|
||||
line-height: 86rpx;
|
||||
margin: 43rpx auto;
|
||||
}
|
||||
|
||||
.goodsStyle .text .name {
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
.list /deep/ .uni-input-input {
|
||||
text-align: right;
|
||||
}
|
||||
<template>
|
||||
<view :style="colorStyle">
|
||||
<form @submit="subRefund">
|
||||
<view class='apply-return'>
|
||||
<view class='goodsStyle acea-row row-between' v-for="(item,index) in orderInfo.cart_info" :key="index">
|
||||
<view class='pictrue'>
|
||||
<image :src='item.productInfo.attrInfo?item.productInfo.attrInfo.image:item.productInfo.image'>
|
||||
</image>
|
||||
</view>
|
||||
<view class='text acea-row row-between'>
|
||||
<view class='name line2'>{{item.productInfo.store_name}}</view>
|
||||
<view class='money'>
|
||||
<view>{{$t(`¥`)}}{{item.truePrice }}</view>
|
||||
<view class='num'>x{{item.cart_num }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='list'>
|
||||
<view class='item acea-row row-between-wrapper' v-if="expressList.length">
|
||||
<view>{{$t(`快递公司`)}}</view>
|
||||
<picker class='num' @change="bindPickerChange" :value="seIndex" :range="expressList"
|
||||
range-key="name">
|
||||
<view class="picker acea-row row-between-wrapper">
|
||||
<view class='reason'>{{expressList[seIndex].name}}</view>
|
||||
<text class='iconfont icon-jiantou'></text>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class='item acea-row row-between-wrapper'>
|
||||
<view>{{$t(`快递单号`)}}</view>
|
||||
<input class="input" type="text" :placeholder="$t(`填写快递单号`)" placeholder-class='placeholder'
|
||||
v-model="refundInfo.refund_express" />
|
||||
</view>
|
||||
<view class='item acea-row row-between-wrapper'>
|
||||
<view>{{$t(`联系电话`)}}</view>
|
||||
<input class="input" type="number" :placeholder="$t(`请输入手机号`)" placeholder-class='placeholder'
|
||||
v-model="refundInfo.refund_phone" />
|
||||
</view>
|
||||
<view class='item textarea acea-row row-between'>
|
||||
<view>{{$t(`备注说明`)}}</view>
|
||||
<textarea :placeholder='$t(`填写备注信息,100字以内`)' class='num'
|
||||
v-model="refundInfo.refund_explain"></textarea>
|
||||
</view>
|
||||
<view class='item acea-row row-between'>
|
||||
<view class='title acea-row row-between-wrapper'>
|
||||
<view>{{$t(`上传图片`)}}</view>
|
||||
<view class='tip'>{{$t(`最多可上传3张`)}}</view>
|
||||
</view>
|
||||
<view class='upload acea-row row-middle'>
|
||||
<view class='pictrue' v-for="(item,index) in refund_reason_wap_img" :key="index">
|
||||
<image :src='item'></image>
|
||||
<view class='iconfont icon-guanbi1 font-num' @tap='DelPic(index)'></view>
|
||||
</view>
|
||||
<view class='pictrue acea-row row-center-wrapper row-column' @tap='uploadpic'
|
||||
v-if="refund_reason_wap_img.length < 3">
|
||||
<text class='iconfont icon-icon25201'></text>
|
||||
<view>{{$t(`上传图片`)}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<button class='returnBnt bg-color' form-type="submit">{{$t(`提交`)}}</button>
|
||||
</view>
|
||||
</form>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
refundOrderDetail,
|
||||
refundExpress
|
||||
} from '@/api/order.js';
|
||||
import {
|
||||
toLogin
|
||||
} from '@/libs/login.js';
|
||||
import {
|
||||
mapGetters
|
||||
} from "vuex";
|
||||
import colors from '@/mixins/color.js';
|
||||
export default {
|
||||
mixins: [colors],
|
||||
data() {
|
||||
return {
|
||||
expressList: [],
|
||||
orderInfo: {},
|
||||
seIndex: 0,
|
||||
refund_reason_wap_img: [],
|
||||
refundInfo: {
|
||||
refund_express: '',
|
||||
refund_phone: '',
|
||||
refund_explain: '',
|
||||
id: '',
|
||||
refund_express_name: '',
|
||||
refund_img: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: mapGetters(['isLogin']),
|
||||
watch: {
|
||||
isLogin: {
|
||||
handler: function(newV, oldV) {
|
||||
if (newV) {
|
||||
this.getOrderInfo();
|
||||
}
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
this.orderId = options.orderId;
|
||||
if (this.isLogin) {
|
||||
this.getOrderInfo();
|
||||
} else {
|
||||
toLogin();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 申请退货
|
||||
*/
|
||||
subRefund: function(e) {
|
||||
let that = this
|
||||
if (!that.refundInfo.refund_express) return this.$util.Tips({
|
||||
title: that.$t(`填写快递单号`)
|
||||
});
|
||||
if (!that.refundInfo.refund_phone) return this.$util.Tips({
|
||||
title: that.$t(`请输入手机号`)
|
||||
});
|
||||
if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.refundInfo.refund_phone)) return this.$util.Tips({
|
||||
title: that.$t(`请输入正确的手机号码`)
|
||||
});
|
||||
that.refundInfo.refund_express_name = that.expressList[that.seIndex].name;
|
||||
that.refundInfo.refund_img = that.refund_reason_wap_img.join(',');
|
||||
refundExpress(that.refundInfo).then(res => {
|
||||
return this.$util.Tips({
|
||||
title: res.msg,
|
||||
icon: 'success'
|
||||
}, {
|
||||
tab: 5,
|
||||
url: '/pages/users/user_return_list/index?isT=1'
|
||||
});
|
||||
}).catch(err => {
|
||||
return this.$util.Tips({
|
||||
title: err
|
||||
});
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 删除图片
|
||||
*
|
||||
*/
|
||||
DelPic: function(e) {
|
||||
let index = e,
|
||||
that = this,
|
||||
pic = this.refund_reason_wap_img[index];
|
||||
that.refund_reason_wap_img.splice(index, 1);
|
||||
that.$set(that, 'refund_reason_wap_img', that.refund_reason_wap_img);
|
||||
},
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*
|
||||
*/
|
||||
uploadpic: function() {
|
||||
let that = this;
|
||||
this.$util.uploadImageOne('upload/image', function(res) {
|
||||
that.refund_reason_wap_img.push(res.data.url);
|
||||
that.$set(that, 'refund_reason_wap_img', that.refund_reason_wap_img);
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 获取订单详情
|
||||
*
|
||||
*/
|
||||
getOrderInfo: function() {
|
||||
let that = this;
|
||||
refundOrderDetail(that.orderId).then(res => {
|
||||
that.$set(that, 'orderInfo', res.data);
|
||||
that.expressList = res.data.express_list;
|
||||
that.refundInfo.id = res.data.id;
|
||||
});
|
||||
},
|
||||
bindPickerChange(e) {
|
||||
this.$set(this, 'seIndex', e.detail.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.apply-return .list {
|
||||
background-color: #fff;
|
||||
margin-top: 18rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item {
|
||||
margin-left: 30rpx;
|
||||
padding-right: 30rpx;
|
||||
min-height: 90rpx;
|
||||
border-bottom: 1rpx solid #eee;
|
||||
font-size: 30rpx;
|
||||
color: #333;
|
||||
|
||||
.input {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.apply-return .list .item .num {
|
||||
color: #282828;
|
||||
width: 427rpx;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.apply-return .list .item .num .picker .reason {
|
||||
width: 385rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .num .picker .iconfont {
|
||||
color: #666;
|
||||
font-size: 30rpx;
|
||||
margin-top: 2rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item.textarea {
|
||||
padding: 30rpx 30rpx 30rpx 0;
|
||||
}
|
||||
|
||||
.apply-return .list .item textarea {
|
||||
height: 100rpx;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .placeholder {
|
||||
color: #bbb;
|
||||
font-size: 30rpx;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.apply-return .list .item .title {
|
||||
height: 95rpx;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.apply-return .list .item .title .tip {
|
||||
font-size: 30rpx;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload {
|
||||
padding-bottom: 36rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue {
|
||||
margin: 22rpx 23rpx 0 0;
|
||||
width: 156rpx;
|
||||
height: 156rpx;
|
||||
position: relative;
|
||||
font-size: 24rpx;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue:nth-of-type(4n) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 3rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue .icon-guanbi1 {
|
||||
position: absolute;
|
||||
font-size: 45rpx;
|
||||
top: -10rpx;
|
||||
right: -10rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue .icon-icon25201 {
|
||||
color: #bfbfbf;
|
||||
font-size: 50rpx;
|
||||
}
|
||||
|
||||
.apply-return .list .item .upload .pictrue:nth-last-child(1) {
|
||||
border: 1rpx solid #ddd;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.apply-return .returnBnt {
|
||||
font-size: 32rpx;
|
||||
color: #fff;
|
||||
width: 690rpx;
|
||||
height: 86rpx;
|
||||
border-radius: 50rpx;
|
||||
text-align: center;
|
||||
line-height: 86rpx;
|
||||
margin: 43rpx auto;
|
||||
}
|
||||
|
||||
.goodsStyle .text .name {
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
.list /deep/ .uni-input-input {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
</view>
|
||||
<view class="iconfont icon-fenxiang" @click="listenerActionSheet"></view>
|
||||
</view>
|
||||
<view class="introduce" v-text="storeInfo.store_name"></view>
|
||||
<view class="introduce" v-text="storeInfo.store_name || ''"></view>
|
||||
<view class="limit_good" v-if="storeInfo.limit_type > 0">
|
||||
{{storeInfo.limit_type == 1 ? $t(`单次限购`) : $t(`永久限购`)}}{{storeInfo.limit_num}}{{$t(storeInfo.unit_name)}}
|
||||
</view>
|
||||
|
||||
@ -227,7 +227,9 @@
|
||||
}
|
||||
},
|
||||
onReachBottom: function() {
|
||||
this.userSpreadNewList();
|
||||
if (this.teamCount > this.recordList.length) {
|
||||
this.userSpreadNewList();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -370,7 +372,7 @@
|
||||
.no-data {
|
||||
background-color: #fff;
|
||||
padding-bottom: 30rpx;
|
||||
padding: 180rpx 0 300rpx;
|
||||
padding: 180rpx 0 calc(100vh - 1030rpx);
|
||||
|
||||
.emptyBox {
|
||||
text-align: center;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user