调整结算模块
This commit is contained in:
+15
-11
@@ -54,8 +54,8 @@
|
||||
<template #taxRate-form>
|
||||
<el-input
|
||||
v-model="form.taxRate"
|
||||
inputmode="decimal"
|
||||
maxlength="6"
|
||||
inputmode="numeric"
|
||||
maxlength="3"
|
||||
clearable
|
||||
placeholder="请输入税率"
|
||||
@input="handleTaxRateInput"
|
||||
@@ -183,8 +183,8 @@ export default {
|
||||
validator: (rule, value, callback) => {
|
||||
const text = String(value ?? '').trim();
|
||||
const rate = Number(text);
|
||||
if (!/^\d+(\.\d{1,2})?$/.test(text) || rate < 0 || rate > 100) {
|
||||
callback(new Error('税率必须是0到100之间且最多保留2位小数的数字'));
|
||||
if (!/^\d+$/.test(text) || rate < 0 || rate > 100) {
|
||||
callback(new Error('税率必须是0到100之间的整数'));
|
||||
return;
|
||||
}
|
||||
callback();
|
||||
@@ -364,7 +364,10 @@ export default {
|
||||
return option ? `${option.dictValue}/${option.dictKey}` : feeCategory;
|
||||
},
|
||||
formatTaxRate(value) {
|
||||
return value === undefined || value === null || value === '' ? '' : `${value}%`;
|
||||
const text = String(value ?? '').trim();
|
||||
if (text === '') return '';
|
||||
const rate = Number(text);
|
||||
return Number.isFinite(rate) ? `${Math.trunc(Math.abs(rate))}%` : `${text}%`;
|
||||
},
|
||||
getFeeItemCodeSuffix(code, feeCategory) {
|
||||
const value = String(code || '').trim();
|
||||
@@ -397,6 +400,11 @@ export default {
|
||||
const values = { ...row };
|
||||
values.feeCategory = String(values.feeCategory || '').trim();
|
||||
values.englishName = this.getFeeItemCodeSuffix(values.englishName, values.feeCategory);
|
||||
const taxRateText = String(values.taxRate ?? '').trim();
|
||||
const taxRate = Number(taxRateText);
|
||||
if (taxRateText !== '' && Number.isFinite(taxRate)) {
|
||||
values.taxRate = String(Math.trunc(Math.abs(taxRate)));
|
||||
}
|
||||
return values;
|
||||
},
|
||||
validateUnique(row) {
|
||||
@@ -497,12 +505,8 @@ export default {
|
||||
done();
|
||||
},
|
||||
handleTaxRateInput(value) {
|
||||
let normalized = String(value || '').replace(/[^\d.]/g, '');
|
||||
normalized = normalized.replace(/(\..*)\./g, '$1');
|
||||
if (normalized.startsWith('.')) normalized = `0${normalized}`;
|
||||
const [integerPart, decimalPart] = normalized.split('.');
|
||||
normalized =
|
||||
decimalPart === undefined ? integerPart : `${integerPart}.${decimalPart.slice(0, 2)}`;
|
||||
let normalized = String(value ?? '').replace(/\D/g, '');
|
||||
if (normalized.length > 1) normalized = normalized.replace(/^0+/, '') || '0';
|
||||
this.form.taxRate = normalized;
|
||||
},
|
||||
searchReset() {
|
||||
|
||||
+25
-26
@@ -42,13 +42,6 @@
|
||||
</section-card>
|
||||
|
||||
<el-button-group>
|
||||
<el-button
|
||||
v-if="permission.region_add"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="addCountry"
|
||||
>新增国家
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="permission.region_add"
|
||||
type="primary"
|
||||
@@ -181,19 +174,17 @@ export default {
|
||||
treeLoad: (node, resolve) => {
|
||||
const parentCode = node.level === 0 ? ROOT_PARENT_CODE : node.data.id;
|
||||
getLazyTree(parentCode, this.searchForm).then(res => {
|
||||
resolve(
|
||||
res.data.data.map(item => {
|
||||
return {
|
||||
...item,
|
||||
leaf: !item.hasChildren,
|
||||
};
|
||||
})
|
||||
);
|
||||
const treeData = this.normalizeTreeData(res.data.data);
|
||||
if (node.level === 0) {
|
||||
this.setDefaultExpandedKeys(treeData);
|
||||
}
|
||||
resolve(treeData);
|
||||
});
|
||||
},
|
||||
addBtn: false,
|
||||
menu: false,
|
||||
defaultExpandAll: false,
|
||||
defaultExpandedKeys: [],
|
||||
size: 'default',
|
||||
props: {
|
||||
labelText: '标题',
|
||||
@@ -260,6 +251,7 @@ export default {
|
||||
prop: 'regionLevel',
|
||||
type: 'radio',
|
||||
dicUrl: '/blade-system/dict/dictionary?code=region',
|
||||
dicFormatter: list => list.filter(item => Number(item.dictKey) !== 0),
|
||||
props: {
|
||||
label: 'dictValue',
|
||||
value: 'dictKey',
|
||||
@@ -436,24 +428,31 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
normalizeTreeData(data) {
|
||||
return data.map(item => {
|
||||
return {
|
||||
...item,
|
||||
leaf: !item.hasChildren,
|
||||
};
|
||||
});
|
||||
},
|
||||
setDefaultExpandedKeys(treeData) {
|
||||
const valueKey = this.treeOption.props.value;
|
||||
this.treeOption.defaultExpandedKeys = treeData
|
||||
.filter(item => item.hasChildren)
|
||||
.map(item => item[valueKey]);
|
||||
},
|
||||
initTree() {
|
||||
this.treeData = [];
|
||||
getLazyTree(this.topCode, this.searchForm).then(res => {
|
||||
this.treeData = res.data.data.map(item => {
|
||||
return {
|
||||
...item,
|
||||
leaf: !item.hasChildren,
|
||||
};
|
||||
const treeData = this.normalizeTreeData(res.data.data);
|
||||
this.treeData = treeData;
|
||||
this.$nextTick(() => {
|
||||
this.setDefaultExpandedKeys(treeData);
|
||||
});
|
||||
});
|
||||
},
|
||||
hasSearchCriteria() {
|
||||
return Object.values(this.searchForm).some(
|
||||
value => value !== '' && value !== undefined && value !== null
|
||||
);
|
||||
},
|
||||
handleSearch() {
|
||||
this.treeOption.defaultExpandAll = this.hasSearchCriteria();
|
||||
this.initTree();
|
||||
this.regionForm = {};
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user