Merge pull request 'dj' (#956) from dj into master

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/956
This commit is contained in:
2025-03-31 15:16:28 +00:00
19 changed files with 413 additions and 114 deletions

View File

@@ -9,6 +9,13 @@ export const addAllocation = (data) => {
data data
}); });
}; };
export const addShare = (data) => {
return request({
url:'/workflow/mosr/cost/share',
method: "post",
data
});
};
export const getAllocationDetail = (allocationId) => { export const getAllocationDetail = (allocationId) => {
return request({ return request({
url: `/workflow/mosr/cost/allocation/info/${allocationId}`, url: `/workflow/mosr/cost/allocation/info/${allocationId}`,

View File

@@ -10,6 +10,13 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6" v-if="title==='apply'">
<!-- label-width="106"-->
<el-form-item label="实际专项资金" prop="specialFundAmount" label-width="121" >
<el-input v-model="localFormData.specialFundAmount" placeholder="请输入实际专项资金">
</el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="6" v-if="title==='apply'">--> <!-- <el-col :span="6" v-if="title==='apply'">-->
<!-- &lt;!&ndash; label-width="106"&ndash;&gt;--> <!-- &lt;!&ndash; label-width="106"&ndash;&gt;-->
<!-- <el-form-item label="实际专项资金" prop="budget" label-width="120">--> <!-- <el-form-item label="实际专项资金" prop="budget" label-width="120">-->
@@ -230,7 +237,7 @@ const pageInfo = reactive({
}) })
const rules = reactive({ const rules = reactive({
actualEconomicEstimate: [{required: true, message: '请输入实际经费预算', trigger: ['blur','change']}], actualEconomicEstimate: [{required: true, message: '请输入实际经费预算', trigger: ['blur','change']}],
// projectChargePerson: [{required: true, message: '请选择项目负责人', trigger: 'blur'}], specialFundAmount: [{required: true, message: '请输入实际专项资金', trigger: 'blur'}],
// projectPerson: [{required: true, message: '请选择项目成员', trigger: 'blur'}], // projectPerson: [{required: true, message: '请选择项目成员', trigger: 'blur'}],
}) })
const tagsViewStore = useTagsView() const tagsViewStore = useTagsView()
@@ -549,7 +556,8 @@ const handleSubmit = async (instance) => {
fileList: files, fileList: files,
// singleFile: attachment.value.singleFile, // singleFile: attachment.value.singleFile,
projectId: projectId.value, projectId: projectId.value,
actualEconomicEstimate: localFormData.value.actualEconomicEstimate, actualEconomicEstimate: parseFloat(localFormData.value.actualEconomicEstimate),
specialFundAmount: parseFloat(localFormData.value.specialFundAmount),
preProcess: JSON.stringify(localFormData.value.preProcess) preProcess: JSON.stringify(localFormData.value.preProcess)
} }
if (sessionParams.value.preProcess && !localFormData.value.preProcess) { if (sessionParams.value.preProcess && !localFormData.value.preProcess) {

View File

@@ -32,7 +32,7 @@
<!-- <el-button color="#DED0B2" @click="handleUpload">上传附件</el-button>--> <!-- <el-button color="#DED0B2" @click="handleUpload">上传附件</el-button>-->
<file-upload v-if="!isLineBtn&&uploadState" @getFile="getFile"/> <file-upload v-if="!isLineBtn&&uploadState" @getFile="getFile"/>
<el-button color="#DED0B2" @click="handleEditTag" v-if="activeName!='all'" style="margin-left: 10px;">编辑 <el-button color="#DED0B2" @click="handleEditTag" v-if="activeName!='all'&&activeName!='plus'" style="margin-left: 10px;">编辑
</el-button> </el-button>
</div> </div>
<fvTable style="width: 100%;min-height:311px;max-height: 311px" v-if="showAttachmentTable" height="311" <fvTable style="width: 100%;min-height:311px;max-height: 311px" v-if="showAttachmentTable" height="311"
@@ -127,9 +127,9 @@ const executeTableConfig = reactive({
<div> <div>
<el-button type="primary" link onClick={() => handleDownload(row)}>下载</el-button> <el-button type="primary" link onClick={() => handleDownload(row)}>下载</el-button>
{ {
row.newFile ? uploadState.value ?
<popover-delete name={row.originalFileName} type={'文件'} btnType={'danger'} <popover-delete name={row.originalFileName} type={'文件'} btnType={'danger'}
onDelete={() => deleteSingleFile(row)}/> : '' onDelete={() => deleteSingleFile(row)}/>:''
} }
</div> </div>
) )
@@ -137,6 +137,7 @@ const executeTableConfig = reactive({
} }
] ]
}) })
// row.newFile ?: ''
const otherAttachmentList = ref([]) const otherAttachmentList = ref([])
const filePreviewParam = ref({ const filePreviewParam = ref({
@@ -159,6 +160,8 @@ const deleteSingleFile = (row) => {
}) })
if (res.code === 1000) { if (res.code === 1000) {
otherAttachmentList.value.splice(otherAttachmentList.value.findIndex((item) => item.fileId === row.fileId), 1); otherAttachmentList.value.splice(otherAttachmentList.value.findIndex((item) => item.fileId === row.fileId), 1);
getAttachmentList()
activeName.value = 'all'
} }
}); });
} }
@@ -176,6 +179,9 @@ const changeTag = async () => {
projectId: route.query.projectId, projectId: route.query.projectId,
fileTag: fileParam.value.tagName fileTag: fileParam.value.tagName
}) })
getAttachmentList()
fileParam.value.tagName = ''
activeName.value = 'all'
} }
ElNotification({ ElNotification({
title: '提示', title: '提示',
@@ -188,11 +194,9 @@ const changeTag = async () => {
// label: fileParam.value.tagName // label: fileParam.value.tagName
// }) // })
tagNameShow.value = false; tagNameShow.value = false;
fileParam.value.tagName = ''
activeName.value = 'all'
} }
const tabRemove = async (val) => { const tabRemove = async (val) => {
ElMessageBox.confirm(`确认删除名称为${getFileName(val)}的标签吗?`, '系统提示', { ElMessageBox.confirm(`确认删除名称为${getTagName(val)}的标签吗?`, '系统提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
@@ -205,15 +209,16 @@ const tabRemove = async (val) => {
}) })
if (res.code === 1000) { if (res.code === 1000) {
getTagsOption() getTagsOption()
otherAttachmentList.value = allFiles.value
} }
}) })
} }
const handleEditTag = () => { const handleEditTag = () => {
tagNameShow.value = true tagNameShow.value = true
fileParam.value.tagName = getFileName(activeName.value) fileParam.value.tagName = getTagName(activeName.value)
isEdit.value = true isEdit.value = true
} }
const getFileName = (name) => { const getTagName = (name) => {
const tagArray = tagsOption.value.filter((item1) => item1.tagId == name) const tagArray = tagsOption.value.filter((item1) => item1.tagId == name)
let tagName = '' let tagName = ''
if (tagArray && tagArray.length > 0) { if (tagArray && tagArray.length > 0) {
@@ -227,16 +232,17 @@ const handleTabClick = (item) => {
isEdit.value = false isEdit.value = false
} }
if (item.props.name != 'plus') { if (item.props.name != 'plus') {
if (item.props.name == 'all') { changeFileList(getTagName(item.props.name))
otherAttachmentList.value = allFiles.value // if (item.props.name == 'all') {
} else { // otherAttachmentList.value = allFiles.value
otherAttachmentList.value = allFiles.value.filter(item1 => item1.tag == getFileName(item.props.name)) // } else {
} // otherAttachmentList.value = allFiles.value.filter(item1 => item1.tag == getTagName(item.props.name))
// }
} }
showAttachmentTable.value = false // showAttachmentTable.value = false
nextTick(() => { // nextTick(() => {
showAttachmentTable.value = true // showAttachmentTable.value = true
}) // })
} }
const compositeParam = (item) => { const compositeParam = (item) => {
return { return {
@@ -246,7 +252,7 @@ const compositeParam = (item) => {
fileType: item.fileType, fileType: item.fileType,
url: item.url, url: item.url,
newFile: true, newFile: true,
tag: activeName.value, tag: getTagName(activeName.value),
} }
} }
const getFile = (val) => { const getFile = (val) => {
@@ -264,11 +270,14 @@ const handleSubmit = async (list) => {
targetState: "30" targetState: "30"
} }
let res = await uploadFileList(params) let res = await uploadFileList(params)
// ElNotification({ if(res.code !== 1000){
// title: '提示', ElNotification({
// message: res.msg, title: '提示',
// type: res.code === 1000 ? 'success' : 'error' message: res.msg,
// }) type: 'error'
})
}
getTagsOption()
} }
const clickToPreview = (row) => { const clickToPreview = (row) => {
filePreviewShow.value = false filePreviewShow.value = false
@@ -281,12 +290,29 @@ const clickToPreview = (row) => {
filePreviewShow.value = true filePreviewShow.value = true
}) })
} }
const handleSearch = () => { const changeFileList=(tag)=>{
showAttachmentTable.value = false
let params = {
targetId: route.query.projectId,
targetState: "30",
tag:tag
}
searchImplementationFileList(params).then(res => {
if (res.code === 1000) {
otherAttachmentList.value = res.data.fileList
nextTick(() => {
showAttachmentTable.value = true
})
}
})
}
const getAttachmentList = () => {
const loading = ElLoading.service({fullscreen: true}) const loading = ElLoading.service({fullscreen: true})
let params = { let params = {
targetId: route.query.projectId, targetId: route.query.projectId,
targetState: "30" targetState: "30"
} }
showAttachmentTable.value = false
if (attachmentParam.tag) { if (attachmentParam.tag) {
tagsOption.value.forEach(item => { tagsOption.value.forEach(item => {
if (item.value === attachmentParam.tag) { if (item.value === attachmentParam.tag) {
@@ -296,7 +322,6 @@ const handleSearch = () => {
params.tag = attachmentParam.tag params.tag = attachmentParam.tag
} }
searchImplementationFileList(params).then(res => { searchImplementationFileList(params).then(res => {
showAttachmentTable.value = false
if (res.code === 1000) { if (res.code === 1000) {
// otherAttachmentList.value = res.data.fileList // otherAttachmentList.value = res.data.fileList
otherAttachmentList.value = res.data.fileList otherAttachmentList.value = res.data.fileList
@@ -322,19 +347,12 @@ const getTagsOption = () => {
if (!route.query.projectId) return if (!route.query.projectId) return
getTagList(route.query.projectId).then(res => { getTagList(route.query.projectId).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
res.data.rows[0].isClose = 1
tagsOption.value = res.data.rows tagsOption.value = res.data.rows
otherAttachmentList.value.forEach(item => { tagsOption.value.forEach((tag, index) => {
tagsOption.value.forEach(tag => { const filterArray = otherAttachmentList.value.filter(item => tag.fileTag == item.tag)
// console.log(tag.fileTag,item.tag) tagsOption.value[index].isClose = filterArray.length > 0 ? 0 : 1
if (tag.fileTag == item.tag) {
tag.isClose = 0
} else {
tag.isClose = 1
}
})
}) })
if (!res.data.rows || res.data.rows.length == 0) return; // if (!res.data.rows || res.data.rows.length == 0) return;
// activeName.value=res.data.rows[0].tagId // activeName.value=res.data.rows[0].tagId
} else { } else {
ElNotification({ ElNotification({
@@ -356,9 +374,9 @@ const handleUpload = () => {
} }
}) })
} }
handleSearch() getAttachmentList()
onActivated(() => { onActivated(() => {
handleSearch() getAttachmentList()
}) })
</script> </script>
<style lang="scss"> <style lang="scss">

View File

@@ -294,6 +294,22 @@ const schema = computed(() => {
</div> </div>
) )
}, },
{
label: '实际经费预算',
prop: 'actualEconomicEstimate',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.actualEconomicEstimate ?
<span>{toThousands(baseFormData.value?.actualEconomicEstimate)}</span>
: <span>{'--'}</span>
}
</div>
)
},
{ {
label: '产学研联合', label: '产学研联合',
prop: 'industryUniversityResearch', prop: 'industryUniversityResearch',
@@ -335,6 +351,22 @@ const schema = computed(() => {
}, },
{ {
label: '预估专项资金(元)', label: '预估专项资金(元)',
prop: 'forecastSpecialFundAmount',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.forecastSpecialFundAmount ?
<span>{toThousands(baseFormData.value?.forecastSpecialFundAmount)}</span>
: <span>{'--'}</span>
}
</div>
)
},
{
label: '实际专项资金(元)',
prop: 'specialFundAmount', prop: 'specialFundAmount',
colProps: { colProps: {
span: 6 span: 6

View File

@@ -1,6 +1,6 @@
<template> <template>
<fvSearchForm :searchConfig="searchConfig" @search="search" style="margin-left: 16px"></fvSearchForm> <!-- <fvSearchForm :searchConfig="searchConfig" @search="search" style="margin-left: 16px"></fvSearchForm>-->
<fvTable ref="tableIns" :tableConfig="tableConfig"> <fvTable ref="tableIns" :tableConfig="tableConfig" style="margin-top: 15px">
<template #empty> <template #empty>
<el-empty description="暂无数据"/> <el-empty description="暂无数据"/>
</template> </template>
@@ -115,118 +115,100 @@ const tableConfig = reactive({
// } // }
// }, // },
{ {
prop: 'affiliatedCompany', prop: 'paymentYear',
label: '支出年份', label: '支出年份',
align: 'center' align: 'center'
}, },
{ {
prop: 'projectName', prop: 'paymentMonth',
label: '月份', label: '月份',
align: 'center' align: 'center'
}, },
{ {
prop: 'projectCost', prop: 'masterProjectName',
label: '主项目', label: '主项目',
align: 'center', align: 'center',
width: 120, width: 120,
showOverflowTooltip: false,
currentRender: ({row, index}) => {
if (row.projectCost !== null&&row.projectCost !== null&&row.projectCost!==undefined) {
return (<Tag dictType={'project_cost'} value={row.projectCost}/>)
} else {
return '--'
}
}
}, },
{ {
prop: 'time', prop: 'subProjectName',
label: '子项目', label: '子项目',
align: 'center', align: 'center',
width: 120, width: 120,
}, },
{ {
prop: 'researchStage', prop: 'projectType',
label: '项目类型', label: '项目类型',
align: 'center', align: 'center',
width: 120, width: 120,
showOverflowTooltip: false, showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {
if (row.researchStage&&row.researchStage !== null&&row.researchStage!==undefined) { if (row.projectType&&row.projectType !== null&&row.projectType!==undefined) {
return (<Tag dictType={'research_stage'} value={row.researchStage}/>) return (<Tag dictType={'project_type'} value={row.projectType}/>)
} else { } else {
return '--' return '--'
} }
} }
}, },
{ {
prop: 'digest', prop: 'rdType',
label: 'RAD统计类型', label: 'RAD统计类型',
align: 'center' align: 'center'
}, },
{ {
prop: 'digest', prop: 'paymentProcessType',
label: '付款流程类型', label: '付款流程类型',
align: 'center', align: 'center',
currentRender:({row})=>{
return <span>{toThousands(row.afterTax)}</span>
}
}, },
{ {
prop: 'digest', prop: 'processState',
label: '流程状态', label: '流程状态',
align: 'center', align: 'center',
showOverflowTooltip: false,
currentRender: ({row, index}) => {
if (row.source&&row.source !== null&&row.source!==undefined) {
return (<Tag dictType={'ledger_source'} value={row.source}/>)
} else {
return '--'
}
}
}, },
{ {
prop: 'digest', prop: 'filingTime',
label: '归档时间', label: '归档时间',
align: 'center', align: 'center',
}, },
{ {
prop: 'digest', prop: 'paymentProcessNum',
label: '付款流程编号', label: '付款流程编号',
align: 'center', align: 'center',
}, },
{ {
prop: '付款/请款事由', prop: 'paymentAmount',
label: '来源',
align: 'center',
},
{
prop: 'digest',
label: '付款金额', label: '付款金额',
align: 'center', align: 'center',
}, },
{ {
prop: 'digest', prop: 'paymentSubject',
label: '付款/请款事由',
align: 'center',
},
{
prop: 'contractNum',
label: '合同编号', label: '合同编号',
align: 'center', align: 'center',
}, },
{ {
prop: 'digest', prop: 'contractName',
label: '合同名称', label: '合同名称',
align: 'center', align: 'center',
}, },
{ {
prop: 'digest', prop: 'contractSumAmount',
label: '合同金额(元)', label: '合同金额(元)',
align: 'center', align: 'center',
}, },
], ],
api: '', api: '/workflow/mosr/payment/list',
params: {}, params: {},
export:{ export:{
open :true, open :true,
fileName:`技创新费用支出明细.xlsx` fileName:`研项日现金支出明细表`
} }
}) })
const search = (val) => { const search = (val) => {

View File

@@ -96,7 +96,7 @@ import {
getResearchUser, getResearchUser,
getProjectOption, getProjectOption,
editAllocation, editAllocation,
getAllocationDetailList getAllocationDetailList, addShare
} from "@/api/expense-manage"; } from "@/api/expense-manage";
import {useProcessStore} from '@/stores/processStore.js'; import {useProcessStore} from '@/stores/processStore.js';
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue'; import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
@@ -107,16 +107,16 @@ localStorage.removeItem('originallySelectedList')
const userList = ref([]) const userList = ref([])
const changeDiagram = ref(false) const changeDiagram = ref(false)
const rules = reactive({ const rules = reactive({
shareName: [{required: true, message: '请输入分摊名称', trigger: ['blur', 'change']}], // shareName: [{required: true, message: '请输入分摊名称', trigger: ['blur', 'change']}],
apportionmentMonth: [{required: true, message: '请选择月份', trigger: ['blur', 'change']}], apportionmentMonth: [{required: true, message: '请选择月份', trigger: ['blur', 'change']}],
projectId: [{required: true, message: '请选择项目名称', trigger: ['blur', 'change']}], projectId: [{required: true, message: '请选择项目名称', trigger: ['blur', 'change']}],
// researchPersonnelId: [{required: true, message: '请选择研发人员', trigger: ['blur', 'change']}], // researchPersonnelId: [{required: true, message: '请选择研发人员', trigger: ['blur', 'change']}],
wagesPayable: [{required: true, message: '请输入应发工资', trigger: ['blur', 'change']}], // wagesPayable: [{required: true, message: '请输入应发工资', trigger: ['blur', 'change']}],
performance: [{required: true, message: '请输入绩效', trigger: ['blur', 'change']}], // performance: [{required: true, message: '请输入绩效', trigger: ['blur', 'change']}],
reserveFund: [{required: true, message: '请输入公积金', trigger: ['blur', 'change']}], // reserveFund: [{required: true, message: '请输入公积金', trigger: ['blur', 'change']}],
socialSecurity: [{required: true, message: '请输入社保', trigger: ['blur', 'change']}], // socialSecurity: [{required: true, message: '请输入社保', trigger: ['blur', 'change']}],
annuity: [{required: true, message: '请输入年金', trigger: ['blur', 'change']}], // annuity: [{required: true, message: '请输入年金', trigger: ['blur', 'change']}],
workday: [{required: true, message: '请输入工作日', trigger: ['blur', 'change']}], // workday: [{required: true, message: '请输入工作日', trigger: ['blur', 'change']}],
researchDuration: [{required: true, message: '请输入研发时长', trigger: ['blur', 'change']}], researchDuration: [{required: true, message: '请输入研发时长', trigger: ['blur', 'change']}],
}) })
const processStore = useProcessStore() const processStore = useProcessStore()
@@ -135,12 +135,12 @@ const formData = ref({
{ {
projectId: '', projectId: '',
projectName: '', projectName: '',
researchPersonnelId: '', // researchPersonnelId: '',
wagesPayable: null, // wagesPayable: null,
performance: null, // performance: null,
reserveFund: null, // reserveFund: null,
socialSecurity: null, // socialSecurity: null,
annuity: null, // annuity: null,
workday: '21.75', workday: '21.75',
researchDuration: null, researchDuration: null,
} }
@@ -383,13 +383,11 @@ const handleSubmit = (instance) => {
return; return;
} }
let params = { let params = {
shareName: formData.value.shareName,
apportionmentMonth: formData.value.apportionmentMonth, apportionmentMonth: formData.value.apportionmentMonth,
usrAllocations: formData.value.tableData, usrAllocations: formData.value.tableData,
deploymentId: processInstanceData.value.deploymentId,
} }
console.log('params', params, formData.value.tableData) console.log('params', params, formData.value.tableData)
const {code, msg} = await addAllocation(params) const {code, msg} = await addShare(params)
ElNotification({ ElNotification({
title: '提示', title: '提示',
message: msg, message: msg,

View File

@@ -46,6 +46,11 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1 return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
} }
}, },
{
prop: 'processNumber',
label: '编号',
align: 'center',
},
{ {
prop: 'requirementName', prop: 'requirementName',
label: '征集名称', label: '征集名称',

View File

@@ -183,15 +183,15 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6" v-if="formData.isSpecialFund"> <el-col :span="6" v-if="formData.isSpecialFund">
<el-form-item label="预估专项资金(元)" prop="specialFundAmount"> <el-form-item label="预估专项资金(元)" prop="forecastSpecialFundAmount">
<el-input <el-input
v-model="formData.specialFundAmount" v-model="formData.forecastSpecialFundAmount"
placeholder="请输入预估专项资金" placeholder="请输入预估专项资金"
clearable clearable
:formatter="(value) => value.replace(/\B(?=(\d{3})+(?!\d))/g, ',')" :formatter="(value) => value.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
:parser="(value) => value.replace(/\$\s?|(,*)+[^0-9.]/g, '')" @change="changeCollectData" :parser="(value) => value.replace(/\$\s?|(,*)+[^0-9.]/g, '')" @change="changeCollectData"
/> />
<!-- <el-input-number v-model="formData.specialFundAmount" placeholder="请输入预估专项资金" :controls="false"/>--> <!-- <el-input-number v-model="formData.forecastSpecialFundAmount" placeholder="请输入预估专项资金" :controls="false"/>-->
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':'-40px'}"> <el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':'-40px'}">
@@ -232,7 +232,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?route.query.id?'-10px':'0':'0'}"> <el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?route.query.id?'-10px':'0':'0'}">
<el-form-item label="需求征集" prop="requirementId" required> <el-form-item label="需求征集" prop="" required>
<template v-if="formData.requirementDefaultName">{{ formData.requirementDefaultName }}</template> <template v-if="formData.requirementDefaultName">{{ formData.requirementDefaultName }}</template>
<el-select v-else v-model="formData.requirementId" clearable placeholder="请选择需求征集" <el-select v-else v-model="formData.requirementId" clearable placeholder="请选择需求征集"
@change="changeCollectData"> @change="changeCollectData">
@@ -447,7 +447,7 @@ const rules = reactive({
economicEstimate: [{required: true, message: '请输入预估经费预算', trigger: ['blur', 'change']}], economicEstimate: [{required: true, message: '请输入预估经费预算', trigger: ['blur', 'change']}],
isSpecialFund: [{required: true, message: '请选择是否为专项资金', trigger: ['blur', 'change']}], isSpecialFund: [{required: true, message: '请选择是否为专项资金', trigger: ['blur', 'change']}],
isWithinBudget: [{required: true, message: '请选择是否在预算内', trigger: ['blur', 'change']}], isWithinBudget: [{required: true, message: '请选择是否在预算内', trigger: ['blur', 'change']}],
specialFundAmount: [{required: true, message: '请输入专项资金', trigger: ['blur', 'change']}], forecastSpecialFundAmount: [{required: true, message: '请输入专项资金', trigger: ['blur', 'change']}],
serviceDescription: [{required: true, message: '请输入现有业务描述', trigger: ['blur', 'change']}], serviceDescription: [{required: true, message: '请输入现有业务描述', trigger: ['blur', 'change']}],
contentDescription: [{required: true, message: '请输入研发项目关键内容描述', trigger: ['blur', 'change']}] contentDescription: [{required: true, message: '请输入研发项目关键内容描述', trigger: ['blur', 'change']}]
}) })

View File

@@ -88,7 +88,7 @@ const searchConfig = ref([
}, },
{ {
label: '承办单位', label: '承办单位',
prop: 'undertaker', prop: 'affiliatedCompanyId',
component: 'el-tree-select', component: 'el-tree-select',
props: { props: {
placeholder: '请输入承办单位查询', placeholder: '请输入承办单位查询',
@@ -218,6 +218,11 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1 return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
} }
}, },
{
prop: 'processNumber',
label: '编号',
align: 'center',
},
{ {
prop: 'requirementName', prop: 'requirementName',
label: '征集名称', label: '征集名称',
@@ -441,7 +446,7 @@ const handleDetail = (row) => {
} }
const init = async () => { const init = async () => {
const res = await getSubCompOpt() const res = await getSubCompOpt()
searchConfig.value.find(item=>item.prop == 'undertaker').props.data = res.data searchConfig.value.find(item=>item.prop == 'affiliatedCompanyId').props.data = res.data
} }
init() init()

View File

@@ -171,6 +171,21 @@ const schema = computed(() => {
} }
</div> </div>
) )
}, {
label: '实际经费预算',
prop: 'actualEconomicEstimate',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.actualEconomicEstimate ?
<span>{toThousands(baseFormData.value?.actualEconomicEstimate)}</span>
: <span>{'--'}</span>
}
</div>
)
}, },
{ {
label: '产学研联合', label: '产学研联合',
@@ -210,9 +225,24 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
},{
label: '预估专项资金(元)',
prop: 'forecastSpecialFundAmount',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.forecastSpecialFundAmount ?
<span>{toThousands(baseFormData.value?.forecastSpecialFundAmount)}</span>
: <span>{'--'}</span>
}
</div>
)
}, },
{ {
label: '预估专项资金(元)', label: '实际专项资金(元)',
prop: 'specialFundAmount', prop: 'specialFundAmount',
colProps: { colProps: {
span: 6 span: 6
@@ -249,6 +279,13 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
},
{
label: '主项目',
prop: 'masterProjectName',
colProps: {
span: 6
}
} }
] ]
}) })

