diff --git a/pages.json b/pages.json
index afd7c54..c66f920 100644
--- a/pages.json
+++ b/pages.json
@@ -468,6 +468,13 @@
"navigationBarTitleText": "在线问诊",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "transfer/transfer-message",
+ "style": {
+ "navigationBarTitleText": "转诊消息",
+ "enablePullDownRefresh": true
+ }
}
]
}
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 2f80f77..a93946e 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -85,6 +85,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 转诊消息
+ {{ transfer.time }}
+
+
+ 您有{{ transfer.num }}条转诊消息待处理
+
+
+ 暂无转诊消息
+
+
+
+
@@ -157,6 +183,7 @@ import {
} from '../../request/api/api'
import {getSystemNoticeIndexApi} from '../../request/api/systemNotice'
import {getChatFriendsListApi} from "@/request/api/im";
+import {getTransferPrescriptionListApi} from "@/request/api/transferPrescription";
import {checkDev} from "@/utils/utils";
import MessageNotification from "@/components/MessageNotification/MessageNotification.vue";
@@ -169,6 +196,10 @@ export default {
order: [],
system: [],
doctor: [],
+ transfer: {
+ num: 0,
+ time: ''
+ },
imChat: [],
onlineConsultationList: [], // 在线咨询列表 (type=1)
onlineReconsultationList: [], // 在线复诊列表 (type=3)
@@ -258,6 +289,12 @@ export default {
// console.log(res, 'res');
})
},
+ // 转诊消息
+ goTransfer() {
+ uni.navigateTo({
+ url: '/subPackages/transfer/transfer-message'
+ })
+ },
goChat(item, index) {
uni.navigateTo({
url: `/subPackages/chat/chat?room_id=${item.room_id}&nick_name=${item.nick_name}&user_id=${item.id}&avatar=${encodeURIComponent(item.avatar || '')}&room_status=${item.room_status || 0}`
@@ -292,10 +329,33 @@ export default {
const allChatList = res.data.result || []
// 根据type字段区分在线咨询和在线复诊
this.onlineConsultationList = allChatList.filter(item => item.type === 1 || !item.type) // type=1或未设置type的为在线咨询
- this.onlineReconsultationList = allChatList.filter(item => item.type === 3) // type=3的为在线复诊
+ this.onlineReconsultationList = allChatList.filter(item => (item.type === 3 || item.type === 2)) // type=3的为在线复诊
// 保持imChat兼容性(包含所有)
this.imChat = allChatList
})
+ },
+ // 获取转诊消息列表
+ getTransferList() {
+ getTransferPrescriptionListApi().then((res) => {
+ if (res.data && res.data.code == 0) {
+ const transferList = res.data.result || []
+ // 统计待确认的转诊消息数量
+ const pendingCount = transferList.filter(item => item.status === 0).length
+ this.transfer.num = pendingCount
+
+ // 获取最新的转诊时间
+ if (transferList.length > 0) {
+ const latestTransfer = transferList[0]
+ if (latestTransfer.transfer_time) {
+ this.transfer.time = latestTransfer.transfer_time
+ } else if (latestTransfer.created_at) {
+ this.transfer.time = latestTransfer.created_at
+ }
+ }
+ }
+ }).catch((error) => {
+ console.error('获取转诊消息列表失败:', error)
+ })
}
},
mounted() {
@@ -305,10 +365,15 @@ export default {
this.order = []
this.system = []
this.doctor = []
+ this.transfer = {
+ num: 0,
+ time: ''
+ }
this.onlineConsultationList = []
this.onlineReconsultationList = []
this.getInfo()
this.getMyChatFriendsList()
+ this.getTransferList()
}
}
diff --git a/request/api/request.js b/request/api/request.js
index 4741047..d58f6ba 100644
--- a/request/api/request.js
+++ b/request/api/request.js
@@ -153,7 +153,8 @@ function request(url, params, method = 0) {
if (url.split('/').indexOf('xkApi') !== -1) {
baseURL = envUrls.xkApi;
// 如果是guest模式且是xkApi请求,添加/guest/前缀(但避免重复添加)
- if (isGuestRequest && url.indexOf('/guest/') === -1) {
+ // 转诊相关接口需要登录,不转换为guest路由
+ if (isGuestRequest && url.indexOf('/guest/') === -1 && url.indexOf('/transfer-prescription') === -1) {
url = url.replace('/xkApi', '/guest/xkApi');
}
}
diff --git a/request/api/transferPrescription.js b/request/api/transferPrescription.js
new file mode 100644
index 0000000..13cc7e4
--- /dev/null
+++ b/request/api/transferPrescription.js
@@ -0,0 +1,36 @@
+import {post, get} from './http'
+
+/**
+ * 获取转诊消息列表
+ * @returns {Promise<*>}
+ */
+export async function getTransferPrescriptionListApi() {
+ return await post('/transfer-prescription/list', {}, 3)
+}
+
+/**
+ * 获取转诊详情
+ * @param params { id: number }
+ * @returns {Promise<*>}
+ */
+export async function getTransferPrescriptionDetailApi(params) {
+ return await get('/transfer-prescription/detail', params, 3)
+}
+
+/**
+ * 同意转诊
+ * @param params { id: number }
+ * @returns {Promise<*>}
+ */
+export async function agreeTransferPrescriptionApi(params) {
+ return await post('/transfer-prescription/agree', params, 3)
+}
+
+/**
+ * 拒绝转诊
+ * @param params { id: number, reason?: string }
+ * @returns {Promise<*>}
+ */
+export async function rejectTransferPrescriptionApi(params) {
+ return await post('/transfer-prescription/reject', params, 3)
+}
diff --git a/subPackages/chat/components/MessageBubble.vue b/subPackages/chat/components/MessageBubble.vue
index 7d35ac0..74e9aaf 100644
--- a/subPackages/chat/components/MessageBubble.vue
+++ b/subPackages/chat/components/MessageBubble.vue
@@ -202,6 +202,15 @@
+
+
+
+
+
不支持的消息类型
@@ -217,8 +226,17 @@
diff --git a/subPackages/chat/components/TransferMessageBubble.vue b/subPackages/chat/components/TransferMessageBubble.vue
new file mode 100644
index 0000000..0ea2140
--- /dev/null
+++ b/subPackages/chat/components/TransferMessageBubble.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+ 转诊诊所:
+ {{ messageData.transfer_store.name || '未知诊所' }}
+
+
+
+ 委托诊所:
+ {{ messageData.delegate_store.name || '未知诊所' }}
+
+
+
+ 处方编号:
+ {{ messageData.prescription_no }}
+
+
+
+ 转诊原因:
+ {{ messageData.transfer_reason }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/subPackages/my/components/TransferPrescriptionCard.vue b/subPackages/my/components/TransferPrescriptionCard.vue
new file mode 100644
index 0000000..6eb46a4
--- /dev/null
+++ b/subPackages/my/components/TransferPrescriptionCard.vue
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+ 转诊诊所
+ {{ transferData.transfer_store.name || '未知诊所' }}
+
+
+
+
+
+
+
+
+ 委托诊所
+ {{ transferData.delegate_store.name || '未知诊所' }}
+
+
+
+
+
+
+
+
+ 处方编号
+ {{ transferData.prescription_no }}
+
+
+
+
+
+
+
+
+ 转诊时间
+ {{ transferData.transfer_time }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/subPackages/my/myappiont.vue b/subPackages/my/myappiont.vue
index 2e62d5f..57f1ffc 100644
--- a/subPackages/my/myappiont.vue
+++ b/subPackages/my/myappiont.vue
@@ -62,6 +62,15 @@
{{item.store}}
+
+
+
+
查看详情
@@ -78,7 +87,15 @@
import {
getRegisterListApi
} from '../../request/api/register'
+ import {
+ agreeTransferPrescriptionApi,
+ rejectTransferPrescriptionApi
+ } from '../../request/api/transferPrescription'
+ import TransferPrescriptionCard from './components/TransferPrescriptionCard.vue'
export default {
+ components: {
+ TransferPrescriptionCard
+ },
data() {
return {
status: 'nomore',
@@ -112,6 +129,74 @@
url: "/subPackages/register/register-info?id=" + id + '&type=' + 1
})
},
+ // 同意转诊
+ handleTransferAgree(transferData) {
+ uni.showModal({
+ title: '确认转诊',
+ content: '确定同意转诊吗?',
+ success: (res) => {
+ if (res.confirm) {
+ agreeTransferPrescriptionApi({ id: transferData.id }).then((result) => {
+ if (result.data.code == 0) {
+ uni.showToast({
+ title: '同意转诊成功',
+ icon: 'success'
+ })
+ // 刷新列表
+ this.page = 1
+ this.infoList = []
+ this.getInfos()
+ } else {
+ uni.showToast({
+ title: result.data.message || '操作失败',
+ icon: 'none'
+ })
+ }
+ }).catch((error) => {
+ console.error('同意转诊失败:', error)
+ uni.showToast({
+ title: '操作失败,请重试',
+ icon: 'none'
+ })
+ })
+ }
+ }
+ })
+ },
+ // 拒绝转诊
+ handleTransferReject(transferData) {
+ uni.showModal({
+ title: '拒绝转诊',
+ content: '确定拒绝转诊吗?',
+ success: (res) => {
+ if (res.confirm) {
+ rejectTransferPrescriptionApi({ id: transferData.id }).then((result) => {
+ if (result.data.code == 0) {
+ uni.showToast({
+ title: '已拒绝转诊',
+ icon: 'success'
+ })
+ // 刷新列表
+ this.page = 1
+ this.infoList = []
+ this.getInfos()
+ } else {
+ uni.showToast({
+ title: result.data.message || '操作失败',
+ icon: 'none'
+ })
+ }
+ }).catch((error) => {
+ console.error('拒绝转诊失败:', error)
+ uni.showToast({
+ title: '操作失败,请重试',
+ icon: 'none'
+ })
+ })
+ }
+ }
+ })
+ },
// 就诊人列表
getInfolist() {
userList({
diff --git a/subPackages/transfer/transfer-message.vue b/subPackages/transfer/transfer-message.vue
new file mode 100644
index 0000000..777974a
--- /dev/null
+++ b/subPackages/transfer/transfer-message.vue
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+ 暂无转诊消息~
+
+
+
+
+
+
+
+
+
+
+
+
+ 转诊诊所:
+ {{ item.transfer_store.name || '未知诊所' }}
+
+
+
+ 委托诊所:
+ {{ item.delegate_store.name || '未知诊所' }}
+
+
+
+ 处方编号:
+ {{ item.prescription_no }}
+
+
+
+ 转诊时间:
+
+ {{ item.transferTimeStr }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file