儿科后台
This commit is contained in:
parent
a3a5cdda93
commit
158fa5b31c
@ -1,7 +1,7 @@
|
||||
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
||||
NODE_ENV = 'development'
|
||||
VITE_APP_BASE_API = 'https://ddbs.1024tool.vip/'
|
||||
VITE_SERVE = "https://ddbs.1024tool.vip/"
|
||||
VITE_APP_BASE_API = 'http://1.15.53.35:9998/'
|
||||
VITE_SERVE = "http://1.15.53.35:9998/"
|
||||
# VITE_SERVE = "http://192.168.210.29:18100/"
|
||||
VITE_OSS_ACCESS_KEY_ID = "LTAI5tCpvXC17uuPwWvb5oRo"
|
||||
VITE_OSS_ACCESS_KEY_SECRET = "44EqDghVI0UVF0rVaea7gwOsPkXZ1z"
|
||||
@ -3,7 +3,7 @@ import request from '@/utils/request'
|
||||
|
||||
export const getCode = () =>{
|
||||
return request({
|
||||
url: 'admin/policy_token',
|
||||
url: 'admin/form_policy_token',
|
||||
method: 'post',
|
||||
})
|
||||
}
|
||||
|
||||
186
src/assets/js/heightWeight.js
Normal file
186
src/assets/js/heightWeight.js
Normal file
@ -0,0 +1,186 @@
|
||||
export const heightList = {
|
||||
boy: [
|
||||
[47.6, 54.8],
|
||||
[51.3, 59.0],
|
||||
[54.9, 63.0],
|
||||
[58.0, 66.4],
|
||||
[60.5, 69.1],
|
||||
[62.5, 71.3],
|
||||
[64.2, 73.2],
|
||||
[65.7, 74.9],
|
||||
[67.1, 76.4],
|
||||
[68.3, 77.8],
|
||||
[69.5, 79.1],
|
||||
[70.7, 80.4],
|
||||
[71.7, 81.6],
|
||||
[72.8, 82.8],
|
||||
[73.8, 84.0],
|
||||
[74.8, 85.1],
|
||||
[75.8, 86.3],
|
||||
[76.8, 87.4],
|
||||
[77.7, 88.5],
|
||||
[78.6, 89.6],
|
||||
[79.6, 90.6],
|
||||
[80.5, 91.7],
|
||||
[81.4, 92.8],
|
||||
[82.2, 93.7],
|
||||
[82.4, 94.0],
|
||||
[84.8, 96.8],
|
||||
[87.0, 99.4],
|
||||
[89.0, 101.9],
|
||||
[90.9, 104.1],
|
||||
[92.7, 106.2],
|
||||
[94.4, 108.3],
|
||||
[96.0, 110.2],
|
||||
[97.6, 112.2],
|
||||
[99.2, 114.1],
|
||||
[100.8, 116.0],
|
||||
[102.4, 117.9],
|
||||
[104.1, 119.9],
|
||||
[105.7, 121.8],
|
||||
[107.2, 123.7],
|
||||
[108.8, 125.5],
|
||||
[110.3, 127.3],
|
||||
[111.7, 129.1],
|
||||
[113.1, 130.9],
|
||||
[114.5, 132.5]
|
||||
],
|
||||
girl: [
|
||||
[46.8, 53.8],
|
||||
[50.4, 57.8],
|
||||
[53.8, 61.6],
|
||||
[56.7, 64.8],
|
||||
[59.1, 67.4],
|
||||
[61.0, 69.6],
|
||||
[62.7, 71.5],
|
||||
[64.2, 73.5],
|
||||
[65.6, 74.7],
|
||||
[66.8, 76.1],
|
||||
[68.1, 77.5],
|
||||
[69.2, 78.8],
|
||||
[70.4, 80.1],
|
||||
[71.4, 81.4],
|
||||
[72.5, 82.6],
|
||||
[73.4, 83.8],
|
||||
[74.6, 84.9],
|
||||
[75.5, 86.1],
|
||||
[76.5, 87.2],
|
||||
[77.5, 88.3],
|
||||
[78.4, 89.4],
|
||||
[79.3, 90.4],
|
||||
[80.2, 91.5],
|
||||
[81.1, 92.5],
|
||||
[81.2, 92.8],
|
||||
[83.6, 95.5],
|
||||
[85.7, 98.1],
|
||||
[87.7, 100.5],
|
||||
[89.7, 102.7],
|
||||
[91.5, 104.9],
|
||||
[93.2, 106.9],
|
||||
[94.9, 108.9],
|
||||
[96.5, 110.9],
|
||||
[98.1, 112.8],
|
||||
[99.7, 114.7],
|
||||
[101.3, 116.7],
|
||||
[103.0, 118.6],
|
||||
[104.6, 120.6],
|
||||
[106.1, 122.4],
|
||||
[107.6, 124.2],
|
||||
[109.0, 126.0],
|
||||
[110.4, 127.7],
|
||||
[111.8, 129.4],
|
||||
[113.2, 131.0]
|
||||
]
|
||||
}
|
||||
|
||||
export const weightList = {
|
||||
boy: [
|
||||
[2.8, 4.2],
|
||||
[3.7, 5.6],
|
||||
[4.7, 7.1],
|
||||
[5.5, 8.3],
|
||||
[6.1, 9.2],
|
||||
[6.6, 9.8],
|
||||
[6.9, 10.3],
|
||||
[7.2, 10.8],
|
||||
[7.5, 11.1],
|
||||
[7.7, 11.5],
|
||||
[7.9, 11.8],
|
||||
[8.1, 12.0],
|
||||
[8.3, 12.3],
|
||||
[8.4, 12.5],
|
||||
[8.6, 12.8],
|
||||
[8.8, 13.2],
|
||||
[9.0, 13.5],
|
||||
[9.1, 13.8],
|
||||
[9.3, 14.0],
|
||||
[9.5, 14.3],
|
||||
[9.7, 14.6],
|
||||
[9.8, 14.8],
|
||||
[10.3, 15.5],
|
||||
[10.7, 16.2],
|
||||
[11.1, 16.9],
|
||||
[11.5, 17.7],
|
||||
[12.0, 18.4],
|
||||
[12.4, 19.1],
|
||||
[12.8, 19.8],
|
||||
[13.1, 20.5],
|
||||
[13.5, 21.1],
|
||||
[13.9, 21.9],
|
||||
[14.3, 22.6],
|
||||
[14.7, 23.4],
|
||||
[15.1, 24.3],
|
||||
[15.5, 25.1],
|
||||
[15.9, 26.0],
|
||||
[16.3, 26.8],
|
||||
[16.7, 27.6],
|
||||
[17.0, 28.5],
|
||||
[17.4, 29.3]
|
||||
],
|
||||
girl: [
|
||||
[2.7, 4.1],
|
||||
[3.5, 5.3],
|
||||
[4.4, 6.6],
|
||||
[5.1, 7.6],
|
||||
[5.6, 8.4],
|
||||
[6.0, 9.1],
|
||||
[6.4, 9.6],
|
||||
[6.7, 10.0],
|
||||
[6.9, 10.4],
|
||||
[7.2, 10.8],
|
||||
[7.4, 11.1],
|
||||
[7.6, 11.4],
|
||||
[7.7, 11.6],
|
||||
[7.9, 11.9],
|
||||
[8.1, 12.2],
|
||||
[8.3, 12.4],
|
||||
[8.4, 12.7],
|
||||
[8.6, 12.9],
|
||||
[8.8, 13.2],
|
||||
[9.0, 13.5],
|
||||
[9.1, 13.8],
|
||||
[9.3, 14.0],
|
||||
[9.5, 14.3],
|
||||
[9.7, 14.6],
|
||||
[9.8, 14.8],
|
||||
[10.3, 15.5],
|
||||
[10.7, 16.2],
|
||||
[11.1, 16.9],
|
||||
[11.5, 17.7],
|
||||
[12.0, 18.4],
|
||||
[12.4, 19.1],
|
||||
[12.8, 19.8],
|
||||
[13.1, 20.5],
|
||||
[13.5, 21.1],
|
||||
[13.9, 21.9],
|
||||
[14.3, 22.6],
|
||||
[14.7, 23.4],
|
||||
[15.1, 24.3],
|
||||
[15.5, 25.1],
|
||||
[15.9, 26.0],
|
||||
[16.3, 26.8],
|
||||
[16.7, 27.6],
|
||||
[17.0, 28.5],
|
||||
[17.4, 29.3]
|
||||
]
|
||||
}
|
||||
@ -43,7 +43,8 @@ onMounted(() => {
|
||||
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
type: 'value',
|
||||
smooth: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
|
||||
132
src/components/myEcahtsSh copy.vue
Normal file
132
src/components/myEcahtsSh copy.vue
Normal file
@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<div class="my-echats" :id="id"></div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import * as echarts from 'echarts'
|
||||
import { useRoute } from 'vue-router'
|
||||
const route = useRoute()
|
||||
const myEcharts = ref(null)
|
||||
const props = defineProps({
|
||||
id: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
actualHeight: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
normalHeightMin: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
normalHeightMax: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
months: {
|
||||
type: Array,
|
||||
default: () => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
|
||||
},
|
||||
legendData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
var chartDom = document.getElementById(props.id);
|
||||
var myChart = echarts.init(chartDom);
|
||||
var option;
|
||||
|
||||
option = {
|
||||
grid: {
|
||||
left: '50',
|
||||
top: '30',
|
||||
right: '30',
|
||||
bottom: '30'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
formatter: function(params) {
|
||||
let result = params[0].axisValue + '<br/>';
|
||||
params.forEach(param => {
|
||||
result += param.seriesName + ': ' + param.value + ' cm<br/>';
|
||||
});
|
||||
return result;
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
data: props.legendData
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: props.months
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
nameTextStyle: {
|
||||
padding: [0, 0, 0, 40]
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: props.legendData[0],
|
||||
data: props.actualHeight,
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
symbol: 'circle',
|
||||
symbolSize: 8,
|
||||
itemStyle: {
|
||||
color: '#409EFF'
|
||||
}
|
||||
},
|
||||
{
|
||||
name: props.legendData[1],
|
||||
type: 'custom',
|
||||
renderItem: function (params, api) {
|
||||
const points = [];
|
||||
const xPoints = [];
|
||||
const minPoints = [];
|
||||
const maxPoints = [];
|
||||
|
||||
for (let i = 0; i < props.months.length; i++) {
|
||||
const x = api.coord([i, 0])[0];
|
||||
const minY = api.coord([0, props.normalHeightMin[i]])[1];
|
||||
const maxY = api.coord([0, props.normalHeightMax[i]])[1];
|
||||
|
||||
xPoints.push(x);
|
||||
minPoints.push(minY);
|
||||
maxPoints.push(maxY);
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'group',
|
||||
children: [{
|
||||
type: 'polygon',
|
||||
shape: {
|
||||
points: xPoints.map((x, i) => [x, minPoints[i]]).concat(
|
||||
xPoints.slice().reverse().map((x, i) => [x, maxPoints[maxPoints.length - 1 - i]])
|
||||
)
|
||||
},
|
||||
style: {
|
||||
fill: 'rgba(144, 238, 144, 0.3)'
|
||||
}
|
||||
}]
|
||||
};
|
||||
},
|
||||
data: props.months
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
option && myChart.setOption(option);
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.my-echats {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
@ -5,6 +5,8 @@
|
||||
import { ref, onMounted } from 'vue'
|
||||
import * as echarts from 'echarts'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { heightList, weightList } from '@/assets/js/heightWeight';
|
||||
|
||||
const route = useRoute()
|
||||
const myEcharts = ref(null)
|
||||
const props = defineProps({
|
||||
@ -26,19 +28,35 @@ const props = defineProps({
|
||||
},
|
||||
months: {
|
||||
type: Array,
|
||||
default: () => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
|
||||
default: () => ['1岁1个月', '1岁2个月', '1岁3个月', '1岁6个月', '2岁']
|
||||
},
|
||||
legendData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
sex: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
var chartDom = document.getElementById(props.id);
|
||||
var myChart = echarts.init(chartDom);
|
||||
var option;
|
||||
|
||||
let standardList = []
|
||||
if(props.sex == 1){
|
||||
standardList = props.label ? heightList.boy : weightList.boy
|
||||
} else {
|
||||
standardList = props.label ? heightList.girl : weightList.girl
|
||||
}
|
||||
const standardLower = standardList.map(item => item[0]);
|
||||
const standardUpper = standardList.map(item => item[1]);
|
||||
const standardRange = standardUpper.map((up, i) => up - standardLower[i]);
|
||||
option = {
|
||||
grid: {
|
||||
left: '50',
|
||||
@ -61,13 +79,15 @@ onMounted(() => {
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: props.months
|
||||
data: props.months,
|
||||
boundaryGap: false,
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
nameTextStyle: {
|
||||
padding: [0, 0, 0, 40]
|
||||
}
|
||||
},
|
||||
smooth: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
@ -82,40 +102,27 @@ onMounted(() => {
|
||||
}
|
||||
},
|
||||
{
|
||||
name: props.legendData[1],
|
||||
type: 'custom',
|
||||
renderItem: function (params, api) {
|
||||
const points = [];
|
||||
const xPoints = [];
|
||||
const minPoints = [];
|
||||
const maxPoints = [];
|
||||
|
||||
for (let i = 0; i < props.months.length; i++) {
|
||||
const x = api.coord([i, 0])[0];
|
||||
const minY = api.coord([0, props.normalHeightMin[i]])[1];
|
||||
const maxY = api.coord([0, props.normalHeightMax[i]])[1];
|
||||
|
||||
xPoints.push(x);
|
||||
minPoints.push(minY);
|
||||
maxPoints.push(maxY);
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'group',
|
||||
children: [{
|
||||
type: 'polygon',
|
||||
shape: {
|
||||
points: xPoints.map((x, i) => [x, minPoints[i]]).concat(
|
||||
xPoints.slice().reverse().map((x, i) => [x, maxPoints[maxPoints.length - 1 - i]])
|
||||
)
|
||||
name: '标准下界',
|
||||
type: 'line',
|
||||
symbol: 'none',
|
||||
data: standardLower,
|
||||
lineStyle: { opacity: 0 },
|
||||
stack: '标准范围',
|
||||
areaStyle: { opacity: 0 },
|
||||
tooltip: { show: false }
|
||||
},
|
||||
style: {
|
||||
fill: 'rgba(144, 238, 144, 0.3)'
|
||||
{
|
||||
name: '标准范围',
|
||||
type: 'line',
|
||||
symbol: 'none',
|
||||
data: standardRange,
|
||||
lineStyle: { opacity: 0 },
|
||||
stack: '标准范围',
|
||||
areaStyle: { color: 'rgba(135,206,250,0.3)' },
|
||||
tooltip: { show: false },
|
||||
itemStyle: {
|
||||
color: 'rgba(135,206,250,0.3)'
|
||||
}
|
||||
}]
|
||||
};
|
||||
},
|
||||
data: props.months
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
@ -135,62 +135,43 @@ editorConfig.MENU_CONF['uploadImage'] = {
|
||||
// }
|
||||
// 自定义上传
|
||||
async customUpload(file, insertFn) {
|
||||
try {
|
||||
const formData = new FormData()
|
||||
formData.append('file', file)
|
||||
const code = await getCode()
|
||||
const client = new OSS({
|
||||
region: "oss-cn-beijing",
|
||||
// authorizationV4: true,
|
||||
accessKeyId: import.meta.env.VITE_OSS_ACCESS_KEY_ID,
|
||||
accessKeySecret: import.meta.env.VITE_OSS_ACCESS_KEY_SECRET,
|
||||
stsToken: JSON.parse(code.token).security_token,
|
||||
bucket: "image-fudan",
|
||||
secure: true,
|
||||
// endpoint: 'https'
|
||||
});
|
||||
|
||||
// Generate unique filename with original extension
|
||||
const fileExt = file.name.split('.').pop()
|
||||
const fileName = `${Date.now()}-${Math.random().toString(36).substring(2)}.${fileExt}`
|
||||
|
||||
const options = {
|
||||
// meta: { temp: "demo" },
|
||||
// mime: file.type,
|
||||
headers: { "Content-Type": file.type },
|
||||
};
|
||||
|
||||
const result = await client.put(fileName, file, options);
|
||||
console.log('Upload result:', result);
|
||||
|
||||
// Construct the full URL and call insertFn
|
||||
const url = `${ossurl}/${fileName}`;
|
||||
const url = await uploadFile(file)
|
||||
insertFn(url, file.name, url);
|
||||
} catch (error) {
|
||||
console.error('Upload failed:', error);
|
||||
ElNotification.error('图片上传失败,请重试');
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
editorConfig.MENU_CONF['uploadVideo'] = {
|
||||
async customUpload(file, insertFn) {
|
||||
const url = await uploadFile(file)
|
||||
insertFn(url, file.name, url);
|
||||
},
|
||||
}
|
||||
const uploadFile = (file) => {
|
||||
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const code = await getCode()
|
||||
const res = JSON.parse(code).token
|
||||
const formData = new FormData()
|
||||
formData.append('policy', res.policy);
|
||||
formData.append('OSSAccessKeyId', res.ossAccessKeyId);
|
||||
formData.append('success_action_status', '200');
|
||||
formData.append('signature', res.signature);
|
||||
formData.append('key', res.dir + file.name);
|
||||
formData.append('file', file);
|
||||
fetch('http://image-fudan.oss-cn-beijing.aliyuncs.com', { method: 'POST', body: formData },).then((res) => {
|
||||
resolve('http://image-fudan.oss-cn-beijing.aliyuncs.com/ddbs-admin/' + file.name)
|
||||
}).catch((err) => {
|
||||
reject('上传失败', err)
|
||||
});
|
||||
})
|
||||
|
||||
}
|
||||
const handleUpload = (e) => {
|
||||
console.log(e.target.files[0])
|
||||
}
|
||||
|
||||
editorConfig.MENU_CONF['uploadVideo'] = {
|
||||
server: import.meta.env.VITE_API_BASE_URL + '/api/upload', // 使用环境变量中的API基础URL
|
||||
maxFileSize: 5 * 1024 * 1024, // 5M
|
||||
onBeforeUpload: (file) => {
|
||||
console.log('准备上传视频', file)
|
||||
return file // 返回file继续上传
|
||||
},
|
||||
onSuccess: (file, res) => {
|
||||
console.log('视频上传成功', file, res)
|
||||
},
|
||||
onError: (file, err, res) => {
|
||||
console.log('视频上传失败', file, err, res)
|
||||
ElNotification.error('视频上传失败,请重试')
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
const handleSaveArticle = () => {
|
||||
|
||||
@ -3,52 +3,52 @@
|
||||
<el-descriptions title="患者信息">
|
||||
<el-descriptions-item label="姓名:">{{ userInfo.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别:">
|
||||
<el-tag v-if="userInfo.conception_type === 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.conception_type === 1" type="success">男</el-tag>
|
||||
<el-tag v-if="userInfo.conception_type === 2" type="danger">女</el-tag>
|
||||
<el-tag v-if="userInfo.sex == 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.sex == 1" type="success">男</el-tag>
|
||||
<el-tag v-if="userInfo.sex == 2" type="danger">女</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄:">{{ userInfo.age }}</el-descriptions-item>
|
||||
<el-descriptions-item label="账号:">{{ userInfo.mobile }} </el-descriptions-item>
|
||||
<el-descriptions-item label="胆道闭锁手术时间:">{{ userInfo.operative_date }} </el-descriptions-item>
|
||||
<el-descriptions-item label="术后时长:">{{ userInfo.postoperative_duration }} </el-descriptions-item>
|
||||
<el-descriptions-item label="当前风险:">
|
||||
<el-tag v-if="userInfo.risk_type === 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.risk_type === 1" type="success">低危</el-tag>
|
||||
<el-tag v-if="userInfo.risk_type === 2" type="warning">中危</el-tag>
|
||||
<el-tag v-if="userInfo.risk_type === 3" type="danger">高危</el-tag>
|
||||
<el-tag v-if="userInfo.risk_type == 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.risk_type == 1" type="success">低危</el-tag>
|
||||
<el-tag v-if="userInfo.risk_type == 2" type="warning">中危</el-tag>
|
||||
<el-tag v-if="userInfo.risk_type == 3" type="danger">高危</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身高生长曲线:">
|
||||
<el-tag v-if="userInfo.height_growth_curve_type === 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.height_growth_curve_type === 1" type="warning">轻度偏高</el-tag>
|
||||
<el-tag v-if="userInfo.height_growth_curve_type === 2" type="success">正常</el-tag>
|
||||
<el-tag v-if="userInfo.height_growth_curve_type === 3" type="danger">重度偏高</el-tag>
|
||||
<el-tag v-if="userInfo.height_growth_curve_type == 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.height_growth_curve_type == 1" type="warning">轻度偏离</el-tag>
|
||||
<el-tag v-if="userInfo.height_growth_curve_type == 2" type="success">正常</el-tag>
|
||||
<el-tag v-if="userInfo.height_growth_curve_type == 3" type="danger">重度偏离</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="体重高生长曲线:">
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type === 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type === 1" type="warning">轻度偏高</el-tag>
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type === 2" type="success">正常</el-tag>
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type === 3" type="danger">重度偏高</el-tag>
|
||||
<el-descriptions-item label="体重生长曲线:">
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type == 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type == 1" type="warning">轻度偏离</el-tag>
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type == 2" type="success">正常</el-tag>
|
||||
<el-tag v-if="userInfo.weight_growth_curve_type == 3" type="danger">重度偏离</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="下次随访时间:">{{ userInfo.next_follow_date }} </el-descriptions-item>
|
||||
<el-descriptions-item label="出生体重(g):">{{ userInfo.birth_weight }} (g)</el-descriptions-item>
|
||||
<el-descriptions-item label="胎次:">{{ userInfo.parity_number }} </el-descriptions-item>
|
||||
<el-descriptions-item label="产次:">{{ userInfo.birth_number }} </el-descriptions-item>
|
||||
<el-descriptions-item label="受孕方式:">
|
||||
<el-tag v-if="userInfo.conception_type === 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.conception_type === 1" type="success">自认受孕</el-tag>
|
||||
<el-tag v-if="userInfo.conception_type === 2" type="warning">辅助生殖技术</el-tag>
|
||||
<el-tag v-if="userInfo.conception_type == 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.conception_type == 1" type="success">自认受孕</el-tag>
|
||||
<el-tag v-if="userInfo.conception_type == 2" type="warning">辅助生殖技术</el-tag>
|
||||
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="孕周:">{{ userInfo.gestational_week }} </el-descriptions-item>
|
||||
<el-descriptions-item label="产检是否异常:">{{ userInfo.prenatal_check_type }}
|
||||
<el-tag v-if="userInfo.delivery_type === 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.delivery_type === 2" type="success">无</el-tag>
|
||||
<span v-if="userInfo.delivery_type === 1">{{ userInfo.prenatal_check_remark }}(周)</span>
|
||||
<el-tag v-if="userInfo.delivery_type == 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.delivery_type == 2" type="success">无</el-tag>
|
||||
<span v-if="userInfo.delivery_type == 1">{{ userInfo.prenatal_check_remark }}(周)</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="分娩方式:">
|
||||
<el-tag v-if="userInfo.delivery_type === 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.delivery_type === 1" type="success">顺产</el-tag>
|
||||
<el-tag v-if="userInfo.delivery_type === 2" type="warning">剖腹产</el-tag>
|
||||
<el-tag v-if="userInfo.delivery_type == 0" type="info">未知</el-tag>
|
||||
<el-tag v-if="userInfo.delivery_type == 1" type="success">顺产</el-tag>
|
||||
<el-tag v-if="userInfo.delivery_type == 2" type="warning">剖腹产</el-tag>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
@ -71,21 +71,19 @@
|
||||
<h2>身高曲线</h2>
|
||||
</div>
|
||||
<div class="echats" v-loading="isLoading">
|
||||
<myEchartsSh v-if="!isLoading" ref="heightEcharts" id="heightEcharts"
|
||||
:legendData="['实际身高', '正常身高范围']"
|
||||
<myEchartsSh v-if="!isLoading" ref="heightEcharts" id="heightEcharts" :sex="userInfo.conception_type"
|
||||
:legendData="['实际身高', '标准范围']"
|
||||
:actual-height="chatData.height"
|
||||
:normal-height-min="[70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81]"
|
||||
:normal-height-max="[80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91]" :label="'身高'" />
|
||||
:label="'身高'" />
|
||||
</div>
|
||||
<div class="title">
|
||||
<h2>体重曲线</h2>
|
||||
</div>
|
||||
<div class="echats" v-loading="isLoading">
|
||||
<myEchartsSh v-if="!isLoading" ref="weightEcharts" id="weightEcharts"
|
||||
:legendData="['实际体重', '正常体重范围']"
|
||||
<myEchartsSh v-if="!isLoading" ref="weightEcharts" id="weightEcharts" :sex="userInfo.conception_type"
|
||||
:legendData="['实际体重', '标准范围']"
|
||||
:actual-height="chatData.weight"
|
||||
:normal-height-min="[70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81]"
|
||||
:normal-height-max="[80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91]" :label="'体重'" />
|
||||
:label="'体重'" />
|
||||
</div>
|
||||
<div class="title">
|
||||
<h2>总胆红素趋势</h2>
|
||||
@ -202,7 +200,7 @@ const userInfo = ref({})
|
||||
const isLoading = ref(true)
|
||||
|
||||
const chatData = ref({
|
||||
height: [],
|
||||
height: [75, 77, 80],
|
||||
weight: [],
|
||||
totalBilirubin: [],
|
||||
directBilirubin: []
|
||||
@ -220,14 +218,14 @@ const getTableData = async () => {
|
||||
tableData.value = questionnairesRes.list
|
||||
|
||||
chatData.value = {
|
||||
height: [],
|
||||
height: [75, 77, 80],
|
||||
weight: [],
|
||||
totalBilirubin: [],
|
||||
directBilirubin: []
|
||||
}
|
||||
|
||||
chatRes.list.forEach(item => {
|
||||
chatData.value.height.push(item.height)
|
||||
// chatData.value.height.push(item.height)
|
||||
chatData.value.weight.push(item.weight)
|
||||
chatData.value.totalBilirubin.push(item.total_bilirubin)
|
||||
chatData.value.directBilirubin.push(item.direct_bilirubin)
|
||||
|
||||
@ -13,7 +13,6 @@ import IconsResolver from 'unplugin-icons/resolver'
|
||||
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
|
||||
|
||||
import { viteMockServe } from 'vite-plugin-mock'
|
||||
import pluginBasicSsl from '@vitejs/plugin-basic-ssl'
|
||||
// 引入 fs 模块
|
||||
// import fs from 'fs'
|
||||
// const fs = require('fs');
|
||||
@ -24,7 +23,6 @@ export default defineConfig(({ command, mode }) => {
|
||||
return {
|
||||
plugins: [
|
||||
vue(),
|
||||
pluginBasicSsl(),
|
||||
AutoImport({
|
||||
resolvers: [
|
||||
ElementPlusResolver(),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user