View File

@@ -216,6 +216,12 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1 return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
} }
}, },
{
prop: 'processNumber',
label: '编号',
align: 'center',
},
{ {
prop: 'requirementName', prop: 'requirementName',
label: '征集名称', label: '征集名称',

View File

@@ -178,6 +178,22 @@ const schema = computed(() => {
</div> </div>
) )
}, },
{
label: '实际经费预算',
prop: 'actualEconomicEstimate',
colProps: {
span: 6
},
component: () => (
<div>
{
basicData.value?.actualEconomicEstimate ?
<span>{toThousands(basicData.value?.actualEconomicEstimate)}</span>
: <span>{'--'}</span>
}
</div>
)
},
{ {
label: '产学研联合', label: '产学研联合',
prop: 'industryUniversityResearch', prop: 'industryUniversityResearch',
@@ -219,6 +235,22 @@ const schema = computed(() => {
}, },
{ {
label: '预估专项资金(元)', label: '预估专项资金(元)',
prop: 'forecastSpecialFundAmount',
colProps: {
span: 6
},
component: () => (
<div>
{
basicData.value?.forecastSpecialFundAmount ?
<span>{toThousands(basicData.value?.forecastSpecialFundAmount)}</span>
: <span>{'--'}</span>
}
</div>
)
},
{
label: '实际专项资金(元)',
prop: 'specialFundAmount', prop: 'specialFundAmount',
colProps: { colProps: {
span: 6 span: 6
@@ -255,6 +287,13 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
},
{
label: '主项目',
prop: 'masterProjectName',
colProps: {
span: 6
}
} }
] ]
}) })

