Merge branch 'dev-yjl' into 'shenzhen-dev'

项目版(新增点位配置、人员定位页面)

See merge request !53
This commit is contained in:
yjlHub 2022-11-10 18:30:46 +08:00
commit 4e68284f05
8 changed files with 1036 additions and 1 deletions

View File

@ -0,0 +1,12 @@
/**
* api接口统一管理
*/
import {post,get} from '../http'
export const addPersonnelLocationnApi = data => post('xmgl/personnelLocationBaseStation/addPersonnelLocationBaseStation', data);//新增人员定位-基站
export const deletePersonnelLocationDeleteByIdApi = data => get('xmgl/personnelLocationBaseStation/deleteById', data);//根据id删除人员定位-基站
export const getPersonnelLocationBaseStationGetByIdApi = data => get('xmgl/personnelLocationBaseStation/getById', data);//根据id查询人员定位-基站
export const editPersonnelLocationBaseStationUpdateApi = data => post('personnelLocationBaseStation/updatePersonnelLocationBaseStation', data);//修改人员定位-基站
export const getPersonnelLocationBaseStationListApi = data => get('xmgl/personnelLocationBaseStation/list', data);//所有人员定位-基站
export const getPersonnelLocationBaseStationApi = data => get('xmgl/personnelLocationBaseStation/selectPage', data);//分页查询人员定位-基站

View File

