Bladeren bron

优化代码

xiaochan 2 jaren geleden
bovenliggende
commit
b56f435ec3

+ 75 - 0
src/components/login/ReLoginComp.vue

@@ -0,0 +1,75 @@
+<script setup lang="ts">
+import {onMounted, ref} from "vue";
+import {ElIcon} from "element-plus";
+import {Loading} from "@element-plus/icons-vue";
+import {userInfoStore} from "@/utils/store-public";
+import store from '@/store'
+import {loginApi} from '@/api/login'
+
+const props = defineProps<{
+  success: () => void,
+  error: () => void
+}>()
+
+const reLogin = () => {
+  let params = {
+    codeRs: userInfoStore.value.codeRs,
+    password: userInfoStore.value.password
+  }
+
+  loginApi(params).then((res) => {
+    store.commit('user/tokenChange', res.token)
+    store.commit('user/sidChange', res.sid)
+    store.commit('user/infoChange', res)
+    props.success()
+  }).catch(() => {
+    props.error()
+  })
+
+}
+
+onMounted(() => {
+  reLogin()
+})
+
+</script>
+
+<template>
+  <div class="re-login_box">
+    <div class="re-login_header">
+      <h3>
+        令牌过期,正在重新登录。
+      </h3>
+    </div>
+    <div class="re-login_loading">
+      <el-icon class="is-loading" :size="100">
+        <Loading/>
+      </el-icon>
+    </div>
+  </div>
+</template>
+
+<style lang="scss">
+$re-login-width: 500px;
+
+.re-login_box {
+  position: fixed;
+  width: $re-login-width;
+  height: 20%;
+  border-radius: 5px;
+  top: 20%;
+  left: calc(50% - $re-login-width / 2);
+  box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);
+
+  .re-login_header {
+    text-align: center;
+  }
+
+  .re-login_loading {
+    text-align: center;
+  }
+
+}
+
+
+</style>

+ 36 - 0
src/components/login/re-login.ts

@@ -0,0 +1,36 @@
+// @ts-ignore
+import ReLoginComp from "./ReLoginComp.vue";
+import {h, render} from 'vue'
+import {ElMessage} from "element-plus";
+
+const login = document.createElement('div');
+let current = false
+const reLogin = () => {
+    return new Promise<void>((resolve, reject) => {
+        if (current) {
+            resolve()
+            return
+        }
+        current = true
+        document.body.append(login);
+
+        const re = h(ReLoginComp, {
+            success: () => {
+                ElMessage.success('登录成功,请重新执行操作。')
+                document.body.removeChild(login)
+                resolve()
+                current = false
+            },
+            error: () => {
+                ElMessage.error('自动登录失败,请重新登录')
+                document.body.removeChild(login)
+                reject()
+                current = false
+            }
+        }, null)
+        render(re, login)
+    })
+}
+
+
+export default reLogin

+ 2 - 0
src/utils/store-public.ts

@@ -6,6 +6,8 @@ export const userInfoStore: ComputedRef<{
     code: string
     // 工号
     codeRs: string
+    // 密码
+    password: string
     // 科室编码
     deptCode: string
     // 科室名称

+ 1 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/components/EmrAudit.vue

@@ -84,7 +84,7 @@
                   :rows="2"/>
       </template>
     </el-table-column>
-    <el-table-column prop="numberOfDefects" label="缺陷数">
+    <el-table-column prop="numberOfDefects" label="缺陷数" width="45">
       <template #default="{row}" v-if="permissions()">
         <el-input-number style="width: 40px"
                          v-model="row.numberOfDefects"

+ 2 - 3
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/query-die/comp/AnalysisChart.vue

@@ -2,7 +2,6 @@
 import {defineProps, nextTick} from "vue";
 import {QueryDieReturn} from "@/api/emr-control/query-die";
 import * as echarts from 'echarts';
-import sleep from "@/utils/sleep";
 import {windowSizeStore} from "@/utils/store-public";
 
 
@@ -13,7 +12,6 @@ const {resData} = defineProps<{
 
 const establishDiv = async (el, value, name) => {
   await nextTick();
-  await sleep(1000);
   //有的话就获取已有echarts实例的DOM节点。
   let myChart = echarts.getInstanceByDom(el);
   // 如果不存在,就进行初始化。
@@ -67,7 +65,8 @@ const establishDiv = async (el, value, name) => {
       <el-row>
         <el-col :span="12" v-for="(value, key) in resData.analysis"
                 style="height: 200px;">
-          <div :ref="(el) => establishDiv(el , value, key)" style="height: 200px; width: 100%"/>
+          <div :ref="(el) => establishDiv(el , value, key)"
+               style="height: 200px; width: 500px"/>
         </el-col>
       </el-row>
     </el-main>

+ 0 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng.ts

@@ -11,7 +11,6 @@ import EventBus from "../../../../utils/mitt";
 import XEUtils from 'xe-utils'
 import {computed} from 'vue'
 import {getAncillaryInformation} from '../../../../api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing'
-import sleep from "../../../../utils/sleep";
 
 // 患者信息
 export const huanZheXinXi = ref<{

+ 9 - 6
src/views/settings/Test.vue

@@ -1,12 +1,15 @@
 <template>
-  <div style="height: 400px;width: 400px;border: 1px solid #000"
-       v-title="'测试一下,我的title'">
-    <div style="height: 200px;width: 200px;border: 1px solid #000"
-         v-title="'测试一下,assdsa'">
-    </div>
-  </div>
+
 </template>
 
 <script setup lang="ts">
+import {onMounted} from "vue";
+
+onMounted(() => {
+  let promise = navigator.mediaDevices.getDisplayMedia({
+    video: true
+  });
+
+})
 
 </script>