miaofuhao hace 9 meses
padre
commit
3444d1a58c

+ 9 - 0
CallCenterWeb.UI/RMYY/src/api/callScreen/callScreen.js

@@ -178,6 +178,15 @@ export function getRegList(params) {
178 178
     params
179 179
   })
180 180
 }	
181
+// 取消预约列表 导出
182
+export function getRegListExport(params) {
183
+  return request({
184
+    url: 'Registration/getlist',
185
+    method: 'get',
186
+    params,
187
+    responseType: 'blob'
188
+  })
189
+}
181 190
 // 取消预约
182 191
 export function regCancel(params) {
183 192
   return request({

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1213
CallCenterWeb.UI/RMYY/src/components/workOrder/information/addOrEditInfOrder - 副本.vue


+ 253 - 0
CallCenterWeb.UI/RMYY/src/components/workOrder/information/components/HospitalBusinessForm.vue

@@ -0,0 +1,253 @@
1
+<template>
2
+    <div class="hospital-business-form">
3
+      <el-row>
4
+        <el-col :span="24">
5
+          <el-form-item label="患者信息">
6
+            <el-tag
7
+              v-for="(patient, index) in patientList"
8
+              :key="index"
9
+              :class="{'active-tag': currentIndex === index}"
10
+              :disable-transitions="false"
11
+              size="medium"
12
+              closable
13
+              style="margin-right: 10px;"
14
+              @close="handleDeletePatient(index)"
15
+              @click="handleSelectPatient(index)">
16
+              {{ patient.yyhzxm || '新患者' + (index + 1) }}
17
+            </el-tag>
18
+            <el-button icon="el-icon-plus" size="mini" @click="handleAddPatient">新增患者</el-button>
19
+          </el-form-item>
20
+        </el-col>
21
+      </el-row>
22
+  
23
+      <div v-if="patientList.length > 0">
24
+        <el-row>
25
+          <el-col :span="12">
26
+            <el-form-item label="患者姓名" prop="yyhzxm" required>
27
+              <el-input 
28
+                v-model="patientList[currentIndex].yyhzxm" 
29
+                placeholder="请输入患者姓名"
30
+                @change="(val) => handleUpdatePatient('yyhzxm', val)" />
31
+            </el-form-item>
32
+          </el-col>
33
+          <el-col :span="12">
34
+            <el-form-item label="患者电话" prop="yyhzdh" required>
35
+              <el-input 
36
+                v-model="patientList[currentIndex].yyhzdh" 
37
+                placeholder="请输入患者电话"
38
+                @change="(val) => handleUpdatePatient('yyhzdh', val)" />
39
+            </el-form-item>
40
+          </el-col>
41
+        </el-row>
42
+        
43
+        <el-row>
44
+          <el-col :span="12">
45
+            <el-form-item label="身份证号" prop="yysfzh">
46
+              <el-input 
47
+                v-model="patientList[currentIndex].yysfzh" 
48
+                placeholder="请输入身份证号"
49
+                @change="(val) => handleUpdatePatient('yysfzh', val)" />
50
+            </el-form-item>
51
+          </el-col>
52
+          <el-col :span="12">
53
+            <el-form-item label="年龄" prop="yynl">
54
+              <el-input-number 
55
+                v-model="patientList[currentIndex].yynl" 
56
+                :min="0"
57
+                :disabled="!!patientList[currentIndex].yysfzh"
58
+                placeholder="请输入年龄" />
59
+            </el-form-item>
60
+          </el-col>
61
+        </el-row>
62
+        
63
+        <el-row>
64
+          <el-col :span="12">
65
+            <el-form-item label="性别" prop="hzxb">
66
+              <el-radio-group 
67
+                v-model="patientList[currentIndex].hzxb"
68
+                :disabled="!!patientList[currentIndex].yysfzh">
69
+                <el-radio label="0">男</el-radio>
70
+                <el-radio label="1">女</el-radio>
71
+              </el-radio-group>
72
+            </el-form-item>
73
+          </el-col>
74
+          <el-col :span="12">
75
+            <el-form-item label="患者来源平台" prop="hzlypt" required>
76
+              <el-select
77
+                v-model="patientList[currentIndex].hzlypt"
78
+                placeholder="请选择患者来源平台"
79
+                style="width: 100%"
80
+                @change="(val) => handleUpdatePatient('hzlypt', val)">
81
+                <el-option label="美团" value="美团" />
82
+                <el-option label="抖音" value="抖音" />
83
+                <el-option label="小红书" value="小红书" />
84
+                <el-option label="快手" value="快手" />
85
+                <el-option label="其他" value="其他" />
86
+              </el-select>
87
+            </el-form-item>
88
+          </el-col>
89
+        </el-row>
90
+        
91
+        <el-row>
92
+          <el-col :span="12">
93
+            <el-form-item label="就诊医生" prop="jzys">
94
+              <el-input 
95
+                v-model="patientList[currentIndex].jzys" 
96
+                placeholder="请输入就诊医生"
97
+                @change="(val) => handleUpdatePatient('jzys', val)" />
98
+            </el-form-item>
99
+          </el-col>
100
+          <el-col :span="12">
101
+            <el-form-item label="医生电话" prop="ysdh">
102
+              <el-input 
103
+                v-model="patientList[currentIndex].ysdh" 
104
+                placeholder="请输入医生电话"
105
+                @change="(val) => handleUpdatePatient('ysdh', val)" />
106
+            </el-form-item>
107
+          </el-col>
108
+        </el-row>
109
+        
110
+        <el-row>
111
+          <el-col :span="12">
112
+            <el-form-item label="接诊院区" prop="jzyq" required>
113
+              <el-select
114
+                v-model="patientList[currentIndex].jzyq"
115
+                placeholder="请选择接诊院区"
116
+                style="width: 100%"
117
+                @change="(val) => handleUpdatePatient('jzyq', val)">
118
+                <el-option
119
+                  v-for="(item, index) in hospitalDataLists"
120
+                  :key="index"
121
+                  :value="item.T_Woid"
122
+                  :label="item.T_Woname" />
123
+              </el-select>
124
+            </el-form-item>
125
+          </el-col>
126
+          <el-col :span="12">
127
+            <el-form-item label="接诊科室" prop="jzks" required>
128
+              <el-input 
129
+                v-model="patientList[currentIndex].jzks" 
130
+                placeholder="请输入接诊科室"
131
+                @change="(val) => handleUpdatePatient('jzks', val)" />
132
+            </el-form-item>
133
+          </el-col>
134
+        </el-row>
135
+        
136
+        <el-row>
137
+          <el-col :span="12">
138
+            <el-form-item label="就诊日期" prop="jzsj" required>
139
+              <el-date-picker
140
+                v-model="patientList[currentIndex].jzsj"
141
+                type="date"
142
+                placeholder="选择就诊日期"
143
+                style="width: 100%"
144
+                value-format="yyyy-MM-dd"
145
+                @change="(val) => handleUpdatePatient('jzsj', val)" />
146
+            </el-form-item>
147
+          </el-col>
148
+          <el-col :span="12">
149
+            <el-form-item label="就诊时段" prop="jzsd">
150
+              <el-select
151
+                v-model="patientList[currentIndex].jzsd"
152
+                placeholder="请选择就诊时段"
153
+                style="width: 100%"
154
+                @change="(val) => handleUpdatePatient('jzsd', val)">
155
+                <el-option label="上午" value="08:00:00" />
156
+                <el-option label="下午" value="13:00:00" />
157
+              </el-select>
158
+            </el-form-item>
159
+          </el-col>
160
+        </el-row>
161
+        
162
+        <el-row>
163
+          <el-col :span="24">
164
+            <el-form-item label="就诊需求" prop="jzxq">
165
+              <el-input
166
+                v-model="patientList[currentIndex].jzxq"
167
+                type="textarea"
168
+                :rows="3"
169
+                placeholder="请输入就诊需求信息"
170
+                @change="(val) => handleUpdatePatient('jzxq', val)" />
171
+            </el-form-item>
172
+          </el-col>
173
+        </el-row>
174
+      </div>
175
+    </div>
176
+  </template>
177
+  
178
+  <script>
179
+  export default {
180
+    name: 'HospitalBusinessForm',
181
+    props: {
182
+      patientList: {
183
+        type: Array,
184
+        required: true
185
+      },
186
+      currentIndex: {
187
+        type: Number,
188
+        required: true
189
+      },
190
+      hospitalDataLists: {
191
+        type: Array,
192
+        default: () => []
193
+      }
194
+    },
195
+    methods: {
196
+      handleAddPatient() {
197
+        this.$emit('add-patient')
198
+      },
199
+      handleDeletePatient(index) {
200
+        this.$emit('delete-patient', index)
201
+      },
202
+      handleSelectPatient(index) {
203
+        this.$emit('select-patient', index)
204
+      },
205
+      handleUpdatePatient(field, value) {
206
+        this.$emit('update-patient', this.currentIndex, field, value)
207
+        
208
+        // 如果更新的是身份证号,自动计算年龄和性别
209
+        if (field === 'yysfzh' && value) {
210
+          try {
211
+            // 从身份证提取出生日期
212
+            const birthYear = parseInt(value.substring(6, 10))
213
+            const birthMonth = parseInt(value.substring(10, 12))
214
+            const birthDay = parseInt(value.substring(12, 14))
215
+            
216
+            // 计算年龄
217
+            const today = new Date()
218
+            let age = today.getFullYear() - birthYear
219
+            
220
+            // 如果今年的生日还没过,年龄减1
221
+            if (today.getMonth() + 1 < birthMonth || 
222
+                (today.getMonth() + 1 === birthMonth && today.getDate() < birthDay)) {
223
+              age--
224
+            }
225
+            
226
+            // 更新年龄
227
+            this.$emit('update-patient', this.currentIndex, 'yynl', age)
228
+            
229
+            // 判断性别(身份证第17位,奇数为男,偶数为女)
230
+            const genderCode = parseInt(value.charAt(16))
231
+            const gender = genderCode % 2 === 1 ? '0' : '1' // 0-男,1-女
232
+            
233
+            // 更新性别
234
+            this.$emit('update-patient', this.currentIndex, 'hzxb', gender)
235
+          } catch (e) {
236
+            console.error('身份证解析错误', e)
237
+          }
238
+        }
239
+      }
240
+    }
241
+  }
242
+  </script>
243
+  
244
+  <style scoped>
245
+  .hospital-business-form {
246
+    margin-bottom: 20px;
247
+  }
248
+  .active-tag {
249
+    background-color: #409EFF;
250
+    color: white;
251
+    border-color: #409EFF;
252
+  }
253
+  </style>

+ 39 - 2
CallCenterWeb.UI/RMYY/src/views/callScreen/components/NoRegList.vue

@@ -17,12 +17,29 @@
17 17
         clearable
18 18
         placeholder="请输入患者手机号"
19 19
       />
20
+      <el-date-picker
21
+        v-model="searchTime"
22
+        type="datetimerange"
23
+        format="yyyy-MM-dd HH:mm:ss"
24
+        value-format="yyyy-MM-dd HH:mm:ss"
25
+        align="left"
26
+        unlink-panels
27
+        range-separator="至"
28
+        start-placeholder="开始日期"
29
+        end-placeholder="结束日期"
30
+        size="medium" />
20 31
       <el-button
21 32
         type="primary"
22 33
         size="medium"
23 34
         @click="btn_search"
24 35
       >搜索</el-button
25 36
       >
37
+      <el-button
38
+        type="primary"
39
+        size="medium"
40
+        @click="btn_export"
41
+      >导出</el-button
42
+      >
26 43
     </div>
27 44
     <div class="regList">
28 45
       <div class="regItem" v-for="(item, index) in tableData">
@@ -47,8 +64,8 @@
47 64
 </template>
48 65
 
49 66
 <script>
50
-import { getHos, GetRegistrationl,getRegList,regCancel } from '@/api/callScreen/callScreen'
51
-
67
+import { getHos, GetRegistrationl,getRegList,regCancel,getRegListExport } from '@/api/callScreen/callScreen'
68
+import { exportExcel } from '@/utils'
52 69
 import Pagination from '@/components/context/Pagination' // 对el-pagination 二次封装
53 70
 import hischange from './hischange'
54 71
 export default {
@@ -68,7 +85,10 @@ export default {
68 85
       searchData: {
69 86
         name: '',
70 87
         tel: '',
88
+        startTime: '',
89
+        endTime: '',
71 90
       },
91
+      searchTime: '',
72 92
       hosarr: [],
73 93
       tableData: []
74 94
     }
@@ -109,6 +129,8 @@ export default {
109 129
       const params = {
110 130
         tel:this.searchData.tel,
111 131
         name:this.searchData.name,
132
+        startTime:this.searchData.startTime,
133
+        endTime:this.searchData.endTime,
112 134
         // datetime: this.searchData.searchTime,
113 135
         // id: this.searchData.hosid
114 136
       }
@@ -121,8 +143,23 @@ export default {
121 143
       })
122 144
     },
123 145
     btn_search() {
146
+      if (this.searchTime) {
147
+        this.searchData.startTime = this.searchTime[0]
148
+        this.searchData.endTime = this.searchTime[1]
149
+      }
150
+      console.log(this.searchData)
124 151
       this.getList()
125 152
     },
153
+    btn_export() {
154
+      const params = {
155
+        tel:this.searchData.tel,
156
+        name:this.searchData.name,
157
+        startTime:this.searchData.startTime,
158
+        endTime:this.searchData.endTime,
159
+        isdc: 1
160
+      }
161
+      exportExcel(params, getRegListExport)
162
+    },
126 163
     getHospital() {
127 164
       const params = {
128 165
         pageindex: 1,