fix: 修复关键BUG - SQL注入+移动端修复

This commit is contained in:
2026-06-19 23:11:13 +08:00
parent 8914dca1df
commit fdf56a33ce
5 changed files with 15 additions and 8 deletions

View File

@@ -42,10 +42,7 @@ const recentTasks = ref([])
const actions = [ const actions = [
{ icon: '📋', label: '任务列表', path: '/mobile/tasks', color: '#1890ff' }, { icon: '📋', label: '任务列表', path: '/mobile/tasks', color: '#1890ff' },
{ icon: '👥', label: '患者列表', path: '/mobile/patients', color: '#52c41a' }, { icon: '👥', label: '患者列表', path: '/mobile/patients', color: '#52c41a' },
{ icon: '💊', label: '药品发放', path: '/mobile/drug', color: '#fa8c16' }, { icon: '📊', label: '生命体征', path: '/mobile/vital-entry', color: '#722ed1' }
{ icon: '📊', label: '生命体征', path: '/mobile/vital-entry', color: '#722ed1' },
{ icon: '📝', label: '护理记录', path: '/mobile/record', color: '#13c2c2' },
{ icon: '💧', label: '入出量', path: '/mobile/inout', color: '#eb2f96' }
] ]
onMounted(async () => { onMounted(async () => {

View File

@@ -53,7 +53,7 @@ onMounted(async () => {
nursingApi.getPatientInfo(id), nursingApi.getOrders(id), nursingApi.getPatientInfo(id), nursingApi.getOrders(id),
nursingApi.getVitalSigns(id), nursingApi.getAssessments(id) nursingApi.getVitalSigns(id), nursingApi.getAssessments(id)
]) ])
patient.value = pRes.data || {}; orders.value = oRes.data || []; latestVitals.value = vRes.data || []; assessments.value = aRes.data || [] patient.value = pRes.data || {}; orders.value = oRes.data?.records || oRes.data || []; latestVitals.value = vRes.data?.records || vRes.data || []; assessments.value = aRes.data?.records || aRes.data || []
} catch (e) { ElMessage.error('加载失败') } } catch (e) { ElMessage.error('加载失败') }
}) })

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="patient-list"> <div class="patient-list">
<div class="search-bar"><input v-model="searchText" placeholder="搜索患者姓名/床号..." class="search-input" @input="filterPatients" /></div> <div class="search-bar"><input v-model="searchText" placeholder="搜索患者姓名/床号..." class="search-input" /></div>
<div v-if="loading" class="loading">加载中...</div> <div v-if="loading" class="loading">加载中...</div>
<div v-for="p in displayPatients" :key="p.id" class="patient-card" @click="$router.push(`/mobile/patient-detail/${p.id}`)"> <div v-for="p in displayPatients" :key="p.id" class="patient-card" @click="$router.push(`/mobile/patient-detail/${p.id}`)">
<div class="patient-avatar" :class="'level-' + p.nursingLevel">{{ p.name?.charAt(0) }}</div> <div class="patient-avatar" :class="'level-' + p.nursingLevel">{{ p.name?.charAt(0) }}</div>

View File

@@ -18,12 +18,22 @@
</template> </template>
<script setup> <script setup>
import { ref, computed } from 'vue' import { ref, computed, onMounted } from 'vue'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { nursingApi } from '../api' import { nursingApi } from '../api'
const route = useRoute() const route = useRoute()
onMounted(async () => {
const patientId = route.params.patientId
if (patientId) {
try {
const res = await nursingApi.getPatientInfo(patientId)
if (res.data) patientName.value = res.data.name || ''
} catch {}
}
})
const submitting = ref(false) const submitting = ref(false)
const patientName = ref('') const patientName = ref('')
const formData = ref({ temperature: '', pulse: '', bloodPressureHigh: '', bloodPressureLow: '', spo2: '', respiration: '', painScore: 0 }) const formData = ref({ temperature: '', pulse: '', bloodPressureHigh: '', bloodPressureLow: '', spo2: '', respiration: '', painScore: 0 })

View File

@@ -10,7 +10,7 @@
WHERE patient_id = #{patientId} WHERE patient_id = #{patientId}
AND delete_flag = '0' AND delete_flag = '0'
<if test="days != null"> <if test="days != null">
AND record_time >= CURRENT_TIMESTAMP - INTERVAL '${days} days' AND record_time >= CURRENT_TIMESTAMP - INTERVAL CONCAT(#{days}, ' days')
</if> </if>
ORDER BY record_time DESC ORDER BY record_time DESC
</select> </select>