import {ref, reactive, shallowRef, computed } from 'vue' import { useAccountStore, useUserStore, useLoginStore } from '@/stores' import { t2bBankWithdraw, queryBankAccountSign, t2bBankDeposit, queryCusBankSignBank, t2bBankSign, t2bBankCancelSign, accountFundInfoReq, queryBankCusBankExtendConfigs } from '@/services/api/bank' import { SignStatus } from '@/constants/bank' import { decryptAES } from '@/services/websocket/package/crypto' import moment from "moment" const accountStore = useAccountStore() const loginStore = useLoginStore() // 提现请求 export function useDoWithdraw() { const loading = shallowRef(false) /// 获取当前是否已签约 const bankAccountSign = shallowRef([]) const sign = computed>(() => { if (bankAccountSign.value.length) { return bankAccountSign.value[0] } return {} }) const formData = reactive>({ AccountType: 0, AppDateTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss') }) /// 查询签约信息 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 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([]) /// formData const formData = reactive>({}) const request = queryBankAccountSign({ data: { userid: userid ?? loginStore.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(), } }).finally(() => { loading.value = false }) } return { loading, onSubmit, 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.filter(obj => { return ![SignStatus.Rescinded].includes(obj.signstatus) })[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, AccountCode: accountStore.currentAccountId.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 () => { 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.currentAccountId, } }).then((res) => { fund.value = res }) return { fund } } /// 账户资金信息请求 export function useBankAccouuntSign() { /// 数据 const fund = shallowRef>({}) /// 账户资金信息 accountFundInfoReq({ data: { QueryBitMask: 2, OrderId: new Date().getTime(), AccountId: accountStore.currentAccountId, } }).then((res) => { fund.value = res }) return { fund } } /// 查询托管银行扩展配置信息 export function useDoCusBankExtendConfigs(extendbiztype?: number) { /// 托管银行信息 const configs = ref<(Model.BankCusBankExtendConfigRsp &{value:string})[]>([]) /// 查询签约银行信息 queryCusBankSignBank().then((res) => { if (res.data.length) { const data = res.data[0] queryBankCusBankExtendConfigs({ data: { cusbankid: data?.cusbankid, extendbiztype: extendbiztype }, }).then((res) => { if (res.data.length != 0) { configs.value = res.data.map(obj =>({ ...obj, value:'' })) } }) } }) return { configs } }