[add] 工作组在研项目,工作组详情
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
},
|
||||
]
|
||||
|
||||
+35
-31
@@ -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() {
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user