399 lines
9.9 KiB
Vue
399 lines
9.9 KiB
Vue
|
<template>
|
||
|
<view class="pb20">
|
||
|
<!-- 收货人信息 -->
|
||
|
<view class="form-title d-b-c">
|
||
|
<text>
|
||
|
<!-- 收货人信息 -->
|
||
|
{{$t('w_0065')}}
|
||
|
</text>
|
||
|
</view>
|
||
|
<view class="prefecture form-group mb20">
|
||
|
<view class="form-item">
|
||
|
<view class="form-label">
|
||
|
<text class="domation mr10">*</text>
|
||
|
<!-- 收货人 -->
|
||
|
{{$t('MY_ORD_10')}}
|
||
|
</view>
|
||
|
<input class="form-input" type="text" v-model="form.recName" placeholder="" />
|
||
|
</view>
|
||
|
<view class="form-item">
|
||
|
<view class="form-label">
|
||
|
<text class="domation mr10">*</text>
|
||
|
<!-- 联系方式 -->
|
||
|
{{$t('w_0052')}}
|
||
|
</view>
|
||
|
<input class="form-input" type="text" v-model="form.recPhone" placeholder="" />
|
||
|
</view>
|
||
|
<view class="form-item">
|
||
|
<view class="form-label">
|
||
|
<text class="domation mr10">*</text>
|
||
|
<!-- 收货地址 -->
|
||
|
{{$t('w_0068')}}
|
||
|
</view>
|
||
|
<input class="form-input" disabled type="text" v-model="form.diqu" placeholder=""
|
||
|
@click="showAddPicker" />
|
||
|
<text class="icon iconfont icon-jiantou"></text>
|
||
|
</view>
|
||
|
<view class="form-item">
|
||
|
<view class="form-label">
|
||
|
<text class="domation mr10">*</text>
|
||
|
<!-- 详细地址 -->
|
||
|
{{$t('S_C_27')}}
|
||
|
</view>
|
||
|
<textarea auto-height class="form-textarea" v-model="form.recAddress" placeholder="" />
|
||
|
</view>
|
||
|
<view class="form-item">
|
||
|
<view class="form-label">
|
||
|
<text class="domation mr10">*</text>
|
||
|
<!-- 邮费 -->
|
||
|
{{$t('w_0071')}}
|
||
|
</view>
|
||
|
<input class="form-input" disabled type="text" :value="formatNum(form.postage)" />
|
||
|
</view>
|
||
|
<view class="form-item">
|
||
|
<view class="form-label">
|
||
|
<text class="domation mr10">*</text>
|
||
|
<!-- 备注 -->
|
||
|
{{$t('MY_WAL_22')}}
|
||
|
</view>
|
||
|
<textarea auto-height class="form-textarea" v-model="form.remark" placeholder="" />
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="product-box">
|
||
|
<view class="product-title">
|
||
|
<!-- 商品信息 -->
|
||
|
{{$t('w_0077')}}
|
||
|
</view>
|
||
|
<view class="product-list order-product">
|
||
|
<view v-for="(item, index) in detail.pgpList" :key="index" class="product-item">
|
||
|
<view class="d-b-s mb20">
|
||
|
<image class="product-img" :src="item.cover1 || item.cover" mode=""></image>
|
||
|
<view class="product-info d-c d-b-s flex-1">
|
||
|
<view class="text-ellipsis-2 f28 gray3">{{ item.waresName || item.productName }}</view>
|
||
|
<view v-if="item.waresSkuList" class="f22 gray6">{{item.waresSkuList[0].specValueNames}}
|
||
|
</view>
|
||
|
<view class="price-color f24">
|
||
|
{{currencyIcon()}}
|
||
|
<text class="f32 fb">{{ formatNum(item.price || item.waresPrice) }}</text>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="f24 gray9 ml20">X{{ item.quantity }}</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="ww100 pt30">
|
||
|
<view class="d-b-c mb20">
|
||
|
<view class="flex-1 f26 gray9">{{$t('w_0083')}}</view>
|
||
|
<view class="f26 gray3">{{currencyIcon()}}{{ formatNum(detail.price) }}</view>
|
||
|
</view>
|
||
|
<!-- <view class="d-b-c mb20">
|
||
|
<view class="flex-1 f26 gray9">{{$t('w_0071')}}</view>
|
||
|
<view class="f26 gray3">{{currencyIcon()}}{{ formatNum(form.postage) || '0.00' }}</view>
|
||
|
</view> -->
|
||
|
<!-- <view class="d-b-c mb20">
|
||
|
<view class="flex-1 f26 gray9">复购券抵扣</view>
|
||
|
<view class="f26 gray3">{{currencyIcon()}}1400</view>
|
||
|
</view> -->
|
||
|
<!-- <view class="d-b-c mb20">
|
||
|
<view class="flex-1 f26 gray9">总价</view>
|
||
|
<view class="f26 gray3">{{currencyIcon()}}{{form.priceAmount}}</view>
|
||
|
</view> -->
|
||
|
<!-- <view class="d-b-c mb20">
|
||
|
<view class="flex-1 f26 gray9">{{$t('ENU_TOTAL_V_1')}}</view>
|
||
|
<view class="f26 gray3">{{currencyIcon()}}{{ formatNum(form.achieveAmount) }}</view>
|
||
|
</view> -->
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<button class="normal-sub-btn" style="margin-top: 37rpx;" @click="subFunc">{{$t('w_0085')}}</button>
|
||
|
<mpvue-city-picker v-if="is_load" ref="mpvueCityPicker" :province="province"
|
||
|
:pickerValueDefault="cityPickerValueDefault" @onConfirm="onConfirm"></mpvue-city-picker>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue';
|
||
|
export default {
|
||
|
components: {
|
||
|
mpvueCityPicker
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
detail: {},
|
||
|
province: [],
|
||
|
is_load: false,
|
||
|
cityPickerValueDefault: [0, 0, 0],
|
||
|
form: {
|
||
|
deliveryName: "快递发货",
|
||
|
deliveryWay: 1,
|
||
|
diqu: "",
|
||
|
pkGradeVal: "",
|
||
|
pkNewPeople: 0,
|
||
|
postPrice: 0,
|
||
|
postage: "0.00",
|
||
|
recAddress: "",
|
||
|
recCity: 35,
|
||
|
recCounty: 37,
|
||
|
recName: "",
|
||
|
recPhone: "",
|
||
|
recProvince: 1,
|
||
|
specialArea: 9,
|
||
|
transType: 1
|
||
|
},
|
||
|
specialArea: 9
|
||
|
}
|
||
|
},
|
||
|
onLoad(e) {
|
||
|
if (e.data) {
|
||
|
this.detail = JSON.parse(decodeURIComponent(e.data));
|
||
|
this.form.pkNewPeople = this.detail.pkNewPeople;
|
||
|
console.log(this.detail)
|
||
|
}
|
||
|
this.getInfo();
|
||
|
},
|
||
|
onShow() {
|
||
|
this.getGenerate();
|
||
|
},
|
||
|
methods: {
|
||
|
/* 生成token */
|
||
|
getGenerate() {
|
||
|
let self = this;
|
||
|
self._get('system/api/idempotent/generate', {}, res => {
|
||
|
uni.setStorageSync('token', res.msg);
|
||
|
});
|
||
|
},
|
||
|
subFunc(){
|
||
|
let self =this;
|
||
|
let params = this.form;
|
||
|
let flag = false;
|
||
|
let values = [];
|
||
|
values.push({
|
||
|
name: this.$t('w_0067'),
|
||
|
value: 'recName',
|
||
|
callback: function(e) {
|
||
|
return e != '';
|
||
|
}
|
||
|
}, {
|
||
|
name: this.$t('w_0053'),
|
||
|
value: 'recPhone',
|
||
|
callback: function(e) {
|
||
|
return e != '';
|
||
|
}
|
||
|
}, {
|
||
|
name: this.$t('w_0070'),
|
||
|
value: 'recAddress',
|
||
|
callback: function(e) {
|
||
|
return e.length != '';
|
||
|
}
|
||
|
}, {
|
||
|
name: this.$t('w_0069'),
|
||
|
value: 'diqu',
|
||
|
callback: function(e) {
|
||
|
return e.length != '';
|
||
|
}
|
||
|
});
|
||
|
values.forEach((item, index) => {
|
||
|
if (!flag && !item.callback(params[item.value])) {
|
||
|
flag = item.name;
|
||
|
return;
|
||
|
}
|
||
|
});
|
||
|
if (flag) {
|
||
|
uni.showToast({
|
||
|
title: flag,
|
||
|
duration: 1000,
|
||
|
icon: 'none'
|
||
|
});
|
||
|
return false;
|
||
|
}
|
||
|
self._post('sale/api/order/confirm-gift-order',params,res=>{
|
||
|
self.gotoPage('/pages/order/cashier?pkSettleCountry=1&specialArea=9&orderCode='+res.data.orderCode)
|
||
|
})
|
||
|
},
|
||
|
/* 查询邮费 */
|
||
|
selfOrderPostage() {
|
||
|
let self = this;
|
||
|
self._post(
|
||
|
'sale/api/order/self-order-postage', {
|
||
|
specialArea: self.specialArea,
|
||
|
pkNewPeople: self.detail.pkNewPeople
|
||
|
},
|
||
|
res => {
|
||
|
self.form.postage = res.data.postage;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
showAddPicker() {
|
||
|
this.$refs.mpvueCityPicker.show();
|
||
|
},
|
||
|
getInfo() {
|
||
|
let self = this;
|
||
|
self._get('member/api/member/get-info', {}, res => {
|
||
|
self.userCountry = res.data.pkSettleCountry;
|
||
|
self.getAreaData();
|
||
|
})
|
||
|
},
|
||
|
// 获取省市区
|
||
|
getAreaData() {
|
||
|
let self = this;
|
||
|
self._get('system/api/area/tree', {
|
||
|
pkCountry: self.userCountry
|
||
|
}, function(res) {
|
||
|
self.province = res.data;
|
||
|
self.is_load = true;
|
||
|
});
|
||
|
},
|
||
|
/*三级联动选择*/
|
||
|
showMulLinkageThreePicker() {
|
||
|
this.$refs.mpvueCityPicker.show();
|
||
|
},
|
||
|
|
||
|
/*确定选择的省市区*/
|
||
|
onConfirm(e) {
|
||
|
let self = this;
|
||
|
self.form['recProvince'] = e.cityCode[0]*1;
|
||
|
self.form['recCity'] = e.cityCode[1]*1;
|
||
|
self.form['recCounty'] = e.cityCode[2]*1;
|
||
|
self.form.diqu = self.getAddName();
|
||
|
self.selfOrderPostage();
|
||
|
},
|
||
|
getAddName: function() {
|
||
|
let self = this;
|
||
|
let pid = 0;
|
||
|
let cid = 0;
|
||
|
let aid = 0;
|
||
|
let defaultValue = [0, 0, 0];
|
||
|
pid = self.form['recProvince'];
|
||
|
cid = self.form['recCity'];
|
||
|
aid = self.form['recCounty'];
|
||
|
defaultValue = self.cityPickerValueDefault;
|
||
|
let address = self.getAddressName(pid, cid, aid, defaultValue);
|
||
|
return address;
|
||
|
},
|
||
|
|
||
|
/* 省市区回显 */
|
||
|
getAddressName(pid, cid, aid, piker) {
|
||
|
let self = this;
|
||
|
/* 省市区列表 */
|
||
|
if (!self.province) {
|
||
|
return;
|
||
|
}
|
||
|
let add = '';
|
||
|
let citydata = [];
|
||
|
let areadata = [];
|
||
|
self.province.forEach((item, index) => {
|
||
|
if (item['id'] == pid) {
|
||
|
add += item['name']+'-';
|
||
|
citydata = item['children'];
|
||
|
piker[0] = index;
|
||
|
citydata.forEach((citem, cindex) => {
|
||
|
if (citem['id'] == cid) {
|
||
|
add += citem['name']+'-';
|
||
|
areadata = citem['children'] ? citem['children'] : [];
|
||
|
piker[1] = cindex;
|
||
|
if (areadata) {
|
||
|
areadata.forEach((aitem, aindex) => {
|
||
|
if (aitem['id'] == aid) {
|
||
|
add += aitem['name'];
|
||
|
piker[2] = aindex;
|
||
|
return;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
return add;
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss">
|
||
|
.product-box {
|
||
|
padding: 26rpx 18rpx 36rpx 20rpx;
|
||
|
background: #ffffff;
|
||
|
margin-bottom: 20rpx;
|
||
|
|
||
|
.product-title {
|
||
|
font-size: 28rpx;
|
||
|
color: #333;
|
||
|
margin-bottom: 5rpx;
|
||
|
font-weight: bold;
|
||
|
border-bottom: 1rpx solid #eee;
|
||
|
padding-bottom: 28rpx;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.form-title {
|
||
|
width: 750rpx;
|
||
|
height: 106rpx;
|
||
|
background: #fb3024;
|
||
|
padding-left: 44rpx;
|
||
|
padding-right: 25rpx;
|
||
|
position: relative;
|
||
|
box-sizing: border-box;
|
||
|
font-size: 28rpx;
|
||
|
color: #ffffff;
|
||
|
line-height: 106rpx;
|
||
|
font-weight: bold;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
|
||
|
.form-title.redtitle {
|
||
|
width: 750rpx;
|
||
|
height: 106rpx;
|
||
|
background: #fb3024;
|
||
|
padding-left: 44rpx;
|
||
|
position: relative;
|
||
|
box-sizing: border-box;
|
||
|
font-size: 28rpx;
|
||
|
color: #fff;
|
||
|
line-height: 106rpx;
|
||
|
font-weight: bold;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
|
||
|
.form-title::before {
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
bottom: 0;
|
||
|
margin: auto;
|
||
|
left: 25rpx;
|
||
|
width: 6rpx;
|
||
|
height: 24rpx;
|
||
|
background-color: #fb3024;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
|
||
|
.redtitle.form-title::before {
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
bottom: 0;
|
||
|
margin: auto;
|
||
|
left: 25rpx;
|
||
|
width: 6rpx;
|
||
|
height: 24rpx;
|
||
|
background-color: #fff;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
|
||
|
.radio-check {
|
||
|
width: 34rpx;
|
||
|
height: 34rpx;
|
||
|
background: #ffffff;
|
||
|
border: 1rpx solid #dddddd;
|
||
|
border-radius: 50%;
|
||
|
box-sizing: border;
|
||
|
position: relative;
|
||
|
margin-right: 20rpx;
|
||
|
flex-shrink: 0;
|
||
|
}
|
||
|
|
||
|
.radio-check.checked {
|
||
|
border: 1rpx solid #fb3024;
|
||
|
background: #fb3024;
|
||
|
}
|
||
|
</style>
|