Compare commits

...

2 Commits

Author SHA1 Message Date
liujun f699d2c125 三项制度库,显示文件名 2024-07-30 13:58:06 +08:00
liujun 5082d741d3 1、修复消防点位扫码无法正常显示点位信息H5bug修复
2、新增
2024-07-30 13:47:42 +08:00
3 changed files with 766 additions and 0 deletions

View File

@ -95,6 +95,7 @@
align="center"/>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column align="center" prop="TYPE_NAME" label="文件类型" />
<el-table-column align="center" prop="FILE_NAME" label="文件名称" />
<el-table-column align="center" prop="TYPE_TWO_NAME" label="部门分类" />
<el-table-column align="center" prop="UPLOAD_TIME" label="上传时间" />
<el-table-column align="center" prop="UPLOAD_USER_NAME" label="上传人" />

View File

@ -0,0 +1,22 @@
<template>
<component :is="activeName" />
</template>
<script>
import List from './components/list'
export default {
components: {
List: List
},
data() {
return {
activeName: 'List',
SUPERVISE_CORPINFO_ID: ''
}
}
}
</script>
<style scoped lang="scss">
</style>

View File

@ -0,0 +1,743 @@
<template>
<div class="app-container">
<!-- 顶部搜索能力 -->
<el-form :model="searchParmas" label-width="130px">
<el-row>
<el-col :span="6">
<el-form-item label="企业名称">
<el-input v-model="searchParmas.enterpriseName" placeholder="请输入企业名称" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="集团单位">
<el-input v-model="searchParmas.groupUnit" placeholder="请输入集团单位" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="股份主管部门" style="margin-right: 20px">
<el-input v-model="searchParmas.shareSuperdepart" placeholder="请输入股份主管部门" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- 多级表格 -->
<el-table
v-loading="loading"
ref="multipleTable"
:data="varList"
:header-cell-style="{ 'font-weight': 'bold', color: '#000' }"
:max-height="tableMaxHeight"
tooltip-effect="dark"
border
fit
stripe
highlight-current-row
@selection-change="selectionChange"
@select-all="selectAll"
@row-click="rowClick">
<!-- 固定列 -->
<el-table-column :selectable="handleSelectWithDifferentStatus" type="selection" width="55" fixed align="center" />
<!-- 序号列及弹出框 -->
<el-table-column type="index" fixed="left" label="序号" align="center" width="90">
<template slot="header">
<el-popover ref="tablePopover" v-model="popoverVisible" width="240" trigger="manual">
<span slot="reference" style="cursor: pointer" @click="openPopover">
序号
<i class="el-icon-finished" style="font-weight: bold" />
</span>
<div class="popoverCheckBoxArea">
<el-checkbox
v-model="checked"
:indeterminate="indeterminate"
@change="handleCheckAllChange">全选</el-checkbox>
<div style="margin: 10px 0" />
<el-tree
ref="treeRef"
:data="dataSourceForTree"
:props="defaultProps"
:default-expand-all="true"
show-checkbox
node-key="id"
class="treeColumnStyle"
@check-change="changeCheck" />
</div>
<div class="popoverCheckBoxButton">
<el-button size="mini" @click="canclePopover"></el-button>
<el-button type="primary" size="mini" @click="confirmPopover"></el-button>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column v-if="showColumn('RELEVANT_UNIT_NAME')" prop="RELEVANT_UNIT_NAME" label="企业名称" align="center" show-overflow-tooltip width="120"/>
<el-table-column v-if="showColumn('CORP_TYPE_NAME')" prop="CORP_TYPE_NAME" label="集团单位" show-overflow-tooltip align="center" width="120"/>
<el-table-column v-if="showColumn('MAIN_DEPARTMENT_NAME')" prop="MAIN_DEPARTMENT_NAME" label="股份主管部门" align="center" width="120"/>
<el-table-column v-if="showColumn('CORP_SIZE_NAME')" prop="CORP_SIZE_NAME" label="企业规模" align="center" width="120"/>
<el-table-column v-if="showColumn('CONTACT_PERSON')" prop="CONTACT_PERSON" label="主要负责人" align="center" width="120"/>
<el-table-column v-if="showColumn('CONTACT_TEL')" prop="CONTACT_TEL" label="主要负责人联系电话" align="center" width="120"/>
<el-table-column v-if="showColumn('REGISTER_COUNT')" prop="REGISTER_COUNT" label="注册人数" align="center" width="120"/>
<el-table-column v-if="showColumn('PASS_COUNT')" prop="PASS_COUNT" label="培训合格人数" align="center" width="120"/>
<el-table-column v-if="showColumn('personAgeStruc')" prop="personAgeStruc" label="人员年龄结构" align="center">
<el-table-column v-if="showColumn('AVG_AGE')" prop="AVG_AGE" label="平均年龄" align="center" width="120"/>
<el-table-column v-if="showColumn('MORE_THAN_60_COUNT')" prop="MORE_THAN_60_COUNT" label="大于60岁人数" align="center" width="120"/>
<el-table-column v-if="showColumn('BETWEEN_55_AND_60_COUNT')" prop="BETWEEN_55_AND_60_COUNT" label="55-60岁人数" align="center" width="120"/>
<el-table-column v-if="showColumn('LESS_THAN_55_COUNT')" prop="LESS_THAN_55_COUNT" label="55岁以下人数" align="center" width="120"/>
</el-table-column>
<el-table-column v-if="false" prop="workExprien" label="在港工作经历(年)" align="center" width="120"/>
<el-table-column prop="personEdcaton" label="人员学历" align="center">
<el-table-column prop="BELOW_HIGH_SCHOOL" label="高中以下" align="center" width="120"/>
<el-table-column prop="HIGH_SCHOOL" label="高中" align="center" width="120"/>
<el-table-column prop="TECHNICAL_SCHOOL" label="技工" align="center" width="120"/>
<el-table-column prop="TECHNICAL_SECONDARY_SCHOOL" label="中专或中等技术学校" align="center" width="130"/>
<el-table-column prop="JUNIOR_COLLEGE" label="大学专科或专科院校" align="center" width="130"/>
<el-table-column prop="UNDERGRADUATE" label="大学本科" align="center" width="120"/>
<el-table-column prop="ABOVE_UNDERGRADUATE" label="大学本科以上" align="center" width="120"/>
</el-table-column>
<el-table-column prop="man" label="男职工" align="center">
<el-table-column prop="MAN_COUNT" label="人数" align="center" width="120"/>
<el-table-column prop="MAN_PERCENT" label="占比" align="center" width="120"/>
</el-table-column>
<el-table-column prop="woman" label="女职工" align="center">
<el-table-column prop="WOMAN_COUNT" label="人数" align="center" width="120"/>
<el-table-column prop="WOMAN_PERCENT" label="占比" align="center" width="120"/>
</el-table-column>
<el-table-column prop="insurance" label="保险相关" align="center">
<el-table-column prop="SOCIAL" label="有社保人数" align="center" width="120"/>
<el-table-column prop="OCCUPATIONAL_INJURY" label="有工伤保险人数" align="center" width="120"/>
<el-table-column prop="COMMERCIAL_INSURANCE" label="有商业保险人数" align="center" width="120"/>
<el-table-column prop="OTHER_INSURANCE" label="其他保险人数" align="center" width="120"/>
<el-table-column prop="NO_INSURANCE" label="无保险人数" align="center" width="120"/>
</el-table-column>
<el-table-column prop="numOfSpecialOperation" label="取得特种作业证书人数" align="center">
<el-table-column prop="SPECIAL_TOTAL" label="总人数" align="center" width="120"/>
<el-table-column prop="ELECTRICIAN" label="电工作业" align="center" width="120"/>
<el-table-column prop="WELDING" label="焊接与热切割作业" align="center" width="120"/>
<el-table-column prop="HIGH_WORK" label="高处作业" align="center" width="120"/>
<el-table-column prop="CRANE_OPERATION" label="起重机械作业" align="center" width="120"/>
<el-table-column prop="MOTOR_VEHICLE" label="企业内机动车辆作业" align="center" width="130"/>
<el-table-column prop="OTHER_SPECIAL" label="其他特种作业" align="center" width="120"/>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<el-button type="primary" icon="el-icon-upload2" @click="handleExportBtn"></el-button>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves'
import axios from 'axios'
import moment from 'moment'
export default {
components: { Pagination },
directives: { waves },
data() {
return {
config: config,
searchParmas: {
enterpriseName: '',
groupUnit: '',
shareSuperdepart: ''
},
varList: [],
// el-table
tableMaxHeight: 0,
//
loading: false,
//
listQuery: {
page: 1,
limit: 10
},
total: 0,
//
dataSourceForTree: [
{
id: '1',
label: '企业名称',
value: 'RELEVANT_UNIT_NAME',
disabled: false,
show: true,
children: []
},
{
id: '2',
label: '集团单位',
value: 'CORP_TYPE_NAME',
disabled: false,
show: true,
children: []
},
{
id: '3',
label: '股份主管部门',
value: 'MAIN_DEPARTMENT_NAME',
disabled: false,
show: true,
children: []
},
{
id: '4',
label: '企业规模',
value: 'CORP_SIZE_NAME',
disabled: false,
show: true,
children: []
},
{
id: '5',
label: '主要负责人',
value: 'CONTACT_PERSON',
disabled: false,
show: true,
children: []
},
{
id: '6',
label: '主要负责人联系电话',
value: 'CONTACT_TEL',
disabled: false,
show: true,
children: []
},
{
id: '7',
label: '注册人数',
value: 'REGISTER_COUNT',
disabled: false,
show: true,
children: []
},
{
id: '8',
label: '培训合格人数',
value: 'PASS_COUNT',
disabled: false,
show: true,
children: []
},
{
id: '9',
label: '人员年龄结构',
disabled: false,
value: 'personAgeStruc',
show: true,
children: [
{
id: '9-1',
label: '平均年龄',
value: 'AVG_AGE',
disabled: false,
show: true,
children: []
},
{
id: '9-2',
label: '大于60岁人数',
value: 'MORE_THAN_60_COUNT',
disabled: false,
show: true,
children: []
},
{
id: '9-3',
label: '55-60岁人数:',
value: 'BETWEEN_55_AND_60_COUNT',
disabled: false,
show: true,
children: []
},
{
id: '9-4',
label: '55岁以下人数',
value: 'LESS_THAN_55_COUNT',
disabled: false,
show: true,
children: []
}
]
},
{
id: '11',
label: '人员学历',
disabled: false,
value: 'personEducation',
show: true,
children: [
{
id: '11-1',
label: '高中以下',
value: 'BELOW_HIGH_SCHOOL',
disabled: false,
show: true,
children: []
},
{
id: '11-2',
label: '高中',
value: 'HIGH_SCHOOL',
disabled: false,
show: true,
children: []
},
{
id: '11-3',
label: '技工',
value: 'TECHNICAL_SCHOOL',
disabled: false,
show: true,
children: []
},
{
id: '11-4',
label: '中专或中等技术学校',
value: 'TECHNICAL_SECONDARY_SCHOOL',
disabled: false,
show: true,
children: []
},
{
id: '11-5',
label: '大学专科或专科院校',
value: 'JUNIOR_COLLEGE',
disabled: false,
show: true,
children: []
},
{
id: '11-6',
label: '大学本科',
value: 'UNDERGRADUATE',
disabled: false,
show: true,
children: []
},
{
id: '11-7',
label: '大学本科以上',
value: 'ABOVE_UNDERGRADUATE',
disabled: false,
show: true,
children: []
}
]
},
{
id: '12',
label: '男职工',
value: 'man',
show: true,
disabled: false,
children: [
{
id: '12-1',
label: '人数',
value: 'MAN_COUNT',
disabled: false,
show: true,
children: []
},
{
id: '12-2',
label: '占比',
value: 'MAN_PERCENT',
disabled: false,
show: true,
children: []
}
]
},
{
id: '13',
label: '女职工',
show: true,
value: 'woman',
disabled: false,
children: [
{
id: '13-1',
label: '人数',
value: 'WOMAN_COUNT',
disabled: false,
show: true,
children: []
},
{
id: '13-2',
label: '占比',
value: 'WOMAN_PERCENT',
disabled: false,
show: true,
children: []
}
]
},
{
id: '14',
label: '保险相关',
value: 'insurance',
disabled: false,
show: true,
children: [
{
id: '14-1',
label: '有社保人数',
value: 'SOCIAL',
disabled: false,
show: true,
children: []
},
{
id: '14-2',
label: '有工伤保险人数',
value: 'OCCUPATIONAL_INJURY',
disabled: false,
show: true,
children: []
},
{
id: '14-3',
label: '有商业保险人数',
value: 'COMMERCIAL_INSURANCE',
disabled: false,
show: true,
children: []
},
{
id: '14-4',
label: '其他保险人数',
value: 'OTHER_INSURANCE',
disabled: false,
show: true,
children: []
},
{
id: '14-5',
label: '无保险人数',
value: 'NO_INSURANCE',
disabled: false,
show: true,
children: []
}
]
},
{
id: '15',
label: '取得特种作业证书人数',
value: 'numOfSpecialOperation',
disabled: false,
show: true,
children: [
{
id: '15-1',
label: '总人数',
value: 'SPECIAL_TOTAL',
disabled: false,
show: true,
children: []
},
{
id: '15-2',
label: '电工作业',
value: 'ELECTRICIAN',
disabled: false,
show: true,
children: []
},
{
id: '15-3',
label: '焊接与热切割作业',
value: 'WELDING',
disabled: false,
show: true,
children: []
},
{
id: '15-4',
label: '高处作业',
value: 'HIGH_WORK',
disabled: false,
show: true,
children: []
},
{
id: '15-5',
label: '起重机械作业',
value: 'CRANE_OPERATION',
disabled: false,
show: true,
children: []
},
{
id: '15-6',
label: '企业内机动车辆作业',
value: 'MOTOR_VEHICLE',
disabled: false,
show: true,
children: []
},
{
id: '15-7',
label: '其他特种作业',
value: 'OTHER_SPECIAL',
disabled: false,
show: true,
children: []
}
]
}
],
treeCheckedIds: [], // id
defaultProps: {
children: 'children',
label: 'label'
},
checked: true, //
popoverVisible: false,
indeterminate: false, //
selectionSelected: [],
head: []
}
},
created() {
// el-table
this.tableMaxHeight = window.innerHeight - 230
// ,
this.getList() //
},
mounted() {
// el-table
this.$nextTick(() => {
window.onresize = () => {
this.tableMaxHeight = window.innerHeight - 230
}
this.$refs.treeRef.setCheckedNodes(
this.dataSourceForTree.filter(node => !node.disabled)
)
})
},
methods: {
handleSelectWithDifferentStatus(row, rowIndex) {
return true
},
getQuery() {
if (this.$refs.multipleTable) {
this.$refs.multipleTable.clearSelection()
}
this.listQuery = {
page: 1,
limit: 10
}
this.getList()
},
goKeyReset() {
this.searchParmas = {
enterpriseName: '',
groupUnit: '',
shareSuperdepart: ''
}
this.getQuery()
},
/** 获取列表数据 */
getList() {
this.loading = true
requestFN(
'/xgf/user/statistics?showCount=' +
this.listQuery.limit +
'&currentPage=' +
this.listQuery.page,
{ KEYWORDS: this.KEYWORDS, ISSMALL: '2' }
)
.then(data => {
this.loading = false
this.varList = data.list
this.total = data.page.totalResult
})
.catch(e => {
console.log(e)
this.loading = false
})
},
selectionChange(row) {
this.selectionSelected = row
},
selectAll(selection) {
this.selectionSelected = selection
},
rowClick(row, column, event) {
console.log('row :>> ', row)
},
handleExportBtn() {
const ids = this.selectionSelected
.map(item => {
return item.CORPINFO_ID
})
.toString(',')
const result = this.collectValues(this.dataSourceForTree)
this.head = result.toString(',')
if (
this.selectionSelected.map(item => {
return item.CORPINFO_ID
}).length === 0
) {
this.$message.error('请选择数据项后导出!')
}
this.exportExcelHandler(ids, this.head)
},
collectValues(data, resultArray = []) {
data.forEach(item => {
if (item.show) {
resultArray.push(item.value) // value
}
if (item.children && item.children.length > 0) {
this.collectValues(item.children, resultArray) //
}
})
return resultArray
},
// excel
exportExcelHandler(ids, head) {
window.open(`${this.config.httpurl}/xgf/user/exportExcel?ids=${ids}&head=${head}`)
},
//
openPopover() {
this.popoverVisible = true
},
//
canclePopover() {
this.popoverVisible = false
},
//
handleCheckAllChange() {
if (this.checked) {
this.$refs.treeRef.setCheckedNodes(
this.dataSourceForTree.filter(node => !node.disabled)
)
this.treeCheckedIds = this.$refs.treeRef
.getCheckedNodes(false, true)
.map(i => i.id)
this.head = this.$refs.treeRef.getCheckedNodes(false, true).map(i => i.value)
} else {
this.$refs.treeRef.setCheckedNodes([])
this.treeCheckedIds = []
this.head = []
}
},
//
changeCheck(checkedNode, isChecked, selfNode) {
const res = this.updateShowProperty(
this.dataSourceForTree,
checkedNode,
isChecked
)
this.dataSourceForTree = res
},
updateShowProperty(dataSource, curNode, isChecked) {
//
function recursiveUpdate(node) {
//
let allChildrenUnchecked = true
//
if (node.children && node.children.length > 0) {
node.children.forEach(child => {
const childChecked = recursiveUpdate(child)
if (childChecked) {
allChildrenUnchecked = false
}
})
}
// show
if (node.id === curNode.id) {
node.show = isChecked
}
// show
if (node.children && node.children.length > 0) {
if (allChildrenUnchecked) {
node.show = false
} else {
node.show = true
}
}
return node.show // show
}
//
dataSource.forEach(node => recursiveUpdate(node))
return dataSource
},
//
confirmPopover() {
this.popoverVisible = false
},
//
showColumn(columnValue) {
//
const findItem = (data, value) => {
for (let i = 0; i < data.length; i++) {
const item = data[i]
if (item.value === value) {
return item
}
if (item.children && item.children.length > 0) {
const foundInChildren = findItem(item.children, value)
if (foundInChildren) {
return foundInChildren
}
}
}
return null
}
//
const foundItem = findItem(this.dataSourceForTree, columnValue)
// show false
return foundItem ? foundItem.show : false
}
}
}
</script>
<style lang="scss" scoped>
.treeColumnStyle {
height: 400px;
overflow-y: auto;
overflow-x: auto;
&::-webkit-scrollbar {
display: none;
}
}
</style>