1136 lines
34 KiB
Vue
1136 lines
34 KiB
Vue
<template>
|
|
<div class="fullHeight">
|
|
<div class="fullHeight">
|
|
<div class="searchBox whiteBlock">
|
|
<el-form
|
|
:inline="true"
|
|
size="medium"
|
|
:model="formInline"
|
|
class="demo-form-inline"
|
|
>
|
|
<el-form-item label="区域">
|
|
<el-select
|
|
ref="selectRef"
|
|
v-model="selectVal"
|
|
placeholder="请选择"
|
|
style="width: 100%"
|
|
size="medium"
|
|
clearable
|
|
@change="selectChange"
|
|
>
|
|
<el-option style="height: auto" :value="[]">
|
|
<el-tree
|
|
:data="areaList"
|
|
node-key="id"
|
|
ref="groupTree"
|
|
:props="defaultAreaProps"
|
|
:default-expand-all="false"
|
|
@node-click="treeAreaClick"
|
|
>
|
|
</el-tree>
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label="企业">
|
|
<el-select
|
|
ref="selectEnterpriseRef"
|
|
v-model="selectEnterpriseVal"
|
|
placeholder="请选择"
|
|
clearable
|
|
@change="selectEnterpriseChange"
|
|
>
|
|
<el-option style="height: auto" :value="[]">
|
|
<el-tree
|
|
:data="treeList"
|
|
node-key="enterpriseId"
|
|
ref="groupTree"
|
|
:props="defaultProps"
|
|
:default-expand-all="false"
|
|
@node-click="treeClick"
|
|
>
|
|
</el-tree>
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<!-- <el-form-item label="处置状态">
|
|
<el-select v-model="formInline.handleDone" clearable>
|
|
<el-option :label="item.name" :value="item.value" v-for="(item, index) in handleResultStatus" :key="index"></el-option>
|
|
</el-select>
|
|
</el-form-item> -->
|
|
<el-form-item :label="$t('message.sixComplete.fence.devNo')">
|
|
<el-input
|
|
v-model="formInline.hardwareId"
|
|
:placeholder="$t('message.sixComplete.fence.placeholder')"
|
|
></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="$t('message.sixComplete.happenTime')">
|
|
<el-date-picker
|
|
@change="changeTime"
|
|
v-model="dateRangeArr"
|
|
type="datetimerange"
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
:range-separator="$t('message.sixComplete.to')"
|
|
:start-placeholder="$t('message.sixComplete.start')"
|
|
:end-placeholder="$t('message.sixComplete.end')"
|
|
>
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button
|
|
v-permission="{
|
|
key: 'dealPush_query',
|
|
menuPath: '/project/aiAnalysis/dealPushManage',
|
|
}"
|
|
type="primary"
|
|
@click="getList(1)"
|
|
plain
|
|
>{{ $t("message.sixComplete.query") }}</el-button
|
|
>
|
|
<el-button type="warning" @click="refresh" plain>{{
|
|
$t("message.sixComplete.fresh")
|
|
}}</el-button>
|
|
<el-button v-permission="{
|
|
key: 'dealPush_add',
|
|
menuPath: '/project/aiAnalysis/dealPushManage',
|
|
}" type="primary" plain @click="dealAdd">新增</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<!-- <el-button type="primary" size="medium" @click="addFn"
|
|
>新增课程</el-button
|
|
>
|
|
<el-button type="warning" plain size="medium" @click="refresh">{{
|
|
$t("message.alarmValueSet.refresh")
|
|
}}</el-button> -->
|
|
</div>
|
|
<div class="table_wrap">
|
|
<div class="listContent">
|
|
<vue-scroll>
|
|
<div class="listBox" v-for="(item, index) in workerList" :key="index">
|
|
<div class="inner whiteBlock">
|
|
<div class="videoBox">
|
|
<!-- <video
|
|
class=""
|
|
:src="$store.state.FILEURL + item.eduVideo"
|
|
controls
|
|
></video> -->
|
|
<img
|
|
:src="$store.state.FILEURL + item.imageUrl"
|
|
alt=""
|
|
:preview="$store.state.FILEURL + item.imageUrl"
|
|
/>
|
|
<div class="desc">
|
|
<span class="time">{{ getTypeName(item.alarmType) }}</span>
|
|
<span>{{ item.createTime }}</span>
|
|
</div>
|
|
<!-- <div class="status-style" :class="item.handleResult?'result-style':'no-result-style'">{{item.handleResult?'已处置':'未处置'}}</div> -->
|
|
</div>
|
|
<!-- 来源 -->
|
|
<!-- @click="openDialogDetail(item)" -->
|
|
<div style="display: flex">
|
|
<div class="title">
|
|
<!-- {{ $t('message.sixComplete.carDense.from') + ':' }}{{ item.alarmDesc }} -->
|
|
<el-tooltip
|
|
class="item"
|
|
effect="dark"
|
|
:content="item.alarmDesc"
|
|
placement="top-start"
|
|
>
|
|
<span
|
|
>{{ $t("message.sixComplete.carDense.from") + ":"
|
|
}}{{ item.alarmDesc }}</span
|
|
>
|
|
</el-tooltip>
|
|
</div>
|
|
<div
|
|
style="
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex: 1;
|
|
"
|
|
>
|
|
<!-- 去处置 -->
|
|
<div
|
|
v-permission="{
|
|
key: 'dealPush_push',
|
|
menuPath: '/project/aiAnalysis/dealPushManage',
|
|
}"
|
|
class="toDisposeOf pushBtn"
|
|
@click="pushAlarm(item)"
|
|
>
|
|
<el-button type="primary" size="small">违章推送</el-button>
|
|
</div>
|
|
<!-- 去处置 -->
|
|
<div
|
|
v-permission="{
|
|
key: 'dealPush_delete',
|
|
menuPath: '/project/aiAnalysis/dealPushManage',
|
|
}"
|
|
class="toDisposeOf alarmDeleteBtn"
|
|
@click="deleteDev(item)"
|
|
>
|
|
<el-button type="danger" size="small">误报删除</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- <div @click.stop="deleteBefore(item)" class="deleteBtn">
|
|
<img src="@/assets/images/icon-delete.png" width="15px" height="15px"/>
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
</vue-scroll>
|
|
</div>
|
|
<div class="placeholderBox" v-if="workerList.length == 0">
|
|
<img src="@/assets/images/noData.png" alt="" />
|
|
<p>{{ $t("message.sixComplete.carDense.noWarn") }}</p>
|
|
</div>
|
|
<!-- <el-table class="tables" :data="workerList">
|
|
<el-table-column
|
|
type="index"
|
|
width="50"
|
|
align="center"
|
|
:label="$t('message.personnelPosition.beaconManage.table.index')"
|
|
></el-table-column>
|
|
<el-table-column prop="eduCourseName" :label="'课程名称'"></el-table-column>
|
|
<el-table-column prop="passScore" :label="'及格分数'"></el-table-column>
|
|
<el-table-column prop="eduWorkerNum" :label="'考试人数'"></el-table-column>
|
|
<el-table-column prop="passWorkerNum" :label="'及格人数'"></el-table-column>
|
|
<el-table-column prop="addTime" :label="'创建时间'"></el-table-column>
|
|
<el-table-column width="200">
|
|
<template slot-scope="scope">
|
|
<div class="tableBtns">
|
|
<div @click="editBefore(scope.row)" class="operationText">
|
|
<span>详细</span>
|
|
</div>
|
|
<div @click="deleteBefore(scope.row)" class="operationText">
|
|
<img src="@/assets/images/icon-delete.png" width="15px" height="15px"/>
|
|
<span>{{$t('message.workType.delete')}}</span>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table> -->
|
|
<el-pagination
|
|
class="pagerBox"
|
|
@size-change="SizeChange"
|
|
@current-change="CurrentChange"
|
|
:current-page="pageInfo.pageNo"
|
|
:page-sizes="$store.state.PAGESIZRS"
|
|
:page-size="pageInfo.pageSize"
|
|
layout="total, sizes, prev, pager, next"
|
|
:total="Number(pageInfo.total)"
|
|
background
|
|
></el-pagination>
|
|
</div>
|
|
</div>
|
|
<!-- 处置记录弹框-->
|
|
<el-dialog
|
|
:modal-append-to-body="false"
|
|
@close="close"
|
|
title="处置详情"
|
|
:visible.sync="recordShow"
|
|
width="667px"
|
|
>
|
|
<div class="dialog_content">
|
|
<el-form
|
|
size="medium"
|
|
ref="addEditForm"
|
|
:model="addEditForm"
|
|
:rules="addEditRules"
|
|
label-width="120px"
|
|
class="dialogFormBox"
|
|
>
|
|
<!-- <el-form-item label="处置结果" prop="handleResult">
|
|
<el-radio :disabled="isDetail" v-model="addEditForm.handleResult" :label="1">已处置</el-radio>
|
|
<el-radio :disabled="isDetail" v-model="addEditForm.handleResult" :label="2">误报忽略</el-radio>
|
|
</el-form-item>
|
|
<el-form-item label="描述" prop="desc" v-if="addEditForm.handleResult != 2">
|
|
<el-input
|
|
:autosize="{ minRows: 2, maxRows: 6 }"
|
|
:disabled="isDetail"
|
|
type="textarea"
|
|
v-model="addEditForm.desc"
|
|
:placeholder="'请输入'"
|
|
></el-input>
|
|
</el-form-item> -->
|
|
<el-form-item
|
|
label="选择违章人员"
|
|
prop="workerInfoList"
|
|
v-if="addEditForm.handleResult != 2"
|
|
>
|
|
<el-select
|
|
:disabled="isDetail"
|
|
filterable
|
|
multiple
|
|
v-model="selectList"
|
|
placeholder="请选择"
|
|
clearable
|
|
@change="dutySelectChange"
|
|
>
|
|
<el-option
|
|
v-for="(item, index) in workerListOptions"
|
|
:key="index"
|
|
:label="item.workerName"
|
|
:value="item.id"
|
|
>
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item
|
|
label="扣分"
|
|
prop="deductScore"
|
|
v-if="addEditForm.handleResult != 2"
|
|
>
|
|
<el-input-number
|
|
v-model="addEditForm.deductScore"
|
|
:min="0"
|
|
:max="100"
|
|
:placeholder="'请输入'"
|
|
></el-input-number>
|
|
</el-form-item>
|
|
<div class="dialog-footer" v-if="!isDetail">
|
|
<el-button
|
|
class="cancleBtn"
|
|
icon="el-icon-circle-close"
|
|
size="medium"
|
|
@click="recordShow = false"
|
|
>取消
|
|
</el-button>
|
|
<el-button
|
|
@click="addBtn"
|
|
type="primary"
|
|
icon="el-icon-circle-check"
|
|
size="medium"
|
|
>确定
|
|
</el-button>
|
|
</div>
|
|
</el-form>
|
|
</div>
|
|
</el-dialog>
|
|
<!-- 新增 -->
|
|
<el-dialog :visible.sync="dealShow" width="600px" append-to-body title="新增">
|
|
<el-form
|
|
ref="dealForm"
|
|
:model="dealForm"
|
|
:rules="dealFormRules"
|
|
size="medium"
|
|
label-width="210px"
|
|
>
|
|
<el-form-item label="AI设备" prop="hardwareId">
|
|
<el-select
|
|
v-model="dealForm.hardwareId"
|
|
placeholder="请选择"
|
|
clearable
|
|
filterable
|
|
>
|
|
<el-option
|
|
v-for="(item, index) in aiAnalyseHardList "
|
|
:key="item.hardwareId"
|
|
:label="item.hardwareName"
|
|
:value="item.hardwareId"
|
|
></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label="报警类型" prop="alarmType">
|
|
<el-select
|
|
v-model="dealForm.alarmType"
|
|
placeholder="请选择"
|
|
clearable
|
|
filterable
|
|
>
|
|
<el-option
|
|
v-for="(item, index) in alarmTypeArr"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.value"
|
|
></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label="位置" prop="location">
|
|
<el-input v-model="dealForm.location" placeholder="请输入"></el-input>
|
|
</el-form-item>
|
|
<!-- <el-form-item label="位置" prop="inletOutletPosition">
|
|
<el-select
|
|
v-model="dealForm.inletOutletPosition"
|
|
placeholder="请选择"
|
|
clearable
|
|
filterable
|
|
>
|
|
<el-option
|
|
v-for="(item, index) in aiAnalyseHardList "
|
|
:key="item.id"
|
|
:label="item.devName"
|
|
:value="item.id"
|
|
></el-option>
|
|
</el-select>
|
|
</el-form-item> -->
|
|
<el-form-item label="识别时间" prop="createTime">
|
|
<el-date-picker
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
type="datetime"
|
|
placeholder="开始时间"
|
|
v-model="dealForm.createTime"
|
|
></el-date-picker>
|
|
</el-form-item>
|
|
<el-form-item label="报警图片" prop="fileList">
|
|
<el-upload
|
|
:action="$store.state.UPLOADURL"
|
|
name="files"
|
|
list-type="picture-card"
|
|
:limit="1"
|
|
:on-success="handleAvatarSuccess"
|
|
:file-list="dealForm.fileList"
|
|
:on-remove="handleDelete"
|
|
:on-exceed="handleExceed"
|
|
accept=".jpg,.jpeg,.png"
|
|
>
|
|
<i class="el-icon-plus"></i>
|
|
<!-- <div slot="tip" class="el-upload__tip">只支持.jpg格式</div> -->
|
|
</el-upload>
|
|
</el-form-item>
|
|
</el-form>
|
|
<div slot="footer" style="text-align: center">
|
|
<el-button type="primary" @click="submitDealForm">确认</el-button>
|
|
<el-button @click="dealFormCancel">取消</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import {
|
|
aiAnalyseHardWareAlarmRecordApi,
|
|
aiAnalyseHardWareAlarmRecordEdit,
|
|
getViolatorList,
|
|
aiAnalyseHardWareAlarmRecordAdd,
|
|
aiAnalyseHardWareRecordList
|
|
} from "@/assets/js/api/equipmentCenter/electricBox";
|
|
import {
|
|
getAlarmDealPageApi,
|
|
violationPushDataApi,
|
|
PositiveDeletionDataApi,
|
|
} from "@/assets/js/api/electricBox";
|
|
import { getDictionaryItemApi } from "@/assets/js/api/companyDiagram.js";
|
|
import {
|
|
getWorkerInfoList,
|
|
selectHierarchyEnterpriseListApi,
|
|
} from "@/assets/js/api/laborPerson.js";
|
|
|
|
import { getQualityRegionListApi } from "@/assets/js/api/quality.js";
|
|
export default {
|
|
data() {
|
|
return {
|
|
handleResultStatus: [
|
|
{ name: "未处置", value: false },
|
|
{ name: "已处置", value: true },
|
|
],
|
|
// 对应的字段
|
|
defaultProps: {
|
|
children: "children",
|
|
label: "enterpriseName",
|
|
},
|
|
treeList: [],
|
|
areaList: [],
|
|
areaSelectVal: "",
|
|
// 对应的字段
|
|
defaultAreaProps: {
|
|
children: "children",
|
|
label: "regionName",
|
|
},
|
|
selectVal: "",
|
|
selectEnterpriseVal: "",
|
|
isDetail: false,
|
|
pageType: "list",
|
|
workerList: [],
|
|
pageInfo: {
|
|
pageNo: 1, //页数
|
|
pageSize: 10, //条数
|
|
total: 0, //总条数
|
|
},
|
|
itemId: "",
|
|
formInline: {
|
|
alarmType: "",
|
|
handleDone: "",
|
|
endTime: "",
|
|
startTime: "",
|
|
hardwareId: "",
|
|
qualityRegionId: "",
|
|
enterpriseId: "",
|
|
},
|
|
dateRangeArr: [],
|
|
alarmTypeArrList: [],
|
|
recordShow: false,
|
|
addEditForm: {
|
|
workerInfoList: [],
|
|
handleResult: "",
|
|
dutyId: "",
|
|
desc: "",
|
|
deductScore: 0,
|
|
},
|
|
addEditRules: {
|
|
dutyId: [
|
|
{
|
|
required: true,
|
|
message: "请选择",
|
|
trigger: "change",
|
|
},
|
|
],
|
|
handleResult: [
|
|
{
|
|
required: true,
|
|
message: "必填",
|
|
trigger: "blur",
|
|
},
|
|
],
|
|
},
|
|
workerListOptions: [],
|
|
selectList: [],
|
|
|
|
// 新增
|
|
alarmTypeArr: [
|
|
{
|
|
label: this.$t("message.sixComplete.carWash.alarmTypeArr")[0] /* "烟感报警", */,
|
|
value: 1,
|
|
},
|
|
{
|
|
label: this.$t("message.sixComplete.carWash.alarmTypeArr")[1] /* "明火报警", */,
|
|
value: 2,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[2] /* "人员倒地报警", */,
|
|
value: 3,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[3] /* "未戴安全帽报警", */,
|
|
value: 4,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[4] /* "区域入侵报警", */,
|
|
value: 5,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[5] /* "越界入侵报警", */,
|
|
value: 6,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[6] /* "人员聚集报警", */,
|
|
value: 7,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[7] /* "反光衣报警", */,
|
|
value: 8,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[8] /* "裸土覆盖报警", */,
|
|
value: 9,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[9] /* "口罩识别报警", */,
|
|
value: 13,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[10] /* "徘徊预警", */,
|
|
value: 14,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[11] /* "物体滞留监测", */,
|
|
value: 15,
|
|
},
|
|
{
|
|
label: this.$t(
|
|
"message.sixComplete.carWash.alarmTypeArr"
|
|
)[12] /* "绊线监测", */,
|
|
value: 16,
|
|
},
|
|
],
|
|
dealShow: false,
|
|
dealForm: {
|
|
hardwareId: "",
|
|
alarmType: "",
|
|
location: "",
|
|
createTime: "",
|
|
fileList: [],
|
|
},
|
|
dealFormRules: {
|
|
hardwareId: [
|
|
{
|
|
required: true,
|
|
message: "请选择ai设备",
|
|
trigger: "change",
|
|
},
|
|
],
|
|
alarmType: [
|
|
{
|
|
required: true,
|
|
message: "请选择报警类型",
|
|
trigger: "change",
|
|
},
|
|
],
|
|
location: [
|
|
{
|
|
required: true,
|
|
message: "请输入位置",
|
|
trigger: "blur",
|
|
},
|
|
],
|
|
createTime: [
|
|
{
|
|
required: true,
|
|
message: "请选择识别时间",
|
|
trigger: "change",
|
|
},
|
|
],
|
|
},
|
|
aiAnalyseHardList: [],
|
|
};
|
|
},
|
|
mounted() {
|
|
this.selectNowDate();
|
|
this.getList();
|
|
this.getDictionaryList();
|
|
this.getDutyPerson();
|
|
this.getPositionList();
|
|
this.getTreeList();
|
|
this.getAiAnalyseHardWareRecordList();
|
|
},
|
|
methods: {
|
|
// 新增
|
|
dealAdd() {
|
|
this.initDealForm();
|
|
this.$nextTick(() => {
|
|
this.$refs["dealForm"].resetFields();
|
|
})
|
|
this.dealShow = true;
|
|
},
|
|
initDealForm() {
|
|
this.dealForm = {
|
|
hardwareId: "",
|
|
alarmType: "",
|
|
location: "",
|
|
createTime: "",
|
|
fileList: [],
|
|
};
|
|
},
|
|
submitDealForm() {
|
|
this.$refs["dealForm"].validate((valid) => {
|
|
if (valid) {
|
|
let params = Object.assign({}, {
|
|
...this.dealForm,
|
|
projectSn: this.$store.state.projectSn,
|
|
});
|
|
if(this.dealForm.fileList.length > 0) {
|
|
params.imageUrl = this.dealForm.fileList[0].name;
|
|
}
|
|
aiAnalyseHardWareAlarmRecordAdd(params).then((result) => {
|
|
if (result.success) {
|
|
this.$message.success(result.message);
|
|
this.getList();
|
|
this.dealShow = false;
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
dealFormCancel() {
|
|
this.initDealForm();
|
|
this.$refs["dealForm"].resetFields();
|
|
this.dealShow = false;
|
|
},
|
|
handleAvatarSuccess(res, file) {
|
|
if (res.status == "SUCCESS") {
|
|
this.dealForm.fileList.push({
|
|
name: file.response.data[0].imageUrl,
|
|
url: this.$store.state.FILEURL + file.response.data[0].imageUrl,
|
|
});
|
|
}
|
|
},
|
|
handleExceed(files, fileList) {
|
|
this.$message.warning(
|
|
this.$t("message.docManage.dialog_upload_files.limitingChoice")
|
|
);
|
|
},
|
|
handleDelete(file, fileList) {
|
|
this.dealForm.fileList = fileList;
|
|
},
|
|
//获取所有的闸机设备
|
|
getAiAnalyseHardWareRecordList() {
|
|
aiAnalyseHardWareRecordList({ projectSn: this.$store.state.projectSn }).then((list) => {
|
|
this.aiAnalyseHardList = list.result;
|
|
});
|
|
},
|
|
pushAlarm(obj) {
|
|
console.log("删除", obj);
|
|
this.$confirm(
|
|
"确定进行此操作吗?",
|
|
this.$t("message.personnelPosition.beaconManage.table.Tips"),
|
|
{
|
|
confirmButtonText: this.$t("message.personnelPosition.confirmButtonText"),
|
|
cancelButtonText: this.$t("message.personnelPosition.cancelButtonText"),
|
|
type: "warning",
|
|
}
|
|
)
|
|
.then(() => {
|
|
violationPushDataApi({ id: obj.id }).then((result) => {
|
|
if (result.success) {
|
|
this.$message.success(result.message);
|
|
this.getList();
|
|
}
|
|
});
|
|
})
|
|
.catch(() => {});
|
|
},
|
|
deleteDev(obj) {
|
|
console.log("删除", obj);
|
|
this.$confirm(
|
|
"确定进行此操作吗?",
|
|
this.$t("message.personnelPosition.beaconManage.table.Tips"),
|
|
{
|
|
confirmButtonText: this.$t("message.personnelPosition.confirmButtonText"),
|
|
cancelButtonText: this.$t("message.personnelPosition.cancelButtonText"),
|
|
type: "warning",
|
|
}
|
|
)
|
|
.then(() => {
|
|
PositiveDeletionDataApi({ id: obj.id }).then((result) => {
|
|
if (result.success) {
|
|
this.$message.success(result.message);
|
|
this.getList();
|
|
}
|
|
});
|
|
})
|
|
.catch(() => {});
|
|
},
|
|
// 树形控件点击
|
|
treeClick(data) {
|
|
console.log(data);
|
|
if (data.status == 1) {
|
|
this.$message.warning("无法选中已禁用组织");
|
|
} else {
|
|
this.selectEnterpriseVal = data.enterpriseName;
|
|
this.formInline.enterpriseId = data.enterpriseId;
|
|
this.$refs.selectEnterpriseRef.blur();
|
|
}
|
|
},
|
|
getTreeList() {
|
|
selectHierarchyEnterpriseListApi({
|
|
projectSn: this.$store.state.projectSn,
|
|
}).then((result) => {
|
|
if (result.success) {
|
|
this.treeList = result.result;
|
|
}
|
|
});
|
|
},
|
|
//获取承包商/厂区
|
|
getPositionList() {
|
|
let data = {
|
|
projectSn: this.$store.state.projectSn,
|
|
};
|
|
getQualityRegionListApi(data).then((res) => {
|
|
console.log("res=================", res);
|
|
if (res.code == 200) {
|
|
this.areaList = res.result;
|
|
console.log(this.areaList, 135456);
|
|
}
|
|
});
|
|
},
|
|
selectChange(val) {
|
|
console.log(val, 123);
|
|
if (!val) {
|
|
this.selectVal = "";
|
|
this.areaSelectVal = "";
|
|
this.formInline.qualityRegionId = "";
|
|
}
|
|
},
|
|
selectEnterpriseChange(val) {
|
|
console.log(val, 123);
|
|
if (!val) {
|
|
this.selectEnterpriseVal = "";
|
|
this.formInline.enterpriseId = "";
|
|
}
|
|
},
|
|
// 树形控件点击
|
|
treeAreaClick(data) {
|
|
console.log(data);
|
|
if (data.status == 1) {
|
|
this.$message.warning("无法选中已禁用组织");
|
|
} else {
|
|
this.selectVal = data.regionName;
|
|
this.areaSelectVal = data.id;
|
|
this.formInline.qualityRegionId = data.id;
|
|
this.$refs.selectRef.blur();
|
|
}
|
|
},
|
|
// 选择人员下拉回调
|
|
dutySelectChange(e) {
|
|
// const item = this.dutyList.find(item => item.userId === e)
|
|
// this.addEditForm.dutyUserName = item.realName
|
|
const newArray = e.map((item) => ({ id: item }));
|
|
this.addEditForm.workerInfoList = newArray;
|
|
console.log("下拉选择", newArray);
|
|
},
|
|
close() {
|
|
this.addEditForm = {};
|
|
this.selectList = [];
|
|
this.isDetail = false;
|
|
this.$nextTick(() => {
|
|
this.$refs.addEditForm.clearValidate();
|
|
});
|
|
},
|
|
|
|
//查询选择人员下拉
|
|
getPersonDetail(itemId) {
|
|
let data = {
|
|
projectSn: this.$store.state.projectSn,
|
|
aiAnalyseHardWareAlarmRecordId: itemId,
|
|
};
|
|
getViolatorList(data).then((res) => {
|
|
if (res.code == 200) {
|
|
this.selectList = res.result.map((items) => items.id);
|
|
console.log("回显选择人员", this.selectList);
|
|
} else {
|
|
this.$message.error(res.message);
|
|
}
|
|
});
|
|
},
|
|
|
|
//查询选择人员下拉
|
|
getDutyPerson() {
|
|
let data = {
|
|
projectSn: this.$store.state.projectSn,
|
|
isFilterQualityRegionEnterprise: 1,
|
|
};
|
|
getWorkerInfoList(data).then((res) => {
|
|
if (res.code == 200) {
|
|
this.workerListOptions = res.result.records;
|
|
console.log("获取施工人员下拉", this.workerListOptions);
|
|
} else {
|
|
this.$message.error(res.message);
|
|
}
|
|
});
|
|
},
|
|
|
|
// 打开处置弹窗
|
|
openDialog(item) {
|
|
this.recordShow = true;
|
|
this.addEditForm = JSON.parse(JSON.stringify(item));
|
|
this.getPersonDetail(item.id);
|
|
console.log("打开处置弹窗", item);
|
|
},
|
|
|
|
// 打开 详情处置弹窗
|
|
openDialogDetail(item) {
|
|
this.recordShow = true;
|
|
this.isDetail = true;
|
|
this.addEditForm = JSON.parse(JSON.stringify(item));
|
|
this.getPersonDetail(item.id);
|
|
console.log("打开处置弹窗", item);
|
|
},
|
|
|
|
// 保存
|
|
addBtn() {
|
|
let params = JSON.parse(JSON.stringify(this.addEditForm));
|
|
params.projectSn = this.$store.state.projectSn;
|
|
if (this.addEditForm.handleResult == 1) {
|
|
params.handleDone = true;
|
|
}
|
|
this.$refs.addEditForm.validate((valid) => {
|
|
if (valid) {
|
|
console.log("保存", params);
|
|
aiAnalyseHardWareAlarmRecordEdit(params).then((result) => {
|
|
if (result.success) {
|
|
this.$message.success(result.message);
|
|
this.getList();
|
|
this.recordShow = false;
|
|
}
|
|
});
|
|
} else {
|
|
return false;
|
|
}
|
|
});
|
|
},
|
|
|
|
//获取字典施工阶段
|
|
getDictionaryList() {
|
|
getDictionaryItemApi({
|
|
dictionaryEncoding: "ai_analyse_hard_ware_alarm_record_type",
|
|
projectSn: this.$store.state.projectSn,
|
|
}).then((res) => {
|
|
if (res.result.length > 0) {
|
|
console.log("获取字典施工阶段", res.result);
|
|
this.alarmTypeArrList = res.result;
|
|
}
|
|
});
|
|
},
|
|
// 获取当前时间 返回YYYY-MM-DD HH:mm:ss
|
|
selectNowDate() {
|
|
var date = new Date(),
|
|
year = date.getFullYear(),
|
|
month = date.getMonth() + 1,
|
|
day = date.getDate(),
|
|
hours = date.getHours(), //获取当前小时数(0-23)
|
|
minutes = date.getMinutes(), //获取当前分钟数(0-59)
|
|
seconds = date.getSeconds();
|
|
month >= 1 && month <= 9 ? (month = "0" + month) : "";
|
|
day >= 0 && day <= 9 ? (day = "0" + day) : "";
|
|
hours >= 0 && hours <= 9 ? (hours = "0" + hours) : "";
|
|
minutes >= 0 && minutes <= 9 ? (minutes = "0" + minutes) : "";
|
|
seconds >= 0 && seconds <= 9 ? (seconds = "0" + seconds) : "";
|
|
// var timer = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds // 获取至当前的时间
|
|
var timer = year + "-" + month + "-" + day + " " + "23:59:59";
|
|
var timer2 = year + "-" + month + "-" + day + " " + "00:00:00";
|
|
this.dateRangeArr = [timer2, timer];
|
|
this.formInline.startTime = this.dateRangeArr[0];
|
|
this.formInline.endTime = this.dateRangeArr[1];
|
|
console.log(timer);
|
|
// return timer;
|
|
},
|
|
getTypeName(val) {
|
|
let text = "";
|
|
this.alarmTypeArrList.forEach((item) => {
|
|
if (item.data == val) {
|
|
text = item.name;
|
|
}
|
|
});
|
|
return text;
|
|
},
|
|
changeTime() {
|
|
if (this.dateRangeArr) {
|
|
this.formInline.startTime = this.dateRangeArr[0];
|
|
this.formInline.endTime = this.dateRangeArr[1];
|
|
} else {
|
|
this.formInline.startTime = "";
|
|
this.formInline.endTime = "";
|
|
}
|
|
},
|
|
refresh() {
|
|
this.pageInfo.pageNo = 1;
|
|
this.formInline.hardwareId = "";
|
|
this.formInline.startTime = "";
|
|
this.formInline.endTime = "";
|
|
this.formInline.alarmType = "";
|
|
this.formInline.handleDone = "";
|
|
this.dateRangeArr = [];
|
|
// 区域内容清空
|
|
this.selectVal = "";
|
|
this.areaSelectVal = "";
|
|
this.formInline.qualityRegionId = "";
|
|
// 企业内容情况
|
|
this.selectEnterpriseVal = "";
|
|
this.formInline.enterpriseId = "";
|
|
this.getList();
|
|
},
|
|
getList(val) {
|
|
if (val == 1) {
|
|
this.pageInfo.pageNo = 1;
|
|
}
|
|
let json = Object.assign(this.pageInfo, this.formInline);
|
|
json.projectSn = this.$store.state.projectSn;
|
|
json.isPushed = 0;
|
|
getAlarmDealPageApi(json).then((res) => {
|
|
this.workerList = res.result.records;
|
|
this.pageInfo.total = res.result.total;
|
|
setTimeout(() => {
|
|
this.$previewRefresh();
|
|
}, 100);
|
|
});
|
|
},
|
|
goBack() {
|
|
this.pageType = "list";
|
|
this.getList();
|
|
},
|
|
// addFn() {
|
|
// this.itemId = "";
|
|
// this.pageType = "add";
|
|
// },
|
|
editBefore(item) {
|
|
this.itemId = item.id;
|
|
this.pageType = "detail";
|
|
},
|
|
deleteBefore(item) {
|
|
this.$confirm(
|
|
this.$t("message.sixComplete.carWash.tipText") + "?",
|
|
this.$t("message.sixComplete.carWash.tip"),
|
|
{
|
|
confirmButtonText: this.$t("message.sixComplete.carWash.confirm"),
|
|
cancelButtonText: this.$t("message.sixComplete.carWash.cancel"),
|
|
type: "warning",
|
|
}
|
|
)
|
|
.then(() => {
|
|
workerSafeEducationDeleteApi({ id: item.id }).then((res) => {
|
|
this.$message({
|
|
type: "success",
|
|
message: this.$t("message.sixComplete.carWash.deleteSuccess") + "!",
|
|
});
|
|
this.getList();
|
|
});
|
|
})
|
|
.catch(() => {
|
|
this.$message({
|
|
type: "info",
|
|
message: this.$t("message.sixComplete.carWash.cancelDelete"),
|
|
});
|
|
});
|
|
},
|
|
SizeChange(val) {
|
|
console.log(val);
|
|
this.pageInfo.pageSize = val;
|
|
this.getList();
|
|
},
|
|
CurrentChange(val) {
|
|
console.log(val);
|
|
this.pageInfo.pageNo = val;
|
|
this.getList();
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="less" scoped>
|
|
.el-input {
|
|
width: 220px;
|
|
}
|
|
.backText {
|
|
margin: -10px 0 0 0;
|
|
}
|
|
.jyjzPage .backText {
|
|
margin: 15px 15px 0;
|
|
/deep/.el-page-header__content {
|
|
color: white;
|
|
}
|
|
}
|
|
.listContent {
|
|
overflow: hidden;
|
|
height: calc(100% - 70px);
|
|
}
|
|
.listBox {
|
|
float: left;
|
|
width: 20%;
|
|
margin-bottom: 20px;
|
|
.inner {
|
|
margin: 0 10px;
|
|
box-shadow: 0px 2px 16px 0px rgba(131, 183, 255, 0.2);
|
|
border-radius: 6px;
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
.videoBox {
|
|
position: relative;
|
|
height: 200px;
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.desc {
|
|
background-color: rgba(0, 0, 0, 0.5);
|
|
padding: 5px 10px;
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: calc(100% - 20px);
|
|
color: white;
|
|
font-size: 14px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
.status-style {
|
|
position: absolute;
|
|
top: 0px;
|
|
left: 0px;
|
|
color: white;
|
|
text-align: center;
|
|
width: 60px;
|
|
height: 20px;
|
|
line-height: 20px;
|
|
border-radius: 10px;
|
|
z-index: 10;
|
|
font-size: 14px;
|
|
}
|
|
.result-style {
|
|
background-color: #da4846;
|
|
}
|
|
.no-result-style {
|
|
background-color: #5b82ee;
|
|
}
|
|
}
|
|
.title {
|
|
width: 42%;
|
|
padding: 16px 10px;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
// cursor: pointer;
|
|
&:hover {
|
|
color: @--color-primary;
|
|
}
|
|
}
|
|
&:hover {
|
|
.deleteBtn {
|
|
display: block;
|
|
}
|
|
}
|
|
.deleteBtn {
|
|
display: none;
|
|
position: absolute;
|
|
right: 10px;
|
|
bottom: 10px;
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
.pagerBox {
|
|
margin: 20px;
|
|
}
|
|
.table_wrap {
|
|
position: relative;
|
|
}
|
|
.toDisposeOf {
|
|
color: #fff;
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
// position: absolute;
|
|
}
|
|
.pushBtn {
|
|
right: 27%;
|
|
bottom: 4%;
|
|
}
|
|
.alarmDeleteBtn {
|
|
right: 2%;
|
|
bottom: 4%;
|
|
}
|
|
.toDisposeDetail {
|
|
color: #fff;
|
|
cursor: pointer;
|
|
position: absolute;
|
|
right: 3%;
|
|
bottom: 4%;
|
|
}
|
|
// 下拉框样式修改
|
|
/deep/.el-select-dropdown__item.hover,
|
|
.el-select-dropdown__item.hover,
|
|
.el-select-dropdown__item:hover {
|
|
background-color: transparent;
|
|
}
|
|
.searchBox .el-form-item {
|
|
margin: 5px 15px 0px 0;
|
|
}
|
|
</style>
|