feat(更新接口): bd和bdleader的操作金额页,针对兑换和转账功能,设置了pinia持久化身份,更新了接口。并给搜索页设置返回状态
This commit is contained in:
parent
3c48826050
commit
1474182404
@ -21,6 +21,7 @@
|
||||
"@vueuse/core": "^13.9.0",
|
||||
"airwallex-payment-elements": "^1.131.0",
|
||||
"pinia": "^3.0.3",
|
||||
"pinia-plugin-persistedstate": "^4.7.1",
|
||||
"vant": "^4.9.21",
|
||||
"vue": "^3.5.18",
|
||||
"vue-i18n": "^11.1.12",
|
||||
|
||||
@ -368,3 +368,25 @@ export const apiGetBankBalance = async (salaryType) => {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// 转账到金币
|
||||
export const apiTransfer = async (data) => {
|
||||
try {
|
||||
const response = await post('/wallet/salary-account/transferGold', data)
|
||||
return response
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch transfer Gold:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// 兑换金币
|
||||
export const apiExchange = async (data) => {
|
||||
try {
|
||||
const response = await post('/wallet/salary-account/exchange/gold', data)
|
||||
return response
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch exchange Gold:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
@ -153,7 +153,7 @@
|
||||
"please_select_coin_amount": "Please select a coin amount first",
|
||||
"insufficient_balance": "Insufficient balance. Your current balance is ${balance}, but you need $${price} to exchange.",
|
||||
"confirm_exchange_coins": "Do you want to exchange coins for $${price}?",
|
||||
"exchange_success": "Successfully exchanged coins for $${price}",
|
||||
"exchange_success": "Successfully exchanged coins for ${price}",
|
||||
"exchange_failed": "Exchange failed, please try again later.",
|
||||
"exchange_error_occurred": "An error occurred during the exchange process. Please try again later.",
|
||||
|
||||
@ -161,8 +161,8 @@
|
||||
"please_select_payee": "Please select a payee first",
|
||||
"enter_payment_password": "Please enter your payment password:",
|
||||
"payment_password_required": "Payment password is required",
|
||||
"transfer_success": "Successfully transferred $${price} to ${name}",
|
||||
"transfer_failed": "Failed to transfer $${price}",
|
||||
"transfer_success": "Successfully transferred ${price} to {name}",
|
||||
"transfer_failed": "Failed to transfer ${price}",
|
||||
"payment_password_error": "Payment password error",
|
||||
"transfer_error": "Transfer failed, please try again later",
|
||||
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
"please_select_payee": "请选择收款人",
|
||||
"enter_payment_password": "请输入支付密码:",
|
||||
"payment_password_required": "需要支付密码",
|
||||
"transfer_success": "成功转账${price}美元给${name}",
|
||||
"transfer_success": "成功转账${price}美元给{name}",
|
||||
"transfer_failed": "转账${price}美元失败",
|
||||
"payment_password_error": "支付密码错误",
|
||||
"transfer_error": "转账失败,请稍后重试",
|
||||
|
||||
@ -3,6 +3,7 @@ import { logEnvInfo } from './utils/env.js'
|
||||
import { versionChecker } from './utils/versionChecker.js'
|
||||
import { smartImage } from './directives/smartImage.js'
|
||||
import { createPinia } from 'pinia'
|
||||
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
|
||||
import { createApp } from 'vue'
|
||||
import i18n, { initI18n } from './locales/i18n'
|
||||
|
||||
@ -19,6 +20,8 @@ versionChecker.checkVersion()
|
||||
// 初始化权限系统
|
||||
console.debug('🔐 Permission system initialized')
|
||||
const pinia = createPinia()
|
||||
pinia.use(piniaPluginPersistedstate) //将插件添加到 pinia 实例上
|
||||
|
||||
const app = createApp(App)
|
||||
|
||||
// 注册智能图片指令
|
||||
|
||||
15
src/stores/identity.js
Normal file
15
src/stores/identity.js
Normal file
@ -0,0 +1,15 @@
|
||||
import { defineStore } from 'pinia'
|
||||
|
||||
export const useIdentityStore = defineStore('identity', {
|
||||
state: () => ({
|
||||
identity: '',
|
||||
}),
|
||||
|
||||
actions: {
|
||||
setIdentity(identity) {
|
||||
this.identity = identity
|
||||
},
|
||||
},
|
||||
|
||||
persist: true,
|
||||
})
|
||||
@ -738,29 +738,33 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { ref, reactive, onMounted, onUnmounted, computed } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import GeneralHeader from '@/components/GeneralHeader.vue'
|
||||
import { getSelectedPayee, clearSelectedPayee } from '@/utils/payeeStore.js'
|
||||
import { showError, showSuccess } from '@/utils/toast.js'
|
||||
import { getUserId } from '@/utils/userStore.js'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { setDocumentDirection } from '@/locales/i18n'
|
||||
import { useIdentityStore } from '@/stores/identity.js'
|
||||
|
||||
import {
|
||||
getBankBalance,
|
||||
userBankTransfer,
|
||||
userSalaryCheckExchange,
|
||||
userBankExchangeGold,
|
||||
apiExchange, //兑换
|
||||
apiTransfer, //转账
|
||||
getBankCardList, //获取正在使用的银行卡
|
||||
getWithdrawInfoList, //获取申请提现信息
|
||||
withdrawApply, //提现
|
||||
} from '@/api/wallet.js'
|
||||
import { getSelectedPayee, clearSelectedPayee } from '@/utils/payeeStore.js'
|
||||
import { showError, showSuccess } from '@/utils/toast.js'
|
||||
|
||||
import GeneralHeader from '@/components/GeneralHeader.vue'
|
||||
import maskLayer from '@/components/MaskLayer.vue'
|
||||
import { getUserId } from '@/utils/userStore.js'
|
||||
import { setDocumentDirection } from '@/locales/i18n'
|
||||
|
||||
const { t, locale } = useI18n()
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
|
||||
const identityStore = useIdentityStore()
|
||||
|
||||
// 监听语言变化并设置文档方向
|
||||
locale.value && setDocumentDirection(locale.value)
|
||||
|
||||
@ -987,14 +991,21 @@ const transfer = async () => {
|
||||
|
||||
const selectedCoinData = coinOptions.find((coin) => coin.id === selectedCoin.value)
|
||||
|
||||
console.log('当前身份:', identityStore.identity)
|
||||
|
||||
const transferData = {
|
||||
amount: selectedCoinData.price,
|
||||
acceptUserId: selectedPayee.id,
|
||||
acceptMethod: 'BANK_TRANSFER',
|
||||
salaryType:
|
||||
identityStore.identity == 'BD_LEADER'
|
||||
? 'BD_LEADER_SALARY'
|
||||
: identityStore.identity == 'BD'
|
||||
? 'BD_SALARY'
|
||||
: '',
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await userBankTransfer(transferData)
|
||||
const response = await apiTransfer(transferData)
|
||||
if (response.status) {
|
||||
showSuccess(
|
||||
t('transfer_success', { price: selectedCoinData.price, name: selectedPayee.name })
|
||||
@ -1021,12 +1032,18 @@ const handleExchange = async () => {
|
||||
(option) => option.id === selectedExchangeOption.value
|
||||
)
|
||||
|
||||
console.log('当前身份:', identityStore.identity)
|
||||
|
||||
try {
|
||||
// 调用接口进行兑换
|
||||
const response = await userBankExchangeGold({
|
||||
coinId: selectedOption.id,
|
||||
const response = await apiExchange({
|
||||
amount: selectedOption.cash,
|
||||
price: selectedOption.cash,
|
||||
salaryType:
|
||||
identityStore.identity == 'BD_LEADER'
|
||||
? 'BD_LEADER_SALARY'
|
||||
: identityStore.identity == 'BD'
|
||||
? 'BD_SALARY'
|
||||
: '',
|
||||
})
|
||||
|
||||
if (response.status === true || response.errorCode === 0) {
|
||||
|
||||
@ -448,6 +448,7 @@ import { usePageInitializationWithConfig } from '@/utils/pageConfig.js'
|
||||
import { isInApp } from '@/utils/appBridge.js'
|
||||
import { clearSelectedPayee } from '@/utils/payeeStore.js'
|
||||
import { setDocumentDirection } from '@/locales/i18n'
|
||||
import { useIdentityStore } from '@/stores/identity.js'
|
||||
|
||||
import { getBdMemberBillList, getBdHistory, getBdHistoryMore } from '@/api/bdCenter.js'
|
||||
import { apiGetBankBalance } from '@/api/wallet.js'
|
||||
@ -459,11 +460,12 @@ import historySalary from '@/components/historySalary.vue'
|
||||
const { t, locale } = useI18n()
|
||||
const router = useRouter()
|
||||
|
||||
const identityStore = useIdentityStore()
|
||||
|
||||
// 监听语言变化并设置文档方向
|
||||
locale.value && setDocumentDirection(locale.value)
|
||||
|
||||
// 当前身份
|
||||
const teamMemberCount = ref(0)
|
||||
const showHistory = ref(false) //历史弹窗
|
||||
const showMore = ref(false) //更多弹窗
|
||||
|
||||
@ -506,38 +508,24 @@ const goToInviteAgency = () => {
|
||||
router.push('/invite-agency')
|
||||
}
|
||||
|
||||
// 前往兑换页
|
||||
const exchangeGoldCoins = () => {
|
||||
router.push('/exchange-gold-coins')
|
||||
}
|
||||
|
||||
//前往转账页
|
||||
const transfer = () => {
|
||||
router.push('/transfer')
|
||||
}
|
||||
|
||||
// 查询可用余额
|
||||
const getBankBalance = async () => {
|
||||
const res = await apiGetBankBalance('BD_SALARY')
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
salaryInfo.value = res.body || {}
|
||||
}
|
||||
}
|
||||
|
||||
const { appConnected, userInfo, handleImageError, getAvatarPlaceholder } =
|
||||
usePageInitializationWithConfig('BD_CENTER', {
|
||||
needsTeamInfo: true,
|
||||
needsBankBalance: false,
|
||||
onDataLoaded: () => {},
|
||||
})
|
||||
const { appConnected, userInfo } = usePageInitializationWithConfig('BD_CENTER', {
|
||||
needsTeamInfo: true,
|
||||
needsBankBalance: false,
|
||||
onDataLoaded: () => {},
|
||||
})
|
||||
|
||||
// 查询BD成员账单列表
|
||||
const apiGetBdMemberBillList = async () => {
|
||||
const res = await getBdMemberBillList('BD')
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
// console.log('BD member bill list:', res.body)
|
||||
BDData.value = res.body || {}
|
||||
}
|
||||
}
|
||||
@ -546,8 +534,6 @@ const apiGetBdMemberBillList = async () => {
|
||||
const apiGetBdHistory = async () => {
|
||||
const res = await getBdHistory()
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
console.log('BD History:', res.body)
|
||||
BDSalary.value = res.body || {}
|
||||
}
|
||||
}
|
||||
@ -556,8 +542,6 @@ const apiGetBdHistory = async () => {
|
||||
const showReportDetail = async (billBelong) => {
|
||||
const res = await getBdHistoryMore(billBelong)
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
console.log('BD History More:', res.body)
|
||||
BDSalaryMore.value = res.body || {}
|
||||
|
||||
showHistory.value = false
|
||||
@ -567,7 +551,6 @@ const showReportDetail = async (billBelong) => {
|
||||
|
||||
// 页面初始化数据
|
||||
const initData = async () => {
|
||||
// 示例调用方式
|
||||
apiGetBdMemberBillList() //BD成员账单列表
|
||||
apiGetBdHistory() //BD历史记录
|
||||
getBankBalance() // 查询可用余额
|
||||
@ -576,6 +559,7 @@ const initData = async () => {
|
||||
onMounted(() => {
|
||||
clearSelectedPayee() //清除选中的收款人
|
||||
initData()
|
||||
identityStore.setIdentity('BD')
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@ -718,6 +718,7 @@ import { useRouter } from 'vue-router'
|
||||
import { isInApp } from '@/utils/appBridge.js'
|
||||
import { clearSelectedPayee } from '@/utils/payeeStore.js'
|
||||
import { usePageInitializationWithConfig } from '@/utils/pageConfig.js'
|
||||
import { useIdentityStore } from '@/stores/identity.js'
|
||||
|
||||
import { getBdMemberBillList, getBdHistory, getBdHistoryMore } from '@/api/bdCenter.js'
|
||||
import { getBdLeaderHistory, getBdLeaderHistoryMore } from '@/api/bdLeaderCenter'
|
||||
@ -730,6 +731,8 @@ import historySalary from '@/components/historySalary.vue'
|
||||
const { t, locale } = useI18n()
|
||||
const router = useRouter()
|
||||
|
||||
const identityStore = useIdentityStore()
|
||||
|
||||
// 监听语言变化并设置文档方向
|
||||
locale.value && setDocumentDirection(locale.value)
|
||||
|
||||
@ -830,8 +833,6 @@ const goToInviteBD = () => {
|
||||
const apiGetBdMemberBillList = async () => {
|
||||
const res = await getBdMemberBillList('BD')
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
// console.log('BD member bill list:', res.body)
|
||||
BDData.value = res.body || {}
|
||||
}
|
||||
}
|
||||
@ -840,8 +841,6 @@ const apiGetBdMemberBillList = async () => {
|
||||
const apiGetBdLeaderMemberBillList = async () => {
|
||||
const res = await getBdMemberBillList('BDLEADER')
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
// console.log('BD member bill list:', res.body)
|
||||
BDLeaderData.value = res.body || {}
|
||||
}
|
||||
}
|
||||
@ -850,8 +849,6 @@ const apiGetBdLeaderMemberBillList = async () => {
|
||||
const apiGetBdHistory = async () => {
|
||||
const res = await getBdHistory()
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
console.log('BD History:', res.body)
|
||||
BDSalary.value = res.body || {}
|
||||
}
|
||||
}
|
||||
@ -860,8 +857,6 @@ const apiGetBdHistory = async () => {
|
||||
const apiGetBdLeaderHistory = async () => {
|
||||
const res = await getBdLeaderHistory()
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
console.log('BD History:', res.body)
|
||||
BDLeaderSalary.value = res.body || {}
|
||||
}
|
||||
}
|
||||
@ -870,17 +865,15 @@ const apiGetBdLeaderHistory = async () => {
|
||||
const getBankBalance = async () => {
|
||||
const res = await apiGetBankBalance('BD_LEADER_SALARY')
|
||||
if (res.status && res.body) {
|
||||
// 处理返回的数据
|
||||
salaryInfo.value = res.body || {}
|
||||
}
|
||||
}
|
||||
|
||||
const { appConnected, userInfo, handleImageError, getAvatarPlaceholder } =
|
||||
usePageInitializationWithConfig('BD_LEADER_CENTER', {
|
||||
needsTeamInfo: true,
|
||||
needsBankBalance: false,
|
||||
onDataLoaded: () => {},
|
||||
})
|
||||
const { appConnected, userInfo } = usePageInitializationWithConfig('BD_LEADER_CENTER', {
|
||||
needsTeamInfo: true,
|
||||
needsBankBalance: false,
|
||||
onDataLoaded: () => {},
|
||||
})
|
||||
|
||||
// 初始化数据
|
||||
const initData = () => {
|
||||
@ -894,6 +887,7 @@ const initData = () => {
|
||||
onMounted(() => {
|
||||
clearSelectedPayee()
|
||||
initData() // 初始化数据
|
||||
identityStore.setIdentity('BD_LEADER')
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@ -221,7 +221,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, onMounted, watch } from 'vue'
|
||||
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import GeneralHeader from '@/components/GeneralHeader.vue'
|
||||
@ -355,6 +355,22 @@ const Confirm = () => {
|
||||
// 将选中的用户信息保存到全局状态
|
||||
setSelectedPayee({ ...selectedUser.value })
|
||||
router.go(-1)
|
||||
|
||||
// 检查是否来自 availableIncome 页面
|
||||
if (route.query) {
|
||||
console.log('route.query:', route.query)
|
||||
|
||||
// 使用 nextTick 确保上一步完成
|
||||
nextTick(() => {
|
||||
// 然后使用 replace 替换为带参数的版本
|
||||
router.replace({
|
||||
path: route.query.from,
|
||||
query: {
|
||||
activeAction: route.query.activeAction,
|
||||
},
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
watch(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user