duy преди 2 години
родител
ревизия
3ca9b7a664
променени са 1 файла, в които са добавени 183 реда и са изтрити 180 реда
  1. 183 180
      src/views/program/annual/form.vue

+ 183 - 180
src/views/program/annual/form.vue

@@ -1,44 +1,50 @@
 <template>
-    <HcCard actionUi="text-center">
+    <HcCard action-ui="text-center">
         <HcCardItem id="hc-program-annual-form-card-item" class="hc-program-annual-form-card-item">
             <el-form ref="formRef" inline :model="formModel" :rules="formRules">
                 <div>
-                    <el-form-item label="预算名称" prop="name" class="w-1/2 mr-6" >
+                    <el-form-item label="预算名称" prop="name" class="w-1/2 mr-6">
                         <el-input v-model="formModel.name" placeholder="请输入预算名称" />
                     </el-form-item>
                     <el-form-item label="预算起止时间" prop="time">
-                        <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate"/>
+                        <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate" />
                     </el-form-item>
                 </div>
                 <div>
                     <el-form-item label="合同" prop="annualContractTarget">
                         <el-tooltip content="年度合同指标">
-                            <el-input v-model="formModel.annualContractTarget" placeholder="年度合同指标" disabled/>
+                            <el-input v-model="formModel.annualContractTarget" placeholder="年度合同指标" disabled />
                         </el-tooltip>
                     </el-form-item>
                     <el-form-item label="利润" prop="annualProfitTarget">
                         <el-tooltip content="年度利润指标">
-                            <el-input v-model="formModel.annualProfitTarget" placeholder="年度利润指标" disabled/>
+                            <el-input v-model="formModel.annualProfitTarget" placeholder="年度利润指标" disabled />
                         </el-tooltip>
                     </el-form-item>
                     <el-form-item label="预算" prop="totalBudget">
                         <el-tooltip content="总经营预算">
                             <el-input v-model="formModel.totalBudget" placeholder="总经营预算" disabled>
-                                <template #append>元</template>
+                                <template #append>
+                                    元
+                                </template>
                             </el-input>
                         </el-tooltip>
                     </el-form-item>
                     <el-form-item label="工资" prop="staffCost">
                         <el-tooltip content="人员成本">
                             <el-input v-model="formModel.staffCost" placeholder="人员成本" disabled>
-                                <template #append>元</template>
+                                <template #append>
+                                    元
+                                </template>
                             </el-input>
                         </el-tooltip>
                     </el-form-item>
                     <el-form-item label="综合" prop="manageDisburse">
                         <el-tooltip content="管理支出">
                             <el-input v-model="formModel.manageDisburse" placeholder="管理支出" disabled>
-                                <template #append>元</template>
+                                <template #append>
+                                    元
+                                </template>
                             </el-input>
                         </el-tooltip>
                     </el-form-item>
@@ -46,102 +52,101 @@
             </el-form>
         </HcCardItem>
         <div class="hc-program-annual-form-tabs" :style="tabsStyle">
-            <el-tabs type="border-card" class="form-tabs"  v-model="editableTabsValue"  @tab-change="changeTab">
+            <el-tabs v-model="editableTabsValue" type="border-card" class="form-tabs" @tab-change="changeTab">
                 <el-tab-pane label="年度预算收入">
-                    <HcTable :isIndex="false" :column="tableColumn" :datas="incomeTable"   >
-                        <template #projectId="{row,index}">
+                    <HcTable :is-index="false" :column="tableColumn" :datas="incomeTable">
+                        <template #projectId="{ row, index }">
                             <el-select v-model="row.projectId">
-                                <el-option v-for="item in projectData" :label="item.name" :value="item.id"/>
+                                <el-option v-for="item in projectData" :label="item.name" :value="item.id" />
                             </el-select>
                         </template>
-                        <template #incomeType="{row,index}">
+                        <template #incomeType="{ row, index }">
                             <el-select v-model="row.incomeType">
-                                <el-option v-for="item in incomeTypeData" :label="item.dictName" :value="item.dictValue"/>
-                                
+                                <el-option v-for="item in incomeTypeData" :label="item.dictName" :value="item.dictValue" />
                             </el-select>
                         </template>
