feat: 列表新增征集, 筛选新增公司,征集名称

This commit is contained in:
dj
2025-03-10 17:42:21 +08:00
parent 8256c80648
commit 263df9e489
5 changed files with 148 additions and 9 deletions

View File

@@ -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?120:160"
<el-form :model="formData" ref="summaryForm" :rules="rules" :label-width="!formData.isSpecialFund?130:160"
:scroll-to-error="true">
<el-row gutter="30" style="margin-bottom: -18px;"
:style="{marginLeft:!formData.isSpecialFund?'-8.5px':'-48.5px'}">
@@ -115,15 +115,15 @@
</el-form-item>
</el-col>
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':route.query.id?'':'-40px'}">
<el-form-item label="经费预算(元)" prop="economicEstimate">
<el-form-item label="预估经费预算(元)" prop="economicEstimate">
<el-input
v-model="formData.economicEstimate"
placeholder="请输入经费预算"
placeholder="请输入预估经费预算"
clearable
:formatter="(value) => value.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
:parser="(value) => value.replace(/\$\s?|(,*)+[^0-9.]/g, '')" @change="changeCollectData"
/>
<!-- <el-input-number v-model="formData.economicEstimate" placeholder="请输入经费预算" :controls="false"/>-->
<!-- <el-input-number v-model="formData.economicEstimate" placeholder="请输入预估经费预算" :controls="false"/>-->
</el-form-item>
</el-col>
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'-10px':route.query.id?'-40px':'0'}">
@@ -183,15 +183,15 @@
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.isSpecialFund">
<el-form-item label="申请总部专项资金(元)" prop="specialFundAmount">
<el-form-item label="预估专项资金(元)" prop="specialFundAmount">
<el-input
v-model="formData.specialFundAmount"
placeholder="请输入申请总部专项资金"
placeholder="请输入预估专项资金"
clearable
:formatter="(value) => value.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
: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.specialFundAmount" placeholder="请输入预估专项资金" :controls="false"/>-->
</el-form-item>
</el-col>
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?'0':'-40px'}">
@@ -232,7 +232,7 @@
</el-form-item>
</el-col>
<el-col :span="6" :style="{marginLeft:!formData.isSpecialFund?route.query.id?'-10px':'0':'0'}">
<el-form-item label="需求征集" prop="requirementId">
<el-form-item label="需求征集" prop="requirementId" required>
<template v-if="formData.requirementDefaultName">{{ formData.requirementDefaultName }}</template>
<el-select v-else v-model="formData.requirementId" clearable placeholder="请选择需求征集"
@change="changeCollectData">
@@ -444,7 +444,7 @@ const rules = reactive({
softwareCopyright: [{required: true, message: '请输入软件著作权数量', trigger: ['blur', 'change']}],
copyright: [{required: true, message: '请输入著作权数量', trigger: ['blur', 'change']}],
other: [{required: true, message: '请输入其他数量', trigger: ['blur', 'change']}],
economicEstimate: [{required: true, message: '请输入经费预算', trigger: ['blur', 'change']}],
economicEstimate: [{required: true, message: '请输入预估经费预算', trigger: ['blur', 'change']}],
isSpecialFund: [{required: true, message: '请选择是否为专项资金', trigger: ['blur', 'change']}],
isWithinBudget: [{required: true, message: '请选择是否在预算内', trigger: ['blur', 'change']}],
specialFundAmount: [{required: true, message: '请输入专项资金', trigger: ['blur', 'change']}],

View File

@@ -7,6 +7,8 @@
<script setup lang="jsx">
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {addPlan,getRequirementName} from "@/api/project-demand/summary";
import {getSubCompOpt} from "@/api/user/user";
import {getRequirementStatePerm} from "@/api/project-demand";
const tableIns = ref()
const router = useRouter()
@@ -83,6 +85,19 @@ const searchConfig = ref([
},
colProps: {}
},
{
label: '承办单位',
prop: 'undertaker',
component: 'el-tree-select',
props: {
placeholder: '请输入承办单位查询',
clearable: true,
data: [],
filterable: true,
checkStrictly: true,
remote: true
}
},
{
label: '项目影响',
prop: 'projectImpact',
@@ -423,6 +438,13 @@ const handleDetail = (row) => {
}
})
}
const init = async () => {
const res = await getSubCompOpt()
searchConfig.value.find(item=>item.prop == 'undertaker').props.data = res.data
}
init()
</script>
<style lang="scss" scoped>

