web-africa-h5/pages/market/activity-zone/order-gift.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>