fstarter 2.10.47 → 2.10.50

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,7 +1,7 @@
1
1
  {
2
2
  "name": "fstarter",
3
3
  "description": "A Vue.js project",
4
- "version": "2.10.47",
4
+ "version": "2.10.50",
5
5
  "author": "han.zhang <zhanghan810810@163.com>",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -473,7 +473,9 @@ function callShell(fnModel, param, cbparam, vnode = null) {
473
473
  }
474
474
  const requestJson = JSON.stringify(jsonObj)
475
475
  console.log('壳调用json:' + requestJson, ua)
476
- window.shellCaller = vnode
476
+ if (vnode != null) {
477
+ window.shellCaller = vnode
478
+ }
477
479
  if (ua.iPad || ua.iPhone) {
478
480
  if (window.navigator.userAgent.indexOf('app_ios_wk') != -1) {
479
481
  window.webkit.messageHandlers.JSonString.postMessage(requestJson)
@@ -18,14 +18,15 @@
18
18
  <van-image :src="model.bgImage"/>
19
19
  </van-uploader>
20
20
 
21
- <van-popup
22
- v-model="showCooper"
23
- position="right"
21
+ <div
22
+ v-show="showCooper"
23
+ class="pop"
24
24
  closeable
25
25
  :overlay="false"
26
26
  :style="{
27
27
  width: '100%',
28
- height: '100%'
28
+ height: '100%',
29
+ zIndex: '999'
29
30
  }"
30
31
  @click-close-icon="cancel"
31
32
  >
@@ -71,7 +72,7 @@
71
72
  </van-button>
72
73
  </div>
73
74
  </div>
74
- </van-popup>
75
+ </div>
75
76
  </div>
76
77
  </template>
77
78
 
@@ -372,6 +373,15 @@
372
373
  width: 50%;
373
374
  }
374
375
  }
376
+ .pop {
377
+ position: fixed;
378
+ top: 50%;
379
+ left:0;
380
+ transform: translate3d(0,-50%,0);
381
+ max-height: 100%;
382
+ overflow-y: auto;
383
+ background-color: #fff;
384
+ }
375
385
  </style>
376
386
  <style scoped>