View File

@@ -219,6 +219,12 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1 return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
} }
}, },
{
prop: 'processNumber',
label: '编号',
align: 'center',
},
{ {
prop: 'requirementName', prop: 'requirementName',
label: '征集名称', label: '征集名称',

View File

@@ -244,6 +244,21 @@ const schema = computed(() => {
} }
</div> </div>
) )
}, {
label: '实际经费预算',
prop: 'actualEconomicEstimate',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.actualEconomicEstimate ?
<span>{toThousands(baseFormData.value?.actualEconomicEstimate)}</span>
: <span>{'--'}</span>
}
</div>
)
}, },
{ {
label: '产学研联合', label: '产学研联合',
@@ -283,9 +298,24 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
}, {
label: '预估专项资金(元)',
prop: 'forecastSpecialFundAmount',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.forecastSpecialFundAmount ?
<span>{toThousands(baseFormData.value?.forecastSpecialFundAmount)}</span>
: <span>{'--'}</span>
}
</div>
)
}, },
{ {
label: '预估专项资金(元)', label: '实际专项资金(元)',
prop: 'specialFundAmount', prop: 'specialFundAmount',
colProps: { colProps: {
span: 6 span: 6
@@ -322,6 +352,13 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
},
{
label: '主项目',
prop: 'masterProjectName',
colProps: {
span: 6
}
} }
] ]
}) })

