| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518 |
- // pages/cart/orderDetail/orderDetail.js
- const app = getApp()
- const api = require('../../../../request/api');
- const http = require('../../../../request/http');
- const utils = require('../../../../utils/util.js');
- const storeKeys = require('../../../../utils/storageKeys.js');
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- isIphoneX: app.globalData.isIphoneX,
- isLoading: true, //是否处于加载
- countdownTime:'0:00:00',
- timer1:null,
- dataObj:{},
- swiperData: [{}, {}, {}],
- currentSwiper: 0, //轮播索引
- heights:'',
- orderId: '408',
- model: false,
- modelType:'', //1取消 2删除 3确认收货
- model_text:'', //对应的文案
- idx:'', //列表传进来的索引
- // bottomBtn: true,
- delivery_type: 10, // 配送方式 10-快递配送 20-门店自提
- timerTwo:null,
- isUnload:true,
- discountModel: false, //是否显示优惠明细弹窗
- activityDiscountList:[], //参与N件X折活动的商品
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- if(options.orderId){
- this.setData({
- orderId: options.orderId,
- idx: options.idx
- });
- }
- // this.getDetail()
- },
- toRefund(e){//申请售后
- // "order_refund_status": 1, //当前申请售后的状态 0不在售后期间内 1可以售后/再次售后 2退款中 3已关闭
- let refundType = e.currentTarget.dataset.type; //1点击商品那里的售后 2点击批量售后
- let isCarry = "";
- //自提
- if(this.data.delivery_type == 20){
- isCarry = 1
- }
- if(refundType==1){
- let item = e.currentTarget.dataset.item;
- if(item.order_refund_status==0){
- return;
- }
- if(item.order_refund_status==1){
- let type = 30, isAll = '' //仅退款
- if(item.delivery_status==20 || (this.data.delivery_type == 20 && this.data.dataObj.hx_status == 20)){
- type = 10
- }
- if(type==30 && this.data.dataObj.is_full_refund && this.data.dataObj.goods.length==1 && this.data.dataObj.goods[0].order_refund_status_text=='申请退款'){
- isAll = true
- }
- console.log('isAll-------------' + isAll)
- wx.navigateTo({
- url: '/pages/cart/pages/refund/refundApply/refundApply?pageType=' + type + '&orderGoodsId=' + item.order_goods_id + '&orderId=' + this.data.orderId + '&isAll=' + isAll +'&isCarry='+isCarry
- })
- }
- if(item.order_refund_status==2 || item.order_refund_status==3){//2退款中 3已关闭
- wx.navigateTo({
- url: '/pages/cart/pages/refund/refundDetail/refundDetail?orderRefundId=' + item.refund.order_refund_id
- })
- }
- }
- if(refundType==2 && this.data.dataObj.is_full_refund){
- wx.navigateTo({
- url: '/pages/cart/pages/refund/refundApply/refundApply?pageType=30&orderGoodsId=0&orderId=' + this.data.orderId + '&isAll=true'+'&isCarry='+isCarry
- })
- }
-
- },
- //获取订单详情
- getDetail(){
- let that = this;
- clearInterval(this.data.timerTwo);
- this.data.timerTwo = null;
- if(this.data.isLoading){
- wx.showLoading({
- title: "加载中"
- });
- }
- http.request({
- method: 'GET',
- url: api.URL + '/api/order/detail?orderId=' + this.data.orderId,
- token: utils.getStorageSync(storeKeys.TOKEN),
- success: (res) => {
- wx.hideLoading();
- let data_obj = res.data.data.order
- let delivery_type = data_obj.delivery_type || 10;
- //未核销 && 属于自提
- if(data_obj.hx_status == 10 && delivery_type == 20 && (data_obj.state_value ==12 || data_obj.state_value == 13)){
- this.getHxStatus();
- }
-
- // 筛选已参与了N件X折活动
- let activityDiscountList = data_obj.goods.filter((item)=>{
- // 是否参与了N件X折活动 0否 1是
- return item.is_activity_discount == 1;
- })
- console.log(activityDiscountList);
- that.setData({
- dataObj: data_obj,
- activityDiscountList,
- delivery_type,
- isLoading: false
- });
- if(that.data.dataObj.state_value==11 && that.data.dataObj.djs_time>0){
- that.countdown(that.data.dataObj.djs_time)
- }
- if(that.data.dataObj.express_list.length > 0 ){
- let hs = []
- let px = wx.getSystemInfoSync().windowWidth/750;
- wx.createSelectorQuery().selectAll('.part_swiper').boundingClientRect(function(rects){
- rects.forEach((v, i) => {
- if(that.data.dataObj.express_list.length > 1 ){
- hs[i] = v.height + 36*px
- }else{
- hs[i] = v.height
- }
- })
- that.setData({
- heights: hs
- })
- }).exec()
- }
- if(data_obj.state_value==40 && that.data.idx){
- let pages = getCurrentPages()
- let prevPage = pages[pages.length-2]
- if(prevPage.data.tab=='all'){
- let state_text = 'list[' + that.data.idx + '].state_text';
- let state_value = 'list[' + that.data.idx + '].state_value';
- prevPage.setData({
- [state_text]: '已关闭',
- [state_value]: 40,
- })
- }else{
- prevPage.data.list.splice(that.data.idx, 1);
- prevPage.setData({
- list: prevPage.data.list,
- ['dataObj.total']: prevPage.data.dataObj.total - 1
- })
- }
- }
- },
- error: (res) => {
-
- },
- })
- },
- //获取核销状态
- getHxStatus(){
- http.request({
- method: 'GET',
- url: api.URL + '/api/order/checkHxStatus?orderId=' + this.data.orderId,
- token: utils.getStorageSync(storeKeys.TOKEN),
- success: (res) => {
- clearInterval(this.data.timerTwo);
- this.data.timerTwo = null;
- //已核销
- if(res.data.data.hx_status == 20){
- this.getDetail();
- let pages = getCurrentPages()
- let prevPage = pages[pages.length-2] // 上一页// 调用上一个页面的setData 方法,将数据存储
- console.log(prevPage.data.tab)
- if( (prevPage.data.tab =='all')){
- let state_text = 'list[' + this.data.idx + '].state_text';
- let state_value = 'list[' + this.data.idx + '].state_value';
- prevPage.setData({
- [state_text]: '已完成',
- [state_value]: 30,
- })
- }else{
- if(this.data.idx){
- prevPage.data.list.splice(this.data.idx, 1);
- prevPage.setData({
- list: prevPage.data.list,
- ['dataObj.total']: prevPage.data.dataObj.total - 1
- })
- }
- this.setData({
- idx: ''
- })
- }
- return
- }
- if(!this.data.isUnload){
- this.data.timerTwo = setTimeout(()=>{
- this.getHxStatus();
- },1000)
- }
- }
- })
- },
- to_copy(e){//复制
- let type = e.currentTarget.dataset.type;
- let data = this.data.dataObj.order_no
- if(type && type==2){
- data = this.data.dataObj.hx_code
- }
- wx.setClipboardData({
- data: data,
- success: function (res) {
- wx.showToast({
- title:'已复制成功'
- })
- }
- })
- },
- countdown(times){
- let that = this;
- that.timer1 = setInterval(function() {
- let hour = 0, minute = 0, second = 0;
- if (times > 0) {
- hour = Math.floor(times / 3600);
- minute = Math.floor(times / 60 - 60*hour);
- second = Math.floor(times - minute*60 - hour*3600);
- } else {
- clearInterval(that.timer1);
- }
- if(hour<10){
- hour = hour
- }
- if(minute<10){
- minute = '0' + minute
- }
- if(second<10){
- second = '0' + second
- }
- times--;
- that.setData({
- countdownTime: hour + ':' + minute + ':' + second
- })
- }, 1000);
- },
- //监听轮播图滚动
- swiperChange(e) {
- this.setData({
- currentSwiper: e.detail.current
- })
- },
- btnStatus(e){//点击1取消2删除3确认收货
- let type = e.currentTarget.dataset.type;
- this.setData({
- model: true,
- modelType: type
- })
- if(type==1){
- this.setData({
- model_text: '您将取消此订单,取消后将不可恢复,确定继续吗?'
- })
- }else if(type==2){
- this.setData({
- model_text: '您将删除此订单,删除后将不可恢复,确定继续吗?'
- })
- }else if(type==3){
- this.setData({
- model_text: '确认已经收到货了吗?'
- })
- }
- },
- cancelModel(){
- this.setData({
- model: false,
- modelType:'',//1取消2删除3确认收货
- model_text:'',//对应的文案
- })
- },
- confirmModel: utils.throttle(function (){//1取消2删除3确认收货
- let that = this;
- let url = '', toast = ''
- if(this.data.modelType == 1){
- url = '/api/order/cancel?orderId=' + this.data.orderId
- toast = '订单取消成功'
- }
- if(this.data.modelType == 2){
- url = '/api/order/delete?orderId=' + this.data.orderId
- toast = '订单删除成功'
- }
- if(this.data.modelType == 3){
- url = '/api/order/receipt?orderId=' + this.data.orderId
- toast = '确认收货成功'
- }
- http.request({
- method: 'GET',
- url: api.URL + url,
- token: utils.getStorageSync(storeKeys.TOKEN),
- success: (res) => {
- wx.hideLoading();
- utils.toast(toast);
- that.setData({
- model: false
- })
- //1取消2删除3确认收货
- let pages = getCurrentPages()
- let prevPage = pages[pages.length-2] // 上一页// 调用上一个页面的setData 方法,将数据存储
- if(that.data.modelType == 2 || (that.data.modelType == 1 && prevPage.data.tab!='all') || (that.data.modelType == 3 && prevPage.data.tab!='all')){//删除
- if(that.data.idx){
- prevPage.data.list.splice(that.data.idx, 1);
- prevPage.setData({
- list: prevPage.data.list,
- ['dataObj.total']: prevPage.data.dataObj.total - 1
- })
- }
- that.setData({
- idx: ''
- })
- }
- if(prevPage.data.tab=='all'){
- let state_text = 'list[' + that.data.idx + '].state_text';
- let state_value = 'list[' + that.data.idx + '].state_value';
- if(that.data.modelType == 1){//订单取消
- prevPage.setData({
- [state_text]: '已取消',
- [state_value]: 20,
- })
- }
- if(that.data.modelType == 3){//确认收货
- prevPage.setData({
- [state_text]: '已完成',
- [state_value]: 30,
- })
- }
- }
- if(that.data.modelType == 1 || that.data.modelType == 3){//取消/确认收货
- setTimeout(() => {
- that.getDetail()
- }, 400)
- }
- if(that.data.modelType == 2){//删除
- setTimeout(() => {
- wx.navigateBack({
- delta: 1
- })
- }, 400)
- }
- },
- error: (res) => {
- },
- })
- }),
- toDetail(e){//订单详情
- let id = e.currentTarget.dataset.id;
- wx.navigateTo({
- url: '/pages/cart/pages/goodsDetail/goodsDetail?goods_id=' + id,
- })
- },
- toLogistics(e){//物流详情
- let type = e.currentTarget.dataset.type;
- if(type==1){//轮播图
- let item = e.currentTarget.dataset.item;
- wx.navigateTo({
- url: '/pages/cart/pages/logisticsDetail/logisticsDetail?orderId=' + this.data.orderId + '&express_no=' + item.express_no
- })
- }
- if(type==2){//底部
- if(this.data.dataObj.express_list.length==1){
- wx.navigateTo({
- url: '/pages/cart/pages/logisticsDetail/logisticsDetail?orderId=' + this.data.orderId + '&express_no=' + this.data.dataObj.express_no
- })
- }
- if(this.data.dataObj.express_list.length>1){
- wx.navigateTo({
- url: '/pages/cart/pages/logisticsList/logisticsList?orderId=' + this.data.orderId
- })
- }
- }
-
- },
- toInvoicing(){
- // has_receipt,订单详情新增字段判断是否有提交,0:未提交,10:待开票,20:已开票
- if(this.data.dataObj.has_receipt==10){
- utils.toast('您已提交发票申请,平台正在处理请稍后');
- return;
- }
- if(this.data.dataObj.has_receipt==20){
- utils.toast('发票已发送到您的电子邮箱');
- return;
- }
- wx.navigateTo({
- url: '/pages/cart/pages/invoice/invoice?orderId=' + this.data.orderId
- })
- },
- commit: utils.throttle(function (e) {//支付
- let that = this;
- wx.showLoading({
- title: "加载中"
- });
- let dataParams = {
- "orderId": this.data.orderId, //订单ID
- "payType": 20 //支付类型 10余额支付 20微信支付 30礼品卡兑换
- }
- http.request({
- url: api.URL + '/api/order/pay',
- method: 'POST',
- token: utils.getStorageSync(storeKeys.TOKEN),
- data: dataParams,
- success: (res) => {
- wx.hideLoading();
- if(res.data.data.pay_type==20){
- that.wxPayment(res.data.data.payment);
- }
- },
- error: (res) => {
- },
- })
- }, 1000),
- //调起微信支付
- wxPayment(data) {
- let that = this
- wx.requestPayment({
- nonceStr: data.nonceStr,
- package: 'prepay_id=' + data.prepay_id,
- paySign: data.paySign,
- signType: "MD5",
- timeStamp: data.timeStamp,
- success(res) {
- if (res.errMsg == "requestPayment:ok") {
- utils.toast('支付成功');
- let pages = getCurrentPages()
- let prevPage = pages[pages.length-2] // 上一页// 调用上一个页面的setData 方法,将数据存储
- prevPage.setData({
- tab: 'received',
- is_bottom: false,
- list: [],
- page:1,
- dataObj:{}
- })
- prevPage.getList()
- setTimeout(() => {
- that.getDetail()
- }, 400)
- }
- },
- fail(res) {
- if (res.errMsg == "requestPayment:fail cancel") {
- }
- }
- })
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- this.getDetail()
- this.data.isUnload = false;
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- clearInterval(this.timer1);
- clearInterval(this.data.timerTwo);
- this.data.timer1 = null;
- this.data.timerTwo = null;
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- clearInterval(this.timer1);
- clearInterval(this.data.timerTwo);
- this.data.timer1 = null;
- this.data.timerTwo = null;
- this.data.isUnload = true;
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- //显示优惠详情
- showDiscountModel(){
- this.setData({
- discountModel:true
- })
- },
- //隐藏优惠详情
- hideDiscountModel(){
- this.setData({
- discountModel:false
- })
- }
- })
|