儿科后台
This commit is contained in:
parent
a3a5cdda93
commit
158fa5b31c
@ -1,7 +1,7 @@
|
|||||||
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
||||||
NODE_ENV = 'development'
|
NODE_ENV = 'development'
|
||||||
VITE_APP_BASE_API = 'https://ddbs.1024tool.vip/'
|
VITE_APP_BASE_API = 'http://1.15.53.35:9998/'
|
||||||
VITE_SERVE = "https://ddbs.1024tool.vip/"
|
VITE_SERVE = "http://1.15.53.35:9998/"
|
||||||
# VITE_SERVE = "http://192.168.210.29:18100/"
|
# VITE_SERVE = "http://192.168.210.29:18100/"
|
||||||
VITE_OSS_ACCESS_KEY_ID = "LTAI5tCpvXC17uuPwWvb5oRo"
|
VITE_OSS_ACCESS_KEY_ID = "LTAI5tCpvXC17uuPwWvb5oRo"
|
||||||
VITE_OSS_ACCESS_KEY_SECRET = "44EqDghVI0UVF0rVaea7gwOsPkXZ1z"
|
VITE_OSS_ACCESS_KEY_SECRET = "44EqDghVI0UVF0rVaea7gwOsPkXZ1z"
|
||||||
@ -3,7 +3,7 @@ import request from '@/utils/request'
|
|||||||
|
|
||||||
export const getCode = () =>{
|
export const getCode = () =>{
|
||||||
return request({
|
return request({
|
||||||
url: 'admin/policy_token',
|
url: 'admin/form_policy_token',
|
||||||
method: 'post',
|
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月']
|
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: 'value'
|
type: 'value',
|
||||||
|
smooth: true
|
||||||
},
|
},
|
||||||
series: [
|
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 { ref, onMounted } from 'vue'
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
|
import { heightList, weightList } from '@/assets/js/heightWeight';
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const myEcharts = ref(null)
|
const myEcharts = ref(null)
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -26,19 +28,35 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
months: {
|
months: {
|
||||||
type: Array,
|
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: {
|
legendData: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => []
|
default: () => []
|
||||||
},
|
},
|
||||||
|
sex: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
var chartDom = document.getElementById(props.id);
|
var chartDom = document.getElementById(props.id);
|
||||||
var myChart = echarts.init(chartDom);
|
var myChart = echarts.init(chartDom);
|
||||||
var option;
|
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 = {
|
option = {
|
||||||
grid: {
|
grid: {
|
||||||
left: '50',
|
left: '50',
|
||||||
@ -61,13 +79,15 @@ onMounted(() => {
|
|||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'category',
|
type: 'category',
|
||||||
data: props.months
|
data: props.months,
|
||||||
|
boundaryGap: false,
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: 'value',
|
type: 'value',
|
||||||
nameTextStyle: {
|
nameTextStyle: {
|
||||||
padding: [0, 0, 0, 40]
|
padding: [0, 0, 0, 40]
|
||||||
}
|
},
|
||||||
|
smooth: true
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
@ -82,40 +102,27 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: props.legendData[1],
|
name: '标准下界',
|
||||||
type: 'custom',
|
type: 'line',
|
||||||
renderItem: function (params, api) {
|
symbol: 'none',
|
||||||
const points = [];
|
data: standardLower,
|
||||||
const xPoints = [];
|
lineStyle: { opacity: 0 },
|
||||||
const minPoints = [];
|
stack: '标准范围',
|
||||||
const maxPoints = [];
|
areaStyle: { opacity: 0 },
|
||||||
|
tooltip: { show: false }
|
||||||
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];
|
name: '标准范围',
|
||||||
const maxY = api.coord([0, props.normalHeightMax[i]])[1];
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
xPoints.push(x);
|
data: standardRange,
|
||||||
minPoints.push(minY);
|
lineStyle: { opacity: 0 },
|
||||||
maxPoints.push(maxY);
|
stack: '标准范围',
|
||||||
}
|
areaStyle: { color: 'rgba(135,206,250,0.3)' },
|
||||||
|
tooltip: { show: false },
|
||||||
return {
|
itemStyle: {
|
||||||
type: 'group',
|
color: 'rgba(135,206,250,0.3)'
|
||||||
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
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<input type="file" @change="handleUpload" />
|
<input type="file" @change="handleUpload" />
|
||||||
|
|
||||||
|
|
||||||
<el-dialog v-model="dialogPreview" title="文章预览" width="1000px">
|
<el-dialog v-model="dialogPreview" title="文章预览" width="1000px">
|
||||||
@ -135,62 +135,43 @@ editorConfig.MENU_CONF['uploadImage'] = {
|
|||||||
// }
|
// }
|
||||||
// 自定义上传
|
// 自定义上传
|
||||||
async customUpload(file, insertFn) {
|
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 url = await uploadFile(file)
|
||||||
const fileExt = file.name.split('.').pop()
|
insertFn(url, file.name, url);
|
||||||
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}`;
|
|
||||||
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) => {
|
const handleUpload = (e) => {
|
||||||
console.log(e.target.files[0])
|
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 = () => {
|
const handleSaveArticle = () => {
|
||||||
|
|||||||
@ -3,52 +3,52 @@
|
|||||||
<el-descriptions title="患者信息">
|
<el-descriptions title="患者信息">
|
||||||
<el-descriptions-item label="姓名:">{{ userInfo.username }}</el-descriptions-item>
|
<el-descriptions-item label="姓名:">{{ userInfo.username }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="性别:">
|
<el-descriptions-item label="性别:">
|
||||||
<el-tag v-if="userInfo.conception_type === 0" type="info">未知</el-tag>
|
<el-tag v-if="userInfo.sex == 0" type="info">未知</el-tag>
|
||||||
<el-tag v-if="userInfo.conception_type === 1" type="success">男</el-tag>
|
<el-tag v-if="userInfo.sex == 1" type="success">男</el-tag>
|
||||||
<el-tag v-if="userInfo.conception_type === 2" type="danger">女</el-tag>
|
<el-tag v-if="userInfo.sex == 2" type="danger">女</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="年龄:">{{ userInfo.age }}</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.mobile }} </el-descriptions-item>
|
||||||
<el-descriptions-item label="胆道闭锁手术时间:">{{ userInfo.operative_date }} </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="术后时长:">{{ userInfo.postoperative_duration }} </el-descriptions-item>
|
||||||
<el-descriptions-item label="当前风险:">
|
<el-descriptions-item label="当前风险:">
|
||||||
<el-tag v-if="userInfo.risk_type === 0" type="info">未知</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 == 1" type="success">低危</el-tag>
|
||||||
<el-tag v-if="userInfo.risk_type === 2" type="warning">中危</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 == 3" type="danger">高危</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="身高生长曲线:">
|
<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 == 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 == 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 == 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 == 3" type="danger">重度偏离</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="体重高生长曲线:">
|
<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 == 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 == 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 == 2" type="success">正常</el-tag>
|
||||||
<el-tag v-if="userInfo.weight_growth_curve_type === 3" type="danger">重度偏高</el-tag>
|
<el-tag v-if="userInfo.weight_growth_curve_type == 3" type="danger">重度偏离</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="下次随访时间:">{{ userInfo.next_follow_date }} </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="出生体重(g):">{{ userInfo.birth_weight }} (g)</el-descriptions-item>
|
||||||
<el-descriptions-item label="胎次:">{{ userInfo.parity_number }} </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="产次:">{{ userInfo.birth_number }} </el-descriptions-item>
|
||||||
<el-descriptions-item label="受孕方式:">
|
<el-descriptions-item label="受孕方式:">
|
||||||
<el-tag v-if="userInfo.conception_type === 0" type="info">未知</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 == 1" type="success">自认受孕</el-tag>
|
||||||
<el-tag v-if="userInfo.conception_type === 2" type="warning">辅助生殖技术</el-tag>
|
<el-tag v-if="userInfo.conception_type == 2" type="warning">辅助生殖技术</el-tag>
|
||||||
|
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="孕周:">{{ userInfo.gestational_week }} </el-descriptions-item>
|
<el-descriptions-item label="孕周:">{{ userInfo.gestational_week }} </el-descriptions-item>
|
||||||
<el-descriptions-item label="产检是否异常:">{{ userInfo.prenatal_check_type }}
|
<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 == 0" type="info">未知</el-tag>
|
||||||
<el-tag v-if="userInfo.delivery_type === 2" type="success">无</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>
|
<span v-if="userInfo.delivery_type == 1">{{ userInfo.prenatal_check_remark }}(周)</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="分娩方式:">
|
<el-descriptions-item label="分娩方式:">
|
||||||
<el-tag v-if="userInfo.delivery_type === 0" type="info">未知</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 == 1" type="success">顺产</el-tag>
|
||||||
<el-tag v-if="userInfo.delivery_type === 2" type="warning">剖腹产</el-tag>
|
<el-tag v-if="userInfo.delivery_type == 2" type="warning">剖腹产</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
@ -71,21 +71,19 @@
|
|||||||
<h2>身高曲线</h2>
|
<h2>身高曲线</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="echats" v-loading="isLoading">
|
<div class="echats" v-loading="isLoading">
|
||||||
<myEchartsSh v-if="!isLoading" ref="heightEcharts" id="heightEcharts"
|
<myEchartsSh v-if="!isLoading" ref="heightEcharts" id="heightEcharts" :sex="userInfo.conception_type"
|
||||||
:legendData="['实际身高', '正常身高范围']"
|
:legendData="['实际身高', '标准范围']"
|
||||||
:actual-height="chatData.height"
|
:actual-height="chatData.height"
|
||||||
:normal-height-min="[70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81]"
|
:label="'身高'" />
|
||||||
:normal-height-max="[80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91]" :label="'身高'" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h2>体重曲线</h2>
|
<h2>体重曲线</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="echats" v-loading="isLoading">
|
<div class="echats" v-loading="isLoading">
|
||||||
<myEchartsSh v-if="!isLoading" ref="weightEcharts" id="weightEcharts"
|
<myEchartsSh v-if="!isLoading" ref="weightEcharts" id="weightEcharts" :sex="userInfo.conception_type"
|
||||||
:legendData="['实际体重', '正常体重范围']"
|
:legendData="['实际体重', '标准范围']"
|
||||||
:actual-height="chatData.weight"
|
:actual-height="chatData.weight"
|
||||||
:normal-height-min="[70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81]"
|
:label="'体重'" />
|
||||||
:normal-height-max="[80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91]" :label="'体重'" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h2>总胆红素趋势</h2>
|
<h2>总胆红素趋势</h2>
|
||||||
@ -202,7 +200,7 @@ const userInfo = ref({})
|
|||||||
const isLoading = ref(true)
|
const isLoading = ref(true)
|
||||||
|
|
||||||
const chatData = ref({
|
const chatData = ref({
|
||||||
height: [],
|
height: [75, 77, 80],
|
||||||
weight: [],
|
weight: [],
|
||||||
totalBilirubin: [],
|
totalBilirubin: [],
|
||||||
directBilirubin: []
|
directBilirubin: []
|
||||||
@ -220,14 +218,14 @@ const getTableData = async () => {
|
|||||||
tableData.value = questionnairesRes.list
|
tableData.value = questionnairesRes.list
|
||||||
|
|
||||||
chatData.value = {
|
chatData.value = {
|
||||||
height: [],
|
height: [75, 77, 80],
|
||||||
weight: [],
|
weight: [],
|
||||||
totalBilirubin: [],
|
totalBilirubin: [],
|
||||||
directBilirubin: []
|
directBilirubin: []
|
||||||
}
|
}
|
||||||
|
|
||||||
chatRes.list.forEach(item => {
|
chatRes.list.forEach(item => {
|
||||||
chatData.value.height.push(item.height)
|
// chatData.value.height.push(item.height)
|
||||||
chatData.value.weight.push(item.weight)
|
chatData.value.weight.push(item.weight)
|
||||||
chatData.value.totalBilirubin.push(item.total_bilirubin)
|
chatData.value.totalBilirubin.push(item.total_bilirubin)
|
||||||
chatData.value.directBilirubin.push(item.direct_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 { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
|
||||||
|
|
||||||
import { viteMockServe } from 'vite-plugin-mock'
|
import { viteMockServe } from 'vite-plugin-mock'
|
||||||
import pluginBasicSsl from '@vitejs/plugin-basic-ssl'
|
|
||||||
// 引入 fs 模块
|
// 引入 fs 模块
|
||||||
// import fs from 'fs'
|
// import fs from 'fs'
|
||||||
// const fs = require('fs');
|
// const fs = require('fs');
|
||||||
@ -24,7 +23,6 @@ export default defineConfig(({ command, mode }) => {
|
|||||||
return {
|
return {
|
||||||
plugins: [
|
plugins: [
|
||||||
vue(),
|
vue(),
|
||||||
pluginBasicSsl(),
|
|
||||||
AutoImport({
|
AutoImport({
|
||||||
resolvers: [
|
resolvers: [
|
||||||
ElementPlusResolver(),
|
ElementPlusResolver(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user