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

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/949
This commit is contained in:
2025-03-13 13:35:11 +00:00
7 changed files with 147 additions and 15 deletions

View File

@@ -123,7 +123,9 @@ const baseTableConf = reactive(
{
prop: 'tag',
label: '标签',
align: 'center'
align: 'center',
// currentRender: ({row, index}) => (
// <el-input placeholder={row.tag} onClick={() => {}}></el-input>)
},
{
prop: 'size',

View File

@@ -223,7 +223,9 @@ const tableConfig = reactive({
{
prop: 'tag',
label: '标签',
align: 'center'
align: 'center',
// currentRender: ({row, index}) => (
// <el-input placeholder={row.tag} onClick={() => {}}></el-input>)
},
{
prop: 'size',

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

@@ -6,7 +6,9 @@
<script setup lang="jsx">
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {addPlan,getRequirementName} from "@/api/project-demand/summary";
import {addPlan, getRequirementName} from "@/api/project-demand/summary";
import {getSubCompOpt} from "@/api/user/user";
import {filterRequirementName} from "@/api/project-demand";
const tableIns = ref()
const router = useRouter()
@@ -55,15 +57,16 @@ const searchConfig = ref([
const res=await getRequirementName(val)
if(res.code==1000){
let optionObj={}
let options=[]
let optionsMap = new Map();
res.data.forEach(item=>{
optionObj={
value:item,
label:item
}
options.push(optionObj)
optionsMap.set(optionObj.value, optionObj);
})
searchConfig.value.find(item => item.prop == 'requirementName').props.options = options
// 将 Map 转换为数组
searchConfig.value.find(item => item.prop == 'requirementName').props.options = Array.from(optionsMap.values())
}
}
}
@@ -83,6 +86,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 +439,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 = [
@@ -44,6 +45,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',
@@ -184,6 +214,11 @@ const tableConfig = reactive({
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
}
},
{
prop: 'requirementName',
label: '征集名称',
align: 'center',
},
{
prop: 'affiliatedCompany',
label: '征集公司',