You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
517 lines
13 KiB
517 lines
13 KiB
import dayjs from 'dayjs' |
|
const app = getApp<IAppOption>() |
|
const licia = require('miniprogram-licia') |
|
|
|
Page({ |
|
data: { |
|
today: dayjs().format('YYYY年MM月DD日 dddd'), |
|
|
|
configList: [], |
|
infoList: [], |
|
storyList: [], |
|
zdUserInfo: {} as any, |
|
anyWhere: false, |
|
regGuide: true, |
|
isLogin: 1, |
|
|
|
adlList: [], |
|
adlNum: '', |
|
adlNewRecord: {} as any, |
|
|
|
liveList: [], |
|
liveStatus: app.globalData.liveStatus, |
|
|
|
liveDownList: [], |
|
|
|
detail: {}, |
|
|
|
referralFromShow: false, |
|
publicCard: false, |
|
|
|
// toastShow: true, |
|
// toastType: "doubleStandards", |
|
// toastType: "vipScan", |
|
// toastType: "healthCare", |
|
// toastType: "aldAlert", |
|
// toastType:"dedicatedDoctor", |
|
// toastType: 'referral-toast', |
|
// toastType: 'public-toast', |
|
|
|
toastShow: false, |
|
toastType: '', |
|
toastParams: {} as any, |
|
|
|
sliderTop: 0, |
|
|
|
unreadCount: 0, |
|
|
|
options: {} as any, |
|
}, |
|
onLoad(options) { |
|
const systemInfo = wx.getSystemInfoSync() |
|
|
|
if (options.visitors === '1') { |
|
wx.showToast({ |
|
title: '未完成注册,登录失败', |
|
icon: 'none', |
|
}) |
|
} |
|
|
|
app.zdGetTheme().then((res) => { |
|
this.setData({ |
|
theme: res, |
|
}) |
|
}) |
|
|
|
this.setData({ |
|
sliderTop: systemInfo.screenHeight - 160, |
|
options, |
|
}) |
|
}, |
|
onShow() { |
|
app.waitLogin({ type: [0, 1] }).then(() => { |
|
app.mpBehavior({ PageName: 'PG_PatientHome' }) |
|
|
|
this.setData({ |
|
anyWhere: app.globalData.anyWhere, |
|
isLogin: app.globalData.isLogin, |
|
}) |
|
if (this.data.options.es === '201501') { |
|
app.globalData.IsAliQiWei = 1 |
|
|
|
this.setData({ |
|
options: {}, |
|
}) |
|
} |
|
app.getZdUserInfo(this, true, (zdUserInfo) => { |
|
this.setData({ |
|
zdUserInfo, |
|
publicCard: zdUserInfo.isShowFollowGuide == 1, |
|
}) |
|
if (zdUserInfo.ExclusiveDoctorId) { |
|
app.mpBehavior({ PageName: 'PG_PatientHomeDoctorCard' }) |
|
} |
|
this.getPopup() |
|
this.getConfig(zdUserInfo) |
|
this.getSystemConfig() |
|
if (zdUserInfo.ExclusiveDoctorId > 0) { |
|
this.getUnreadCount() |
|
} |
|
|
|
if (zdUserInfo.UserType == 4) { |
|
this.getLastRecord() |
|
} |
|
}) |
|
}) |
|
}, |
|
async getPopup() { |
|
const data3 = await wx.ajax({ |
|
method: 'GET', |
|
url: '?r=zd/popup/info', |
|
data: { |
|
Type: 6, |
|
}, |
|
}) |
|
if (data3.showAlert) { |
|
this.setData({ |
|
toastShow: data3.showAlert, |
|
toastType: 'dedicatedDoctor', |
|
toastParams: {}, |
|
}) |
|
} |
|
}, |
|
getUnreadCount() { |
|
wx.ajax({ |
|
method: 'GET', |
|
url: '?r=zd/message-interact/get-unread-count', |
|
data: {}, |
|
}).then((res) => { |
|
this.setData({ |
|
unreadCount: res, |
|
}) |
|
}) |
|
}, |
|
getSystemConfig() { |
|
wx.ajax({ |
|
method: 'GET', |
|
url: '?r=zd/common/get-config', |
|
data: {}, |
|
}).then((res) => { |
|
this.setData({ |
|
systemConfig: res, |
|
}) |
|
}) |
|
}, |
|
getLastRecord() { |
|
wx.ajax({ |
|
method: 'GET', |
|
url: '?r=zd/medication/last-record', |
|
}).then((res) => { |
|
this.setData({ |
|
detail: { |
|
weekName: dayjs(res.InjectionDate).format('ddd'), |
|
days: dayjs().diff(res.InjectionDate, 'day'), |
|
...res, |
|
}, |
|
}) |
|
}) |
|
}, |
|
getConfig(zdUserInfo: any) { |
|
let UserType = zdUserInfo.UserType |
|
if (UserType <= 2) { |
|
UserType = 1 |
|
} |
|
wx.ajax({ |
|
method: 'GET', |
|
url: `?r=zd/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) => { |
|
// return subItem.linkUrl !== 'MINIDOCTOR' || zdUserInfo.EntryThreePeriod === 1 |
|
// }) |
|
// .filter((subItem: any) => { |
|
// return subItem.linkUrl !== 'MINIDOCTOR-1.0' || zdUserInfo.EntryTwoPeriod === 1 |
|
// }) |
|
// } |
|
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') |
|
} |
|
}) |
|
}) |
|
}, |
|
setPopupInfo() { |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/popup/update-click-status', |
|
data: { |
|
Type: 1, |
|
Id: this.data.toastParams.Id, |
|
}, |
|
}).then((_res) => {}) |
|
}, |
|
setBannerClick() { |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/nrdl/add-banner-click-record', |
|
data: {}, |
|
}) |
|
}, |
|
getInfoList(configId: string) { |
|
wx.ajax({ |
|
method: 'GET', |
|
url: '?r=zd/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=zd/story/index-list', |
|
data: { |
|
count: 0, |
|
ConfigId: configId, |
|
}, |
|
}).then((res) => { |
|
this.setData({ |
|
storyList: res.list, |
|
}) |
|
}) |
|
}, |
|
getAdl() { |
|
wx.ajax({ |
|
method: 'GET', |
|
url: '?r=zd/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=zd/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 === 'doctor') { |
|
app.mpBehavior({ PageName: 'BTN_PatientHomeDoctorCard' }) |
|
} |
|
if (code === 'activity2' && url.includes('/patient/pages/live/index')) { |
|
app.mpBehavior({ PageName: 'BTN_PatientHomeLiveCard' }) |
|
} |
|
if (code === 'activity2' && url.includes('/patient/pages/liveDetail/index')) { |
|
app.mpBehavior({ PageName: 'BTN_PatientHomeLiveCard' }) |
|
} |
|
if (code === 'article' && url.includes('/patient/pages/repositoryDetail/index')) { |
|
app.mpBehavior({ PageName: 'BTN_PatientHomeContentCard' }) |
|
} |
|
|
|
if (url === 'NRDL') { |
|
this.setBannerClick() |
|
this.handleNRDL() |
|
return |
|
} |
|
|
|
if (url.includes('loginState')) { |
|
url = url + encodeURIComponent(app.globalData.loginState) |
|
wx.navigateTo({ |
|
url, |
|
}) |
|
return |
|
} |
|
|
|
wx.navigateTo({ |
|
url, |
|
fail() { |
|
app.globalData.active = active |
|
wx.switchTab({ |
|
url, |
|
}) |
|
}, |
|
}) |
|
}, |
|
handleReg() { |
|
app.zdPermissionVerification(3, 0, '') |
|
}, |
|
handleMiniDoctor(e) { |
|
const { link } = e.currentTarget.dataset |
|
let period = '' |
|
if (link === 'MINIDOCTOR-1.0') { |
|
period = '2' |
|
} |
|
wx.navigateTo({ |
|
url: `/patient/pages/webview/index?period=${period}`, |
|
}) |
|
}, |
|
handleQuestion() { |
|
app.zdPermissionVerification(2, 11, `/patient/pages/repository/index`).then(() => { |
|
const webviewUrl = encodeURIComponent( |
|
`${app.globalData.url}/zdcare/#/info?loginState=${app.globalData.loginState}`, |
|
) |
|
wx.navigateTo({ |
|
url: `/patient/pages/webview/index?url=${webviewUrl}`, |
|
}) |
|
}) |
|
}, |
|
handleSlider() { |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/nrdl/add-slide-click-record', |
|
data: {}, |
|
}) |
|
this.handleNRDL() |
|
}, |
|
handleNRDL() { |
|
app.zdPermissionVerification(3, 12, `/patient/pages/index/index`).then(() => { |
|
wx.navigateTo({ |
|
url: `/patient/pages/nrdl/index`, |
|
}) |
|
// if (this.data.zdUserInfo.has7DayAdl === 1) { |
|
// wx.navigateTo({ |
|
// url: `/patient/pages/nrdl/index`, |
|
// }); |
|
// } else { |
|
// this.setData({ |
|
// toastShow: true, |
|
// toastType: "ndrlAldAlert", |
|
// }); |
|
// } |
|
}) |
|
}, |
|
routerVipTo() { |
|
const { MedicineAuditSwitch, UseDrugsAuditStatus, isFollow } = this.data.zdUserInfo |
|
if (MedicineAuditSwitch === '0') { |
|
wx.navigateTo({ |
|
url: '/patient/pages/vipLogin/index', |
|
}) |
|
} else if (MedicineAuditSwitch === '1') { |
|
const pendPath = { |
|
0: '/patient/pages/vipPending/index', |
|
1: '/patient/pages/vipStartPending/index', |
|
}[isFollow] |
|
const url = { |
|
1: pendPath, |
|
2: '/patient/pages/vipReject/index', |
|
}[UseDrugsAuditStatus] |
|
wx.navigateTo({ |
|
url: url || '/patient/pages/vipCert/index', |
|
}) |
|
} else { |
|
wx.showToast({ |
|
icon: 'none', |
|
title: '工程师正在努力建设中,敬请期待!', |
|
}) |
|
} |
|
}, |
|
handleToastOk() { |
|
const { toastType } = this.data |
|
if (toastType === 'vipScan') { |
|
this.routerVipTo() |
|
this.handleToastCancel() |
|
} else if (toastType === 'aldAlert') { |
|
wx.navigateTo({ |
|
url: '/patient/pages/adl/index', |
|
}) |
|
this.handleToastCancel() |
|
} else if (toastType === 'healthCare') { |
|
this.setPopupInfo() |
|
this.handleNRDL() |
|
this.handleToastCancel() |
|
} else if (toastType === 'ndrlAldAlert') { |
|
wx.navigateTo({ |
|
url: '/patient/pages/adl/index?nrdl=1', |
|
}) |
|
this.handleToastCancel() |
|
} else if (toastType === 'doubleStandards') { |
|
wx.navigateTo({ |
|
url: '/patient/pages/adl/index', |
|
}) |
|
this.handleToastCancel() |
|
} else if (toastType === 'dedicatedDoctor') { |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/popup/close-popup', |
|
data: { |
|
Type: 6, |
|
}, |
|
}).then((_res) => { |
|
wx.navigateTo({ |
|
url: '/patient/pages/interactivePatient/index', |
|
}) |
|
}) |
|
this.handleToastCancel(null, false) |
|
} else if (toastType === 'referral-toast') { |
|
this.setData({ |
|
referralFromShow: true, |
|
}) |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/re-visit/update-popup-show-status', |
|
data: {}, |
|
}) |
|
this.handleToastCancel(null, false) |
|
} |
|
}, |
|
handleToastCancel(_e = null, sure = true) { |
|
const { toastType } = this.data |
|
if (toastType === 'doubleStandards' && sure) { |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/popup/close-popup', |
|
data: { |
|
Type: 5, |
|
}, |
|
}) |
|
} else if (toastType === 'dedicatedDoctor' && sure) { |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/popup/close-popup', |
|
data: { |
|
Type: 6, |
|
}, |
|
}) |
|
} else if (toastType === 'referral-toast') { |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/re-visit/update-popup-show-status', |
|
data: {}, |
|
}) |
|
} |
|
this.setData({ |
|
toastShow: false, |
|
toastType: '', |
|
toastParams: '', |
|
}) |
|
}, |
|
handlePublic() { |
|
this.setData({ |
|
toastShow: true, |
|
toastType: 'public-toast', |
|
toastParams: {}, |
|
}) |
|
this.handlePublicClose() |
|
}, |
|
handlePublicClose() { |
|
this.setData({ |
|
publicCard: false, |
|
}) |
|
wx.ajax({ |
|
method: 'POST', |
|
url: '?r=zd/account/add-user-subscribe-guide-record', |
|
data: {}, |
|
}) |
|
}, |
|
handleMp(e: any) { |
|
const { code } = e.currentTarget.dataset |
|
const PageName = { |
|
spread1: 'BTN_PATIENTHOMEBANNER1', |
|
spread2: 'BTN_PATIENTHOMEBANNER2', |
|
}[code] |
|
}, |
|
handleRegClose() { |
|
this.setData({ |
|
regGuide: false, |
|
}) |
|
}, |
|
})
|
|
|