|
@@ -11,33 +11,33 @@
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <el-form-item label="合同" prop="key1">
|
|
|
+ <el-form-item label="合同" prop="annualContractTarget">
|
|
|
<el-tooltip content="年度合同指标">
|
|
|
- <el-input v-model="formModel.key1" placeholder="年度合同指标" disabled/>
|
|
|
+ <el-input v-model="formModel.annualContractTarget" placeholder="年度合同指标" disabled/>
|
|
|
</el-tooltip>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="利润" prop="key2">
|
|
|
+ <el-form-item label="利润" prop="annualProfitTarget">
|
|
|
<el-tooltip content="年度利润指标">
|
|
|
- <el-input v-model="formModel.key2" placeholder="年度利润指标" disabled/>
|
|
|
+ <el-input v-model="formModel.annualProfitTarget" placeholder="年度利润指标" disabled/>
|
|
|
</el-tooltip>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="预算" prop="key3">
|
|
|
+ <el-form-item label="预算" prop="totalBudget">
|
|
|
<el-tooltip content="总经营预算">
|
|
|
- <el-input v-model="formModel.key3" placeholder="总经营预算" disabled>
|
|
|
+ <el-input v-model="formModel.totalBudget" placeholder="总经营预算" disabled>
|
|
|
<template #append>元</template>
|
|
|
</el-input>
|
|
|
</el-tooltip>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="工资" prop="key4">
|
|
|
+ <el-form-item label="工资" prop="staffCost">
|
|
|
<el-tooltip content="人员成本">
|
|
|
- <el-input v-model="formModel.key4" placeholder="人员成本" disabled>
|
|
|
+ <el-input v-model="formModel.staffCost" placeholder="人员成本" disabled>
|
|
|
<template #append>元</template>
|
|
|
</el-input>
|
|
|
</el-tooltip>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="综合" prop="key5">
|
|
|
+ <el-form-item label="综合" prop="manageDisburse">
|
|
|
<el-tooltip content="管理支出">
|
|
|
- <el-input v-model="formModel.key5" placeholder="管理支出" disabled>
|
|
|
+ <el-input v-model="formModel.manageDisburse" placeholder="管理支出" disabled>
|
|
|
<template #append>元</template>
|
|
|
</el-input>
|
|
|
</el-tooltip>
|
|
@@ -48,33 +48,32 @@
|
|
|
<div class="hc-program-annual-form-tabs" :style="tabsStyle">
|
|
|
<el-tabs type="border-card" class="form-tabs">
|
|
|
<el-tab-pane label="年度预算收入">
|
|
|
- <HcTable :isIndex="false" :column="tableColumn" :datas="tableData">
|
|
|
- <template #key1="{row,index}">
|
|
|
- <el-select v-model="row.key1">
|
|
|
- <el-option label="选项1" value="选项1"/>
|
|
|
- <el-option label="选项2" value="选项2"/>
|
|
|
+ <HcTable :isIndex="false" :column="tableColumn" :datas="formModel.incomeList">
|
|
|
+ <template #projectId="{row,index}">
|
|
|
+ <el-select v-model="row.projectId">
|
|
|
+ <el-option v-for="item in projectData" :label="item.projectName" :value="item.projectId"/>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
- <template #key2="{row,index}">
|
|
|
- <el-select v-model="row.key2">
|
|
|
- <el-option label="选项1" value="选项1"/>
|
|
|
- <el-option label="选项2" value="选项2"/>
|
|
|
+ <template #incomeType="{row,index}">
|
|
|
+ <el-select v-model="row.incomeType">
|
|
|
+ <el-option v-for="item in incomeTypeData" :label="item.dictName" :value="item.dictValue"/>
|
|
|
+
|
|
|
</el-select>
|
|
|
</template>
|
|
|
- <template #key3="{row,index}">
|
|
|
- <el-input v-model="row.key3" disabled/>
|
|
|
+ <template #projectTypeValue="{row,index}">
|
|
|
+ <el-input v-model="row.projectTypeValue" disabled/>
|
|
|
</template>
|
|
|
- <template #key4="{row,index}">
|
|
|
- <el-input v-model="row.key4" disabled/>
|
|
|
+ <template #contractTypeValue="{row,index}">
|
|
|
+ <el-input v-model="row.contractTypeValue" disabled/>
|
|
|
</template>
|
|
|
- <template #key5="{row,index}">
|
|
|
- <el-date-picker class="block" v-model="row.key5" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD"/>
|
|
|
+ <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>
|
|
|
- <template #key6="{row,index}">
|
|
|
- <el-input v-model="row.key6"/>
|
|
|
+ <template #predictContractMoney="{row,index}">
|
|
|
+ <el-input v-model="row.predictContractMoney"/>
|
|
|
</template>
|
|
|
- <template #key7="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #predictAnnualReturned="{row,index}">
|
|
|
+ <el-input v-model="row.predictAnnualReturned"/>
|
|
|
</template>
|
|
|
<template #action="{row,index}">
|
|
|
<el-button size="small" type="primary">
|
|
@@ -89,54 +88,52 @@
|
|
|
</HcTable>
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="年度预算支出">
|
|
|
- <HcTable :isIndex="false" :column="tableColumn1" :datas="tableData2">
|
|
|
- <template #key1="{row,index}">
|
|
|
- <el-select v-model="row.key1">
|
|
|
- <el-option label="选项1" value="选项1"/>
|
|
|
- <el-option label="选项2" value="选项2"/>
|
|
|
+ <HcTable :isIndex="false" :column="tableColumn1" :datas="formModel.disburseList">
|
|
|
+ <template #budgetSubject="{row,index}">
|
|
|
+ <el-select v-model="row.budgetSubject">
|
|
|
+ <el-option v-for="item in budgetTypeList" :label="item.dictName" :value="item.dictValue"/>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
- <template #key2="{row,index}">
|
|
|
- <el-select v-model="row.key2">
|
|
|
- <el-option label="选项1" value="选项1"/>
|
|
|
- <el-option label="选项2" value="选项2"/>
|
|
|
+ <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 #key3="{row,index}">
|
|
|
- <el-input v-model="row.key3"/>
|
|
|
+ <template #january="{row,index}">
|
|
|
+ <el-input v-model="row.january"/>
|
|
|
</template>
|
|
|
- <template #key4="{row,index}">
|
|
|
- <el-input v-model="row.key4"/>
|
|
|
+ <template #february="{row,index}">
|
|
|
+ <el-input v-model="row.february"/>
|
|
|
</template>
|
|
|
- <template #key5="{row,index}">
|
|
|
- <el-input v-model="row.key4"/>
|
|
|
+ <template #march="{row,index}">
|
|
|
+ <el-input v-model="row.march"/>
|
|
|
</template>
|
|
|
- <template #key6="{row,index}">
|
|
|
- <el-input v-model="row.key6"/>
|
|
|
+ <template #april="{row,index}">
|
|
|
+ <el-input v-model="row.april"/>
|
|
|
</template>
|
|
|
- <template #key7="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #may="{row,index}">
|
|
|
+ <el-input v-model="row.may"/>
|
|
|
</template>
|
|
|
- <template #key8="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #june="{row,index}">
|
|
|
+ <el-input v-model="row.june"/>
|
|
|
</template>
|
|
|
- <template #key9="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #july="{row,index}">
|
|
|
+ <el-input v-model="row.july"/>
|
|
|
</template>
|
|
|
- <template #key10="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #august="{row,index}">
|
|
|
+ <el-input v-model="row.august"/>
|
|
|
</template>
|
|
|
- <template #key11="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #september="{row,index}">
|
|
|
+ <el-input v-model="row.september"/>
|
|
|
</template>
|
|
|
- <template #key12="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #october="{row,index}">
|
|
|
+ <el-input v-model="row.october"/>
|
|
|
</template>
|
|
|
- <template #key13="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #november="{row,index}">
|
|
|
+ <el-input v-model="row.november"/>
|
|
|
</template>
|
|
|
- <template #key14="{row,index}">
|
|
|
- <el-input v-model="row.key7"/>
|
|
|
+ <template #december="{row,index}">
|
|
|
+ <el-input v-model="row.december"/>
|
|
|
</template>
|
|
|
<template #action="{row,index}">
|
|
|
<el-button size="small" type="primary">
|
|
@@ -166,17 +163,95 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import {nextTick, onActivated, ref, onDeactivated} from "vue";
|
|
|
-import {useRouter} from 'vue-router'
|
|
|
-
|
|
|
+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} from "js-fast-way"
|
|
|
+import {getProjectList, getDictInfo} from "~api/other";
|
|
|
const router = useRouter()
|
|
|
-
|
|
|
+const useRoutes = useRoute()
|
|
|
+const dataId = ref(useRoutes?.query?.id ?? '')
|
|
|
+const dataType = ref(useRoutes?.query?.type ?? '')
|
|
|
//页面激活
|
|
|
onActivated(() => {
|
|
|
setFormTabsStyle()
|
|
|
windowResize()
|
|
|
+ getDetail()
|
|
|
+ getProjectData()
|
|
|
+ getIncomeType()
|
|
|
+ getBudgetTypeList()
|
|
|
})
|
|
|
|
|
|
+const getDetail = async() => {
|
|
|
+ const {error, code, data} = await annualApi.getAnnualBudget({id:dataId.value})
|
|
|
+ if (!error && code === 200) {
|
|
|
+ console.log(data,'data');
|
|
|
+ formModel.value=getObjValue(data)
|
|
|
+
|
|
|
+ betweenTime.value[0]=data['budgetStartTime']
|
|
|
+ betweenTime.value[1]=data['budgetEndTime']
|
|
|
+ } else {
|
|
|
+ formModel.value={}
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//获取项目数据
|
|
|
+const projectData = ref([])
|
|
|
+const getProjectData = async () => {
|
|
|
+ const {error, code, data} = await getProjectList()
|
|
|
+ //判断状态
|
|
|
+ if (!error && code === 200) {
|
|
|
+ projectData.value = getArrValue(data)
|
|
|
+ } else {
|
|
|
+ projectData.value = []
|
|
|
+ }
|
|
|
+}
|
|
|
+//收入类型字典
|
|
|
+const incomeTypeData = ref([])
|
|
|
+const getIncomeType = async () => {
|
|
|
+ const {error, code, data} = await getDictInfo('project_income_type')
|
|
|
+ //判断状态
|
|
|
+ if (!error && code === 200) {
|
|
|
+ incomeTypeData.value = getArrValue(data)
|
|
|
+ } else {
|
|
|
+ incomeTypeData.value = []
|
|
|
+ }
|
|
|
+}
|
|
|
+//获取预算分类getSecondSubject
|
|
|
+const budgetTypeList=ref([])
|
|
|
+const getBudgetTypeList=async()=>{
|
|
|
+ const {error, code, data} = await costApi.getSecondSubject()
|
|
|
+ if (!error && code === 200) {
|
|
|
+ budgetTypeList.value=getArrValue(data)
|
|
|
+
|
|
|
+
|
|
|
+ } else {
|
|
|
+ budgetTypeList.value={}
|
|
|
+ }
|
|
|
+}
|
|
|
+const secondBudgetTypeList=ref({})
|
|
|
+const getsecondBudgetTypeList=async(val,index)=>{
|
|
|
+ let id=''
|
|
|
+ budgetTypeList.value.forEach((ele)=>{
|
|
|
+ if(ele.dictValue===val){
|
|
|
+ id=ele.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(id.length>0){
|
|
|
+ const {error, code, data} = await costApi.getChlidList({parentId:id,type:1})
|
|
|
+ if (!error && code === 200) {
|
|
|
+ secondBudgetTypeList.value[index]=getArrValue(data)
|
|
|
+ } else {
|
|
|
+ secondBudgetTypeList.value[index]=[]
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
//设置表单tabs样式
|
|
|
const tabsStyle = ref('')
|
|
|
const setFormTabsStyle = () => {
|
|
@@ -195,7 +270,7 @@ const formModel = ref({
|
|
|
const formRules = {}
|
|
|
|
|
|
//日期时间被选择
|
|
|
-const betweenTime = ref(null)
|
|
|
+const betweenTime = ref([])
|
|
|
const betweenTimeUpdate = ({arr, query}) => {
|
|
|
betweenTime.value = arr
|
|
|
//formModel.value.betweenTime = query
|
|
@@ -213,13 +288,13 @@ const resizeEvent = () => {
|
|
|
|
|
|
//获取数据
|
|
|
const tableColumn = [
|
|
|
- {key: 'key1', name: '项目名称', minWidth: '180', align: 'center'},
|
|
|
- {key: 'key2', name: '收入类别', width: '180', align: 'center'},
|
|
|
- {key: 'key3', name: '项目类别', width: '180', align: 'center'},
|
|
|
- {key: 'key4', name: '产品线', width: '180', align: 'center'},
|
|
|
- {key: 'key5', name: '预计签单时间', width: '220', align: 'center'},
|
|
|
- {key: 'key6', name: '预计新签合同额', width: '180', align: 'center'},
|
|
|
- {key: 'key7', name: '预计本年度回款额', width: '180', align: 'center'},
|
|
|
+ {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: '170', align: 'center', fixed: 'right'},
|
|
|
]
|
|
|
const tableData = ref([
|
|
@@ -227,20 +302,20 @@ const tableData = ref([
|
|
|
])
|
|
|
|
|
|
const tableColumn1 = [
|
|
|
- {key: 'key1', name: '预算科目(一级)', minWidth: '180', align: 'center'},
|
|
|
- {key: 'key2', name: '二级科目', minWidth: '180', align: 'center'},
|
|
|
- {key: 'key3', name: '1月', width: '100', align: 'center'},
|
|
|
- {key: 'key4', name: '2月', width: '100', align: 'center'},
|
|
|
- {key: 'key5', name: '3月', width: '100', align: 'center'},
|
|
|
- {key: 'key6', name: '4月', width: '100', align: 'center'},
|
|
|
- {key: 'key7', name: '5月', width: '100', align: 'center'},
|
|
|
- {key: 'key8', name: '6月', width: '100', align: 'center'},
|
|
|
- {key: 'key9', name: '7月', width: '100', align: 'center'},
|
|
|
- {key: 'key10', name: '8月', width: '100', align: 'center'},
|
|
|
- {key: 'key11', name: '9月', width: '100', align: 'center'},
|
|
|
- {key: 'key12', name: '10月', width: '100', align: 'center'},
|
|
|
- {key: 'key13', name: '11月', width: '100', align: 'center'},
|
|
|
- {key: 'key14', name: '12月', width: '100', align: 'center'},
|
|
|
+ {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: '170', align: 'center', fixed: 'right'},
|
|
|
]
|
|
|
const tableData2 = ref([
|