hi-ucs/front/src/views/home/infrastructurePage.vue

2226 lines
66 KiB
Vue
Raw Normal View History

2022-06-25 13:34:24 +08:00
<!-- 基础设施 -->
2022-06-24 17:04:47 +08:00
<template>
2022-06-25 13:34:24 +08:00
<div class="infrastructrueBox">
<!-- 选项卡 -->
<div class="infrastructrue-tab">
<div v-for="(item, index) in tabList" :key="index" class="tabBox">
<b class="leftType">{{ item.title }}</b>
2022-07-26 16:33:10 +08:00
<el-button
@click="nullClick"
v-if="item.title == '视频标签'"
type="small"
>
清空
</el-button>
2022-06-25 13:34:24 +08:00
<span
v-for="itemContent in item.content"
:key="itemContent"
2022-07-07 19:07:56 +08:00
@click="tabClick(index, itemContent)"
2022-06-25 13:34:24 +08:00
:class="
2022-06-29 18:36:50 +08:00
clickList[index].content.indexOf(itemContent.labelName) != -1 ||
clickList[index].content.indexOf(itemContent) != -1
? 'down'
: ''
2022-06-25 13:34:24 +08:00
"
>
2022-06-29 18:36:50 +08:00
{{ itemContent.labelName || itemContent }}
2022-06-25 13:34:24 +08:00
</span>
</div>
</div>
2022-08-11 14:22:54 +08:00
<div v-if="!room" class="roomBox">
<div class="leftMake">
<div
class="leftTop"
@click="roomResults"
:class="roomYuyue ? 'roomBackground' : 'nullBackground'"
>
会议室预约
</div>
<div
class="leftBottom"
@click="result"
:class="roomResult ? 'roomBackground' : 'nullBackground'"
>
预约结果
</div>
2022-06-25 13:34:24 +08:00
</div>
2022-08-11 14:22:54 +08:00
<div class="roomSearch">
<span>会议室搜索</span>
2022-06-25 13:34:24 +08:00
<div class="searchInput">
<a-input-search
2022-08-11 14:22:54 +08:00
v-model:value="roomInput"
2022-06-25 13:34:24 +08:00
placeholder="请输入关键词"
enter-button="搜索"
size="large"
2022-08-11 14:22:54 +08:00
@search="onSearch"
2022-06-25 13:34:24 +08:00
/>
<a-button
style="width: 0.8rem; height: 0.36rem; margin-left: 0.7rem"
2022-08-11 14:22:54 +08:00
@click="reSetSearch"
2022-06-25 13:34:24 +08:00
>
重置
</a-button>
</div>
</div>
2022-08-11 14:22:54 +08:00
<div v-if="roomYuyue">
<div class="roomTableList">
<span>会议室列表</span>
<div class="roomTime">
<span>可用时间查询</span>
<a-space direction="vertical" class="roomSpace">
<a-date-picker
v-model:value="roomCerateDate"
placeholder="开始日期"
value-format="YYYY-MM-DD"
/>
<a-time-picker
v-model:value="roomCreateTime"
placeholder="开始时间"
value-format="HH:mm:ss"
2022-08-17 17:33:57 +08:00
:disabledHours="disabledStartHours"
:disabledMinutes="disabledStartMinutes"
:disabledSeconds="disabledStartSeconds"
2022-08-11 14:22:54 +08:00
/>
<a-time-picker
v-model:value="roomEndTime"
placeholder="结束时间"
value-format="HH:mm:ss"
2022-08-17 17:33:57 +08:00
:disabledHours="disabledEndHours"
:disabledMinutes="disabledEndMinutes"
:disabledSeconds="disabledEndSeconds"
2022-08-11 14:22:54 +08:00
/>
</a-space>
</div>
</div>
2022-08-25 19:06:53 +08:00
<div class="roomItem" v-for="item in roomList" :key="item.id">
2022-08-11 14:22:54 +08:00
<div class="leftImg">
<img
:src="
item.pic == null
? 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fp1.itc.cn%2Fimages01%2F20201221%2F00885cf666cc4c2ab80c7b4e59259e85.jpeg&refer=http%3A%2F%2Fp1.itc.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1662707222&t=13d3246428ee80cc7519702d5eb6eb7d'
: `${item.pic}`
2022-07-25 19:21:41 +08:00
"
2022-08-11 14:22:54 +08:00
alt=""
/>
</div>
<div class="rightContent">
<div class="topContent">{{ item.name }}</div>
<div class="centerContent">
<span>房间号{{ item.num }}</span>
2022-08-17 17:33:57 +08:00
<span>可容纳人数{{ item.capacity }}</span>
<span>面积{{ item.area }}</span>
2022-08-11 14:22:54 +08:00
</div>
<div class="bottonmContent">
{{ item.description }}
</div>
</div>
<a-button
style="
margin-left: 0.8rem;
background: #e1edfa;
color: #0087ff;
border: none;
border-radius: 0.06rem;
"
@click="appointment(item)"
>
预约
</a-button>
2022-06-29 18:36:50 +08:00
</div>
2022-08-11 14:22:54 +08:00
<a-pagination
v-model:current="roomPage"
v-model:pageSize="roomLimit"
show-quick-jumper
:total="roomTotal"
:page-size-options="pageSizeOptions"
@change="onRoomChange"
@showSizeChange="onShowSizeChange"
show-size-changer
/>
</div>
<div v-if="roomResult" style="display: grid">
<a-table
:columns="columnsRomm"
:data-source="dataRoom"
:filterMultiple="false"
:align="center"
:pagination="false"
>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'bookDate'">
<span>
{{ record.bookDate }} {{ record.startTime }}-{{
record.endTime
}}
</span>
</template>
<template v-if="column.key === 'state'">
<span>
{{
record.state == 2
? '通过'
: record.state == 1
? '审核中'
: '不通过'
}}
</span>
</template>
<template v-if="column.key === 'action'">
<a @click="look(record)">查看详情</a>
</template>
</template>
</a-table>
<a-pagination
v-model:current="roomPage"
v-model:pageSize="roomLimit"
show-quick-jumper
:total="roomTotal"
:page-size-options="pageSizeOptionsChengguo"
@change="onRoomChangeChengguo"
@showSizeChange="onShowSizeChangeChengguo"
show-size-changer
/>
2022-06-29 18:36:50 +08:00
</div>
2022-08-11 14:22:54 +08:00
<a-modal
v-model:visible="visibleRoom"
width="10rem"
title="预约详情"
:body-style="bodystyle"
class="modalClass"
:footer="null"
>
<div class="modalResult" style="margin-bottom: 0.05rem">预约结果</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
2022-08-06 16:36:20 +08:00
<div
2022-08-11 14:22:54 +08:00
class="modalExamine"
style="display: flex; flex-direction: column; margin-top: 0.2rem"
2022-08-06 16:36:20 +08:00
>
2022-08-11 14:22:54 +08:00
<span style="margin-bottom: 0.2rem">
2022-08-31 18:26:06 +08:00
审核结果{{
lookData.state == 2
? '通过'
: lookData.state == 1
? '审核中'
: '不通过'
}}
2022-08-11 14:22:54 +08:00
</span>
<span style="width: 8rem; margin-bottom: 0.3rem">
审核意见{{ lookData.auditViem }}
</span>
2022-08-06 16:36:20 +08:00
</div>
2022-08-11 14:22:54 +08:00
<div class="modalYuyue" style="margin-bottom: 0.05rem">预约信息</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
<div class="modalTime" style="margin-top: 0.2rem">
<div>
预约时段{{ lookData.bookDate }} {{ lookData.startTime }}-{{
lookData.endTime
}}
</div>
2022-08-01 09:21:57 +08:00
<div
2022-08-11 14:22:54 +08:00
class="modalContent"
2022-08-01 09:21:57 +08:00
style="
2022-08-11 14:22:54 +08:00
width: 7.5rem;
display: flex;
justify-content: space-between;
margin: 0.15rem 0 0.15rem 0;
2022-08-01 09:21:57 +08:00
"
>
2022-08-11 14:22:54 +08:00
<span>预约人{{ lookData.name }}</span>
<span>联系方式{{ lookData.phone }}</span>
<span>预约部门{{ lookData.dept }}</span>
2022-08-01 09:21:57 +08:00
</div>
2022-08-11 14:22:54 +08:00
</div>
<div style="width: 8rem; margin-bottom: 0.3rem">
使用事项{{ lookData.matter }}
</div>
</a-modal>
<a-modal
v-model:visible="appointmentRoom"
title="会议室预约"
width="10rem"
@ok="handleOk"
:body-style="bodystyle"
class="appModal"
:footer="null"
>
<a-form
:model="formState"
name="basic"
:label-col="{ span: 8 }"
:wrapper-col="{ span: 16 }"
autocomplete="off"
@finish="onFinish"
@finishFailed="onFinishFailed"
:labelAlign="labelPosition"
>
<a-row>
<a-col :span="8">
<a-form-item
name="bookDate"
label="预约日期"
v-bind="validateInfos.bookDate"
@blur="validate('create', { trigger: 'blur' }).catch(() => {})"
>
<a-date-picker
style="width: 72%"
v-model:value="formState.bookDate"
value-format="YYYY-MM-DD"
@change="handleChange"
/>
</a-form-item>
<div
:class="roomDateList[0] != null ? 'jinggaoD' : 'jinggaoNull'"
>
<div class="imgJinggao"></div>
<span style="color: #da2a13; font-size: 0.12rem">
当日会议室可用时段{{ roomDateList[0] }}
</span>
</div>
</a-col>
<a-col :span="8">
<a-form-item
name="startTime"
label="预约时段"
v-bind="validateInfos.startTime"
style="display: flex"
>
<a-time-picker
v-model:value="formState.startTime"
placeholder="开始时间"
value-format="HH:mm:ss"
2022-08-17 17:33:57 +08:00
:disabledHours="disabledTimeHours"
:disabledMinutes="disabledTimeMinutes"
:disabledSeconds="disabledTimeSeconds"
2022-08-11 14:22:54 +08:00
/>
</a-form-item>
</a-col>
<a-col :span="8">
<a-time-picker
v-model:value="formState.endTime"
placeholder="结束时间"
value-format="HH:mm:ss"
2022-08-17 17:33:57 +08:00
:disabledHours="disabledTimeEndHours"
:disabledMinutes="disabledTimeEndMinutes"
:disabledSeconds="disabledTimeEndSeconds"
2022-08-11 14:22:54 +08:00
/>
</a-col>
</a-row>
<a-row style="margin-top: 0.4rem">
<a-col :span="8">
<a-form-item
name="name"
label="预约人"
v-bind="validateInfos.name"
>
<a-input v-model:value="formState.name" style="width: 72%" />
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item
name="phone"
label="联系电话"
v-bind="validateInfos.phone"
>
<a-input v-model:value="formState.phone" style="width: 72%" />
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item
name="dept"
label="预约部门"
v-bind="validateInfos.dept"
>
<a-input v-model:value="formState.dept" style="width: 72%" />
</a-form-item>
</a-col>
</a-row>
<a-row style="margin-top: 0.4rem">
<a-col :span="24">
<a-form-item
name="matter"
v-bind="validateInfos.matter"
label="使用事项"
class="introduction"
>
<a-textarea v-model:value="formState.matter" />
</a-form-item>
</a-col>
</a-row>
<a-row style="margin-top: 0.4rem">
<a-col :span="24">
<a-form-item
name="uploadRoom"
label="附件上传"
class="introduction"
>
<a-upload
:max-count="1"
accept=".doc,.docx,pdf"
v-model:file-list="fileList"
:action="`${apiURL}/upload`"
@remove="handleRemove"
@change="roomUpload"
>
<a-button>
<upload-outlined>选择上传附件</upload-outlined>
</a-button>
<span>
支持docdocxPDF等格式支撑材料上传文件大小不超过100M
</span>
</a-upload>
</a-form-item>
</a-col>
</a-row>
<a-form-item
:wrapper-col="{ span: 14, offset: 4 }"
style="text-align: center; margin-top: 0.4rem"
>
<a-button @click="resetFields" type="primary" danger>取消</a-button>
<a-button
style="margin-left: 10px"
type="primary"
@click="onSubmit"
>
提交
</a-button>
</a-form-item>
</a-form>
</a-modal>
</div>
<div v-if="room">
<!-- 地图 -->
<div class="map-contain" v-if="showMap">
<video-surveillance></video-surveillance>
</div>
<!-- 功能行 -->
<div class="infrastructrue-content" v-if="!wrjFlag">
<!-- 表格数据统计 -->
<div class="contentNum">
<p>
备选
<span>{{ pagination.total }}</span>
</p>
<!-- <i class="boundary"></i> -->
<p>
已选
<span>{{ selectedRowKeys.length }}</span>
</p>
</div>
<!-- 右侧 -->
<div class="contentRight">
<!-- 搜索@search="onSearch" -->
2022-08-15 14:48:53 +08:00
<div class="searchInput" v-if="isXiHaiAn">
2022-08-11 14:22:54 +08:00
<a-input-search
v-model:value="mapSearchParam.cameraName"
placeholder="请输入关键词"
enter-button="搜索"
size="large"
@change="getCamera"
/>
<a-button
type="primary"
style="width: 0.8rem; height: 0.36rem; margin-left: 0.7rem"
@click="clean"
>
重置
</a-button>
</div>
<i class="boundary"></i>
<!-- 批量预览 -->
2022-08-24 13:53:45 +08:00
<a-button
type="primary"
@click="batchPreview"
class="buttonAdd"
2022-08-25 19:06:53 +08:00
v-if="isXiHaiAn"
>
批量预览
</a-button>
<!-- 批量预览 -->
<a-button
type="primary"
@click="batchPicturePreview"
class="buttonAdd"
v-else
2022-08-24 13:53:45 +08:00
>
2022-08-11 14:22:54 +08:00
批量预览
</a-button>
<!-- 添加至申购车 -->
<a-button type="primary" @click="addShoppingCart" class="buttonAdd">
添加至申购车
</a-button>
<!-- 一键申请 -->
<a-button type="primary" @click="apply" class="buttonAdd">
一键申请
</a-button>
</div>
</div>
<!-- 表格 -->
<div class="infrastructrue-table" v-if="!wrjFlag">
<a-table
class="ant-table-striped"
:dataSource="dataSource"
:columns="columns"
:scroll="{ y: tableHeight }"
rowKey="channelId"
:rowClassName="
(record, index) => (index % 2 === 1 ? 'table-striped' : null)
"
:pagination="pagination"
@change="handleTableChange"
:row-selection="{
selectedRowKeys: selectedRowKeys,
// onChange: onSelectChange,
onSelect: onSelectChange,
onSelectAll: onSelectAll,
}"
>
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'operation'">
<a
2022-08-24 13:53:45 +08:00
v-if="isXiHaiAn"
2022-08-11 14:22:54 +08:00
@click="
openVideo(
record.channelCode ||
record.channelId ||
record.channelCode.channelId
)
"
>
预览
</a>
2022-08-24 13:53:45 +08:00
<a
v-else
@click="
openPicture(
record.channelCode ||
record.channelId ||
record.channelCode.channelId
)
"
>
预览
</a>
2022-08-11 14:22:54 +08:00
</template>
</template>
</a-table>
</div>
<div class="infrastructrue-table" v-else-if="isXiHaiAn && wrjFlag">
<a-table
class="ant-table-striped"
:dataSource="dataSource2"
:columns="columns2"
:scroll="{ y: tableHeight }"
rowKey="channelId"
:rowClassName="
(record, index) => (index % 2 === 1 ? 'table-striped' : null)
"
:pagination="dataSource2.length"
>
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'operation'">
<a
@click="goToWrj(record)"
style="margin-right: 10px"
v-if="record.type !== '单兵设备'"
>
控制台
</a>
<a @click="goToApply(record)" style="margin-right: 10px" v-else>
申请
</a>
<a @click="showWrj(record)">详情</a>
</template>
</template>
</a-table>
</div>
<!-- 单个预览弹窗 -->
<a-modal
wrapClassName="single-preview-modal"
v-model:visible="visible"
title="视频预览"
:width="960"
destroyOnClose
>
<template #footer></template>
<div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%">
<vue3VideoPlay v-bind="options" />
</div>
</div>
</a-modal>
2022-08-24 13:53:45 +08:00
<!-- 图片预览 -->
<a-modal
wrapClassName="single-preview-modal"
v-model:visible="picVisible"
title="图片预览"
:width="960"
destroyOnClose
>
<template #footer></template>
<div style="width: 100%; display: flex; justify-content: center">
<a-image :src="options.src" />
</div>
</a-modal>
2022-08-25 19:06:53 +08:00
<!-- 批量预览图片弹窗 -->
<a-modal
wrapClassName="batch-preview-modal"
v-model:visible="batchPicVisible"
title="图片批量预览"
:width="1060"
destroyOnClose
@cancel="videoClean"
>
<template #footer></template>
<div class="batch-video">
<div
v-for="item in videoList"
:key="item.id"
style="width: 100%; height: 100%"
>
<a-image
2022-08-26 09:27:34 +08:00
width="500px"
height="281px"
2022-08-25 19:06:53 +08:00
:src="item.options.src"
fallback="data:image/png;base64,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"
/>
</div>
</div>
<a-pagination
v-model:current="current"
:total="videoTotal"
defaultPageSize="4"
:showSizeChanger="false"
@change="batchPicturePreview"
show-less-items
/>
</a-modal>
<!-- 批量预览视频弹窗 -->
2022-08-11 14:22:54 +08:00
<a-modal
wrapClassName="batch-preview-modal"
v-model:visible="batchVisible"
title="视频批量预览"
:width="1060"
destroyOnClose
@cancel="videoClean"
>
<template #footer></template>
<div class="batch-video">
2022-08-01 09:21:57 +08:00
<div
2022-08-11 14:22:54 +08:00
v-for="item in videoList"
:key="item.id"
style="width: 100%; height: 100%"
2022-08-01 09:21:57 +08:00
>
2022-08-11 14:22:54 +08:00
<p></p>
<vue3VideoPlay v-bind="item.options" />
2022-08-01 09:21:57 +08:00
</div>
</div>
2022-08-11 14:22:54 +08:00
<a-pagination
v-model:current="current"
:total="videoTotal"
defaultPageSize="4"
:showSizeChanger="false"
@change="batchPreview"
show-less-items
/>
</a-modal>
<a-modal
wrapClassName="wrj"
v-model:visible="wrjVisible"
:width="1000"
:title="wrjName + '详情'"
@ok="wrjVisible = false"
>
<template v-if="dataSource2[0].type !== '单兵设备'">
<div v-for="wrj in wrjData" :key="wrj.name">
2022-08-01 09:21:57 +08:00
<div
style="
font-size: 20px;
font-weight: 600;
margin: 10px 0;
text-align: center;
"
>
2022-08-11 14:22:54 +08:00
{{ wrj.name }}
2022-08-01 09:21:57 +08:00
</div>
<div
style="padding: 0 30px"
2022-08-11 14:22:54 +08:00
v-for="(value, key) in wrj.attribute"
2022-08-01 09:21:57 +08:00
:key="value"
>
2022-08-11 14:22:54 +08:00
{{ key + '' + value }}
2022-08-01 09:21:57 +08:00
</div>
2022-08-11 14:22:54 +08:00
</div>
</template>
<template v-else>
<div v-for="(db, key) in wrjData" :key="key">
<template v-if="typeof db == 'object'">
<div
style="
font-size: 20px;
font-weight: 600;
margin: 10px 0;
text-align: center;
"
>
{{ key }}
</div>
<div
style="padding: 0 30px"
v-for="(value, key2) in db"
:key="value"
>
{{ key2 + '' + value }}
</div>
</template>
<template v-else>
<div style="padding: 0 30px">
{{ key + '' + db }}
</div>
</template>
</div>
</template>
</a-modal>
</div>
2022-06-25 13:34:24 +08:00
</div>
2022-06-24 17:04:47 +08:00
</template>
2022-06-25 13:34:24 +08:00
<script setup>
2022-06-27 18:53:51 +08:00
import VideoSurveillance from '@/views/home/videoSurveillance'
2022-07-07 19:07:56 +08:00
// import { getCategoryTreePage } from '@/api/personalCenter'
// import { dataType } from 'element-plus/es/components/table-v2/src/common'
2022-06-30 15:27:16 +08:00
import { useRouter } from 'vue-router'
2022-08-11 14:22:54 +08:00
import { message, Upload } from 'ant-design-vue'
import {
ref,
reactive,
onMounted,
2022-08-15 14:48:53 +08:00
defineProps,
2022-08-11 14:22:54 +08:00
watch,
defineComponent,
nextTick,
2022-08-15 14:48:53 +08:00
defineExpose,
2022-08-11 14:22:54 +08:00
} from 'vue'
2022-06-29 18:36:50 +08:00
import {
getCameraByParentId,
getStreamByChannelCode,
getCameraAllLabel,
2022-08-24 13:53:45 +08:00
selectByChannelCode,
2022-06-29 18:36:50 +08:00
} from '@/api/videoSurveillance'
2022-07-25 19:21:41 +08:00
import { getCameraByCondition } from '@/api/file'
2022-08-11 14:22:54 +08:00
import {
sgcInsert,
getRoomSearch,
getDate,
setSubmit,
getYuyue,
} from '@/api/home'
2022-06-28 22:24:05 +08:00
import mybus from '@/myplugins/mybus'
2022-08-11 14:22:54 +08:00
import dayjs from 'dayjs'
import { Form } from 'ant-design-vue'
2022-08-17 17:33:57 +08:00
import moment from 'moment'
2022-08-15 14:48:53 +08:00
const props = defineProps({
// 模糊查
searchValue: { type: String, default: '' },
})
2022-08-09 17:09:58 +08:00
const current = ref(1)
const videoTotal = ref(0)
2022-06-30 15:27:16 +08:00
const router = useRouter()
2022-07-25 19:21:41 +08:00
const whoShow1 = ref(whoShow)
2022-08-12 17:17:03 +08:00
const isXiHaiAn = whoShow1.value.itShowXiHaiAn
2022-06-29 18:36:50 +08:00
const options = reactive({
2022-08-09 17:09:58 +08:00
width: '912px', //播放器宽度
height: '513px', //播放器高度
2022-06-29 18:36:50 +08:00
color: '#409eff', //主题色
title: '', //视频名称
src: '', //视频源
type: 'm3u8', // 视频源类型
muted: false, //静音
webFullScreen: false,
speedRate: ['0.75', '1.0', '1.25', '1.5', '2.0'], //播放倍速
2022-08-12 17:17:03 +08:00
autoPlay: isXiHaiAn, //自动播放
2022-06-29 18:36:50 +08:00
loop: false, //循环播放
mirror: false, //镜像画面
ligthOff: false, //关灯模式
volume: 0.3, //默认音量大小
control: true, //是否显示控制
controlBtns: [
'audioTrack',
'quality',
'speedRate',
'volume',
'setting',
'pip',
'pageFullScreen',
'fullScreen',
], //显示所有按钮,
})
2022-08-06 16:36:20 +08:00
const videoList = ref([])
2022-08-25 19:06:53 +08:00
let visible = ref(false) // 视频预览
let picVisible = ref(false) // 图片预览
let batchVisible = ref(false) // 视频批量预览
let batchPicVisible = ref(false) // 图片批量预览
2022-07-01 18:23:43 +08:00
const jcssType = ref(router.currentRoute.value.query.type)
2022-06-28 22:24:05 +08:00
const pagination = ref({
total: 0,
current: 1,
2022-08-04 15:14:55 +08:00
pageSize: 10, //每页中显示10条数据
2022-06-28 22:24:05 +08:00
showSizeChanger: true,
pageSizeOptions: ['10', '30', '50', '100', '1000'], //每页中显示的数据
2022-06-28 22:24:05 +08:00
})
2022-08-11 14:22:54 +08:00
//会议室变量区域=======
const paginationRoom = ref({
total: 0,
current: 1,
pageSize: 10, //每页中显示10条数据
showSizeChanger: true,
pageSizeOptions: ['5', '10', '15', '20'], //每页中显示的数据
})
const formState = reactive({
// name: '',
// iphone: '18264084961',
// group: '',
// create: '',
// cerateTime: '',
// endTime: '',
// introduction: '',
// uploadRoom: '',
roomId: '',
bookDate: '', //日期
startTime: '', //开始时间
endTime: '', //结束时间
name: '',
phone: '',
dept: '',
matter: '',
file: '',
})
const fileList = ref([])
const useForm = Form.useForm
const roomInput = ref('')
const rulesRef = reactive({
bookDate: [
{
type: 'string',
required: true,
message: '请选择日期',
},
],
startTime: [
{
type: 'string',
required: true,
message: '请选择时间段',
},
],
name: [
{
required: true,
message: '请输入预约人',
},
],
2022-08-17 17:33:57 +08:00
matter: [{ min: 1, max: 500, required: true, message: '可输入500字内容' }],
2022-08-11 14:22:54 +08:00
phone: [
{
required: true,
pattern: /^1[3|4|5|7|8][0-9]\d{8}$/,
message: '请输入正确的手机号',
},
],
dept: [
{
required: true,
message: '请输入部门',
},
],
})
const { resetFields, validateInfos, validate } = useForm(formState, rulesRef)
2022-06-28 22:24:05 +08:00
const mapSearchParam = ref({
// 地图搜索初始化数据
parentId: '',
2022-06-29 18:36:50 +08:00
cameraName: '',
2022-06-28 22:24:05 +08:00
checkStatus: '1',
pageNum: pagination.value.current,
pageSize: pagination.value.pageSize,
gpsX: '',
gpsY: '',
radius: '',
2022-06-29 18:36:50 +08:00
labelCodes: [],
2022-06-28 22:24:05 +08:00
})
const showMap = ref(true)
2022-08-11 14:22:54 +08:00
const room = ref(true)
const roomResult = ref(true)
const roomYuyue = ref(true)
const visibleRoom = ref(false)
const appointmentRoom = ref(false)
const labelPosition = ref('left')
const apiURL = window.SITE_CONFIG.apiURL
const roomList = ref([])
const roomPage = ref(1)
const roomLimit = ref(5)
const roomTotal = ref(0)
const pageSizeOptions = ref(['5', '10', '20', '50'])
const pageSizeOptionsChengguo = ref(['5', '10', '20', '50'])
const dateId = ref(null)
const roomDateList = ref([])
//开始时间---结束时间
const roomCerateDate = ref('')
const roomCreateTime = ref('')
const roomEndTime = ref('')
const roomModalCreateTime = ref('')
const roomModalEndTime = ref('')
const lookData = ref({})
2022-08-15 14:48:53 +08:00
// console.log('模糊查传递', props.searchValue)
if (props.searchValue) {
// console.log('模糊查传递')
// eslint-disable-next-line vue/no-setup-props-destructure
mapSearchParam.value.cameraName = props.searchValue
}
2022-08-11 14:22:54 +08:00
//===========================
2022-06-27 18:13:13 +08:00
onMounted(() => {
2022-07-01 18:23:43 +08:00
if (jcssType.value) {
tabClick(0, jcssType.value)
if (jcssType.value == '视频资源') {
getCamera()
}
2022-07-01 10:50:29 +08:00
} else {
tabClick(0, '视频资源')
2022-07-01 18:23:43 +08:00
getCamera()
2022-07-01 10:50:29 +08:00
}
2022-06-28 22:24:05 +08:00
mybus.off('getListByParentId')
mybus.on('getListByParentId', (parentId) => {
mapSearchParam.value.parentId = parentId
getCamera()
})
mybus.off('getListByMap')
mybus.on('getListByMap', (param) => {
mapSearchParam.value.gpsX = param.gpsX
mapSearchParam.value.gpsY = param.gpsY
mapSearchParam.value.radius = param.radius
getCamera()
})
2022-06-27 18:13:13 +08:00
})
2022-06-28 22:24:05 +08:00
const selectedList = ref([])
2022-06-30 15:27:16 +08:00
const selectedRowKeys = ref([])
2022-06-25 13:34:24 +08:00
const tabList = ref([
{
title: '设施类型',
2022-08-23 17:47:24 +08:00
content: ['视频资源', '云资源', '感知资源', '城市云脑会客厅'],
2022-06-25 13:34:24 +08:00
},
{
2022-07-01 17:03:15 +08:00
title: '视频标签',
2022-06-27 18:13:13 +08:00
content: [],
2022-06-25 13:34:24 +08:00
},
2022-06-27 18:13:13 +08:00
])
2022-08-01 09:21:57 +08:00
const wrjVisible = ref(false)
const wrjName = ref('')
const wrjData = ref([])
const showWrj = (data) => {
wrjName.value = data.wrjName
wrjData.value = data.details
wrjVisible.value = true
}
const goToWrj = (data) => {
window.open(data.url)
}
const goToApply = (data) => {
console.log(data, dept)
let arr = [
{
arr: [
{
description:
'申请单兵手持便携终端,提告前端人员执法透明度,加强执法人员与指挥中心实时沟通。',
resourceId: 'dbsb',
resourceName: data.wrjName,
type: '单兵设备',
},
],
deptId: dept.deptId,
deptName: dept.deptName,
},
]
localStorage.setItem('applyList', JSON.stringify(arr))
router.push({
path: '/apply',
})
}
if (whoShow1.value.itShowXiHaiAn) {
tabList.value[0].content.push('无人机')
tabList.value[0].content.push('单兵设备')
}
2022-08-24 13:53:45 +08:00
// 打开视频预览
2022-06-29 18:36:50 +08:00
const openVideo = (id) => {
console.log('打开视频', id)
const param = {
2022-07-27 14:19:51 +08:00
key: id,
2022-06-29 18:36:50 +08:00
}
getStreamByChannelCode(param).then((res) => {
console.log(res)
visible.value = true
2022-07-28 14:42:44 +08:00
options.src = res.data.data
2022-06-29 18:36:50 +08:00
})
}
2022-08-24 13:53:45 +08:00
// 打开图片预览
const openPicture = (id) => {
console.log('打开图片', id)
const param = {
channelCode: id,
}
selectByChannelCode(param).then((res) => {
console.log(res)
if (res.data.data && res.data.data[0].picUrl) {
options.src = res.data.data[0].picUrl
picVisible.value = true
} else {
message.warning('该点位暂无预览图片!')
}
})
}
2022-06-27 18:13:13 +08:00
// const dataTypeList = () => {
// if (tabList.value[0].content.indexOf('视频资源') != -1) {
// tabList.value[1].content = ['123344', '213124']
// }else if(tabList.value[0].content.indexOf('云资源') != -1){
// tabList.value[1].content = ['5555', '666']
// }
// }
// dataTypeList()
//初始化数据
2022-06-25 13:34:24 +08:00
const init = () => {
tabList.value.map((item) => {
let params = {
title: item.title,
content: [],
}
clickList.value.push(params)
})
2022-06-28 22:24:05 +08:00
mybus.off('tranferToList')
2022-07-07 19:07:56 +08:00
mybus.on('tranferToList', () => {
2022-06-28 22:24:05 +08:00
console.log('获取到的列表数据')
})
2022-06-25 13:34:24 +08:00
}
let clickList = ref([]) //存储点击的tab
init()
2022-08-11 14:22:54 +08:00
//点击会议室左侧切换
const result = () => {
roomYuyue.value = false
roomResult.value = true
chengguoSearch()
}
const chengguoSearch = () => {
let query = {
page: roomPage.value,
limit: roomLimit.value,
roomName: roomInput.value,
}
getYuyue(query).then(({ data: res }) => {
dataRoom.value = res.data.list
roomTotal.value = res.data.total
})
}
const roomResults = () => {
roomYuyue.value = true
roomResult.value = false
}
// 查看详情
const look = (row) => {
visibleRoom.value = true
lookData.value = row
}
// 搜索
const onSearch = (searchValue) => {
searchData()
chengguoSearch()
}
//重置
const reSetSearch = () => {
roomInput.value = ''
searchData()
chengguoSearch()
}
2022-08-17 17:33:57 +08:00
// 时间选择器限制----可用时间查询
//获取不可选择的小时
const disabledStartHours = () => {
if (roomEndTime.value) {
2022-08-31 18:26:06 +08:00
console.log(roomEndTime.value, 5555555555)
2022-08-17 17:33:57 +08:00
let hours = []
2022-08-31 18:26:06 +08:00
let hour = roomEndTime.value.substr(0, 2)
console.log(hour, 888888888888)
for (let i = hour; i < 24; i++) {
2022-08-17 17:33:57 +08:00
hours.push(i)
}
return hours
}
}
//获取不可选择的分钟
const disabledStartMinutes = (selectedHour) => {
2022-08-23 17:47:24 +08:00
if (roomEndTime.value) {
2022-08-17 17:33:57 +08:00
let minutes = []
2022-08-31 18:26:06 +08:00
let hour = roomEndTime.value.substr(0, 2)
let minute = roomEndTime.value.substr(3, 2)
if (selectedHour == hour) {
for (let i = minute; i < 60; i++) {
2022-08-17 17:33:57 +08:00
minutes.push(i)
}
}
return minutes
}
}
//获取不可选择的秒
const disabledStartSeconds = (selectedHour, selectedMinute) => {
2022-08-23 17:47:24 +08:00
if (roomEndTime.value) {
2022-08-17 17:33:57 +08:00
let seconds = []
2022-08-31 18:26:06 +08:00
let hour = roomEndTime.value.substr(0, 2)
let minute = roomEndTime.value.substr(3, 2)
let second = roomEndTime.value.substr(6, 2)
if (selectedHour == hour && selectedMinute.value == minute) {
for (let i = second - 1; i < 60; i++) {
2022-08-17 17:33:57 +08:00
seconds.push(i)
}
}
return seconds
}
}
//获取不可选择的小时
const disabledEndHours = () => {
if (roomCreateTime.value) {
let hours = []
2022-08-31 18:26:06 +08:00
let hour = roomCreateTime.value.substr(0, 2)
2022-08-17 17:33:57 +08:00
for (let i = 0; i < hour; i++) {
hours.push(i)
}
return hours
}
}
//获取不可选择的分钟
const disabledEndMinutes = (selectedHour) => {
2022-08-23 17:47:24 +08:00
if (roomCreateTime.value) {
2022-08-17 17:33:57 +08:00
let minutes = []
2022-08-31 18:26:06 +08:00
let hour = roomCreateTime.value.substr(0, 2)
let minute = roomCreateTime.value.substr(3, 2)
if (selectedHour == hour) {
2022-08-17 17:33:57 +08:00
for (let i = 0; i < minute; i++) {
minutes.push(i)
}
}
return minutes
}
}
//获取不可选择的秒
const disabledEndSeconds = (selectedHour, selectedMinute) => {
2022-08-23 17:47:24 +08:00
if (roomCreateTime.value) {
2022-08-17 17:33:57 +08:00
let seconds = []
2022-08-31 18:26:06 +08:00
let hour = roomCreateTime.value.substr(0, 2)
let minute = roomCreateTime.value.substr(3, 2)
let second = roomCreateTime.value.substr(6, 2)
if (selectedHour == hour && selectedMinute.value == minute) {
for (let i = 0; i <= second; i++) {
2022-08-17 17:33:57 +08:00
seconds.push(i)
}
}
return seconds
}
}
// 时间选择器限制----会议室预约时段
//获取不可选择的小时
const disabledTimeHours = () => {
if (formState.endTime) {
let hours = []
2022-08-31 18:26:06 +08:00
let hour = formState.endTime.substr(0, 2)
for (let i = hour; i < 24; i++) {
2022-08-17 17:33:57 +08:00
hours.push(i)
}
return hours
}
}
//获取不可选择的分钟
const disabledTimeMinutes = (selectedHour) => {
if (formState.endTime) {
let minutes = []
2022-08-31 18:26:06 +08:00
let hour = formState.endTime.substr(0, 2)
let minute = formState.endTime.substr(3, 2)
if (selectedHour == hour) {
for (let i = minute; i < 60; i++) {
2022-08-17 17:33:57 +08:00
minutes.push(i)
}
}
return minutes
}
}
//获取不可选择的秒
const disabledTimeSeconds = (selectedHour, selectedMinute) => {
if (formState.endTime) {
let seconds = []
2022-08-31 18:26:06 +08:00
let hour = formState.endTime.substr(0, 2)
let minute = formState.endTime.substr(3, 2)
let second = formState.endTime.substr(6, 2)
if (selectedHour == hour && selectedMinute.value == minute) {
for (let i = second - 1; i < 60; i++) {
2022-08-17 17:33:57 +08:00
seconds.push(i)
}
}
return seconds
}
}
//获取不可选择的小时
const disabledTimeEndHours = () => {
if (formState.startTime) {
let hours = []
2022-08-31 18:26:06 +08:00
let hour = formState.startTime.substr(0, 2)
2022-08-17 17:33:57 +08:00
for (let i = 0; i < hour; i++) {
hours.push(i)
}
return hours
}
}
//获取不可选择的分钟
const disabledTimeEndMinutes = (selectedHour) => {
if (formState.startTime) {
let minutes = []
2022-08-31 18:26:06 +08:00
let hour = formState.startTime.substr(0, 2)
let minute = formState.startTime.substr(3, 2)
if (selectedHour == hour) {
2022-08-17 17:33:57 +08:00
for (let i = 0; i < minute; i++) {
minutes.push(i)
}
}
return minutes
}
}
//获取不可选择的秒
const disabledTimeEndSeconds = (selectedHour, selectedMinute) => {
if (formState.startTime) {
let seconds = []
2022-08-31 18:26:06 +08:00
let hour = formState.startTime.substr(0, 2)
let minute = formState.startTime.substr(3, 2)
let second = formState.startTime.substr(6, 2)
if (selectedHour == hour && selectedMinute.value == minute) {
for (let i = 0; i <= second; i++) {
2022-08-17 17:33:57 +08:00
seconds.push(i)
}
}
return seconds
}
}
2022-08-11 14:22:54 +08:00
//分页
const onRoomChange = (pageNumber) => {
roomPage.value = pageNumber
searchData()
}
const onShowSizeChange = (current, pageSize) => {
roomLimit.value = pageSize
searchData()
}
const onRoomChangeChengguo = (pageNumber) => {
roomPage.value = pageNumber
chengguoSearch()
}
const onShowSizeChangeChengguo = (current, pageSize) => {
roomLimit.value = pageSize
chengguoSearch()
}
//预约
const appointment = (item) => {
dateId.value = item.id
formState.roomId = item.id
appointmentRoom.value = true
}
//预约弹框 选择日期
const handleChange = (i) => {
let query = {
date: i, //查询的riqi
roomId: dateId.value, //会议室主键
}
getDate(query).then(({ data: res }) => {
roomDateList.value = res.data
})
}
const columnsRomm = [
{
title: '会议室名称',
dataIndex: 'roomName',
align: 'center',
},
{
title: '预约时段',
key: 'bookDate',
align: 'center',
},
{
title: '预约状态',
key: 'state',
align: 'center',
},
{
title: '预约详情',
key: 'action',
align: 'center',
},
]
const dataRoom = ref([])
const bodystyle = {
paddingTop: 0,
borderBottom: 0,
}
const handleOk = (e) => {
console.log(e)
}
//文件上传成功回调
const roomUpload = (response) => {
if (response.file.response !== undefined) {
fileList.value = response.fileList
formState.file = response.file.response.data
}
}
//提交预约
const onSubmit = () => {
validate()
.then(() => {
setSubmit(formState).then(({ data: res }) => {
appointmentRoom.value = false
formState.roomId = ''
formState.bookDate = ''
formState.startTime = '' //开始时间
formState.endTime = '' //结束时间
formState.name = ''
formState.phone = ''
formState.dept = ''
formState.matter = ''
formState.file = ''
fileList.value = []
searchData()
})
})
.catch((err) => {
console.log('error', err)
})
}
//会议室查询接口
const searchData = () => {
let query = {
bookDate: roomCerateDate.value, // 预约开始时间 年月日
startTime: roomCreateTime.value, //预约开始时 间时分秒
endTime: roomEndTime.value, // 预约结束时间
name: roomInput.value, //会议室名称
page: roomPage.value, //页码
limit: roomLimit.value, //每页条数
}
getRoomSearch(query).then(({ data: res }) => {
roomList.value = res.data.list
roomTotal.value = res.data.total
})
}
const emits = defineEmits(['add'])
2022-06-25 15:08:19 +08:00
//表格的高度
let tableHeight = ref('600')
2022-06-25 13:34:24 +08:00
//tab切换点击事件
2022-06-27 18:13:13 +08:00
const tabClick = (indexFather, name) => {
2022-07-09 15:22:20 +08:00
console.log(
'点击tab================>',
indexFather,
name,
clickList.value[indexFather]
)
2022-07-04 17:02:00 +08:00
selectedRowKeys.value = []
selectedList.value = []
2022-06-25 13:34:24 +08:00
if (clickList.value[indexFather].content.indexOf(name) != -1) {
2022-06-27 18:13:13 +08:00
if (name == '视频资源') {
2022-08-11 14:22:54 +08:00
room.value = true
2022-06-25 15:08:19 +08:00
tableHeight.value = 330
2022-06-28 22:24:05 +08:00
showMap.value = true
2022-07-01 17:03:15 +08:00
tabList.value[1].title = '视频标签'
2022-06-27 18:13:13 +08:00
} else if (name == '云资源') {
2022-08-11 14:22:54 +08:00
room.value = true
2022-06-25 15:08:19 +08:00
tableHeight.value = 600
2022-06-28 22:24:05 +08:00
showMap.value = false
2022-07-01 17:03:15 +08:00
dataSource.value = []
2022-08-01 09:21:57 +08:00
dataSource2.value = []
2022-07-01 17:03:15 +08:00
pagination.value.total = 0
tabList.value[1].title = '云资源分类'
2022-06-27 18:13:13 +08:00
} else if (name == '感知资源') {
2022-08-11 14:22:54 +08:00
room.value = true
2022-06-25 15:08:19 +08:00
tableHeight.value = 330
2022-06-28 22:24:05 +08:00
showMap.value = true
2022-07-01 17:03:15 +08:00
dataSource.value = []
2022-08-01 09:21:57 +08:00
dataSource2.value = []
2022-07-01 17:03:15 +08:00
pagination.value.total = 0
2022-08-23 17:47:24 +08:00
} else if (name == '城市云脑会客厅') {
2022-08-11 14:22:54 +08:00
// room.value = false
// wrjFlag.value = true
// showMap.value = false
// roomYuyue.value = true
// roomResult.value = false
// tabList.value[1] = []
// emits('add', 6)
// searchData()
2022-06-25 15:08:19 +08:00
}
2022-06-25 13:34:24 +08:00
clickList.value[indexFather].content.splice(
clickList.value[indexFather].content.indexOf(name),
1
)
} else {
2022-06-27 18:13:13 +08:00
if (name == '视频资源') {
2022-08-01 09:21:57 +08:00
wrjFlag.value = false
2022-06-25 15:08:19 +08:00
tableHeight.value = 330
2022-06-28 22:24:05 +08:00
showMap.value = true
2022-06-27 18:13:13 +08:00
tabList.value[1].content = []
clickList.value[1].content = []
2022-07-01 17:03:15 +08:00
tabList.value[1].title = '视频标签'
2022-06-27 18:13:13 +08:00
clickList.value[indexFather].content[0] = name
2022-08-01 09:21:57 +08:00
dataSource.value = []
dataSource2.value = []
2022-08-11 14:22:54 +08:00
room.value = true
2022-06-29 18:36:50 +08:00
getCameraAllLabel().then((res) => {
res.data.data.forEach((val) => {
tabList.value[1].content.push({
labelCode: val.labelCode,
labelName: val.labelName,
})
2022-06-27 18:13:13 +08:00
})
})
2022-07-01 17:03:15 +08:00
// 改变查询摄像头接口的labelCode数组
mapSearchParam.value.labelCodes = []
clickList.value[1].content.map((item) => {
mapSearchParam.value.labelCodes.push(item.labelCode)
})
console.log('选中的标签code', mapSearchParam.value)
mapSearchParam.value.labelCodes = mapSearchParam.value.labelCodes + ''
2022-08-11 14:22:54 +08:00
emits('add', 1)
2022-07-01 17:03:15 +08:00
getCamera()
2022-06-27 18:13:13 +08:00
} else if (name == '云资源') {
2022-06-25 15:08:19 +08:00
tableHeight.value = 600
2022-06-28 22:24:05 +08:00
showMap.value = false
2022-07-01 17:03:15 +08:00
dataSource.value = []
2022-08-01 09:21:57 +08:00
dataSource2.value = []
2022-07-01 17:03:15 +08:00
pagination.value.total = 0
2022-06-27 18:13:13 +08:00
clickList.value[1].content = []
2022-07-01 17:03:15 +08:00
tabList.value[1].title = '云资源分类'
2022-06-27 18:13:13 +08:00
clickList.value[indexFather].content[0] = name
tabList.value[1].content = [
'云主机',
'算力主机',
'对象存储',
'堡垒机',
'防火墙',
'网闸',
'负载均衡',
'公网IP',
]
2022-08-11 14:22:54 +08:00
room.value = true
2022-08-01 09:21:57 +08:00
wrjFlag.value = false
2022-08-11 14:22:54 +08:00
emits('add', 2)
2022-06-27 18:13:13 +08:00
} else if (name == '感知资源') {
2022-06-25 15:08:19 +08:00
tableHeight.value = 330
2022-06-28 22:24:05 +08:00
showMap.value = true
2022-06-27 18:13:13 +08:00
clickList.value[1].content = []
2022-07-01 17:03:15 +08:00
pagination.value.total = 0
tabList.value[1].title = '感知资源分类'
2022-06-27 18:13:13 +08:00
clickList.value[indexFather].content[0] = name
tabList.value[1].content = []
2022-07-01 17:03:15 +08:00
dataSource.value = []
2022-08-01 09:21:57 +08:00
dataSource2.value = []
2022-08-11 14:22:54 +08:00
room.value = true
2022-08-01 09:21:57 +08:00
wrjFlag.value = false
2022-08-11 14:22:54 +08:00
emits('add', 3)
2022-08-01 09:21:57 +08:00
} else if (name == '无人机') {
2022-08-11 14:22:54 +08:00
room.value = true
2022-08-01 09:21:57 +08:00
tableHeight.value = 600
showMap.value = false
dataSource.value = []
dataSource2.value = []
pagination.value.total = 0
clickList.value[1].content = []
clickList.value[indexFather].content[0] = name
tabList.value[1].title = ''
tabList.value[1].content = []
uavAndIndividualSoldier.uavList.map((wrj) => {
dataSource2.value.push({
wrjName: wrj.name,
wrjState: '已申请',
url: wrj.url,
details: wrj.details,
})
})
wrjFlag.value = true
} else if (name == '单兵设备') {
2022-08-11 14:22:54 +08:00
room.value = true
2022-08-01 09:21:57 +08:00
tableHeight.value = 600
showMap.value = false
dataSource.value = []
dataSource2.value = []
pagination.value.total = 0
clickList.value[1].content = []
clickList.value[indexFather].content[0] = name
tabList.value[1].title = ''
tabList.value[1].content = []
uavAndIndividualSoldier.individualSoldier.map((db) => {
dataSource2.value.push({
wrjName: db.name,
wrjState: '未申请',
details: db.details,
type: db.type,
})
})
wrjFlag.value = true
2022-08-23 17:47:24 +08:00
} else if (name == '城市云脑会客厅') {
2022-08-11 14:22:54 +08:00
showMap.value = false
dataSource.value = []
dataSource2.value = []
pagination.value.total = 0
clickList.value[1].content = []
clickList.value[indexFather].content[0] = name
tabList.value[1].title = ''
tabList.value[1].content = []
wrjFlag.value = true
room.value = false
// wrjFlag.value = true
// showMap.value = false
roomYuyue.value = true
roomResult.value = false
// tabList.value[1] = []
emits('add', 6)
searchData()
2022-06-27 18:13:13 +08:00
} else {
clickList.value[indexFather].content.push(name)
2022-06-25 15:08:19 +08:00
}
2022-06-25 13:34:24 +08:00
}
2022-06-29 18:36:50 +08:00
// 改变查询摄像头接口的labelCode数组
mapSearchParam.value.labelCodes = []
clickList.value[1].content.map((item) => {
mapSearchParam.value.labelCodes.push(item.labelCode)
})
console.log('选中的标签code', mapSearchParam.value)
mapSearchParam.value.labelCodes = mapSearchParam.value.labelCodes + ''
2022-07-09 15:22:20 +08:00
// let fatherName = ref('视频资源')
// if (name == '视频资源' || name == '云资源' || name == '感知资源') {
// fatherName.value == name
// }
// if (fatherName.value == '视频资源') {
2022-07-07 20:00:03 +08:00
// getCamera()
// } else {
// dataSource.value = []
// pagination.value.total = 0
// }
2022-07-09 15:22:20 +08:00
if (name == '云资源' || name == '感知资源') {
dataSource.value = []
2022-08-01 09:21:57 +08:00
dataSource2.value = []
2022-07-09 15:22:20 +08:00
pagination.value.total = 0
} else {
2022-08-01 09:21:57 +08:00
if (name !== '无人机' && name !== '单兵设备') {
getCamera()
}
2022-07-09 15:22:20 +08:00
}
2022-06-25 13:34:24 +08:00
}
2022-08-25 19:06:53 +08:00
// 打开视频批量预览
2022-08-09 17:09:58 +08:00
const batchPreview = async function (page) {
if (page.layerX) {
page = 1
}
2022-08-06 16:36:20 +08:00
if (selectedList.value.length > 0) {
2022-08-09 17:09:58 +08:00
videoTotal.value = selectedList.value.length
const arr = JSON.parse(JSON.stringify(selectedList.value))
let start = (page - 1) * 4
let list = []
list = arr.splice(start, 4)
2022-08-06 16:36:20 +08:00
const length = list.length
videoList.value = []
for (let index = 0; index < length; index++) {
const param = {
key: list[index].channelId,
}
let ob = {
options: {
2022-08-09 17:09:58 +08:00
width: '512px', //播放器宽度
height: '288px', //播放器高度
2022-08-06 16:36:20 +08:00
color: '#409eff', //主题色
title: '', //视频名称
src: '', //视频源
type: 'm3u8', // 视频源类型
muted: false, //静音
webFullScreen: false,
speedRate: ['0.75', '1.0', '1.25', '1.5', '2.0'], //播放倍速
2022-08-12 17:17:03 +08:00
autoPlay: isXiHaiAn, //自动播放
2022-08-06 16:36:20 +08:00
loop: false, //循环播放
mirror: false, //镜像画面
ligthOff: false, //关灯模式
volume: 0.3, //默认音量大小
control: true, //是否显示控制
controlBtns: [
'audioTrack',
'quality',
'speedRate',
'volume',
'setting',
'pip',
'pageFullScreen',
'fullScreen',
], //显示所有按钮,
},
}
await getStreamByChannelCode(param).then((res) => {
ob.options.src = res.data.data
console.log('监测ob的变化', ob)
videoList.value.push(ob)
})
}
console.log('验证数据的准确性', videoList)
batchVisible.value = true
} else {
message.error('请选择需要预览的数据')
}
}
2022-08-25 19:06:53 +08:00
// 打开图片批量预览
const batchPicturePreview = async function (page) {
if (page.layerX) {
page = 1
}
if (selectedList.value.length > 0) {
videoTotal.value = selectedList.value.length
const arr = JSON.parse(JSON.stringify(selectedList.value))
let start = (page - 1) * 4
let list = []
list = arr.splice(start, 4)
const length = list.length
videoList.value = []
for (let index = 0; index < length; index++) {
const param = {
channelCode: list[index].channelId,
}
let ob = {
options: {
src: '', //图片源
},
}
selectByChannelCode(param).then((res) => {
ob.options.src = (res.data.data && res.data.data[0].picUrl) || ''
videoList.value.push(ob)
})
}
console.log('验证数据的准确性', videoList)
batchPicVisible.value = true
} else {
message.error('请选择需要预览的数据')
}
}
2022-06-27 18:13:13 +08:00
// 清空
const nullClick = () => {
clickList.value[1].content = []
2022-06-29 18:36:50 +08:00
mapSearchParam.value.labelCodes = ''
getCamera()
2022-06-27 18:13:13 +08:00
console.log('hhhhhhhh')
}
2022-06-25 13:34:24 +08:00
// 重置
const clean = () => {
2022-06-29 18:36:50 +08:00
mapSearchParam.value.cameraName = ''
2022-08-06 16:36:20 +08:00
selectedList.value = []
selectedRowKeys.value = []
videoList.value = []
pagination.value.current = 1
mapSearchParam.value.pageNum = 1
pagination.value.pageSize = 10
2022-06-29 18:36:50 +08:00
getCamera()
2022-06-25 13:34:24 +08:00
}
2022-08-06 16:36:20 +08:00
const videoClean = () => {
selectedList.value = []
selectedRowKeys.value = []
videoList.value = []
2022-08-09 17:09:58 +08:00
current.value = 1
2022-08-06 16:36:20 +08:00
}
2022-08-09 17:09:58 +08:00
// 改变批量预览的分页
const changePage = (page) => {}
2022-06-25 13:34:24 +08:00
// 一键申请
2022-06-30 15:27:16 +08:00
const dept = reactive({})
// eslint-disable-next-line no-undef
if (infrastructure) {
// eslint-disable-next-line no-undef
dept.deptId = infrastructure.deptId
// eslint-disable-next-line no-undef
dept.deptName = infrastructure.deptName
}
2022-06-25 13:34:24 +08:00
const apply = () => {
2022-07-01 18:20:43 +08:00
if (selectedRowKeys.value.length != 0) {
console.log('一键申请', selectedList.value)
let arr = [
{
arr: [
{
description: '',
note1: JSON.stringify(selectedList.value),
resourceId: '1522550195055828996',
resourceName: '摄像头列表',
type: '基础设施',
},
],
deptId: dept.deptId,
deptName: dept.deptName,
},
]
localStorage.setItem('applyList', JSON.stringify(arr))
router.push({
path: '/apply',
})
} else {
message.error('请选择需要申请的数据')
}
2022-06-25 13:34:24 +08:00
}
2022-07-07 19:07:56 +08:00
// // 添加至购物车
// const addShopCar = () => {
// console.log('添加至购物车')
// }
2022-08-01 09:21:57 +08:00
const wrjFlag = ref(false)
2022-08-15 14:48:53 +08:00
const getCamera = (flag, str) => {
if (flag) {
mapSearchParam.value.cameraName = str
console.log('赋值===============》', str, mapSearchParam.value)
}
2022-06-28 22:24:05 +08:00
console.log('初始化调用')
2022-07-15 14:56:17 +08:00
console.log('不选左侧树的时候不调用接口', mapSearchParam.value)
2022-07-25 19:21:41 +08:00
if (!whoShow1.value.itShowXiHaiAn) {
getCameraByParentId(mapSearchParam.value).then((res) => {
console.log('RRRRRRRRRR', res.data.data)
dataSource.value = res.data.data
pagination.value.total = res.data.count
})
} else {
let params = {
regionId:
mapSearchParam.value.parentId || '70be8c5b664f4bcf869d82f2e8335051',
pageNum: mapSearchParam.value.pageNum,
pageSize: mapSearchParam.value.pageSize,
name: mapSearchParam.value.cameraName || '',
2022-07-25 19:21:41 +08:00
longitude: mapSearchParam.value.gpsX || '',
2022-07-28 19:35:42 +08:00
latitude: mapSearchParam.value.gpsY || '',
2022-07-25 19:21:41 +08:00
radius: mapSearchParam.value.radius || '',
2022-08-09 17:09:58 +08:00
status: 1,
}
if (
params.regionId === '70be8c5b664f4bcf869d82f2e8335051' &&
!params.name &&
!params.longitude
) {
params.status = ''
2022-07-25 19:21:41 +08:00
}
let paramsFather = ''
let i = 1
for (var key in params) {
if (params[key] === '') {
delete params[key]
} else {
if (i != 1) {
paramsFather += `&${key}=` + params[key]
i += 1
} else if (i == 1) {
paramsFather += `${key}=` + params[key]
i += 1
}
}
}
getCameraByCondition(paramsFather).then((res) => {
dataSource.value = res.data.data
pagination.value.total = res.data.count
console.log('根据parent查询摄像头', res.data.data)
})
}
2022-06-28 22:24:05 +08:00
}
2022-08-15 14:48:53 +08:00
defineExpose({
getCamera,
})
2022-06-28 22:24:05 +08:00
//加入申购车
const addShoppingCart = () => {
2022-07-04 17:02:00 +08:00
if (selectedList.value.length > 0) {
sgcInsert({
delFlag: '0',
resourceId: '8888888880000000001',
note1: selectedList.value,
// userId: userId.value,
}).then((res) => {
console.log(res)
message.success('添加申购车成功!')
mybus.emit('getSgcNum')
})
} else {
message.error('请选择需要添加申购车的数据')
}
2022-06-28 22:24:05 +08:00
}
2022-06-25 13:34:24 +08:00
// 表格
2022-06-28 22:24:05 +08:00
const dataSource = ref([])
2022-08-01 09:21:57 +08:00
const dataSource2 = ref([])
2022-06-25 13:34:24 +08:00
const columns = ref([
{
2022-06-28 22:24:05 +08:00
title: '名称',
dataIndex: 'channelName',
key: 'channelName',
2022-06-25 13:34:24 +08:00
},
{
2022-06-28 22:24:05 +08:00
title: '归属',
dataIndex: 'nodeName',
2022-06-29 18:36:50 +08:00
width: '60%',
2022-06-28 22:24:05 +08:00
key: 'nodeName',
2022-06-25 13:34:24 +08:00
},
2022-06-29 18:36:50 +08:00
{
title: '操作',
dataIndex: 'operation',
width: '10%',
key: 'channelId',
},
2022-06-25 13:34:24 +08:00
])
2022-08-01 09:21:57 +08:00
const columns2 = ref([
{
title: '名称',
dataIndex: 'wrjName',
key: 'wrjName',
},
{
title: '申请状态',
dataIndex: 'wrjState',
width: '60%',
key: 'wrjState',
},
{
title: '操作',
dataIndex: 'operation',
width: '20%',
key: 'wrjName',
},
])
2022-07-07 19:07:56 +08:00
// const allClick = ref([])
2022-06-30 15:27:16 +08:00
const onSelectChange = (record, selected, selectedRows, nativeEvent) => {
console.log('hahhahah', record, selected, selectedRows, nativeEvent)
if (selected) {
if (selectedRowKeys.value.length == 1000) {
message.warning('最多只能添加1000个摄像头')
2022-06-30 15:40:03 +08:00
} else {
selectedList.value.push(record)
2022-07-25 19:21:41 +08:00
selectedRowKeys.value.push(record.channelCode || record.channelId)
2022-06-30 15:40:03 +08:00
}
2022-06-30 15:27:16 +08:00
} else {
selectedList.value = selectedList.value.filter(
(item) => item.idtCameraChannel !== record.idtCameraChannel
)
selectedRowKeys.value.splice(
2022-07-25 19:21:41 +08:00
selectedRowKeys.value.indexOf(record.channelCode || record.channelId),
2022-06-30 15:27:16 +08:00
1
)
}
console.log('已选中======================>', selectedList.value)
// selectedList.value = selectedRows
2022-06-28 22:24:05 +08:00
// allClick.value = selectedRowKeys
2022-06-25 15:26:42 +08:00
}
2022-06-30 15:27:16 +08:00
const onSelectAll = (selected, selectedRows, changeRows) => {
if (selected) {
changeRows.map((val) => {
selectedList.value.push(val)
2022-07-25 19:21:41 +08:00
selectedRowKeys.value.push(val.channelCode || val.channelId)
2022-06-30 15:27:16 +08:00
})
if (selectedRowKeys.value.length > 1000) {
message.warning('最多只能添加1000个摄像头')
2022-06-30 15:40:03 +08:00
changeRows.map((val) => {
selectedList.value = selectedList.value.filter(
(item) => item.idtCameraChannel !== val.idtCameraChannel
)
selectedRowKeys.value.splice(
2022-07-25 19:21:41 +08:00
selectedRowKeys.value.indexOf(val.channelCode || val.channelId),
2022-06-30 15:40:03 +08:00
1
)
})
}
2022-06-30 15:27:16 +08:00
} else {
changeRows.map((val) => {
selectedList.value = selectedList.value.filter(
(item) => item.idtCameraChannel !== val.idtCameraChannel
)
selectedRowKeys.value.splice(
2022-07-25 19:21:41 +08:00
selectedRowKeys.value.indexOf(val.channelCode || val.channelId),
2022-06-30 15:27:16 +08:00
1
)
})
}
console.log('heiheiheiehiehei', selected, selectedRows, changeRows)
}
2022-06-25 13:34:24 +08:00
const handleTableChange = (val) => {
pagination.value.current = val.current
pagination.value.pageSize = val.pageSize
2022-06-28 22:24:05 +08:00
mapSearchParam.value.pageNum = val.current
mapSearchParam.value.pageSize = val.pageSize
getCamera()
2022-06-25 13:34:24 +08:00
// this.getTableList()
}
</script>
<style lang="less" scoped>
2022-06-27 09:43:37 +08:00
.infrastructrueBox {
2022-06-25 13:34:24 +08:00
padding: 0.2rem;
2022-06-27 18:53:51 +08:00
// background: #f3f5f9;
background: #ffffff;
/* padding: 0.16rem; */
border-bottom: 0.01rem solid rgba(150, 144, 144, 0.3);
2022-06-27 09:43:37 +08:00
.infrastructrue-tab {
2022-06-27 18:53:51 +08:00
// background: #ffffff;
// padding: 0.2rem;
// border-bottom: 0.01rem solid rgba(150, 144, 144, 0.3);
2022-06-27 09:43:37 +08:00
span {
display: inline-block;
height: 0.24rem;
font-size: 0.14rem;
line-height: 0.24rem;
border: 0;
border-radius: 0.12rem;
margin-left: 0.1rem;
text-align: center;
2022-06-25 13:34:24 +08:00
color: #666666;
2022-06-27 09:43:37 +08:00
cursor: pointer;
padding: 0 0.08rem;
}
.leftType {
2022-07-26 16:33:10 +08:00
margin: 0.2rem 0;
margin-right: 0.06rem;
2022-06-27 09:43:37 +08:00
}
.down {
background: #0087ff;
color: #ffffff;
2022-06-25 13:34:24 +08:00
}
2022-06-27 09:43:37 +08:00
.tabBox {
margin-bottom: 0.16rem;
2022-06-25 15:08:19 +08:00
}
2022-06-27 09:43:37 +08:00
.tabBox:last-of-type {
margin-bottom: 0;
2022-06-25 13:34:24 +08:00
}
}
2022-06-27 09:43:37 +08:00
.infrastructrue-content {
2022-06-25 13:34:24 +08:00
display: flex;
justify-content: space-between;
2022-06-27 09:43:37 +08:00
padding: 0.14rem 0.2rem 0.1rem;
background: #ffffff;
.contentNum {
position: relative;
2022-06-25 15:08:19 +08:00
display: flex;
2022-06-27 09:43:37 +08:00
p {
color: #666666;
padding: 0;
margin: 0;
span {
color: #0087ff;
font-size: 0.2rem;
font-weight: 500;
}
2022-06-25 15:08:19 +08:00
}
2022-06-27 09:43:37 +08:00
p:first-of-type {
padding-right: 0.16rem;
margin-right: 0.16rem;
2022-06-25 15:26:42 +08:00
}
2022-06-27 09:43:37 +08:00
.boundary {
position: absolute;
left: 0.9rem;
top: 0.07rem;
display: block;
width: 0.02rem;
border-radius: 0.01rem;
height: 0.2rem;
background: rgba(150, 144, 144, 0.3);
}
}
.contentRight {
position: relative;
display: flex;
justify-content: space-between;
.boundary {
position: absolute;
left: 3.74rem;
top: 0.07rem;
display: block;
width: 0.02rem;
border-radius: 0.01rem;
height: 0.2rem;
background: rgba(150, 144, 144, 0.3);
}
.searchInput {
display: flex;
margin-right: 0.2rem;
.ant-input-search {
max-width: 4rem;
}
:deep(.ant-input) {
width: 2rem;
2022-06-25 13:34:24 +08:00
height: 0.36rem;
2022-06-27 09:43:37 +08:00
font-size: 0.14rem;
color: #b2b2b2;
background: #f5f5f5;
}
:deep(.ant-input-group-addon) {
display: inline-block;
margin-left: 0.1rem;
.ant-input-search-button {
width: 0.8rem;
height: 0.36rem;
background: #0558e1;
border-radius: 0.04rem;
font-size: 0.14rem;
}
}
:deep(.ant-btn) {
2022-06-25 13:34:24 +08:00
background: #0558e1;
border-radius: 0.04rem;
}
}
2022-06-27 09:43:37 +08:00
.buttonAdd {
2022-06-25 13:34:24 +08:00
background: #0558e1;
border-radius: 0.04rem;
2022-06-27 09:43:37 +08:00
height: 0.36rem;
border-color: #0558e1;
margin-left: 0.1rem;
2022-06-25 13:34:24 +08:00
}
}
}
2022-06-27 09:43:37 +08:00
.infrastructrue-table {
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa;
}
2022-06-25 15:26:42 +08:00
}
2022-06-27 18:53:51 +08:00
.map-contain {
// width: 9.46rem;
height: 4.1rem;
margin-left: 0.16rem;
position: relative;
}
2022-06-25 15:26:42 +08:00
}
2022-08-11 14:22:54 +08:00
.roomBackground {
background: #0058e1;
color: #ffffff;
}
.nullBackground {
background: #f3f5f9;
color: #0087ff;
}
:deep(.ant-form-item-control-input-content) {
margin-left: 0.15rem;
}
:deep(.ant-col) {
.ant-form-item {
margin-bottom: 0;
}
}
.jinggaoD {
display: flex;
align-items: center;
}
.jinggaoNull {
display: none;
}
.imgJinggao {
width: 0.2rem;
height: 0.2rem;
background: url('~@/assets/home/jingao.png') no-repeat;
background-size: 100%;
}
.introduction {
:deep(.ant-form-item-control) {
margin-left: -2.1rem;
}
}
.roomBox {
.leftMake {
float: left;
margin-left: -1rem;
margin-top: -0.5rem;
font-size: 0.2rem;
cursor: pointer;
.leftTop {
width: 0.6rem;
height: 1.75rem;
border-top-left-radius: 0.08rem;
border-bottom-left-radius: 0.08rem;
padding: 0.13rem;
text-align: center;
}
.leftBottom {
width: 0.6rem;
height: 1.75rem;
border-top-left-radius: 0.08rem;
border-bottom-left-radius: 0.08rem;
padding: 0.2rem 0.13rem 0.1rem 0.1rem;
text-align: center;
}
}
.roomSearch {
display: flex;
align-items: center;
.searchInput {
display: flex;
margin-right: 0.2rem;
margin-left: 0.2rem;
// .ant-input-search {
// max-width: 4rem;
// }
:deep(.ant-input) {
width: 2rem;
height: 0.36rem;
font-size: 0.14rem;
color: #b2b2b2;
background: #f5f5f5;
}
:deep(.ant-input-group-addon) {
display: inline-block;
margin-left: 0.1rem;
.ant-input-search-button {
width: 0.8rem;
height: 0.36rem;
background: #0558e1;
border-radius: 0.06rem;
font-size: 0.14rem;
}
}
:deep(.ant-btn) {
border-radius: 0.06rem;
}
}
}
.roomTableList {
display: flex;
justify-content: space-between;
align-items: center;
margin: 0.4rem 0 0.2rem 0;
.roomTime {
display: flex;
align-items: center;
:deep(.ant-space-vertical) {
flex-direction: inherit;
margin-left: 0.2rem;
}
}
}
.roomItem {
width: 10.3rem;
height: 2rem;
border-top: 1px #d5d4d4 solid;
display: flex;
align-items: center;
.leftImg {
width: 2.4rem;
height: 1.75rem;
margin: 0 0.3rem 0 0.15rem;
// background: url('~@/assets/home/yyzy_square.png') no-repeat;
background-size: 100%;
img {
width: 100%;
height: 100%;
}
}
.rightContent {
height: 1.75rem;
width: 5.8rem;
.topContent {
font-size: 0.2rem;
color: #000;
font-weight: 600;
}
.centerContent {
display: flex;
justify-content: space-between;
font-size: 0.14rem;
margin: 0.15rem 0 0.2rem 0;
}
}
}
:deep(.ant-pagination) {
float: right;
}
:deep(.ant-pagination) {
text-align: end;
}
}
2022-06-25 13:34:24 +08:00
</style>
2022-08-01 09:21:57 +08:00
<style lang="less">
.wrj {
.ant-modal-body {
height: 700px !important;
2022-08-11 14:22:54 +08:00
}
}
.modalClass {
.ant-modal-body {
height: 4rem !important;
2022-08-01 09:21:57 +08:00
overflow-y: scroll !important;
}
2022-08-11 14:22:54 +08:00
.ant-modal-title {
font-weight: 600;
}
.ant-modal-content {
.ant-modal-header {
border-bottom: 0 !important;
}
}
}
.appModal {
.ant-modal-body {
height: 4.8rem !important;
overflow-y: scroll !important;
}
.ant-modal-title {
font-weight: 600;
}
.ant-modal-content {
.ant-modal-header {
border-bottom: 0 !important;
}
}
2022-08-01 09:21:57 +08:00
}
2022-08-09 17:09:58 +08:00
.single-preview-modal {
.ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover;
}
.ant-modal-title {
font-size: 0.16rem;
font-weight: 500;
color: #ffffff;
}
.anticon {
color: #ffffff;
}
}
2022-08-06 16:36:20 +08:00
.batch-preview-modal {
.batch-video {
width: 100%;
display: grid;
grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%;
justify-content: center;
2022-08-26 09:27:34 +08:00
grid-row-gap: 10px;
grid-column-gap: 10px;
2022-08-06 16:36:20 +08:00
}
2022-08-09 17:09:58 +08:00
.ant-pagination-item-link {
background-color: #5580f7;
}
.ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover;
}
.ant-modal-title {
font-size: 0.16rem;
font-weight: 500;
color: #ffffff;
}
.anticon {
color: #ffffff;
}
2022-08-06 16:36:20 +08:00
}
2022-08-01 09:21:57 +08:00
</style>