See999 4 years ago
parent
commit
c9e24d4eb8

+ 12 - 2
config/index.js View File

@@ -10,7 +10,16 @@ module.exports = {
10 10
     // Paths
11 11
     assetsSubDirectory: 'static',
12 12
     assetsPublicPath: '/',
13
-    proxyTable: {},
13
+    proxyTable: {
14
+      '/api': {
15
+        target: 'http://hf.sgjyun.com',//设置你调用的接口域名和端口号 别忘了加http
16
+        changeOrigin: true,//设置true 代表跨域访问
17
+        secure: false,  // 如果是https接口,需要配置这个参数
18
+        pathRewrite: {
19
+          '^/api': '/'//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
20
+        }
21
+      }
22
+    },
14 23
 
15 24
     // Various Dev Server settings
16 25
 
@@ -93,5 +102,6 @@ module.exports = {
93 102
     // `npm run build --report`
94 103
     // Set to `true` or `false` to always turn it on or off
95 104
     bundleAnalyzerReport: process.env.npm_config_report
96
-  }
105
+  },
106
+  
97 107
 }

+ 3 - 1
index.html View File

@@ -17,6 +17,7 @@
17 17
   </head>
18 18
 
19 19
   <body>
20
+    <script src="https://cdn.bootcdn.net/ajax/libs/reconnecting-websocket/1.0.0/reconnecting-websocket.min.js"></script>
20 21
     <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
21 22
     <script src="<%= htmlWebpackPlugin.options.path %>/tinymce4.7.5/tinymce.min.js"></script>
22 23
     <script src="<%= htmlWebpackPlugin.options.path %>/neditor/neditor.config.js"></script>
@@ -24,12 +25,13 @@
24 25
     <script src="<%= htmlWebpackPlugin.options.path %>/neditor/neditor.service.js"></script>
25 26
     <script src="<%= htmlWebpackPlugin.options.path %>/neditor/i18n/zh-cn/zh-cn.js"></script>
26 27
     <script src="<%= htmlWebpackPlugin.options.path %>/neditor/neditor.parse.min.js"></script>
27
-
28
+    
28 29
     <div id="app"></div>
29 30
     <!-- built files will be auto injected -->
30 31
     <link
31 32
       rel="stylesheet"
32 33
       href="//at.alicdn.com/t/font_795029_9ftx46rzd47.css"
33 34
     />
35
+    
34 36
   </body>
35 37
 </html>

+ 58 - 3
src/App.vue View File

@@ -5,20 +5,75 @@
5 5
 </template>
6 6
 
7 7
 <script>
8
+import axios from 'axios'
9
+import { getOrgs, changeOrg } from "@/api/config";
8 10
 export default {
9 11
   name: "App",
10 12
   data () {
11 13
     return {
12
-      isRouterAlive: true
14
+      isRouterAlive: true,
15
+
16
+      showErr: false,
17
+      showWsErr: false,
18
+    }
19
+  },
20
+  computed: {
21
+    websocket() {
22
+      return this.$store.state.user.websocket;
13 23
     }
14
-  }, methods: {
24
+  },
25
+  created(){
26
+    getOrgs().then(response => {
27
+      if (response.data.state === 1) {
28
+        var creator = response.data.data.creator;
29
+        console.log("creator", creator);
30
+        sessionStorage.setItem("org_id",creator.org_id);
31
+        sessionStorage.setItem("admin_user_id",creator.admin_user_id);
32
+        this.getToken(creator.org_id,creator.admin_user_id)
33
+      }
34
+    });
35
+    
36
+  },
37
+  methods: {
15 38
     reload () {
16 39
       this.isRouterAlive = false
17 40
       this.$nextTick(function () {
18 41
         this.isRouterAlive = true
19 42
       })
43
+    },
44
+    getToken(orgId,adminUserId){
45
+      axios.get('/api/index/gettoken/'+ orgId + '/'+ adminUserId
46
+        ).then((res) => {
47
+        console.log('res',res.data)
48
+        
49
+        if(res.data.code == 0){
50
+          let token = res.data.data.token
51
+          localStorage.setItem("token",token)
52
+          let http = 'ws://socket.sgjyun.com?token='
53
+          console.log(this.$store.state.user.websocket)
54
+          this.$store.state.user.websocket = new ReconnectingWebSocket(
55
+            http + token
56
+          );
57
+          this.$store.state.user.websocket.timeoutInterval = 3000;
58
+          setInterval(() => {
59
+            if (navigator.onLine == false) {
60
+              this.showWsErr = true;
61
+              this.wsErrMsg = "网络已断开,请检查网络后重新打开页面";
62
+              console.log('navigator',navigator)
63
+            } else if (
64
+              navigator.onLine == true &&
65
+              this.websocket.readyState == 1
66
+            ) {
67
+              this.showWsErr = false;
68
+            }
69
+            this.websocket.send("1");
70
+          }, 3000);
71
+        }
72
+        
73
+      })
20 74
     }
21
-  }
75
+  },
76
+  
22 77
 };
23 78
 </script>
24 79
 

+ 3 - 0
src/main.js View File

@@ -28,6 +28,9 @@ import VueClipboard from 'vue-clipboard2'
28 28
 
29 29
 import * as filters from './filters' // global filters
30 30
 
31
+import * as voicePromptFun from './utils/voicePrompt' 
32
+Vue.prototype.voicePrompt = voicePromptFun.voicePrompt  //语音提醒
33
+
31 34
 Vue.use(Element, {
32 35
   size: 'medium', // set element-ui default size
33 36
   i18n: (key, value) => i18n.t(key, value)

+ 2 - 1
src/store/modules/user.js View File

@@ -13,7 +13,8 @@ const user = {
13 13
     roles: [],
14 14
     setting: {
15 15
       articlePlatform: []
16
-    }
16
+    },
17
+    websocket: null,
17 18
   },
18 19
 
19 20
   mutations: {

+ 66 - 0
src/utils/request1.js View File

@@ -0,0 +1,66 @@
1
+import axios from 'axios'
2
+import { Message, MessageBox } from 'element-ui'
3
+import store from '@/store'
4
+// import { getToken } from '@/utils/auth'
5
+
6
+// create an axios instance
7
+const service = axios.create({
8
+  baseURL: 'http://hf.sgjyun.com', // api的base_url
9
+  timeout: 30000, // request timeout
10
+  withCredentials: true
11
+})
12
+
13
+// request interceptor
14
+// service.interceptors.request.use(config => {
15
+//   Do something before request is sent
16
+//   if (store.getters.token) {
17
+//     让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
18
+//     config.headers['X-Token'] = getToken()
19
+//   }
20
+//   return config
21
+// }, error => {
22
+//   Do something with request error
23
+//   console.log(error) // for debug
24
+//   Promise.reject(error)
25
+// })
26
+
27
+// respone interceptor
28
+service.interceptors.response.use(
29
+  // response => response,
30
+  response => {
31
+    const res = response.data
32
+    // console.log(res)
33
+    if (res.state !== 1) {
34
+      // console.log(res)
35
+      if (res.code === 6002) {
36
+        store.dispatch('FrontendLogout').then(() => {
37
+          location.reload() // 为了重新实例化vue-router对象 避免bug
38
+        })
39
+        // MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {
40
+        //   confirmButtonText: '重新登录',
41
+        //   cancelButtonText: '取消',
42
+        //   type: 'warning'
43
+        // }).then(() => {
44
+        //   store.dispatch('FrontendLogout').then(() => {
45
+        //     location.reload() // 为了重新实例化vue-router对象 避免bug
46
+        //   })
47
+        // })
48
+        return Promise.reject('error')
49
+      } else {
50
+        return response
51
+      }
52
+    } else {
53
+      return response
54
+    }
55
+  },
56
+  error => {
57
+    // console.log('err' + error) // for debug
58
+    Message({
59
+      message: "网络错误",
60
+      type: 'error',
61
+      duration: 3000
62
+    })
63
+    return Promise.reject(error)
64
+  })
65
+
66
+export default service

+ 7 - 0
src/utils/voicePrompt.js View File

@@ -0,0 +1,7 @@
1
+function voicePrompt (text){
2
+    new Audio(text).play();
3
+}
4
+ 
5
+export {
6
+    voicePrompt
7
+}

+ 2 - 1
src/xt_pages/dialysis/PatientBox.vue View File

@@ -524,6 +524,7 @@ export default {
524 524
             device_number_map[device_number.id] = device_number;
525 525
           }
526 526
           this.device_number_map = device_number_map;
527
+          this.getLongAdvice()
527 528
         } else {
528 529
           this.$message.error(resp.msg);
529 530
         }
@@ -590,7 +591,7 @@ export default {
590 591
       this.date = schedual.schedule_date
591 592
       this.patient_id = schedual.patient_id
592 593
       this.getScheduleDetail()
593
-      this.getLongAdvice()
594
+      // this.getLongAdvice()
594 595
       this.$refs.prescription.show(this.prescription,schedual);
595 596
       
596 597
     },

+ 5 - 6
src/xt_pages/sign/calling.vue View File

@@ -6,17 +6,17 @@
6 6
         <div class="app-container">
7 7
             <el-tabs v-model="activeName">
8 8
                 <el-tab-pane label="透前叫号" name="first">
9
-                    <before-dialysis-calling></before-dialysis-calling>
9
+                    <before-dialysis-calling v-if="activeName == 'first'"></before-dialysis-calling>
10 10
                 </el-tab-pane>
11 11
                 <el-tab-pane label="上机叫号" name="second">
12
-                    <computer-calling></computer-calling>
12
+                    <computer-calling v-if="activeName == 'second'"></computer-calling>
13 13
                 </el-tab-pane>
14
-                <el-tab-pane label="诊台配置" name="third">
14
+                <!-- <el-tab-pane label="诊台配置" name="third">
15 15
                     <treatment-configure></treatment-configure>
16 16
                 </el-tab-pane>
17 17
                 <el-tab-pane label="叫号配置" name="fourth">
18 18
                     <calling-configure></calling-configure>
19
-                </el-tab-pane>
19
+                </el-tab-pane> -->
20 20
             </el-tabs>
21 21
         </div>
22 22
     </div>
@@ -46,8 +46,7 @@ export default {
46 46
             activeName:'first'
47 47
         }
48 48
     },
