作者 kerxins

优化页面跳转逻辑

... ... @@ -424,14 +424,14 @@
app.num--
}
},
plus: function () {
t_plus: function () {
if (app.num < app.priceList.limit_num) {
app.num++
} else {
toastMsg('不能超过最大限购哦')
}
},
pay_go: function () {
t_pay_go: function () {
if (app.active_name != '') {
api.sendEvent({
name: 'meal',
... ...
... ... @@ -42,6 +42,314 @@
.swiper_item {
/*padding: 0.28rem 0.25rem;*/
}
.meal {
display: flex;
flex-direction: column;
justify-content: flex-end;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
background-color: rgba(0,0,0,.5);
}
.meal_title {
text-align: center;
color: #424242;
font-size: 15px;
font-weight: bold;
border-bottom: 1px solid #ccc;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0.25rem;
}
.meal_price_box {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 12px;
color: #424242;
padding: 0.25rem 10% 0 10%;
}
.meal_price {
color: #d8b25f;
font-size: 9px;
margin-left: 0.1rem;
}
.incer {
color: #ccc;
font-size: 9px;
padding: 0 10%;
}
.sever_list {
display: flex;
align-items: center;
flex-wrap: wrap;
font-size: 12px;
padding: 0.25rem 10%;
}
.sever_list span {
background-color: #f2f2f2;
padding: 0.1rem 0.2rem;
margin: 0 0.2rem 0.2rem 0;
border-radius: 0.07rem;
}
.sever_list .span_active {
background-color: #dbb25f;
color: #fff;
}
.meal_item {
background-color: #fff;
}
.pay_box {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 10% 0.25rem 10%;
}
.pay_num {
font-size: 12px;
color: #424242;
}
.pay_btn_box {
display: flex;
align-items: center;
}
.pay_btn_box .iconfont {
font-size: 20px;
color: #ccc;
}
.pay_btn_box input {
width: 0.5rem;
text-align: center;
border: 0;
outline: none;
font-size: 15px;
}
.pay_num .limit {
padding: 0;
font-size: 9px;
color: #ccc;
}
.price {
flex: 1;
text-align: right;
}
.price .meal_price {
font-size: 12px;
}
.price .old_price {
text-decoration: line-through;
color: #ccc;
margin-left: 0.1rem;
}
.pay_btn {
font-size: 15px;
color: #fff;
background-color: #dbb25f;
text-align: center;
padding: 0.2rem 0;
}
.icon-cuohao {
font-size: 15px;
color: #424242;
}
.save_btn {
text-align: center;
font-size: 0.36rem;
color: #fff;
padding: 0.15rem 0;
width: 100%;
position: absolute;
left: 0;
bottom: 0;
z-index: 100;
background-color: #dbb25f;
}
.moreoul {
width: 100%;
}
.moreoul li {
width: 100%;
padding: 0.3rem 0;
line-height: 0.3rem;
font-size: 16px;
border-bottom: 1px solid #f0f0f0;
text-align: center;
}
.nodata {
font-size: 16px;
color: #c0c0c0;
text-align: center;
padding: 0.5rem 0;
width: 100% !important;
}
.weui-picker__indicator:after {
border-bottom: 1px solid #dbb25f;
}
.weui-picker__indicator:before {
border-top: 1px solid #dbb25f;
}
.weui-picker__action {
padding: 0.2rem 0;
font-size: 13px;
text-align: center;
}
.weui-picker__action:first-child {
color: #333;
text-align: center;
}
.weui-picker__action:last-child {
color: #fff;
text-align: center;
background-color: #dbb25f;
}
.weui-picker__hd {
padding: 0;
}
.weui-picker__item {
font-size: 13px;
}
.close_left {
position: relative;
}
.close_left::before {
position: absolute;
left: -0.1rem;
right: -0.1rem;
top: -0.1rem;
bottom: -0.1rem;
content: '';
}
.mint-popup-bottom {
width: 100%;
}
.weui-check__label:active {
background: transparent;
}
.weui-cells_checkbox .weui-icon-checked:before {
/*content: '';*/
}
.weui-cells_checkbox .weui-check:checked + .weui-icon-checked:before {
color: #dbb25f
}
.weui-cell__hd {
position: relative;
}
.weui-cell__hd::before {
content: '';
position: absolute;
left: -10px;
right: -10px;
top: -10px;
bottom: -10px;
}
.mold_index {
position: fixed;
height: 100%;
width: 100%;
background-color: rgba(0, 0, 0, 0.05);
/*background-color: #000;*/
left: 0;
top: 0;
bottom: 0;
z-index: 10;
}
.weui-mask, .weui-mask_transparent {
position: fixed;
z-index: 1000;
top: 0;
right: 0;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.weui-toast {
position: fixed;
z-index: 5000;
width: 40%;
min-width: 20%;
min-height: auto;
height: auto;
top: 50%;
left: 0;
right: 0;
margin: 0 auto;
/*margin-left: -3.8em;*/
background: hsla(0, 0%, 7%, .7);
text-align: center;
border-radius: 5px;
color: #fff;
font-size: 14px;
}
.weui-icon_toast {
margin: 0;
/*display: block*/
}
.weui-toast__content {
margin: 0;
padding: 0.1rem 0;
}
.weui-icon_toast.weui-icon-success-no-circle {
font-size: 0;
}
.weui-icon_toast.weui-icon-success-no-circle:before {
color: #fff;
font-size: 0;
margin: 0;
}
</style>
</head>
<body>
... ... @@ -105,10 +413,79 @@
<span class="doc_appointment" @click="openOrder" v-else>去 预 约</span>
</div>
</footer>
<!--预约-->
<div @click="close" class="meal" v-if="room">
<div class="meal_item" @click.stop>
<div class="meal_title">
<span></span>
<span>入住选择</span>
<span class="iconfont icon-cuohao" @click="close"></span>
</div>
<div class="room_box">
<div class="room_left">
<div><span>服务价格</span><span class="youhui">优惠¥{{price_info.count?price_info.count:0}}</span></div>
</div>
<div class="room_right">
<span>¥{{price_info.price?price_info.price:0}}</span>
<span class="old_price">原价{{price_info.o_price?price_info.o_price:0}}</span>
</div>
</div>
<div class="room_tips">此价格包含护理、房间、用餐费用</div>
<div class="price_box">
<div class="price_left">
<span :class="{'span_active':index==active_index}"
v-for="(item,index) in attribute[0]"
@click="choose_left(index)">{{item}}</span>
</div>
<div class="price_right">
<span :class="{'span_active':index==active_index2}"
v-for="(item,index) in attribute[1]"
@click="choose_right(index)">{{item}}</span>
</div>
</div>
<div class="pay_box">
<span class="pay_num">入住周期 <span
class="limit">({{price_info.limit_num?price_info.limit_num:0}}{{unit}})</span></span>
<div class="pay_btn_box">
<span class="iconfont icon-jian" @click="reduce"></span>
<input type="number" placeholder="" value="1" v-model="num">
<span class="iconfont icon-jikediancanicon09" @click="plus"></span>
</div>
</div>
<div class="pay_btn" @click.stop="pay_go">确定</div>
</div>
</div>
<div @click="close" class="meal" v-if="taocan">
<div class="meal_item" @click.stop>
<div class="meal_title"><span></span><span>选择套餐</span><span class="iconfont icon-cuohao"
@click="close"></span></div>
<div class="meal_price_box">
<div><span>服务价格</span><span class="meal_price">优惠价格¥{{Math.abs(priceList.count)?Math.abs(priceList.count):0}}</span>
</div>
<div class="price"><span class="meal_price">¥{{priceList.o_price?priceList.o_price:0}}</span><span
class="old_price">原价¥{{priceList.price?priceList.price:0}}</span></div>
</div>
<div class="incer">此服务由慈界平台优质服务商提供</div>
<div class="sever_list"><span :class="{'span_active':index==active_index}"
v-for="(item,index) in attribute"
@click="t_choose_sever(item,index)">{{item}}</span></div>
<div class="pay_box">
<span class="pay_num">购买数量 <span
class="limit">(限购<span>{{priceList.limit_num?priceList.limit_num:0}}</span>{{unit}})</span></span>
<div class="pay_btn_box">
<span class="iconfont icon-jian" @click="t_reduce"></span>
<input type="number" placeholder="" value="1" v-model="num">
<span class="iconfont icon-jikediancanicon09" @click="t_plus"></span>
</div>
</div>
<div class="pay_btn" @click="t_pay_go">确定</div>
</div>
</div>
</div>
</body>
</html>
<script type="text/javascript" src="../../assets/js/api.js"></script>
<script type="text/javascript" src="../../assets/js/weui.min.js"></script>
<script type="text/javascript" src="../../assets/js/public.js"></script>
<script type="text/javascript" src="../../assets/js/fastclick.js"></script>
<script>
... ... @@ -130,10 +507,8 @@
hour: '',
minute: '',
date_info: '',
id: '',
cid: '',
room: '',
attribute: '',
goods: [],
real_price: '',
attribute_type: '',
... ... @@ -141,8 +516,16 @@
tel: '',
order_id: '',
user_info: [],
pos: 'fixed',
num: 1,
sever_list: [],
active_index: -1,
active_name: '',
priceList: [],
attribute: [],
id: '',
unit: '',
pos: 'fixed'
taocan: false
},
created: function () {
this.id = localStorage.getItem('id');
... ... @@ -180,15 +563,16 @@
// 选择套餐
set_meal: function () {
var app = this;
openWin({
name: 'choose_meal_f',
url: './choose_meal_f.html',
pageParam: {
id: app.id,
attribute: app.attribute,
unit: app.unit
}
})
app.taocan = true;
// openWin({
// name: 'choose_meal_f',
// url: './choose_meal_f.html',
// pageParam: {
// id: app.id,
// attribute: app.attribute,
// unit: app.unit
// }
// })
},
// 选择入住等级
set_rank: function () {
... ... @@ -482,6 +866,131 @@
setTimeout(function () {
document.body.scrollTop = document.body.scrollHeight;
}, 300);
},
//套餐选择2
close: function () {
// api.closeWin({
// name: 'choose_meal_w'
// });
this.taocan = false
this.room = false
},
t_choose_sever: function (attr, index) {
var app = this;
app.active_index = index;
app.active_name = app.attribute[index];
app.attribute_id = app.attribute[index].id;
var post = {
id: app.id,
attribute: attr
};
var header = {
"XX-Device-Type": getDevice(),
'XX-Token': getToken()
};
getRequest('post', 'portal/Goods/getPrice', post, header).then(function (res) {
// alert(JSON.stringify(res))
if (res.data.code == 1) {
app.priceList = res.data.data;
} else {
toastMsg(res.msg)
}
});
app.num = 1;
app.meal = app.active_name + app.num + app.unit;
app.total = parseFloat(app.priceList.price) * (app.num);
},
t_reduce: function () {
var app = this;
if (app.num > 1) {
app.num--
}
app.total = parseFloat(app.priceList.price) * (app.num);
app.meal = app.active_name + app.num + app.unit;
},
t_plus: function () {
var app = this;
if (app.num < app.priceList.limit_num) {
app.num++
} else {
toastMsg('不能超过最大限购哦')
}
app.total = parseFloat(app.priceList.price) * (app.num);
app.meal = app.active_name + app.num + app.unit;
},
t_pay_go: function () {
var app = this;
if (app.active_name != '') {
app.close()
} else {
toastMsg('请选择套餐类型')
}
},
choose_left: function (index) {
app.active_index = index;
app.active_left = app.attribute[0][index];
app.num = app.price_info.limit_num;
app.getPrice();
},
choose_right: function (index) {
app.active_index2 = index;
app.active_right = app.attribute[1][index];
app.getPrice();
app.num = app.price_info.limit_num;
},
reduce: function () {
if (app.price_info.limit_num) {
if (app.num > app.price_info.limit_num) {
app.num--
} else {
toastMsg('不能低于' + app.price_info.limit_num + '个月哦')
}
}else {
toastMsg('请选择入住类型')
}
},
plus: function () {
if (app.num < app.price_info.limit_num) {
} else {
app.num++
}
},
getPrice: function () {
if (app.active_left && app.active_right) {
var post = {
attribute: app.active_left + '_' + app.active_right,
id: app.id
};
getRequest('post', 'portal/Goods/getPrice', post, null).then(function (res) {
if (res.data.code == 1) {
app.price_info = res.data.data;
app.num = app.price_info.limit_num;
app.attribute_id = app.price_info.attribute_id
}
})
} else {
toastMsg('请选择入住类型')
}
},
pay_go: function () {
if (app.active_left && app.active_right) {
api.sendEvent({
name: 'room',
extra: {
name_left: app.active_left,
name_right: app.active_right,
num: app.num,
price: app.price_info.price,
attribute_id: app.attribute_id
}
});
app.close()
}
else {
toastMsg('请选择入住类型')
}
}
}
})
... ...
... ... @@ -206,14 +206,14 @@
},
openDoc: function (id) {
var app = this;
// api.openWin({
// name: 'care_w',
// url: './care_w.html',
// pageParam: {
// id: id,
// cid: app.cid
// }
// })
openWin({
name: 'care_w',
url: './care_f.html',
pageParam: {
id: id,
cid: app.cid
}
})
},
getCatInfo3: function () {
var app = this;
... ...
... ... @@ -84,6 +84,8 @@
</head>
<body>
<!-- 背景充满 -->
<div id="loadStart"></div>
<div id="app" v-cloak>
<div id="container"></div>
<header :class="index===0?'headers':''">
... ... @@ -234,8 +236,6 @@
getlng: '',
getlat: '',
cityindex: '',
cityname: '',
img_active: false,
map: {},
newList: [],
img_active: false,
... ... @@ -262,6 +262,7 @@
this.indexList(); //第三栏
this.show(); //严选推荐
// 底部轮播图
loadEnd()
},
mounted: function () {
window.addEventListener('scroll', this.handleScroll)
... ... @@ -410,17 +411,12 @@
},
// 打开投资
openStrict: function () {
app.img_active = false;
api.setFrameGroupIndex({
name: 'index_fm',
index: 1
})
window.location.href = '../strict/strict_f.html'
},
// 打开订单
openOrder: function () {
app.img_active = false;
openView('my_orderlist', 'my/my_orderlist', '我的订单', 'my_orderlist', false, false, false);
openView('my_orderlist', '../my/my_orderlist', '我的订单', 'my_orderlist', false, false, false);
api.sendEvent({
name: 'hide_menu',
extra: {
... ... @@ -431,19 +427,13 @@
// 打开健康档案
openHealth: function () {
app.img_active = false;
api.openWin({
openWin({
name: 'my_health_w',
url: '../my/my_health_w.html',
url: '../my/my_health.html',
pageParam: {
rid: 0
}
});
api.sendEvent({
name: 'hide_menu',
extra: {
img_active: false
}
});
},
// 打开客服
openSever: function () {
... ...
... ... @@ -1098,7 +1098,6 @@
user_address_detail: '',//详细地址
user_id_card: '',//身份证号
user_content: '',//详细描述
popupVisible: false,//相机显示
img: '',//上传证明
imgs: [],
meal: '',//套餐
... ... @@ -1131,7 +1130,6 @@
user_address_list: [],
address_show: true,
lon: '',
lat: '',
latitude: '',
longitude: '',
//经度
... ...