123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import { connect } from 'herculex';
- import dayjs from 'dayjs';
- import { storageAPI } from "../../../../core/utils/jsapi";
- import { prefixPagePath, dynamicPageName } from "../../../../core/utils";
- import { getQrCode } from '../utils';
- const app = getApp();
- Component(connect({
- mapStateToProps: {
- userInfo: state => state.$global.userInfo,
- passport: state => state.$global.passport,
- titleBarHeight: state => state.$global.titleBarHeight
- }
- })({
- props: {
- componentData: {}
- },
- data: {
- imgSrcPrefix: app.globalData.imgSrcPrefix,
- expiresTime: 300,
- qrExpiresTime: 60,
- defaultTips: '',
- timer: null,
- menuList: [{
- name: '重选来访原因',
- type: 'onReselectReason',
- icon: 'https://gw.alipayobjects.com/mdn/rms_41760b/afts/img/A*FrMRR7uHtDIAAAAAAAAAAAAAARQnAQ'
- }]
- },
- async didMount() {
- const {
- componentExtInfo
- } = this.props.componentData;
- const {
- passport
- } = this.data;
- const expiresTime = parseInt(componentExtInfo.expiresTime || this.data.expiresTime);
- const qrExpiresTime = parseInt(componentExtInfo.qrExpiresTime || this.data.qrExpiresTime);
- this.accessTime = dayjs();
- this.setData({
- time: this.accessTime.format('MM月DD日 HH:mm:ss')
- });
- this.timer = setInterval(() => {
- const nowtime = dayjs(); //
- if (passport.qrCodeUrl) {
- if (nowtime.diff(this.accessTime, 'second') >= qrExpiresTime) {
- this.accessTime = dayjs();
- this.refreshQRcode();
- }
- } else if (nowtime.diff(this.accessTime, 'second') >= expiresTime) {
- clearInterval(this.timer);
- my.reLaunch({
- url: `${prefixPagePath}/${dynamicPageName}/index?pageCode=certificateExpiredPage`
- });
- return;
- }
- this.setData({
- time: nowtime.format('MM月DD日 HH:mm:ss')
- });
- }, 1000);
- },
- didUnmount() {
- clearInterval(this.timer);
- this.timer = null;
- },
- methods: {
- async handleClick() {
- const [, {
- data = {}
- }] = await storageAPI.getStorage({
- key: 'passport'
- });
- const {
- communityCode,
- communityName,
- sceneCode
- } = data;
- const passport = {
- communityCode,
- communityName,
- sceneCode
- };
- await storageAPI.setStorage({
- key: 'passport',
- data: passport
- });
- this.commit('$global:updateState', {
- passport
- });
- my.navigateBack();
- },
- async refreshQRcode() {
- const {
- passport
- } = this.data;
- const params = {
- communityCode: passport.communityCode,
- communityName: passport.communityName,
- sceneCode: passport.sceneCode
- };
- const [err, res = {}] = await getQrCode(params);
- if (err || res.result !== 'success') return;
- const newPassport = { ...passport,
- qrCodeUrl: res.qrCodeUrl || ''
- }; // 更新storage
- this.commit('$global:updateState', {
- passport: newPassport
- });
- await storageAPI.setStorage({
- key: 'passport',
- data: newPassport
- });
- }
- }
- }));
|