49
-    methods:{
50
-    }
49
+    
51 50
 }
52 51
 </script>
53 52
       

+ 136 - 7
src/xt_pages/sign/components/beforeDialysisCalling.vue View File

@@ -11,16 +11,16 @@
11 11
         </div>
12 12
         <div style="display:flex;justify-content: space-between;">
13 13
             <div class="callingArea">
14
-                <waiting-called v-if="patientStateVal == 0"></waiting-called>
15
-                <called v-if="patientStateVal == 1"></called>
14
+                <waiting-called v-if="patientStateVal == 0" :waitingCalled='waitingCalled' ></waiting-called>
15
+                <called v-if="patientStateVal == 1" :called="called"></called>
16 16
             </div>
17 17
             <div class="nowCalling" v-if="patientStateVal == 0">
18 18
                 <p class="nowCallingTitle">当前叫号</p>
19
-                <p class="nowCallingName">李小明</p>
20
-                <p class="nowCallingTime">签到时间:07:20</p>
21
-                <p class="nowCallingTime">下一位:张三</p>
22
-                <el-button style="margin: 30px 0 20px 0;">重新叫号</el-button>
23
-                <el-button type="primary" style="margin-left:0;">&ensp;&ensp;叫号&ensp;&ensp;</el-button>
19
+                <p class="nowCallingName">{{ fisrtQueueInfo.patient_name }}</p>
20
+                <p class="nowCallingTime">签到时间:{{ fisrtQueueInfo.create_time }}</p>
21
+                <el-button type="primary" @click="call(fisrtQueueInfo.patient_id)" style="margin-left:0;margin: 30px 0 20px 0;">&ensp;叫号&ensp;</el-button>
22
+                <el-button style="margin: 0px 0 20px 0;" @click="pass(fisrtQueueInfo.patient_id)">&ensp;过号&ensp;</el-button>
23
+                <el-button style="margin:0 auto;" @click="next(fisrtQueueInfo.patient_id)">下一位</el-button>
24 24
             </div>
25 25
         </div>
26 26
     </div>
@@ -28,6 +28,8 @@
28 28
 
29 29
 
30 30
 <script>
31
+const moment = require('moment')
32
+import axios from 'axios'
31 33
 import waitingCalled from './waitingCalled'
32 34
 import called from './called'
33 35
 export default {
@@ -42,12 +44,139 @@ export default {
42 44
                 {value: 1,label: '已叫号'},
43 45
             ],
44 46
             patientStateVal: 0,
47
+            waitingCalled:[],
48
+            called:[],
49
+            fisrtQueueInfo:{}
45 50
         }
46 51
     },
52
+    computed: {
53
+        websocket() {
54
+            return this.$store.state.user.websocket;
55
+        },
56
+    },
57
+    created(){
58
+        console.log('beforeDialysisCallingbeforeDialysisCalling')
59
+        this.initData = {
60
+            cmd: "queue/join",
61
+            data: {type:3,page:0,size:0},
62
+        };
63
+        this.websocketSend(this.initData)
64
+    },
65
+    beforeMount() {
66
+        console.log('beforeMountbeforeMount')
67
+        this.websocketMess();
68
+    },
47 69
     methods:{
70
+        websocketSend(data) {
71
+            try {
72
+                this.websocket.send(JSON.stringify(data))
73
+                
74
+            } catch (error) {
75
+                this.showError = true;
76
+                this.showIndex = 4;
77
+                this.errorInfo = "网络异常,请稍后退出重试!";
78
+            }
79
+        },
80
+        websocketMess() {
81
+            this.websocket.onmessage = e => {
82
+                let res = JSON.parse(e.data);
83
+                // let res = re.data;
84
+                console.log('res3333333333',res)
85
+                if(res.channel == 'queue/join'){
86
+                    res.data.fisrtQueueInfo.create_time = moment(res.data.fisrtQueueInfo.create_time * 1000).format('HH:mm')
87
+                    this.fisrtQueueInfo = res.data.fisrtQueueInfo
88
+                    let arr = res.data.patientQueueList.data
89
+                    let waitingCalledArr = []
90
+                    let calledArr = []
91
+                    arr.map(item => {
92
+                        if(item.status == 1){
93
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
94
+                            waitingCalledArr.push(item)
95
+                        }else if(item.status == 2){
96
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
97
+                            calledArr.push(item)
98
+                        }
99
+                    })
100
+                    console.log('waitingCalledArr待叫号',waitingCalledArr)
101
+                    console.log('waitingCalledArr以较好',calledArr)
102
+                    this.waitingCalled = waitingCalledArr
103
+                    this.called = calledArr
104
+                }else if(res.channel == 'allQueueList'){
105
+                    let arr = res.data.queue_list.data
106
+                    let waitingCalledArr = []
107
+                    let calledArr = []
108
+                    arr.map(item => {
109
+                        if(item.status == 1){
110
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
111
+                            waitingCalledArr.push(item)
112
+                        }else if(item.status == 2){
113
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
114
+                            calledArr.push(item)
115
+                        }
116
+                    })
117
+                    this.waitingCalled = waitingCalledArr
118
+                    this.called = calledArr
119
+                }else if(res.channel == 'patientCallInfo'){
120
+                    res.data.patientInfo.create_time = moment(res.data.patientInfo.create_time * 1000).format('HH:mm')
121
+                    this.fisrtQueueInfo = res.data.patientInfo
122
+                }
123
+            }
124
+        },
48 125
         handleStateChange: function(index) {
49 126
             this.patientStateVal = index
50 127
         },
128
+        call(patient_id){
129
+            console.log('patient_id',patient_id)
130
+            let org_id =  parseInt(sessionStorage.getItem("org_id"));
131
+            let admin_user_id = parseInt(sessionStorage.getItem("admin_user_id"));
132
+            axios.get('/api/index/callpatient?org_id=' + org_id + '&patient_id=' + patient_id + '&admin_user_id=' + admin_user_id).then(res => {
133
+                console.log(res)
134
+                // let patientArr = res.data.queue_list.data
135
+                // this.patientArr = patientArr
136
+                // this.$emit('child-event',this.patientArr)
137
+                if(res.data.code == 200){
138
+                    this.$message({
139
+                        message: res.data.msg,
140
+                        type: 'success'
141
+                    });
142
+                }
143
+            })
144
+        },
145
+        next(patient_id){
146
+            console.log('patient_id',patient_id)
147
+            let org_id =  parseInt(sessionStorage.getItem("org_id"));
148
+            let admin_user_id = parseInt(sessionStorage.getItem("admin_user_id"));
149
+            axios.get('/api/index/nextcall?org_id=' + org_id + '&patient_id=' + patient_id + '&admin_user_id=' + admin_user_id).then(res => {
150
+                console.log(res)
151
+                // let patientArr = res.data.queue_list.data
152
+                // this.patientArr = patientArr
153
+                // this.$emit('child-event',this.patientArr)
154
+                if(res.data.code == 200){
155
+                    this.$message({
156
+                        message: res.data.msg,
157
+                        type: 'success'
158
+                    });
159
+                }
160
+            })
161
+        },
162
+        pass(patient_id){
163
+            console.log('patient_id',patient_id)
164
+            let org_id =  parseInt(sessionStorage.getItem("org_id"));
165
+            let admin_user_id = parseInt(sessionStorage.getItem("admin_user_id"));
166
+            axios.get('/api/index/passcall?org_id=' + org_id + '&patient_id=' + patient_id + '&admin_user_id=' + admin_user_id).then(res => {
167
+                console.log(res)
168
+                // let patientArr = res.data.queue_list.data
169
+                // this.patientArr = patientArr
170
+                // this.$emit('child-event',this.patientArr)
171
+                if(res.data.code == 200){
172
+                    this.$message({
173
+                        message: res.data.msg,
174
+                        type: 'success'
175
+                    });
176
+                }
177
+            })
178
+        },
179
+
51 180
     }
52 181
 }
53 182
 </script>

+ 42 - 9
src/xt_pages/sign/components/called.vue View File

@@ -1,44 +1,77 @@
1 1
 <template>
2 2
     <div class="page_called">
3
-        <div class="calledOne" v-for="item in 12" :key="item">
3
+        <div class="calledOne" v-for="(item,i) in called" :key="i">
4 4
             <div class="calledOneLeft">
5 5
                 <img src="https://images.shengws.com/201809182128111.png?imageView2/2/w/500/h/500/q/90" alt="">
6 6
                 <div class="name">
7
-                    <p>吴保龄</p>
7
+                    <p>{{ item.patient_name }}</p>
8 8
                     <p>