377
387
  /* .cropper-container >>> .van-button--info{
@@ -7,125 +7,122 @@
7
7
  slot="button"
8
8
  @blur="blur"
9
9
  :class="ctlClass"
10
- :readonly="!sent"
11
10
  :clearable="model.clearable"
12
11
  :error-message="model.hiddenValidate ? '': model.validateResult.message"
13
12
  >
14
- <van-button slot="button" @click="sendVerCode" :disabled="modelData.disabled">{{model.sendButtonLabel}}</van-button>
13
+ <van-button slot="button" @click="sendVerCode" :disabled="modelData.disabled">{{ model.sendButtonLabel }}
14
+ </van-button>
15
15
  </van-field>
16
16
 
17
17
  </template>
18
18
 
19
19
  <script>
20
20
 
21
- import Rx from 'rxjs';
22
- import {take} from 'rxjs/operators';
23
- import { filter } from 'rxjs/operators';
24
- import base2 from './base2.js'
25
-
26
- export default {
27
- name: "bs-vercode",
28
- mixins: [base2],
29
- props: {
30
-
31
- },
32
- data() {
33
- return {
34
- validateCtl:true,
35
- sent: true
36
- }
37
- },
38
- mounted() {
39
-
40
-
41
- },
42
- methods: {
43
- createDefaultModel() {
44
- return {
45
- type:'BSVerCode',
46
- value:'',
47
- placeholder:'lang.ctl.BSVerCode.placeholder',
48
- sendButtonLabel:'lang.ctl.BSVerCode.sendButtonLabel',
49
- expiredTime:60,
50
- expiredLabel:'{0}s',
51
- disabled: false
52
- };
53
- },
54
- sendVerCode(){
55
- if(!this.sent){
56
- return
57
- }
58
-
59
- let self = this
60
- this.$emit('send-verCode',function(){
61
- self.sent = true
62
- self.model.expiredTime = self.modelData.expiredTime
63
-
64
- var source = Rx.Observable.timer(0, 1000)
65
-
66
- source = source.pipe(take(self.modelData.expiredTime)).pipe(filter(num => self.sent));
67
-
68
- source.subscribe({
69
- next: function(value) {
70
-
71
- self.model.expiredTime = self.model.expiredTime - 1
72
- self.model.sendButtonLabel = self.modelData.expiredLabel.format(self.model.expiredTime)
73
- },
74
- complete: function() {
75
-
76
- self.model.sendButtonLabel = self.modelData.sendButtonLabel
77
- self.sent = false
78
- self.model.value = ''
79
- },
80
- error: function(error) {
81
- console.log('Throw Error: ' + error)
82
- }
83
- });
84
-
85
- },this.fullName)
21
+ import Rx from 'rxjs';
22
+ import {filter, take} from 'rxjs/operators';
23
+ import base2 from './base2.js'
24
+
25
+ export default {
26
+ name: "bs-vercode",
27
+ mixins: [base2],
28
+ props: {},
29
+ data() {
30
+ return {
31
+ validateCtl: true,
32
+ sent: false
33
+ }
34
+ },
35
+ mounted() {
36
+
37
+
38
+ },
39
+ methods: {
40
+ createDefaultModel() {
41
+ return {
42
+ type: 'BSVerCode',
43
+ value: '',
44
+ placeholder: 'lang.ctl.BSVerCode.placeholder',
45
+ sendButtonLabel: 'lang.ctl.BSVerCode.sendButtonLabel',
46
+ expiredTime: 60,
47
+ expiredLabel: '{0}s'
48
+ };
49
+ },
50
+ sendVerCode() {
51
+ if (this.sent) {
52
+ return
53
+ }
54
+ let self = this
55
+ this.$emit('send-verCode', function () {
56
+ self.sent = true
57
+ self.model.expiredTime = self.modelData.expiredTime
58
+
59
+ var source = Rx.Observable.timer(0, 1000)
86
60
 
61
+ source = source.pipe(take(self.modelData.expiredTime)).pipe(filter(num => self.sent));
62
+
63
+ source.subscribe({
64
+ next: function (value) {
65
+
66
+ self.model.expiredTime = self.model.expiredTime - 1
67
+ self.model.sendButtonLabel = self.modelData.expiredLabel.format(self.model.expiredTime)
87
68
  },
88
- reset(){
89
-
90
- this.sent = false
91
- this.model.label = this.modelData.label
92
- this.model.disabled = this.modelData.disabled
93
- this.model.value = this.modelData.value
94
- this.model.placeholder = this.modelData.placeholder
95
- this.model.sendButtonLabel= this.modelData.sendButtonLabel
96
- this.model.expiredTime = this.modelData.expiredTime
97
- this.model.expiredLabel = this.modelData.expiredLabel
98
-
69
+ complete: function () {
70
+
71
+ self.model.sendButtonLabel = self.modelData.sendButtonLabel
72
+ self.sent = false
73
+ // self.model.value = ''
99
74
  },
100
- blur(){
75
+ error: function (error) {
76
+ console.log('Throw Error: ' + error)
77
+ self.sent = false
78
+ }
79
+ });
101
80
 
102
- if(!this.model.readonly)
103
- this.model.validateToken++
81
+ }, this.fullName)
104
82
 
105
- this.$emit('blur',function(){
106
83
 
107
- },this.fullName)
84
+ },
85
+ reset() {
108
86
 
109
- }
110
- },
111
- watch:{
112
- 'model.value':{
113
- handler(val,oldval){
87
+ this.sent = false
88
+ this.model.label = this.modelData.label
89
+ this.model.disabled = this.modelData.disabled
90
+ this.model.value = this.modelData.value
91
+ this.model.placeholder = this.modelData.placeholder
92
+ this.model.sendButtonLabel = this.modelData.sendButtonLabel
93
+ this.model.expiredTime = this.modelData.expiredTime
94
+ this.model.expiredLabel = this.modelData.expiredLabel
114
95
 
115
- this.setEventString(this.fullName,this.sname,'value',val,oldval)
116
- },
117
- deep: false
118
- }
119
- }
96
+ },
97
+ blur() {
98
+
99
+ if (!this.model.readonly)
100
+ this.model.validateToken++
101
+
102
+ this.$emit('blur', function () {
103
+
104
+ }, this.fullName)
120
105
 
121
106
  }
107
+ },
108
+ watch: {
109
+ 'model.value': {
110
+ handler(val, oldval) {
111
+
112
+ this.setEventString(this.fullName, this.sname, 'value', val, oldval)
113
+ },
114
+ deep: false
115
+ }
116
+ }
117
+
118
+ }
122
119
 
123
120
  </script>
124
121
 
125
122
  <style scoped>
126
123
 
127
- .BSVerCode_disabled{
128
- color:#999999;
129
- }
124
+ .BSVerCode_disabled {
125
+ color: #999999;
126
+ }
130
127
 
131
128
  </style>
@@ -28,7 +28,11 @@ platform = {
28
28
 
29
29
  const requestJson = JSON.stringify(jsonObj)
30
30
  console.log('requestJson', requestJson)
31
- window.shellCaller = vnode
31
+ //如果vnode没有赋值,则默认为null,说明业务层不需要vnode来处理回调事件
32
+ //所以避免冲掉正在进行的需要vnode回调事件的业务逻辑,增加一个为null的判断
33
+ if (vnode != null) {
34
+ window.shellCaller = vnode
35
+ }
32
36
  // window.webkit.messageHandlers.JSonString.postMessage(requestJson)
33
37
  // return
34
38
  if (ua.iPad || ua.iPhone) {
@@ -0,0 +1,61 @@
1
+ import http from '../assets/http.js'
2
+ import ak from '../assets/ak.js'
3
+ import config from '../assets/config.js'
4
+ import {ua} from "../assets/ua";
5
+
6
+ var faceTx = {
7
+
8
+ getData(params){
9
+ let nonce = radomKey()
10
+ return {
11
+ 'idcard_name': params.idcard_name,
12
+ 'idcard_number': params.idcard_number,
13
+ 'comparison_type': '1',
14
+ 'nonce': nonce
15
+ }
16
+ },
17
+
18
+ invoke(params){
19
+
20
+ if(ua.isIspPhone){
21
+
22
+
23
+ }else if(ua.microMsg){
24
+ debugger
25
+ let apiUrl = config.file.baseURL + '/file/v1/hasl/fileAdmin/fileAdmin/getTXFaceDomain'
26
+ // if(faceType == 'wy'){
27
+ // apiUrl = config.file.baseURL + '/file/v1/hasl/fileAdmin/fileAdmin/getTXFaceDomain'
28
+ // }else{
29
+ // apiUrl = config.file.baseURL + '/file/v1/hasl/fileAdmin/fileAdmin/getFaceTokenNew'
30
+ // }
31
+
32
+ return http.post(apiUrl,params,true,true).then((data)=>{
33
+ const objstr = JSON.stringify(Object.assign(params, data))
34
+ debugger
35
+ localStorage.setItem('faceAbout', objstr)
36
+ let cbUrl = ak.http.concatParams(params.cbUrl ? params.cbUrl : window.location.href,'facetoken=1')
37
+ const url = `https://${data.optimalDomain}/api/web/login?webankAppId=TIDA55eC&version=1.0.0&nonce=${params.nonce}&orderNo=${data.orderNo}&h5faceId=${data.h5faceId}&url=${encodeURIComponent(cbUrl)}&from=browser&userId=${data.userId}&sign=${data.sign}&redirectType=1&resultType=1`
38
+ window.location.href = url
39
+ return Promise.resolve(data)
40
+
41
+ })
42
+
43
+ }else{
44
+ Promise.reject()
45
+ }
46
+
47
+ }
48
+
49
+ }
50
+ function radomKey(length = 32, needChars = true) {
51
+ let chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
52
+ let num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
53
+ let final = needChars ? chars : num
54
+ let nums = ''
55
+ for (var i = 0; i < length; i++) {
56
+ const id = parseInt(Math.random() * 61)
57
+ nums += final[id]
58
+ }
59
+ return nums
60
+ }
61
+ export default faceTx;
@@ -0,0 +1,83 @@
1
+ import http from '../assets/http.js'
2
+ import ak from '../assets/ak.js'
3
+ import config from '../assets/config.js'
4
+ import {ua} from "../assets/ua";
5
+ import service from "../service"
6
+
7
+ var getTxFaceResult = {
8
+
9
+ need(){
10
+
11
+ let token = ak.http.getQueryString('facetoken')
12
+ if(ak.utils.isEmpty(token)){
13
+ localStorage.removeItem('faceAbout')
14
+ return false
15
+ } else {
16
+ return true
17
+ }
18
+
19
+ },
20
+ getData(){
21
+
22
+ let obj = JSON.parse(localStorage.getItem('faceAbout'))
23
+
24
+ localStorage.removeItem('faceAbout')
25
+ return {
26
+ biz_no: obj.bizSeqNo,
27
+ userId: obj.userId,
28
+ orderNo: obj.orderNo,
29
+ nonce: obj.nonce,
30
+ expired: '-1000',
31
+ buz: 'POLICY_FILE',
32
+ domain: 'POLICY',
33
+ buzId: radomNum(16),
34
+ fileName: radomNum(16)
35
+
36
+ }
37
+ },
38
+
39
+ invoke(params){
40
+ // let faceType = params.faceType
41
+ // delete params.faceType
42
+
43
+ if(ua.isIspPhone){
44
+
45
+
46
+ }else if(ua.microMsg){
47
+ let apiUrl = config.file.baseURL + '/file/v1/hasl/fileAdmin/fileAdmin/getTXFaceCompareResult'
48
+ return http.post(apiUrl,params,true,true).then((data)=>{
49
+ let res = data.result
50
+ let resData = {
51
+ confidence: res.similarity,
52
+ imageFile: res.faceFileId,
53
+ success: true
54
+ }
55
+ service.saveInitService('getTxFaceResult',resData)
56
+ let reUrl = ak.http.deleteParams(window.location.href,'facetoken')
57
+ window.location.href = reUrl
58
+ return Promise.resolve(resData)
59
+ }).catch(err => {
60
+ let reUrl = ak.http.deleteParams(window.location.href,'facetoken')
61
+ reUrl = ak.http.deleteParams(reUrl,'orderNo')
62
+ reUrl = ak.http.deleteParams(reUrl,'signature')
63
+ reUrl = ak.http.deleteParams(reUrl,'h5faceId')
64
+ reUrl = ak.http.deleteParams(reUrl,'code')
65
+ window.location.href = reUrl
66
+ return Promise.reject(err)
67
+ })
68
+
69
+ }else{
70
+ Promise.reject()
71
+ }
72
+
73
+ }
74
+
75
+ }
76
+ function radomNum(n) {
77
+ var rnd = ''
78
+ for (var i = 0; i < n; i++) {
79
+ rnd += Math.floor(Math.random() * 10)
80
+ }
81
+ return rnd
82
+ }
83
+ export default getTxFaceResult;
@@ -14,6 +14,8 @@ import jumpView from './jumpView'
14
14
  import statusBarHeight from './statusBarHeight'
15
15
  import goSetPage from './goSetPage'
16
16
  import faceInApp from './faceInApp'
17
+ import faceTx from './faceTx'
18
+ import getTxFaceResult from './getTxFaceResult'
17
19
 
18
20
 
19
21
  var services = services || {}
@@ -34,4 +36,6 @@ services['jumpView'] = jumpView
34
36
  services['goSetPage'] = goSetPage
35
37
  services['statusBarHeight'] = statusBarHeight
36
38
  services['faceInApp'] = faceInApp
39
+ services['faceTx'] = faceTx
40
+ services['getTxFaceResult'] = getTxFaceResult
37
41
  export default services;
@@ -84,6 +84,7 @@
84
84
  return {
85
85
  vname:'auth',
86
86
  needProcessEvent:true,
87
+ needLoadData: true,
87
88
  submodel:{
88
89
  data: {
89
90
  required:true, // 必填
@@ -190,10 +191,10 @@
190
191
  methods: {
191
192
  face() {
192
193
  const a = {
193
- buzId: '13123',
194
- vnode: this
194
+ idcard_number: '152531199103160179',
195
+ idcard_name: '胡玉泽'
195
196
  }
196
- this.$service.callService('faceInApp', a)
197
+ this.$service.callService('faceTx', a)
197
198
  },
198
199
  gosetPage() {
199
200
  this.$service.callService('goSetPage')
@@ -280,20 +281,22 @@
280
281
 
281
282
  },
282
283
  loadData(res){
283
-
284
+ if (res.serviceId === 'getTxFaceResult') {
285
+ console.log(res)
286
+ }
284
287
  if(res.serviceId == 'getAuthInfo'){
285
- console.log('aaaaaaa')
286
- console.log(this.selector('>page').ctls)
287
- let data = res.data
288
- this.selector('#auth').selector('')
289
- this.selector('#name').selector('#name').setValue(data.name)
290
- this.selector('#bank').setValue(data.bank)
291
- this.selector('#sex').setValue('1')
292
- // this.selector('#sex').set('items',[{value:"dddd",key:"21"},{value:"ffff",key:"01"}])
293
-
294
- this.selector('#cardno').setValue(data.cardno)
295
-
296
- console.log(this.regedit)
288
+ // console.log('aaaaaaa')
289
+ // console.log(this.selector('>page').ctls)
290
+ // let data = res.data
291
+ // this.selector('#auth').selector('')
292
+ // this.selector('#name').selector('#name').setValue(data.name)
293
+ // this.selector('#bank').setValue(data.bank)
294
+ // this.selector('#sex').setValue('1')
295
+ // // this.selector('#sex').set('items',[{value:"dddd",key:"21"},{value:"ffff",key:"01"}])
296
+
297
+ // this.selector('#cardno').setValue(data.cardno)
298
+
299
+ // console.log(this.regedit)
297
300
  }
298
301
 
299
302
 
@@ -304,11 +307,15 @@
304
307
  };
305
308
  },
306
309
  sendVerCode(resolve){
307
-
308
- this.$service.callService('sendVerCode').then((data)=>{
309
- resolve()
310
- }
311
- )
310
+ debugger
311
+ setTimeout(function() {
312
+ resolve()
313
+ }, 1000)
314
+
315
+ // this.$service.callService('sendVerCode').then((data)=>{
316
+ // resolve()
317
+ // }
318
+ // )
312
319
 
313
320
  },
314
321
  authWatchHandle(){
@@ -8,21 +8,22 @@
8
8
  cname="upload"
9
9
  @done="done"
10
10
  @delete="deleteFn"
11
+ ref="a"
11
12
  >
12
13
  </bs-upload2>
13
- <bs-upload2
14
+ <!-- <bs-upload2
14
15
  id="abv"
15
16
  :mod="submodel.upload2"
16
17
  cname="upload"
17
18
  @done="done"
18
19
  @delete="deleteFn"
19
20
  >
20
- </bs-upload2>
21
+ </bs-upload2> -->
21
22
  <bs-upload
22
23
  id="abv"
23
24
  :mod="submodel.upload2"
24
25
  cname="upload2"
25
- @done="done"
26
+ @done="done1"
26
27
  @delete="deleteFn"
27
28
  >
28
29
  </bs-upload>
@@ -74,10 +75,10 @@
74
75
  // actions: 'ocr_bc', // 银行卡
75
76
  },
76
77
  upload2:{
77
- // uploadType: 'IdCard_Front' //身份证正面
78
+ uploadType: 'IdCard_Front', //身份证正面
78
79
  // uploadType: 'IdCard_Back' //身份证反面
79
- uploadType: 'Bank_Card', // 银行卡
80
- buzId: '2321' // 前端自生成uuid
80
+ // uploadType: 'ocr_id0', // 银行卡
81
+ buzId: '2321123123' // 前端自生成uuid
81
82
  },
82
83
  viewer:{
83
84
  value:'https://testfile.ihasl.com/file/v1/hasl/fileAdmin/fileAdmin/get/4cba0c329a994356aa7f4e958c88373b.pdf'
@@ -113,12 +114,20 @@
113
114
  },
114
115
  done() {
115
116
  const a = this.selector('#upload').get('data')
117
+ console.log()
118
+ this.bb = `${a.fileId}.${a.ext}`
119
+
120
+ },
121
+ done1() {
122
+ const a = this.selector('#upload2').get('data')
123
+ console.log(a)
116
124
  this.bb = `${a.fileId}.${a.ext}`
117
125
  },
118
126
  a(){
119
127
  // this.$service.callService('face',{fileUrl: this.bb}).then(()=>{
120
128
  // localStorage.setItem('face.flag',true)
121
129
  // })
130
+ console.log(this.$refs.a.fileList = [])
122
131
  },
123
132
  loadData(data) {
124
133
  if(data.serviceId == 'getFaceResult'){
@@ -62,10 +62,13 @@
62
62
  menu:[]
63
63
  }
64
64
  },
65
+ created() {
66
+ //把基础参数的获取从mounted提前到created中,避免业务代码大量的请求基础参数导致的一些问题
67
+ this.$service.callServices(['hideToolBar','getToken','getSystemData'])
68
+ },
65
69
  mounted() {
66
70
 
67
71
  weixin.hideWxMenu()
68
- this.$service.callServices(['hideToolBar','getToken','getSystemData'])
69
72
 
70
73
  },
71
74
  computed: {
package/README.md DELETED
@@ -1,18 +0,0 @@
1
- # fstarter
2
-
3
- > A Vue.js project
4
-
5
- ## Build Setup
6
-
7
- ``` bash
8
- # install dependencies
9
- npm install
10
-
11
- # serve with hot reload at localhost:8080
12
- npm run dev
13
-
14
- # build for production with minification
15
- npm run build
16
- ```
17
-
18
- For detailed explanation on how things work, consult the [docs for vue-loader](http://vuejs.github.io/vue-loader).
package/fstarter.iml DELETED
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager" inherit-compiler-output="true">
4
- <exclude-output />
5
- <content url="file://$MODULE_DIR$" />
6
- <orderEntry type="inheritedJdk" />
7
- <orderEntry type="sourceFolder" forTests="false" />
8
- </component>
9
- </module>