sale-client 3.5.47 → 3.5.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/.babelrc +5 -5
  2. package/build/dev-server.js +164 -161
  3. package/package.json +2 -2
  4. package/src/components/FilesManage/UserGeneralInfoTest.vue +2 -1
  5. package/src/components/UserFiles/HighMeterCard.vue +1071 -0
  6. package/src/components/archives/ArchivesList.vue +14 -14
  7. package/src/components/archives/UserfilesList.vue +68 -2
  8. package/src/components/common/userinfo_detail/UserBaseInfoNew.vue +9 -4
  9. package/src/components/revenue/comprehen/StairPrice/GasPrice.vue +1 -1
  10. package/src/components/revenue/dispatch/dispatchDown.vue +1 -1
  11. package/src/components/webMeter/paramSave/ParamSetForm.vue +2 -1
  12. package/src/components/webMeter/paramSaveNew/ParamSetForm.vue +326 -248
  13. package/src/components/webMeter/paramSaveNew/RadioBtn.vue +9 -4
  14. package/src/filiale/chengtou/components/FilesManage/FileUserFiles.vue +1018 -0
  15. package/src/filiale/chengtou/sale.js +8 -0
  16. package/src/filiale/dongguan/components/comprehen/StairPrice/GasPrice.vue +1 -1
  17. package/src/filiale/qianneng/GasPrice.vue +1 -1
  18. package/src/filiale/shanggao/HighMeterIdCard.vue +1 -0
  19. package/src/filiale/{gongyi/filesManage → shangluo}/MeterinfoTest.vue +413 -75
  20. package/src/filiale/{gongyi/filesManage → shangluo}/UserEssentialInfoTest.vue +50 -22
  21. package/src/filiale/shangluo/sale.js +7 -0
  22. package/src/filiale/tongchuan/StairPrice/GasPrice.vue +1 -1
  23. package/src/filiale/tongchuan/UserBaseInfoNew.vue +14 -5
  24. package/src/plugins/CardService.js +1 -1
  25. package/.gradle/3.5.1/file-changes/last-build.bin +0 -0
  26. package/.gradle/3.5.1/taskHistory/taskHistory.lock +0 -0
  27. package/.gradle/buildOutputCleanup/built.bin +0 -0
  28. package/.gradle/buildOutputCleanup/cache.properties +0 -2
  29. package/.gradle/buildOutputCleanup/cache.properties.lock +0 -1
  30. package/src/filiale/gongyi/ChangeAccount/TransferManage.vue +0 -369
  31. package/src/filiale/gongyi/FilesManageNew/MeterinfoTest.vue +0 -681
  32. package/src/filiale/gongyi/HandManager/CardHand.vue +0 -695
  33. package/src/filiale/gongyi/HandManager/HandManager.vue +0 -1812
  34. package/src/filiale/gongyi/HandManager/HandManagerPrintBill.vue +0 -59
  35. package/src/filiale/gongyi/HandManager/PriceAdjustment.vue +0 -402
  36. package/src/filiale/gongyi/charge/ChargeList.vue +0 -711
  37. package/src/filiale/gongyi/charge/ChargeManage.vue +0 -229
  38. package/src/filiale/gongyi/charge/IOTMeterCenter.vue +0 -672
  39. package/src/filiale/gongyi/charge/business/CardMeterCenter.vue +0 -693
  40. package/src/filiale/gongyi/charge/business/OtherChargeNew.vue +0 -437
  41. package/src/filiale/gongyi/charge/business/ShowCardSellGas.vue +0 -720
  42. package/src/filiale/gongyi/charge/business/machine/MachineCharge.vue +0 -177
  43. package/src/filiale/gongyi/charge/business/machine/MachineMeterCenter.vue +0 -612
  44. package/src/filiale/gongyi/charge/business/machine/OweDetailList.vue +0 -62
  45. package/src/filiale/gongyi/charge/business/machine/OweList.vue +0 -213
  46. package/src/filiale/gongyi/charge/business/refund/IOTRefund.vue +0 -191
  47. package/src/filiale/gongyi/charge/business/refund/RefundManage.vue +0 -28
  48. package/src/filiale/gongyi/charge/business/refund/machineRefund.vue +0 -188
  49. package/src/filiale/gongyi/common/PaymentCode.vue +0 -164
  50. package/src/filiale/gongyi/common/userinfo_detail/UserBaseInfo.vue +0 -365
  51. package/src/filiale/gongyi/common/userinfo_detail/UserBaseInfoNew.vue +0 -325
  52. package/src/filiale/gongyi/components/revenue/comprehen/Message/AllUser.vue +0 -505
  53. package/src/filiale/gongyi/components/revenue/comprehen/Message/ArrearsList.vue +0 -323
  54. package/src/filiale/gongyi/filesManage/FileUserAddress.vue +0 -743
  55. package/src/filiale/gongyi/revenue/base/leftview/Userinfo.vue +0 -113
  56. package/src/filiale/gongyi/revenue/base/leftview/meterinfodetail.vue +0 -177
  57. package/src/filiale/gongyi/revenue/changemeter/ChangeMeter.vue +0 -681
  58. package/src/filiale/gongyi/revenue/comprehen/OverCharge/OverUseCharge.vue +0 -365
  59. package/src/filiale/gongyi/revenue/comprehen/StairPrice/GasPrice.vue +0 -501
  60. package/src/filiale/gongyi/revenue/comprehen/ovdue/Overduetax.vue +0 -201
  61. package/src/filiale/gongyi/revenue/comprehen/ovdue/OverduetaxPrintBill.vue +0 -61
  62. package/src/filiale/gongyi/sale.js +0 -54