9
-                        <span class="nameTips">签到时间:07:00:00</span>
10
-                        <span class="nameTips" v-if="index == 1">床位号:A区5号床</span>
11
-                        <span class="nameTips" v-else>叫号时间:07:30:00</span>
9
+                        <span class="nameTips">签到时间:{{ item.create_time }}</span>
10
+                        <span class="nameTips" v-if="index == 1">床位号:{{ item.partition_name + item.bed_name }}</span>
11
+                        <span class="nameTips" v-else>叫号时间:{{ getCallTime(item.remark) }}</span>
12 12
                     </p>
13 13
                     <p>
14
-                        <span class="nameTips">透前体重:59kg</span>
15
-                        <span class="nameTips lastNameTips">透前血压:120/110mmHg</span>
14
+                        <span class="nameTips">透前体重:{{ item.weight_before ? item.weight_before : '/' }}kg</span>
15
+                        <span class="nameTips lastNameTips">透前血压:{{ item.systolic_blood_pressure }}/{{ item.diastolic_blood_pressure }}mmHg</span>
16 16
                     </p>
17 17
                 </div>
18 18
             </div>
19
-            <div class="calledOneRight" v-if="index == 1">
19
+            <div class="calledOneRight" v-if="index == 1" @click="call(item.patient_id)">
20 20
                 <img src="../../../assets/img/volume.png" alt="">
21 21
             </div>
22 22
         </div>
23
+        <div class="NoData" v-show="called.length == 0">
24
+            <img src="@/assets/img/data.jpg" alt="">
25
+        </div>
23 26
     </div>
24 27
 </template>
25 28
 
26 29
 <script>
30
+import axios from 'axios'
27 31
 export default {
28 32
     props:{
29
-        index:Number
33
+        index:Number,
34
+        called:Array
30 35
     },
31 36
     data(){
32 37
         return{
33 38
 
34 39
         }
35 40
     },
41
+    methods:{
42
+        getCallTime(time){
43
+            let obj = JSON.parse(time)
44
+            let str = ''
45
+            str = obj.typeone[0].call_time.split(' ')[1]
46
+            return str
47
+        },
48
+        call(patient_id){
49
+            console.log('patient_id',patient_id)
50
+            let org_id =  parseInt(sessionStorage.getItem("org_id"));
51
+            let admin_user_id = parseInt(sessionStorage.getItem("admin_user_id"));
52
+            axios.get('/api/index/upcall?org_id=' + org_id + '&patient_id=' + patient_id + '&admin_user_id=' + admin_user_id).then(res => {
53
+                console.log(res)
54
+                // let patientArr = res.data.queue_list.data
55
+                // this.patientArr = patientArr
56
+                // this.$emit('child-event',this.patientArr)
57
+                if(res.data.code == 200){
58
+                    this.$message({
59
+                        message: res.data.msg,
60
+                        type: 'success'
61
+                    });
62
+                }
63
+                
64
+            })
65
+            
66
+        }
67
+    }
36 68
 }
37 69
 </script>
38 70
 
39 71
 
40 72
 <style lang="scss" scoped>
