增加下单类型选择

master
gongfuxiang 2024-11-14 09:32:06 +08:00
parent 079df99f63
commit 4bb66f73d9
10 changed files with 182 additions and 68 deletions

View File

@ -366,6 +366,10 @@
.padding-xxxxl {
padding: 56rpx;
}
.padding-top-0 {
padding-top: 0 !important;
}
.padding-top-xsss {
padding-top: 2rpx;
@ -407,6 +411,10 @@
.padding-top-xxxxl {
padding-top: 56rpx;
}
.padding-right-0 {
padding-right: 0 !important;
}
.padding-right-xsss {
padding-right: 2rpx;
@ -447,6 +455,10 @@
.padding-right-xxxxl {
padding-right: 56rpx;
}
.padding-left-0 {
padding-left: 0 !important;
}
.padding-left-xsss {
@ -488,6 +500,10 @@
.padding-left-xxxxl {
padding-left: 56rpx;
}
.padding-bottom-0 {
padding-bottom: 0 !important;
}
.padding-bottom-xsss {

View File

@ -672,7 +672,8 @@ button[disabled].bg-grey {
}
.form-container .form-gorup input,
.form-container .form-gorup textarea,
.form-container .form-gorup .picker {
.form-container .form-gorup .picker,
.form-container .form-gorup .form-gorup-value {
border-radius: 0;
width: 100%;
box-sizing: border-box;
@ -680,7 +681,8 @@ button[disabled].bg-grey {
}
.form-container .form-gorup input,
.form-container .form-gorup .picker,
.form-container .form-gorup .radio-gorup {
.form-container .form-gorup .radio-gorup,
.form-container .form-gorup .form-gorup-value {
height: 70rpx;
line-height: 70rpx;
}
@ -701,6 +703,15 @@ button[disabled].bg-grey {
.form-container .form-gorup .radio-gorup .radio:not(:last-child) {
margin-right: 50rpx;
}
.form-container .form-gorup.row {
display: flex;
flex-direction: row;
align-items: center;
width: 100%;
}
.form-container .form-gorup.row .form-gorup-title {
width: 180rpx;
}
/**
*

View File

@ -337,7 +337,8 @@
// #endif
//
uni.showLoading({
title: this.$t('payment.payment.e1f54e'),
title: this.$t('payment.payment.e1f54e'),
mask: true
});
if (this.propPayUrl) {
uni.request({
@ -425,8 +426,8 @@
}
},
fail: (res) => {
uni.hideLoading();
this.order_item_pay_fail_handle(res.data.data, order_id, this.$t('common.internet_error_tips'));
uni.hideLoading();
app.globalData.showToast(this.$t('common.internet_error_tips'));
},
});
} else {

View File

@ -439,14 +439,15 @@
"553mxo": "Please select a coupon",
"80y7sv": "Deduction",
"2rhko1": "Leave a message",
"6424jr": "Express mailing",
"8787ev": "Self pickup point pickup",
"718tux": "Enter my order",
"p7e91u": "Incorrect product info",
"4is2ak": "Enter store order",
"s7rr5s": "time",
"1fi842": "Select time",
"q8u066": "Please select a time",
"df3raf": "My Name",
"hjwerf": "My Phone",
"8fghje": "Please fill in your name and phone number",
"hw4l5m": "Optional coupons",
"5iuqow": "",
"4rb08b": "There are currently no available coupons available",

View File

@ -429,14 +429,15 @@
"553mxo": "请选择优惠券",
"80y7sv": "抵扣",
"2rhko1": "留言",
"6424jr": "快递邮寄",
"8787ev": "自提点取货",
"718tux": "进入我的订单",
"p7e91u": "商品信息有误",
"4is2ak": "进入门店订单",
"s7rr5s": "时间",
"1fi842": "选择时间",
"q8u066": "请选择时间",
"df3raf": "我的姓名",
"hjwerf": "我的电话",
"8fghje": "请填写姓名和电话",
"hw4l5m": "可选优惠劵",
"5iuqow": "张",
"4rb08b": "暂无可用优惠劵",

View File

@ -113,9 +113,18 @@
/**
* +
*/
.buy-header-nav .item {
.buy-site-model .item {
padding: 25rpx 0;
width: 50%;
}
.buy-site-model.count-3 .item {
width: 33.33%;
}
.buy-site-model.count-4 .item {
width: 25%;
}
.buy-site-model.count-5 .item {
width: 20%;
}
/**

View File

@ -5,10 +5,10 @@
</block>
<block v-else>
<view v-if="goods_list.length > 0" class="page-bottom-fixed">
<!-- 销售+自提 模式选择 -->
<view v-if="common_site_type == 4" class="buy-header-nav bg-white oh tc">
<block v-for="(item, index) in buy_header_nav" :key="index">
<view :class="'item fl cp ' + (site_model == item.value ? 'cr-main' : 'cr-base')" :data-value="item.value" @tap="buy_header_nav_event">{{ item.name }}</view>
<!-- 模式选择站点类型选择 销售+自提 -->
<view v-if="buy_site_model_list.length > 1" class="buy-site-model bg-white oh tc" :class="'count-'+buy_site_model_list.length">
<block v-for="(item, index) in buy_site_model_list" :key="index">
<view :class="'item fl cp ' + (buy_site_model_value == item.value ? 'cr-main' : 'cr-base')" :data-ext="item.ext" :data-value="item.value" @tap="buy_site_model_event">{{ item.name }}</view>
</block>
</view>
@ -30,10 +30,38 @@
</view>
</view>
<view v-else class="padding-top-xl padding-bottom-xxxl cr-grey">
{{ common_site_type == 0 || (common_site_type == 4 && site_model == 0) ? $t('buy.buy.6rk813') : $t('buy.buy.wq7gnb') }}
{{ common_site_type == 0 || (common_site_type == 4 && buy_site_model_value == 0) ? $t('buy.buy.6rk813') : $t('buy.buy.wq7gnb') }}
</view>
</view>
<view class="address-divider spacing-mb"></view>
</view>
<!-- 客户输入的数据 -->
<view v-if="((buy_extraction_contact_info || null) != null && (buy_extraction_contact_info.is_write || false) == true) || ((buy_datetime_info || null) != null && (buy_datetime_info.is_select || false) == true)" class="oh padding-horizontal-main bg-white border-radius-main spacing-mb padding-top-main form-container">
<!-- 时间选择 -->
<view v-if="(buy_datetime_info || null) != null && (buy_datetime_info.is_select || false) == true" class="form-gorup row padding-horizontal-0 padding-top-0">
<view class="form-gorup-title margin-right">{{ buy_datetime_info.title }}</view>
<view class="form-gorup-value tr">
<component-time-select :propTitle="buy_datetime_info.title" :propPlaceholder="buy_datetime_info.placeholder" :propRangeDay="buy_datetime_info.range_day || 2" :propRangeStartTime="buy_datetime_info.time_start" :propRangeEndTime="buy_datetime_info.time_end" :propDisabled="buy_datetime_info.disabled" :propIsShow="buy_datetime_info.status" @selectEvent="buy_datetime_event">
<text v-if="(buy_datetime_info.value || null) == null" class="cr-grey va-m">{{ buy_datetime_info.placeholder }}</text>
<text v-else class="cr-base va-m">{{ buy_datetime_info.value }}</text>
<view class="dis-inline-block va-m lh-xs">
<iconfont name="icon-arrow-right" color="#999"></iconfont>
</view>
</component-time-select>
</view>
</view>
<!-- 自提客户名称和电话 -->
<block v-if="(buy_extraction_contact_info || null) != null && (buy_extraction_contact_info.is_write || false) == true">
<view class="form-gorup row padding-horizontal-0 padding-top-0">
<view class="form-gorup-title margin-right">{{$t('buy.buy.df3raf')}}</view>
<input type="text" name="extraction_contact_name" :value="buy_extraction_contact_info.name" data-value="name" @input="extraction_contact_event" maxlength="30" placeholder-class="cr-grey-9" class="cr-base br-b-f9" :placeholder="$t('user-address-save.user-address-save.65507o')" />
</view>
<view class="form-gorup row padding-horizontal-0 padding-top-0">
<view class="form-gorup-title margin-right">{{$t('buy.buy.hjwerf')}}</view>
<input type="text" name="extraction_contact_tel" :value="buy_extraction_contact_info.tel" data-value="tel" @input="extraction_contact_event" maxlength="30" placeholder-class="cr-grey-9" class="cr-base br-b-f9" :placeholder="$t('user-address-save.user-address-save.65507o')" />
</view>
</block>
</view>
<!-- 商品数据 -->
@ -108,8 +136,8 @@
</view>
</view>
<!-- 门店次卡 -->
<view v-if="(plugins_realstore_data || null) != null && (plugins_realstore_data[group.id] || null) != null" class="plugins-realstore-container-view">
<block v-for="(item, index2) in plugins_realstore_data[group.id]['data']" :key="index2">
<view v-if="(plugins_realstore_data || null) != null && (plugins_realstore_data.user_card || null) != null && (plugins_realstore_data['user_card'][group.id] || null) != null" class="plugins-realstore-container-view">
<block v-for="(item, index2) in plugins_realstore_data['user_card'][group.id]['data']" :key="index2">
<view class="buy-data-item oh oh wh-auto">
<text class="cr-base va-m">{{ $t('buy.buy.58rs1a') }}</text>
<image class="image circle br va-m margin-left-xs" :src="item.images" mode="aspectFill"></image>
@ -168,20 +196,6 @@
</block>
</view>
<!-- 时间选择 -->
<view v-if="(buy_datetime_info || null) != null && (buy_datetime_info.is_select || false) == true" class="buy-data-item oh padding-horizontal-main bg-white border-radius-main spacing-mb">
<text class="cr-base">{{ buy_datetime_info.title }}</text>
<view class="right-value single-text dis-inline-block fr tr">
<component-time-select :propTitle="buy_datetime_info.title" :propPlaceholder="buy_datetime_info.placeholder" :propRangeDay="buy_datetime_info.range_day || 2" :propRangeStartTime="buy_datetime_info.time_start" :propRangeEndTime="buy_datetime_info.time_end" :propDisabled="buy_datetime_info.disabled" :propIsShow="buy_datetime_info.status" @selectEvent="buy_datetime_event">
<text v-if="(buy_datetime_info.value || null) == null" class="cr-grey va-m">{{ buy_datetime_info.placeholder }}</text>
<text v-else class="cr-base va-m">{{ buy_datetime_info.value }}</text>
<view class="dis-inline-block va-m lh-xs">
<iconfont name="icon-arrow-right" color="#999"></iconfont>
</view>
</component-time-select>
</view>
</view>
<!-- 留言 -->
<view class="content-textarea-container padding-main border-radius-main bg-white spacing-mb">
<view class="content">
@ -312,8 +326,8 @@
<view class="not-use-tips tc">
<text class="cp cr-yellow text-size-sm" data-type="0" @tap="plugins_realstore_use_event">{{ $t('buy.buy.8vqfp3') }}</text>
</view>
<view v-if="(plugins_realstore_data || null) != null && (plugins_realstore_data[popup_plugins_realstore_group_id] || null) != null">
<block v-for="(item, index) in plugins_realstore_data[popup_plugins_realstore_group_id]['data'][popup_plugins_realstore_card_index]['user_card']" :key="index">
<view v-if="(plugins_realstore_data || null) != null && (plugins_realstore_data.user_card || null) != null && (plugins_realstore_data['user_card'][popup_plugins_realstore_group_id] || null) != null">
<block v-for="(item, index) in plugins_realstore_data['user_card'][popup_plugins_realstore_group_id]['data'][popup_plugins_realstore_card_index]['user_card']" :key="index">
<view :class="'item spacing-mt bg-white border-radius-main ' + ((item.is_active || 0) == 1 ? 'item-disabled' : '')">
<view class="v-left fl">
<view class="base single-text">
@ -376,17 +390,19 @@
user_note_status: false,
is_first: 1,
common_site_type: 0,
extraction_address: [],
site_model: 0,
buy_header_nav: [
{ name: this.$t('buy.buy.6424jr'), value: 0 },
{ name: this.$t('buy.buy.8787ev'), value: 2 },
],
extraction_address: [],
//
is_realstore_model: false,
//
buy_site_model_value: 0,
buy_site_model_list: [],
//
currency_symbol: app.globalData.currency_symbol(),
common_order_is_booking: 0,
//
buy_datetime_info: {},
buy_datetime_info: {},
//
buy_extraction_contact_info: {},
//
plugins_coupon_data: null,
plugins_coupon_list: [],
@ -399,7 +415,7 @@
actual_use_integral: 0,
plugins_points_status: false,
//
plugins_realstore_data: [],
plugins_realstore_data: null,
plugins_choice_realstore_value: {},
popup_plugins_realstore_status: false,
popup_plugins_realstore_group_id: 0,
@ -447,9 +463,13 @@
// goods_data urlencode(base64_encode(json[{goods_id,stock,spec}]))
// params['data'] = '{"buy_type":"goods","goods_data":"W3siZ29vZHNfaWQiOiI5Iiwic3RvY2siOjEsInNwZWMiOlt7InR5cGUiOiLpopzoibIiLCJ2YWx1ZSI6IueyieiJsiJ9LHsidHlwZSI6IuWwuueggSIsInZhbHVlIjoiTCJ9XX1"}';
// ids ids
if ((params.data || null) != null) {
if ((params.data || null) != null) {
params = JSON.parse(base64.decode(decodeURIComponent(params.data)));
var is_realstore_model = (params.realstore_id || null) != null;
this.setData({
params: JSON.parse(base64.decode(decodeURIComponent(params.data))),
params: params,
is_realstore_model: is_realstore_model,
buy_site_model_value: is_realstore_model ? parseInt(params.buy_use_type_index || 0) : 0,
plugins_points_status: app.globalData.get_config('plugins_base.points.data.is_default_use_points', null) == 1,
pay_url: app.globalData.get_request_url('pay', 'order'),
qrcode_url: app.globalData.get_request_url('paycheck', 'order'),
@ -522,7 +542,7 @@
}
//
if ((this.params.realstore_id || null) != null) {
if (this.is_realstore_model) {
var realstore_order_page = '/pages/plugins/realstore/orderallot-list/orderallot-list';
this.setData({
to_page_back: {
@ -548,7 +568,7 @@
var data = this.params;
data['address_id'] = this.address_id;
data['payment_id'] = this.payment_id;
data['site_model'] = this.site_model;
data['site_model'] = this.buy_site_model_value;
uni.request({
url: app.globalData.get_request_url('index', 'buy'),
method: 'POST',
@ -613,6 +633,22 @@
disabled: temp_dt.disabled || '',
//
error_msg: temp_dt.error_msg || this.$t('buy.buy.q8u066'),
};
//
var data_ct = this.buy_extraction_contact_info || {};
var temp_ct = data.buy_extraction_contact_info || {};
var extraction_contact = {
is_write: (temp_ct.is_write || 0) == 1,
//
status: data_ct.status || (temp_ct.status || 0) == 1 || false,
//
name: data_ct.name || temp_ct.name || '',
tel: data_ct.tel || temp_ct.tel || '',
//
required: (temp_ct.required || 0) == 1,
//
error_msg: temp_ct.error_msg || this.$t('buy.buy.8fghje'),
};
//
@ -638,8 +674,10 @@
total_price: data.base.actual_price,
data_list_loding_status: 3,
common_site_type: data.common_site_type || 0,
extraction_address: data.base.extraction_address || [],
buy_datetime_info: datetime,
extraction_address: data.base.extraction_address || [],
buy_site_model_list: data.buy_site_model_list || [],
buy_datetime_info: datetime,
buy_extraction_contact_info: extraction_contact,
plugins_coupon_data: data.plugins_coupon_data || null,
plugins_points_data: data.plugins_points_data || null,
plugins_realstore_data: data.plugins_realstore_data || null,
@ -805,7 +843,7 @@
data['payment_id'] = this.payment_id;
data['payment_type'] = this.payment_type;
data['user_note'] = this.user_note_value;
data['site_model'] = this.site_model;
data['site_model'] = this.buy_site_model_value;
//
var validation = [];
@ -841,7 +879,19 @@
app.globalData.showToast(datetime.error_msg || this.$t('buy.buy.q8u066'));
return false;
}
data['buy_datetime_value'] = datetime.value || '';
data['appoint_time'] = datetime.value || '';
}
//
var extraction_contact = this.buy_extraction_contact_info || {};
if ((extraction_contact.is_write || false) == true) {
//
if ((extraction_contact.required || false) == true && ((extraction_contact.name || null) == null || (extraction_contact.tel || null) == null)) {
app.globalData.showToast(extraction_contact.error_msg || this.$t('buy.buy.8fghje'));
return false;
}
data['extraction_contact_name'] = extraction_contact.name || '';
data['extraction_contact_tel'] = extraction_contact.tel || '';
}
//
@ -1029,9 +1079,9 @@
}
//
if (this.common_site_type == 0 || (this.common_site_type == 4 && this.site_model == 0)) {
if (this.common_site_type == 0 || (this.common_site_type == 4 && this.buy_site_model_value == 0)) {
app.globalData.url_open('/pages/user-address/user-address?is_back=1' + params);
} else if (this.common_site_type == 2 || (this.common_site_type == 4 && this.site_model == 2)) {
} else if (this.common_site_type == 2 || (this.common_site_type == 4 && this.buy_site_model_value == 2)) {
app.globalData.url_open('/pages/extraction-address/extraction-address?is_back=1&is_buy=1' + params);
} else {
app.globalData.showToast(this.$t('buy.buy.31616e'));
@ -1039,15 +1089,28 @@
},
// +
buy_header_nav_event(e) {
buy_site_model_event(e) {
var value = e.currentTarget.dataset.value || 0;
if (value != this.site_model) {
//
this.setData({
if (value != this.buy_site_model_value) {
//
var upd_data = {
address: null,
address_id: null,
site_model: value,
});
address_id: null,
buy_site_model_value: value,
};
//
if (this.is_realstore_model) {
//
upd_data['params'] = {...this.params, ...{buy_use_type_index: value}};
// common_site_type
var ext = e.currentTarget.dataset.ext;
if(ext !== '' && ext !== undefined) {
upd_data['common_site_type'] = parseInt(ext);
}
}
this.setData(upd_data);
//
uni.removeStorageSync(app.globalData.data.cache_buy_user_address_select_key);
@ -1116,6 +1179,15 @@
this.setData({
buy_datetime_info: temp,
});
},
//
extraction_contact_event(e) {
var temp = this.buy_extraction_contact_info;
temp[e.currentTarget.dataset.value] = e.detail.value || '';
this.setData({
buy_extraction_contact_info: temp,
});
},
//
@ -1139,7 +1211,7 @@
var type = e.currentTarget.dataset.type;
var group_id = this.popup_plugins_realstore_group_id;
var card_index = this.popup_plugins_realstore_card_index;
var id = this.plugins_realstore_data[group_id]['data'][card_index]['id'];
var id = this.plugins_realstore_data['user_card'][group_id]['data'][card_index]['id'];
var temp = this.plugins_choice_realstore_value;
if (type == 1) {
if (temp[group_id] == undefined) {

View File

@ -82,6 +82,10 @@
<text data-event="copy" :data-value="item.user_address.name" @tap="text_event">{{item.user_address.name}}</text>
<text class="margin-left-xl" data-event="copy" :data-value="item.user_address.tel" @tap="text_event">{{item.user_address.tel}}</text>
</view>
<view v-if="(item.user_address.extraction_contact_name || null) != null || (item.user_address.extraction_contact_tel || null) != null" class="padding-vertical-xs">
<text v-if="(item.user_address.extraction_contact_name || null) != null" class="margin-right-xl">{{item.user_address.extraction_contact_name}}</text>
<text v-if="(item.user_address.extraction_contact_tel || null) != null">{{item.user_address.extraction_contact_tel}}</text>
</view>
<view v-if="(item.user_address.appoint_time || null) != null" class="cr-red padding-vertical-xs">{{item.user_address.appoint_time}}</view>
<view class="pr margin-top-xs">
<view class="address-info">

View File

@ -1,10 +1,6 @@
/*
*
*/
.address-base,
.address-detail {
padding: 10rpx 0;
}
.address-detail .icon {
width: 30rpx;
height: 35rpx !important;

View File

@ -4,7 +4,7 @@
<view class="padding-horizontal-main padding-top-main">
<!-- 地址 -->
<view v-if="(detail.order_model == 0 || detail.order_model == 2) && (detail.address_data || null) != null" class="address bg-white padding-horizontal-main padding-top-main border-radius-main spacing-mb">
<view class="address-base oh">
<view class="address-base padding-top-xs padding-bottom oh">
<text v-if="(detail.address_data.alias || null) != null" class="address-alias round br-main cr-main bg-white margin-right-sm">{{ detail.address_data.alias }}</text>
<text>{{ detail.address_data.name }}</text>
<text class="fr">{{ detail.address_data.tel }}</text>
@ -15,6 +15,13 @@
<text>{{ detail.address_data.province_name }}{{ detail.address_data.city_name }}{{ detail.address_data.county_name }}{{ detail.address_data.address }}</text>
<text v-if="detail.order_model == 2 && (detail.address_data.lng || 0) != 0 && (detail.address_data.lat || 0) != 0" class="address-map-submit cr-base br round bg-white margin-left-sm text-size-xs" @tap="address_map_event">{{$t('user-order-detail.user-order-detail.7lp6gw')}}</text>
</view>
</view>
<view v-if="(detail.address_data.extraction_contact_name || null) != null || (detail.address_data.extraction_contact_tel || null) != null || (detail.address_data.appoint_time || null) != null" class="padding-vertical-main br-t-dashed">
<view>
<text v-if="(detail.address_data.extraction_contact_name || null) != null" class="margin-right-xxl">{{detail.address_data.extraction_contact_name}}</text>
<text v-if="(detail.address_data.extraction_contact_tel || null) != null">{{detail.address_data.extraction_contact_tel}}</text>
</view>
<view v-if="(detail.address_data.tel || null) != null" class="cr-red">{{detail.address_data.appoint_time}}</view>
</view>
<view class="address-divider spacing-mb"></view>
</view>
@ -72,10 +79,6 @@
<view>
<text>{{$t('user-order-detail.user-order-detail.o38952')}}</text>
<text class="radius bg-green cr-white padding-left-sm padding-right-sm">{{ detail.extraction_data.code || $t('user-order-detail.user-order-detail.hpq62x') }}</text>
</view>
<view v-if="(detail.extraction_data.name || null) != null || (detail.extraction_data.tel || null) != null" class="margin-top-sm">
<text v-if="(detail.extraction_data.name || null) != null" class="margin-right-xxl">{{detail.extraction_data.name}}</text>
<text v-if="(detail.extraction_data.tel || null) != null">{{detail.extraction_data.tel}}</text>
</view>
</view>
</view>