sale-client 3.6.461 → 3.6.462

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.6.461",
3
+ "version": "3.6.462",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -0,0 +1,122 @@
1
+ <template>
2
+ <div>
3
+ <img :src="newsrc" :alt="alt" @click="open()" style="width:100%" title="点击查看图片" :id="'vc-imgself-img-'+attach">
4
+ <div class="full-img" v-if="show" >
5
+ <img :src="newsrc" alt="" class="img-state" :alt="alt || ''">
6
+ <div class="btns">
7
+ <button type="button" name="button" class="btn btn-primary" @click="enlarge()" :id="'vc-imgself-enlarge-'+attach">放大</button>
8
+ <button type="button" name="button" class="btn btn-primary" @click="reduce()" :id="'vc-imgself-reduce-'+attach">缩小</button>
9
+ <button type="button" name="button" class="btn btn-primary" @click="leftRevolve()" :id="'vc-imgself-leftRevolve-'+attach">向左旋转</button>
10
+ <button type="button" name="button" class="btn btn-primary" @click="rightRevolve()" :id="'vc-imgself-rightRevolve-'+attach">向右旋转</button>
11
+ <button type="button" name="button" class="btn btn-primary" @click="close()" :id="'vc-imgself-close-'+attach">关闭</button>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ import $ from 'jquery'
19
+
20
+ export default {
21
+ // props: ['src', 'width', 'height', 'alt'],
22
+ props: {
23
+ src: {
24
+ type: String
25
+ },
26
+ width: {
27
+ default: 60
28
+ },
29
+ height: {
30
+ default: 60
31
+ },
32
+ alt: {
33
+ default: '图片加载失败'
34
+ },
35
+ attach: {
36
+ type: String,
37
+ default: 'name'
38
+ }
39
+ },
40
+ data () {
41
+ return {
42
+ show: false,
43
+ deg: 0,
44
+ power: 0.5
45
+ }
46
+ },
47
+ computed:{
48
+ newsrc(){
49
+ if(this.src && this.src.indexOf('data:image/jpg;base64,')!==-1 && this.src.indexOf('?')!==-1){
50
+ return this.src.substring(0,this.src.indexOf('?'))
51
+ }
52
+ return this.src
53
+ }
54
+
55
+ },
56
+ methods: {
57
+ open () {
58
+ this.deg = 0
59
+ this.power = 0.5
60
+ this.show = true
61
+ },
62
+ close () {
63
+ this.show = false
64
+ },
65
+ enlarge () {
66
+ console.log('放大')
67
+ this.power = 2*this.power
68
+ this.imgState()
69
+ },
70
+ reduce () {
71
+ console.log('缩小')
72
+ this.power = 0.5*this.power
73
+ this.imgState()
74
+ },
75
+ leftRevolve () {
76
+ console.log('左旋转')
77
+ this.deg -= 90
78
+ this.imgState()
79
+ },
80
+ rightRevolve () {
81
+ console.log('右旋转')
82
+ this.deg += 90
83
+ this.imgState()
84
+ },
85
+ imgState () {
86
+ console.log('调取总函数')
87
+ $('.img-state').css({
88
+ 'transform': 'rotate(' + this.deg + 'deg) scale(' + this.power + ' ,' + this.power + ')'
89
+ })
90
+ }
91
+ }
92
+ }
93
+ </script>
94
+ <style media="screen">
95
+ .full-img {
96
+ height: 90vh;
97
+ position: fixed;
98
+ top: 0;
99
+ bottom: 0;
100
+ left: 0;
101
+ right: 0;
102
+ z-index: 20;
103
+ background: rgba(0,0,0,0.8);
104
+ display: flex;
105
+ overflow: auto;
106
+ flex-direction: column;
107
+ justify-content: center;
108
+ align-items: center;
109
+ color: #fff;
110
+ }
111
+ .btns {
112
+ position: absolute;
113
+ bottom: 100px;
114
+ height: auto;
115
+ }
116
+ .btns button {
117
+ margin-right: 20px;
118
+ }
119
+ .img-state {
120
+
121
+ }
122
+ </style>
@@ -0,0 +1,556 @@
1
+ <template>
2
+ <div style="background-color: #FFFFFF;" >
3
+ <div class=" col-sm-12"
4
+ style="background-color: #FFFFFF;height:auto;border-radius: 8px">
5
+ <div style="position: relative;height: 34px;width:75%;margin: 30px auto 10px auto;">
6
+ <div class="inpGroup" v-if="isremark" style="position:absolute;left: 0px;">
7
+ <input v-model="headers.fremarks" class="inp" placeholder="文件说明"/>
8
+ </div>
9
+ <div style="position:absolute;right:10%;">
10
+ <button class="button_search btn-gn" @click="fileUpload()" v-show="!isupload" >本地上传</button>
11
+ </div>
12
+ <div v-if="isusetype">
13
+ <v-select class="inp_button2" type="button" placeholder="使用类型" :options="foptions"
14
+ :value.sync="useType" v-model="useType"></v-select>
15
+ </div>
16
+ </div>
17
+ <hr style="width: 90%;margin: 0px auto;border: #999999 1px solid;margin-top: 60px"/>
18
+ <div class="showList col-sm-12" style="padding: 10px;margin-top: 20px">
19
+ <div :class="cols ? cols : 'col-sm-6'" style="padding:10px 10px 0px 10px;height: auto;box-sizing: border-box"
20
+ v-for="row in fileInfoData">
21
+ <div class="showData">
22
+ <div class="left">
23
+ <a href="#" class="thumbnail" style="width:100%;height:100%" >
24
+ <img-self v-if="(row.f_filetype.toLowerCase()==='jpg'||row.f_filetype.toLowerCase()==='png'||row.f_filetype.toLowerCase()==='gif'||row.f_filetype.toLowerCase()==='bmp')" :src="row.f_downloadURL" alt="..."></img-self>
25
+ <img-self v-if="row.f_filetype.toLowerCase()==='pdf'" :width="width?width:60" style="width:66%" src="../../../static/mainicon/pdf.jpg" alt="..."></img-self>
26
+ <img-self v-if="row.f_filetype.toLowerCase()==='xls'||row.f_filetype.toLowerCase()==='xlsx'" style="width:66%" src="../../../static/mainicon/excel.jpg" alt="..."></img-self>
27
+ <img-self v-if="row.f_filetype.toLowerCase()==='doc'||row.f_filetype.toLowerCase()==='docx'" style="width:66%" src="../../../static/mainicon/doc.jpg" alt="..."></img-self>
28
+ </a>
29
+ </div>
30
+ <div class="right">
31
+ <p :title="row.f_uploaddate" class="top clears"><strong>上传时间</strong>:&nbsp;<span>{{row.f_uploaddate}}</span></p>
32
+ <p :title="row.f_username" class="top clears"><strong>操作员</strong>:&nbsp;<span>{{row.f_username}}</span></p>
33
+ <p :title="row.f_filename" class="top clears"><strong>文件名</strong>:&nbsp;{{row.f_filename}}</p>
34
+ <p :title="row.fremarks" class="top clears"><strong>文件说明</strong>:&nbsp;{{row.fremarks}}</p>
35
+ <p>
36
+ <a v-if="row.f_filetype.toLowerCase()==='jpg'||row.f_filetype.toLowerCase()==='png'||row.f_filetype.toLowerCase()==='gif'||row.f_filetype.toLowerCase()==='bmp'" :href="row.f_downloadURL" style="background:#6aa6e2" class="btn btn-primary" target="_blank" role="button">预览</a>
37
+ <button class="button_search btn-gn" v-if="row.f_filetype.toLowerCase()==='pdf'||row.f_filetype.toLowerCase()==='xls'||row.f_filetype.toLowerCase()==='xlsx'||row.f_filetype.toLowerCase()==='doc'||row.f_filetype.toLowerCase()==='docx'" @click="downloadfile(row.f_downloadURL)" >下载</button>
38
+ <a v-show="isDelete == '1'" @click="delet($index,row)" href="#" class="btn btn-default" role="button">删除</a>
39
+ </p>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <modal :show.sync="showUpload" v-ref:modal backdrop="false">
46
+ <header slot="modal-header" class="modal-header">
47
+ <button type="button" class="close" @click="close"><span class="glyphicon glyphicon-remove"></span></button>
48
+ <h4 class="modal-title">文件上传</h4>
49
+ </header>
50
+ <article slot="modal-body" class="modal-body">
51
+ <div class="form-group">
52
+ <file-upload class="my-file-uploader" name="myFile+{{blodid}}"
53
+ action="rs/file/uploadFile" tagname="文件上传" :headers="headers" multiple v-ref:file></file-upload>
54
+ </div>
55
+ </article>
56
+ <footer slot="modal-footer" class="modal-footer">
57
+ </footer>
58
+ </modal>
59
+ </div>
60
+ </template>
61
+ <script>
62
+ import { HttpResetClass } from 'vue-client'
63
+ import Vue from "vue";
64
+
65
+ export default {
66
+ title: "附件",
67
+ props: ['blodid', 'isremark', 'isusetype','takeimg','defname','isupload','fusetype','cols'],
68
+ data() {
69
+ return {
70
+ isDelete: '1', // 删除按钮,可以进行控制(权限等)
71
+ fileInfoData: [], // 数据库存储的文件记录对象数组
72
+ headers: {'username': this.$login.f.name, 'blodid': '', 'fremarks': '','defname':'','fusetype':this.fusetype?this.fusetype:''}, // 调用rs/file/uploadFile 的参数
73
+ showUpload: false, // 上传模态框控制
74
+ showhighmeter: false, // 高拍仪组件控制
75
+ useType: '', // 使用类型
76
+ fileRemark: '' // 文件说明
77
+ }
78
+ },
79
+ methods: {
80
+ // 查询按钮事件
81
+ delet(index, row) {
82
+ this.$resetdelete('rs/entity/t_files', {id: row.id}, {resolveMsg: '删除成功', rejectMsg: '删除失败'}).then((res) => {
83
+ this.fileInfoData.splice(index, 1)
84
+ })
85
+ },
86
+ GetRequest() {
87
+ var url = location.search;
88
+ var theRequest = new Object();
89
+ if (url.indexOf("?") != -1) {
90
+ var str = url.substr(1);
91
+ let strs = str.split("&");
92
+ for (var i = 0; i < strs.length; i++) {
93
+ theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);
94
+ }
95
+ }
96
+ return theRequest;
97
+ },
98
+ downloadfile(filepath){
99
+
100
+ var link = document.createElement('a');
101
+ // let pathName = "http://" + location.host + filepath;
102
+ link.href = filepath;
103
+ link.target='_blank'
104
+ link.dispatchEvent(new MouseEvent('click'));
105
+ },
106
+ upload() {
107
+
108
+ if(this.showhighmeter){
109
+ console.log(this,'测试')
110
+ this.$refs.ltgao.closeVideo()
111
+ }
112
+ console.log('测试1')
113
+ this.showhighmeter = !this.showhighmeter
114
+ },
115
+ async load(self) {
116
+ let condition = `f_blobid= '${self.headers.blodid}' `
117
+ if(this.fusetype){
118
+ condition += ` and fusetype='${this.fusetype}'`
119
+ }
120
+ var http = new HttpResetClass()
121
+ let data = {
122
+ tablename: 't_files',
123
+ condition: condition+` order by f_uploaddate desc `
124
+ }
125
+ let getFile = await http.load('POST', 'rs/sql/saleSingleTable', {data: data}, {
126
+ warnMsg: null,
127
+ resolveMsg: null
128
+ })
129
+
130
+ for (var i = 0; i < getFile.data.length; i++) {
131
+ // 如果使用类型包含导入字样,则是execl文件导入的,不做显示
132
+ if(getFile.data[i].fusetype&&(getFile.data[i].fusetype.includes('execl导入'))){
133
+ getFile.data.splice(i,1)
134
+ i--
135
+ continue
136
+ }
137
+ let temp = getFile.data[i].f_downloadpath
138
+ let URL = temp.substring(temp.lastIndexOf(":\\") + 2)
139
+ getFile.data[i].f_downloadURL = location.protocol + "//" + location.host + "/" + URL
140
+ }
141
+ self.fileInfoData = []
142
+ self.fileInfoData = getFile.data
143
+ },
144
+ // 数据库时间格式化
145
+ formatdate(val) {
146
+ //20180914151603 : 2018-09-14 15:16:03
147
+ if (val.length != 14)
148
+ return
149
+ let year = val.substr(0, 4)
150
+ let month = val.substr(4, 2)
151
+ let day = val.substr(6, 2)
152
+ let hour = val.substr(8, 2)
153
+ let min = val.substr(10, 2)
154
+ let second = val.substr(12, 2)
155
+ return year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + second
156
+ },
157
+ // 打开文件上传对话框
158
+ fileUpload() {
159
+ this.showUpload = true
160
+ },
161
+ // 关闭文件上传对话框
162
+ close() {
163
+ this.showUpload = false
164
+ // 将选的文件清空
165
+ this.$refs.file.$el.querySelector('input').value = ''
166
+ this.load(this)
167
+ },
168
+ convertBase64ToBlob(base64String) {
169
+ // 将base64解码
170
+ var bytes = atob(base64String);
171
+ //var bytes = base64;
172
+ var bytesCode = new ArrayBuffer(bytes.length);
173
+ // 转换为类型化数组
174
+ var byteArray = new Uint8Array(bytesCode);
175
+
176
+ // 将base64转换为ascii码
177
+ for (var i = 0; i < bytes.length; i++) {
178
+ byteArray[i] = bytes.charCodeAt(i);
179
+ }
180
+ // 生成Blob对象(文件对象)
181
+ return new Blob([bytesCode], {type: 'image/jpeg'});
182
+ },
183
+ newPhoto(Imgbase64) {
184
+ let form = new FormData()
185
+ let xhr = new XMLHttpRequest()
186
+ let formDataBoundary = "----WebkitFormBoundary" + "GaoPaiYi";
187
+ form.append('Content-Type', 'multipart/form-data;boundary=' + formDataBoundary)
188
+ form.append('file', this.convertBase64ToBlob(Imgbase64), "GaoPaiYi.jpg")
189
+ xhr.open("POST", "rs/file/uploadFile")
190
+
191
+ if (this.headers) {
192
+ for (var header in this.headers) {
193
+ xhr.setRequestHeader(header, encodeURIComponent(this.headers[header]))
194
+ }
195
+ }
196
+ xhr.send(form)
197
+ if (Vue.$login && Vue.$login.jwt) {
198
+ xhr.setRequestHeader('Authorization', 'Bearer ' + Vue.$login.jwtNew)
199
+ xhr.setRequestHeader('Token', Vue.$login.jwt)
200
+ }
201
+ setTimeout(() => {
202
+ this.load(this)
203
+ }, 5000)
204
+ },
205
+ confirmIdCard (IdCardInfo){
206
+ let param=IdCardInfo
207
+ this.showhighmeter=false
208
+ this.$dispatch('getidinfo',param)
209
+ }
210
+ },
211
+ ready() {
212
+ this.headers.blodid = this.blodid
213
+ console.log('123222', this.blobid)
214
+ if (this.blodid) {
215
+ this.load(this)
216
+ }
217
+ },
218
+ watch: {
219
+ 'blodid'(val) {
220
+ if (val) {
221
+ console.log('观察blodid', val)
222
+ this.headers.blodid = this.blodid
223
+ this.load(this)
224
+ }
225
+ },
226
+ 'useType'() {
227
+ this.headers.fusetype = this.useType[0] ? this.useType[0] : ''
228
+ },
229
+ 'defname'() {
230
+ this.headers.defname=this.defname
231
+ }
232
+ },
233
+ computed: {
234
+ foptions() {
235
+ return this.$appdata.getParam('使用类型')
236
+ },
237
+ },
238
+ events: {
239
+ onFileUpload: function (file, res) {
240
+ console.log("上传完毕")
241
+ this.headers.fremarks=''
242
+ this.close()
243
+ }
244
+ }
245
+ }
246
+ </script>
247
+ <style scoped>
248
+
249
+ * {
250
+ padding: 0px;
251
+ margin: 0px;
252
+ }
253
+
254
+ .inpGroup {
255
+ position: absolute;
256
+ left: 0px;
257
+ right: 220px;
258
+ font-family: "微软雅黑";
259
+ }
260
+
261
+ .navWin {
262
+ position: relative;
263
+ }
264
+
265
+ .navWin .navShow {
266
+ margin-top: 5px;
267
+ height: 34px;
268
+ font-size: 20px;
269
+ line-height: 34px;
270
+ color: rgb(180, 180, 180);
271
+ }
272
+
273
+ .navWin .navShow span {
274
+ display: inline-block;
275
+ height: 34px;
276
+ }
277
+
278
+ .navWin .navShow .icon {
279
+ height: 34px;
280
+ margin-right: 10px;
281
+ color: rgb(200, 200, 200);
282
+ }
283
+
284
+ .navWin .navList {
285
+ position: absolute;
286
+ width: 100%;
287
+ z-index: 99;
288
+ list-style: none;
289
+ background-color: rgba(241, 241, 241, 0.9);
290
+ line-height: 34px;
291
+ color: #8d8d8d;
292
+ visibility: hidden;
293
+ }
294
+
295
+ .navWin:hover .navList {
296
+ visibility: visible;
297
+ }
298
+
299
+ .navWin .navList li {
300
+ font-size: 18px;
301
+ padding-left: 30px;
302
+ }
303
+
304
+ .navWin .navList li:hover {
305
+ background-color: rgba(220, 220, 220, 0.9);
306
+ }
307
+
308
+ .inp {
309
+ box-sizing: border-box;
310
+ width: 79%;
311
+ padding: 0px 10px;
312
+ height: 34px;
313
+ font-size: 14px;
314
+ line-height: 36px;
315
+ color: #999999;
316
+ border: solid 1px #c1c1c1;
317
+ border-radius: 2px;
318
+ background: none;
319
+ outline: none;
320
+ }
321
+
322
+ .inp::-webkit-input-placeholder {
323
+ color: #999999;
324
+ }
325
+
326
+ .inp_button {
327
+ float: right;
328
+ margin-left: 10px;
329
+ /* position: absolute;
330
+ right: 35px;
331
+ height: 40px;*/
332
+ width: 100px;
333
+ font-size: 14px;
334
+ line-height: 34px;
335
+ color: #ffffff;
336
+ text-align: center;
337
+ background-color: rgb(90, 180, 90);
338
+ border-radius: 4px;
339
+ cursor: pointer;
340
+ }
341
+
342
+ .btn-group {
343
+ height: 34px;
344
+ }
345
+
346
+ .inp_button2 {
347
+ float: right;
348
+ margin-left: 10px;
349
+ /* position: absolute;
350
+ right: 35px;
351
+ height: 40px;*/
352
+ width: auto;
353
+ font-size: 16px;
354
+ line-height: 34px;
355
+ color: #ffffff;
356
+ text-align: center;
357
+ border-radius: 4px;
358
+ cursor: pointer;
359
+ }
360
+
361
+ .inp_button:hover {
362
+ /*background-color: rgb(80, 150, 80);*/
363
+ }
364
+
365
+ .inp_button:active {
366
+ font-size: 20px;
367
+ /*background-color: rgb(150, 200, 150);*/
368
+ }
369
+
370
+ .showData {
371
+ height: auto;
372
+ position: relative;
373
+ padding-bottom: 7px;
374
+ border-bottom: solid 1px #c1c1c1;
375
+ font-family: "微软雅黑";
376
+ }
377
+
378
+ .showData .left {
379
+ height: 180px;
380
+ width: 210px;
381
+ background-color: rgb(240, 240, 240);
382
+ overflow: hidden;
383
+ line-height: 180px;
384
+ }
385
+
386
+ .showData .left img {
387
+ width: 100%;
388
+ height: auto;
389
+ }
390
+
391
+ .showData .right {
392
+ position: absolute;
393
+ top: 0px;
394
+ left: 220px;
395
+ right: 0px;
396
+ height: 180px;
397
+ }
398
+
399
+ .showData .right .top {
400
+ height: 30px;
401
+ line-height: 30px;
402
+ color: rgb(98, 98, 98);
403
+ }
404
+
405
+ .showData .right .top .topleft {
406
+ float: left;
407
+ font-size: 16px;
408
+ margin-right: 20px;
409
+ }
410
+
411
+ .showData .right .top .topright {
412
+ float: right;
413
+ margin-left: 20px;
414
+ }
415
+
416
+ .showData .right .text {
417
+ word-wrap: break-word;
418
+ overflow: hidden;
419
+ /*height: 100px;*/
420
+ color: #999999;
421
+ /*padding: 8px 0px;*/
422
+ }
423
+
424
+ .showData .right ul {
425
+ height: 20px;
426
+ padding: 0px;
427
+ margin: 0px;
428
+ font-size: 0px;
429
+ }
430
+
431
+ .showData .right ul li {
432
+ display: inline-block;
433
+ height: 20px;
434
+ list-style: none;
435
+ font-size: 16px;
436
+ line-height: 20px;
437
+ color: #FFFFFF;
438
+ background-color: #5bb85d;
439
+ padding: 0px 7px;
440
+ margin-right: 10px;
441
+ cursor: pointer;
442
+ }
443
+
444
+ .showData .right ul li:hover {
445
+ background-color: rgb(80, 150, 80);
446
+ }
447
+
448
+ .showData .right ul li:active {
449
+ background-color: rgb(150, 200, 150);
450
+ }
451
+
452
+ .showData .right ul li a {
453
+ width: 100%;
454
+ height: 100%;
455
+ text-decoration: none;
456
+ color: #FFFFFF;
457
+ }
458
+
459
+ body {
460
+ color: black;
461
+ }
462
+
463
+ .search {
464
+ width: 75%;
465
+ margin: 10px auto 30px auto;
466
+ }
467
+
468
+ .search .searchAll {
469
+ height: 34px;
470
+ font-size: 18px;
471
+ color: #999999;
472
+ line-height: 34px;
473
+ }
474
+
475
+ .search .searchAll span {
476
+ display: inline-block;
477
+ width: 15px;
478
+ height: 15px;
479
+ border: #999999 1px solid;
480
+ position: relative;
481
+ top: 2px;
482
+ }
483
+
484
+ .search .searchAll .spanAll {
485
+ background-color: rgb(90, 180, 90);
486
+ }
487
+
488
+ .search .itemList {
489
+ font-size: 16px;
490
+ color: #999999;
491
+ line-height: 34px;
492
+ }
493
+
494
+ .search .itemList .item {
495
+ height: 34px;
496
+ position: relative;
497
+ }
498
+
499
+ .search .itemList .item .descript {
500
+ display: inline-block;
501
+ width: 80px;
502
+ }
503
+
504
+ .search .itemList .item .inputBox {
505
+ height: 30px;
506
+ position: absolute;
507
+ top: 0px;
508
+ left: 80px;
509
+ right: 20px;
510
+ }
511
+
512
+ .search .itemList .item .inputBox input {
513
+ width: 100%;
514
+ height: 100%;
515
+ outline: none;
516
+ padding: 0px 5px;
517
+ }
518
+
519
+ .search .itemList .item .inputBox input::-webkit-input-placeholder {
520
+ color: #999999;
521
+ }
522
+
523
+ .searchItem {
524
+ height: 30px;
525
+ position: absolute;
526
+ top: 0px;
527
+ left: 80px;
528
+ right: 20px;
529
+ }
530
+
531
+ .searchItem .show {
532
+ padding-left: 10px;
533
+ }
534
+
535
+ .searchItem ul {
536
+ position: relative;
537
+ list-style: none;
538
+ background-color: rgba(190, 190, 190, 0.9);
539
+ color: #717171;
540
+ z-index: 99;
541
+ visibility: hidden;
542
+ }
543
+
544
+ .searchItem ul li {
545
+ padding-left: 10px;
546
+ }
547
+
548
+ .searchItem:hover ul {
549
+ visibility: visible;
550
+ }
551
+
552
+ .searchItem ul li:hover {
553
+ background-color: rgba(168, 168, 168, 0.8);
554
+ color: #646464;
555
+ }
556
+ </style>
@@ -8,6 +8,12 @@ export default function () {
8
8
  Vue.component('high-meter', (resolve) => {
9
9
  require(['./HighMeterCard'], resolve)
10
10
  })
11
+ Vue.component('upload-idcard', (resolve) => {
12
+ require(['./UploadIdCard.vue'], resolve)
13
+ })
14
+ Vue.component('img-self', (resolve) => {
15
+ require(['./ImgSelf.vue'], resolve)
16
+ })
11
17
  Vue.component('high-meter-idcard', (resolve) => {
12
18
  require(['./HighMeterCard'], resolve)
13
19
  })