最近小程序做到一个很常见的需求,订单列表功能。虽说看着很常见,做起来也发现了有一些坑。效果如图:

这里就是顶部tab页切换到不同状态的订单,下次切回来不刷新页面而且需要跳到上次浏览的地方,然后滑动每个页面对应的tab也能完成相应的切换。小程序的话很容易就想到swiper组件,然后滑动的当前swiper-item和tab的index对应起来就可以了。而且页面滑动页有对应的scroll-view组件使用,最开始确实是用的scroll-view,而且这个组件里面还有自带的bindscroll和srcollTop属性,第一版做完后发现小程序的scroll-view会导致自己的下拉刷新onPullDownRefresh失效,而且开始设想的每次记录当前tab的页面滚动高度然后赋值给scroll-view的srcollTop属性,从而达到再切换回来的时候滚动到上次的位置,貌似也是不行的,既然scroll-view达不到滚动到上次记录的位置,那就还是换成普通的view吧。

闲话到此,直接上代码,WXML代码:

<!--pages/ordes/ordes.wxml-->
<view class="content" wx:if="{{showOrderVer==2}}"><view class="header-fixed"><!-- 搜索部分 --><view class="header-search" bindtap="gotoOrderSearch"><view class="search-box"><image class="search-icon" src="../../common/images/search-icon.png"></image><input class="search-input" type="text" disabled="true" placeholder="商品名称/订单号/出库单号"></input></view><span class="search-btn">搜索</span></view><!--Tab布局--><scroll-view class="scroll-bangdan" scroll-x="true" scroll-left="{{scrollLeft}}"><view class="tabTitle"><block wx:for="{{tabNavList}}" wx:key="index"><view class="toc {{current==index?'titleSel':'titleUnsel'}}" bindtap="changeTab" data-index="{{index}}"><text>{{item.columnName}}</text><hr class="{{index == current ? 'headerLineSel' : 'headerLineUnsel'}}" /></view></block></view></scroll-view></view><!-- tab页签部分 --><view class="tabNav-box"><!--内容布局--><view class="scroll-swiper"><swiper class='tabSwiper' style="height:{{orderList[curListId].swiperHeight}}rpx;" duration="300" bindchange='bindchange' current='{{current}}'><block wx:for="{{tabNavList}}" wx:key="index"><swiper-item><block wx:if="{{orderList[item.searchState].data.length>0}}"><view class='orderItem' wx:for="{{orderList[item.searchState].data}}" wx:for-item="orderItem" wx:key='index'><view class="order-header" data-ordercode = "{{orderItem.orderCode}}" bindtap="gotoOrderDetail"><text class="orderTime">{{orderItem.orderTimeStr}}</text><text class="orderState {{(6==orderItem.orderState || 8==orderItem.orderState || 12==orderItem.orderState || 17==orderItem.orderState)?'grey999':''}}">{{orderItem.orderStateStr}}</text></view><view class="order-body"><view class="goods-content {{(!orderItem.yjTotalReward && !orderItem.getReward && !orderItem.canGetReward && !orderItem.haveRewardTip)?'morePadding':''}}" data-ordercode = "{{orderItem.orderCode}}" bindtap="gotoOrderDetail"><view class="goodsImg-box"><view class="multiGoods" wx:if="{{orderItem.prodImgList.length>1}}"><image class="goodsImg" wx:for="{{orderItem.prodImgList}}" wx:key="index" src="{{'https:'+item}}"></image></view><view class="singleGood" wx:else><image class="goodsImg" src="{{'https:'+orderItem.prodImg}}"></image><view class="goodsText"><view class="goodsName">{{orderItem.prodName}}</view><view class="goodsDesc"><text class="goodsSpec">{{orderItem.prodSpec}}</text><text class="goodsCompany">{{orderItem.manufacture}}</text></view></view></view></view><view class="numAndPrice"><view class="goodsNum" >共{{orderItem.prodNum}}件</view><view class="goodsPrice" ><text class="yen">¥</text>{{orderItem.orderPriceStr}}</view></view></view><view class="rewardPrice-content"><view class="rewardPriceText" wx:if="{{orderItem.yjTotalReward && !orderItem.getReward}}">约返奖励金{{orderItem.yjTotalReward}}元</view><view class="rewardPriceText" wx:if="{{orderItem.yjTotalReward && orderItem.getReward}}">约返奖励金{{orderItem.yjTotalReward}}元,已领{{orderItem.getReward}}元</view><view class="rewardPriceText" wx:elif="{{!orderItem.yjTotalReward && orderItem.getReward}}">已领奖励金{{orderItem.getReward}}元</view><image class="rewardPriceTips" wx:if="{{orderItem.haveRewardTip && (orderItem.yjTotalReward || (orderItem.getReward && orderItem.yjTotalReward))}}" src="../../common/images/questionMark.png" bindtap="rewardPricePop"></image><view class="rewardPrice" wx:if="{{orderItem.canGetReward}}">待领奖励金{{orderItem.canGetReward}}元</view></view></view><view class="order-footer"><view class="order-btn " wx:if="{{5==orderItem.orderState}}" data-ordercode = "{{orderItem.orderCode}}" bindtap="confirmReceiptPop">确认收货</view><view class="order-btn " wx:if="{{0==orderItem.orderState || 4==orderItem.orderState || 5==orderItem.orderState || 6==orderItem.orderState}}" data-ordercode = "{{orderItem.orderCode}}" bindtap="gotoLogistics">查看物流</view><view class="order-btn " wx:if="{{11!=orderItem.orderState}}" data-ordercode = "{{orderItem.orderCode}}" bindtap="payAgain">再次购买</view><view class="order-btn getRewardPrice" wx:if="{{(4==orderItem.orderState || 5==orderItem.orderState || 6==orderItem.orderState) && orderItem.canGetReward}}" data-ordercode = "{{orderItem.orderCode}}" bindtap="getRewardPrice">领奖励金</view><view class="gotoPay-box" wx:if="{{11==orderItem.orderState}}"><counter remainTime="{{orderItem.payLimitTime}}" bindcallback="refreshPage" wx:if="{{orderItem.payLimitTime}}"></counter><view class="order-btn gotoPay" data-ordercode = "{{orderItem.orderCode}}" bindtap="gotoPay">去支付</view></view></view></view></block></swiper-item></block></swiper><!-- 底部加载更多 --><view class="m-end" hidden="{{orderList[curListId].endTipHidden}}"><block wx:if="{{endTip=='正在加载'}}"><view class="icon"></view></block>{{endTip}}</view><view class="no_order" wx:if="{{orderList[curListId].data.length==0}}"><image class="no_order_img" src="{{imgUrl}}/goodsDetail/goodsEmptyImg.png"></image><view class="no_order_text" >您还没有相关订单</view> </view><view class="m-end" wx:else hidden="{{!orderList[curListId].endTipHidden}}">—— 没有更多了 ——</view></view></view><!-- 预估可领奖励金弹出框部分 --><showModal showModal="{{isShowRewardPrice}}" cancelText="" title="预估可领奖励金" content="{{rewardPriceContent}}" textAlign="left" hideTabBar="true"></showModal><!-- 确认收货弹出框部分 --><showModal showModal="{{isShowconfirmReceipt}}" confirmText="确认收货" content="{{confirmReceiptContent}}"data-ordercode="{{orderCode}}" bind:onConfirm="onConfirmReceipt" hideTabBar="true"></showModal><!-- 奖励金入账弹出框部分   --><showModal showModal="{{isShowMyReward}}" confirmText="我的奖励金" content="{{myRewardContent}}"bind:onConfirm="onConfirmMyReward" hideTabBar="true"></showModal>
</view>
<web-view wx:elif="{{showOrderVer==1}}" src="{{url}}"></web-view>

