fix : 修复需求上报排版、费用分摊传参、需求汇总查询字段

This commit is contained in:
2024-06-28 22:37:30 +08:00
parent 16c4e07a86
commit 942fc219e2
3 changed files with 165 additions and 101 deletions

View File

@@ -36,12 +36,12 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="researchPersonnel" label="研发人员" width="230">
<el-table-column prop="researchPersonnelId" label="研发人员" width="230">
<template #default="scope">
<el-form-item prop="researchPersonnel">
{{ scope.row.researchPersonnelName }}
<el-form-item prop="researchPersonnelId">
{{ scope.row.researchPersonnel }}
<el-button @click="showPersonnelPicker(scope.row,scope.$index)">
{{ scope.row.researchPersonnelName ? '更改' : '请选择研发人员' }}
{{ scope.row.researchPersonnel ? '更改' : '请选择研发人员' }}
</el-button>
</el-form-item>
</template>
@@ -163,7 +163,7 @@ const rules = reactive({
shareName: [{required: true, message: '请输入分摊名称', trigger: ['blur', 'change']}],
apportionmentMonth: [{required: true, message: '请选择月份', trigger: ['blur', 'change']}],
projectId: [{required: true, message: '请选择项目名称', trigger: ['blur', 'change']}],
// researchPersonnel: [{required: true, message: '请选择研发人员', trigger: ['blur', 'change']}],
// researchPersonnelId: [{required: true, message: '请选择研发人员', trigger: ['blur', 'change']}],
wagesPayable: [{required: true, message: '请输入应发工资', trigger: ['blur', 'change']}],
performance: [{required: true, message: '请输入绩效', trigger: ['blur', 'change']}],
reserveFund: [{required: true, message: '请输入公积金', trigger: ['blur', 'change']}],
@@ -187,7 +187,7 @@ const formData = ref({
{
projectId: '',
projectName: '',
researchPersonnel: '',
researchPersonnelId: '',
wagesPayable: null,
performance: null,
reserveFund: null,
@@ -216,8 +216,8 @@ const selected = (select) => {
}
formData.value.tableData.forEach((item, index) => {
if (index === currentIndex.value) {
item.researchPersonnel = select[0].id
item.researchPersonnelName = select[0].name
item.researchPersonnelId = select[0].id
item.researchPersonnel = select[0].name
}
})
}
@@ -242,8 +242,8 @@ const handleAdd = () => {
let row = {
projectId: '',
projectName: '',
researchPersonnelId: '',
researchPersonnel: '',
researchPersonnelName: '',
wagesPayable: null,
performance: null,
reserveFund: null,
@@ -259,8 +259,8 @@ const handleCopy = (row) => {
let copyObj = {
projectId: row.projectId,
projectName: '',
researchPersonnelId: row.researchPersonnelId,
researchPersonnel: row.researchPersonnel,
researchPersonnelName: row.researchPersonnelName,
wagesPayable: row.wagesPayable,
performance: row.performance,
reserveFund: row.reserveFund,
@@ -284,15 +284,15 @@ const handleSubmit = (instance) => {
type: 'error'
})
}
let researchPersonnel = ''
let researchPersonnelId = ''
formData.value.tableData.forEach(item => {
item.projectName = getProjectName(item.projectId)
researchPersonnel = item.researchPersonnel
researchPersonnelId = item.researchPersonnelId
if (item.performance == 0) {
item.performance = null
}
})
if (!researchPersonnel) {
if (!researchPersonnelId) {
ElNotification({
title: '提示',
message: '请选择研发人员',
@@ -333,18 +333,18 @@ const handleResubmit = (instance) => {
}
let newUsrAllocationsObj = {}
let newUsrAllocationsObjArray = []
let researchPersonnel = ''
let researchPersonnelId = ''
formData.value.tableData.forEach(item => {
item.allocationId = formData.value.allocationId
item.projectName = getProjectName(item.projectId)
researchPersonnel = item.researchPersonnel
researchPersonnelId = item.researchPersonnelId
if (item.performance == 0) {
item.performance = null
}
newUsrAllocationsObj = {
projectId: item.projectId,
projectName: item.projectName,
researchPersonnel: item.researchPersonnel,
researchPersonnelId: item.researchPersonnelId,
wagesPayable: item.wagesPayable,
performance: item.performance,
reserveFund: item.reserveFund,
@@ -355,7 +355,7 @@ const handleResubmit = (instance) => {
}
newUsrAllocationsObjArray.push(newUsrAllocationsObj)
})
if (!researchPersonnel) {
if (!researchPersonnelId) {
ElNotification({
title: '提示',
message: '请选择研发人员',
@@ -409,7 +409,7 @@ const getDetailList = async () => {
const {code, data, msg} = await getAllocationDetailList(params)
if (code === 1000) {
data.rows.forEach(item => {
item.researchPersonnel = Number(item.researchPersonnel)
item.researchPersonnelId = Number(item.researchPersonnelId)
})
formData.value.tableData = data.rows
nextTick(() => {

View File

@@ -1,40 +1,16 @@
<template>
<div class="detail-block" v-loading="loading">
<baseTitle title="需求上报"></baseTitle>
<el-form :model="formData" ref="summaryForm" :rules="rules" label-width="140">
<el-row gutter="50">
<el-col :span="12">
<el-form-item label="项目名称" prop="projectName">
<el-form :model="formData" ref="summaryForm" :rules="rules">
<el-row gutter="15">
<!-- label-width="140"-->
<el-col :span="8">
<el-form-item label="项目名称" prop="projectName" label-width="105">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6" v-if="!route.query.id">
<el-form-item label="是否专项资金" prop="isSpecialFund">
<el-radio-group v-model="formData.isSpecialFund" @change="specialFundChange">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="5" v-if="route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金" prop="specialFundId">
<span>{{ formData.specialFund }}</span>
</el-form-item>
</el-col>
<el-col :span="6" v-if="!route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金" prop="specialFundId">
<el-select v-model="formData.specialFundId" placeholder="请选择专项资金" clearable filterable>
<el-option
v-for="item in specialFundOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="开始时间" prop="startTime">
<el-col :span="8">
<el-form-item label="开始时间" prop="startTime" label-width="145">
<el-config-provider>
<el-date-picker
v-model="formData.startTime"
@@ -47,9 +23,9 @@
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="8">
<el-form-item label="结束时间" prop="endTime"
:title="!formData.startTime?'请先选择开始时间!':''">
:title="!formData.startTime?'请先选择开始时间!':''" label-width="134">
<el-config-provider>
<el-date-picker
v-model="formData.endTime"
@@ -64,8 +40,8 @@
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="项目类型" prop="projectType">
<el-col :span="8">
<el-form-item label="项目类型" prop="projectType" label-width="105">
<el-select v-model="formData.projectType" placeholder="请选择项目类型" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('project_type')"
@@ -76,8 +52,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="研发主体" prop="rdSubject">
<el-col :span="8">
<el-form-item label="研发主体" prop="rdSubject" label-width="145">
<el-select v-model="formData.rdSubject" placeholder="请选择研发主体" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('rd_subject')"
@@ -88,8 +64,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出资类型" prop="investmentType">
<el-col :span="8">
<el-form-item label="出资类型" prop="investmentType" label-width="134">
<el-select v-model="formData.investmentType" placeholder="请选择出资类型" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('invest_type')"
@@ -100,8 +76,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目影响" prop="projectImpact">
<el-col :span="8">
<el-form-item label="项目影响" prop="projectImpact" label-width="105">
<el-select v-model="formData.projectImpact" placeholder="请选择项目影响" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('project_impact')"
@@ -112,8 +88,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属业务板块" prop="businessSegment">
<el-col :span="8">
<el-form-item label="所属业务板块" prop="businessSegment" label-width="145">
<el-select v-model="formData.businessSegment" placeholder="请选择所属业务板块" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('business_segment')"
@@ -124,19 +100,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="预期成果形式" prop="resultForm">
<el-select v-model="formData.resultForm" placeholder="请选择预期成果形式" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('result_form')"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item label="预期技术标准制定" prop="technicalStandard">
<el-select v-model="formData.technicalStandard" placeholder="请选择预期技术标准制定" clearable filterable>
<el-option
@@ -149,7 +113,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产学研联合" prop="industryUniversityResearch">
<el-form-item label="产学研联合" prop="industryUniversityResearch" label-width="105">
<el-radio-group v-model="formData.industryUniversityResearch">
<el-radio v-for="item in cacheStore.getDict('industry_university')"
:key="item.value"
@@ -168,7 +132,32 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="!route.query.id && formData.isSpecialFund?4:12" v-if="!route.query.id">
<el-form-item label="是否专项资金" prop="isSpecialFund" >
<el-radio-group v-model="formData.isSpecialFund" @change="specialFundChange">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8" v-if="route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金名称" prop="specialFundId">
<span>{{ formData.specialFund }}</span>
</el-form-item>
</el-col>
<el-col :span="8" v-if="!route.query.id && formData.isSpecialFund" >
<el-form-item label="专项资金名称" prop="specialFundId" label-width="135">
<el-select v-model="formData.specialFundId" placeholder="请选择专项资金名称" clearable filterable>
<el-option
v-for="item in specialFundOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="知识产权状况" prop="intellectualProperty">
<el-select v-model="formData.intellectualProperty" placeholder="请选择知识产权状况" clearable filterable>
<el-option
@@ -180,52 +169,64 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="预期成果形式" prop="resultForm">
<el-select v-model="formData.resultForm" placeholder="请选择预期成果形式" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('result_form')"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<baseTitle title="预期知识产权"></baseTitle>
</el-col>
<el-col :span="6">
<el-form-item label="发明专利(项)" prop="inventionPatent">
<el-col :span="8">
<el-form-item label="发明专利(项)" prop="inventionPatent" label-width="107">
<el-input-number v-model="formData.inventionPatent" placeholder="请输入发明专利" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="8">
<el-form-item label="实用性新型专利(项)" prop="newPatent" label-width="145">
<el-input-number v-model="formData.newPatent" placeholder="请输入实用性新型专利" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
<el-col :span="8">
<el-form-item label="软件著作权(项)" prop="softwareCopyright" label-width="135">
<el-input-number v-model="formData.softwareCopyright" placeholder="请输入软件著作权" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="著作权(项)" prop="copyright">
<el-col :span="8">
<el-form-item label="著作权(项)" prop="copyright" label-width="107">
<el-input-number v-model="formData.copyright" placeholder="请输入著作权" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="其他(项)" prop="other">
<el-col :span="8">
<el-form-item label="其他(项)" prop="other" label-width="145">
<el-input-number v-model="formData.other" placeholder="请输入其他" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="经济概算(元)" prop="economicEstimate">
<el-col :span="8">
<el-form-item label="经济概算(元)" prop="economicEstimate" label-width="135">
<el-input-number v-model="formData.economicEstimate" placeholder="请输入经济概算" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.isSpecialFund!==false">
<el-form-item label="其中申请公司总部科技创新专项资金(元)" prop="specialFundAmount" label-width="280">
<el-col :span="16" v-if="formData.isSpecialFund">
<el-form-item label="其中申请公司总部科技创新专项资金(元)">
<el-input-number v-model="formData.specialFundAmount" placeholder="请输入专项资金" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="现有业务描述" prop="serviceDescription">
<el-form-item label="现有业务描述" prop="serviceDescription" label-width="107">
<el-input v-model="formData.serviceDescription" placeholder="请输入现有业务描述" rows="4" type="textarea"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="研发项目关键内容描述" prop="contentDescription" label-width="140">
<el-form-item label="研发项目关键内容描述" prop="contentDescription" label-width="107">
<el-input v-model="formData.contentDescription" placeholder="请输入研发项目关键内容描述" rows="4" type="textarea"
clearable></el-input>
</el-form-item>
@@ -337,11 +338,11 @@ const getIsFund = async () => {
})
}
const getFundName = (id) => {
let label=''
let label = ''
specialFundOption.value.forEach(item => {
if(item.value==id){
label=item.label
}
if (item.value == id) {
label = item.label
}
})
return label
}
@@ -448,8 +449,8 @@ const handleResubmit = debounce(() => {
} else {
attachment.value.clearValidate()
}
if (formData.value.isSpecialFund&&formData.value.specialFund === null) {
formData.value.specialFund=getFundName(formData.value.specialFundId)
if (formData.value.isSpecialFund && formData.value.specialFund === null) {
formData.value.specialFund = getFundName(formData.value.specialFundId)
}
let params = {
...formData.value,
@@ -482,7 +483,7 @@ const getDetailInfo = async () => {
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
res.data.formData.specialFundId= res.data.formData.specialFundId===0?null:res.data.formData.specialFundId
res.data.formData.specialFundId = res.data.formData.specialFundId === 0 ? null : res.data.formData.specialFundId
formData.value = res.data.formData
loading.value = false
}

View File

@@ -8,6 +8,35 @@ import fvSelect from '@/fvcomponents/fvSelect/index.vue'
const tableIns = ref()
const router = useRouter()
const shortcuts = [
{
text: '上周',
value: () => {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
return [start, end]
},
},
{
text: '上月',
value: () => {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
return [start, end]
},
},
{
text: '三月前',
value: () => {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
return [start, end]
},
},
]
const searchConfig = reactive([
{
label: '征集名称',
@@ -32,6 +61,18 @@ const searchConfig = reactive([
},
colProps: {}
},
{
label: '项目影响',
prop: 'projectImpact',
component: shallowRef(fvSelect),
props: {
cacheKey: 'project_impact',
placeholder: '请选择项目影响',
clearable: true,
filterable: true,
},
colProps: {}
},
{
label: '研发主体',
prop: 'rdSubject',
@@ -40,9 +81,31 @@ const searchConfig = reactive([
placeholder: '请选择研发主体',
cacheKey: 'rd_subject',
clearable: true,
filterable: true
},
colProps: {}
filterable: true,
}
},
{
label: '起止时间',
prop: 'dateValue',
component: 'el-date-picker',
props: {
clearable: true,
type: 'daterange',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
shortcuts: shortcuts
}
},
{
label: '状态',
prop: 'state',
component: shallowRef(fvSelect),
props: {
placeholder: '请选择状态',
clearable: true,
cacheKey: 'project_initiation'
}
},
// {
// label: '项目影响',