Browse Source

业绩调整

milestone-20260415-金币优化4期
zhangrenyuan 13 hours ago
parent
commit
5cff13e787
  1. 46
      src/views/moneyManage/financialAccount/performanceAttribution.vue

46
src/views/moneyManage/financialAccount/performanceAttribution.vue

@ -3,6 +3,7 @@ import { ref, reactive, onMounted, toRefs, nextTick, computed, watch, onBeforeUn
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import request from '@/util/http.js' import request from '@/util/http.js'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import Decimal from 'decimal.js'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { refundOnline, performanceSelect, exportPerformance, adjustment } from '@/api/cash/financialAccount.js' import { refundOnline, performanceSelect, exportPerformance, adjustment } from '@/api/cash/financialAccount.js'
import { getUserInfo } from '@/api/common/common.js' import { getUserInfo } from '@/api/common/common.js'
@ -368,6 +369,32 @@ const matrixMarkets = computed(() => [
const adjustData = ref([]) const adjustData = ref([])
const isEmptyAdjustValue = (value) => {
return value === '' || value === undefined || value === null || value === '-'
}
const toSafeDecimal = (value) => {
if (isEmptyAdjustValue(value)) {
return new Decimal(0)
}
const normalized = formatNumber(value)
if (!normalized || normalized === '-' || normalized === '.' || normalized === '-.') {
return new Decimal(0)
}
try {
return new Decimal(normalized)
} catch (error) {
return new Decimal(0)
}
}
const formatDecimalValue = (value) => {
const decimalValue = Decimal.isDecimal(value) ? value : toSafeDecimal(value)
return decimalValue.toFixed().replace(/\.0+$/, '').replace(/(\.\d*?[1-9])0+$/, '$1')
}
const initAdjustData = () => { const initAdjustData = () => {
adjustData.value = matrixMarkets.value.map(rowMarket => { adjustData.value = matrixMarkets.value.map(rowMarket => {
const row = { inMarket: rowMarket.label + t('common.customer') } const row = { inMarket: rowMarket.label + t('common.customer') }
@ -390,12 +417,11 @@ const computedAdjustData = computed(() => {
const sumRow = { inMarket: t('cash.cashFlow.total'), isSum: true } const sumRow = { inMarket: t('cash.cashFlow.total'), isSum: true }
matrixMarkets.value.forEach(colMarket => { matrixMarkets.value.forEach(colMarket => {
let colSum = 0
let colSum = new Decimal(0)
adjustData.value.forEach(row => { adjustData.value.forEach(row => {
const val = parseFloat(row[colMarket.key])
if (!isNaN(val)) colSum += val
colSum = colSum.plus(toSafeDecimal(row[colMarket.key]))
}) })
sumRow[colMarket.key] = colSum
sumRow[colMarket.key] = formatDecimalValue(colSum)
}) })
data.push(sumRow) data.push(sumRow)
@ -403,12 +429,11 @@ const computedAdjustData = computed(() => {
}) })
const getRowTotal = (row) => { const getRowTotal = (row) => {
let sum = 0
let sum = new Decimal(0)
matrixMarkets.value.forEach(colMarket => { matrixMarkets.value.forEach(colMarket => {
const val = parseFloat(row[colMarket.key])
if (!isNaN(val)) sum += val
sum = sum.plus(toSafeDecimal(row[colMarket.key]))
}) })
return sum
return formatDecimalValue(sum)
} }
const formatNumber = (val) => { const formatNumber = (val) => {
@ -434,15 +459,14 @@ const submitAdjustment = async () => {
// 0 // 0
const matrix = adjustData.value.map(row => { const matrix = adjustData.value.map(row => {
return matrixMarkets.value.map(colMarket => { return matrixMarkets.value.map(colMarket => {
const val = parseFloat(row[colMarket.key])
return isNaN(val) ? 0 : val
return toSafeDecimal(row[colMarket.key]).toNumber()
}) })
}) })
// //
const payload = { const payload = {
matrix: matrix, matrix: matrix,
weight: parseFloat(adjustCoefficient.value), //
weight: toSafeDecimal(adjustCoefficient.value).toNumber(), //
time: adjustTime.value, time: adjustTime.value,
submitterId: adminData.value.id || 1000063, // adminData submitterId: adminData.value.id || 1000063, // adminData
submitterMarket: adminData.value.marketName || '总部' // submitterMarket: adminData.value.marketName || '总部' //

Loading…
Cancel
Save