可以看到swiper由于有一个默认的高度,所以需要在每个页签加载的时候计算出当前页签页面的高度,所以就有了style="height:{{orderList[curListId].swiperHeight}}rpx;",由于我们的小程序要做新老版本的兼容,所以又有了一个showOrderVer的判断,老版本的话就是直接web-view嵌的H5页面,新版本的话是小程序原生的。

JS代码:

// pages/ordes/ordes.js
import http from "../../util/http";
import {config} from "../../config/envConfig";
Page({/*** 页面的初始数据*/data: {orderVersion:'',//登录获得的版本号showOrderVer:'',//显示订单版本imgUrl:config.imageUrl,//订单状态 默认全部 , 待支付-11,待出库-0,待收货-5,已完成-6tabNavList: [{"columnName": '全部',"searchState": ""}, {"columnName": '待支付',"searchState": "11"}, {"columnName": '待出库',"searchState": "0"}, {"columnName": '待收货',"searchState": "5"}, {"columnName": '完成',"searchState": "6"}],navPosition: [],orderList: {}, //订单列表对象,存放5个状态的订单curListId: '', //当前选中状态的id,默认全部 , 待支付-11,待出库-0,待收货-5,已完成-6endTipHidden: false,endTip: '正在加载',current: 0,scrollLeft: 0,px2rpx: 2,winWidth: 375,winHeight:0,scrollTop: 0,loadFlag:false,isShowconfirmReceipt:false,//确认收货弹出框confirmReceiptContent:['请收到商品后,再确认收货'],orderCode:'',//确认收货弹出框按钮需要的参数isShowRewardPrice:false,//预估可领奖励金弹出框rewardPriceContent:['1.因税率和药监特殊要求,订单可能会被拆单发货,奖励金按拆单后的包裹计算。','2.若订单商品出库被冲红,实际领取奖励金以出库商品为准。'],isShowMyReward:false,//奖励金入账提示弹出框myRewardContent:'',},onShow(){if(this.data.showOrderVer!=this.data.orderVersion){//获得订单版本this.getOrderVer();}},/*** 生命周期函数--监听页面加载*/onLoad: function(options) {getApp().getGlobalUserInfo(true).then(res=>{this.TOKEN=res.token;this.setData({current:options.index || 0, //当前tab页的indexorderVersion:res.orderVersion,//登录信息里的版本号});//获得订单版本this.getOrderVer();}).catch(err=>{console.error(err)})},//获得订单显示版本号getOrderVer(){http.fetch(http.GET_ORDER_VER).then(res => {if(res.status == 1){this.setData({showOrderVer:res.data.version})if(res.data.version == 2){this.setData({orderList:{}});this.getSystem();this.getNav(this.data.current);}else{this.setData({url:config.page+'/Orders?TOKEN='+this.TOKEN+'&t='+Math.random()}) }}}).catch((err) => {})   },//刷新页面refreshPage:function(){this.setData({orderList:{}});var cid = this.data.curListId;this.getOrderList(cid);},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {this.loadMoreList();},//下拉刷新onPullDownRefresh: function() {wx.showNavigationBarLoading()this.refreshPage();setTimeout(() => {wx.hideNavigationBarLoading()wx.stopPullDownRefresh()}, 2000);},//跳转搜索页面gotoOrderSearch(){wx.navigateTo({url: `/pages/orders/orderSearch/orderSearch`});},timer: null,getSystem: function() {var self = this;wx.getSystemInfo({success: function(res) {self.setData({winWidth: res.windowWidth,winHeight:res.windowHeight,px2rpx: 750 / res.windowWidth})},});},//获取导航和节点getNav: function(index) {var self = this;self.setData({current: index});//获取导航的初始位置const query = wx.createSelectorQuery()query.selectAll('.toc').boundingClientRect();query.exec(function(res) {self.setData({navPosition: res[0]})if (index >= 4) {self.setData({scrollLeft: res[0][index].left})}})self.getOrderList(self.data.tabNavList[index].searchState);},//滑到底部加载更多loadMoreList: function() {var orderList = this.data.orderList;var cid = this.data.curListId;if (orderList[cid].page < orderList[cid].pageCount && !this.data.loadFlag) {this.getOrderList(cid);}},//请求列表getOrderList: function(cid) {var self = this;this.setData({curListId: cid,loadFlag:true})var orderList = this.data.orderList;if (!orderList[cid]) {http.fetch(http.ORDER_LIST + `?searchState=${cid}&page=1`).then(res => {var obj = {};obj.page = res.data.page;obj.pageCount = Math.ceil(res.data.total / res.data.rows);obj.total = res.data.total;obj.data = res.data.orderList;if(res.data.total){obj.swiperHeight = res.data.total > res.data.rows * res.data.page ? res.data.rows * res.data.page * 400 : res.data.total * 400;}else{obj.swiperHeight = 2*self.data.winHeight-170;}if (res.data.page * res.data.rows >= res.data.total) {obj.endTip = '没有更多了';obj.endTipHidden = true;} else {obj.endTip = '正在加载';}orderList[cid] = obj;self.setData({loadFlag:false,orderList})}).catch((err) => {})} else {if (orderList[cid].page < orderList[cid].pageCount) {http.fetch(http.ORDER_LIST + `?searchState=${cid}&page=${orderList[cid].page+1}`,{urlType: 'wap'}).then(res => {var obj = {};obj.page = res.data.page;obj.pageCount = Math.ceil(res.data.total / res.data.rows);obj.total = res.data.total;obj.data = orderList[cid].data.concat(res.data.orderList);if (res.data.page * res.data.rows >= res.data.total) {obj.endTip = '没有更多了';obj.endTipHidden = true;} else {obj.endTip = '正在加载';}obj.swiperHeight = res.data.total > res.data.rows * res.data.page ? res.data.rows * res.data.page * 400 : res.data.total * 400 ;orderList[cid] = obj;self.setData({loadFlag:false,orderList})}).catch((err) => {})     }}},//切换导航(包含滑动swiper和切换导航跳转)switchNav: function(index) {if (index && this.data.current == index) return;console.log('switchtab');var cid = this.data.tabNavList[index].searchState;var self = this;var scrollLeft = 0;if (self.data.navPosition[index].right * self.data.px2rpx + 62 >= 750) {scrollLeft = self.data.navPosition[index].left;}var orderList = self.data.orderList;var scrollTop = 0;if (orderList[cid] && orderList[cid].scrollTop) {scrollTop = orderList[cid].scrollTop}if (!orderList[cid]) {clearTimeout(self.timer);self.timer = null;self.timer = setTimeout(function() {self.setData({curListId: cid,current: index,scrollLeft,scrollTop})self.getOrderList(cid);}, 500);} else {self.setData({curListId: cid,current: index,scrollLeft,scrollTop})}//滚动到滚动条的位置this.gotoScrollTop();},//获取滚动条位置onPageScroll(e){var self = this;setTimeout(function() {var orderList = self.data.orderList;if (orderList[self.data.curListId]) {orderList[self.data.curListId].scrollTop = e.scrollTop;self.setData({orderList})}}, 300);},//滚动到滚动条的位置gotoScrollTop(){var self = this;var orderList = self.data.orderList;if (orderList[self.data.curListId]) {wx.pageScrollTo({scrollTop:orderList[self.data.curListId].scrollTop,duration: 300});}},//切换导航changeTab: function(e) {console.log('changetab');var index = e.currentTarget.dataset.index;this.switchNav(index);},//滑动swiperbindchange: function(e) {console.log('changeswiper');var index = e.detail.current;//加上这个避免swiper过程,swiper-item会发生滑动混乱,滑动过快就会一直在闪动,新的API属性,touch说明是用户接触滑动,而不是自动滑动if (e.detail.source && e.detail.source =='touch'){this.switchNav(index);}},//预估可领奖励金弹出框rewardPricePop(){//隐藏底部tabbarwx.hideTabBar();this.setData({isShowRewardPrice: true});},//确认收货弹框confirmReceiptPop(event){//隐藏底部tabbarwx.hideTabBar();this.setData({isShowconfirmReceipt: true,orderCode:event.currentTarget.dataset.ordercode});},//点击确认收货按钮onConfirmReceipt(event){var self =this;wx.showLoading();http.fetch(http.CONFIRM_RECEIPT,{commitId:event.currentTarget.dataset.ordercode}).then(res => {wx.hideLoading();if(res.status == 1){wx.showToast({title:"收货成功",icon: 'success',//图标,支持"success"、"loading" complete:function(){var cid = self.data.curListId;self.setData({orderList:{}});self.getOrderList(cid);//滚动到当前位置self.gotoScrollTop();}})}else{wx.showToast({title: res.msg,icon: 'none'})}}).catch((err) => {wx.hideLoading();})   },//跳转订单详情页面gotoOrderDetail(event){wx.navigateTo({url: `/pages/orders/orderDetail/orderDetail?commitId=${event.currentTarget.dataset.ordercode}`});},//去支付gotoPay(event){wx.navigateTo({url: `/pages/pay/payWap/payWap?orderCode=${event.currentTarget.dataset.ordercode}`});},//再次购买payAgain(event) {wx.showLoading();http.fetch(http.ADD_CARTFROM_ORDER,{orderid: event.currentTarget.dataset.ordercode,v:2}).then(res => {wx.hideLoading();if(res.status == 1){wx.switchTab({url: '/pages/shopcart/shopcart',})}}).catch((err) => {wx.hideLoading();})   },//领奖励金getRewardPrice(event) {wx.showLoading();http.fetch(http.GET_ORDER_BONUS,{orderCode: event.currentTarget.dataset.ordercode}).then(res => {wx.hideLoading();if(res.data.success){if(res.data=={}){wx.showToast({title: '服务器繁忙,请稍后再试',icon: 'none'})}else{//隐藏底部tabbarwx.hideTabBar();this.setData({isShowMyReward:true,myRewardContent:['+ '+res.data.bonus+' 元','奖励金已入账!'],orderList:{}});var cid = this.data.curListId;this.getOrderList(cid);} }else{wx.showToast({title: res.msg,icon: 'none'})}}).catch((err) => {wx.hideLoading();})   },//跳转我的奖励金页面onConfirmMyReward(){wx.navigateTo({url: `/pages/mine/wallet/walletDetails/bonus/index`});},//查看物流gotoLogistics:function(event){wx.navigateTo({url: `/pages/orders/orderLogistics/orderLogistics?orderCode=${event.currentTarget.dataset.ordercode}`})},
})

然后滑动到上次切换tab的位置的话,小程序有一个onPageScroll的方法,可以记录当前滚动条的位置,然后用wx.pageScrollTo让页面滚动到记录的位置即可,滑动swiper同样可以和tab联动。

WXSS代码:

/* pages/ordes/ordes.wxss */
page{background: #F2F2F2;
}
.header-fixed{position: fixed;top:0;width:100%;z-index: 10;
}
/* 搜索部分样式 */
.clearfix::after{display: table;content: '';clear: both;
}
.header-search{display: -webkit-flex; /* Safari */display: flex;align-items: center;justify-content: space-between;background: #fff;
}
.search-box{width: 82%;display: -webkit-flex; /* Safari */display: flex;align-items: center;margin:16rpx 0 16rpx 30rpx;height: 60rpx;line-height: 60rpx;background:#EDEDED;border-radius:30rpx;
}
.search-icon{margin-left: 26rpx;
}
.search-input{display: inline-block;width:86%;font-size: 26rpx;margin-left: 14rpx;
}
.search-btn{font-size: 28rpx;color: #333333;margin-right: 32rpx;
}
.search-icon{width: 20rpx;height:20rpx;
}
/* tab页签部分样式 */
.tabNav-box {margin-top:170rpx;
}
.scroll-bangdan {width: 100%;height: 70rpx;position: relative;top: 0;z-index: 500;
}
.tabTitle {width: 100%;height: 70rpx;background:#fff;display: flex;align-items: center;justify-content: space-around;
}
.titleUnsel {color: #666666;font-size: 30rpx;display: flex;flex-direction: column;align-items: center;height: 70rpx;justify-content: flex-end;
}
.titleSel{color: #333333;font-size: 30rpx;display: flex;flex-direction: column;align-items: center;font-weight: bold;height: 70rpx;justify-content: flex-end;
}
.headerLineSel {background: #0095FF;height: 6rpx;width: 40rpx;position: relative;margin-top: 10rpx;box-shadow:2rpx 2rpx 6rpx 0px rgba(81,231,253,0.3);border-radius:4rpx;
}
.headerLineUnsel {background: #fff;height: 6rpx;width: 40rpx;position: relative;margin-top: 10rpx;box-shadow:none;
}
.tabSwiper {width: 100%;
}
/* 订单列表部分样式 */
.orderItem {height:380rpx;margin:20rpx 20rpx 0 20rpx;background-color: #fff;border-radius: 10rpx;
}
.order-header{display: -webkit-flex; /* Safari */display: flex;align-items: center;justify-content: space-between;padding:20rpx;
}
.orderTime{font-size: 28rpx;color: #3E3E3E;padding-left: 10rpx;font-weight: bold;
}
.orderState{font-size: 26rpx;color: #FF7800;margin-right: 10rpx;font-weight: bold;
}
.grey999{color:#999;
}
.order-body{background: #FAFAFA;padding:0 20rpx;
}
.goods-content{display: -webkit-flex; /* Safari */display: flex;align-items: center;justify-content: space-between;padding-top: 20rpx;
}
.goods-content.morePadding{padding-top:40rpx;
}
.goodsImg{width:120rpx;height:120rpx;margin-right: 10rpx;background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU8AAAFPCAYAAADNzUzyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkQwQ0JBREVDRkZCMTFFNzlCNUU5NkJFNkI4MTQ2NUIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkQwQ0JBRERDRkZCMTFFNzlCNUU5NkJFNkI4MTQ2NUIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmRpZDpBQjRGQjFFOEY4Q0ZFNzExODg4OUU2M0M4NUVBRDlDMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQjRGQjFFOEY4Q0ZFNzExODg4OUU2M0M4NUVBRDlDMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp7B2dgAABQgSURBVHja7N0LkGRV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");background-size: 100%;
}
.singleGood,.multiGoods{display: -webkit-flex; /* Safari */display: flex;align-items: center;justify-content: space-between;
}
.goodsText{margin-left: 10rpx;
}
.goodsName{font-size: 24rpx;color:#333333;max-width:240rpx;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}
.goodsDesc{font-size: 22rpx;color: #888888;max-width:240rpx;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}
.goodsCompany{margin-left: 10rpx;
}
.numAndPrice{display: -webkit-flex; /* Safari */display: flex;align-items: center;
}
.goodsNum{color: #333333;font-size: 24rpx;
}
.goodsPrice{color:#333333;font-size: 32rpx;font-weight: bold;margin-left: 10rpx;
}
.yen{font-size: 26rpx;
}
.rewardPrice-content{font-size: 22rpx;padding-top:10rpx;padding-bottom: 20rpx;min-height: 10rpx;
}
.rewardPriceText{display: inline-block;color: #888;max-width:400rpx;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;vertical-align: middle;
}
.rewardPriceTips{width:26rpx;height: 26rpx;margin:0 10rpx 0 4rpx;vertical-align: middle;
}
.rewardPrice{display: inline-block;color: #C48117;vertical-align: middle;
}
.order-footer{text-align: right;padding:24rpx 20rpx;
}
.order-btn{display: inline-block;padding:10rpx 26rpx;border:1rpx solid #ccc;border-radius:70rpx;font-size:24rpx;color:#333;margin-right: 10rpx;
}
.getRewardPrice{color:#D58B17;border:1rpx solid #D58B17;
}
.gotoPay-box{color: #0095FF;
}
.gotoPay{color: #0095FF;border:1rpx solid #0095FF;
}
.m-end {font-size: 24rpx;padding: 30rpx;line-height: 28rpx;text-align: center;color: #B2B2B2;
}
.no_order{position: absolute; left: 50%; top: 40%;transform: translate(-50%, -50%);  z-index: -1; 
}
.no_order_img{width:300rpx;height:300rpx;
}
.no_order_text{text-align: center;font-size: 24rpx;color:#999;
}

页面还有个待支付的倒计时组件,JS代码如下:

// components/counter/counter.js
Component({/*** 组件的属性列表*/properties: {remainTime:String,//剩余时间callback: String, // 回调},/*** 组件的初始数据*/data: {time: ''},ready () {this.init();},countDownID:null,lifetimes: {// 生命周期函数,可以为函数,或一个在methods段中定义的方法名attached: function () { },moved: function () {//clearInterval(this.countDownID);},detached: function () {clearInterval(this.countDownID);},},pageLifetimes: {// 组件所在页面的生命周期函数show: function () {this.endfn();},hide: function () {clearInterval(this.countDownID);},resize: function () { },},/*** 组件的方法列表*/methods: {init(){var self = this;if(self.data.remainTime!='' && self.data.remainTime >= 0){var remainTime = parseInt(self.data.remainTime)*1000;self.countDownID = setInterval(function() {remainTime -= 1000;self.getFormat(remainTime);//console.log(self.countDownID)}, 1000);}else{clearInterval(this.countDownID);}},getFormat (remainTime) {var time = "";var min = parseInt((remainTime / 1000 / 60) % 60);var sec = parseInt((remainTime / 1000) % 60);min = min > 9 ? min : "0" + min;sec = sec > 9 ? sec : "0" + sec;time ='还剩' + min + '分' + sec + '秒';if(remainTime >= 0){this.setData({time: time});}else{clearInterval(this.countDownID);this.endfn();return;}},//倒计时结束的回调endfn () {this.triggerEvent('callback', {});}}
})

一定要注意的就是每次倒计时结束和跳出订单列表页的时候需要清除当前定时器。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 2019年总结回顾 ~ 开心!评上CSDN博客专家-100篇博文回顾人工智能的前行之路!

    机器学习实战 -- 机器学习从零到掌握主要介绍实现机器学习方法中的算法,重点在理解算法的基础上实现算法SophiaCV9.901人订阅去订阅2019年充实而圆满的过去,CSDN这一年也写了很多笔记和内容,一直想进行总结,这次进行一个大致总结。 感谢CSDN的认可,评上了博客专家,感谢CS…...

    2024/5/6 8:35:17
  2. 天数

    人生浮沉,依赖天数,幸与不幸还看造化...

    2024/5/6 20:58:40
  3. 关于Java日期格式化

    格式为 yyyy-MM-dd HH:mm...

    2024/5/6 20:58:33
  4. 程序设计第十五题 真约数之和

    Problem Description古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数…...

    2024/5/6 20:58:29
  5. 零基础小白自学Java编程要避免什么

    Java开发人员工资很高,未来发展也极好,市场需求还是很旺盛,纯小白用户,要学编程,必须从自学开始,面对的是未来的职业,在工作中我们将遇到很多新技术需要我们去学习,遇到很多问题需要我们去解决,因此在基础阶段,自学是最好的入门模式。零基础小白自学Java编程要避免什…...

    2024/5/6 20:58:26
  6. layui laydate组件点击一闪而过

    问题:layui laydate组件,偶尔点击后会一闪而过无反应文档:日期和时间组件文档解决:该组件参数为 trigger ,默认值为 focus,建议自行配置clickvar endTime=laydate.render({elem:#endTime,type:date,trigger:click,//btns: [confirm],max:nowTime})总结:问题是解决了,还…...

    2024/5/6 20:58:21
  7. Java任务调度框架之分布式调度框架XXL-Job介绍

    ​Java任务调度框架之分布式调度框架XXL-Job介绍及快速入门调度器使用场景:Java开发中经常会使用到定时任务:比如每月1号凌晨生成上个月的账单、比如每天凌晨1点对上一天的数据进行对账操作,在比如每天凌晨5点给180天未登陆过的用户发送邮件提醒等等。定时任务在我们开发中也…...

    2024/5/6 20:58:17
  8. Jenkins 安装与构建(包含远程部署jar包)

    1、安装Jenkins 下载地址:https://jenkins.io/zh/download/ 方式一:以war包方式进行安装。将下载的war包放到tomcat的webapps中,运行tomcat。 方式二:通过yum进行安装。(开放安全组和防火墙相应的端口) wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org…...

    2024/5/6 20:58:13
  9. C#中Attribute的作用

    说实话之前用的属性最多的就是[HttpGet] 和[HttpPost]这几个 但是对于它的总的作用什么的一无所知 今天搜了一下 看到一个知乎说的还比较清楚吧 其实很简单 下面就是比较简洁的回答:1. Attribute本身,就是个标记,没什么功能。但是,别的工具、框架在做事的时候,会看相关…...

    2024/5/6 20:58:09
  10. 洛谷p1769 DP(线段树思想)

    这题乍一看很吓人,实则当你去手画一下比赛过程的时候就可以知道了,假设总人数有8人,1, 2 , 3 , 4 , 5 , 6 ,7 ,8. 题目说了每一轮都是按编号顺序从小到大去比赛的那么第一轮就是(1,2),(3,4),(5,6),(7,8).这么个比赛顺序,第二轮就是(1,2)的胜利者去比(3,4)的胜利者(…...

    2024/5/6 20:58:05
  11. spring配置文件xml文件开头总是有个红叉解决方案

    在xml文件右键validate就可以解决了。...

    2024/5/6 20:58:01
  12. 枚举类

    自定义枚举类(jdk5.0之前没有enum类,只能自定义) 自定义枚举类步骤:用private,final修饰类成员属性 私有化构造器(带形参),并给属性赋值 用public,static,final 修饰新建类对象 可以有get方法提供属性 可以重写toString方法...

    2024/5/6 20:57:57
  13. C#:定义一抽象类Pet(宠物)类,作为基类

    用C#语言编写一段程序,满足以下要求: 1.定义一抽象类Pet(宠物)类,作为基类。 2.类中定义两个私有字段毛色和年龄,定义抽象方法完成宠物的自我介绍功能; 3.定义两个派生类Cat和Dog,再覆写基类抽象方法; 4.定义包含主方法的类MainClass,通过抽象类对象调用派生类的覆写…...

    2024/5/6 20:57:54
  14. 两种测试(spring中junit+springboot)

    1.spring@RunWith(SpringJUnit4ClassRunner.class) //开启spring的单元测试 @ContextConfiguration("classpath:spring.xml") //spring.xml的加载,即开启工厂 public class UserTest {@Autowiredprivate PrivicesDao privicesDao;@Testpublic void test1(){List…...

    2024/5/6 20:57:49
  15. Python基础day11强化练习(上)

    应用:老王开枪1. 人类属性姓名血量持有的枪方法安子弹安弹夹拿枪(持有抢)开枪2. 子弹类属性杀伤力方法伤害敌人(让敌人掉血)3. 弹夹类属性容量(子弹存储的最大值)当前保存的子弹方法保存子弹(安装子弹的时候)弹出子弹(开枪的时候)4. 枪类属性弹夹(默认没有弹夹,需要…...

    2024/5/6 20:57:45
  16. shell编程100例

    https://blog.csdn.net/yugemengjing/article/details/82469785 1、编写hello world脚本 #!/bin/bash 编写hello world脚本 echo “Hello World!” 2、通过位置变量创建 Linux 系统账户及密码 #!/bin/bash 通过位置变量创建 Linux 系统账户及密码 #$1 是执行脚本的第一个参数,$…...

    2024/5/6 20:57:41
  17. redis数据库

    redis支持的数据类型 String hash list set:无序集合 zset:有序集合 什么是redis的持久化,持久化方式有哪些?优缺点分别是什么? 持久化就是将数据写到磁盘中,防止redis宕机导致数据丢失。 持久化方式有,rdb和aof rdb是redis Date Base缩写 主要方法有rdbSave(生成rdb文…...

    2024/5/6 20:57:37
  18. IPv6带来的翻天覆地变化

    很多人不太理解IPv6带来的变化,这里简单解读一下1、和IPv4相比,IPv6地址可以看作是无穷多没有公网IP地址有什么坑爹之处?这意味着你用的往往是经由运营商NAT过的内网IP,而运营商往往不会为内网IP提供全面的端口映射,这让内网IP在游戏联机、P2P下载、设备互联等方面,体验全…...

    2024/5/6 20:57:33
  19. 用h5和css制作导航栏

    效果预览图html代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compa…...

    2024/5/6 17:26:41
  20. 3GPP TS 36.523-1 TC 11.2.2失败引起的feature tag探讨

    在步入正题前,请先回答下面4个问题。如果都答对了,恭喜您,您对于这方面知识已经门清了,可以忽略本文了:)为什么需要Feature Tag?(Why We need FT?)From IETF RFC-3840 “Indicating User Agent Capabilities inthe Session Initiation Protocol (SIP)”,原因就是SIP终…...

    2024/5/6 8:35:25

最新文章

  1. pytorch_lightning 训练教程

    步骤1&#xff1a;引入必要的库 首先&#xff0c;确保你已经安装了 pytorch_lightning。pip 安装&#xff1a; pip install pytorch_lightning 然后在你的代码中导入必要的库&#xff1a; import pytorch_lightning as pl from pytorch_lightning.callbacks import ModelC…...

    2024/5/8 3:54:39
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 游戏引擎架构01__引擎架构图

    根据游戏引擎架构预设的引擎架构来构建运行时引擎架构 ​...

    2024/5/6 18:32:42
  4. 前端 js 经典:字符编码详解

    前言&#xff1a;计算机只能识别二进制&#xff0c;开发语言中数据类型还有数字&#xff0c;字母&#xff0c;中文&#xff0c;特殊符号等&#xff0c;都需要转化成二进制编码才能让技术机识别。 一. 编码方式 ACSLL、Unicode、utf-8、URL 编码、base64 等。 1. ACSLL 对英语…...

    2024/5/4 10:30:35
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57