feat : 项目验收新增字段
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-form :model="formData" ref="applyForm" :rules="rules" :label-position="labelPosition" style="margin-left: 5px">
|
<el-form :model="formData" ref="applyForm" :rules="rules" :label-position="labelPosition" :style="{marginLeft: label==='项目验收附件'?'25px':'5px'}">
|
||||||
<el-row>
|
<el-row>
|
||||||
<!-- <el-col :span="24">-->
|
<!-- <el-col :span="24">-->
|
||||||
<!-- <el-form-item :label="label" prop="attachment" >-->
|
<!-- <el-form-item :label="label" prop="attachment" >-->
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<el-button color="#DED0B2" style="margin-left: 10px"
|
<el-button color="#DED0B2" style="margin-left: 10px"
|
||||||
@click="handleCarbonCopy()" >立即抄送
|
@click="handleCarbonCopy()">立即抄送
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="process">
|
<div class="process">
|
||||||
@@ -290,23 +290,207 @@ const schema = computed(() => {
|
|||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
} else if (props.type == 'execute') {
|
} else if (props.type == 'execute') {
|
||||||
arr = [{
|
arr = [
|
||||||
label: '部门分管领导',
|
|
||||||
prop: 'optionalChargeLeadership',
|
{
|
||||||
colProps: {
|
label: '实际专利(项)',
|
||||||
span: 24
|
prop: 'actualNewPatent',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewPatent ? props.formData.actualNewPatent : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
},
|
},
|
||||||
labelWidth: 'left',
|
{
|
||||||
component: () => (
|
label: '实际软件著作权(项)',
|
||||||
<div>
|
prop: 'actualSoftwareCopyright',
|
||||||
{
|
colProps: {
|
||||||
props.formData.optionalChargeLeadership?.length > 0 ? props.formData.optionalChargeLeadership.map(item => {
|
span: 6
|
||||||
return <span>{item.name} </span>
|
},
|
||||||
}) : <span>{'--'}</span>
|
labelWidth: 'left',
|
||||||
}
|
component: () => (
|
||||||
</div>
|
<div>
|
||||||
)
|
{
|
||||||
},]
|
props.formData.actualSoftwareCopyright ? props.formData.actualSoftwareCopyright : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际技术标准(项)',
|
||||||
|
prop: 'actualTechnicalNorms',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualTechnicalNorms ? props.formData.actualTechnicalNorms : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新产品(项)',
|
||||||
|
prop: 'actualNewProduct',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewProduct ? props.formData.actualNewProduct : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新工艺(项)',
|
||||||
|
prop: 'actualNewProcess',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewProcess ? props.formData.actualNewProcess : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新装置(项)',
|
||||||
|
prop: 'actualNewDevice',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewDevice ? props.formData.actualNewDevice : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新材料(项)',
|
||||||
|
prop: 'actualNewMaterials',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewMaterials ? props.formData.actualNewMaterials : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际计算机软件(项)',
|
||||||
|
prop: 'actualComputerSoftware',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualComputerSoftware ? props.formData.actualComputerSoftware : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际论文论著(项)',
|
||||||
|
prop: 'actualThesis',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualThesis ? props.formData.actualThesis : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际研究报告(项)',
|
||||||
|
prop: 'actualResearchReport',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualResearchReport ? props.formData.actualResearchReport : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际商标(项)',
|
||||||
|
prop: 'actualTrademark',
|
||||||
|
colProps: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualTrademark ? props.formData.actualTrademark : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际其他(项)',
|
||||||
|
prop: 'actualOther',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div style="white-space: pre-wrap;">
|
||||||
|
{
|
||||||
|
props.formData.actualOther ? props.formData.actualOther : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
label: '部门分管领导',
|
||||||
|
prop: 'optionalChargeLeadership',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.optionalChargeLeadership?.length > 0 ? props.formData.optionalChargeLeadership.map(item => {
|
||||||
|
return <span>{item.name} </span>
|
||||||
|
}) : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
if (props.preProcessShow == 'EDIT') {
|
if (props.preProcessShow == 'EDIT') {
|
||||||
preProcess = {
|
preProcess = {
|
||||||
@@ -345,22 +529,22 @@ const schema = computed(() => {
|
|||||||
// })
|
// })
|
||||||
} else if (props.type == 'archivist') {
|
} else if (props.type == 'archivist') {
|
||||||
arr = [
|
arr = [
|
||||||
// {
|
// {
|
||||||
// label: '项目归档附件',
|
// label: '项目归档附件',
|
||||||
// prop: 'singleFile',
|
// prop: 'singleFile',
|
||||||
// colProps: {
|
// colProps: {
|
||||||
// span: 24
|
// span: 24
|
||||||
// },
|
// },
|
||||||
// labelWidth: 'left',
|
// labelWidth: 'left',
|
||||||
// component: () => {
|
// component: () => {
|
||||||
// let singleFileArray = [props.formData.singleFile]
|
// let singleFileArray = [props.formData.singleFile]
|
||||||
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
||||||
// tableConfig={editSingleTableConfig}
|
// tableConfig={editSingleTableConfig}
|
||||||
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
||||||
// </fvTable>
|
// </fvTable>
|
||||||
// : <span>--</span>
|
// : <span>--</span>
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
]
|
]
|
||||||
} else if (props.type == 'phase') {
|
} else if (props.type == 'phase') {
|
||||||
arr = [
|
arr = [
|
||||||
@@ -392,7 +576,7 @@ const filePreviewParam = ref({
|
|||||||
})
|
})
|
||||||
const filePreviewShow = ref(false)
|
const filePreviewShow = ref(false)
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const emit = defineEmits(['update:value','ccSend'])
|
const emit = defineEmits(['update:value', 'ccSend'])
|
||||||
const _value = computed({
|
const _value = computed({
|
||||||
get() {
|
get() {
|
||||||
return props.value;
|
return props.value;
|
||||||
|
|||||||
@@ -2,23 +2,97 @@
|
|||||||
<div class="apply-block">
|
<div class="apply-block">
|
||||||
<baseTitle :title="getTitleName(title)+'信息'"></baseTitle>
|
<baseTitle :title="getTitleName(title)+'信息'"></baseTitle>
|
||||||
<el-form :model="localFormData" ref="formRef" label-width="auto" v-if="step!=='50'" :rules="rules">
|
<el-form :model="localFormData" ref="formRef" label-width="auto" v-if="step!=='50'" :rules="rules">
|
||||||
<el-row>
|
<el-row v-if="title==='apply'">
|
||||||
<el-col :span="6" v-if="title==='apply'">
|
<el-col :span="6">
|
||||||
<!-- label-width="106"-->
|
<!-- label-width="106"-->
|
||||||
<el-form-item label="实际经费预算" prop="actualEconomicEstimate" label-width="111" >
|
<el-form-item label="实际经费预算" prop="actualEconomicEstimate" label-width="111">
|
||||||
<el-input v-model="localFormData.actualEconomicEstimate" placeholder="请输入实际经费预算">
|
<el-input v-model="localFormData.actualEconomicEstimate" placeholder="请输入实际经费预算">
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" v-if="title==='apply'&&detail">
|
<el-col :span="6" v-if="isSpecialFund">
|
||||||
<!-- label-width="106"-->
|
<!-- label-width="106"-->
|
||||||
<el-form-item label="实际专项资金" prop="specialFundAmount" label-width="121" >
|
<el-form-item label="实际专项资金" prop="specialFundAmount" label-width="121">
|
||||||
<el-input v-model="localFormData.specialFundAmount" placeholder="请输入实际专项资金">
|
<el-input v-model="localFormData.specialFundAmount" placeholder="请输入实际专项资金">
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row v-if="title==='check'">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际专利(项)" prop="actualNewPatent" label-width="130">
|
||||||
|
<el-input v-model="localFormData.actualNewPatent" placeholder="请输入实际专利数量" style="margin-right: 20px">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" style="margin-left: -10px">
|
||||||
|
<el-form-item label="实际软件著作权(项)" prop="actualSoftwareCopyright" label-width="150">
|
||||||
|
<el-input v-model="localFormData.actualSoftwareCopyright" placeholder="请输入实际软件著作权数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" style="margin-left: -5px">
|
||||||
|
<el-form-item label="实际技术标准(项)" prop="actualTechnicalNorms" label-width="150">
|
||||||
|
<el-input v-model="localFormData.actualTechnicalNorms" placeholder="请输入实际技术标准数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际新产品(项)" prop="actualNewProduct" label-width="160" style="margin-right: -10px">
|
||||||
|
<el-input v-model="localFormData.actualNewProduct" placeholder="请输入实际新产品数量" >
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际新工艺(项)" prop="actualNewProcess" label-width="130" >
|
||||||
|
<el-input v-model="localFormData.actualNewProcess" placeholder="请输入实际新工艺数量" style="margin-right: 20px">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" style="margin-left: -10px">
|
||||||
|
<el-form-item label="实际新装置(项)" prop="actualNewDevice" label-width="150">
|
||||||
|
<el-input v-model="localFormData.actualNewDevice" placeholder="请输入实际新装置数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" style="margin-left: -5px">
|
||||||
|
<el-form-item label="实际新材料(项)" prop="actualNewMaterials" label-width="150">
|
||||||
|
<el-input v-model="localFormData.actualNewMaterials" placeholder="请输入实际新材料数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际计算机软件(项)" prop="actualComputerSoftware" label-width="160" style="margin-right: -10px">
|
||||||
|
<el-input v-model="localFormData.actualComputerSoftware" placeholder="请输入实际计算机软件数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际论文论著(项)" prop="actualThesis" label-width="130" style="margin-right: 20px">
|
||||||
|
<el-input v-model="localFormData.actualThesis" placeholder="请输入实际论文论著数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" style="margin-left: -10px">
|
||||||
|
<el-form-item label="实际研究报告(项)" prop="actualResearchReport" label-width="150">
|
||||||
|
<el-input v-model="localFormData.actualResearchReport" placeholder="请输入实际研究报告数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" style="margin-left: -5px">
|
||||||
|
<el-form-item label="实际商标(项)" prop="actualTrademark" label-width="150">
|
||||||
|
<el-input v-model="localFormData.actualTrademark" placeholder="请输入实际商标数量">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="实际其他(项)" prop="actualOther" label-width="130" style="margin-right: 10px">
|
||||||
|
<el-input rows="4" type="textarea" v-model="localFormData.actualOther" placeholder="请输入实际其他项">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="6" v-if="title==='apply'">
|
<el-col :span="6" v-if="title==='apply'">
|
||||||
<!-- label-width="106"-->
|
<!-- label-width="106"-->
|
||||||
<el-form-item label="项目负责人" :required="true" prop="" label-width="111">
|
<el-form-item label="项目负责人" :required="true" prop="" label-width="111">
|
||||||
@@ -29,34 +103,41 @@
|
|||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</div>
|
</div>
|
||||||
<user-picker :multiple="false" ref="projectChargePersonUserPicker" title="请选择项目负责人"
|
<user-picker :multiple="false" ref="projectChargePersonUserPicker" title="请选择项目负责人"
|
||||||
v-model:value="projectChargePersonUserList" @ok="projectChargePersonUserPickerOk" @cancelOrClear="projectChargePersonUserPickerCancel"/>
|
v-model:value="projectChargePersonUserList" @ok="projectChargePersonUserPickerOk"
|
||||||
|
@cancelOrClear="projectChargePersonUserPickerCancel"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" v-if="title==='apply'">
|
<el-col :span="6" v-if="title==='apply'">
|
||||||
<el-form-item label="项目成员" :required="true" prop="" label-width="120"
|
<el-form-item label="项目成员" :required="true" prop="" label-width="120"
|
||||||
>
|
>
|
||||||
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowProjectPersonTable">
|
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowProjectPersonTable">
|
||||||
{{ projectPersonUserList?.length !== 0 ? '更改' : getProjectPerson(projectPersonUserList) ? '更改' : '请选择' }}
|
{{
|
||||||
|
projectPersonUserList?.length !== 0 ? '更改' : getProjectPerson(projectPersonUserList) ? '更改' : '请选择'
|
||||||
|
}}
|
||||||
</el-button>
|
</el-button>
|
||||||
<div v-for="(item,index) in getProjectPerson(projectPersonUserList)" :key="item.id" >
|
<div v-for="(item,index) in getProjectPerson(projectPersonUserList)" :key="item.id">
|
||||||
{{ item.name }}{{index != getProjectPerson(projectPersonUserList)?.length - 1 ? ',' : ''}}
|
{{ item.name }}{{ index != getProjectPerson(projectPersonUserList)?.length - 1 ? ',' : '' }}
|
||||||
</div>
|
</div>
|
||||||
<user-picker :multiple="true" ref="projectPersonUserPicker" title="请选择项目成员"
|
<user-picker :multiple="true" ref="projectPersonUserPicker" title="请选择项目成员"
|
||||||
v-model:value="projectPersonUserList" @ok="projectPersonUserPickerOk" @cancelOrClear="projectPersonUserPickerCancel"/>
|
v-model:value="projectPersonUserList" @ok="projectPersonUserPickerOk"
|
||||||
|
@cancelOrClear="projectPersonUserPickerCancel"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" v-if="title==='apply'||title==='check'">
|
<el-col :span="6" v-if="title==='apply'||title==='check'">
|
||||||
<el-form-item label="部门分管领导" :label-width="title==='check'?110:115">
|
<el-form-item label="部门分管领导" :label-width="title==='check'?130:115">
|
||||||
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
|
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
|
||||||
{{
|
{{
|
||||||
optionalChargeLeadershipList?.length !== 0 ? '更改' : getOptionalChargeLeadershipList(optionalChargeLeadershipList) ? '更改' : '请选择'
|
optionalChargeLeadershipList?.length !== 0 ? '更改' : getOptionalChargeLeadershipList(optionalChargeLeadershipList) ? '更改' : '请选择'
|
||||||
}}
|
}}
|
||||||
</el-button>
|
</el-button>
|
||||||
<div v-for="(item,index) in getOptionalChargeLeadershipList(optionalChargeLeadershipList)" :key="item.id">
|
<div v-for="(item,index) in getOptionalChargeLeadershipList(optionalChargeLeadershipList)" :key="item.id">
|
||||||
{{ item.name }}{{index != getOptionalChargeLeadershipList(optionalChargeLeadershipList)?.length - 1 ? ',' : ''}}
|
{{
|
||||||
|
item.name
|
||||||
|
}}{{ index != getOptionalChargeLeadershipList(optionalChargeLeadershipList)?.length - 1 ? ',' : '' }}
|
||||||
</div>
|
</div>
|
||||||
<user-picker :multiple="true" ref="optionalChargeLeadershipPickerRef" title="请选择部门分管领导"
|
<user-picker :multiple="true" ref="optionalChargeLeadershipPickerRef" title="请选择部门分管领导"
|
||||||
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk" @cancelOrClear="optionalChargeLeaderPickerCancel"/>
|
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk"
|
||||||
|
@cancelOrClear="optionalChargeLeaderPickerCancel"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24" v-if="preProcessShow === 'EDIT'">
|
<el-col :span="24" v-if="preProcessShow === 'EDIT'">
|
||||||
@@ -78,7 +159,9 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<!-- v-if="showAttachment"-->
|
<!-- v-if="showAttachment"-->
|
||||||
<AttachmentUpload ref="attachment" :label="getTitleName(title)+'附件'" :showTable="showTable"
|
<AttachmentUpload ref="attachment" :label="getTitleName(title)+'附件'" :showTable="showTable"
|
||||||
v-model:otherFileList="otherFileList" :tag="getTitleName(props.title)" :templateName="getTemplateName(props.title)" :templateDownloadBtnShow="props.title==='apply'?true:props.title==='check'"
|
v-model:otherFileList="otherFileList" :tag="getTitleName(props.title)"
|
||||||
|
:templateName="getTemplateName(props.title)"
|
||||||
|
:templateDownloadBtnShow="props.title==='apply'?true:props.title==='check'"
|
||||||
@getAttachment="getAttachment" v-model:singleList="singleList" :showSingleTable="showSingleTable"
|
@getAttachment="getAttachment" v-model:singleList="singleList" :showSingleTable="showSingleTable"
|
||||||
@getOtherFile="getOtherFile" :showFileList="true" :formData="localFormData"
|
@getOtherFile="getOtherFile" :showFileList="true" :formData="localFormData"
|
||||||
:preview="mode == 'resubmit'"/>
|
:preview="mode == 'resubmit'"/>
|
||||||
@@ -156,7 +239,7 @@
|
|||||||
<script setup lang="jsx">
|
<script setup lang="jsx">
|
||||||
import OperationRender from '@/views/workflow/common/OperationRender.vue'
|
import OperationRender from '@/views/workflow/common/OperationRender.vue'
|
||||||
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
|
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
|
||||||
import {ElNotification} from "element-plus";
|
import {ElLoading, ElNotification} from "element-plus";
|
||||||
import {
|
import {
|
||||||
getApplyProcess,
|
getApplyProcess,
|
||||||
getPreProcess,
|
getPreProcess,
|
||||||
@@ -173,7 +256,7 @@ import {useProcessStore} from '@/stores/processStore.js';
|
|||||||
import {useTagsView} from '@/stores/tagsview.js'
|
import {useTagsView} from '@/stores/tagsview.js'
|
||||||
import Paging from "@/components/pagination/index.vue";
|
import Paging from "@/components/pagination/index.vue";
|
||||||
import UserPicker from "@/views/workflow/process/common/UserPicker.vue";
|
import UserPicker from "@/views/workflow/process/common/UserPicker.vue";
|
||||||
import {getBaseInfoApi} from "@/components/steps/api";
|
import {getBaseInfoApi, getMapProjectStateInfo} from "@/components/steps/api";
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
@@ -230,9 +313,22 @@ const pageInfo = reactive({
|
|||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
})
|
})
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
actualEconomicEstimate: [{required: true, message: '请输入实际经费预算', trigger: ['blur','change']}],
|
actualEconomicEstimate: [{required: true, message: '请输入实际经费预算', trigger: ['blur', 'change']}],
|
||||||
specialFundAmount: [{required: true, message: '请输入实际专项资金', trigger: 'blur'}],
|
specialFundAmount: [{required: true, message: '请输入实际专项资金', trigger: 'blur'}],
|
||||||
// projectPerson: [{required: true, message: '请选择项目成员', trigger: 'blur'}],
|
// projectPerson: [{required: true, message: '请选择项目成员', trigger: 'blur'}],
|
||||||
|
actualNewPatent: [{required: true, message: '请输入实际专利数量', trigger: ['blur', 'change']}],
|
||||||
|
actualTechnicalNorms: [{required: true, message: '请输入实际技术标准数量', trigger: ['blur', 'change']}],
|
||||||
|
actualSoftwareCopyright: [{required: true, message: '请输入实际软件著作权数量', trigger: ['blur', 'change']}],
|
||||||
|
actualNewProduct: [{required: true, message: '请输入实际新产品数量', trigger: ['blur', 'change']}],
|
||||||
|
actualNewProcess: [{required: true, message: '请输入实际新工艺数量', trigger: ['blur', 'change']}],
|
||||||
|
actualNewMaterials: [{required: true, message: '请输入实际新材料数量', trigger: ['blur', 'change']}],
|
||||||
|
actualNewDevice: [{required: true, message: '请输入实际新装置数量', trigger: ['blur', 'change']}],
|
||||||
|
actualComputerSoftware: [{required: true, message: '请输入实际计算机软件数量', trigger: ['blur', 'change']}],
|
||||||
|
actualThesis: [{required: true, message: '请输入实际论文论著数量', trigger: ['blur', 'change']}],
|
||||||
|
actualResearchReport: [{required: true, message: '请输入实际研究报告数量', trigger: ['blur', 'change']}],
|
||||||
|
actualTrademark: [{required: true, message: '请输入实际商标数量', trigger: ['blur', 'change']}],
|
||||||
|
actualOther: [{required: true, message: '请输入实际其他项数量', trigger: ['blur', 'change']}],
|
||||||
|
|
||||||
})
|
})
|
||||||
const tagsViewStore = useTagsView()
|
const tagsViewStore = useTagsView()
|
||||||
const processStore = useProcessStore()
|
const processStore = useProcessStore()
|
||||||
@@ -261,7 +357,7 @@ const selectRows = ref([])
|
|||||||
const projectId = ref(route.query.projectId)
|
const projectId = ref(route.query.projectId)
|
||||||
const sessionParams = ref({})
|
const sessionParams = ref({})
|
||||||
const optionalChargeLeadershipPickerRef = ref()
|
const optionalChargeLeadershipPickerRef = ref()
|
||||||
const detail = ref(false)
|
const isSpecialFund = ref(false)
|
||||||
const optionalChargeLeadershipList = ref([])
|
const optionalChargeLeadershipList = ref([])
|
||||||
const filePreviewParam = ref({
|
const filePreviewParam = ref({
|
||||||
fileUrl: '',
|
fileUrl: '',
|
||||||
@@ -269,14 +365,52 @@ const filePreviewParam = ref({
|
|||||||
fileType: 'pdf'
|
fileType: 'pdf'
|
||||||
})
|
})
|
||||||
const filePreviewShow = ref(false)
|
const filePreviewShow = ref(false)
|
||||||
const getInfo=async ()=>{
|
|
||||||
|
const getSummaryInfo = async () => {
|
||||||
|
if (props.mode === 'resubmit') return;
|
||||||
|
if(props.title === 'check'){
|
||||||
|
const loading = ElLoading.service({fullscreen: true})
|
||||||
|
try {
|
||||||
|
const projectId = route.query.projectId
|
||||||
|
const {code, data, msg} = await getMapProjectStateInfo(projectId, '10')
|
||||||
|
if (code === 1000) {
|
||||||
|
localFormData.value.actualNewPatent= data.formData.newPatent
|
||||||
|
localFormData.value.actualSoftwareCopyright= data.formData.softwareCopyright
|
||||||
|
localFormData.value.actualTechnicalNorms= data.formData.technicalNorms
|
||||||
|
localFormData.value.actualNewProduct= data.formData.newProduct
|
||||||
|
localFormData.value.actualNewProcess= data.formData.newProcess
|
||||||
|
localFormData.value.actualNewDevice= data.formData.newDevice
|
||||||
|
localFormData.value.actualNewMaterials= data.formData.newMaterials
|
||||||
|
localFormData.value.actualComputerSoftware= data.formData.computerSoftware
|
||||||
|
localFormData.value.actualThesis= data.formData.thesis
|
||||||
|
localFormData.value.actualResearchReport= data.formData.researchReport
|
||||||
|
localFormData.value.actualTrademark= data.formData.trademark
|
||||||
|
localFormData.value.actualOther= data.formData.other
|
||||||
|
|
||||||
|
loading.close()
|
||||||
|
} else {
|
||||||
|
ElNotification({
|
||||||
|
title: '提示',
|
||||||
|
message: msg,
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
|
||||||
|
loading.close()
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
loading.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getSummaryInfo()
|
||||||
|
|
||||||
|
const getInfo = async () => {
|
||||||
|
|
||||||
const {code, data} = await getBaseInfoApi(route.query.projectId)
|
const {code, data} = await getBaseInfoApi(route.query.projectId)
|
||||||
console.log('data',code,data)
|
isSpecialFund.value = data.isSpecialFund
|
||||||
detail.value=data.isSpecialFund
|
|
||||||
}
|
}
|
||||||
getInfo()
|
getInfo()
|
||||||
const getTemplateName=(type)=>{
|
const getTemplateName = (type) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'apply':
|
case 'apply':
|
||||||
return '科技创新项目立项模板'
|
return '科技创新项目立项模板'
|
||||||
@@ -291,9 +425,9 @@ const handleShowOptionalChargeLeadershipPicker = () => {
|
|||||||
|
|
||||||
const optionalChargeLeaderPickerOk = (userList) => {
|
const optionalChargeLeaderPickerOk = (userList) => {
|
||||||
optionalChargeLeadershipList.value = userList
|
optionalChargeLeadershipList.value = userList
|
||||||
if(userList?.length>0){
|
if (userList?.length > 0) {
|
||||||
localStorage.setItem('optionalChargeLeadershipList', JSON.stringify(optionalChargeLeadershipList.value))
|
localStorage.setItem('optionalChargeLeadershipList', JSON.stringify(optionalChargeLeadershipList.value))
|
||||||
}else {
|
} else {
|
||||||
localStorage.removeItem('optionalChargeLeadershipList')
|
localStorage.removeItem('optionalChargeLeadershipList')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -372,27 +506,27 @@ const handleShowProjectChargePersonTable = () => {
|
|||||||
}
|
}
|
||||||
const projectChargePersonUserPickerOk = (userList) => {
|
const projectChargePersonUserPickerOk = (userList) => {
|
||||||
projectChargePersonUserList.value = userList
|
projectChargePersonUserList.value = userList
|
||||||
if(userList?.length>0){
|
if (userList?.length > 0) {
|
||||||
localStorage.setItem('projectChargePersonUserList', JSON.stringify(projectChargePersonUserList.value))
|
localStorage.setItem('projectChargePersonUserList', JSON.stringify(projectChargePersonUserList.value))
|
||||||
}else {
|
} else {
|
||||||
localStorage.removeItem('projectPersonUserList')
|
localStorage.removeItem('projectPersonUserList')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const handleShowProjectPersonTable = () => {
|
const handleShowProjectPersonTable = () => {
|
||||||
projectPersonUserPicker.value.showUserPicker()
|
projectPersonUserPicker.value.showUserPicker()
|
||||||
}
|
}
|
||||||
const projectChargePersonUserPickerCancel=(userList)=>{
|
const projectChargePersonUserPickerCancel = (userList) => {
|
||||||
projectChargePersonUserList.value = userList
|
projectChargePersonUserList.value = userList
|
||||||
}
|
}
|
||||||
const projectPersonUserPickerCancel=(userList)=>{
|
const projectPersonUserPickerCancel = (userList) => {
|
||||||
projectPersonUserList.value = userList
|
projectPersonUserList.value = userList
|
||||||
}
|
}
|
||||||
|
|
||||||
const projectPersonUserPickerOk = (userList) => {
|
const projectPersonUserPickerOk = (userList) => {
|
||||||
projectPersonUserList.value = userList
|
projectPersonUserList.value = userList
|
||||||
if(userList?.length>0){
|
if (userList?.length > 0) {
|
||||||
localStorage.setItem('projectPersonUserList', JSON.stringify(userList))
|
localStorage.setItem('projectPersonUserList', JSON.stringify(userList))
|
||||||
}else {
|
} else {
|
||||||
localStorage.removeItem('projectPersonUserList')
|
localStorage.removeItem('projectPersonUserList')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -515,7 +649,7 @@ const getFileParam = (item) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const handleSubmit = async (instance) => {
|
const handleSubmit = async (instance) => {
|
||||||
if(props.step==50){
|
if (props.step == 50) {
|
||||||
let files = []
|
let files = []
|
||||||
if (props.mode === 'resubmit') {
|
if (props.mode === 'resubmit') {
|
||||||
attachment.value.allFileList.forEach(item => {
|
attachment.value.allFileList.forEach(item => {
|
||||||
@@ -547,7 +681,8 @@ const handleSubmit = async (instance) => {
|
|||||||
requirementId: route.query.id,
|
requirementId: route.query.id,
|
||||||
fileList: files,
|
fileList: files,
|
||||||
// singleFile: attachment.value.singleFile,
|
// singleFile: attachment.value.singleFile,
|
||||||
projectId: projectId.value,
|
projectId: route.query.projectId,
|
||||||
|
...localFormData.value,
|
||||||
actualEconomicEstimate: parseFloat(localFormData.value.actualEconomicEstimate),
|
actualEconomicEstimate: parseFloat(localFormData.value.actualEconomicEstimate),
|
||||||
specialFundAmount: parseFloat(localFormData.value.specialFundAmount),
|
specialFundAmount: parseFloat(localFormData.value.specialFundAmount),
|
||||||
preProcess: JSON.stringify(localFormData.value.preProcess)
|
preProcess: JSON.stringify(localFormData.value.preProcess)
|
||||||
@@ -555,108 +690,12 @@ const handleSubmit = async (instance) => {
|
|||||||
if (sessionParams.value.preProcess && !localFormData.value.preProcess) {
|
if (sessionParams.value.preProcess && !localFormData.value.preProcess) {
|
||||||
params.preProcess = JSON.stringify(sessionParams.value.preProcess)
|
params.preProcess = JSON.stringify(sessionParams.value.preProcess)
|
||||||
}
|
}
|
||||||
console.log('params',params)
|
console.log('params', params)
|
||||||
let res
|
let res
|
||||||
if (props.mode === 'resubmit') {
|
|
||||||
res = await resubmitConclusion(params)
|
|
||||||
} else {
|
|
||||||
res = await projectConclusion(params)
|
|
||||||
}
|
|
||||||
ElNotification({
|
|
||||||
title: '提示',
|
|
||||||
message: res.msg,
|
|
||||||
type: res.code === 1000 ? 'success' : 'error'
|
|
||||||
})
|
|
||||||
if (res.code === 1000) {
|
|
||||||
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
|
|
||||||
await router.push({
|
|
||||||
name: 'Filing'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if (!instance) return
|
|
||||||
instance.validate(async (valid) => {
|
|
||||||
if (!valid) {
|
|
||||||
ElNotification({
|
|
||||||
title: '提示',
|
|
||||||
message: '请完善数据,再提交!',
|
|
||||||
type: 'error'
|
|
||||||
})
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let files = []
|
|
||||||
if (props.mode === 'resubmit') {
|
if (props.mode === 'resubmit') {
|
||||||
attachment.value.allFileList.forEach(item => {
|
res = await resubmitConclusion(params)
|
||||||
files.push(getFileParam(item))
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
otherFileList.value.forEach(item => {
|
res = await projectConclusion(params)
|
||||||
files.push(getFileParam(item))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// console.info("🚀 ~method:handleSubmit -----", files,attachment.value.isHaveOneFile)
|
|
||||||
if (!attachment.value.isHaveOneFile) {
|
|
||||||
attachment.value.validate()
|
|
||||||
ElNotification({
|
|
||||||
title: '提示',
|
|
||||||
message: '请上传附件',
|
|
||||||
type: 'error'
|
|
||||||
})
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
attachment.value.clearValidate()
|
|
||||||
}
|
|
||||||
let projectPersonIds = []
|
|
||||||
for (const item of projectPersonUserList.value) {
|
|
||||||
projectPersonIds.push(parseInt(item.id))
|
|
||||||
}
|
|
||||||
let params = {
|
|
||||||
deploymentId: deploymentId.value,
|
|
||||||
requirementId: route.query.id,
|
|
||||||
fileList: files,
|
|
||||||
// singleFile: attachment.value.singleFile,
|
|
||||||
projectId: projectId.value,
|
|
||||||
actualEconomicEstimate: parseFloat(localFormData.value.actualEconomicEstimate),
|
|
||||||
specialFundAmount: parseFloat(localFormData.value.specialFundAmount),
|
|
||||||
preProcess: JSON.stringify(localFormData.value.preProcess)
|
|
||||||
}
|
|
||||||
if (sessionParams.value.preProcess && !localFormData.value.preProcess) {
|
|
||||||
params.preProcess = JSON.stringify(sessionParams.value.preProcess)
|
|
||||||
}
|
|
||||||
console.log('params',params)
|
|
||||||
let res
|
|
||||||
if (props.step === '20') {
|
|
||||||
if (projectChargePersonUserList.value && projectChargePersonUserList.value.length === 0) {
|
|
||||||
ElNotification({
|
|
||||||
title: '提示',
|
|
||||||
message: '请选择项目负责人!',
|
|
||||||
type: 'error'
|
|
||||||
})
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (projectPersonUserList.value && projectPersonUserList.value.length === 0) {
|
|
||||||
ElNotification({
|
|
||||||
title: '提示',
|
|
||||||
message: '请选择项目成员!',
|
|
||||||
type: 'error'
|
|
||||||
})
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
params.projectChargePerson = parseInt(projectChargePersonUserList.value[0].id)
|
|
||||||
params.projectPersonIds = projectPersonIds
|
|
||||||
params.optionalChargeLeadership = optionalChargeLeadershipList.value
|
|
||||||
if (props.mode === 'resubmit') {
|
|
||||||
res = await resubmitApply(params)
|
|
||||||
} else {
|
|
||||||
res = await projectApply(params)
|
|
||||||
}
|
|
||||||
} else if (props.step === '40') {
|
|
||||||
params.optionalChargeLeadership = optionalChargeLeadershipList.value
|
|
||||||
if (props.mode === 'resubmit') {
|
|
||||||
res = await resubmitCheck(params)
|
|
||||||
} else {
|
|
||||||
res = await projectCheck(params)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ElNotification({
|
ElNotification({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
@@ -665,21 +704,118 @@ const handleSubmit = async (instance) => {
|
|||||||
})
|
})
|
||||||
if (res.code === 1000) {
|
if (res.code === 1000) {
|
||||||
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
|
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
|
||||||
|
await router.push({
|
||||||
|
name: 'Filing'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!instance) return
|
||||||
|
instance.validate(async (valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
ElNotification({
|
||||||
|
title: '提示',
|
||||||
|
message: '请完善数据,再提交!',
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let files = []
|
||||||
|
if (props.mode === 'resubmit') {
|
||||||
|
attachment.value.allFileList.forEach(item => {
|
||||||
|
files.push(getFileParam(item))
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
otherFileList.value.forEach(item => {
|
||||||
|
files.push(getFileParam(item))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// console.info("🚀 ~method:handleSubmit -----", files,attachment.value.isHaveOneFile)
|
||||||
|
if (!attachment.value.isHaveOneFile) {
|
||||||
|
attachment.value.validate()
|
||||||
|
ElNotification({
|
||||||
|
title: '提示',
|
||||||
|
message: '请上传附件',
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
attachment.value.clearValidate()
|
||||||
|
}
|
||||||
|
let projectPersonIds = []
|
||||||
|
for (const item of projectPersonUserList.value) {
|
||||||
|
projectPersonIds.push(parseInt(item.id))
|
||||||
|
}
|
||||||
|
let params = {
|
||||||
|
// singleFile: attachment.value.singleFile,
|
||||||
|
...localFormData.value,
|
||||||
|
projectId: route.query.projectId,
|
||||||
|
deploymentId: deploymentId.value,
|
||||||
|
requirementId: route.query.id,
|
||||||
|
fileList: files,
|
||||||
|
actualEconomicEstimate: parseFloat(localFormData.value.actualEconomicEstimate)||null,
|
||||||
|
specialFundAmount: parseFloat(localFormData.value.specialFundAmount)||null,
|
||||||
|
preProcess: JSON.stringify(localFormData.value.preProcess)
|
||||||
|
}
|
||||||
|
if (sessionParams.value.preProcess && !localFormData.value.preProcess) {
|
||||||
|
params.preProcess = JSON.stringify(sessionParams.value.preProcess)
|
||||||
|
}
|
||||||
|
console.log('params', params)
|
||||||
|
let res
|
||||||
if (props.step === '20') {
|
if (props.step === '20') {
|
||||||
await router.push({
|
if (projectChargePersonUserList.value && projectChargePersonUserList.value.length === 0) {
|
||||||
name: 'Initiation'
|
ElNotification({
|
||||||
})
|
title: '提示',
|
||||||
|
message: '请选择项目负责人!',
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (projectPersonUserList.value && projectPersonUserList.value.length === 0) {
|
||||||
|
ElNotification({
|
||||||
|
title: '提示',
|
||||||
|
message: '请选择项目成员!',
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
params.projectChargePerson = parseInt(projectChargePersonUserList.value[0].id)
|
||||||
|
params.projectPersonIds = projectPersonIds
|
||||||
|
params.optionalChargeLeadership = optionalChargeLeadershipList.value
|
||||||
|
if (props.mode === 'resubmit') {
|
||||||
|
res = await resubmitApply(params)
|
||||||
|
} else {
|
||||||
|
res = await projectApply(params)
|
||||||
|
}
|
||||||
} else if (props.step === '40') {
|
} else if (props.step === '40') {
|
||||||
await router.push({
|
params.optionalChargeLeadership = optionalChargeLeadershipList.value
|
||||||
name: 'Implementation'
|
if (props.mode === 'resubmit') {
|
||||||
})
|
res = await resubmitCheck(params)
|
||||||
|
} else {
|
||||||
|
res = await projectCheck(params)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
ElNotification({
|
||||||
})
|
title: '提示',
|
||||||
|
message: res.msg,
|
||||||
|
type: res.code === 1000 ? 'success' : 'error'
|
||||||
|
})
|
||||||
|
if (res.code === 1000) {
|
||||||
|
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
|
||||||
|
if (props.step === '20') {
|
||||||
|
await router.push({
|
||||||
|
name: 'Initiation'
|
||||||
|
})
|
||||||
|
} else if (props.step === '40') {
|
||||||
|
await router.push({
|
||||||
|
name: 'Implementation'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
let id = projectId.value
|
let id = route.query.projectId
|
||||||
if (!id) return;
|
if (!id) return;
|
||||||
processDiagramViewer.value = false
|
processDiagramViewer.value = false
|
||||||
let res
|
let res
|
||||||
@@ -694,6 +830,7 @@ const init = async () => {
|
|||||||
let data = res.data
|
let data = res.data
|
||||||
deploymentId.value = data.deploymentId
|
deploymentId.value = data.deploymentId
|
||||||
deploymentData.value = data
|
deploymentData.value = data
|
||||||
|
console.log('data,',data)
|
||||||
preProcessRequired.value = data.deploymentName === '重大项目立项' || data.deploymentName === '重大项目验收';
|
preProcessRequired.value = data.deploymentName === '重大项目立项' || data.deploymentName === '重大项目验收';
|
||||||
processStore.setDesign(data)
|
processStore.setDesign(data)
|
||||||
processStore.runningList.value = data.runningList;
|
processStore.runningList.value = data.runningList;
|
||||||
|
|||||||
@@ -16,74 +16,74 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="专利(项)" prop="newPatent">
|
<el-form-item label="预估专利(项)" prop="newPatent">
|
||||||
<span>{{ localFormData.newPatent }}</span>
|
<span>{{ localFormData.newPatent }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
|
<el-form-item label="预估软件著作权(项)" prop="softwareCopyright">
|
||||||
<span>{{ localFormData.softwareCopyright }}</span>
|
<span>{{ localFormData.softwareCopyright }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="技术标准(项)" prop="technicalNorms">
|
<el-form-item label="预估技术标准(项)" prop="technicalNorms">
|
||||||
<span>{{ localFormData.technicalNorms }}</span>
|
<span>{{ localFormData.technicalNorms }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="新产品(项)" prop="newProduct">
|
<el-form-item label="预估新产品(项)" prop="newProduct">
|
||||||
<span>{{ localFormData.newProduct }}</span>
|
<span>{{ localFormData.newProduct }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="新工艺(项)" prop="newProcess">
|
<el-form-item label="预估新工艺(项)" prop="newProcess">
|
||||||
<span>{{ localFormData.newProcess }}</span>
|
<span>{{ localFormData.newProcess }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="新装置(项)" prop="newDevice">
|
<el-form-item label="预估新装置(项)" prop="newDevice">
|
||||||
<span>{{ localFormData.newDevice }}</span>
|
<span>{{ localFormData.newDevice }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="新材料(项)" prop="newMaterials">
|
<el-form-item label="预估新材料(项)" prop="newMaterials">
|
||||||
<span>{{ localFormData.newMaterials }}</span>
|
<span>{{ localFormData.newMaterials }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="计算机软件(项)" prop="computerSoftware">
|
<el-form-item label="预估计算机软件(项)" prop="computerSoftware">
|
||||||
<span>{{ localFormData.computerSoftware }}</span>
|
<span>{{ localFormData.computerSoftware }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="论文论著(项)" prop="thesis">
|
<el-form-item label="预估论文论著(项)" prop="thesis">
|
||||||
<span>{{ localFormData.thesis }}</span>
|
<span>{{ localFormData.thesis }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="研究报告(项)" prop="researchReport">
|
<el-form-item label="预估研究报告(项)" prop="researchReport">
|
||||||
<span>{{ localFormData.researchReport }}</span>
|
<span>{{ localFormData.researchReport }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="商标(项)" prop="trademark">
|
<el-form-item label="预估商标(项)" prop="trademark">
|
||||||
<span>{{ localFormData.trademark }}</span>
|
<span>{{ localFormData.trademark }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="其他(项)" prop="other">
|
<el-form-item label="预估其他(项)" prop="other">
|
||||||
<span style="white-space: pre-wrap">{{ localFormData.other }}</span>
|
<span style="white-space: pre-wrap">{{ localFormData.other }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="detail-block" v-loading="loading" :style="{padding:!formData.isSpecialFund?'0 30px':'0 0 0 30px'}">
|
<div class="detail-block" v-loading="loading" :style="{padding:!formData.isSpecialFund?'0 30px':'0 0 0 30px'}">
|
||||||
<baseTitle title="项目基本信息"></baseTitle>
|
<baseTitle title="项目基本信息"></baseTitle>
|
||||||
<el-form :model="formData" ref="summaryForm" :rules="rules" :label-width="!formData.isSpecialFund?130:160"
|
<el-form :model="formData" ref="summaryForm" :rules="rules" :label-width="!formData.isSpecialFund?145:160"
|
||||||
:scroll-to-error="true">
|
:scroll-to-error="true">
|
||||||
<el-row gutter="30" style="margin-bottom: -18px;"
|
<el-row gutter="30" style="margin-bottom: -18px;"
|
||||||
:style="{marginLeft:!formData.isSpecialFund?'-8.5px':'-48.5px'}">
|
:style="{marginLeft:!formData.isSpecialFund?'-8.5px':'-48.5px'}">
|
||||||
@@ -277,76 +277,76 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}" >
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}" >
|
||||||
<el-form-item label="专利(项)" prop="newPatent">
|
<el-form-item label="预估专利(项)" prop="newPatent">
|
||||||
<el-input-number v-model="formData.newPatent" placeholder="请输入专利数量" :controls="false"
|
<el-input-number v-model="formData.newPatent" placeholder="请输入预估专利数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
||||||
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
|
<el-form-item label="预估软件著作权(项)" prop="softwareCopyright">
|
||||||
<el-input-number v-model="formData.softwareCopyright" placeholder="请输入软件著作权数量" :controls="false"
|
<el-input-number v-model="formData.softwareCopyright" placeholder="请输入预估软件著作权数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
||||||
<el-form-item label="技术标准(项)" prop="technicalNorms">
|
<el-form-item label="预估技术标准(项)" prop="technicalNorms">
|
||||||
<el-input-number v-model="formData.technicalNorms" placeholder="请输入技术标准数量" :controls="false"
|
<el-input-number v-model="formData.technicalNorms" placeholder="请输入预估技术标准数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'0'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'0'}">
|
||||||
<el-form-item label="新产品(项)" prop="newProduct">
|
<el-form-item label="预估新产品(项)" prop="newProduct">
|
||||||
<el-input-number v-model="formData.newProduct" placeholder="请输入新产品数量" :controls="false"
|
<el-input-number v-model="formData.newProduct" placeholder="请输入预估新产品数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}">
|
||||||
<el-form-item label="新工艺(项)" prop="newProcess">
|
<el-form-item label="预估新工艺(项)" prop="newProcess">
|
||||||
<el-input-number v-model="formData.newProcess" placeholder="请输入新工艺数量" :controls="false"
|
<el-input-number v-model="formData.newProcess" placeholder="请输入预估新工艺数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
||||||
<el-form-item label="新装置(项)" prop="newDevice">
|
<el-form-item label="预估新装置(项)" prop="newDevice">
|
||||||
<el-input-number v-model="formData.newDevice" placeholder="请输入新装置数量" :controls="false"
|
<el-input-number v-model="formData.newDevice" placeholder="请输入预估新装置数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
||||||
<el-form-item label="新材料(项)" prop="newMaterials">
|
<el-form-item label="预估新材料(项)" prop="newMaterials">
|
||||||
<el-input-number v-model="formData.newMaterials" placeholder="请输入新材料数量" :controls="false"
|
<el-input-number v-model="formData.newMaterials" placeholder="请输入预估新材料数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'0'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'0'}">
|
||||||
<el-form-item label="计算机软件(项)" prop="computerSoftware">
|
<el-form-item label="预估计算机软件(项)" prop="computerSoftware">
|
||||||
<el-input-number v-model="formData.computerSoftware" placeholder="请输入计算机软件数量" :controls="false"
|
<el-input-number v-model="formData.computerSoftware" placeholder="请输入预估计算机软件数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}">
|
||||||
<el-form-item label="论文论著(项)" prop="thesis">
|
<el-form-item label="预估论文论著(项)" prop="thesis">
|
||||||
<el-input-number v-model="formData.thesis" placeholder="请输入论文论著数量" :controls="false"
|
<el-input-number v-model="formData.thesis" placeholder="请输入预估论文论著数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
||||||
<el-form-item label="研究报告(项)" prop="researchReport">
|
<el-form-item label="预估研究报告(项)" prop="researchReport">
|
||||||
<el-input-number v-model="formData.researchReport" placeholder="请输入研究报告数量" :controls="false"
|
<el-input-number v-model="formData.researchReport" placeholder="请输入预估研究报告数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
||||||
<el-form-item label="商标(项)" prop="trademark">
|
<el-form-item label="预估商标(项)" prop="trademark">
|
||||||
<el-input-number v-model="formData.trademark" placeholder="请输入商标数量" :controls="false"
|
<el-input-number v-model="formData.trademark" placeholder="请输入预估商标数量" :controls="false"
|
||||||
@change="changeCollectData"/>
|
@change="changeCollectData"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24" >
|
<el-col :span="24" >
|
||||||
<el-form-item label="其他(项)" prop="other">
|
<el-form-item label="预估其他(项)" prop="other">
|
||||||
<el-input rows="4" type="textarea" v-model="formData.other"
|
<el-input rows="4" type="textarea" v-model="formData.other" placeholder="请输入预估其他项"
|
||||||
@change="changeCollectData" :style="{marginRight:!formData.isSpecialFund?'20px':'80px'}"/>
|
@change="changeCollectData" :style="{marginRight:!formData.isSpecialFund?'20px':'80px'}"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -491,7 +491,7 @@ const rules = reactive({
|
|||||||
newProduct: [{required: true, message: '请输入新产品数量', trigger: ['blur', 'change']}],
|
newProduct: [{required: true, message: '请输入新产品数量', trigger: ['blur', 'change']}],
|
||||||
newProcess: [{required: true, message: '请输入新工艺数量', trigger: ['blur', 'change']}],
|
newProcess: [{required: true, message: '请输入新工艺数量', trigger: ['blur', 'change']}],
|
||||||
newMaterials: [{required: true, message: '请输入新材料数量', trigger: ['blur', 'change']}],
|
newMaterials: [{required: true, message: '请输入新材料数量', trigger: ['blur', 'change']}],
|
||||||
newDevice: [{required: true, message: '请输入新装备数量', trigger: ['blur', 'change']}],
|
newDevice: [{required: true, message: '请输入新装置数量', trigger: ['blur', 'change']}],
|
||||||
computerSoftware: [{required: true, message: '请输入计算机软件数量', trigger: ['blur', 'change']}],
|
computerSoftware: [{required: true, message: '请输入计算机软件数量', trigger: ['blur', 'change']}],
|
||||||
thesis: [{required: true, message: '请输入论文论著数量', trigger: ['blur', 'change']}],
|
thesis: [{required: true, message: '请输入论文论著数量', trigger: ['blur', 'change']}],
|
||||||
researchReport: [{required: true, message: '请输入研究报告数量', trigger: ['blur', 'change']}],
|
researchReport: [{required: true, message: '请输入研究报告数量', trigger: ['blur', 'change']}],
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<baseTitle v-if="type!='phase'" :title="getTagName(type)+'信息'" ></baseTitle>
|
<baseTitle v-if="type!='phase'" :title="getTagName(type)+'信息'"></baseTitle>
|
||||||
<fvForm :schema="schema" @getInstance="(e)=>form = e" style="margin-left: 15px"></fvForm>
|
<fvForm :schema="schema" @getInstance="(e)=>form = e" style="margin-left: 15px"></fvForm>
|
||||||
<el-form :model="formData" label-width="auto">
|
<el-form :model="formData" label-width="auto">
|
||||||
<file-component
|
<file-component
|
||||||
:title="getTagName(type)+'附件'"
|
:title="getTagName(type)+'附件'"
|
||||||
:fileNameTableWidth="150"
|
:fileNameTableWidth="150"
|
||||||
:tag="getTagName(type)"
|
:tag="getTagName(type)"
|
||||||
v-model:value="formData.fileList"
|
v-model:value="formData.fileList"
|
||||||
:processViewer="processViewer"
|
:processViewer="processViewer"
|
||||||
:file-list-show="fileListShow"
|
:file-list-show="fileListShow"
|
||||||
labelAlign="top"
|
labelAlign="top"
|
||||||
/>
|
/>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div v-if="data.taskId">
|
<div v-if="data.taskId">
|
||||||
@@ -36,7 +36,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="process">
|
<div class="process">
|
||||||
<operation-render v-if="processViewer && data.operationList && data.operationList.length > 0&&!changeDiagram" :isColumn="true"
|
<operation-render v-if="processViewer && data.operationList && data.operationList.length > 0&&!changeDiagram"
|
||||||
|
:isColumn="true"
|
||||||
:operation-list="data.operationList"
|
:operation-list="data.operationList"
|
||||||
:state="data.state"/>
|
:state="data.state"/>
|
||||||
<process-diagram-viewer v-if="processViewer&&changeDiagram" :id-name="idName?idName:type"/>
|
<process-diagram-viewer v-if="processViewer&&changeDiagram" :id-name="idName?idName:type"/>
|
||||||
@@ -115,7 +116,8 @@ const editSingleTableConfig = reactive({
|
|||||||
label: '文件名',
|
label: '文件名',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 300,
|
width: 300,
|
||||||
currentRender: ({row, index}) => (<div style="color: #2a99ff;cursor: pointer;" onClick={()=>clickToPreview(row)}>{row.originalFileName}</div>)
|
currentRender: ({row, index}) => (
|
||||||
|
<div style="color: #2a99ff;cursor: pointer;" onClick={() => clickToPreview(row)}>{row.originalFileName}</div>)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'tag',
|
prop: 'tag',
|
||||||
@@ -192,7 +194,7 @@ const schema = computed(() => {
|
|||||||
colProps: {
|
colProps: {
|
||||||
span: 24
|
span: 24
|
||||||
},
|
},
|
||||||
labelWidth:'left',
|
labelWidth: 'left',
|
||||||
component: () => (
|
component: () => (
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
@@ -209,12 +211,13 @@ const schema = computed(() => {
|
|||||||
colProps: {
|
colProps: {
|
||||||
span: 24
|
span: 24
|
||||||
},
|
},
|
||||||
labelWidth:'left',
|
labelWidth: 'left',
|
||||||
component: () => (
|
component: () => (
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
props.formData.projectPersonList ? props.formData.projectPersonList.map((item, index) => {
|
props.formData.projectPersonList ? props.formData.projectPersonList.map((item, index) => {
|
||||||
return <span>{item.name} <span>{index != props.formData.projectPersonList?.length - 1 ? ',' : ''}</span></span>
|
return <span>{item.name}
|
||||||
|
<span>{index != props.formData.projectPersonList?.length - 1 ? ',' : ''}</span></span>
|
||||||
}) : <span>{'--'}</span>
|
}) : <span>{'--'}</span>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@@ -273,7 +276,188 @@ const schema = computed(() => {
|
|||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
} else if (props.type == 'execute') {
|
} else if (props.type == 'execute') {
|
||||||
arr = [{
|
arr = [
|
||||||
|
{
|
||||||
|
label: '实际专利(项)',
|
||||||
|
prop: 'actualNewPatent',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewPatent ? props.formData.actualNewPatent : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际软件著作权(项)',
|
||||||
|
prop: 'actualSoftwareCopyright',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualSoftwareCopyright ? props.formData.actualSoftwareCopyright : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际技术标准(项)',
|
||||||
|
prop: 'actualTechnicalNorms',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualTechnicalNorms ? props.formData.actualTechnicalNorms : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新产品(项)',
|
||||||
|
prop: 'actualNewProduct',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewProduct ? props.formData.actualNewProduct : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新工艺(项)',
|
||||||
|
prop: 'actualNewProcess',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewProcess ? props.formData.actualNewProcess : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新装置(项)',
|
||||||
|
prop: 'actualNewDevice',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewDevice ? props.formData.actualNewDevice : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际新材料(项)',
|
||||||
|
prop: 'actualNewMaterials',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualNewMaterials ? props.formData.actualNewMaterials : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际计算机软件(项)',
|
||||||
|
prop: 'actualComputerSoftware',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualComputerSoftware ? props.formData.actualComputerSoftware : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际论文论著(项)',
|
||||||
|
prop: 'actualThesis',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualThesis ? props.formData.actualThesis : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际研究报告(项)',
|
||||||
|
prop: 'actualResearchReport',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualResearchReport ? props.formData.actualResearchReport : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际商标(项)',
|
||||||
|
prop: 'actualTrademark',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
props.formData.actualTrademark ? props.formData.actualTrademark : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '实际其他(项)',
|
||||||
|
prop: 'actualOther',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
},
|
||||||
|
labelWidth: 'left',
|
||||||
|
component: () => (
|
||||||
|
<div style="white-space: pre-wrap;">
|
||||||
|
{
|
||||||
|
props.formData.actualOther ? props.formData.actualOther : <span>{'--'}</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
label: '部门分管领导',
|
label: '部门分管领导',
|
||||||
prop: 'optionalChargeLeadership',
|
prop: 'optionalChargeLeadership',
|
||||||
colProps: {
|
colProps: {
|
||||||
@@ -309,22 +493,22 @@ const schema = computed(() => {
|
|||||||
}
|
}
|
||||||
arr.push(preProcess)
|
arr.push(preProcess)
|
||||||
// arr.push(
|
// arr.push(
|
||||||
// {
|
// {
|
||||||
// label: '项目验收附件',
|
// label: '项目验收附件',
|
||||||
// prop: 'singleFile',
|
// prop: 'singleFile',
|
||||||
// colProps: {
|
// colProps: {
|
||||||
// span: 24
|
// span: 24
|
||||||
// },
|
// },
|
||||||
// labelWidth: 'left',
|
// labelWidth: 'left',
|
||||||
// component: () => {
|
// component: () => {
|
||||||
// let singleFileArray = [props.formData.singleFile]
|
// let singleFileArray = [props.formData.singleFile]
|
||||||
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
||||||
// tableConfig={editSingleTableConfig}
|
// tableConfig={editSingleTableConfig}
|
||||||
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
||||||
// </fvTable>
|
// </fvTable>
|
||||||
// : <span>--</span>
|
// : <span>--</span>
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
} else if (props.type == 'archivist') {
|
} else if (props.type == 'archivist') {
|
||||||
arr = [
|
arr = [
|
||||||
// {
|
// {
|
||||||
@@ -377,14 +561,14 @@ const _value = computed({
|
|||||||
emit("update:value", val);
|
emit("update:value", val);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const clickToPreview=(row)=>{
|
const clickToPreview = (row) => {
|
||||||
filePreviewShow.value = false
|
filePreviewShow.value = false
|
||||||
filePreviewParam.value = {
|
filePreviewParam.value = {
|
||||||
fileUrl: row.url,
|
fileUrl: row.url,
|
||||||
fileName: row.originalFileName,
|
fileName: row.originalFileName,
|
||||||
fileType: row.fileType
|
fileType: row.fileType
|
||||||
}
|
}
|
||||||
nextTick(()=>{
|
nextTick(() => {
|
||||||
filePreviewShow.value = true
|
filePreviewShow.value = true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,6 @@
|
|||||||
<el-form :model="localFormData" ref="summaryForm" :rules="rules">
|
<el-form :model="localFormData" ref="summaryForm" :rules="rules">
|
||||||
<baseTitle title="预期知识产权"></baseTitle>
|
<baseTitle title="预期知识产权"></baseTitle>
|
||||||
<el-row gutter="20" style="margin-bottom: -18px;margin-left: 5px">
|
<el-row gutter="20" style="margin-bottom: -18px;margin-left: 5px">
|
||||||
<!-- <el-col :span="24">-->
|
|
||||||
<!-- <el-form-item label="预期成果形式" prop="resultForm">-->
|
|
||||||
<!-- <span>{{ filterDict(cacheStore.getDict('result_form'), localFormData.resultForm) }}</span>-->
|
|
||||||
<!-- </el-form-item>-->
|
|
||||||
<!-- </el-col>-->
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="知识产权归属" prop="intellectualProperty">
|
<el-form-item label="知识产权归属" prop="intellectualProperty">
|
||||||
<span>{{
|
<span>{{
|
||||||
@@ -17,74 +12,74 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="专利(项)" prop="newPatent">
|
<el-form-item label="预估专利(项)" prop="newPatent">
|
||||||
<span>{{ localFormData.newPatent }}</span>
|
<span>{{ localFormData.newPatent }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
|
<el-form-item label="预估软件著作权(项)" prop="softwareCopyright">
|
||||||
<span>{{ localFormData.softwareCopyright }}</span>
|
<span>{{ localFormData.softwareCopyright }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="技术标准(项)" prop="technicalNorms">
|
<el-form-item label="预估技术标准(项)" prop="technicalNorms">
|
||||||
<span>{{ localFormData.technicalNorms }}</span>
|
<span>{{ localFormData.technicalNorms }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="新产品(项)" prop="newProduct">
|
<el-form-item label="预估新产品(项)" prop="newProduct">
|
||||||
<span>{{ localFormData.newProduct }}</span>
|
<span>{{ localFormData.newProduct }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="新工艺(项)" prop="newProcess">
|
<el-form-item label="预估新工艺(项)" prop="newProcess">
|
||||||
<span>{{ localFormData.newProcess }}</span>
|
<span>{{ localFormData.newProcess }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="新装置(项)" prop="newDevice">
|
<el-form-item label="预估新装置(项)" prop="newDevice">
|
||||||
<span>{{ localFormData.newDevice }}</span>
|
<span>{{ localFormData.newDevice }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="新材料(项)" prop="newMaterials">
|
<el-form-item label="预估新材料(项)" prop="newMaterials">
|
||||||
<span>{{ localFormData.newMaterials }}</span>
|
<span>{{ localFormData.newMaterials }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="计算机软件(项)" prop="computerSoftware">
|
<el-form-item label="预估计算机软件(项)" prop="computerSoftware">
|
||||||
<span>{{ localFormData.computerSoftware }}</span>
|
<span>{{ localFormData.computerSoftware }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="论文论著(项)" prop="thesis">
|
<el-form-item label="预估论文论著(项)" prop="thesis">
|
||||||
<span>{{ localFormData.thesis }}</span>
|
<span>{{ localFormData.thesis }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="研究报告(项)" prop="researchReport">
|
<el-form-item label="预估研究报告(项)" prop="researchReport">
|
||||||
<span>{{ localFormData.researchReport }}</span>
|
<span>{{ localFormData.researchReport }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="商标(项)" prop="trademark">
|
<el-form-item label="预估商标(项)" prop="trademark">
|
||||||
<span>{{ localFormData.trademark }}</span>
|
<span>{{ localFormData.trademark }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="其他(项)" prop="other">
|
<el-form-item label="预估其他(项)" prop="other">
|
||||||
<span style="white-space: pre-wrap">{{ localFormData.other }}</span>
|
<span style="white-space: pre-wrap">{{ localFormData.other }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|||||||
Reference in New Issue
Block a user