fix: 2024年9月29日, 16点39分

This commit is contained in:
republicline 2024-09-29 16:39:16 +08:00
parent 3dd3a99f6c
commit 22820d1035
18 changed files with 80 additions and 91 deletions

View File

@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="no-referrer"/> <meta name="referrer" content="no-referrer"/>
<link rel="icon" type="image/x-icon" href="./public/favicon.ico">
<title>瑞鞍星医疗科技</title> <title>瑞鞍星医疗科技</title>
</head> </head>
<body> <body>

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -58,10 +58,10 @@ export const constantRoute = [
] ]
}, },
{ {
path: '/remote-manage/remote-manage', path: '/remote-manage',
name: '远程管理', name: '远程管理AA',
component: () => import('@/views/remote-manage/index.vue'), component: () => import('@/views/remote-manage/index.vue'),
// redirect: '/remote-manage/remote-manage', redirect: '/remote-manage/remote-manage',
children: [ children: [
{ {
path: '/remote-manage/remote-manage', path: '/remote-manage/remote-manage',

View File

@ -99,14 +99,15 @@ export const getMenuData = () => {
icon: '', icon: '',
route: '/remote-manage/remote-manage', route: '/remote-manage/remote-manage',
type: '菜单', type: '菜单',
},{
id: '4-2',
menuName: '远程控制',
order: 1,
icon: '',
route: '/patients-manage/surgery-info',
type: '菜单',
} }
// ,{
// id: '4-2',
// menuName: '远程控制',
// order: 1,
// icon: '',
// route: '/patients-manage/surgery-info',
// type: '菜单',
// }
] ]
}) })
menu.push({ menu.push({

View File

@ -329,7 +329,7 @@ export const useRemoteWsStore = defineStore("remoteWs", {
patient.medicineWS.send(JSON.stringify({msgType: "heartbeat"})) patient.medicineWS.send(JSON.stringify({msgType: "heartbeat"}))
} }
// 抛出信息用于vue页面监听msgType: getMedicine // 抛出信息用于vue页面监听msgType: getMedicine
const shouldCallBackList=['pong','unityRequestConnection','unityResponseConnection',"getMedicine"] const shouldCallBackList=['pong','unityRequestConnection','unityResponseConnection',"getMedicine","connectionMsg"]
if (shouldCallBackList.includes(data.msgType)) { if (shouldCallBackList.includes(data.msgType)) {
cb(e) cb(e)
} }

View File

@ -119,10 +119,10 @@ const getData = (date: any) => {
let num = 0 let num = 0
const start = new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth(), 1) const start = new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth(), 1)
const end = new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() + 1, 0) const end = new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() + 1, 0)
medicineApi.getSurgeryCountM(dateFormater("yyyy-MM-dd", start), dateFormater("yyyy-MM-dd", end)).then(res => { medicineApi.getSurgeryCount(dateFormater("yyyy-MM-dd", start), dateFormater("yyyy-MM-dd", end)).then(res => {
if (res.code == 0) { if (res.code == 0) {
res.data.forEach((item: any) => { res.data.forEach((item: any) => {
const time = "" + new Date(item.date).getDate() const time = "" + new Date(item._id).getDate()
xData.push(time.padStart(2, "0")) xData.push(time.padStart(2, "0"))
data.push(item.count) data.push(item.count)
num += Number(item.count) num += Number(item.count)

View File

@ -94,14 +94,14 @@ const getData = (date: any) => {
const start = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth(), 1)) const start = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth(), 1))
const end = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() + 1, 0)) const end = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() + 1, 0))
medicineApi.getSurgeryTypeProportionM(start, end).then(res => { medicineApi.getSurgeryTypeProportion(start, end).then(res => {
if (res.code == 0) { if (res.code == 0) {
res.data.forEach((item: any, i: number) => { res.data.forEach((item: any, i: number) => {
const c = generateRandomColor() const c = generateRandomColor()
color.push(c) color.push(c)
pieData.value.push({ pieData.value.push({
value: item.count, value: item.count,
name: item.surgeryType, name: item._id,
itemStyle: { itemStyle: {
color: c color: c
} }

View File

@ -99,7 +99,7 @@ function initChart(chartData: any) {
color: '#ffffff', color: '#ffffff',
textBorderColor: '#006080', textBorderColor: '#006080',
textBorderWidth: 3, textBorderWidth: 3,
formatter: (params: any) => params.value.toFixed(0) + 'h' + Number((params.value % 1).toFixed(1)) * 60 + 'm' // formatter: (params: any) => params.value.toFixed(0) + 'h' + Number((params.value % 1).toFixed(1)) * 60 + 'm'
}, },
data: chartData.data[0] data: chartData.data[0]
}, },
@ -115,7 +115,7 @@ function initChart(chartData: any) {
color: '#ffffff', color: '#ffffff',
textBorderColor: '#f8b300', textBorderColor: '#f8b300',
textBorderWidth: 3, textBorderWidth: 3,
formatter: (params: any) => params.value.toFixed(0) + 'h' + Number((params.value % 1).toFixed(1)) * 60 + 'm' // formatter: (params: any) => params.value.toFixed(0) + 'h' + Number((params.value % 1).toFixed(1)) * 60 + 'm'
}, },
data: chartData.data[1] data: chartData.data[1]
}], }],
@ -139,10 +139,10 @@ const getData = (date: any) => {
const weekDates = getWeekDates(currentMonth.value) const weekDates = getWeekDates(currentMonth.value)
const start = dateFormater("yyyy-MM-dd", weekDates.start) const start = dateFormater("yyyy-MM-dd", weekDates.start)
const end = dateFormater("yyyy-MM-dd", weekDates.end.setDate(weekDates.end.getDate() + 1)) const end = dateFormater("yyyy-MM-dd", weekDates.end.setDate(weekDates.end.getDate() + 1))
medicineApi.getSurgeryOtherDurationM(start, end).then(res => { medicineApi.getSurgeryOtherDuration(start, end).then(res => {
if (res.code == 0) { if (res.code == 0) {
res.data.forEach((item: any) => { res.data.forEach((item: any) => {
xData.push(new Date(item.date)) xData.push(new Date(item._id))
data[0].push(Number(item.aicount)) data[0].push(Number(item.aicount))
data[1].push(Number(item.doccount)) data[1].push(Number(item.doccount))
}) })

View File

@ -114,14 +114,16 @@ const getData = (date: any) => {
const start = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth(), 1)) const start = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth(), 1))
const end = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() + 1, 0)) const end = dateFormater("yyyy-MM-dd", new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() + 1, 0))
medicineApi.getSurgeryDurationM(start, end).then(res => { medicineApi.getSurgeryDuration(start, end).then(res => {
const xData: any = [] const xData: any = []
const data: any = [] const data: any = []
let num = 0 let num = 0
if (res.code == 0) { if (res.code == 0) {
res.data.forEach((item: any) => { res.data.forEach((item: any) => {
const time = new Date(item.date).getDate() + "" // const time = new Date(item.date).getDate() + ""
xData.push(time.padStart(2, "0")) // xData.push(time.padStart(2, "0"))
const time = item._id
xData.push(time)
data.push(item.duration) data.push(item.duration)
num += Number(item.duration) num += Number(item.duration)
}) })

View File

@ -5,7 +5,7 @@
<LoginChart/> <LoginChart/>
</div> </div>
<div class="search-part" v-show="isSearch"> <div class="search-part" v-show="isSearch">
<div class="search-cell"> <div class="search-cell" style="width: 200px">
<span class="label">类型</span> <span class="label">类型</span>
<el-select v-model="queryParams.type" placeholder="请选择类型"> <el-select v-model="queryParams.type" placeholder="请选择类型">
<el-option v-for="item in Object.keys(logType)" :key="item" :label="logType[item]" :value="item"/> <el-option v-for="item in Object.keys(logType)" :key="item" :label="logType[item]" :value="item"/>

View File

@ -39,6 +39,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column property="hospitalName" label="医院" width="120" align="center"/>
<el-table-column label="锁定" width="120" align="center"> <el-table-column label="锁定" width="120" align="center">
<template #default="scope"> <template #default="scope">
<span><el-switch v-model="scope.row.lockFlag" @click="enableChange(scope.row)"/></span> <span><el-switch v-model="scope.row.lockFlag" @click="enableChange(scope.row)"/></span>

View File

@ -11,11 +11,11 @@ const router = useRouter()
const route = useRoute() const route = useRoute()
onMounted(async () => { onMounted(async () => {
const paths = route.path.split("/") // const paths = route.path.split("/")
const e: any = await useUserStore().getMenuChild("/" + paths[1]) // const e: any = await useUserStore().getMenuChild("/" + paths[1])
if (e && e.length > 0) { // if (e && e.length > 0) {
router.push(e[0].path) // router.push(e[0].path)
} // }
}) })
</script> </script>

View File

@ -290,7 +290,7 @@ onUnmounted(() => {
}) })
watch(subscribeMedicineData,(newValue:any,oldValue:any)=>{ watch(subscribeMedicineData,(newValue:any,oldValue:any)=>{
if (newValue) { if (newValue) {
const {msgType,unityConnectionFlag}=newValue; const {msgType,unityConnectionFlag,msg}=newValue;
switch (msgType) { switch (msgType) {
case 'unityRequestConnection': case 'unityRequestConnection':
const params: any = { const params: any = {
@ -330,6 +330,8 @@ watch(subscribeMedicineData,(newValue:any,oldValue:any)=>{
case 'pong': case 'pong':
timeDiffPing.value=newValue.msg; timeDiffPing.value=newValue.msg;
break; break;
case 'connectionMsg':
ElMessage.info(msg)
default: default:
break; break;
} }
@ -415,29 +417,7 @@ const subscribeVital = () => {
}) })
} }
const connectRemote = () => {
//console.log("");
const ws = new WebSocket(`ws://110.41.142.124:6379/socket.io/admin/rax/addMedicine`)
const openHandle = () => {
whetherControl.value= true;
console.log("ws连接成功啦")
}
const clostHandle = () => {
console.log("ws关闭成功啦")
}
const messageHandle = () => {
console.log("前端接受到的信息啦")
}
const errorHandle = () => {
whetherControl.value= false;
console.log("ws出错啦")
}
ws.addEventListener("open", openHandle)
ws.addEventListener("clost", clostHandle)
ws.addEventListener("message", messageHandle)
ws.addEventListener("error", errorHandle)
}
const subscribeChat = () => { const subscribeChat = () => {
onChatClose() onChatClose()
remoteWsStore.subscribeChat(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, currentRemote.value.index, remoteWsStore.subscribeChat(currentRemote.value.patient, currentRemote.value.patientId, currentRemote.value.date, currentRemote.value.index,

View File

@ -56,7 +56,7 @@ onUnmounted(() => {
}) })
const openRemote = (params: any) => { const openRemote = (params: any) => {
router.push('/remote-manage/remote-manage'); router.push('/remote-manage');
} }
const addLogAfter = (index: number) => { const addLogAfter = (index: number) => {
messageItemPartRef.value[index].scrollToBottom() messageItemPartRef.value[index].scrollToBottom()

View File

@ -56,34 +56,34 @@
<el-divider border-style="dashed"/> <el-divider border-style="dashed"/>
<div v-if="props.type != 'add'"> <!-- <div v-if="props.type != 'add'">-->
<h3 class="main-color f20" style="margin: 10px 0 20px 0;">高级管理员</h3> <!-- <h3 class="main-color f20" style="margin: 10px 0 20px 0;">高级管理员</h3>-->
<el-row> <!-- <el-row>-->
<el-col :span="12"> <!-- <el-col :span="12">-->
<el-form-item label="用户" prop="manager.id"> <!-- <el-form-item label="用户" prop="">-->
<el-select v-model="manager.id" filterable placeholder="请输入选择姓名" <!-- <el-select v-model="manager.id" filterable placeholder="请输入选择姓名"-->
remote :remote-method="remoteSearchName"> <!-- remote :remote-method="remoteSearchName">-->
<el-option v-for="(item, index) in userOption" :key="'name-' + item.id" <!-- <el-option v-for="(item, index) in userOption" :key="'name-' + item.id"-->
:label="item.name" :value="item.id" @click="selectNameChange(item)"/> <!-- :label="item.name" :value="item.id" @click="selectNameChange(item)"/>-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
<el-col :span="12"> <!-- <el-col :span="12">-->
<el-form-item label="电话" prop="manager.phone"> <!-- <el-form-item label="电话" prop="manager.phone">-->
<el-input v-model="manager.phone" disabled></el-input> <!-- <el-input v-model="manager.phone" disabled></el-input>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
</el-row> <!-- </el-row>-->
<el-row> <!-- <el-row>-->
<!-- <el-col :span="12"> <!-- &lt;!&ndash; <el-col :span="12">-->
<el-form-item label="姓名" prop="manager.name"> <!-- <el-form-item label="姓名" prop="manager.name">-->
<el-input v-model="manager.name" disabled></el-input> <!-- <el-input v-model="manager.name" disabled></el-input>-->
</el-form-item> <!-- </el-form-item>-->
</el-col>--> <!-- </el-col>&ndash;&gt;-->
<el-col :span="12"> <!-- <el-col :span="12">-->
</el-col> <!-- </el-col>-->
</el-row> <!-- </el-row>-->
</div> <!-- </div>-->
<div style="position: absolute;bottom: 50px;right: 50px;" v-if="type != 'view'"> <div style="position: absolute;bottom: 50px;right: 50px;" v-if="type != 'view'">
<el-button class="f18" @click="close">取消</el-button> <el-button class="f18" @click="close">取消</el-button>
@ -157,7 +157,7 @@ async function resetData(form?: any) {
phone: '', phone: '',
} }
await getUserList(form.id); await getUserList(form.id);
getHospitalAdmin(form.id); // getHospitalAdmin(form.id);
form.selectedOptions = [form.province, form.city] form.selectedOptions = [form.province, form.city]
formData.value = form; formData.value = form;
} else { } else {
@ -206,8 +206,9 @@ const saveData = () => {
form.city = form.selectedOptions[1]; form.city = form.selectedOptions[1];
if (props.type == "edit") { if (props.type == "edit") {
const hosRes: any = await hospitalApi.updateHospital(form) const hosRes: any = await hospitalApi.updateHospital(form)
const manRes: any = await hospitalApi.saveHospitalManager(form.id, manager.value.id) // const manRes: any = await hospitalApi.saveHospitalManager(form.id, manager.value.id)
if ((hosRes.code == 0 && hosRes.data) || (manRes.code == 0 && manRes.data)) { // manRes.code manRes.data
if ((hosRes.code == 0 && hosRes.data)) {
ElMessage.success("更新成功") ElMessage.success("更新成功")
close(); close();
} else { } else {

View File

@ -23,9 +23,9 @@
<el-table-column type="index" label="#" width="55" align="center"/> <el-table-column type="index" label="#" width="55" align="center"/>
<el-table-column property="name" label="医院名称" width="200" align="center"/> <el-table-column property="name" label="医院名称" width="200" align="center"/>
<el-table-column property="code" label="编码" width="60" align="center"/> <el-table-column property="code" label="编码" width="60" align="center"/>
<el-table-column label="高级管理员" width="200" align="center"> <!-- <el-table-column property="doctorName" label="高级管理员" width="200" align="center">-->
<template #default="scope">{{ scope.row.admin?.name }}</template> <!-- <template #default="scope">{{ scope.row.admin?.name }}</template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column property="domain" label="域名" width="200" align="center"/> <el-table-column property="domain" label="域名" width="200" align="center"/>
<el-table-column label="开始时间" width="200" align="center"> <el-table-column label="开始时间" width="200" align="center">
<template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm', scope.row.startTime) }}</template> <template #default="scope">{{ dateFormater('yyyy-MM-dd HH:mm', scope.row.startTime) }}</template>

View File

@ -17,7 +17,6 @@
:row-class-name="({ row }: any) => row.lockFlag == 1 && 'disable'" @row-click="tableRowClick"> :row-class-name="({ row }: any) => row.lockFlag == 1 && 'disable'" @row-click="tableRowClick">
<!--<el-table-column type="selection" width="55"/>--> <!--<el-table-column type="selection" width="55"/>-->
<el-table-column type="index" label="#" width="55" align="center" /> <el-table-column type="index" label="#" width="55" align="center" />
<!--<el-table-column property="hospital" label="医院名称" width="200" align="center"/>-->
<el-table-column property="name" label="姓名" width="120" align="center" /> <el-table-column property="name" label="姓名" width="120" align="center" />
<el-table-column label="手机号" width="220" align="center"> <el-table-column label="手机号" width="220" align="center">
<template #default="scope">{{ <template #default="scope">{{
@ -32,6 +31,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column property="hospitalName" label="医院名称" width="200" align="center"/>
<el-table-column label="锁定" width="120" align="center"> <el-table-column label="锁定" width="120" align="center">
<template #default="scope"> <template #default="scope">
<span @click.stop> <span @click.stop>

View File

@ -24,16 +24,16 @@ export default defineConfig({
proxy: { proxy: {
'/api': { '/api': {
// target: 'http://localhost:9999', // 目标服务器地址 // target: 'http://localhost:9999', // 目标服务器地址
//target: 'http://localhost:6379', // 目标服务器地址 target: 'http://localhost:6379', // 目标服务器地址
target: 'http://110.41.142.124:6379', // 目标服务器地址 // target: 'http://110.41.142.124:6379', // 目标服务器地址
ws: true, // 是否启用 WebSocket ws: true, // 是否启用 WebSocket
changeOrigin: true, // 是否修改请求头中的 Origin 字段 changeOrigin: true, // 是否修改请求头中的 Origin 字段
rewrite: (path) => path.replace(/^\/api/, ''), rewrite: (path) => path.replace(/^\/api/, ''),
}, },
'/socket.io': { '/socket.io': {
// target: 'ws://localhost:9999', // target: 'ws://localhost:9999',
//target: 'ws://localhost:6379', target: 'ws://localhost:6379',
target: 'ws://110.41.142.124:6379', // target: 'ws://110.41.142.124:6379',
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/socket.io/, ''), rewrite: (path) => path.replace(/^\/socket.io/, ''),
@ -41,3 +41,6 @@ export default defineConfig({
} }
} }
}) })