| | |
| | | <div class="chart-tit"> |
| | | <span class="tit">作业警报记录</span> |
| | | <div class="filter-part"> |
| | | <el-switch |
| | | v-model="chartSearch4.type" |
| | | inline-prompt |
| | | style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66" |
| | | active-text="作业人" |
| | | inactive-text="监护人" |
| | | /> |
| | | <el-select :teleported="false" v-model="chartSearch4.period" size="small"> |
| | | <el-option label="近7天" value="week"/> |
| | | <el-option label="近30天" value="month"/> |
| | | <el-option label="近90天" value="season"/> |
| | | <el-option label="近1年" value="year"/> |
| | | <!-- <el-switch--> |
| | | <!-- v-model="chartSearch4.type"--> |
| | | <!-- inline-prompt--> |
| | | <!-- style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"--> |
| | | <!-- active-text="作业人"--> |
| | | <!-- inactive-text="监护人"--> |
| | | <!-- />--> |
| | | <el-select :teleported="false" v-model="chartSearch4.days" size="small" @change="(value)=>changeTime4(value)"> |
| | | <el-option label="近7天" :value="7"/> |
| | | <el-option label="近30天" :value="30"/> |
| | | <el-option label="近90天" :value="90"/> |
| | | <el-option label="近1年" :value="365"/> |
| | | </el-select> |
| | | <el-select :teleported="false" v-model="chartSearch4.workType" size="small"> |
| | | <el-select :teleported="false" v-model="chartSearch4.workType" size="small" @change="changeType4()"> |
| | | <el-option |
| | | v-for="item in workType1" |
| | | :key="item.id" |
| | |
| | | </div> |
| | | <div class="chart"> |
| | | <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }"> |
| | | <el-table-column property="name" label="姓名" align="center"/> |
| | | <el-table-column property="dep" label="所属部门" align="center"/> |
| | | <el-table-column property="warning" label="异常报警次数" align="center"/> |
| | | <el-table-column property="role" label="角色" align="center"/> |
| | | <el-table-column property="isCard" label="是否持证" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.isCard == 1?'是':'否'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column property="operatorUname" label="姓名" align="center"/> |
| | | <el-table-column property="deptName" label="所属部门" align="center"/> |
| | | <el-table-column property="warningCount" label="异常报警次数" align="center"/> |
| | | <!-- <el-table-column property="role" label="角色" align="center"/>--> |
| | | <!-- <el-table-column property="isCard" label="是否持证" align="center">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <span>{{scope.row.isCard == 1?'是':'否'}}</span>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button> |
| | | <!-- <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>--> |
| | | </div> |
| | | <!-- <div class="chart" :id="slfx"></div>--> |
| | | </div> |
| | |
| | | <div class="homeCard"> |
| | | <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> |
| | | <el-row> |
| | | <el-col :span="5" style="display:flex;align-items: center"> |
| | | <el-col :span="4" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap">作业类型:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-select :teleported="false" v-model="searchParams.workType" size="small"> |
| | |
| | | </el-select> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="5" style="display:flex;align-items: center"> |
| | | <el-col :span="4" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap">作业状态:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-select :teleported="false" v-model="searchParams.workAllStatus" size="small"> |
| | |
| | | </el-select> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="5" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap">作业部门:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-cascader :teleported="false" size="small" v-model="searchParams.workDepId" :options="departmentList" :props="casProps" :show-all-levels="false"/> |
| | | </div> |
| | | </el-col> |
| | | <!-- <el-col :span="4" style="display:flex;align-items: center">--> |
| | | <!-- <span style="white-space: nowrap">作业部门:</span>--> |
| | | <!-- <div class="grid-content topInfo">--> |
| | | <!-- <el-cascader :teleported="false" size="small" v-model="searchParams.workDepId" :options="departmentList" :props="casProps" :show-all-levels="false"/>--> |
| | | <!-- </div>--> |
| | | <!-- </el-col>--> |
| | | <el-col :span="6" style="display:flex;align-items: center;"> |
| | | <span style="white-space: nowrap;margin-left: 20px">申请时间:</span> |
| | | <div class="grid-content topInfo"> |
| | |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" |
| | | /> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="4" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap;margin-left: 20px">作业票编号:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-input |
| | | v-model="searchParams.workPermitNo" |
| | | placeholder="请输入作业票编号" |
| | | size="small" |
| | | /> |
| | | </div> |
| | | </el-col> |
| | |
| | | <!-- </el-row>--> |
| | | <el-table ref="multipleTableRef" stripe border :data="workData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }"> |
| | | <el-table-column property="workPermitNo" label="作业证编号" align="center"/> |
| | | <el-table-column property="workDepName" label="作业单位" align="center"/> |
| | | <el-table-column label="作业单位" align="center"> |
| | | <template #default="scope"> |
| | | <span v-if="scope.row.workDepList && scope.row.workDepList.length>0">{{scope.row.workDepList.map(i=>i.workDepName).join(',')}}</span> |
| | | <span v-else>{{scope.row.workDepName }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column property="applyUname" label="申请人" align="center"/> |
| | | <el-table-column property="applyDepName" label="申请单位" align="center"/> |
| | | <el-table-column property="applyTime" label="申请时间" align="center"/> |
| | |
| | | }, |
| | | chartSearch2: { |
| | | depId: 1, |
| | | startTime: '', |
| | | // startTime: '', |
| | | type: null |
| | | }, |
| | | chartSearch3: { |
| | | depId: 1 |
| | | }, |
| | | chartSearch4: { |
| | | searchDep: null, |
| | | startTime: '', |
| | | days: 30 |
| | | days: 30, |
| | | workType: 1 |
| | | }, |
| | | searchDep2: null, |
| | | searchDep: null, |
| | |
| | | ], |
| | | pieData: [], |
| | | squareData: [], |
| | | warningData: [ |
| | | { |
| | | name: '黄公子', |
| | | dep: '有机事业部', |
| | | warning: 69, |
| | | role: '作业人', |
| | | isCard: 1 |
| | | }, |
| | | { |
| | | name: '李飞飞', |
| | | dep: '有机事业部', |
| | | warning: 51, |
| | | role: '监护人', |
| | | isCard: 0 |
| | | }, |
| | | { |
| | | name: '黄公子', |
| | | dep: '有机事业部', |
| | | warning: 69, |
| | | role: '作业人', |
| | | isCard: 1 |
| | | } |
| | | ], |
| | | warningData: [], |
| | | reviewForm: { |
| | | advice: '' |
| | | }, |
| | |
| | | getTypePie() |
| | | getWorkDep() |
| | | getDepMonth() |
| | | initZyfb() |
| | | initSlfx() |
| | | initZyqs() |
| | | getWarningList() |
| | | }); |
| | | const initTime =()=>{ |
| | | state.chartSearch1.startTime = getPeriod(30) |
| | | state.chartSearch2.startTime = getPeriod(30) |
| | | state.chartSearch4.startTime = getPeriod(30) |
| | | state.endTime = formatDate(new Date()) |
| | | } |
| | | const getPeriod =(num)=> { |
| | | const currentDate = new Date(); |
| | | const startTime = new Date(); |
| | | startTime.setDate(currentDate.getDate() - num); |
| | | startTime.setDate(currentDate.getDate() - num - 1); |
| | | return formatDate(startTime) |
| | | } |
| | | const formatDate =(date)=> { |
| | | const year = date.getFullYear().toString(); |
| | | const month = ('0' + (date.getMonth() + 1)).slice(-2); |
| | | const day = ('0' + date.getDate()).slice(-2); |
| | | return `${year}-${month}-${day} 00:00:00`; |
| | | return `${year}-${month}-${day} 23:59:59`; |
| | | } |
| | | const changeTime1=(value:number)=>{ |
| | | state.chartSearch1.startTime = getPeriod(value) |
| | | console.log(state.chartSearch1.startTime,state.endTime,'结束段') |
| | | getTypePie() |
| | | } |
| | | const changeTime4=(value:number)=>{ |
| | | state.chartSearch4.startTime = getPeriod(value) |
| | | console.log(state.chartSearch4.startTime,state.endTime,'结束段') |
| | | getWarningList() |
| | | } |
| | | const changeDep1=()=>{ |
| | | getTypePie() |
| | |
| | | } |
| | | const changeType2=()=>{ |
| | | getWorkDep() |
| | | } |
| | | const changeType4=()=>{ |
| | | getWarningList() |
| | | } |
| | | const changeDep3=()=>{ |
| | | getDepMonth() |
| | |
| | | }else{ |
| | | state.themeColor = '#333' |
| | | } |
| | | initZyfb() |
| | | initSlfx() |
| | | initZyqs() |
| | | initTime() |
| | | getMydepList() |
| | | getAllDepartment(); |
| | | getTypePie() |
| | | getWorkDep() |
| | | getDepMonth() |
| | | } |
| | | const getTypePie = async ()=>{ |
| | | const data = { |
| | |
| | | if (res.data.code === '200') { |
| | | // console.log('饼图数据>>>', res.data.data) |
| | | state.pieData = JSON.parse(JSON.stringify(res.data.data)) |
| | | // initZyfb() |
| | | initZyfb() |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | } |
| | | const getWorkDep = async ()=>{ |
| | | const data = { |
| | | startTime: state.chartSearch2.startTime, |
| | | endTime: state.endTime, |
| | | // startTime: state.chartSearch2.startTime, |
| | | // endTime: state.endTime, |
| | | depId:state.chartSearch2.depId, |
| | | type: state.chartSearch2.type |
| | | } |
| | | let res = await specialIndexApi().analyseAllWork(data); |
| | | if (res.data.code === '200') { |
| | | // console.log('条形图数据>>>', res.data.data) |
| | | state.squareData = JSON.parse(JSON.stringify(res.data.data)) |
| | | // initSlfx() |
| | | let names = state.squareData.map(i=>i.name) |
| | | let vals = state.squareData.map(i=>i.value) |
| | | initSlfx(names,vals) |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | const getDepMonth = async ()=>{ |
| | | let res = await specialIndexApi().analyseDepMonth(state.chartSearch3.depId); |
| | | if (res.data.code === '200') { |
| | | // console.log('折线图数据>>>', res.data.data) |
| | | state.squareData = JSON.parse(JSON.stringify(res.data.data)) |
| | | // initSlfx() |
| | | let names = state.squareData.map(i=>i.name) |
| | | let vals = state.squareData.map(i=>i.value) |
| | | initZyqs(names,vals) |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | if (res.data.code === '200') { |
| | | state.workData = JSON.parse(JSON.stringify(res.data.data)) |
| | | state.totalSize = res.data.total |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | } |
| | | const getWarningList = async()=>{ |
| | | const data = { |
| | | startTime: state.chartSearch4.startTime, |
| | | endTime: state.endTime, |
| | | workType:state.chartSearch4.workType |
| | | } |
| | | let res = await specialIndexApi().getWorkWarning(data) |
| | | if (res.data.code === '200') { |
| | | state.warningData = JSON.parse(JSON.stringify(res.data.data)) |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)' |
| | | }, |
| | | }, |
| | | data: [ |
| | | { value: 0, name: '动火作业' }, |
| | | { value: 0, name: '受限空间作业' }, |
| | | { value: 0, name: '吊装作业' }, |
| | | { value: 0, name: '动土作业' }, |
| | | { value: 0, name: '断路作业' }, |
| | | { value: 0, name: '高处作业' }, |
| | | { value: 0, name: '临时用电作业' }, |
| | | { value: 0, name: '盲板抽堵作业' } |
| | | ] |
| | | data: state.pieData |
| | | } |
| | | ] |
| | | } |
| | |
| | | myChart.resize(); |
| | | }); |
| | | } |
| | | const initSlfx =()=>{ |
| | | const initSlfx =(names:Array<string>,vals:Array<any>)=>{ |
| | | let dom = document.getElementById(slfx.value); |
| | | let myChart = echarts.init(dom); |
| | | let option: EChartsOption; |
| | |
| | | xAxis: [ |
| | | { |
| | | type: 'category', |
| | | data: ['部门一','部门二','部门三'], |
| | | data: names, |
| | | axisTick: { |
| | | alignWithLabel: true |
| | | }, |
| | |
| | | name: 'Direct', |
| | | type: 'bar', |
| | | barWidth: '60%', |
| | | data: [0,0,0], |
| | | data: vals, |
| | | } |
| | | ] |
| | | } |
| | |
| | | myChart.resize(); |
| | | }); |
| | | } |
| | | const initZyqs =()=>{ |
| | | const initZyqs =(names:Array<string>,vals:Array<any>)=>{ |
| | | let dom = document.getElementById(zyqs.value); |
| | | let myChart = echarts.init(dom); |
| | | let option: EChartsOption; |
| | | option = { |
| | | xAxis: { |
| | | type: 'category', |
| | | data: ['四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', '一月', '二月', '三月'], |
| | | data: names, |
| | | axisLabel: { |
| | | color: state.themeColor |
| | | } |
| | |
| | | }, |
| | | series: [ |
| | | { |
| | | data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
| | | data: vals, |
| | | type: 'line', |
| | | label:{ |
| | | show: true |
| | |
| | | workAllStatus: null |
| | | } |
| | | state.searchDate = [] |
| | | state.pageIndex = 1 |
| | | getMydepList() |
| | | }; |
| | | |
| | |
| | | slfx, |
| | | zyqs, |
| | | changeTime1, |
| | | changeTime4, |
| | | changeDep1, |
| | | changeDep2, |
| | | changeType2, |
| | | changeType4, |
| | | changeDep3, |
| | | toFullscreen, |
| | | // handleReview, |
| | |
| | | .chart{ |
| | | width: 100%; |
| | | height: 85%; |
| | | overflow-y: scroll; |
| | | .el-table{ |
| | | height: 90% !important; |
| | | :deep(.el-table__inner-wrapper){ |
| | | height: 100% !important; |
| | | .el-table__header-wrapper { |
| | | height: 20% !important; |
| | | .el-table__header{ |
| | | height: 100% !important; |
| | | th{ |
| | | height: 100% !important; |
| | | padding: 0 0 !important; |
| | | .cell{ |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .el-table__body-wrapper { |
| | | height: 80% !important; |
| | | .el-scrollbar__view{ |
| | | height: 100% !important; |
| | | .el-table__body{ |
| | | height: 100% !important; |
| | | tbody{ |
| | | height: 100% !important; |
| | | .el-table__row{ |
| | | height: 25% !important; |
| | | td{ |
| | | height: 25% !important; |
| | | padding: 0 0 !important; |
| | | .left-info{ |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .cell{ |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | .el-button{ |
| | | padding: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //:deep(.el-table__inner-wrapper){ |
| | | // height: 100% !important; |
| | | // .el-table__header-wrapper { |
| | | // height: 20% !important; |
| | | // .el-table__header{ |
| | | // height: 100% !important; |
| | | // th{ |
| | | // height: 100% !important; |
| | | // padding: 0 0 !important; |
| | | // .cell{ |
| | | // white-space: nowrap; |
| | | // overflow: hidden; |
| | | // text-overflow: ellipsis; |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // .el-table__body-wrapper { |
| | | // height: 80% !important; |
| | | // .el-scrollbar__view{ |
| | | // height: 100% !important; |
| | | // .el-table__body{ |
| | | // height: 100% !important; |
| | | // tbody{ |
| | | // height: 100% !important; |
| | | // .el-table__row{ |
| | | // height: 25% !important; |
| | | // td{ |
| | | // height: 25% !important; |
| | | // padding: 0 0 !important; |
| | | // .left-info{ |
| | | // display: flex; |
| | | // align-items: center; |
| | | // } |
| | | // .cell{ |
| | | // white-space: nowrap; |
| | | // overflow: hidden; |
| | | // text-overflow: ellipsis; |
| | | // } |
| | | // .el-button{ |
| | | // padding: 0 !important; |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | //} |
| | | } |
| | | } |
| | | .el-radio-group{ |