import dayjs from 'dayjs' const app = getApp() const licia = require('miniprogram-licia') Page({ data: { configList: [], infoList: [] as any[], storyList: [] as any[], userInfo: {} as any, anyWhere: false, regGuide: true, greeting: '晚上好', greetingIcon: 'icon77', adlList: [], adlNum: '', adlNewRecord: {} as any, liveList: [], liveStatus: app.globalData.liveStatus, liveDownList: [], detail: {}, toastShow: false, toastType: '', // toastType: 'dedicatedDoctor', // 绑定医生弹窗 toastParams: {} as any, sliderTop: 0, unreadCount: 0, options: {} as any, firstLogin: '', }, onLoad(options) { const systemInfo = wx.getSystemInfoSync() this.setData({ sliderTop: systemInfo.screenHeight - 160, options, firstLogin: options.fl, }) }, onShow() { app.waitLogin({}).then(() => { app.mpBehavior({ PageName: 'PG_PATIENTHOME' }) this.setData({ anyWhere: app.globalData.anyWhere, }) app.getUserInfo(this, true, (userInfo) => { this.setData({ userInfo, }) this.updateGreeting() if (this.data.firstLogin != '1' || userInfo.EntryFourPeriod != 1) { this.getPopup() } else { this.setData({ firstLogin: '', }) } this.getConfig(userInfo) this.getSystemConfig() if (userInfo.ExclusiveDoctorId > 0) { this.getUnreadCount() } if (userInfo.UserType == 4) { this.getLastRecord() } }) }) }, getUnreadCount() { wx.ajax({ method: 'GET', url: '?r=igg4/message-interact/get-unread-count', data: {}, }).then((res) => { this.setData({ unreadCount: res, }) }) }, getSystemConfig() { wx.ajax({ method: 'GET', url: '?r=igg4/common/get-config', data: {}, }).then((res) => { this.setData({ systemConfig: res, }) }) }, updateGreeting() { const hour = new Date().getHours() let greeting = '晚上好' let greetingIcon = 'icon77' if (hour >= 6 && hour < 12) { greeting = '早上好' greetingIcon = 'icon75' } else if (hour >= 12 && hour < 18) { greeting = '下午好' greetingIcon = 'icon76' } if (this.data.userInfo.UserType == 4) { if (hour >= 6 && hour < 12) { greetingIcon = 'icon78' } else if (hour >= 12 && hour < 18) { greetingIcon = 'icon79' } else { greetingIcon = 'icon65' } } this.setData({ greeting, greetingIcon }) }, getLastRecord() { wx.ajax({ method: 'GET', url: '?r=igg4/medication/last-record', }).then((res) => { this.setData({ detail: { weekName: dayjs(res.InjectionDate).format('ddd'), days: dayjs().diff(res.InjectionDate, 'day'), ...res, }, }) }) }, getConfig(userInfo: any) { let UserType = userInfo.UserType if (UserType <= 2) { UserType = 1 } wx.ajax({ method: 'GET', url: `?r=igg4/mini-conf/get-config`, data: { userType: UserType }, }).then((res) => { res = res.map((item: any) => { if (item.code == 'spread1' || item.code == 'spread2' || item.code == 'serviceConf') { item.subList = item.subList.filter((subItem) => { return subItem.showStatus == 1 }) } if (item.name === 'BANNER-MINIDOVTOR') { item.subList = item.subList.filter((subItem: any) => { if (subItem.linkUrl == 'MINIDOCTOR-4.0' && userInfo.EntryFourPeriod != 1) { return false } // if (subItem.linkUrl == 'MINIDOCTOR-1.0') { // return false // } if (subItem.linkUrl == 'MINIDOCTOR' && userInfo.EntryTwoPeriowd != 1) { return false } return true }) } return item }) this.setData({ configList: res, }) res.forEach((item) => { if (item.code == 'article') { this.getInfoList(item.configId) } if (item.code == 'story') { this.getStoryList(item.configId) } if (item.code == 'adl') { this.getAdl() } if (item.code == 'activity2') { this.getActivity(item.configId, item.showNum, 'liveList') } if (item.code == 'activity1') { this.getActivity(item.configId, item.showNum, 'liveDownList') } }) }) }, async getPopup() { const data3 = await wx.ajax({ method: 'GET', url: '?r=igg4/popup/info', data: { Type: 6, }, }) if (data3.showAlert) { this.setData({ toastShow: data3.showAlert, toastType: data3.isRecommend ? 'recommendBindDoctor' : 'dedicatedDoctor', toastParams: { ...data3.doctorInfo, }, }) } }, getInfoList(configId: string) { wx.ajax({ method: 'GET', url: '?r=igg4/pic-text/index-list', data: { count: 0, ConfigId: configId, }, }).then((res) => { this.setData({ infoList: licia.chunk(res.list, 3), }) }) }, getStoryList(configId: string) { wx.ajax({ method: 'GET', url: '?r=igg4/story/index-list', data: { count: 0, ConfigId: configId, }, }).then((res) => { this.setData({ storyList: licia.chunk(res.list, 3), }) }) }, getAdl() { wx.ajax({ method: 'GET', url: '?r=igg4/adl/index', data: {}, }).then((res) => { const newRecord = res.newRecord this.setData({ adlList: res.list, adlNum: res.count, adlNewRecord: { days: dayjs().diff(newRecord.CreateTime, 'day'), ...newRecord, newCreateTime: dayjs(newRecord.CreateTime).format('YYYY-MM-DD'), }, }) }) }, getActivity(ConfigId: string, count: number, key: string) { wx.ajax({ method: 'GET', url: '?r=igg4/activity/index-list', data: { ConfigId, count }, }).then((res) => { this.setData({ [key]: res.list.map((item) => { item.EndTimeValue = dayjs(item.EndTime).valueOf() item.BeginTimeValue = dayjs(item.BeginTime).valueOf() item.SignUpDeadlineValue = dayjs(item.SignUpDeadline).valueOf() item.BeginDate = dayjs(item.BeginTime).format('YYYY-MM-DD') item.EndDate = dayjs(item.EndTime).format('YYYY-MM-DD') item.isDay = item.BeginDate == item.EndDate item.BeginHm = dayjs(item.BeginTime).format('HH:mm') item.EndHm = dayjs(item.EndTime).format('HH:mm') item.BeginTime = dayjs(item.BeginTime).format('YYYY-MM-DD HH:mm') item.EndTime = dayjs(item.EndTime).format('YYYY-MM-DD HH:mm') return item }), }) }) }, routerTo(e) { let { url, active, code } = e.currentTarget.dataset if (!url) return if (code === 'adl') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEADLMODULE' }) } if (code === 'drugs') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEMEDICATIONMODULE' }) } if (code === 'story' && url === '/pages/story/index') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMESTORIESVIEWALL' }) } if (code === 'story' && url.includes('/pages/publishStoryDetail/index')) { app.mpBehavior({ PageName: 'BTN_PATIENTHOMESTORYCLICK' }) } if (code === 'activity2' && url === '/pages/live/index') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESVIEWALL' }) } if (code === 'activity2' && url === '/pages/live/index?index=0') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESMONTHLYPOSTER' }) } if (code === 'activity2' && url.includes('/pages/liveDetail/index')) { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESCARD' }) } if (code === 'activity1' && url === '/pages/live/index') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEOFFLINEACTIVITIESVIEWALL' }) } if (code === 'activity1' && url.includes('/pages/liveDetail/index')) { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEOFFLINEACTIVITIESCARD' }) } if (code === 'article' && url === '/pages/repository/index') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMERECOMMENDEDREADINGVIEWALL' }) } if (code === 'article' && url.includes('/pages/repositoryDetail/index')) { app.mpBehavior({ PageName: 'BTN_PATIENTHOMERECOMMENDEDREADINGARTICLE' }) } if (code === 'serviceConf') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMESERVICE' }) } if (url === '/pages/interactivePatient/index') { app.mpBehavior({ PageName: 'BTN_PATIENTHOMEDOCTORCARD' }) } if (url.includes('loginState')) { url = url + encodeURIComponent(app.globalData.loginState) app.permissionVerification(2, 11, `/pages/repository/index`).then(() => { wx.navigateTo({ url, }) }) return } wx.navigateTo({ url, fail() { app.globalData.active = active wx.switchTab({ url, }) }, }) }, handleReg() { app.permissionVerification(3, 0, '') }, handleMiniDoctor(e) { const { link } = e.currentTarget.dataset let period = '' if (link === 'MINIDOCTOR-1.0') { period = '2' } wx.navigateTo({ url: `/pages/webview/index?period=${period}`, }) }, handleQuestion() { app.permissionVerification(2, 11, `/pages/repository/index`).then(() => { const webviewUrl = encodeURIComponent( `${app.globalData.url}/zdcare/#/info?loginState=${app.globalData.loginState}`, ) wx.navigateTo({ url: `/pages/webview/index?url=${webviewUrl}`, }) }) }, handleToastOk() { const { toastType } = this.data if (toastType === 'dedicatedDoctor' || toastType === 'recommendBindDoctor') { wx.ajax({ method: 'POST', url: '?r=igg4/popup/close-popup', data: { Type: 6, }, }).then((_res) => { if (toastType === 'dedicatedDoctor') { wx.navigateTo({ url: '/pages/interactivePatient/index', }) } app.getUserInfo(this, true) }) this.handleToastCancel(null, false) } }, handleToastCancel(_e = null, sure = true) { const { toastType } = this.data if ((toastType === 'dedicatedDoctor' || toastType === 'recommendBindDoctor') && sure) { wx.ajax({ method: 'POST', url: '?r=igg4/popup/close-popup', data: { Type: 6, }, }) app.getUserInfo(this, true) } this.setData({ toastShow: false, toastType: '', toastParams: '', }) }, handleMp(e: any) { const { code } = e.currentTarget.dataset const PageName = { spread1: 'BTN_PATIENTHOMEBANNER1', spread2: 'BTN_PATIENTHOMEBANNER2', }[code] app.mpBehavior({ PageName }) }, handleRegClose() { this.setData({ regGuide: false, }) }, handleStoryView(e: any) { const { id } = e.currentTarget.dataset wx.navigateTo({ url: `/pages/publishStoryDetail/index?id=${id}`, }) }, handleStorySave(e: any) { const { id, saved } = e.currentTarget.dataset wx.ajax({ method: 'POST', url: '?r=igg4/story/save', data: { id, isSave: saved ? 0 : 1, }, }).then(() => { const { storyList } = this.data const newList = storyList.map((page: any) => page.map((item: any) => (item.Id === id ? { ...item, IsSave: saved ? 0 : 1 } : item)), ) this.setData({ storyList: newList }) wx.showToast({ title: saved ? '已取消收藏' : '收藏成功', icon: 'none', }) }) }, handleArticleView(e: any) { const { id } = e.currentTarget.dataset wx.navigateTo({ url: `/pages/repositoryDetail/index?id=${id}`, }) }, handleArticleSave(e: any) { const { id, saved } = e.currentTarget.dataset const url = saved ? '?r=igg4/pic-text/cancel-collection' : '?r=igg4/pic-text/collection' app.permissionVerification(3, 3, `/pages/index/index`, id).then(() => { wx.ajax({ method: 'POST', url, data: { ContentId: id, }, loading: true, }).then(() => { const { infoList } = this.data const newList = infoList.map((page: any) => page.map((item: any) => (item.ArticleId === id ? { ...item, IsSave: saved ? 0 : 1 } : item)), ) this.setData({ infoList: newList }) wx.showToast({ title: saved ? '已取消收藏' : '收藏成功', icon: 'none', }) }) }) }, })