flx:修改web插件显示问题

This commit is contained in:
Rain_ 2025-12-06 10:18:24 +08:00
parent e3be0dbc36
commit ee529d5e6c
4 changed files with 2041 additions and 1909 deletions

View File

@ -481,7 +481,7 @@ const play = (row, index) => {
reloadBtn.textContent = "重新加载"; reloadBtn.textContent = "重新加载";
reloadBtn.addEventListener("click", (e) => { reloadBtn.addEventListener("click", (e) => {
e.stopPropagation(); e.stopPropagation();
onReload(row.id); onReload(row.itemId);
}); });
// //
@ -515,9 +515,9 @@ const play = (row, index) => {
const onReload = (id) => { const onReload = (id) => {
console.log("重新加载", id); console.log("重新加载", id);
// //
const findItem = videoInfo.devH5List.find(item => item.id === id); const findItem = videoInfo.devH5List.find(item => item.itemId === id);
if (findItem) { if (findItem) {
play(findItem, videoInfo.iWndIndex); play(findItem, findItem.eIndex);
} }
}; };
const onTwoSubmit = num => { const onTwoSubmit = num => {

View File

@ -108,13 +108,13 @@ onBeforeUnmount(() => {
}) })
// //
watch(() => props.devList, (newVal) => { // watch(() => props.devList, (newVal) => {
if (newVal.length > 0) { // if (newVal.length > 0) {
newVal.forEach(element => { // newVal.forEach(element => {
play(element) // play(element)
}) // })
} // }
}) // })
watch(() => props.equipmentDialog, (newVal) => { watch(() => props.equipmentDialog, (newVal) => {
if (videoPlugin.value) { if (videoPlugin.value) {

View File

@ -31,10 +31,13 @@
checkStrictly: true, checkStrictly: true,
emitPath: false, emitPath: false,
value: 'id', value: 'id',
label: 'typeName' label: 'typeName',
}" }"
></el-cascader> ></el-cascader>
<el-input v-model="workTicketInfo.numberOrContent" placeholder="施工区域或工作票编号"></el-input> <el-input
v-model="workTicketInfo.numberOrContent"
placeholder="施工区域或工作票编号"
></el-input>
<el-date-picker <el-date-picker
v-model="workTicketInfo.constructionTime" v-model="workTicketInfo.constructionTime"
type="daterange" type="daterange"
@ -47,7 +50,12 @@
<div @click="onWorkTicketRefresh" class="refresh">刷新</div> <div @click="onWorkTicketRefresh" class="refresh">刷新</div>
</div> </div>
<el-scrollbar class="box-main"> <el-scrollbar class="box-main">
<div style="height: 100%" infinite-scroll-distance="1" :infinite-scroll-immediate="false" v-infinite-scroll="load"> <div
style="height: 100%"
infinite-scroll-distance="1"
:infinite-scroll-immediate="false"
v-infinite-scroll="load"
>
<div class="box-main_box" v-for="item in workTicketList" :key="item.id"> <div class="box-main_box" v-for="item in workTicketList" :key="item.id">
<div> <div>
<div> <div>
@ -75,7 +83,7 @@
wks_active: item.status == 1, wks_active: item.status == 1,
sgz_active: item.status == 2, sgz_active: item.status == 2,
ztz_active: item.status == 3, ztz_active: item.status == 3,
ywg_acitve: item.status == 4 ywg_acitve: item.status == 4,
}" }"
> >
{{ updateStatus(item.status) }} {{ updateStatus(item.status) }}
@ -106,7 +114,12 @@
clearable clearable
placeholder="请选择" placeholder="请选择"
> >
<el-option v-for="(item, index) in deviceStateList" :key="index" :label="item.title" :value="item.id"> <el-option
v-for="(item, index) in deviceStateList"
:key="index"
:label="item.title"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
@ -115,8 +128,16 @@
</div> </div>
</div> </div>
<div class="content-main"> <div class="content-main">
<div v-if="!viewAllShow" class="content-left" :class="{ 'content-left_active': isShowDetail }"> <div
<div @click="isShowDetail = true" class="content-left_box" v-if="!isShowDetail"> v-if="!viewAllShow"
class="content-left"
:class="{ 'content-left_active': isShowDetail }"
>
<div
@click="isShowDetail = true"
class="content-left_box"
v-if="!isShowDetail"
>
<div>工作票详情</div> <div>工作票详情</div>
<div></div> <div></div>
</div> </div>
@ -168,7 +189,10 @@
</div> </div>
<div class="box1"> <div class="box1">
<div>施工时间</div> <div>施工时间</div>
<div>{{ workTicketDetail.constructionTimeBegin }} - {{ workTicketDetail.constructionTimeEnd }}</div> <div>
{{ workTicketDetail.constructionTimeBegin }} -
{{ workTicketDetail.constructionTimeEnd }}
</div>
</div> </div>
<div class="box1"> <div class="box1">
<div>申请时间</div> <div>申请时间</div>
@ -188,7 +212,12 @@
<div class="box1"> <div class="box1">
<div>工作票附件</div> <div>工作票附件</div>
<div class="content-img"> <div class="content-img">
<template v-if="workTicketDetail.workTicketAttachment && workTicketDetail.workTicketAttachment.length > 0"> <template
v-if="
workTicketDetail.workTicketAttachment &&
workTicketDetail.workTicketAttachment.length > 0
"
>
<el-image <el-image
v-for="item in workTicketDetail.workTicketAttachment" v-for="item in workTicketDetail.workTicketAttachment"
:key="item.url" :key="item.url"
@ -207,7 +236,11 @@
<div></div> <div></div>
<div>{{ item.name }}</div> <div>{{ item.name }}</div>
</div> </div>
<div @click="downloadFileBtn(BASEURL + '/image/' + item.url, item.name)"> <div
@click="
downloadFileBtn(BASEURL + '/image/' + item.url, item.name)
"
>
<div></div> <div></div>
<div>下载</div> <div>下载</div>
</div> </div>
@ -218,7 +251,9 @@
</div> </div>
</div> </div>
<div class="content-right" :class="{ 'content-right_active': isShowDetail }"> <div class="content-right" :class="{ 'content-right_active': isShowDetail }">
<el-scrollbar :class="viewAllShow ? 'content-right_box-main1' : 'content-right_box-main'"> <el-scrollbar
:class="viewAllShow ? 'content-right_box-main1' : 'content-right_box-main'"
>
<!-- v-infinite-scroll="initPoliceCameraItemList" --> <!-- v-infinite-scroll="initPoliceCameraItemList" -->
<div <div
style="height: 100%" style="height: 100%"
@ -227,10 +262,14 @@
:class="{ :class="{
'content-right-top2': viewAllShow, 'content-right-top2': viewAllShow,
'content-right-top1': isShowDetail && !viewAllShow, 'content-right-top1': isShowDetail && !viewAllShow,
'content-right-top': !isShowDetail && !viewAllShow 'content-right-top': !isShowDetail && !viewAllShow,
}" }"
> >
<div v-for="item in policeCameraItemList" :key="item.itemId" :data-key="item.key"> <div
v-for="item in policeCameraItemList"
:key="item.itemId"
:data-key="item.key"
>
<div class="hls-video"> <div class="hls-video">
<!-- <HlsPlayer :src="'https://gcalic.v.myalicdn.com/gc/wgw05_1/index.m3u8'" :autoplay="true" :controls="true" /> --> <!-- <HlsPlayer :src="'https://gcalic.v.myalicdn.com/gc/wgw05_1/index.m3u8'" :autoplay="true" :controls="true" /> -->
<!-- <HlsPlayer <!-- <HlsPlayer
@ -243,8 +282,8 @@
:devList="[ :devList="[
{ {
...item, ...item,
status: workTicketDetail.status status: workTicketDetail.status,
} },
]" ]"
:key="'player-' + item.itemId" :key="'player-' + item.itemId"
:playerId="'player-' + item.itemId" :playerId="'player-' + item.itemId"
@ -307,7 +346,12 @@
<span v-else> {{ row.no }}次作业 </span> <span v-else> {{ row.no }}次作业 </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :width="300" align="center" prop="startTime" label="总时间段"> <el-table-column
:width="300"
align="center"
prop="startTime"
label="总时间段"
>
<template #default="{ row }"> <template #default="{ row }">
<span v-if="row.fileType"> <span v-if="row.fileType">
{{ row.startTime ? row.startTime : "暂无" }} - {{ row.startTime ? row.startTime : "暂无" }} -
@ -321,13 +365,23 @@
</el-table-column> </el-table-column>
<el-table-column align="center" prop="begin" label="总时长"> <el-table-column align="center" prop="begin" label="总时长">
<template #default="{ row }"> <template #default="{ row }">
<span class="time-diff" v-if="row.fileType">{{ itemDiffUp(row.startTime, row.endTime) }}</span> <span class="time-diff" v-if="row.fileType">{{
<span class="time-diff" v-else>{{ itemDiffUp(row.begin, row.end) }}</span> itemDiffUp(row.startTime, row.endTime)
}}</span>
<span class="time-diff" v-else>{{
itemDiffUp(row.begin, row.end)
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="fileType" label="操作"> <el-table-column align="center" prop="fileType" label="操作">
<template #default="{ row }"> <template #default="{ row }">
<div @click="onViewrePlayClick(row)" v-if="row.fileType" class="viewreplay">查看回放</div> <div
@click="onViewrePlayClick(row)"
v-if="row.fileType"
class="viewreplay"
>
查看回放
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -357,7 +411,12 @@
<div>时长{{ viewreplayInfo.duration }}</div> <div>时长{{ viewreplayInfo.duration }}</div>
</div> </div>
</div> </div>
<audio ref="audioRefs" :src="BASEURL + '/image/' + viewreplayInfo.fileUrl" controls loop></audio> <audio
ref="audioRefs"
:src="BASEURL + '/image/' + viewreplayInfo.fileUrl"
controls
loop
></audio>
<div <div
class="bodyworn_pause" class="bodyworn_pause"
:class="{ bodyworn_play: viewreplayInfo.is_play }" :class="{ bodyworn_play: viewreplayInfo.is_play }"
@ -367,8 +426,14 @@
<div class="video-content" v-else> <div class="video-content" v-else>
<div class="card-img"> <div class="card-img">
<video controls v-if="viewreplayInfo.fileType == 3"> <video controls v-if="viewreplayInfo.fileType == 3">
<source :src="BASEURL + '/image/' + viewreplayInfo.fileUrl" type="video/mp4" /> <source
<source :src="BASEURL + '/image/' + viewreplayInfo.fileUrl" type="video/webm" /> :src="BASEURL + '/image/' + viewreplayInfo.fileUrl"
type="video/mp4"
/>
<source
:src="BASEURL + '/image/' + viewreplayInfo.fileUrl"
type="video/webm"
/>
您的浏览器不支持 HTML5 video 标签 您的浏览器不支持 HTML5 video 标签
</video> </video>
<el-image <el-image
@ -381,7 +446,9 @@
<template v-if="viewreplayInfo.fileType == 3"> <template v-if="viewreplayInfo.fileType == 3">
<div class="card-flex"> <div class="card-flex">
<div class="card-num webkit-clamp_1">{{ viewreplayInfo.fileName }}</div> <div class="card-num webkit-clamp_1">{{ viewreplayInfo.fileName }}</div>
<div class="card-num">{{ (viewreplayInfo.fileLen / (1024 * 1024)).toFixed(2) }}MB</div> <div class="card-num">
{{ (viewreplayInfo.fileLen / (1024 * 1024)).toFixed(2) }}MB
</div>
</div> </div>
<div class="card-flex"> <div class="card-flex">
<div>{{ viewreplayInfo.startTime }}</div> <div>{{ viewreplayInfo.startTime }}</div>
@ -423,7 +490,10 @@
</div> </div>
<div> <div>
<div>设备状态</div> <div>设备状态</div>
<div class="state-box" :class="{ 'state-box_offline': equipmentDetail.deviceState != 1 }"> <div
class="state-box"
:class="{ 'state-box_offline': equipmentDetail.deviceState != 1 }"
>
{{ equipmentDetail.deviceState == 1 ? "在线" : "离线" }} {{ equipmentDetail.deviceState == 1 ? "在线" : "离线" }}
</div> </div>
</div> </div>
@ -447,19 +517,29 @@
<div> <div>
<div>工作票编号</div> <div>工作票编号</div>
<div> <div>
{{ workTicketDetail.workTicketNumber ? workTicketDetail.workTicketNumber : "--" }} {{
workTicketDetail.workTicketNumber
? workTicketDetail.workTicketNumber
: "--"
}}
</div> </div>
</div> </div>
<div> <div>
<div>施工区域</div> <div>施工区域</div>
<div> <div>
{{ workTicketDetail.constructionAreaNames ? workTicketDetail.constructionAreaNames : "--" }} {{
workTicketDetail.constructionAreaNames
? workTicketDetail.constructionAreaNames
: "--"
}}
</div> </div>
</div> </div>
<div> <div>
<div>申请单位</div> <div>申请单位</div>
<div> <div>
{{ workTicketDetail.applicantNames ? workTicketDetail.applicantNames : "--" }} {{
workTicketDetail.applicantNames ? workTicketDetail.applicantNames : "--"
}}
</div> </div>
</div> </div>
<div> <div>
@ -478,7 +558,9 @@
<div> <div>
<div>申请时间</div> <div>申请时间</div>
<div> <div>
{{ workTicketDetail.applicationTime ? workTicketDetail.applicationTime : "--" }} {{
workTicketDetail.applicationTime ? workTicketDetail.applicationTime : "--"
}}
</div> </div>
</div> </div>
<div> <div>
@ -499,7 +581,12 @@
<div class="box1"> <div class="box1">
<div>工作票附件</div> <div>工作票附件</div>
<div class="content-img"> <div class="content-img">
<template v-if="workTicketDetail.workTicketAttachment && workTicketDetail.workTicketAttachment.length > 0"> <template
v-if="
workTicketDetail.workTicketAttachment &&
workTicketDetail.workTicketAttachment.length > 0
"
>
<el-image <el-image
v-for="item in workTicketDetail.workTicketAttachment" v-for="item in workTicketDetail.workTicketAttachment"
:key="item.url" :key="item.url"
@ -547,7 +634,7 @@ import {
getWorkTicketHistoryListApi, getWorkTicketHistoryListApi,
getVideoItemInfoPoliceCameraItemApi, getVideoItemInfoPoliceCameraItemApi,
getPoliceCameraItemPageApi, getPoliceCameraItemPageApi,
selectAllProjectInfoList selectAllProjectInfoList,
} from "@/api/modules/workTicket"; } from "@/api/modules/workTicket";
import { getUseProjectVideoConfigApi } from "@/api/modules/tower"; import { getUseProjectVideoConfigApi } from "@/api/modules/tower";
import dayjs from "dayjs"; import dayjs from "dayjs";
@ -559,64 +646,65 @@ const workTicketCountList = ref([
{ {
label: "施工中", label: "施工中",
value: 0, value: 0,
stateType: 2 stateType: 2,
}, },
{ {
label: "全部", label: "全部",
value: 0, value: 0,
stateType: "" stateType: "",
}, },
{ {
label: "未开始", label: "未开始",
value: 0, value: 0,
stateType: 1 stateType: 1,
}, },
{ {
label: "暂停中", label: "暂停中",
value: 0, value: 0,
stateType: 3 stateType: 3,
}, },
{ {
label: "已完工", label: "已完工",
value: 0, value: 0,
stateType: 4 stateType: 4,
} },
]); ]);
const getWorkTicketCountWorkTicket = showLoading => { const getWorkTicketCountWorkTicket = (showLoading) => {
getWorkTicketCountWorkTicketApi( getWorkTicketCountWorkTicketApi(
{ {
projectSn: store.sn projectSn: store.sn,
}, },
showLoading showLoading
).then(res => { ).then((res) => {
if (res.code == 200) { if (res.code == 200) {
// workTicketCountList.value = res.result; // workTicketCountList.value = res.result;
workTicketCountList.value = [ workTicketCountList.value = [
{ {
label: "施工中", label: "施工中",
value: res.result.ing, value: res.result.ing,
stateType: 2 stateType: 2,
}, },
{ {
label: "全部", label: "全部",
stateType: "", stateType: "",
value: res.result.ing + res.result.done + res.result.pause + res.result.notStarted value:
res.result.ing + res.result.done + res.result.pause + res.result.notStarted,
}, },
{ {
label: "未开始", label: "未开始",
value: res.result.notStarted, value: res.result.notStarted,
stateType: 1 stateType: 1,
}, },
{ {
label: "暂停中", label: "暂停中",
value: res.result.pause, value: res.result.pause,
stateType: 3 stateType: 3,
}, },
{ {
label: "已完工", label: "已完工",
value: res.result.done, value: res.result.done,
stateType: 4 stateType: 4,
} },
]; ];
} }
}); });
@ -628,10 +716,10 @@ const workTicketInfo = reactive({
constructionTime: [], constructionTime: [],
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
total: 0 total: 0,
}); });
const workTicketList = ref([]); const workTicketList = ref([]);
const onWorkTicketStateClick = row => { const onWorkTicketStateClick = (row) => {
workTicketInfo.status = row.stateType; workTicketInfo.status = row.stateType;
onWorkTicketQuery(); onWorkTicketQuery();
}; };
@ -650,14 +738,20 @@ const onWorkTicketRefresh = () => {
const getWorkTicketPage = () => { const getWorkTicketPage = () => {
const params = { const params = {
...workTicketInfo, ...workTicketInfo,
applicationTime_begin: workTicketInfo.constructionTime.length > 0 ? workTicketInfo.constructionTime[0] : "", applicationTime_begin:
applicationTime_end: workTicketInfo.constructionTime.length > 0 ? workTicketInfo.constructionTime[1] : "" workTicketInfo.constructionTime.length > 0
? workTicketInfo.constructionTime[0]
: "",
applicationTime_end:
workTicketInfo.constructionTime.length > 0
? workTicketInfo.constructionTime[1]
: "",
}; };
delete params.constructionTime; delete params.constructionTime;
getWorkTicketPageApi({ getWorkTicketPageApi({
...params, ...params,
projectSn: store.sn projectSn: store.sn,
}).then(res => { }).then((res) => {
if (res.code == 200) { if (res.code == 200) {
workTicketList.value = workTicketList.value.concat(res.result.records); workTicketList.value = workTicketList.value.concat(res.result.records);
if (workTicketInfo.pageNo == 1) { if (workTicketInfo.pageNo == 1) {
@ -671,9 +765,15 @@ const getWorkTicketPage = () => {
}); });
}; };
const load = () => { const load = () => {
console.log("load", workTicketInfo.pageNo, workTicketInfo.pageSize, workTicketInfo.total); console.log(
"load",
workTicketInfo.pageNo,
workTicketInfo.pageSize,
workTicketInfo.total
);
if (workTicketInfo.pageNo > 0 && workTicketInfo.total == 0) return; if (workTicketInfo.pageNo > 0 && workTicketInfo.total == 0) return;
if (workTicketInfo.pageNo * workTicketInfo.pageSize > workTicketInfo.total) return ElMessage.warning("没有更多数据了!"); if (workTicketInfo.pageNo * workTicketInfo.pageSize > workTicketInfo.total)
return ElMessage.warning("没有更多数据了!");
workTicketInfo.pageNo += 1; workTicketInfo.pageNo += 1;
getWorkTicketPage(); getWorkTicketPage();
}; };
@ -705,7 +805,7 @@ const onViewAllClick = () => {
const equipmentDialog = ref(false); const equipmentDialog = ref(false);
const equipmentDetail = ref({}); const equipmentDetail = ref({});
// //
const onEquipmentClick = row => { const onEquipmentClick = (row) => {
equipmentDetail.value = row; equipmentDetail.value = row;
getWorkTicketQueryById(equipmentDetail.value.workTicketId); getWorkTicketQueryById(equipmentDetail.value.workTicketId);
equipmentDialog.value = true; equipmentDialog.value = true;
@ -715,11 +815,11 @@ const viewreplayInfo = ref({});
const viewreplayDialog = ref(false); const viewreplayDialog = ref(false);
const audioRefs = ref(null); const audioRefs = ref(null);
// //
const onViewrePlayClick = row => { const onViewrePlayClick = (row) => {
console.log(111); console.log(111);
viewreplayInfo.value = { viewreplayInfo.value = {
...row, ...row,
is_play: false is_play: false,
}; };
viewreplayDialog.value = true; viewreplayDialog.value = true;
}; };
@ -735,10 +835,10 @@ const onAudioClick = () => {
}; };
const isShowDetail = ref(true); const isShowDetail = ref(true);
const workTicketDetail = ref({ const workTicketDetail = ref({
workTicketAttachment: [] workTicketAttachment: [],
}); });
// json // json
const isJSON = str => { const isJSON = (str) => {
try { try {
JSON.parse(str); JSON.parse(str);
} catch (e) { } catch (e) {
@ -765,30 +865,33 @@ const onViewDetail = (row, flag) => {
const getWorkTicketQueryById = (id) => { const getWorkTicketQueryById = (id) => {
getWorkTicketQueryByIdApi({ getWorkTicketQueryByIdApi({
id: id, id: id,
projectSn: store.sn projectSn: store.sn,
}).then(res => { }).then((res) => {
if (res.code == 200) { if (res.code == 200) {
workTicketDetail.value = { workTicketDetail.value = {
...res.result, ...res.result,
workTicketAttachment: workTicketAttachment:
isJSON(res.result.workTicketAttachment) && JSON.parse(res.result.workTicketAttachment) instanceof Array isJSON(res.result.workTicketAttachment) &&
JSON.parse(res.result.workTicketAttachment) instanceof Array
? JSON.parse(res.result.workTicketAttachment) ? JSON.parse(res.result.workTicketAttachment)
: [], : [],
safetyRiskAnalysis: safetyRiskAnalysis:
isJSON(res.result.safetyRiskAnalysis) && JSON.parse(res.result.safetyRiskAnalysis) instanceof Array isJSON(res.result.safetyRiskAnalysis) &&
JSON.parse(res.result.safetyRiskAnalysis) instanceof Array
? JSON.parse(res.result.safetyRiskAnalysis) ? JSON.parse(res.result.safetyRiskAnalysis)
: [], : [],
otherAttachment: otherAttachment:
isJSON(res.result.otherAttachment) && JSON.parse(res.result.otherAttachment) instanceof Array isJSON(res.result.otherAttachment) &&
JSON.parse(res.result.otherAttachment) instanceof Array
? JSON.parse(res.result.otherAttachment) ? JSON.parse(res.result.otherAttachment)
: [] : [],
}; };
} }
}); });
}; };
const historySearchInfo = reactive({ const historySearchInfo = reactive({
beginTime: [], beginTime: [],
value: "" value: "",
}); });
const workTicketHistoryList = ref([]); const workTicketHistoryList = ref([]);
const onWorkTicketHistoryRefresh = () => { const onWorkTicketHistoryRefresh = () => {
@ -800,20 +903,22 @@ const onWorkTicketHistoryRefresh = () => {
const getWorkTicketHistoryList = () => { const getWorkTicketHistoryList = () => {
const params = { const params = {
...historySearchInfo, ...historySearchInfo,
begin_end: historySearchInfo.beginTime.length > 0 ? historySearchInfo.beginTime[0] : "", begin_end:
end_start: historySearchInfo.beginTime.length > 0 ? historySearchInfo.beginTime[1] : "" historySearchInfo.beginTime.length > 0 ? historySearchInfo.beginTime[0] : "",
end_start:
historySearchInfo.beginTime.length > 0 ? historySearchInfo.beginTime[1] : "",
}; };
delete params.beginTime; delete params.beginTime;
getWorkTicketHistoryListApi({ getWorkTicketHistoryListApi({
...params, ...params,
workTicketId: workTicketDetail.value.id, workTicketId: workTicketDetail.value.id,
projectSn: store.sn projectSn: store.sn,
}).then(res => { }).then((res) => {
if (res.code == 200) { if (res.code == 200) {
const resultList = res.result.sort((a, b) => a.no - b.no); const resultList = res.result.sort((a, b) => a.no - b.no);
workTicketHistoryList.value = resultList.map(item => { workTicketHistoryList.value = resultList.map((item) => {
return { return {
...item ...item,
}; };
}); });
} }
@ -824,21 +929,21 @@ const policeCameraItemInfo = reactive({
pageNo: 1, pageNo: 1,
pageSize: 6, pageSize: 6,
total: 0, total: 0,
deviceState: "" deviceState: "",
}); });
const deviceStateList = [ const deviceStateList = [
{ {
id: "", id: "",
title: "全部设备" title: "全部设备",
}, },
{ {
id: 1, id: 1,
title: "施工中在线" title: "施工中在线",
}, },
{ {
id: 2, id: 2,
title: "施工中离线" title: "施工中离线",
} },
]; ];
const policeCameraItemList = ref([]); const policeCameraItemList = ref([]);
const initPoliceCameraItemList = () => { const initPoliceCameraItemList = () => {
@ -847,7 +952,7 @@ const initPoliceCameraItemList = () => {
getPoliceCameraItemPage(); getPoliceCameraItemPage();
}; };
const onCurrentChange = val => { const onCurrentChange = (val) => {
policeCameraItemInfo.pageNo = val; policeCameraItemInfo.pageNo = val;
policeCameraItemList.value = []; policeCameraItemList.value = [];
getPoliceCameraItemPage(); getPoliceCameraItemPage();
@ -855,15 +960,15 @@ const onCurrentChange = val => {
// //
const getPoliceCameraItemPage = () => { const getPoliceCameraItemPage = () => {
const params = { const params = {
...policeCameraItemInfo ...policeCameraItemInfo,
}; };
getPoliceCameraItemPageApi({ getPoliceCameraItemPageApi({
...params, ...params,
ticketId: viewAllShow.value ? "" : workTicketDetail.value.id, ticketId: viewAllShow.value ? "" : workTicketDetail.value.id,
// deviceState: viewAllShow.value ? 1 : "", // deviceState: viewAllShow.value ? 1 : "",
bindTicket: viewAllShow.value ? 1 : "", bindTicket: viewAllShow.value ? 1 : "",
projectSn: store.sn projectSn: store.sn,
}).then(async res => { }).then(async (res) => {
if (res.code == 200) { if (res.code == 200) {
const records = res.result.records; const records = res.result.records;
// await Promise.all( // await Promise.all(
@ -881,30 +986,38 @@ const getPoliceCameraItemPage = () => {
}); });
}; };
const policeCameraItemLoad = () => { const policeCameraItemLoad = () => {
console.log("load", policeCameraItemInfo.pageNo, policeCameraItemInfo.pageSize, policeCameraItemInfo.total); console.log(
"load",
policeCameraItemInfo.pageNo,
policeCameraItemInfo.pageSize,
policeCameraItemInfo.total
);
if (policeCameraItemInfo.pageNo > 0 && policeCameraItemInfo.total == 0) return; if (policeCameraItemInfo.pageNo > 0 && policeCameraItemInfo.total == 0) return;
if (policeCameraItemInfo.pageNo * policeCameraItemInfo.pageSize > policeCameraItemInfo.total) if (
policeCameraItemInfo.pageNo * policeCameraItemInfo.pageSize >
policeCameraItemInfo.total
)
return ElMessage.warning("没有更多数据了!"); return ElMessage.warning("没有更多数据了!");
policeCameraItemInfo.pageNo += 1; policeCameraItemInfo.pageNo += 1;
getPoliceCameraItemPage(); getPoliceCameraItemPage();
}; };
const getVideoItemInfoPoliceCameraItem = async row => { const getVideoItemInfoPoliceCameraItem = async (row) => {
const res = await getVideoItemInfoPoliceCameraItemApi({ const res = await getVideoItemInfoPoliceCameraItemApi({
itemId: row.itemId, itemId: row.itemId,
projectSn: store.sn projectSn: store.sn,
}); });
if (res.code != 200) return null; if (res.code != 200) return null;
return res.result.videoInfo; return res.result.videoInfo;
}; };
const videoConfig = ref({ const videoConfig = ref({
enableNotPlugin: 1 enableNotPlugin: 1,
}); });
// //
const getProjectVideoConfigList = () => { const getProjectVideoConfigList = () => {
getUseProjectVideoConfigApi({ getUseProjectVideoConfigApi({
projectSn: store.sn projectSn: store.sn,
}).then(res => { }).then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.result) { if (res.result) {
videoConfig.value = res.result; videoConfig.value = res.result;
@ -926,29 +1039,31 @@ const onRefresh = () => {
const statusList = [ const statusList = [
{ {
value: 1, value: 1,
label: "未开始" label: "未开始",
}, },
{ {
value: 2, value: 2,
label: "施工中" label: "施工中",
}, },
{ {
value: 3, value: 3,
label: "暂停中" label: "暂停中",
}, },
{ {
value: 4, value: 4,
label: "已完工" label: "已完工",
} },
]; ];
const updateStatus = computed(() => { const updateStatus = computed(() => {
return id => { return (id) => {
const find = statusList.find(item => item.value == id); const find = statusList.find((item) => item.value == id);
return find ? find.label : "--"; return find ? find.label : "--";
}; };
}); });
const itemListDevNameUp = computed(() => { const itemListDevNameUp = computed(() => {
return workTicketDetail.value.itemList ? workTicketDetail.value.itemList.map(item => item.devName).join("、") : ""; return workTicketDetail.value.itemList
? workTicketDetail.value.itemList.map((item) => item.devName).join("、")
: "";
}); });
const workTicketTypeTreeList = ref([]); const workTicketTypeTreeList = ref([]);
// //
@ -956,9 +1071,9 @@ const getWorkTicketTypeTreePage = () => {
let data = { let data = {
projectSn: store.sn, projectSn: store.sn,
pageNo: 1, pageNo: 1,
pageSize: -1 pageSize: -1,
}; };
getWorkTicketTypeTreePageApi(data).then(res => { getWorkTicketTypeTreePageApi(data).then((res) => {
if (res.code == 200) { if (res.code == 200) {
workTicketTypeTreeList.value = res.result.records; workTicketTypeTreeList.value = res.result.records;
} }
@ -982,14 +1097,14 @@ const itemDiffUp = computed(() => {
// //
const downloadFileBtn = (url, name) => { const downloadFileBtn = (url, name) => {
fetch(url) fetch(url)
.then(response => { .then((response) => {
// //
if (!response.ok) { if (!response.ok) {
throw new Error("下载失败"); throw new Error("下载失败");
} }
return response.blob(); return response.blob();
}) })
.then(blob => { .then((blob) => {
// //
const url = window.URL.createObjectURL(blob); const url = window.URL.createObjectURL(blob);
// <a> // <a>
@ -1005,7 +1120,7 @@ const downloadFileBtn = (url, name) => {
// //
// 使blob // 使blob
}) })
.catch(error => { .catch((error) => {
// //
console.error(error); console.error(error);
}); });
@ -1013,21 +1128,23 @@ const downloadFileBtn = (url, name) => {
const projectList = ref([]); const projectList = ref([]);
const getSelectAllProjectInfoList = () => { const getSelectAllProjectInfoList = () => {
selectAllProjectInfoList({ selectAllProjectInfoList({
sn: store.sn sn: store.sn,
}).then(res => { }).then((res) => {
if (res.code == 200) { if (res.code == 200) {
projectList.value = [ projectList.value = [
{ {
projectName: "全部项目", projectName: "全部项目",
projectSn: store.sn projectSn: store.sn,
}, },
...res.result ...res.result,
]; ];
} }
}); });
}; };
const projectSnName = computed(() => { const projectSnName = computed(() => {
const find = projectList.value.find(item => item.projectSn == workTicketDetail.value.projectSn); const find = projectList.value.find(
(item) => item.projectSn == workTicketDetail.value.projectSn
);
return find ? find.projectName : ""; return find ? find.projectName : "";
}); });
</script> </script>
@ -1159,7 +1276,12 @@ const projectSnName = computed(() => {
.el-input, .el-input,
.el-cascader { .el-cascader {
width: 147px; width: 147px;
border-image: linear-gradient(180deg, rgba(148, 160, 180, 1), rgba(92, 111, 141, 1)) 1 1; border-image: linear-gradient(
180deg,
rgba(148, 160, 180, 1),
rgba(92, 111, 141, 1)
)
1 1;
} }
:deep(.el-date-editor) { :deep(.el-date-editor) {
@ -1273,7 +1395,11 @@ const projectSnName = computed(() => {
justify-content: space-between; justify-content: space-between;
padding: 9px 10px 9px 16px; padding: 9px 10px 9px 16px;
border: 1px solid transparent; border: 1px solid transparent;
background: linear-gradient(180deg, rgba(0, 170, 255, 0.3) 0%, rgba(0, 170, 255, 0) 100%); background: linear-gradient(
180deg,
rgba(0, 170, 255, 0.3) 0%,
rgba(0, 170, 255, 0) 100%
);
> div:first-child { > div:first-child {
display: flex; display: flex;
@ -1434,7 +1560,8 @@ const projectSnName = computed(() => {
> div:first-child { > div:first-child {
width: 16px; width: 16px;
height: 16px; height: 16px;
background: url("@/assets/images/workTicket/index-icon9.png") no-repeat; background: url("@/assets/images/workTicket/index-icon9.png")
no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
} }
@ -1445,7 +1572,8 @@ const projectSnName = computed(() => {
> div:first-child { > div:first-child {
width: 16px; width: 16px;
height: 16px; height: 16px;
background: url("@/assets/images/workTicket/index-icon10.png") no-repeat; background: url("@/assets/images/workTicket/index-icon10.png")
no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
} }
@ -1796,6 +1924,8 @@ const projectSnName = computed(() => {
padding: 0 20px 5px; padding: 0 20px 5px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
overflow-y: auto;
max-height: 85vh;
// flex-wrap: wrap; // flex-wrap: wrap;
.content-right { .content-right {
width: 48%; width: 48%;
@ -1843,7 +1973,8 @@ const projectSnName = computed(() => {
> div:first-child { > div:first-child {
width: 16px; width: 16px;
height: 16px; height: 16px;
background: url("~@/assets/images/companyBigScreen/terminalOperation/index-icon9.png") no-repeat; background: url("~@/assets/images/companyBigScreen/terminalOperation/index-icon9.png")
no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
} }
@ -1854,7 +1985,8 @@ const projectSnName = computed(() => {
> div:first-child { > div:first-child {
width: 16px; width: 16px;
height: 16px; height: 16px;
background: url("~@/assets/images/companyBigScreen/terminalOperation/index-icon10.png") no-repeat; background: url("~@/assets/images/companyBigScreen/terminalOperation/index-icon10.png")
no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
} }

View File

@ -544,7 +544,7 @@ const play = (row, index) => {
reloadBtn.textContent = "重新加载"; reloadBtn.textContent = "重新加载";
reloadBtn.addEventListener("click", (e) => { reloadBtn.addEventListener("click", (e) => {
e.stopPropagation(); e.stopPropagation();
onReload(row.id); onReload(row.itemId);
}); });
// //
@ -588,9 +588,9 @@ const play = (row, index) => {
const onReload = (id) => { const onReload = (id) => {
console.log("重新加载", id); console.log("重新加载", id);
// //
const findItem = videoInfo.devH5List.find(item => item.id === id); const findItem = videoInfo.devH5List.find(item => item.itemId === id);
if (findItem) { if (findItem) {
play(findItem, videoInfo.iWndIndex); play(findItem, findItem.eIndex);
} }
}; };
const onTwoSubmit = num => { const onTwoSubmit = num => {