123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642 |
- {extend name="base" /}
- {block name="title"}Order Info{/block}
- {block name="styles"}
- <link rel="stylesheet" href="/assets/index/css/orderDetails.css?t=12">
- {/block}
- {block name="mainArea"}
- <section class="pageContainer">
- <div class="pageMain">
- <!-- 页面菜单 -->
- <div class="navContainer" id="userNavContainer">
- <a href="/index/index/index.html">
- <nav class="navItem">
- <div class="navItemFlex">
- <img src="/assets/index/asstes/icon/hm.png" alt="">
- <h2 class="navTitle">Home</h2>
- </div>
- </nav>
- </a>
- <nav class="navItem">
- <div class="navItemFlex">
- <img src="/assets/index/asstes/icon/order.png" alt="">
- <h2 class="navTitle">My orders</h2>
- </div>
- <div class="sunNavBox">
- <a href="#">
- <nav class="sunNavItem orderNavItem" id="unpaid" data-type="payment">
- <h3 class="sunNavTitle">Unpaid</h3>
- </nav>
- </a>
- <a href="#">
- <nav class="sunNavItem orderNavItem" id="treat" data-type="delivery">
- <h3 class="sunNavTitle">To be shipped</h3>
- </nav>
- </a>
- <a href="#">
- <nav class="sunNavItem orderNavItem" data-type="received">
- <h3 class="sunNavTitle">Shipped</h3>
- </nav>
- </a>
- <a href="#">
- <nav class="sunNavItem orderNavItem" data-type="comment">
- <h3 class="sunNavTitle">Received</h3>
- </nav>
- </a>
- </div>
- </nav>
- <a href="/index/user/myScores.html">
- <nav class="navItem">
- <div class="navItemFlex">
- <img src="/assets/index/asstes/icon/jf.png" alt="">
- <h2 class="navTitle">My points</h2>
- </div>
- </nav>
- </a>
- </div>
- <!-- 页面内容 -->
- <div class="pageConten">
- <div class="odTitleBox">
- <img src="/assets/index/asstes/icon/fjt.png" alt="">
- <h4 class="odTitle">Order Information</h4>
- </div>
- <!-- <div class="odMenuBox">
- <div class="odMenuItem">
- <img src="/assets/index/asstes/icon/dy.png" alt="">
- <p>打印订单</p>
- </div>
- <div class="odMenuItem">
- <img src="/assets/index/asstes/icon/th.png" alt="">
- <p>退货退款</p>
- </div>
- </div>-->
- <div class="orderInfoBox">
- <!-- 左边内容 -->
- <div class="leftInfoBox">
- <!-- 订单名字 -->
- <div class="orderNameBox eleBox">
- <div class="orNameFlex">
- <h5 class="orName">#Order Information</h5>
- <p class="orTime">Created At:{$order['create_time']}</p>
- </div>
- <div class="orStList">
- {if $order['pay_status'] == 20}
- <div class="orStItem paid">
- <span></span>
- <p>Paid</p>
- </div>
- {/if}
- {if $order['delivery_status'] == 20}
- <div class="orStItem shipped">
- <span></span>
- <p>shipped</p>
- </div>
- {/if}
- </div>
- </div>
- <!-- 订单商品 -->
- <div class="orderGoodsBox eleBox">
- <div class="ogTeFlex">
- <p class="ogTitle">Listing</p>
- {if $order['pay_status'] == 10 }
- <div class="ogMarkButton" id="continuePayBtn">Pay With PayPal</div>
- <div class="ogCancelButton">Cancel</div>
- {/if}
- {if $order['delivery_status'] == 20 && $order['receipt_status'] == 10}
- <div class="receivedConfirmButton">Confirm receipt</div>
- {/if}
- </div>
- <p class="ogTips">
- Your goods will be shipped in 72 hours
- </p>
- {foreach $order['goods'] as $goods}
- <div class="ogGoodsInfo" data-id="{$goods['goods_id']}"
- order-goods-id="{$goods['order_goods_id']}">
- <div class="ogImgBox">
- <img src="{$goods['goods_image']}"
- alt="">
- </div>
- <div class="ogTitleBox">
- <p class="ogTitle">{$goods['goods_name']}</p>
- <p class="ogSpecs">
- {foreach $goods['remark_for_one'] as $key=>$flavor}
- <span>| {$key} × {$flavor}</span>
- {/foreach}
- </p>
- </div>
- <p class="ogPr">${$goods['goods_price']}x{$goods['total_num']}</p>
- <p class="ogToPr">${$goods['total_price']}</p>
- <!-- 评价 -->
- {eq name="order['receipt_status']" value="20"}
- <div class="evaluate">Preview</div>
- {/eq}
- </div>
- {/foreach}
- </div>
- <!-- 支付状态 -->
- <div class="paymentInfoBox eleBox">
- <div class="opTeFlex">
- <p class="opTitle">Bill</p>
- <!-- <div class="opMarkButton">标记为已付款</div>-->
- </div>
- <div class="opInfoBox">
- <div class="opInfoItem">
- <p class="opIKey">Express</p>
- <p class="opIValue">$0.00</p>
- </div>
- <div class="opInfoItem">
- <p class="opIKey">Tax</p>
- <p class="opIValue">$0.00</p>
- </div>
- <div class="opInfoItem">
- <p class="opIKey">Total</p>
- <p class="opIValue">${$order['total_price']}</p>
- </div>
- <div class="opInfoItem">
- <p class="opIKey">Paid</p>
- <p class="opIValue">${$order['pay_price']}</p>
- </div>
- </div>
- </div>
- <!-- 物流信息 -->
- <div class="logisticsBox eleBox">
- <div class="logsTeFlex">
- <p class="logsTitle">Logistics Tracks</p>
- <div class="openButton">
- <img src="/assets/index/asstes/icon/slt.png" alt="">
- </div>
- </div>
- <div class="logsInfo openBox">
- <div class="logList">
- <div class="logsLink"></div>
- <!-- 物流天数据 -->
- <div class="logItem">
- <!-- <p class="logTime">2024.03.11</p>-->
- <!-- 物流当天信息 -->
- {foreach $f1Track as $track}
- <div class="logSunItem">
- <p class="dic"></p>
- <p class="logSunText">
- <span class="sunTime">{$track['time']}</span>
- <span class="sunStTe">{$track['localtion']}</span>
- <span class="sunStTips">{$track['desc']}</span>
- </p>
- </div>
- {/foreach}
- </div>
- <div class="logItem">
- <!-- <p class="logTime">2024.03.11</p>-->
- <!-- 物流当天信息 -->
- {foreach $selfTrack as $track}
- <div class="logSunItem">
- <p class="dic"></p>
- <p class="logSunText">
- <span class="sunTime">{$track['time']}</span>
- <span class="sunStTe">{$track['text']}</span>
- <span class="sunStTips">{$track['desc']}</span>
- </p>
- </div>
- {/foreach}
- </div>
- </div>
- </div>
- </div>
- </div>
- <!-- 右边内容 -->
- <div class="rightInfoBox">
- <!-- 客户信息 -->
- <div class="customInfo eleBox">
- <div class="cusTeFlex">
- <p class="cusTeTitle">Recipient Information</p>
- <div class="openButton">
- <img src="/assets/index/asstes/icon/slt.png" alt="">
- </div>
- </div>
- <div class="cusInfoBox openBox">
- <div class="cusItem">
- <p class="cusKey">Name</p>
- <p class="cusValue">{$order['address']['name']} {$order['address']['last_name']}</p>
- </div>
- <!-- <div class="cusItem">
- <p class="cusKey">电子邮件地址</p>
- <p class="cusValue">124345213@163.com</p>
- </div>-->
- <div class="cusItem">
- <p class="cusKey">Phone Number</p>
- <p class="cusValue">{$order['address']['phone']}</p>
- </div>
- </div>
- </div>
- <!-- 送货地址 -->
- <div class="addressBox eleBox">
- <div class="addTeFlex">
- <p class="addTeTitle">Shipping address</p>
- <div class="openButton">
- <img src="/assets/index/asstes/icon/slt.png" alt="">
- </div>
- </div>
- <div class="addressInfo openBox">
- <div class="addInfoItem">
- <p class="aiKey">First Name</p>
- <p class="aiValue">{$orderAddress['name']}</p>
- </div>
- <div class="addInfoItem">
- <p class="aiKey">Last Name</p>
- <p class="aiValue">{$orderAddress['last_name']}</p>
- </div>
- <!-- <div class="addInfoItem">-->
- <!-- <p class="aiKey">公司</p>-->
- <!-- <p class="aiValue">亚马逊</p>-->
- <!-- </div>-->
- <div class="addInfoItem">
- <p class="aiKey">Phone Number</p>
- <p class="aiValue">{$orderAddress['phone']}</p>
- </div>
- <div class="addInfoItem">
- <p class="aiKey">Street</p>
- <p class="aiValue">{$orderAddress['detail']}</p>
- </div>
- <!-- <div class="addInfoItem">-->
- <!-- <p class="aiKey">公寓,别至</p>-->
- <!-- <p class="aiValue">XXXXXXXXXX</p>-->
- <!-- </div>-->
- <div class="addInfoItem">
- <p class="aiKey">City</p>
- <p class="aiValue">{$orderAddress['city']}</p>
- </div>
- <div class="addInfoItem">
- <p class="aiKey">State</p>
- <p class="aiValue">{$orderAddress['region']['region']}</p>
- </div>
- <div class="addInfoItem">
- <p class="aiKey">Country</p>
- <p class="aiValue">US</p>
- </div>
- <!-- <div class="addInfoItem">-->
- <!-- <p class="aiKey">区域</p>-->
- <!-- <p class="aiValue">XXXXXXXXXX</p>-->
- <!-- </div>-->
- <div class="addInfoItem">
- <p class="aiKey">Zip Code</p>
- <p class="aiValue">{$orderAddress['zip_code']}</p>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </section>
- {/block}
- {block name="components"}
- <div id="loadingModel">
- <div class="loadingBox">
- <img src="/assets/index/asstes/icon/loading.gif" alt="Jumping to paypal.">
- </div>
- </div>
- <!-- 评价弹窗 -->
- <div id="evaluateModal">
- <div class="evaluateBox">
- <div class="evaluateItem">
- <p class="evaluateTitle">Score:</p>
- <div class="starContainer">
- <div class="starItem">
- <img class="star" src="/assets/index/asstes/icon/star.png" alt="">
- <img class="selStar" src="/assets/index/asstes/icon/selStar.png" alt="">
- </div>
- <div class="starItem">
- <img class="star" src="/assets/index/asstes/icon/star.png" alt="">
- <img class="selStar" src="/assets/index/asstes/icon/selStar.png" alt="">
- </div>
- <div class="starItem">
- <img class="star" src="/assets/index/asstes/icon/star.png" alt="">
- <img class="selStar" src="/assets/index/asstes/icon/selStar.png" alt="">
- </div>
- <div class="starItem">
- <img class="star" src="/assets/index/asstes/icon/star.png" alt="">
- <img class="selStar" src="/assets/index/asstes/icon/selStar.png" alt="">
- </div>
- <div class="starItem">
- <img class="star" src="/assets/index/asstes/icon/star.png" alt="">
- <img class="selStar" src="/assets/index/asstes/icon/selStar.png" alt="">
- </div>
- </div>
- </div>
- <div class="evaluateItem">
- <div class="textareaBox">
- <textarea id="evaluateTextarea" placeholder="Review now"></textarea>
- </div>
- </div>
- <div class="evaluateBotBox">
- <div id="evaluateBot">submit</div>
- </div>
- </div>
- <div id="closeEvaluateModal"></div>
- </div>
- <div id="deleteAddressModal">
- <div class="deleteAddressBox">
- <p class="deteTips">Confirm receipt of goods </p>
- <input type="hidden" id="deleteAddInfoId" value="0">
- <div class="deteButtonBox">
- <div id="cancelDelete">Cancel</div>
- <div id="confirmDelete">Confirm</div>
- </div>
- </div>
- </div>
- {/block}
- {block name="scriptSrc"}
- <script>
- $(document).ready(function () {
- initNavState()
- var loadingModelEle= $("#loadingModel")
- //loadingModelEle.hide(0);
- var orderId = "{$order['order_id']}";
- //触屏事件 || 点击事件
- const tap = "ontouchstart" in window ? "touchstart" : "click";
- //返回
- $(".odTitleBox").on(tap, function () {
- if (window.history.length > 1) {
- // 返回上一页
- window.history.back();
- } else {
- //跳转首页
- window.location.replace('/index/index/index.html');
- }
- });
- $(".openButton").on(tap, function () {
- const parentEle = $(this).closest('.eleBox')
- const openBoxEle = parentEle.find(".openBox")
- openBoxEle.stop().slideToggle(80);
- });
- //初始化菜单选中状态
- function initNavState() {
- const url = window.location.href;
- const searchParams = new URLSearchParams(new URL(url).search);
- const orderType = searchParams.get("orderType");
- console.log(orderType)
- //订单中心菜单列表
- const orderNavItemList = $(".orderNavItem")
- //是否存在匹配项
- let exist = false
- if (orderNavItemList) {
- orderNavItemList.each(function (index, element) {
- const type = $(this).attr('data-type');
- if (type === orderType) {
- $(this).addClass("active")
- exist = true
- }
- })
- }
- //如果未匹配中默认选中待发货
- if (!exist) {
- $('#treat').addClass("active")
- }
- }
- //支付方法
- const orderPayment = (params) => {
- return new Promise(function (resolve, reject) {
- $.ajax({
- url: "/index/order/pay?payType=30&orderId=" + orderId,
- method: "POST",
- data: JSON.stringify(params),
- headers: {
- "Content-Type": "application/json",
- "storeId": "10001",
- "platform": "H5",
- // "Access-Token": vapesToken
- },
- dataType: "json",
- success: function (response) {
- resolve(response);
- },
- error: function (xhr, status, error) {
- reject(error);
- }
- });
- });
- }
- //支付按钮点击
- $("#continuePayBtn").on(tap, async function () {
- //popup new window to paypal
- // let left = (window.innerWidth - 600) / 2;
- // var importantStuff = window.open('', '_blank',
- // 'height=500,width=600,top=300,left=' + left + ',toolbar=no,menubar=no, scrollbars=no,resizable=no,location=no, status=no');
- // importantStuff.document.write('Preparing payment...');
- //
- // loadingModelEle.show(0)
- window.document.write('Preparing payment...');
- const params = {}
- const res = await orderPayment(params)
- const {status, message, data} = res || {}
- if (status === 200 || status === "200") {
- //popup new window to paypal
- //importantStuff.location.href = data.payment.approval_link;
- window.location.replace(data.payment.approval_link);
- var interId = setInterval(function () {
- fetchOrder(interId);
- }, 3000)
- } else if (status === 401 || status === "401") {
- window.location.replace('/index/passport/login.html');
- } else {
- showToast(message)
- }
- });
- // 创建超链接,不会被拦截
- function createSuperLabel(url, id)
- {
- let a = document.createElement("a");
- a.setAttribute("href", url);
- a.setAttribute("target", "_blank");
- a.setAttribute("id", id);
- // 防止反复添加
- if (!document.getElementById(id)) {
- document.body.appendChild(a);
- }
- a.click();
- }
- //取消未支付的订单
- $(".ogCancelButton").on(tap, async function () {
- const dp = {
- orderId: orderId
- };
- $.ajax({
- url: "/index/order/cancel",
- headers: {platform: 'H5'},
- dataType: 'json',
- data: JSON.stringify(dp),
- type: "POST",
- contentType: 'application/json',
- success: function (obj) {
- //注册成功后进入
- if (obj.status === 200 || obj.status === '200') {
- showToast("Successful")
- setTimeout(function () {
- window.location.replace('/index/user/order.html')
- }
- , 3000)
- } else if (obj.status === 401 || obj.status === '401') {
- window.location.replace('/index/passport/login.html');
- } else {
- showToast('Something wrong,please try again later')
- }
- }
- })
- });
- $(".receivedConfirmButton").on(tap, async function () {
- $("#deleteAddressModal").show(0)
- });
- //确认删除地址
- $("#confirmDelete").on(tap, function () {
- $.get('/index/order/receipt?orderId=' + orderId, function (res) {
- if (res.status === 200 || res.status === "200") {
- showToast('Success')
- setTimeout(function () {
- window.location.replace('/index/user/order.html')
- }
- , 3000)
- } else {
- showToast('Something wrong')
- }
- $("#deleteAddressModal").hide(0)
- })
- })
- //取消删除地址
- $("#cancelDelete").on(tap, function () {
- $("#deleteAddressModal").hide(0)
- })
- function fetchOrder(interId) {
- $.get('/index/order/detail?orderId=' + orderId, function (res) {
- if (res.status == 200 && res.data.order.pay_status == 20) {
- clearInterval(interId);
- $("#loadingModel").hide(0);
- window.location.replace('/index/user/orderDetails.html?orderId=' + orderId)
- }
- })
- }
- $(".orderNavItem").on(tap, function () {
- const type = $(this).attr('data-type');
- window.location.replace(`/index/user/order.html?orderType=${type}`)
- });
- //商品id(评价记录)
- let goodsId
- let orderGoodsId
- //商品评分
- let score = 0
- //商品评价点击
- $(".evaluate").on(tap, function (event) {
- event.preventDefault();
- const parentEle = $(this).closest('.ogGoodsInfo')
- goodsId = parentEle.attr("data-id")
- orderGoodsId = parentEle.attr("order-goods-id")
- $('#evaluateTextarea').val("")
- $(".starItem").removeClass('active');
- $("#evaluateModal").show(0)
- });
- $(".starItem").on(tap, function (event) {
- event.preventDefault();
- const _this = $(this)
- score = _this.index() + 1;
- _this.addClass('active');
- _this.prevAll().addClass('active');
- _this.nextAll().removeClass('active');
- });
- //输入框聚焦
- $('#evaluateTextarea').focus(function () {
- $(this).addClass('active');
- });
- //输入框失焦
- $('#evaluateTextarea').blur(function () {
- $(this).removeClass('active');
- });
- //关闭评价
- $('#closeEvaluateModal').on(tap, function () {
- $("#evaluateModal").hide(0)
- });
- //提交评价
- $('#evaluateBot').on(tap, function () {
- const evaluateTextareaEle = $('#evaluateTextarea')
- const textareaValue = evaluateTextareaEle.val()
- if (!textareaValue || textareaValue == "") {
- evaluateTextareaEle.focus()
- return
- }
- console.log("评价内容", textareaValue)
- console.log("商品id", goodsId)
- console.log("商品orderGoodsId", orderGoodsId)
- console.log("score", score)
- var dp = {
- orderId: orderId,
- form: [{
- order_goods_id: orderGoodsId,
- goods_id: goodsId,
- score: score * 10,
- content: textareaValue,
- }]
- }
- $.ajax({
- url: "/index/comment/submit",
- headers: {platform: 'H5'},
- dataType: 'json',
- data: JSON.stringify(dp),
- type: "POST",
- contentType: 'application/json',
- success: function (obj) {
- //注册成功后进入
- if (obj.status === 200 || obj.status === '200') {
- showToast("Successful")
- $("#evaluateModal").hide(0)
- goodsId = null
- } else if (obj.status === 401 || obj.status === '401') {
- window.location.replace('/index/passport/login.html');
- } else {
- showToast('Something wrong,please try again later')
- }
- }
- })
- });
- /**
- * 吐司提示
- * @param message 消息
- * @returns
- */
- function showToast(message) {
- var toastElement = $('#toastContainer');
- toastElement.text(message);
- toastElement.stop(true, true).fadeIn(200).delay(2000).fadeOut(200);
- }
- })
- </script>
- {/block}
|