fstarter 2.10.53 → 2.10.54
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/.babelrc +6 -6
- package/.editorconfig +9 -9
- package/fstarter.iml +9 -0
- package/index.html +22 -22
- package/index.js +222 -222
- package/package.json +104 -104
- package/src/App.vue +38 -38
- package/src/i18n/en-US.js +35 -35
- package/src/i18n/zh-CN.js +35 -35
- package/src/main.js +95 -95
- package/src/plugins/assets/ak.js +948 -948
- package/src/plugins/assets/callNative.js +490 -490
- package/src/plugins/assets/compressImg.js +75 -75
- package/src/plugins/assets/config.js +106 -106
- package/src/plugins/assets/fileServer.js +469 -469
- package/src/plugins/assets/http.js +344 -343
- package/src/plugins/assets/ua.js +27 -27
- package/src/plugins/components/BSButton.vue +61 -61
- package/src/plugins/components/BSCascader.vue +465 -465
- package/src/plugins/components/BSCell.vue +48 -48
- package/src/plugins/components/BSDatePicker.vue +167 -167
- package/src/plugins/components/BSImage.vue +42 -42
- package/src/plugins/components/BSInput.vue +140 -140
- package/src/plugins/components/BSList.vue +81 -81
- package/src/plugins/components/BSPicCode.vue +96 -96
- package/src/plugins/components/BSPopup.vue +43 -43
- package/src/plugins/components/BSRadio.vue +97 -97
- package/src/plugins/components/BSSearch.vue +109 -109
- package/src/plugins/components/BSSelect.vue +144 -144
- package/src/plugins/components/BSSign.vue +454 -454
- package/src/plugins/components/BSStepper.vue +115 -115
- package/src/plugins/components/BSUpload.vue +92 -92
- package/src/plugins/components/BSUpload2.vue +398 -398
- package/src/plugins/components/BSVerCode.vue +128 -128
- package/src/plugins/components/BSViewer.vue +92 -92
- package/src/plugins/components/base.js +496 -496
- package/src/plugins/components/base2.js +489 -489
- package/src/plugins/lib/weixin.js +20 -20
- package/src/plugins/platform/index.js +7 -7
- package/src/plugins/platform/isp_phone.js +310 -310
- package/src/plugins/route/index.js +140 -140
- package/src/plugins/selector/index.js +342 -342
- package/src/plugins/service/index.js +81 -81
- package/src/plugins/services/callCamera.js +53 -53
- package/src/plugins/services/exit.js +36 -36
- package/src/plugins/services/face.js +69 -69
- package/src/plugins/services/faceH5.js +54 -54
- package/src/plugins/services/faceInApp.js +31 -31
- package/src/plugins/services/faceTx.js +61 -61
- package/src/plugins/services/getFaceResult.js +104 -104
- package/src/plugins/services/getH5FaceResult.js +62 -62
- package/src/plugins/services/getMenus.js +40 -40
- package/src/plugins/services/getSystemData.js +128 -128
- package/src/plugins/services/getToken.js +79 -79
- package/src/plugins/services/getTxFaceResult.js +83 -83
- package/src/plugins/services/getUserInfo.js +47 -47
- package/src/plugins/services/goSetPage.js +40 -40
- package/src/plugins/services/hideFhoneTitle.js +36 -36
- package/src/plugins/services/index.js +45 -45
- package/src/plugins/services/init.js +35 -35
- package/src/plugins/services/jumpView.js +40 -40
- package/src/plugins/services/logout.js +43 -43
- package/src/plugins/services/share.js +113 -113
- package/src/plugins/services/statusBarHeight.js +39 -39
- package/src/plugins/session/index.js +32 -32
- package/src/services/getAuthInfo.js +22 -22
- package/src/services/index.js +9 -9
- package/src/services/sendVerCode.js +23 -23
- package/src/views/auth.vue +367 -367
- package/src/views/auth2.vue +90 -90
- package/src/views/auth3.vue +157 -157
- package/src/views/auth4.vue +8979 -8979
- package/src/views/auth5.vue +50 -50
- package/src/views/authh5.vue +369 -369
- package/src/views/components/BankSelect.vue +55 -55
- package/src/views/foot.vue +140 -140
- package/src/views/page.vue +222 -222
- package/src/views/shellFunc.vue +41 -41
- package/themes/basic.css +1 -1
- package/webpack.config.js +144 -144
|
@@ -1,470 +1,470 @@
|
|
|
1
|
-
import isp_phone from '../platform/isp_phone'
|
|
2
|
-
import { EBType, SHELL } from './callNative'
|
|
3
|
-
// import { FilePathPkg } from './filePath'
|
|
4
|
-
// import { callService } from '../../../assets/libs/service/serviceImpl'
|
|
5
|
-
// import SC from '../service/requestName'
|
|
6
|
-
// import { ParamName as PN } from '../../../assets/libs/service/serviceParam'
|
|
7
|
-
// import { getStateValue, setStateValue } from '../../../store'
|
|
8
|
-
// import { copyObject, isEmptyObject } from '../../util/copyUtil'
|
|
9
|
-
// import * as EM from '../../../store/recruitManage/module-info'
|
|
10
|
-
// import * as EM from '../../../store/eleinsure/module-info'
|
|
11
|
-
import Vue from 'vue'
|
|
12
|
-
import config from './config'
|
|
13
|
-
// import { ImagesPkg } from './images'
|
|
14
|
-
|
|
15
|
-
export const FileServerPkg = {}
|
|
16
|
-
export const EventGetFilename = 'getFileName'
|
|
17
|
-
export const EventGetMessage = 'getMessage'
|
|
18
|
-
|
|
19
|
-
// 文件服务器的地址
|
|
20
|
-
FileServerPkg.baseHost = config.file.baseURL
|
|
21
|
-
// 获取显示的基本地址
|
|
22
|
-
FileServerPkg.fileBasePath = config.file.baseURL + '/file/v1/hasl/fileAdmin/fileAdmin/get/'
|
|
23
|
-
|
|
24
|
-
// 照会文件服务器地址
|
|
25
|
-
// FileServerPkg.enoteBaseHost = FilePathPkg.enoteBaseHost
|
|
26
|
-
// // 照会路径
|
|
27
|
-
// FileServerPkg.enoteFileBasePath = FilePathPkg.enoteFileBasePath
|
|
28
|
-
|
|
29
|
-
// 监听壳的事件
|
|
30
|
-
FileServerPkg.EB = new Vue()
|
|
31
|
-
// 事件唤起者(实际调用vnode)
|
|
32
|
-
FileServerPkg.fnCaller = null
|
|
33
|
-
FileServerPkg.callerType = ''
|
|
34
|
-
FileServerPkg.callerParam = null // 参数组
|
|
35
|
-
FileServerPkg.callerServiceName = null // 调用服务名
|
|
36
|
-
FileServerPkg.callerServiceParamFn = null // 调用服务用的参数
|
|
37
|
-
FileServerPkg.callerStateSetFn = null // 保存状态值用的函数
|
|
38
|
-
|
|
39
|
-
// 添事件监听
|
|
40
|
-
FileServerPkg.EB.$on(EBType.getPIC, (data) => {
|
|
41
|
-
handleShellCall(data.fileName, data.actions)
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
// 添加身份证OCR事件监听
|
|
45
|
-
FileServerPkg.EB.$on(EBType.IDCard, (data) => {
|
|
46
|
-
handleShellCall(data.fileName, data.actions)
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
// 添加活体识别监听
|
|
50
|
-
FileServerPkg.EB.$on(EBType.Live, (data) => {
|
|
51
|
-
handleShellCall(data.fileName, data.actions)
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
// 处理壳返回的结果
|
|
55
|
-
function handleShellCall(fileName, actions) {
|
|
56
|
-
const callerType = FileServerPkg.callerType // 分类处理
|
|
57
|
-
const serviceName = FileServerPkg.callerServiceName
|
|
58
|
-
const paramFn = FileServerPkg.callerServiceParamFn
|
|
59
|
-
if (serviceName && paramFn) {
|
|
60
|
-
try {
|
|
61
|
-
const p = paramFn(fileName)
|
|
62
|
-
callService(serviceName, p).then(d => {
|
|
63
|
-
if (FileServerPkg.callerStateSetFn) FileServerPkg.callerStateSetFn(fileName) // 设置状态值
|
|
64
|
-
})
|
|
65
|
-
} catch (e) {
|
|
66
|
-
console.log(e + '异常!!!壳上传后调用【保存影像】发生异常。上传类型:' + callerType)
|
|
67
|
-
}
|
|
68
|
-
// 现在无论如何先显示吧。。
|
|
69
|
-
if (fileName) FileServerPkg.fnCaller.$emit(EventGetFilename, fileName)
|
|
70
|
-
if (actions) FileServerPkg.fnCaller.$emit(EventGetMessage, actions)
|
|
71
|
-
} else {
|
|
72
|
-
console.log('注意!壳上传没有配置调用【保存服务】的服务;上传类型' + callerType)
|
|
73
|
-
// 直接发送事件,不调用服务
|
|
74
|
-
if (fileName) FileServerPkg.fnCaller.$emit(EventGetFilename, fileName)
|
|
75
|
-
if (actions) FileServerPkg.fnCaller.$emit(EventGetMessage, actions)
|
|
76
|
-
if (FileServerPkg.callerStateSetFn) FileServerPkg.callerStateSetFn(fileName) // 设置状态值
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// 通过壳上传的文件类型
|
|
81
|
-
FileServerPkg.UploadType = {
|
|
82
|
-
IdCard_Front_Applicant: 'IdCard_Front_Applicant',
|
|
83
|
-
IdCard_Back_Applicant: 'IdCard_Back_Applicant',
|
|
84
|
-
Card_Applicant: 'Card_Applicant',
|
|
85
|
-
IdCard_Front_Insured: 'IdCard_Front_Insured',
|
|
86
|
-
IdCard_Back_Insured: 'IdCard_Back_Insured',
|
|
87
|
-
Card_Insured: 'Card_Insured',
|
|
88
|
-
IdCard_Front_Guard: 'IdCard_Front_Guard',
|
|
89
|
-
IdCard_Back_Guard: 'IdCard_Back_Guard',
|
|
90
|
-
Card_Guard: 'Card_Guard',
|
|
91
|
-
IdCard_Front_Beneficiary: 'IdCard_Front_Beneficiary',
|
|
92
|
-
IdCard_Back_Beneficiary: 'IdCard_Back_Beneficiary',
|
|
93
|
-
Card_Beneficary: 'Card_Beneficary',
|
|
94
|
-
BankCard_Applicant: 'BankCard_Applicant',
|
|
95
|
-
BankCard_Survival: 'BankCard_Survival',
|
|
96
|
-
Live_Applicant: 'Live_Applicant',
|
|
97
|
-
Live_Insured: 'Live_Insured',
|
|
98
|
-
Live_Guard: 'Live_Guard',
|
|
99
|
-
// 签名也许需要细分 TODO
|
|
100
|
-
Sign_Applicant: 'Sign_Applicant',
|
|
101
|
-
Sign_Insured: 'Sign_Insured',
|
|
102
|
-
Sign_Guard: 'Sign_Guard',
|
|
103
|
-
Sign_Agent: 'Sign_Agent',
|
|
104
|
-
EleImage_Applicant: 'EleImage_Applicant', // 其他类型影像件(应该不用)
|
|
105
|
-
EleImage_Insured: 'EleImage_Insured', // 其他类型影像件(应该不用)
|
|
106
|
-
EleImage_Beneficiary: 'EleImage_Beneficiary', // 其他类型影像件(应该不用)
|
|
107
|
-
CustomImg: 'CustomImg',
|
|
108
|
-
EleQRcode: 'EleQRcode',
|
|
109
|
-
EleImage_Other: 'EleImage_Other',
|
|
110
|
-
NoOcrImg: 'NoOcrImg' // 不带OCR的图片上传
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// 通过壳上传的文件类型
|
|
114
|
-
const UType2Shell = {
|
|
115
|
-
IdCard_Front: 'IdCard_Front',
|
|
116
|
-
IdCard_Back: 'IdCard_Back',
|
|
117
|
-
Bank_Card: 'BankCard',
|
|
118
|
-
Live: 'Live',
|
|
119
|
-
// IdCard_Front_Applicant: 'IdCard_Front',
|
|
120
|
-
// IdCard_Back_Applicant: 'IdCard_Back',
|
|
121
|
-
// Card_Applicant: 'EleImage',
|
|
122
|
-
// IdCard_Front_Insured: 'IdCard_Front',
|
|
123
|
-
// IdCard_Back_Insured: 'IdCard_Back',
|
|
124
|
-
// Card_Insured: 'EleImage',
|
|
125
|
-
// IdCard_Front_Guard: 'IdCard_Front',
|
|
126
|
-
// IdCard_Back_Guard: 'IdCard_Back',
|
|
127
|
-
// Card_Guard: 'EleImage',
|
|
128
|
-
// IdCard_Front_Beneficiary: 'IdCard_Front',
|
|
129
|
-
// IdCard_Back_Beneficiary: 'IdCard_Back',
|
|
130
|
-
// Card_Beneficary: 'EleImage',
|
|
131
|
-
// BankCard_Applicant: 'BankCard',
|
|
132
|
-
// BankCard_Survival: 'BankCard',
|
|
133
|
-
// Live_Applicant: 'Live',
|
|
134
|
-
// Live_Insured: 'Live',
|
|
135
|
-
// Live_Guard: 'Live',
|
|
136
|
-
// // 签名也许需要细分 TODO
|
|
137
|
-
// Sign_Applicant: 'Sign',
|
|
138
|
-
// Sign_Insured: 'Sign',
|
|
139
|
-
// Sign_Guard: 'Sign',
|
|
140
|
-
// Sign_Agent: 'Sign',
|
|
141
|
-
// EleImage_Applicant: 'EleImage', // 其他类型影像件(应该不用)
|
|
142
|
-
// EleImage_Insured: 'EleImage', // 其他类型影像件(应该不用)
|
|
143
|
-
// EleImage_Beneficiary: 'EleImage', // 其他类型影像件(应该不用)
|
|
144
|
-
// CustomImg: 'CustomImg',
|
|
145
|
-
// EleQRcode: 'EleQRcode',
|
|
146
|
-
// EleImage_Other: 'EleOtherImage',
|
|
147
|
-
// NoOcrImg: 'NoOcrImg' // 不带OCR的图片上传
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// const IB = ImagesPkg.BasicImageType
|
|
151
|
-
|
|
152
|
-
// 上传类型对应的图像分类
|
|
153
|
-
FileServerPkg.UType2Image = {
|
|
154
|
-
// IdCard_Front_Applicant: IB.IDFront,
|
|
155
|
-
// IdCard_Back_Applicant: IB.IDBack,
|
|
156
|
-
// Card_Applicant: IB.Card,
|
|
157
|
-
// IdCard_Front_Insured: IB.IDFront,
|
|
158
|
-
// IdCard_Back_Insured: IB.IDBack,
|
|
159
|
-
// Card_Insured: IB.Card,
|
|
160
|
-
// IdCard_Front_Guard: IB.IDFront,
|
|
161
|
-
// IdCard_Back_Guard: IB.IDBack,
|
|
162
|
-
// Card_Guard: IB.Card,
|
|
163
|
-
// IdCard_Front_Beneficiary: IB.IDFront,
|
|
164
|
-
// IdCard_Back_Beneficiary: IB.IDBack,
|
|
165
|
-
// Card_Beneficary: IB.Card,
|
|
166
|
-
// BankCard: IB.BankCard,
|
|
167
|
-
// BankCard_Applicant: IB.BankCard,
|
|
168
|
-
// BankCard_Survival: IB.BankCardSurvival,
|
|
169
|
-
// Live_Applicant: IB.Live_App,
|
|
170
|
-
// Live_Insured: IB.Live_Insured,
|
|
171
|
-
|
|
172
|
-
// // 也许需要细分。则补充细分类型 TODO
|
|
173
|
-
// Sign_Applicant: IB.Sign_1_App,
|
|
174
|
-
// Sign_Insured: IB.Sign_1_Insured,
|
|
175
|
-
// Sign_Guard: IB.Sign_1_Insured,
|
|
176
|
-
// Sign_Agent: IB.Sign_1_Agent,
|
|
177
|
-
// EleImage: IB.Addi_Other,
|
|
178
|
-
// EleImage_Applicant: IB.Addi_Other, // 其他类型影像件(应该不用)
|
|
179
|
-
// EleImage_Insured: IB.Addi_Other, // 其他类型影像件(应该不用)
|
|
180
|
-
// EleImage_Beneficiary: IB.Addi_Other, // 其他类型影像件(应该不用)
|
|
181
|
-
// EleImage_Other: IB.Addi_Other, // 其他类型
|
|
182
|
-
// NoOcrImg: 'NoOcrImg' // 不带OCR的图片上传
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// 上传影像件类型与state值对应
|
|
186
|
-
const UType2State = {
|
|
187
|
-
// IdCard_Front_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_IDCARD_FRONT },
|
|
188
|
-
// IdCard_Back_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_IDCARD_BACK },
|
|
189
|
-
// Card_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_CARD },
|
|
190
|
-
// IdCard_Front_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSURED_$1_IDCARD_FRONT },
|
|
191
|
-
// IdCard_Back_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSURED_$1_IDCARD_BACK },
|
|
192
|
-
// Card_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSUREDS_$INSUREDKEY_CARD },
|
|
193
|
-
// IdCard_Front_Guard: { pUUID: EM.STATE_ELEINSURE_GURADS_$INSUREDKEY_PARTY_UUID, save: EM.STATE_ELEINSURE_IMAGES_GURADS_$INSUREDKEY_IDCARD_FRONT },
|
|
194
|
-
// IdCard_Back_Guard: { pUUID: EM.STATE_ELEINSURE_GURADS_$INSUREDKEY_PARTY_UUID, save: EM.STATE_ELEINSURE_IMAGES_GURADS_$INSUREDKEY_IDCARD_BACK },
|
|
195
|
-
// Card_Guard: { pUUID: EM.STATE_ELEINSURE_GURADS_$INSUREDKEY_PARTY_UUID, save: EM.STATE_ELEINSURE_IMAGES_GURADS_$INSUREDKEY_CARD },
|
|
196
|
-
// IdCard_Front_Beneficiary: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY_$1_IDCARD_FRONT },
|
|
197
|
-
// IdCard_Back_Beneficiary: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY_$1_IDCARD_BACK },
|
|
198
|
-
// BankCard_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_BANKCARD },
|
|
199
|
-
// BankCard_Survival: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY_$BCODE_BANKCARD },
|
|
200
|
-
// Live_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_SUBMIT_LIVES_APPLICANT_IMAGE },
|
|
201
|
-
// Live_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_SUBMIT_LIVES_INSUREDS_$INSUREDKEY_IMAGE },
|
|
202
|
-
// // 签名使用 sign还是submit,确定后改一下 TODO
|
|
203
|
-
// Sign_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_SIGN_APPLICANT },
|
|
204
|
-
// Sign_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_SIGN_INSUREDS_$INSUREDKEY },
|
|
205
|
-
// Sign_Agent: { pUUID: EM.STATE_ELEINSURE_AGENT_ID, save: EM.STATE_ELEINSURE_SIGN_AGENT },
|
|
206
|
-
// EleImage_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT }, // 此处应切换到真正位置---后面接详情
|
|
207
|
-
// EleImage_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSUREDS_$INSUREDKEY },
|
|
208
|
-
// EleImage_Beneficiary: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY }
|
|
209
|
-
// Live_Guard: 'Live', 监护人活体识别 TODO
|
|
210
|
-
// Sign_Guard: 'Sign', 监护人签名 TODO
|
|
211
|
-
// CustomImg: 'CustomImg' // 客户管理不需要保存state???
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// 壳调用参数
|
|
215
|
-
const shellUploadParam = {
|
|
216
|
-
IdCard_Front: getP('POLICY', 'POLICY_FILE', 'ocr_id0', '0'),
|
|
217
|
-
IdCard_Back: getP('POLICY', 'POLICY_FILE', 'ocr_id1', '1'),
|
|
218
|
-
BankCard: getP('POLICY', 'POLICY_FILE', 'ocr_bc'),
|
|
219
|
-
Live: getP('POLICY', 'POLICY_FILE', ''),
|
|
220
|
-
// Sign: getP('POLICY', 'POLICY_PICTURE'),
|
|
221
|
-
// EleImage: getP('POLICY', 'POLICY_FILE'),
|
|
222
|
-
// CustomImg: getP('CUSTOMER', 'CUSTOMER_FILE'),
|
|
223
|
-
// NoOcrImg: getP('POLICY', 'POLICY_FILE', '', '0'),
|
|
224
|
-
// EleOtherImage: getP('POLICY', 'POLICY_FILE')
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// 调用的壳服务
|
|
228
|
-
const TypeShellMapping = {
|
|
229
|
-
// IdCard_Front: SHELL.GET_IDCARD_PIC,
|
|
230
|
-
// IdCard_Back: SHELL.GET_IDCARD_PIC,
|
|
231
|
-
// BankCard: SHELL.CALL_CAMERA,
|
|
232
|
-
// Live: SHELL.LIVE,
|
|
233
|
-
// Sign: SHELL.CALL_CAMERA,
|
|
234
|
-
// EleImage: SHELL.CALL_CAMERA,
|
|
235
|
-
// CustomImg: SHELL.CALL_CAMERA,
|
|
236
|
-
// EleQRcode: SHELL.QRCODE,
|
|
237
|
-
// NoOcrImg: SHELL.CALL_CAMERA,
|
|
238
|
-
// EleOtherImage: SHELL.CALL_CAMERA_OTHER,
|
|
239
|
-
IdCard_Front: 'GET_IDCARD_PIC',
|
|
240
|
-
IdCard_Back: 'GET_IDCARD_PIC',
|
|
241
|
-
BankCard: 'CALL_CAMERA',
|
|
242
|
-
Live: 'LIVE',
|
|
243
|
-
Sign: SHELL.CALL_CAMERA,
|
|
244
|
-
EleImage: SHELL.CALL_CAMERA,
|
|
245
|
-
CustomImg: SHELL.CALL_CAMERA,
|
|
246
|
-
EleQRcode: SHELL.QRCODE,
|
|
247
|
-
NoOcrImg: SHELL.CALL_CAMERA,
|
|
248
|
-
EleOtherImage: SHELL.CALL_CAMERA_OTHER,
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
// 调用的后端保存服务
|
|
252
|
-
const ServiceNameMapping = {
|
|
253
|
-
// IdCard_Front: SC.ELEINSURE_SAVE_IMAGE,
|
|
254
|
-
// IdCard_Back: SC.ELEINSURE_SAVE_IMAGE,
|
|
255
|
-
// BankCard: SC.ELEINSURE_SAVE_IMAGE,
|
|
256
|
-
// Live: SC.ELEINSURE_SAVE_IMAGE,
|
|
257
|
-
// Sign: SC.ELEINSURE_SAVE_IMAGE,
|
|
258
|
-
// EleImage: SC.ELEINSURE_SAVE_IMAGE,
|
|
259
|
-
// CustomImg: SC.CUSTOM_SAVE_PICTURE
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/* *************************************************************************
|
|
263
|
-
|
|
264
|
-
壳上传服务暴露API
|
|
265
|
-
图片调用壳上传:流程:包括拿到fileNo回显文件,并调用服务保存影像件信息(fileNo)
|
|
266
|
-
参数说明:
|
|
267
|
-
uploadType: FileServerPkg.UploadType的枚举
|
|
268
|
-
eventSender: 上传的组件vue对象。组件传this
|
|
269
|
-
callerParam:调用壳服务、上传服务、必须的参数
|
|
270
|
-
callerParam必须的结构
|
|
271
|
-
callerParam: {
|
|
272
|
-
shell : {
|
|
273
|
-
buzId: '111111'
|
|
274
|
-
},
|
|
275
|
-
service: {
|
|
276
|
-
personKey: 'Children1',
|
|
277
|
-
image_type: '01', // 不传则按uploadType默认值。见UType2Image,以及ImagesPkg.BasicImageType
|
|
278
|
-
image_page: '3', // 不传则按uploadType默认值。见UType2Image,以及ImagesPkg.BasicImageType
|
|
279
|
-
party_uuid: 'abc123', // 不传则按uploadType默认值.见UType2State的pUUID
|
|
280
|
-
},
|
|
281
|
-
state: {
|
|
282
|
-
personKey: 'Children1'
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
* *************************************************************************/
|
|
286
|
-
FileServerPkg.pictureUploadSaveShow = function(uploadType, eventSender, callerParam, isCallService = false) {
|
|
287
|
-
debugger
|
|
288
|
-
const shellType = UType2Shell[uploadType]
|
|
289
|
-
FileServerPkg.fnCaller = eventSender // 实际调用者
|
|
290
|
-
FileServerPkg.callerType = shellType
|
|
291
|
-
FileServerPkg.callerServiceName = ServiceNameMapping[shellType]
|
|
292
|
-
FileServerPkg.callerParam = callerParam
|
|
293
|
-
console.log(`${JSON.stringify(callerParam)}`, `调用壳上传图片。uploadType=${uploadType},附带参数:`)
|
|
294
|
-
// const shellParam = setShellParam(shellType, callerParam.shell, callerParam.maxSizeKB, callerParam.count)
|
|
295
|
-
const shellParam = setShellParam(shellType, callerParam.shell, callerParam.maxSizeKB)
|
|
296
|
-
FileServerPkg.callerServiceParamFn = setServiceParamFn(uploadType, callerParam.service, isCallService)
|
|
297
|
-
FileServerPkg.callerStateSetFn = getStateSetFn(uploadType, callerParam.state)
|
|
298
|
-
isp_phone.callShell(TypeShellMapping[shellType], shellParam, null, eventSender)
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/* *************************************************************************
|
|
302
|
-
壳上传服务暴露API
|
|
303
|
-
获取壳调用参数。配合FileServerPkg.pictureUploadSaveShow使用,准备callerParam入参
|
|
304
|
-
************************************************************************* */
|
|
305
|
-
FileServerPkg.getCallerParam = function(buzId, personKey, shellMore = {}, serviceMore = {}, stateMore = {}) {
|
|
306
|
-
return {
|
|
307
|
-
shell: Object.assign({}, { buzId }, shellMore),
|
|
308
|
-
service: Object.assign({}, { personKey }, serviceMore),
|
|
309
|
-
state: Object.assign({}, { personKey }, stateMore)
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// 设置唤起壳功能时要的参数
|
|
314
|
-
function setShellParam(uploadType, param, maxSizeKB, count) {
|
|
315
|
-
if (param) {
|
|
316
|
-
const shellParam = copyObject(shellUploadParam[uploadType])
|
|
317
|
-
shellParam.buzId = param.buzId || 'NULL'
|
|
318
|
-
if (maxSizeKB) {
|
|
319
|
-
shellParam.maxSizeKB = maxSizeKB
|
|
320
|
-
}
|
|
321
|
-
if (count) {
|
|
322
|
-
shellParam.count = count
|
|
323
|
-
}
|
|
324
|
-
console.log(JSON.stringify(shellParam), '获取壳上传参数')
|
|
325
|
-
return shellParam
|
|
326
|
-
} else if (uploadType === 'NoOcrImg') {
|
|
327
|
-
const shellParam = copyObject(shellUploadParam[uploadType])
|
|
328
|
-
shellParam.buzId = 'NULL'
|
|
329
|
-
if (maxSizeKB) {
|
|
330
|
-
shellParam.maxSizeKB = maxSizeKB
|
|
331
|
-
}
|
|
332
|
-
return shellParam
|
|
333
|
-
} else {
|
|
334
|
-
console.log(uploadType, '注意!壳上传没有传入合法调用【壳】服务的参数;上传类型:')
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
// 设置服务调用时传递的参数,返回接受fileName的函数
|
|
339
|
-
function setServiceParamFn(uploadType, param, isCallService) {
|
|
340
|
-
if (isCallService) {
|
|
341
|
-
const shellType = UType2Shell[uploadType]
|
|
342
|
-
|
|
343
|
-
if (param) {
|
|
344
|
-
// 如果是影像件上传服务的入参(默认是电投)
|
|
345
|
-
return function(fileName) {
|
|
346
|
-
if (fileName) {
|
|
347
|
-
let fileInfo = {}
|
|
348
|
-
const fs = fileName.split('.')
|
|
349
|
-
if (fs.length < 2) {
|
|
350
|
-
console.log(param, '注意!【保存影像】入参发生异常!filename非法。filename = ' + fileName + '.uploadType = ' + uploadType)
|
|
351
|
-
return {}
|
|
352
|
-
}
|
|
353
|
-
fileInfo = { [PN.ImageList.FileNo]: fs[0], [PN.ImageList.FileSuffix]: fs[1] } // 影像件的文件名相关信息
|
|
354
|
-
const sparam = { [PN.Eleinsure.OrderUuid]: getStateValue(EM.STATE_ELEINSURE_ELEORDER_ORDER_UUID) }
|
|
355
|
-
const basicImgParam = FileServerPkg.UType2Image[uploadType] || {}
|
|
356
|
-
// 如果传入personKey。获取默认的人员信息
|
|
357
|
-
const personKey = param.personKey
|
|
358
|
-
const pUUID = UType2State[uploadType] ? UType2State[uploadType].pUUID : null
|
|
359
|
-
const pInfo = (personKey && pUUID) ? getStateValue(pUUID, [personKey]) : {}
|
|
360
|
-
// 用户指定入参,可以覆盖默认值:由上传类型决定的party_uuid、image_type、image_page等
|
|
361
|
-
const psn = copyObject(param)
|
|
362
|
-
delete psn.personKey
|
|
363
|
-
const imageObj = Object.assign({}, basicImgParam, pInfo, fileInfo, psn)
|
|
364
|
-
sparam.image_list = [imageObj]
|
|
365
|
-
console.log(sparam, '信息:壳【保存影像】ELEINSURE_SAVE_IMAGE,入参--')
|
|
366
|
-
return sparam
|
|
367
|
-
} else {
|
|
368
|
-
console.log(param, '注意!【保存影像】入参发生异常!没有获取到壳返回的filename。uploadType=' + uploadType)
|
|
369
|
-
return {}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
} else {
|
|
373
|
-
console.log(param, '注意!壳上传没有传入合法调用【保存影像】服务的参数;uploadType=' + uploadType)
|
|
374
|
-
}
|
|
375
|
-
} else {
|
|
376
|
-
console.log(param, '注意!壳上传文件服务器完毕,被指定成【不调用相关服务保存fileId】。请注意后续对于上传文件的保存。uploadType=' + uploadType)
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
// state保存返回的是一个可执行的函数,传入filename即可
|
|
381
|
-
function getStateSetFn(uploadType, param) {
|
|
382
|
-
|
|
383
|
-
if (param) {
|
|
384
|
-
const stateParams = param.personKey ? [param.personKey] : []
|
|
385
|
-
if (UType2State[uploadType] && UType2State[uploadType].save) {
|
|
386
|
-
const stateKey = UType2State[uploadType].save // 保存的state的key
|
|
387
|
-
return function(fileName) {
|
|
388
|
-
if (stateKey && fileName) setStateValue(stateKey, fileName, stateParams)
|
|
389
|
-
}
|
|
390
|
-
} else {
|
|
391
|
-
console.log(uploadType, '注意!没有uploadType对应【UType2State】的配置。注意核实')
|
|
392
|
-
}
|
|
393
|
-
} else {
|
|
394
|
-
console.log(uploadType, '注意!壳上传没有传入合法调用【存储state】服务的参数;上传类型:')
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
// 获取用户信息图片文件名 file_no 文件名,ext扩展名。没有ext不传
|
|
399
|
-
FileServerPkg.getImgPath = function(file_no, ext) {
|
|
400
|
-
if (file_no.indexOf(FileServerPkg.fileBasePath) > -1) {
|
|
401
|
-
return file_no
|
|
402
|
-
} else {
|
|
403
|
-
return FileServerPkg.fileBasePath + file_no + (ext ? '.' + ext : '')
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
// 壳调用参数辅助构造函数
|
|
408
|
-
function getP(domain, buz, actions, direction) {
|
|
409
|
-
const p = { domain, buz, actions }
|
|
410
|
-
// if (actions) p.actions = actions
|
|
411
|
-
if (!isEmptyObject(direction)) p.direction = direction
|
|
412
|
-
return p
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
/*
|
|
416
|
-
电投:身份证件、银行卡
|
|
417
|
-
domain:POLICY
|
|
418
|
-
buz: POLICY_FILE
|
|
419
|
-
actions 字段
|
|
420
|
-
1 ocr_id0 身份证正面OCR
|
|
421
|
-
2 ocr_id1 身份证反面OCR
|
|
422
|
-
3 ocr_bc 银行卡OCR
|
|
423
|
-
电投:活体识别
|
|
424
|
-
domain:POLICY
|
|
425
|
-
buz: POLICY_FILE
|
|
426
|
-
无action
|
|
427
|
-
电投:签字图片
|
|
428
|
-
domain:POLICY
|
|
429
|
-
buz: POLICY_PICTURE
|
|
430
|
-
无action
|
|
431
|
-
电投:其他影像件:
|
|
432
|
-
domain:POLICY
|
|
433
|
-
buz: POLICY_FILE
|
|
434
|
-
无action
|
|
435
|
-
客户管理:客户资料 头像
|
|
436
|
-
domain: CUSTOMER
|
|
437
|
-
buz: CUSTOMER_FILE
|
|
438
|
-
*/
|
|
439
|
-
|
|
440
|
-
// 判断是否为空对象
|
|
441
|
-
function isEmptyObject(obj) {
|
|
442
|
-
return (typeof obj === 'object' && Object.keys(obj).length === 0)
|
|
443
|
-
}
|
|
444
|
-
function copyObject(obj) {
|
|
445
|
-
if (obj === null) return null
|
|
446
|
-
if (typeof obj !== 'object') return obj
|
|
447
|
-
if (obj.constructor === Date) return new Date(obj)
|
|
448
|
-
if (obj.constructor === RegExp) return new RegExp(obj)
|
|
449
|
-
|
|
450
|
-
let newObj
|
|
451
|
-
if (typeof obj === 'object') {
|
|
452
|
-
if (!(Array.isArray(obj))) {
|
|
453
|
-
newObj = {}
|
|
454
|
-
for (var key in obj) {
|
|
455
|
-
newObj[key] = copyObject(obj[key])
|
|
456
|
-
}
|
|
457
|
-
} else {
|
|
458
|
-
newObj = []
|
|
459
|
-
obj.forEach((s) => {
|
|
460
|
-
const r = copyObject(s)
|
|
461
|
-
// if (!isEmptyObject(r)) {
|
|
462
|
-
newObj.push(r)
|
|
463
|
-
// }
|
|
464
|
-
})
|
|
465
|
-
}
|
|
466
|
-
} else if (typeof obj === 'function') {
|
|
467
|
-
newObj = JSON.parse(JSON.stringify(obj))
|
|
468
|
-
}
|
|
469
|
-
return newObj
|
|
1
|
+
import isp_phone from '../platform/isp_phone'
|
|
2
|
+
import { EBType, SHELL } from './callNative'
|
|
3
|
+
// import { FilePathPkg } from './filePath'
|
|
4
|
+
// import { callService } from '../../../assets/libs/service/serviceImpl'
|
|
5
|
+
// import SC from '../service/requestName'
|
|
6
|
+
// import { ParamName as PN } from '../../../assets/libs/service/serviceParam'
|
|
7
|
+
// import { getStateValue, setStateValue } from '../../../store'
|
|
8
|
+
// import { copyObject, isEmptyObject } from '../../util/copyUtil'
|
|
9
|
+
// import * as EM from '../../../store/recruitManage/module-info'
|
|
10
|
+
// import * as EM from '../../../store/eleinsure/module-info'
|
|
11
|
+
import Vue from 'vue'
|
|
12
|
+
import config from './config'
|
|
13
|
+
// import { ImagesPkg } from './images'
|
|
14
|
+
|
|
15
|
+
export const FileServerPkg = {}
|
|
16
|
+
export const EventGetFilename = 'getFileName'
|
|
17
|
+
export const EventGetMessage = 'getMessage'
|
|
18
|
+
|
|
19
|
+
// 文件服务器的地址
|
|
20
|
+
FileServerPkg.baseHost = config.file.baseURL
|
|
21
|
+
// 获取显示的基本地址
|
|
22
|
+
FileServerPkg.fileBasePath = config.file.baseURL + '/file/v1/hasl/fileAdmin/fileAdmin/get/'
|
|
23
|
+
|
|
24
|
+
// 照会文件服务器地址
|
|
25
|
+
// FileServerPkg.enoteBaseHost = FilePathPkg.enoteBaseHost
|
|
26
|
+
// // 照会路径
|
|
27
|
+
// FileServerPkg.enoteFileBasePath = FilePathPkg.enoteFileBasePath
|
|
28
|
+
|
|
29
|
+
// 监听壳的事件
|
|
30
|
+
FileServerPkg.EB = new Vue()
|
|
31
|
+
// 事件唤起者(实际调用vnode)
|
|
32
|
+
FileServerPkg.fnCaller = null
|
|
33
|
+
FileServerPkg.callerType = ''
|
|
34
|
+
FileServerPkg.callerParam = null // 参数组
|
|
35
|
+
FileServerPkg.callerServiceName = null // 调用服务名
|
|
36
|
+
FileServerPkg.callerServiceParamFn = null // 调用服务用的参数
|
|
37
|
+
FileServerPkg.callerStateSetFn = null // 保存状态值用的函数
|
|
38
|
+
|
|
39
|
+
// 添事件监听
|
|
40
|
+
FileServerPkg.EB.$on(EBType.getPIC, (data) => {
|
|
41
|
+
handleShellCall(data.fileName, data.actions)
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
// 添加身份证OCR事件监听
|
|
45
|
+
FileServerPkg.EB.$on(EBType.IDCard, (data) => {
|
|
46
|
+
handleShellCall(data.fileName, data.actions)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
// 添加活体识别监听
|
|
50
|
+
FileServerPkg.EB.$on(EBType.Live, (data) => {
|
|
51
|
+
handleShellCall(data.fileName, data.actions)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
// 处理壳返回的结果
|
|
55
|
+
function handleShellCall(fileName, actions) {
|
|
56
|
+
const callerType = FileServerPkg.callerType // 分类处理
|
|
57
|
+
const serviceName = FileServerPkg.callerServiceName
|
|
58
|
+
const paramFn = FileServerPkg.callerServiceParamFn
|
|
59
|
+
if (serviceName && paramFn) {
|
|
60
|
+
try {
|
|
61
|
+
const p = paramFn(fileName)
|
|
62
|
+
callService(serviceName, p).then(d => {
|
|
63
|
+
if (FileServerPkg.callerStateSetFn) FileServerPkg.callerStateSetFn(fileName) // 设置状态值
|
|
64
|
+
})
|
|
65
|
+
} catch (e) {
|
|
66
|
+
console.log(e + '异常!!!壳上传后调用【保存影像】发生异常。上传类型:' + callerType)
|
|
67
|
+
}
|
|
68
|
+
// 现在无论如何先显示吧。。
|
|
69
|
+
if (fileName) FileServerPkg.fnCaller.$emit(EventGetFilename, fileName)
|
|
70
|
+
if (actions) FileServerPkg.fnCaller.$emit(EventGetMessage, actions)
|
|
71
|
+
} else {
|
|
72
|
+
console.log('注意!壳上传没有配置调用【保存服务】的服务;上传类型' + callerType)
|
|
73
|
+
// 直接发送事件,不调用服务
|
|
74
|
+
if (fileName) FileServerPkg.fnCaller.$emit(EventGetFilename, fileName)
|
|
75
|
+
if (actions) FileServerPkg.fnCaller.$emit(EventGetMessage, actions)
|
|
76
|
+
if (FileServerPkg.callerStateSetFn) FileServerPkg.callerStateSetFn(fileName) // 设置状态值
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// 通过壳上传的文件类型
|
|
81
|
+
FileServerPkg.UploadType = {
|
|
82
|
+
IdCard_Front_Applicant: 'IdCard_Front_Applicant',
|
|
83
|
+
IdCard_Back_Applicant: 'IdCard_Back_Applicant',
|
|
84
|
+
Card_Applicant: 'Card_Applicant',
|
|
85
|
+
IdCard_Front_Insured: 'IdCard_Front_Insured',
|
|
86
|
+
IdCard_Back_Insured: 'IdCard_Back_Insured',
|
|
87
|
+
Card_Insured: 'Card_Insured',
|
|
88
|
+
IdCard_Front_Guard: 'IdCard_Front_Guard',
|
|
89
|
+
IdCard_Back_Guard: 'IdCard_Back_Guard',
|
|
90
|
+
Card_Guard: 'Card_Guard',
|
|
91
|
+
IdCard_Front_Beneficiary: 'IdCard_Front_Beneficiary',
|
|
92
|
+
IdCard_Back_Beneficiary: 'IdCard_Back_Beneficiary',
|
|
93
|
+
Card_Beneficary: 'Card_Beneficary',
|
|
94
|
+
BankCard_Applicant: 'BankCard_Applicant',
|
|
95
|
+
BankCard_Survival: 'BankCard_Survival',
|
|
96
|
+
Live_Applicant: 'Live_Applicant',
|
|
97
|
+
Live_Insured: 'Live_Insured',
|
|
98
|
+
Live_Guard: 'Live_Guard',
|
|
99
|
+
// 签名也许需要细分 TODO
|
|
100
|
+
Sign_Applicant: 'Sign_Applicant',
|
|
101
|
+
Sign_Insured: 'Sign_Insured',
|
|
102
|
+
Sign_Guard: 'Sign_Guard',
|
|
103
|
+
Sign_Agent: 'Sign_Agent',
|
|
104
|
+
EleImage_Applicant: 'EleImage_Applicant', // 其他类型影像件(应该不用)
|
|
105
|
+
EleImage_Insured: 'EleImage_Insured', // 其他类型影像件(应该不用)
|
|
106
|
+
EleImage_Beneficiary: 'EleImage_Beneficiary', // 其他类型影像件(应该不用)
|
|
107
|
+
CustomImg: 'CustomImg',
|
|
108
|
+
EleQRcode: 'EleQRcode',
|
|
109
|
+
EleImage_Other: 'EleImage_Other',
|
|
110
|
+
NoOcrImg: 'NoOcrImg' // 不带OCR的图片上传
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// 通过壳上传的文件类型
|
|
114
|
+
const UType2Shell = {
|
|
115
|
+
IdCard_Front: 'IdCard_Front',
|
|
116
|
+
IdCard_Back: 'IdCard_Back',
|
|
117
|
+
Bank_Card: 'BankCard',
|
|
118
|
+
Live: 'Live',
|
|
119
|
+
// IdCard_Front_Applicant: 'IdCard_Front',
|
|
120
|
+
// IdCard_Back_Applicant: 'IdCard_Back',
|
|
121
|
+
// Card_Applicant: 'EleImage',
|
|
122
|
+
// IdCard_Front_Insured: 'IdCard_Front',
|
|
123
|
+
// IdCard_Back_Insured: 'IdCard_Back',
|
|
124
|
+
// Card_Insured: 'EleImage',
|
|
125
|
+
// IdCard_Front_Guard: 'IdCard_Front',
|
|
126
|
+
// IdCard_Back_Guard: 'IdCard_Back',
|
|
127
|
+
// Card_Guard: 'EleImage',
|
|
128
|
+
// IdCard_Front_Beneficiary: 'IdCard_Front',
|
|
129
|
+
// IdCard_Back_Beneficiary: 'IdCard_Back',
|
|
130
|
+
// Card_Beneficary: 'EleImage',
|
|
131
|
+
// BankCard_Applicant: 'BankCard',
|
|
132
|
+
// BankCard_Survival: 'BankCard',
|
|
133
|
+
// Live_Applicant: 'Live',
|
|
134
|
+
// Live_Insured: 'Live',
|
|
135
|
+
// Live_Guard: 'Live',
|
|
136
|
+
// // 签名也许需要细分 TODO
|
|
137
|
+
// Sign_Applicant: 'Sign',
|
|
138
|
+
// Sign_Insured: 'Sign',
|
|
139
|
+
// Sign_Guard: 'Sign',
|
|
140
|
+
// Sign_Agent: 'Sign',
|
|
141
|
+
// EleImage_Applicant: 'EleImage', // 其他类型影像件(应该不用)
|
|
142
|
+
// EleImage_Insured: 'EleImage', // 其他类型影像件(应该不用)
|
|
143
|
+
// EleImage_Beneficiary: 'EleImage', // 其他类型影像件(应该不用)
|
|
144
|
+
// CustomImg: 'CustomImg',
|
|
145
|
+
// EleQRcode: 'EleQRcode',
|
|
146
|
+
// EleImage_Other: 'EleOtherImage',
|
|
147
|
+
// NoOcrImg: 'NoOcrImg' // 不带OCR的图片上传
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// const IB = ImagesPkg.BasicImageType
|
|
151
|
+
|
|
152
|
+
// 上传类型对应的图像分类
|
|
153
|
+
FileServerPkg.UType2Image = {
|
|
154
|
+
// IdCard_Front_Applicant: IB.IDFront,
|
|
155
|
+
// IdCard_Back_Applicant: IB.IDBack,
|
|
156
|
+
// Card_Applicant: IB.Card,
|
|
157
|
+
// IdCard_Front_Insured: IB.IDFront,
|
|
158
|
+
// IdCard_Back_Insured: IB.IDBack,
|
|
159
|
+
// Card_Insured: IB.Card,
|
|
160
|
+
// IdCard_Front_Guard: IB.IDFront,
|
|
161
|
+
// IdCard_Back_Guard: IB.IDBack,
|
|
162
|
+
// Card_Guard: IB.Card,
|
|
163
|
+
// IdCard_Front_Beneficiary: IB.IDFront,
|
|
164
|
+
// IdCard_Back_Beneficiary: IB.IDBack,
|
|
165
|
+
// Card_Beneficary: IB.Card,
|
|
166
|
+
// BankCard: IB.BankCard,
|
|
167
|
+
// BankCard_Applicant: IB.BankCard,
|
|
168
|
+
// BankCard_Survival: IB.BankCardSurvival,
|
|
169
|
+
// Live_Applicant: IB.Live_App,
|
|
170
|
+
// Live_Insured: IB.Live_Insured,
|
|
171
|
+
|
|
172
|
+
// // 也许需要细分。则补充细分类型 TODO
|
|
173
|
+
// Sign_Applicant: IB.Sign_1_App,
|
|
174
|
+
// Sign_Insured: IB.Sign_1_Insured,
|
|
175
|
+
// Sign_Guard: IB.Sign_1_Insured,
|
|
176
|
+
// Sign_Agent: IB.Sign_1_Agent,
|
|
177
|
+
// EleImage: IB.Addi_Other,
|
|
178
|
+
// EleImage_Applicant: IB.Addi_Other, // 其他类型影像件(应该不用)
|
|
179
|
+
// EleImage_Insured: IB.Addi_Other, // 其他类型影像件(应该不用)
|
|
180
|
+
// EleImage_Beneficiary: IB.Addi_Other, // 其他类型影像件(应该不用)
|
|
181
|
+
// EleImage_Other: IB.Addi_Other, // 其他类型
|
|
182
|
+
// NoOcrImg: 'NoOcrImg' // 不带OCR的图片上传
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// 上传影像件类型与state值对应
|
|
186
|
+
const UType2State = {
|
|
187
|
+
// IdCard_Front_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_IDCARD_FRONT },
|
|
188
|
+
// IdCard_Back_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_IDCARD_BACK },
|
|
189
|
+
// Card_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_CARD },
|
|
190
|
+
// IdCard_Front_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSURED_$1_IDCARD_FRONT },
|
|
191
|
+
// IdCard_Back_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSURED_$1_IDCARD_BACK },
|
|
192
|
+
// Card_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSUREDS_$INSUREDKEY_CARD },
|
|
193
|
+
// IdCard_Front_Guard: { pUUID: EM.STATE_ELEINSURE_GURADS_$INSUREDKEY_PARTY_UUID, save: EM.STATE_ELEINSURE_IMAGES_GURADS_$INSUREDKEY_IDCARD_FRONT },
|
|
194
|
+
// IdCard_Back_Guard: { pUUID: EM.STATE_ELEINSURE_GURADS_$INSUREDKEY_PARTY_UUID, save: EM.STATE_ELEINSURE_IMAGES_GURADS_$INSUREDKEY_IDCARD_BACK },
|
|
195
|
+
// Card_Guard: { pUUID: EM.STATE_ELEINSURE_GURADS_$INSUREDKEY_PARTY_UUID, save: EM.STATE_ELEINSURE_IMAGES_GURADS_$INSUREDKEY_CARD },
|
|
196
|
+
// IdCard_Front_Beneficiary: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY_$1_IDCARD_FRONT },
|
|
197
|
+
// IdCard_Back_Beneficiary: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY_$1_IDCARD_BACK },
|
|
198
|
+
// BankCard_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT_BANKCARD },
|
|
199
|
+
// BankCard_Survival: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY_$BCODE_BANKCARD },
|
|
200
|
+
// Live_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_SUBMIT_LIVES_APPLICANT_IMAGE },
|
|
201
|
+
// Live_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_SUBMIT_LIVES_INSUREDS_$INSUREDKEY_IMAGE },
|
|
202
|
+
// // 签名使用 sign还是submit,确定后改一下 TODO
|
|
203
|
+
// Sign_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_SIGN_APPLICANT },
|
|
204
|
+
// Sign_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_SIGN_INSUREDS_$INSUREDKEY },
|
|
205
|
+
// Sign_Agent: { pUUID: EM.STATE_ELEINSURE_AGENT_ID, save: EM.STATE_ELEINSURE_SIGN_AGENT },
|
|
206
|
+
// EleImage_Applicant: { pUUID: EM.STATE_ELEINSURE_APPLICANT_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_APPLICANT }, // 此处应切换到真正位置---后面接详情
|
|
207
|
+
// EleImage_Insured: { pUUID: EM.STATE_ELEINSURE_INSUREDS_$1_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_INSUREDS_$INSUREDKEY },
|
|
208
|
+
// EleImage_Beneficiary: { pUUID: EM.STATE_ELEINSURE_BENEFICIARY_$BCODE_PERSON_UUID, save: EM.STATE_ELEINSURE_IMAGES_BENEFICIARY }
|
|
209
|
+
// Live_Guard: 'Live', 监护人活体识别 TODO
|
|
210
|
+
// Sign_Guard: 'Sign', 监护人签名 TODO
|
|
211
|
+
// CustomImg: 'CustomImg' // 客户管理不需要保存state???
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// 壳调用参数
|
|
215
|
+
const shellUploadParam = {
|
|
216
|
+
IdCard_Front: getP('POLICY', 'POLICY_FILE', 'ocr_id0', '0'),
|
|
217
|
+
IdCard_Back: getP('POLICY', 'POLICY_FILE', 'ocr_id1', '1'),
|
|
218
|
+
BankCard: getP('POLICY', 'POLICY_FILE', 'ocr_bc'),
|
|
219
|
+
Live: getP('POLICY', 'POLICY_FILE', ''),
|
|
220
|
+
// Sign: getP('POLICY', 'POLICY_PICTURE'),
|
|
221
|
+
// EleImage: getP('POLICY', 'POLICY_FILE'),
|
|
222
|
+
// CustomImg: getP('CUSTOMER', 'CUSTOMER_FILE'),
|
|
223
|
+
// NoOcrImg: getP('POLICY', 'POLICY_FILE', '', '0'),
|
|
224
|
+
// EleOtherImage: getP('POLICY', 'POLICY_FILE')
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// 调用的壳服务
|
|
228
|
+
const TypeShellMapping = {
|
|
229
|
+
// IdCard_Front: SHELL.GET_IDCARD_PIC,
|
|
230
|
+
// IdCard_Back: SHELL.GET_IDCARD_PIC,
|
|
231
|
+
// BankCard: SHELL.CALL_CAMERA,
|
|
232
|
+
// Live: SHELL.LIVE,
|
|
233
|
+
// Sign: SHELL.CALL_CAMERA,
|
|
234
|
+
// EleImage: SHELL.CALL_CAMERA,
|
|
235
|
+
// CustomImg: SHELL.CALL_CAMERA,
|
|
236
|
+
// EleQRcode: SHELL.QRCODE,
|
|
237
|
+
// NoOcrImg: SHELL.CALL_CAMERA,
|
|
238
|
+
// EleOtherImage: SHELL.CALL_CAMERA_OTHER,
|
|
239
|
+
IdCard_Front: 'GET_IDCARD_PIC',
|
|
240
|
+
IdCard_Back: 'GET_IDCARD_PIC',
|
|
241
|
+
BankCard: 'CALL_CAMERA',
|
|
242
|
+
Live: 'LIVE',
|
|
243
|
+
Sign: SHELL.CALL_CAMERA,
|
|
244
|
+
EleImage: SHELL.CALL_CAMERA,
|
|
245
|
+
CustomImg: SHELL.CALL_CAMERA,
|
|
246
|
+
EleQRcode: SHELL.QRCODE,
|
|
247
|
+
NoOcrImg: SHELL.CALL_CAMERA,
|
|
248
|
+
EleOtherImage: SHELL.CALL_CAMERA_OTHER,
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// 调用的后端保存服务
|
|
252
|
+
const ServiceNameMapping = {
|
|
253
|
+
// IdCard_Front: SC.ELEINSURE_SAVE_IMAGE,
|
|
254
|
+
// IdCard_Back: SC.ELEINSURE_SAVE_IMAGE,
|
|
255
|
+
// BankCard: SC.ELEINSURE_SAVE_IMAGE,
|
|
256
|
+
// Live: SC.ELEINSURE_SAVE_IMAGE,
|
|
257
|
+
// Sign: SC.ELEINSURE_SAVE_IMAGE,
|
|
258
|
+
// EleImage: SC.ELEINSURE_SAVE_IMAGE,
|
|
259
|
+
// CustomImg: SC.CUSTOM_SAVE_PICTURE
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* *************************************************************************
|
|
263
|
+
|
|
264
|
+
壳上传服务暴露API
|
|
265
|
+
图片调用壳上传:流程:包括拿到fileNo回显文件,并调用服务保存影像件信息(fileNo)
|
|
266
|
+
参数说明:
|
|
267
|
+
uploadType: FileServerPkg.UploadType的枚举
|
|
268
|
+
eventSender: 上传的组件vue对象。组件传this
|
|
269
|
+
callerParam:调用壳服务、上传服务、必须的参数
|
|
270
|
+
callerParam必须的结构
|
|
271
|
+
callerParam: {
|
|
272
|
+
shell : {
|
|
273
|
+
buzId: '111111'
|
|
274
|
+
},
|
|
275
|
+
service: {
|
|
276
|
+
personKey: 'Children1',
|
|
277
|
+
image_type: '01', // 不传则按uploadType默认值。见UType2Image,以及ImagesPkg.BasicImageType
|
|
278
|
+
image_page: '3', // 不传则按uploadType默认值。见UType2Image,以及ImagesPkg.BasicImageType
|
|
279
|
+
party_uuid: 'abc123', // 不传则按uploadType默认值.见UType2State的pUUID
|
|
280
|
+
},
|
|
281
|
+
state: {
|
|
282
|
+
personKey: 'Children1'
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
* *************************************************************************/
|
|
286
|
+
FileServerPkg.pictureUploadSaveShow = function(uploadType, eventSender, callerParam, isCallService = false) {
|
|
287
|
+
debugger
|
|
288
|
+
const shellType = UType2Shell[uploadType]
|
|
289
|
+
FileServerPkg.fnCaller = eventSender // 实际调用者
|
|
290
|
+
FileServerPkg.callerType = shellType
|
|
291
|
+
FileServerPkg.callerServiceName = ServiceNameMapping[shellType]
|
|
292
|
+
FileServerPkg.callerParam = callerParam
|
|
293
|
+
console.log(`${JSON.stringify(callerParam)}`, `调用壳上传图片。uploadType=${uploadType},附带参数:`)
|
|
294
|
+
// const shellParam = setShellParam(shellType, callerParam.shell, callerParam.maxSizeKB, callerParam.count)
|
|
295
|
+
const shellParam = setShellParam(shellType, callerParam.shell, callerParam.maxSizeKB)
|
|
296
|
+
FileServerPkg.callerServiceParamFn = setServiceParamFn(uploadType, callerParam.service, isCallService)
|
|
297
|
+
FileServerPkg.callerStateSetFn = getStateSetFn(uploadType, callerParam.state)
|
|
298
|
+
isp_phone.callShell(TypeShellMapping[shellType], shellParam, null, eventSender)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/* *************************************************************************
|
|
302
|
+
壳上传服务暴露API
|
|
303
|
+
获取壳调用参数。配合FileServerPkg.pictureUploadSaveShow使用,准备callerParam入参
|
|
304
|
+
************************************************************************* */
|
|
305
|
+
FileServerPkg.getCallerParam = function(buzId, personKey, shellMore = {}, serviceMore = {}, stateMore = {}) {
|
|
306
|
+
return {
|
|
307
|
+
shell: Object.assign({}, { buzId }, shellMore),
|
|
308
|
+
service: Object.assign({}, { personKey }, serviceMore),
|
|
309
|
+
state: Object.assign({}, { personKey }, stateMore)
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// 设置唤起壳功能时要的参数
|
|
314
|
+
function setShellParam(uploadType, param, maxSizeKB, count) {
|
|
315
|
+
if (param) {
|
|
316
|
+
const shellParam = copyObject(shellUploadParam[uploadType])
|
|
317
|
+
shellParam.buzId = param.buzId || 'NULL'
|
|
318
|
+
if (maxSizeKB) {
|
|
319
|
+
shellParam.maxSizeKB = maxSizeKB
|
|
320
|
+
}
|
|
321
|
+
if (count) {
|
|
322
|
+
shellParam.count = count
|
|
323
|
+
}
|
|
324
|
+
console.log(JSON.stringify(shellParam), '获取壳上传参数')
|
|
325
|
+
return shellParam
|
|
326
|
+
} else if (uploadType === 'NoOcrImg') {
|
|
327
|
+
const shellParam = copyObject(shellUploadParam[uploadType])
|
|
328
|
+
shellParam.buzId = 'NULL'
|
|
329
|
+
if (maxSizeKB) {
|
|
330
|
+
shellParam.maxSizeKB = maxSizeKB
|
|
331
|
+
}
|
|
332
|
+
return shellParam
|
|
333
|
+
} else {
|
|
334
|
+
console.log(uploadType, '注意!壳上传没有传入合法调用【壳】服务的参数;上传类型:')
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// 设置服务调用时传递的参数,返回接受fileName的函数
|
|
339
|
+
function setServiceParamFn(uploadType, param, isCallService) {
|
|
340
|
+
if (isCallService) {
|
|
341
|
+
const shellType = UType2Shell[uploadType]
|
|
342
|
+
|
|
343
|
+
if (param) {
|
|
344
|
+
// 如果是影像件上传服务的入参(默认是电投)
|
|
345
|
+
return function(fileName) {
|
|
346
|
+
if (fileName) {
|
|
347
|
+
let fileInfo = {}
|
|
348
|
+
const fs = fileName.split('.')
|
|
349
|
+
if (fs.length < 2) {
|
|
350
|
+
console.log(param, '注意!【保存影像】入参发生异常!filename非法。filename = ' + fileName + '.uploadType = ' + uploadType)
|
|
351
|
+
return {}
|
|
352
|
+
}
|
|
353
|
+
fileInfo = { [PN.ImageList.FileNo]: fs[0], [PN.ImageList.FileSuffix]: fs[1] } // 影像件的文件名相关信息
|
|
354
|
+
const sparam = { [PN.Eleinsure.OrderUuid]: getStateValue(EM.STATE_ELEINSURE_ELEORDER_ORDER_UUID) }
|
|
355
|
+
const basicImgParam = FileServerPkg.UType2Image[uploadType] || {}
|
|
356
|
+
// 如果传入personKey。获取默认的人员信息
|
|
357
|
+
const personKey = param.personKey
|
|
358
|
+
const pUUID = UType2State[uploadType] ? UType2State[uploadType].pUUID : null
|
|
359
|
+
const pInfo = (personKey && pUUID) ? getStateValue(pUUID, [personKey]) : {}
|
|
360
|
+
// 用户指定入参,可以覆盖默认值:由上传类型决定的party_uuid、image_type、image_page等
|
|
361
|
+
const psn = copyObject(param)
|
|
362
|
+
delete psn.personKey
|
|
363
|
+
const imageObj = Object.assign({}, basicImgParam, pInfo, fileInfo, psn)
|
|
364
|
+
sparam.image_list = [imageObj]
|
|
365
|
+
console.log(sparam, '信息:壳【保存影像】ELEINSURE_SAVE_IMAGE,入参--')
|
|
366
|
+
return sparam
|
|
367
|
+
} else {
|
|
368
|
+
console.log(param, '注意!【保存影像】入参发生异常!没有获取到壳返回的filename。uploadType=' + uploadType)
|
|
369
|
+
return {}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
} else {
|
|
373
|
+
console.log(param, '注意!壳上传没有传入合法调用【保存影像】服务的参数;uploadType=' + uploadType)
|
|
374
|
+
}
|
|
375
|
+
} else {
|
|
376
|
+
console.log(param, '注意!壳上传文件服务器完毕,被指定成【不调用相关服务保存fileId】。请注意后续对于上传文件的保存。uploadType=' + uploadType)
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// state保存返回的是一个可执行的函数,传入filename即可
|
|
381
|
+
function getStateSetFn(uploadType, param) {
|
|
382
|
+
|
|
383
|
+
if (param) {
|
|
384
|
+
const stateParams = param.personKey ? [param.personKey] : []
|
|
385
|
+
if (UType2State[uploadType] && UType2State[uploadType].save) {
|
|
386
|
+
const stateKey = UType2State[uploadType].save // 保存的state的key
|
|
387
|
+
return function(fileName) {
|
|
388
|
+
if (stateKey && fileName) setStateValue(stateKey, fileName, stateParams)
|
|
389
|
+
}
|
|
390
|
+
} else {
|
|
391
|
+
console.log(uploadType, '注意!没有uploadType对应【UType2State】的配置。注意核实')
|
|
392
|
+
}
|
|
393
|
+
} else {
|
|
394
|
+
console.log(uploadType, '注意!壳上传没有传入合法调用【存储state】服务的参数;上传类型:')
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// 获取用户信息图片文件名 file_no 文件名,ext扩展名。没有ext不传
|
|
399
|
+
FileServerPkg.getImgPath = function(file_no, ext) {
|
|
400
|
+
if (file_no.indexOf(FileServerPkg.fileBasePath) > -1) {
|
|
401
|
+
return file_no
|
|
402
|
+
} else {
|
|
403
|
+
return FileServerPkg.fileBasePath + file_no + (ext ? '.' + ext : '')
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// 壳调用参数辅助构造函数
|
|
408
|
+
function getP(domain, buz, actions, direction) {
|
|
409
|
+
const p = { domain, buz, actions }
|
|
410
|
+
// if (actions) p.actions = actions
|
|
411
|
+
if (!isEmptyObject(direction)) p.direction = direction
|
|
412
|
+
return p
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/*
|
|
416
|
+
电投:身份证件、银行卡
|
|
417
|
+
domain:POLICY
|
|
418
|
+
buz: POLICY_FILE
|
|
419
|
+
actions 字段
|
|
420
|
+
1 ocr_id0 身份证正面OCR
|
|
421
|
+
2 ocr_id1 身份证反面OCR
|
|
422
|
+
3 ocr_bc 银行卡OCR
|
|
423
|
+
电投:活体识别
|
|
424
|
+
domain:POLICY
|
|
425
|
+
buz: POLICY_FILE
|
|
426
|
+
无action
|
|
427
|
+
电投:签字图片
|
|
428
|
+
domain:POLICY
|
|
429
|
+
buz: POLICY_PICTURE
|
|
430
|
+
无action
|
|
431
|
+
电投:其他影像件:
|
|
432
|
+
domain:POLICY
|
|
433
|
+
buz: POLICY_FILE
|
|
434
|
+
无action
|
|
435
|
+
客户管理:客户资料 头像
|
|
436
|
+
domain: CUSTOMER
|
|
437
|
+
buz: CUSTOMER_FILE
|
|
438
|
+
*/
|
|
439
|
+
|
|
440
|
+
// 判断是否为空对象
|
|
441
|
+
function isEmptyObject(obj) {
|
|
442
|
+
return (typeof obj === 'object' && Object.keys(obj).length === 0)
|
|
443
|
+
}
|
|
444
|
+
function copyObject(obj) {
|
|
445
|
+
if (obj === null) return null
|
|
446
|
+
if (typeof obj !== 'object') return obj
|
|
447
|
+
if (obj.constructor === Date) return new Date(obj)
|
|
448
|
+
if (obj.constructor === RegExp) return new RegExp(obj)
|
|
449
|
+
|
|
450
|
+
let newObj
|
|
451
|
+
if (typeof obj === 'object') {
|
|
452
|
+
if (!(Array.isArray(obj))) {
|
|
453
|
+
newObj = {}
|
|
454
|
+
for (var key in obj) {
|
|
455
|
+
newObj[key] = copyObject(obj[key])
|
|
456
|
+
}
|
|
457
|
+
} else {
|
|
458
|
+
newObj = []
|
|
459
|
+
obj.forEach((s) => {
|
|
460
|
+
const r = copyObject(s)
|
|
461
|
+
// if (!isEmptyObject(r)) {
|
|
462
|
+
newObj.push(r)
|
|
463
|
+
// }
|
|
464
|
+
})
|
|
465
|
+
}
|
|
466
|
+
} else if (typeof obj === 'function') {
|
|
467
|
+
newObj = JSON.parse(JSON.stringify(obj))
|
|
468
|
+
}
|
|
469
|
+
return newObj
|
|
470
470
|
}
|