@ -432,6 +432,19 @@ const routes2 = [
name: '人员定位_地图管理',
component: () => import('@/views/projectFront/personnelPosition/mapManage.vue')
},
//------
//人员定位--点位配置
{
path: '/project/personnelPosition/pointConfiguration',
name: '人员定位_点位配置',
component: () => import('@/views/projectFront/personnelPosition/pointConfiguration.vue')
},
//人员定位--人员定位
{
path: '/project/personnelPosition/personnelPositioning',
name: '人员定位_人员定位',
component: () => import('@/views/projectFront/personnelPosition/personnelPositioning.vue')
},
{
path: '/project/safeManage/addSafeRecord',
name: '安全管理_新增安全检查',

View File

@ -39,7 +39,7 @@
<script>
import LeftOne from './leftOne'
import LeftTwo from './leftTwo'
import LeftThree from './leftThree'
import LeftThree from '../command/LeftThree'
import LeftFour from './leftFour'
import Center from './center'
import CenterBOne from './centerBOne'

View File

@ -0,0 +1,266 @@
<template>
<div class="administration">
<div class="left2 whiteBlock">
<div class="left_list">
<div>
<!-- 基站地图列表 -->
<div class="dialog-content map-box">
<div class="map-left">
<vue-scroll style="800px">
<ul>
<li v-for="(item, index) in 4" :key="index">
<img src="@/assets/images/login/p5.jpg" />
<div class="actions-box">
<span>地图</span>
<!-- 编辑 -->
<el-button type="text" style="color: #84b2fa;" icon="el-icon-edit"></el-button>
<!-- 删除 -->
<el-button type="text" icon="el-icon-delete" style="color: #F56C6C"></el-button>
</div>
</li>
</ul>
</vue-scroll>
</div>
</div>
</div>
</div>
</div>
<div class="right2" style="width: 100%; margin-left: 0">
<div class="title whiteBlock flex">
<span>楼栋信息</span>
</div>
<div class="team_list whiteBlock flex2">
<el-button type="primary" plain icon="el-icon-plus" class="team_addBtn">新增楼栋</el-button>
<div class="flex2 list_wrap" :class="showTeamList ? 'show_teamList' : 'height_79'">
<div class="list" :class="checkedTeamId == 0 && 'checkedTeam'">
<div>全部楼栋</div>
<div style="margin:4px 0">4</div>
<i class="el-icon-arrow-down" style="font-size:17px"></i>
</div>
<div class="list">
<el-popover placement="top" min-width="80" trigger="hover">
1
<div slot="reference">楼栋1</div>
</el-popover>
<div style="margin:4px 0">1</div>
<el-popover placement="bottom" min-width="80" trigger="hover">
<div style=" margin: 0; text-align:center;">
<div style=" cursor: pointer; margin-bottom:5px">
<img src="@/assets/images/icon-edit.png" style="margin-right:5px" />
<span>编辑</span>
</div>
<div style="cursor: pointer;">
<img src="@/assets/images/icon-delete.png" style="margin-right:5px" />
<span>删除</span>
</div>
</div>
<div slot="reference">
<i class="el-icon-arrow-down" style="font-size:17px"></i>
</div>
</el-popover>
</div>
</div>
<i class="el-icon-more-outline" style="font-size: 26px;cursor: pointer;color: #999;"></i>
</div>
<div class="baseShow whiteBlock ">
<!-- 右边展示 -->
<div class="map-right">
<div class="action-box" v-if="activeImgUrl">
<div v-show="!isEditPoint" class="btn-item">
<img src="@/assets/images/deepFoundationPitManage/address.png" />
<!-- 布点 -->
布点
</div>
<div v-show="isEditPoint" class="btn-item">
<img src="@/assets/images/deepFoundationPitManage/save.png" />
<!-- 保存 -->
保存
</div>
<div class="btn-item">
<i class="el-icon-zoom-in"></i>
<!-- 放大 -->
放大
</div>
<div class="btn-item">
<i class="el-icon-zoom-out"></i>
<!-- 缩小 -->
缩小
</div>
</div>
<div ref="mapbox">
<vue-scroll style="height:780px;"> </vue-scroll>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
title: '',
activeImgUrl: '',
pointStatus: 'none',
pointTop: 0,
pointLeft: 0,
imgWidth: 0,
imgHeight: 0,
imgZoom: 1,
isEditPoint: false,
activeImgUrl: '',
checkedTeamId: 0 //id
}
},
created() {
this.imgGet()
},
mounted() {},
computed: {},
methods: {
imgGet() {
this.activeImgUrl = '@/assets/images/login/p5.jpg'
}
}
}
</script>
<style lang="less" scoped>
@import '../laborPersonCommon.less';
::v-deep .el-button--medium {
padding: 9px 10px;
}
.administration {
width: 100%;
height: 100%;
display: flex;
align-items: center;
.left2 {
width: 370px;
height: 100%;
position: relative;
.left_list {
width: 350px;
text-align: center;
height: calc(100% - 61px);
margin-top: 45px;
}
}
.right2 {
margin-left: 11px !important;
position: relative;
.baseShow {
height: calc(100% - 133px - 40px);
width: 100%;
position: absolute;
}
}
//----------
.map-right {
// flex: 1;
width: calc(98%);
border: 1px solid #e6e6e6;
padding: 14px;
height: 730px;
.action-box {
display: flex;
margin-bottom: 10px;
.btn-item {
margin-right: 20px;
display: flex;
align-items: center;
justify-content: center;
color: #5181f6;
border: 1px solid #5181f6;
border-radius: 3px;
cursor: pointer;
width: 62px;
height: 24px;
img {
margin-right: 4px;
}
i {
margin-right: 4px;
}
}
}
.img-box {
// margin: 0 auto;
// height: 100%;
// position: relative;
// top: 50%;
// transform: translateY(-50%);
transform-origin: left top;
position: relative;
.point-list {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
li {
display: inline-block;
position: absolute;
}
.point-dialog {
background: rgba(#2a2e3f, 0.9);
color: #fff;
width: 238px;
height: auto;
box-sizing: border-box;
padding: 0 16px;
padding-bottom: 18px;
position: absolute;
left: 50%;
top: -8px;
transform: translate(-50%, -100%);
font-size: 12px;
.el-icon-error {
position: absolute;
right: 12px;
top: 10px;
cursor: pointer;
}
.point-title {
// height: 40px;
line-height: 20px;
border-bottom: 1px solid rgba(254, 255, 255, 1);
margin-bottom: 13px;
font-size: 14px;
word-break: break-all;
padding: 10px 0;
}
.point-content {
font-size: 14px;
p {
line-height: 24px;
}
}
}
.point-title2 {
width: auto;
height: auto;
white-space: nowrap;
font-size: 16px;
padding: 10px 20px;
}
.right_detail {
left: 30px;
top: 0;
transform: translate(0, 0);
}
.right_title {
left: 30px;
top: -8px;
transform: translate(0, 0);
}
}
}
}
}
</style>

View File

@ -0,0 +1,441 @@
<template>
<div class="administration">
<div class="left2 whiteBlock">
<div class="left_list">
<div>
<!-- 基站地图列表 -->
<div class="dialog-content map-box">
<div class="map-left">
<vue-scroll style="800px">
<ul>
<li v-for="(item, index) in 4" :key="index">
<img src="@/assets/images/login/p5.jpg" />
<div class="actions-box">
<span>地图</span>
<!-- 编辑 -->
<el-button type="text" style="color: #84b2fa;" icon="el-icon-edit"></el-button>
<!-- 删除 -->
<el-button type="text" icon="el-icon-delete" style="color: #F56C6C"></el-button>
<!-- {{$t('message.deepFoundConfig.remove')}} -->
</div>
</li>
</ul>
</vue-scroll>
</div>
</div>
</div>
</div>
</div>
<div class="right2" style="width: 100%; margin-left: 0">
<div class="title whiteBlock flex">
<span>基站信息</span>
</div>
<div class="team_list whiteBlock flex2">
<el-button type="primary" plain icon="el-icon-plus" class="team_addBtn" @click="addBaseBtn">新增基站</el-button>
<div class="flex2 list_wrap">
<div class="list" :class="checkedTeamId == 0 && 'checkedTeam'">
<div>全部基站</div>
<div style="margin:4px 0">4</div>
<i class="el-icon-arrow-down" style="font-size:17px"></i>
</div>
<div class="list">
<el-popover placement="top" min-width="80" trigger="hover">
1
<div slot="reference">基站1</div>
</el-popover>
<div style="margin:4px 0">1</div>
<el-popover placement="bottom" min-width="80" trigger="hover">
<div style=" margin: 0; text-align:center;">
<div style=" cursor: pointer; margin-bottom:5px">
<img src="@/assets/images/icon-edit.png" style="margin-right:5px" />
<span>编辑</span>
</div>
<div style="cursor: pointer;">
<img src="@/assets/images/icon-delete.png" style="margin-right:5px" />
<span>删除</span>
</div>
</div>
<div slot="reference">
<i class="el-icon-arrow-down" style="font-size:17px"></i>
</div>
</el-popover>
</div>
</div>
<i class="el-icon-more-outline" style="font-size: 26px;cursor: pointer;color: #999;"></i>
</div>
<div class="baseShow whiteBlock ">
<!-- 右边展示 -->
<div class="map-right">
<div class="action-box" v-if="activeImgUrl">
<div v-show="!isEditPoint" class="btn-item">
<img src="@/assets/images/deepFoundationPitManage/address.png" />
<!-- 布点 -->
布点
</div>
<div v-show="isEditPoint" class="btn-item">
<img src="@/assets/images/deepFoundationPitManage/save.png" />
<!-- 保存 -->
报存
</div>
<div class="btn-item">
<i class="el-icon-zoom-in"></i>
<!-- 放大 -->
放大
</div>
<div class="btn-item">
<i class="el-icon-zoom-out"></i>
<!-- 缩小 -->
缩小
</div>
</div>
<div ref="mapbox">
<vue-scroll style="height:780px;"> </vue-scroll>
</div>
</div>
</div>
</div>
<!-- 新增 基站 弹窗 -->
<el-dialog
:modal-append-to-body="false"
:title="teamDialogTitle"
:close-on-click-modal="false"
:visible.sync="addBaseDialog"
width="740px"
>
<div class="dialog_content">
<el-form size="small" ref="baseForm" :model="baseForm" label-position="top" label-width="80px" :rules="baseFormRules">
<el-form-item label="基站名称" prop="name">
<el-input v-model="baseForm.name" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="基站编号" prop="baseStationSn">
<el-input v-model="baseForm.baseStationSn"></el-input>
</el-form-item>
<el-form-item label="设备状态" prop="deviceState">
<el-select v-model="baseForm.deviceState" style="width: 100%">
<el-option label="在线" value="在线"></el-option>
<el-option label="离线" value="离线"></el-option>
</el-select>
</el-form-item>
<el-form-item label="基站类型" prop="locationType">
<el-select v-model="baseForm.locationType" style="width: 100%">
<el-option label="外置" value="外置"></el-option>
<el-option label="内置" value="内置"></el-option>
<el-option label="无" value="无"></el-option>
</el-select>
</el-form-item>
<el-form-item label="范围设置" prop="range">
<el-input v-model="baseForm.range"></el-input>
</el-form-item>
<el-form-item label="关联基站" prop="relationStationId">
<el-select v-model="baseForm.relationStationId" style="width: 100%">
<el-option label="基站" value="基站"></el-option>
<!-- <el-option v-for="item in associatedBase " :key="item.id" :label="item.relationStationId" :value="item.id"></el-option> -->
</el-select>
</el-form-item>
<el-form-item label="关联楼栋" prop="buildingId">
<el-select v-model="baseForm.buildingId" style="width: 100%">
<el-option label="楼栋" value="楼栋"></el-option>
<!-- <el-option v-for="item in associatedBase " :key="item.id" :label="item.buildingId" :value="item.id"></el-option> -->
</el-select>
</el-form-item>
</el-form>
<div class="dialog-footer">
<el-button class="cancleBtn" @click="addBaseDialog = false" icon="el-icon-circle-close" size="medium">取消</el-button>
<el-button type="primary" icon="el-icon-circle-check" size="medium" @click="saveBatchMove">确定 </el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import {
addPersonnelLocationnApi,
deletePersonnelLocationDeleteByIdApi,
getPersonnelLocationBaseStationGetByIdApi,
editPersonnelLocationBaseStationUpdateApi,
getPersonnelLocationBaseStationListApi,
getPersonnelLocationBaseStationApi
} from '@/assets/js/api/personnelPositioning.js'
export default {
data() {
return {
title: '',
activeImgUrl: '',
pointStatus: 'none',
pointTop: 0,
pointLeft: 0,
imgWidth: 0,
imgHeight: 0,
imgZoom: 1,
isEditPoint: false,
activeImgUrl: '',
checkedTeamId: 0, //id
// --------
projectSn: '', //Sn
teamDialogTitle: '', ///title
addBaseDialog: false, //
associatedBase: [], ///
baseForm: {
name: '', //
baseStationSn: '', //
deviceState: '', //1线2线
locationType: '', // 1 2 3
range: '', // m
relationStationId: '', //id
buildingId: '', //id
projectSn: ''
},
baseFormRules: {
name: [
{
required: true,
message: '请输入基站名称',
trigger: 'change'
}
],
baseStationSn: [
{
required: true,
message: '请输入基站编号',
trigger: 'change'
}
],
deviceState: [
{
required: true,
message: '请选择设备状态',
trigger: 'change'
}
],
locationType: [
{
required: true,
message: '请选择基站类型',
trigger: 'change'
}
],
range: [
{
required: true,
message: '请输入范围',
trigger: 'change'
}
],
relationStationId: [
{
required: true,
message: '请选择关联基站',
trigger: 'change'
}
],
buildingId: [
{
required: true,
message: '请选择关联楼栋',
trigger: 'change'
}
]
}
}
},
created() {
this.projectSn = this.$store.state.projectSn
this.imgGet()
this.getPersonnelLocationBase()
},
mounted() {},
computed: {},
methods: {
//
async getPersonnelLocationBase() {
let data = await getPersonnelLocationBaseStationListApi(this.baseForm)
console.log('人员定位列表', data)
if ((res.code = 200)) {
this.associatedBase = data.result
}
},
//
addBaseBtn() {
this.teamDialogTitle = '新增基站'
this.addBaseDialog = true
this.baseForm = {
name: '', //
baseStationSn: '', //
deviceState: '', //1线2线
locationType: '', // 1 2 3
range: '', // m
relationStationId: '', //id
buildingId: '' //id
}
setTimeout(() => {
this.$refs.baseForm.clearValidate()
}, 120)
},
//
saveBatchMove() {
this.$refs.baseForm.validate(valid => {
if (valid) {
this.baseForm.projectSn = this.projectSn
// let json=JSON.parse(JSON.stringify(this.baseForm))
if ((this.teamDialogTitle = '新增基站')) {
addPersonnelLocationnApi(this.baseForm).then(res => {
if (res.code == 200) {
this.$message.success(res.message)
this.addBaseDialog = false
this.getPersonnelLocationBase()
}
})
}
}
})
},
//
imgGet() {
this.activeImgUrl = '@/assets/images/login/p5.jpg'
}
}
}
</script>
<style lang="less" scoped>
@import '../laborPersonCommon.less';
::v-deep .el-button--medium {
padding: 9px 10px;
}
.administration {
width: 100%;
height: 100%;
display: flex;
align-items: center;
.left2 {
width: 370px;
height: 100%;
position: relative;
.left_list {
width: 350px;
text-align: center;
height: calc(100% - 61px);
margin-top: 45px;
}
}
.right2 {
margin-left: 11px !important;
position: relative;
.baseShow {
height: calc(100% - 133px - 40px);
width: 100%;
position: absolute;
}
}
::v-deep .right2 .team_list .list_wrap {
margin-top: 12px;
}
//----------
.map-right {
// flex: 1;
width: calc(98%);
border: 1px solid #e6e6e6;
padding: 14px;
height: 730px;
.action-box {
display: flex;
margin-bottom: 10px;
.btn-item {
margin-right: 20px;
display: flex;
align-items: center;
justify-content: center;
color: #5181f6;
border: 1px solid #5181f6;
border-radius: 3px;
cursor: pointer;
width: 62px;
height: 24px;
img {
margin-right: 4px;
}
i {
margin-right: 4px;
}
}
}
.img-box {
// margin: 0 auto;
// height: 100%;
// position: relative;
// top: 50%;
// transform: translateY(-50%);
transform-origin: left top;
position: relative;
.point-list {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
li {
display: inline-block;
position: absolute;
}
.point-dialog {
background: rgba(#2a2e3f, 0.9);
color: #fff;
width: 238px;
height: auto;
box-sizing: border-box;
padding: 0 16px;
padding-bottom: 18px;
position: absolute;
left: 50%;
top: -8px;
transform: translate(-50%, -100%);
font-size: 12px;
.el-icon-error {
position: absolute;
right: 12px;
top: 10px;
cursor: pointer;
}
.point-title {
// height: 40px;
line-height: 20px;
border-bottom: 1px solid rgba(254, 255, 255, 1);
margin-bottom: 13px;
font-size: 14px;
word-break: break-all;
padding: 10px 0;
}
.point-content {
font-size: 14px;
p {
line-height: 24px;
}
}
}
.point-title2 {
width: auto;
height: auto;
white-space: nowrap;
font-size: 16px;
padding: 10px 20px;
}
.right_detail {
left: 30px;
top: 0;
transform: translate(0, 0);
}
.right_title {
left: 30px;
top: -8px;
transform: translate(0, 0);
}
}
}
}
}
</style>

View File

@ -0,0 +1,198 @@
.flex{
display: flex;
align-items: center;
justify-content: space-between;
}
.flex2{
display: flex;
align-items: center;
}
.flex3{
display: flex;
justify-content: space-between;
}
.flex4{
display: flex;
}
.right2{
margin-left: 11px;
width: calc(100% - 380px);
height: 100%;
box-sizing: border-box;
.title{
padding: 0 22px;
height: 41px;
line-height: 41px;
// background: #fff;
border-bottom: 1px solid #e6e6e6;
.team_number{
opacity: 0.7;
font-size: 14px;
text-align: left;
font-family: PingFangSC-Regular;
.number{
color: @--color-primary;
opacity: 1;
}
}
}
.team_list{
padding: 20px 22px;
// background: #fff;
margin-bottom: 8px;
position: relative;
height: 79px;
.team_addBtn{
display: grid;
padding: 10px 0;
width: 79px;
height: 79px;
border-radius: 3px;
/deep/ i{
font-size: 30px;
}
/deep/ span{
opacity: 0.7;
display: block;
width: 100%;
margin: 0;
}
}
.team_addBtn:hover{
/deep/ span{
color: #fff;
}
}
.list_wrap{
flex-grow: 22;
flex-wrap: wrap;
overflow: hidden;
cursor: pointer;
.list{
width: 88px;
height: 79px;
margin-left: 12px;
box-sizing: border-box;
padding: 14px 0;
margin-bottom: 12px;
font-size: 14px;
text-align: center;
border-radius: 3px;
background-color: #dce0ec;
div{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 0 5px;
}
}
.checkedTeam{
background-color: #3390FF!important;
}
}
}
.laborComponent_table_wrap{
box-sizing: border-box;
// background: #fff;
height: calc(100% - 170px);
position: relative;
padding-bottom: 60px;
.search_wrap{
padding: 25px 13px 13px 23px;
border-bottom: 2px solid #E5ECFE;
}
.values{
opacity: 0.9;
}
}
.table_wrap_bottom{
padding: 0 13px;
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 46px;
.table_wrap_btn{
margin-left: 20px;
}
}
/deep/ .el-form-item{
margin-bottom:0;
}
.show_teamList{
width: calc( 100% - 128px);
flex-grow: 22;
flex-wrap: wrap;
cursor: pointer;
float: left;
z-index: 1000;
position: absolute;
left: 110px;
top:7px;
background: #fff;
border: 1px solid #E5ECFE;
border-radius: 5px;
padding-top: 12px;
padding-right: 12px;
}
.height_79{
height: 79px;
}
}
.hint{
opacity: 0.5;
color: rgba(42, 46, 63, 1);
font-size: 12px;
text-align: left;
font-family: PingFangSC-Regular;
}
.bigImageDialog{
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,0.5);
text-align: center;
z-index: 1000000;
overflow-y: auto;
// padding-bottom: 50px;
height: 100%;
.bigImageContent{
height: 100%;
margin:0 auto; text-align:center
}
img{
// margin-top: 10%;
position: relative;
top: 10%;
max-height: 80%;
max-width: 80%;
}
}
.margin_top35{
margin-top: -35px;
}
/deep/ .identity_card .el-upload-list__item-name {
width: 100px;
}
.upload_btn_wrap{
position: relative;
width: 100%;
.High_btn{
position:absolute;
right: 70px;
top: 2px;
height: 28px;
}
}
.personItemBottom{
margin-top: 10px;
}

View File

@ -0,0 +1,15 @@
<template>
<div>
人员定位
</div>
</template>
<script>
export default {
}
</script>
<style>
</style>

View File

@ -0,0 +1,90 @@
<template>
<div class="fullHeight">
<div class="content_title">
<el-menu
:default-active="String(showModule)"
active-text-color="#5181F6"
class="el-menu-demo whiteBlock"
mode="horizontal"
style="width: 329px"
>
<!-- <el-menu-item index="1" style="height: 41px; line-height: 41px" @click="switchTab(1)">地图</el-menu-item> -->
<el-menu-item index="2" style="height: 41px; line-height: 41px" @click="switchTab(2)">
基站
</el-menu-item>
<el-menu-item index="3" style="height: 41px; line-height: 41px" @click="switchTab(3)">
楼栋
</el-menu-item>
</el-menu>
</div>
<div class="content_right"></div>
<!-- 基站 -->
<pointConfiguration v-if="showModule == 3" />
<!-- 楼栋 -->
<personnelPositioning v-if="showModule == 2" />
</div>
</template>
<script>
import pointConfiguration from '@/views/projectFront/personnelPosition/ConfigChildrenIndex/configuration'
import personnelPositioning from '@/views/projectFront/personnelPosition/ConfigChildrenIndex/positoningIndex'
export default {
components: {
// Labor,
pointConfiguration,
personnelPositioning
},
data() {
return {
showModule: 2
}
},
created() {
//
if (localStorage.getItem('showPersonModule')) {
this.switchTab(Number(localStorage.getItem('showPersonModule')))
localStorage.removeItem('showPersonModule')
}
},
methods: {
switchTab(type) {
if (type == this.showModule) return
if (type == 1) {
window._paq.push(['trackEvent', '点击', '劳务人员', '切换为劳务人员'])
} else if (type == 2) {
window._paq.push(['trackEvent', '点击', '管理人员', '切换为管理人员'])
} else if (type == 3) {
window._paq.push(['trackEvent', '点击', '临时人员', '切换为临时人员'])
}
this.showModule = type
}
}
}
</script>
<style lang="less" scoped>
.searchBox {
justify-content: space-between;
}
.content_title {
z-index: 100;
position: absolute;
top: 20;
left: 20;
}
.labor_module {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
/deep/ .el-dialog__title,
.pageTitle {
font-weight: 700 !important;
}
.el-menu-item {
width: 49.333%;
text-align: center;
padding: 0 16px !important;
}
</style>