41 73
 .page_called{
74
+    width:100%;
42 75
     .calledOne{
43 76
         border: 1px #e5e5ee solid;
44 77
         padding: 9px 0;

+ 115 - 7
src/xt_pages/sign/components/computerCalling.vue View File

@@ -11,22 +11,23 @@
11 11
         </div>
12 12
         <div style="display:flex;justify-content: space-between;">
13 13
             <div class="callingArea">
14
-                <called v-if="patientStateVal == 0" :index='1'></called>
15
-                <called v-if="patientStateVal == 1"></called>
14
+                <called v-if="patientStateVal == 0" :index='1' :called='waitingCalled'></called>
15
+                <called v-if="patientStateVal == 1" :called="called"></called>
16 16
             </div>
17 17
             <div class="nowCalling" v-if="patientStateVal == 0">
18 18
                 <p class="nowCallingTitle">当前叫号</p>
19
-                <p class="nowCallingName">李小明</p>
20
-                <p class="nowCallingTime">签到时间:07:20</p>
21
-                <p class="nowCallingTime">下一位:张三</p>
22
-                <el-button style="margin: 30px 0 20px 0;">重新叫号</el-button>
23
-                <el-button type="primary" style="margin-left:0;">&ensp;&ensp;叫号&ensp;&ensp;</el-button>
19
+                <p class="nowCallingName">{{ fisrtQueueInfo.patient_name }}</p>
20
+                <p class="nowCallingTime">签到时间:{{ fisrtQueueInfo.create_time }}</p>
21
+                <p><el-button type="primary" @click="call(fisrtQueueInfo.patient_id)" style="margin-left:0;margin: 30px 0 20px 0;">&ensp;叫号&ensp;</el-button></p>
22
+                <el-button style="margin:0 auto;" @click="next(fisrtQueueInfo.patient_id)">下一位</el-button>
24 23
             </div>
25 24
         </div>
26 25
     </div>
27 26
 </template>
28 27
 
29 28
 <script>
29
+const moment = require('moment')
30
+import axios from 'axios'
30 31
 import called from './called'
31 32
 export default {
32 33
     components:{
@@ -39,12 +40,119 @@ export default {
39 40
                 {value: 1,label: '已叫号'},
40 41
             ],
41 42
             patientStateVal: 0,
43
+            waitingCalled:[],
44
+            called:[],
45
+            fisrtQueueInfo:{}
42 46
         }
43 47
     },
48
+    computed: {
49
+        websocket() {
50
+            return this.$store.state.user.websocket;
51
+        },
52
+    },
53
+    created(){
54
+        this.initData = {
55
+            cmd: "queue/join",
56
+            data: {type:4,page:0,size:0},
57
+        };
58
+        this.websocketSend(this.initData)
59
+    },
60
+    beforeMount() {
61
+        this.websocketMess();
62
+    },
44 63
     methods:{
64
+        websocketSend(data) {
65
+            try {
66
+                this.websocket.send(JSON.stringify(data))
67
+                
68
+            } catch (error) {
69
+                this.showError = true;
70
+                this.showIndex = 4;
71
+                this.errorInfo = "网络异常,请稍后退出重试!";
72
+            }
73
+        },
74
+        websocketMess() {
75
+            this.websocket.onmessage = e => {
76
+                let res = JSON.parse(e.data);
77
+                // let res = re.data;
78
+                console.log('res',res)
79
+                if(res.channel == 'queue/join'){
80
+                    res.data.fisrtQueueInfo.create_time = moment(res.data.fisrtQueueInfo.create_time * 1000).format('HH:mm')
81
+                    this.fisrtQueueInfo = res.data.fisrtQueueInfo
82
+                    let arr = res.data.patientQueueList.data
83
+                    let waitingCalledArr = []
84
+                    let calledArr = []
85
+                    arr.map(item => {
86
+                        if(item.status == 2){
87
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
88
+                            waitingCalledArr.push(item)
89
+                        }else if(item.status == 3){
90
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
91
+                            calledArr.push(item)
92
+                        }
93
+                    })
94
+                    console.log('waitingCalledArr',waitingCalledArr)
95
+                    console.log('waitingCalledArr',calledArr)
96
+                    this.waitingCalled = waitingCalledArr
97
+                    this.called = calledArr
98
+                }else if(res.channel == 'allQueueList'){
99
+                    let arr = res.data.queue_list.data
100
+                    let waitingCalledArr = []
101
+                    let calledArr = []
102
+                    arr.map(item => {
103
+                        if(item.status == 2){
104
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
105
+                            waitingCalledArr.push(item)
106
+                        }else if(item.status == 3){
107
+                            item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
108
+                            calledArr.push(item)
109
+                        }
110
+                    })
111
+                    this.waitingCalled = waitingCalledArr
112
+                    this.called = calledArr
113
+                }else if(res.channel == 'patientCallInfo'){
114
+                    res.data.patientInfo.create_time = moment(res.data.patientInfo.create_time * 1000).format('HH:mm')
115
+                    this.fisrtQueueInfo = res.data.patientInfo
116
+                }
117
+            }
118
+        },
45 119
         handleStateChange: function(index) {
46 120
             this.patientStateVal = index
47 121
         },
122
+        call(patient_id){
123
+            console.log('patient_id',patient_id)
124
+            let org_id =  parseInt(sessionStorage.getItem("org_id"));
125
+            let admin_user_id = parseInt(sessionStorage.getItem("admin_user_id"));
126
+            axios.get('/api/index/callpatient?org_id=' + org_id + '&patient_id=' + patient_id + '&admin_user_id=' + admin_user_id).then(res => {
127
+                console.log(res)
128
+                // let patientArr = res.data.queue_list.data
129
+                // this.patientArr = patientArr
130
+                // this.$emit('child-event',this.patientArr)
131
+                if(res.data.code == 200){
132
+                    this.$message({
133
+                        message: res.data.msg,
134
+                        type: 'success'
135
+                    });
136
+                }
137
+            })
138
+        },
139
+        next(patient_id){
140
+            console.log('patient_id',patient_id)
141
+            let org_id =  parseInt(sessionStorage.getItem("org_id"));
142
+            let admin_user_id = parseInt(sessionStorage.getItem("admin_user_id"));
143
+            axios.get('/api/index/nextupcall?org_id=' + org_id + '&patient_id=' + patient_id + '&admin_user_id=' + admin_user_id).then(res => {
144
+                console.log(res)
145
+                // let patientArr = res.data.queue_list.data
146
+                // this.patientArr = patientArr
147
+                // this.$emit('child-event',this.patientArr)
148
+                if(res.data.code == 200){
149
+                    this.$message({
150
+                        message: res.data.msg,
151
+                        type: 'success'
152
+                    });
153
+                }
154
+            })
155
+        },
48 156
     }
49 157
 }
50 158
 </script>

+ 55 - 4
src/xt_pages/sign/components/waitingCalled.vue View File

@@ -1,22 +1,73 @@
1 1
 <template>
2 2
     <div class="waitingCalled">
3
-        <div class="waitingOne" v-for="item in 12" :key="item">
3
+        <div class="waitingOne" v-for="(item,index) in waitingCalled" :key="index">
4 4
             <div class="waitingOneLeft">
5 5
                 <img src="https://images.shengws.com/201809182128111.png?imageView2/2/w/500/h/500/q/90" alt="">
6 6
                 <div class="name">
7
-                    <p>吴保龄</p>
8
-                    <p>签到时间:07:00:00</p>
7
+                    <p>{{ item.patient_name }}</p>
8
+                    <p>签到时间:{{ item.create_time }}</p>
9 9
                 </div>
10 10
             </div>
11
-            <div class="waitingOneRight">
11
+            <div class="waitingOneRight" @click="call(item.patient_id)">
12 12
                 <img src="../../../assets/img/volume.png" alt="">
13 13
             </div>
14 14
         </div>
15
+        <div class="NoData" v-show="waitingCalled.length == 0">
16
+            <img src="@/assets/img/data.jpg" alt="">
17
+        </div>
15 18
     </div>
16 19
 </template>
17 20
 
21
+<script>
22
+import axios from 'axios'
23
+export default {
24
+    props:{
25
+        waitingCalled:Array
26
+    },
27
+    data(){
28
+        return{
29
+            patientArr:[]
30
+        }
31
+    },
32
+    created(){
33
+
34
+    },
35
+    methods:{
36
+        call(patient_id){
37
+            console.log('patient_id',patient_id)
38
+            let org_id =  parseInt(sessionStorage.getItem("org_id"));
39
+            let admin_user_id = parseInt(sessionStorage.getItem("admin_user_id"));
40
+            axios.get('/api/index/callpatient?org_id=' + org_id + '&patient_id=' + patient_id + '&admin_user_id=' + admin_user_id).then(res => {
41
+                console.log(res)
42
+                // let patientArr = res.data.queue_list.data
43
+                // this.patientArr = patientArr
44
+                // this.$emit('child-event',this.patientArr)
45
+                if(res.data.code == 200){
46
+                    this.$message({
47
+                        message: res.data.msg,
48
+                        type: 'success'
49
+                    });
50
+                }
51
+                
52
+            })
53
+            
54
+        }
55
+    }
56
+    // watch:{
57
+    //     waitingCalled:{
58
+    //         handler(val){
59
+    //             console.log('val',val)
60
+    //             this.waitingCalled = val
61
+    //         },
62
+    //         deep:true
63
+    //     }
64
+    // }
65
+}
66
+</script>
67
+
18 68
 <style lang="scss" scoped>
19 69
 .waitingCalled{
70
+    width: 100%;
20 71
     .waitingOne{
21 72
         border: 1px #e5e5ee solid;
22 73
         padding: 9px 0;

+ 448 - 73
src/xt_pages/sign/lineUp.vue View File

@@ -1,79 +1,423 @@
1 1
 <template>
2
-    <div class="app-container">
3
-        <div class="page_lineUp">
4
-            <div class="lineUpTitle">
5
-                <div>唐山朝阳医院<span>温馨提示:请注意排队叫号,依次叫号就诊上机,谢谢配合</span></div>
6
-                <div>2020.8.18   07:22(星期四)</div>
7
-            </div>
8
-            <div class="lineUpMain">
9
-                <div class="lineUpMainLeft">
10
-                    <div class="lineUpMainLeftTitle">
11
-                        <p style="width:14%">排号</p>
12
-                        <p style="width:14%">姓名</p>
13
-                        <p style="width:14%">病例号</p>
14
-                        <p style="width:14%">床位号</p>
15
-                        <p style="width:14%">治疗状态</p>
16
-                        <p style="width:14%">上机时间</p>
17
-                        <p style="width:14%">预计下机时间</p>
18
-                    </div>
19
-                    <div class="lineUpList">
20
-                        <div class="lineUpListOne" v-for="item in 8" :key="item">
21
-                            <p style="width:14%">P01</p>
22
-                            <p style="width:14%">张*等</p>
23
-                            <p style="width:14%">001</p>
24
-                            <p style="width:14%">普通区1号床</p>
25
-                            <p style="width:14%">已下机</p>
26
-                            <p style="width:14%">09:01</p>
27
-                            <p style="width:14%">09:01</p>
2
+    <div class="main-contain">
3
+        <div class="position">
4
+            <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+            <el-button
6
+                size="small"
7
+                icon="el-icon-menu"
8
+                @click="fullscreenboard"
9
+                type="primary"
10
+                >全屏投影</el-button
11
+            >
12
+        </div>
13
+        <div id="fullscreenbroad" v-show="dialogTableVisible">
14
+            <el-row class="fullRow">
15
+                <el-button
16
+                @click="openSetting"
17
+                icon="el-icon-setting"
18
+                circle
19
+                id="fullscreenbroad-setting"
20
+                ></el-button>
21
+                <el-button
22
+                type="primary"
23
+                icon="el-icon-rank"
24
+                v-if="showSetting"
25
+                id="fullscreenbroad-setting"
26
+                @click="togglefullscreen"
27
+                >切换模式</el-button
28
+                >
29
+                <el-button
30
+                type="primary"
31
+                icon="el-icon-menu"
32
+                v-if="showSetting"
33
+                id="fullscreenbroad-setting"
34
+                @click="outfullscreenboard"
35
+                >退出全屏投影</el-button
36
+                >
37
+            </el-row>
38
+            <div class="page_lineUp">
39
+                <div class="lineUpTitle">
40
+                    <div>{{ this.$store.getters.xt_user.org.org_name }}<span>&nbsp;&nbsp;温馨提示:请注意排队叫号,依次叫号就诊上机,谢谢配合</span></div>
41
+                    <div>{{ newdate }}&nbsp;&nbsp;{{ time }}</div>
42
+                </div>
43
+                <div class="lineUpMain">
44
+                    <div class="lineUpMainLeft">
45
+                        <div class="lineUpMainLeftTitle">
46
+                            <p style="width:12%">排号</p>
47
+                            <p style="width:14%">姓名</p>
48
+                            <p style="width:14%">病例号</p>
49
+                            <p style="width:14%">床位号</p>
50
+                            <p style="width:14%">治疗状态</p>
51
+                            <p style="width:14%">上机时间</p>
52
+                            <p style="width:16%">预计下机时间</p>
28 53
                         </div>
29
-                    </div>
30
-                </div> 
31
-                <div class="callingBox">
32
-                    <div class="callingBoxLeft">
33
-                        <div class="callingTitle"><span style="margin: 0 auto;">接<br />诊<br />叫<br />号</span></div>
34
-                        <div style="flex: 1;">
35
-                            <div class="callingTop" style="margin-bottom:4px;">
36
-                                <div class="callingTopTip"><span style="margin: 0 auto;">正在<br />接诊</span></div>
37
-                                <div class="callingContent">
38
-                                    <p style="margin-top:13px;">请李四宋到1号诊台就诊</p>
39
-                                    <p>请王岐岐到2号诊台就诊</p>
54
+                        <div class="lineUpList">
55
+                            <div class="lineUpListOne" v-for="(item,index) in lineUpList" :key="index">
56
+                                <p style="width:12%">{{ item.queue_no }}</p>
57
+                                <p style="width:14%">{{ item.patient_name }}</p>
58
+                                <p style="width:14%">{{ item.dialysis_no }}</p>
59
+                                <p style="width:14%">{{ item.partition_name + item.bed_name }}</p>
60
+                                <p style="width:14%">
61
+                                    <span v-if="item.status == 1">待接诊</span>
62
+                                    <span v-if="item.status == 2">接诊中</span>
63
+                                    <span v-if="item.status == 3">接诊中</span>
64
+                                    <span v-if="item.status == 4">待上机</span>
65
+                                    <span v-if="item.status == 5">透析中</span>
66
+                                    <span v-if="item.status == 6">已下机</span>
67
+                                </p>
68
+                                <p style="width:14%">--</p>
69
+                                <p style="width:16%">--</p>
70
+                            </div>
71
+                        </div>
72
+                    </div> 
73
+                    <div class="callingBox">
74
+                        <div class="callingBoxLeft">
75
+                            <div class="callingTitle"><span style="margin: 0 auto;">接<br />诊<br />叫<br />号</span></div>
76
+                            <div style="flex: 1;">
77
+                                <div class="callingTop" style="margin-bottom:10px;">
78
+                                    <div class="callingTopTip"><span style="margin: 0 auto;">正在<br />接诊</span></div>
79
+                                    <div class="callingContent">
80
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in receivingPatient.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
81
+                                        <p><span v-for="(item,index) in receivingPatient.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
82
+                                    </div>
83
+                                </div>
84
+                                <div class="callingTop" style="border-radius: 0 0 15px 0;">
85
+                                    <div class="callingTopTip"><span style="margin: 0 auto;">等待<br />接诊</span></div>
86
+                                    <div class="callingContent">
87
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in waitDoctorList.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
88
+                                        <p><span v-for="(item,index) in waitDoctorList.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
89
+                                    </div>
40 90
                                 </div>
41 91
                             </div>
42
-                            <div class="callingTop" style="border-radius: 0 0 15px 0;">
43
-                                <div class="callingTopTip"><span style="margin: 0 auto;">等待<br />接诊</span></div>
44
-                                <div class="callingContent">
45
-                                    <p style="margin-top:13px;">欧大大、王思思、陈啦啦、吴东汉、</p>
46
-                                    <p>孔豆豆、陈米春、孔豆豆、陈米春、</p>
92
+                        </div>
93
+                        <div class="callingBoxLeft">
94
+                            <div class="callingTitle newCallingTitle"><span style="margin: 0 auto;">上<br />机<br />叫<br />号</span></div>
95
+                            <div style="flex: 1;">
96
+                                <div class="callingTop" style="margin-bottom:10px;">
97
+                                    <div class="callingTopTip newCallingTopTip"><span style="margin: 0 auto;">正在<br />叫号</span></div>
98
+                                    <div class="callingContent newCallingContent">
99
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in upPatientList.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
100
+                                        <p><span v-for="(item,index) in upPatientList.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
101
+                                    </div>
102
+                                </div>
103
+                                <div class="callingTop" style="border-radius: 0 0 15px 0;">
104
+                                    <div class="callingTopTip newCallingTopTip"><span style="margin: 0 auto;">等待<br />叫号</span></div>
105
+                                    <div class="callingContent newCallingContent">
106
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in receivingPatient.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
107
+                                        <p><span v-for="(item,index) in receivingPatient.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
108
+                                    </div>
47 109
                                 </div>
48 110
                             </div>
49 111
                         </div>
50 112
                     </div>
51
-                    <div class="callingBoxLeft">
52
-                        <div class="callingTitle newCallingTitle"><span style="margin: 0 auto;">上<br />机<br />叫<br />号</span></div>
53
-                        <div style="flex: 1;">
54
-                            <div class="callingTop" style="margin-bottom:4px;">
55
-                                <div class="callingTopTip newCallingTopTip"><span style="margin: 0 auto;">正在<br />叫号</span></div>
56
-                                <div class="callingContent">
57
-                                    <p style="margin-top:13px;">请李四宋到普通区2号床上机</p>
58
-                                    <p>请王岐岐到普通区3号床上机</p>
113
+                </div>
114
+                
115
+            </div>
116
+        </div>
117
+        <div class="app-container">
118
+            <div class="page_lineUp">
119
+                <div class="lineUpTitle">
120
+                    <div>{{ this.$store.getters.xt_user.org.org_name }}<span>&nbsp;&nbsp;温馨提示:请注意排队叫号,依次叫号就诊上机,谢谢配合</span></div>
121
+                    <div>{{ newdate }}&nbsp;&nbsp;{{ time }}</div>
122
+                </div>
123
+                <div class="lineUpMain">
124
+                    <div class="lineUpMainLeft">
125
+                        <div class="lineUpMainLeftTitle">
126
+                            <p style="width:12%">排号</p>
127
+                            <p style="width:14%">姓名</p>
128
+                            <p style="width:14%">病例号</p>
129
+                            <p style="width:14%">床位号</p>
130
+                            <p style="width:14%">治疗状态</p>
131
+                            <p style="width:14%">上机时间</p>
132
+                            <p style="width:16%">预计下机时间</p>
133
+                        </div>
134
+                        <div class="lineUpList">
135
+                            <div class="lineUpListOne" v-for="(item,index) in lineUpList" :key="index">
136
+                                <p style="width:12%">{{ item.queue_no }}</p>
137
+                                <p style="width:14%">{{ item.patient_name }}</p>
138
+                                <p style="width:14%">{{ item.dialysis_no }}</p>
139
+                                <p style="width:14%">{{ item.partition_name + item.bed_name }}</p>
140
+                                <p style="width:14%">
141
+                                    <span v-if="item.status == 1">待接诊</span>
142
+                                    <span v-if="item.status == 2">接诊中</span>
143
+                                    <span v-if="item.status == 3">接诊中</span>
144
+                                    <span v-if="item.status == 4">待上机</span>
145
+                                    <span v-if="item.status == 5">透析中</span>
146
+                                    <span v-if="item.status == 6">已下机</span>
147
+                                </p>
148
+                                <p style="width:14%">--</p>
149
+                                <p style="width:16%">--</p>
150
+                            </div>
151
+                        </div>
152
+                    </div> 
153
+                    <div class="callingBox">
154
+                        <div class="callingBoxLeft">
155
+                            <div class="callingTitle"><span style="margin: 0 auto;">接<br />诊<br />叫<br />号</span></div>
156
+                            <div style="flex: 1;">
157
+                                <div class="callingTop" style="margin-bottom:10px;">
158
+                                    <div class="callingTopTip"><span style="margin: 0 auto;">正在<br />接诊</span></div>
159
+                                    <div class="callingContent">
160
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in receivingPatient.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
161
+                                        <p><span v-for="(item,index) in receivingPatient.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
162
+                                    </div>
163
+                                </div>
164
+                                <div class="callingTop" style="border-radius: 0 0 15px 0;">
165
+                                    <div class="callingTopTip"><span style="margin: 0 auto;">等待<br />接诊</span></div>
166
+                                    <div class="callingContent">
167
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in waitDoctorList.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
168
+                                        <p><span v-for="(item,index) in waitDoctorList.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
169
+                                    </div>
59 170
                                 </div>
60 171
                             </div>
61
-                            <div class="callingTop" style="border-radius: 0 0 15px 0;">
62
-                                <div class="callingTopTip newCallingTopTip"><span style="margin: 0 auto;">等待<br />叫号</span></div>
63
-                                <div class="callingContent">
64
-                                    <p style="margin-top:13px;">欧大大、王思思、陈啦啦、吴东汉、</p>
65
-                                    <p>孔豆豆、陈米春、孔豆豆、陈米春、</p>
172
+                        </div>
173
+                        <div class="callingBoxLeft">
174
+                            <div class="callingTitle newCallingTitle"><span style="margin: 0 auto;">上<br />机<br />叫<br />号</span></div>
175
+                            <div style="flex: 1;">
176
+                                <div class="callingTop" style="margin-bottom:10px;">
177
+                                    <div class="callingTopTip newCallingTopTip"><span style="margin: 0 auto;">正在<br />叫号</span></div>
178
+                                    <div class="callingContent newCallingContent">
179
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in upPatientList.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
180
+                                        <p><span v-for="(item,index) in upPatientList.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
181
+                                    </div>
182
+                                </div>
183
+                                <div class="callingTop" style="border-radius: 0 0 15px 0;">
184
+                                    <div class="callingTopTip newCallingTopTip"><span style="margin: 0 auto;">等待<br />叫号</span></div>
185
+                                    <div class="callingContent newCallingContent">
186
+                                        <p style="margin:50px 0 14px;"><span v-for="(item,index) in receivingPatient.slice(0,3)" :key="index">{{ item.patient_name }}、</span></p>
187
+                                        <p><span v-for="(item,index) in receivingPatient.slice(3,6)" :key="index">{{ item.patient_name }}、</span></p>
188
+                                    </div>
66 189
                                 </div>
67 190
                             </div>
68 191
                         </div>
69 192
                     </div>
70 193
                 </div>
194
+                
71 195
             </div>
72
-            
73 196
         </div>
74 197
     </div>
75 198
 </template>
76 199
 
200
+<script>
201
+const moment = require('moment')
202
+import BreadCrumb from "../components/bread-crumb";
203
+import screenfull from "screenfull";
204
+export default {
205
+    components:{
206
+        BreadCrumb
207
+    },
208
+    data(){
209
+        return{
210
+            crumbs: [
211
+                { path: false, name: "签到排队" },
212
+                { path: false, name: "排队窗口" }
213
+            ],
214
+            dialogTableVisible:false,
215
+            showSetting: false,
216
+            lineUpList:[],
217
+            count:0,
218
+            page:1,
219
+            timer:null,
220
+            receivingPatient:[],
221
+            waitDoctorList:[],
222
+            upPatientList:[],
223
+            patient_id:'',
224
+            timerID:null,
225
+            time:'',
226
+            newdate:'',
227
+            voiceNum:1,
228
+            voiceTime:null,
229
+
230
+            voice:true,
231
+            a:1
232
+        }
233
+    },
234
+    computed: {
235
+        websocket() {
236
+            return this.$store.state.user.websocket;
237
+        },
238
+    },
239
+    created(){
240
+        this.initData = {
241
+            cmd: "queue/join",
242
+            data: {type:2,page:1,size:6},
243
+        };
244
+        this.websocketSend(this.initData)
245
+        let newobj = {
246
+            cmd: "queue/callreturn",
247
+            data: {patient_id:0},
248
+        };
249
+        this.websocketSend(newobj)
250
+    },
251
+    beforeMount() {
252
+        this.websocketMess();
253
+    },
254
+    mounted(){
255
+        this.timer = setInterval(() => {
256
+            if(this.page < Math.ceil(this.count / 10)){
257
+                console.log('执行')
258
+                this.page++
259
+                let obj = {
260
+                    cmd: "queue/queuelist",
261
+                    data: {page:this.page,size:6}
262
+                };
263
+                this.websocketSend(obj)
264
+            }else{
265
+                console.log('执行2222')
266
+                this.page = 0
267
+                let obj = {
268
+                    cmd: "queue/queuelist",
269
+                    data: {page:this.page,size:6}
270
+                };
271
+                this.websocketSend(obj)
272
+            }
273
+        }, 5000);
274
+        this.timerID = setInterval(() => {
275
+            this.updateTime()
276
+        }, 1000);
277
+    },
278
+    beforeDestroy(){
279
+        clearInterval(this.timer);  // 清除定时器
280
+        this.timer = null
281
+        clearInterval(this.timerID);
282
+        this.timerID = null;  // 清除定时器
283
+        // this.timer = null;
284
+        // let obj = {
285
+        //     cmd: "queue/join",
286
+        //     data: {type:1},
287
+        // };
288
+        // this.websocketSend(obj)
289
+        console.log('hhhhhhhhhhhhhhhhhhhhhh',this.timerID)
290
+    },
291
+    methods:{
292
+        websocketSend(data) {
293
+            try {
294
+                this.websocket.send(JSON.stringify(data))
295
+                
296
+            } catch (error) {
297
+                this.showError = true;
298
+                this.showIndex = 4;
299
+                this.errorInfo = "网络异常,请稍后退出重试!";
300
+            }
301
+        },
302
+        websocketMess() {
303
+            this.websocket.onmessage = e => {
304
+                let res = JSON.parse(e.data);
305
+                // let res = re.data;
306
+                console.log('res',res)
307
+                if(res.channel == 'queue/join'){
308
+                    this.lineUpList = res.data.patientQueueList.data
309
+                    this.receivingPatient = res.data.receivingPatient
310
+                    this.waitDoctorList = res.data.waitDoctorList
311
+                    this.upPatientList = res.data.upPatientList
312
+                    this.count = res.data.patientQueueList.count
313
+                    this.lineUpList.map(item => {
314
+                        item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
315
+                        // item.start_time = moment(item.start_time * 1000).format('HH:mm')
316
+                    })
317
+                }else if(res.channel == 'queue/queuelist'){
318
+                    this.lineUpList = res.data.patientQueueList.data
319
+                    this.count = res.data.patientQueueList.count
320
+                    this.lineUpList.map(item => {
321
+                        item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
322
+                        // item.start_time = moment(item.start_time * 1000).format('HH:mm')
323
+                    })
324
+                }else if(res.channel == 'patientCallInfo'){
325
+                    console.log(999999999999,res.data)
326
+                    
327
+                    
328
+                    console.log('执行几次',this.voiceNum)
329
+                    if(this.voice == true){
330
+                        this.patient_id = res.data.patientInfo.patient_id
331
+                        this.voice = false
332
+                        // let time1 = null
333
+                        this.voicePrompt(res.data.callVolUrl)
334
+                        this.voiceTime = setInterval(() => {
335
+                            if(this.voiceNum < 3){
336
+                                this.voiceNum++
337
+                                this.voicePrompt(res.data.callVolUrl)
338
+                            }else{
339
+                                this.voiceNum = 1;
340
+                                this.voice = true 
341
+                                let obj = {
342
+                                    cmd: "queue/callreturn",
343
+                                    data: {patient_id:this.patient_id},
344
+                                };
345
+                                this.websocketSend(obj)
346
+                                clearInterval(this.voiceTime);
347
+                                this.voiceTime = null
348
+                            }
349
+                        },6000)
350
+                    }else {
351
+                        this.$message({
352
+                            message: '警告哦,这是一条警告消息',
353
+                            type: 'warning'
354
+                        });
355
+                    }
356
+                }else if(res.channel == 'updateCallList'){
357
+                    this.receivingPatient = res.data.queue_list
358
+                    
359
+                }else if(res.channel == 'updateWaitCallList'){
360
+                    this.waitDoctorList = res.data.queue_list
361
+                }else if(res.channel == 'updateUpCallList'){
362
+                    this.upPatientList = res.data.queue_list
363
+                }
364
+                // else if(res.channel == "patientQueueInfo"){
365
+                //     this.queueInfo = res.data.queueInfo
366
+                //     let obj = {
367
+                //         cmd: "queue/queuelist",
368
+                //         data: {page:1,size:10}
369
+                //     };
370
+                //     this.websocketSend(obj)
371
+                    
372
+                // }
373
+            }
374
+        },
375
+        updateTime() {
376
+            var cd = new Date();
377
+            var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
378
+            console.log(1111111)
379
+            this.time = this.zeroPadding(cd.getHours(), 2) + ':' + this.zeroPadding(cd.getMinutes(), 2) + ':' + this.zeroPadding(cd.getSeconds(), 2) + ' (' + week[cd.getDay()] + ")";
380
+            this.newdate = this.zeroPadding(cd.getFullYear(), 4) + '-' + this.zeroPadding(cd.getMonth() + 1, 2) + '-' + this.zeroPadding(cd.getDate(), 2);
381
+        },
382
+
383
+        zeroPadding(num, digit) {
384
+            var zero = '';
385
+            for (var i = 0; i < digit; i++) {
386
+                zero += '0';
387
+            }
388
+            return (zero + num).slice(-digit);
389
+        },
390
+        fullscreenboard: function() {
391
+            this.dialogTableVisible = true;
392
+            // let routeData = this.$router.resolve({ path: '/fullscreenboard' })
393
+            // window.open(routeData.href, '_blank')
394
+        },
395
+        outfullscreenboard: function() {
396
+            this.dialogTableVisible = false;
397
+            this.showSetting = false;
398
+        },
399
+        togglefullscreen: function() {
400
+            if (!screenfull.enabled) {
401
+                this.$message({
402
+                message: "你的浏览器不支持",
403
+                type: "warning"
404
+                });
405
+                return false;
406
+            }
407
+            screenfull.toggle();
408
+            this.showSetting = false;
409
+        },
410
+        openSetting() {
411
+            if (this.showSetting == false) {
412
+                this.showSetting = true;
413
+            } else {
414
+                this.showSetting = false;
415
+            }
416
+        },
417
+    }
418
+}
419
+</script>
420
+
77 421
 <style lang="scss" scoped>
78 422
 .page_lineUp{
79 423
     .lineUpTitle{
@@ -89,11 +433,11 @@
89 433
     }
90 434
     .lineUpMain{
91 435
         background: linear-gradient(0deg, #76ECEC, #479CD2);
92
-        height: 550px;
436
+        height: 1080px;
93 437
         padding:10px;
94 438
     }
95 439
     .lineUpMainLeft{
96
-        height: 370px;
440
+        height: 620px;
97 441
         border-radius: 15px;
98 442
         
99 443
     }
@@ -102,9 +446,9 @@
102 446
         justify-content: space-between;
103 447
         align-items: center;
104 448
         color:#fff;
105
-        font-size: 18px;
449
+        font-size: 38px;
106 450
         font-weight: 600;
107
-        height:50px;
451
+        height:80px;
108 452
         background: #1A82BF;
109 453
         border-radius: 15px 15px 0 0;
110 454
         >p{
@@ -112,7 +456,7 @@
112 456
         }
113 457
     }
114 458
     .lineUpList{
115
-        font-size: 18px;
459
+        font-size: 35px;
116 460
         font-weight: 600;
117 461
         >div:nth-child(odd){
118 462
             background: #F9FDFF;
@@ -124,7 +468,7 @@
124 468
             border-radius: 0 0 15px 15px;
125 469
         }
126 470
         .lineUpListOne{
127
-            height:40px;
471
+            height:90px;
128 472
             display: flex;
129 473
             justify-content: space-between;
130 474
             align-items: center;
@@ -136,20 +480,20 @@
136 480
         }
137 481
     }
138 482
     .callingBox{
139
-        height: 150px;
483
+        height: 430px;
140 484
         margin-top: 10px;
141 485
         display: flex;
142 486
         justify-content: space-between;
143 487
         .callingBoxLeft{
144
-            width: 49%;
488
+            width: 49.5%;
145 489
             height: 100%;
146 490
             display: flex;
147 491
             justify-content: space-between;
148 492
             .callingTitle{
149
-                width: 60px;
493
+                width: 130px;
150 494
                 height: 100%;
151 495
                 border-radius: 15px 0 0 15px;
152
-                font-size: 30px;
496
+                font-size: 66px;
153 497
                 font-weight:600;
154 498
                 text-align: center;
155 499
                 color: #fff;
@@ -159,43 +503,74 @@
159 503
                 margin-right: 5px;
160 504
             }
161 505
             .newCallingTitle{
162
-                background: linear-gradient(90deg, rgba(66, 231, 167, 1), rgba(26, 191, 84, 1), rgba(157, 254, 31, 1));
506
+                background: #1aa680;
163 507
             }
164 508
         } 
165 509
         .callingTop{
166
-            height: 73px;
510
+            height: 210px;
167 511
             border-radius: 0 15px 0 0;
168 512
             background: #F9FDFF;
169 513
             display: flex;
170 514
             justify-content: space-between;
171 515
             .callingTopTip{
172
-                width: 73px;
516
+                width: 130px;
173 517
                 height: 100%;
174 518
                 color: #fff;
175
-                font-size: 18px;
519
+                font-size: 40px;
176 520
                 font-weight: 600;
177 521
                 background: #1A82BF;
178 522
                 display: flex;
179 523
                 align-items: center;
180 524
             }
181 525
             .newCallingTopTip{
182
-                background: linear-gradient(90deg, rgba(66, 231, 167, 1), rgba(26, 191, 84, 1), rgba(157, 254, 31, 1));
526
+                background: #1aa680;
183 527
             }
184 528
             .callingContent{
185 529
                 flex: 1;
186 530
                 display: flex;
187 531
                 flex-direction: column;
188
-                font-size: 16px;
532
+                font-size: 50px;
189 533
                 color:#1C6895;
190 534
                 font-weight: 600;
191 535
                 padding-left: 20px;
192 536
                 >p{
193 537
                     width:100%;
194 538
                     text-align: left;
195
-                    line-height: 24px;
539
+                    line-height: 50px;
196 540
                 }
197 541
             }
542
+            .newCallingContent{
543
+                color:#1aa680;
544
+            }
198 545
         }
199 546
     }
200 547
 }
548
+#fullscreenbroad {
549
+  position: fixed;
550
+  top: 0;
551
+  right: 0;
552
+  bottom: 0;
553
+  left: 0;
554
+  overflow: auto;
555
+  margin: 0;
556
+  background: #fff;
557
+  padding: 20px;
558
+  z-index:5000;
559
+}
560
+#fullscreenbroad #fullscreenbroad-setting {
561
+  float: right;
562
+}
563
+
564
+#fullscreenbroad .el-button + .el-button {
565
+  margin-left: 0px;
566
+}
567
+#fullscreenbroad .el-button:nth-child(1) {
568
+  margin-left: 10px;
569
+}
570
+#fullscreenbroad .el-button:nth-child(2) {
571
+  margin-left: 10px;
572
+}
573
+.fullRow{
574
+    margin-bottom: 10px;
575
+}
201 576
 </style>

