index.ts 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. import {ref, reactive, shallowRef, computed } from 'vue'
  2. import { useAccountStore, useUserStore, useLoginStore } from '@/stores'
  3. import { t2bBankWithdraw, queryBankAccountSign, t2bBankDeposit, queryCusBankSignBank, t2bBankSign, t2bBankCancelSign, accountFundInfoReq, queryBankCusBankExtendConfigs } from '@/services/api/bank'
  4. import { SignStatus } from '@/constants/bank'
  5. import { decryptAES } from '@/services/websocket/package/crypto'
  6. import moment from "moment"
  7. const accountStore = useAccountStore()
  8. const loginStore = useLoginStore()
  9. // 提现请求
  10. export function useDoWithdraw() {
  11. const loading = shallowRef(false)
  12. /// 获取当前是否已签约
  13. const bankAccountSign = shallowRef<Model.BankAccountSignRsp[]>([])
  14. const sign = computed<Partial<Model.BankAccountSignRsp>>(() => {
  15. if (bankAccountSign.value.length) {
  16. return bankAccountSign.value[0]
  17. }
  18. return {}
  19. })
  20. const formData = reactive<Partial<Proto.t2bBankWithdrawReq>>({
  21. AccountType: 0,
  22. AppDateTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
  23. })
  24. /// 查询签约信息
  25. const request = queryBankAccountSign().then((res) => {
  26. if (res.data.length) {
  27. bankAccountSign.value = res.data
  28. const data = res.data[0]
  29. formData.Currency = data.currency
  30. formData.CusBankID = data.cusbankid
  31. formData.BankAccoutName = data.bankaccountname
  32. formData.OpenCardBankId = data.bankid
  33. formData.AccountCode = data.accountcode
  34. formData.BranchBankName = data.branchbankname
  35. formData.BankAccoutName = data.bankaccountname2
  36. formData.BankAccoutNum = data.bankaccountno2
  37. }
  38. })
  39. const onSubmit = async () => {
  40. await request
  41. loading.value = true
  42. return t2bBankWithdraw({
  43. data: {
  44. ...formData,
  45. ExtOperatorID: new Date().getTime()
  46. }
  47. }).finally(() => {
  48. loading.value = false
  49. })
  50. }
  51. return {
  52. loading,
  53. onSubmit,
  54. formData,
  55. sign
  56. }
  57. }
  58. // 充值请求
  59. export function useDoDeposit(userid?: number) {
  60. const loading = shallowRef(false)
  61. /// 获取当前是否已签约
  62. const sign = shallowRef<Model.BankAccountSignRsp[]>([])
  63. /// formData
  64. const formData = reactive<Partial<Proto.t2bBankDepositReq>>({})
  65. const request = queryBankAccountSign({
  66. data: {
  67. userid: userid ?? loginStore.userId
  68. }
  69. }).then((res) => {
  70. if (res.data.length) {
  71. sign.value = res.data
  72. const data = res.data[0]
  73. formData.Currency = data.currency
  74. formData.CusBankID = data.cusbankid
  75. formData.BankAccoutName = data.bankaccountname2
  76. formData.OpenCardBankId = data.bankid
  77. formData.AccountCode = data.accountcode
  78. formData.BankAccoutNum = data.bankaccountno2
  79. }
  80. })
  81. const onSubmit = async () => {
  82. await request
  83. loading.value = true
  84. return t2bBankDeposit({
  85. data: {
  86. ...formData,
  87. ExtOperatorID: new Date().getTime(),
  88. }
  89. }).finally(() => {
  90. loading.value = false
  91. })
  92. }
  93. return {
  94. loading,
  95. onSubmit,
  96. formData,
  97. sign
  98. }
  99. }
  100. /// 银行签约请求
  101. export function useDoBankSign() {
  102. const { userInfo } = useUserStore()
  103. const loading = shallowRef(false)
  104. const bankInfo = shallowRef<Model.BankAccountSignRsp>()
  105. /// 托管银行信息
  106. const cusSignBank = shallowRef<Model.CusBankSignBankRsp>()
  107. /// 查询签约银行信息
  108. const request = queryCusBankSignBank().then((res) => {
  109. if (res.data.length) {
  110. const data = res.data[0]
  111. cusSignBank.value = data
  112. formData.Currency = data.currency
  113. formData.CusBankID = data.cusbankid
  114. formData.TradeDate = data.tradedate
  115. }
  116. })
  117. /// 银行列表
  118. const banklist = computed(() => {
  119. return (cusSignBank.value?.Banklst ?? []).filter(e => e.status == 0)
  120. })
  121. /// 判断是否有签约信息 有就做修改
  122. queryBankAccountSign().then((res) => {
  123. bankInfo.value = res.data.filter(obj => {
  124. return ![SignStatus.Rescinded].includes(obj.signstatus)
  125. })[0]
  126. if (bankInfo.value) {
  127. ({
  128. currency: formData.Currency,
  129. cusbankid: formData.CusBankID,
  130. accountcode: formData.AccountCode,
  131. accountname: formData.BankAccountName,
  132. branchbankname: formData.OpenBankName,
  133. bankaccountno: formData.BankAccountNo,
  134. bankid: formData.OpenBankAccId,
  135. } = bankInfo.value)
  136. }
  137. })
  138. /// 数据
  139. const formData = reactive<Partial<Proto.t2bBankSignReq>>({
  140. AccountType: 1,
  141. IsForce: 0,
  142. AgentCertType: 0,
  143. BankCardType: 0,
  144. BankAccountType: 1,
  145. AccountCode: accountStore.currentAccountId.toString(),
  146. CertID: decryptAES(userInfo?.cardnum ?? ''),
  147. CertType: userInfo?.cardtypeid.toString(),
  148. BankAccountName: userInfo?.customername,
  149. })
  150. const onSubmit = async () => {
  151. await request
  152. loading.value = true
  153. // 默认未签约状态
  154. const { signstatus = SignStatus.Unsigned } = bankInfo.value ?? {}
  155. return t2bBankSign({
  156. data: {
  157. ...formData,
  158. OperateType: signstatus === SignStatus.Unsigned ? 1 : 2,
  159. ExtOperatorID: new Date().getTime(),
  160. AccountName: formData.BankAccountName,
  161. ExBankName: banklist.value.find(obj => obj.bankid === formData.OpenBankAccId)?.bankname
  162. }
  163. }).finally(() => {
  164. loading.value = false
  165. })
  166. }
  167. return {
  168. loading,
  169. formData,
  170. banklist,
  171. onSubmit,
  172. bankInfo
  173. }
  174. }
  175. /// 银行解约请求
  176. export function useDoCancelBankSign() {
  177. /// 获取UserId
  178. const loading = shallowRef(false)
  179. const bankInfo = shallowRef<Model.BankAccountSignRsp>()
  180. /// 表单信息
  181. const formData = reactive<Partial<Proto.t2bBankCancelSignReq>>({
  182. IsForce: 0,
  183. })
  184. /// 获取当前是否已签约
  185. const sign = shallowRef<Model.BankAccountSignRsp[]>([])
  186. const formRefresh = () => {
  187. queryBankAccountSign().then((res) => {
  188. bankInfo.value = res.data[0];
  189. ({
  190. currency: formData.Currency,
  191. cusbankid: formData.CusBankID,
  192. accountcode: formData.AccountCode,
  193. } = bankInfo.value ?? {})
  194. })
  195. }
  196. const cancelSubmit = async () => {
  197. loading.value = true
  198. /// 发起请求
  199. return t2bBankCancelSign({
  200. data: {
  201. ...formData,
  202. ExtOperatorID: new Date().getTime(),
  203. }
  204. }).finally(() => {
  205. loading.value = false
  206. })
  207. }
  208. return {
  209. loading,
  210. cancelSubmit,
  211. formData,
  212. sign,
  213. bankInfo,
  214. formRefresh
  215. }
  216. }
  217. /// 账户资金信息请求
  218. export function useAccountFundInfo() {
  219. /// 数据
  220. const fund = shallowRef<Partial<Proto.AccountFundInfoRsp>>({})
  221. /// 账户资金信息
  222. accountFundInfoReq({
  223. data: {
  224. QueryBitMask: 2,
  225. OrderId: new Date().getTime(),
  226. AccountId: accountStore.currentAccountId,
  227. }
  228. }).then((res) => {
  229. fund.value = res
  230. })
  231. return {
  232. fund
  233. }
  234. }
  235. /// 账户资金信息请求
  236. export function useBankAccouuntSign() {
  237. /// 数据
  238. const fund = shallowRef<Partial<Proto.AccountFundInfoRsp>>({})
  239. /// 账户资金信息
  240. accountFundInfoReq({
  241. data: {
  242. QueryBitMask: 2,
  243. OrderId: new Date().getTime(),
  244. AccountId: accountStore.currentAccountId,
  245. }
  246. }).then((res) => {
  247. fund.value = res
  248. })
  249. return {
  250. fund
  251. }
  252. }
  253. /// 查询托管银行扩展配置信息
  254. export function useDoCusBankExtendConfigs(extendbiztype?: number) {
  255. /// 托管银行信息
  256. const configs = ref<(Model.BankCusBankExtendConfigRsp &{value:string})[]>([])
  257. /// 查询签约银行信息
  258. queryCusBankSignBank().then((res) => {
  259. if (res.data.length) {
  260. const data = res.data[0]
  261. queryBankCusBankExtendConfigs({
  262. data: {
  263. cusbankid: data?.cusbankid,
  264. extendbiztype: extendbiztype
  265. },
  266. }).then((res) => {
  267. if (res.data.length != 0) {
  268. configs.value = res.data.map(obj =>({
  269. ...obj,
  270. value:''
  271. }))
  272. }
  273. })
  274. }
  275. })
  276. return { configs }
  277. }