-                        <template #projectTypeValue="{row,index}">
-                            <el-input v-model="row.projectTypeValue" disabled :getdata="getprojectType(row)"/>
+                        <template #projectTypeValue="{ row, index }">
+                            <el-input v-model="row.projectTypeValue" disabled :getdata="getprojectType(row)" />
                         </template>
-                        <template #contractTypeValue="{row,index}">
-                            <el-input v-model="row.contractTypeValue" disabled :getdata="getprojectType(row)"/>
+                        <template #contractTypeValue="{ row, index }">
+                            <el-input v-model="row.contractTypeValue" disabled :getdata="getprojectType(row)" />
                         </template>
-                        <template #predictSignDate="{row,index}">
-                            <el-date-picker class="block" v-model="row.predictSignDate" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD"/>
+                        <template #predictSignDate="{ row, index }">
+                            <el-date-picker v-model="row.predictSignDate" class="block" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD" />
                         </template>
-                        <template #predictContractMoney="{row,index}">
-                            <el-input v-model="row.predictContractMoney" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #predictContractMoney="{ row, index }">
+                            <el-input v-model="row.predictContractMoney" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #predictAnnualReturned="{row,index}">
-                            <el-input v-model="row.predictAnnualReturned" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #predictAnnualReturned="{ row, index }">
+                            <el-input v-model="row.predictAnnualReturned" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #action="{row,index}">
+                        <template #action="{ row, index }">
                             <el-button size="small" type="primary" @click="addRow">
-                                <HcIcon name="add"/>
+                                <HcIcon name="add" />
                                 <span>新增</span>
                             </el-button>
                             <el-button size="small" type="danger" @click="delRow(index)">
-                                <HcIcon name="delete-bin"/>
+                                <HcIcon name="delete-bin" />
                                 <span>删除</span>
                             </el-button>
                         </template>
                     </HcTable>
                 </el-tab-pane>
                 <el-tab-pane label="年度预算支出">
-                    <HcTable :isIndex="false" :column="tableColumn1" :datas="costTable">
-                        <template #budgetSubject="{row,index}">
+                    <HcTable :is-index="false" :column="tableColumn1" :datas="costTable">
+                        <template #budgetSubject="{ row, index }">
                             <el-select v-model="row.budgetSubject">
-                                <el-option v-for="item in budgetTypeList" :label="item.dictName" :value="item.dictValue"/>
+                                <el-option v-for="item in budgetTypeList" :label="item.dictName" :value="item.dictValue" />
                             </el-select>
                         </template>
-                        <template #secondSubject="{row,index}">
-                            <el-select v-model="row.secondSubject" :getdata="getsecondBudgetTypeList(row.budgetSubject,index)">
-                                <el-option v-for="item in secondBudgetTypeList[index]" :label="item.dictName" :value="item.dictValue"/>
+                        <template #secondSubject="{ row, index }">
+                            <el-select v-model="row.secondSubject" :getdata="getsecondBudgetTypeList(row.budgetSubject, index)">
+                                <el-option v-for="item in secondBudgetTypeList[index]" :label="item.dictName" :value="item.dictValue" />
                             </el-select>
                         </template>
-                        <template #january="{row,index}">
-                            <el-input v-model="row.january"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #january="{ row, index }">
+                            <el-input v-model="row.january" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #february="{row,index}">
-                            <el-input v-model="row.february"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #february="{ row, index }">
+                            <el-input v-model="row.february" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #march="{row,index}">
-                            <el-input v-model="row.march"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #march="{ row, index }">
+                            <el-input v-model="row.march" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #april="{row,index}">
-                            <el-input v-model="row.april"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #april="{ row, index }">
+                            <el-input v-model="row.april" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #may="{row,index}">
-                            <el-input v-model="row.may"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #may="{ row, index }">
+                            <el-input v-model="row.may" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #june="{row,index}">
-                            <el-input v-model="row.june"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #june="{ row, index }">
+                            <el-input v-model="row.june" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #july="{row,index}">
-                            <el-input v-model="row.july"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #july="{ row, index }">
+                            <el-input v-model="row.july" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #august="{row,index}">
-                            <el-input v-model="row.august"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #august="{ row, index }">
+                            <el-input v-model="row.august" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #september="{row,index}">
-                            <el-input v-model="row.september"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #september="{ row, index }">
+                            <el-input v-model="row.september" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #october="{row,index}">
-                            <el-input v-model="row.october"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #october="{ row, index }">
+                            <el-input v-model="row.october" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #november="{row,index}">
-                            <el-input v-model="row.november"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #november="{ row, index }">
+                            <el-input v-model="row.november" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #december="{row,index}">
-                            <el-input v-model="row.december"  onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)"/>
+                        <template #december="{ row, index }">
+                            <el-input v-model="row.december" onkeyup="this.value=this.value.match(/\d+\.?\d{0,2}/)" />
                         </template>
