From baf475f44f0a940bbdc2dde36fff9cdf97da58bc Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Thu, 17 Aug 2023 16:43:28 +0800
Subject: [PATCH] 证书修改
---
src/views/specialWorkSystem/specialIndex/index.vue | 586 ++++++++++++++++++++++++++++++++++------------------------
1 files changed, 343 insertions(+), 243 deletions(-)
diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index 93aa95a..c93cfb0 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -16,10 +16,11 @@
</div>
<div class="topChart">
<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>
<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>
@@ -31,11 +32,12 @@
</el-radio-group>
</div>
<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>
<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"
@@ -50,15 +52,17 @@
</div>
<div class="topChart">
<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>
<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>
</div>
<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>
<div class="filter-part">
@@ -104,13 +108,14 @@
</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">
<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"
@@ -121,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.workAllStatus" size="small">
<el-option
- v-for="item in workStatus"
+ v-for="item in workStatusList"
:key="item.value"
:label="item.name"
:value="item.value"
@@ -134,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;">
@@ -157,65 +162,91 @@
<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="num" label="作业证编号" align="center"/>
- <el-table-column property="dep" 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="workPermitNo" label="作业证编号" align="center"/>
+ <el-table-column property="workDepName" label="作业单位" align="center"/>
+ <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="startTime" label="作业开始时间" align="center"/>
- <el-table-column property="endTime" label="作业结束时间" align="center"/>
- <el-table-column label="作业状态" align="center">
+ <el-table-column property="startUname" label="开始人" align="center">
<template #default="scope">
- <el-tag>{{ scope.row.status==0?'进行中':scope.row.status==1?'作业中止':scope.row.status==2?'作业结束验收': '作业完成'}}</el-tag>
+ <span>{{scope.row.startUname?scope.row.startUname:'--'}}</span>
</template>
</el-table-column>
- <el-table-column property="reason" label="中止原因" align="center"/>
- <el-table-column label="安全预警" align="center">
+ <el-table-column property="finishUname" 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>
+ <span>{{scope.row.finishUname?scope.row.finishUname:'--'}}</span>
</template>
</el-table-column>
- <el-table-column property="message" label="报警信息" align="center">
+ <el-table-column property="workStartTime" label="作业开始时间" align="center">
<template #default="scope">
- <el-button type="text" size="small" v-if="scope.row.message == 1">查看</el-button>
- <span v-else>无</span>
+ <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="abortReason" label="中止原因" align="center">
+ <template #default="scope">
+ <span>{{scope.row.abortReason?scope.row.abortReason:'--'}}</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>
<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>
@@ -237,24 +268,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>
@@ -268,15 +300,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 {
@@ -287,10 +321,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;
@@ -299,14 +334,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>;
@@ -315,7 +348,7 @@
endTime:string
}
interface type {
- id: number;
+ id: number | null;
name: string;
}
interface status {
@@ -335,6 +368,7 @@
name: 'specialIndex',
components: {
VideoDetail,
+ WorkRecord,
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')),
@@ -353,29 +387,37 @@
const slfx = ref("eChartSlfx" + Date.now() + Math.random())
const zyqs = ref("eChartZyqs" + Date.now() + Math.random())
const videoRef = ref();
+ const recordRef = 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: '',
+ workAllStatus: 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,
@@ -385,83 +427,7 @@
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: [],
@@ -480,7 +446,7 @@
dialogDetails: false,
details: {},
workType1: [
- { id: 0, name: '所有作业' },
+ { id: null, name: '所有作业' },
{ id: 1, name: '动火作业' },
{ id: 2, name: '受限空间作业' },
{ id: 3, name: '吊装作业' },
@@ -490,7 +456,7 @@
{ id: 7, name: '临时用电作业' },
{ id: 8, name: '盲板抽堵作业' }
],
- workType: [
+ workTypeList: [
{ id: 1, name: '动火作业' },
{ id: 2, name: '受限空间作业' },
{ id: 3, name: '吊装作业' },
@@ -500,22 +466,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: [
@@ -550,15 +512,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();
@@ -566,7 +534,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`;
@@ -574,10 +542,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')
@@ -595,11 +573,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',
@@ -631,7 +664,7 @@
},
series: [
{
- name: 'Access From',
+ name: '',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
@@ -777,7 +810,7 @@
}
// 刷新
const reLoadData = async () => {
- // getListByPage();
+ getMydepList()
};
// 填写表单
@@ -826,53 +859,35 @@
// }
// };
- // 表格数据格式化
- 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: '',
+ workAllStatus: 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()
};
// 查看记录
- const viewRecord = (row: any) => {
+ const viewDetail = (row: any) => {
state.dialogType = row.workType
state.details = JSON.parse(JSON.stringify(row));
if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){
@@ -881,7 +896,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){
@@ -911,22 +926,85 @@
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) => {
@@ -947,24 +1025,30 @@
VideoPlay,
reviewFormRef,
videoRef,
+ recordRef,
zyfb,
slfx,
zyqs,
changeTime1,
- changeTime2,
+ changeDep1,
+ changeDep2,
+ changeType2,
+ changeDep3,
toFullscreen,
- handleReview,
+ // handleReview,
openVideo,
- submitReview,
+ // submitReview,
reLoadData,
toApply,
- toNames,
searchRecord,
clearSearch,
+ viewDetail,
viewRecord,
+ viewTicket,
+ downLoadTicket,
// getListByPage,
- handleSizeChange1,
- handleCurrentChange1,
+ handleSizeChange,
+ handleCurrentChange,
...toRefs(state)
};
}
@@ -1435,6 +1519,7 @@
.container{
padding: 20px;
background: url('../../../assets/spwbg.png') no-repeat center;
+ background-size: 100% 100%;
.full{
position:fixed;
@@ -1454,14 +1539,22 @@
.topChart{
.chart-item{
border-radius: 4px;
- background: rgba(8, 109, 209, 0.2);
- border: 1px solid rgba(54, 252, 252, .6);
+ background: rgba(0, 61, 121, 0.2);
backdrop-filter: blur(5px);
position: relative;
z-index: 2;
&:last-of-type{
position: relative;
z-index: 1;
+ }
+
+ .item-bg{
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
}
.el-radio.is-bordered.is-checked{
border-color: #11FEEE !important;
@@ -1547,11 +1640,18 @@
}
.homeCard{
border-radius: 4px;
- background: rgba(8, 109, 209, 0.2);
- border: 1px solid rgba(54, 252, 252, .6);
+ background: rgba(0, 61, 121, 0.2);
backdrop-filter: blur(5px);
position: relative;
z-index: 3;
+ .item-bg{
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ }
.el-row{
&>div{
&>span{
--
Gitblit v1.9.2