View File

@@ -184,6 +184,21 @@ const schema = computed(() => {
} }
</div> </div>
) )
},{
label: '实际经费预算',
prop: 'actualEconomicEstimate',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.actualEconomicEstimate ?
<span>{toThousands(baseFormData.value?.actualEconomicEstimate)}</span>
: <span>{'--'}</span>
}
</div>
)
}, },
{ {
label: '产学研联合', label: '产学研联合',
@@ -223,9 +238,24 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
}, {
label: '预估专项资金(元)',
prop: 'forecastSpecialFundAmount',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.forecastSpecialFundAmount ?
<span>{toThousands(baseFormData.value?.forecastSpecialFundAmount)}</span>
: <span>{'--'}</span>
}
</div>
)
}, },
{ {
label: '预估专项资金(元)', label: '实际专项资金(元)',
prop: 'specialFundAmount', prop: 'specialFundAmount',
colProps: { colProps: {
span: 6 span: 6
@@ -262,6 +292,13 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
},
{
label: '主项目',
prop: 'masterProjectName',
colProps: {
span: 6
}
} }
] ]
}) })

View File

@@ -159,6 +159,21 @@ const schema = computed(() => {
} }
</div> </div>
) )
}, {
label: '实际经费预算',
prop: 'actualEconomicEstimate',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.actualEconomicEstimate ?
<span>{toThousands(baseFormData.value?.actualEconomicEstimate)}</span>
: <span>{'--'}</span>
}
</div>
)
}, },
{ {
label: '产学研联合', label: '产学研联合',
@@ -201,6 +216,22 @@ const schema = computed(() => {
}, },
{ {
label: '预估专项资金(元)', label: '预估专项资金(元)',
prop: 'forecastSpecialFundAmount',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.forecastSpecialFundAmount ?
<span>{toThousands(baseFormData.value?.forecastSpecialFundAmount)}</span>
: <span>{'--'}</span>
}
</div>
)
},
{
label: '实际专项资金(元)',
prop: 'specialFundAmount', prop: 'specialFundAmount',
colProps: { colProps: {
span: 6 span: 6
@@ -237,6 +268,13 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
},
{
label: '主项目',
prop: 'masterProjectName',
colProps: {
span: 6
}
} }
] ]
}) })

