From 9b7252527d52a40da961ed7e048b8d4b5c46224c Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 24 十二月 2024 10:50:45 +0800
Subject: [PATCH] 修改税费计算
---
src/views/safetyReview/expertManage/postEvaluation/components/evaluate.vue | 236 ++++++++++++++++++++++++++++++++++------------------------
1 files changed, 137 insertions(+), 99 deletions(-)
diff --git a/src/views/safetyReview/expertManage/postEvaluation/components/evaluate.vue b/src/views/safetyReview/expertManage/postEvaluation/components/evaluate.vue
index d724c9e..8545953 100644
--- a/src/views/safetyReview/expertManage/postEvaluation/components/evaluate.vue
+++ b/src/views/safetyReview/expertManage/postEvaluation/components/evaluate.vue
@@ -31,12 +31,12 @@
</el-form-item>
</el-col>
</el-row>
-<!-- <el-form-item label="考评记录时间:">-->
-<!-- <el-input v-model.trim="state.info.evaluateTime" readonly></el-input>-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="总计:">-->
-<!-- <el-input v-model.trim="state.info.score" readonly></el-input>-->
-<!-- </el-form-item>-->
+ <!-- <el-form-item label="考评记录时间:">-->
+ <!-- <el-input v-model.trim="state.info.evaluateTime" readonly></el-input>-->
+ <!-- </el-form-item>-->
+ <!-- <el-form-item label="总计:">-->
+ <!-- <el-input v-model.trim="state.info.score" readonly></el-input>-->
+ <!-- </el-form-item>-->
</el-form>
<el-form :model="state.form" ref="evaluateRef" :rules="state.formRules" label-width="140px">
<el-divider>
@@ -68,7 +68,8 @@
</el-radio-group>
</el-form-item>
<el-form-item label="其他意见建议">
- <el-input v-model="state.form.others" type="textarea" :autosize="{ minRows: 2}" :readonly="state.disable"></el-input>
+ <el-input v-model="state.form.others" type="textarea" :autosize="{ minRows: 2}"
+ :readonly="state.disable"></el-input>
</el-form-item>
<el-form-item label="使用单位综合评价情况" label-width="180px" prop="comprehensiveEvaluation">
<el-radio-group v-model="state.form.comprehensiveEvaluation" style="width: 100%" :disabled="state.disable">
@@ -81,11 +82,15 @@
</el-divider>
<div style="width: 100%;display: flex;align-items: center;justify-content: space-between;margin: 25px 0 15px">
<div>
- <el-button type="primary" size="default" @click="openSelectList('1')" v-preReClick :disabled="state.disable">添加加分项</el-button>
- <el-button type="default" size="default" @click="addSelect('1')" v-preReClick :disabled="state.disable">自定义加分项</el-button>
+ <el-button type="primary" size="default" @click="openSelectList('1')" v-preReClick
+ :disabled="state.disable">添加加分项
+ </el-button>
+ <el-button type="default" size="default" @click="addSelect('1')" v-preReClick :disabled="state.disable">
+ 自定义加分项
+ </el-button>
</div>
<div style="font-size: 14px">
- 加分总计:<span style="font-weight: bolder;color: #10B981">{{addTotal}}</span> 分
+ 加分总计:<span style="font-weight: bolder;color: #10B981">{{ addTotal }}</span> 分
</div>
</div>
<el-table :data="state.addData" border style="width: 100%">
@@ -95,32 +100,41 @@
<el-input v-model.trim="scope.row.score" type="number" :readonly="state.disable"></el-input>
</template>
</el-table-column>
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
- <!-- <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>-->
- <el-button link type="danger" @click="deleteSelect(scope.row,scope.$index,1)" :disabled="state.disable">删除</el-button>
+ <!-- <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>-->
+ <el-button link type="danger" @click="deleteSelect(scope.row,scope.$index,1)" :disabled="state.disable">
+ 删除
+ </el-button>
</template>
</el-table-column>
</el-table>
<div style="width: 100%;display: flex;align-items: center;justify-content: space-between;margin: 25px 0 15px">
<div>
- <el-button type="primary" size="default" @click="openSelectList('2')" v-preReClick :disabled="state.disable">添加扣分项</el-button>
- <el-button type="default" size="default" @click="addSelect('2')" v-preReClick :disabled="state.disable">自定义扣分项</el-button>
+ <el-button type="primary" size="default" @click="openSelectList('2')" v-preReClick
+ :disabled="state.disable">添加扣分项
+ </el-button>
+ <el-button type="default" size="default" @click="addSelect('2')" v-preReClick :disabled="state.disable">
+ 自定义扣分项
+ </el-button>
</div>
<div style="font-size: 14px">
- 扣分总计:<span style="font-weight: bolder;color: #EF4444">{{deductTotal}}</span> 分
+ 扣分总计:<span style="font-weight: bolder;color: #EF4444">{{ deductTotal }}</span> 分
</div>
</div>
<el-table :data="state.deductData" border style="width: 100%">
<el-table-column prop="content" label="扣分项"/>
<el-table-column prop="score" label="分值">
<template #default="scope">
- <el-input v-model.trim="scope.row.score" type="number" :readonly="state.disable" placeholder="此处须填写负数"></el-input>
+ <el-input v-model.trim="scope.row.score" type="number" :readonly="state.disable"
+ placeholder="此处须填写负数"></el-input>
</template>
</el-table-column>
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
- <el-button link type="danger" @click="deleteSelect(scope.row,scope.$index,2)" :disabled="state.disable">删除</el-button>
+ <el-button link type="danger" @click="deleteSelect(scope.row,scope.$index,2)" :disabled="state.disable">
+ 删除
+ </el-button>
</template>
</el-table-column>
</el-table>
@@ -128,64 +142,85 @@
<div style="margin: 25px 0;font-size: 14px">
<el-form-item label="本项目考评总计" prop="score">
- <el-input v-model.trim="totalScore" type="number" readonly=true><template #append>分</template></el-input>
+ <el-input v-model.trim="totalScore" type="number" readonly=true>
+ <template #append>分</template>
+ </el-input>
</el-form-item>
</div>
<el-row>
<el-col :span="12">
<el-form-item label="发现重大隐患" prop="majorDangers">
- <el-input v-model.trim="state.form.majorDangers" type="number" :readonly="state.disable" placeholder="请输入正整数,没有则填0"><template #append>条</template></el-input>
+ <el-input v-model.trim="state.form.majorDangers" type="number" :readonly="state.disable"
+ placeholder="请输入正整数,没有则填0">
+ <template #append>条</template>
+ </el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="一般隐患" prop="generalHazards">
- <el-input v-model.trim="state.form.generalHazards" type="number" :readonly="state.disable" placeholder="请输入正整数,没有则填0"><template #append>条</template></el-input>
+ <el-input v-model.trim="state.form.generalHazards" type="number" :readonly="state.disable"
+ placeholder="请输入正整数,没有则填0">
+ <template #append>条</template>
+ </el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="内容描述">
- <el-input v-model="state.form.content" type="textarea" :autosize="{ minRows: 2}" :readonly="state.disable"></el-input>
+ <el-input v-model="state.form.content" type="textarea" :autosize="{ minRows: 2}"
+ :readonly="state.disable"></el-input>
</el-form-item>
<el-divider></el-divider>
<el-row>
<el-col :span="12">
<el-form-item label="计费标准" prop="freightBasis">
- <el-input v-model.number.trim="state.form.freightBasis" :readonly="state.disable" @input="getExpertFee"><template #append>天/课时</template></el-input>
+ <el-input v-model.number.trim="state.form.freightBasis" :readonly="state.disable" @input="getExpertFee">
+ <template #append>天/课时</template>
+ </el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="标准说明" prop="billingInstructions">
- <el-input v-model.trim="state.form.billingInstructions" type="textarea" :autosize="{ minRows: 2}" :readonly="state.disable" placeholder="如填写:第1-3天800元/天"></el-input>
+ <el-input v-model.trim="state.form.billingInstructions" type="textarea" :autosize="{ minRows: 2}"
+ :readonly="state.disable" placeholder="如填写:第1-3天800元/天"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="计费时长" prop="billingDuration">
- <el-input v-model.number.trim="state.form.billingDuration" type="number" :readonly="state.disable" @input="getExpertFee"><template #append>天/课时</template></el-input>
+ <el-input v-model.number.trim="state.form.billingDuration" type="number" :readonly="state.disable"
+ @input="getExpertFee">
+ <template #append>天/课时</template>
+ </el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="税前金额(专家费)" prop="taxExpertFee">
- <el-input v-model="state.form.taxExpertFee" type="number" :readonly="state.disable" @input="getExpertTax"><template #append>元</template></el-input>
+ <el-input v-model="state.form.taxExpertFee" type="number" :readonly="state.disable" @input="getExpertTax">
+ <template #append>元</template>
+ </el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
-<!-- <el-col :span="8">-->
-<!-- <el-form-item label="应纳税所得额">-->
-<!-- <el-input v-model.trim="taxIncome" type="number" readonly><template #append>元</template></el-input>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
+ <!-- <el-col :span="8">-->
+ <!-- <el-form-item label="应纳税所得额">-->
+ <!-- <el-input v-model.trim="taxIncome" type="number" readonly><template #append>元</template></el-input>-->
+ <!-- </el-form-item>-->
+ <!-- </el-col>-->
<el-col :span="12">
<el-form-item label="应缴税费">
- <el-input v-model.trim="state.form.incomeTaxPayable" type="number" :readonly="state.disable"><template #append>元</template></el-input>
+ <el-input v-model.trim="state.form.incomeTaxPayable" type="number" :readonly="state.disable">
+ <template #append>元</template>
+ </el-input>
<div style="font-size: 12px;color: red">系统自动计算金额仅供参考,请注意核对。</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="税后金额">
- <el-input v-model="state.form.afterTaxAmount" type="number" :readonly="state.disable"><template #append>元</template></el-input>
+ <el-input v-model="state.form.afterTaxAmount" type="number" :readonly="state.disable">
+ <template #append>元</template>
+ </el-input>
</el-form-item>
</el-col>
</el-row>
@@ -205,18 +240,20 @@
</el-form>
<template #footer>
<span class="dialog-footer">
- <el-button type="primary" v-if="!state.disable" @click="confirmScore" size="default" v-preReClick>完成评分</el-button>
- <el-button type="primary" v-if="state.disable" @click="handleClose" size="default" v-preReClick>确定</el-button>
+ <el-button type="primary" v-if="!state.disable" @click="confirmScore" size="default"
+ v-preReClick>完成评分</el-button>
+ <el-button type="primary" v-if="state.disable" @click="handleClose" size="default"
+ v-preReClick>确定</el-button>
</span>
</template>
- <select-list ref="selectRef" @refreshSelected="getSelected"></select-list>
+ <select-list ref="selectRef" @refreshSelected="getSelected"></select-list>
<el-dialog
v-model="state.addVisible"
:title="state.addTitle"
width="500px"
:before-close="closeAdd"
>
- <el-form :model="state.addForm" size="default" ref="addRef" :rules="state.addFormRules" label-width="110px" >
+ <el-form :model="state.addForm" size="default" ref="addRef" :rules="state.addFormRules" label-width="110px">
<el-form-item label="内容:" prop="content">
<el-input v-model.trim="state.addForm.content" type="textarea" :autosize="{minRows: 2}"></el-input>
</el-form-item>
@@ -227,7 +264,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="closeAdd" size="default">取 消</el-button>
- <el-button type="primary" @click="submitAdd" size="default" v-preReClick>确认</el-button>
+ <el-button type="primary" @click="submitAdd" size="default" v-preReClick>确认</el-button>
</span>
</template>
</el-dialog>
@@ -235,7 +272,7 @@
</div>
</template>
<script setup>
-import {computed, defineAsyncComponent, reactive, ref, toRefs} from 'vue'
+import {computed, defineAsyncComponent, reactive, ref, toRefs, nextTick} from 'vue'
import {ElMessage} from "element-plus";
import SelectList from './selectList'
import {getExpertEvaDetail, projectExpertDetailSave} from '@/api/backManage/evaluate'
@@ -310,56 +347,57 @@
score: [{required: true, message: '请输入分值', trigger: 'blur'}],
},
rateList: [
- {label: '优秀',value: 1},
- {label: '合格',value: 2},
- {label: '基本合格',value: 3},
- {label: '不合格',value: 4}
+ {label: '优秀', value: 1},
+ {label: '合格', value: 2},
+ {label: '基本合格', value: 3},
+ {label: '不合格', value: 4}
]
})
-const addTotal = computed(()=>{
- return state.addData.map(i=>Number(i.score)).reduce((sum, num) => sum + num, 0)
+const addTotal = computed(() => {
+ return state.addData.map(i => Number(i.score)).reduce((sum, num) => sum + num, 0)
})
-const deductTotal = computed(()=>{
- return state.deductData.map(i=>Number(i.score)).reduce((sum, num) => sum + num, 0)
+const deductTotal = computed(() => {
+ return state.deductData.map(i => Number(i.score)).reduce((sum, num) => sum + num, 0)
})
-const totalScore = computed(()=>{
+const totalScore = computed(() => {
return 100 + Number(addTotal.value) + Number(deductTotal.value)
})
// 这里一堆无作用的代码存在的原因是需求一直来回改,简洁的代码也改成屎了
-const expertIncome = computed(()=>{
- if(state.form.freightBasis == null || state.form.billingDuration == null){
+const expertIncome = computed(() => {
+ if (state.form.freightBasis == null || state.form.billingDuration == null) {
return null
}
- if(state.form.billingDuration <= 3){
+ if (state.form.billingDuration <= 3) {
return (state.form.freightBasis * state.form.billingDuration)
- }else{
+ } else {
return (state.form.freightBasis * 3) + (state.form.freightBasis * 0.5 * (state.form.billingDuration - 3))
}
})
-const getExpertFee = ()=>{
- if((state.form.freightBasis && state.form.freightBasis > 0) && (state.form.billingDuration && state.form.billingDuration > 0)){
+const getExpertFee = () => {
+ if ((state.form.freightBasis && state.form.freightBasis > 0) && (state.form.billingDuration && state.form.billingDuration > 0)) {
state.form.taxExpertFee = state.form.freightBasis * state.form.billingDuration
}
+ getExpertTax()
}
-const getExpertTax = ()=>{
+const getExpertTax = () => {
const expertIncomeValue = state.form.taxExpertFee
- if(expertIncomeValue == null || expertIncomeValue / 1.01 - 800<=0){
+ if (expertIncomeValue == null || expertIncomeValue / 1.01 - 800 <= 0) {
state.form.incomeTaxPayable = 0
state.form.afterTaxAmount = expertIncomeValue
- }else{
+ } else {
state.form.incomeTaxPayable = ((expertIncomeValue / 1.01 - 800) * 0.2).toFixed(2)
state.form.afterTaxAmount = (expertIncomeValue - state.form.incomeTaxPayable).toFixed(2)
}
}
-const taxIncome = computed(()=>{
+const taxIncome = computed(() => {
const expertIncomeValue = state.form.taxExpertFee
if (expertIncomeValue == null || expertIncomeValue === 0 || expertIncomeValue <= 800) {
return 0
@@ -371,7 +409,7 @@
}
})
-const taxPay = computed(()=>{
+const taxPay = computed(() => {
// const taxIncomeValue = taxIncome.value
// if (taxIncomeValue == null || taxIncomeValue === 0) {
// return 0
@@ -385,17 +423,17 @@
// }
const expertIncomeValue = state.form.taxExpertFee
- if(expertIncomeValue == null || expertIncomeValue === 0 || expertIncomeValue <= 800){
+ if (expertIncomeValue == null || expertIncomeValue === 0 || expertIncomeValue <= 800) {
return 0
}
- if(expertIncomeValue / 1.01 - 800>0){
+ if (expertIncomeValue / 1.01 - 800 > 0) {
return ((expertIncomeValue / 1.01 - 800) * 0.2).toFixed(2)
- }else{
+ } else {
return 0
}
})
-const afterTaxIncome = computed(()=>{
+const afterTaxIncome = computed(() => {
const expertIncomeValue = state.form.taxExpertFee
const taxPayValue = taxPay.value
if (expertIncomeValue == null || expertIncomeValue == 0) {
@@ -413,14 +451,14 @@
state.title = '查看'
state.disable = true
const res = await getExpertEvaDetail({projectExpertId: value.id});
- if(res.code == 200){
+ if (res.code == 200) {
state.form = res.data
- state.addData = res.data.expertDetails?res.data.expertDetails.filter(i=>i.scoreType == '1'):[]
- state.deductData = res.data.expertDetails?res.data.expertDetails.filter(i=>i.scoreType == '2'):[]
- }else{
+ state.addData = res.data.expertDetails ? res.data.expertDetails.filter(i => i.scoreType == '1') : []
+ state.deductData = res.data.expertDetails ? res.data.expertDetails.filter(i => i.scoreType == '2') : []
+ } else {
ElMessage.warning(res.msg)
}
- }else{
+ } else {
state.title = '评分'
state.disable = false
}
@@ -428,41 +466,41 @@
}
const openSelectList = (type) => {
- if(type == '1'){
+ if (type == '1') {
selectRef.value.openDialog(type, state.addData)
- }else{
+ } else {
selectRef.value.openDialog(type, state.deductData)
}
}
-const getSelected = (type)=>{
- if(type == '1'){
- state.addData = state.addData.concat(selectRef.value.data.selected.map(({ id, ...rest }) => rest))
- }else{
- state.deductData = state.deductData.concat(selectRef.value.data.selected.map(({ id, ...item }) => ({
+const getSelected = (type) => {
+ if (type == '1') {
+ state.addData = state.addData.concat(selectRef.value.data.selected.map(({id, ...rest}) => rest))
+ } else {
+ state.deductData = state.deductData.concat(selectRef.value.data.selected.map(({id, ...item}) => ({
...item,
- score: item.score <0 ? item.score : -Math.abs(item.score)
+ score: item.score < 0 ? item.score : -Math.abs(item.score)
})))
}
}
-const deleteSelect=(row,index,type)=>{
- if(type == 1){
- state.addData.splice(index,1)
- }else{
- state.deductData.splice(index,1)
+const deleteSelect = (row, index, type) => {
+ if (type == 1) {
+ state.addData.splice(index, 1)
+ } else {
+ state.deductData.splice(index, 1)
}
- if(row.id){
+ if (row.id) {
state.form.delData.push(row.id)
}
}
-const addSelect = (type) =>{
+const addSelect = (type) => {
state.addVisible = true
- if(type == '1'){
+ if (type == '1') {
state.addTitle = '自定义加分项'
state.addForm.scoreType = '1'
- }else{
+ } else {
state.addTitle = '自定义扣分项'
state.addForm.scoreType = '2'
}
@@ -501,28 +539,28 @@
bankCard: '',
}
totalScore.value = null
- taxIncome.value= null
- taxPay.value= null
- afterTaxIncome.value= null
+ taxIncome.value = null
+ taxPay.value = null
+ afterTaxIncome.value = null
busRef.value.clearValidate()
state.addData = []
state.deductData = []
dialogVisible.value = false;
}
-const submitAdd = async ()=>{
+const submitAdd = async () => {
const valid = await addRef.value.validate();
- if(valid){
- if(state.addTitle == '自定义加分项'){
+ if (valid) {
+ if (state.addTitle == '自定义加分项') {
state.addData.push(state.addForm)
- }else{
+ } else {
state.deductData.push(state.addForm)
}
await closeAdd()
}
}
-const closeAdd = ()=>{
+const closeAdd = () => {
state.addVisible = false
state.addForm = {
scoreType: '',
@@ -531,21 +569,21 @@
}
}
-const confirmScore = async ()=>{
+const confirmScore = async () => {
const valid = await evaluateRef.value.validate();
- if(valid){
- state.form.saveData = [...state.addData,...state.deductData]
+ if (valid) {
+ state.form.saveData = [...state.addData, ...state.deductData]
state.form.delData = state.form.delData.filter((id) => !state.form.saveData.some((item) => item.id === id))
state.form.score = totalScore.value || 0
// state.form.taxableIncome = taxIncome.value || 0
// state.form.incomeTaxPayable = taxPay.value || 0
// state.form.afterTaxAmount = afterTaxIncome.value || 0
const res = await projectExpertDetailSave(state.form)
- if(res.code == 200){
+ if (res.code == 200) {
ElMessage.success(res.msg)
await handleClose()
emit('getList')
- }else{
+ } else {
ElMessage.warning(res.msg)
}
}
--
Gitblit v1.9.2