// pages/mLedger/ledgerhome/ledgerhome.js const ledgerservice = require('../../../service/ledgerservice'); const moment = require('../../../utils/moment.min'); const app = getApp(); Page({ /** * 页面的初始数据 */ data: { thisMonth: '', lastMonth: '', //提交期限 deadline: '', //剩余提交天数 leftday: 0, //本月汇总 thisMonthInfo: { //必填项总数 totalMust: 0, //必填项提交数 finishedMust: 0, //选填项总数 totalSelect: 0, //选填项提交数 finishedSelect: 0, //提交情况 status: '', //超时情况 overtime: '', //建议 suggestion: '', }, //上月汇总 lastMonthInfo: { totalMust: 0, finishedMust: 0, totalSelect: 0, finishedSelect: 0, status: '', overtime: '', suggestion: '', }, //选项卡相关 currentTab: 0, tabList: [], pageList: [], pageheight: '300px', //当前显示月份 showThisMonth: true, }, //每月台账提交期限日 DEADLINEDAY: 10, /** * 生命周期函数--监听页面加载 */ onLoad(options) { let now = moment(); let limitTime = moment().date(this.DEADLINEDAY); //如果是新注册用户不到一个月,则不提醒本月情况,直接提醒下个月的情况 if (app.globalData.newUser) { limitTime.add(1, 'M'); } let deadline = limitTime.format(`MM-${this.DEADLINEDAY}`); let leftday = limitTime.diff(now, 'days'); let thisMonth = now.format('YYYY-MM'); let lastMonth = now.add(-1, 'M').format('YYYY-MM'); this.setData({ deadline, leftday, thisMonth, lastMonth, }); now = moment(); this.getLedgerType(now.format('YYYY-MM-DD'), r => { this.setData({ tabList: r[0], pageList: r[1], thisMonthInfo: r[2], }); this.tabsHeight('.page0'); }); //本月 this.getLedgerType( now.add(-1, 'M').format('YYYY-MM-DD'), r => { this.setData({ lastMonthInfo: r[2], }); }, true, ); //上月 }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() {}, /** * 生命周期函数--监听页面显示 */ onShow() {}, getLedgerType(time, success, lastMonth) { var that = this; // var time = moment().format('YYYY-MM-DD') ledgerservice.getLedgerSummary( app.globalData.accessToken.userId, app.globalData.userInfo.extension2, time, { success(res) { let r = that.parseLedgerType(res, lastMonth); success(r); }, }, ); }, parseLedgerType(subtypes, lastMonth) { let monthInfo = { totalMust: 0, finishedMust: 0, totalSelect: 0, finishedSelect: 0, status: '', overtime: '', suggestion: '', }; let map = new Map(); subtypes.forEach(s => { //月度统计 if (s.ledgerTypeId != -1 && s.needUpdate) { monthInfo.totalMust++; if (s.upLoad) { monthInfo.finishedMust++; } } else { monthInfo.totalSelect++; if (s.upLoad) { monthInfo.finishedSelect++; } } //选项卡 if (s.upLoad) { s.tag = '/res/icons/round_check_fill.png'; s.opacity = 0.7; } else if (s.ledgerFinished) { s.tag = '/res/icons/warning_yellow.png'; s.opacity = 1; } else if (!s.needUpdate) { s.tag = '/res/icons/warning_selected.png'; s.opacity = 0.8; } else { s.tag = '/res/icons/warning_red.png'; s.opacity = 1; } if (!map.has(s.ledgerType)) { map.set(s.ledgerType, []); } map.get(s.ledgerType).push(s); }); // if (monthInfo.finishedMust == 0) { monthInfo.status = '未提交'; if (lastMonth) { monthInfo.suggestion = '建议:当期台账完全未提交,严重影响评估结果,后续请注意'; } else { monthInfo.suggestion = '建议:请尽快提交台账'; } } else if (monthInfo.finishedMust < monthInfo.totalMust) { monthInfo.status = '部分提交'; if (lastMonth) { monthInfo.suggestion = '建议:当期台账部分未提交,会影响评估结果,后续请尽量提交所有台账'; } else { monthInfo.suggestion = '建议:当前已提交部分台账,请补全剩余台账'; } } else { monthInfo.status = '已提交'; if (lastMonth) { monthInfo.suggestion = '当期台账已全部提交,请保持'; } else { monthInfo.suggestion = '本期台账已全部提交'; } } monthInfo.overtime = moment().date() - this.DEADLINEDAY; monthInfo.percent = Math.round( (monthInfo.finishedMust / monthInfo.totalMust) * 100, ); //选项卡 var t = []; var p = []; for (let item of map) { if (item[1][0].ledgerTypeId == -1) { continue; } let notUpload = 0; item[1].forEach(l => { if (l.needUpdate && !l.upLoad) { notUpload++; } }); t.push({ name: item[0], tag: notUpload, total: item[1].length, }); p.push(item[1]); } return [t, p, monthInfo]; }, gotoLedgerDetail(e) { var i = e.currentTarget.dataset.index.split(','); var indexGroup = [parseInt(i[0]), parseInt(i[1])]; var ledger = this.data.pageList[indexGroup[0]][indexGroup[1]]; var that = this; wx.navigateTo({ url: '/pages/mLedger/ledgerupload/ledgerupload', events: { uploadOver: function (data) { let i = data.indexGroup; let { pageList, tabList } = that.data; tabList[i[0]].tag--; pageList[i[0]][i[1]].upLoad = true; pageList[i[0]][i[1]].tag = '/res/icons/round_check_fill.png'; pageList[i[0]][i[1]].opacity = 0.7; that.setData({ pageList, tabList, }); }, }, success: res => { // 通过 eventChannel 向被打开页面传送数据 res.eventChannel.emit('acceptDataFromOpenerPage', { ledger: ledger, indexGroup: indexGroup, type: 0, }); }, }); }, gotoHistory() { let tabList = this.data.tabList; wx.navigateTo({ url: '/pages/mLedger/ledgerhistory/ledgerhistory', success: res => { // 通过 eventChannel 向被打开页面传送数据 res.eventChannel.emit('acceptDataFromOpenerPage', { tabList: tabList, }); }, }); }, //计算swiper高度方法(在切换的时候调用) tabsHeight(element) { let that = this; let query = wx.createSelectorQuery(); //必须要先创建一个查询 query .select(element) .boundingClientRect(function (rect) { let pageheight = that.data.pageheight.split('px')[0]; pageheight = parseInt(pageheight); if (rect.height > pageheight) { that.setData({ pageheight: rect.height + 'px', }); } }) .exec(); }, swichNav: function (e) { var that = this; if (this.data.currentTab === e.target.dataset.current) { return false; } else { that.setData({ currentTab: e.target.dataset.current, navScrollLeft: e.target.dataset.current >= 3 ? e.target.dataset.current * 60 : 0, //判断当前选中的个数是否是第5个 }); // that.tabsHeight('.page' + e.target.dataset.current); //查询哪一个元素 } }, bindChange: function (e) { var that = this; that.setData({ currentTab: e.detail.current, navScrollLeft: e.detail.current >= 3 ? e.detail.current * 60 : 0, //判断当前选中的个数是否是第5个 }); that.tabsHeight('.page' + e.detail.current); //查询哪一个元素 }, changeMonth() { let showThisMonth = !this.data.showThisMonth; this.setData({ showThisMonth }); }, });