@@ -0,0 +1,1071 @@
1
+ <template>
2
+ <modal :show.sync="show" v-ref:modal backdrop="false" width="1439px" style="height:auto">
3
+ <header slot="modal-header">
4
+ <div class="header">
5
+ <span class="glyphicon glyphicon-remove-circle close" style="margin-top: 35px;margin-right: 30px" @click="close"></span>
6
+ <h4 class="title">高拍仪(哲林)</h4>
7
+ </div>
8
+ </header>
9
+ <article slot="modal-body" class="form-control" style="padding: 0px">
10
+ <div class="form-group">
11
+ <div class="operation-group">
12
+ <strong class="operation" style="margin-top: 2px">视频操作:</strong>
13
+ <button class="btn btn-info photo" @click="bb()">拍照</button>
14
+ <button class="btn btn-info" @click="cam_switch(1)">打开视频1</button>
15
+ <button class="btn btn-info" @click="cam_switch(2)">打开视频2</button>
16
+ <button class="btn btn-info" @click="CloseVideo()">关闭视频</button>
17
+ <button class="btn btn-info" @click="openApp()">开启程序</button>
18
+ <div style="display: inline-block;margin-left: 570px">
19
+ <strong class="operation">读取身份证:</strong>
20
+ <button class="btn btn-info readIDCard" @click=Begin()>读身份证</button>
21
+ <button class="btn btn-default stop" @click=Stop()>停止读卡</button>
22
+ </div>
23
+ </div>
24
+ <div class="showInfo">
25
+ <IMG ID="Base64IMG" src="" class="img"></IMG>
26
+ <!-- <button style="position: absolute;buttom:-10px;left:0px;" @click="splitsimg">旋转</button>-->
27
+ <textarea id="Console" disabled="disabled"></textarea>
28
+ <IMG id="cam" :src="cameraurl" width="640" height="640">
29
+ </IMG>
30
+ </div>
31
+ <div class="IdCard">
32
+ <div class="auto IdInputDiv" style="margin-top: 20px"><strong class="IdHint">姓&emsp;&emsp;名</strong><input size=49 id="Name" class="IdInput"></div>
33
+ <div class="auto IdInputDiv" ><strong class="IdHint">性&emsp;&emsp;别</strong><input type="text" size=49 id="Sex" class="IdInput"></div>
34
+ <div class="auto IdInputDiv" ><strong class="IdHint">民&emsp;&emsp;族</strong><input type="text" size=49 id="Nation" class="IdInput"></div>
35
+ <div class="auto IdInputDiv"><strong class="IdHint">出&emsp;&emsp;生</strong><input type="text" size=49 id="Born" class="IdInput"></div>
36
+ <div class="auto IdInputDiv"><strong class="IdHint">地&emsp;&emsp;址</strong><input type="text" size=49 id="Address" class="IdInput"></div>
37
+ <div class="auto IdInputDiv"><strong class="IdHint">身份证号</strong><input type="text" size=49 id="CardNo" class="IdInput"></div>
38
+ <div class="auto IdInputDiv"><strong class="IdHint">签发机关</strong><input type="text" size=49 id="Police" class="IdInput"></div>
39
+ <div class="auto IdInputDiv"><strong class="IdHint">期限起始</strong><input type="text" size=49 id="ActivityLFrom" class="IdInput"></div>
40
+ <div class="auto IdInputDiv"><strong class="IdHint">期限失效</strong><input type="text" size=49 id="ActivityLTo" class="IdInput"></div>
41
+ <!-- <div class="auto IdInputDiv"><strong class="IdHint">设&emsp;备ID</strong><input type="text" size=49 id="DeviceNo" class="IdInput"></div>-->
42
+ <div class="auto IdInputDiv" style="float: left"><strong class="IdHint">照片编码</strong><TEXTAREA id="PhotoBuffer"style="width: 400px;height: 92px"></TEXTAREA>
43
+ </div>
44
+ <div class="auto IdInputDiv" style="float: left"><strong class="IdHint">照&emsp;&emsp;片</strong><IMG style="width: 130px; height:169px" id=PhotoDisplay />
45
+ </div>
46
+ <div class="auto IdInputDiv" style="padding-top:45%;padding-left:35%">
47
+ <button class="btn btn-info" style="width: max-content" @click="confirmIdCard">确定</button>
48
+ </div>
49
+ </div>
50
+ <!--<div style="display: inline-block;margin-top: 5px;margin-left: 5px;height: 640px;float: left;">-->
51
+ <!--<IMG id="IMG3" src="" style="width:300px;height:160px;display: block">-->
52
+ <!--<button class="btn btn-success" @click="DelPDF3()">删除图片</button>-->
53
+ <!--<IMG id="IMG2" src="" style="width:300px;height:160px;display: block">-->
54
+ <!--<button class="btn btn-success" @click="DelPDF2()">删除图片</button>-->
55
+ <!--<IMG id="IMG1" src="" style="width:300px;height:160px;display: block">-->
56
+ <!--<button class="btn btn-success" @click="DelPDF1()">删除图片</button>-->
57
+ <!--</div>-->
58
+ </div>
59
+ </article>
60
+ <footer slot="modal-footer" class="modal-footer">
61
+ <!--<button type="button" class="btn btn-default" @click='close'>取消</button>-->
62
+ <!--<button type="button" class="btn btn-success" @click='confirm(filename)'>确认</button>-->
63
+ </footer>
64
+ </modal>
65
+ </template>
66
+
67
+ <script>
68
+ let ws
69
+ let server_addr = 'ws://127.0.0.1:38088'// 本机端口地址
70
+ export default {
71
+ title: '高拍仪',
72
+ data () {
73
+ return {
74
+ cameraurl: '',
75
+ jd: 'transform:rotate(0deg)',
76
+ IdCardInfo:'',
77
+ degs: 0
78
+ }
79
+ },
80
+ props: ['show'],
81
+ methods: {
82
+ splitsimg () {
83
+ this.degs += 90
84
+ this.jd = `transform:rotate(${this.degs}deg)`
85
+ },
86
+ // 页面load消息
87
+ onLoad () {
88
+ return new Promise((resolve, reject) => {
89
+ if (ws) {
90
+ resolve()
91
+ }
92
+ // output("正在连接:" + server_addr);
93
+ ws = new WebSocket(server_addr)
94
+ ws.onopen = (evt) => {
95
+ if (this.connected) {
96
+ resolve()
97
+ }
98
+ this.connected = true
99
+ console.log('已连接服务器')
100
+ this.output('已经连接到服务器')
101
+ // 打开视频
102
+ console.log('打开摄像头1')
103
+ this.cam_switch(1)
104
+ // 打开自动裁边
105
+ resolve()
106
+ }
107
+ ws.onclose = (evt) => {
108
+ if (!this.connected) {
109
+ window.location.href = 'FLShell://'
110
+ setTimeout('this.onLoad()', 3)
111
+ } else {
112
+ this.output('已断开服务器连接')
113
+ this.connected = false
114
+ }
115
+ ws = null
116
+ reject(new Error('连接失败'))
117
+ }
118
+ ws.onmessage = (evt) => {
119
+ if (evt.data.length === 0) {
120
+ return
121
+ }
122
+ if (typeof evt.data === 'string') {
123
+ let msg = JSON.parse(evt.data)
124
+ if (msg.err && msg.err !== 0) {
125
+ this.output('错误 - ' + msg.err + ', ' + msg.msg)
126
+ reject('错误 - ' + msg.err + ', ' + msg.msg)
127
+ } else if (msg.msg) {
128
+ this.output(msg.msg)
129
+ }
130
+
131
+ if (msg.user_data) {
132
+ this.callback[msg.user_data](msg)
133
+ if (typeof msg.user_data === 'number') {
134
+ this.callback[msg.user_data] = undefined
135
+ }
136
+ }
137
+ } else {
138
+ let file = new FileReader()
139
+ file.onload = (evt) => {
140
+ if (evt.target.readyState == FileReader.DONE) {
141
+ let data = new Uint8Array(evt.target.result)
142
+ if (data[0] == this.SVR_BIN_MSG.CAP_FRAME) {
143
+ return this.drawImage(data)
144
+ }
145
+ }
146
+ }
147
+
148
+ file.readAsArrayBuffer(evt.data)
149
+ }
150
+ }
151
+ let canvas = document.getElementById('cam')
152
+ canvas.onmousedown = (e) => {
153
+ canvas.style.cursor = 'crosshair'
154
+
155
+ this.clicked = true
156
+
157
+ this.sendMsg(this.CLT_MSG.PRESET_MOUSEDOWN, {origX: e.layerX, origY: e.layerY}, function (msg) {
158
+ if (msg.err !== 0) { }
159
+ })
160
+ }
161
+
162
+ canvas.onmousemove = (e) => {
163
+ if (!this.clicked) {
164
+ canvas.style.cursor = 'default'
165
+ return
166
+ }
167
+ canvas.style.cursor = 'crosshair'
168
+
169
+ this.sendMsg(this.CLT_MSG.PRESET_MOUSEMOVE, {offx: e.layerX, offy: e.layerY}, (msg) => {
170
+ if (msg.err !== 0) { }
171
+ })
172
+ }
173
+
174
+ onmouseout = canvas.onmouseup = (e) => {
175
+ canvas.style.cursor = 'default'
176
+ if (!this.clicked) { return }
177
+
178
+ this.sendMsg(this.CLT_MSG.PRESET_MOUSEUP, {offx: e.layerX, offy: e.layerY}, (msg) => {
179
+ if (msg.err !== 0) {
180
+
181
+ }
182
+ })
183
+ this.clicked = false
184
+ }
185
+ })
186
+ },
187
+ // 打开视频
188
+ cam_switch (capID) {
189
+ if (capID == 1) {
190
+
191
+ this.cameraurl = 'http://127.0.0.1:38088/video=stream&camidx=0'
192
+ }
193
+ if (capID == 2) {
194
+ this.cameraurl = 'http://127.0.0.1:38088/video=stream&camidx=1'
195
+ }
196
+ },
197
+ // 关闭视频
198
+ CloseVideo () {
199
+ this.cameraurl = ''
200
+ },
201
+ openApp () {
202
+ window.location.href = 'cameraServicetis:0' // 启动 CameraService 服务程序
203
+ },
204
+ // //获取初始化结果
205
+ // GetInitRet(){
206
+ // if(this.iswaiting) return
207
+ // this.iswaiting = true
208
+ // this.sendMsg(this.CLT_MSG.GET_EVENT,(msg)=> {
209
+ // if(msg.err !== 0){
210
+ // this.iswaiting = false
211
+ // return
212
+ // }
213
+ // let event = msg.event
214
+ // switch(event){
215
+ // case 2:
216
+ // this.output("设备连接中断,请重新连接后再次打开视频。");
217
+ // break
218
+ //
219
+ // case 1:
220
+ // this.output("初始化成功");
221
+ // break;
222
+ //
223
+ // case 0:
224
+ // this.output("设备非法");
225
+ // break
226
+ // }
227
+ // this.iswaiting = false
228
+ // })
229
+ // },
230
+ // //获取PID
231
+ // GetPid(){
232
+ // if(this.iswaiting) return
233
+ // this.iswaiting = true
234
+ // this.sendMsg(this.CLT_MSG.GET_PID, (msg) => {
235
+ // if(msg.err !== 0) {
236
+ // this.iswaiting = false
237
+ // return
238
+ // }
239
+ //
240
+ // this.output("pid : " + msg.pid)
241
+ // this.iswaiting = false
242
+ // })
243
+ // },
244
+ // //获取分辨率
245
+ // GetFbl(){
246
+ // if(this.iswaiting) return
247
+ // this.iswaiting = true;
248
+ // this.sendMsg(this.CLT_MSG.GET_FBL, (msg) => {
249
+ // if(msg.err !== 0) {
250
+ // this.iswaiting = false;
251
+ // return;
252
+ // }
253
+ //
254
+ // this.output("分辨率 : " + msg.fbl);
255
+ // this.iswaiting = false
256
+ // });
257
+ // },
258
+ // //设置分辨率
259
+ // SetResolution(){
260
+ // if(this.iswaiting) return
261
+ // this.iswaiting = true
262
+ // let first = false
263
+ // let second = false
264
+ // this.sendMsg(this.CLT_MSG.SET_MJPG, {isMJPG:1},(msg) => { //设置MJPG格式
265
+ // if(msg.err !== 0) {
266
+ // first = true
267
+ // if(first == true && second == true){
268
+ // this.iswaiting = false
269
+ // return
270
+ // }
271
+ // }
272
+ // this.output("MJPG : " + 1)
273
+ // first = true
274
+ // if(first == true && second == true){
275
+ // this.iswaiting = false
276
+ // }
277
+ // })
278
+ // this.sendMsg(this.CLT_MSG.SET_FBL, {width:800,height:600},(msg) => { //设置分辨率
279
+ // if(msg.err !== 0) {
280
+ // second = true
281
+ // if(first == true && second == true){
282
+ // this.iswaiting = false
283
+ // }
284
+ // return
285
+ // }
286
+ // this.output("设置分辨率 : width=" + 800 + ",height=" + 600)
287
+ // second = true
288
+ // if(first == true && second == true){
289
+ // this.iswaiting = false
290
+ // }
291
+ // })
292
+ // },
293
+ // //设置视频旋转方向
294
+ // SetOrientation(){
295
+ // let oriT = 0
296
+ // // 设置转动 0 正常 1 上下转 2 左转 3 右转
297
+ // if(this.iswaiting){
298
+ // return
299
+ // }
300
+ // this.iswaiting = true
301
+ // oriT = 2
302
+ // if(oriT == 1){
303
+ // this.rotanumber = 2
304
+ // }else if(oriT == 2){
305
+ // this.rotanumber = 3
306
+ // }else if(oriT == 3){
307
+ // this.rotanumber = 1
308
+ // }
309
+ // this.sendMsg(this.CLT_MSG.SET_TURN, {turn:oriT},(msg) => {
310
+ // if(msg.err !== 0) {
311
+ // this.iswaiting = false
312
+ // return
313
+ // }
314
+ //
315
+ // this.output("设置旋转 : turn=" + oriT)
316
+ // this.iswaiting = false
317
+ // });
318
+ // },
319
+ // //设置视频旋转方向
320
+ // SetLeft(){
321
+ // // 设置转动 0 正常 1 上下转 2 左转 3 右转
322
+ // if(this.iswaiting) return
323
+ // this.iswaiting = true
324
+ // this.rotanumber--;
325
+ // let T = 0;
326
+ // if(this.rotanumber%4 == 0){
327
+ // T = 0;
328
+ // }else if(this.rotanumber%4 == -1 || this.rotanumber%4 == 3){
329
+ // T = 2;
330
+ // }else if(this.rotanumber%4 == -2 || this.rotanumber%4 == 2){
331
+ // T = 1;
332
+ // }else if(this.rotanumber%4 == -3 || this.rotanumber%4 == 1){
333
+ // T = 3
334
+ // }
335
+ // this.sendMsg(this.CLT_MSG.SET_TURN, {turn:T},(msg) => {
336
+ // if(msg.err !== 0) {
337
+ // this.iswaiting = false
338
+ // return
339
+ // }
340
+ // this.output("设置旋转 : turn=" + T)
341
+ // this.iswaiting = false
342
+ // })
343
+ // },
344
+ // //设置视频旋转方向
345
+ // SetRight(){
346
+ // // 设置转动 0 正常 1 上下转 2 左转 3 右转
347
+ // if(this.iswaiting) return
348
+ // this.iswaiting = true
349
+ // this.rotanumber++;
350
+ // var T = 0;
351
+ // if(this.rotanumber%4 == 0){
352
+ // T = 0
353
+ // }else if(this.rotanumber%4 == 1 || this.rotanumber%4 == -3){
354
+ // T = 3
355
+ // }else if(this.rotanumber%4 == 2 || this.rotanumber%4 == -2){
356
+ // T = 1
357
+ // }else if(this.rotanumber%4 == 3 || this.rotanumber%4 == -1){
358
+ // T = 2
359
+ // }
360
+ // this.sendMsg(this.CLT_MSG.SET_TURN, {turn:T},(msg) => {
361
+ // if(msg.err !== 0) {
362
+ // this.iswaiting = false
363
+ // return
364
+ // }
365
+ //
366
+ // this.output("设置旋转 : turn=" + T)
367
+ // this.iswaiting = false
368
+ // })
369
+ // },
370
+ // 设置截图保存的jpg格式压缩质量
371
+ SetQuality () {
372
+ if (this.iswaiting) return
373
+ this.iswaiting = true
374
+ this.sendMsg(this.CLT_MSG.SET_QUALITY, {quality: 50}, (msg) => {
375
+ if (msg.err !== 0) {
376
+ this.iswaiting = false
377
+ return
378
+ }
379
+ this.output('设置拍照图片质量 : quality=' + 50)
380
+ this.iswaiting = false
381
+ })
382
+ },
383
+ // 设置自动裁边开启
384
+ SetAutoCutOn () {
385
+ console.log('设置自动采编')
386
+ if (this.iswaiting) return
387
+ this.iswaiting = true
388
+ this.sendMsg(this.CLT_MSG.SET_AUTOCROP, {open: 1}, (msg) => {
389
+ if (msg.err !== 0) {
390
+ this.iswaiting = false
391
+ return
392
+ }
393
+ this.output('设置自动裁边 : open=' + 1)
394
+ this.iswaiting = false
395
+ })
396
+ },
397
+ // 设置自动裁边关闭
398
+ SetAutoCutOff () {
399
+ if (this.iswaiting) return
400
+ this.iswaiting = true
401
+ this.sendMsg(this.CLT_MSG.SET_AUTOCROP, {open: 0}, (msg) => {
402
+ if (msg.err !== 0) {
403
+ this.iswaiting = false
404
+ return
405
+ }
406
+ this.output('设置自动裁边 : open=' + 0)
407
+ this.iswaiting = false
408
+ })
409
+ },
410
+ // //设置预设框选
411
+ // SetBox(){
412
+ // if(this.iswaiting) return
413
+ // this.iswaiting = true
414
+ // this.resetx = 20
415
+ // this.resety = 20
416
+ // this.resetwidth = 300
417
+ // this.resetheight = 400
418
+ // this.sendMsg(this.CLT_MSG.SET_PREST, {left:this.resetx, top:this.resety, width:this.resetwidth, height:this.resetheight},(msg) =>{
419
+ // if(msg.err !== 0) {
420
+ // this.iswaiting = false
421
+ // return
422
+ // }
423
+ // this.output("设置预设框选 : left=" + this.resetx + ",top=" + this.resety + ",width=" + this.resetwidth + ",height=" + this.resetheight);
424
+ // this.iswaiting = false;
425
+ // })
426
+ // },
427
+ // //获取当前预设框选参数
428
+ // ShowResetInfo(){
429
+ // if(this.iswaiting) return
430
+ // this.iswaiting = true
431
+ // this.sendMsg(this.CLT_MSG.GET_PREST_INFO, (msg) => {
432
+ // if(msg.err !== 0) {
433
+ // this.iswaiting = false
434
+ // return
435
+ // }
436
+ // this.output("当前预设 : " + msg.prest_info)
437
+ // this.iswaiting = false
438
+ // })
439
+ // },
440
+ // 取消预设框选
441
+ ResetBox () {
442
+ if (this.iswaiting) return
443
+ this.iswaiting = true
444
+ this.sendMsg(this.CLT_MSG.SET_PREST, {left: 0, top: 0, width: 0, height: 0}, (msg) => {
445
+ if (msg.err !== 0) {
446
+ this.iswaiting = false
447
+ return
448
+ }
449
+ this.resetx = 0
450
+ this.resety = 0
451
+ this.resetwidth = 0
452
+ this.resetheight = 0
453
+ this.output('取消预设框选')
454
+ this.iswaiting = false
455
+ })
456
+ },
457
+ // //视频格式弹窗
458
+ // FormatDlg(){
459
+ // if(this.iswaiting) return
460
+ // this.iswaiting = true
461
+ // this.sendMsg(this.CLT_MSG.FORMAT_DLG,(msg) => {
462
+ // if(msg.err !== 0) {
463
+ // this.iswaiting = false;
464
+ // return
465
+ // }
466
+ // this.iswaiting = false;
467
+ // })
468
+ // },
469
+ // //视频属性弹窗
470
+ // PropertyDlg(){
471
+ // if(this.iswaiting) return
472
+ // this.iswaiting = true
473
+ // this.sendMsg(this.CLT_MSG.PROPERTY_DLG,(msg) => {
474
+ // if(msg.err !== 0) {
475
+ // this.iswaiting = false;
476
+ // return
477
+ // }
478
+ // this.iswaiting = false;
479
+ // })
480
+ // },
481
+ // //设置颜色模式 只针对截图
482
+ bb () {
483
+ let camidx = 0
484
+ if (this.cameraurl === 'http://127.0.0.1:38088/video=stream&camidx=0') {
485
+ camidx = 0
486
+ } else if (this.cameraurl === 'http://127.0.0.1:38088/video=stream&camidx=1') {
487
+ camidx = 1
488
+ } else {
489
+ this.$showAlert('请先打开视频', 'warning', 2000)
490
+ return
491
+ }
492
+ let param = {
493
+ camidx: camidx
494
+ }
495
+ this.$resetpost('http://127.0.0.1:38088/video=grabimage', param).then((msg) => { // 截图
496
+ console.log(msg)
497
+
498
+ if (msg.data.code != '0') {
499
+ this.$showAlert(msg.data.message, 'warning', 2000)
500
+ return
501
+ }
502
+ let s = 'data:image/jpg;base64,' + msg.data.photoBase64
503
+ document.getElementById('Base64IMG').src = s// 网页预览图片
504
+
505
+ this.output('base64 长度 : ' + s.length)
506
+ console.log(msg.data.photoBase64)
507
+ this.$emit('photo-finish', msg.data.photoBase64)
508
+ // document.getElementById("Base64IMG").src= "D:\\1234.jpg?" + Math.random();//网页预览图片
509
+ })
510
+ },
511
+ // 内存截图
512
+ bbase64 () {
513
+ if (this.iswaiting) return
514
+ this.iswaiting = true
515
+ this.sendMsg(this.CLT_MSG.GET_PICTURE_MEM, {turn: 0}, (msg) => {
516
+ if (msg.err !== 0) {
517
+ this.iswaiting = false
518
+ return
519
+ }
520
+ let s = 'data:image/jpg;base64,' + msg.base64str
521
+ document.getElementById('Base64IMG').src = s// 网页预览图片
522
+ alert(s)
523
+ this.output('base64 长度 : ' + s.length)
524
+ this.iswaiting = false
525
+ })
526
+ },
527
+ // base64编码测试
528
+ TestBase64 () {
529
+ if (this.iswaiting) return
530
+ this.iswaiting = true
531
+ this.sendMsg(this.CLT_MSG.TEST_BASE64, {code: '123456789'}, (msg) => {
532
+ if (msg.err !== 0) {
533
+ this.iswaiting = false
534
+ return
535
+ }
536
+ this.output('base64 内容 : ' + msg.base64str)
537
+ this.iswaiting = false
538
+ })
539
+ },
540
+ // //开启去底色
541
+ // bbStartClean(){
542
+ // if(this.iswaiting) return;
543
+ // this.iswaiting = true;
544
+ // this.sendMsg(this.CLT_MSG.SET_CLEAN_PARAM,{param1:280,param2:1.15,param3:8},(msg) => {
545
+ // if(msg.err !== 0){
546
+ // this.iswaiting = false
547
+ // return
548
+ // }
549
+ // this.output("去底色: " + 280 + "," + 1.15 + "," + 8)
550
+ // this.iswaiting = false
551
+ // })
552
+ // },
553
+ // //关闭去底色
554
+ // bbCloseClean(){
555
+ // if(this.iswaiting) return
556
+ // this.iswaiting = true
557
+ // this.sendMsg(this.CLT_MSG.SET_CLEAN_PARAM,{param1:-1},(msg) => {
558
+ // if(msg.err !== 0){
559
+ // this.iswaiting = false;
560
+ // return
561
+ // }
562
+ // this.output("去底色: " + -1);
563
+ // this.iswaiting = false;
564
+ // });
565
+ // },
566
+ // //设置制作PDF临时目录
567
+ // SetPDFPath(){
568
+ // if(this.iswaiting) return
569
+ // this.iswaiting = true
570
+ // this.sendMsg(this.CLT_MSG.SET_TEMPDIR,{path:"d:\\tp\\temp"},(msg) => {
571
+ // if(msg.err !== 0){
572
+ // this.iswaiting = false
573
+ // return
574
+ // }
575
+ // this.output("设置PDF路径: " + "d:\\tp\\temp")
576
+ // this.iswaiting = false
577
+ // })
578
+ // },
579
+ // //开始制作PDF
580
+ // BeginPDF(){
581
+ // if(this.iswaiting) return
582
+ // this.iswaiting = true
583
+ // this.sendMsg(this.CLT_MSG.BEGIN_PDF,(msg) => {
584
+ // if(msg.err !== 0){
585
+ // this.iswaiting = false
586
+ // return
587
+ // }
588
+ // this.output("开始制作PDF")
589
+ // this.iswaiting = false
590
+ // })
591
+ // },
592
+ // //PDF截图 保存到PDF临时目录
593
+ // GetPDF(){
594
+ // if(this.iswaiting) return
595
+ // this.iswaiting = true
596
+ // this.sendMsg(this.CLT_MSG.GET_PDF_PICTURES,{turn:0},(msg) => {
597
+ // if(msg.err !== 0){
598
+ // this.iswaiting = false
599
+ // return
600
+ // }
601
+ // // let s = "file://" + msg.path
602
+ // let s = "data:image/jpg;base64," + msg.base64str;
603
+ // document.getElementById("IMG1").src= null;
604
+ // document.getElementById("IMG1").src= document.getElementById("IMG2").src;
605
+ //
606
+ // document.getElementById("IMG2").src= null;
607
+ // document.getElementById("IMG2").src= document.getElementById("IMG3").src;
608
+ //
609
+ // document.getElementById("IMG3").src= null;
610
+ // document.getElementById("IMG3").src= s;
611
+ // this.output("PDF 文件 : " + msg.path + ",PDF文件 BASE64码长度:" + msg.base64str.length);
612
+ // this.iswaiting = false;
613
+ // })
614
+ // },
615
+ // // 结束制作PDF
616
+ // EndPDF(){
617
+ // if(this.iswaiting) return
618
+ // this.iswaiting = true
619
+ // this.sendMsg(this.CLT_MSG.END_PDF_PICTURES,{path:"D:\\tp\\1234.pdf"},(msg) => {
620
+ // if(msg.err !== 0){
621
+ // this.iswaiting = false
622
+ // return
623
+ // }
624
+ // this.output("结束PDF PDF文件:" + "D:\\tp\\1234.pdf");
625
+ // this.iswaiting = false;
626
+ // })
627
+ // },
628
+ // //PDF文件转码成BASE64文件 适合所有格式文件 非PDF也可使用
629
+ // PDFtoBASE64(){
630
+ // if(this.iswaiting) return
631
+ // this.iswaiting = true
632
+ // this.sendMsg(this.CLT_MSG.PDF_TO_BASE64,{src:"D:\\tp\\1234.pdf",des:"D:\\tp\\temp\\1234.txt"},(msg) => {
633
+ // if(msg.err !== 0){
634
+ // this.iswaiting = false
635
+ // if(msg.err == 108){return this.output("读文件错误")}
636
+ // if(msg.err == 109){return this.output("写文件错误")}
637
+ // }
638
+ // this.output("文件 :" + "D:\\tp\\1234.pdf" + "转成base64 :" + "D:\\tp\\temp\\1234.txt");
639
+ // this.iswaiting = false
640
+ // })
641
+ // },
642
+ // //base64文件转成PDF文件 适合所有文件 非PDF文件也可使用
643
+ // BASE64toPDF(){
644
+ // if(this.iswaiting) return
645
+ // this.iswaiting = true
646
+ // this.sendMsg(this.CLT_MSG.BASE64_TO_PDF,{src:"D:\\tp\\temp\\1234.txt",des:"D:\\tp\\pdfpdf.pdf"},(msg) => {
647
+ // if(msg.err !== 0){
648
+ // this.iswaiting = false;
649
+ // if(msg.err == 108){return this.output("读文件错误")}
650
+ // if(msg.err == 109){return this.output("写文件错误")}
651
+ // }
652
+ // this.output("base64文件: " + "D:\\tp\\temp\\1234.txt" + "转成:" + "D:\\tp\\pdfpdf.pdf")
653
+ // this.iswaiting = false
654
+ // })
655
+ // },
656
+ // //PDF文件转成BASE64码字符串 适合所有文件 非PDF文件也可使用
657
+ // PDFtoBASE64Str(){
658
+ // if(this.iswaiting) return
659
+ // this.iswaiting = true
660
+ // this.sendMsg(this.CLT_MSG.PDF_TO_BASE64_STR,{file:"D:\\tp\\pdfpdf.pdf"},(msg) => {
661
+ // if(msg.err !== 0){
662
+ // this.iswaiting = false
663
+ // if(msg.err == 108){return this.output("读文件错误")}
664
+ // }
665
+ // alert(msg.base64str)
666
+ // this.output("文件 BASE64 长度: " + msg.base64str.length)
667
+ // this.iswaiting = false
668
+ // })
669
+ // },
670
+ // //打印图片
671
+ // printimage(){
672
+ // if(this.iswaiting) return
673
+ // this.iswaiting = true
674
+ // this.sendMsg(this.CLT_MSG.PRINT_IMAGE,{file:"D:\\tp\\1234.jpg"},(msg) => {
675
+ // if(msg.err !== 0){ //错误消息可以不用处理 在config.js中已经有了统一的打印处理 在output函数中设置打印位置
676
+ // this.iswaiting = false;
677
+ // if(msg.err == 112){return this.output("开启打印机错误");}
678
+ // if(msg.err == 111){return this.output("请检查打印机纸张");}
679
+ // if(msg.err == 110){return this.output("没有默认打印机");}
680
+ // }
681
+ // this.output("打印作业号: " + msg.print_no);
682
+ // this.iswaiting = false;
683
+ // })
684
+ // },
685
+ // //显示错误弹窗
686
+ // ShowErrorInfo(){
687
+ // if(this.iswaiting) return
688
+ // this.iswaiting = true
689
+ // this.sendMsg(this.CLT_MSG.SHOW_ERROR_BOX,{on:1},(msg) => {
690
+ // if(msg.err !== 0){
691
+ // this.iswaiting = false
692
+ // return
693
+ // }
694
+ // this.output("错误提示开关:" + 1)
695
+ // this.iswaiting = false;
696
+ // })
697
+ // },
698
+ // //删除制作PDF的图片文件
699
+ // DelPDF3(){
700
+ // if(this.iswaiting) return
701
+ // this.iswaiting = true
702
+ // this.sendMsg(this.CLT_MSG.DEL_PICTURE_PDF,{file:1},(msg) => {
703
+ // if(msg.err !== 0){
704
+ // this.iswaiting = false
705
+ // return
706
+ // }
707
+ // this.output("删除PDF图片文件成功")
708
+ // this.iswaiting = false
709
+ // })
710
+ // document.getElementById("IMG3").src= null;
711
+ // document.getElementById("IMG3").src= document.getElementById("IMG2").src;
712
+ //
713
+ // document.getElementById("IMG2").src= null;
714
+ // document.getElementById("IMG2").src= document.getElementById("IMG1").src;
715
+ //
716
+ // document.getElementById("IMG1").src= null;
717
+ // },
718
+ // //删除制作PDF的临时图片文件
719
+ // DelPDF2(){
720
+ // if(this.iswaiting) return
721
+ // this.iswaiting = true
722
+ // this.sendMsg(this.CLT_MSG.DEL_PICTURE_PDF,{file:2},(msg) => {
723
+ // if(msg.err !== 0){
724
+ // this.iswaiting = false
725
+ // return
726
+ // }
727
+ // this.output("删除PDF图片文件成功")
728
+ // this.iswaiting = false
729
+ // })
730
+ // document.getElementById("IMG2").src= null;
731
+ // document.getElementById("IMG2").src= document.getElementById("IMG1").src;
732
+ // document.getElementById("IMG1").src= null;
733
+ // },
734
+ // //删除制作PDF的临时图片文件
735
+ // DelPDF1(){
736
+ // if(this.iswaiting) return
737
+ // this.iswaiting = true
738
+ // this.sendMsg(this.CLT_MSG.DEL_PICTURE_PDF,{file:3},(msg) => {
739
+ // if(msg.err !== 0){
740
+ // this.iswaiting = false;
741
+ // return
742
+ // }
743
+ // this.output("删除PDF图片文件成功")
744
+ // this.iswaiting = false
745
+ // })
746
+ // document.getElementById("IMG1").src= null;
747
+ // },
748
+ // //人证对比
749
+ // IDCardCompare(){
750
+ // if(this.iswaiting) return
751
+ // this.iswaiting = true
752
+ // let send = {file1:"D:\\1.jpg",file2:"D:\\2.jpg"}
753
+ // this.sendMsg(this.CLT_MSG.IDCARD_COMPARE,send,(msg) => {
754
+ // if(msg.err !== 0){
755
+ // this.iswaiting = false
756
+ // return
757
+ // }
758
+ // this.output("对比完成:" + send.file1 + "与" + send.file2 + "相似度"+ msg.cmpresult)
759
+ // this.iswaiting = false
760
+ // })
761
+ // },
762
+ ReadIDCard () {
763
+ return this.sendMsg(this.CLT_MSG.READ_IDCARD, (msg) => {
764
+ if (msg.code !== 0) { return }
765
+ this.setText(msg.IDCardInfo)
766
+ this.output('单读卡')
767
+ })
768
+ },
769
+ // 读身份证
770
+ Begin () {
771
+ this.$resetpost('http://127.0.0.1:38088/card=idcard', {}).then((msg) => { // 截图
772
+ console.log(msg)
773
+
774
+ if (msg.data.code != '0') {
775
+ this.$showAlert(msg.data.message, 'warning', 2000)
776
+ return
777
+ }else{
778
+ this.setText(msg.data.IDCardInfo)
779
+ }
780
+
781
+ this.output('读取身份证')
782
+
783
+ // document.getElementById("Base64IMG").src= "D:\\1234.jpg?" + Math.random();//网页预览图片
784
+ })
785
+ this.output('开始读卡')
786
+ },
787
+ // 停止读身份证
788
+ Stop () {
789
+ this.sendMsg(this.CLT_MSG.STOP_READ_IDCARD, (msg) => {
790
+ if (msg.err !== 0) { return }
791
+ this.output('停止读卡')
792
+ })
793
+ },
794
+ // //横向复印
795
+ // HCopy(){
796
+ // this.sendMsg(this.CLT_MSG.HCOPY_IDCARD, {copy_path:"D:\\"},(msg) => {
797
+ // if(msg.err !== 0){return}
798
+ // document.getElementById("IDCardDisplay").src = "data:image/jpg;base64," + msg.hcopy
799
+ // this.sendMsg(this.CLT_MSG.PRINT_IMAGE,{file:msg.filename},(msg2) => {
800
+ // if(msg2.err !== 0){ return}
801
+ // his.output("打印作业号: " + msg2.print_no)
802
+ // })
803
+ // this.output("横向复印" + msg.filename)
804
+ // })
805
+ // },
806
+ // //竖向复印
807
+ // VCopy(){
808
+ // this.sendMsg(this.CLT_MSG.VCOPY_IDCARD, {copy_path:"D:\\"},(msg) => {
809
+ // if(msg.err !== 0){return}
810
+ // document.getElementById("IDCardDisplay").src = "data:image/jpg;base64," + msg.vcopy;
811
+ // this.sendMsg(this.CLT_MSG.PRINT_IMAGE,{file:msg.filename},(msg2) => {
812
+ // if(msg2.err !== 0){ return}
813
+ // this.output("打印作业号: " + msg2.print_no)
814
+ // })
815
+ // this.output("竖向复印" + msg.filename)
816
+ // })
817
+ // },
818
+ // //正面复印
819
+ // PCopy(){
820
+ // this.sendMsg(this.CLT_MSG.PCOPY_IDCARD, {copy_path:"D:\\"},(msg) => {
821
+ // if(msg.err !== 0){return}
822
+ // document.getElementById("IDCardDisplay").src = "data:image/jpg;base64," + msg.pcopy
823
+ // this.sendMsg(this.CLT_MSG.PRINT_IMAGE,{file:msg.filename},(msg2) => {
824
+ // if(msg2.err !== 0){ return}
825
+ // this.output("打印作业号: " + msg2.print_no)
826
+ // })
827
+ // this.output("正面复印" + msg.filename)
828
+ // })
829
+ // },
830
+ // //反面复印
831
+ // NCopy(){
832
+ // this.sendMsg(this.CLT_MSG.NCOPY_IDCARD, {copy_path:"D:\\"},(msg) => {
833
+ // if(msg.err !== 0){return}
834
+ // document.getElementById("IDCardDisplay").src = "data:image/jpg;base64," + msg.ncopy
835
+ // this.sendMsg(this.CLT_MSG.PRINT_IMAGE,{file:msg.filename},(msg2) => {
836
+ // if(msg2.err !== 0){ return}
837
+ // this.output("打印作业号: " + msg2.print_no)
838
+ // })
839
+ // this.output("反面复印" + msg.filename)
840
+ // })
841
+ // },
842
+ // 视频帧绘制函数
843
+ drawImage (data) {
844
+ // 校验视频是否在一定时间内的
845
+ if (!this.checkTimestamp(data[2] * 256 + data[1])) {
846
+ return
847
+ }
848
+ // 视频帧头有时间戳 注意偏移 和 大小端处理
849
+ let width = data[this.base_offset + 1] * 256 + data[this.base_offset]
850
+ let height = data[this.base_offset + 3] * 256 + data[this.base_offset + 2]
851
+
852
+ let cam = document.getElementById('cam')
853
+ let context = cam.getContext('2d')
854
+ if (this.orgdrawwidth != width || this.orgdrawheight != height) {
855
+ this.orgdrawwidth = width
856
+ this.orgdrawheight = height
857
+ cam.height = cam.height
858
+ }
859
+
860
+ let image = context.createImageData(width, height)
861
+ for (let n = 0; n != height; ++n) {
862
+ for (let m = 0; m != width; ++m) {
863
+ let image_offset = ((height - n - 1) * width + m) * 4
864
+ let data_offset = (n * width + m) * 3 + this.base_offset + 4
865
+ image.data[image_offset] = data[data_offset + 2]
866
+ image.data[image_offset + 1] = data[data_offset + 1]
867
+ image.data[image_offset + 2] = data[data_offset]
868
+ image.data[image_offset + 3] = 255
869
+ }
870
+ }
871
+ context.putImageData(image, 0, 0)
872
+ },
873
+ checkTimestamp (svr_time) {
874
+ let myDate = new Date()
875
+ let clt_time = myDate.getSeconds() * 1000 + myDate.getMilliseconds()
876
+ if (clt_time < svr_time) {
877
+ clt_time += 60 * 1000
878
+ }
879
+ return clt_time - svr_time < 3000
880
+ },
881
+ sendMsg (proto, msg, cb) {
882
+ if (!ws) {
883
+ return
884
+ }
885
+
886
+ if (typeof msg !== 'object') {
887
+ if (typeof msg === 'function') {
888
+ cb = msg
889
+ msg = {}
890
+ } else {
891
+ msg = {}
892
+ }
893
+ }
894
+
895
+ msg.proto = proto
896
+ if (typeof cb === 'function') {
897
+ this.callback[++this.context] = cb
898
+ msg.user_data = this.context
899
+ }
900
+
901
+ ws.send(JSON.stringify(msg))
902
+ },
903
+ output (content) {
904
+ if (content.length == 0) { return }
905
+ let console = document.getElementById('Console')
906
+ console.value += content
907
+ console.value += '\r'
908
+ console.scrollTop = console.scrollHeight
909
+ },
910
+ // 显示读到的身份证信息
911
+ setText (msg) {
912
+ document.getElementById('Name').value = msg.name
913
+ document.getElementById('Sex').value = msg.sex
914
+ document.getElementById('Nation').value = msg.nation
915
+ document.getElementById('Born').value = msg.birthday
916
+ document.getElementById('Address').value = msg.address
917
+ document.getElementById('CardNo').value = msg.cardID
918
+ document.getElementById('Police').value = msg.issueOrgan
919
+ document.getElementById('ActivityLFrom').value = msg.validStart
920
+ document.getElementById('ActivityLTo').value = msg.validEnd
921
+ // document.getElementById('DeviceNo').value = msg.validEnd
922
+ document.getElementById('PhotoBuffer').value = msg.fingerBase64
923
+ document.getElementById('PhotoDisplay').src = 'data:image/jpg;base64,' + msg.photoBase64
924
+ this.IdCardInfo = msg
925
+ },
926
+ close () {
927
+ this.show = !this.show
928
+ if (this.isopen) {
929
+ this.CloseVideo()
930
+ }
931
+ },
932
+ confirmIdCard () {
933
+ let param = this.IdCardInfo
934
+ if(this.IdCardInfo){
935
+ param.strName=this.IdCardInfo.name
936
+ param.strID=this.IdCardInfo.cardID
937
+ }
938
+ this.$emit('confirminfo', param)
939
+ this.IdCardInfo = {}
940
+ }
941
+ },
942
+ ready () {
943
+ this.onLoad().then(() => {
944
+ this.$emit('ready')
945
+ }).catch((error) => {
946
+ this.$emit('error', error)
947
+ })
948
+ }
949
+ }
950
+ </script>
951
+
952
+ <style scoped>
953
+ .modal-bk{
954
+ border-radius:18px 0;
955
+ }
956
+ .header{
957
+ background-color: #d8e9f3;
958
+ height: 88px;
959
+ }
960
+ .title{
961
+ position: absolute;
962
+ font-family:PingFang-SC-Bold;
963
+ font-size:36px;
964
+ color: #666666;
965
+ margin-top: 32px;
966
+ margin-left: 665.5px;
967
+ margin-bottom: 0px;
968
+ }
969
+ .operation{
970
+ font-family:PingFang-SC-Medium;
971
+ font-size: 22px;
972
+ color:#666666;
973
+ line-height: 5px;
974
+ }
975
+ .operation-group{
976
+ margin-left: 36px;
977
+ margin-top: 20px;
978
+ }
979
+ .photo{
980
+ font-family: PingFang-SC-Medium;
981
+ font-size: 20px;
982
+ color: #ffffff;
983
+ margin-left: 20px;
984
+ border-radius: 4px;
985
+ background-color: #2fadf5;
986
+ height: 32px;
987
+ width: 92px;
988
+ line-height:12px;
989
+ }
990
+ .readIDCard{
991
+ font-family: PingFang-SC-Medium;
992
+ font-size: 20px;
993
+ color: #ffffff;
994
+ border-radius: 4px;
995
+ background-color: #2fadf5;
996
+ margin-left: 20px;
997
+ width: 120px;
998
+ height: 32px;
999
+ line-height: 12px;
1000
+ }
1001
+ .stop{
1002
+ border-radius: 4px;
1003
+ border: 1px solid #2fadf5;
1004
+ font-family: PingFang-SC-Medium;
1005
+ font-size: 20px;
1006
+ color: #2fadf5;
1007
+ width: 120px;
1008
+ height: 32px;
1009
+ line-height: 12px;
1010
+ }
1011
+ .showInfo{
1012
+ float: left;
1013
+ width: 640px;
1014
+ display: inline-block;
1015
+ margin-top: 20px;
1016
+ margin-left: 36px;
1017
+ }
1018
+ #Console{
1019
+ margin-left: 18px;
1020
+ border-radius: 4px;
1021
+ border: 1px solid #b5b5b5;
1022
+ height:300px;
1023
+ width:322px;
1024
+ resize:none;
1025
+ background-color: #f6f6f6;
1026
+ }
1027
+ .img{
1028
+ height:300px;
1029
+ width:300px;
1030
+ float: left;
1031
+ border-radius: 4px;
1032
+ border: 1px solid #b5b5b5;
1033
+ }
1034
+ #cam{
1035
+ border-radius: 4px;
1036
+ border:1px solid #b5b5b5;
1037
+ display: inline-block
1038
+ }
1039
+ .IdCard{
1040
+ height: 950px;
1041
+ width: 692px;
1042
+ display: inline-block;
1043
+ border-radius: 20px;
1044
+ background-color: #fafafa;
1045
+ border: 1px solid #d8f1ff;
1046
+ margin-left: 40px;
1047
+ margin-top: 20px;
1048
+ }
1049
+ .IdInput{
1050
+ border-radius: 4px;
1051
+ border: 1px solid #939393;
1052
+ width: 400px;
1053
+ height: 38px;
1054
+ margin-left: 20px;
1055
+ }
1056
+ .IdInputDiv{
1057
+ margin-top: 20px;
1058
+ margin-left: 100px;
1059
+ }
1060
+ .IdHint{
1061
+ font-family: PingFang-SC-Medium;
1062
+ font-size: 18px;
1063
+ color: #7e7c81;
1064
+ }
1065
+ #PhotoBuffer,#PhotoDisplay{
1066
+ border-radius: 4px;
1067
+ background-color: #ffffff;
1068
+ border: 1px solid #939393;
1069
+ margin-left: 20px;
1070
+ }
1071
+ </style>