+ 331 - 41
src/xt_pages/sign/signIn.vue View File

@@ -1,44 +1,305 @@
1 1
 <template>
2
-    <div class="app-container">
3
-        <div class="page_signIn">
4
-            <div class="signInTitle">
5
-                <div>唐山朝阳医院</div>
6
-                <div>2020.8.18   07:22(星期四)</div>
7
-            </div>
8
-            <div class="signInMain">
9
-                <div style="display: flex;justify-content: space-between;padding:10px;">
10
-                    <div class="signInMainLeft">
11
-                        <div class="signInMainLeftTitle">
12
-                            <p>排号</p>
13
-                            <p>姓名</p>
14
-                            <p>病历号</p>
15
-                            <p>签到时间</p>
2
+    <div class="main-contain">
3
+        <div class="position">
4
+        <bread-crumb :crumbs="crumbs"></bread-crumb>
5
+        <el-button
6
+            size="small"
7
+            icon="el-icon-menu"
8
+            @click="fullscreenboard"
9
+            type="primary"
10
+            >全屏投影</el-button
11
+        >
12
+        </div>
13
+        <div id="fullscreenbroad" v-show="dialogTableVisible">
14
+            <el-row class="fullRow">
15
+                <el-button
16
+                @click="openSetting"
17
+                icon="el-icon-setting"
18
+                circle
19
+                id="fullscreenbroad-setting"
20
+                ></el-button>
21
+                <el-button
22
+                type="primary"
23
+                icon="el-icon-rank"
24
+                v-if="showSetting"
25
+                id="fullscreenbroad-setting"
26
+                @click="togglefullscreen"
27
+                >切换模式</el-button
28
+                >
29
+                <el-button
30
+                type="primary"
31
+                icon="el-icon-menu"
32
+                v-if="showSetting"
33
+                id="fullscreenbroad-setting"
34
+                @click="outfullscreenboard"
35
+                >退出全屏投影</el-button
36
+                >
37
+            </el-row>
38
+            <div class="page_signIn">
39
+                <div class="signInTitle">
40
+                    <div>{{ this.$store.getters.xt_user.org.org_name }}</div>
41
+                    <div>{{ newdate }}&nbsp;&nbsp;{{ time }}</div>
42
+                </div>
43
+                <div class="signInMain">
44
+                    <div style="display: flex;justify-content: space-between;padding:10px;">
45
+                        <div class="signInMainLeft">
46
+                            <div class="signInMainLeftTitle">
47
+                                <p>排号</p>
48
+                                <p>姓名</p>
49
+                                <p>病历号</p>
50
+                                <p>签到时间</p>
51
+                            </div>
52
+                            <div class="signInList">
53
+                                <div class="signInListOne" v-for="(item,index) in signInList" :key="index">
54
+                                    <p>{{ item.queue_no }}</p>
55
+                                    <p>{{ item.patient_name }}</p>
56
+                                    <p>{{ item.dialysis_no }}</p>
57
+                                    <p>{{ item.create_time }}</p>
58
+                                </div>
59
+                            </div>
16 60
                         </div>
