fix : 修改征集类型为字典、直接上报时详情专项资金回显、项目归档-需求征集文件回显、重大项目前置流程必填

This commit is contained in:
2024-06-18 20:43:02 +08:00
parent df513a91fe
commit 5100281c1f
9 changed files with 61 additions and 49 deletions

View File

@@ -40,7 +40,7 @@ export const getMenuInfo = (menuId) => {
export const getMenuOpt = (excludeId=0) => {
return request({
url: '/admin/menu/option/'+excludeId,
url: '/admin/menu/option/role/'+excludeId,
method: 'get'
})
}
@@ -50,4 +50,4 @@ export const getMenuOptRole = (roleId) => {
url: '/admin/menu/option/role/'+roleId,
method: 'get'
})
}
}

View File

@@ -7,9 +7,11 @@
<el-button type="primary" link @click="handleDownload(singleFile)" style="font-size: 16px">
{{ singleFile ? singleFile?.originalFileName : formData.singleFile?.originalFileName }}
</el-button>
<el-button type="danger" link @click="deleteSingleFile(singleFile?singleFile:formData.singleFile,1)">删除</el-button>
<el-button type="danger" link @click="deleteSingleFile(singleFile?singleFile:formData.singleFile,1)">删除
</el-button>
</template>
<template v-else-if="!preview||JSON.stringify(singleFile) == '{}'||singleFile==null||formData.singleFile==null">
<template
v-else-if="!preview||JSON.stringify(singleFile) == '{}'||singleFile==null||formData.singleFile==null">
<file-upload @getFile="getAttachment" :showFileList="showFileList" :multiple="false" :maxSize="1"
:disabled="isSingleFile" @delete="deleteAttachment"/>
</template>
@@ -97,7 +99,7 @@ const tableConfig = reactive({
currentRender: ({row, index}) => {
let btn = []
btn.push({label: '下载', func: () => handleDownload(row), type: 'primary'})
// if (row.newFile){
// if (row.newFile) {
// btn.push({label: '删除', func: () => handleDelete(row), type: 'primary'})
// }
return (
@@ -116,7 +118,7 @@ const tableConfig = reactive({
{
row.newFile || props.preview || !props.preview ?
<popover-delete name={row.originalFileName} type={'文件'} btnType={'danger'}
perm={['mosr:requirement:del']}
// perm={['']}
onDelete={() => handleDelete(row)}/>
: ''
}
@@ -137,7 +139,7 @@ watch(() => props.showTable, (newVal) => {
props.showTable = newVal
}, {deep: true})
watch(() => props.formData.fileList, (newVal) => {
console.log('newVal-fileList', newVal)
// console.log('newVal-fileList', newVal)
if (props.preview) {
newVal?.forEach(item => {
allFileList.value.push(item)
@@ -145,7 +147,7 @@ watch(() => props.formData.fileList, (newVal) => {
}
}, {deep: true})
watch(() => props.otherFileList, (newVal) => {
console.log('newotherFileList', newVal,props.formData)
// console.log('newotherFileList', newVal, props.formData)
if (props.preview) {
if (props.formData.fileList === null || props.formData.fileList.length === 0) {
allFileList.value = newVal
@@ -159,7 +161,7 @@ watch(() => props.otherFileList, (newVal) => {
}
}, {deep: true})
watch(() => props.formData.singleFile, (newVal) => {
console.log('singleFile', newVal)
// console.log('singleFile', newVal)
singleFile.value = newVal
}, {deep: true})
watch(() => isSingleFile.value, (newVal) => {

View File

@@ -3,7 +3,7 @@
<el-form :model="localFormData" ref="formRef" label-width="auto" :rules="rules" v-if="step!=='50'">
<el-row>
<el-col :span="12">
<el-form-item label="前置流程" :required="true" prop="requestName">
<el-form-item label="前置流程" :required="preProcessRequired" prop="requestName">
<a :href="localFormData.preProcess?.baseUrl" target="_blank"
style="color: #2a99ff;margin-right: 10px;cursor: pointer">{{ localFormData.preProcess?.requestName }}</a>
<el-button color="#DED0B2" @click="handleShowPreTable">
@@ -147,6 +147,7 @@ const props = defineProps({
const preProcessList = ref([])
//暂存数据
const currentList = ref([])
const preProcessRequired = ref(false)
const total = ref(0)
const preProcessForm = reactive({
requestName: ''
@@ -169,6 +170,7 @@ const localFormData = ref({
}
})
const attachment = ref()
const deploymentData = ref({})
const showPreTable = ref(false)
const showTable = ref(true)
const loading = ref(false)
@@ -245,7 +247,7 @@ const compositeParam = (item) => {
originalFileName: item.originalFilename,
fileType: item.fileType,
url: item.url,
newFile: false,
newFile: true,
tag: getTitleName(props.title)
}
}
@@ -269,12 +271,14 @@ const getFileParam = (item) => {
}
}
const handleSubmit = async () => {
if (localFormData.value.preProcess === undefined) {
ElNotification({
title: '提示',
message: '请选择前置流程',
type: 'error'
})
if(deploymentData.value.deploymentName==='重大项目立项'||deploymentData.value.deploymentName==='重大项目验收'){
if (localFormData.value.preProcess === undefined) {
ElNotification({
title: '提示',
message: '请选择前置流程!',
type: 'error'
})
}
}
let files = []
if (props.mode === 'resubmit') {
@@ -289,7 +293,7 @@ const handleSubmit = async () => {
// if (localFormData.value.singleFile !== undefined) {
// localFormData.value.singleFile = getFileParam(localFormData.value.singleFile)
// }
console.log('attachment.value.singleFile', attachment.value, attachment.value.singleFile)
// console.log('attachment.value.singleFile', attachment.value, attachment.value.singleFile)
// if (localFormData.value.singleFile) {
//
// } else {
@@ -372,6 +376,8 @@ const init = async () => {
if (res.code === 1000) {
let data = res.data
deploymentId.value = data.deploymentId
deploymentData.value = data
preProcessRequired.value = data.deploymentName === '重大项目立项'||data.deploymentName === '重大项目验收';
processStore.setDesign(data)
processStore.runningList.value = data.runningList;
processStore.endList.value = data.endList;

View File

@@ -9,7 +9,8 @@
@cancel="handleCancel"
>
<template #reference>
<el-button v-perm="perm" :type="btnType" size="mini" :disabled="isDisabled" :icon="btnIcon" :plain="isPlain" :link="link">
<!-- v-perm="perm"-->
<el-button :type="btnType" size="mini" :disabled="isDisabled" :icon="btnIcon" :plain="isPlain" :link="link">
{{ btnText }}
</el-button>
</template>

View File

@@ -12,7 +12,7 @@
<el-form-item label="征集类型" prop="collectType">
<el-select v-model="formData.collectType" placeholder="征集类型" clearable filterable>
<el-option
v-for="item in typeOption"
v-for="item in cacheStore.getDict('collect_type')"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -35,9 +35,10 @@
<el-col :span="24">
<el-form-item label="所属公司" prop="companyIds" class="tree-select">
<div>{{ getName(companyList) }}</div>
<el-button color="#DED0B2" @click="showCompany">{{companyList.length===0?'请选择所属公司':'更改'}}</el-button>
<!-- <el-tree-select v-model="formData.companyIds" :data="companyOption"-->
<!-- filterable clearable :check-strictly="true" multiple/>-->
<el-button color="#DED0B2" @click="showCompany">{{ companyList.length === 0 ? '请选择所属公司' : '更改' }}
</el-button>
<!-- <el-tree-select v-model="formData.companyIds" :data="companyOption"-->
<!-- filterable clearable :check-strictly="true" multiple/>-->
</el-form-item>
</el-col>
<el-col :span="6">
@@ -119,6 +120,8 @@ import {useTagsView} from '@/stores/tagsview.js'
import {getFundOption} from "@/api/special-fund";
import CompanyPicker from "@/components/DetailComponent/CompanyPicker.vue";
import {useCacheStore} from '@/stores/cache.js'
const cacheStore = useCacheStore()
const companyRef = ref()
const companyList = ref([])
const changeDiagram = ref(false)
@@ -140,12 +143,6 @@ const formData = ref({
const showTinymce = ref(true)
const routerName = ref(router.currentRoute.value.name)
const processDiagramViewer = ref(false)
const typeOption = ref([
{
label: "需求征集",
value: '需求征集'
}
])
const companyOption = ref([])
const specialFundOption = ref([])
const form = ref(null)
@@ -313,8 +310,8 @@ const init = async () => {
})
}
const submitParam = (item) => {
console.log('item..',item.companyIds)
if(item.companyIds.length===0){
console.log('item..', item.companyIds)
if (item.companyIds.length === 0) {
ElNotification({
title: '提示',
message: '请选择所属公司',

View File

@@ -482,6 +482,7 @@ const getDetailInfo = async () => {
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
res.data.formData.specialFundId= res.data.formData.specialFundId===0?null:res.data.formData.specialFundId
formData.value = res.data.formData
loading.value = false
}

View File

@@ -43,26 +43,26 @@ const schema = computed(() => {
]
})
const baseForm = ref()
const paneList=ref([
const paneList = ref([
{
label:'需求征集',
name:'00'
label: '需求征集',
name: '00'
},
{
label:'需求上报',
name:'10'
label: '需求上报',
name: '10'
},
{
label:'项目立项',
name:'20'
label: '项目立项',
name: '20'
},
{
label:'项目实施',
name:'40'
label: '项目实施',
name: '40'
},
{
label:'项目归档',
name:'50'
label: '项目归档',
name: '50'
}
])
const getBaseInfo = async () => {
@@ -75,16 +75,19 @@ const getBaseInfo = async () => {
getBaseInfo()
const handleClick = (tab) => {
activeName.value=tab.props.name
loading.value=true
activeName.value = tab.props.name
loading.value = true
search({})
}
const search = async (param) => {
param.targetState = activeName.value
if (activeName.value === '00') {
param.requirementId = requirementId.value
}
param.targetId = projectId.value
param.targetState = activeName.value
searchFileList(param).then(res => {
loading.value=false
loading.value = false
changeFileList(res)
})
}

View File

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

View File

@@ -38,7 +38,7 @@ import { useTagsView } from '@/stores/tagsview.js'
import { useAuthStore } from '@/stores/userstore.js'
import fvRadio from '@/fvcomponents/fvRadio/index.vue'
import { ElLoading, ElNotification } from 'element-plus';
import { getMenuOpt } from '@/api/system/menuman.js'
import { getMenuOptRole } from '@/api/system/menuman.js'
import { getRoleDetail, operate, getTemRoleOption } from "@/api/role/role";
const tagsViewStore = useTagsView()
@@ -143,8 +143,9 @@ const init = async () => {
form.value.setValues({state: '1', template: false})
const res = await getTemRoleOption()
localData.tempRoleOpt = res.data
const { data } = await getMenuOpt(0)
localData.menuData = data
const { data } = await getMenuOptRole()
localData.menuData = data.menuOption
// localData.checked = data.checked
}
const getInfo = async () => {