View File

@@ -14,6 +14,7 @@ import {switchAttachmentState} from "@/api/project-manage/attachment";
import {ElMessageBox} from "element-plus";
import { getSubCompOpt } from '@/api/user/user.js';
import {filterProjectName} from "@/api/project-manage";
import {filterRequirementName} from "@/api/project-demand";
const router = useRouter()
const shortcuts = [
@@ -46,6 +47,35 @@ const shortcuts = [
},
]
const searchConfig = ref([
{
label: '征集名称',
prop: 'requirementName',
component: shallowRef(fvSelect),
props: {
placeholder: '请输入征集名称查询',
clearable: true,
filterable: true,
options: [],
remote: true,
remoteMethod:async (val)=>{
if(val){
const res=await filterRequirementName(val)
if(res.code==1000){
let optionObj={}
let options=[]
res.data.forEach(item=>{
optionObj={
value:item,
label:item
}
options.push(optionObj)
})
searchConfig.value.find(item => item.prop == 'requirementName').props.options = options
}
}
}
}
},
{
label: '征集公司',
prop: 'affiliatedCompanyId',
@@ -186,6 +216,11 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
}
},
{
prop: 'requirementName',
label: '征集名称',
align: 'center',
},
{
prop: 'affiliatedCompany',
label: '征集公司',

View File

@@ -12,6 +12,7 @@ import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {toThousands} from '@/utils/changePrice.js'
import { getSubCompOpt } from '@/api/user/user.js';
import {filterProjectName} from "@/api/project-manage";
import {filterRequirementName} from "@/api/project-demand";
const route = useRoute()
const router = useRouter()
@@ -45,6 +46,35 @@ const shortcuts = [
},
]
const searchConfig = ref([
{
label: '征集名称',
prop: 'requirementName',
component: shallowRef(fvSelect),
props: {
placeholder: '请输入征集名称查询',
clearable: true,
filterable: true,
options: [],
remote: true,
remoteMethod:async (val)=>{
if(val){
const res=await filterRequirementName(val)
if(res.code==1000){
let optionObj={}
let options=[]
res.data.forEach(item=>{
optionObj={
value:item,
label:item
}
options.push(optionObj)
})
searchConfig.value.find(item => item.prop == 'requirementName').props.options = options
}
}
}
}
},
{
label: '征集公司',
prop: 'affiliatedCompanyId',
@@ -189,6 +219,11 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
}
},
{
prop: 'requirementName',
label: '征集名称',
align: 'center',
},
{
prop: 'affiliatedCompany',
label: '征集公司',

View File

@@ -12,6 +12,7 @@ import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {toThousands} from '@/utils/changePrice.js'
import { getSubCompOpt } from '@/api/user/user.js';
import {filterProjectName} from "@/api/project-manage";
import {filterRequirementName} from "@/api/project-demand";
const route = useRoute()
const router = useRouter()
const shortcuts = [
@@ -45,6 +46,47 @@ const shortcuts = [
]
const searchConfig = ref([
{
label: '征集名称',
prop: 'requirementName',
component: shallowRef(fvSelect),
props: {
placeholder: '请输入征集名称查询',
clearable: true,
filterable: true,
options: [],
remote: true,
remoteMethod:async (val)=>{
if(val){
const res=await filterRequirementName(val)
if(res.code==1000){
let optionObj={}
let options=[]
res.data.forEach(item=>{
optionObj={
value:item,
label:item
}
options.push(optionObj)
})
searchConfig.value.find(item => item.prop == 'requirementName').props.options = options
}
}
}
}
},
{
label: '征集公司',
prop: 'affiliatedCompanyId',
component: 'el-tree-select',
props: {
placeholder: '请输入征集公司查询',
clearable: true,
data: [],
filterable: true,
checkStrictly: true,
remote: true
}
},{
label: '征集公司',
prop: 'affiliatedCompanyId',
component: 'el-tree-select',
@@ -184,6 +226,11 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
}
},
{
prop: 'requirementName',
label: '征集名称',
align: 'center',
},
{
prop: 'affiliatedCompany',
label: '征集公司',