index.ts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. import { reactive, shallowRef, computed } from 'vue'
  2. import { useDataTable } from '@/hooks/datatable'
  3. import { useLoginStore, useUserStore } from '@/stores'
  4. import { queryHisAmountLog, queryAmountLog, t2bBankWithdraw, queryBankAccountSign, t2bBankDeposit, queryAccountInOutApply, queryCusBankSignBank, t2bBankSign, t2bBankCancelSign, accountFundInfoReq } from '@/services/api/bank'
  5. import { decryptAES } from '@/utils/websocket/crypto'
  6. import moment from "moment";
  7. // 历史资金流水列表
  8. export function useAmountStatementList() {
  9. const { getFirstAccountId } = useLoginStore()
  10. const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.AmountLogRsp>()
  11. const loading = shallowRef(false)
  12. const getAmountStatementList = async () => {
  13. loading.value = true
  14. await queryAmountLog({
  15. data: {
  16. page: pageIndex.value,
  17. pagesize: pageSize.value,
  18. pageflag: 1,
  19. accountID: getFirstAccountId().toString(),
  20. },
  21. success: (res) => {
  22. total.value = res.total
  23. dataList.value = res.data
  24. },
  25. complete: () => {
  26. loading.value = false
  27. }
  28. })
  29. return dataList.value
  30. }
  31. return {
  32. loading,
  33. dataList,
  34. total,
  35. pageIndex,
  36. pageSize,
  37. pageCount,
  38. getAmountStatementList,
  39. }
  40. }
  41. // 历史出入金流水列表
  42. export function useHisAmountStatementList() {
  43. const { getFirstAccountId } = useLoginStore()
  44. const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.HisAmountLogRsp>()
  45. const loading = shallowRef(false)
  46. const getHisAmountStatementList = async () => {
  47. loading.value = true
  48. await queryHisAmountLog({
  49. data: {
  50. page: pageIndex.value,
  51. pagesize: pageSize.value,
  52. pageflag: 1,
  53. accountID: getFirstAccountId().toString(),
  54. },
  55. success: (res) => {
  56. total.value = res.total
  57. dataList.value = res.data
  58. },
  59. complete: () => {
  60. loading.value = false
  61. }
  62. })
  63. return dataList.value
  64. }
  65. return {
  66. loading,
  67. dataList,
  68. total,
  69. pageIndex,
  70. pageSize,
  71. pageCount,
  72. getHisAmountStatementList,
  73. }
  74. }
  75. // 获取出入金流水列表
  76. export function useAccouuntInOutApplyListList() {
  77. const { getUserId } = useLoginStore()
  78. const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.AccountOutInApplyRsp>()
  79. const loading = shallowRef(false)
  80. const getAccouuntInOutApplyList = () => {
  81. loading.value = true
  82. return queryAccountInOutApply({
  83. data: {
  84. userid: getUserId()
  85. },
  86. success: (res) => {
  87. total.value = res.total
  88. dataList.value = res.data
  89. },
  90. complete: () => {
  91. loading.value = false
  92. }
  93. })
  94. }
  95. return {
  96. loading,
  97. dataList,
  98. total,
  99. pageIndex,
  100. pageSize,
  101. pageCount,
  102. getAccouuntInOutApplyList
  103. }
  104. }
  105. // 查询可签约的托管银行列表
  106. export function getCusBankSignBankList() {
  107. const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.CusBankSignBankRsp>()
  108. const loading = shallowRef(false)
  109. const getCusBankSignBankList = () => {
  110. loading.value = true
  111. return queryCusBankSignBank({
  112. success: (res) => {
  113. total.value = res.total
  114. dataList.value = res.data
  115. },
  116. complete: () => {
  117. loading.value = false
  118. }
  119. })
  120. }
  121. return {
  122. loading,
  123. dataList,
  124. total,
  125. pageIndex,
  126. pageSize,
  127. pageCount,
  128. getCusBankSignBankList
  129. }
  130. }
  131. // 查询当前已经签约信息列表
  132. export function useBankAccountSign() {
  133. const { getUserId } = useLoginStore()
  134. const { dataList } = useDataTable<Model.BankAccountSignRsp>()
  135. const loading = shallowRef(false)
  136. const getBankAccountList = () => {
  137. loading.value = true
  138. return queryBankAccountSign({
  139. data: {
  140. userid: getUserId()
  141. },
  142. success: (res) => {
  143. dataList.value = res.data
  144. },
  145. complete: () => {
  146. loading.value = false
  147. }
  148. })
  149. }
  150. const bankInfo = computed(() => {
  151. return dataList.value[0]
  152. })
  153. return {
  154. loading,
  155. dataList,
  156. bankInfo,
  157. getBankAccountList
  158. }
  159. }
  160. // 提现请求
  161. export function useDoWithdraw() {
  162. /// 获取UserId
  163. const { getUserId } = useLoginStore()
  164. const loading = shallowRef(false)
  165. /// 获取当前是否已签约
  166. const bankAccountSign = shallowRef<Model.BankAccountSignRsp[]>([])
  167. const sign = computed<Partial<Model.BankAccountSignRsp>>(() => {
  168. if (bankAccountSign.value.length) {
  169. return bankAccountSign.value[0]
  170. }
  171. return {}
  172. })
  173. /// 查询签约信息
  174. const request = queryBankAccountSign({
  175. data: {
  176. userid: getUserId()
  177. },
  178. success: (res) => {
  179. if (res.data.length) {
  180. bankAccountSign.value = res.data
  181. const data = res.data[0]
  182. formData.Currency = data.currency
  183. formData.CusBankID = data.cusbankid
  184. formData.BankAccoutName = data.bankaccountname
  185. formData.OpenCardBankId = data.bankid
  186. formData.AccountCode = data.accountcode
  187. formData.BranchBankName = data.branchbankname
  188. formData.BankAccoutName = data.bankaccountname2
  189. formData.BankAccoutNum = data.bankaccountno2
  190. }
  191. }
  192. })
  193. const formData = reactive<Partial<Proto.t2bBankWithdrawReq>>({
  194. AccountType: 0,
  195. AppDateTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'),
  196. Extend_Info: JSON.stringify({ "sex": 1 })
  197. })
  198. const onSubmit = async () => {
  199. await request
  200. loading.value = true
  201. return t2bBankWithdraw({
  202. data: {
  203. ...formData,
  204. ExtOperatorID: new Date().getTime()
  205. },
  206. complete: () => {
  207. loading.value = false
  208. }
  209. })
  210. }
  211. return {
  212. loading,
  213. onSubmit,
  214. formData,
  215. sign
  216. }
  217. }
  218. // 充值请求
  219. export function useDoDeposit() {
  220. /// 获取UserId
  221. const { getUserId } = useLoginStore()
  222. const loading = shallowRef(false)
  223. /// 获取当前是否已签约
  224. const sign = shallowRef<Model.BankAccountSignRsp[]>([])
  225. /// 常量信息
  226. const extendInfo = { certificate_photo_url: '' }
  227. /// formData
  228. const formData = reactive<Partial<Proto.t2bBankDepositReq>>({})
  229. const request = queryBankAccountSign({
  230. data: {
  231. userid: getUserId()
  232. },
  233. success: (res) => {
  234. if (res.data.length) {
  235. sign.value = res.data
  236. const data = res.data[0]
  237. formData.Currency = data.currency
  238. formData.CusBankID = data.cusbankid
  239. formData.BankAccoutName = data.bankaccountname2
  240. formData.OpenCardBankId = data.bankid
  241. formData.AccountCode = data.accountcode
  242. formData.BankAccoutNum = data.bankaccountno2
  243. }
  244. }
  245. })
  246. const onSubmit = async () => {
  247. await request
  248. loading.value = true
  249. return t2bBankDeposit({
  250. data: {
  251. ...formData,
  252. ExtOperatorID: new Date().getTime(),
  253. Extend_Info: JSON.stringify(extendInfo)
  254. },
  255. complete: () => {
  256. loading.value = false
  257. }
  258. })
  259. }
  260. return {
  261. loading,
  262. onSubmit,
  263. extendInfo,
  264. formData,
  265. sign
  266. }
  267. }
  268. /// 银行签约请求
  269. export function useDoBankSign() {
  270. const loading = shallowRef(false)
  271. const { getUserInfo } = useUserStore()
  272. const { getFirstAccountId } = useLoginStore()
  273. /// 托管银行信息
  274. const cusSignBank = shallowRef<Model.CusBankSignBankRsp>()
  275. /// 查询签约银行信息
  276. const request = queryCusBankSignBank({
  277. success: (res) => {
  278. if (res.data.length) {
  279. const data = res.data[0]
  280. cusSignBank.value = data
  281. formData.Currency = data.currency
  282. formData.CusBankID = data.cusbankid
  283. formData.TradeDate = data.tradedate
  284. }
  285. }
  286. })
  287. /// 银行列表
  288. const banklist = computed(() => {
  289. return (cusSignBank.value?.Banklst ?? []).filter(e => e.status == 0)
  290. })
  291. const { getBankAccountList, bankInfo } = useBankAccountSign()
  292. /// 判断是否有签约信息 有就做修改
  293. getBankAccountList().then(() => {
  294. if (bankInfo.value) {
  295. ({
  296. currency: formData.Currency,
  297. cusbankid: formData.CusBankID,
  298. accountcode: formData.AccountCode,
  299. accountname: formData.BankAccountName,
  300. branchbankname: formData.OpenBankName,
  301. bankaccountno: formData.BankAccountNo,
  302. bankid: formData.OpenBankAccId,
  303. } = bankInfo.value)
  304. }
  305. })
  306. /// 数据
  307. const formData = reactive<Partial<Proto.t2bBankSignReq>>({
  308. AccountType: 1,
  309. IsForce: 0,
  310. AgentCertType: 0,
  311. BankCardType: 0,
  312. BankAccountType: 1,
  313. Extend_Info: JSON.stringify({ "sex": 1 }),
  314. AccountCode: getFirstAccountId().toString(),
  315. CertID: decryptAES(getUserInfo()?.cardnum ?? ''),
  316. CertType: getUserInfo()?.cardtypeid.toString(),
  317. BankAccountName: getUserInfo()?.customername,
  318. })
  319. console.log(formData)
  320. const onSubmit = async () => {
  321. await request
  322. loading.value = true
  323. return t2bBankSign({
  324. data: {
  325. ...formData,
  326. OperateType: bankInfo.value ? 2 : 1,
  327. ExtOperatorID: new Date().getTime(),
  328. AccountName: formData.BankAccountName,
  329. ExBankName: banklist.value.find(obj => obj.bankid === formData.OpenBankAccId)?.bankname
  330. },
  331. complete: () => {
  332. loading.value = false
  333. }
  334. })
  335. }
  336. return {
  337. loading,
  338. formData,
  339. banklist,
  340. onSubmit,
  341. bankInfo
  342. }
  343. }
  344. /// 银行解约请求
  345. export function useDoCancelBankSign() {
  346. const { getBankAccountList, bankInfo } = useBankAccountSign()
  347. /// 获取UserId
  348. const loading = shallowRef(false)
  349. /// 表单信息
  350. const formData = reactive<Partial<Proto.t2bBankCancelSignReq>>({
  351. IsForce: 0,
  352. })
  353. /// 获取当前是否已签约
  354. const sign = shallowRef<Model.BankAccountSignRsp[]>([])
  355. const formRefresh = () => {
  356. getBankAccountList().then(() => {
  357. ({
  358. currency: formData.Currency,
  359. cusbankid: formData.CusBankID,
  360. accountcode: formData.AccountCode,
  361. } = bankInfo.value ?? {})
  362. })
  363. }
  364. const cancelSubmit = async () => {
  365. // await request
  366. loading.value = true
  367. /// 发起请求
  368. return t2bBankCancelSign({
  369. data: {
  370. ...formData,
  371. ExtOperatorID: new Date().getTime(),
  372. },
  373. complete: () => {
  374. loading.value = false
  375. }
  376. })
  377. }
  378. return {
  379. loading,
  380. cancelSubmit,
  381. formData,
  382. sign,
  383. bankInfo,
  384. formRefresh
  385. }
  386. }
  387. /// 账户资金信息请求
  388. export function useAccountFundInfo() {
  389. /// 获取UserId
  390. const { getFirstAccountId } = useLoginStore()
  391. /// 数据
  392. const fund = shallowRef<Partial<Proto.AccountFundInfoRsp>>({})
  393. /// 账户资金信息
  394. accountFundInfoReq({
  395. data: {
  396. QueryBitMask: 2,
  397. OrderId: new Date().getTime(),
  398. AccountId: getFirstAccountId(),
  399. },
  400. success: (res) => {
  401. fund.value = res
  402. },
  403. })
  404. return {
  405. fund
  406. }
  407. }