Commit 8383d648 by yuzhenWang

Merge branch 'wyz' into 'test'

优化9

See merge request !154
parents b47d0fb2 b7691251
...@@ -235,6 +235,24 @@ export function calculateAmount(a, b, digits = 2, type) { ...@@ -235,6 +235,24 @@ export function calculateAmount(a, b, digits = 2, type) {
return null return null
} }
} }
/**
* 格式化数字,保留最多 maxDigits 位小数,自动去除尾随零
* @param {number|null|undefined} value - 原始数值
* @param {number} maxDigits - 最多保留的小数位数,默认 5
* @param {string} defaultValue - 无效值时的占位符,默认 '-'
* @returns {string} 格式化后的字符串
*/
export function formatNumberToMaxDigits(value, maxDigits = 5, defaultValue = '-') {
if (value === undefined || value === null || isNaN(Number(value))) {
return defaultValue;
}
const num = Number(value);
// 先固定保留 maxDigits 位小数(四舍五入)
const fixed = num.toFixed(maxDigits);
// 移除末尾的0,如果小数部分全是0则连小数点一起移除
const trimmed = fixed.replace(/\.?0+$/, '');
return trimmed;
}
export default { export default {
formatCurrency, formatCurrency,
numberFormat, numberFormat,
......
...@@ -118,7 +118,13 @@ ...@@ -118,7 +118,13 @@
<el-table-column prop="broker" label="转介人" width="130" sortable /> <el-table-column prop="broker" label="转介人" width="130" sortable />
<el-table-column prop="brokerGradeName" label="转介人职级" width="100" /> <el-table-column prop="brokerGradeName" label="转介人职级" width="100" />
<el-table-column prop="team" label="所属团队" width="120" sortable /> <el-table-column prop="team" label="所属团队" width="120" sortable />
<el-table-column prop="exchangeRate" label="结算汇率(估)" width="140" sortable /> <el-table-column
prop="exchangeRate"
label="结算汇率(估)"
width="140"
:formatter="row => formatNumberToMaxDigits(row.exchangeRate, 5, '-')"
>
</el-table-column>
<el-table-column <el-table-column
prop="hkdAmount" prop="hkdAmount"
label="应出账金额(HKD)" label="应出账金额(HKD)"
...@@ -324,7 +330,7 @@ import editTable from '@/components/Table/editTable.vue' ...@@ -324,7 +330,7 @@ import editTable from '@/components/Table/editTable.vue'
import CommonDialog from '@/components/commonDialog' import CommonDialog from '@/components/commonDialog'
import SearchForm from '@/components/SearchForm/SearchForm.vue' import SearchForm from '@/components/SearchForm/SearchForm.vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { formatCurrency, calculateAmount } from '@/utils/number' import { formatCurrency, calculateAmount, formatNumberToMaxDigits } from '@/utils/number'
import { Select, EditPen } from '@element-plus/icons-vue' import { Select, EditPen } from '@element-plus/icons-vue'
// 接口 // 接口
...@@ -506,8 +512,9 @@ const splitTableColumns = ref([ ...@@ -506,8 +512,9 @@ const splitTableColumns = ref([
{ {
editType: 'input', editType: 'input',
prop: 'originalToHkdRate', prop: 'originalToHkdRate',
label: '原币种->港币', label: '原币种->港币(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
required: true, required: true,
width: 150 width: 150
}, },
...@@ -516,6 +523,7 @@ const splitTableColumns = ref([ ...@@ -516,6 +523,7 @@ const splitTableColumns = ref([
prop: 'hkdAmount', prop: 'hkdAmount',
label: '港币金额', label: '港币金额',
inputType: 'decimal', inputType: 'decimal',
required: true, required: true,
width: 150 width: 150
}, },
...@@ -523,8 +531,9 @@ const splitTableColumns = ref([ ...@@ -523,8 +531,9 @@ const splitTableColumns = ref([
{ {
editType: 'input', editType: 'input',
prop: 'hkdToPayoutRate', prop: 'hkdToPayoutRate',
label: '港币->发放币种', label: '港币->发放币种(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
required: true, required: true,
width: 150 width: 150
}, },
...@@ -543,6 +552,7 @@ const splitTableColumns = ref([ ...@@ -543,6 +552,7 @@ const splitTableColumns = ref([
prop: 'exchangeRate', prop: 'exchangeRate',
label: '保单币种->港币(入账检核汇率)', label: '保单币种->港币(入账检核汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
required: true, required: true,
width: 150 width: 150
// defaultValue: 1 // defaultValue: 1
...@@ -635,8 +645,9 @@ const rateExchangeConfig = [ ...@@ -635,8 +645,9 @@ const rateExchangeConfig = [
{ {
type: 'input', type: 'input',
prop: 'originalToHkdRate', prop: 'originalToHkdRate',
label: '原币种->港币', label: '原币种->港币(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -651,8 +662,9 @@ const rateExchangeConfig = [ ...@@ -651,8 +662,9 @@ const rateExchangeConfig = [
{ {
type: 'input', type: 'input',
prop: 'hkdToPayoutRate', prop: 'hkdToPayoutRate',
label: '港币->发放币种', label: '港币->发放币种(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -670,6 +682,7 @@ const rateExchangeConfig = [ ...@@ -670,6 +682,7 @@ const rateExchangeConfig = [
prop: 'exchangeRate', prop: 'exchangeRate',
label: '保单币种->港币(入账检核汇率)', label: '保单币种->港币(入账检核汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -1223,7 +1236,8 @@ const addCheckRecordConfig = [ ...@@ -1223,7 +1236,8 @@ const addCheckRecordConfig = [
{ {
type: 'input', type: 'input',
prop: 'originalToHkdRate', prop: 'originalToHkdRate',
label: '原币种->港币', label: '原币种->港币(汇率)',
decimalDigits: 5,
inputType: 'decimal', inputType: 'decimal',
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
...@@ -1239,8 +1253,9 @@ const addCheckRecordConfig = [ ...@@ -1239,8 +1253,9 @@ const addCheckRecordConfig = [
{ {
type: 'input', type: 'input',
prop: 'hkdToPayoutRate', prop: 'hkdToPayoutRate',
label: '港币->发放币种', label: '港币->发放币种(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -1258,6 +1273,7 @@ const addCheckRecordConfig = [ ...@@ -1258,6 +1273,7 @@ const addCheckRecordConfig = [
prop: 'exchangeRate', prop: 'exchangeRate',
label: '保单币种->港币(入账检核汇率)', label: '保单币种->港币(入账检核汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
......
...@@ -858,7 +858,7 @@ const addCheckRecordConfig = ref([ ...@@ -858,7 +858,7 @@ const addCheckRecordConfig = ref([
prop: 'exchangeRate', prop: 'exchangeRate',
label: '结算汇率(实)', label: '结算汇率(实)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 4, decimalDigits: 5,
visible: formData => formData.commissionBizType == 'R', visible: formData => formData.commissionBizType == 'R',
rules: [ rules: [
{ required: true, message: '请输入金额', trigger: 'blur' }, { required: true, message: '请输入金额', trigger: 'blur' },
...@@ -1206,6 +1206,8 @@ const closthDialog = () => { ...@@ -1206,6 +1206,8 @@ const closthDialog = () => {
checkFormRef.value.resetForm() checkFormRef.value.resetForm()
checkFormData.value = {} checkFormData.value = {}
checkRecordTableData.value = [] checkRecordTableData.value = []
const params = searchFormRef.value.getFormData()
loadTableData(params)
} }
// 重新比对 // 重新比对
......
...@@ -492,7 +492,7 @@ const handleFromAmountBlur = row => { ...@@ -492,7 +492,7 @@ const handleFromAmountBlur = row => {
// 汇率输入处理 // 汇率输入处理
const handleExchangeRateInput = (val, row) => { const handleExchangeRateInput = (val, row) => {
row.exchangeRate = amountInput.filterInput(val, 4) row.exchangeRate = amountInput.filterInput(val, 5)
getDebouncedChangeToAmount(row)(row) getDebouncedChangeToAmount(row)(row)
} }
......
...@@ -258,7 +258,7 @@ ...@@ -258,7 +258,7 @@
import CommonPage from '@/components/commonPage' import CommonPage from '@/components/commonPage'
import { ref, reactive, nextTick } from 'vue' import { ref, reactive, nextTick } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { formatCurrency, calculateAmount } from '@/utils/number' import { formatCurrency, calculateAmount, formatNumberToMaxDigits } from '@/utils/number'
import { import {
expectedFortuneList, expectedFortuneList,
payRecordList, payRecordList,
...@@ -513,12 +513,19 @@ const payableReportListTableColumns = ref([ ...@@ -513,12 +513,19 @@ const payableReportListTableColumns = ref([
width: '120', width: '120',
formatter: row => formatCurrency(row.hkdAmount || 0) formatter: row => formatCurrency(row.hkdAmount || 0)
}, },
// {
// prop: 'exchangeRate',
// label: '保单币种->HKD(汇率)',
// sortable: true,
// width: '140',
// formatter: row => formatCurrency(row.exchangeRate || 0, '', 5)
// },
{ {
prop: 'exchangeRate', prop: 'exchangeRate',
label: '保单币种->HKD汇率', label: '保单币种->HKD(汇率)',
sortable: true, sortable: true,
width: '140', width: '140',
formatter: row => formatCurrency(row.exchangeRate || 0) formatter: row => formatNumberToMaxDigits(row.exchangeRate, 5, '-')
}, },
{ {
...@@ -907,8 +914,9 @@ const updatePayRecordFormConfig = [ ...@@ -907,8 +914,9 @@ const updatePayRecordFormConfig = [
{ {
type: 'input', type: 'input',
prop: 'originalToHkdRate', prop: 'originalToHkdRate',
label: '原币种->港币', label: '原币种->港币(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -923,8 +931,9 @@ const updatePayRecordFormConfig = [ ...@@ -923,8 +931,9 @@ const updatePayRecordFormConfig = [
{ {
type: 'input', type: 'input',
prop: 'hkdToPayoutRate', prop: 'hkdToPayoutRate',
label: '港币->发放币种', label: '港币->发放币种(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -942,6 +951,7 @@ const updatePayRecordFormConfig = [ ...@@ -942,6 +951,7 @@ const updatePayRecordFormConfig = [
prop: 'exchangeRate', prop: 'exchangeRate',
label: '保单币种->港币(入账检核汇率)', label: '保单币种->港币(入账检核汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -1215,7 +1225,7 @@ const addPayRecordFormConfig = [ ...@@ -1215,7 +1225,7 @@ const addPayRecordFormConfig = [
label: '所属团队', label: '所属团队',
api: '/csf/api/team/page', api: '/csf/api/team/page',
keywordField: 'teamName', keywordField: 'teamName',
requestParams: { pageNo: 1, pageSize: 200 }, requestParams: { pageNo: 1, pageSize: 20 },
placeholder: '输入所属团队名称搜索', placeholder: '输入所属团队名称搜索',
debounceWait: 500, // 自定义防抖时间 debounceWait: 500, // 自定义防抖时间
valueKey: 'teamBizId', valueKey: 'teamBizId',
...@@ -1272,8 +1282,9 @@ const addPayRecordFormConfig = [ ...@@ -1272,8 +1282,9 @@ const addPayRecordFormConfig = [
{ {
type: 'input', type: 'input',
prop: 'originalToHkdRate', prop: 'originalToHkdRate',
label: '原币种->港币', label: '原币种->港币(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -1288,8 +1299,9 @@ const addPayRecordFormConfig = [ ...@@ -1288,8 +1299,9 @@ const addPayRecordFormConfig = [
{ {
type: 'input', type: 'input',
prop: 'hkdToPayoutRate', prop: 'hkdToPayoutRate',
label: '港币->发放币种', label: '港币->发放币种(汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
...@@ -1307,6 +1319,7 @@ const addPayRecordFormConfig = [ ...@@ -1307,6 +1319,7 @@ const addPayRecordFormConfig = [
prop: 'defaultExchangeRate', prop: 'defaultExchangeRate',
label: '保单币种->港币(入账检核汇率)', label: '保单币种->港币(入账检核汇率)',
inputType: 'decimal', inputType: 'decimal',
decimalDigits: 5,
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }] rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1 // defaultValue: 1
}, },
......
...@@ -47,6 +47,7 @@ import CommonPage from '@/components/commonPage' ...@@ -47,6 +47,7 @@ import CommonPage from '@/components/commonPage'
import { salarySummary, exportPayRoll } from '@/api/financial/commission' import { salarySummary, exportPayRoll } from '@/api/financial/commission'
import { ElMessageBox, ElMessage } from 'element-plus' import { ElMessageBox, ElMessage } from 'element-plus'
import SearchForm from '@/components/SearchForm/SearchForm.vue' import SearchForm from '@/components/SearchForm/SearchForm.vue'
import { formatNumberToMaxDigits } from '@/utils/number'
const searchFormRef = ref(null) const searchFormRef = ref(null)
const searchParams = ref({}) const searchParams = ref({})
const searchConfig = ref([ const searchConfig = ref([
...@@ -93,7 +94,13 @@ const tableColumns = ref([ ...@@ -93,7 +94,13 @@ const tableColumns = ref([
{ prop: 'team', label: '所属团队', sortable: true, width: '150' }, { prop: 'team', label: '所属团队', sortable: true, width: '150' },
{ prop: 'fromAmount', label: '原币种金额', sortable: true, width: '150' }, { prop: 'fromAmount', label: '原币种金额', sortable: true, width: '150' },
{ prop: 'currency', label: '原币种', sortable: true, width: '150' }, { prop: 'currency', label: '原币种', sortable: true, width: '150' },
{ prop: 'exchangeRate', label: '汇率(原币种->目标币种)', sortable: true, width: '150' }, {
prop: 'exchangeRate',
label: '汇率(原币种->目标币种)',
sortable: true,
width: '150',
formatter: row => formatNumberToMaxDigits(row.exchangeRate, 5, '-')
},
{ prop: 'toAmount', label: '目标金额', sortable: true, width: '150' }, { prop: 'toAmount', label: '目标金额', sortable: true, width: '150' },
{ prop: 'toCurrency', label: '目标币种', sortable: true, width: '150' }, { prop: 'toCurrency', label: '目标币种', sortable: true, width: '150' },
{ prop: 'fortuneAccountMonth', label: '出账月(实)', sortable: true, width: '150' }, { prop: 'fortuneAccountMonth', label: '出账月(实)', sortable: true, width: '150' },
......
...@@ -315,9 +315,9 @@ const introducerConfig = [ ...@@ -315,9 +315,9 @@ const introducerConfig = [
broker: 'realName', // 选中后自动填 broker = raw.realName broker: 'realName', // 选中后自动填 broker = raw.realName
brokerName: 'realName', brokerName: 'realName',
internalCode: 'internalNumber', internalCode: 'internalNumber',
team: 'deptName', team: 'teamName',
phone: 'phone', phone: 'phone',
teamBizId: 'deptBizId' teamBizId: 'teamBizId'
}, },
transform: res => { transform: res => {
return (res?.data.records || []).map(item => ({ return (res?.data.records || []).map(item => ({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment