index.ts 11 KB

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