import { reactive, shallowRef, computed } from 'vue' import { useAccountStore, useUserStore } from '@/stores' import { t2bBankWithdraw, queryBankAccountSign, t2bBankDeposit, queryCusBankSignBank, t2bBankSign, t2bBankCancelSign, accountFundInfoReq } from '@/services/api/bank' import { SignStatus } from '@/constants/bank' import { decryptAES } from '@/services/websocket/package/crypto' import moment from "moment" const accountStore = useAccountStore() // 提现请求 export function useDoWithdraw() { const loading = shallowRef(false) /// 获取当前是否已签约 const bankAccountSign = shallowRef([]) const sign = computed>(() => { if (bankAccountSign.value.length) { return bankAccountSign.value[0] } return {} }) /// 查询签约信息 const request = queryBankAccountSign().then((res) => { if (res.data.length) { bankAccountSign.value = res.data const data = res.data[0] formData.Currency = data.currency formData.CusBankID = data.cusbankid formData.BankAccoutName = data.bankaccountname formData.OpenCardBankId = data.bankid formData.AccountCode = data.accountcode formData.BranchBankName = data.branchbankname formData.BankAccoutName = data.bankaccountname2 formData.BankAccoutNum = data.bankaccountno2 } }) const formData = reactive>({ AccountType: 0, AppDateTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'), extend_info: JSON.stringify({ "sex": 1 }) }) const onSubmit = async () => { await request loading.value = true return t2bBankWithdraw({ data: { ...formData, ExtOperatorID: new Date().getTime() } }).finally(() => { loading.value = false }) } return { loading, onSubmit, formData, sign } } // 充值请求 export function useDoDeposit(userid?: number) { const loading = shallowRef(false) /// 获取当前是否已签约 const sign = shallowRef([]) /// 常量信息 const extendInfo = { certificate_photo_url: '' } /// formData const formData = reactive>({}) const request = queryBankAccountSign({ data: { userid } }).then((res) => { if (res.data.length) { sign.value = res.data const data = res.data[0] formData.Currency = data.currency formData.CusBankID = data.cusbankid formData.BankAccoutName = data.bankaccountname2 formData.OpenCardBankId = data.bankid formData.AccountCode = data.accountcode formData.BankAccoutNum = data.bankaccountno2 } }) const onSubmit = async () => { await request loading.value = true return t2bBankDeposit({ data: { ...formData, ExtOperatorID: new Date().getTime(), extend_info: JSON.stringify(extendInfo) } }).finally(() => { loading.value = false }) } return { loading, onSubmit, extendInfo, formData, sign } } /// 银行签约请求 export function useDoBankSign() { const { userInfo } = useUserStore() const loading = shallowRef(false) const bankInfo = shallowRef() /// 托管银行信息 const cusSignBank = shallowRef() /// 查询签约银行信息 const request = queryCusBankSignBank().then((res) => { if (res.data.length) { const data = res.data[0] cusSignBank.value = data formData.Currency = data.currency formData.CusBankID = data.cusbankid formData.TradeDate = data.tradedate } }) /// 银行列表 const banklist = computed(() => { return (cusSignBank.value?.Banklst ?? []).filter(e => e.status == 0) }) /// 判断是否有签约信息 有就做修改 queryBankAccountSign().then((res) => { bankInfo.value = res.data[0] if (bankInfo.value) { ({ currency: formData.Currency, cusbankid: formData.CusBankID, accountcode: formData.AccountCode, accountname: formData.BankAccountName, branchbankname: formData.OpenBankName, bankaccountno: formData.BankAccountNo, bankid: formData.OpenBankAccId, } = bankInfo.value) } }) /// 数据 const formData = reactive>({ AccountType: 1, IsForce: 0, AgentCertType: 0, BankCardType: 0, BankAccountType: 1, extend_info: JSON.stringify({ "sex": 1 }), AccountCode: accountStore.accountId.toString(), CertID: decryptAES(userInfo?.cardnum ?? ''), CertType: userInfo?.cardtypeid.toString(), BankAccountName: userInfo?.customername, }) const onSubmit = async () => { await request loading.value = true // 默认未签约状态 const { signstatus = SignStatus.Unsigned } = bankInfo.value ?? {} return t2bBankSign({ data: { ...formData, OperateType: signstatus === SignStatus.Unsigned ? 1 : 2, ExtOperatorID: new Date().getTime(), AccountName: formData.BankAccountName, ExBankName: banklist.value.find(obj => obj.bankid === formData.OpenBankAccId)?.bankname } }).finally(() => { loading.value = false }) } return { loading, formData, banklist, onSubmit, bankInfo } } /// 银行解约请求 export function useDoCancelBankSign() { /// 获取UserId const loading = shallowRef(false) const bankInfo = shallowRef() /// 表单信息 const formData = reactive>({ IsForce: 0, }) /// 获取当前是否已签约 const sign = shallowRef([]) const formRefresh = () => { queryBankAccountSign().then((res) => { bankInfo.value = res.data[0]; ({ currency: formData.Currency, cusbankid: formData.CusBankID, accountcode: formData.AccountCode, } = bankInfo.value ?? {}) }) } const cancelSubmit = async () => { // await request loading.value = true /// 发起请求 return t2bBankCancelSign({ data: { ...formData, ExtOperatorID: new Date().getTime(), } }).finally(() => { loading.value = false }) } return { loading, cancelSubmit, formData, sign, bankInfo, formRefresh } } /// 账户资金信息请求 export function useAccountFundInfo() { /// 数据 const fund = shallowRef>({}) /// 账户资金信息 accountFundInfoReq({ data: { QueryBitMask: 2, OrderId: new Date().getTime(), AccountId: accountStore.accountId, } }).then((res) => { fund.value = res }) return { fund } }