综合查询页面接口调试完善
This commit is contained in:
parent
a654d070da
commit
35a2ef016b
|
|
@ -0,0 +1,19 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 综合查询 获取人员列表
|
||||||
|
export function getPersonListAPI(data) {
|
||||||
|
return request({
|
||||||
|
url: '/comprehensive/getPeopleAllList',
|
||||||
|
method: 'get',
|
||||||
|
params: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 综合查询 获取人员详情
|
||||||
|
export function getPersonDetailsAPI(data) {
|
||||||
|
return request({
|
||||||
|
url: '/comprehensive/getPeopleDetail',
|
||||||
|
method: 'get',
|
||||||
|
params: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -78,6 +78,7 @@ export const constantRoutes = [
|
||||||
path: 'comprehensive-query/details',
|
path: 'comprehensive-query/details',
|
||||||
component: () => import('@/views/comprehensive-query/components/details'),
|
component: () => import('@/views/comprehensive-query/components/details'),
|
||||||
name: 'Details',
|
name: 'Details',
|
||||||
|
hidden: true,
|
||||||
meta: { title: '详情', icon: 'dashboard', activeMenu: '/comprehensive-query' },
|
meta: { title: '详情', icon: 'dashboard', activeMenu: '/comprehensive-query' },
|
||||||
},
|
},
|
||||||
// 综合查询 项目材料
|
// 综合查询 项目材料
|
||||||
|
|
@ -85,6 +86,7 @@ export const constantRoutes = [
|
||||||
path: 'comprehensive-query/project-materials',
|
path: 'comprehensive-query/project-materials',
|
||||||
component: () => import('@/views/comprehensive-query/components/projectMaterials'),
|
component: () => import('@/views/comprehensive-query/components/projectMaterials'),
|
||||||
name: 'ProjectMaterials',
|
name: 'ProjectMaterials',
|
||||||
|
hidden: true,
|
||||||
meta: { title: '项目材料', icon: 'dashboard', activeMenu: '/comprehensive-query' },
|
meta: { title: '项目材料', icon: 'dashboard', activeMenu: '/comprehensive-query' },
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
<i :class="item.icon"></i>
|
<i :class="item.icon"></i>
|
||||||
<span>{{ item.label }}</span>
|
<span>{{ item.label }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-value">{{ item.value }}</div>
|
<div class="info-value">{{ basicInfo[item.value] }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -51,14 +51,14 @@
|
||||||
<i class="el-icon-document-copy"></i>
|
<i class="el-icon-document-copy"></i>
|
||||||
<span>资格证书</span>
|
<span>资格证书</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="cert-value">{{ cert.name || 'XXX' }}</div>
|
<div class="cert-value">{{ cert.diploma || '-' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cert-info-row">
|
<div class="cert-info-row">
|
||||||
<div class="cert-label">
|
<div class="cert-label">
|
||||||
<i class="el-icon-postcard"></i>
|
<i class="el-icon-postcard"></i>
|
||||||
<span>证书编号</span>
|
<span>证书编号</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="cert-value">{{ cert.number || 'XXX' }}</div>
|
<div class="cert-value">{{ cert.diplomaNum || '-' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cert-info-row">
|
<div class="cert-info-row">
|
||||||
<div class="cert-label">
|
<div class="cert-label">
|
||||||
|
|
@ -66,24 +66,32 @@
|
||||||
<span>级别</span>
|
<span>级别</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="cert-value">
|
<div class="cert-value">
|
||||||
<el-tag :type="getCertLevelType(cert.level)" size="small">
|
<el-tag type="primary" size="small">
|
||||||
{{ cert.level || 'XXX' }}
|
{{ cert.level || '-' }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="certificate-image">
|
<div class="certificate-image">
|
||||||
<el-image
|
<template v-if="cert.tbFileSourceVoList && cert.tbFileSourceVoList.length > 0">
|
||||||
:src="cert.imageUrl"
|
<el-image
|
||||||
:preview-src-list="[cert.imageUrl]"
|
:src="`${fileViewUrl}${item.filePath}?file_token=${getToken()}`"
|
||||||
fit="cover"
|
:preview-src-list="
|
||||||
class="cert-img"
|
cert.tbFileSourceVoList.map(
|
||||||
v-if="cert.imageUrl"
|
(e) => `${fileViewUrl}${e.filePath}?file_token=${getToken()}`,
|
||||||
>
|
)
|
||||||
<div slot="error" class="image-slot">
|
"
|
||||||
<i class="el-icon-picture-outline"></i>
|
fit="cover"
|
||||||
</div>
|
class="cert-img"
|
||||||
</el-image>
|
v-for="(item, index) in cert.tbFileSourceVoList"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<div slot="error" class="image-slot">
|
||||||
|
<i class="el-icon-picture-outline"></i>
|
||||||
|
</div>
|
||||||
|
</el-image>
|
||||||
|
</template>
|
||||||
|
|
||||||
<div class="image-placeholder" v-else>
|
<div class="image-placeholder" v-else>
|
||||||
<i class="el-icon-picture-outline"></i>
|
<i class="el-icon-picture-outline"></i>
|
||||||
<span>暂无图片</span>
|
<span>暂无图片</span>
|
||||||
|
|
@ -101,9 +109,6 @@
|
||||||
<i class="el-icon-data-line"></i>
|
<i class="el-icon-data-line"></i>
|
||||||
<span>业绩信息</span>
|
<span>业绩信息</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="section-actions">
|
|
||||||
<el-button type="primary" size="small" icon="el-icon-download">导出</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<el-table
|
<el-table
|
||||||
|
|
@ -117,19 +122,36 @@
|
||||||
<el-table-column align="center" type="index" label="序号" width="60" />
|
<el-table-column align="center" type="index" label="序号" width="60" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
prop="projectName"
|
prop="proName"
|
||||||
label="工程名称"
|
label="工程名称"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
min-width="150"
|
min-width="150"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" prop="voltageLevel" label="电压等级" width="100" />
|
<el-table-column align="center" prop="voltage" label="电压等级" width="100" />
|
||||||
<el-table-column align="center" prop="timeRange" label="起止时间" width="120" />
|
<el-table-column align="center" label="起止时间" width="160" show-overflow-tooltip>
|
||||||
<el-table-column align="center" prop="completionDate" label="竣工日期" width="100" />
|
<template #default="{ row }">
|
||||||
<el-table-column align="center" prop="substationScale" label="变电站规模" width="120" />
|
<span>{{ row.startTime }} ~ {{ row.endTime }}</span>
|
||||||
<el-table-column align="center" prop="lineScale" label="线路建设规模" width="120" />
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column show-overflow-tooltip align="center" prop="endTime" label="竣工日期" width="100" />
|
||||||
|
<el-table-column
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
prop="stationNum"
|
||||||
|
label="变电站规模"
|
||||||
|
width="120"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
prop="lineScale"
|
||||||
|
label="线路建设规模"
|
||||||
|
width="120"
|
||||||
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
prop="contractScope"
|
prop="contractRang"
|
||||||
label="承包范围"
|
label="承包范围"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
min-width="120"
|
min-width="120"
|
||||||
|
|
@ -141,7 +163,7 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
min-width="120"
|
min-width="120"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" prop="positionInProject" label="在项目中承担的职务" width="150" />
|
<el-table-column align="center" prop="title" label="在项目中承担的职务" width="150" />
|
||||||
<el-table-column align="center" label="项目材料" width="100">
|
<el-table-column align="center" label="项目材料" width="100">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -161,133 +183,46 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getPersonDetailsAPI } from '@/api/comprehensive-query'
|
||||||
|
import { getToken } from '@/utils/auth'
|
||||||
export default {
|
export default {
|
||||||
name: 'PersonDetails',
|
name: 'PersonDetails',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
fileViewUrl: process.env.VUE_APP_BASE_API + '/files',
|
||||||
|
getToken,
|
||||||
// 基本信息
|
// 基本信息
|
||||||
basicInfo: {
|
basicInfo: {
|
||||||
name: '张三',
|
userName: '',
|
||||||
idCard: 'XXXXXXXXXXXXXXXXXX',
|
idCard: '',
|
||||||
education: 'XXX',
|
education: '',
|
||||||
title: 'XXX',
|
title: '',
|
||||||
position: 'XXX',
|
position: '',
|
||||||
major: 'XXX',
|
major: '',
|
||||||
inUse: 'XXX',
|
used: '',
|
||||||
personType: 'XXX',
|
peopleType: '',
|
||||||
},
|
},
|
||||||
// 基本信息配置
|
// 基本信息配置
|
||||||
basicInfoItems: [
|
basicInfoItems: [
|
||||||
{ label: '姓名', value: '张三', icon: 'el-icon-user' },
|
{ label: '姓名', value: 'userName', icon: 'el-icon-user' },
|
||||||
{ label: '身份证', value: 'XXXXXXXXXXXXXXXXXX', icon: 'el-icon-postcard' },
|
{ label: '身份证', value: 'idCard', icon: 'el-icon-postcard' },
|
||||||
{ label: '学历', value: 'XXX', icon: 'el-icon-document' },
|
{ label: '学历', value: 'education', icon: 'el-icon-document' },
|
||||||
{ label: '职称', value: 'XXX', icon: 'el-icon-medal' },
|
{ label: '职称', value: 'title', icon: 'el-icon-medal' },
|
||||||
{ label: '职务', value: 'XXX', icon: 'el-icon-s-custom' },
|
{ label: '职务', value: 'position', icon: 'el-icon-s-custom' },
|
||||||
{ label: '专业', value: 'XXX', icon: 'el-icon-reading' },
|
{ label: '专业', value: 'major', icon: 'el-icon-reading' },
|
||||||
{ label: '是否在用', value: 'XXX', icon: 'el-icon-circle-check' },
|
{ label: '是否在用', value: 'used', icon: 'el-icon-circle-check' },
|
||||||
{ label: '人员类型', value: 'XXX', icon: 'el-icon-user-solid' },
|
{ label: '人员类型', value: 'peopleType', icon: 'el-icon-user-solid' },
|
||||||
],
|
],
|
||||||
// 资格证书列表
|
// 资格证书列表
|
||||||
certificateList: [
|
certificateList: [],
|
||||||
{
|
|
||||||
name: 'XXX',
|
|
||||||
number: 'XXX',
|
|
||||||
level: 'XXX',
|
|
||||||
imageUrl: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'XXX',
|
|
||||||
number: 'XXX',
|
|
||||||
level: 'XXX',
|
|
||||||
imageUrl: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
// 业绩信息列表
|
// 业绩信息列表
|
||||||
performanceList: [
|
performanceList: [],
|
||||||
{
|
|
||||||
projectName: '',
|
|
||||||
voltageLevel: '',
|
|
||||||
timeRange: '',
|
|
||||||
completionDate: '',
|
|
||||||
substationScale: '',
|
|
||||||
lineScale: '',
|
|
||||||
contractScope: '',
|
|
||||||
ownerUnit: '',
|
|
||||||
positionInProject: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
projectName: '',
|
|
||||||
voltageLevel: '',
|
|
||||||
timeRange: '',
|
|
||||||
completionDate: '',
|
|
||||||
substationScale: '',
|
|
||||||
lineScale: '',
|
|
||||||
contractScope: '',
|
|
||||||
ownerUnit: '',
|
|
||||||
positionInProject: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
projectName: '',
|
|
||||||
voltageLevel: '',
|
|
||||||
timeRange: '',
|
|
||||||
completionDate: '',
|
|
||||||
substationScale: '',
|
|
||||||
lineScale: '',
|
|
||||||
contractScope: '',
|
|
||||||
ownerUnit: '',
|
|
||||||
positionInProject: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
projectName: '',
|
|
||||||
voltageLevel: '',
|
|
||||||
timeRange: '',
|
|
||||||
completionDate: '',
|
|
||||||
substationScale: '',
|
|
||||||
lineScale: '',
|
|
||||||
contractScope: '',
|
|
||||||
ownerUnit: '',
|
|
||||||
positionInProject: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
projectName: '',
|
|
||||||
voltageLevel: '',
|
|
||||||
timeRange: '',
|
|
||||||
completionDate: '',
|
|
||||||
substationScale: '',
|
|
||||||
lineScale: '',
|
|
||||||
contractScope: '',
|
|
||||||
ownerUnit: '',
|
|
||||||
positionInProject: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
projectName: '',
|
|
||||||
voltageLevel: '',
|
|
||||||
timeRange: '',
|
|
||||||
completionDate: '',
|
|
||||||
substationScale: '',
|
|
||||||
lineScale: '',
|
|
||||||
contractScope: '',
|
|
||||||
ownerUnit: '',
|
|
||||||
positionInProject: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
projectName: '',
|
|
||||||
voltageLevel: '',
|
|
||||||
timeRange: '',
|
|
||||||
completionDate: '',
|
|
||||||
substationScale: '',
|
|
||||||
lineScale: '',
|
|
||||||
contractScope: '',
|
|
||||||
ownerUnit: '',
|
|
||||||
positionInProject: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 返回上一页
|
// 返回上一页
|
||||||
goBack() {
|
goBack() {
|
||||||
this.$router.go(-1)
|
this.$router.push('/comprehensive-query')
|
||||||
},
|
},
|
||||||
// 查看项目材料
|
// 查看项目材料
|
||||||
viewProjectMaterials(row) {
|
viewProjectMaterials(row) {
|
||||||
|
|
@ -297,6 +232,7 @@ export default {
|
||||||
path: '/comprehensive-query/project-materials',
|
path: '/comprehensive-query/project-materials',
|
||||||
query: {
|
query: {
|
||||||
id: row.id,
|
id: row.id,
|
||||||
|
tbFileSourceVoList: row.tbFileSourceVoList,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
@ -315,13 +251,34 @@ export default {
|
||||||
console.log('导出业绩数据')
|
console.log('导出业绩数据')
|
||||||
// 实现导出功能
|
// 实现导出功能
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 获取人员详情
|
||||||
|
async getPersonDetails(data) {
|
||||||
|
console.log(data, '详情参数')
|
||||||
|
const res = await getPersonDetailsAPI(data)
|
||||||
|
console.log(res, '详情')
|
||||||
|
|
||||||
|
if (res.code == 200 && res.data) {
|
||||||
|
this.certificateList = res.data.certificateList
|
||||||
|
this.performanceList = res.data.tbCompanyPerfList
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
created() {
|
|
||||||
// 根据路由参数获取人员ID,调用API获取详情数据
|
watch: {
|
||||||
const id = this.$route.query.id
|
$route: {
|
||||||
if (id) {
|
handler(newVal) {
|
||||||
// this.getPersonDetails(id)
|
// console.log(newVal)
|
||||||
}
|
if (Object.keys(newVal.query).length > 0) {
|
||||||
|
this.basicInfo = newVal.query
|
||||||
|
this.getPersonDetails({
|
||||||
|
id: newVal.query.id,
|
||||||
|
peopleType: newVal.query.peopleType,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -17,34 +17,30 @@
|
||||||
<div class="info-section">
|
<div class="info-section">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div class="section-title">
|
<div class="section-title">
|
||||||
<i class="el-icon-document-copy"></i>
|
<i class="el-icon-document"></i>
|
||||||
<span>中标通知书</span>
|
<span>中标通知书</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="materials-container">
|
<div class="materials-container">
|
||||||
<div class="image-gallery">
|
<div class="image-gallery contract-gallery">
|
||||||
<div class="image-item large" v-for="(item, index) in bidNoticeList" :key="index">
|
<template v-if="bidNoticeList.length > 0">
|
||||||
<el-image
|
<div class="image-item" v-for="(item, index) in contractPagesList" :key="index">
|
||||||
:src="item.url"
|
<el-image
|
||||||
:preview-src-list="getPreviewList('bidNotice')"
|
:src="`${fileViewUrl}${item.filePath}?file_token=${getToken()}`"
|
||||||
fit="cover"
|
fit="cover"
|
||||||
class="material-img"
|
class="material-img"
|
||||||
v-if="item.url"
|
>
|
||||||
>
|
<div slot="error" class="image-slot">
|
||||||
<div slot="error" class="image-slot">
|
<i class="el-icon-picture-outline"></i>
|
||||||
<i class="el-icon-picture-outline"></i>
|
<span>加载失败</span>
|
||||||
<span>加载失败</span>
|
</div>
|
||||||
</div>
|
</el-image>
|
||||||
</el-image>
|
|
||||||
<div class="image-placeholder" v-else>
|
|
||||||
<i class="el-icon-picture-outline"></i>
|
|
||||||
<span>暂无图片</span>
|
|
||||||
</div>
|
|
||||||
<div class="image-overlay">
|
|
||||||
<el-button type="primary" size="small" icon="el-icon-zoom-in" @click="previewImage(item)">
|
|
||||||
预览
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div class="image-placeholder" v-else>
|
||||||
|
<i class="el-icon-picture-outline"></i>
|
||||||
|
<span>暂无图片</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -57,45 +53,27 @@
|
||||||
<i class="el-icon-document"></i>
|
<i class="el-icon-document"></i>
|
||||||
<span>合同关键页</span>
|
<span>合同关键页</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="section-actions">
|
|
||||||
<el-button type="primary" size="small" icon="el-icon-upload">上传</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="materials-container">
|
<div class="materials-container">
|
||||||
<div class="image-gallery contract-gallery">
|
<div class="image-gallery contract-gallery">
|
||||||
<div class="image-item" v-for="(item, index) in contractPagesList" :key="index">
|
<template v-if="contractPagesList.length > 0">
|
||||||
<el-image
|
<div class="image-item" v-for="(item, index) in contractPagesList" :key="index">
|
||||||
:src="item.url"
|
<el-image
|
||||||
:preview-src-list="getPreviewList('contractPages')"
|
:src="`${fileViewUrl}${item.filePath}?file_token=${getToken()}`"
|
||||||
fit="cover"
|
fit="cover"
|
||||||
class="material-img"
|
class="material-img"
|
||||||
v-if="item.url"
|
|
||||||
>
|
|
||||||
<div slot="error" class="image-slot">
|
|
||||||
<i class="el-icon-picture-outline"></i>
|
|
||||||
<span>加载失败</span>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<div class="image-placeholder" v-else>
|
|
||||||
<i class="el-icon-picture-outline"></i>
|
|
||||||
<span>暂无图片</span>
|
|
||||||
</div>
|
|
||||||
<div class="image-overlay">
|
|
||||||
<el-button type="primary" size="small" icon="el-icon-zoom-in" @click="previewImage(item)">
|
|
||||||
预览
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
type="danger"
|
|
||||||
size="small"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="deleteImage(item, index)"
|
|
||||||
>
|
>
|
||||||
删除
|
<div slot="error" class="image-slot">
|
||||||
</el-button>
|
<i class="el-icon-picture-outline"></i>
|
||||||
</div>
|
<span>加载失败</span>
|
||||||
<div class="image-info">
|
</div>
|
||||||
<span class="image-name">{{ item.name || `合同页${index + 1}` }}</span>
|
</el-image>
|
||||||
</div>
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div class="image-placeholder" v-else>
|
||||||
|
<i class="el-icon-picture-outline"></i>
|
||||||
|
<span>暂无图片</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -108,45 +86,27 @@
|
||||||
<i class="el-icon-finished"></i>
|
<i class="el-icon-finished"></i>
|
||||||
<span>竣工报告</span>
|
<span>竣工报告</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="section-actions">
|
|
||||||
<el-button type="primary" size="small" icon="el-icon-upload">上传</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="materials-container">
|
<div class="materials-container">
|
||||||
<div class="image-gallery completion-gallery">
|
<div class="image-gallery completion-gallery">
|
||||||
<div class="image-item" v-for="(item, index) in completionReportList" :key="index">
|
<template v-if="completionReportList.length > 0">
|
||||||
<el-image
|
<div class="image-item" v-for="(item, index) in completionReportList" :key="index">
|
||||||
:src="item.url"
|
<el-image
|
||||||
:preview-src-list="getPreviewList('completionReport')"
|
:src="`${fileViewUrl}${item.filePath}?file_token=${getToken()}`"
|
||||||
fit="cover"
|
fit="cover"
|
||||||
class="material-img"
|
class="material-img"
|
||||||
v-if="item.url"
|
|
||||||
>
|
|
||||||
<div slot="error" class="image-slot">
|
|
||||||
<i class="el-icon-picture-outline"></i>
|
|
||||||
<span>加载失败</span>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<div class="image-placeholder" v-else>
|
|
||||||
<i class="el-icon-picture-outline"></i>
|
|
||||||
<span>暂无图片</span>
|
|
||||||
</div>
|
|
||||||
<div class="image-overlay">
|
|
||||||
<el-button type="primary" size="small" icon="el-icon-zoom-in" @click="previewImage(item)">
|
|
||||||
预览
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
type="danger"
|
|
||||||
size="small"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="deleteImage(item, index)"
|
|
||||||
>
|
>
|
||||||
删除
|
<div slot="error" class="image-slot">
|
||||||
</el-button>
|
<i class="el-icon-picture-outline"></i>
|
||||||
</div>
|
<span>加载失败</span>
|
||||||
<div class="image-info">
|
</div>
|
||||||
<span class="image-name">{{ item.name || `报告页${index + 1}` }}</span>
|
</el-image>
|
||||||
</div>
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div class="image-placeholder" v-else>
|
||||||
|
<i class="el-icon-picture-outline"></i>
|
||||||
|
<span>暂无图片</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -155,34 +115,20 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getToken } from '@/utils/auth'
|
||||||
export default {
|
export default {
|
||||||
name: 'ProjectMaterials',
|
name: 'ProjectMaterials',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
fileViewUrl: process.env.VUE_APP_BASE_API + '/files',
|
||||||
|
|
||||||
|
getToken,
|
||||||
// 中标通知书
|
// 中标通知书
|
||||||
bidNoticeList: [
|
bidNoticeList: [],
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
name: '中标通知书',
|
|
||||||
url: '',
|
|
||||||
type: 'bidNotice',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
// 合同关键页
|
// 合同关键页
|
||||||
contractPagesList: [
|
contractPagesList: [],
|
||||||
{ id: 1, name: '合同首页', url: '', type: 'contractPages' },
|
|
||||||
{ id: 2, name: '合同条款', url: '', type: 'contractPages' },
|
|
||||||
{ id: 3, name: '价格条款', url: '', type: 'contractPages' },
|
|
||||||
{ id: 4, name: '付款方式', url: '', type: 'contractPages' },
|
|
||||||
{ id: 5, name: '工期条款', url: '', type: 'contractPages' },
|
|
||||||
{ id: 6, name: '质量条款', url: '', type: 'contractPages' },
|
|
||||||
{ id: 7, name: '违约责任', url: '', type: 'contractPages' },
|
|
||||||
],
|
|
||||||
// 竣工报告
|
// 竣工报告
|
||||||
completionReportList: [
|
completionReportList: [],
|
||||||
{ id: 1, name: '竣工报告封面', url: '', type: 'completionReport' },
|
|
||||||
{ id: 2, name: '竣工报告内容', url: '', type: 'completionReport' },
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
@ -190,54 +136,25 @@ export default {
|
||||||
goBack() {
|
goBack() {
|
||||||
this.$router.go(-1)
|
this.$router.go(-1)
|
||||||
},
|
},
|
||||||
// 获取预览列表
|
|
||||||
getPreviewList(type) {
|
|
||||||
let list = []
|
|
||||||
switch (type) {
|
|
||||||
case 'bidNotice':
|
|
||||||
list = this.bidNoticeList.filter((item) => item.url).map((item) => item.url)
|
|
||||||
break
|
|
||||||
case 'contractPages':
|
|
||||||
list = this.contractPagesList.filter((item) => item.url).map((item) => item.url)
|
|
||||||
break
|
|
||||||
case 'completionReport':
|
|
||||||
list = this.completionReportList.filter((item) => item.url).map((item) => item.url)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
},
|
|
||||||
// 预览图片
|
// 预览图片
|
||||||
previewImage(item) {
|
previewImage(item) {
|
||||||
console.log('预览图片:', item)
|
console.log('预览图片:', item)
|
||||||
},
|
},
|
||||||
// 删除图片
|
|
||||||
deleteImage(item, index) {
|
|
||||||
this.$modal
|
|
||||||
.confirm('确定删除该图片吗?')
|
|
||||||
.then(() => {
|
|
||||||
if (item.type === 'bidNotice') {
|
|
||||||
this.bidNoticeList.splice(index, 1)
|
|
||||||
} else if (item.type === 'contractPages') {
|
|
||||||
this.contractPagesList.splice(index, 1)
|
|
||||||
} else if (item.type === 'completionReport') {
|
|
||||||
this.completionReportList.splice(index, 1)
|
|
||||||
}
|
|
||||||
this.$modal.msgSuccess('删除成功')
|
|
||||||
})
|
|
||||||
.catch(() => {})
|
|
||||||
},
|
|
||||||
// 上传图片
|
|
||||||
uploadImage(type) {
|
|
||||||
console.log('上传图片:', type)
|
|
||||||
// 实现上传功能
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
created() {
|
|
||||||
// 根据路由参数获取项目ID,调用API获取项目材料数据
|
watch: {
|
||||||
const projectId = this.$route.query.projectId
|
$route: {
|
||||||
if (projectId) {
|
handler(newVal) {
|
||||||
// this.getProjectMaterials(projectId)
|
console.log(newVal, 'newVal')
|
||||||
}
|
if (newVal) {
|
||||||
|
this.bidNoticeList = newVal.query.tbFileSourceVoList.filter((item) => item.fileType == 1)
|
||||||
|
this.contractPagesList = newVal.query.tbFileSourceVoList.filter((item) => item.fileType == 2)
|
||||||
|
this.completionReportList = newVal.query.tbFileSourceVoList.filter((item) => item.fileType == 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -9,25 +9,25 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item prop="userName">
|
<el-form-item prop="userName">
|
||||||
<el-input v-model.trim="queryParams.userName" placeholder="请输入姓名" clearable> </el-input>
|
<el-input v-model.trim="queryParams.userName" placeholder="请输入姓名" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item prop="title">
|
<el-form-item prop="idCard">
|
||||||
<el-input v-model.trim="queryParams.title" placeholder="请输入职称" clearable> </el-input>
|
<el-input v-model.trim="queryParams.idCard" placeholder="请输入身份证号" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item prop="major">
|
<el-form-item prop="diploma">
|
||||||
<el-input v-model.trim="queryParams.major" placeholder="请输入专业" clearable> </el-input>
|
<el-input v-model.trim="queryParams.diploma" placeholder="请输入资格证书" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item prop="major">
|
<el-form-item prop="used">
|
||||||
<el-select placeholder="是否在用" clearable style="width: 100%">
|
<el-select placeholder="是否在用" v-model="queryParams.used" clearable style="width: 100%">
|
||||||
<el-option label="是" value="1" />
|
<el-option label="是" value="0" />
|
||||||
<el-option label="否" value="2" />
|
<el-option label="否" value="1" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -39,21 +39,27 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item prop="userName">
|
<el-form-item prop="proName">
|
||||||
<el-input v-model.trim="queryParams.userName" placeholder="请输入姓名" clearable> </el-input>
|
<el-input v-model.trim="queryParams.proName" placeholder="请输入工程名称" clearable> </el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item prop="title">
|
<el-form-item prop="voltage">
|
||||||
<el-input v-model.trim="queryParams.title" placeholder="请输入职称" clearable> </el-input>
|
<el-input v-model.trim="queryParams.voltage" placeholder="请输入电压等级" clearable> </el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item prop="major">
|
<el-form-item prop="major">
|
||||||
<el-select placeholder="请选择近年业绩" clearable style="width: 100%">
|
<el-select
|
||||||
<el-option label="是" value="1" />
|
placeholder="请选择近年业绩"
|
||||||
<el-option label="否" value="2" />
|
v-model="timeValue_1"
|
||||||
|
clearable
|
||||||
|
style="width: 100%"
|
||||||
|
@change="handleTimeValueChange_1"
|
||||||
|
>
|
||||||
|
<el-option label="近三年" value="3" />
|
||||||
|
<el-option label="近五年" value="5" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -61,7 +67,7 @@
|
||||||
<el-form-item prop="major">
|
<el-form-item prop="major">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
type="daterange"
|
type="daterange"
|
||||||
v-model="queryParams.timeValue"
|
v-model="timeValue_2"
|
||||||
range-separator="~"
|
range-separator="~"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
value-format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
||||||
|
|
@ -82,26 +88,44 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-table :data="tableData" style="width: 100%">
|
<el-table :data="tableData" style="width: 100%" border stripe>
|
||||||
<el-table-column align="center" type="index" label="序号" width="55" />
|
<el-table-column align="center" type="index" label="序号" width="55" />
|
||||||
<el-table-column align="center" prop="name" label="姓名" />
|
<el-table-column show-overflow-tooltip align="center" prop="userName" label="姓名" />
|
||||||
<el-table-column align="center" prop="title" label="身份证号" />
|
<el-table-column show-overflow-tooltip align="center" prop="idCard" label="身份证号" />
|
||||||
<el-table-column align="center" prop="major" label="学历" />
|
<el-table-column show-overflow-tooltip align="center" prop="education" label="学历" />
|
||||||
<el-table-column align="center" prop="timeValue" label="职称" />
|
<el-table-column show-overflow-tooltip align="center" prop="title" label="职称" />
|
||||||
<el-table-column align="center" prop="timeValue" label="职务" />
|
<el-table-column show-overflow-tooltip align="center" prop="position" label="职务" />
|
||||||
<el-table-column align="center" prop="timeValue" label="专业" />
|
<el-table-column show-overflow-tooltip align="center" prop="major" label="专业" />
|
||||||
<el-table-column align="center" prop="timeValue" label="是否在用" />
|
<el-table-column show-overflow-tooltip align="center" prop="diploma" label="资格证书" />
|
||||||
<el-table-column align="center" prop="timeValue" label="人员类型" />
|
<el-table-column show-overflow-tooltip align="center" prop="proName" label="工程" />
|
||||||
|
<el-table-column show-overflow-tooltip align="center" prop="voltage" label="电压等级(kV)" />
|
||||||
|
<el-table-column show-overflow-tooltip align="center" prop="startTime" label="开始时间" />
|
||||||
|
<!-- <el-table-column align="center" prop="endTime" label="结束时间" /> -->
|
||||||
|
<el-table-column align="center" label="是否在用">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.used == 0 ? '是' : '否' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="peopleType" label="人员类型" />
|
||||||
<el-table-column align="center" label="操作">
|
<el-table-column align="center" label="操作">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="text" icon="el-icon-view" @click="onHandleViewDetails(row)">详情</el-button>
|
<el-button type="text" icon="el-icon-view" @click="onHandleViewDetails(row)">详情</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
|
<pagination
|
||||||
|
:total="total"
|
||||||
|
@pagination="getKeyPersonList"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getPersonListAPI } from '@/api/comprehensive-query'
|
||||||
|
import moment from 'moment'
|
||||||
export default {
|
export default {
|
||||||
name: 'ComprehensiveQuery',
|
name: 'ComprehensiveQuery',
|
||||||
|
|
||||||
|
|
@ -111,32 +135,56 @@ export default {
|
||||||
userName: '',
|
userName: '',
|
||||||
title: '',
|
title: '',
|
||||||
major: '',
|
major: '',
|
||||||
timeValue: [],
|
used: '',
|
||||||
|
proName: '',
|
||||||
|
voltage: '',
|
||||||
|
startTime: '',
|
||||||
|
endTime: '',
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
},
|
},
|
||||||
tableData: [
|
timeValue_1: '',
|
||||||
{
|
timeValue_2: [],
|
||||||
name: '张三',
|
tableData: [],
|
||||||
title: '130102199003074919',
|
|
||||||
major: '本科',
|
|
||||||
timeValue: '工程师',
|
|
||||||
timeValue: '工程师',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getKeyPersonList() {
|
handleTimeValueChange_1(val) {
|
||||||
console.log(this.queryParams)
|
// this.queryParams.startTime = ''
|
||||||
|
// this.queryParams.endTime = ''
|
||||||
|
|
||||||
|
if (val == '3') {
|
||||||
|
this.timeValue_2 = [moment().subtract(3, 'years').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]
|
||||||
|
} else if (val == '5') {
|
||||||
|
this.timeValue_2 = [moment().subtract(5, 'years').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async getKeyPersonList() {
|
||||||
|
if (this.timeValue_2.length > 0) {
|
||||||
|
this.queryParams.startTime = this.timeValue_2[0]
|
||||||
|
this.queryParams.endTime = this.timeValue_2[1]
|
||||||
|
} else {
|
||||||
|
this.queryParams.startTime = ''
|
||||||
|
this.queryParams.endTime = ''
|
||||||
|
}
|
||||||
|
const res = await getPersonListAPI(this.queryParams)
|
||||||
|
|
||||||
|
this.tableData = res.rows
|
||||||
|
this.total = res.total
|
||||||
},
|
},
|
||||||
resetQueryParams() {
|
resetQueryParams() {
|
||||||
this.$refs.queryParamsRef.resetFields()
|
this.$refs.queryParamsRef.resetFields()
|
||||||
this.queryParams.pageNum = 1
|
this.queryParams.pageNum = 1
|
||||||
this.queryParams.pageSize = 10
|
this.queryParams.pageSize = 10
|
||||||
|
this.timeValue_1 = ''
|
||||||
|
this.timeValue_2 = []
|
||||||
this.getKeyPersonList()
|
this.getKeyPersonList()
|
||||||
},
|
},
|
||||||
handleExport() {
|
handleExport() {
|
||||||
console.log(this.queryParams)
|
// console.log(this.queryParams)
|
||||||
|
this.download('/comprehensive/peopleAllExport', {}, `综合查询_${new Date().getTime()}.xlsx`)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查看详情
|
// 查看详情
|
||||||
|
|
@ -145,12 +193,20 @@ export default {
|
||||||
path: '/comprehensive-query/details',
|
path: '/comprehensive-query/details',
|
||||||
query: {
|
query: {
|
||||||
id: row.id,
|
id: row.id,
|
||||||
|
userName: row.userName,
|
||||||
|
idCard: row.idCard,
|
||||||
|
education: row.education,
|
||||||
|
title: row.title,
|
||||||
|
position: row.position,
|
||||||
|
major: row.major,
|
||||||
|
used: row.used == 0 ? '是' : '否',
|
||||||
|
peopleType: row.peopleType,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
// this.getKeyPersonList()
|
this.getKeyPersonList()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue