feat : 项目验收新增字段
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<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-col :span="24">-->
|
||||
<!-- <el-form-item :label="label" prop="attachment" >-->
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/>
|
||||
</div>
|
||||
<el-button color="#DED0B2" style="margin-left: 10px"
|
||||
@click="handleCarbonCopy()" >立即抄送
|
||||
@click="handleCarbonCopy()">立即抄送
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="process">
|
||||
@@ -290,23 +290,207 @@ const schema = computed(() => {
|
||||
// }
|
||||
// })
|
||||
} else if (props.type == 'execute') {
|
||||
arr = [{
|
||||
label: '部门分管领导',
|
||||
prop: 'optionalChargeLeadership',
|
||||
colProps: {
|
||||
span: 24
|
||||
arr = [
|
||||
|
||||
{
|
||||
label: '实际专利(项)',
|
||||
prop: 'actualNewPatent',
|
||||
colProps: {
|
||||
span: 6
|
||||
},
|
||||
labelWidth: 'left',
|
||||
component: () => (
|
||||
<div>
|
||||
{
|
||||
props.formData.actualNewPatent ? props.formData.actualNewPatent : <span>{'--'}</span>
|
||||
}
|
||||
</div>
|
||||
)
|
||||
},
|
||||
labelWidth: 'left',
|
||||
component: () => (
|
||||
<div>
|
||||
{
|
||||
props.formData.optionalChargeLeadership?.length > 0 ? props.formData.optionalChargeLeadership.map(item => {
|
||||
return <span>{item.name} </span>
|
||||
}) : <span>{'--'}</span>
|
||||
}
|
||||
</div>
|
||||
)
|
||||
},]
|
||||
{
|
||||
label: '实际软件著作权(项)',
|
||||
prop: 'actualSoftwareCopyright',
|
||||
colProps: {
|
||||
span: 6
|
||||
},
|
||||
labelWidth: 'left',
|
||||
component: () => (
|
||||
<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') {
|
||||
preProcess = {
|
||||
@@ -345,22 +529,22 @@ const schema = computed(() => {
|
||||
// })
|
||||
} else if (props.type == 'archivist') {
|
||||
arr = [
|
||||
// {
|
||||
// label: '项目归档附件',
|
||||
// prop: 'singleFile',
|
||||
// colProps: {
|
||||
// span: 24
|
||||
// },
|
||||
// labelWidth: 'left',
|
||||
// component: () => {
|
||||
// let singleFileArray = [props.formData.singleFile]
|
||||
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
||||
// tableConfig={editSingleTableConfig}
|
||||
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
||||
// </fvTable>
|
||||
// : <span>--</span>
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// label: '项目归档附件',
|
||||
// prop: 'singleFile',
|
||||
// colProps: {
|
||||
// span: 24
|
||||
// },
|
||||
// labelWidth: 'left',
|
||||
// component: () => {
|
||||
// let singleFileArray = [props.formData.singleFile]
|
||||
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
||||
// tableConfig={editSingleTableConfig}
|
||||
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
||||
// </fvTable>
|
||||
// : <span>--</span>
|
||||
// }
|
||||
// },
|
||||
]
|
||||
} else if (props.type == 'phase') {
|
||||
arr = [
|
||||
@@ -392,7 +576,7 @@ const filePreviewParam = ref({
|
||||
})
|
||||
const filePreviewShow = ref(false)
|
||||
const route = useRoute()
|
||||
const emit = defineEmits(['update:value','ccSend'])
|
||||
const emit = defineEmits(['update:value', 'ccSend'])
|
||||
const _value = computed({
|
||||
get() {
|
||||
return props.value;
|
||||
|
||||
@@ -2,23 +2,97 @@
|
||||
<div class="apply-block">
|
||||
<baseTitle :title="getTitleName(title)+'信息'"></baseTitle>
|
||||
<el-form :model="localFormData" ref="formRef" label-width="auto" v-if="step!=='50'" :rules="rules">
|
||||
<el-row>
|
||||
<el-col :span="6" v-if="title==='apply'">
|
||||
<el-row v-if="title==='apply'">
|
||||
<el-col :span="6">
|
||||
<!-- 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>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="title==='apply'&&detail">
|
||||
<el-col :span="6" v-if="isSpecialFund">
|
||||
<!-- 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>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
</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'">
|
||||
<!-- label-width="106"-->
|
||||
<el-form-item label="项目负责人" :required="true" prop="" label-width="111">
|
||||
@@ -29,34 +103,41 @@
|
||||
{{ item.name }}
|
||||
</div>
|
||||
<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-col>
|
||||
<el-col :span="6" v-if="title==='apply'">
|
||||
<el-form-item label="项目成员" :required="true" prop="" label-width="120"
|
||||
>
|
||||
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowProjectPersonTable">
|
||||
{{ projectPersonUserList?.length !== 0 ? '更改' : getProjectPerson(projectPersonUserList) ? '更改' : '请选择' }}
|
||||
{{
|
||||
projectPersonUserList?.length !== 0 ? '更改' : getProjectPerson(projectPersonUserList) ? '更改' : '请选择'
|
||||
}}
|
||||
</el-button>
|
||||
<div v-for="(item,index) in getProjectPerson(projectPersonUserList)" :key="item.id" >
|
||||
{{ item.name }}{{index != getProjectPerson(projectPersonUserList)?.length - 1 ? ',' : ''}}
|
||||
<div v-for="(item,index) in getProjectPerson(projectPersonUserList)" :key="item.id">
|
||||
{{ item.name }}{{ index != getProjectPerson(projectPersonUserList)?.length - 1 ? ',' : '' }}
|
||||
</div>
|
||||
<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-col>
|
||||
<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">
|
||||
{{
|
||||
optionalChargeLeadershipList?.length !== 0 ? '更改' : getOptionalChargeLeadershipList(optionalChargeLeadershipList) ? '更改' : '请选择'
|
||||
}}
|
||||
</el-button>
|
||||
<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>
|
||||
<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-col>
|
||||
<el-col :span="24" v-if="preProcessShow === 'EDIT'">
|
||||
@@ -78,7 +159,9 @@
|
||||
</el-form>
|
||||
<!-- v-if="showAttachment"-->
|
||||
<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"
|
||||
@getOtherFile="getOtherFile" :showFileList="true" :formData="localFormData"
|
||||
:preview="mode == 'resubmit'"/>
|
||||
@@ -156,7 +239,7 @@
|
||||
<script setup lang="jsx">
|
||||
import OperationRender from '@/views/workflow/common/OperationRender.vue'
|
||||
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
|
||||
import {ElNotification} from "element-plus";
|
||||
import {ElLoading, ElNotification} from "element-plus";
|
||||
import {
|
||||
getApplyProcess,
|
||||
getPreProcess,
|
||||
@@ -173,7 +256,7 @@ import {useProcessStore} from '@/stores/processStore.js';
|
||||
import {useTagsView} from '@/stores/tagsview.js'
|
||||
import Paging from "@/components/pagination/index.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 route = useRoute()
|
||||
@@ -230,9 +313,22 @@ const pageInfo = reactive({
|
||||
pageSize: 10,
|
||||
})
|
||||
const rules = reactive({
|
||||
actualEconomicEstimate: [{required: true, message: '请输入实际经费预算', trigger: ['blur','change']}],
|
||||
actualEconomicEstimate: [{required: true, message: '请输入实际经费预算', trigger: ['blur', 'change']}],
|
||||
specialFundAmount: [{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 processStore = useProcessStore()
|
||||
@@ -261,7 +357,7 @@ const selectRows = ref([])
|
||||
const projectId = ref(route.query.projectId)
|
||||
const sessionParams = ref({})
|
||||
const optionalChargeLeadershipPickerRef = ref()
|
||||
const detail = ref(false)
|
||||
const isSpecialFund = ref(false)
|
||||
const optionalChargeLeadershipList = ref([])
|
||||
const filePreviewParam = ref({
|
||||
fileUrl: '',
|
||||
@@ -269,14 +365,52 @@ const filePreviewParam = ref({
|
||||
fileType: 'pdf'
|
||||
})
|
||||
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)
|
||||
console.log('data',code,data)
|
||||
detail.value=data.isSpecialFund
|
||||
isSpecialFund.value = data.isSpecialFund
|
||||
}
|
||||
getInfo()
|
||||
const getTemplateName=(type)=>{
|
||||
const getTemplateName = (type) => {
|
||||
switch (type) {
|
||||
case 'apply':
|
||||
return '科技创新项目立项模板'
|
||||
@@ -291,9 +425,9 @@ const handleShowOptionalChargeLeadershipPicker = () => {
|
||||
|
||||
const optionalChargeLeaderPickerOk = (userList) => {
|
||||
optionalChargeLeadershipList.value = userList
|
||||
if(userList?.length>0){
|
||||
if (userList?.length > 0) {
|
||||
localStorage.setItem('optionalChargeLeadershipList', JSON.stringify(optionalChargeLeadershipList.value))
|
||||
}else {
|
||||
} else {
|
||||
localStorage.removeItem('optionalChargeLeadershipList')
|
||||
}
|
||||
}
|
||||
@@ -372,27 +506,27 @@ const handleShowProjectChargePersonTable = () => {
|
||||
}
|
||||
const projectChargePersonUserPickerOk = (userList) => {
|
||||
projectChargePersonUserList.value = userList
|
||||
if(userList?.length>0){
|
||||
if (userList?.length > 0) {
|
||||
localStorage.setItem('projectChargePersonUserList', JSON.stringify(projectChargePersonUserList.value))
|
||||
}else {
|
||||
} else {
|
||||
localStorage.removeItem('projectPersonUserList')
|
||||
}
|
||||
}
|
||||
const handleShowProjectPersonTable = () => {
|
||||
projectPersonUserPicker.value.showUserPicker()
|
||||
}
|
||||
const projectChargePersonUserPickerCancel=(userList)=>{
|
||||
const projectChargePersonUserPickerCancel = (userList) => {
|
||||
projectChargePersonUserList.value = userList
|
||||
}
|
||||
const projectPersonUserPickerCancel=(userList)=>{
|
||||
const projectPersonUserPickerCancel = (userList) => {
|
||||
projectPersonUserList.value = userList
|
||||
}
|
||||
|
||||
const projectPersonUserPickerOk = (userList) => {
|
||||
projectPersonUserList.value = userList
|
||||
if(userList?.length>0){
|
||||
if (userList?.length > 0) {
|
||||
localStorage.setItem('projectPersonUserList', JSON.stringify(userList))
|
||||
}else {
|
||||
} else {
|
||||
localStorage.removeItem('projectPersonUserList')
|
||||
}
|
||||
}
|
||||
@@ -515,7 +649,7 @@ const getFileParam = (item) => {
|
||||
}
|
||||
}
|
||||
const handleSubmit = async (instance) => {
|
||||
if(props.step==50){
|
||||
if (props.step == 50) {
|
||||
let files = []
|
||||
if (props.mode === 'resubmit') {
|
||||
attachment.value.allFileList.forEach(item => {
|
||||
@@ -547,7 +681,8 @@ const handleSubmit = async (instance) => {
|
||||
requirementId: route.query.id,
|
||||
fileList: files,
|
||||
// singleFile: attachment.value.singleFile,
|
||||
projectId: projectId.value,
|
||||
projectId: route.query.projectId,
|
||||
...localFormData.value,
|
||||
actualEconomicEstimate: parseFloat(localFormData.value.actualEconomicEstimate),
|
||||
specialFundAmount: parseFloat(localFormData.value.specialFundAmount),
|
||||
preProcess: JSON.stringify(localFormData.value.preProcess)
|
||||
@@ -555,108 +690,12 @@ const handleSubmit = async (instance) => {
|
||||
if (sessionParams.value.preProcess && !localFormData.value.preProcess) {
|
||||
params.preProcess = JSON.stringify(sessionParams.value.preProcess)
|
||||
}
|
||||
console.log('params',params)
|
||||
console.log('params', params)
|
||||
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') {
|
||||
attachment.value.allFileList.forEach(item => {
|
||||
files.push(getFileParam(item))
|
||||
})
|
||||
res = await resubmitConclusion(params)
|
||||
} 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 = {
|
||||
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)
|
||||
}
|
||||
res = await projectConclusion(params)
|
||||
}
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
@@ -665,21 +704,118 @@ const handleSubmit = async (instance) => {
|
||||
})
|
||||
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') {
|
||||
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') {
|
||||
await router.push({
|
||||
name: 'Initiation'
|
||||
})
|
||||
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') {
|
||||
await router.push({
|
||||
name: 'Implementation'
|
||||
})
|
||||
params.optionalChargeLeadership = optionalChargeLeadershipList.value
|
||||
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 () => {
|
||||
let id = projectId.value
|
||||
let id = route.query.projectId
|
||||
if (!id) return;
|
||||
processDiagramViewer.value = false
|
||||
let res
|
||||
@@ -694,6 +830,7 @@ const init = async () => {
|
||||
let data = res.data
|
||||
deploymentId.value = data.deploymentId
|
||||
deploymentData.value = data
|
||||
console.log('data,',data)
|
||||
preProcessRequired.value = data.deploymentName === '重大项目立项' || data.deploymentName === '重大项目验收';
|
||||
processStore.setDesign(data)
|
||||
processStore.runningList.value = data.runningList;
|
||||
|
||||
@@ -16,74 +16,74 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="专利(项)" prop="newPatent">
|
||||
<el-form-item label="预估专利(项)" prop="newPatent">
|
||||
<span>{{ localFormData.newPatent }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
|
||||
<el-form-item label="预估软件著作权(项)" prop="softwareCopyright">
|
||||
<span>{{ localFormData.softwareCopyright }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="技术标准(项)" prop="technicalNorms">
|
||||
<el-form-item label="预估技术标准(项)" prop="technicalNorms">
|
||||
<span>{{ localFormData.technicalNorms }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="新产品(项)" prop="newProduct">
|
||||
<el-form-item label="预估新产品(项)" prop="newProduct">
|
||||
<span>{{ localFormData.newProduct }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="新工艺(项)" prop="newProcess">
|
||||
<el-form-item label="预估新工艺(项)" prop="newProcess">
|
||||
<span>{{ localFormData.newProcess }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="新装置(项)" prop="newDevice">
|
||||
<el-form-item label="预估新装置(项)" prop="newDevice">
|
||||
<span>{{ localFormData.newDevice }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="新材料(项)" prop="newMaterials">
|
||||
<el-form-item label="预估新材料(项)" prop="newMaterials">
|
||||
<span>{{ localFormData.newMaterials }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="计算机软件(项)" prop="computerSoftware">
|
||||
<el-form-item label="预估计算机软件(项)" prop="computerSoftware">
|
||||
<span>{{ localFormData.computerSoftware }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="论文论著(项)" prop="thesis">
|
||||
<el-form-item label="预估论文论著(项)" prop="thesis">
|
||||
<span>{{ localFormData.thesis }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="研究报告(项)" prop="researchReport">
|
||||
<el-form-item label="预估研究报告(项)" prop="researchReport">
|
||||
<span>{{ localFormData.researchReport }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="商标(项)" prop="trademark">
|
||||
<el-form-item label="预估商标(项)" prop="trademark">
|
||||
<span>{{ localFormData.trademark }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<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>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="detail-block" v-loading="loading" :style="{padding:!formData.isSpecialFund?'0 30px':'0 0 0 30px'}">
|
||||
<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">
|
||||
<el-row gutter="30" style="margin-bottom: -18px;"
|
||||
:style="{marginLeft:!formData.isSpecialFund?'-8.5px':'-48.5px'}">
|
||||
@@ -277,76 +277,76 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}" >
|
||||
<el-form-item label="专利(项)" prop="newPatent">
|
||||
<el-input-number v-model="formData.newPatent" placeholder="请输入专利数量" :controls="false"
|
||||
<el-form-item label="预估专利(项)" prop="newPatent">
|
||||
<el-input-number v-model="formData.newPatent" placeholder="请输入预估专利数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
||||
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
|
||||
<el-input-number v-model="formData.softwareCopyright" placeholder="请输入软件著作权数量" :controls="false"
|
||||
<el-form-item label="预估软件著作权(项)" prop="softwareCopyright">
|
||||
<el-input-number v-model="formData.softwareCopyright" placeholder="请输入预估软件著作权数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
||||
<el-form-item label="技术标准(项)" prop="technicalNorms">
|
||||
<el-input-number v-model="formData.technicalNorms" placeholder="请输入技术标准数量" :controls="false"
|
||||
<el-form-item label="预估技术标准(项)" prop="technicalNorms">
|
||||
<el-input-number v-model="formData.technicalNorms" placeholder="请输入预估技术标准数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'0'}">
|
||||
<el-form-item label="新产品(项)" prop="newProduct">
|
||||
<el-input-number v-model="formData.newProduct" placeholder="请输入新产品数量" :controls="false"
|
||||
<el-form-item label="预估新产品(项)" prop="newProduct">
|
||||
<el-input-number v-model="formData.newProduct" placeholder="请输入预估新产品数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}">
|
||||
<el-form-item label="新工艺(项)" prop="newProcess">
|
||||
<el-input-number v-model="formData.newProcess" placeholder="请输入新工艺数量" :controls="false"
|
||||
<el-form-item label="预估新工艺(项)" prop="newProcess">
|
||||
<el-input-number v-model="formData.newProcess" placeholder="请输入预估新工艺数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
||||
<el-form-item label="新装置(项)" prop="newDevice">
|
||||
<el-input-number v-model="formData.newDevice" placeholder="请输入新装置数量" :controls="false"
|
||||
<el-form-item label="预估新装置(项)" prop="newDevice">
|
||||
<el-input-number v-model="formData.newDevice" placeholder="请输入预估新装置数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
||||
<el-form-item label="新材料(项)" prop="newMaterials">
|
||||
<el-input-number v-model="formData.newMaterials" placeholder="请输入新材料数量" :controls="false"
|
||||
<el-form-item label="预估新材料(项)" prop="newMaterials">
|
||||
<el-input-number v-model="formData.newMaterials" placeholder="请输入预估新材料数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'0'}">
|
||||
<el-form-item label="计算机软件(项)" prop="computerSoftware">
|
||||
<el-input-number v-model="formData.computerSoftware" placeholder="请输入计算机软件数量" :controls="false"
|
||||
<el-form-item label="预估计算机软件(项)" prop="computerSoftware">
|
||||
<el-input-number v-model="formData.computerSoftware" placeholder="请输入预估计算机软件数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'0':'-40px'}">
|
||||
<el-form-item label="论文论著(项)" prop="thesis">
|
||||
<el-input-number v-model="formData.thesis" placeholder="请输入论文论著数量" :controls="false"
|
||||
<el-form-item label="预估论文论著(项)" prop="thesis">
|
||||
<el-input-number v-model="formData.thesis" placeholder="请输入预估论文论著数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
|
||||
<el-form-item label="研究报告(项)" prop="researchReport">
|
||||
<el-input-number v-model="formData.researchReport" placeholder="请输入研究报告数量" :controls="false"
|
||||
<el-form-item label="预估研究报告(项)" prop="researchReport">
|
||||
<el-input-number v-model="formData.researchReport" placeholder="请输入预估研究报告数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'-40px'}">
|
||||
<el-form-item label="商标(项)" prop="trademark">
|
||||
<el-input-number v-model="formData.trademark" placeholder="请输入商标数量" :controls="false"
|
||||
<el-form-item label="预估商标(项)" prop="trademark">
|
||||
<el-input-number v-model="formData.trademark" placeholder="请输入预估商标数量" :controls="false"
|
||||
@change="changeCollectData"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" >
|
||||
<el-form-item label="其他(项)" prop="other">
|
||||
<el-input rows="4" type="textarea" v-model="formData.other"
|
||||
<el-form-item label="预估其他(项)" prop="other">
|
||||
<el-input rows="4" type="textarea" v-model="formData.other" placeholder="请输入预估其他项"
|
||||
@change="changeCollectData" :style="{marginRight:!formData.isSpecialFund?'20px':'80px'}"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -491,7 +491,7 @@ const rules = reactive({
|
||||
newProduct: [{required: true, message: '请输入新产品数量', trigger: ['blur', 'change']}],
|
||||
newProcess: [{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']}],
|
||||
thesis: [{required: true, message: '请输入论文论著数量', trigger: ['blur', 'change']}],
|
||||
researchReport: [{required: true, message: '请输入研究报告数量', trigger: ['blur', 'change']}],
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<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>
|
||||
<el-form :model="formData" label-width="auto">
|
||||
<file-component
|
||||
:title="getTagName(type)+'附件'"
|
||||
:fileNameTableWidth="150"
|
||||
:tag="getTagName(type)"
|
||||
v-model:value="formData.fileList"
|
||||
:processViewer="processViewer"
|
||||
:file-list-show="fileListShow"
|
||||
labelAlign="top"
|
||||
:title="getTagName(type)+'附件'"
|
||||
:fileNameTableWidth="150"
|
||||
:tag="getTagName(type)"
|
||||
v-model:value="formData.fileList"
|
||||
:processViewer="processViewer"
|
||||
:file-list-show="fileListShow"
|
||||
labelAlign="top"
|
||||
/>
|
||||
</el-form>
|
||||
<div v-if="data.taskId">
|
||||
@@ -36,7 +36,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<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"
|
||||
:state="data.state"/>
|
||||
<process-diagram-viewer v-if="processViewer&&changeDiagram" :id-name="idName?idName:type"/>
|
||||
@@ -115,7 +116,8 @@ const editSingleTableConfig = reactive({
|
||||
label: '文件名',
|
||||
align: 'center',
|
||||
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',
|
||||
@@ -192,7 +194,7 @@ const schema = computed(() => {
|
||||
colProps: {
|
||||
span: 24
|
||||
},
|
||||
labelWidth:'left',
|
||||
labelWidth: 'left',
|
||||
component: () => (
|
||||
<div>
|
||||
{
|
||||
@@ -209,12 +211,13 @@ const schema = computed(() => {
|
||||
colProps: {
|
||||
span: 24
|
||||
},
|
||||
labelWidth:'left',
|
||||
labelWidth: 'left',
|
||||
component: () => (
|
||||
<div>
|
||||
{
|
||||
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>
|
||||
}
|
||||
</div>
|
||||
@@ -273,7 +276,188 @@ const schema = computed(() => {
|
||||
// }
|
||||
// })
|
||||
} 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: '部门分管领导',
|
||||
prop: 'optionalChargeLeadership',
|
||||
colProps: {
|
||||
@@ -309,22 +493,22 @@ const schema = computed(() => {
|
||||
}
|
||||
arr.push(preProcess)
|
||||
// arr.push(
|
||||
// {
|
||||
// label: '项目验收附件',
|
||||
// prop: 'singleFile',
|
||||
// colProps: {
|
||||
// span: 24
|
||||
// },
|
||||
// labelWidth: 'left',
|
||||
// component: () => {
|
||||
// let singleFileArray = [props.formData.singleFile]
|
||||
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
||||
// tableConfig={editSingleTableConfig}
|
||||
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
||||
// </fvTable>
|
||||
// : <span>--</span>
|
||||
// }
|
||||
// })
|
||||
// {
|
||||
// label: '项目验收附件',
|
||||
// prop: 'singleFile',
|
||||
// colProps: {
|
||||
// span: 24
|
||||
// },
|
||||
// labelWidth: 'left',
|
||||
// component: () => {
|
||||
// let singleFileArray = [props.formData.singleFile]
|
||||
// return props.formData.singleFile ? <fvTable style="width: 100%;max-height: 80px;" height="80"
|
||||
// tableConfig={editSingleTableConfig}
|
||||
// data={singleFileArray} isSettingCol={false} pagination={false}>
|
||||
// </fvTable>
|
||||
// : <span>--</span>
|
||||
// }
|
||||
// })
|
||||
} else if (props.type == 'archivist') {
|
||||
arr = [
|
||||
// {
|
||||
@@ -377,14 +561,14 @@ const _value = computed({
|
||||
emit("update:value", val);
|
||||
}
|
||||
})
|
||||
const clickToPreview=(row)=>{
|
||||
const clickToPreview = (row) => {
|
||||
filePreviewShow.value = false
|
||||
filePreviewParam.value = {
|
||||
fileUrl: row.url,
|
||||
fileName: row.originalFileName,
|
||||
fileType: row.fileType
|
||||
}
|
||||
nextTick(()=>{
|
||||
nextTick(() => {
|
||||
filePreviewShow.value = true
|
||||
})
|
||||
}
|
||||
|
||||
@@ -3,11 +3,6 @@
|
||||
<el-form :model="localFormData" ref="summaryForm" :rules="rules">
|
||||
<baseTitle title="预期知识产权"></baseTitle>
|
||||
<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-form-item label="知识产权归属" prop="intellectualProperty">
|
||||
<span>{{
|
||||
@@ -17,74 +12,74 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="专利(项)" prop="newPatent">
|
||||
<el-form-item label="预估专利(项)" prop="newPatent">
|
||||
<span>{{ localFormData.newPatent }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
|
||||
<el-form-item label="预估软件著作权(项)" prop="softwareCopyright">
|
||||
<span>{{ localFormData.softwareCopyright }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="技术标准(项)" prop="technicalNorms">
|
||||
<el-form-item label="预估技术标准(项)" prop="technicalNorms">
|
||||
<span>{{ localFormData.technicalNorms }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="新产品(项)" prop="newProduct">
|
||||
<el-form-item label="预估新产品(项)" prop="newProduct">
|
||||
<span>{{ localFormData.newProduct }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="新工艺(项)" prop="newProcess">
|
||||
<el-form-item label="预估新工艺(项)" prop="newProcess">
|
||||
<span>{{ localFormData.newProcess }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="新装置(项)" prop="newDevice">
|
||||
<el-form-item label="预估新装置(项)" prop="newDevice">
|
||||
<span>{{ localFormData.newDevice }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="新材料(项)" prop="newMaterials">
|
||||
<el-form-item label="预估新材料(项)" prop="newMaterials">
|
||||
<span>{{ localFormData.newMaterials }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="计算机软件(项)" prop="computerSoftware">
|
||||
<el-form-item label="预估计算机软件(项)" prop="computerSoftware">
|
||||
<span>{{ localFormData.computerSoftware }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="论文论著(项)" prop="thesis">
|
||||
<el-form-item label="预估论文论著(项)" prop="thesis">
|
||||
<span>{{ localFormData.thesis }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="研究报告(项)" prop="researchReport">
|
||||
<el-form-item label="预估研究报告(项)" prop="researchReport">
|
||||
<span>{{ localFormData.researchReport }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="商标(项)" prop="trademark">
|
||||
<el-form-item label="预估商标(项)" prop="trademark">
|
||||
<span>{{ localFormData.trademark }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<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>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
Reference in New Issue
Block a user