diff --git a/project.private.config.json b/project.private.config.json index 66cbc18..d933e7a 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -9,6 +9,13 @@ "miniprogram": { "list": [ { + "name": "聊天室", + "pathName": "module1/pages/chatRoom/index", + "query": "id=2", + "launchMode": "default", + "scene": null + }, + { "name": "病历详情", "pathName": "module1/pages/casesDetail/index", "query": "id=25", @@ -51,13 +58,6 @@ "scene": null }, { - "name": "聊天室", - "pathName": "module1/pages/chatRoom/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { "name": "聊天室信息", "pathName": "module1/pages/chatRoomInfo/index", "query": "", diff --git a/src/app.json b/src/app.json index f4a3949..9e46635 100644 --- a/src/app.json +++ b/src/app.json @@ -31,7 +31,8 @@ "pages/casesDetail/index", "pages/casesFeedback/index", "pages/chatRoom/index", - "pages/chatRoomInfo/index" + "pages/chatRoomInfo/index", + "pages/setChatDoctor/index" ] } ], diff --git a/src/app.ts b/src/app.ts index b2d12b2..6cf6559 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,10 +1,11 @@ -/* eslint-disable perfectionist/sort-imports */ import component from "@/utils/component"; import relativeTime from "@/utils/dayjs/relativeTime.js"; import page from "@/utils/page"; import { request } from "@/utils/request"; import { parseScene } from "./utils/util"; +wx.WebIM = require("@/utils/webIM/WebIM.js").default; + const dayjs = require("dayjs"); const licia = require("miniprogram-licia"); diff --git a/src/module1/pages/chatRoom/index.json b/src/module1/pages/chatRoom/index.json index c42b95a..c0f7051 100644 --- a/src/module1/pages/chatRoom/index.json +++ b/src/module1/pages/chatRoom/index.json @@ -2,6 +2,7 @@ "navigationBarTitleText": "聊天室", "navigationStyle": "default", "usingComponents": { - "van-icon": "@vant/weapp/icon/index" + "van-icon": "@vant/weapp/icon/index", + "van-popup": "@vant/weapp/popup/index" } } diff --git a/src/module1/pages/chatRoom/index.scss b/src/module1/pages/chatRoom/index.scss index 0afe255..621eba4 100644 --- a/src/module1/pages/chatRoom/index.scss +++ b/src/module1/pages/chatRoom/index.scss @@ -67,8 +67,7 @@ page { } } .c-footer { - margin-top: 16rpx; - line-height: 28rpx; + margin-top: 6rpx; .name { display: inline-block; font-size: 28rpx; @@ -334,3 +333,57 @@ page { width: 0; height: 0; } + +.popup1 { + padding: 48rpx 32rpx; + width: 580rpx; + background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 17%); + border-radius: 16rpx 16rpx 16rpx 16rpx; + border: 2rpx solid #ffffff; + .title { + font-size: 36rpx; + color: rgba(20, 21, 21, 1); + line-height: 48rpx; + font-weight: bold; + text-align: center; + } + .scroll { + margin-top: 24rpx; + max-height: 680rpx; + overflow-y: auto; + overflow-x: hidden; + .s-title { + margin-top: 24rpx; + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + line-height: 56rpx; + font-weight: bold; + } + .s-content { + font-size: 28rpx; + color: rgba(133, 133, 133, 1); + line-height: 48rpx; + } + } + .tip { + margin-top: 24rpx; + padding: 16rpx; + border-radius: 10rpx; + text-align: center; + font-size: 24rpx; + color: rgba(255, 125, 0, 1); + line-height: 40rpx; + background-color: rgba(255, 247, 232, 1); + } + .btn { + margin-top: 24rpx; + height: 72rpx; + font-size: 32rpx; + color: rgba(255, 255, 255, 1); + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); + border-radius: 60rpx 60rpx 60rpx 60rpx; + } +} diff --git a/src/module1/pages/chatRoom/index.ts b/src/module1/pages/chatRoom/index.ts index 2a57025..b168a00 100644 --- a/src/module1/pages/chatRoom/index.ts +++ b/src/module1/pages/chatRoom/index.ts @@ -1,208 +1,270 @@ -import dayjs from 'dayjs' +import dayjs from "dayjs"; -const _app = getApp() +const app = getApp(); interface IMessageItem { - msgId: string - msgContentType: '1' | '2' | '3' | '4' // 1:文本 4: 语音 - msgContent: any - msgVisitTime: string - msgFromType: '1' | '2' // 1: 患者 2: 医生 - isPlay?: boolean - welcomeMsg?: { - hotQuestion: Item[] - } - msgCreateTime: string // 消息创建时间 - msgCreateTimeName?: string // 消息创建时间 - showTime?: boolean + msgId: string; + contentType: "1" | "2" | "3" | "4" | "5"; // 1:文本 2: 语音 3. 图片 4. 视频 5. 提示信息 + content: any; + fromDoctorId: string; + doctorImg: string; + msgVisitTime: string; + createTime: ""; + isSelf: 1 | 2; + isRead: 1 | 2; } interface Item { - questionId: string - question: string + questionId: string; + question: string; } Page({ data: { + id: "", + + show1: false, + fold: true, scrollTop: 0, - scrollIntoView: '', + scrollIntoView: "", doctorDetail: {} as any, questionActive: 0, questionList: [] as any, questionActiveList: [] as Item[], + roomDoctors: [], + newRoomDoctors: [], + case: {} as any, + chatGroupInfo: {}, + chatDoctor: {}, + isLoad: false, isFinish: false, messageList: [ { - msgId: '686', - msgContentType: '2', - msgContent: '重症肌无力患者复查的频率取决于多种因素', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '2', - msgCreateTime: '2024-10-10 09:37:40', + msgId: "686", + contentType: "2", + msgContent: "重症肌无力患者复查的频率取决于多种因素", + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "2", + msgCreateTime: "2024-10-10 09:37:40", }, { - msgId: '686', - msgContentType: '3', - msgContent: '重症肌无力患者复查的频率取决于多种因素', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '2', - msgCreateTime: '2024-10-10 09:37:40', + msgId: "686", + contentType: "3", + msgContent: "重症肌无力患者复查的频率取决于多种因素", + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "2", + msgCreateTime: "2024-10-10 09:37:40", }, { - msgId: '686', - msgContentType: '2', - msgContent: '重症肌无力患者复查的频率取决于多种因素', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '1', - msgCreateTime: '2024-10-10 09:37:40', + msgId: "686", + contentType: "2", + msgContent: "重症肌无力患者复查的频率取决于多种因素", + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "1", + msgCreateTime: "2024-10-10 09:37:40", }, { - msgId: '686', - msgContentType: '3', - msgContent: '重症肌无力患者复查的频率取决于多种因素', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '1', - msgCreateTime: '2024-10-10 09:37:40', + msgId: "686", + contentType: "3", + msgContent: "重症肌无力患者复查的频率取决于多种因素", + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "1", + msgCreateTime: "2024-10-10 09:37:40", }, { - msgId: '681', - msgContentType: '1', - msgContent: '重症肌无力是否有遗传性?', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '1', - msgCreateTime: '2024-10-10 09:37:17', + msgId: "681", + contentType: "1", + msgContent: "重症肌无力是否有遗传性?", + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "1", + msgCreateTime: "2024-10-10 09:37:17", }, { - msgId: '681', - msgContentType: '1', - msgContent: '重症肌无力是否有遗传性?', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '1', - msgCreateTime: '2024-10-10 09:37:17', + msgId: "681", + contentType: "1", + msgContent: "重症肌无力是否有遗传性?", + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "1", + msgCreateTime: "2024-10-10 09:37:17", }, { - msgId: '483', - msgContentType: '4', + msgId: "483", + contentType: "4", msgContent: '[{"duration":8,"url":"https://circlehbsaas.oss-cn-beijing.aliyuncs.com/audio/20240907757_tmp_acf4f18c59553a8d2d9f74e173a16328.m4a.mp3"}]', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '2', - msgCreateTime: '2024-10-08 15:24:19', + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "2", + msgCreateTime: "2024-10-08 15:24:19", }, { - msgId: '483', - msgContentType: '4', + msgId: "483", + contentType: "4", msgContent: '[{"duration":8,"url":"https://circlehbsaas.oss-cn-beijing.aliyuncs.com/audio/20240907757_tmp_acf4f18c59553a8d2d9f74e173a16328.m4a.mp3"}]', - welcomeMsg: '', - msgVisitTime: '', - msgFromType: '1', - msgCreateTime: '2024-10-08 15:24:19', + welcomeMsg: "", + msgVisitTime: "", + msgFromType: "1", + msgCreateTime: "2024-10-08 15:24:19", }, ], - nextMsgId: '', + lastMsgId: "", unReadCount: 0, firstNotReadMsgId: 0, isVisitAdl: 2, adlMsgId: 0, - week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], - timeDay: { 1: '上午', 2: '下午' }, + week: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"], + timeDay: { 1: "上午", 2: "下午" }, userInfo: {}, }, innerAudioContext: null as WechatMiniprogram.InnerAudioContext | null, videoContext: null as WechatMiniprogram.VideoContext | null, onLoad(options) { - this.videoContext = wx.createVideoContext('video') + this.setData({ + id: options.id, + }); + this.videoContext = wx.createVideoContext("video"); + app.waitLogin().then(() => { + // this.getAgree(); + + this.getMessageList(); + this.getDetail(); + }); }, onUnload() { if (this.innerAudioContext) { - this.innerAudioContext.stop() + this.innerAudioContext.stop(); } }, + getAgree() { + wx.ajax({ + method: "GET", + url: "?r=takeda/chat/get-agree", + data: { + roomId: this.data.id, + }, + }).then((res) => { + this.setData({ + show1: res === 2, + }); + }); + }, + onAgreeClose() { + wx.navigateBack(); + }, + handleSubmitAgree() { + wx.ajax({ + method: "POST", + url: "?r=takeda/chat/agree-room", + data: { + roomId: this.data.id, + }, + }).then(() => { + this.setData({ + show1: false, + }); + }); + }, + getDetail() { + wx.ajax({ + method: "GET", + url: "?r=takeda/chat/get-room-detail", + data: { roomId: this.data.id }, + }).then((res) => { + this.setData({ + roomDoctors: res.roomDoctors, + newRoomDoctors: res.roomDoctors.slice(0, 4), + case: res.case, + chatGroupInfo: res.chatGroupInfo, + chatDoctor: res.chatDoctor, + }); + }); + }, + handleRoomDetail() { + wx.navigateTo({ + url: `/module1/pages/chatRoomInfo/index?id=${this.data.id}&cid=${this.data.case.caseId}`, + }); + }, + handleView(index = -1) { this.setData({ scrollIntoView: index > -1 ? `view${index}` : `place`, - }) + }); }, getDoctorDetail() { wx.ajax({ - method: 'GET', - url: '?r=zd/message-interact/get-bind-doctor-info', + method: "GET", + url: "?r=zd/message-interact/get-bind-doctor-info", data: {}, }).then((res) => { this.setData({ doctorDetail: { ...res, }, - }) - }) + }); + }); }, getQuestionList() { wx.ajax({ - method: 'GET', - url: '?r=zd/message-interact/get-question-list', + method: "GET", + url: "?r=zd/message-interact/get-question-list", data: {}, }).then((res) => { this.setData({ questionList: res, questionActiveList: res[0].questionList, - }) - }) + }); + }); }, getMessageList() { - if (this.data.isLoad || this.data.isFinish) return + if (this.data.isLoad || this.data.isFinish) return; this.setData({ isLoad: true, - }) - const nextMsgId = this.data.nextMsgId + }); + const lastMsgId = this.data.lastMsgId; wx.ajax({ - method: 'GET', - url: '?r=zd/message-interact/patient-get-message-list', + method: "GET", + url: "?r=takeda/chat/get-message-list", data: { - nextMsgId, + lastMsgId, + roomId: this.data.id, }, }).then((res) => { - res.messageList.map((item) => { - if (item.msgContentType === '4') { - item.msgContent = JSON.parse(item.msgContent) - } - if (item.msgContentType === '2') { - item.msgVisitTime = JSON.parse(item.msgVisitTime) - } - if (item.msgContentType === '5') { - item.welcomeMsg = JSON.parse(item.welcomeMsg) + res.map((item) => { + //消息内容类型,1-文本,2-语音,3-图片,4-视频,5-提示信息 + if (["2", "3", "4"].includes(item.contentType)) { + item.msgContent = JSON.parse(item.msgContent); } - return item - }) + return item; + }); this.setData({ messageList: [...res.messageList.reverse(), ...this.data.messageList], - nextMsgId: res.nextMsgId, + lastMsgId: res.lastMsgId, unReadCount: res.unReadCount, firstNotReadMsgId: res.firstNotReadMsgId, isVisitAdl: res.isVisitAdl, adlMsgId: res.adlMsgId, isLoad: false, - isFinish: nextMsgId === res.nextMsgId, - }) - this.filterCreateTime() - if (!nextMsgId) { - this.handleView() + isFinish: lastMsgId === res.lastMsgId, + }); + this.filterCreateTime(); + if (!lastMsgId) { + this.handleView(); } - }) + }); }, scrolltoupper(e) { // if (e.detail.direction === 'top') { @@ -210,49 +272,49 @@ Page({ // } }, handleHot(e) { - const { index, mindex } = e.currentTarget.dataset - const { messageList } = this.data - const hotList = messageList[mindex].welcomeMsg?.hotQuestion - const hot = hotList?.[index] + const { index, mindex } = e.currentTarget.dataset; + const { messageList } = this.data; + const hotList = messageList[mindex].welcomeMsg?.hotQuestion; + const hot = hotList?.[index]; this.setData({ messageList: [ ...messageList, { - msgId: '', - msgContentType: '1', + msgId: "", + contentType: "1", msgContent: hot?.question, - msgVisitTime: '', - msgFromType: '1', - msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + msgVisitTime: "", + msgFromType: "1", + msgCreateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), }, ], - }) - this.handleView() - this.sendQuestion(hot?.questionId) + }); + this.handleView(); + this.sendQuestion(hot?.questionId); }, handleQuestion(e) { - const { index } = e.currentTarget.dataset - const { questionActiveList, messageList } = this.data - const question = questionActiveList[index] + const { index } = e.currentTarget.dataset; + const { questionActiveList, messageList } = this.data; + const question = questionActiveList[index]; this.setData({ messageList: [ ...messageList, { - msgId: '', - msgContentType: '1', + msgId: "", + contentType: "1", msgContent: question.question, - msgVisitTime: '', - msgFromType: '1', - msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + msgVisitTime: "", + msgFromType: "1", + msgCreateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), }, ], - }) - this.sendQuestion(question.questionId) + }); + this.sendQuestion(question.questionId); }, sendQuestion(questionId) { wx.ajax({ - method: 'POST', - url: '?r=zd/message-interact/send-question-message', + method: "POST", + url: "?r=zd/message-interact/send-question-message", data: { questionId, }, @@ -261,130 +323,130 @@ Page({ messageList: [ ...this.data.messageList, { - msgId: '', - msgContentType: '1', + msgId: "", + contentType: "1", msgContent: res, - msgVisitTime: '', - msgFromType: '2', - msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + msgVisitTime: "", + msgFromType: "2", + msgCreateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), }, ], - }) - this.filterCreateTime() - this.handleView() - }) + }); + this.filterCreateTime(); + this.handleView(); + }); }, 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`) + 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') + msgCreateTimeName = dayjs(date).format("YYYY-MM-DD HH:mm"); } - return msgCreateTimeName + return msgCreateTimeName; }, filterCreateTime() { - const gapTime = 5 * 60 * 1000 - const { messageList } = this.data + const gapTime = 5 * 60 * 1000; + const { messageList } = this.data; - let preTime = 0 + let preTime = 0; messageList.forEach((item, index) => { if (index === 0) { - item.showTime = true - preTime = dayjs(item.msgCreateTime).valueOf() - item.msgCreateTimeName = this.formatTime(item.msgCreateTime) + item.showTime = true; + preTime = dayjs(item.msgCreateTime).valueOf(); + item.msgCreateTimeName = this.formatTime(item.msgCreateTime); } else { - const curTime = dayjs(item.msgCreateTime).valueOf() + const curTime = dayjs(item.msgCreateTime).valueOf(); if (curTime - preTime > gapTime) { - item.showTime = true - item.msgCreateTimeName = this.formatTime(item.msgCreateTime) - preTime = dayjs(item.msgCreateTime).valueOf() + item.showTime = true; + item.msgCreateTimeName = this.formatTime(item.msgCreateTime); + preTime = dayjs(item.msgCreateTime).valueOf(); } } - }) + }); this.setData({ messageList, - }) + }); }, handleQuestionTab(e) { - const { index } = e.currentTarget.dataset + const { index } = e.currentTarget.dataset; this.setData({ questionActive: index, questionActiveList: this.data.questionList[index].questionList, - }) + }); }, handleDoctorDetail() { - const { doctorId } = this.data.doctorDetail + const { doctorId } = this.data.doctorDetail; wx.navigateTo({ url: `/pages/doctorDetail/index?id=${doctorId}`, - }) + }); }, handleRead() { - const { firstNotReadMsgId, messageList } = this.data - const index = messageList.findIndex((item) => `${item.msgId}` === `${firstNotReadMsgId}`) - this.handleView(index) + const { firstNotReadMsgId, messageList } = this.data; + const index = messageList.findIndex((item) => `${item.msgId}` === `${firstNotReadMsgId}`); + this.handleView(index); this.setData({ unReadCount: 0, - }) + }); }, handleFooter() { this.setData({ fold: !this.data.fold, - }) + }); if (this.data.fold) { setTimeout(() => { - this.handleView() - }, 300) + this.handleView(); + }, 300); } }, handleAdl() { wx.navigateTo({ - url: '/pages/adl/index', - }) + url: "/pages/adl/index", + }); }, handleAudio(e) { - const { index } = e.currentTarget.dataset - const { messageList } = this.data - const messageItem = messageList[index] - const { url } = messageItem.msgContent[0] + const { index } = e.currentTarget.dataset; + const { messageList } = this.data; + const messageItem = messageList[index]; + const { url } = messageItem.msgContent[0]; if (this.innerAudioContext) { if (messageItem.isPlay) { - this.innerAudioContext.stop() - messageItem.isPlay = false + this.innerAudioContext.stop(); + messageItem.isPlay = false; this.setData({ messageList, - }) - return + }); + return; } - this.innerAudioContext.stop() - this.innerAudioContext.src = url - this.innerAudioContext.play() - messageItem.isPlay = true + this.innerAudioContext.stop(); + this.innerAudioContext.src = url; + this.innerAudioContext.play(); + messageItem.isPlay = true; this.innerAudioContext.onEnded(() => { - messageItem.isPlay = false + messageItem.isPlay = false; this.setData({ messageList, - }) - }) + }); + }); this.setData({ messageList, - }) + }); } }, handlePreview(e) { - const { url } = e.currentTarget.dataset + const { url } = e.currentTarget.dataset; wx.previewImage({ urls: [url], - }) + }); }, handleVideo() { if (this.videoContext) { - this.videoContext.play() - this.videoContext.requestFullScreen({}) + this.videoContext.play(); + this.videoContext.requestFullScreen({}); } }, -}) +}); diff --git a/src/module1/pages/chatRoom/index.wxml b/src/module1/pages/chatRoom/index.wxml index 5c37554..5464b62 100644 --- a/src/module1/pages/chatRoom/index.wxml +++ b/src/module1/pages/chatRoom/index.wxml @@ -1,38 +1,25 @@ - - - - - - 已归档 + + + 已归档 - ID:2024020913049204001 + ID:{{case.caseNo}} 详情 - 刘欢1 + {{case.doctorName}} | - 广东省人民医院 - 广州市/番禺区 + {{case.hospitalName}} + + {{case.cityName}}{{case.countyName?'/':''}}{{case.countyName}} + @@ -59,8 +46,8 @@ 李倩 中南大学湘雅医院李倩 - {{message.msgContent}} - + {{message.msgContent}} + - + @@ -100,10 +87,10 @@ - {{message.msgContent}} + {{message.msgContent}} @@ -116,7 +103,7 @@ > - + - + - + @@ -173,3 +165,21 @@ id="video" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400" > + + + + 用户须知 + + + 为了确保患者隐私得到充分保护,我们要求所有使用本小程序的医疗保健专业人士(HCP)遵守以下协议。 + + 一、用户同意 + + 在使用本小程序上传患者档案之前,您必须同意以下条款:隐私保护:我确认我已经阅读并理解了本小程序的隐私政策,并将严格遵守所有相关的隐私保护规定。 + 信息处理:我保证在上传任何患者档案信息之前,已经彻底去除了所有患者的敏感隐私信息,包括但不限于姓名、地址、身份证号、电话 + + + 聊天室自动将此病历讨论医生拉入讨论 + 确定 + + diff --git a/src/module1/pages/chatRoomInfo/index.ts b/src/module1/pages/chatRoomInfo/index.ts index b792ee4..ffb3ea2 100644 --- a/src/module1/pages/chatRoomInfo/index.ts +++ b/src/module1/pages/chatRoomInfo/index.ts @@ -1,6 +1,31 @@ -const _app = getApp(); +const app = getApp(); Page({ - data: {}, - onLoad() {}, + data: { id: "", caseId: "", list: [] }, + onLoad(options) { + this.setData({ id: options.id, caseId: options.cid }); + app.waitLogin().then(() => { + this.getDetail(); + }); + }, + getDetail() { + wx.ajax({ + method: "GET", + url: "?r=takeda/chat/get-room-doctor", + data: { + roomId: this.data.id, + }, + }).then((res) => { + this.setData({ + list: res, + }); + }); + }, + handleDoctor() { + wx.navigateTo({ + url: `/module1/pages/setChatDoctor/index?id=${this.data.id}&cid=${this.data.caseId}`, + }); + }, }); + +export {}; diff --git a/src/module1/pages/chatRoomInfo/index.wxml b/src/module1/pages/chatRoomInfo/index.wxml index b7962aa..b7a57c1 100644 --- a/src/module1/pages/chatRoomInfo/index.wxml +++ b/src/module1/pages/chatRoomInfo/index.wxml @@ -1,14 +1,10 @@ - - - 王鸿军 + + + {{item.doctorName}} - + diff --git a/src/module1/pages/setCaseDoctor/index.json b/src/module1/pages/setCaseDoctor/index.json index f80c83f..5e549b7 100644 --- a/src/module1/pages/setCaseDoctor/index.json +++ b/src/module1/pages/setCaseDoctor/index.json @@ -6,6 +6,7 @@ "doctorAvatar": "/components/doctorAvatar/index", "van-cascader": "@vant/weapp/cascader/index", "van-popup": "@vant/weapp/popup/index", - "van-dialog": "@vant/weapp/dialog/index" + "van-dialog": "@vant/weapp/dialog/index", + "pagination": "/components/pagination/index" } } diff --git a/src/module1/pages/setCaseDoctor/index.ts b/src/module1/pages/setCaseDoctor/index.ts index 2eb8558..c21df52 100644 --- a/src/module1/pages/setCaseDoctor/index.ts +++ b/src/module1/pages/setCaseDoctor/index.ts @@ -30,6 +30,11 @@ Page({ specialtyId: "", SpecialtyName: "", + pagination: { + page: 1, + pages: 1, + count: 1, + }, list: [], DoctorId: "", @@ -124,7 +129,7 @@ Page({ }); this.handleSearch(); }, - getList() { + getList(newPage = 1) { const { search, hospitalId, provinceId, cityId, countyId, specialtyId } = this.data; wx.ajax({ method: "GET", @@ -136,13 +141,26 @@ Page({ cityId, countyId, specialtyId, + page: newPage, }, }).then((res) => { + const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]; this.setData({ - list: res.list, + 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); + } + }, handlePopupDetail(e) { const { index } = e.currentTarget.dataset; const { list, hospitalClassification } = this.data; diff --git a/src/module1/pages/setCaseDoctor/index.wxml b/src/module1/pages/setCaseDoctor/index.wxml index 4e0cc77..dc3ecfe 100644 --- a/src/module1/pages/setCaseDoctor/index.wxml +++ b/src/module1/pages/setCaseDoctor/index.wxml @@ -56,7 +56,9 @@ {{item.hospitalName}} {{item.hospitalClassificationName}}{{item.hospitalLevelName}} - {{item.cityName}}{{item.countyName?'/':''}}{{item.countyName}} + + {{item.cityName}}{{item.countyName?'/':''}}{{item.countyName}} + @@ -67,6 +69,7 @@ + diff --git a/src/pages/cases/index.scss b/src/pages/cases/index.scss index ab663dc..9de3143 100644 --- a/src/pages/cases/index.scss +++ b/src/pages/cases/index.scss @@ -359,6 +359,7 @@ page { } } } + .popup1 { padding: 0 32rpx 80rpx; .title { diff --git a/src/pages/cases/index.ts b/src/pages/cases/index.ts index 3aba7a5..1077b94 100644 --- a/src/pages/cases/index.ts +++ b/src/pages/cases/index.ts @@ -212,7 +212,7 @@ Page({ if (show2) { this.setData({ hospitalId: "", - hospitalName: "", + hospitalName: "全部", }); this.handleSearch(); } diff --git a/src/pages/chatRoomList/index.json b/src/pages/chatRoomList/index.json index 6e7cb42..e3635af 100644 --- a/src/pages/chatRoomList/index.json +++ b/src/pages/chatRoomList/index.json @@ -3,6 +3,9 @@ "navigationBarTitleText": "聊天室", "usingComponents": { "van-icon": "@vant/weapp/icon/index", - "van-popup": "@vant/weapp/popup/index" + "van-popup": "@vant/weapp/popup/index", + "pagination": "/components/pagination/index", + "van-cascader": "@vant/weapp/cascader/index", + "van-dialog": "@vant/weapp/dialog/index" } } diff --git a/src/pages/chatRoomList/index.scss b/src/pages/chatRoomList/index.scss index cea8080..6daf030 100644 --- a/src/pages/chatRoomList/index.scss +++ b/src/pages/chatRoomList/index.scss @@ -4,38 +4,11 @@ page { .page { padding-bottom: 240rpx; .header { + padding: 32rpx 0; background-color: #fff; border-radius: 0 0 32rpx 32rpx; - .navbar { - display: flex; - align-items: center; - justify-content: space-between; - .nav { - padding: 20rpx; - flex: 1; - text-align: center; - font-size: 32rpx; - color: rgba(133, 133, 133, 1); - line-height: 44rpx; - &.active { - position: relative; - color: rgba(0, 180, 197, 1); - &::after { - position: absolute; - bottom: 0; - left: 50%; - transform: translateX(-50%); - width: 48rpx; - height: 8rpx; - border-radius: 8rpx 8rpx 0 0; - content: ''; - background-color: rgba(0, 180, 197, 1); - } - } - } - } .search { - margin: 32rpx 32rpx 0; + margin: 0 32rpx 0; padding: 16rpx 32rpx; display: flex; align-items: center; @@ -56,14 +29,32 @@ page { } } .form { - margin: 32rpx 32rpx 0; + padding: 32rpx 32rpx 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 18rpx 28rpx; + overflow: hidden; + max-height: 400rpx; + transition: all 0.3s; + &.fold { + max-height: 70rpx; + } .row { display: flex; align-items: center; gap: 16rpx; + &.row1 { + padding-left: 20rpx; + grid-area: 2 / 1 / 3 / 3; + background: #f6f6f6; + border-radius: 12rpx 12rpx 12rpx 12rpx; + } + &.row2 { + padding-left: 20rpx; + grid-area: 3 / 1 / 4 / 3; + background: #f6f6f6; + border-radius: 12rpx 12rpx 12rpx 12rpx; + } .label { flex-shrink: 0; font-size: 28rpx; @@ -90,14 +81,28 @@ page { text-overflow: ellipsis; } } + .range { + flex: 1; + display: flex; + align-items: center; + .date { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + .date-content { + flex: 1; + text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + } } - } - .station { - padding: 32rpx; - display: flex; - align-items: center; - justify-content: flex-end; .fold { + padding: 16rpx 20rpx; + text-align: right; font-size: 28rpx; color: rgba(153, 153, 153, 1); } @@ -149,7 +154,7 @@ page { &::before { margin-right: 22rpx; display: inline-block; - content: ''; + content: ""; vertical-align: top; width: 10rpx; height: 40rpx; @@ -171,6 +176,7 @@ page { gap: 28rpx; align-items: flex-start; .photos { + position: relative; padding: 4rpx; display: grid; grid-template-columns: repeat(2, 36rpx); @@ -182,6 +188,15 @@ page { width: 100%; height: 100%; } + .no-read{ + position: absolute; + top: -9rpx; + right: -9rpx; + width: 18rpx; + height: 18rpx; + border-radius: 50%; + background-color: #ED4F39; + } } .inner { .hostipal { @@ -219,6 +234,7 @@ page { padding-left: 24rpx; flex: 1; display: flex; + justify-content: flex-end; flex-wrap: wrap; gap: 12rpx; .tag { @@ -236,55 +252,179 @@ page { } .popup1 { - padding: 48rpx 32rpx; - width: 580rpx; - background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 17%); - border-radius: 16rpx 16rpx 16rpx 16rpx; - border: 2rpx solid #ffffff; + padding: 0 32rpx 80rpx; .title { + padding: 32rpx; font-size: 36rpx; + line-height: 1; color: rgba(20, 21, 21, 1); - line-height: 48rpx; - font-weight: bold; text-align: center; } .scroll { - margin-top: 24rpx; - max-height: 680rpx; + max-height: 50vh; overflow-y: auto; overflow-x: hidden; - .s-title { - margin-top: 24rpx; - font-size: 28rpx; - color: rgba(20, 21, 21, 1); - line-height: 56rpx; - font-weight: bold; + .list { + .list-item { + margin-bottom: 24rpx; + padding: 18rpx; + text-align: center; + font-size: 28rpx; + line-height: 32rpx; + background: #f6f6f6; + border-radius: 16rpx; + border: 2rpx solid #f6f6f6; + &.active { + background: rgba(29, 188, 204, 0.05); + border: 2rpx solid #00b4c5; + color: rgba(29, 188, 204, 1); + } + } } - .s-content { + } + .submit { + width: 686rpx; + height: 88rpx; + font-size: 32rpx; + color: #fff; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); + border-radius: 96rpx 96rpx 96rpx 96rpx; + } +} + +.popup2 { + padding: 0 32rpx 80rpx; + .title { + padding: 32rpx; + font-size: 36rpx; + line-height: 1; + color: rgba(20, 21, 21, 1); + text-align: center; + } + .search { + padding: 16rpx 32rpx; + display: flex; + align-items: center; + border-radius: 122rpx; + background-color: rgba(246, 246, 246, 1); + .icon { + margin-right: 14rpx; + width: 32rpx; + height: 32rpx; + } + .input { + flex: 1; font-size: 28rpx; - color: rgba(133, 133, 133, 1); - line-height: 48rpx; + color: #000; + } + .place-input { + color: rgba(205, 205, 205, 1); } } - .tip { + .scroll { margin-top: 24rpx; - padding: 16rpx; - border-radius: 10rpx; - text-align: center; - font-size: 24rpx; - color: rgba(255, 125, 0, 1); - line-height: 40rpx; - background-color: rgba(255, 247, 232, 1); + max-height: 50vh; + overflow-y: auto; + overflow-x: hidden; + .list { + .list-item { + margin-bottom: 24rpx; + padding: 32rpx; + border-radius: 16rpx; + border: 2rpx solid rgba(246, 246, 246, 1); + background-color: rgba(246, 246, 246, 1); + .hostipal { + font-size: 32rpx; + color: rgba(20, 21, 21, 1); + line-height: 44rpx; + .tag { + vertical-align: 4rpx; + display: inline-block; + padding: 0 8rpx; + font-size: 24rpx; + line-height: 32rpx; + color: #fff; + border-radius: 4rpx; + background-color: rgba(0, 180, 197, 1); + } + } + .site { + margin-top: 16rpx; + font-size: 28rpx; + color: rgba(133, 133, 133, 1); + } + &.active { + background: rgba(29, 188, 204, 0.05); + border: 2rpx solid #00b4c5; + color: rgba(29, 188, 204, 1); + } + } + } } - .btn { - margin-top: 24rpx; - height: 72rpx; +} + +.popup3 { + padding: 32rpx 30rpx 84rpx; + .title { + display: flex; + justify-content: center; + font-size: 36rpx; + color: rgba(40, 48, 49, 1); + font-weight: bold; + } + .textarea { + padding: 30rpx; + margin-top: 32rpx; + width: 100%; + height: 216rpx; + box-sizing: border-box; + background: #f7f8f9; + border-radius: 24rpx 24rpx 24rpx 24rpx; + border: 2rpx solid #f8f9f9; + font-size: 32rx; + } + .sub-title { + padding: 32rpx 0 16rpx; font-size: 32rpx; - color: rgba(255, 255, 255, 1); + color: #141515; + } + .tags { + display: flex; + flex-wrap: wrap; + gap: 20rpx; + .tag { + padding: 6rpx 44rpx; + font-size: 32rpx; + color: rgba(133, 133, 133, 1); + line-height: 44rpx; + background-color: #fff; + border: 1px solid #f6f6f6; + border-radius: 8rpx; + background: #f6f6f6; + &.active { + background-color: #fff; + border-color: rgba(1, 180, 197, 1); + color: rgba(1, 180, 197, 1); + } + } + &.tags1 { + .tag { + border-radius: 90rpx; + } + } + } + .submit { + margin-top: 32rpx; + height: 84rpx; display: flex; - align-items: center; justify-content: center; + align-items: center; background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); - border-radius: 60rpx 60rpx 60rpx 60rpx; + font-size: 36rpx; + color: #fff; + border-radius: 64rpx 64rpx 64rpx 64rpx; } } diff --git a/src/pages/chatRoomList/index.ts b/src/pages/chatRoomList/index.ts index c4b0210..d45c44c 100644 --- a/src/pages/chatRoomList/index.ts +++ b/src/pages/chatRoomList/index.ts @@ -2,14 +2,78 @@ const app = getApp(); Page({ data: { - fold: true, + fold: false, + show1: false, + show2: false, + show3: false, + show4: false, + show5: false, + showArea: false, + fieldNames: { text: "label", value: "value", children: "children" }, + + area: [], + caseStatusList: {}, + roomTypeList: {}, + + pagination: { + page: 1, + pages: 1, + count: 1, + }, + list: [], + + hostilatSearch: "", + hostipalList: [], + hospitalClassification: {}, + hospitalLevel: {}, + hostipalPagination: { + page: 1, + pages: 1, + count: 1, + }, + + deptList: [] as any, + labelList: [] as any, + + caseStatusName: "全部", + hospitalName: "全部", + deptName: "全部", + provinceName: "", + cityName: "", + countyName: "", + typeName: "全部", + + search: "", + caseStatus: [] as any, + hospitalId: [] as any, + createRoomTimeBegin: "", + createRoomTimeEnd: "", + createCaseTimeBegin: "", + createCaseTimeEnd: "", + deptId: [] as any, + labelId: [] as any, + provinceId: "", + cityId: "", + countyId: "", + type: "", + readStatus: "", + + userInfo: {}, }, onLoad() { this.getTabBar().setData({ active: 3, }); + }, + onShow() { app.waitLogin().then(() => { + this.getBaseInfo(); + this.getList(); + this.getHospitalsList(); + this.getHostipalDict(); + this.getDoctorDict(); + this.getArea(); app.getUserInfo(this, (userInfo) => { this.getTabBar().setData({ userInfo, @@ -17,9 +81,347 @@ Page({ }); }); }, - handleRoom() { + getBaseInfo() { + wx.ajax({ + method: "GET", + url: "?r=takeda/chat/get-base-info", + data: {}, + }).then((res) => { + this.setData({ + caseStatusList: res.caseStatusList, + roomTypeList: res.roomTypeList, + }); + }); + }, + getArea() { + wx.ajax({ + method: "GET", + url: "/js/area.json", + isJSON: true, + }).then((res) => { + this.setData({ + area: res, + }); + }); + }, + handleNav(e) { + const { nav } = e.currentTarget.dataset; + this.setData({ + nav, + isOpen: nav === "1" ? "1" : "", + isHighQuality: nav === "2" ? "1" : "", + }); + this.handleSearch(); + }, + getList(newPage = 1) { + wx.ajax({ + method: "POST", + url: "?r=takeda/chat/get-list", + data: { + page: newPage, + search: this.data.search, + caseStatus: this.data.caseStatus, + createRoomTimeBegin: this.data.createRoomTimeBegin, + createRoomTimeEnd: this.data.createRoomTimeEnd, + createCaseTimeBegin: this.data.createCaseTimeBegin, + createCaseTimeEnd: this.data.createCaseTimeEnd, + deptId: this.data.deptId, + labelId: this.data.labelId, + type: this.data.type, + provinceId: this.data.provinceId, + cityId: this.data.cityId, + countyId: this.data.countyId, + hospitalId: this.data.hospitalId, + readStatus: this.data.readStatus, + }, + }).then((res) => { + res.list.forEach((item) => { + item.roomDoctors = item.roomDoctors.slice(0, 4); + }); + const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]; + this.setData({ + 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); + } + }, + handleSearch() { + this.getList(); + }, + handleCaseShow() { + this.setData({ + show1: true, + }); + }, + handleCase(e) { + const { value } = e.currentTarget.dataset; + const { caseStatus, caseStatusList } = this.data; + if (!value) { + this.setData({ + caseStatus: [], + caseStatusName: "全部", + }); + return; + } + if (caseStatus.includes(value)) { + this.setData({ + caseStatus: caseStatus.filter((item) => item !== value), + caseStatusName: caseStatus + .filter((item) => item !== value) + .map((item) => caseStatusList[item]) + .join(","), + }); + } else { + this.setData({ + caseStatus: [...caseStatus, value], + caseStatusName: [...caseStatus, value].map((item) => caseStatusList[item]).join(","), + }); + } + }, + handleCaseSubmit() { + this.setData({ + show1: false, + }); + this.handleSearch(); + }, + handleTypeShow() { + this.setData({ + show5: true, + }); + }, + handleType(e) { + const { value } = e.currentTarget.dataset; + const { type, roomTypeList } = this.data; + if (!value) { + this.setData({ + type: "", + typeName: "全部", + }); + return; + } + if (value === type) { + this.setData({ + type: "", + typeName: "全部", + }); + } else { + this.setData({ + type: value, + typeName: roomTypeList[value], + }); + } + }, + handleTypeSubmit() { + this.setData({ + show5: false, + }); + this.handleSearch(); + }, + onClose() { + const { show2, showArea } = this.data; + this.setData({ + show1: false, + show2: false, + show3: false, + show4: false, + show5: false, + showArea: false, + }); + if (show2) { + this.setData({ + hospitalId: "", + hospitalName: "全部", + }); + this.handleSearch(); + } + if (showArea) { + this.setData({ + provinceId: "", + cityId: "", + countyId: "", + provinceName: "", + cityName: "", + countyName: "", + }); + this.handleSearch(); + } + }, + handleDetail(e) { + const { params } = e.currentTarget.dataset; wx.navigateTo({ - url: "/module1/pages/chatRoom/index", + url: `/module1/pages/casesDetail/index?id=${params.caseId}`, + }); + }, + + // 医院选择弹窗 + handleHostipalShow() { + this.setData({ + show2: true, + }); + }, + getHostipalDict() { + wx.ajax({ + method: "GET", + url: "?r=takeda/reg/hospital-dict", + data: {}, + }).then((res) => { + this.setData({ + hospitalClassification: res.hospitalClassification, + hospitalLevel: res.hospitalLevel, + }); + }); + }, + handleSearchHostipal() { + this.getHospitalsList(); + }, + getHospitalsList(newPage = 1) { + wx.ajax({ + method: "GET", + url: "?r=takeda/reg/hospitals", + data: { + page: newPage, + Search: this.data.hostilatSearch, + }, + }).then((res) => { + const hostipalList = res.page === 1 ? res.list : [...this.data.hostipalList, ...res.list]; + this.setData({ + hostipalList, + hostipalPagination: { + page: res.page, + pages: res.pages, + count: res.count, + }, + }); + }); + }, + handleHostipalBottom(e) { + const hostipalPagination = this.data.hostipalPagination; + if (e.detail.direction === "botttom" && hostipalPagination.page < hostipalPagination.pages) { + this.getHospitalsList(Number(hostipalPagination.page) + 1); + } + }, + handleHostipal(e) { + const { params } = e.currentTarget.dataset; + this.setData({ + show2: false, + hospitalId: this.data.hospitalId.includes(params.HospitalId) ? [] : [params.HospitalId], + hospitalName: this.data.hospitalId.includes(params.HospitalId) ? "全部" : params.Name, + }); + this.handleSearch(); + }, + + getDoctorDict() { + wx.ajax({ + method: "GET", + url: "?r=takeda/reg/doctor-dict", + data: {}, + }).then((res) => { + this.setData({ + deptList: res.DoctorSpecialtyLabel, + }); + }); + }, + handleTagShow() { + this.setData({ + show3: true, + }); + }, + handleDept(e) { + const { params } = e.currentTarget.dataset; + const deptId = this.data.deptId; + const newDeptId: any = deptId.includes(params.value) + ? deptId.filter((item) => item !== params.value) + : [...deptId, params.value]; + const newDeptName = this.data.deptList + .filter((item) => newDeptId.includes(item.value)) + .map((item) => item.label) + .join(","); + const labelList = this.data.deptList + .filter((item) => newDeptId.includes(item.value)) + .reduce((pre, cur) => { + return [...pre, ...cur.options]; + }, []); + this.setData({ + deptId: newDeptId, + deptName: newDeptName || "全部", + labelList, + labelId: [], + }); + }, + handleLabel(e) { + const { params } = e.currentTarget.dataset; + const labelId = this.data.labelId; + const newLabelId = labelId.includes(params.value) + ? labelId.filter((item) => item !== params.value) + : [...labelId, params.value]; + this.setData({ + labelId: newLabelId, + }); + }, + handleTagSubmit() { + this.setData({ + show3: false, + }); + this.handleSearch(); + }, + handleRead(e) { + const { value } = e.currentTarget.dataset; + this.setData({ + readStatus: value, + }); + this.handleSearch(); + }, + handleArea() { + this.setData({ + showArea: true, + }); + }, + onFinish(e: any) { + this.setData({ + provinceId: e.detail.selectedOptions[0].value, + provinceName: e.detail.selectedOptions[0].label, + cityId: e.detail.selectedOptions[1].value, + cityName: e.detail.selectedOptions[1].label, + countyId: e.detail.selectedOptions[2].value, + countyName: e.detail.selectedOptions[2].label, + showArea: false, + }); + this.handleSearch(); + }, + + handleFold() { + this.setData({ + fold: !this.data.fold, + }); + }, + + handleCatch() { + return false; + }, + + handleRoom(e) { + const { params } = e.currentTarget.dataset; + wx.navigateTo({ + url: `/module1/pages/chatRoom/index?id=${params.roomId}`, + }); + }, + handleReadAll() { + wx.ajax({ + method: "POST", + url: "?r=takeda/chat/read-history", + data: {}, + }).then(() => { + this.handleSearch(); }); }, }); diff --git a/src/pages/chatRoomList/index.wxml b/src/pages/chatRoomList/index.wxml index 8f1d8f8..160c0e4 100644 --- a/src/pages/chatRoomList/index.wxml +++ b/src/pages/chatRoomList/index.wxml @@ -1,133 +1,290 @@ + - + - + 状态 - - 全全部全部全部全部全部全部全部全部全部全部部 + + {{caseStatusName}} + + 展开 + + 医院 - - 全全部全部全部全部全部全部全部全部全部全部部 + + {{hospitalName}} - - 创建 - + + 创建病例 + - 全全部全部全部全部全部全部全部全部全部全部部 + + + {{createRoomTimeBegin || '开始'}} + + - + + {{createRoomTimeEnd || '结束'}} + + - + - - 更新 - + + 创建聊天室 + - 全全部全部全部全部全部全部全部全部全部全部部 + + + {{createCaseTimeBegin || '开始'}} + + - + + {{createCaseTimeEnd || '结束'}} + + - + 标签 - - 全全部全部全部全部全部全部全部全部全部全部部 + + {{deptName}} + + + + + 类型 + + {{typeName}} 地区 - - - 全全部全部全部全部全部全部全部全部全部全部部 - - - + + {{cityName + countyName || '地区'}} + + - - - + 收起 - + - 全部 - 未读 - 已读 + 全部 + 未读 + 已读 - 全部标为已读 + 全部标为已读 - + - ID:2024020913049204001 - 10:34 + ID:{{item.caseNo}} + {{item.createTime}} - - - - + + - 广东省人民医院 - 广州市/番禺区 + {{item.hospitalName}} + + {{item.cityName}}{{item.countyName?'/':''}}{{item.countyName}} + - 好的,那我们就按照这种方式来进医院 + {{item.msgContent}} - 杨梦 副主任医师 + {{item.doctorName}} {{item.doctorTitleName || item.doctorOtherTitle}} - 心律失常 - 心律失常 - 心律失常 + {{item.labelName}} - + - 用户须知 + 状态 - - 为了确保患者隐私得到充分保护,我们要求所有使用本小程序的医疗保健专业人士(HCP)遵守以下协议。 + + 全部 + + {{item}} + - 一、用户同意 - - 在使用本小程序上传患者档案之前,您必须同意以下条款:隐私保护:我确认我已经阅读并理解了本小程序的隐私政策,并将严格遵守所有相关的隐私保护规定。 - 信息处理:我保证在上传任何患者档案信息之前,已经彻底去除了所有患者的敏感隐私信息,包括但不限于姓名、地址、身份证号、电话 + + 保存 + + + + + + 类型 + + + 全部 + + {{item}} + + + + 保存 + + + + + + 选择医院 + + + + + + + + + {{item.Name}} + + {{hospitalClassification[item.HospitalClassification]}}{{hospitalLevel[item.HospitalLevel]}} + + + + {{item.ProvinceName === item.CityName ? '' : item.ProvinceName}} + {{item.CityName}}{{item.CountyName}}{{item.Address}} + + + + + + + + + + + 选择标签 + 所属科室 + + + {{item.label}} + + + 标签 + + + {{item.label}} - 聊天室自动将此病历讨论医生拉入讨论 - 确定 + 保存 + + + + diff --git a/typings/index.d.ts b/typings/index.d.ts index aceb8c6..0573cbf 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -25,7 +25,7 @@ interface IAgaxParams extends WechatMiniprogram.RequestOption { declare namespace WechatMiniprogram { export interface Wx { ajax: (arg0: IAgaxParams) => Promise; - editImage: any; + WebIM; } }