[add] 工作组在研项目,工作组详情

This commit is contained in:
zhaoxiao
2021-12-14 20:30:39 +08:00
parent d46e53c0da
commit c5a40fd92c
7 changed files with 383 additions and 42 deletions
+4 -1
View File
@@ -19,6 +19,8 @@ const getContractDetailById = (param) => getAction('/contract/payIncomeContract/
const getCouncilDetailById = (param) => getAction('/payCaseCouncil/payCaseCouncil/detail', param)
// 分标委在研项目
const getCommitteeUnderStudyProject = (param) => getAction('/payResearchProject/payResearchProject/listForThree', param)
// 工作组在研项目
const getWorkingGroupUnderStudyProject = (param) => getAction('/payResearchProject/payResearchProject/list', param)
export {
queryCommonProjectById,
@@ -30,5 +32,6 @@ export {
batchDownloadFile,
getContractDetailById,
getCouncilDetailById,
getCommitteeUnderStudyProject
getCommitteeUnderStudyProject,
getWorkingGroupUnderStudyProject
}
+16 -1
View File
@@ -400,5 +400,20 @@ export const routerData = [
},
name: 'payment-voucher',
id: '13'
}
},
{
path: '/workTeam/WorkTeamDetail',
component: 'workTeam/WorkTeamDetail',
redirect: null,
hidden: true,
route: '1',
meta: {
icon: '', // 菜单前图标
componentName: 'WorkTeamDetail',
keepAlive: false,
title: '工作组详情' // 菜单名称
},
name: 'work-team-detail',
id: '14'
},
]
@@ -26,7 +26,7 @@
<!-- 时间戳转时间-->
<template slot="time" slot-scope="text">
<j-ellipsis :value="processingTimestamp(text)" :length="20"></j-ellipsis>
<j-ellipsis :value="text.indexOf('-') === -1 ? processingTimestamp(text) : text" :length="20"></j-ellipsis>
</template>
<!-- 操作-->
@@ -50,34 +50,27 @@ import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { processingTimestamp } from '@/utils/util'
const columns = [
{
title: '文件名',
align: 'center',
dataIndex: 'FILE_NAME',
scopedSlots: { customRender: 'text' }
}, {
title: '上传时间',
align: 'center',
dataIndex: 'CREAT_TIME',
scopedSlots: { customRender: 'time' }
}, {
title: '操作',
align: 'center',
dataIndex: 'action',
width: 160,
scopedSlots: { customRender: 'action' }
}
]
export default {
name: 'CommitteeUnderStudyFilesModal',
name: 'UnderStudyFilesModal',
props: {
columns: {
type: Array,
default: () => {
return []
}
},
// 是否为在分标委在研项目,默认是
isCommittee: {
type: Boolean,
default: true
}
},
data() {
return {
title: '操作',
width: 800,
visible: false,
confirmLoading: false,
columns,
dataSource: []
}
},
@@ -88,22 +81,33 @@ export default {
* @param record
*/
handleDownload(record) {
let param = {
fileId: record.FILE_ID,
fileName: record.FILE_NAME
if (this.isCommittee) {
let param = {
fileId: record.FILE_ID,
fileName: record.FILE_NAME
}
downloadFile(`/payResearchProject/payResearchProject/downLoad`, record.FILE_NAME, param)
} else {
downloadFile(`sys/common/download/${record.fileId}`, record.fileName)
}
downloadFile(`/payResearchProject/payResearchProject/downLoad`, record.FILE_NAME, param)
},
/**
* 预览
* @param record
*/
handlePreview(record) {
if (record && record.FILE_ID) {
const fileFullUrl = `${ window._CONFIG['domianWebSocketURL'] }/sys/common/download/${ record.FILE_ID }?token=${ Vue.ls.get(ACCESS_TOKEN) }&fullfilename=${ record.FILE_NAME }`
let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(fileFullUrl) }`
// let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
window.open(url)
if (this.isCommittee) {
if (record && record.FILE_ID) {
const fileFullUrl = `${ window._CONFIG['domianWebSocketURL'] }/sys/common/download/${ record.FILE_ID }?token=${ Vue.ls.get(ACCESS_TOKEN) }&fullfilename=${ record.FILE_NAME }`
let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(fileFullUrl) }`
window.open(url)
}
} else {
if (record && record.fileId) {
const fileFullUrl = `${ window._CONFIG['domianWebSocketURL'] }/sys/common/download/${ record.fileId }?token=${ Vue.ls.get(ACCESS_TOKEN) }&fullfilename=${ record.fileName }`
let url = `${ window._CONFIG['onlinePreviewDomainURL'] }?url=${ encodeURIComponent(fileFullUrl) }`
window.open(url)
}
}
},
handleCancel() {
+1 -1
View File
@@ -48,7 +48,7 @@
<!-- 项目名称-->
<template slot="projectName" slot-scope="text, record">
<j-ellipsis :value="text" :length="20" class="project-name" @click="openDetail(record)"></j-ellipsis>
<j-ellipsis :value="text" :length="20" class="project-name" @click="openDetailModal(record)"></j-ellipsis>
</template>
<template slot="text" slot-scope="text, record">
@@ -63,7 +63,7 @@
</div>
</a-card>
<committee-under-study-files-modal ref="filesModal"></committee-under-study-files-modal>
<committee-under-study-files-modal ref="filesModal" :columns="fliesColumns"></committee-under-study-files-modal>
</div>
</template>
@@ -71,7 +71,7 @@
import { getSubBidCommitteeDetail, getCommitteeUnderStudyProject } from '@api/incomePaymentsApi'
import MeetingList from '@comp/detailPage/MeetingList'
import FileList from '@comp/detailPage/FileList'
import CommitteeUnderStudyFilesModal from '@views/subBidCommittee/modules/CommitteeUnderStudyFilesModal'
import CommitteeUnderStudyFilesModal from '@views/MessagePage/modules/UnderStudyFilesModal'
const columns = [
{
@@ -127,6 +127,26 @@ const columns = [
}
]
const fliesColumns = [
{
title: '文件名',
align: 'center',
dataIndex: 'FILE_NAME',
scopedSlots: { customRender: 'text' }
}, {
title: '上传时间',
align: 'center',
dataIndex: 'CREAT_TIME',
scopedSlots: { customRender: 'time' }
}, {
title: '操作',
align: 'center',
dataIndex: 'action',
width: 160,
scopedSlots: { customRender: 'action' }
}
]
export default {
name: 'SubBidCommitteeDetailPage',
components: { MeetingList, FileList, CommitteeUnderStudyFilesModal },
@@ -152,7 +172,9 @@ export default {
showSizeChanger: true,
total: 0
},
loading: false
loading: false,
// 在研文件表头
fliesColumns
}
},
created() {
@@ -193,7 +215,9 @@ export default {
*/
getUnderStudyProjectList() {
let param = {
abbreviation: this.$route.query.abbreviation
abbreviation: this.$route.query.abbreviation,
pageNo: this.ipagination.current,
pageSize: this.ipagination.pageSize
}
getCommitteeUnderStudyProject(param).then(res => {
if (res.success) {
+19 -4
View File
@@ -48,7 +48,7 @@
<!-- 项目名称-->
<template slot="projectName" slot-scope="text, record">
<j-ellipsis :value="text" :length="20" class="project-name" @click="openDetailModal(record)"></j-ellipsis>
<j-ellipsis :value="text" :length="20" class="project-name" @click="toDetail(record)"></j-ellipsis>
</template>
<template slot="text" slot-scope="text, record">
@@ -66,7 +66,8 @@
</a-card>
<project-detail-modal ref="projectDetail" @openContractModule="handleOpenContractModule"></project-detail-modal>
<mine-contract-module :contract-id="contractId" :visible.sync="contractModuleVisible" @openProjectDetail="openDetailModal"></mine-contract-module>
<mine-contract-module :contract-id="contractId" :visible.sync="contractModuleVisible"
@openProjectDetail="openDetailModal"></mine-contract-module>
</div>
</template>
<script>
@@ -133,8 +134,8 @@ export default {
toMeeting() {
this.$router.push({
path: '/meetingActivity/MeetingActivity',
query:{
meetingType:'1'
query: {
meetingType: '1'
}
})
},
@@ -158,6 +159,20 @@ export default {
projectName: record.chargeProject
}
})
},
/**
* 跳转至详情
* @param record
*/
toDetail(record) {
console.log(record.projectId)
this.$router.push({
path: '/workTeam/WorkTeamDetail',
query: {
projectId: record.id,
workingGroupId: record.workingGroupId
}
})
}
}
}
+280
View File
@@ -0,0 +1,280 @@
<template>
<div class="main-box">
<a-card :bordered="false">
<!-- 基本信息-->
<div class="basic-info basic-box">
<h3 class="title">基本信息</h3>
<a-spin :spinning="basicLoading">
<a-row :gutter="10">
<a-col :span="24" class="basic-info-item"><label>项目名称:</label><span>{{ detail.name }}</span>
</a-col>
<a-col :span="8" class="basic-info-item"><label>项目负责人:</label><span>{{ detail.principalName }}</span>
</a-col>
<a-col :span="8" class="basic-info-item"><label>需要发票:</label><span>{{ detail.needInvoice_dictText }}</span>
</a-col>
<a-col :span="8" class="basic-info-item"><label>工作经费:</label><span>{{ detail.receivableAmount }}元</span>
</a-col>
<a-col :span="8" class="basic-info-item"><label>实付金额:</label><span>{{ detail.paidAmount }}元</span></a-col>
<a-col :span="8" class="basic-info-item"><label>打包:</label><span>{{ detail.pack_dictText }}</span></a-col>
<a-col :span="8" class="basic-info-item"><label>付款方式:</label><span>{{ detail.chargeWay_dictText }}</span>
</a-col>
<!-- 合同-->
<!-- v-if="detail.chargeWay === 2"-->
<a-col :span="8" class="basic-info-item">
<label>合同编号:</label>
<span>{{ detail.contractNum }}</span>
</a-col>
<!-- 收费通知-->
<!-- v-if="detail.chargeWay === 3"-->
<a-col :span="8" class="basic-info-item">
<label>收费通知号:</label>
<span>{{ detail.chargeNoticeNo }}</span>
</a-col>
<!-- v-if="detail.chargeWay === 3"-->
<a-col :span="12" class="basic-info-item">
<label>收费通知:</label>
<span style="width: 100%;">
<preview-file style="width: 80%" :file-id="detail.chargeNoticeId"></preview-file>
</span>
</a-col>
<a-col :span="24" class="basic-info-item">
<label>任务及目标:</label>
<span>{{ detail.remarks }}</span>
</a-col>
</a-row>
</a-spin>
</div>
<!-- 在研项目-->
<div class="under-study basic-box">
<h3 class="title">在研项目</h3>
<a-table
ref="table"
size="middle"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap">
<template slot="text" slot-scope="text">
<j-ellipsis :value="text" :length="18"></j-ellipsis>
</template>
<!-- 过程文件-->
<span slot="project-approval" class="action-span-cell" slot-scope="text, record">
<a @click="viewFiles(record)">查看</a>
</span>
</a-table>
</div>
<!-- 工作组会议-->
<div class="meeting basic-box">
<h3 class="title">工作组会议</h3>
<meeting-list></meeting-list>
</div>
<!-- 其他分发资料-->
<div class="meeting basic-box">
<div class="file-title"><h3 class="title">其他分发资料</h3><span>(如月报、调研表等)</span></div>
<file-list ref="fileListTable" :data-source="fileList"></file-list>
</div>
</a-card>
<under-study-files-modal ref="filesModal" :columns="fileColumns" :is-committee="false"></under-study-files-modal>
</div>
</template>
<script>
import MeetingList from '@comp/detailPage/MeetingList'
import FileList from '@comp/detailPage/FileList'
import { getWorkingGroupUnderStudyProject, queryCommonProjectById } from '@api/incomePaymentsApi'
import UnderStudyFilesModal from '@views/MessagePage/modules/UnderStudyFilesModal'
import PreviewFile from '@comp/jero/PreviewFile'
const columns = [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
}, {
title: '项目名称',
align: 'center',
dataIndex: 'projectName',
scopedSlots: { customRender: 'text' }
}, {
title: '主要起草单位',
align: 'center',
dataIndex: 'draftCompany',
scopedSlots: { customRender: 'text' }
}, {
title: '项目进度',
align: 'center',
dataIndex: 'projectSchedule',
scopedSlots: { customRender: 'text' }
}, {
title: '过程文件',
align: 'center',
width: 100,
dataIndex: 'filesList',
scopedSlots: { customRender: 'project-approval' }
}
]
const fileColumns = [
{
title: '文件名',
align: 'center',
dataIndex: 'fileName',
scopedSlots: { customRender: 'text' }
}, {
title: '上传时间',
align: 'center',
dataIndex: 'createTime',
scopedSlots: { customRender: 'time' }
}, {
title: '操作',
align: 'center',
dataIndex: 'action',
width: 160,
scopedSlots: { customRender: 'action' }
}]
export default {
name: 'WorkTeamDetail',
components: { MeetingList, FileList, UnderStudyFilesModal, PreviewFile },
data() {
return {
basicLoading: false,
// 详情数据
detail: {},
// 文件数据
fileList: [],
// 在研项目
columns,
// 过程文件表头
fileColumns,
dataSource: [],
/* 分页参数 */
ipagination: {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '20', '30', '50', '100'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' 共' + total + '条'
},
showQuickJumper: true,
showSizeChanger: true,
total: 0
},
loading: false
}
},
created() {
this.getUnderStudyProjectList()
this.getWorkingGroupDetail()
},
methods: {
/**
* 获取在研项目
*/
getUnderStudyProjectList() {
let param = {
workingGroupId: this.$route.query.workingGroupId,
pageNo: this.ipagination.current,
pageSize: this.ipagination.pageSize
}
getWorkingGroupUnderStudyProject(param).then(res => {
if (res.success) {
this.dataSource = res.result.records
if (res.result.result.total) {
this.ipagination.total = res.result.result.total
} else {
this.ipagination.total = 0
}
} else {
this.$message.warn(res.message)
}
})
},
/**
* 查看文件
* @param record
*/
viewFiles(record) {
this.$refs.filesModal.title = '过程文件'
this.$refs.filesModal.dataSource = record.filesList
this.$refs.filesModal.visible = true
},
/**
* 获取工作组详情
*/
getWorkingGroupDetail() {
let param = {
id: this.$route.query.projectId
}
queryCommonProjectById(param).then(res => {
if (res.success) {
this.detail = res.result
} else {
this.$message.warn(res.message)
}
})
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
.title {
position: relative;
}
.title::before {
position: absolute;
top: 4px;
left: -10px;
content: "";
height: 20px;
width: 2px;
background: #069f99;
}
.basic-box {
padding: 0 20px 10px 20px;
}
.basic-info {
.ant-col {
margin: 5px 0;
}
&-item {
display: flex;
label {
flex-shrink: 0;
}
}
}
.file-title {
display: flex;
align-items: center;
span {
margin-left: 10px;
margin-bottom: 5px;
}
}
</style>