|
@@ -4,7 +4,10 @@
|
|
|
<div class="camera-list">
|
|
<div class="camera-list">
|
|
|
<div v-if="showActionBar" class="action-bar">
|
|
<div v-if="showActionBar" class="action-bar">
|
|
|
<span class="num-text">已选{{ chooseNum }}项</span>
|
|
<span class="num-text">已选{{ chooseNum }}项</span>
|
|
|
- <el-button :class="isActiveExport ? 'btn-active' : 'btn-normal'" @click="handleBatchExport"
|
|
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ :class="isActiveExport ? 'btn-active' : 'btn-normal'"
|
|
|
|
|
+ @click="handleBatchExport"
|
|
|
|
|
+ v-if="hasCameraViewPermission()"
|
|
|
>导出</el-button
|
|
>导出</el-button
|
|
|
>
|
|
>
|
|
|
<el-button
|
|
<el-button
|
|
@@ -78,7 +81,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
批量修改
|
|
批量修改
|
|
|
</el-button>
|
|
</el-button>
|
|
|
- <el-badge :value="totalRow" :hidden="totalRow < 1" class="item">
|
|
|
|
|
|
|
+ <!-- <el-badge :value="totalRow" :hidden="totalRow < 1" class="item">
|
|
|
<el-button
|
|
<el-button
|
|
|
plain
|
|
plain
|
|
|
color="#1890FF"
|
|
color="#1890FF"
|
|
@@ -86,7 +89,21 @@
|
|
|
style="margin: 0 18px 0 0"
|
|
style="margin: 0 18px 0 0"
|
|
|
>共享相机</el-button
|
|
>共享相机</el-button
|
|
|
>
|
|
>
|
|
|
- </el-badge>
|
|
|
|
|
|
|
+ </el-badge> -->
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="hasCameraViewPermission()"
|
|
|
|
|
+ plain
|
|
|
|
|
+ color="#1890FF"
|
|
|
|
|
+ style="margin: 0 18px 0 0"
|
|
|
|
|
+ @click="handleExportALl"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #icon>
|
|
|
|
|
+ <el-icon>
|
|
|
|
|
+ <Tickets />
|
|
|
|
|
+ </el-icon>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ 全部相机信息导出
|
|
|
|
|
+ </el-button>
|
|
|
</template>
|
|
</template>
|
|
|
<template #empty>
|
|
<template #empty>
|
|
|
<div class="empty-content flex flex-col items-center">
|
|
<div class="empty-content flex flex-col items-center">
|
|
@@ -113,11 +130,7 @@
|
|
|
<EditSRSCamera class="add-popover" v-model="showEditSRSPopover" :edit-data="editCameraData" />
|
|
<EditSRSCamera class="add-popover" v-model="showEditSRSPopover" :edit-data="editCameraData" />
|
|
|
<EditNVRCamera class="add-popover" v-model="showEditNVRPopover" :edit-data="editCameraData" />
|
|
<EditNVRCamera class="add-popover" v-model="showEditNVRPopover" :edit-data="editCameraData" />
|
|
|
<ShareCamera class="add-popover" v-model="addSharedPopover" :share-data="shareCameraData" />
|
|
<ShareCamera class="add-popover" v-model="addSharedPopover" :share-data="shareCameraData" />
|
|
|
- <EditSharedCamera
|
|
|
|
|
- class="add-popover"
|
|
|
|
|
- v-model="showSharedPopover"
|
|
|
|
|
- @update-unadd="updateUnaddAmount"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <EditSharedCamera class="add-popover" v-model="showSharedPopover" @update-unadd="updateUnaddAmount" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -136,7 +149,7 @@
|
|
|
import EditNVRCamera from './components/CameraEditNVRPopover.vue';
|
|
import EditNVRCamera from './components/CameraEditNVRPopover.vue';
|
|
|
import EditSharedCamera from './components/CameraSharedEdit.vue';
|
|
import EditSharedCamera from './components/CameraSharedEdit.vue';
|
|
|
import emptyImg from '@/assets/images/table/table-empty.png';
|
|
import emptyImg from '@/assets/images/table/table-empty.png';
|
|
|
- import { Plus, DocumentAdd, Edit } from '@element-plus/icons-vue';
|
|
|
|
|
|
|
+ import { Plus, DocumentAdd, Edit, Tickets } from '@element-plus/icons-vue';
|
|
|
import shareIcon from '@/assets/images/table/table-share.png';
|
|
import shareIcon from '@/assets/images/table/table-share.png';
|
|
|
import previewIcon from '@/assets/images/table/table-preview.png';
|
|
import previewIcon from '@/assets/images/table/table-preview.png';
|
|
|
import editIcon from '@/assets/images/table/table-edit.png';
|
|
import editIcon from '@/assets/images/table/table-edit.png';
|
|
@@ -166,6 +179,9 @@
|
|
|
const hasCameraDeletePermission = () => {
|
|
const hasCameraDeletePermission = () => {
|
|
|
return userStore.checkPermission(PERM_DEVICE.CAMERA_DELETE);
|
|
return userStore.checkPermission(PERM_DEVICE.CAMERA_DELETE);
|
|
|
};
|
|
};
|
|
|
|
|
+ const hasCameraViewPermission = () => {
|
|
|
|
|
+ return userStore.checkPermission(PERM_DEVICE.CAMERA_VIEW);
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
const sceneTemplateListInfo = useSceneTemplateList();
|
|
const sceneTemplateListInfo = useSceneTemplateList();
|
|
|
const { getSceneTemplateList } = sceneTemplateListInfo;
|
|
const { getSceneTemplateList } = sceneTemplateListInfo;
|
|
@@ -271,6 +287,31 @@
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ const handleExportALl = async () => {
|
|
|
|
|
+ const requestBody = {};
|
|
|
|
|
+
|
|
|
|
|
+ const config: AxiosRequestConfig = {
|
|
|
|
|
+ headers: getHeaders(),
|
|
|
|
|
+ responseType: 'blob',
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ const response = await axios.post(urlPrefix + '/admin/cameraConfig/exportAllCameraList', requestBody, config);
|
|
|
|
|
+
|
|
|
|
|
+ const blob = new Blob([response.data], {
|
|
|
|
|
+ type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 创建下载链接
|
|
|
|
|
+ let downloadLink: HTMLAnchorElement | null = document.createElement('a');
|
|
|
|
|
+ const url = window.URL.createObjectURL(blob);
|
|
|
|
|
+ downloadLink.href = url;
|
|
|
|
|
+ downloadLink.download = '全量相机导出信息.xlsx';
|
|
|
|
|
+ downloadLink.click();
|
|
|
|
|
+ // 移除下载链接
|
|
|
|
|
+ window.URL.revokeObjectURL(url);
|
|
|
|
|
+ downloadLink = null;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
const handleBatchExport = async () => {
|
|
const handleBatchExport = async () => {
|
|
|
try {
|
|
try {
|
|
|
const requestBody = {
|
|
const requestBody = {
|
|
@@ -281,11 +322,7 @@
|
|
|
headers: getHeaders(),
|
|
headers: getHeaders(),
|
|
|
responseType: 'blob',
|
|
responseType: 'blob',
|
|
|
};
|
|
};
|
|
|
- const response = await axios.post(
|
|
|
|
|
- urlPrefix + '/admin/cameraConfig/exportCameraList',
|
|
|
|
|
- requestBody,
|
|
|
|
|
- config,
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ const response = await axios.post(urlPrefix + '/admin/cameraConfig/exportCameraList', requestBody, config);
|
|
|
const blob = new Blob([response.data], {
|
|
const blob = new Blob([response.data], {
|
|
|
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
|
});
|
|
});
|