diff --git a/project.private.config.json b/project.private.config.json index 7f8cce9..c9fa47a 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -23,11 +23,18 @@ "miniprogram": { "list": [ { + "name": "医生端-医患互动", + "pathName": "doctor/pages/askDoctor/index", + "query": "id=25", + "scene": null, + "launchMode": "default" + }, + { "name": "医生端-诊疗流程", "pathName": "doctor/pages/course/index", "query": "id=25¤t=0", - "scene": null, - "launchMode": "default" + "launchMode": "default", + "scene": null }, { "name": "医生-海报", diff --git a/src/app.json b/src/app.json index d6022ec..5ecce9c 100644 --- a/src/app.json +++ b/src/app.json @@ -77,7 +77,13 @@ "pages/followPlan/index", "pages/revisitRecord/index", "pages/lastDiagnosisReport/index", - "pages/blood/index" + "pages/blood/index", + "pages/bloodDetail/index", + "pages/coltStat/index", + "pages/knowledge/index", + "pages/knowledgeDetail/index", + "pages/knowledgeDetailVideo/index", + "pages/askDoctor/index" ] }, { diff --git a/src/components/popup/index.scss b/src/components/popup/index.scss index ba5a4fe..1a8096d 100644 --- a/src/components/popup/index.scss +++ b/src/components/popup/index.scss @@ -1005,10 +1005,10 @@ } .hostipal { margin-top: 16rpx; - line-height: 28rpx; + line-height: 36rpx; .content { margin-right: 8rpx; - display: inline-block; + display: inline; font-size: 28rpx; color: rgba(161, 164, 172, 1); } diff --git a/src/components/popup/index.ts b/src/components/popup/index.ts index bb8e5cd..6a01334 100644 --- a/src/components/popup/index.ts +++ b/src/components/popup/index.ts @@ -47,6 +47,8 @@ Component({ inhibitorsName: '', inhibitorsContent: '', + selectDoctorId: '', + imageUrl: app.globalData.imageUrl, Timestamp: app.globalData.Timestamp, }, @@ -91,6 +93,18 @@ Component({ this.triggerEvent('ok', { id: inhibitorsId, name: inhibitorsName, content: inhibitorsContent }) return } + + if (type === 'selectDoctor') { + if (!this.data.selectDoctorId) { + wx.showToast({ + title: '请选择医生', + icon: 'none', + }) + return + } + this.triggerEvent('ok', { id: this.data.selectDoctorId }) + return + } this.triggerEvent('ok') }, handleCancel() { @@ -117,9 +131,14 @@ Component({ TCenterId: id, }) }, + handleSelectDoctor(e) { + const { id } = e.currentTarget.dataset + this.setData({ + selectDoctorId: id, + }) + }, handleSelectInhibitors(e) { const { id, name } = e.currentTarget.dataset - console.log(11111) this.setData({ inhibitorsId: id, inhibitorsName: name, diff --git a/src/components/popup/index.wxml b/src/components/popup/index.wxml index 67e1d21..0c04408 100644 --- a/src/components/popup/index.wxml +++ b/src/components/popup/index.wxml @@ -300,19 +300,16 @@ - + - + - + - 王青 + {{item.doctorName}} - 北京积水潭医院龙泽院区 - 三甲 + {{item.hospitalName}} + {{item.hospitalClassificationName}}{{item.hospitalLevelName}} diff --git a/src/doctor/components/doctor-tab-bar/index.ts b/src/doctor/components/doctor-tab-bar/index.ts index 252fa06..c27faa7 100644 --- a/src/doctor/components/doctor-tab-bar/index.ts +++ b/src/doctor/components/doctor-tab-bar/index.ts @@ -15,10 +15,10 @@ Component({ iconActive: 'tabbar3-1-active', }, { - pagePath: '/doctor/pages/index/index', - text: '知识库', - icon: 'tabbar3-1', - iconActive: 'tabbar3-1-active', + pagePath: '/doctor/pages/knowledge/index', + text: '小助手', + icon: 'tabbar3-3', + iconActive: 'tabbar3-3-active', }, { pagePath: '/doctor/pages/my/index', diff --git a/src/doctor/pages/askDoctor/index.json b/src/doctor/pages/askDoctor/index.json new file mode 100644 index 0000000..2beb893 --- /dev/null +++ b/src/doctor/pages/askDoctor/index.json @@ -0,0 +1,10 @@ +{ + "navigationStyle": "custom", + "usingComponents": { + "van-overlay": "@vant/weapp/overlay/index", + "van-loading": "@vant/weapp/loading/index", + "navbar": "/components/navbar/index", + "popup": "/components/popup/index", + "van-popup": "@vant/weapp/popup/index" + } +} diff --git a/src/doctor/pages/askDoctor/index.scss b/src/doctor/pages/askDoctor/index.scss new file mode 100644 index 0000000..d2cde3c --- /dev/null +++ b/src/doctor/pages/askDoctor/index.scss @@ -0,0 +1,398 @@ +page { + background-color: rgba(242, 244, 245, 1); +} +.page { + height: 100vh; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + box-sizing: border-box; + .page-container { + flex: 1; + overflow: hidden; + .user { + margin: 0 30rpx; + padding: 32rpx; + display: flex; + align-items: center; + justify-content: space-between; + gap: 20rpx; + background-color: #fff; + border-radius: 24rpx; + box-shadow: 0rpx 4rpx 18rpx 0rpx rgba(0, 0, 0, 0.06); + .avatar { + flex-shrink: 0; + width: 108rpx; + height: 108rpx; + border-radius: 50%; + border: 2px solid #fff; + } + .wrap { + flex: 1; + .w-header { + .name { + margin-right: 16rpx; + display: inline; + font-size: 36rpx; + color: rgba(28, 107, 255, 1); + } + .age { + margin-right: 16rpx; + padding: 0 14rpx; + border-radius: 20rpx; + display: inline-flex; + align-items: center; + gap: 6rpx; + font-size: 24rpx; + color: rgba(255, 255, 255, 1); + line-height: 32rpx; + border: 1px solid #fff; + background-color: rgba(28, 107, 255, 1); + .icon { + width: 28rpx; + height: 28rpx; + } + } + .site { + padding: 0 14rpx; + border-radius: 20rpx; + background-color: rgba(32, 196, 255, 1); + display: inline-flex; + align-items: center; + gap: 6rpx; + font-size: 24rpx; + color: rgba(255, 255, 255, 1); + line-height: 32rpx; + .icon { + width: 28rpx; + height: 28rpx; + } + } + } + .w-footer { + margin-top: 22rpx; + display: flex; + justify-content: space-between; + align-items: center; + .content { + font-size: 28rpx; + color: rgba(0, 0, 0, 0.3); + } + .doc { + font-size: 28rpx; + color: rgba(28, 107, 255, 1); + } + } + } + } + .scroll-view { + height: 100%; + .date { + padding-top: 20rpx; + font-size: 28rpx; + color: rgba(173, 179, 180, 1); + text-align: center; + } + .f-header-list { + margin: 24rpx 32rpx 24rpx; + padding: 32rpx; + border-radius: 32rpx; + box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.06); + background: linear-gradient(9deg, #f3fdfb 0%, #eaf2ff 100%); + border: 2rpx solid #ffffff; + .content { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + line-height: 48rpx; + } + .l-item { + margin-top: 24rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + line-height: 48rxp; + padding: 20rpx 32rpx; + background-color: #fff; + border-radius: 84rpx; + } + } + .doctor { + padding: 15rpx 30rpx; + display: flex; + justify-content: flex-end; + .avatar { + position: relative; + padding-left: 16rpx; + flex-shrink: 0; + .a-img { + width: 80rpx; + height: 80rpx; + border-radius: 50%; + } + .label { + position: absolute; + top: 68rpx; + right: 0; + padding: 0 8rpx; + width: 84rpx; + height: 28rpx; + box-sizing: border-box; + line-height: 28rpx; + font-size: 20rpx; + color: rgba(255, 255, 255, 1); + text-align: center; + background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); + border-radius: 35rpx 35rpx 35rpx 35rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + } + .d-container { + flex: 1; + margin-left: 74rpx; + display: flex; + flex-direction: column; + align-items: flex-end; + .message { + padding: 26rpx 32rpx; + background-color: #fff; + border-radius: 32rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + line-height: 48rpx; + white-space: pre-line; + } + .week { + padding: 26rpx 32rpx; + background: linear-gradient(91deg, #1c6bff 0%, #73a4ff 100%); + border-radius: 32rpx; + .w-title { + font-size: 32rpx; + color: rgba(255, 255, 255, 1); + } + .w-container { + margin-top: 24rpx; + .w-content { + padding: 32rpx; + font-size: 32rpx; + color: rgba(40, 48, 49, 1); + line-height: 48rpx; + border-radius: 24rpx; + background-color: rgba(247, 247, 250, 1); + white-space: pre-line; + } + .w-wrap { + padding: 16rpx 32rpx; + display: grid; + grid-template-columns: repeat(2, 1fr); + background-color: rgba(247, 247, 250, 1); + border-radius: 24rpx; + .row { + padding: 16rpx 0; + display: flex; + align-items: center; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + .content { + margin-left: 16rpx; + } + &:nth-of-type(2n-1)::after { + margin: 0 16rpx; + content: ''; + width: 1rpx; + height: 40rpx; + background-color: rgba(161, 164, 172, 0.35); + } + } + } + } + } + .card1 { + width: 502rpx; + height: 340rpx; + box-sizing: border-box; + padding: 114rpx 56rpx 0; + .content { + text-align: center; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + line-height: 48rpx; + } + .btn { + margin-top: 18rpx; + height: 64rpx; + border-radius: 84rpx; + font-size: 28rpx; + color: rgba(255, 255, 255, 1); + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient( 356deg, #1D6BFF 0%, #4F8DFF 100%); + } + } + } + } + .patient { + padding: 15rpx 30rpx; + display: flex; + .avatar { + padding-right: 16rpx; + flex-shrink: 0; + .a-img { + width: 80rpx; + height: 80rpx; + border-radius: 50%; + } + } + .p-container { + flex: 1; + margin-right: 74rpx; + display: flex; + flex-direction: column; + align-items: flex-start; + .guide { + padding: 32rpx 30rpx; + border-radius: 32rpx 0 32rpx 32rpx; + background: linear-gradient(13deg, #ffffff 8%, #e8f0f1 100%); + border: 2rpx solid #ffffff; + .title { + font-size: 32rpx; + color: rgba(40, 48, 49, 1); + font-weight: bold; + } + .sub-title { + font-size: 28rpx; + color: rgba(154, 161, 162, 1); + margin-bottom: 30rpx; + } + .list { + .l-item { + display: flex; + align-items: center; + gap: 16rpx; + margin-bottom: 30rpx; + .order { + flex-shrink: 0; + width: 28rpx; + height: 28rpx; + font-size: 24rpx; + display: flex; + align-items: center; + justify-content: center; + color: rgba(255, 255, 255, 1); + border-radius: 6rpx; + background: #67baca; + } + .content { + font-size: 32rpx; + color: rgba(40, 48, 49, 1); + } + } + } + .tip { + font-size: 28rpx; + color: rgba(103, 113, 114, 1); + display: flex; + align-items: center; + .icon { + width: 44rpx; + height: 44rpx; + } + } + } + .message { + padding: 26rpx 32rpx; + background-color: #fff; + border-radius: 40rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + white-space: pre-line; + } + } + } + .place { + height: 15vh; + } + } + } + .page-footer { + padding: 32rpx 30rpx calc(32rpx + env(safe-area-inset-bottom)); + box-sizing: border-box; + display: flex; + gap: 28rpx; + border-radius: 32rpx 32rpx 0 0; + box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04); + border: 2rpx solid #ffffff; + background-color: #fff; + .send { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + color: rgba(40, 48, 49, 1); + height: 76rpx; + background: #ffffff; + box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04); + border-radius: 140rpx 140rpx 140rpx 140rpx; + border: 2rpx solid #f2f4f5; + .icon { + width: 36rpx; + height: 36rpx; + } + } + .send-date { + flex-shrink: 0; + font-size: 24rpx; + color: #283031; + text-align: center; + .icon { + width: 40rpx; + height: 40rpx; + } + } + } +} + +.popup-message { + padding: 30rpx; + background-color: rgba(242, 244, 245, 1); + .title { + padding: 0 32rpx 32rpx; + font-size: 36rpx; + color: rgba(40, 48, 49, 1); + font-weight: bold; + text-align: center; + } + .list { + max-height: 50vh; + overflow-y: auto; + overflow-x: hidden; + .l-item { + margin-bottom: 24rpx; + padding: 30rpx; + font-size: 32rpx; + color: rgba(40, 48, 49, 1); + border-radius: 24rpx; + background-color: #fff; + &.active { + color: #fff; + background: linear-gradient(356deg, #1d6bff 0%, #4f8dff 100%); + } + } + } + .submit { + margin-top: 24rpx; + width: 690rpx; + height: 84rpx; + font-size: 36rpx; + color: rgba(255, 255, 255, 1); + font-weight: bold; + background: linear-gradient(356deg, #1d6bff 0%, #4f8dff 100%); + display: flex; + align-items: center; + justify-content: center; + border-radius: 64rpx 64rpx 64rpx 64rpx; + } +} diff --git a/src/doctor/pages/askDoctor/index.ts b/src/doctor/pages/askDoctor/index.ts new file mode 100644 index 0000000..960cdf4 --- /dev/null +++ b/src/doctor/pages/askDoctor/index.ts @@ -0,0 +1,388 @@ +import dayjs from 'dayjs' +const licia = require('miniprogram-licia') + +const app = getApp() + +interface IMessageItem { + msgId: string + msgContentType: '1' | '2' | '3' | '4' | '5' // 1:欢迎语 2: 文本 3: 出诊时间 4: 随访计划 5: 复诊提醒 + msgContent: any + msgVisitTime: string + msgVisitTimeType?: string + msgFromType: '1' | '2' // 1: 患者 2: 医生 + msgCreateTime: string // 消息创建时间 + msgCreateTimeName?: string // 消息创建时间 + showTime?: boolean + questionId?: string // 问题ID + doctorId?: string + doctorName?: string + doctorAvatar?: string + msgOtherInfo?: any // 其他信息 +} + +Page({ + data: { + popupShow: false, + popupType: 'selectDoctor', + popupParams: {}, + + patientId: '', + + expend: false, + scrollTop: 0, + scrollIntoView: '', + doctorDetail: {} as any, + doctorList: {}, + + questionActive: 0, + questionList: [] as any, + questionActiveList: [] as any[], + headerQuestionList: [] as any, + + isLoad: false, + isFinish: false, + messageList: [ + // { msgFromType: '2', msgContentType: '1', msgContent: '你的注射日还未填写,随访计划还未生成哦!' }, + // { msgFromType: '2', msgContentType: '2', msgContent: '' }, + // { msgFromType: '2', msgContentType: '3', msgContent: '' }, + // { msgFromType: '2', msgContentType: '4', msgContent: '' }, + // { msgFromType: '2', msgContentType: '5', msgContent: '' }, + ] as IMessageItem[], + nextMsgId: '', + unReadCount: 0, + firstNotReadMsgId: 0, + isVisitAdl: 2, + adlMsgId: 0, + + messageListShow: false, + wordIndex: 0, + wordList: [], + + userInfo: {} as any, + + week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], + timeDay: { 1: '上午', 2: '下午' }, + }, + onLoad(options) { + this.setData({ + patientId: options.id || '', + }) + app.waitLogin({ type: 2 }).then(() => { + app.getUserInfo(2).then((userInfo) => { + this.setData({ + userInfo, + }) + }) + this.getDetail() + // this.getQuestionCommonList(this.data.questionActive) + this.getMessageList() + this.getWordList() + }) + }, + onShow() {}, + getDetail() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/patient/get-detail', + data: { + patientId: this.data.patientId, + }, + }).then((res) => { + this.setData({ + patientInfo: { + ...res.patientInfo, + createTimeName: dayjs(res.patientInfo.createTime).format('YYYY年MM月DD日'), + }, + }) + }) + }, + getMessageList() { + if (this.data.isLoad || this.data.isFinish) return + this.setData({ + isLoad: true, + }) + const nextMsgId = this.data.nextMsgId + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/message-interact/get-message-list', + data: { + nextMsgId, + patientId: this.data.patientId, + }, + }).then((res) => { + res.messageList.map((item) => { + if (item.msgContentType === '1') { + item.msgOtherInfo = JSON.parse(item.msgOtherInfo) + } else if (item.msgContentType === '3') { + item.msgOtherInfo = JSON.parse(item.msgOtherInfo) + } else if (item.msgContentType === '4') { + item.msgContent = JSON.parse(item.msgContent) + } else if (item.msgContentType === '5') { + item.msgContent = JSON.parse(item.msgContent) + } + return item + }) + if (!this.data.nextMsgId && !res.messageList.length) { + res.messageList = [ + { + msgId: '0', + msgContentType: '0', + msgContent: '', + msgVisitTime: '', + msgFromType: '2', + }, + ] + } + this.setData({ + messageList: [...res.messageList.reverse(), ...this.data.messageList], + nextMsgId: res.nextMsgId, + unReadCount: res.unReadCount, + firstNotReadMsgId: res.firstNotReadMsgId, + isVisitAdl: res.isVisitAdl, + adlMsgId: res.adlMsgId, + isLoad: false, + isFinish: nextMsgId === res.nextMsgId, + }) + this.filterCreateTime() + if (!nextMsgId) { + this.handleView() + } + }) + }, + getWordList() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/message-interact/get-common-word-list', + data: { + patientId: this.data.patientId, + }, + }).then((res) => { + this.setData({ + wordList: res, + }) + }) + }, + scrolltoupper(e) { + if (e.detail.direction === 'top') { + this.getMessageList() + } + }, + handleView(index = -1) { + this.setData({ + scrollIntoView: index > -1 ? `view${index}` : `place`, + }) + }, + getQuestionCommonList(questionActive: number) { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/message-interact/get-question-list', + data: {}, + }).then((res) => { + this.setData({ + questionList: res, + questionActiveList: res[questionActive].questionList, + }) + }) + }, + formatTime(date: string) { + let msgCreateTimeName = '' + if (dayjs().format('YYYY-MM-DD') === dayjs(date).format('YYYY-MM-DD')) { + msgCreateTimeName = dayjs(date).format('HH:mm') + } else if (dayjs().format('YYYY-MM-DD') === dayjs(date).add(1, 'day').format('YYYY-MM-DD')) { + msgCreateTimeName = `昨天 ${dayjs(date).format('HH:mm')}` + } else if (dayjs().diff(date, 'day') < 7) { + msgCreateTimeName = dayjs(date).format(`dddd HH:mm`) + } else { + msgCreateTimeName = dayjs(date).format('YYYY-MM-DD HH:mm') + } + return msgCreateTimeName + }, + filterCreateTime() { + const gapTime = 5 * 60 * 1000 + const { messageList } = this.data + + let preTime = 0 + messageList.forEach((item, index) => { + if (index === 0) { + item.showTime = true + preTime = dayjs(item.msgCreateTime).valueOf() + item.msgCreateTimeName = this.formatTime(item.msgCreateTime) + } else { + const curTime = dayjs(item.msgCreateTime).valueOf() + if (curTime - preTime > gapTime) { + item.showTime = true + item.msgCreateTimeName = this.formatTime(item.msgCreateTime) + preTime = dayjs(item.msgCreateTime).valueOf() + } + } + }) + this.setData({ + messageList, + }) + }, + handleSendShow() { + this.setData({ + messageListShow: true, + }) + }, + handlePopupMessageClose() { + this.setData({ + messageListShow: false, + }) + }, + handleWord(e) { + const { index } = e.currentTarget.dataset + this.setData({ + wordIndex: index, + }) + }, + handleSendWord() { + const { messageList, wordList, wordIndex, userInfo } = this.data + const { wordId, word } = wordList[wordIndex] + console.log(wordList[wordIndex]) + this.setData({ + messageList: [ + ...messageList, + { + msgId: '', + msgContentType: '2', + msgContent: word, + msgVisitTime: '', + msgFromType: '2', + msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + doctorAvatar: userInfo.doctorAvatar, + doctorName: userInfo.doctorName, + }, + ], + }) + this.filterCreateTime() + this.handlePopupMessageClose() + this.handleView() + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/message-interact/send-word-message', + data: { + patientId: this.data.patientId, + wordId, + }, + }) + }, + handleSendDate() { + const { + messageList, + userInfo: { doctorName, doctorAvatar, clinic, clinicType }, + } = this.data + if (!clinic || (Array.isArray(clinic) && !clinic.length)) { + wx.showToast({ + title: '还未录入您的出诊时间~', + icon: 'none', + }) + return + } + wx.showModal({ + title: '提示', + content: '将您的出诊时间发送给患者?', + confirmColor: 'rgba(29, 107, 255, 1)', + success: (res) => { + if (res.confirm) { + this.setData({ + messageList: [ + ...messageList, + { + msgId: '', + msgContentType: '3', + msgContent: '以下是我的出诊时间', + msgVisitTime: clinic, + msgVisitTimeType: clinicType, + msgFromType: '2', + msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + msgOtherInfo: { + Clinic: clinic, + ClinicType: clinicType, + }, + doctorAvatar: doctorAvatar, + doctorName: doctorName, + }, + ], + }) + this.filterCreateTime() + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/message-interact/send-visit-time', + data: { + patientId: this.data.patientId, + }, + }) + this.handleView() + } + }, + }) + }, + handleReferral() { + const { userInfo } = this.data + wx.showModal({ + title: '', + content: '您将给患者发送复诊提醒卡片?', + confirmText: '发送', + confirmColor: 'rgba(29, 107, 255, 1)', + success: (res) => { + if (res.confirm) { + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/message-interact/send-revisit', + data: { + patientId: this.data.patientId, + }, + }).then((res) => { + this.setData({ + messageList: [ + ...this.data.messageList, + { + msgId: '', + msgContentType: '5', + msgVisitTime: '', + msgContent: res, + msgFromType: '2', + msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + doctorAvatar: userInfo.doctorAvatar, + doctorName: userInfo.doctorName, + }, + ], + }) + this.handleView() + }) + } + }, + }) + }, + handleQuestionTab(e) { + const { index } = e.currentTarget.dataset + this.setData({ + questionActive: index, + questionActiveList: this.data.questionList[index].questionList, + }) + }, + handleFooter() { + this.setData({ + expend: !this.data.expend, + }) + if (this.data.expend) { + setTimeout(() => { + this.handleView() + }, 300) + } + }, + handlePopupCancel() { + this.setData({ + popupShow: false, + }) + }, + handleFile() { + wx.navigateTo({ + url: `/doctor/pages/file/index?id=${this.data.patientId}`, + }) + }, + handleBack() { + wx.navigateBack() + }, +}) diff --git a/src/doctor/pages/askDoctor/index.wxml b/src/doctor/pages/askDoctor/index.wxml new file mode 100644 index 0000000..ef2201b --- /dev/null +++ b/src/doctor/pages/askDoctor/index.wxml @@ -0,0 +1,150 @@ + + + + + + + + + + {{patientInfo.patientName}} + + + {{patientInfo.ageYear}}岁 + + + + {{patientInfo.provinceName}} + + + + 入组时间:{{patientInfo.createTimeName}} + + 查看档案 + + + + + + + + {{message.msgCreateTimeName}} + + {{message.msgOtherInfo.title}} + + {{item.question}} + + + + + {{message.msgContent }} + + {{message.msgContent}}: + + {{message.msgOtherInfo.Clinic}} + + + {{week[item.weekday-1]}} + {{timeDay[item.timeType]}} + + + + + + + {{message.msgContent.weekInfo}} + + {{message.msgContent.examInfo}} + + 点击查看 + + + + {{message.msgContent.weekInfo}} + + {{message.msgContent.examInfo}} + + 点击立即查看 + + + + + {{message.doctorName}} + + + + + + + + {{message.msgContent}} + + + + + + + + + 发送消息 + + + 我的出诊时间 + + + + 复诊提醒 + + + + + + + 发送消息 + + + {{item.word}} + + + 发送 + + + + diff --git a/src/doctor/pages/bbmReport/index.wxml b/src/doctor/pages/bbmReport/index.wxml index 26999a8..b945b95 100644 --- a/src/doctor/pages/bbmReport/index.wxml +++ b/src/doctor/pages/bbmReport/index.wxml @@ -23,7 +23,7 @@ model:value="{{injectionWeight}}" type="digit" placeholder-class="input-place" - placeholder="请输入" + placeholder="--" bindblur="handleWeight" /> KG diff --git a/src/doctor/pages/blood/index.ts b/src/doctor/pages/blood/index.ts index 44ee4e2..0e3ac77 100644 --- a/src/doctor/pages/blood/index.ts +++ b/src/doctor/pages/blood/index.ts @@ -68,15 +68,10 @@ Page({ this.getList(page + 1) } }, - handleEdit(e) { + handleEdit(e: any) { const { id } = e.currentTarget.dataset wx.navigateTo({ - url: `/patient/pages/bloodDetail/index?id=${id}`, - }) - }, - handleAdd() { - wx.navigateTo({ - url: '/patient/pages/bloodAdd/index', + url: `/doctor/pages/bloodDetail/index?id=${id}&pid=${this.data.patientId}`, }) }, }) diff --git a/src/doctor/pages/blood/index.wxml b/src/doctor/pages/blood/index.wxml index cdff737..52b843e 100644 --- a/src/doctor/pages/blood/index.wxml +++ b/src/doctor/pages/blood/index.wxml @@ -15,7 +15,7 @@ - + 重选 diff --git a/src/doctor/pages/bloodDetail/index.json b/src/doctor/pages/bloodDetail/index.json new file mode 100644 index 0000000..1351d31 --- /dev/null +++ b/src/doctor/pages/bloodDetail/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "出血记录", + "usingComponents": {} +} diff --git a/src/doctor/pages/bloodDetail/index.scss b/src/doctor/pages/bloodDetail/index.scss new file mode 100644 index 0000000..3e4e0d1 --- /dev/null +++ b/src/doctor/pages/bloodDetail/index.scss @@ -0,0 +1,87 @@ +page { + background-color: rgba(247, 247, 250, 1); +} +.page { + padding: 32rpx; + .card1 { + padding: 0 32rpx; + border-radius: 24rpx; + background-color: #fff; + .row { + padding: 32rpx 0; + display: flex; + gap: 48rpx; + border-bottom: 1px solid rgba(247, 247, 250, 1); + &:last-of-type { + border: none; + } + .label { + flex-shrink: 0; + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + } + .content { + font-size: 32rpx; + color: rgba(0, 0, 0, 1); + display: flex; + gap: 20rpx; + flex-wrap: wrap; + } + } + } + .card2 { + margin-top: 24rpx; + padding: 0 32rpx 32rpx; + border-radius: 24rpx; + background-color: #fff; + .title { + padding: 32rpx 0 24rpx; + font-size: 36rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + } + .content { + padding: 24rpx 32rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + line-height: 48rpx; + background-color: rgba(247, 247, 250, 1); + border-radius: 12rpx; + } + } + + .footer { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + padding: 16rpx 40rpx calc(16rpx + env(safe-area-inset-bottom)); + background-color: rgba(255, 255, 255, 1); + display: flex; + gap: 26rpx; + box-sizing: border-box; + .cancel { + flex: 1; + padding: 22rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + color: rgba(246, 74, 58, 1); + border-radius: 84rpx; + border: 1px solid #f64a3a; + } + .submit { + flex: 1; + padding: 22rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + color: #fff; + background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); + border-radius: 84rpx; + border: 1px solid #f64a3a; + } + } +} diff --git a/src/doctor/pages/bloodDetail/index.ts b/src/doctor/pages/bloodDetail/index.ts new file mode 100644 index 0000000..30bbb77 --- /dev/null +++ b/src/doctor/pages/bloodDetail/index.ts @@ -0,0 +1,35 @@ +const app = getApp() + +Page({ + data: { + recordId: '', + patientId: '', + + detail: {} as any, + }, + onLoad(options) { + this.setData({ + recordId: options.id, + patientId: options.pid || '', + }) + app.waitLogin({ type: 2 }).then(() => { + this.getDetail() + }) + }, + getDetail() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/treatment/get-bleeding-detail', + data: { + recordId: this.data.recordId, + patientId: this.data.patientId, + }, + }).then((res) => { + this.setData({ + detail: res, + }) + }) + }, +}) + +export {} diff --git a/src/doctor/pages/bloodDetail/index.wxml b/src/doctor/pages/bloodDetail/index.wxml new file mode 100644 index 0000000..c5f3bd8 --- /dev/null +++ b/src/doctor/pages/bloodDetail/index.wxml @@ -0,0 +1,22 @@ + + + + 出血日期 + {{detail.bleedingDate}} + + + 出血关节 + + + {{subItem.bleedingPartName}} + + + + + + 其他情况备注 + + {{detail.remark}} + + + diff --git a/src/doctor/pages/calculator/index.scss b/src/doctor/pages/calculator/index.scss index 3e48525..e6cb0e1 100644 --- a/src/doctor/pages/calculator/index.scss +++ b/src/doctor/pages/calculator/index.scss @@ -15,7 +15,7 @@ page { .banner { background-color: rgba(28, 107, 255, 1); border: 1px solid rgba(255, 255, 255, 1); - border-radius: 24rpx; + border-radius: 24rpx 24rpx 34rpx 34rpx; .b-header { padding: 24rpx 32rpx; display: flex; diff --git a/src/doctor/pages/calculator/index.wxml b/src/doctor/pages/calculator/index.wxml index 86d4246..3c0fd9f 100644 --- a/src/doctor/pages/calculator/index.wxml +++ b/src/doctor/pages/calculator/index.wxml @@ -36,5 +36,5 @@ - + diff --git a/src/doctor/pages/coltStat/index.json b/src/doctor/pages/coltStat/index.json new file mode 100644 index 0000000..02adba7 --- /dev/null +++ b/src/doctor/pages/coltStat/index.json @@ -0,0 +1,9 @@ +{ + "navigationStyle": "custom", + "usingComponents": { + "van-circle": "@vant/weapp/circle/index", + "ec-canvas": "/components/ec-canvas/ec-canvas", + "navbar": "/components/navbar/index", + "calendar": "/components/calendar/index" + } +} diff --git a/src/doctor/pages/coltStat/index.scss b/src/doctor/pages/coltStat/index.scss new file mode 100644 index 0000000..b06865c --- /dev/null +++ b/src/doctor/pages/coltStat/index.scss @@ -0,0 +1,406 @@ +page { + background-color: rgba(246, 246, 246, 1); +} + +.page { + .page-header { + position: relative; + padding-bottom: 44rpx; + margin-bottom: 58rpx; + border-radius: 0 0 32rpx 32rpx; + transition: all 0.3s; + background-color: rgba(255, 255, 255, 1); + border-radius: 0 0 32rpx 32rpx; + filter: drop-shadow(0rpx 8rpx 20rpx rgba(24, 57, 107, 0.05)); + .calendar-wrap { + margin-top: 48rpx; + .calendar-header { + display: flex; + justify-content: center; + align-items: center; + gap: 48rpx; + .left, + .right { + padding: 8rpx 10rpx 10rpx 8rpx; + background: #ffffff; + border-radius: 12rpx 12rpx 12rpx 12rpx; + border: 2rpx solid rgba(174, 182, 205, 0.18); + .icon { + display: block; + width: 30rpx; + height: 30rpx; + } + } + .current-date { + display: flex; + align-items: baseline; + gap: 8rpx; + font-size: 52rpx; + color: #091f44; + font-weight: bold; + .name { + font-size: 32rpx; + } + } + } + .calendar { + margin: 16rpx 0 0; + } + } + .legend { + padding-right: 40rpx; + display: flex; + justify-content: flex-end; + gap: 48rpx; + .l-item { + display: flex; + align-items: center; + gap: 12rpx; + .dot { + width: 16rpx; + height: 16rpx; + border-radius: 50%; + &.dot1 { + background-color: rgba(5, 134, 255, 1); + } + &.dot2 { + background-color: rgba(246, 74, 58, 1); + } + } + .name { + font-size: 28rpx; + color: #aeb6cd; + } + } + } + .more { + position: absolute; + bottom: -32rpx; + left: 50%; + transform: translateX(-50%); + width: 84rpx; + height: 44rpx; + background-color: #fff; + border-radius: 0 0 16rpx 16rpx; + display: flex; + justify-content: center; + &.active { + .icon { + transform: rotate(180deg); + } + } + .icon { + transition: all 0.3s; + width: 44rpx; + height: 44rpx; + } + } + } + .form { + margin: 80rpx 40rpx 0; + display: flex; + align-items: center; + gap: 18rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + .picker { + flex: 1; + .picker-content { + padding: 22rpx 32rpx; + display: flex; + align-items: center; + background-color: #fff; + border-radius: 12rpx; + .content { + flex: 1; + font-size: 28rpx; + color: rgba(1, 1, 5, 1); + font-weight: normal; + &:empty::after { + content: attr(data-place); + color: rgba(161, 164, 172, 0.5); + } + } + .tril { + width: 0; + height: 0; + border-style: solid; + border-width: 12rpx 12rpx 0 12rpx; + border-color: rgba(207, 209, 213, 1) transparent transparent transparent; + } + } + } + } + .page-container { + padding: 0 40rpx 40rpx; + .module1 { + margin-top: 32rpx; + padding: 24rpx 32rpx 32rpx; + background: #ffffff; + box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.06); + border-radius: 24rpx 24rpx 24rpx 24rpx; + .title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + } + .container { + margin-top: 32rpx; + height: 600rpx; + #mychart-dom-bar { + width: 100%; + height: 100%; + } + } + } + .tabs { + margin-top: 48rpx; + display: flex; + padding: 8rpx; + background-color: #fff; + border-radius: 112rpx; + .tab { + flex: 1; + padding: 16rpx; + text-align: center; + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + &.active { + color: #fff; + border-radius: 112rpx; + background-color: rgba(28, 107, 255, 1); + } + } + } + .doc { + margin-top: 32rpx; + display: flex; + align-items: center; + justify-content: flex-end; + gap: 58rpx; + .total { + font-size: 28rpx; + color: rgba(137, 141, 151, 1); + .num { + font-size: 32rpx; + color: rgba(28, 107, 255, 1); + } + } + .more { + font-size: 28rpx; + color: rgba(28, 107, 255, 1); + } + } + .tab1 { + .tab1-module { + margin-top: 32rpx; + padding: 32rpx; + background: linear-gradient(3deg, #ffffff 0%, #fff4f3 100%); + box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.06); + border-radius: 24rpx 24rpx 24rpx 24rpx; + border: 2rpx solid #ffffff; + display: grid; + grid-template-columns: repeat(2, 1fr); + .item { + padding: 0 0 0 48rpx; + display: flex; + align-items: center; + gap: 24rpx; + &:first-of-type { + border-right: 1px solid rgba(0, 0, 0, 0.09); + } + .icon { + width: 96rpx; + height: 96rpx; + background: linear-gradient(159deg, #1dd4ac 0%, #1c6bff 100%); + box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(28, 107, 255, 0.1); + border-radius: 122rpx 122rpx 122rpx 122rpx; + display: flex; + align-items: center; + justify-content: center; + .i-img { + width: 52rpx; + height: 52rpx; + } + } + .wrap { + .name { + font-size: 24rpx; + color: rgba(161, 164, 172, 1); + } + .num { + font-size: 40rpx; + font-weight: bold; + color: rgba(1, 1, 5, 1); + .sub { + font-size: 24rpx; + color: rgba(161, 164, 172, 1); + font-weight: normal; + } + } + } + } + } + .tab1-list { + margin-top: 32rpx; + .list-item { + display: flex; + gap: 16rpx; + .aside { + display: flex; + align-items: center; + flex-direction: column; + gap: 16rpx; + .order { + margin-top: 8rpx; + width: 16rpx; + height: 16rpx; + border-radius: 50%; + background-clip: content-box; + background-color: rgba(28, 107, 255, 1); + border: 4rpx solid rgba(28, 107, 255, 0.3); + } + .line { + flex: 1; + border-right: 1px dashed rgba(28, 107, 255, 1); + } + } + .container { + flex: 1; + padding-bottom: 16rpx; + .date { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + padding-bottom: 16rpx; + } + .wrap { + background-color: #fff; + border-radius: 24rpx; + padding: 16rpx 32rpx 16rpx 0; + display: flex; + align-items: center; + justify-content: space-between; + .title { + display: flex; + align-items: center; + gap: 20rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + &::before { + content: ''; + width: 12rpx; + height: 36rpx; + border-radius: 0 7rpx 7rpx 0; + background: rgba(28, 107, 255, 1); + } + } + .progress { + min-width: 148rpx; + height: 88rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 40rpx; + color: rgba(255, 255, 255, 1); + background: #0586ff; + border-radius: 16rpx 16rpx 16rpx 16rpx; + &::after { + margin-top: 10rpx; + content: '%'; + font-size: 24rpx; + } + } + } + } + } + } + } + .tab2 { + .tab2-list { + margin-top: 32rpx; + .list-item { + display: flex; + gap: 16rpx; + .aside { + display: flex; + align-items: center; + flex-direction: column; + gap: 16rpx; + .order { + margin-top: 8rpx; + width: 16rpx; + height: 16rpx; + border-radius: 50%; + background-clip: content-box; + background-color: rgba(28, 107, 255, 1); + border: 4rpx solid rgba(28, 107, 255, 0.3); + } + .line { + flex: 1; + border-right: 1px dashed rgba(28, 107, 255, 1); + } + } + .container { + flex: 1; + padding-bottom: 16rpx; + .date { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + padding-bottom: 16rpx; + } + .wrap { + background-color: #fff; + border-radius: 24rpx; + padding: 16rpx 32rpx 16rpx 0; + .title { + display: flex; + align-items: center; + gap: 20rpx; + font-size: 32rpx; + color: rgbargba(137, 141, 151, 1) (1, 1, 5, 1); + padding-bottom: 16rpx; + font-weight: bold; + &::before { + content: ''; + width: 12rpx; + height: 36rpx; + border-radius: 0 7rpx 7rpx 0; + background: rgba(28, 107, 255, 1); + } + } + .row { + padding: 16rpx 32rpx; + display: flex; + align-items: center; + gap: 16rpx; + .legend { + width: 16rpx; + height: 16rpx; + border-radius: 50%; + &.legend1 { + background: linear-gradient(180deg, #54e5ff 0%, #0588ff 100%); + } + &.legend2 { + background: linear-gradient(166deg, #acf8e0 0%, #22dca1 100%); + } + } + .label { + flex: 1; + font-size: 28rpx; + color: rgba(137, 141, 151, 1); + } + .num { + width: 5em; + font-size: 28rpx; + color: rgba(137, 141, 151, 1); + } + } + } + } + } + } + } + } +} diff --git a/src/doctor/pages/coltStat/index.ts b/src/doctor/pages/coltStat/index.ts new file mode 100644 index 0000000..9c89d24 --- /dev/null +++ b/src/doctor/pages/coltStat/index.ts @@ -0,0 +1,573 @@ +const app = getApp() +const echarts = require('@/components/ec-canvas/echarts.js') +const licia = require('miniprogram-licia') +import dayjs from 'dayjs' + +Page({ + data: { + patientId: '', + + cirlcleColor1: { + '0%': 'rgba(174, 248, 225, 1)', + '100%': 'rgba(31, 219, 160, 1)', + }, + cirlcleColor2: { + '0%': 'rgba(188, 223, 255, 1)', + '100%': 'rgba(0, 132, 255, 1)', + }, + cirlcleColor3: { + '0%': 'rgba(246, 74, 58, 1)', + '100%': 'rgba(255, 185, 1, 1)', + }, + + calendarCurrent: { + year: dayjs().year(), + month: dayjs().month() + 1, + }, + calendarConfig: { + multi: false, + weekMode: true, + hideHeader: true, + autoChoosedWhenJump: true, + firstDayOfWeek: 'Mon', + theme: 'data-view', + takeoverTap: true, + highlightToday: true, + onlyShowCurrentMonth: true, + disableMode: { + type: 'after', + }, + }, + + beginDate: dayjs().subtract(1, 'M').startOf('month').format('YYYY-MM-DD'), + endDate: dayjs().format('YYYY-MM-DD'), + + tabActve: 2, + iDays: '', + + list2: [] as any[], + total2: 0, + pagination2: { + page: 1, + pages: 1, + count: 1, + }, + + list3: [] as any[], + total3: 0, + pagination3: { + page: 1, + pages: 1, + count: 1, + }, + }, + ecDataTrendComponent: null as any, + onLoad(options: any) { + this.setData({ + patientId: options.id || '', + }) + this.ecDataTrendComponent = this.selectComponent('#mychart-dom-bar') + }, + handleUpdate() { + this.getDetail() + this.getList() + }, + getDetail() { + const rangeDate = this.getRangeDate() + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/treatment/get-health', + data: { + patientId: this.data.patientId, + ...rangeDate, + }, + }).then((res) => { + console.log('res: ', res) + this.setCalendarTodos({ bleedDate: res.examDateList, injectionDate: res.bleedDateList }) + const astList = {} + const altList = {} + const cfRecordList = {} + res.astList = res.astList || [] + res.altList = res.altList || [] + res.cfRecordList = res.cfRecordList || [] + res.astList.forEach((item: any) => { + astList[item.beginDate] = item.ast + }) + res.altList.forEach((item: any) => { + altList[item.beginDate] = item.alt + }) + res.cfRecordList.forEach((item: any) => { + cfRecordList[item.beginDate] = item.clottingFactor + }) + const initParams = { + astList, + altList, + cfRecordList, + } + console.log('DEBUGPRINT[107]: index.ts:102: initParams=', initParams) + this.initChart(initParams, rangeDate) + }) + }, + getRangeDate() { + const { beginDate, endDate } = this.data + + return { + beginDate, + endDate, + } + }, + setCalendarTodos({ bleedDate = [], injectionDate = [] }: { bleedDate: any[]; injectionDate: string[] }) { + const calendar = this.selectComponent('#calendar').calendar + const dates: any[] = [] + const intersectDate = licia.intersect(bleedDate, injectionDate) + const filterAdlDate = bleedDate.filter((item) => !intersectDate.includes(item)) + const filterMedication = injectionDate.filter((item) => !intersectDate.includes(item)) + + filterAdlDate.forEach((Date: string) => { + dates.push({ + year: Date.split('-')[0], + month: Date.split('-')[1], + date: Date.split('-')[2], + color: ['rgba(5, 134, 255, 1)'], + }) + }) + filterMedication.forEach((Date: string) => { + dates.push({ + year: Date.split('-')[0], + month: Date.split('-')[1], + date: Date.split('-')[2], + color: ['rgba(246, 74, 58, 1)'], + }) + }) + intersectDate.forEach((Date: string) => { + dates.push({ + year: Date.split('-')[0], + month: Date.split('-')[1], + date: Date.split('-')[2], + color: ['rgba(5, 134, 255, 1)', 'rgba(246, 74, 58, 1)'], + }) + }) + calendar.setTodos({ + // 待办点标记设置 + pos: 'bottom', // 待办点标记位置 ['top', 'bottom'] + dotColor: 'purple', // 待办点标记颜色 + circle: false, // 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥 + showLunar: true, + showLabelAlways: true, // 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效 + dates, + }) + }, + afterCalendarRender() { + const calendar = this.selectComponent('#calendar').calendar + const { year, month } = calendar.getCurrentYM() + this.setData({ + calendarCurrent: { + year, + month, + }, + }) + app.waitLogin().then(() => { + this.handleUpdate() + }) + this.handleIsDisableRight() + }, + onSwipe() { + const calendar = this.selectComponent('#calendar').calendar + const { year, month } = calendar.getCurrentYM() + this.setData({ + calendarCurrent: { + year, + month, + }, + }) + this.handleIsDisableRight() + }, + handleCalendarSwitch(e: any) { + const { type } = e.currentTarget.dataset + const calendar = this.selectComponent('#calendar').calendar + let { year, month } = this.data.calendarCurrent + const { weekMode } = calendar.getCalendarConfig() + if (type === 'prev') { + month -= 1 + if (month < 1) { + month = 12 + year -= 1 + } + } else if (type === 'next') { + month += 1 + if (month > 12) { + month = 1 + year += 1 + } + } + if (weekMode) { + calendar.weekModeJump({ + year: year, + month: month, + date: 1, + }) + } else { + calendar.jump({ + year: year, + month: month, + date: 1, + }) + } + this.setData({ + calendarCurrent: { + year, + month, + }, + beginDate: dayjs(`${year}-${month}-01`).startOf('month').format('YYYY-MM-DD'), + endDate: dayjs(`${year}-${month}-01`).endOf('month').format('YYYY-MM-DD'), + }) + this.handleIsDisableRight() + }, + handleCalendarCurrent() { + const calendar = this.selectComponent('#calendar').calendar + const { weekMode } = calendar.getCalendarConfig() + if (weekMode) { + calendar.weekModeJump() + } else { + calendar.jump() + } + const { year, month } = calendar.getCurrentYM() + this.setData({ + calendarCurrent: { + year, + month, + }, + }) + this.handleIsDisableRight() + }, + handleCalendarMore() { + const calendar = this.selectComponent('#calendar').calendar + const { weekMode } = calendar.getCalendarConfig() + let { year, month } = this.data.calendarCurrent + console.log(calendar) + if (weekMode) { + calendar.switchView('month').then(() => { + calendar.jump({ + year: year, + month: month, + date: 1, + }) + }) + } else { + calendar.switchView('week').then(() => { + calendar.weekModeJump({ + year: year, + month: month, + date: 1, + }) + }) + if (dayjs().month() + 1 === month && dayjs().year() === year) { + calendar.weekModeJump() + } + } + this.setData({ + ['calendarConfig.weekMode']: !weekMode, + }) + }, + handleIsDisableRight() { + const { year, month } = this.data.calendarCurrent + // 是否大于等于当月 + const calendarCurrentNum = Number(year * 12) + Number(month) + const currentNum = Number(dayjs().year() * 12) + Number(dayjs().month() + 1) + + if (calendarCurrentNum >= currentNum) { + this.setData({ + disableRight: true, + }) + } else { + this.setData({ + disableRight: false, + }) + } + }, + initChart({ altList = {}, astList = {}, cfRecordList = {} }, rangeDate) { + const arr = this.generateDateArray(rangeDate.beginDate, rangeDate.endDate) + const astArr: Number[] = [] + const altArr: Number[] = [] + const cfRecordArr: Number[] = [] + arr.forEach((item: any) => { + astArr.push(astList[item] ? Number(astList[item]) : 0) + altArr.push(altList[item] ? Number(altList[item]) : 0) + cfRecordArr.push(cfRecordList[item] ? Number(cfRecordList[item]) : 0) + }) + console.log(altArr) + this.ecDataTrendComponent.init((canvas, width, height, dpr) => { + let chart = echarts.init(canvas, null, { + width: width, + height: height, + devicePixelRatio: dpr, // new + }) + canvas.setChart(chart) + + var option = { + dataZoom: [ + { + type: 'inside', // 内置于坐标系中 + startValue: 0, + endValue: 7, + xAxisIndex: [0], + }, + ], + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow', + }, + confine: true, + backgroundColor: 'rgba(0, 0, 0, 0.5)', + textStyle: { + color: '#fff', + fontSize: 10, + }, + order: 'seriesDesc', + }, + legend: { + bottom: 0, + padding: 0, + itemGap: 5, + itemWidth: 8, + itemHeight: 8, + icon: 'circle', + }, + grid: { + top: '30', + left: '5', + right: '0', + bottom: '45', + containLabel: true, + }, + xAxis: { + type: 'category', + axisLabel: { + color: 'rgba(161, 164, 172, 1)', + }, + axisTick: { + show: false, + }, + axisLine: { + lineStyle: { + type: 'solid', + color: 'rgba(137, 141, 151, 0.23)', + }, + }, + splitLine: { + show: true, + showMinLine: false, + lineStyle: { + type: 'dotted', + color: 'rgba(137, 141, 151, 0.23)', + }, + }, + data: arr, + }, + yAxis: [ + { + type: 'value', + name: '单位:%', + axisLabel: { + color: 'rgba(161, 164, 172, 1)', + }, + axisLine: { + show: false, + lineStyle: { + type: 'solid', + color: 'rgba(161, 164, 172, 1)', + }, + }, + splitLine: { + show: true, + showMinLine: false, + lineStyle: { + type: 'dotted', + color: 'rgba(137, 141, 151, 0.23)', + }, + }, + }, + { + type: 'value', + name: '单位:U/L', + position: 'right', + axisLabel: { + color: 'rgba(161, 164, 172, 1)', + }, + axisLine: { + show: false, + lineStyle: { + type: 'solid', + color: 'rgba(161, 164, 172, 1)', + }, + }, + splitLine: { + show: true, + showMinLine: false, + lineStyle: { + type: 'dotted', + color: 'rgba(137, 141, 151, 0.23)', + }, + }, + }, + ], + series: [ + { + name: 'AST天门冬氨酸氨基转移酶', + data: astArr, + type: 'line', + yAxisIndex: 1, + lineStyle: { width: 4 }, + symbolSize: 6, + color: { + type: 'linear', + colorStops: [ + { + offset: 0, + color: 'rgba(1, 132, 255, 1)', // 0% 处的颜色 + }, + { + offset: 1, + color: 'rgba(85, 229, 255, 1)', // 100% 处的颜色 + }, + ], + global: false, // 缺省为 false + }, + }, + { + name: 'ALT丙氨酸氨基转移酶', + yAxisIndex: 1, + data: altArr, + type: 'line', + lineStyle: { width: 4 }, + symbolSize: 6, + color: { + type: 'linear', + colorStops: [ + { + offset: 0, + color: 'rgba(246, 74, 58, 1)', // 0% 处的颜色 + }, + { + offset: 1, + color: 'rgba(255, 187, 0, 1)', // 100% 处的颜色 + }, + ], + global: false, // 缺省为 false + }, + }, + { + name: '凝血因子水平', + data: cfRecordArr, + type: 'line', + lineStyle: { width: 4 }, + symbolSize: 6, + color: { + type: 'linear', + colorStops: [ + { + offset: 0, + color: 'rgba(31, 220, 160, 1)', // 0% 处的颜色 + }, + { + offset: 1, + color: 'rgba(174, 248, 225, 1)', // 100% 处的颜色 + }, + ], + global: false, // 缺省为 false + }, + }, + ], + // dataZoom: { + // show: true, // 为true 滚动条出现 + // realtime: true, + // type: "slider", // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。 + // height: 20, // 表示滚动条的高度,也就是粗细 + // start: 20, // 表示默认展示20%~80%这一段。 + // end: 80, + // }, + } + + chart.setOption(option) + return chart + }) + }, + generateDateArray(startDate, endDate) { + const dates: string[] = [] + let currentDate = dayjs(startDate) + + while (currentDate.isBefore(dayjs(endDate).add(1, 'day'))) { + dates.push(currentDate.format('YYYY-MM-DD')) + currentDate = currentDate.add(1, 'day') + } + + return dates + }, + + handleTab(e: any) { + const { active } = e.currentTarget.dataset + this.setData({ + tabActve: active, + }) + this.getList(1) + }, + handleFile() { + wx.navigateTo({ + url: `/doctor/pages/file/index?id=${this.data.patientId}`, + }) + }, + getList(newPage = 1) { + const { tabActve } = this.data + const dateRange = this.getRangeDate() + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/treatment/get-health-exam-list', + data: { + patientId: this.data.patientId, + examType: tabActve, + page: newPage, + ...dateRange, + }, + }).then((res) => { + res.list = res.list.map((item) => { + return { + ...item, + beginDate: item.beginDate ? dayjs(item.beginDate).format('YYYY.MM.DD') : null, + endDate: item.endDate ? dayjs(item.endDate).format('YYYY.MM.DD') : null, + } + }) + if (tabActve == 2) { + const list = res.page === 1 ? res.list : [...this.data.list2, ...res.list] + this.setData({ + total2: res.count, + list2: list, + iDays: res.iDays, + pagination2: { + page: res.page, + pages: res.pages, + count: res.count, + }, + }) + } + if (tabActve == 3) { + const list = res.page === 1 ? res.list : [...this.data.list3, ...res.list] + this.setData({ + total3: res.count, + list3: list, + iDays: res.iDays, + pagination3: { + page: res.page, + pages: res.pages, + count: res.count, + }, + }) + } + }) + }, + handleBack() { + wx.navigateBack() + }, +}) + +export {} diff --git a/src/doctor/pages/coltStat/index.wxml b/src/doctor/pages/coltStat/index.wxml new file mode 100644 index 0000000..a21836d --- /dev/null +++ b/src/doctor/pages/coltStat/index.wxml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + {{calendarCurrent.year}} + + {{calendarCurrent.month}} + + + + + + + + + + + + + + + 已复诊 + + + + 出血 + + + + + + + + + + {{beginDate}} + + + + - + + + {{endDate}} + + + + + + + 他的健康变化 + + + + + + 凝血因子 + 生化检查 + + + + 已记录 + {{pagination2.count}} + 条 + + + 查看档案 + + + + + + + + + + + 因子检查 + + {{pagination2.count}} + + + + + + + + + + 注射后 + + {{iDays || '--'}} + + + + + + + + + + + + + {{item.beginDate}}~{{item.endDate}} + {{item.beginDate || item.endDate}} + -- + + {{item.periodName}} + {{item.clottingFactor}} + + + + + + + + + + + + + + {{item.beginDate}}~{{item.endDate}} + {{item.beginDate || item.endDate}} + 未填写 + + {{item.periodName}} + + + AST天门冬氨酸氨基转移酶 + {{item.ast}}U/L + -- + + + + ALT丙氨酸氨基转移酶 + {{item.alt}}U/L + -- + + + + + + + + diff --git a/src/doctor/pages/course/index.ts b/src/doctor/pages/course/index.ts index feb53a8..54397f1 100644 --- a/src/doctor/pages/course/index.ts +++ b/src/doctor/pages/course/index.ts @@ -70,10 +70,18 @@ Page({ }) this.handleUpdate() }, - handleSelectHostipal() { + handleSelectHostipal(e) { + const { period } = e.currentTarget.dataset const { periodInfo1 } = this.data + if (!periodInfo1.hospitalId) { + wx.showToast({ + title: '患者还未填写此信息哦~', + icon: 'none', + }) + return + } wx.navigateTo({ - url: `/doctor/pages/courseHostipal/index?id=${periodInfo1.hospitalId}`, + url: `/doctor/pages/courseHostipal/index?id=${periodInfo1.hospitalId}&period=${period}`, }) }, handleCasesAdd() { @@ -88,25 +96,6 @@ Page({ popupParams: { position: 'bottom' }, }) }, - handleTCenter() { - const { periodInfo2 } = this.data - wx.ajax({ - method: 'GET', - url: '?r=wtx/doctor/common/get-treatment-center-list', - data: { - patientId: this.data.patientId, - }, - }).then((res) => { - this.setData({ - popupShow: true, - popupType: 'TCenter', - popupParams: { - hospitalId: periodInfo2.hospitalId, - list: res, - }, - }) - }) - }, handlePreDiagnosisReport(e: any) { const { period } = e.currentTarget.dataset const { examId } = this.data[`periodInfo${period}`] @@ -114,11 +103,6 @@ Page({ url: `/doctor/pages/preDiagnosisReport/index?examid=${examId}&period=${period}&id=${this.data.patientId}`, }) }, - handleAavReport() { - wx.navigateTo({ - url: '/patient/pages/aavReport/index', - }) - }, handleBbmReport() { wx.navigateTo({ url: `/doctor/pages/bbmReport/index?id=${this.data.patientId}`, @@ -129,11 +113,6 @@ Page({ url: `/doctor/pages/bbmRemark/index?id=${this.data.patientId}`, }) }, - hadnleInjectDate() { - wx.navigateTo({ - url: '/patient/pages/injectDate/index', - }) - }, handleInhibitorsManage(e: any) { const { period } = e.currentTarget.dataset wx.navigateTo({ @@ -142,7 +121,7 @@ Page({ }, handleFollowPlan() { wx.navigateTo({ - url: '/doctor/pages/followPlan/index', + url: `/doctor/pages/followPlan/index?id=${this.data.patientId}`, }) }, handleLastDiagnosisReport() { @@ -152,7 +131,7 @@ Page({ }, handleColtStat() { wx.navigateTo({ - url: '/patient/pages/coltStat/index', + url: `/doctor/pages/coltStat/index?id=${this.data.patientId}`, }) }, handleBlood() { diff --git a/src/doctor/pages/course/index.wxml b/src/doctor/pages/course/index.wxml index 51f9ebf..000dad6 100644 --- a/src/doctor/pages/course/index.wxml +++ b/src/doctor/pages/course/index.wxml @@ -28,7 +28,7 @@ - + - + - 2.我的检查报告 + 2.检查报告 diff --git a/src/doctor/pages/courseHostipal/index.scss b/src/doctor/pages/courseHostipal/index.scss index 0dbcb03..83f7537 100644 --- a/src/doctor/pages/courseHostipal/index.scss +++ b/src/doctor/pages/courseHostipal/index.scss @@ -24,14 +24,17 @@ page { font-size: 32rpx; color: rgba(1, 1, 5, 1); font-weight: bold; - line-height: 36rpx; + line-height: 48rpx; .tag { + margin-left: 8rpx; + vertical-align: 2px; display: inline-block; font-size: 22rpx; color: rgba(255, 255, 255, 1); background-color: rgba(255, 186, 1, 1); border-radius: 8rpx; padding: 0 10rpx; + line-height: 36rpx; } } .site { diff --git a/src/doctor/pages/courseHostipal/index.ts b/src/doctor/pages/courseHostipal/index.ts index 1d7470d..6225a52 100644 --- a/src/doctor/pages/courseHostipal/index.ts +++ b/src/doctor/pages/courseHostipal/index.ts @@ -5,6 +5,11 @@ Page({ detail: {} as any, }, onLoad(options: any) { + if (options.period === '2') { + wx.setNavigationBarTitle({ + title: '治疗中心', + }) + } app.waitLogin({ type: 2 }).then(() => { this.getDetail(options.id) }) diff --git a/src/doctor/pages/file/index.scss b/src/doctor/pages/file/index.scss index 4555da3..a5d8da8 100644 --- a/src/doctor/pages/file/index.scss +++ b/src/doctor/pages/file/index.scss @@ -23,19 +23,19 @@ page { padding-left: 20rpx; flex: 1; .w-header { - display: flex; - align-items: center; - gap: 16rpx; .name { + margin-right: 16rpx; + display: inline; font-size: 36rpx; color: rgba(1, 1, 5, 1); font-weight: bold; } .age { + margin-right: 16rpx; padding: 0 14rpx; border-radius: 20rpx; background-color: rgba(32, 196, 255, 1); - display: flex; + display: inline-flex; align-items: center; gap: 6rpx; font-size: 24rpx; @@ -50,7 +50,7 @@ page { padding: 0 14rpx; border-radius: 20rpx; background-color: rgba(248, 166, 133, 1); - display: flex; + display: inline-flex; align-items: center; gap: 6rpx; font-size: 24rpx; @@ -489,7 +489,7 @@ page { .date-card { margin-top: 32rpx; padding: 18rpx 32rpx; - background: linear-gradient( 355deg, #FFFFFF 0%, #E6EFFF 100%); + background: linear-gradient(355deg, #ffffff 0%, #e6efff 100%); box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.08); border-radius: 84rpx 84rpx 84rpx 84rpx; border: 2px solid #ffffff; diff --git a/src/doctor/pages/file/index.ts b/src/doctor/pages/file/index.ts index 82cc12e..b0ae4cc 100644 --- a/src/doctor/pages/file/index.ts +++ b/src/doctor/pages/file/index.ts @@ -155,7 +155,6 @@ Page({ }) }, handleWhenChangeMonth(e) { - console.log('DEBUGPRINT[101]: index.ts:129: e=', e) const next = e.detail.next const dateMonth = dayjs(`${next.year}-${next.month}`).format('YYYY-MM') this.getFollowList(dateMonth) @@ -212,42 +211,32 @@ Page({ }) console.log(this.data[fold]) }, - handleRevisitRecord() { - wx.navigateTo({ - url: '/patient/pages/lastDiagnosisReport/index?period=4', - }) - }, handleRevisitDetail(e) { const { id, period } = e.currentTarget.dataset wx.navigateTo({ - url: `/patient/pages/lastDiagnosisReport/index?examid=${id}&period=${period}`, + url: `/doctor/pages/lastDiagnosisReport/index?examid=${id}&period=${period}&id=${this.data.id}`, }) }, handleRevisitAll() { wx.navigateTo({ - url: '/patient/pages/revisitRecord/index', + url: `/doctor/pages/revisitRecord/index?id=${this.data.id}`, }) }, handleCourse(e: any) { const { progress } = e.currentTarget.dataset wx.navigateTo({ - url: `/patient/pages/course/index?current=${progress}`, + url: `/doctor/pages/course/index?current=${progress}&id=${this.data.id}`, }) }, handleBbmDetail() { wx.navigateTo({ - url: '/patient/pages/bbmReport/index', + url: `/doctor/pages/bbmReport/index?id=${this.data.id}`, }) }, handlePreDiagnosisReport(e) { const { id, period } = e.currentTarget.dataset wx.navigateTo({ - url: `/patient/pages/preDiagnosisReport/index?examid=${id}&period=${period}`, - }) - }, - handleInjectionDate() { - wx.navigateTo({ - url: '/patient/pages/injectDate/index', + url: `/doctor/pages/preDiagnosisReport/index?examid=${id}&period=${period}&id=${this.data.id}`, }) }, handleBack() { diff --git a/src/doctor/pages/file/index.wxml b/src/doctor/pages/file/index.wxml index 860f385..b855dad 100644 --- a/src/doctor/pages/file/index.wxml +++ b/src/doctor/pages/file/index.wxml @@ -53,7 +53,11 @@ 日期 - {{item.beginDate}}~{{item.endDate}} + + {{item.beginDate}}~ + {{item.endDate}} + + {{item.beginDate || item.endDate}} -- @@ -122,7 +126,10 @@ 日期 - {{item.beginDate}}~{{item.endDate}} + + {{item.beginDate}}~ + {{item.endDate}} + 未填写 @@ -162,7 +169,10 @@ 日期 - {{item.beginDate}}~{{item.endDate}} + + {{item.beginDate}}~ + {{item.endDate}} + 未填写 @@ -287,10 +297,9 @@ - + - 注射日:{{followExam.injectionDateName}} - 请填写您的注射日生成随访计划 + 注射日:{{followExam.injectionDateName || '未填写'}} - + () Page({ data: { userInfo: {}, + knowledgeList: [], patientList: [], }, onLoad() { app.waitLogin({ type: 2 }).then(() => { this.getPatientList() + this.getKnowledge() app.getUserInfo(2).then((userInfo) => { this.setData({ userInfo: userInfo, @@ -26,6 +28,30 @@ Page({ }) }) }, + getKnowledge() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/knowledge/index-list', + data: {}, + }).then((res) => { + this.setData({ + knowledgeList: res.list, + }) + }) + }, + handleInfoDetail(e) { + const { index } = e.currentTarget.dataset + const params = this.data.knowledgeList[index] + if (params.Type == 1) { + wx.navigateTo({ + url: `/doctor/pages/knowledgeDetail/index?id=${params.Id}`, + }) + return + } + wx.navigateTo({ + url: `/doctor/pages/knowledgeDetailVideo/index?id=${params.Id}`, + }) + }, handleCalculator() { wx.navigateTo({ url: '/doctor/pages/calculator/index', @@ -42,6 +68,11 @@ Page({ url: '/doctor/pages/poster/index', }) }, + handleInfoMore() { + wx.navigateTo({ + url: '/doctor/pages/knowledge/index', + }) + }, }) export {} diff --git a/src/doctor/pages/index/index.wxml b/src/doctor/pages/index/index.wxml index a96aa11..ea5c9bb 100644 --- a/src/doctor/pages/index/index.wxml +++ b/src/doctor/pages/index/index.wxml @@ -1,7 +1,10 @@ - + - + @@ -9,41 +12,44 @@ {{userInfo.doctorName}} {{userInfo.hospitalName}} - + - + - - + + 查看更多 - + - 什么是基因疗法? 治疗流程了解 + {{item.Title}} - - ({{patientList.length}}) + + ({{patientList.length}}) - - + + {{item.patientName}} @@ -54,7 +60,7 @@ {{item.currentPeriodName}} - + diff --git a/src/doctor/pages/inhibitorsManageList/index.scss b/src/doctor/pages/inhibitorsManageList/index.scss index b54b4d8..fc8b2de 100644 --- a/src/doctor/pages/inhibitorsManageList/index.scss +++ b/src/doctor/pages/inhibitorsManageList/index.scss @@ -2,34 +2,13 @@ page { background-color: rgba(247, 247, 250, 1); } .page { - .empty { - padding: 276rpx 108rpx; - .none-img { - width: 533rpx; - height: 339rpx; - } - .title { - text-align: center; - font-size: 32rpx; - color: rgba(161, 164, 172, 1); - } - .add { - margin: 174rpx 0 0; - font-size: 32rpx; - color: rgba(255, 255, 255, 1); - line-height: 88rpx; - text-align: center; - background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); - border-radius: 84rpx 84rpx 84rpx 84rpx; - } - } .list { padding: 32rpx 40rpx; .total { font-size: 32rpx; color: rgba(161, 164, 172, 1); .red { - color: rgba(246, 74, 58, 1); + color: rgba(28, 107, 255, 1); font-size: 40rpx; } } diff --git a/src/doctor/pages/knowledge/index.json b/src/doctor/pages/knowledge/index.json new file mode 100644 index 0000000..cf28c8e --- /dev/null +++ b/src/doctor/pages/knowledge/index.json @@ -0,0 +1,7 @@ +{ + "navigationStyle": "custom", + "usingComponents": { + "navbar": "/components/navbar/index", + "doctor-tab-bar": "/doctor/components/doctor-tab-bar/index" + } +} diff --git a/src/doctor/pages/knowledge/index.scss b/src/doctor/pages/knowledge/index.scss new file mode 100644 index 0000000..363b677 --- /dev/null +++ b/src/doctor/pages/knowledge/index.scss @@ -0,0 +1,76 @@ +page { + background-color: rgba(247, 247, 250, 1); +} +.page { + padding: 0 30rpx calc(150rpx + env(safe-area-inset-bottom)); + background: linear-gradient(180deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%); + .list { + .list-item { + margin-bottom: 24rpx; + padding: 30rpx; + border-radius: 24rpx; + display: flex; + background-color: #fff; + .photo { + position: relative; + flex-shrink: 0; + width: 208rpx; + height: 156rpx; + .photo-img { + width: 100%; + height: 100%; + border-radius: 12rpx; + } + .play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 56rpx; + height: 56rpx; + } + } + .wrap { + flex: 1; + padding-left: 24rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + .title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + line-height: 44rpx; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + } + .w-footer { + margin-top: 20rpx; + display: flex; + gap: 68rpx; + .date { + width: 7em; + font-size: 28rpx; + color: rgba(18, 18, 18, 0.4); + } + .eye { + display: flex; + align-items: center; + .icon { + width: 32rpx; + height: 32rpx; + } + .num { + margin-left: 10rpx; + font-size: 28rpx; + color: rgba(18, 18, 18, 0.4); + } + } + } + } + } + } +} diff --git a/src/doctor/pages/knowledge/index.ts b/src/doctor/pages/knowledge/index.ts new file mode 100644 index 0000000..50ea035 --- /dev/null +++ b/src/doctor/pages/knowledge/index.ts @@ -0,0 +1,63 @@ +const dayjs = require('dayjs') +const app = getApp() + +Page({ + data: { + list: [] as any[], + total: 0, + pagination: { + page: 1, + pages: 1, + count: 1, + }, + }, + onShow() { + app.waitLogin({ type: 2 }).then(() => { + this.getList() + }) + }, + getList(newPage = 1) { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/knowledge/list', + data: { + page: newPage, + }, + }).then((res) => { + res.list.forEach((item: any) => { + item.UpdateTime = dayjs(item.UpdateTime).format('YYYY-MM-DD') + }) + const list = res.page === 1 ? res.list : [...this.data.list, ...res.list] + this.setData({ + total: res.count, + list, + pagination: { + page: res.page, + pages: res.pages, + count: res.count, + }, + }) + }) + }, + onReachBottom() { + const { page, pages } = this.data.pagination + if (pages > page) { + this.getList(page + 1) + } + }, + handleDetail(e) { + const { index } = e.currentTarget.dataset + const params = this.data.list[index] + if (params.Type == 1) { + wx.navigateTo({ + url: `/doctor/pages/knowledgeDetail/index?id=${params.Id}`, + }) + return + } + wx.navigateTo({ + url: `/doctor/pages/knowledgeDetailVideo/index?id=${params.Id}`, + }) + }, +}) + +export {} diff --git a/src/doctor/pages/knowledge/index.wxml b/src/doctor/pages/knowledge/index.wxml new file mode 100644 index 0000000..d22c0c0 --- /dev/null +++ b/src/doctor/pages/knowledge/index.wxml @@ -0,0 +1,28 @@ + + + + + + + + + + + {{item.Title}} + + {{item.UpdateTime}} + + + {{item.ViewTimes}} + + + + + + + + + diff --git a/src/doctor/pages/knowledgeDetail/index.json b/src/doctor/pages/knowledgeDetail/index.json new file mode 100644 index 0000000..54f1df7 --- /dev/null +++ b/src/doctor/pages/knowledgeDetail/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "知识库详情", + "usingComponents": { + "mp-html": "mp-html", + "star": "/components/star/index" + } +} diff --git a/src/doctor/pages/knowledgeDetail/index.scss b/src/doctor/pages/knowledgeDetail/index.scss new file mode 100644 index 0000000..390a59b --- /dev/null +++ b/src/doctor/pages/knowledgeDetail/index.scss @@ -0,0 +1,86 @@ +.page { + padding: 60rpx 30rpx calc(120rpx + env(safe-area-inset-bottom)); + .title { + font-size: 40rpx; + color: rgba(1, 1, 5, 1); + line-height: 64rpx; + font-weight: bold; + } + .info { + margin-top: 20rpx; + padding-bottom: 24rpx; + display: flex; + align-items: center; + gap: 86rpx; + .date { + font-size: 28rpx; + color: rgba(18, 18, 18, 0.4); + } + .eye { + display: flex; + align-items: center; + .icon { + width: 32rpx; + height: 32rpx; + } + .num { + margin-left: 10rpx; + font-size: 28rpx; + color: rgba(18, 18, 18, 0.4); + } + } + } + .animate { + position: fixed; + z-index: 1; + left: 1000000px; + bottom: calc(env(safe-area-inset-bottom) + 80rpx); + transform: translateX(-50%); + width: 200rpx; + height: 400rpx; + &.active { + left: 75%; + } + } + .footer { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + padding-bottom: env(safe-area-inset-bottom); + display: flex; + align-items: center; + background-color: #fff; + box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.05); + .btn { + flex: 1; + padding: 24rpx; + display: flex; + align-items: center; + justify-content: center; + border: none; + background-color: transparent; + outline: none; + &::after { + border: none; + } + .icon { + width: 36rpx; + height: 36rpx; + } + .num { + margin-left: 12rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 0.4); + &.active { + color: rgba(242, 58, 47, 1); + } + } + } + .line { + height: 28rpx; + width: 1px; + background-color: rgba(1, 1, 5, 0.16); + } + } +} diff --git a/src/doctor/pages/knowledgeDetail/index.ts b/src/doctor/pages/knowledgeDetail/index.ts new file mode 100644 index 0000000..898a004 --- /dev/null +++ b/src/doctor/pages/knowledgeDetail/index.ts @@ -0,0 +1,93 @@ +const dayjs = require('dayjs') +const licia = require('miniprogram-licia') +const app = getApp() + +Page({ + data: { + id: '', + detail: {} as any, + LikeTimes: 0, + + starShow: false, + }, + onLoad(options) { + this.setData({ + id: options.id, + }) + app.waitLogin({type:2}).then(() => { + this.handleView() + }) + }, + handleView() { + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/knowledge/view', + data: { + Id: this.data.id, + }, + }).then(() => { + this.getDetail() + }) + }, + getDetail() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/knowledge/detail', + data: { + Id: this.data.id, + }, + }).then((res) => { + res.UpdateTime = dayjs(res.UpdateTime).format('YYYY-MM-DD') + this.setData({ + detail: res, + }) + }) + }, + _timer: null as any, + handleLike() { + this.setData({ + 'detail.LikeTimes': Number(this.data.detail.LikeTimes) + 1, + 'detail.IsLike': true, + LikeTimes: this.data.LikeTimes + 1, + starShow: true, + }) + const header = this.selectComponent('#animate') + header.start() + if (this._timer) { + clearInterval(this._timer) + } + this._timer = setTimeout(() => { + this.setData({ + starShow: false, + }) + }, 2000) + this.likePost() + }, + likePost: licia.debounce(function (this: any) { + const { id, LikeTimes } = this.data + this.setData({ + LikeTimes: 0, + }) + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/knowledge/like', + data: { + Id: id, + LikeTimes, + }, + }) + }, 1000), + onShareAppMessage() { + this.setData({ + 'detail.ShareTimes': Number(this.data.detail.ShareTimes) + 1, + 'detail.IsShare': true, + }) + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/knowledge/share', + data: { Id: this.data.id }, + }) + }, +}) + +export {} diff --git a/src/doctor/pages/knowledgeDetail/index.wxml b/src/doctor/pages/knowledgeDetail/index.wxml new file mode 100644 index 0000000..f99c883 --- /dev/null +++ b/src/doctor/pages/knowledgeDetail/index.wxml @@ -0,0 +1,25 @@ + + {{detail.Title}} + + {{detail.UpdateTime}} + + + {{detail.ViewTimes}} + + + + + + + + + + + {{detail.LikeTimes}} + + + diff --git a/src/doctor/pages/knowledgeDetailVideo/index.json b/src/doctor/pages/knowledgeDetailVideo/index.json new file mode 100644 index 0000000..e882641 --- /dev/null +++ b/src/doctor/pages/knowledgeDetailVideo/index.json @@ -0,0 +1,9 @@ +{ + "navigationStyle": "custom", + "usingComponents": { + "mp-video-swiper": "@miniprogram-component-plus/video-swiper", + "navbar": "/components/navbar/index", + "van-slider": "@vant/weapp/slider/index", + "star": "/components/star/index" + } +} diff --git a/src/doctor/pages/knowledgeDetailVideo/index.scss b/src/doctor/pages/knowledgeDetailVideo/index.scss new file mode 100644 index 0000000..751137b --- /dev/null +++ b/src/doctor/pages/knowledgeDetailVideo/index.scss @@ -0,0 +1,109 @@ +.page { + background-color: #000; + .swiper { + width: 100vw; + height: 100vh; + .swiper-item { + position: relative; + width: 100vw; + height: 100vh; + .video { + width: 100%; + height: 100%; + } + .play { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 90rpx; + height: 104rpx; + } + .swiper-item-footer { + padding: 80rpx 30rpx calc(34rpx + env(safe-area-inset-bottom)); + width: 100%; + position: absolute; + bottom: 0; + left: 0; + box-sizing: border-box; + background: linear-gradient(to top, rgba(20, 20, 20, 0.88) 0%, rgba(20, 20, 20, 0) 100%); + .title { + font-size: 32rpx; + color: rgba(255, 255, 255, 1); + } + .progress { + margin-top: 24rpx; + .slider-btn { + width: 200vw; + height: 80rpx; + } + } + .container { + margin-top: 24rpx; + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + .user { + display: flex; + align-items: center; + .avatar { + width: 76rpx; + height: 76rpx; + border-radius: 50%; + } + .name { + margin-left: 16rpx; + font-size: 28rpx; + color: rgba(255, 255, 255, 1); + } + } + .options { + padding-right: 26rpx; + display: flex; + align-items: center; + gap: 64rpx; + .o-item { + padding: 0; + margin: 0; + border: none; + outline: none; + background: transparent; + display: flex; + flex-direction: column; + align-items: center; + line-height: 1; + &::after { + border: none; + } + .icon { + width: 36rpx; + height: 36rpx; + } + .num { + margin-top: 6rpx; + font-size: 32rpx; + color: rgba(255, 255, 255, 1); + &.active { + color: rgba(246, 74, 58, 1); + } + } + } + } + } + } + } + } +} + +.animate { + position: fixed; + z-index: 10000000; + right: 1000000px; + bottom: calc(env(safe-area-inset-bottom) + 110rpx); + width: 200rpx; + height: 400rpx; + &.active { + right: -20rpx; + } +} diff --git a/src/doctor/pages/knowledgeDetailVideo/index.ts b/src/doctor/pages/knowledgeDetailVideo/index.ts new file mode 100644 index 0000000..6f44f7c --- /dev/null +++ b/src/doctor/pages/knowledgeDetailVideo/index.ts @@ -0,0 +1,237 @@ +const licia = require('miniprogram-licia') +const app = getApp() + +Page({ + data: { + id: '', + activeId: '', + LikeTimes: 0, + + current: 0, + videoList: [] as any, + + beforeLoading: false, + beforeEnd: false, + afterLoading: false, + afterEnd: false, + + starShow: false, + }, + onLoad(options) { + this.setData({ + id: options.id, + activeId: options.id, + }) + app.waitLogin({ type: 2 }).then(() => { + this.handleView() + }) + }, + handleView() { + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/knowledge/view', + data: { + Id: this.data.activeId, + }, + }).then(() => { + this.getDetail() + }) + }, + getDetail() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/knowledge/detail', + data: { + Id: this.data.id, + }, + }).then(async (res) => { + this.setData({ + videoList: [res], + afterLoading: true, + beforeLoading: true, + }) + this.playCurrentVideo() + await this.getList('after') + await this.getList('before') + }) + }, + getList(sort: 'before' | 'after') { + const { id } = this.data + return wx + .ajax({ + method: 'GET', + url: '?r=wtx/doctor/knowledge/video-sort-list', + data: { + Id: id, + sort, + }, + }) + .then((res) => { + const { videoList, current } = this.data + if (sort === 'before') { + const newVideoList = [...res.list, ...videoList] + this.setData({ + videoList: newVideoList, + beforeLoading: false, + current: res.list.length + current, + beforeEnd: res.length === 0, + }) + } + if (sort === 'after') { + const newVideoList = [...videoList, ...res.list] + this.setData({ + videoList: newVideoList, + afterLoading: false, + afterEnd: res.length === 0, + }) + } + }) + }, + handleChange(e: any) { + const { beforeLoading, afterLoading, beforeEnd, afterEnd, videoList } = this.data + const { current } = e.detail + this.setData({ + current, + starShow: false, + }) + if (current === 0 && !beforeLoading && beforeEnd) { + this.setData({ + beforeLoading: true, + }) + this.getList('before') + } + if (current === videoList.length - 1 && !afterLoading && afterEnd) { + this.setData({ + afterLoading: true, + }) + this.getList('after') + } + this.playCurrentVideo() + }, + playCurrentVideo() { + const { current, videoList } = this.data + videoList.forEach((item: any, index: number) => { + if (!item.ctx) { + item.ctx = wx.createVideoContext(`video-${item.Id}`) + } + item.drag = false + if (index === current) { + item.ctx.play() + } else { + item.ctx.pause() + } + }) + }, + handlePlay(e: any) { + const { index } = e.currentTarget.dataset + const key = `videoList[${index}].play` + this.setData({ + [key]: true, + }) + }, + handlePause(e: any) { + const { index } = e.currentTarget.dataset + const key = `videoList[${index}].play` + this.setData({ + [key]: false, + }) + }, + handleTimeUpdate(e: any) { + const { index } = e.currentTarget.dataset + const { videoList } = this.data + if (videoList[index].drag) return + const { currentTime, duration } = e.detail + const progress = (currentTime / duration) * 100 + const progressKey = `videoList[${index}].progress` + const durationKey = `videoList[${index}].duration` + this.setData({ + [progressKey]: progress, + [durationKey]: duration, + }) + }, + handleTogglePlay(e) { + const { index } = e.currentTarget.dataset + const { videoList } = this.data + if (videoList[index].play) { + videoList[index].ctx.pause() + } else { + videoList[index].ctx.play() + } + }, + handleDragStart(e: any) { + const { index } = e.currentTarget.dataset + const key = `videoList[${index}].drag` + this.setData({ + [key]: true, + }) + }, + handleDragEnd(e: any) { + const { index } = e.currentTarget.dataset + const { videoList } = this.data + const duration = videoList[index].duration + const drapProgress = e.detail + const currentTime = (drapProgress / 100) * duration + videoList[index].ctx.seek(currentTime) + const dragKey = `videoList[${index}].drag` + this.setData({ + [dragKey]: false, + }) + }, + _timer: null as any, + handleLike(e: any) { + const { index } = e.currentTarget.dataset + const { videoList } = this.data + const currentVideo = videoList[index] + const LikeTimes = Number(currentVideo.LikeTimes) + 1 + const key = `videoList[${index}].LikeTimes` + this.setData({ + LikeTimes: this.data.LikeTimes + 1, + [key]: LikeTimes, + [`videoList[${index}].IsLike`]: true, + starShow: true, + }) + const header = this.selectComponent('#animate') + header.start() + if (this._timer) { + clearInterval(this._timer) + } + this._timer = setTimeout(() => { + this.setData({ + starShow: false, + }) + }, 2000) + this.likePost() + }, + likePost: licia.debounce(function (this: any) { + const { activeId, LikeTimes } = this.data + this.setData({ + LikeTimes: 0, + }) + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/knowledge/like', + data: { + Id: activeId, + LikeTimes, + }, + }) + }, 1000), + onShareAppMessage() { + const { current, videoList } = this.data + const currentVideo = videoList[current] + this.setData({ + [`videoList[${current}].ShareTimes`]: Number(currentVideo.ShareTimes) + 1, + [`videoList[${current}].IsShare`]: true, + }) + wx.ajax({ + method: 'POST', + url: '?r=wtx/doctor/knowledge/share', + data: { Id: this.data.activeId }, + }) + }, + handleBack() { + wx.navigateBack() + }, +}) + +export {} diff --git a/src/doctor/pages/knowledgeDetailVideo/index.wxml b/src/doctor/pages/knowledgeDetailVideo/index.wxml new file mode 100644 index 0000000..cf8f24f --- /dev/null +++ b/src/doctor/pages/knowledgeDetailVideo/index.wxml @@ -0,0 +1,74 @@ + + + 视频 + + + + + + + + {{item.Title}} + + + + + + + + + 基因知识库 + + + + + + + {{item.LikeTimes}} + + + + + + + + + + diff --git a/src/doctor/pages/lastDiagnosisReport/index.ts b/src/doctor/pages/lastDiagnosisReport/index.ts index ddb08e4..93b164c 100644 --- a/src/doctor/pages/lastDiagnosisReport/index.ts +++ b/src/doctor/pages/lastDiagnosisReport/index.ts @@ -104,7 +104,7 @@ Page({ }, handleSelectHospital() { wx.navigateTo({ - url: `/patient/pages/selectHostipal/index?select=1&id=${this.data.hospitalId}`, + url: `/doctor/pages/courseHostipal/index?id=${this.data.hospitalId}`, events: { acceptDataFromOpenedPage: (data) => { this.setData({ diff --git a/src/doctor/pages/lastDiagnosisReport/index.wxml b/src/doctor/pages/lastDiagnosisReport/index.wxml index 80cf1f5..f408720 100644 --- a/src/doctor/pages/lastDiagnosisReport/index.wxml +++ b/src/doctor/pages/lastDiagnosisReport/index.wxml @@ -4,6 +4,7 @@ 检查时间 {{beginDate}}至{{endDate}} + {{beginDate || endDate}} -- diff --git a/src/doctor/pages/my/index.ts b/src/doctor/pages/my/index.ts index df6e35d..47854fc 100644 --- a/src/doctor/pages/my/index.ts +++ b/src/doctor/pages/my/index.ts @@ -74,9 +74,14 @@ Page({ url: '/doctor/pages/userInfo/index', }) }, + handlePoster() { + wx.navigateTo({ + url: '/doctor/pages/poster/index', + }) + }, handleDoc() { wx.navigateTo({ - url: '/doctor/pages/doc/index', + url: '/doc/pages/doc5/index', }) }, }) diff --git a/src/doctor/pages/my/index.wxml b/src/doctor/pages/my/index.wxml index 6bcd8cb..09be202 100644 --- a/src/doctor/pages/my/index.wxml +++ b/src/doctor/pages/my/index.wxml @@ -15,7 +15,7 @@ {{userInfo.hospitalClassificationName}}{{userInfo.hospitalLevelName}} - + diff --git a/src/doctor/pages/patientDetail/index.scss b/src/doctor/pages/patientDetail/index.scss index 945242f..248c60d 100644 --- a/src/doctor/pages/patientDetail/index.scss +++ b/src/doctor/pages/patientDetail/index.scss @@ -28,17 +28,17 @@ page { .wrap { flex: 1; .w-header { - display: flex; - align-items: center; - gap: 16rpx; .name { + margin-right: 16rpx; + display: inline; font-size: 36rpx; color: rgba(255, 255, 255, 1); } .age { + margin-right: 16rpx; padding: 0 14rpx; border-radius: 20rpx; - display: flex; + display: inline-flex; align-items: center; gap: 6rpx; font-size: 24rpx; @@ -54,7 +54,7 @@ page { padding: 0 14rpx; border-radius: 20rpx; background-color: rgba(32, 196, 255, 1); - display: flex; + display: inline-flex; align-items: center; gap: 6rpx; font-size: 24rpx; @@ -175,17 +175,11 @@ page { } .card { display: flex; - gap: 24rpx; .c-aside { + padding-top: 48rpx; + position: relative; + z-index: 1; flex-shrink: 0; - display: flex; - flex-direction: column; - align-items: center; - .line-top { - flex-shrink: 0; - height: 48rpx; - border-right: 1px dashed rgba(225, 225, 226, 1); - } .num { flex-shrink: 0; width: 56rpx; @@ -197,20 +191,17 @@ page { color: rgba(255, 255, 255, 1); background-color: rgba(225, 225, 226, 1); } - .line-bottom { - flex: 1; - border-right: 1px dashed rgba(225, 225, 226, 1); - } .hide { opacity: 0; } } .c-container { + margin-left: -28rpx; padding-bottom: 24rpx; flex: 1; .module { position: relative; - padding: 32rpx; + padding: 32rpx 32rpx 32rpx 66rpx; background-color: #fff; border-radius: 32rpx; box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.05); diff --git a/src/doctor/pages/patientDetail/index.ts b/src/doctor/pages/patientDetail/index.ts index 908e9f5..13a17ab 100644 --- a/src/doctor/pages/patientDetail/index.ts +++ b/src/doctor/pages/patientDetail/index.ts @@ -10,13 +10,18 @@ Page({ doctorAvatarList: [], lastBindDoctorInfo: {}, patientArchiveInfo: {}, + + messageCount: 0, }, onLoad(options: any) { this.setData({ id: options.id, }) + }, + onShow() { app.waitLogin({ type: 2 }).then(() => { this.getDetail() + this.getMessageCount() }) }, getDetail() { @@ -42,6 +47,25 @@ Page({ }) }) }, + getMessageCount() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/doctor/message-interact/get-not-read-count', + data: { + patientId: this.data.id, + }, + }).then((res) => { + console.log('res: ', res) + this.setData({ + messageCount: res || 0, + }) + }) + }, + handleAsk() { + wx.navigateTo({ + url: `/doctor/pages/askDoctor/index?id=${this.data.id}`, + }) + }, handleFile() { const { patientInfo } = this.data wx.navigateTo({ @@ -54,6 +78,18 @@ Page({ url: `/doctor/pages/course/index?id=${this.data.id}¤t=${period}`, }) }, + handleCase(){ + const { patientInfo } = this.data + wx.navigateTo({ + url: `/doctor/pages/casesDetail/index?id=${patientInfo.patientId}`, + }) + }, + handleStat() { + const { patientInfo } = this.data + wx.navigateTo({ + url: `/doctor/pages/coltStat/index?id=${patientInfo.patientId}`, + }) + }, handleBack() { wx.navigateBack() }, diff --git a/src/doctor/pages/patientDetail/index.wxml b/src/doctor/pages/patientDetail/index.wxml index 0b83cb3..5272422 100644 --- a/src/doctor/pages/patientDetail/index.wxml +++ b/src/doctor/pages/patientDetail/index.wxml @@ -38,18 +38,18 @@ - + 共同照护团队 - - 最新消息???条 + + 最新消息{{messageCount}}条 - + @@ -60,20 +60,18 @@ {{lastBindDoctorInfo.doctorName}} {{lastBindDoctorInfo.hospitalName}} - + {{patientInfo.patientName}}的检查进展 - 1 - @@ -83,144 +81,165 @@ class="date" wx:if="{{patientArchiveInfo.periodOneExamBeginDate && patientArchiveInfo.periodOneExamEndDate}}" > - {{patientArchiveInfo.periodOneExamBeginDate && patientArchiveInfo.periodOneExamEndDate}} + {{patientArchiveInfo.periodOneExamBeginDate }}~{{patientArchiveInfo.periodOneExamEndDate}} + + + {{patientArchiveInfo.periodOneExamBeginDate || patientArchiveInfo.periodOneExamEndDate}} - + - 查看详情 + 查看详情 - 2 - 注射前准备 + + {{patientArchiveInfo.periodTwoExamBeginDate}}~{{patientArchiveInfo.periodTwoExamEndDate}} + + + {{patientArchiveInfo.periodTwoExamBeginDate || patientArchiveInfo.periodTwoExamEndDate}} + - + + 查看详情 - 3 - - 诊前筛查 - - {{patientArchiveInfo.injectionDate}} - - 还未确定注射日 + 注射日 + 还未确定注射日 +
{{patientArchiveInfo.injectionDate}}
+ 查看详情
- 4 - - 诊前筛查 + 随访计划 + 查看详情 - 待启动 +
- + 他的全部 病历档案 - + 查看他的 diff --git a/src/doctor/pages/poster/index.scss b/src/doctor/pages/poster/index.scss index dde444d..db9910a 100644 --- a/src/doctor/pages/poster/index.scss +++ b/src/doctor/pages/poster/index.scss @@ -1,9 +1,13 @@ +page { + height: 100vh; + overflow: hidden; +} .page { position: relative; height: 1624rpx; .poster { width: 100%; - height: 100%; + height: 100vh; } .btn { position: absolute; diff --git a/src/doctor/pages/poster/index.wxml b/src/doctor/pages/poster/index.wxml index c78fc79..b429e20 100644 --- a/src/doctor/pages/poster/index.wxml +++ b/src/doctor/pages/poster/index.wxml @@ -1,5 +1,5 @@ - - + + 长按图片保存 diff --git a/src/doctor/pages/preDiagnosisReport/index.json b/src/doctor/pages/preDiagnosisReport/index.json index f0a3a25..e4a3507 100644 --- a/src/doctor/pages/preDiagnosisReport/index.json +++ b/src/doctor/pages/preDiagnosisReport/index.json @@ -1,5 +1,5 @@ { - "navigationBarTitleText": "我的诊前检查报告", + "navigationBarTitleText": "诊前检查报告", "usingComponents": { "uploadFile": "/components/uploadFile/index", "popup": "/components/popup/index" diff --git a/src/doctor/pages/preDiagnosisReport/index.scss b/src/doctor/pages/preDiagnosisReport/index.scss index 5dbf949..0280323 100644 --- a/src/doctor/pages/preDiagnosisReport/index.scss +++ b/src/doctor/pages/preDiagnosisReport/index.scss @@ -279,7 +279,7 @@ page { border-radius: 12rpx 12rpx 12rpx 12rpx; &.active { color: #fff; - background-color: rgba(246, 74, 58, 1); + background-color: rgba(28, 107, 255, 1); } } } @@ -311,7 +311,7 @@ page { border-radius: 12rpx 12rpx 12rpx 12rpx; &.active { color: #fff; - background-color: rgba(246, 74, 58, 1); + background-color: rgba(28, 107, 255, 1); } } } @@ -343,7 +343,7 @@ page { border-radius: 12rpx 12rpx 12rpx 12rpx; &.active { color: #fff; - background-color: rgba(246, 74, 58, 1); + background-color: rgba(28, 107, 255, 1); } } } @@ -375,7 +375,7 @@ page { border-radius: 12rpx 12rpx 12rpx 12rpx; &.active { color: #fff; - background-color: rgba(246, 74, 58, 1); + background-color: rgba(28, 107, 255, 1); } } } @@ -444,7 +444,7 @@ page { border-radius: 12rpx 12rpx 12rpx 12rpx; &.active { color: #fff; - background-color: rgba(246, 74, 58, 1); + background-color: rgba(28, 107, 255, 1); } } } diff --git a/src/doctor/pages/preDiagnosisReport/index.ts b/src/doctor/pages/preDiagnosisReport/index.ts index ea740dc..639a84d 100644 --- a/src/doctor/pages/preDiagnosisReport/index.ts +++ b/src/doctor/pages/preDiagnosisReport/index.ts @@ -114,7 +114,7 @@ Page({ }) if (options.period === '2') { wx.setNavigationBarTitle({ - title: '我的检查报告', + title: '检查报告', }) } }, @@ -195,18 +195,6 @@ Page({ [fold]: !this.data[fold], }) }, - handleToggleCheck(e: any) { - const { check, fold } = e.currentTarget.dataset - let foldValue = this.data[fold] - if (this.data[check] == 2 || !this.data[check]) { - foldValue = false - } - this.setData({ - [check]: this.data[check] == 1 ? 2 : 1, - [fold]: foldValue, - }) - this.getCheckNum() - }, getCheckNum() { const { checkList } = this.data let num = 0 diff --git a/src/doctor/pages/preDiagnosisReport/index.wxml b/src/doctor/pages/preDiagnosisReport/index.wxml index 84a9ee9..3e23d0b 100644 --- a/src/doctor/pages/preDiagnosisReport/index.wxml +++ b/src/doctor/pages/preDiagnosisReport/index.wxml @@ -10,7 +10,8 @@ - 您的诊前检查项目 + 检查项目 + 诊前检查项目 {{checkNum}} / @@ -30,12 +31,7 @@ 血常规检查 - + {{isBloodRoutine==1?'已检查':'未检查'}} @@ -71,12 +67,7 @@ 生化检查 - + {{isBiochemical==1?'已检查':'未检查'}} @@ -167,14 +158,7 @@ 凝血因子 IX 活性 - - {{isCFIxActivity==1?'已检查':'未检查'}} - + {{isCFIxActivity==1?'已检查':'未检查'}} @@ -223,14 +207,7 @@ 凝血因子 IX 抑制物检测 - - {{isCFIxInhibitor==1?'已检查':'未检查'}} - + {{isCFIxInhibitor==1?'已检查':'未检查'}} @@ -266,14 +243,7 @@ 乙型肝炎相关检查 - - {{isHepatitisB==1?'已检查':'未检查'}} - + {{isHepatitisB==1?'已检查':'未检查'}}
@@ -314,14 +284,7 @@ 丙型肝炎相关检查 - - {{isHepatitisC==1?'已检查':'未检查'}} - + {{isHepatitisC==1?'已检查':'未检查'}}
@@ -364,14 +327,7 @@ HIV抗体 - - {{isHivAntibody==1?'已检查':'未检查'}} - + {{isHivAntibody==1?'已检查':'未检查'}}
类免疫缺陷病毒抗体(HIV - Ab)
@@ -409,14 +365,7 @@ 甲胎蛋白(AFP)检测
- - {{isAfp==1?'已检查':'未检查'}} - + {{isAfp==1?'已检查':'未检查'}}
@@ -465,14 +414,7 @@ AAV 抗体检查 - - {{isAav==1?'已检查':'未检查'}} - + {{isAav==1?'已检查':'未检查'}}
提交您的AAV抗体检查报告
@@ -510,14 +452,7 @@ 其他检查
- - {{isOther==1?'已检查':'未检查'}} - + {{isOther==1?'已检查':'未检查'}}
您的其他项检查 diff --git a/src/doctor/pages/revisitRecord/index.scss b/src/doctor/pages/revisitRecord/index.scss index e20c727..fd8ff67 100644 --- a/src/doctor/pages/revisitRecord/index.scss +++ b/src/doctor/pages/revisitRecord/index.scss @@ -22,6 +22,7 @@ page { padding: 16rpx 32rpx; display: flex; .item-title { + flex-shrink: 0; width: 5em; font-size: 32rpx; color: rgba(161, 164, 172, 1); diff --git a/src/doctor/pages/revisitRecord/index.wxml b/src/doctor/pages/revisitRecord/index.wxml index d704863..0e7b336 100644 --- a/src/doctor/pages/revisitRecord/index.wxml +++ b/src/doctor/pages/revisitRecord/index.wxml @@ -10,6 +10,7 @@ 日期 {{item.beginDate}}-{{item.endDate}} + {{item.beginDate || item.endDate}} --- diff --git a/src/images/bg27.png b/src/images/bg27.png new file mode 100644 index 0000000..7f68488 Binary files /dev/null and b/src/images/bg27.png differ diff --git a/src/images/bg28.png b/src/images/bg28.png new file mode 100644 index 0000000..85e49bc Binary files /dev/null and b/src/images/bg28.png differ diff --git a/src/images/bg29.png b/src/images/bg29.png new file mode 100644 index 0000000..91cf79b Binary files /dev/null and b/src/images/bg29.png differ diff --git a/src/images/bg30.png b/src/images/bg30.png new file mode 100644 index 0000000..ac5c38d Binary files /dev/null and b/src/images/bg30.png differ diff --git a/src/images/guide1.png b/src/images/guide1.png new file mode 100644 index 0000000..4de3348 Binary files /dev/null and b/src/images/guide1.png differ diff --git a/src/images/guide2.png b/src/images/guide2.png new file mode 100644 index 0000000..bf3a401 Binary files /dev/null and b/src/images/guide2.png differ diff --git a/src/images/guide3.png b/src/images/guide3.png new file mode 100644 index 0000000..0881501 Binary files /dev/null and b/src/images/guide3.png differ diff --git a/src/images/icon111.png b/src/images/icon111.png new file mode 100644 index 0000000..3daad75 Binary files /dev/null and b/src/images/icon111.png differ diff --git a/src/images/icon112.png b/src/images/icon112.png new file mode 100644 index 0000000..b55a3c3 Binary files /dev/null and b/src/images/icon112.png differ diff --git a/src/images/icon113.png b/src/images/icon113.png new file mode 100644 index 0000000..325be8a Binary files /dev/null and b/src/images/icon113.png differ diff --git a/src/images/tabbar/tabbar3-3-active.png b/src/images/tabbar/tabbar3-3-active.png new file mode 100644 index 0000000..eebe0b7 Binary files /dev/null and b/src/images/tabbar/tabbar3-3-active.png differ diff --git a/src/images/tabbar/tabbar3-3.png b/src/images/tabbar/tabbar3-3.png new file mode 100644 index 0000000..c3d607c Binary files /dev/null and b/src/images/tabbar/tabbar3-3.png differ diff --git a/src/pages/index/index.scss b/src/pages/index/index.scss index f321d38..a90fb45 100644 --- a/src/pages/index/index.scss +++ b/src/pages/index/index.scss @@ -116,6 +116,8 @@ height: 317rpx; } .item-title { + width: 424rpx; + box-sizing: border-box; position: absolute; bottom: 0; left: 0; diff --git a/src/patient/pages/askPatient/index.scss b/src/patient/pages/askPatient/index.scss index 2cd31b6..9cbba55 100644 --- a/src/patient/pages/askPatient/index.scss +++ b/src/patient/pages/askPatient/index.scss @@ -88,7 +88,7 @@ page { text-align: center; } .f-header-list { - margin: 40rpx 32rpx 0; + margin: 40rpx 32rpx 24rpx; padding: 32rpx; border-radius: 32rpx; box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.06); @@ -147,7 +147,6 @@ page { flex-direction: column; align-items: start; .message { - margin-bottom: 32rpx; padding: 26rpx 32rpx; background: linear-gradient(13deg, #ffffff 58.17%, #ffcdca 156.6%); border-radius: 32rpx; @@ -157,7 +156,6 @@ page { white-space: pre-line; } .week { - margin-bottom: 32rpx; padding: 26rpx 32rpx; background: linear-gradient(13deg, #ffffff 58.17%, #ffcdca 156.6%); border-radius: 32rpx; @@ -167,20 +165,38 @@ page { } .w-container { margin-top: 24rpx; - padding: 16rpx 0; - background: #f7f7fa; - border-radius: 24rpx; - display: grid; - grid-template-columns: 1fr 1px 1fr; - .item { - padding: 16rpx 32rpx; + .w-content { + padding: 32rpx; font-size: 32rpx; - color: rgba(1, 1, 5, 1); + color: rgba(40, 48, 49, 1); + line-height: 48rpx; + border-radius: 24rpx; + background-color: rgba(247, 247, 250, 1); + white-space: pre-line; } - .line { - margin: 16rpx 0 0; - height: 40rpx; - background-color: rgba(161, 164, 172, 0.35); + .w-wrap { + padding: 16rpx 32rpx; + display: grid; + grid-template-columns: repeat(2, 1fr); + background-color: rgba(247, 247, 250, 1); + border-radius: 24rpx; + .row { + padding: 16rpx 0; + display: flex; + align-items: center; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + .content { + margin-left: 16rpx; + } + &:nth-of-type(2n-1)::after { + margin: 0 16rpx; + content: ''; + width: 1rpx; + height: 40rpx; + background-color: rgba(161, 164, 172, 0.35); + } + } } } } @@ -229,7 +245,6 @@ page { flex-direction: column; align-items: flex-end; .guide { - margin-bottom: 32rpx; padding: 32rpx 30rpx; border-radius: 32rpx 0 32rpx 32rpx; background: linear-gradient(13deg, #ffffff 8%, #e8f0f1 100%); @@ -280,7 +295,6 @@ page { } } .message { - margin-bottom: 32rpx; padding: 26rpx 32rpx; background: linear-gradient(180deg, #fc684f 0%, #f33d31 100%); border-radius: 40rpx; @@ -307,9 +321,8 @@ page { background-color: rgba(247, 247, 250, 1); &.expend { height: 50vh; - .options{ + .options { padding-bottom: 50rpx; - } .container { margin-top: -20rpx; diff --git a/src/patient/pages/askPatient/index.ts b/src/patient/pages/askPatient/index.ts index 84d9d9a..f8c807d 100644 --- a/src/patient/pages/askPatient/index.ts +++ b/src/patient/pages/askPatient/index.ts @@ -53,10 +53,12 @@ Page({ LikeTimes: 0, userInfo: {}, + + week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], + timeDay: { 1: '上午', 2: '下午' }, }, onLoad() { app.waitLogin({ type: 1 }).then(() => { - app.mpBehavior({ PageName: 'PG_FAQ' }) app.getUserInfo().then((userInfo) => { this.setData({ userInfo, @@ -79,7 +81,7 @@ Page({ data: {}, }).then((res) => { this.setData({ - doctorList: res, + doctorList: Object.values(res), }) }) }, @@ -99,6 +101,12 @@ Page({ res.messageList.map((item) => { if (item.msgContentType === '1') { item.msgOtherInfo = JSON.parse(item.msgOtherInfo) + } else if (item.msgContentType === '3') { + item.msgOtherInfo = JSON.parse(item.msgOtherInfo) + } else if (item.msgContentType === '4') { + item.msgContent = JSON.parse(item.msgContent) + } else if (item.msgContentType === '5') { + item.msgContent = JSON.parse(item.msgContent) } return item }) @@ -274,10 +282,56 @@ Page({ }) }, handleSendDate() { - this.setData({ - popupShow: true, - popupType: 'selectDoctor', - popupParams: {}, + const { doctorList } = this.data + console.log('DEBUGPRINT[130]: index.ts:285: doctorList=', doctorList) + if (doctorList.length == 1) { + this.handleSendDateMessage(doctorList[0].doctorId) + } else { + this.setData({ + popupShow: true, + popupType: 'selectDoctor', + popupParams: { + list: doctorList, + }, + }) + } + }, + handleSendDateMessage(id) { + const { messageList } = this.data + wx.ajax({ + method: 'POST', + url: '?r=wtx/message-interact/send-get-visit-time', + data: { doctorId: id }, + }).then((res) => { + console.log('res: ', res) + let params = {} + if (res.contentType == 3) { + params = { + msgId: '', + msgContentType: '3', + msgContent: res.content, + msgVisitTime: res.other.Clinic, + msgVisitTimeType: res.other.ClinicType, + msgFromType: '2', + msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + msgOtherInfo: res.other, + doctorAvatar: res.doctorAvatar, + doctorName: res.doctorName, + } + } else if (res.contentType == 2) { + params = { + msgId: '', + msgContentType: '2', + msgContent: res.content, + msgFromType: '2', + msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + doctorAvatar: res.doctorAvatar, + doctorName: res.doctorName, + } + } + this.setData({ + messageList: [...messageList, params], + }) }) }, handleQuestionTab(e) { @@ -302,6 +356,13 @@ Page({ url: '/patient/pages/doctorList/index', }) }, + handlePopupOk(e) { + const { popupType } = this.data + if (popupType === 'selectDoctor') { + this.handleSendDateMessage(e.detail.id) + this.handlePopupCancel() + } + }, handlePopupCancel() { this.setData({ popupShow: false, diff --git a/src/patient/pages/askPatient/index.wxml b/src/patient/pages/askPatient/index.wxml index 7780420..b427145 100644 --- a/src/patient/pages/askPatient/index.wxml +++ b/src/patient/pages/askPatient/index.wxml @@ -51,59 +51,49 @@ - + {{message.doctorName}} {{message.msgContent }} - 我的出诊时间如下: + {{message.msgContent}}: - 周二 上午 - - 周二 上午 + + {{message.msgOtherInfo.Clinic}} + + + + {{week[item.weekday-1]}} + {{timeDay[item.timeType]}} + + - 这是您的诊疗地图 + {{message.msgContent.weekInfo}} - 填写上你的注射日吧~ + {{message.msgContent.examInfo}} 点击查看 - 您的专属随访计划 + {{message.msgContent.weekInfo}} - 已生成 + {{message.msgContent.examInfo}} 点击立即查看 - - - 现在是您注射后16周 - - 建议每周1次回院复诊~ - - 查看我的随访计划 - diff --git a/src/patient/pages/bbmReport/index.ts b/src/patient/pages/bbmReport/index.ts index 63ecb0a..c9b4299 100644 --- a/src/patient/pages/bbmReport/index.ts +++ b/src/patient/pages/bbmReport/index.ts @@ -14,6 +14,28 @@ Page({ this.getDetail() }) }, + handleInput(e) { + const { key, length } = e.currentTarget.dataset + const value = e.detail.value + this.setData({ + [`${key}`]: this.validateInput(value, length), + }) + }, + validateInput(val, integerLimit) { + let num = val.toString() + // 清除“数字”和“.”以外的字符 + num = num.replace(/[^\d.]/g, '') + // 只保留第一个.,清除多余的 + num = num.replace(/\.{2,}/g, '.') + // 限制整数位位数 + const index = num.indexOf('.') + if (index !== -1) { + num = num.slice(0, index + integerLimit + 1) + } else { + num = num.slice(0, integerLimit) + } + return num + }, handleWeight(e) { const value = e.detail.value if (value) { diff --git a/src/patient/pages/bbmReport/index.wxml b/src/patient/pages/bbmReport/index.wxml index 0af3401..71c1396 100644 --- a/src/patient/pages/bbmReport/index.wxml +++ b/src/patient/pages/bbmReport/index.wxml @@ -20,11 +20,14 @@ KG diff --git a/src/patient/pages/coltStat/index.scss b/src/patient/pages/coltStat/index.scss index 92cbb31..5c111e3 100644 --- a/src/patient/pages/coltStat/index.scss +++ b/src/patient/pages/coltStat/index.scss @@ -96,11 +96,47 @@ page { } } } + .form { + margin: 80rpx 40rpx 0; + display: flex; + align-items: center; + gap: 18rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + .picker { + flex: 1; + .picker-content { + padding: 22rpx 32rpx; + display: flex; + align-items: center; + background-color: #fff; + border-radius: 12rpx; + .content { + flex: 1; + font-size: 28rpx; + color: rgba(1, 1, 5, 1); + font-weight: normal; + &:empty::after { + content: attr(data-place); + color: rgba(161, 164, 172, 0.5); + } + } + .tril { + width: 0; + height: 0; + border-style: solid; + border-width: 12rpx 12rpx 0 12rpx; + border-color: rgba(207, 209, 213, 1) transparent transparent transparent; + } + } + } + } .page-container { padding: 0 40rpx 40rpx; .module1 { margin-top: 32rpx; - padding: 24rpx 32rpx 32rpx; + padding: 16rpx 32rpx; background: #ffffff; box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.06); border-radius: 24rpx 24rpx 24rpx 24rpx; @@ -251,6 +287,7 @@ page { gap: 20rpx; font-size: 32rpx; color: rgba(1, 1, 5, 1); + font-weight: bold; &::before { content: ''; width: 12rpx; @@ -323,6 +360,7 @@ page { gap: 20rpx; font-size: 32rpx; color: rgbargba(137, 141, 151, 1) (1, 1, 5, 1); + font-weight: bold; padding-bottom: 16rpx; &::before { content: ''; diff --git a/src/patient/pages/coltStat/index.ts b/src/patient/pages/coltStat/index.ts index 59e93ad..464269a 100644 --- a/src/patient/pages/coltStat/index.ts +++ b/src/patient/pages/coltStat/index.ts @@ -37,6 +37,9 @@ Page({ }, }, + beginDate: dayjs().subtract(1, 'M').startOf('month').format('YYYY-MM-DD'), + endDate: dayjs().format('YYYY-MM-DD'), + tabActve: 2, iDays: '', @@ -109,13 +112,11 @@ Page({ }) }, getRangeDate() { - const calendar = this.selectComponent('#calendar').calendar - const dates = calendar.getCalendarDates() - console.log('DEBUGPRINT[96]: index.ts:69: dates=') + const { beginDate, endDate } = this.data return { - beginDate: `${dates[0].year}-${dates[0].month}-${dates[0].date}`, - endDate: `${dates.at(-1).year}-${dates.at(-1).month}-${dates.at(-1).date}`, + beginDate, + endDate, } }, setCalendarTodos({ bleedDate = [], injectionDate = [] }: { bleedDate: any[]; injectionDate: string[] }) { @@ -183,7 +184,6 @@ Page({ month, }, }) - this.handleUpdate() this.handleIsDisableRight() }, handleCalendarSwitch(e: any) { @@ -225,7 +225,6 @@ Page({ beginDate: dayjs(`${year}-${month}-01`).startOf('month').format('YYYY-MM-DD'), endDate: dayjs(`${year}-${month}-01`).endOf('month').format('YYYY-MM-DD'), }) - this.handleUpdate() this.handleIsDisableRight() }, handleCalendarCurrent() { @@ -243,7 +242,6 @@ Page({ month, }, }) - this.handleUpdate() this.handleIsDisableRight() }, handleCalendarMore() { @@ -274,7 +272,6 @@ Page({ this.setData({ ['calendarConfig.weekMode']: !weekMode, }) - this.handleUpdate() }, handleIsDisableRight() { const { year, month } = this.data.calendarCurrent diff --git a/src/patient/pages/coltStat/index.wxml b/src/patient/pages/coltStat/index.wxml index ed91774..41cf74f 100644 --- a/src/patient/pages/coltStat/index.wxml +++ b/src/patient/pages/coltStat/index.wxml @@ -56,6 +56,21 @@ + + + + {{beginDate}} + + + + - + + + {{endDate}} + + + + 我的健康变化 @@ -106,13 +121,14 @@ - + {{item.beginDate}}~{{item.endDate}} + {{item.beginDate || item.endDate}} -- {{item.periodName}} @@ -131,7 +147,8 @@ {{item.beginDate}}~{{item.endDate}} - -- + {{item.beginDate || item.endDate}} + 未填写 {{item.periodName}} diff --git a/src/patient/pages/course/index.ts b/src/patient/pages/course/index.ts index a3d3934..5db40a4 100644 --- a/src/patient/pages/course/index.ts +++ b/src/patient/pages/course/index.ts @@ -120,9 +120,10 @@ Page({ url: `/patient/pages/inhibitorsManageList/index?period=${period}`, }) }, - handleFollowPlan() { + handleFollowPlan(e) { + const { period } = e.currentTarget.dataset wx.navigateTo({ - url: '/patient/pages/followPlan/index', + url: `/patient/pages/followPlan/index?period=${period}`, }) }, handleLastDiagnosisReport() { diff --git a/src/patient/pages/course/index.wxml b/src/patient/pages/course/index.wxml index e1e6423..fe3cbfc 100644 --- a/src/patient/pages/course/index.wxml +++ b/src/patient/pages/course/index.wxml @@ -337,7 +337,7 @@ - + --> 日期 - {{item.beginDate}}~{{item.endDate}} + + {{item.beginDate}}~ + {{item.endDate}} + + {{item.beginDate || item.endDate}} -- @@ -63,7 +67,7 @@ {{item.totalNum}}/{{item.allNum}} - + 查看全部 @@ -120,7 +124,10 @@ 日期 - {{item.beginDate}}~{{item.endDate}} + + {{item.beginDate}}~ + {{item.endDate}} + 未填写 @@ -160,7 +167,10 @@ 日期 - {{item.beginDate}}~{{item.endDate}} + + {{item.beginDate}}~ + {{item.endDate}} + 未填写 @@ -306,7 +316,10 @@ - + { this.getDetail() this.addVisitRecord() @@ -42,7 +47,8 @@ Page({ }, handleLastDiagnosisReport() { wx.navigateTo({ - url: '/patient/pages/lastDiagnosisReport/index', + // url: '/patient/pages/lastDiagnosisReport/index', + url: `/patient/pages/lastDiagnosisReport/index?period=${this.data.period}`, }) }, }) diff --git a/src/patient/pages/index/index.scss b/src/patient/pages/index/index.scss index 13493c3..3f4f477 100644 --- a/src/patient/pages/index/index.scss +++ b/src/patient/pages/index/index.scss @@ -356,9 +356,9 @@ page { } } } - .module1 { - margin-top: 48rpx; - .m-header { + .info { + margin-top: 50rpx; + .i-header { display: flex; align-items: center; justify-content: space-between; @@ -368,14 +368,42 @@ page { font-weight: bold; } .more { - font-size: 24rpx; - color: rgba(1, 1, 5, 0.36); + font-size: 28rpx; + color: rgba(1, 1, 5, 0.4); } } - .m-card { - margin-top: 24rpx; - width: 670rpx; - height: 280rpx; + .info-list { + padding-right: 40rpx; + padding-left: 40rpx; + margin: 30rpx -40rpx 0; + overflow-x: auto; + overflow-y: hidden; + display: flex; + gap: 24rpx; + &::-webkit-scrollbar { + display: none; + } + .card { + flex-shrink: 0; + .photo { + width: 424rpx; + height: 246rpx; + border-radius: 24rpx 24rpx 0 0; + } + .content { + max-width: 424rpx; + box-sizing: border-box; + padding: 20rpx; + font-size: 28rpx; + color: rgba(1, 1, 5, 1); + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + background-color: #fff; + line-height: 32rpx; + border-radius: 0 0 24rpx 24rpx; + } + } } } @@ -457,3 +485,25 @@ page { } } } + +.preview { + position: fixed; + width: 100vw; + height: 100vh; + z-index: 1000000000; + top: 0; + left: 0; + overflow: hidden; + .img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + display: block; + } + .show { + opacity: 1; + } +} diff --git a/src/patient/pages/index/index.ts b/src/patient/pages/index/index.ts index 6bc7d3d..70596a5 100644 --- a/src/patient/pages/index/index.ts +++ b/src/patient/pages/index/index.ts @@ -26,6 +26,12 @@ Page({ userInfo: {} as any, isLoad: false, + + knowledgeList: [] as any, + + guide: 0, + guideShow: false, + guideList: ['1', '2', '3'], }, onLoad() { app.waitLogin({ type: 1 }).then(() => { @@ -38,6 +44,7 @@ Page({ '$1', ), }) + this.getKnowledge() this.getBindDoctorList() this.getTeratmentInfo() const waitBindDoctorId = app.globalData.waitBindDoctorId @@ -63,7 +70,7 @@ Page({ data: {}, }).then((res) => { this.setData({ - doctorList: res, + doctorList: Object.values(res), }) }) }, @@ -79,6 +86,35 @@ Page({ }) }) }, + getKnowledge() { + wx.ajax({ + method: 'GET', + url: '?r=wtx/knowledge/index-list', + data: {}, + }).then((res) => { + this.setData({ + knowledgeList: res.list, + }) + }) + }, + handleInfoMore() { + wx.navigateTo({ + url: '/patient/pages/knowledge/index', + }) + }, + handleInfoDetail(e) { + const { index } = e.currentTarget.dataset + const params = this.data.knowledgeList[index] + if (params.Type == 1) { + wx.navigateTo({ + url: `/patient/pages/knowledgeDetail/index?id=${params.Id}`, + }) + return + } + wx.navigateTo({ + url: `/patient/pages/knowledgeDetailVideo/index?id=${params.Id}`, + }) + }, handleSwiperChange(e) { const query = wx.createSelectorQuery() query.select(`#process${e.detail.current}`).boundingClientRect() @@ -213,6 +249,16 @@ Page({ popupType: '', }) }, + handleTapPreview() { + if (this.data.guide == this.data.guideList.length - 1) { + this.setData({ + guideShow: false, + }) + } + this.setData({ + guide: Number(this.data.guide) + 1, + }) + }, }) export {} diff --git a/src/patient/pages/index/index.wxml b/src/patient/pages/index/index.wxml index 52569d1..65d3d18 100644 --- a/src/patient/pages/index/index.wxml +++ b/src/patient/pages/index/index.wxml @@ -190,15 +190,20 @@ - - + + 为他们加油 - + 查看更多 - + + + + {{item.Title}} + + @@ -212,7 +217,7 @@ 上次凝血因子水平(IX) - {{treatment.clottingFactorInfo.clottingFactorDate}} + {{treatment.clottingFactorInfo.clottingFactorDate || ''}} @@ -240,6 +245,16 @@ + + + + 至 - + {{endDate}} @@ -65,10 +65,11 @@ 总胆红素 您的凝血因子水平 { app.getUserInfo(1).then((userInfo) => { this.setData({ diff --git a/src/patient/pages/preDiagnosisReport/index.scss b/src/patient/pages/preDiagnosisReport/index.scss index 2e52b6b..9f88b96 100644 --- a/src/patient/pages/preDiagnosisReport/index.scss +++ b/src/patient/pages/preDiagnosisReport/index.scss @@ -33,15 +33,17 @@ page { .picker { flex: 1; .picker-content { - padding: 22rpx 32rpx; + padding: 22rpx 16rpx; display: flex; align-items: center; + justify-content: center; background-color: rgba(247, 247, 250, 1); border-radius: 12rpx; + gap: 10rpx; .content { - flex: 1; font-size: 32rpx; color: rgba(1, 1, 5, 1); + white-space: nowrap; &:empty::after { content: attr(data-place); color: rgba(161, 164, 172, 0.5); diff --git a/src/patient/pages/preDiagnosisReport/index.wxml b/src/patient/pages/preDiagnosisReport/index.wxml index 740dffd..389c72b 100644 --- a/src/patient/pages/preDiagnosisReport/index.wxml +++ b/src/patient/pages/preDiagnosisReport/index.wxml @@ -12,7 +12,7 @@ 至 - + {{endDate}} @@ -22,7 +22,8 @@ - 您的诊前检查项目 + 您的检查项目 + 您的诊前检查项目 {{checkNum}} / diff --git a/src/patient/pages/revisitRecord/index.scss b/src/patient/pages/revisitRecord/index.scss index 3d06e17..1ffc56e 100644 --- a/src/patient/pages/revisitRecord/index.scss +++ b/src/patient/pages/revisitRecord/index.scss @@ -22,6 +22,7 @@ page { padding: 16rpx 32rpx; display: flex; .item-title { + flex-shrink: 0; width: 5em; font-size: 32rpx; color: rgba(161, 164, 172, 1); diff --git a/src/patient/pages/revisitRecord/index.wxml b/src/patient/pages/revisitRecord/index.wxml index c2894d7..5bb4d7e 100644 --- a/src/patient/pages/revisitRecord/index.wxml +++ b/src/patient/pages/revisitRecord/index.wxml @@ -10,6 +10,7 @@ 日期 {{item.beginDate}}-{{item.endDate}} + {{item.beginDate || item.endDate}} ---