Your Name před 1 rokem
rodič
revize
e7b11d0261

+ 2 - 1
.babelrc

@@ -14,5 +14,6 @@
       "presets": ["env", "stage-2"],
       "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
     }
-  }
+  },
+  "compact": false
 }

+ 2 - 2
.eslintrc.js

@@ -1,12 +1,12 @@
 // https://eslint.org/docs/user-guide/configuring
 
 module.exports = {
-  root: true,
+  root: false,
   parserOptions: {
     parser: 'babel-eslint'
   },
   env: {
-    browser: true,
+    browser: false,
   },
   extends: [
     // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention

+ 3 - 3
src/api.js

@@ -26,11 +26,11 @@ axios.interceptors.response.use(function (response) {
   }
   // 对响应数据做点什么
   if (response.data.code == 401) {
-    // window.location.hash = "/login";
-    // window.location.hash = "/";
+    window.location.hash = "/login";
+    window.location.hash = "/";
   }
   if (response.data.code == 305) {
-    // window.location.hash = "/";
+    window.location.hash = "/";
   }
   if (response.data.code == 403) {
     window.location.hash = "/";

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
src/assets/china.js


binární
src/assets/images/flb.png


binární
src/assets/images/hg.png


binární
src/assets/images/mg.png


binární
src/assets/images/point.png


binární
src/assets/images/rb.png


binární
src/assets/images/test.png


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
src/assets/world.js


+ 19 - 5
src/components/DiagCalc.vue

@@ -63,25 +63,37 @@
     </div>
     <!-- 注射时间t0 -->
     <mt-datetime-picker ref="t0Picker" type="datetime" year-format="{value} 年" month-format="{value} 月"
-      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime0' :endDate='endDate'
+      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime0' 
+      :endDate='endDate'
+      :startDate='startDate'
+      v-model="now"
       @touchmove.native.stop.prevent
       >
     </mt-datetime-picker>
     <!-- 采血时间t1 -->
     <mt-datetime-picker ref="t1Picker" type="datetime" year-format="{value} 年" month-format="{value} 月"
-      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime1' :endDate='endDate'
+      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime1' 
+      :endDate='endDate'
+      :startDate='startDate'
+      v-model="now"
       @touchmove.native.stop.prevent
       >
     </mt-datetime-picker>
     <!-- 采血时间t2 -->
     <mt-datetime-picker ref="t2Picker" type="datetime" year-format="{value} 年" month-format="{value} 月"
-      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime2' :endDate='endDate'
+      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime2' 
+      :endDate='endDate'
+      :startDate='startDate'
+      v-model="now"
       @touchmove.native.stop.prevent
       >
     </mt-datetime-picker>
     <!-- 采血时间t3 -->
     <mt-datetime-picker ref="t3Picker" type="datetime" year-format="{value} 年" month-format="{value} 月"
-      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime3' :endDate='endDate'
+      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime3' 
+      :endDate='endDate'
+      :startDate='startDate'
+      v-model="now"
       @touchmove.native.stop.prevent
       >
     </mt-datetime-picker>
@@ -126,7 +138,9 @@
           className: 'slot1',
           textAlign: 'center'
         }],
-        endDate: new Date(this.$datetime.formatDateTime(new Date())),
+        startDate:new Date(this.$datetime.formatDateTime(new Date("2023-01-01 00:00:00"))),
+        endDate: new Date(this.$datetime.formatDateTime(new Date("2024-01-01 00:00:00"))),
+        now:new Date(),
       }
     },
     methods: {

+ 1 - 1
src/components/DiagCalcShow.vue

@@ -73,7 +73,7 @@
         </div>
         <div style="display:flex;">
           <div class="rowfont" style="width:50%;">利用率%</div>
-          <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.lyl}}</div>
+          <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.lyl*100}}</div>
         </div>
       </div>
       <div class="diagShowForm">

+ 5 - 3
src/components/PatClockIn.vue

@@ -38,6 +38,7 @@
       date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime0' 
       :endDate='endDate'
       :startDate='startDate'