17
-                        <div class="signInList">
18
-                            <div class="signInListOne" v-for="item in 12" :key="item">
19
-                                <p>P13</p>
20
-                                <p>张*等</p>
21
-                                <p>001</p>
22
-                                <p>09:01:00</p>
61
+                        <div class="signInMainRight">
62
+                            <div class="signInMainRightTitle"><span style="margin:0 auto;" v-if='Object.keys(queueInfo).length>0'>{{ queueInfo.patient_name }}</span></div>
63
+                            <div class="signInMainRightContent">
64
+                                <p style="margin: 0 auto;display:flex;align-items: center;" v-if='Object.keys(queueInfo).length>0'><span>排号&nbsp;</span><span style="font-size:180px;">{{ queueInfo.queue_no }}</span></p>
23 65
                             </div>
66
+                            <div class="signInMianRightBottom"><span style="margin:0 auto;" v-if='Object.keys(queueInfo).length>0'>签到成功</span></div>
24 67
                         </div>
25 68
                     </div>
26
-                    <div class="signInMainRight">
27
-                        <div class="signInMainRightTitle"><span style="margin:0 auto;">张三</span></div>
28
-                        <div class="signInMainRightContent">
29
-                            <p style="margin: 0 auto;display:flex;align-items: center;"><span>排号&nbsp;&nbsp;</span><span style="font-size:120px;">P06</span></p>
30
-                        </div>
31
-                        <div class="signInMianRightBottom"><span style="margin:0 auto;">签到成功</span></div>
69
+                    <div class="signInTip">
70
+                        温馨提示:请注意排队叫号,依次叫号就诊上机,谢谢配合
32 71
                     </div>
