a3c46c67 by lihua

fix

1 parent ff212e00
...@@ -1464,7 +1464,7 @@ const panelChange = (scope, row) => { ...@@ -1464,7 +1464,7 @@ const panelChange = (scope, row) => {
1464 @visible-change="(vis) => visibleChange(vis, item)" /> 1464 @visible-change="(vis) => visibleChange(vis, item)" />
1465 <el-date-picker :class="[item.col, { is_block: item.block }]" v-else-if="item.type == 'date-month'" 1465 <el-date-picker :class="[item.col, { is_block: item.block }]" v-else-if="item.type == 'date-month'"
1466 v-model="formInline[item.field]" type="month" :format="item.format ?? 'YYYY-MM'" :value-format="item.valueFormat ?? 'YYYY-MM'" 1466 v-model="formInline[item.field]" type="month" :format="item.format ?? 'YYYY-MM'" :value-format="item.valueFormat ?? 'YYYY-MM'"
1467 :placeholder="item.placeholder" :unlink-panels="item.unlink ?? false" :shortcuts="item.shortcuts ?? []" 1467 :placeholder="item.placeholder" :unlink-panels="item.unlink ?? false" :shortcuts="item.shortcuts ?? []" :clearable="item.clearable ?? true"
1468 :default-value="item.defaultDate" :disabled="item.disabled ?? false" :disabled-date="item.disabledDate" 1468 :default-value="item.defaultDate" :disabled="item.disabled ?? false" :disabled-date="item.disabledDate"
1469 :popper-class="item.popperClass" @change="(val) => inputChange(val, item)" 1469 :popper-class="item.popperClass" @change="(val) => inputChange(val, item)"
1470 @panel-change="(date, mode) => panelChange({ date, mode }, item)" 1470 @panel-change="(date, mode) => panelChange({ date, mode }, item)"
......
...@@ -62,7 +62,7 @@ const valuateFormItems: any = ref([ ...@@ -62,7 +62,7 @@ const valuateFormItems: any = ref([
62 placeholder: "请选择", 62 placeholder: "请选择",
63 format: 'YYYY-MM-DD', 63 format: 'YYYY-MM-DD',
64 valueFormat: 'YYYY-MM-DD', 64 valueFormat: 'YYYY-MM-DD',
65 clearable: true, 65 clearable: false,
66 required: true, 66 required: true,
67 style: { width: 'calc(33.33% - 70px)', 'margin-right': '8px' }, 67 style: { width: 'calc(33.33% - 70px)', 'margin-right': '8px' },
68 popperClass: 'date-month-popper', 68 popperClass: 'date-month-popper',
...@@ -128,7 +128,7 @@ const valuateFormItems: any = ref([ ...@@ -128,7 +128,7 @@ const valuateFormItems: any = ref([
128 ]); 128 ]);
129 129
130 const valuateFormRules = ref({ 130 const valuateFormRules = ref({
131 // damGuid: [required('请选择数据产品名称')], 131 damGuid: [required('请选择数据产品名称')],
132 evaluateBaseDate: [required('请选择基准日')], 132 evaluateBaseDate: [required('请选择基准日')],
133 evaluateMethod: [required('请选择评估方法')], 133 evaluateMethod: [required('请选择评估方法')],
134 useYears: [{ type: 'number', min: 1, max: 10, message: "请填写年限1~10", trigger: "change", },] 134 useYears: [{ type: 'number', min: 1, max: 10, message: "请填写年限1~10", trigger: "change", },]
...@@ -572,11 +572,16 @@ const inputChange = (val, scope, field) => { ...@@ -572,11 +572,16 @@ const inputChange = (val, scope, field) => {
572 } else { 572 } else {
573 row[field] = val = parseFloat(val || 0).toFixed(2); 573 row[field] = val = parseFloat(val || 0).toFixed(2);
574 } 574 }
575 if (val == 'NaN') {
576 row[field] = '0.00';
577 }
575 } 578 }
576 579
577 /** 输入框输入触发事件 */ 580 /** 输入框输入触发事件 */
578 const inputEventChange = (val, scope, field, max: any = null) => { 581 const inputEventChange = (val, scope, field, max: any = null) => {
579 let row = scope.row; 582 let row = scope.row;
583 if (row.indexName == '综合分成率' || row.indexName == '衰减率') { //只能输入正数
584 let row = scope.row;
580 row[field] = row[field].toString().replace(/[^\d.]/g, "") 585 row[field] = row[field].toString().replace(/[^\d.]/g, "")
581 row[field] = row[field].toString().replace(/\.{2,}/g, ".") 586 row[field] = row[field].toString().replace(/\.{2,}/g, ".")
582 row[field] = row[field].toString().replace(".", "$#$").replace(/\./g, "").replace("$#$", ".") 587 row[field] = row[field].toString().replace(".", "$#$").replace(/\./g, "").replace("$#$", ".")
...@@ -585,6 +590,29 @@ const inputEventChange = (val, scope, field, max: any = null) => { ...@@ -585,6 +590,29 @@ const inputEventChange = (val, scope, field, max: any = null) => {
585 if (max !== null && row[field] > max) { 590 if (max !== null && row[field] > max) {
586 row[field] = max; 591 row[field] = max;
587 } 592 }
593 } else { //需要支持负数
594 row[field] = row[field].toString().replace(/[^\d.-]/g, "")
595 row[field] = row[field].toString().replace(/\.{2,}/g, ".")
596 // 第四步:移除整数部分前面不必要的零,但保留小数部分的有效零
597 if (row[field].startsWith('-')) {
598 // 对于负数,去掉负号进行处理
599 let tempValue = row[field].substring(1);
600 tempValue = tempValue.replace(/^0*(\d+(\.\d{0,2})?)/, '$1');
601 row[field] = '-' + tempValue;
602 } else {
603 // 对于正数直接处理
604 row[field] = row[field].replace(/^0*(\d+(\.\d{0,2})?)/, '$1');
605 }
606 row[field] = row[field].toString().replace(/^(-?\d{0,12})(\.\d{0,2})?$/, '$1$2');
607 if (max !== null) {
608 if (row[field] > max) {
609 row[field] = max;
610 }
611 if (row[field] < 0 && row[field] < -max) {
612 row[field] = -max;
613 }
614 }
615 }
588 } 616 }
589 617
590 const incomeCalculateData = computed(() => { //响应式不生效 618 const incomeCalculateData = computed(() => { //响应式不生效
...@@ -606,10 +634,14 @@ const incomeCalculateData = computed(() => { //响应式不生效 ...@@ -606,10 +634,14 @@ const incomeCalculateData = computed(() => { //响应式不生效
606 incomeYears.value.forEach((year, i) => { 634 incomeYears.value.forEach((year, i) => {
607 let C6 = transfer(data[5][year.field]) 635 let C6 = transfer(data[5][year.field])
608 let C7 = transfer(data[6][year.field]) 636 let C7 = transfer(data[6][year.field])
609 let sumC7: any = C7; 637 let sumC7: any = 0;
638 if (i == 0) {
639 sumC7 = C7;
640 } else {
610 incomeYears.value.slice(0, i + 1).forEach((item) => { 641 incomeYears.value.slice(0, i + 1).forEach((item) => {
611 sumC7 = sumC7 + transfer(data[6][item.field]); 642 sumC7 = sumC7 + transfer(data[6][item.field]);
612 }) 643 })
644 }
613 resultInfo['综合分成率'].push(changeNum(C6 * (1 - sumC7 + C7 / 2) * 100, 2, true)); //TODO综合分成率算法有问题 645 resultInfo['综合分成率'].push(changeNum(C6 * (1 - sumC7 + C7 / 2) * 100, 2, true)); //TODO综合分成率算法有问题
614 let C1 = transfer(data[0][year.field], false) 646 let C1 = transfer(data[0][year.field], false)
615 let C5 = transfer(data[4][year.field]) 647 let C5 = transfer(data[4][year.field])
...@@ -646,15 +678,18 @@ const submit = () => { ...@@ -646,15 +678,18 @@ const submit = () => {
646 } else { 678 } else {
647 params.valuationEarningsRQVOList = incomeTableData.value; 679 params.valuationEarningsRQVOList = incomeTableData.value;
648 params.damValuation = incomeCalculateData.value['数据资产估值']; 680 params.damValuation = incomeCalculateData.value['数据资产估值'];
649 params.valuationEarningsRQVOList.forEach(d => { 681 for (const d of params.valuationEarningsRQVOList) {
650 let years: any = {}; 682 let years: any = {};
651 incomeYears.value.forEach(y => { 683 for (const y of incomeYears.value) {
684 if (d.auto != true && d[y.field] == null) {
685 proxy.$ElMessage.error(`收益法的指标【${d.indexName}】预测年限中存在空值,请输入`);
686 return;
687 }
652 years[y.field] = d[y.field]; 688 years[y.field] = d[y.field];
653 }) 689 }
654 d.predictedYears = years; 690 d.predictedYears = years;
655 })
656 } 691 }
657 params.evaluateBaseDate = getLastDayOfMonth(params.evaluateBaseDate); 692 }
658 fullscreenLoading.value = true; 693 fullscreenLoading.value = true;
659 if (!route.query.guid) { 694 if (!route.query.guid) {
660 saveValuationMode(params).then((res: any) => { 695 saveValuationMode(params).then((res: any) => {
...@@ -738,8 +773,6 @@ onBeforeMount(() => { ...@@ -738,8 +773,6 @@ onBeforeMount(() => {
738 item.default = detailData[item.field]; 773 item.default = detailData[item.field];
739 if (item.field == 'evaluateMethod') { 774 if (item.field == 'evaluateMethod') {
740 valuateFormItems.value.at(-1).visible = item.default == '2'; 775 valuateFormItems.value.at(-1).visible = item.default == '2';
741 } else if (item.field == 'evaluateBaseDate') {
742 item.default = item.default.substring(0, 7);
743 } 776 }
744 }) 777 })
745 if (detailData.evaluateMethod == '2') { 778 if (detailData.evaluateMethod == '2') {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!