From 3a9ca6d56fbad4c67b858185d9e9b157e3d60b82 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期三, 22 三月 2023 08:48:51 +0800
Subject: [PATCH] 对接特殊作业接口
---
src/views/specialWorkSystem/specialIndex/index.vue | 411 +++++++++++++++++++++++++++++----------------------
src/api/specialWorkSystem/specialIndex/index.ts | 25 ++
2 files changed, 257 insertions(+), 179 deletions(-)
diff --git a/src/api/specialWorkSystem/specialIndex/index.ts b/src/api/specialWorkSystem/specialIndex/index.ts
index 5bb9c3f..b57ff7e 100644
--- a/src/api/specialWorkSystem/specialIndex/index.ts
+++ b/src/api/specialWorkSystem/specialIndex/index.ts
@@ -2,11 +2,32 @@
export function specialIndexApi() {
return {
- analyseType: (startTime: string | null,endTime: string | null,depId: number | null) => {
+ analyseType: (data: object) => {
return request({
- url: import.meta.env.VITE_API_URL + `specialWork/analyse/everyType/dep?startTime=${startTime == null ? null : startTime}&endTime=${endTime == null ? null : endTime}&depId=${depId == null ? null : depId}`,
+ url: import.meta.env.VITE_API_URL + `/specialWork/analyse/everyType/dep`,
+ method: 'post',
+ data: data
+ });
+ },
+ analyseAllWork: (data: object) => {
+ return request({
+ url: import.meta.env.VITE_API_URL + `/specialWork/analyse/allWork/dep`,
+ method: 'post',
+ data: data
+ });
+ },
+ analyseDepMonth: (data: number) => {
+ return request({
+ url: import.meta.env.VITE_API_URL + `/specialWork/analyse/12month/dep?depId=${data}`,
method: 'get'
});
+ },
+ getMydepList: (data: object) => {
+ return request({
+ url: import.meta.env.VITE_API_URL + `/work/page/my-dep/list`,
+ method: 'post',
+ data: data
+ });
}
};
}
diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index 6866f0e..c76b6ca 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -20,7 +20,7 @@
<div class="chart-tit">
<span class="tit">八大作业各分类分布图</span>
<div class="filter-part filter-part2">
- <el-cascader :teleported="false" v-model="chartSearch1.searchDep" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
+ <el-cascader :teleported="false" v-model="chartSearch1.depId" @change="changeDep1()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
</div>
</div>
<div class="chart" :id="zyfb"></div>
@@ -36,8 +36,8 @@
<div class="chart-tit">
<span class="tit">各事业部关联作业分析</span>
<div class="filter-part">
- <el-cascader :teleported="false" v-model="chartSearch2.searchDep" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
- <el-select v-model="chartSearch2.type" size="small" :teleported="false">
+ <el-cascader :teleported="false" v-model="chartSearch2.depId" @change="changeDep2()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
+ <el-select v-model="chartSearch2.type" size="small" :teleported="false" @change="changeType2()">
<el-option
v-for="item in workType1"
:key="item.id"
@@ -56,7 +56,7 @@
<div class="chart-tit">
<span class="tit">关联作业趋势图</span>
<div class="filter-part filter-part2">
- <el-cascader :teleported="false" v-model="chartSearch3.searchDep" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
+ <el-cascader :teleported="false" v-model="chartSearch3.depId" @change="changeDep3()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
</div>
</div>
<div class="chart" :id="zyqs"></div>
@@ -113,9 +113,9 @@
<el-col :span="5" style="display:flex;align-items: center">
<span style="white-space: nowrap">作业类型:</span>
<div class="grid-content topInfo">
- <el-select :teleported="false" v-model="searchWord" size="small">
+ <el-select :teleported="false" v-model="searchParams.workType" size="small">
<el-option
- v-for="item in workType"
+ v-for="item in workTypeList"
:key="item.id"
:label="item.name"
:value="item.id"
@@ -126,9 +126,9 @@
<el-col :span="5" style="display:flex;align-items: center">
<span style="white-space: nowrap">作业状态:</span>
<div class="grid-content topInfo">
- <el-select :teleported="false" v-model="searchStatus" size="small">
+ <el-select :teleported="false" v-model="searchParams.workStatus" size="small">
<el-option
- v-for="item in workStatus"
+ v-for="item in workStatusList"
:key="item.value"
:label="item.name"
:value="item.value"
@@ -139,7 +139,7 @@
<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="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/>
+ <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;">
@@ -185,24 +185,20 @@
</el-col>
</el-row>
<el-table ref="multipleTableRef" stripe border :data="workData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column property="num" label="作业证编号" align="center"/>
- <el-table-column property="dep" label="部门" align="center"/>
+ <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="worker" label="作业人" align="center"/>
- <el-table-column property="type" label="作业类型" align="center"/>
- <el-table-column property="level" label="作业等级" align="center"/>
- <el-table-column property="applyTime" label="申请时间" align="center"/>
- <el-table-column property="startTime" label="作业开始时间" align="center"/>
- <el-table-column property="endTime" label="作业结束时间" align="center"/>
- <el-table-column label="作业状态" align="center">
- <template #default="scope">
- <el-tag>{{ scope.row.status==0?'进行中':scope.row.status==1?'作业中止':scope.row.status==2?'作业结束验收': '作业完成'}}</el-tag>
- </template>
- </el-table-column>
+ <el-table-column property="finishUname" label="作业人" align="center"/>
+ <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">
<template #default="scope">
- <el-tag :type="scope.row.warning==0?'success':(scope.row.warning==1||scope.row.warning==2)?'warning':'danger'">{{ scope.row.warning==0?'正常':'报警' }}</el-tag>
+ <el-tag>--</el-tag>
</template>
</el-table-column>
<el-table-column property="message" label="报警信息" align="center">
@@ -220,7 +216,7 @@
</el-table-column>
</el-table>
<div class="pageBtn">
- <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
+ <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</div>
</div>
@@ -293,10 +289,11 @@
approveInfo: Object;
dialogDetails: boolean;
dialogReview: boolean;
- pageIndex1: number;
- pageSize1: number;
- chosenIndex: null | number;
- searchWord: number | null;
+ pageIndex: number;
+ pageSize: number;
+ searchParams: {};
+ workStatusList: Array<status>;
+ workTypeList: Array<type>;
searchStatus: number | null;
chartSearch1: object;
chartSearch2: object;
@@ -305,14 +302,12 @@
searchDep2: number | null;
searchDep: number | null;
searchDate: Array<any>,
- totalSize1: number;
+ totalSize: number;
details: {};
- workType: Array<type>;
workType1: Array<type>;
dialogType: number | null;
departmentList: Array<any>;
departmentRecursionList: Array<DepartmentState>;
- workStatus: Array<status>;
reviewForm: object;
reviewRules: object;
warningData: Array<any>;
@@ -321,7 +316,7 @@
endTime:string
}
interface type {
- id: number;
+ id: number | null;
name: string;
}
interface status {
@@ -360,28 +355,37 @@
const zyqs = ref("eChartZyqs" + Date.now() + Math.random())
const videoRef = ref();
const state = reactive<stateType>({
- pageIndex1: 1,
- pageSize1: 10,
- totalSize1: 0,
+ pageIndex: 1,
+ pageSize: 10,
+ totalSize: 0,
dialogType: null,
+ searchParams: {
+ workType: null,
+ workDepId: null,
+ workPermitNo: '',
+ startTime: '',
+ endTime: '',
+ workStatus: null,
+ acceptStatus: null,
+ workAnalysisStatus: null
+ },
dialogReview: false,
departmentList: [],
departmentRecursionList: [],
- chosenIndex: null,
- searchWord: null,
searchStatus: null,
endTime: '',
chartSearch1: {
- searchDep: null,
+ depId: 1,
startTime: '',
days: 30
},
chartSearch2: {
- searchDep: null,
- type: 0
+ depId: 1,
+ startTime: '',
+ type: null
},
chartSearch3: {
- searchDep: null
+ depId: 1
},
chartSearch4: {
searchDep: null,
@@ -392,81 +396,81 @@
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
- }
+ // {
+ // 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
+ // }
],
isFull: false,
themeColor: '#333',
@@ -486,7 +490,7 @@
dialogDetails: false,
details: {},
workType1: [
- { id: 0, name: '所有作业' },
+ { id: null, name: '所有作业' },
{ id: 1, name: '动火作业' },
{ id: 2, name: '受限空间作业' },
{ id: 3, name: '吊装作业' },
@@ -496,7 +500,7 @@
{ id: 7, name: '临时用电作业' },
{ id: 8, name: '盲板抽堵作业' }
],
- workType: [
+ workTypeList: [
{ id: 1, name: '动火作业' },
{ id: 2, name: '受限空间作业' },
{ id: 3, name: '吊装作业' },
@@ -506,22 +510,18 @@
{ id: 7, name: '临时用电作业' },
{ id: 8, name: '盲板抽堵作业' }
],
- workStatus: [
+ workStatusList: [
{
- name: '作业进行中',
- value: 0
+ name: '未开始',
+ value: -1
},
{
- name: '作业终止',
+ name: '开始',
value: 1
},
{
- name: '作业结束待验收',
+ name: '结束',
value: 2
- },
- {
- name: '作业完成',
- value: 3
}
],
warningData: [
@@ -556,15 +556,21 @@
});
// 页面载入时执行方法
onMounted(() => {
- // getListByPage();
+ initTime()
+ getMydepList()
getAllDepartment();
+ getTypePie()
+ getWorkDep()
+ getDepMonth()
initZyfb()
initSlfx()
initZyqs()
- state.endTime = formatDate(new Date())
- // state.chartSearch1.startTime = getPeriod(30)
- console.log(state.chartSearch1.startTime,state.endTime,'默认时间段')
});
+ const initTime =()=>{
+ state.chartSearch1.startTime = getPeriod(30)
+ state.chartSearch2.startTime = getPeriod(30)
+ state.endTime = formatDate(new Date())
+ }
const getPeriod =(num)=> {
const currentDate = new Date();
const startTime = new Date();
@@ -572,7 +578,7 @@
return formatDate(startTime)
}
const formatDate =(date)=> {
- const year = date.getFullYear().toString().slice(-2);
+ 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`;
@@ -580,10 +586,20 @@
const changeTime1=(value:number)=>{
state.chartSearch1.startTime = getPeriod(value)
console.log(state.chartSearch1.startTime,state.endTime,'结束段')
+ getTypePie()
}
- const changeTime2=(value:number)=>{
- state.chartSearch4.startTime = getPeriod(value)
- console.log(state.chartSearch4.startTime,state.endTime,'结束段')
+ const changeDep1=()=>{
+ getTypePie()
+ }
+
+ const changeDep2=()=>{
+ getWorkDep()
+ }
+ const changeType2=()=>{
+ getWorkDep()
+ }
+ const changeDep3=()=>{
+ getDepMonth()
}
const toFullscreen =()=>{
const element = document.getElementById('bigScreen')
@@ -601,11 +617,66 @@
initZyfb()
initSlfx()
initZyqs()
+ getMydepList()
}
const getTypePie = async ()=>{
- let res = await specialIndexApi().analyseType(state.chartSearch1.startTime,state.chartSearch1.endTime,state.chartSearch1.searchDep);
+ const data = {
+ startTime: state.chartSearch1.startTime,
+ endTime:state.endTime,
+ depId:state.chartSearch1.depId
+ }
+ let res = await specialIndexApi().analyseType(data);
if (res.data.code === '200') {
- console.log(res.data,'666666666')
+ console.log('饼图数据>>>', res.data.data)
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ }
+ const getWorkDep = async ()=>{
+ const data = {
+ 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)
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ }
+ const getDepMonth = async ()=>{
+ let res = await specialIndexApi().analyseDepMonth(state.chartSearch3.depId);
+ if (res.data.code === '200') {
+ console.log('折线图数据>>>', res.data.data)
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ }
+ const getMydepList = async()=>{
+ const dateRange = JSON.parse(JSON.stringify(state.searchDate))
+ if(dateRange[1]){
+ dateRange[1] = dateRange[1].replace('00:00:00','23:59:59')
+ state.searchParams.startTime = dateRange[0]
+ state.searchParams.endTime = dateRange[1]
+ }else{
+ state.searchParams.startTime = ''
+ state.searchParams.endTime = ''
+ }
+ let res = await specialIndexApi().getMydepList({pageIndex: state.pageIndex,pageSize: state.pageSize,searchParams: state.searchParams})
+ if (res.data.code === '200') {
+ state.workData = JSON.parse(JSON.stringify(res.data.data))
+ state.totalSize = res.data.total
} else {
ElMessage({
type: 'warning',
@@ -783,7 +854,7 @@
}
// 刷新
const reLoadData = async () => {
- // getListByPage();
+ getMydepList()
};
// 填写表单
@@ -832,49 +903,33 @@
// }
// };
- // 表格数据格式化
- const toNames = (row, column, cellValue, index) => {
- if (row.list == []) {
- return [];
- } else {
- const nameList = [];
- for (let i = 0; i < row.list.length; i++) {
- for (let t = 0; t < state.workTimeList.length; t++) {
- if (row.list[i] == state.workTimeList[t].id) {
- nameList.push(state.workTimeList[t].name);
- }
- }
- }
- return nameList.join();
- }
- };
-
// 关键词查询记录
const searchRecord = async () => {
- if (state.searchWord == null && state.searchStatus == null && state.searchDep == null && state.searchDate == []) {
- ElMessage({
- type: 'warning',
- message: '请输入查询关键词'
- });
- } else {
- // getListByPage();
- }
+ getMydepList()
};
// 重置搜索
const clearSearch = async () => {
- state.searchWord = null;
- state.searchDep = null;
+ state.searchParams = {
+ workType:null,
+ workDepId:null,
+ workPermitNo: '',
+ startTime: '',
+ endTime: '',
+ workStatus: null,
+ acceptStatus: null,
+ workAnalysisStatus: null
+ }
state.searchDate = []
- // getListByPage();
+ getMydepList()
};
- const handleSizeChange1 = (val: number) => {
- state.pageSize1 = val;
- // getListByPage();
+ const handleSizeChange = (val: number) => {
+ state.pageSize = val;
+ getMydepList()
};
- const handleCurrentChange1 = (val: number) => {
- state.pageIndex1 = val;
- // getListByPage();
+ const handleCurrentChange = (val: number) => {
+ state.pageIndex = val;
+ getMydepList()
};
// 查看记录
@@ -887,7 +942,7 @@
else {
const a = state.details.workDetail.otherSpecialWork
state.details.workDetail.otherSpecialWork = a.split(',').map((item) => {
- return state.workType.find((i: { id: number }) => i.id === Number(item))?.name;
+ return state.workTypeList.find((i: { id: number }) => i.id === Number(item))?.name;
});
}
if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){
@@ -957,20 +1012,22 @@
slfx,
zyqs,
changeTime1,
- changeTime2,
+ changeDep1,
+ changeDep2,
+ changeType2,
+ changeDep3,
toFullscreen,
handleReview,
openVideo,
submitReview,
reLoadData,
toApply,
- toNames,
searchRecord,
clearSearch,
viewRecord,
// getListByPage,
- handleSizeChange1,
- handleCurrentChange1,
+ handleSizeChange,
+ handleCurrentChange,
...toRefs(state)
};
}
--
Gitblit v1.9.2