Merge pull request 'master' (#1004) from master into prod

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/1004
This commit is contained in:
2025-05-05 12:15:31 +00:00
6 changed files with 123 additions and 37 deletions

View File

@@ -25,6 +25,16 @@ export const getRequirementName = (requirementName) => {
method: "get" method: "get"
}); });
}; };
//需求汇总-项目名称关键词匹配
export const getProjectName = (projectName) => {
return request({
url: `workflow/mosr/requirement/collect`,
method: "get",
params:{
projectName:projectName
}
});
};
//获取需求上报 流程信息 //获取需求上报 流程信息
export const getProcessInfo = (specialFund) => { export const getProcessInfo = (specialFund) => {
return request({ return request({

View File

@@ -10,8 +10,8 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6" > <el-col :span="6" v-if="isSpecialFund">
<!-- label-width="106" v-if="isSpecialFund"--> <!-- label-width="106" -->
<el-form-item label="实际专项资金(元)" prop="specialFundAmount" label-width="140"> <el-form-item label="实际专项资金(元)" prop="specialFundAmount" label-width="140">
<el-input v-model="localFormData.specialFundAmount" placeholder="请输入实际专项资金"> <el-input v-model="localFormData.specialFundAmount" placeholder="请输入实际专项资金">
</el-input> </el-input>
@@ -140,19 +140,20 @@
@cancelOrClear="optionalChargeLeaderPickerCancel"/> @cancelOrClear="optionalChargeLeaderPickerCancel"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="preProcessShow === 'EDIT'"> <el-col :span="24" v-if="preProcessShow === 'EDIT'||title==='apply'">
<el-form-item label="前置流程" :required="preProcessRequired" prop="preProcess" label-width="125"> <el-form-item label="前置流程" :required="preProcessRequired" prop="preProcess" :label-width="title==='apply'?130:125">
<el-button color="#DED0B2" @click="handleShowPreTable" style="margin-right: 10px"> <select-pre-process :formData="localFormData" :basicData="basicData"/>
{{ <!-- <el-button color="#DED0B2" @click="handleShowPreTable" style="margin-right: 10px">-->
localFormData.preProcess && localFormData.preProcess?.length > 0 ? '更改' : sessionParams.preProcess && sessionParams.preProcess?.length > 0 ? '更改' : '请选择' <!-- {{-->
}} <!-- localFormData.preProcess && localFormData.preProcess?.length > 0 ? '更改' : sessionParams.preProcess && sessionParams.preProcess?.length > 0 ? '更改' : '请选择'-->
</el-button> <!-- }}-->
<div v-for="(item,index) in getRequestName(localFormData.preProcess)" :key="item.requestId"> <!-- </el-button>-->
<a :href="item.baseUrl" target="_blank" <!-- <div v-for="(item,index) in getRequestName(localFormData.preProcess)" :key="item.requestId">-->
style="color: #2a99ff;cursor: pointer">{{ item.requestName }}<span <!-- <a :href="item.baseUrl" target="_blank"-->
v-if="index != localFormData.preProcess?.length -1"></span> <!-- style="color: #2a99ff;cursor: pointer">{{ item.requestName }}<span-->
</a> <!-- v-if="index != localFormData.preProcess?.length -1"></span>-->
</div> <!-- </a>-->
<!-- </div>-->
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -287,6 +288,10 @@ const props = defineProps({
type: Object, type: Object,
default: {} default: {}
}, },
basicData: {
type: Object,
default: {}
},
formData: { formData: {
type: Object, type: Object,
default: {} default: {}
@@ -563,9 +568,15 @@ const choosePreProcess = () => {
requestName: item.requestName, requestName: item.requestName,
baseUrl: item.baseUrl baseUrl: item.baseUrl
} }
preProcessArray.push(preProcessObj) if(props.mode === 'resubmit'){
localFormData.value.preProcess.push(preProcessObj)
}else{
preProcessArray.push(preProcessObj)
}
}) })
localFormData.value.preProcess = preProcessArray if(props.mode !== 'resubmit'){
localFormData.value.preProcess = preProcessArray
}
showPreTable.value = false showPreTable.value = false
localStorage.setItem('preProcess', JSON.stringify(preProcessArray)) localStorage.setItem('preProcess', JSON.stringify(preProcessArray))
} }
@@ -830,8 +841,7 @@ const init = async () => {
let data = res.data let data = res.data
deploymentId.value = data.deploymentId deploymentId.value = data.deploymentId
deploymentData.value = data deploymentData.value = data
console.log('data,',data) // preProcessRequired.value = data.deploymentName === '重大项目立项' || data.deploymentName === '重大项目验收';
preProcessRequired.value = data.deploymentName === '重大项目立项' || data.deploymentName === '重大项目验收';
processStore.setDesign(data) processStore.setDesign(data)
processStore.runningList.value = data.runningList; processStore.runningList.value = data.runningList;
processStore.endList.value = data.endList; processStore.endList.value = data.endList;
@@ -867,7 +877,6 @@ watchEffect(() => {
// if (props.formData.projectChargePerson != null) { // if (props.formData.projectChargePerson != null) {
// localFormData.value.projectChargePerson = props.formData.projectChargePerson.id // localFormData.value.projectChargePerson = props.formData.projectChargePerson.id
// } // }
if (localStorage.getItem('preProcess')) { if (localStorage.getItem('preProcess')) {
let param = JSON.parse(localStorage.getItem('preProcess')) let param = JSON.parse(localStorage.getItem('preProcess'))
localFormData.value.preProcess = param localFormData.value.preProcess = param

View File

@@ -28,7 +28,8 @@
</el-form> </el-form>
<el-table :data="preProcessList" v-loading="loading" <el-table :data="preProcessList" v-loading="loading"
@select="handleSelect" @select-all="handleSelect" row-key="requestId" ref="preProcessTable"> @select="handleSelect" @select-all="handleSelect" row-key="requestId" ref="preProcessTable">
<el-table-column type="selection" width="55" :reserve-selection="true"/> <el-table-column type="selection" width="55" :reserve-selection="true"
:selectable="checkSelectable"/>
<el-table-column prop="requestId" label="请求id"></el-table-column> <el-table-column prop="requestId" label="请求id"></el-table-column>
<el-table-column prop="requestName" label="请求名称"></el-table-column> <el-table-column prop="requestName" label="请求名称"></el-table-column>
<el-table-column prop="lastOperatorName" label="最后操作人名称"></el-table-column> <el-table-column prop="lastOperatorName" label="最后操作人名称"></el-table-column>
@@ -70,11 +71,13 @@ const props = defineProps({
}) })
const loading = ref(false) const loading = ref(false)
//暂存数据 //暂存数据
const originalProcess = ref([])
const currentList = ref([]) const currentList = ref([])
const showPreTable = ref(false) const showPreTable = ref(false)
const selectRows = ref([]) const selectRows = ref([])
const preProcessList = ref([]) const preProcessList = ref([])
const total = ref(0) const total = ref(0)
const preProcessTable = ref()
const localFormData = ref({ const localFormData = ref({
projectPersonIds: [], projectPersonIds: [],
projectChargePerson: null, projectChargePerson: null,
@@ -118,8 +121,33 @@ const handleReset = () => {
const handleSelect = async (selection) => { const handleSelect = async (selection) => {
selectRows.value = selection selectRows.value = selection
} }
const checkSelectable=(row)=>{
const detailProcessStr = localStorage.getItem('detailProcess');
let preProcessArray = []
if (detailProcessStr) {
try {
preProcessArray = JSON.parse(detailProcessStr)
} catch (e) {
preProcessArray=[]
}
if (preProcessArray&&preProcessArray.length > 0) {
for (let i = 0; i < preProcessArray.length; i++) {
return preProcessArray[i].requestId !== row.requestId;
}
}else{
return true
}
}
}
const handleShowPreTable = () => { const handleShowPreTable = () => {
showPreTable.value = true showPreTable.value = true
nextTick(() => {
localFormData.value.preProcess?.forEach((item) => {
if (preProcessTable.value) {
preProcessTable.value.toggleRowSelection(item, true)
}
})
})
getPreProcessList() getPreProcessList()
} }
const handleCancel = () => { const handleCancel = () => {
@@ -129,17 +157,30 @@ const handleCancel = () => {
const choosePreProcess = () => { const choosePreProcess = () => {
let preProcessObj = {} let preProcessObj = {}
let preProcessArray = [] let preProcessArray = []
const detailProcessStr = localStorage.getItem('detailProcess');
try {
originalProcess.value = JSON.parse(detailProcessStr)
} catch (e) {
originalProcess.value=[]
}
selectRows.value.forEach((item) => { selectRows.value.forEach((item) => {
preProcessObj = { const exists = originalProcess.value?.some(dp => dp.requestId === item.requestId)
requestId: item.requestId, if (!exists) {
requestName: item.requestName, preProcessObj = {
baseUrl: item.baseUrl requestId: item.requestId,
requestName: item.requestName,
baseUrl: item.baseUrl
}
preProcessArray.push(preProcessObj)
} }
preProcessArray.push(preProcessObj)
}) })
localFormData.value.preProcess = preProcessArray if(props.formData.mode === 'view'||props.formData.mode === 'resubmit'){
showPreTable.value = false localFormData.value.preProcess = [...originalProcess.value,...preProcessArray]
}else{
localFormData.value.preProcess = preProcessArray
}
localStorage.setItem('preProcess', JSON.stringify(preProcessArray)) localStorage.setItem('preProcess', JSON.stringify(preProcessArray))
showPreTable.value = false
} }
const getPreProcessList = () => { const getPreProcessList = () => {
@@ -154,13 +195,6 @@ const getPreProcessList = () => {
searchArray.push(item) searchArray.push(item)
} }
}) })
// res.data.forEach((item) => {
// localFormData.value.preProcess.forEach((item1) => {
// if (item.requestId == item1.requestId) {
// preProcessTable.value.toggleRowSelection(item)
// }
// })
// })
total.value = searchArray.length total.value = searchArray.length
currentList.value = searchArray currentList.value = searchArray
preProcessList.value = currentList.value.slice(0, 10) preProcessList.value = currentList.value.slice(0, 10)
@@ -177,6 +211,7 @@ const handleCurrentChange = (val) => {
pageInfo.pageNum = val; pageInfo.pageNum = val;
preProcessList.value = currentList.value.slice((val - 1) * pageInfo.pageSize, val * pageInfo.pageSize) preProcessList.value = currentList.value.slice((val - 1) * pageInfo.pageSize, val * pageInfo.pageSize)
}; };
watchEffect(() => { watchEffect(() => {
return Object.keys(props.formData).length && (localFormData.value = props.formData) return Object.keys(props.formData).length && (localFormData.value = props.formData)
}) })

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="link-box"> <div class="link-box">
<el-scrollbar noresize height="34" > <el-scrollbar noresize height="36" >
<!-- style="display: flex"--> <!-- style="display: flex"-->
<div > <div >
<router-link <router-link

View File

@@ -6,7 +6,7 @@
<script setup lang="jsx"> <script setup lang="jsx">
import fvSelect from '@/fvcomponents/fvSelect/index.vue' import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {addPlan, getRequirementName} from "@/api/project-demand/summary"; import {addPlan, getProjectName, getRequirementName} from "@/api/project-demand/summary";
import {getSubCompOpt} from "@/api/user/user"; import {getSubCompOpt} from "@/api/user/user";
import {filterRequirementName} from "@/api/project-demand"; import {filterRequirementName} from "@/api/project-demand";
@@ -73,6 +73,36 @@ const searchConfig = ref([
}, },
component: shallowRef(fvSelect), component: shallowRef(fvSelect),
}, },
{
label: '项目名称',
prop: 'projectName',
props: {
placeholder: '请输入项目名称',
clearable: true,
filterable: true,
options: [],
remote: true,
remoteMethod:async (val)=>{
if(val){
const res=await getProjectName(val)
if(res.code==1000){
let optionObj={}
let optionsMap = new Map();
res.data.rows.forEach(item=>{
optionObj={
value:item.projectName,
label:item.projectName
}
optionsMap.set(optionObj.value, optionObj);
})
// 将 Map 转换为数组
searchConfig.value.find(item => item.prop == 'projectName').props.options = Array.from(optionsMap.values())
}
}
}
},
component: shallowRef(fvSelect),
},
{ {
label: '项目类型', label: '项目类型',
prop: 'projectType', prop: 'projectType',

View File

@@ -50,6 +50,7 @@
:mode="mode" :mode="mode"
:step="showActive" :step="showActive"
:data="detailData" :data="detailData"
:basicData="basicData"
:preProcessShow="preProcessShow" :preProcessShow="preProcessShow"
:formData="detailData.formData"/> :formData="detailData.formData"/>
</template> </template>
@@ -115,6 +116,7 @@ const getAllInfo = async (state) => {
if (code === 1000) { if (code === 1000) {
data.formData.preProcess = data.formData.preProcess ? JSON.parse(data.formData.preProcess) : undefined data.formData.preProcess = data.formData.preProcess ? JSON.parse(data.formData.preProcess) : undefined
detailData.value = data detailData.value = data
localStorage.setItem('detailProcess', JSON.stringify(data.formData.preProcess))
mode.value = data.formData.mode mode.value = data.formData.mode
processStore.setDesign(data) processStore.setDesign(data)
processStore.runningList.value = data.runningList; processStore.runningList.value = data.runningList;