From 20b0ce2db27b64a60de60aee05dedd448099e330 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Mon, 08 Jul 2024 10:12:16 +0800
Subject: [PATCH] xiugai
---
src/views/specialWorkSystem/specialIndex/index.vue | 751 ++++++++++++++++++++++++++++++---------------------------
1 files changed, 398 insertions(+), 353 deletions(-)
diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index b7dd2da..fb47fb3 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -64,22 +64,22 @@
<div class="chart-item">
<dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
<div class="chart-tit">
- <span class="tit">异常警报关联人</span>
+ <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"
@@ -91,17 +91,17 @@
</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>
@@ -110,7 +110,7 @@
<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">
@@ -123,10 +123,10 @@
</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.workStatus" size="small">
+ <el-select :teleported="false" v-model="searchParams.workAllStatus" size="small">
<el-option
v-for="item in workStatusList"
:key="item.value"
@@ -136,12 +136,12 @@
</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">
@@ -158,60 +158,105 @@
/>
</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-button type="primary" style="margin-left: 20px" @click="searchRecord" size="small">查询</el-button>
<el-button plain @click="clearSearch" size="small">重置</el-button>
</el-row>
<div class="main-card">
- <el-row class="cardTop" style="justify-content: space-between">
- <el-col :span="2" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="toApply()">新作业申请</el-button>
- </el-col>
- <el-col :span="22" style="display: flex;justify-content: end;align-items: center">
- <div class="top-info">
- <el-icon :size="18" color="#F3001E" style="margin-right: 4px"><BellFilled /></el-icon>
- 作业编号
- <div v-if="unchecked != 0">
- <el-tooltip
- class="box-item"
- effect="light"
- content="查看预警详情"
- placement="bottom-start"
- ><span>123456</span></el-tooltip>
- </div>
- 可燃气体浓度超过18%
- ,请及时处理!
- </div>
- <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
- </el-col>
- </el-row>
+<!-- <el-row class="cardTop" style="justify-content: space-between">-->
+<!-- <el-col :span="2" class="mainCardBtn">-->
+<!-- <el-button type="primary" :icon="Plus" size="default" @click="toApply()">新作业申请</el-button>-->
+<!-- </el-col>-->
+<!-- <el-col :span="22" style="display: flex;justify-content: end;align-items: center">-->
+<!-- <div class="top-info">-->
+<!-- <el-icon :size="18" color="#F3001E" style="margin-right: 4px"><BellFilled /></el-icon>-->
+<!-- 作业编号-->
+<!-- <div v-if="unchecked != 0">-->
+<!-- <el-tooltip-->
+<!-- class="box-item"-->
+<!-- effect="light"-->
+<!-- content="查看预警详情"-->
+<!-- placement="bottom-start"-->
+<!-- ><span>123456</span></el-tooltip>-->
+<!-- </div>-->
+<!-- 可燃气体浓度超过18%-->
+<!-- ,请及时处理!-->
+<!-- </div>-->
+<!-- <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />-->
+<!-- </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="depName" label="部门" align="center"/>
- <el-table-column property="applyer" label="申请人" align="center"/>
- <el-table-column property="finishUname" 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"/>
+ <el-table-column property="startUname" label="开始人" align="center">
+ <template #default="scope">
+ <span>{{scope.row.startUname?scope.row.startUname:'--'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column property="finishUname" label="结束人" align="center">
+ <template #default="scope">
+ <span>{{scope.row.finishUname?scope.row.finishUname:'--'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column property="workStartTime" label="作业开始时间" align="center">
+ <template #default="scope">
+ <span>{{scope.row.workStartTime?scope.row.workStartTime:'--'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column property="workFinishTime" label="作业结束时间" align="center">
+ <template #default="scope">
+ <span>{{scope.row.workFinishTime?scope.row.workFinishTime:'--'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column property="acceptUname" label="验收人" align="center">
+ <template #default="scope">
+ <span>{{scope.row.acceptUname?scope.row.acceptUname:'--'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column property="workAcceptContent" label="验收内容" align="center">
+ <template #default="scope">
+ <span>{{scope.row.workAcceptContent?scope.row.workAcceptContent:'--'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column property="workAcceptTime" label="验收时间" align="center">
+ <template #default="scope">
+ <span>{{scope.row.workAcceptTime?scope.row.workAcceptTime:'--'}}</span>
+ </template>
+ </el-table-column>
<el-table-column property="workTypeDesc" label="作业类型" align="center"/>
<el-table-column property="workLevelDesc" label="作业等级" align="center"/>
- <el-table-column property="gmtCreate" label="申请时间" align="center"/>
- <el-table-column property="workStartTime" label="作业开始时间" align="center"/>
- <el-table-column property="workFinishTime" label="作业结束时间" align="center"/>
- <el-table-column property="workStatusDesc" label="作业状态" align="center"/>
- <el-table-column property="reason" label="中止原因" align="center"/>
- <el-table-column label="安全预警" align="center">
+ <el-table-column property="abortReason" label="中止原因" align="center">
<template #default="scope">
- <el-tag>--</el-tag>
+ <span>{{scope.row.abortReason?scope.row.abortReason:'--'}}</span>
</template>
</el-table-column>
- <el-table-column property="message" label="报警信息" align="center">
- <template #default="scope">
- <el-button type="text" size="small" v-if="scope.row.message == 1">查看</el-button>
- <span v-else>无</span>
- </template>
- </el-table-column>
+ <el-table-column property="workAllStatusDesc" label="作业状态" align="center"/>
<el-table-column fixed="right" label="操作" align="center" width="250">
<template #default="scope">
- <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看作业票</el-button>
- <el-button link type="primary" size="small" :icon="FolderChecked" @click="handleReview(scope.row)">验收</el-button>
- <el-button link type="primary" size="small" :icon="VideoPlay" @click="openVideo(scope.row)">查看实时监控</el-button>
+ <el-button link
+ v-if="scope.row.workAllStatus == -1|| scope.row.workAllStatus == 1 || scope.row.workAllStatus == 3 || scope.row.workAllStatus == 7"
+ type="primary" size="small" :icon="VideoPlay" @click="openVideo(scope.row)">查看监控视频</el-button>
+ <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row.workApplyId)">查看记录</el-button>
+ <el-button link type="primary" size="small" :icon="View" @click="viewTicket(scope.row)">查看作业票</el-button>
+ <el-button link type="primary" size="small" :icon="Download" @click="downLoadTicket(scope.row)">导出作业票</el-button>
+<!-- <el-button link type="primary" size="small" :icon="FolderChecked" @click="handleReview(scope.row)">验收</el-button>-->
</template>
</el-table-column>
</el-table>
@@ -222,14 +267,15 @@
</div>
</div>
<el-dialog v-model="dialogDetails" title="作业申请详情" center>
- <fire v-if="dialogType == 1" :details = details></fire>
- <space v-else-if="dialogType == 2" :details = details></space>
- <hoist v-else-if="dialogType == 3" :details = details></hoist>
- <ground v-else-if="dialogType == 4" :details = details></ground>
- <broken v-else-if="dialogType == 5" :details = details></broken>
- <height v-else-if="dialogType == 6" :details = details></height>
- <power v-else-if="dialogType == 7" :details = details></power>
- <plate v-else :details = details></plate>
+<!-- <fire v-if="dialogType == 1" :details = details></fire>-->
+<!-- <space v-else-if="dialogType == 2" :details = details></space>-->
+<!-- <hoist v-else-if="dialogType == 3" :details = details></hoist>-->
+<!-- <ground v-else-if="dialogType == 4" :details = details></ground>-->
+<!-- <broken v-else-if="dialogType == 5" :details = details></broken>-->
+<!-- <height v-else-if="dialogType == 6" :details = details></height>-->
+<!-- <power v-else-if="dialogType == 7" :details = details></power>-->
+<!-- <plate v-else :details = details></plate>-->
+<!-- <detail-log :type=dialogType :statusList=statusList :details = details></detail-log>-->
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="dialogDetails = false"
@@ -238,24 +284,25 @@
</span>
</template>
</el-dialog>
- <el-dialog v-model="dialogReview" title="填报验收意见" center>
- <el-form ref="reviewFormRef" :model="reviewForm" :rules="reviewRules" label-width="120px">
- <el-form-item label="填报验收意见:" prop="advice">
- <el-input
- v-model="reviewForm.advice"
- :autosize="{ minRows: 4, maxRows: 10 }"
- type="textarea"
- placeholder="请填写验收意见"
- />
- </el-form-item>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button type="primary" @click="submitReview(reviewFormRef)">提交验收</el-button>
- </span>
- </template>
- </el-dialog>
+<!-- <el-dialog v-model="dialogReview" title="填报验收意见" center>-->
+<!-- <el-form ref="reviewFormRef" :model="reviewForm" :rules="reviewRules" label-width="120px">-->
+<!-- <el-form-item label="填报验收意见:" prop="advice">-->
+<!-- <el-input-->
+<!-- v-model="reviewForm.advice"-->
+<!-- :autosize="{ minRows: 4, maxRows: 10 }"-->
+<!-- type="textarea"-->
+<!-- placeholder="请填写验收意见"-->
+<!-- />-->
+<!-- </el-form-item>-->
+<!-- </el-form>-->
+<!-- <template #footer>-->
+<!-- <span class="dialog-footer">-->
+<!-- <el-button type="primary" @click="submitReview(reviewFormRef)">提交验收</el-button>-->
+<!-- </span>-->
+<!-- </template>-->
+<!-- </el-dialog>-->
<video-detail ref="videoRef"></video-detail>
+ <Work-record ref="recordRef"></Work-record>
</div>
</template>
@@ -269,16 +316,17 @@
import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download, FolderChecked, VideoPlay } from '@element-plus/icons-vue';
import { ElTable, ElMessage } from 'element-plus';
import { specialIndexApi } from '/@/api/specialWorkSystem/specialIndex';
-import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-import type { TabsPaneContext } from 'element-plus';
import type { FormInstance, FormRules } from 'element-plus'
import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+import { workApplyApi } from '/@/api/specialWorkSystem/workApply'
import Cookies from 'js-cookie';
import axios from 'axios';
import * as echarts from "echarts";
import screenfull from "screenfull";
import VideoDetail from "/@/views/specialWorkSystem/specialIndex/components/videoDetail.vue";
+import WorkRecord from "/@/views/specialWorkSystem/specialIndex/components/workRecord.vue";
import { BorderBox10 as DvBorderBox10 } from '@kjgl77/datav-vue3'
+import {productionDeviceApi} from "/@/api/doublePreventSystem/productionDevice";
// 定义接口来定义对象的类型
interface stateType {
@@ -314,6 +362,8 @@
isFull:boolean;
themeColor:string;
endTime:string
+ pieData: Array<status>
+ squareData: Array<status>
}
interface type {
id: number | null;
@@ -336,24 +386,26 @@
name: 'specialIndex',
components: {
VideoDetail,
- fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')),
- space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')),
- hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')),
- ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')),
- broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')),
- height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')),
- power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')),
- plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue'))
+ WorkRecord,
+ // fire: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/fireLog.vue')),
+ // space: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceLog.vue')),
+ // hoist: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistLog.vue')),
+ // ground: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/groundLog.vue')),
+ // broken: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenLog.vue')),
+ // height: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/heightLog.vue')),
+ // power: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/powerLog.vue')),
+ // plate: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/plateLog.vue'))
},
setup() {
- const userInfo = useUserInfo();
- const { userInfos } = storeToRefs(userInfo);
- const router = useRouter();
+ const userInfo = useUserInfo()
+ const { userInfos } = storeToRefs(userInfo)
+ const router = useRouter()
const reviewFormRef = ref<FormInstance>()
const zyfb = ref("eChartZyfb" + Date.now() + Math.random())
const slfx = ref("eChartSlfx" + Date.now() + Math.random())
const zyqs = ref("eChartZyqs" + Date.now() + Math.random())
- const videoRef = ref();
+ const videoRef = ref()
+ const recordRef = ref()
const state = reactive<stateType>({
pageIndex: 1,
pageSize: 10,
@@ -365,9 +417,7 @@
workPermitNo: '',
startTime: '',
endTime: '',
- workStatus: null,
- acceptStatus: null,
- workAnalysisStatus: null
+ workAllStatus: null
},
dialogReview: false,
departmentList: [],
@@ -381,97 +431,21 @@
},
chartSearch2: {
depId: 1,
- startTime: '',
+ // startTime: '',
type: null
},
chartSearch3: {
depId: 1
},
chartSearch4: {
- searchDep: null,
startTime: '',
- days: 30
+ days: 30,
+ workType: 1
},
searchDep2: null,
searchDep: null,
searchDate: [],
- workData: [
- // {
- // num: '111',
- // dep: '部门1',
- // applyer: '张凤',
- // worker: '李羽飞',
- // type: '动火作业',
- // level: '一级',
- // applyTime: '2023-03-08',
- // startTime: '2023-03-08',
- // endTime: '2023-03-08',
- // status: 0,
- // reason: '分析超时',
- // warning: 0,
- // message: 1
- // },
- // {
- // num: '222',
- // dep: '部门2',
- // applyer: '张凤',
- // worker: '李羽飞',
- // type: '动土作业',
- // level: '一级',
- // applyTime: '2023-03-08',
- // startTime: '2023-03-08',
- // endTime: '2023-03-08',
- // status: 1,
- // reason: '分析超时',
- // warning: 1,
- // message: 0
- // },
- // {
- // num: '333',
- // dep: '部门3',
- // applyer: '张凤',
- // worker: '李羽飞',
- // type: '动火作业',
- // level: '一级',
- // applyTime: '2023-03-08',
- // startTime: '2023-03-08',
- // endTime: '2023-03-08',
- // status: 2,
- // reason: '分析超时',
- // warning: 2,
- // message: 0
- // },
- // {
- // num: '222',
- // dep: '部门2',
- // applyer: '张凤',
- // worker: '李羽飞',
- // type: '动土作业',
- // level: '一级',
- // applyTime: '2023-03-08',
- // startTime: '2023-03-08',
- // endTime: '2023-03-08',
- // status: 1,
- // reason: '分析超时',
- // warning: 1,
- // message: 0
- // },
- // {
- // num: '333',
- // dep: '部门3',
- // applyer: '张凤',
- // worker: '李羽飞',
- // type: '动火作业',
- // level: '一级',
- // applyTime: '2023-03-08',
- // startTime: '2023-03-08',
- // endTime: '2023-03-08',
- // status: 2,
- // reason: '分析超时',
- // warning: 2,
- // message: 0
- // }
- ],
+ workData: [],
isFull: false,
themeColor: '#333',
workTimeList: [],
@@ -524,29 +498,9 @@
value: 2
}
],
- warningData: [
- {
- name: '黄公子',
- dep: '有机事业部',
- warning: 69,
- role: '作业人',
- isCard: 1
- },
- {
- name: '李飞飞',
- dep: '有机事业部',
- warning: 51,
- role: '监护人',
- isCard: 0
- },
- {
- name: '黄公子',
- dep: '有机事业部',
- warning: 69,
- role: '作业人',
- isCard: 1
- }
- ],
+ pieData: [],
+ squareData: [],
+ warningData: [],
reviewForm: {
advice: ''
},
@@ -562,31 +516,34 @@
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()
@@ -597,6 +554,9 @@
}
const changeType2=()=>{
getWorkDep()
+ }
+ const changeType4=()=>{
+ getWarningList()
}
const changeDep3=()=>{
getDepMonth()
@@ -614,10 +574,12 @@
}else{
state.themeColor = '#333'
}
- initZyfb()
- initSlfx()
- initZyqs()
+ initTime()
getMydepList()
+ getAllDepartment();
+ getTypePie()
+ getWorkDep()
+ getDepMonth()
}
const getTypePie = async ()=>{
const data = {
@@ -627,7 +589,9 @@
}
let res = await specialIndexApi().analyseType(data);
if (res.data.code === '200') {
- console.log('饼图数据>>>', res.data.data)
+ // console.log('饼图数据>>>', res.data.data)
+ state.pieData = JSON.parse(JSON.stringify(res.data.data))
+ initZyfb()
} else {
ElMessage({
type: 'warning',
@@ -637,14 +601,17 @@
}
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))
+ let names = state.squareData.map(i=>i.name)
+ let vals = state.squareData.map(i=>i.value)
+ initSlfx(names,vals)
} else {
ElMessage({
type: 'warning',
@@ -655,7 +622,10 @@
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))
+ let names = state.squareData.map(i=>i.name)
+ let vals = state.squareData.map(i=>i.value)
+ initZyqs(names,vals)
} else {
ElMessage({
type: 'warning',
@@ -677,6 +647,22 @@
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',
@@ -708,7 +694,7 @@
},
series: [
{
- name: 'Access From',
+ name: '',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
@@ -739,16 +725,7 @@
shadowColor: 'rgba(0, 0, 0, 0.5)'
},
},
- data: [
- { value: 1048, name: '动火作业' },
- { value: 735, name: '受限空间作业' },
- { value: 580, name: '吊装作业' },
- { value: 484, name: '动土作业' },
- { value: 735, name: '断路作业' },
- { value: 580, name: '高处作业' },
- { value: 484, name: '临时用电作业' },
- { value: 300, name: '盲板抽堵作业' }
- ]
+ data: state.pieData
}
]
}
@@ -758,7 +735,7 @@
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;
@@ -778,7 +755,7 @@
xAxis: [
{
type: 'category',
- data: ['事业部1', '事业部2', '事业部3', '事业部4', '事业部5', '事业部6', '事业部7'],
+ data: names,
axisTick: {
alignWithLabel: true
},
@@ -797,7 +774,7 @@
name: 'Direct',
type: 'bar',
barWidth: '60%',
- data: [10, 52, 200, 334, 390, 330, 220]
+ data: vals,
}
]
}
@@ -807,14 +784,14 @@
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
}
@@ -838,7 +815,7 @@
},
series: [
{
- data: [150, 230, 224, 218, 135, 147, 230, 224, 218, 135, 147, 260],
+ data: vals,
type: 'line',
label:{
show: true
@@ -915,11 +892,10 @@
workPermitNo: '',
startTime: '',
endTime: '',
- workStatus: null,
- acceptStatus: null,
- workAnalysisStatus: null
+ workAllStatus: null
}
state.searchDate = []
+ state.pageIndex = 1
getMydepList()
};
@@ -933,61 +909,124 @@
};
// 查看记录
- const viewRecord = (row: any) => {
- state.dialogType = row.workType
- state.details = JSON.parse(JSON.stringify(row));
- if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){
- state.details.workDetail.otherSpecialWork=[]
- }
- else {
- const a = state.details.workDetail.otherSpecialWork
- state.details.workDetail.otherSpecialWork = a.split(',').map((item) => {
- return state.workTypeList.find((i: { id: number }) => i.id === Number(item))?.name;
- });
- }
- if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){
- state.details.workDetail.involvedDepIds=[]
- }
- else {
- const a = state.details.workDetail.involvedDepIds
- state.details.workDetail.involvedDepIds = a.split(',').map((item) => {
- return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName;
- });
- }
- if(state.details.workDetail.csDepId){
- state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName;
- }
- if(state.details.workDetail.operationDepId){
- state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName;
- }
- if(state.details.workDetail.gbPath){
- state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',')
- }
- if(state.details.workDetail.bcPath){
- state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',')
- }
- if(state.details.workDetail.bpLocationMapPath){
- state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',')
- }
- state.dialogDetails = true;
- };
+ // const viewDetail = (row: any) => {
+ // state.dialogType = row.workType
+ // state.details = JSON.parse(JSON.stringify(row));
+ // if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){
+ // state.details.workDetail.otherSpecialWork=[]
+ // }
+ // else {
+ // const a = state.details.workDetail.otherSpecialWork
+ // state.details.workDetail.otherSpecialWork = a.split(',').map((item) => {
+ // return state.workTypeList.find((i: { id: number }) => i.id === Number(item))?.name;
+ // });
+ // }
+ // if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){
+ // state.details.workDetail.involvedDepIds=[]
+ // }
+ // else {
+ // const a = state.details.workDetail.involvedDepIds
+ // state.details.workDetail.involvedDepIds = a.split(',').map((item) => {
+ // return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName;
+ // });
+ // }
+ // if(state.details.workDetail.csDepId){
+ // state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName;
+ // }
+ // if(state.details.workDetail.operationDepId){
+ // state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName;
+ // }
+ // if(state.details.workDetail.gbPath){
+ // state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',')
+ // }
+ // if(state.details.workDetail.bcPath){
+ // state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',')
+ // }
+ // if(state.details.workDetail.bpLocationMapPath){
+ // state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',')
+ // }
+ // state.dialogDetails = true;
+ // };
- const handleReview = (row)=>{
- state.dialogReview = true
+ // const handleReview = (row: object)=>{
+ // state.dialogReview = true
+ // }
+ const openVideo = (row:object)=>{
+ videoRef.value.openDialog(row)
}
- const openVideo = ()=>{
- videoRef.value.openDialog()
+
+ const viewRecord = (id: string | null)=>{
+ recordRef.value.openDialog(id)
}
- const submitReview = async (formEl: FormInstance | undefined) => {
- if (!formEl) return
- await formEl.validate((valid, fields) => {
- if (valid) {
- console.log('submit!')
+
+ const viewTicket = async(row)=>{
+ let res = await workApplyApi().viewTicket({id:row.workApplyId})
+ if(res.data.code == 200){
+ console.log(res.data,666)
+ }
+ axios.post(import.meta.env.VITE_API_URL + `/specialwork9step/work/down/load/pdf`,{id: row.workApplyId},{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{
+ if (res) {
+ const link = document.createElement('a')
+ let blob = new Blob([res.data],{type: 'application/pdf'})
+ link.style.display = "none";
+ link.href = URL.createObjectURL(blob); // 创建URL
+ link.setAttribute("download", row.workPermitNo + "(" + row.workTypeDesc +")作业证.pdf");
+ window.open(link)
} else {
- console.log('error submit!', fields)
+ ElMessage({
+ type: 'warning',
+ message: '预览失败'
+ });
}
})
}
+
+ // 导出方法
+ const downLoadTicket = async (row) => {
+ // let res = await workApplyApi().postPrinting(data);
+ axios.post(import.meta.env.VITE_API_URL + `/specialwork9step/work/down/load/pdf`,{id: row.workApplyId},{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{
+ if (res) {
+ const link = document.createElement('a')
+ let blob = new Blob([res.data],{type: 'application/pdf'})
+ link.style.display = "none";
+ link.href = URL.createObjectURL(blob); // 创建URL
+ link.setAttribute("download", row.workPermitNo + "(" + row.workTypeDesc +")作业证.pdf");
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: '导出失败'
+ });
+ }
+ })
+ }
+
+ // const submitReview = async (formEl: FormInstance | undefined) => {
+ // if (!formEl) return
+ // await formEl.validate(async(valid, fields) => {
+ // if (valid) {
+ // let res = await workApplyApi().acceptWork(state.reviewForm);
+ // if (res.data.code === '200') {
+ // ElMessage({
+ // type: 'success',
+ // message: '作业验收成功',
+ // duration: 2000
+ // });
+ // state.dialogReview = false;
+ // await getMydepList()
+ // } else {
+ // ElMessage({
+ // type: 'warning',
+ // message: res.data.msg
+ // });
+ // }
+ // } else {
+ // console.log('error submit!', fields)
+ // }
+ // })
+ // }
// 折线图
const renderMenu = async (value: string) => {
@@ -1008,23 +1047,29 @@
VideoPlay,
reviewFormRef,
videoRef,
+ recordRef,
zyfb,
slfx,
zyqs,
changeTime1,
+ changeTime4,
changeDep1,
changeDep2,
changeType2,
+ changeType4,
changeDep3,
toFullscreen,
- handleReview,
+ // handleReview,
openVideo,
- submitReview,
+ // submitReview,
reLoadData,
toApply,
searchRecord,
clearSearch,
+ // viewDetail,
viewRecord,
+ viewTicket,
+ downLoadTicket,
// getListByPage,
handleSizeChange,
handleCurrentChange,
@@ -1132,57 +1177,57 @@
.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{
--
Gitblit v1.9.2