146 lines
4.2 KiB
Vue
146 lines
4.2 KiB
Vue
<template>
|
|
<div style="padding: 0 10px;">
|
|
<baseTitle title="需求征集信息"></baseTitle>
|
|
<CollectionDetailMoblie :formData="collectData.formData" :data="collectData" type="singleDetail"
|
|
:fileListShow="fileListShow"
|
|
:processViewer="processViewer" :loading="loading" v-model:value="auditOpinion"/>
|
|
<OpinionMoblie v-if="collectData.taskId" :formData="formData" :taskId="collectData.taskId" :taskUserOptionList="collectData.taskUserOptionList" v-model:value="auditOpinion"></OpinionMoblie>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="jsx">
|
|
import {useProcessStore} from '@/stores/processStore.js'
|
|
import {getInfo} from "@/api/project-demand/index.js";
|
|
import {ElNotification} from "element-plus";
|
|
import {useTagsView} from '@/stores/tagsview.js'
|
|
import {getFundOption} from "@/api/special-fund";
|
|
import {getSubCompOpt} from "@/api/user/user";
|
|
import {matterTree} from "@/utils/matterTree";
|
|
import CollectionDetailMoblie from '@/views/project-management/mobledetail/CollectionDetailMoblie.vue'
|
|
import OpinionMoblie from '@/views/project-management/mobledetail/OpinionMoblie.vue'
|
|
|
|
const tagsViewStore = useTagsView()
|
|
const router = useRouter()
|
|
const route = useRoute()
|
|
const form = ref();
|
|
const loading = ref(false)
|
|
const processStore = useProcessStore()
|
|
const specialFundOption = ref([])
|
|
const processInstanceData = ref({})
|
|
const fileListShow = ref("READ")
|
|
const showTable = ref(false)
|
|
const auditOpinion = ref('')
|
|
const processViewer = ref(false)
|
|
const processTree = ref()
|
|
const collectData = ref([])
|
|
const formData = ref({})
|
|
const companyOption = ref([])
|
|
const companyNameArray = ref([])
|
|
const getFundOptions = async () => {
|
|
const res = await getFundOption()
|
|
specialFundOption.value = res.data
|
|
}
|
|
|
|
const getCompanyOption = async () => {
|
|
const res = await getSubCompOpt()
|
|
companyOption.value = res.data
|
|
}
|
|
const getCompanyOptionItem = (val) => {
|
|
if (val !== undefined) {
|
|
val.forEach(item => {
|
|
matterTree(companyNameArray.value, companyOption.value, item)
|
|
})
|
|
}
|
|
return companyNameArray.value
|
|
}
|
|
const init = async () => {
|
|
if (!route.query.id) return;
|
|
await getFundOptions()
|
|
await getCompanyOption()
|
|
getInfo(route.query.id).then(res => {
|
|
if (res.code !== 1000) {
|
|
ElNotification({
|
|
title: '提示',
|
|
message: res.msg,
|
|
type: 'error'
|
|
})
|
|
}
|
|
loading.value = false
|
|
let data = res.data
|
|
if (data.formData.companyIds[0] == -1) {
|
|
data.formData.companyIds = ['所有公司']
|
|
} else {
|
|
data.formData.companyIds = getCompanyOptionItem(data.formData.companyIds)
|
|
}
|
|
collectData.value = data
|
|
formData.value = data.formData;
|
|
if (data.formData.specialFund) {
|
|
specialFundOption.value.forEach(item => {
|
|
if (data.formData.specialFund == item.value) {
|
|
data.formData.specialFund = item.label
|
|
}
|
|
})
|
|
}
|
|
processInstanceData.value = data
|
|
processStore.setDesign(data)
|
|
processStore.runningList.value = data.runningList;
|
|
processStore.endList.value = data.endList;
|
|
processStore.noTakeList.value = data.noTakeList;
|
|
processStore.refuseList.value = data.refuseList;
|
|
processStore.passList.value = data.passList;
|
|
nextTick(() => {
|
|
processViewer.value = true
|
|
showTable.value = true
|
|
if (data.formPermMap["fileList"]) {
|
|
fileListShow.value = data.formPermMap["fileList"].perm
|
|
}
|
|
})
|
|
})
|
|
}
|
|
onMounted(async () => {
|
|
loading.value = true
|
|
await init()
|
|
})
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
:deep(.el-empty__description) {
|
|
margin-top: 0;
|
|
}
|
|
|
|
:deep(.el-table--fit ) {
|
|
height: 300px !important;
|
|
}
|
|
|
|
.detail-block {
|
|
overflow: hidden;
|
|
padding-right: 10px;
|
|
|
|
//.info {
|
|
// display: flex;
|
|
// flex-wrap: wrap;
|
|
//
|
|
// > div {
|
|
// width: 350px;
|
|
// margin-bottom: 15px;
|
|
// margin-right: 10px;
|
|
//
|
|
// > span:first-child {
|
|
// color: black;
|
|
// font-size: 16px;
|
|
// font-weight: bold;
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
//.approval-record {
|
|
// padding-bottom: 30px;
|
|
//
|
|
// .process {
|
|
// position: relative;
|
|
// }
|
|
//}
|
|
}
|
|
|
|
</style>
|