Browse Source

合并冲突

master
lucky 5 years ago
parent
commit
8ee72afccb
  1. 16
      package-lock.json
  2. 1
      package.json
  3. 37
      src/components/Duration/Duration.js
  4. 2
      src/components/Duration/Duration.vue
  5. 147
      src/components/FastEd/FastEd.vue
  6. 119
      src/components/Panel/Panel.vue
  7. 36
      src/components/Sensor/Sensor.js
  8. 4
      src/components/Sensor/Sensor.vue
  9. 49
      src/components/Sensor/Sensor3D.js
  10. 42
      src/components/Statistics/Statistics.js
  11. 3
      src/components/Statistics/Statistics.vue
  12. 2
      src/main.js
  13. 2
      src/plugins/ant-design-vue.js
  14. 22
      src/views/Index/Index.vue

16
package-lock.json

@ -1,5 +1,5 @@
{
"name": "盐湖区人民医院数字看板",
"name": "salt-lake-hospital",
"version": "0.1.0",
"lockfileVersion": 1,
"requires": true,
@ -3668,6 +3668,11 @@
"resolved": "https://registry.npm.taobao.org/classnames/download/classnames-2.2.6.tgz",
"integrity": "sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4="
},
"claygl": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/claygl/-/claygl-1.3.0.tgz",
"integrity": "sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ=="
},
"clean-css": {
"version": "4.2.3",
"resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclean-css%2Fdownload%2Fclean-css-4.2.3.tgz",
@ -5289,6 +5294,15 @@
"zrender": "4.3.2"
}
},
"echarts-gl": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/echarts-gl/-/echarts-gl-1.1.1.tgz",
"integrity": "sha512-cRSTU9H+Ay+qCUFowm+2XcxYqCfi/OLK805NISeJunKgJa5p+7p7tnHZoI0qKebjtHu8VbFSOBk9UvWZ01adng==",
"requires": {
"claygl": "^1.2.1",
"zrender": "^4.0.4"
}
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",

1
package.json

@ -12,6 +12,7 @@
"compression-webpack-plugin": "^6.1.1",
"core-js": "^3.6.5",
"echarts": "^4.9.0",
"echarts-gl": "^1.1.1",
"moment": "^2.29.1",
"register-service-worker": "^1.7.1",
"stylus": "^0.54.8",

37
src/components/Duration/Duration.js

