Merge pull request 'fix : 修复页面排版及项目管理的公司查询' (#642) from dd into master

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/642
This commit is contained in:
2024-08-01 14:16:45 +00:00
22 changed files with 291 additions and 133 deletions

View File

@@ -2,7 +2,7 @@
<el-form :model="formData" ref="applyForm" :rules="rules" :label-position="labelPosition">
<el-row>
<el-col :span="24">
<el-form-item :label="label" prop="attachment" label-width="125">
<el-form-item :label="label" prop="attachment" >
<template v-if="preview">
<file-upload @getFile="getAttachment" :multiple="false"
:disabled="singleFileArray?.length>0?true:false" title="如需修改需求申请书附件,请先删除文件再上传!"/>
@@ -22,7 +22,7 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="其他文件" label-width="125">
<el-form-item label="其他文件" label-width="120">
<file-upload @getFile="getOtherFile"/>
<fvTable style="width: 100%;max-height: 162px;" v-if="showTable" height="162" :tableConfig="tableConfig"
:data="allFileList" :isSettingCol="false" :pagination="false">

View File

@@ -33,8 +33,7 @@
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="24" style="margin-top: -15px;margin-bottom: -15px">
<baseTitle title="征集说明"></baseTitle>
<el-form-item>
<el-card style="width: 100%">
@@ -43,13 +42,13 @@
</el-card>
</el-form-item>
</el-col>
<baseTitle v-if="fileListShow === 'READ' || fileListShow === 'EDIT'" title="附件列表"></baseTitle>
<baseTitle v-if="fileListShow === 'READ' || fileListShow === 'EDIT'" title="附件列表"> </baseTitle>
<el-col :span="24">
<file-component title="" tag="需求征集"
v-model:value="formData.fileList" :processViewer="processViewer"
:file-list-show="fileListShow"/>
</el-col>
<el-col :span="24">
<el-col :span="24" style="margin-top: -15px">
<div v-if="data.taskId">
<baseTitle title="审核意见"></baseTitle>
<el-form-item prop="_value">
@@ -63,7 +62,7 @@
</div>
</el-col>
</el-row>
<div class="approval-record">
<div class="approval-record" style="margin-top: -15px">
<div class="approval-title">
<baseTitle title="审批记录"></baseTitle>
<div class="diagram">

View File

@@ -1,10 +1,30 @@
<template>
<!-- <baseTitle title="审核意见"></baseTitle>-->
<!-- <fvForm :schema="schema" @getInstance="(e)=>form = e"></fvForm>-->
<div class="oper-page-btn">
<el-button type="danger" @click="handleReject">驳回</el-button>
<div class="oper-page-btn" style="display: flex">
<el-select v-if="taskUserOptionList?.length>0" v-model="backNode" placeholder="请选择退回节点" clearable style="width: 150px;margin-right: 10px">
<el-option
v-for="item in taskUserOptionList"
:key="item.nodeId"
:label="item.nodeName + (item.userInfo ? ':' + item.userInfo.name : '')"
:value="item.nodeId">
</el-option>
</el-select>
<el-button type="danger" @click="rollbackHandler">驳回</el-button>
<el-button color="#DED0B2" @click="handleAgree">同意</el-button>
</div>
<!-- <el-dialog v-model="showBackNode" title="选择退回节点" width="400">-->
<!-- <el-select v-model="backNode" placeholder="请选择退回节点" clearable filterable>-->
<!-- <el-option-->
<!-- v-for="item in taskUserOptionList"-->
<!-- :key="item.nodeId"-->
<!-- :label="item.nodeName + ':' + item.userInfo.name"-->
<!-- :value="item.nodeId">-->
<!--&lt;!&ndash; {{item.nodeName }} : {{item.userInfo.name}}&ndash;&gt;-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- <el-button type="danger" @click="rollbackHandler">确认</el-button>-->
<!-- </el-dialog>-->
</template>
<script setup lang="jsx">
@@ -27,10 +47,17 @@ const props = defineProps({
value: {
type: String,
default: ''
},
//退回节点选择框数据
taskUserOptionList: {
type: Array,
default: []
}
})
const form = ref()
const backNode = ref('')
const showBackNode = ref(false)
const schema = computed(() => {
return [
{
@@ -120,6 +147,35 @@ const back = () => {
}
// 驳回
const handleReject = async () => {
// const values = form.value.getValues()
showBackNode.value = true
// if (!_value.value) {
// ElNotification({
// title: '提示',
// message: '请填写审核意见',
// type: 'warning'
// })
// return
// }
// const params = {
// taskId: props.taskId,
// // ...values
// auditOpinion: _value.value
// }
// // console.log('params', params)
// const res = await rejectTask(params)
// ElNotification({
// title: '提示',
// message: res.msg,
// type: res.code === 1000 ? 'success' : 'error'
// })
// if (res.code === 1000){
// tagsViewStore.delVisitedViews(router.currentRoute.value.path)
// back()
// }
}
//回退节点
const rollbackHandler = async () => {
// const values = form.value.getValues()
if (!_value.value) {
ElNotification({
@@ -132,7 +188,8 @@ const handleReject = async () => {
const params = {
taskId: props.taskId,
// ...values
auditOpinion: _value.value
auditOpinion: _value.value,
rollBackId: backNode.value
}
// console.log('params', params)
const res = await rejectTask(params)
@@ -141,7 +198,7 @@ const handleReject = async () => {
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000){
if (res.code === 1000) {
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
back()
}
@@ -160,7 +217,7 @@ const handleAgree = async () => {
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000){
if (res.code === 1000) {
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
back()
}

View File

@@ -83,6 +83,7 @@
</div>
</el-form>
<opinion v-if="data.taskId" :formData="data.formData" :taskId="data.taskId"
:taskUserOptionList="data.taskUserOptionList"
v-model:value="formData.auditOpinion"></opinion>
<file-preview ref="filePreviewRef" v-if="filePreviewShow" :fileName="filePreviewParam.fileName" :fileUrl="filePreviewParam.fileUrl"
:fileType="filePreviewParam.fileType"/>

View File

@@ -2,33 +2,33 @@
<div class="detail-block" v-loading="loading">
<baseTitle title="需求上报信息"></baseTitle>
<el-form :model="localFormData" ref="summaryForm" :rules="rules">
<el-row gutter="50">
<el-col :span="8">
<el-row gutter="14">
<el-col :span="6">
<el-form-item label="项目名称" prop="projectName">
<span>{{ localFormData.projectName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="开始时间" prop="startTime">
<span>{{ localFormData.startTime }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="结束时间" prop="endTime">
<span>{{ localFormData.endTime }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="项目类型" prop="projectType">
<span>{{ filterDict(cacheStore.getDict('project_type'), localFormData.projectType) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="研发主体" prop="rdSubject">
<span>{{ filterDict(cacheStore.getDict('rd_subject'), localFormData.rdSubject) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="出资类型" prop="investmentType">
<span>{{ filterDict(cacheStore.getDict('invest_type'), localFormData.investmentType) }}</span>
</el-form-item>
@@ -38,45 +38,45 @@
<!-- <span>{{ filterDict(cacheStore.getDict('project_impact'), localFormData.projectImpact) }}</span>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-col :span="6">
<el-form-item label="所属业务板块" prop="businessSegment">
<span>{{ filterDict(cacheStore.getDict('business_segment'), localFormData.businessSegment) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="预期技术标准制定" prop="technicalStandard">
<span>{{ filterDict(cacheStore.getDict('technical_standard'), localFormData.technicalStandard) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="产学研联合" prop="industryUniversityResearch">
<span>{{
filterDict(cacheStore.getDict('industry_university'), localFormData.industryUniversityResearch)
}}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="开展政府申报" prop="governmentDeclaration">
<span>{{
filterDict(cacheStore.getDict('government_declaration'), localFormData.governmentDeclaration)
}}</span>
</el-form-item>
</el-col>
<el-col :span="8" v-if="localFormData.isSpecialFund">
<el-col :span="6" v-if="localFormData.isSpecialFund">
<el-form-item label="专项资金名称" prop="specialFund">
<span>{{
localFormData.specialFundId === 0 ? localFormData.specialFund : changeName(fundOption, localFormData.specialFundId)
}}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="知识产权状况" prop="intellectualProperty">
<span>{{
filterDict(cacheStore.getDict('intellectual_property'), localFormData.intellectualProperty)
}}</span>
</el-form-item>
</el-col>
<el-col :span="16">
<el-col :span="12">
<el-form-item label="预期成果形式" prop="resultForm">
<span>{{ filterDict(cacheStore.getDict('result_form'), localFormData.resultForm) }}</span>
</el-form-item>
@@ -84,48 +84,48 @@
<el-col :span="24" style="margin-top: -15px">
<baseTitle title="预期知识产权"></baseTitle>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="发明专利(项)" prop="inventionPatent">
<span>{{ localFormData.inventionPatent }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="实用性新型专利(项)" prop="newPatent">
<span>{{ localFormData.newPatent }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
<span>{{ localFormData.softwareCopyright }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="著作权(项)" prop="copyright">
<span>{{ localFormData.copyright }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="其他(项)" prop="other">
<span>{{ localFormData.other }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="经济预算(元)" prop="economicEstimate">
<span>{{ toThousands(localFormData.economicEstimate) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="其中申请公司总部科技创新专项资金(元)" prop="specialFundAmount"
v-if="localFormData.isSpecialFund">
<span>{{ toThousands(localFormData.specialFundAmount) }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="12">
<el-form-item label="现有业务描述" prop="serviceDescription">
<span>{{ localFormData.serviceDescription }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="12">
<el-form-item label="研发项目关键内容描述" prop="contentDescription">
<span>{{ localFormData.contentDescription }}</span>
</el-form-item>

View File

@@ -14,6 +14,18 @@ import { getSubCompOpt } from '@/api/user/user.js';
const router = useRouter()
const route = useRoute()
const searchConfig = ref([
{
label: '公司名称',
prop: 'affiliatedCompanyIds',
component: 'el-tree-select',
props: {
placeholder: '请输入公司名称查询',
clearable: true,
data: [],
filterable: true,
checkStrictly: true
}
},
{
label: '项目名称',
prop: 'projectName',
@@ -25,18 +37,7 @@ const searchConfig = ref([
checkStrictly: true
}
},
{
label: '公司名称',
prop: 'affiliatedCompanyIds',
component: 'el-tree-select',
props: {
placeholder: '请输入',
clearable: true,
data: [],
filterable: true,
checkStrictly: true
}
},
{
label: '时间',
prop: 'time',
@@ -107,13 +108,13 @@ const tableConfig = reactive({
width:85
},
{
prop: 'projectName',
label: '项目名称',
prop: 'affiliatedCompany',
label: '公司名称',
align: 'center'
},
{
prop: 'affiliatedCompany',
label: '公司名称',
prop: 'projectName',
label: '项目名称',
align: 'center'
},
{

View File

@@ -52,6 +52,7 @@
</div>
</div>
<opinion v-if="shareData.taskId" :formData="shareData.formData" :taskId="shareData.taskId"
:taskUserOptionList="shareData.taskUserOptionList"
v-model:value="auditOpinion"></opinion>
</template>

View File

@@ -54,6 +54,7 @@
</div>
</div>
<opinion-moblie v-if="shareData.taskId" :formData="shareData.formData" :taskId="shareData.taskId"
:taskUserOptionList="shareData.taskUserOptionList"
v-model:value="auditOpinion"></opinion-moblie>
</div>
</template>

View File

@@ -2,14 +2,14 @@
<div v-loading="loading" class="add-block">
<baseTitle title="需求征集信息录入"></baseTitle>
<el-form :model="formData" ref="demandForm" :rules="rules">
<el-row gutter="30">
<el-col :span="8">
<el-form-item label="征集名称" prop="requirementName" label-width="96">
<el-row gutter="14">
<el-col :span="6">
<el-form-item label="征集名称" prop="requirementName" >
<el-input v-model="formData.requirementName" placeholder="请输入名称" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="征集类型" prop="collectType" label-width="105">
<el-col :span="6">
<el-form-item label="征集类型" prop="collectType">
<el-select v-model="formData.collectType" placeholder="请选择征集类型" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('collect_type')"
@@ -20,10 +20,11 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="需求上报截止时间" prop="deadline">
<el-config-provider>
<el-date-picker
style="width: 100%"
v-model="formData.deadline"
type="date"
placeholder="需求上报截止时间"
@@ -33,15 +34,15 @@
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否专项资金" prop="isSpecialFund">
<el-col :span="6">
<el-form-item label="专项资金" prop="isSpecialFund" required>
<el-select v-model="formData.isSpecialFund" placeholder="是否专项资金" clearable filterable>
<el-option :value="true" label="是"></el-option>
<el-option :value="false" label="否"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="专项资金名称" prop="specialFundId" v-if="formData.isSpecialFund">
<el-select v-model="formData.specialFundId" placeholder="请选择专项资金名称" clearable filterable>
<el-option
@@ -54,7 +55,7 @@
</el-form-item>
</el-col>
<el-col :span="24" style="margin-bottom: -25px">
<el-form-item label="征集公司" :required="true" prop="" class="company-select" label-width="96">
<el-form-item label="征集公司" :required="true" prop="" class="company-select">
<div style="width: 100%">
<el-button color="#DED0B2" @click="showCompany">{{ selectedCompanyList.length === 0 ? '请选择征集公司' : '更改' }}
</el-button>

View File

@@ -6,7 +6,7 @@
<div class="oper-page-btn" v-if="collectData.formData?.report">
<el-button color="#DED0B2" @click="handleDemandReport">需求上报</el-button>
</div>
<opinion v-if="collectData.taskId" :formData="formData" :taskId="collectData.taskId"
<opinion v-if="collectData.taskId" :formData="formData" :taskId="collectData.taskId" :taskUserOptionList="collectData.taskUserOptionList"
v-model:value="auditOpinion"></opinion>
</template>

View File

@@ -4,7 +4,7 @@
<CollectionDetailMoblie :formData="collectData.formData" :data="collectData" type="singleDetail"
:fileListShow="fileListShow"
:processViewer="processViewer" :loading="loading" v-model:value="auditOpinion"/>
<OpinionMoblie v-if="collectData.taskId" :formData="formData" :taskId="collectData.taskId" v-model:value="auditOpinion"></OpinionMoblie>
<OpinionMoblie v-if="collectData.taskId" :formData="formData" :taskId="collectData.taskId" :taskUserOptionList="collectData.taskUserOptionList" v-model:value="auditOpinion"></OpinionMoblie>
</div>
</template>

View File

@@ -2,14 +2,14 @@
<div class="detail-block" v-loading="loading">
<baseTitle title="需求上报"></baseTitle>
<el-form :model="formData" ref="summaryForm" :rules="rules">
<el-row gutter="15">
<el-col :span="8">
<el-form-item label="项目名称" prop="projectName" label-width="125">
<el-row gutter="14">
<el-col :span="6">
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="开始时间" prop="startTime" label-width="145">
<el-col :span="6">
<el-form-item label="开始时间" prop="startTime">
<el-config-provider>
<el-date-picker
v-model="formData.startTime"
@@ -22,9 +22,9 @@
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="结束时间" prop="endTime"
:title="!formData.startTime?'请先选择开始时间!':''" label-width="135">
:title="!formData.startTime?'请先选择开始时间!':''">
<el-config-provider>
<el-date-picker
v-model="formData.endTime"
@@ -39,8 +39,8 @@
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目类型" prop="projectType" label-width="125">
<el-col :span="6">
<el-form-item label="项目类型" prop="projectType">
<el-select v-model="formData.projectType" placeholder="请选择项目类型" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('project_type')"
@@ -51,8 +51,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="研发主体" prop="rdSubject" label-width="145">
<el-col :span="6">
<el-form-item label="研发主体" prop="rdSubject">
<el-select v-model="formData.rdSubject" placeholder="请选择研发主体" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('rd_subject')"
@@ -63,8 +63,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出资类型" prop="investmentType" label-width="135">
<el-col :span="6">
<el-form-item label="出资类型" prop="investmentType">
<el-select v-model="formData.investmentType" placeholder="请选择出资类型" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('invest_type')"
@@ -87,8 +87,8 @@
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-form-item label="所属业务板块" prop="businessSegment" label-width="125">
<el-col :span="6">
<el-form-item label="业务板块" prop="businessSegment">
<el-select v-model="formData.businessSegment" placeholder="请选择所属业务板块" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('business_segment')"
@@ -99,8 +99,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="预期技术标准制定" prop="technicalStandard" label-width="145">
<el-col :span="6">
<el-form-item label="技术标准" prop="technicalStandard">
<el-select v-model="formData.technicalStandard" placeholder="请选择预期技术标准制定" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('technical_standard')"
@@ -113,8 +113,8 @@
</el-col>
<!-- <el-col :span="route.query.id && formData.isSpecialFund?8:!formData.isSpecialFund?!route.query.id?6:8:6">-->
<el-col :span="8">
<el-form-item label="产学研联合" prop="industryUniversityResearch" label-width="135">
<el-col :span="6">
<el-form-item label="产学研联合" prop="industryUniversityResearch">
<el-radio-group v-model="formData.industryUniversityResearch">
<el-radio v-for="item in cacheStore.getDict('industry_university')"
:key="item.value"
@@ -124,10 +124,10 @@
</el-form-item>
</el-col>
<!-- <el-col :span="route.query.id && formData.isSpecialFund?8:!formData.isSpecialFund?route.query.id?8:6:6">-->
</el-row>
<el-row gutter="15">
<el-col :span="8">
<el-form-item label="开展政府申报" prop="governmentDeclaration" label-width="125">
<!-- </el-row>-->
<!-- <el-row gutter="10">-->
<el-col :span="6">
<el-form-item label="开展政府申报" prop="governmentDeclaration">
<!-- :label-width="route.query.id && formData.isSpecialFund?145:!formData.isSpecialFund?145:145">-->
<el-radio-group v-model="formData.governmentDeclaration">
<el-radio v-for="item in cacheStore.getDict('government_declaration')"
@@ -138,22 +138,21 @@
</el-form-item>
</el-col>
<!-- <el-col :span="!route.query.id && formData.isSpecialFund?4:!route.query.id?12:12" v-if="!route.query.id">-->
<el-col :span="8" v-if="!route.query.id">
<el-form-item label="是否专项资金" prop="isSpecialFund" label-width="145">
<el-col :span="6" v-if="!route.query.id">
<el-form-item label="是否专项资金" prop="isSpecialFund" required>
<el-radio-group v-model="formData.isSpecialFund" @change="specialFundChange">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8" v-if="route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金名称" prop="specialFundId"
:label-width="route.query.id && formData.isSpecialFund?145:''">
<el-col :span="6" v-if="route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金名称" prop="specialFundId">
<span>{{ formData.specialFund }}</span>
</el-form-item>
</el-col>
<el-col :span="8" v-if="!route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金名称" prop="specialFundId" label-width="135">
<el-col :span="6" v-if="!route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金" prop="specialFundId">
<el-select v-model="formData.specialFundId" placeholder="请选择专项资金名称" clearable filterable>
<el-option
v-for="item in specialFundOption"
@@ -164,10 +163,11 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" style="margin-bottom: -18px">
</el-row>
<el-row gutter="14">
<el-col :span="6" style="margin-bottom: -18px">
<!-- :label-width="!formData.isSpecialFund?!route.query.id?125:125:125">-->
<el-form-item label="知识产权状况" prop="intellectualProperty"
:label-width="route.query.id && formData.isSpecialFund?135:formData.isSpecialFund?125:route.query.id?145:135">
<el-form-item label="知识产权状况" prop="intellectualProperty">
<el-select v-model="formData.intellectualProperty" placeholder="请选择知识产权状况" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('intellectual_property')"
@@ -178,10 +178,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="route.query.id && formData.isSpecialFund?24:formData.isSpecialFund?16:24"
style="margin-bottom: -18px">
<el-form-item label="预期成果形式" prop="resultForm"
:label-width="route.query.id && formData.isSpecialFund?125:formData.isSpecialFund?145:125">
<el-col :span="12" style="margin-bottom: -18px">
<el-form-item label="成果形式" prop="resultForm">
<el-select v-model="formData.resultForm" placeholder="请选择预期成果形式" clearable filterable multiple>
<el-option
v-for="item in cacheStore.getDict('result_form')"
@@ -192,62 +190,62 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="15">
<el-row gutter="14">
<el-col :span="24">
<baseTitle title="预期知识产权"></baseTitle>
</el-col>
<el-col :span="8">
<el-form-item label="发明专利(项)" prop="inventionPatent" label-width="125">
<el-col :span="6">
<el-form-item label="发明专利(项)" prop="inventionPatent" label-width="105">
<el-input-number v-model="formData.inventionPatent" placeholder="请输入发明专利数量" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="实用性新型专利(项)" prop="newPatent" label-width="145">
<el-col :span="6">
<el-form-item label="新型专利(项)" prop="newPatent">
<el-input-number v-model="formData.newPatent" placeholder="请输入实用性新型专利数量" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="软件著作权(项)" prop="softwareCopyright" label-width="135">
<el-col :span="6">
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
<el-input-number v-model="formData.softwareCopyright" placeholder="请输入软件著作权数量" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="著作权(项)" prop="copyright" label-width="125">
<el-col :span="6">
<el-form-item label="著作权(项)" prop="copyright">
<el-input-number v-model="formData.copyright" placeholder="请输入著作权数量" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="其他(项)" prop="other" label-width="145">
<el-col :span="6">
<el-form-item label="其他(项)" prop="other" label-width="105">
<el-input-number v-model="formData.other" placeholder="请输入其他数量" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="经济预算(元)" prop="economicEstimate" label-width="135">
<el-col :span="6">
<el-form-item label="经济预算(元)" prop="economicEstimate">
<el-input-number v-model="formData.economicEstimate" placeholder="请输入经济预算数量" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="16" v-if="formData.isSpecialFund">
<el-col :span="12" v-if="formData.isSpecialFund">
<el-form-item label="其中申请公司总部科技创新专项资金(元)" prop="specialFundAmount">
<el-input-number v-model="formData.specialFundAmount" placeholder="请输入专项资金" :controls="false"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="现有业务描述" prop="serviceDescription" label-width="125">
</el-row>
<el-row gutter="14">
<el-col :span="12">
<el-form-item label="现有业务描述" prop="serviceDescription">
<el-input v-model="formData.serviceDescription" placeholder="请输入现有业务描述" rows="4" type="textarea"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="研发项目关键内容描述" prop="contentDescription" label-width="125">
<el-col :span="12">
<el-form-item label="研发项目关键内容描述" prop="contentDescription">
<el-input v-model="formData.contentDescription" placeholder="请输入研发项目关键内容描述" rows="4" type="textarea"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="分管领导"
label-width="125">
<el-form-item label="分管领导" label-width="120">
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
{{ optionalChargeLeadershipList.length !== 0 ? '更改' : '请选择' }}
</el-button>
@@ -461,7 +459,7 @@ const handleSubmit = debounce(async (instance) => {
otherFileList.value.forEach(item => {
otherFiles.push(getFileParam(item))
})
formData.value.optionalChargeLeadership=optionalChargeLeadershipList.value
formData.value.optionalChargeLeadership = optionalChargeLeadershipList.value
if (formData.value.singleFile !== undefined) {
formData.value.singleFile = getFileParam(formData.value.singleFile)
}
@@ -515,7 +513,7 @@ const handleResubmit = debounce((instance) => {
otherFiles.push(getFileParam(item))
})
}
formData.value.optionalChargeLeadership=optionalChargeLeadershipList.value
formData.value.optionalChargeLeadership = optionalChargeLeadershipList.value
if (formData.value.isSpecialFund && formData.value.specialFund === null) {
formData.value.specialFund = getFundName(formData.value.specialFundId)
}

View File

@@ -19,7 +19,7 @@
v-model:value="auditOpinion"/>
</template>
</steps>
<opinion v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId"
<opinion v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId" :taskUserOptionList="summaryData.taskUserOptionList"
v-model:value="auditOpinion"></opinion>
</template>

View File

@@ -12,6 +12,7 @@ import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {toThousands} from '@/utils/changePrice.js'
import {switchAttachmentState} from "@/api/project-manage/attachment";
import {ElMessageBox} from "element-plus";
import { getSubCompOpt } from '@/api/user/user.js';
const router = useRouter()
const shortcuts = [
@@ -43,7 +44,19 @@ const shortcuts = [
},
},
]
const searchConfig = reactive([
const searchConfig = ref([
{
label: '征集公司',
prop: 'affiliatedCompanyId',
component: 'el-tree-select',
props: {
placeholder: '请输入征集公司查询',
clearable: true,
data: [],
filterable: true,
checkStrictly: true
}
},
{
label: '项目名称',
prop: 'projectName',
@@ -346,4 +359,10 @@ const handleOpenUpload=(row,flag)=>{
})
})
}
const init = async () => {
const res = await getSubCompOpt()
searchConfig.value.find(item=>item.prop == 'affiliatedCompanyId').props.data = res.data
}
init()
</script>

View File

@@ -49,7 +49,7 @@
</template>
</steps>
<div style="width: 100%;height: 30px"></div>
<opinion v-if="detailData.taskId" :formData="detailData.formData" :taskId="detailData.taskId"
<opinion v-if="detailData.taskId" :formData="detailData.formData" :taskId="detailData.taskId" :taskUserOptionList="detailData.taskUserOptionList"
v-model:value="auditOpinion"/>
</template>

View File

@@ -10,6 +10,7 @@
<script setup lang="jsx">
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {toThousands} from '@/utils/changePrice.js'
import { getSubCompOpt } from '@/api/user/user.js';
const router = useRouter()
const shortcuts = [
@@ -41,7 +42,19 @@ const shortcuts = [
},
},
]
const searchConfig = reactive([
const searchConfig = ref([
{
label: '征集公司',
prop: 'affiliatedCompanyId',
component: 'el-tree-select',
props: {
placeholder: '请输入征集公司查询',
clearable: true,
data: [],
filterable: true,
checkStrictly: true
}
},
{
label: '项目名称',
prop: 'projectName',
@@ -400,5 +413,10 @@ const handlePhaseChangeEdit = (row) => {
}
})
}
const init = async () => {
const res = await getSubCompOpt()
searchConfig.value.find(item=>item.prop == 'affiliatedCompanyId').props.data = res.data
}
init()
</script>

View File

@@ -5,7 +5,7 @@
<div style="color: #606266;font-size: 14px;height:25px;"><span style="display:inline-block;text-align: right;margin-right: 14px">抄送人</span>{{copyName?copyName:'--'}}</div>
<ApprovalDetail :formData="summaryData.formData" :data="summaryData" type="phase"
:processViewer="summaryProcessViewer" :loading="loading" :fileListShow="fileListShow" v-model:value="auditOpinion"/>
<opinion v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId" v-model:value="auditOpinion"></opinion>
<opinion v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId" :taskUserOptionList="summaryData.taskUserOptionList" v-model:value="auditOpinion"></opinion>
</template>
<script setup lang="jsx">

View File

@@ -10,6 +10,7 @@
<script setup lang="jsx">
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {toThousands} from '@/utils/changePrice.js'
import { getSubCompOpt } from '@/api/user/user.js';
const router = useRouter()
const shortcuts = [
{
@@ -40,7 +41,19 @@ const shortcuts = [
},
},
]
const searchConfig = reactive([
const searchConfig = ref([
{
label: '征集公司',
prop: 'affiliatedCompanyId',
component: 'el-tree-select',
props: {
placeholder: '请输入征集公司查询',
clearable: true,
data: [],
filterable: true,
checkStrictly: true
}
},
{
label: '项目名称',
prop: 'projectName',
@@ -314,5 +327,10 @@ const handleApply = (row) => {
}
})
}
const init = async () => {
const res = await getSubCompOpt()
searchConfig.value.find(item=>item.prop == 'affiliatedCompanyId').props.data = res.data
}
init()
</script>

View File

@@ -1,8 +1,16 @@
<template>
<!-- <baseTitle title="审核意见"></baseTitle>-->
<!-- <fvForm :schema="schema" @getInstance="(e)=>form = e"></fvForm>-->
<div class="oper-page-btn">
<el-button type="danger" @click="handleReject">驳回</el-button>
<div class="oper-page-btn" style="display: flex">
<el-select v-if="taskUserOptionList?.length>0" v-model="backNode" placeholder="请选择退回节点" clearable style="width: 150px;margin-right: 10px">
<el-option
v-for="item in taskUserOptionList"
:key="item.nodeId"
:label="item.nodeName + (item.userInfo ? ':' + item.userInfo.name : '')"
:value="item.nodeId">
</el-option>
</el-select>
<el-button type="danger" @click="rollbackHandler">驳回</el-button>
<el-button color="#DED0B2" @click="handleAgree">同意</el-button>
</div>
</template>
@@ -27,9 +35,15 @@ const props = defineProps({
value: {
type: String,
default: ''
},
//退回节点选择框数据
taskUserOptionList: {
type: Array,
default: []
}
})
const backNode = ref('')
const form = ref()
const schema = computed(() => {
return [
@@ -146,6 +160,35 @@ const handleReject = async () => {
// back()
}
//回退节点
const rollbackHandler = async () => {
// const values = form.value.getValues()
if (!_value.value) {
ElNotification({
title: '提示',
message: '请填写审核意见',
type: 'warning'
})
return
}
const params = {
taskId: props.taskId,
// ...values
auditOpinion: _value.value,
rollBackId: backNode.value
}
// console.log('params', params)
const res = await rejectTask(params)
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
back()
}
}
const handleAgree = async () => {
// const values = form.value.getValues()
const params = {

View File

@@ -85,7 +85,7 @@
</div>
</div>
</el-form>
<opinion-moblie v-if="fundData.taskId" :formData="formData" :taskId="fundData.taskId"
<opinion-moblie v-if="fundData.taskId" :formData="formData" :taskId="fundData.taskId" :taskUserOptionList="fundData.taskUserOptionList"
v-model:value="formData.auditOpinion"></opinion-moblie>
<file-preview ref="filePreviewRef" :fullscreen="true" v-if="filePreviewShow" :fileName="filePreviewParam.fileName" :fileUrl="filePreviewParam.fileUrl"
:fileType="filePreviewParam.fileType"/>

View File

@@ -46,7 +46,7 @@
<!-- :formData="detailData.formData"/>-->
</template>
</StepsMoblie>
<opinion-moblie v-if="detailData.taskId" :formData="detailData.formData" :taskId="detailData.taskId"
<opinion-moblie v-if="detailData.taskId" :formData="detailData.formData" :taskId="detailData.taskId" :taskUserOptionList="detailData.taskUserOptionList"
v-model:value="auditOpinion"/>
</div>
</template>

View File

@@ -7,6 +7,7 @@
<ApprovalDetailMoblie :formData="summaryData.formData" :data="summaryData" type="phase"
:processViewer="summaryProcessViewer" :loading="loading" :fileListShow="fileListShow" v-model:value="auditOpinion"/>
<opinion-moblie v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId"
:taskUserOptionList="summaryData.taskUserOptionList"
v-model:value="auditOpinion"/>
</div>
</template>