33 72
                 </div>
34
-                <div class="signInTip">
35
-                    温馨提示:请注意排队叫号,依次叫号就诊上机,谢谢配合
73
+            </div>
74
+        </div>
75
+        <div class="app-container">
76
+            <div class="page_signIn">
77
+                <div class="signInTitle">
78
+                    <div>{{ this.$store.getters.xt_user.org.org_name }}</div>
79
+                    <div>{{ newdate }}&nbsp;&nbsp;{{ time }}</div>
80
+                </div>
81
+                <div class="signInMain">
82
+                    <div style="display: flex;justify-content: space-between;padding:10px;">
83
+                        <div class="signInMainLeft">
84
+                            <div class="signInMainLeftTitle">
85
+                                <p>排号</p>
86
+                                <p>姓名</p>
87
+                                <p>病历号</p>
88
+                                <p>签到时间</p>
89
+                            </div>
90
+                            <div class="signInList">
91
+                                <div class="signInListOne" v-for="(item,index) in signInList" :key="index">
92
+                                    <p>{{ item.queue_no }}</p>
93
+                                    <p>{{ item.patient_name }}</p>
94
+                                    <p>{{ item.dialysis_no }}</p>
95
+                                    <p>{{ item.create_time }}</p>
96
+                                </div>
97
+                            </div>
98
+                        </div>
99
+                        <div class="signInMainRight">
100
+                            <div class="signInMainRightTitle"><span style="margin:0 auto;" v-if='Object.keys(queueInfo).length>0'>{{ queueInfo.patient_name }}</span></div>
101
+                            <div class="signInMainRightContent">
102
+                                <p style="margin: 0 auto;display:flex;align-items: center;" v-if='Object.keys(queueInfo).length>0'><span>排号&nbsp;</span><span style="font-size:180px;">{{ queueInfo.queue_no }}</span></p>
103
+                            </div>
104
+                            <div class="signInMianRightBottom"><span style="margin:0 auto;" v-if='Object.keys(queueInfo).length>0'>签到成功</span></div>
105
+                        </div>
106
+                    </div>
107
+                    <div class="signInTip">
108
+                        温馨提示:请注意排队叫号,依次叫号就诊上机,谢谢配合
109
+                    </div>
36 110
                 </div>
37 111
             </div>
38 112
         </div>
39 113
     </div>
40 114
 </template>
41 115
 