-                        <template #action="{row,index}">
+                        <template #action="{ row, index }">
                             <el-button size="small" type="primary" @click="addRow1">
-                                <HcIcon name="add"/>
+                                <HcIcon name="add" />
                                 <span>新增</span>
                             </el-button>
-                            <el-button size="small" type="danger"  @click="delRow1(row,index)">
-                                <HcIcon name="delete-bin"/>
+                            <el-button size="small" type="danger" @click="delRow1(row, index)">
+                                <HcIcon name="delete-bin" />
                                 <span>删除</span>
                             </el-button>
                         </template>
@@ -151,11 +156,11 @@
         </div>
         <template #action>
             <el-button size="large" type="info" hc-btn @click="goBackClick">
-                <HcIcon name="arrow-go-back"/>
+                <HcIcon name="arrow-go-back" />
                 <span>取消并返回</span>
             </el-button>
-            <el-button size="large" type="primary" hc-btn @click="saveClick" :loading="saveLoaing">
-                <HcIcon name="check-double"/>
+            <el-button size="large" type="primary" hc-btn :loading="saveLoaing" @click="saveClick">
+                <HcIcon name="check-double" />
                 <span>提交保存</span>
             </el-button>
         </template>
@@ -163,66 +168,66 @@
 </template>
 
 <script setup>
