index.ts 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. import { FunCode } from "../../../constants/enum/funcode"
  2. import Toast from "../../../miniprogram_npm/@vant/weapp/toast/toast"
  3. import { queryBankAccountSign, queryCusBankSignBank } from "../../../services/api/account/index"
  4. import { sendMsgToMQ } from "../../../services/api/common/index"
  5. import { accountid, isEncrypted, loginQuery, protoHeader, timetample, userid } from "../../../services/utils"
  6. import { hideLoading, showLoading } from "../../../utils/message/index"
  7. Page({
  8. /**
  9. * 页面的初始数据
  10. */
  11. data: {
  12. /// 开户银行
  13. bankName: '',
  14. /// 银行卡号
  15. bankNo: '',
  16. /// 姓名
  17. accountName: '',
  18. /// 支行名称
  19. branchBankName: '',
  20. /// 开户行信息
  21. bankInfos: <GuangZuan.BankInfo[]>[],
  22. /// 显示的开户行信息
  23. bankNames: <string[]>[],
  24. /// 选中的银行信息
  25. bankInfo: <GuangZuan.BankInfo>{},
  26. /// 是否显示银行
  27. showBank: false,
  28. /// 托管银行信息
  29. cusBankInfo: <GuangZuan.CusBankInfo>{},
  30. /// 签约账户信息
  31. bankAccountSign: <GuangZuan.BankAccountSign>{}
  32. },
  33. /**
  34. * 返回上层视图
  35. */
  36. backToParent() {
  37. /// 返回上层视图
  38. wx.navigateBack()
  39. },
  40. /**
  41. * onCancel
  42. */
  43. onCancel() {
  44. this.setData({ showBank: false })
  45. },
  46. /**
  47. * onConfirm
  48. */
  49. onConfirm(e: any) {
  50. const { index } = e.detail;
  51. /// 赋值
  52. this.setData({
  53. showBank: false,
  54. bankInfo: this.data.bankInfos[index],
  55. bankName: this.data.bankInfos[index].bankname
  56. })
  57. },
  58. /**
  59. * showBankInfos
  60. */
  61. showBankInfos() {
  62. this.setData({ showBank: true })
  63. },
  64. /**
  65. * 查询托管银行信息
  66. */
  67. queryCusBankInfo() {
  68. /// showLoading
  69. showLoading(()=>{
  70. /// 发送请求
  71. queryCusBankSignBank({
  72. success: (res) => {
  73. /// 请求失败
  74. if (res.code != 200) {
  75. hideLoading(()=>{}, '托管银行请求失败,原因:'+res.msg, 'error')
  76. return
  77. }
  78. hideLoading(()=>{
  79. /// 数据赋值
  80. this.setData({
  81. cusBankInfo: res.data[0],
  82. /// 银行信息
  83. bankInfos: res.data[0].Banklst,
  84. /// 银行名称信息
  85. bankNames: res.data[0].Banklst.map(obj => { return obj.bankname })
  86. })
  87. })
  88. },
  89. fail: (emsg) => {
  90. hideLoading(()=>{}, '托管银行请求失败,原因:'+emsg, 'error')
  91. }
  92. })
  93. })
  94. },
  95. /**
  96. * 查询用户已签约信息
  97. */
  98. queryBankAccountSign() {
  99. /// showLoading
  100. showLoading(()=>{
  101. /// 发送请求
  102. queryBankAccountSign({
  103. data: {
  104. userid: userid()
  105. },
  106. success: (res) => {
  107. /// 请求失败
  108. if (res.code != 200) {
  109. hideLoading(()=>{}, '用户签约信息请求失败,原因:'+res.msg, 'error')
  110. return
  111. }
  112. /// hideLoading
  113. hideLoading(()=>{
  114. /// 数据赋值
  115. this.setData({
  116. bankAccountSign: res.data[0],
  117. bankName: res.data[0].bankname,
  118. bankNo: res.data[0].cardno,
  119. accountName: res.data[0].bankaccountname,
  120. branchBankName: res.data[0].branchbankname,
  121. bankInfo: this.data.bankInfos.filter(obj => {
  122. return obj.bankid === res.data[0].bankid
  123. })[0],
  124. })
  125. })
  126. },
  127. fail: (emsg) => {
  128. hideLoading(()=>{}, '用户签约信息请求失败,原因:'+emsg, 'error')
  129. }
  130. })
  131. })
  132. },
  133. /**
  134. * 按钮点击响应事件
  135. */
  136. onButtonPressed(e: any) {
  137. switch (e.currentTarget.id) {
  138. case 'submit': /// 签约提交
  139. this.doBankAccountSign()
  140. break;
  141. case 'cancel': /// 解约请求
  142. this.doCancelBankAccountSign()
  143. break
  144. default:
  145. break;
  146. }
  147. },
  148. /**
  149. * 签约请求
  150. */
  151. doBankAccountSign() {
  152. /// 合规性校验
  153. if (!this.check()) { return }
  154. /// loading
  155. showLoading(()=>{
  156. /// 用户信息
  157. const userinfo = loginQuery().userInfo
  158. /// 银行卡号
  159. const bankid = this.data.bankAccountSign ? this.data.bankAccountSign.bankid : this.data.bankInfo.bankid
  160. /// 参数信息
  161. const param = {
  162. /// 扩展信息(JSON串,参考配置要求进行填充)
  163. extend_info: JSON.stringify({ "sex" : 1 }),
  164. /// 交易所业务日期
  165. TradeDate: this.data.cusBankInfo.tradedate,
  166. /// 账户类型[1-对私;2-对公]
  167. AccountType: 1,
  168. /// 币种
  169. Currency: this.data.cusBankInfo.currency,
  170. /// 是否强制[0-否;1-是]强制,只更新中心签约信息,不发送银行。用于银行信息不一致的情况
  171. IsForce: 0,
  172. /// 授权代理人证件类型
  173. AgentCertType: 0,
  174. /// 变更类型[1-增加;2-修改;4-绑卡;
  175. OperateType: this.data.bankAccountSign ? 2 : 1,
  176. /// 银行卡类型
  177. BankCardType: 0,
  178. /// 银行账户类型
  179. BankAccountType: 1,
  180. /// 客户名称
  181. AccountName: this.data.accountName,
  182. /// 银行账户名称
  183. BankAccountName: this.data.accountName,
  184. /// 银行账户
  185. BankAccountNo: this.data.bankNo,
  186. /// 开户支行名称
  187. OpenBankName: this.data.branchBankName,
  188. /// 银行卡行号
  189. OpenBankAccId: bankid,
  190. /// 托管银行编号
  191. CusBankID: this.data.cusBankInfo.cusbankid,
  192. /// 开户行名称
  193. ExBankName: this.data.bankName,
  194. /// 账户
  195. AccountCode: accountid().toString(),
  196. /// 外部操作流水号
  197. ExtOperatorID: timetample(),
  198. /// 证件号码
  199. CertID: userinfo.cardnum,
  200. /// 证件类型
  201. CertType: userinfo.cardtypeid.toString(),
  202. /// 头部
  203. Header: protoHeader(FunCode.T2bBankSignReq)
  204. }
  205. /// 发送请求
  206. sendMsgToMQ({
  207. data: {
  208. funCodeReq: FunCode.T2bBankSignReq,
  209. funCodeRsp: FunCode.T2bBankSignReq,
  210. isEncrypted: isEncrypted(),
  211. data: JSON.stringify(param)
  212. },
  213. success: (res) => {
  214. /// 请求失败
  215. if (res.code != 0) {
  216. hideLoading(()=>{}, '操作请求失败,原因:'+res.msg, 'error')
  217. return
  218. }
  219. /// 请求成功
  220. hideLoading(()=>{
  221. /// 返回上层视图
  222. wx.navigateBack()
  223. }, '签约请求成功', 'success')
  224. },
  225. fail: (emsg) => {
  226. hideLoading(()=>{}, '操作请求失败,原因:'+emsg, 'error')
  227. }
  228. })
  229. }, '操作请求中.....')
  230. },
  231. /**
  232. * 解约请求
  233. */
  234. doCancelBankAccountSign() {
  235. /// loading
  236. showLoading(()=>{
  237. /// 参数信息
  238. const param = {
  239. /// 头部
  240. Header: protoHeader(FunCode.T2bBankCancelSignReq),
  241. /// 外部操作流水号
  242. ExtOperatorID: timetample(),
  243. /// 账户
  244. AccountCode: this.data.bankAccountSign.accountcode,
  245. /// 托管银行编号
  246. CusBankID: this.data.bankAccountSign.cusbankid,
  247. /// 币种
  248. Currency: this.data.bankAccountSign.currency,
  249. /// 交易所业务日期
  250. TradeDate: this.data.cusBankInfo.tradedate,
  251. /// 是否强制
  252. isForce: 0,
  253. /// 银行子账号
  254. BankChildAcc: this.data.bankAccountSign.bankaccountno,
  255. /// 银行子账号名
  256. BankChildAccName: this.data.bankAccountSign.bankaccountname
  257. }
  258. /// 发送请求
  259. sendMsgToMQ({
  260. data: {
  261. isEncrypted: isEncrypted(),
  262. funCodeReq: FunCode.T2bBankCancelSignReq,
  263. funCodeRsp: FunCode.T2bBankCancelSignRsp,
  264. data: JSON.stringify(param)
  265. },
  266. success: (res) => {
  267. /// 请求失败
  268. if (res.code != 0) {
  269. hideLoading(()=>{}, '解约请求失败,原因:'+res.msg, 'error')
  270. return
  271. }
  272. /// 请求成功
  273. hideLoading(()=>{
  274. /// 返回上层视图
  275. wx.navigateBack()
  276. }, '解约请求成功', 'success')
  277. },
  278. fail: (emsg) => {
  279. hideLoading(()=>{}, '解约请求失败,原因:'+emsg, 'error')
  280. }
  281. })
  282. }, '解约请求中.....')
  283. },
  284. /**
  285. * 合规性校验
  286. */
  287. check(): boolean {
  288. /// 请选择开户行
  289. if (this.data.bankName.length === 0) {
  290. Toast({message: '请选择开户行!'})
  291. return false
  292. }
  293. /// 请输入银行卡号!
  294. if (this.data.bankNo.length === 0) {
  295. Toast({message: '请输入银行卡号!'})
  296. return false
  297. }
  298. /// 请输入姓名!
  299. if (this.data.accountName.length === 0) {
  300. Toast({message: '请输入姓名!'})
  301. return false
  302. }
  303. /// 请输入支行名称!
  304. if (this.data.branchBankName.length === 0) {
  305. Toast({message: '请输入支行名称!'})
  306. return false
  307. }
  308. return true
  309. },
  310. /**
  311. * 生命周期函数--监听页面加载
  312. */
  313. onLoad() {
  314. /// 查询托管银行信息
  315. this.queryCusBankInfo()
  316. /// 查询账户已签约信息
  317. this.queryBankAccountSign()
  318. },
  319. /**
  320. * 生命周期函数--监听页面初次渲染完成
  321. */
  322. onReady() {
  323. },
  324. /**
  325. * 生命周期函数--监听页面显示
  326. */
  327. onShow() {
  328. },
  329. /**
  330. * 生命周期函数--监听页面隐藏
  331. */
  332. onHide() {
  333. },
  334. /**
  335. * 生命周期函数--监听页面卸载
  336. */
  337. onUnload() {
  338. },
  339. /**
  340. * 页面相关事件处理函数--监听用户下拉动作
  341. */
  342. onPullDownRefresh() {
  343. },
  344. /**
  345. * 页面上拉触底事件的处理函数
  346. */
  347. onReachBottom() {
  348. },
  349. /**
  350. * 用户点击右上角分享
  351. */
  352. onShareAppMessage() {
  353. }
  354. })