Browse Source

feat: 重构现金管理模块,优化用户信息处理及消息提示,新增地区信息展示

zhangyong/feature-20260113094820-现金重构
zhangrenyuan 2 months ago
parent
commit
9f316c9c32
  1. 2
      src/components/locales/lang/zh-CN.js
  2. 10
      src/global.css
  3. 52
      src/views/consume/gold/addCoinConsume.vue
  4. 1
      src/views/consume/gold/coinConsumeDetail.vue
  5. 102
      src/views/moneyManage/financialAccount/cashFlow.vue
  6. 26
      src/views/recharge/gold/addCoinRecharge.vue
  7. 43
      src/views/refund/gold/addCoinRefund.vue

2
src/components/locales/lang/zh-CN.js

@ -205,7 +205,7 @@ export default {
searchSuccess: "查询成功", searchSuccess: "查询成功",
searchFailed: "查询失败", searchFailed: "查询失败",
requestFailed: "请求失败", requestFailed: "请求失败",
jwcodeError: "精网号错误",
jwcodeError: "精网号有误!请检查",
customerSuccess: "客户信息查询成功", customerSuccess: "客户信息查询成功",
customerNotExist: "客户不存在", customerNotExist: "客户不存在",
addFailedUnknown: "添加失败,未知错误", addFailedUnknown: "添加失败,未知错误",

10
src/global.css

@ -1,3 +1,13 @@
body { body {
font-family: 'Microsoft YaHei UI'; font-family: 'Microsoft YaHei UI';
} }
/* 自定义蓝色消息提示样式 */
.custom-blue-message {
/* 纯蓝色背景,白色文字 */
--el-message-bg-color: #409eff;
--el-message-border-color: #409eff;
--el-message-text-color: #ffffff;
--el-message-icon-color: #ffffff;
--el-message-close-icon-color: #ffffff;
}

52
src/views/consume/gold/addCoinConsume.vue

@ -449,25 +449,32 @@ const getUser = async function (jwcode) {
}); });
console.log("请求成功", result); console.log("请求成功", result);
const { code, data } = result
const region = data && data.market
if (!data || Object.keys(data).length === 0) {
user.value = {}
// addConsume.value.jwcode = null // Optional: clear input or keep it for correction
ElMessage.error(t('elmessage.jwcodeError'))
return
}
if (result.code === 200 && result.data) {
// //
user.value = { user.value = {
...result.data,
...data,
// 100 // 100
nowPermanentGold: result.data.nowPermanentGold,
nowFreeGold: result.data.nowFreeGold,
nowSumGold: result.data.nowSumGold,
nowTaskGold: result.data.nowTaskGold,
nowFreeJune: result.data.nowFreeJune,
nowFreeDecember: result.data.nowFreeDecember,
historySumGold: result.data.historySumGold,
historyPermanentGold: result.data.historyPermanentGold,
historyFreeGold: result.data.historyFreeGold,
historyTaskGold: result.data.historyTaskGold
nowPermanentGold: data.nowPermanentGold,
nowFreeGold: data.nowFreeGold,
nowSumGold: data.nowSumGold,
nowTaskGold: data.nowTaskGold,
nowFreeJune: data.nowFreeJune,
nowFreeDecember: data.nowFreeDecember,
historySumGold: data.historySumGold,
historyPermanentGold: data.historyPermanentGold,
historyFreeGold: data.historyFreeGold,
historyTaskGold: data.historyTaskGold
}; };
ElMessage.success(t('elmessage.searchSuccess'));
// sumGold // sumGold
if (addConsume.value.sumGold) { if (addConsume.value.sumGold) {
const parsedSumGold = parseFloat(addConsume.value.sumGold); const parsedSumGold = parseFloat(addConsume.value.sumGold);
@ -479,18 +486,19 @@ const getUser = async function (jwcode) {
} }
} }
} else if (!result.data) {
ElMessage.warning(t('elmessage.noUser'));
user.value.jwcode = null
addConsume.value.jwcode = null
// resetForm(); //
} else {
ElMessage.warning(result.msg || t('elmessage.checkQueryParams'));
if (code === 0 && region) {
ElMessage.info({
message: `该用户属于【${region}】地区`,
customClass: 'custom-blue-message'
})
return
} }
ElMessage.success(t('elmessage.searchSuccess'));
} catch (error) { } catch (error) {
console.error("请求失败", error); console.error("请求失败", error);
ElMessage.error(t('elmessage.queryFailed'));
ElMessage.error(t('elmessage.jwcodeError'));
resetForm(); // resetForm(); //
} }
}; };

1
src/views/consume/gold/coinConsumeDetail.vue