@ -1,12 +1,12 @@
var option = {
title: {
left: '10%',
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
},
text: '急救时长分析',
},
// title: {
// left: '10%',
// textStyle: {
// fontWeight: 'normal',
// color: '#fff', //标题颜色
// },
// text: '急救时长分析',
// },
tooltip: { trigger: 'axis' },
legend: {
x: 'center',
@ -14,7 +14,7 @@ var option = {
data: ['我院记录', '国际水准', '当前数据'],
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
grid: {
@ -30,25 +30,26 @@ var option = {
axisLabel: {
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
},
yAxis: {
type: 'value',
name: '秒',
interval: 100,
interval: 200,
axisLabel: {
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
nameTextStyle: { color: '#ccc' },
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#666',
color: '#ccc',
},
},
},
@ -57,22 +58,26 @@ var option = {
name: '我院记录',
type: 'line',
stack: '总量',
symbolSize: 10,
symbolSize: 6,
// symbol: 'star',
data: [120, 132, 101, 134, 90, 230, 210],
color: 'rgb(18, 131, 227)',
},
{
name: '国际水准',
type: 'line',
stack: '总量',
symbolSize: 10,
symbolSize: 6,
data: [220, 182, 191, 234, 290, 330, 310],
color: 'rgb(30, 231, 231)',
},
{
name: '当前数据',
type: 'line',
stack: '总量',
symbolSize: 10,
symbolSize: 6,
data: [150, 232, 201, 154, 190, 330, 410],
color: 'rgb(227, 18, 187)',
},
],
};

2
src/components/Duration/Duration.vue

@ -10,7 +10,7 @@ export default {
name: 'Duration',
data() {
return {
msg: 'Welcome to Your Vue.js App',
// msg: 'Welcome to Your Vue.js App',
width: '',
height: '',
};

147
src/components/FastEd/FastEd.vue

@ -0,0 +1,147 @@
<template>
<div class="fast-box">
<div style="flex: 1" class="bg-box">
<div v-for="a in 4" :key="a"></div>
</div>
<div class="con-box" id="bobaodiv">
<div v-for="item in dataList" :key="item.a" style="height: 25%" class="flex-1 flex-row">
<div class="flex-1">{{ item.a }}</div>
<div class="flex-1">{{ item.b }}</div>
<div class="flex-1">{{ item.c }}</div>
</div>
<div v-for="item in dataList" :key="item.b" style="height: 25%" class="flex-1 flex-row">
<div class="flex-1">{{ item.a }}</div>
<div class="flex-1">{{ item.b }}</div>
<div class="flex-1">{{ item.c }}</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'FastEd',
data() {
return {
str: 'FAST ED结果',
height: '',
width: '',
liHeight: '',
dataList: [
{
a: '1.面部对侧',
b: '正常',
c: '0分',
},
{
a: '2.上肢',
b: '中度无力',
c: '1分',
},
{
a: '3.语言运动',
b: '正常',
c: '0分',
},
{
a: '4.语言感觉',
b: '异常',
c: '1分',
},
{
a: '5.眼球凝视',
b: '一测活动困难',
c: '1分',
},
],
oMarquee: null, //
BBLineH: null,
BBScrollAmount: 1,
BBLineCount: 5,
rollRestTime: 500,
rollTime: 10,
};
},
mounted() {
this.BBLineH = document.getElementsByClassName('fast-box')[0].offsetHeight * 0.25;
this.scrollBox();
},
methods: {
scrollBox() {
/*
* 启动播报滚动事件
*/
const that = this;
window.onload = function() {
// BBAllTime = 0;
that.oMarquee = document.getElementById('bobaodiv'); //
window.setTimeout(function() {
that.run();
}, that.rollRestTime);
};
},
/*
* 播报滚动事件主逻辑
*/
run() {
const that = this;
if (that.BBScrollAmount == 0) {
//0
window.setTimeout(function() {
that.run();
}, that.rollTime);
return;
}
if (that.oMarquee.scrollTop >= that.BBLineCount * that.BBLineH) {
//
that.oMarquee.scrollTop = 0;
}
that.oMarquee.scrollTop += that.BBScrollAmount;
if (that.oMarquee.scrollTop % that.BBLineH < 1 && that.oMarquee.scrollTop > 0) {
window.setTimeout(function() {
that.run();
}, that.rollRestTime);
} else {
window.setTimeout(function() {
that.run();
}, that.rollTime);
}
},
},
};
</script>
<style lang="stylus" scoped>
.bg-box {
height: 100%;
div {
height: 25%;
}
div:nth-of-type(even) {
background: #023567;
}
}
.fast-box {
position: relative;
}
.con-box {
top: 0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
overflow: hidden;
font-weight: 600;
font-size: 14px;
color: #eee;
div {
justify-content: center;
align-items: center;
}
}
</style>

119
src/components/Panel/Panel.vue

@ -0,0 +1,119 @@
<template>
<div>
<div class="panel-box">
<div class="d-flex">
<div class="flex-1">
<span class="panel-tips">患者体重kg</span>
<span class="panel-con">60.00</span>
</div>
<div class="flex-1">
<span class="panel-tips">药物剂量mg</span>
<span class="panel-con">55.00</span>
</div>
</div>
<div class="d-flex">
<div class="flex-1">
<span class="panel-tips">团注剂量mg</span>
<span class="panel-con">5.40</span>
</div>
<div class="flex-1">
<span class="panel-tips">维持剂量mg</span>
<span class="panel-con">48.60</span>
</div>
</div>
<div style="width: 95%; padding-left: 5%">
<div style="width: 120%">
<span :style="{ marginLeft: percentA }" class="tips">
123
<a-icon class="down-icon" type="caret-down" />
</span>
</div>
<a-progress
:percent="percent"
:show-info="false"
:stroke-color="strokeColor"
:stroke-width="strokeWidth"
/>
<div>123</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Panel',
data() {
return {
str: '智慧平车面板数据',
dataList: [],
percent: 0,
percentA: 0,
strokeWidth: 6,
strokeColor: {
from: '#1362B8',
to: '#06D0CA',
},
};
},
mounted() {
const that = this;
var add = setInterval(function() {
if (that.percent === 100) {
that.percent = 0;
that.percentA = 0;
} else {
that.percent++;
that.percentA = (that.percent * 100) / 120 + '%';
}
}, 1000);
},
};
</script>
<style lang="stylus" scoped>
.panel-box {
height: 100%;
width: 100%;
padding: 10px;
div {
height: 33%;
align-items: center;
}
span {
flex: 1;
text-align: center;
}
}
.panel-tips {
font-size: 20px;
color: #ccc;
}
.panel-con {
font-size: 48px;
font-weight: 600;
text-shadow: #0075ff 0px 0px 8px;
letter-spacing: 8px;
transform: rotateX(0deg) rotateY(0deg) scaleX(1) scaleY(0.8) translate(0px, 0px);
}
.tips {
position: relative;
padding: 0 4px;
border-radius: 5px 5px 5px 0;
margin-left: 0;
transition: all 1s;
border: 1px solid #ccc;
}
.down-icon {
position: absolute;
font-size: 10px;
bottom: -8px;
left: -10%;
}
</style>

36
src/components/Sensor/Sensor.js

@ -1,19 +1,19 @@
var option = {
title: {
left: '10%',
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
},
text: '震动传感器',
},
// title: {
// left: '10%',
// textStyle: {
// fontWeight: 'normal',
// color: '#ccc', //标题颜色
// },
// text: '震动传感器',
// },
legend: {
x: 'center',
y: 'top',
data: ['传感器1', '传感器2'],
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
xAxis: {
@ -48,9 +48,10 @@ var option = {
series: [
{
name: '传感器1',
data: [120, 932, 401, 534, 290, 530, 320],
data: [320, 932, 401, 834, 290, 530, 620],
type: 'line',
smooth: true,
symbol: 'none',
itemStyle: {
color: {
type: 'linear',
@ -61,24 +62,25 @@ var option = {
colorStops: [
{
offset: 0,
color: '#0A4982', // 0% 处的颜色
color: 'rgba(10,73,130,1)', // 0% 处的颜色
},
{
offset: 1,
color: '#243859', // 100% 处的颜色
color: 'rgba(10,73,130,0)', // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
},
areaStyle: {},
lineStyle: { normal: { width: 4 } },
lineStyle: { normal: { color: 'rgb(39,149,243)', width: 2 } },
},
{
name: '传感器2',
data: [220, 632, 101, 834, 490, 630, 220],
data: [420, 232, 401, 234, 490, 230, 420],
type: 'line',
smooth: true,
symbol: 'none',
itemStyle: {
color: {
type: 'linear',
@ -89,18 +91,18 @@ var option = {
colorStops: [
{
offset: 0,
color: '#B2F2FC', // 0% 处的颜色
color: 'rgba(91,225,251,1)', // 0% 处的颜色
},
{
offset: 1,
color: '#5BE1FB', // 100% 处的颜色
color: 'rgba(91,225,251,0)', // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
},
areaStyle: {},
lineStyle: { normal: { width: 4 } },
lineStyle: { normal: { color: 'rgb(91,225,251)', width: 2 } },
},
],
};

4
src/components/Sensor/Sensor.vue

@ -1,16 +1,16 @@
<template>
<!-- <div>数据统计组件</div> -->
<div :style="{ width: 'width', height: 'height' }" class="chart-box">
<div id="Sensor" style="width: 100%;"></div>
<div id="Sensor" style="width: 100%"></div>
</div>
</template>
<script>
import option from './Sensor.js';
// import option from './Sensor3D.js';
export default {
name: 'Sensor',
data() {
return {
msg: 'Welcome to Your Vue.js App',
width: '',
height: '',
};

49
src/components/Sensor/Sensor3D.js

@ -0,0 +1,49 @@
var option = {
tooltip: {},
backgroundColor: 'none',
visualMap: {
show: false,
dimension: 2,
min: -1,
max: 1,
inRange: {
name: '',
color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'],
},
},
xAxis3D: { type: 'value' },
yAxis3D: { type: 'value' },
zAxis3D: {
type: 'value',
max: 1,
splitNumber: 2,
},
grid3D: {
viewControl: {},
boxHeight: 40,
},
series: [
{
type: 'surface',
wireframe: { show: false },
shading: 'color',
equation: {
x: {
step: 0.05,
min: -3,
max: 3,
},
y: {
step: 0.05,
min: -3,
max: 3,
},
z: function(x, y) {
return (Math.sin(x * x + y * y) * x) / 3.14;
},
},
},
],
};
export default option;

42
src/components/Statistics/Statistics.js

@ -1,12 +1,4 @@
var option = {
title: {
left: '10%',
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
},
text: '急救数据统计',
},
tooltip: { trigger: 'axis' },
legend: [
{
@ -15,7 +7,7 @@ var option = {
data: ['本年', '去年'],
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
{
@ -24,17 +16,17 @@ var option = {
data: ['本年完成', '去年同期'],
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
],
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
data: ['01月', '02月', '03月', '04月', '05月', '06月', '07月', '08月', '09月', '10月', '11月', '12月'],
axisLabel: {
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
},
@ -54,11 +46,11 @@ var option = {
color: '#666',
},
},
nameTextStyle: { color: '#fff' },
nameTextStyle: { color: '#ccc' },
axisLabel: {
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
},
@ -73,11 +65,11 @@ var option = {
color: '#666',
},
},
nameTextStyle: { color: '#fff' },
nameTextStyle: { color: '#ccc' },
axisLabel: {
textStyle: {
fontWeight: 'normal',
color: '#fff', //标题颜色
color: '#ccc', //标题颜色
},
},
},
@ -85,22 +77,23 @@ var option = {
series: [
{
name: '本年',
data: [120, 232, 301, 434, 590, 630, 720],
data: [120, 232, 301, 434, 590, 630, 720, 301, 434, 590, 630, 720],
type: 'line',
color: 'red',
color: 'rgb(24, 144, 255)',
},
{
name: '去年',
data: [820, 932, 901, 934, 1290, 1330, 1320],
data: [820, 932, 901, 934, 1290, 1330, 1320, 932, 901, 934, 1290, 1330],
type: 'line',
color: '#E87C25',
color: 'rgb(26, 235, 235)',
},
{
name: '本年完成',
data: [120, 232, 301, 434, 590, 630, 720],
data: [120, 232, 301, 434, 590, 630, 720, 232, 301, 434, 590, 630],
yAxisIndex: 1,
type: 'bar',
color: '#FCCE10',
barWidth: '10%',
color: 'rgb(24, 144, 255)',
itemStyle: {
normal: {
label: {
@ -117,10 +110,11 @@ var option = {
},
{
name: '去年同期',
data: [820, 932, 901, 934, 1290, 1330, 1320],
data: [820, 932, 901, 934, 1290, 1330, 1320, 932, 901, 934, 1290, 1330],
yAxisIndex: 1,
type: 'bar',
color: '#B5C334',
barWidth: '10%',
color: 'rgb(26, 235, 235)',
itemStyle: {
normal: {
label: {

3
src/components/Statistics/Statistics.vue

@ -1,7 +1,7 @@
<template>
<!-- <div>数据统计组件</div> -->
<div :style="{ width: 'width', height: 'height' }" class="chart-box">
<div id="myChart" style="width: 100%;"></div>
<div id="myChart" style="width: 100%"></div>
</div>
</template>
<script>
@ -10,7 +10,6 @@ export default {
name: 'Statistics',
data() {
return {
msg: 'Welcome to Your Vue.js App',
width: '',
height: '',
};

2
src/main.js

@ -8,7 +8,7 @@ import store from './store';
import './plugins/ant-design-vue.js';
import 'common/portrait.styl';
import echarts from 'echarts';
import 'echarts-gl';
// Vue.use(echarts);
Vue.prototype.$echarts = echarts;
// import './assets/icon/iconfont.css';

2
src/plugins/ant-design-vue.js

@ -26,6 +26,7 @@ import {
Timeline,
Checkbox,
BackTop,
Progress,
} from 'ant-design-vue';
import { ConfigProvider } from 'ant-design-vue';
Vue.component(ConfigProvider.name, ConfigProvider);
@ -53,6 +54,7 @@ Vue.use(Col);
Vue.use(Timeline);
Vue.use(Checkbox);
Vue.use(BackTop);
Vue.use(Progress);
Vue.prototype.$message = message;
Vue.prototype.$notification = notification;

22
src/views/Index/Index.vue

@ -12,7 +12,7 @@
height="162"
loop
src="https://easyv.assets.dtstack.com/data/video/7478/2313/gfO5k3Ztm-1556020310192-qI-NAaykOV.webm"
style="width: 100%; height: 162px; object-fit: fill; mix-blend-mode: screen; filter: saturate(200%);"
style="width: 100%; height: 162px; object-fit: fill; mix-blend-mode: screen; filter: saturate(200%)"
></video>
</div>
<span class="bg-title">盐湖区人民医院数据看板</span>
@ -37,7 +37,7 @@
<statistics class="flex-1" />
</div>
</div>
<div style="width:100%;height:10%"></div>
<div style="width:100%;height:6%"></div>
<div class="d-flex flex-column flex-1">
<div class="box-top">
<span>急救时长分析</span>
@ -61,7 +61,7 @@
<sensor class="flex-1" />
</div>
</div>
<div style="width:100%;height:10%"></div>
<div style="width:100%;height:6%"></div>
<div class="d-flex flex-column flex-1">
<div class="box-top">
<span>称重传感器</span>
@ -75,15 +75,17 @@
</div>
</div>
</div>
<!-- -->
<div style="width:100%;height:4.2%"></div>
<!-- -->
<div style="width:100%;height:2%"></div>
<div class="flex-1 flex-row">
<div class="flex-1 ma-2">
<div class="d-flex flex-column flex-1">
<div class="box-top">
<span>FAST ED结果</span>
</div>
<div class="flex-1 fill-width box-bottom"></div>
<div class="flex-1 fill-width box-bottom">
<fast-ed class="flex-1" />
</div>
</div>
</div>
<!-- 第二列 -->
@ -92,7 +94,9 @@
<div class="box-top">
<span>智慧平车面板数据</span>
</div>
<div class="flex-1 fill-width box-bottom">第二列</div>
<div class="flex-1 fill-width box-bottom">
<panel class="flex-1" />
</div>
</div>
</div>
<!-- 第三列 -->
@ -117,9 +121,11 @@ import Duration from 'components/Duration/Duration.vue';
import Sensor from 'components/Sensor/Sensor.vue';
import LoadCells from 'components/LoadCells/LoadCells.vue';
import RFID from 'components/RFID/RFID.vue';
import FastEd from 'components/FastEd/FastEd.vue';
import Panel from 'components/Panel/Panel.vue';
export default {
name: 'Index',
components: { Statistics, Duration, Sensor, LoadCells, RFID },
components: { Statistics, Duration, Sensor, LoadCells, RFID, FastEd, Panel },
data() {
return {};
},

Loading…
Cancel
Save