978 lines
31 KiB
HTML
978 lines
31 KiB
HTML
<!DOCTYPE html
|
||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
<meta name="viewport"
|
||
content="width=device-width, initial-scale=1.0 ,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||
<title>结算页面</title>
|
||
<link rel="shortcut icon" href="img/foodie.ico" />
|
||
|
||
<link href="AmazeUI-2.4.2/assets/css/amazeui.css" rel="stylesheet" type="text/css" />
|
||
<link href="basic/css/demo.css" rel="stylesheet" type="text/css" />
|
||
<link href="css/cartstyle.css" rel="stylesheet" type="text/css" />
|
||
<link href="css/jsstyle.css" rel="stylesheet" type="text/css" />
|
||
<link href="css/lee.css" rel="stylesheet" type="text/css" />
|
||
|
||
<script type="text/javascript" src="js/address.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.9/dist/vue.js"></script>
|
||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||
</head>
|
||
|
||
<body>
|
||
<div id="pay">
|
||
<!--顶部导航条 -->
|
||
<div class="am-container header">
|
||
<ul class="message-l">
|
||
<div class="topMessage">
|
||
<div class="menu-hd" v-show="!userIsLogin">
|
||
<a href="login.html" target="_top" class="h">亲,请登录</a>
|
||
<a href="register.html" target="_top">免费注册</a>
|
||
</div>
|
||
<div class="menu-hd" v-show="userIsLogin">
|
||
<span style="color: #d2364c">欢迎,{{userInfo.username}}</span>
|
||
</div>
|
||
</div>
|
||
</ul>
|
||
<ul class="message-r">
|
||
<div class="topMessage home">
|
||
<div class="menu-hd"><a href="index.html" target="_top" class="h">商城首页</a></div>
|
||
</div>
|
||
<div class="topMessage my-shangcheng">
|
||
<div class="menu-hd MyShangcheng"><a href="javascript:void(0);" @click="goUserCenter">
|
||
<i class="am-icon-user am-icon-fw"></i>个人中心</a></div>
|
||
</div>
|
||
</ul>
|
||
</div>
|
||
|
||
<!--悬浮搜索框-->
|
||
<div class="nav white">
|
||
<!-- <div class="logo"><img src="images/logo.png" /></div> -->
|
||
<div class="logoBig">
|
||
<li><img src="images/logobig.png" /></li>
|
||
</div>
|
||
|
||
<div class="search-bar pr">
|
||
<a name="index_none_header_sysc" href="#"></a>
|
||
<form>
|
||
<input id="searchInput" name="index_none_header_sysc" type="text" placeholder="搜索"
|
||
autocomplete="off">
|
||
<input id="ai-topsearch" class="submit am-btn" value="搜索" index="1" type="submit">
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="clear"></div>
|
||
<div class="concent">
|
||
<!--地址 -->
|
||
<div class="paycont">
|
||
<div class="address">
|
||
<h3>确认收货地址 </h3>
|
||
<div class="control">
|
||
<div class="tc-btn createAddr theme-login am-btn am-btn-danger">使用新地址</div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
<ul>
|
||
<span v-show="addressList.length > 0">
|
||
<!-- <block v-for="(address, aindex) in addressList" :key="aindex">
|
||
<div class="per-border"></div> -->
|
||
<!-- <li class="user-addresslist " v-for="(address, aindex) in addressList" :key="aindex" style="margin-top: 6px;"> -->
|
||
<li :class="['user-addresslist', {'defaultAddr' : address.id == choosedAddressId}]"
|
||
v-for="(address, aindex) in addressList"
|
||
:key="aindex"
|
||
@click="chooseAddress(address.id)"
|
||
style="margin-top: 6px;">
|
||
<!-- <li :class="['user-addresslist', {'DefaultAddr' : address.isDefault == 1}]"> -->
|
||
|
||
<div class="address-left">
|
||
<!-- background: url(../images/peraddbg.png)no-repeat scroll 0% 0%; -->
|
||
<!-- :style="address.isDefault == 1 ? " -->
|
||
<div class="user DefaultAddr">
|
||
|
||
<span class="buy-address-detail">
|
||
<span class="buy-user">{{address.receiver}}</span>
|
||
<span class="buy-phone">{{address.mobile}}</span>
|
||
</span>
|
||
</div>
|
||
<div class="default-address DefaultAddr">
|
||
<span class="buy-line-title buy-line-title-type">收货地址:</span>
|
||
<span class="buy--address-detail">
|
||
<span class="province">{{address.province}}</span>
|
||
<span class="city">{{address.city}}</span>
|
||
<span class="dist">{{address.district}}</span>
|
||
<span class="street">{{address.detail}}</span>
|
||
</span>
|
||
</div>
|
||
<ins class="deftip" v-show="address.isDefault == 1">默认地址</ins>
|
||
</div>
|
||
<div class="address-right">
|
||
<a href="person/address.html">
|
||
<span class="am-icon-angle-right am-icon-lg"></span></a>
|
||
</div>
|
||
<div class="clear"></div>
|
||
|
||
<div class="new-addr-btn">
|
||
<a href="javascript:void(0);" @click.stop="setDefaultAddress(address.id)" :class="[{'hidden' : address.id == defaultAddressId}]" >设为默认</a>
|
||
<span :class="['new-addr-bar', {'hidden' : address.id == defaultAddressId}]">|</span>
|
||
<a href="javascript:void(0);" @click.stop="editAddress(address.id)">编辑</a>
|
||
<span class="new-addr-bar">|</span>
|
||
<a href="javascript:void(0);" @click.stop="deleteAddress(address.id)">删除</a>
|
||
</div>
|
||
</li>
|
||
<!-- </block> -->
|
||
</span>
|
||
|
||
</ul>
|
||
|
||
<div class="clear"></div>
|
||
</div>
|
||
|
||
<!--支付方式-->
|
||
<div class="logistics">
|
||
<h3>选择支付方式</h3>
|
||
<ul class="pay-list">
|
||
<li class="" @click="choosePayMethod(1)" style="width: 180px;height:40px;padding:3px;"><img src="img/wxpay.png"/><span></span></li>
|
||
<!-- <li class="pay qq" @click="choosePayMethod(1)"><img src="images/weizhifu.jpg"/>微信<span></span></li> -->
|
||
<!-- <li class="pay taobao" @click="choosePayMethod(2)"><img src="images/zhifubao.jpg"/>支付宝<span></span></li> -->
|
||
<li class="" @click="choosePayMethod(2)" style="width: 180px;height:40px;padding:3px;"><img src="img/alipay.png"/><span></span></li>
|
||
</ul>
|
||
</div>
|
||
<div class="clear"></div>
|
||
|
||
<!--订单 -->
|
||
<div class="concent">
|
||
<div id="payTable">
|
||
<h3>确认订单信息</h3>
|
||
<div class="cart-table-th">
|
||
<div class="wp">
|
||
|
||
<div class="th th-item">
|
||
<div class="td-inner">商品信息</div>
|
||
</div>
|
||
<div class="th th-price">
|
||
<div class="td-inner">单价</div>
|
||
</div>
|
||
<div class="th th-amount">
|
||
<div class="td-inner">数量</div>
|
||
</div>
|
||
<div class="th th-sum">
|
||
<div class="td-inner">金额</div>
|
||
</div>
|
||
<div class="th th-oplist">
|
||
<div class="td-inner">配送方式</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
|
||
<tr class="item-list">
|
||
<div class="bundle bundle-last" v-for="(orderItem, index) in orderItemList">
|
||
|
||
<div class="bundle-main">
|
||
<ul class="item-content clearfix">
|
||
<div class="pay-phone">
|
||
<li class="td td-item">
|
||
<div class="item-pic">
|
||
<a :href="'item.html?itemId=' + orderItem.itemId" target="_blank" class="J_MakePoint">
|
||
<img :src="orderItem.itemImgUrl" class="itempic J_ItemImg"
|
||
style="width: 80px;height: 80px"></a>
|
||
</div>
|
||
<div class="item-info">
|
||
<div class="item-basic-info">
|
||
<a :href="'item.html?itemId=' + orderItem.itemId" target="_blank" class="item-title J_MakePoint"
|
||
data-point="tbcart.8.11">{{orderItem.itemName}}</a>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="td td-info">
|
||
<div class="item-props">
|
||
<span class="sku-line">规格:{{orderItem.specName}}</span>
|
||
</div>
|
||
</li>
|
||
<li class="td td-price">
|
||
<div class="item-price price-promo-promo">
|
||
<div class="price-content">
|
||
<em
|
||
class="J_Price price-now">{{orderItem.priceDiscount / 100}}</em>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</div>
|
||
<li class="td td-amount">
|
||
<div class="amount-wrapper ">
|
||
<div class="item-amount ">
|
||
<span class="phone-title">购买数量</span>
|
||
<div class="sl">
|
||
{{orderItem.buyCounts}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="td td-sum">
|
||
<div class="td-inner">
|
||
<em tabindex="0"
|
||
class="J_ItemSum number">{{orderItem.priceDiscount * orderItem.buyCounts / 100}}</em>
|
||
</div>
|
||
</li>
|
||
<li class="td td-oplist">
|
||
<div class="td-inner">
|
||
<span class="phone-title">配送方式</span>
|
||
<div class="pay-logis">
|
||
包邮
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
</ul>
|
||
<div class="clear"></div>
|
||
</div>
|
||
</div>
|
||
</tr>
|
||
<div class="clear"></div>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="clear"></div>
|
||
<div class="pay-total">
|
||
<!--留言-->
|
||
<div class="order-extra">
|
||
<div class="order-user-info">
|
||
<div id="holyshit257" class="memo">
|
||
<label>买家留言:</label>
|
||
<input v-model="orderRemarker" type="text" title="选填, 可写备注" placeholder="选填, 可写备注"
|
||
class="memo-input J_MakePoint c2c-text-default memo-close">
|
||
<div class="msg hidden J-msg">
|
||
<p class="error">最多输入500个字符</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
<!--含运费小计 -->
|
||
<div class="buy-point-discharge ">
|
||
<p class="price g_price ">
|
||
合计(包邮)
|
||
<!-- <span>¥</span> -->
|
||
<em class="pay-sum">¥{{totalAmount / 100}}</em>
|
||
</p>
|
||
</div>
|
||
|
||
<!--信息 -->
|
||
<div class="order-go clearfix">
|
||
<div class="pay-confirm clearfix">
|
||
<div class="box">
|
||
<div tabindex="0" id="holyshit267" class="realPay"><em class="t">实付款:</em>
|
||
<span class="price g_price ">
|
||
<!-- <span>¥</span> -->
|
||
<em class="style-large-bold-red " id="J_ActualFee">¥{{totalAmount / 100}}</em>
|
||
</span>
|
||
</div>
|
||
|
||
<div id="holyshit268" class="pay-address">
|
||
|
||
<p class="buy-footer-address">
|
||
<span class="buy-line-title buy-line-title-type">寄送至:</span>
|
||
<span class="buy--address-detail">
|
||
<span class="province">{{confirmAddress.province}}</span>
|
||
<span class="city">{{confirmAddress.city}}</span>
|
||
<span class="dist">{{confirmAddress.district}}</span>
|
||
<span class="street">{{confirmAddress.detail}}</span>
|
||
</span>
|
||
</p>
|
||
<p class="buy-footer-address">
|
||
<span class="buy-line-title">收货人:</span>
|
||
<span class="buy-address-detail">
|
||
<span class="buy-user">{{confirmAddress.receiver}}</span>
|
||
<span class="buy-phone">{{confirmAddress.mobile}}</span>
|
||
</span>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="holyshit269" class="submitOrder">
|
||
<div class="go-btn-wrap">
|
||
<a id="J_Go"
|
||
href="javascript:void(0);"
|
||
@click="submitOrder"
|
||
class="btn-go"
|
||
tabindex="0"
|
||
title="点击此按钮,提交订单">提交订单</a>
|
||
</div>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="clear"></div>
|
||
</div>
|
||
<!-- </div> -->
|
||
<div class="footer ">
|
||
<div class="footer-hd ">
|
||
<p>
|
||
<a href="https://www.imooc.com/" target="_blank">慕课网</a>
|
||
<b>|</b>
|
||
<a href="https://coding.imooc.com/class/217.html" target="_blank">分布式架构仿抖音短视频</a>
|
||
<b>|</b>
|
||
<a href="https://coding.imooc.com/class/261.html" target="_blank">Netty仿微信聊天</a>
|
||
<b>|</b>
|
||
<a href="https://coding.imooc.com/class/201.html" target="_blank">Zookeeper与dubbo入门</a>
|
||
<b>|</b>
|
||
<a href="https://coding.imooc.com/class/293.html" target="_blank">支付宝小程序</a>
|
||
</p>
|
||
</div>
|
||
<div class="footer-bd ">
|
||
<p>
|
||
<em>© 2019 imooc.com 京ICP备12003892号-11 北京奥鹏文化传媒有限公司 版权所有</em>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<!-- </div> -->
|
||
<div class="theme-popover-mask"></div>
|
||
<div class="theme-popover">
|
||
|
||
<!--标题 -->
|
||
<div class="am-cf am-padding">
|
||
<div class="am-fl am-cf"><strong class="am-text-danger am-text-lg">新增地址</strong> / <small>Add
|
||
address</small></div>
|
||
</div>
|
||
<hr />
|
||
|
||
<div class="am-u-md-12">
|
||
<form class="am-form am-form-horizontal">
|
||
<div class="am-form-group">
|
||
<label for="user-name" class="am-form-label">收货人</label>
|
||
<div class="am-form-content">
|
||
<input type="text" id="user-name" placeholder="收货人" v-model="receiver" maxlength="12">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="am-form-group">
|
||
<label for="user-phone" class="am-form-label">手机号码</label>
|
||
<div class="am-form-content">
|
||
<input id="user-phone" placeholder="手机号必填" v-model="mobile" maxlength="11">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="am-form-group">
|
||
<label for="user-phone" class="am-form-label">所在地</label>
|
||
<div id="example" class="am-form-content address">
|
||
<select v-model="prov">
|
||
<option v-for="option in arr" :value="option.name">{{ option.name }}</option>
|
||
</select>
|
||
<select v-model="city">
|
||
<option v-for="option in cityArr" :value="option.name">{{ option.name }}</option>
|
||
</select>
|
||
<select v-model="district" v-if="district">
|
||
<option v-for="option in districtArr" :value="option.name">{{ option.name }}</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="am-form-group">
|
||
<label for="user-intro" class="am-form-label">详细地址</label>
|
||
<div class="am-form-content">
|
||
<textarea class="" rows="3" id="user-intro" placeholder="输入详细地址"
|
||
v-model="detail"></textarea>
|
||
<small>100字以内写出你的详细地址...</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="am-form-group theme-poptit">
|
||
<div class="am-u-sm-9 am-u-sm-push-3">
|
||
<div class="am-btn am-btn-danger" @click="saveNewAddressOrUpdate">保存</div>
|
||
<div class="am-btn am-btn-danger close" @click="closeAddressDialog">取消</div>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
|
||
<!-- <input type="hidden" id="hiddenOrderId" :value="orderId"/>
|
||
<a href="" id="alipayLink" target="_blank"></a> -->
|
||
</div>
|
||
|
||
<div class="clear"></div>
|
||
</div>
|
||
<script type="text/javascript " src="js/app.js"></script>
|
||
<script type="text/javascript " src="js/cities.js"></script>
|
||
<script type="text/javascript">
|
||
// $(document).ready(function(){
|
||
// $("#alipayLink").one("click",function(){
|
||
// var orderId = $("#hiddenOrderId").val();
|
||
// debugger;
|
||
// window.open('alipayTempTransit.html?orderId='+orderId);
|
||
// });
|
||
// });
|
||
var index = new Vue({
|
||
el: "#pay",
|
||
data: {
|
||
userIsLogin: false,
|
||
userInfo: {},
|
||
|
||
orderItemList: [], // 订单结算的商品列表
|
||
totalAmount: 0, // 订单总价格
|
||
|
||
defaultAddressId: "", // 默认地址id
|
||
choosedAddressId: "", // 选中的地址id
|
||
addressList: [],
|
||
|
||
updatedAddressId: "", // 用于更新地址的id,如果为空,新增,如果不为空,修改
|
||
|
||
confirmAddress: {}, // 确认地址
|
||
|
||
choosedPayMethod: 0,
|
||
orderRemarker: "", // 用户备注留言
|
||
|
||
receiver: "",
|
||
mobile: "",
|
||
province: "",
|
||
// city: "",
|
||
// district: "",
|
||
detail: "",
|
||
|
||
orderId: "",
|
||
|
||
arr: arrAll,
|
||
prov: '北京',
|
||
city: '北京',
|
||
district: '东城区',
|
||
cityArr: [],
|
||
districtArr: []
|
||
},
|
||
|
||
watch: {
|
||
prov: {
|
||
// 表格数据刷新后需清空之前查看的订单详情内容
|
||
handler: function (newVal, oldVal) {
|
||
this.updateCity();
|
||
this.updateDistrict();
|
||
},
|
||
deep: true,
|
||
},
|
||
city: {
|
||
// 表格数据刷新后需清空之前查看的订单详情内容
|
||
handler: function (newVal, oldVal) {
|
||
this.updateDistrict();
|
||
},
|
||
deep: true,
|
||
},
|
||
|
||
},
|
||
|
||
created() {
|
||
this.updateCity();
|
||
this.updateDistrict();
|
||
|
||
// var me = this;
|
||
// 通过cookie判断用户是否登录
|
||
this.judgeUserLoginStatus();
|
||
|
||
// 渲染结算订单信息
|
||
this.renderOrderInfoList();
|
||
|
||
// 渲染地址信息
|
||
this.renderUserAddressList();
|
||
},
|
||
methods: {
|
||
goUserCenter() {
|
||
// 判断用户是否登录
|
||
var userIsLogin = this.userIsLogin;
|
||
if (!userIsLogin) {
|
||
// 用户未登录,则跳转
|
||
window.location.href = "login.html?returnUrl=" + app.centerServerUrl;
|
||
} else {
|
||
window.location.href = app.centerServerUrl;
|
||
}
|
||
},
|
||
// goAlipay() {
|
||
// window.open("alipayTempTransit.html?orderId=" + this.orderId);
|
||
// },
|
||
choosePayMethod(payMethod) {
|
||
this.choosedPayMethod = payMethod;
|
||
|
||
},
|
||
// 提交订单,创建订单
|
||
submitOrder() {
|
||
// 判断提交的商品不能为空
|
||
var orderItemList = this.orderItemList;
|
||
if (orderItemList == null || orderItemList == undefined || orderItemList == '' || orderItemList.length <= 0) {
|
||
alert("没有商品信息,订单无法提交~!");
|
||
return;
|
||
}
|
||
// 拼接规格ids
|
||
var itemSpecIds = "";
|
||
for (var i = 0 ; i < orderItemList.length ; i ++) {
|
||
var tmpSpecId = orderItemList[i].specId;
|
||
itemSpecIds += tmpSpecId;
|
||
if (i < orderItemList.length-1) {
|
||
itemSpecIds += ",";
|
||
}
|
||
}
|
||
|
||
// 判断选中的地址id不能为空
|
||
var choosedAddressId = this.choosedAddressId;
|
||
if (choosedAddressId == null || choosedAddressId == undefined || choosedAddressId == '') {
|
||
alert("请选择收货地址!");
|
||
return;
|
||
}
|
||
|
||
// 判断支付方式不能为空
|
||
var choosedPayMethod = parseInt(this.choosedPayMethod);
|
||
if (choosedPayMethod != 1 && choosedPayMethod != 2) {
|
||
alert("请选择支付方式!");
|
||
return;
|
||
}
|
||
|
||
// var newWindow = window.open();
|
||
|
||
// 买家备注可以为空
|
||
var orderRemarker = this.orderRemarker;
|
||
// console.log(orderRemarker);
|
||
|
||
var userInfo = this.userInfo;
|
||
var serverUrl = app.serverUrl;
|
||
axios.defaults.withCredentials = true;
|
||
axios.post(
|
||
serverUrl + '/orders/create',
|
||
{
|
||
"userId": userInfo.id,
|
||
"itemSpecIds": itemSpecIds,
|
||
"addressId": choosedAddressId,
|
||
"payMethod": choosedPayMethod,
|
||
"leftMsg": orderRemarker,
|
||
},
|
||
{
|
||
headers: {
|
||
'headerUserId': userInfo.id,
|
||
'headerUserToken': userInfo.userUniqueToken
|
||
}
|
||
})
|
||
.then(res => {
|
||
if (res.data.status == 200) {
|
||
// alert("OK");
|
||
var orderId = res.data.data;
|
||
// 判断是否微信还是支付宝支付
|
||
if (choosedPayMethod == 1) {
|
||
// 微信支付则跳转到微信支付页面,并且获得支付二维码
|
||
window.location.href = "wxpay.html?orderId=" + orderId;
|
||
} else if (choosedPayMethod == 2) {
|
||
this.orderId = orderId;
|
||
|
||
// 支付宝支付直接跳转
|
||
window.location.href = "alipay.html?orderId=" + orderId + "&amount="+this.totalAmount;
|
||
window.open("alipayTempTransit.html?orderId=" + orderId);
|
||
// const newWindow = window.open();
|
||
// 弹出的新窗口进行支付
|
||
// newWindow.location = "alipayTempTransit.html?orderId=" + orderId;
|
||
// this.$nextTick(()=> {
|
||
// // 当前页面跳转后会轮训支付结果
|
||
// newWindow.location.href = "alipay.html?orderId=" + orderId;
|
||
// })
|
||
} else {
|
||
alert("目前只支持微信或支付宝支付!");
|
||
}
|
||
|
||
} else {
|
||
alert(res.data.msg);
|
||
}
|
||
});
|
||
},
|
||
// 编辑地址
|
||
editAddress(addressId) {
|
||
// 获得编辑的地址内容
|
||
var addressList = this.addressList;
|
||
var updateAddress = null;
|
||
for (var i = 0 ; i < addressList.length ; i ++) {
|
||
var tmpAddress = addressList[i];
|
||
if (tmpAddress.id == addressId) {
|
||
updateAddress = tmpAddress;
|
||
break;
|
||
}
|
||
}
|
||
|
||
// 赋值
|
||
this.receiver = updateAddress.receiver;
|
||
this.mobile = updateAddress.mobile;
|
||
this.prov = updateAddress.province;
|
||
this.city = updateAddress.city;
|
||
this.district = updateAddress.district;
|
||
this.detail = updateAddress.detail;
|
||
|
||
// 弹出对话框
|
||
this.showAddressDialog();
|
||
|
||
// 设置更新地址的id
|
||
this.updatedAddressId = addressId;
|
||
},
|
||
// 弹出对话框
|
||
showAddressDialog() {
|
||
// 禁止遮罩层下面的内容滚动
|
||
$(document.body).css("overflow","hidden");
|
||
$(this).addClass("selected");
|
||
$(this).parent().addClass("selected");
|
||
|
||
$('.theme-popover-mask').show();
|
||
$('.theme-popover-mask').height($(window).height());
|
||
$('.theme-popover').slideDown(200);
|
||
},
|
||
// 删除地址
|
||
deleteAddress(addressId) {
|
||
var isDel = window.confirm("确认删除改地址吗");
|
||
if (!isDel) {
|
||
return;
|
||
}
|
||
|
||
// 如果删除的地址是默认地址或者选中地址,则choosedAddressId和defaultAddressId要设置为空
|
||
if (addressId == this.choosedAddressId) {
|
||
this.choosedAddressId = "";
|
||
}
|
||
|
||
if (addressId == this.defaultAddressId) {
|
||
this.defaultAddressId = "";
|
||
}
|
||
|
||
var userInfo = this.userInfo;
|
||
var serverUrl = app.serverUrl;
|
||
axios.defaults.withCredentials = true;
|
||
axios.post(
|
||
serverUrl + '/address/delete?userId=' + userInfo.id + "&addressId=" + addressId,
|
||
{},
|
||
{
|
||
headers: {
|
||
'headerUserId': userInfo.id,
|
||
'headerUserToken': userInfo.userUniqueToken
|
||
}
|
||
})
|
||
.then(res => {
|
||
if (res.data.status == 200) {
|
||
this.renderUserAddressList();
|
||
} else {
|
||
alert(res.data.msg);
|
||
}
|
||
});
|
||
},
|
||
// 设置默认地址
|
||
setDefaultAddress(addressId) {
|
||
var userInfo = this.userInfo;
|
||
var serverUrl = app.serverUrl;
|
||
axios.defaults.withCredentials = true;
|
||
axios.post(
|
||
serverUrl + '/address/setDefalut?userId=' + userInfo.id + "&addressId=" + addressId,
|
||
{},
|
||
{
|
||
headers: {
|
||
'headerUserId': userInfo.id,
|
||
'headerUserToken': userInfo.userUniqueToken
|
||
}
|
||
})
|
||
.then(res => {
|
||
if (res.data.status == 200) {
|
||
this.renderUserAddressList();
|
||
} else {
|
||
alert(res.data.msg);
|
||
}
|
||
});
|
||
},
|
||
// 选择地址,切换选中效果
|
||
chooseAddress(choosedAddressId) {
|
||
this.choosedAddressId = choosedAddressId;
|
||
// this.defaultAddressId = choosedAddressId;
|
||
// console.log("this.defaultAddressId:" + this.defaultAddressId);
|
||
// console.log("this.choosedAddressId:" + this.choosedAddressId);
|
||
|
||
// 确认地址动态改变
|
||
this.renderConfirmAddress(choosedAddressId);
|
||
},
|
||
renderConfirmAddress(addressId) {
|
||
// 提交订单的确认地址要跟着动态改变
|
||
var addressList = this.addressList;
|
||
var confirmAddress = null;
|
||
for (var i = 0 ; i < addressList.length ; i ++) {
|
||
var tmpAddress = addressList[i];
|
||
if (tmpAddress.id == addressId) {
|
||
confirmAddress = tmpAddress;
|
||
break;
|
||
}
|
||
}
|
||
// 赋值
|
||
this.confirmAddress = confirmAddress;
|
||
},
|
||
updateCity() {
|
||
for (var i in this.arr) {
|
||
var obj = this.arr[i];
|
||
if (obj.name == this.prov) {
|
||
this.cityArr = obj.sub;
|
||
break;
|
||
}
|
||
}
|
||
this.city = this.cityArr[1].name;
|
||
},
|
||
updateDistrict() {
|
||
for (var i in this.cityArr) {
|
||
var obj = this.cityArr[i];
|
||
if (obj.name == this.city) {
|
||
this.districtArr = obj.sub;
|
||
break;
|
||
}
|
||
}
|
||
if (this.districtArr && this.districtArr.length > 0 && this.districtArr[1].name) {
|
||
this.district = this.districtArr[1].name;
|
||
} else {
|
||
this.district = '';
|
||
}
|
||
},
|
||
// 创建用户新地址
|
||
saveNewAddressOrUpdate() {
|
||
var receiver = this.receiver;
|
||
if (receiver == null || receiver == '' || receiver == undefined) {
|
||
alert("收货人姓名不能为空");
|
||
return;
|
||
}
|
||
if (receiver.length > 12) {
|
||
alert("收货人姓名不能太长");
|
||
return;
|
||
}
|
||
|
||
var mobile = this.mobile;
|
||
if (mobile == null || mobile == '' || mobile == undefined) {
|
||
alert("手机不能为空");
|
||
return;
|
||
}
|
||
if (mobile.length != 11) {
|
||
alert("手机号长度为11位");
|
||
return;
|
||
}
|
||
var checkMobile = app.checkMobile(mobile);
|
||
if (!checkMobile) {
|
||
alert('请输入有效的手机号码!');
|
||
return;
|
||
}
|
||
|
||
var prov = this.prov;
|
||
var city = this.city;
|
||
var district = this.district;
|
||
|
||
var detail = this.detail;
|
||
if (detail == null || detail == '' || detail == undefined) {
|
||
alert("详细地址不能为空");
|
||
return;
|
||
}
|
||
|
||
// 添加新地址
|
||
var userInfo = this.userInfo;
|
||
var serverUrl = app.serverUrl;
|
||
axios.defaults.withCredentials = true;
|
||
|
||
var addressId = this.updatedAddressId;
|
||
|
||
// 地址id为空,则新增地址,否则更新地址
|
||
if (addressId == "" || addressId == undefined || addressId == null) {
|
||
axios.post(
|
||
serverUrl + '/address/add',
|
||
{
|
||
"userId": userInfo.id,
|
||
"receiver": receiver,
|
||
"mobile": mobile,
|
||
"province": prov,
|
||
"city": city,
|
||
"district": district,
|
||
"detail": detail
|
||
},
|
||
{
|
||
headers: {
|
||
'headerUserId': userInfo.id,
|
||
'headerUserToken': userInfo.userUniqueToken
|
||
}
|
||
})
|
||
.then(res => {
|
||
if (res.data.status == 200) {
|
||
this.closeAddressDialog();
|
||
this.renderUserAddressList();
|
||
|
||
// 设置更新地址的id为空
|
||
this.updatedAddressId = "";
|
||
} else if (res.data.status == 500) {
|
||
alert(res.data.msg);
|
||
}
|
||
});
|
||
} else {
|
||
axios.post(
|
||
serverUrl + '/address/update',
|
||
{
|
||
"addressId": addressId,
|
||
"userId": userInfo.id,
|
||
"receiver": receiver,
|
||
"mobile": mobile,
|
||
"province": prov,
|
||
"city": city,
|
||
"district": district,
|
||
"detail": detail
|
||
},
|
||
{
|
||
headers: {
|
||
'headerUserId': userInfo.id,
|
||
'headerUserToken': userInfo.userUniqueToken
|
||
}
|
||
})
|
||
.then(res => {
|
||
if (res.data.status == 200) {
|
||
this.closeAddressDialog();
|
||
this.renderUserAddressList();
|
||
} else if (res.data.status == 500) {
|
||
alert(res.data.msg);
|
||
}
|
||
});
|
||
}
|
||
|
||
},
|
||
closeAddressDialog() {
|
||
$(document.body).css("overflow","visible");
|
||
$('.theme-login').removeClass("selected");
|
||
$('.item-props-can').removeClass("selected");
|
||
$('.theme-popover-mask').hide();
|
||
$('.theme-popover').slideUp(200);
|
||
|
||
// 设置更新地址的id为空
|
||
this.updatedAddressId = "";
|
||
this.flushAddressForm();
|
||
},
|
||
renderUserAddressList() {
|
||
var userInfo = this.userInfo;
|
||
// 请求后端获得最新数据
|
||
var serverUrl = app.serverUrl;
|
||
axios.defaults.withCredentials = true;
|
||
axios.post(
|
||
serverUrl + '/address/list?userId=' + userInfo.id, {},
|
||
{
|
||
headers: {
|
||
'headerUserId': userInfo.id,
|
||
'headerUserToken': userInfo.userUniqueToken
|
||
}
|
||
})
|
||
.then(res => {
|
||
if (res.data.status == 200) {
|
||
var addressList = res.data.data;
|
||
// console.log(addressList);
|
||
this.addressList = addressList;
|
||
|
||
// 设置默认应该选中的地址id
|
||
this.setDefaultChoosedAddressId(addressList);
|
||
|
||
// 清空地址内容
|
||
this.flushAddressForm();
|
||
} else if (res.data.status == 500) {
|
||
alert(res.data.msg);
|
||
console.log(res.data.msg);
|
||
} else {
|
||
alert(res.data.msg);
|
||
console.log(res.data.msg);
|
||
}
|
||
});
|
||
},
|
||
flushAddressForm() {
|
||
this.receiver = "";
|
||
this.mobile = "";
|
||
this.prov = "北京";
|
||
this.city = "北京";
|
||
this.district = "东城区";
|
||
this.detail = "";
|
||
this.updateCity();
|
||
this.updateDistrict();
|
||
},
|
||
setDefaultChoosedAddressId(addressList) {
|
||
var confirmAddress = {};
|
||
for (var i = 0 ; i < addressList.length ; i ++) {
|
||
var address = addressList[i];
|
||
if (address.isDefault == 1) {
|
||
this.defaultAddressId = address.id;
|
||
confirmAddress = address;
|
||
// 如果当前页面还没有选中的地址,则把默认地址作为选中地址
|
||
var choosedAddressId = this.choosedAddressId;
|
||
if (choosedAddressId == null || choosedAddressId == undefined || choosedAddressId == '') {
|
||
this.choosedAddressId = address.id;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
// 赋值
|
||
this.confirmAddress = confirmAddress;
|
||
},
|
||
renderOrderInfoList() {
|
||
var selectedItemSpecIds = app.getUrlParam("selectedItemSpecIds");
|
||
if (selectedItemSpecIds == null || selectedItemSpecIds == '' || selectedItemSpecIds ==
|
||
undefined) {
|
||
app.goErrorPage();
|
||
}
|
||
|
||
var specIdsArray = new Array();
|
||
specIdsArray = selectedItemSpecIds.split(",");
|
||
|
||
var orderItemList = [];
|
||
var totalAmount = 0;
|
||
for (var i = 0; i < specIdsArray.length; i++) {
|
||
var tmpSpecId = specIdsArray[i];
|
||
var orderItem = this.getItemFromCookieShopcartList(tmpSpecId);
|
||
orderItemList.push(orderItem);
|
||
totalAmount += (orderItem.priceDiscount * orderItem.buyCounts);
|
||
}
|
||
// console.log(orderItemList);
|
||
this.orderItemList = orderItemList;
|
||
this.totalAmount = totalAmount;
|
||
|
||
if (orderItemList.length <= 0) {
|
||
alert("没有商品信息,或订单已经提交");
|
||
window.location.href = "shopcart.html";
|
||
}
|
||
},
|
||
getItemFromCookieShopcartList(specId) {
|
||
var shopcartList = app.getShopcartList();
|
||
|
||
if (shopcartList == null || shopcartList == undefined || shopcartList.length == 0) {
|
||
app.goErrorPage();
|
||
}
|
||
|
||
for (var i = 0; i < shopcartList.length; i++) {
|
||
var tmpSpecId = shopcartList[i].specId;
|
||
if (tmpSpecId == specId) {
|
||
return shopcartList[i];
|
||
}
|
||
}
|
||
},
|
||
// 打开商品详情页面
|
||
showItemDetail(itemId) {
|
||
window.open("item.html?itemId=" + itemId);
|
||
},
|
||
// 通过cookie判断用户是否登录
|
||
judgeUserLoginStatus() {
|
||
var userCookie = app.getCookie("user");
|
||
if (userCookie != null && userCookie != undefined && userCookie != '') {
|
||
var userInfoStr = decodeURIComponent(userCookie);
|
||
// console.log(userInfo);
|
||
if (userInfoStr != null && userInfoStr != undefined && userInfoStr != '') {
|
||
var userInfo = JSON.parse(userInfoStr);
|
||
// 判断是否是一个对象
|
||
if ( typeof(userInfo) == "object" ) {
|
||
this.userIsLogin = true;
|
||
// console.log(userInfo);
|
||
this.userInfo = userInfo;
|
||
} else {
|
||
this.userIsLogin = false;
|
||
this.userInfo = {};
|
||
}
|
||
}
|
||
} else {
|
||
this.userIsLogin = false;
|
||
this.userInfo = {};
|
||
}
|
||
}
|
||
}
|
||
});
|
||
</script>
|
||
</body>
|
||
|
||
</html> |