123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- // components/parking-order.js
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- occupyOrder:{
- type: Array,
- value: []
- },
- showPopup:{
- type: Boolean,
- value: false
- }
- },
- lifetimes:{
- attached(){
- console.log("加载占位中订单组件");
- // this.loadOccupyOrder();
- // 页面加载时显示弹窗
- let isLogin = wx.getStorageSync('isLogin');
- if (isLogin) {
- this.loadOccupyOrder().then(data => {
- this.startPolling();
- })
- .catch(error => {
- console.error("数据加载失败", error);
- });
-
- }
- },
- detached: function() {
- // 在组件实例被从页面节点树移除时执行
- this.stopPolling();
- },
- },
- pageLifetimes:{
- // 组件所在页面的生命周期函数
- show: function () {
-
- },
- hide: function() {
- // 页面被隐藏
- this.stopPolling();
- },
- },
- /**
- * 组件的初始数据
- */
- data: {
- showPopup: false,
- occupyFeeOrderList:[],
- pollingInterval: null, // 定时器,
- costCycleFee:0
- },
- /**
- * 组件的方法列表
- */
- methods: {
- // 第一版
- // startPolling: function() {
- // let that = this
- // // Set up interval for subsequent loads
- // this.data.pollingInterval = setInterval(() => {
- // let occupyFeeOrder = this.data.occupyFeeOrderList[0];
- // // 如果 occupyFeeOrder 不存在,直接返回
- // if (!occupyFeeOrder) {
- // console.warn("occupyFeeOrder 不存在,跳过本次轮询");
- // return;
- // }
- // wx.request({
- // url: 'https://jqcs.pjnes.com/cloud/occupyfee/evcs/occupyfee/template',
- // data: occupyFeeOrder.chargpileids,
- // method: 'POST',
- // success(res) {
- // that.calculate(occupyFeeOrder,res.data)
- // }})
- // }, 30000);
- // },
- startPolling: function() {
- let that = this;
- function fetchData() {
- let occupyFeeOrder = that.data.occupyFeeOrderList[0];
- console.log("occupyFeeOrder",occupyFeeOrder);
- // 如果 occupyFeeOrder 不存在,直接返回
- if (!occupyFeeOrder) {
- console.warn("occupyFeeOrder 不存在,跳过本次轮询");
- return;
- }
- wx.request({
- url: 'https://jqcs.pjnes.com/cloud/occupyfee/evcs/occupyfee/template',
- data: occupyFeeOrder.orderId,
- method: 'POST',
- success(res) {
- that.calculate(occupyFeeOrder, res.data);
- }
- });
- }
- // **立即执行一次**
- fetchData();
- // **设置轮询**
- this.data.pollingInterval = setInterval(fetchData, 30000);
- },
- calculate(occupyFeeOrder,data) {
- let { occupyBeginTime ="" ,occupyTime =""} = occupyFeeOrder;
- // 将时间字符串转换为 Date 对象
- occupyBeginTime = new Date(occupyBeginTime.replace(/-/g, "/")); // 替换为兼容 iOS 的格式
-
- let currentTime = new Date();
- // 计算时间差(分)
- // let minutesDifference = Math.floor((currentTime - occupyBeginTime) / (1000 * 60));
- let minutesDifference = data.params.occupyTime;
- let freeTime = Number(data.freeTime) || 0;
- console.log("免费时长:",freeTime);
- console.log("最大占位时长:", data.maxFeeTime);
- console.log("data:", data);
- console.log("分钟:", minutesDifference);
- if (minutesDifference >= freeTime +1) {
- if (minutesDifference <= data.maxFeeTime) {
- console.log("未达到最大时长");
- let Nocycle = Math.floor(minutesDifference / data.costCycle)
- occupyFeeOrder.occupyFee = (Nocycle * data.costCycleFee).toFixed(2);
- occupyFeeOrder.occupyTime = minutesDifference;
- } else {
- console.log("达到最大时长");
- let cycle = Math.floor(data.maxFeeTime / data.costCycle)
- occupyFeeOrder.occupyFee = (cycle * data.costCycleFee).toFixed(2);
- occupyFeeOrder.occupyTime =minutesDifference;
- }
- } else {
- console.log("处于免费时长");
- occupyFeeOrder.occupyFee = 0.00;
- occupyFeeOrder.occupyTime = minutesDifference;
- }
-
- console.log("触发定时器",occupyFeeOrder);
- // 根据返回的结果去调用微服务查询模版信息接口,根据模版信息 重新动态计算占位费模版
- this.setData({
- "occupyFeeOrderList[0]": occupyFeeOrder
- });
- },
- // Stop polling
- stopPolling: function() {
- if (this.data.pollingInterval) {
- console.log('清除占位中定时器');
- clearInterval(this.data.pollingInterval);
- this.data.pollingInterval = null;
- }
- },
- loadOccupyOrder() {
- let that = this;
- return new Promise((resolve, reject) => {
- wx.request({
- url: getApp().globalData.postHeadAgreement + '/restapi/wechat/queryOccupyFeeOrder',
- data: {
- userId: wx.getStorageSync('userInfo').userId,
- searchIndex: 2,
- pagenum: this.data.pagenum++,
- pagesize: 10,
- },
- method: 'POST',
- success(res) {
- console.log("占位费", res);
- if (res.data.result) {
- let { rows: occupyFeeOrderList } = res.data.result;
- that.setData({
- occupyFeeOrderList: that.data.occupyFeeOrderList.concat(occupyFeeOrderList),
- });
- resolve(res.data.result);
- }
- // else {
- // reject(new Error("No result data"));
- // }
- },
- fail(err) {
- reject(err);
- }
- });
- });
- },
- handleConfirm() {
- // 点击确认按钮
- this.setData({
- showPopup: false
- });
- },
-
- handleContact() {
- // 联系客服
- // wx.makePhoneCall({
- // phoneNumber: '4009608068' // 替换为实际的客服电话
- // });
- wx.showModal({
- title: '提示',
- confirmColor: '#00AADD',
- content: '若对当前占位费订单有疑问,请拨打客服电话4009608068,工作时间:08:00-18:00',
- complete: (res) => {
- // 可以在这里添加回调逻辑
- if (res.confirm) {
- console.log('用户点击了确认按钮');
- }else{
- console.log('用户点击了取消按钮');
- }
- }
- });
- },
- }
- })
|