+      v-model="now"
       @touchmove.native.stop.prevent>
     </mt-datetime-picker>
   </div>
@@ -63,8 +64,9 @@
         mproFlag: false,
         mfreqFlag: false,
         proList: [],
-        startDate:new Date(this.$datetime.formatDateTime(new Date("2022-01-01 00:00:00"))),
-        endDate: new Date(this.$datetime.formatDateTime(new Date())),
+        startDate:new Date(this.$datetime.formatDateTime(new Date("2023-01-01 00:00:00"))),
+        endDate: new Date(this.$datetime.formatDateTime(new Date("2024-01-01 00:00:00"))),
+        now:new Date(),
         slots: [{
           flex: 1,
           values: [],
@@ -76,7 +78,7 @@
           values: this.$const.mfreq,
           className: 'slot1',
           textAlign: 'center'
-        }]
+        }],
       }
     },
     methods: {

+ 18 - 6
src/components/SolutionPkLine.vue

@@ -12,21 +12,23 @@
             <p style="color:#4caf50;">---3%</p>
             <p style="color:#ab6cef;">---1%</p>
         </div>
+        <p class="xLabel">时间(小时)</p>
+        <!-- <div class="YLabel">活性(%)</div> -->
       </div>
       <div class="PKLineForm baseInfo">
-        <div class="rowfont">活性大于5%的时间:{{pklinedata.gt5_time}}</div>
-        <div class="rowfont">活性大于3%的时间:{{pklinedata.gt3_time}}</div>
-        <div class="rowfont">活性大于1%的时间:{{pklinedata.gt1_time}}</div>
+        <div class="rowfont">活性大于5%的时间(小时):{{pklinedata.gt5_time}}</div>
+        <div class="rowfont">活性大于3%的时间(小时):{{pklinedata.gt3_time}}</div>
+        <div class="rowfont">活性大于1%的时间(小时):{{pklinedata.gt1_time}}</div>
         <div style="display:flex;">
           <div class="rowfont" style="width:48%;">峰活性:{{pklinedata.sjfhx}}%</div>
-          <div class="rowfont" style="width:52%;">谷活性(IU/kg):{{pklinedata.sjghx}}%</div>
+          <div class="rowfont" style="width:52%;">谷活性:{{pklinedata.sjghx}}%</div>
         </div>
         <hr>
         <mt-cell :title="'姓名:'+caseInfo.name" :value="'ID:'+caseInfo.code"></mt-cell>
         <mt-cell :title="'年龄:'+caseInfo.age" :value="'性别:'+caseInfo.sex"></mt-cell>
         <mt-cell :title="'使用产品:'+caseInfo.ckmpro" :value="'注射剂量:'+caseInfo.ckzsjl"></mt-cell>
         <mt-cell :title="'注射频次:'+caseInfo.ckmfreq"></mt-cell>
-        <div class="rowfont">方案时间时间:{{caseInfo.ctime}}</div>
+        <div class="rowfont">方案时间:{{caseInfo.ctime}}</div>
       </div>
       <div class="footer">
         <div class="jbbtn" @click="goPage(-1)">上一页</div>
@@ -59,9 +61,11 @@
           xAxis: [{
             type: 'category',
             boundaryGap: false,
-            data: []
+            data: [],
+            // name:"时间(小时)"
           }],
           yAxis: [{
+            name:"活性(%)",
             type: 'value',
             axisLabel: {
               // formatter: (v,i)=>{
@@ -166,6 +170,12 @@
     padding: 1rem;
     border-radius: 5px;
     position: relative;
+    .xLabel{
+      position: absolute;
+      top:310px;
+      left:40%;
+      font-size:12px;
+    }
     .tuli{
       position: absolute;
       right:0px;
@@ -174,6 +184,7 @@
         margin:5px;
       }
     }
+    
     .rowfont{
       font-size:1rem;
       text-align:left;
@@ -219,4 +230,5 @@
     width: 42%;
   }
 
+  
 </style>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 33135 - 0
src/components/WorldMap.vue


+ 253 - 0
src/components/WorldMapNew.vue

@@ -0,0 +1,253 @@
+<template>
+  <div>
+    <div class="mapBg">
+      <div class="worldMap" id="worldMap" ref="worldMap" height="300"></div>
+    </div>
+    <div v-if="dialogVisible" style="background:#fff;left:50%;top:30%;
+    position:absolute;z-index:10000;border:1px oslid red;width:50%;height:300px;">
+    <h1 align="center">这里是国家地图</h1>
+    <button style="margin-top:30%;" @click="dialogVisible=false">关闭</button>
+    </diV>
+  </div>
+</template>
+
+<script>
+  import * as echarts from 'echarts'
+  import mapData from '../utils/map.js'
+
+  var cityData = [{
+    name: '长春',
+    value: [125.299633, 43.914039, 10],
+  }, ]
+  var szPoinUrl = "";
+
+  let imgBase64 = ''
+  let tempData1 = [{
+    name: '环境监测',
+    value: [-73.97622, 40.757498],
+    ph: 200,
+    offset: [70, -58],
+    padding: [12, 25, 56, 80],
+    imgurl: '',
+  }];
+  export default {
+    mounted() {
+      var worldChart = echarts.init(this.$refs["worldMap"]);
+      echarts.registerMap('world', mapData.registerMapData);
+      worldChart.setOption(this.option);
+
+      worldChart.on("georoam", function (params) {
+        var option = worldChart.getOption(); //获得option对象
+        if (params.zoom != null && params.zoom != undefined) {
+          //捕捉到缩放时
+          let mo = option.geo[0].zoom
+          option.geo[0].zoom = option.series[0].zoom; //下层geo的缩放等级跟着上层的geo一起改变
+          option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
+          // // 改变标记点随地图放大缩小
+          // // console.log(option.series)
+          // let size = option.series[0].zoom/mo
+          // if(option.series[0].zoom>mo){
+          // 	// console.log(option.series)
+          // 	option.series[2].symbolSize = [option.series[2].symbolSize[0]*size,option.series[2].symbolSize[1]*size]
+          // 	option.series[1].symbolSize=option.series[1].symbolSize*size
+          // 	option.series[1].label.fontSize=option.series[1].label.fontSize*size
+          // }else{
+          // 	option.series[2].symbolSize = [option.series[2].symbolSize[0]*size,option.series[2].symbolSize[1]*size]
+          // 	option.series[1].symbolSize = option.series[1].symbolSize*size
+          // 	option.series[1].label.fontSize = option.series[1].label.fontSize*size
+          // }
+          // // 改变标记点end
+        } else {
+          //捕捉到拖曳时
+          option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
+        }
+        // myChart.dispatchAction({ //来用程序主动渲染选框
+        // 	type: "restore",
+        // });
+        worldChart.setOption(option); //设置option
+      });
+
+      //
+      worldChart.on('click', params => {
+        console.log(111111111111)
+        this.dialogVisible = true;
+      })
+    },
+    computed: {
+      series() {
+        let res = [{
+          type: "map",
+          roam: true,
+          animationDurationUpdate: true,
+          label: {
+            show: !1,
+          },
+          tooltip: {
+            show: !1,
+          },
+          itemStyle: {
+            normal: {
+              borderColor: "#0F6DAC",
+              borderWidth: 0.2,
+              areaColor: {
+                type: "radial",
+                x: 0.5,
+                y: 0.5,
+                r: 0.8,
+                colorStops: [{
+                    offset: 0,
+                    color: "#061D35", // 0% 处的颜色
+                  },
+                  {
+                    offset: 1,
+                    color: "#061D35", // 100% 处的颜色
+                  },
+                ],
+                globalCoord: true, // 缺省为 false
+              },
+            },
+            emphasis: {
+              label: {
+                // show: !1,
+                color: "#fff",
+              },
+              areaColor: "#05223D",
+              //    shadowColor: 'rgb(12,25,50)',
+              borderWidth: 0.2,
+            },
+          },
+          aspectScale: 0.65, //长宽比
+          zoom: 1.12,
+          //     roam: false,
+          map: "world", //使用
+          // data: this.difficultData //热力图数据   不同区域 不同的底色
+        }]
+        tempData1.forEach(item => {
+          res.push({
+              type: 'scatter',
+              coordinateSystem: 'geo',
+              symbol: szPoinUrl,
+              symbolSize: [20, 20],
+              legendHoverLink: true,
+              z: 99999,
+              index: 99999,
+              label: {
+                show: true,
+                offset: item.offset, //偏移设置
+                fontSize: 14,
+                lineHeight: 23,
+                backgroundColor: {
+                  image: item.imgurl,
+                },
+                borderColor: '#106EAD',
+                padding: item.padding,
+                formatter(value) {
+                  return `{name|${value.data.name}\nPH值:${value.data.ph}}`;
+                },
+
+                rich: {
+                  name: {
+                    fontWeight: 'bold',
+                    fontSize: 16,
+                    color: '#fff',
+                    height: 100,
+                  }
+                },
+                color: '#fff',
+              },
+              data: [item],
+              showEffectOn: 'render',
+              rippleEffect: {
+                brushType: 'stroke',
+              },
+              hoverAnimation: true,
+              zlevel: 9999,
+            },
+
+          )
+        })
+        return res
+      },
+
+      option() {
+
+        return {
+          // backgroundColor: '#051421',
+          backgroundColor: 'transparent',
+          tooltip: {
+            trigger: "item",
+            formatter: function (params, ticket, callback) {
+              if (params.seriesType == "effectScatter") {
+                return params.marker + params.data.name + "" + params.data.value[2];
+              } else if (params.seriesType == "lines") {
+                return params.data.fromName + " -> " + params.data.toName + "<br />" + params.data.value;
+              } else {
+                return params.name;
+              }
+            },
+          },
+          grid: {
+            right: '8%',
+            // top:'5%'
+          },
+          geo: {
+            map: 'world',
+            aspectScale: 0.65, //长宽比
+            zoom: 1.12,
+            show: true,
+            tooltip: {
+              show: !1,
+            },
+            scaleLimit: {
+              min: 1,
+              max: 5,
+            },
+            label: {
+              show: !1,
+            },
+            animationDurationUpdate: 0,
+            roam: true,
+            itemStyle: {
+              normal: {
+                shadowColor: "#164A7C",
+                shadowOffsetX: 5,
+                shadowOffsetY: 5,
+              },
+            },
+          },
+          tooltip: {
+            trigger: "item",
+          },
+          zlevel: 999,
+          series: this.series
+        }
+      }
+    },
+    data() {
+      return {
+
+        dialogVisible: false
+      }
+    },
+  }
+
+</script>
+
+<style scoped>
+  .worldMap {
+    display: inline-block;
+    width: 100%;
+    height: 100vh;
+
+    background: #051421;
+    position: absolute;
+    z-index: -1;
+  }
+
+  .mapBg {
+    /* background: #051421;
+      position: absolute;
+      z-index: -1; */
+  }
+
+</style>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 285 - 0
src/components/WorldMapNew.vue.bk


+ 7 - 0
src/router/index.js

@@ -18,6 +18,8 @@ import PatInjectionList from '@/components/PatInjectionList'
 import PatRegister from '@/components/PatRegister'
 import PatCxsjLine from '@/components/PatCxsjLine'
 import PreTraitCase from '@/components/PreTraitCase'
+import WorldMapNew from '@/components/WorldMapNew'
+import WorldMap from '@/components/WorldMap'
 
 Vue.use(Router)
 
@@ -113,5 +115,10 @@ export default new Router({
       name: '预防治疗参考方案',
       component: PreTraitCase
     },
+    // {
+    //   path: '/map',
+    //   name: '世界地图',
+    //   component: WorldMapNew
+    // },
   ]
 })

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 32977 - 0
src/utils/map.js