@ -665,7 +665,6 @@ const getMarket = async function () {
<el-table-column prop="jwcode" :label="$t('common_list.jwcode')" width="110px" fixed="left" /> <el-table-column prop="jwcode" :label="$t('common_list.jwcode')" width="110px" fixed="left" />
<el-table-column prop="market" :label="$t('common_list.market')" width="110px" /> <el-table-column prop="market" :label="$t('common_list.market')" width="110px" />
<el-table-column prop="orderCode" :label="$t('common_list.orderNo')" width="260px" show-overflow-tooltip /> <el-table-column prop="orderCode" :label="$t('common_list.orderNo')" width="260px" show-overflow-tooltip />
_list
<el-table-column prop="goodsName" :label="$t('common_list.goodsName')" width="160px" show-overflow-tooltip /> <el-table-column prop="goodsName" :label="$t('common_list.goodsName')" width="160px" show-overflow-tooltip />
<el-table-column prop="payPlatform" :label="$t('common_list.consumePlatform')" width="130px"> <el-table-column prop="payPlatform" :label="$t('common_list.consumePlatform')" width="130px">
<template #default="scope"> <template #default="scope">

102
src/views/moneyManage/financialAccount/cashFlow.vue

@ -1,5 +1,103 @@
<template> <template>
<div>
<h1>资金流水</h1>
<div class="cash-flow-page">
<div class="cash-flow-header">
<span class="cash-flow-title">资金流水账</span>
</div>
<div class="cash-flow-filters">
<el-form inline>
<el-form-item label="地区">
<el-select
v-model="region"
clearable
placeholder="请选择地区"
style="width: 220px"
>
<el-option
v-for="item in regionOptions"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
</el-form>
</div>
<el-table
:data="filteredData"
border
stripe
style="width: 100%"
class="cash-flow-table"
>
<el-table-column prop="date" label="日期" width="160" />
<el-table-column prop="region" label="地区" width="160" />
<el-table-column prop="type" label="类型" width="160" />
<el-table-column prop="amount" label="金额" />
<el-table-column prop="remark" label="备注" />
</el-table>
</div> </div>
</template> </template>
<script setup>
import { computed, ref } from 'vue'
import { useRoute } from 'vue-router'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const route = useRoute()
const defaultRegions = [
t('cash.markets.Singapore'),
t('cash.markets.Malaysia'),
t('cash.markets.HongKong'),
t('cash.markets.Thailand'),
t('cash.markets.VietnamHCM'),
t('cash.markets.Canada')
]
const regionOptions = ref([...defaultRegions])
const initialRegion = typeof route.query.region === 'string' ? route.query.region : ''
if (initialRegion && !regionOptions.value.includes(initialRegion)) {
regionOptions.value.unshift(initialRegion)
}
const region = ref(initialRegion)
const tableData = ref([
{
id: 1,
date: '2025-01-01 10:00:00',
region: region.value || defaultRegions[0],
type: '收款',
amount: 10000,
remark: '示例数据'
}
])
const filteredData = computed(() => tableData.value)
</script>
<style scoped>
.cash-flow-page {
padding: 16px;
background-color: #ffffff;
}
.cash-flow-header {
margin-bottom: 16px;
}
.cash-flow-title {
font-size: 18px;
font-weight: 600;
}
.cash-flow-filters {
margin-bottom: 16px;
}
.cash-flow-table {
margin-top: 8px;
}
</style>

26
src/views/recharge/gold/addCoinRecharge.vue

@ -439,16 +439,26 @@ const getUser = async function (jwcode) {
} }
}) })
const { code, data } = result
const region = data && data.market
if (result.code === 0) {
ElMessage.error(result.msg);
} else if (result.data === null) {
ElMessage.error(t('elmessage.noUser'));
} else {
user.value = result.data;
console.log("用户信息", user.value);
ElMessage.success(t('elmessage.searchSuccess'));
if (!data || Object.keys(data).length === 0) {
user.value = {}
ElMessage.error(t('elmessage.jwcodeError'))
return
}
user.value = data
if (code === 0 && region) {
ElMessage.info({
message: `该用户属于【${region}】地区`,
customClass: 'custom-blue-message'
})
return
} }
ElMessage.success(t('elmessage.searchSuccess'))
} catch (error) { } catch (error) {
console.log("请求失败", error); console.log("请求失败", error);
ElMessage.error(t('elmessage.jwcodeError')); ElMessage.error(t('elmessage.jwcodeError'));

43
src/views/refund/gold/addCoinRefund.vue

@ -233,6 +233,7 @@ const getUser = async function (jwcode) {
// //
if (!/^\d{1,9}$/.test(jwcode)) { if (!/^\d{1,9}$/.test(jwcode)) {
ElMessage.warning(t('elmessage.limitJwcodeNine'));
cancel() cancel()
return; return;
} }
@ -244,31 +245,43 @@ const getUser = async function (jwcode) {
jwcode: addRefund.value.jwcode jwcode: addRefund.value.jwcode
} }
}) })
console.log('请求成功', result)
//
const { code, data } = result
const region = data && data.market
if (!data || Object.keys(data).length === 0) {
user.value = {}
restGoods() restGoods()
//
if (result.code === 0) {
ElMessage.error(result.msg);
} else if (result.data === null) {
ElMessage.error(t('elmessage.noUser'));
} else {
tableData.value = []
ElMessage.error(t('elmessage.jwcodeError'))
return
}
// 100 // 100
const processedData = { const processedData = {
...result.data,
historySumGold: (Number(result.data.historySumGold) || 0),
nowSumGold: (Number(result.data.nowSumGold) || 0),
nowPermanentGold: (Number(result.data.nowPermanentGold) || 0),
nowFreeGold: (Number(result.data.nowFreeGold) || 0),
nowTaskGold: (Number(result.data.nowTaskGold) || 0)
...data,
historySumGold: (Number(data.historySumGold) || 0),
nowSumGold: (Number(data.nowSumGold) || 0),
nowPermanentGold: (Number(data.nowPermanentGold) || 0),
nowFreeGold: (Number(data.nowFreeGold) || 0),
nowTaskGold: (Number(data.nowTaskGold) || 0)
} }
user.value = processedData; user.value = processedData;
console.log("用户信息", user.value);
//
restGoods()
tableData.value = [] tableData.value = []
addRefund.value.refundType = '' addRefund.value.refundType = ''
if (code === 0 && region) {
ElMessage.info({
message: `该用户属于【${region}】地区`,
customClass: 'custom-blue-message'
})
return
} }
ElMessage.success(t('elmessage.searchSuccess'))
} catch (error) { } catch (error) {
console.log("请求失败", error); console.log("请求失败", error);
ElMessage.error(t('elmessage.jwcodeError')); ElMessage.error(t('elmessage.jwcodeError'));

Loading…
Cancel
Save