116
+<script>
117
+const moment = require('moment')
118
+import BreadCrumb from "../components/bread-crumb";
119
+import screenfull from "screenfull";
120
+export default {
121
+    components:{
122
+        BreadCrumb
123
+    },
124
+    data(){
125
+        return{
126
+            crumbs: [
127
+                { path: false, name: "签到排队" },
128
+                { path: false, name: "签到窗口" }
129
+            ],
130
+            dialogTableVisible:false,
131
+            showSetting: false,
132
+            signInList:[],
133
+            queueInfo:{},
134
+            count:0,
135
+            page:1,
136
+            timer:null,
137
+            timerID:null,
138
+            time:'',
139
+            newdate:''
140
+        }
141
+    },
142
+    computed: {
143
+        websocket() {
144
+            return this.$store.state.user.websocket;
145
+        },
146
+    },
147
+    created(){
148
+        this.initData = {
149
+            cmd: "queue/join",
150
+            data: {type:1,page:1,size:10},
151
+        };
152
+        this.websocketSend(this.initData)
153
+    },
154
+    beforeMount() {
155
+        // if (this.websocket) {
156
+        //     if (this.websocket.readyState == 1) {
157
+        //         this.websocketMess();
158
+        //     } else {
159
+        //         setTimeout(() => {
160
+        //             this.websocketMess();
161
+        //             }, 1000);
162
+        //         }
163
+        //     } else {
164
+        //     setTimeout(() => {
165
+        //         if (this.websocket.readyState == 1) {
166
+        //             this.websocketMess();
167
+        //         } else {
168
+        //             setTimeout(() => {
169
+        //                 this.websocketMess();
170
+        //             }, 1000);
171
+        //         }
172
+        //     }, 1000);
173
+        // }
174
+        // setTimeout(() => {s
175
+            this.websocketMess();
176
+        // }, 1000);
177
+    },
178
+    mounted(){
179
+        this.timer = setInterval(() => {
180
+            if(this.page < Math.ceil(this.count / 10)){
181
+                console.log('执行')
182
+                this.page++
183
+                let obj = {
184
+                    cmd: "queue/queuelist",
185
+                    data: {page:this.page,size:10}
186
+                };
187
+                this.websocketSend(obj)
188
+            }else{
189
+                console.log('执行2222')
190
+                this.page = 1
191
+                let obj = {
192
+                    cmd: "queue/queuelist",
193
+                    data: {page:this.page,size:10}
194
+                };
195
+                this.websocketSend(obj)
196
+            }
197
+        }, 5000);
198
+        
199
+        this.timerID = setInterval(() => {
200
+            this.updateTime()
201
+        }, 1000);
202
+        // this.updateTime();
203
+    },
204
+    beforeDestroy(){
205
+        clearInterval(this.timer);  // 清除定时器
206
+        clearInterval(this.timerID);  // 清除定时器
207
+        this.timer = null;
208
+        let obj = {
209
+            cmd: "queue/join",
210
+            data: {type:1},
211
+        };
212
+        this.websocketSend(obj)
213
+    },
214
+    methods:{
215
+        websocketSend(data) {
216
+            try {
217
+                this.websocket.send(JSON.stringify(data))
218
+                
219
+            } catch (error) {
220
+                this.showError = true;
221
+                this.showIndex = 4;
222
+                this.errorInfo = "网络异常,请稍后退出重试!";
223
+            }
224
+        },
225
+        websocketMess() {
226
+            this.websocket.onmessage = e => {
227
+                let res = JSON.parse(e.data);
228
+                // let res = re.data;
229
+                console.log('res',res)
230
+                if(res.channel == 'queue/join'){
231
+                    this.signInList = res.data.patientQueueList.data
232
+                    this.count = res.data.patientQueueList.count
233
+                    this.signInList.map(item => {
234
+                        item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
235
+                    })
236
+                }else if(res.channel == "patientQueueInfo"){
237
+
238
+                    this.queueInfo = res.data.queueInfo
239
+                    let obj = {
240
+                        cmd: "queue/queuelist",
241
+                        data: {page:1,size:10}
242
+                    };
243
+                    this.websocketSend(obj)
244
+                    
245
+                }else if(res.channel == 'queue/queuelist'){
246
+                    console.log(11111111111,res.data)
247
+                    this.signInList = res.data.patientQueueList.data
248
+                    this.count = res.data.patientQueueList.count
249
+                    this.signInList.map(item => {
250
+                        item.create_time = moment(item.create_time * 1000).format('HH:mm:ss')
251
+                    })
252
+                }
253
+                // console.log("action", re.action);
254
+                // console.log("data", JSON.stringify(res));
255
+            }
256
+        },
257
+        updateTime() {
258
+            var cd = new Date();
259
+            var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
260
+            console.log('哈哈哈哈')
261
+            this.time = this.zeroPadding(cd.getHours(), 2) + ':' + this.zeroPadding(cd.getMinutes(), 2) + ':' + this.zeroPadding(cd.getSeconds(), 2) + ' (' + week[cd.getDay()] + ")";
262
+            this.newdate = this.zeroPadding(cd.getFullYear(), 4) + '-' + this.zeroPadding(cd.getMonth() + 1, 2) + '-' + this.zeroPadding(cd.getDate(), 2);
263
+        },
264
+
265
+        zeroPadding(num, digit) {
266
+            var zero = '';
267
+            for (var i = 0; i < digit; i++) {
268
+                zero += '0';
269
+            }
270
+            return (zero + num).slice(-digit);
271
+        },
272
+        fullscreenboard: function() {
273
+            this.dialogTableVisible = true;
274
+            // let routeData = this.$router.resolve({ path: '/fullscreenboard' })
275
+            // window.open(routeData.href, '_blank')
276
+        },
277
+        outfullscreenboard: function() {
278
+            this.dialogTableVisible = false;
279
+            this.showSetting = false;
280
+        },
281
+        togglefullscreen: function() {
282
+            if (!screenfull.enabled) {
283
+                this.$message({
284
+                message: "你的浏览器不支持",
285
+                type: "warning"
286
+                });
287
+                return false;
288
+            }
289
+            screenfull.toggle();
290
+            this.showSetting = false;
291
+        },
292
+        openSetting() {
293
+            if (this.showSetting == false) {
294
+                this.showSetting = true;
295
+            } else {
296
+                this.showSetting = false;
297
+            }
298
+        },
299
+    }
300
+}
301
+</script>
302
+
42 303
 
43 304
 <style lang="scss" scoped>
44 305
 .page_signIn{
@@ -55,13 +316,13 @@
55 316
     }
56 317
     .signInMain{
57 318
         background: linear-gradient(0deg, #76ECEC, #479CD2);
58
-        height: 600px;
319
+        height: 1040px;
59 320
         
60 321
         
61 322
     }
62 323
     .signInMainLeft{
63 324
         width:65%;
64
-        height: 530px;
325
+        height: 980px;
65 326
         border-radius: 15px;
66 327
     }
67 328
     .signInMainLeftTitle{
@@ -69,9 +330,9 @@
69 330
         justify-content: space-between;
70 331
         align-items: center;
71 332
         color:#fff;
72
-        font-size: 18px;
333
+        font-size: 38px;
73 334
         font-weight: 600;
74
-        height:50px;
335
+        height:80px;
75 336
         background: #1A82BF;
76 337
         border-radius: 15px 15px 0 0;
77 338
         >p{
@@ -80,7 +341,7 @@
80 341
         }
81 342
     }
82 343
     .signInList{
83
-        font-size: 18px;
344
+        font-size: 36px;
84 345
         font-weight: 600;
85 346
         >div:nth-child(odd){
86 347
             background: #F9FDFF;
@@ -92,7 +353,7 @@
92 353
             border-radius: 0 0 15px 15px;
93 354
         }
94 355
         .signInListOne{
95
-            height:40px;
356
+            height:90px;
96 357
             display: flex;
97 358
             justify-content: space-between;
98 359
             align-items: center;
@@ -105,13 +366,13 @@
105 366
     }
106 367
     .signInMainRight{
107 368
         width: 34%;
108
-        height: 530px;
369
+        height: 980px;
109 370
     }
110 371
     .signInMainRightTitle{
111
-        height: 130px;
372
+        height: 260px;
112 373
         border-radius: 15px 15px 0 0;
113 374
         background: #1A82BF;
114
-        font-size: 80px;
375
+        font-size: 120px;
115 376
         font-weight: 600;
116 377
         color:#fff;
117 378
         display: flex;
@@ -120,20 +381,20 @@
120 381
     }
121 382
     .signInMainRightContent{
122 383
         background: #F9FDFF;
123
-        height: 300px;
384
+        height: 450px;
124 385
         text-align: center;
125 386
         font-weight: 600;
126 387
         color:#1C6895;
127 388
         box-sizing: border-box;
128
-        font-size:70px;
389
+        font-size:90px;
129 390
         display:flex;
130 391
         align-items:center;
131 392
     }
132 393
     .signInMianRightBottom{
133
-        height: 100px;
394
+        height: 270px;
134 395
         background: #1A82BF;
135 396
         border-radius: 0 0 15px 15px;
136
-        font-size: 40px;
397
+        font-size: 90px;
137 398
         font-weight: 600;
138 399
         color:#fff;
139 400
         display: flex;
@@ -149,6 +410,35 @@
149 410
         height: 50px;
150 411
         background: linear-gradient(0deg, #42A9E7, #3686B9, #42A9E7);
151 412
         margin-top: 1px;
413
+        padding-left:20px;
152 414
     }
153 415
 }
416
+#fullscreenbroad {
417
+  position: fixed;
418
+  top: 0;
419
+  right: 0;
420
+  bottom: 0;
421
+  left: 0;
422
+  overflow: auto;
423
+  margin: 0;
424
+  background: #fff;
425
+  padding: 20px;
426
+  z-index:5000;
427
+}
428
+#fullscreenbroad #fullscreenbroad-setting {
429
+  float: right;
430
+}
431
+
432
+#fullscreenbroad .el-button + .el-button {
433
+  margin-left: 0px;
434
+}
435
+#fullscreenbroad .el-button:nth-child(1) {
436
+  margin-left: 10px;
437
+}
438
+#fullscreenbroad .el-button:nth-child(2) {
439
+  margin-left: 10px;
440
+}
441
+.fullRow{
442
+    margin-bottom: 10px;
443
+}
154 444
 </style>