View File

@@ -268,6 +268,22 @@ const schema = computed(() => {
</div> </div>
) )
}, },
{
label: '实际经费预算',
prop: 'actualEconomicEstimate',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.actualEconomicEstimate ?
<span>{toThousands(baseFormData.value?.actualEconomicEstimate)}</span>
: <span>{'--'}</span>
}
</div>
)
},
{ {
label: '产学研联合', label: '产学研联合',
prop: 'industryUniversityResearch', prop: 'industryUniversityResearch',
@@ -316,6 +332,22 @@ const schema = computed(() => {
}, },
{ {
label: '预估专项资金(元)', label: '预估专项资金(元)',
prop: 'forecastSpecialFundAmount',
colProps: {
span: 6
},
component: () => (
<div>
{
baseFormData.value?.forecastSpecialFundAmount ?
<span>{toThousands(baseFormData.value?.forecastSpecialFundAmount)}</span>
: <span>{'--'}</span>
}
</div>
)
},
{
label: '实际专项资金(元)',
prop: 'specialFundAmount', prop: 'specialFundAmount',
colProps: { colProps: {
span: 6 span: 6
@@ -352,6 +384,13 @@ const schema = computed(() => {
colProps: { colProps: {
span: 6 span: 6
} }
},
{
label: '主项目',
prop: 'masterProjectName',
colProps: {
span: 6
}
} }
] ]
}) })

View File

@@ -214,6 +214,11 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1 return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
} }
}, },
{
prop: 'processNumber',
label: '编号',
align: 'center',
},
{ {
prop: 'requirementName', prop: 'requirementName',
label: '征集名称', label: '征集名称',

View File

@@ -69,8 +69,8 @@ export default defineConfig({
open: true, open: true,
proxy: { proxy: {
// '/api/workflow': { // '/api/workflow': {
// // target: 'http://frp.feashow.cn:31800/', // target: 'http://frp.feashow.cn:31800/',
// target: 'http://clay.frp.feashow.cn/', // // target: 'http://clay.frp.feashow.cn/',
// // target: 'http://192.168.31.175:8000', // // target: 'http://192.168.31.175:8000',
// changeOrigin: true, // changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api/, '') // rewrite: (path) => path.replace(/^\/api/, '')