-import {nextTick, onActivated, ref, onDeactivated,watch} from "vue"
-import {useRouter, useRoute} from 'vue-router'
-import annualApi from '~api/program/annual.js';
-import costApi from '~api/project/cost.js';
-import {getChildList} from '~api/system/parameter.js';
-import {getArrValue,getObjValue,formValidate} from "js-fast-way"
-import {getProjectList, getDictInfo} from "~api/other";
+import { nextTick, onActivated, onDeactivated, ref, watch } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+import annualApi from '~api/program/annual.js'
+import costApi from '~api/project/cost.js'
+import { getChildList } from '~api/system/parameter.js'
+import { formValidate, getArrValue, getObjValue } from 'js-fast-way'
+import { getDictInfo, getProjectList } from '~api/other'
 const router = useRouter()
 const useRoutes = useRoute()
 const dataId = ref(useRoutes?.query?.id ?? '')
 const dataType = ref(useRoutes?.query?.type ?? '')
 //页面激活
 onActivated(() => {
-    editableTabsValue.value='0'
+    editableTabsValue.value = '0'
     setFormTabsStyle()
     windowResize()
     dataId.value = useRoutes?.query?.id ?? ''
     dataType.value = useRoutes?.query?.type ?? ''
-    if(dataId.value.length>0){
+    if (dataId.value.length > 0) {
         getDetail()
-    }else{
-       formModel.value={}
-        incomeTable.value=[{}]
-        costTable.value=[{}]
-        betweenTime.value=[]
+    } else {
+       formModel.value = {}
+        incomeTable.value = [{}]
+        costTable.value = [{}]
+        betweenTime.value = []
     }
     getProjectData()
     getIncomeType()
     getBudgetTypeList()
 })
-const costTable=ref([])
-const incomeTable=ref([])
+const costTable = ref([])
+const incomeTable = ref([])
 //深度监听
 watch(() => [
     costTable.value,
-    incomeTable.value
-], ([cost,income]) => {
-    formModel.value.incomeList=cost
-    formModel.value.disburseList=income
+    incomeTable.value,
+], ([cost, income]) => {
+    formModel.value.incomeList = cost
+    formModel.value.disburseList = income
  
-}, {deep: true})
-const getDetail = async() => {
-    const {error, code, data} = await annualApi.getAnnualBudget({id:dataId.value})
+}, { deep: true })
+const getDetail = async () => {
+    const { error, code, data } = await annualApi.getAnnualBudget({ id:dataId.value })
     if (!error && code === 200) {
-        formModel.value=getObjValue(data)
-        incomeTable.value=data?.incomeList.length>0?data?.incomeList:[{}]
-        costTable.value=data?.disburseList.length>0?data?.disburseList:[{}]
+        formModel.value = getObjValue(data)
+        incomeTable.value = data?.incomeList.length > 0 ? data?.incomeList : [{}]
+        costTable.value = data?.disburseList.length > 0 ? data?.disburseList : [{}]
         
-        betweenTime.value[0]=data['budgetStartTime']
-        betweenTime.value[1]=data['budgetEndTime']
+        betweenTime.value[0] = data['budgetStartTime']
+        betweenTime.value[1] = data['budgetEndTime']
        
     } else {
-        formModel.value={}
+        formModel.value = {}
     }
 }
 
 //获取项目数据
 const projectData = ref([])
 const getProjectData = async () => {
-    const {error, code, data} = await  annualApi.getProjectList()
+    const { error, code, data } = await annualApi.getProjectList()
     //判断状态
     if (!error && code === 200) {
         projectData.value = getArrValue(data)
@@ -230,18 +235,18 @@ const getProjectData = async () => {
         projectData.value = []
     }
 }
-const getprojectType=(row)=>{
+const getprojectType = (row)=>{
     projectData.value.forEach((ele)=>{
-        if(row.projectId===ele.id){
-            row.contractTypeValue=ele.contractTypeValue
-            row.projectTypeValue=ele.projectTypeValue
+        if (row.projectId === ele.id) {
+            row.contractTypeValue = ele.contractTypeValue
+            row.projectTypeValue = ele.projectTypeValue
         }
     })
 }
 //收入类型字典
 const incomeTypeData = ref([])
 const getIncomeType = async () => {
-    const {error, code, data} = await getDictInfo('project_income_type')
+    const { error, code, data } = await getDictInfo('project_income_type')
     //判断状态
     if (!error && code === 200) {
         incomeTypeData.value = getArrValue(data)
@@ -250,31 +255,31 @@ const getIncomeType = async () => {
     }
 }
 //获取预算分类getSecondSubject
-const budgetTypeList=ref([])
-const getBudgetTypeList=async()=>{
-    const {error, code, data} = await costApi.getSecondSubject()
+const budgetTypeList = ref([])
+const getBudgetTypeList = async ()=>{
+    const { error, code, data } = await costApi.getSecondSubject()
     if (!error && code === 200) {
-        budgetTypeList.value=getArrValue(data)
+        budgetTypeList.value = getArrValue(data)
      
 
     } else {
-        budgetTypeList.value={}
+        budgetTypeList.value = {}
     }
 }
-const secondBudgetTypeList=ref({})
-const getsecondBudgetTypeList=async(val,index)=>{
-    let id=''
+const secondBudgetTypeList = ref({})
+const getsecondBudgetTypeList = async (val, index)=>{
+    let id = ''
     budgetTypeList.value.forEach((ele)=>{
-        if(ele.dictValue===val){
-            id=ele.id
+        if (ele.dictValue === val) {
+            id = ele.id
         }
     })
-    if(id.length>0){
-        const {error, code, data} = await costApi.getChlidList({parentId:id,type:1})
+    if (id.length > 0) {
+        const { error, code, data } = await costApi.getChlidList({ parentId:id, type:1 })
         if (!error && code === 200) {
-            secondBudgetTypeList.value[index]=getArrValue(data)
+            secondBudgetTypeList.value[index] = getArrValue(data)
         } else {
-            secondBudgetTypeList.value[index]=[]
+            secondBudgetTypeList.value[index] = []
            
         }
     }
@@ -298,12 +303,12 @@ const formModel = ref({
     key1: '', key2: '', key3: '', key4: '', key5: '',
 })
 const formRules = {
-    name: [{required: true, message: '请输入预算名称', trigger: 'change'}],
+    name: [{ required: true, message: '请输入预算名称', trigger: 'change' }],
 }
 
 //日期时间被选择
 const betweenTime = ref([])
-const betweenTimeUpdate = ({arr, query}) => {
+const betweenTimeUpdate = ({ arr, query }) => {
     betweenTime.value = arr
     formModel.value.budgetStartTime = arr[0]
     formModel.value.budgetEndTime = arr[1] 
@@ -311,7 +316,7 @@ const betweenTimeUpdate = ({arr, query}) => {
 
 //监听浏览器窗口变化
 const windowResize = () => {
-    window.addEventListener("resize", resizeEvent);
+    window.addEventListener('resize', resizeEvent)
 }
 const resizeEvent = () => {
     window.requestAnimationFrame(() => {
@@ -319,69 +324,69 @@ const resizeEvent = () => {
     })
 }
 //tabs切换
-const editableTabsValue=ref('0')
+const editableTabsValue = ref('0')
 //获取数据
 const tableColumn = [
-    {key: 'projectId', name: '项目名称', minWidth: '180', align: 'center'},
-    {key: 'incomeType', name: '收入类别', width: '180', align: 'center'},
-    {key: 'projectTypeValue', name: '项目类别', width: '180', align: 'center'},
-    {key: 'contractTypeValue', name: '产品线', width: '180', align: 'center'},
-    {key: 'predictSignDate', name: '预计签单时间', width: '220', align: 'center'},
-    {key: 'predictContractMoney', name: '预计新签合同额', width: '180', align: 'center'},
-    {key: 'predictAnnualReturned', name: '预计本年度回款额', width: '180', align: 'center'},
-    {key: 'action', name: '操作', width: '200', align: 'center', fixed: 'right'},
+    { key: 'projectId', name: '项目名称', minWidth: '180', align: 'center' },
+    { key: 'incomeType', name: '收入类别', width: '180', align: 'center' },
+    { key: 'projectTypeValue', name: '项目类别', width: '180', align: 'center' },
+    { key: 'contractTypeValue', name: '产品线', width: '180', align: 'center' },
+    { key: 'predictSignDate', name: '预计签单时间', width: '220', align: 'center' },
+    { key: 'predictContractMoney', name: '预计新签合同额', width: '180', align: 'center' },
+    { key: 'predictAnnualReturned', name: '预计本年度回款额', width: '180', align: 'center' },
+    { key: 'action', name: '操作', width: '200', align: 'center', fixed: 'right' },
 ]
 
 
 //切换tab页
-const changeTab=(val)=>{
-    console.log(val,'val');
-    console.log(incomeTable.value,'incomeTable');
-    console.log(costTable.value,'incomeTable');
+const changeTab = (val)=>{
+    console.log(val, 'val')
+    console.log(incomeTable.value, 'incomeTable')
+    console.log(costTable.value, 'incomeTable')
 }
 
 const tableData = ref([
-    {id: 1}, {id: 2},
+    { id: 1 }, { id: 2 },
 ])
-const addRow=()=>{
+const addRow = ()=>{
     incomeTable.value.push({})
 }
-const delRow=(index)=>{
+const delRow = (index)=>{
     incomeTable.value.splice(index, 1)
-   if(incomeTable.value.length==0){
+   if (incomeTable.value.length == 0) {
         incomeTable.value.push({})
     }
  
 }
-const addRow1=()=>{
+const addRow1 = ()=>{
     costTable.value.push({})
 }
-const delRow1=(index)=>{
+const delRow1 = (index)=>{
     costTable.value.splice(index, 1)
-    if(costTable.value.length==0){
+    if (costTable.value.length == 0) {
         costTable.value.push({})
     }
  
 }
 const tableColumn1 = [
-    {key: 'budgetSubject', name: '预算科目(一级)', minWidth: '180', align: 'center'},
-    {key: 'secondSubject', name: '二级科目', minWidth: '180', align: 'center'},
-    {key: 'january', name: '1月', width: '100', align: 'center'},
-    {key: 'february', name: '2月', width: '100', align: 'center'},
-    {key: 'march', name: '3月', width: '100', align: 'center'},
-    {key: 'april', name: '4月', width: '100', align: 'center'},
-    {key: 'may', name: '5月', width: '100', align: 'center'},
-    {key: 'june', name: '6月', width: '100', align: 'center'},
-    {key: 'july', name: '7月', width: '100', align: 'center'},
-    {key: 'august', name: '8月', width: '100', align: 'center'},
-    {key: 'september', name: '9月', width: '100', align: 'center'},
-    {key: 'october', name: '10月', width: '100', align: 'center'},
-    {key: 'november', name: '11月', width: '100', align: 'center'},
-    {key: 'december', name: '12月', width: '100', align: 'center'},
-    {key: 'action', name: '操作', width: '200', align: 'center', fixed: 'right'},
+    { key: 'budgetSubject', name: '预算科目(一级)', minWidth: '180', align: 'center' },
+    { key: 'secondSubject', name: '二级科目', minWidth: '180', align: 'center' },
+    { key: 'january', name: '1月', width: '100', align: 'center' },
+    { key: 'february', name: '2月', width: '100', align: 'center' },
+    { key: 'march', name: '3月', width: '100', align: 'center' },
+    { key: 'april', name: '4月', width: '100', align: 'center' },
+    { key: 'may', name: '5月', width: '100', align: 'center' },
+    { key: 'june', name: '6月', width: '100', align: 'center' },
+    { key: 'july', name: '7月', width: '100', align: 'center' },
+    { key: 'august', name: '8月', width: '100', align: 'center' },
+    { key: 'september', name: '9月', width: '100', align: 'center' },
+    { key: 'october', name: '10月', width: '100', align: 'center' },
+    { key: 'november', name: '11月', width: '100', align: 'center' },
+    { key: 'december', name: '12月', width: '100', align: 'center' },
+    { key: 'action', name: '操作', width: '200', align: 'center', fixed: 'right' },
 ]
 const tableData2 = ref([
-    {id: 1}, {id: 2},
+    { id: 1 }, { id: 2 },
 ])
 
 
@@ -391,11 +396,11 @@ const goBackClick = () => {
 }
 
 //新增
-const addAnnualBudget=async(obj)=>{
-    console.log(obj,'新增');
-    saveLoaing.value=true;
-    const {error, code, data,msg} = await annualApi.addAnnualBudget( obj)
-    saveLoaing.value=false;
+const addAnnualBudget = async (obj)=>{
+    console.log(obj, '新增')
+    saveLoaing.value = true
+    const { error, code, data, msg } = await annualApi.addAnnualBudget( obj)
+    saveLoaing.value = false
     if (!error && code === 200) {
         window.$message.success(msg)
         router.push({
@@ -405,10 +410,10 @@ const addAnnualBudget=async(obj)=>{
 
 }
 //修改
-const updateAnnualBudget=async(obj)=>{
-    saveLoaing.value=true;
-    const {error, code, data,msg} = await annualApi.updateAnnualBudget( obj)
-    saveLoaing.value=false;
+const updateAnnualBudget = async (obj)=>{
+    saveLoaing.value = true
+    const { error, code, data, msg } = await annualApi.updateAnnualBudget( obj)
+    saveLoaing.value = false
     if (!error && code === 200) {
        window.$message.success(msg)
        router.push({
@@ -417,28 +422,26 @@ const updateAnnualBudget=async(obj)=>{
     } 
 
 }
-const isEmptyObj=(obj)=> {
-    let arr = Object.keys(obj);
-    return(arr.length == 0)
+const isEmptyObj = (obj)=> {
+    let arr = Object.keys(obj)
+    return (arr.length == 0)
 
 }  
 //提交保存
-const saveLoaing=ref(false)
-const saveClick = async() => {
+const saveLoaing = ref(false)
+const saveClick = async () => {
     const res = await formValidate(formRef.value)
-    console.log(formModel.value,'formModel.value');
-    formModel.value.incomeList=incomeTable.value
-    formModel.value.disburseList=costTable.value
-    if(res){
-        if(isEmptyObj(formModel.value.disburseList[0])){
-        formModel.value.disburseList=[]
-        }
-         if(isEmptyObj(formModel.value.incomeList[0])){
-            formModel.value.incomeList=[]
-        }
-        if(dataType.value=='edit'){
+
+    formModel.value.incomeList = incomeTable.value
+    formModel.value.disburseList = costTable.value
+    if (res) {
+        //限制空数据提交
+        formModel.value.disburseList = formModel.value.disburseList.filter((item)=>!isEmptyObj(item))
+        formModel.value.incomeList = formModel.value.incomeList.filter((item)=>!isEmptyObj(item))
+
+        if (dataType.value == 'edit') {
             updateAnnualBudget(formModel.value)
-        }else{
+        } else {
             addAnnualBudget(formModel.value)
         }
     }
@@ -447,7 +450,7 @@ const saveClick = async() => {
 
 //被卸载时
 onDeactivated(() => {
-    window.removeEventListener("resize",resizeEvent);
+    window.removeEventListener('resize', resizeEvent)
 })
 </script>