|
@@ -244,6 +244,7 @@ import { computed, ref, reactive } from 'vue'
|
|
|
import dayjs from 'dayjs'
|
|
import dayjs from 'dayjs'
|
|
|
import {
|
|
import {
|
|
|
entertainmentCreate, entertainmentGetById, entertainmentUpdate,
|
|
entertainmentCreate, entertainmentGetById, entertainmentUpdate,
|
|
|
|
|
+ fallDownPage, wanderAwayPage, ngasrPage,
|
|
|
} from "@/api/social-work";
|
|
} from "@/api/social-work";
|
|
|
|
|
|
|
|
const message = useMessage()
|
|
const message = useMessage()
|
|
@@ -265,13 +266,112 @@ let dataForm = ref({
|
|
|
tenantId: undefined
|
|
tenantId: undefined
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
-const elderUp = (e: any) => {
|
|
|
|
|
|
|
+const elderUp = async (e: any) => {
|
|
|
console.log(e)
|
|
console.log(e)
|
|
|
dataForm.value.elderName = e.elderName
|
|
dataForm.value.elderName = e.elderName
|
|
|
dataForm.value.elderId = e.id
|
|
dataForm.value.elderId = e.id
|
|
|
dataForm.value.elderSex = e.elderSex === 1 ? '男' : '女'
|
|
dataForm.value.elderSex = e.elderSex === 1 ? '男' : '女'
|
|
|
dataForm.value.bedName = e.bedName || ''
|
|
dataForm.value.bedName = e.bedName || ''
|
|
|
dataForm.value.elderAge = e.elderAge
|
|
dataForm.value.elderAge = e.elderAge
|
|
|
|
|
+
|
|
|
|
|
+ // 新增模式下,自动查询长者的跌倒/走失/他伤自伤风险评估,并自动选中对应值
|
|
|
|
|
+ if (!isDetail.value && e.id) {
|
|
|
|
|
+ await loadElderRiskData(e.id)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 从最新一条评估记录中解析 riskLevel
|
|
|
|
|
+const parseRiskLevel = (record: any): string => {
|
|
|
|
|
+ if (!record) return ''
|
|
|
|
|
+ // 优先取顶层 riskLevel
|
|
|
|
|
+ if (record.riskLevel) return record.riskLevel
|
|
|
|
|
+ // 其次尝试从 assessData 中解析
|
|
|
|
|
+ if (record.assessData) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const assessData = JSON.parse(record.assessData)
|
|
|
|
|
+ if (assessData.riskLevel) return assessData.riskLevel
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ // ignore
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return ''
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 根据评估日期或创建时间获取最新一条记录
|
|
|
|
|
+const getLatestRecord = (list: any[]): any => {
|
|
|
|
|
+ if (!list || list.length === 0) return null
|
|
|
|
|
+ const sorted = [...list].sort((a, b) => {
|
|
|
|
|
+ const dateA = a.assessDate || a.createdAt || ''
|
|
|
|
|
+ const dateB = b.assessDate || b.createdAt || ''
|
|
|
|
|
+ return new Date(dateB).getTime() - new Date(dateA).getTime()
|
|
|
|
|
+ })
|
|
|
|
|
+ return sorted[0]
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 加载长者风险数据:跌倒风险、走失风险、他伤自伤风险
|
|
|
|
|
+const loadElderRiskData = async (elderId: string) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const params = { pageNo: 1, pageSize: 100, elderId: elderId }
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 查询跌倒风险评估
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await fallDownPage(params)
|
|
|
|
|
+ if (res && res.list && res.list.length > 0) {
|
|
|
|
|
+ const latest = getLatestRecord(res.list)
|
|
|
|
|
+ const riskLevel = parseRiskLevel(latest)
|
|
|
|
|
+ if (riskLevel === 'high') {
|
|
|
|
|
+ form.assessment.scores[1] = 8
|
|
|
|
|
+ } else if (riskLevel === 'medium') {
|
|
|
|
|
+ form.assessment.scores[1] = 3
|
|
|
|
|
+ } else {
|
|
|
|
|
+ form.assessment.scores[1] = 0
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ console.error('获取跌倒风险评估失败', err)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 查询走失风险评估
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await wanderAwayPage(params)
|
|
|
|
|
+ if (res && res.list && res.list.length > 0) {
|
|
|
|
|
+ const latest = getLatestRecord(res.list)
|
|
|
|
|
+ const riskLevel = parseRiskLevel(latest)
|
|
|
|
|
+ if (riskLevel === 'high') {
|
|
|
|
|
+ form.assessment.scores[2] = 8
|
|
|
|
|
+ } else if (riskLevel === 'medium') {
|
|
|
|
|
+ form.assessment.scores[2] = 3
|
|
|
|
|
+ } else {
|
|
|
|
|
+ form.assessment.scores[2] = 0
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ console.error('获取走失风险评估失败', err)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 查询他伤自伤风险评估(NGASR)
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await ngasrPage(params)
|
|
|
|
|
+ if (res && res.list && res.list.length > 0) {
|
|
|
|
|
+ const latest = getLatestRecord(res.list)
|
|
|
|
|
+ const riskLevel = parseRiskLevel(latest)
|
|
|
|
|
+ if (riskLevel === 'high') {
|
|
|
|
|
+ form.assessment.scores[4] = 5
|
|
|
|
|
+ } else if (riskLevel === 'medium') {
|
|
|
|
|
+ form.assessment.scores[4] = 1
|
|
|
|
|
+ } else {
|
|
|
|
|
+ form.assessment.scores[4] = 0
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ console.error('获取他伤自伤风险评估失败', err)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 重新计算总分和风险等级
|
|
|
|
|
+ calculateTotal()
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.error('获取风险数据失败', e)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 表单数据
|
|
// 表单数据
|