Sfoglia il codice sorgente

fix: 修改相机查询参数,部分样式,重构部分代码

bxy 1 anno fa
parent
commit
ab42058e75

+ 5 - 113
src/api/camera/camera-overview.ts

@@ -1,12 +1,5 @@
 import { http } from '@/utils/http/axios';
-import {
-  CameraAddType,
-  // CameraIPItem,
-  CameraShowItem,
-  CameraRangeItem,
-  // CameraSRS,
-  // CameraNVRItem,
-} from '@/types/camera/type';
+import { CameraAddItem, CameraDetailServer, CameraRangeItem } from '@/types/camera/type';
 
 export type PaginationArrayData<T> = {
   records: T[];
@@ -20,7 +13,7 @@ export type CameraQueryParamDetails = {
   ip?: string; // 相机IP
   code?: string; // 相机code
   cameraType?: string; // 相机协议类型
-  sceneCode?: string; // 场景编码
+  workspaceId?: number; // 工位id
   sourceType?: string; // 添加方式:IP,NVR,RTSP
   integrationState?: number; // 是否接入平台
   networkingState?: number; // 联网状态
@@ -33,89 +26,6 @@ export type CameraQueryParams = {
   queryParam: CameraQueryParamDetails;
 };
 
-export enum IsPtz {
-  disabled = 0,
-  enbaled = 1,
-}
-
-export interface CameraUrlInfoDTO {
-  pushstreamIp: string; // 推流地址(前端播放的地址)
-  pushstreamRenderUrl: string; // 渲染推流地址(前端播放的渲染地址)
-  m3u8PushstreamIp: string; // ios推流地址(前端播放的地址)
-  m3u8PushstreamRenderIp: string; // ios推流地址(前端播放的地址)
-  pushstreamIpAbs: string; // 推流地址(前端播放的地址)
-  pushstreamRenderUrlAbs: string; //渲染推流地址(前端播放的渲染地址)
-  m3u8PushstreamIpAbs: string; //ios推流地址(前端播放的地址)
-  m3u8PushstreamRenderIpAbs: string; //ios推流地址(前端播放的地址)
-}
-
-export interface PushStreamDTOType {
-  videoUrls: CameraUrlInfoDTO;
-  imageUrl: string; // 摄像头实时记录的画面
-}
-
-/** 根据后端返回的相机详情 */
-export interface CameraDetailServer {
-  id?: number; // 自增主键;
-  workshopId: string; // 车间id
-  workspaceId: string; // 工位id
-  name: string; // 相机名称
-  code: string; // 相机ID
-  cameraIp: string; // 相机IP
-  cameraPort: string; // 相机端口
-  username?: string; // 用户名
-  password?: string; // 密码
-  cameraType: string; // 相机协议类型
-  remark?: string; // 描述
-  isPtz: IsPtz; // 是否支持设置相机转动,比如设置预置位,调整视角等,0-不支持,1-支持
-  onvifPort: string; // 相机的ONVIF端口号
-  sourceType: string; // 相机的添加方式:IP,NVR,RTSP
-  rtspUrl: string; // rtsp地址
-  nvrId: number; // NVRid
-  nvrChannel: string; // NVR通道号
-  videoStandard: string; //视频编码标准,H264, H265
-  videoServiceType: string; // 视频服务类型,TCP, UDP, AUTO
-  isDisabled: number; // 状态: 0-启用, 1-禁用
-  createdBy: number; //创建人
-  updatedBy: number; // 更新人
-  createdAt: string; // 创建时间
-  updatedAt: string; // 更新时间
-  isDeleted: number; //0-未删除,大于0(时间戳)-已删除
-  tenantId: number; // 租户ID
-  networkingState: number; // 联网状态: 0-启用, 1-禁用
-  integrationState: number; // 接入状态: 0-启用, 1-禁用
-  render: number | string; // 渲染选择,无渲染/某个算法
-  version: number; // 版本
-  extra: string; // 扩展数据
-  pushStreamDTO: PushStreamDTOType;
-  companyName: string; // 公司名称
-  workshopName: string; // 车间场景名称
-  workspaceName: string; // 工位名称
-  workspaceCode: string; // 工位code
-  principal?: string; // 工位负责人
-
-  // /** 相机MAC地址 */
-  // cameraMac: string;
-  // /** 录制周期 */
-  // nvrPeriod: number;
-  // /** 录制开始时间 */
-  // nvrStartAt: string;
-  // /** 录制结束时间 */
-  // nvrEndAt: string;
-  // /** 分辨率 */
-  // resolution: number;
-  // // 平台是否显示电子围栏
-  // fenceDisplayStatus: FenceDisplayStatus;
-}
-
-// 是否启用
-export enum FenceDisplayStatus {
-  // 启用
-  enabled = 0,
-  // 禁用
-  disabled = 1,
-}
-
 export interface CameraStatus {
   cameraCode: string;
   integrationState: number;
@@ -131,7 +41,7 @@ export const getCameraList = (data: CameraQueryParams) => {
 };
 
 // 添加相机,三种方式,共用此接口
-export const addCameraItem = (data: CameraAddType) => {
+export const addCameraItem = (data: CameraAddItem) => {
   return http.request({
     url: '/admin/cameraConfig/saveCamera',
     method: 'post',
@@ -140,14 +50,14 @@ export const addCameraItem = (data: CameraAddType) => {
 };
 
 export const getCamerasByIPRange = (params: CameraRangeItem) => {
-  return http.request<CameraShowItem[]>({
+  return http.request<CameraDetailServer[]>({
     url: '/cameraConfig/getCameraByIpSegment',
     method: 'get',
     params,
   });
 };
 
-export const updateCameraItem = (data: CameraAddType) => {
+export const updateCameraItem = (data: CameraAddItem) => {
   return http.request(
     {
       url: '/admin/cameraConfig/updateCamera',
@@ -200,24 +110,6 @@ export const getCameraState = (data: { cameraCodeList: string[] }) => {
   });
 };
 
-// /** 添加流媒体相机 */
-// export const addSRSCameraItem = (data: CameraSRS) => {
-//   return http.request({
-//     url: '/cameraConfig/saveRstp',
-//     method: 'post',
-//     data,
-//   });
-// };
-
-// /** 添加NVR相机 */
-// export const addNVRCameraItem = (data: CameraNVRItem) => {
-//   return http.request({
-//     url: '/cameraConfig/saveByNVR',
-//     method: 'post',
-//     data,
-//   });
-// };
-
 // 批量添加相机 - 下载场景code
 export function downloadSpaceCode() {
   return http.request(

+ 2 - 0
src/components/Table/src/Table.vue

@@ -99,12 +99,14 @@
             :type="item.type"
             :minWidth="item.minWidth"
             :fixed="item.fixed"
+            :align="item.align"
           />
           <el-table-column
             v-else-if="item.type === 'selection'"
             :type="item.type"
             :minWidth="item.minWidth"
             :fixed="item.fixed"
+            :align="item.align"
             :selectable="item.selectable"
           />
           <el-table-column v-else :prop="item.prop" :sortable="item.sortable" v-bind="item">

+ 34 - 9
src/types/camera/constant.ts

@@ -1,9 +1,38 @@
-import type { BasicColumn } from '@/components/Table';
 import { h } from 'vue';
+import { ElTag } from 'element-plus';
+import type { BasicColumn } from '@/components/Table';
 import connectedIcon from '@/assets/images/table/camera-netConnect.png';
 import unConnectedIcon from '@/assets/images/table/camera-netUnconnect.png';
-import { ElTag } from 'element-plus';
-import { VideoServiceType, VideoStandardType } from './type';
+
+// 是否启用
+export enum FenceDisplayStatus {
+  // 启用
+  enabled = 0,
+  // 禁用
+  disabled = 1,
+}
+
+export enum IsPtz {
+  disabled = 0,
+  enbaled = 1,
+}
+
+export enum AddType {
+  ip = 'IP',
+  nvr = 'NVR',
+  srs = 'RTSP',
+}
+
+export enum VideoServiceType {
+  UDP = 'UDP',
+  TCP = 'TCP',
+  AUTO = 'AUTO',
+}
+
+export enum VideoStandardType {
+  H264 = 'H264',
+  H265 = 'H265',
+}
 
 export const queryTypeSelect = [
   {
@@ -54,12 +83,6 @@ export const cameraAddType = [
   // },
 ];
 
-export enum AddType {
-  ip = 'IP',
-  nvr = 'NVR',
-  srs = 'RTSP',
-}
-
 export const serviceTypeSelect = [
   {
     value: VideoServiceType.UDP,
@@ -86,6 +109,8 @@ export const standardTypeSelect = [
   },
 ];
 
+// TODO: 拆分新文件
+
 type CameraAddFormItem = {
   label: string;
   prop: string;

+ 56 - 133
src/types/camera/type.ts

@@ -1,9 +1,28 @@
+import { IsPtz, VideoServiceType, VideoStandardType } from './constant';
+
 export interface CheckedSceneTemplate {
   sceneId: number;
   templateId: number;
 }
 
-export interface CameraAddType {
+export interface CameraUrlInfoDTO {
+  pushstreamIp: string; // 推流地址(前端播放的地址)
+  pushstreamRenderUrl: string; // 渲染推流地址(前端播放的渲染地址)
+  m3u8PushstreamIp: string; // ios推流地址(前端播放的地址)
+  m3u8PushstreamRenderIp: string; // ios推流地址(前端播放的地址)
+  pushstreamIpAbs: string; // 推流地址(前端播放的地址)
+  pushstreamRenderUrlAbs: string; //渲染推流地址(前端播放的渲染地址)
+  m3u8PushstreamIpAbs: string; //ios推流地址(前端播放的地址)
+  m3u8PushstreamRenderIpAbs: string; //ios推流地址(前端播放的地址)
+}
+
+export interface PushStreamDTOType {
+  videoUrls: CameraUrlInfoDTO;
+  imageUrl: string; // 摄像头实时记录的画面
+}
+
+// 添加相机/编辑相机
+export interface CameraAddItem {
   id?: number; //相机id:编辑时必传
   name: string; // 相机名称
   code: string; // 相机编号、设备ID
@@ -15,71 +34,51 @@ export interface CameraAddType {
   workshopId: number; // 车间id
   workspaceId: number; // 工位id
   remark?: string; // 描述、备注
-  isPtz?: number; // 相机是否支持移动缩放:0-不支持;1-支持
+  isPtz?: IsPtz; // 相机是否支持移动缩放:0-不支持;1-支持
   onvifPort?: string; // 相机的ONVIF端口号
-  sourceType: string; // 添加方式: IP,NVR,RTSP1
+  sourceType: string; // 添加方式: IP,NVR,RTSP
   rtspUrl?: string; // rtsp地址
   nvrId?: number; // NVR id
   nvrChannel?: string; // NVR通道号
-  videoStandard: string; // 视频编码标准,H264, H265
-  videoServiceType?: string; // 视频服务类型,TCP, UDP, AUTO
+  videoStandard: VideoStandardType; // 视频编码标准,H264, H265
+  videoServiceType?: VideoServiceType; // 视频服务类型,TCP, UDP, AUTO
   sceneTemplateList: CheckedSceneTemplate[]; // 场景-模板列表
   version?: number; // 版本
 }
 
-export interface CameraIPItem {
-  /** 相机IP */
-  cameraIp: string;
-  /**	相机协议类型 */
-  cameraType: string;
-  /** 相机端口 */
-  cameraPort: string;
-  /** 相机ID */
-  code: string;
-  /** 工位场景Id */
-  workspaceId: string;
-  /** 工位负责人 */
-  principal?: string;
-  /** 描述 */
-  remark?: string;
-  /** 相机名称 */
-  name: string;
-  /** id */
-  id?: number;
-  /** 用户名 */
-  username?: string;
-  /** 密码 */
-  password?: string;
-  /** 相机工位code */
-  workspaceCode?: string;
-  /** 推流地址 */
-  pushstreamIp: string;
-  rtspurl: string;
-  // 服务类型
-  videoServiceType: VideoServiceType;
-  // 视频编码类型
-  videoStandard: VideoStandardType;
-  // 业务场景信息
-  sceneTemplateList: CheckedSceneTemplate[];
-  // 添加方式
-  sourceType: string;
-  // 车间信息
-  workshopId: number;
-}
+/** 根据后端返回的相机详情 */
+export interface CameraDetailServer extends CameraAddItem {
+  isDisabled?: number; // 状态: 0-启用, 1-禁用
+  createdBy?: number; //创建人
+  updatedBy?: number; // 更新人
+  createdAt?: string; // 创建时间
+  updatedAt?: string; // 更新时间
+  isDeleted?: number; //0-未删除,大于0(时间戳)-已删除
+  tenantId?: number; // 租户ID
+  networkingState: number; // 联网状态: 0-启用, 1-禁用
+  integrationState: number; // 接入状态: 0-启用, 1-禁用
+  render?: string; // 渲染选择,无渲染/某个算法
+  extra?: string; // 扩展数据
+  pushStreamDTO?: PushStreamDTOType;
+  companyName?: string; // 公司名称
+  workshopName?: string; // 车间场景名称
+  workspaceName?: string; // 工位名称
+  workspaceCode?: string; // 工位code
+  principal?: string; // 工位负责人
 
-export interface CameraShowItem extends CameraIPItem {
-  /** 相机MAC地址 */
-  cameraMac: string;
-  /** 车间场景名称 */
-  workshopName: string;
-  /** 工位场景名称 */
-  workspaceName: string;
-  /** 联网状态: 0-启用, 1-禁用 */
-  networkingState: number;
-  /** 状态: 0-启用, 1-禁用 */
-  status: number;
-  /** 工位code */
-  workspaceCode: string;
+  // TODO:以下字段为V4版本之前本interface所具有,V4接口无以下返回,暂保留
+  // /** 相机MAC地址 */
+  // cameraMac: string;
+  // /** 录制周期 */
+  // nvrPeriod: number;
+  // /** 录制开始时间 */
+  // nvrStartAt: string;
+  // /** 录制结束时间 */
+  // nvrEndAt: string;
+  // /** 分辨率 */
+  // resolution: number;
+  // // 平台是否显示电子围栏
+  // fenceDisplayStatus: FenceDisplayStatus;
 }
 
 export interface CameraRangeItem {
@@ -116,79 +115,3 @@ export interface CameraShareItem {
   //分享的结束时间
   endTime: string;
 }
-
-export interface CameraSRS {
-  /** 相机IP */
-  cameraIp: string;
-  name: string;
-  /** 相机ID */
-  code: string;
-  /** 工位场景Id */
-  workspaceId: string;
-  /** 相机工位code */
-  workspaceCode?: string;
-  /** 流媒体地址 */
-  rtspUrl: string;
-  /** 工位负责人 */
-  principal?: string;
-  /** 描述 */
-  remark?: string;
-  // 服务类型
-  videoServiceType: VideoServiceType;
-  // 视频编码类型
-  videoStandard: VideoStandardType;
-  // 业务场景信息
-  sceneTemplateList: CheckedSceneTemplate[];
-  // 添加方式
-  sourceType: string;
-  // 车间信息
-  workshopId: number;
-}
-
-export enum VideoServiceType {
-  UDP = 'UDP',
-  TCP = 'TCP',
-  AUTO = 'AUTO',
-}
-
-export enum VideoStandardType {
-  H264 = 'H264',
-  H265 = 'H265',
-}
-
-export interface CameraNVRItem {
-  nvrId?: number; // NVR id
-  //名称
-  name: string;
-  //ip地址
-  nvrIp: string;
-  //端口
-  cameraPort: string;
-  //协议类型
-  cameraType: string;
-  //nvr平台用户名
-  nvrUsername: string;
-  //场景
-  workspaceCode: string;
-  workspaceId: string;
-  //nvr平台密码
-  nvrPassword: string;
-  //工位负责人
-  principal?: string;
-  //设备id号
-  code: string;
-  //备注
-  remark?: string;
-  //nvr平台通道号
-  nvrChannel: string;
-  //服务类型
-  videoServiceType: VideoServiceType;
-  //视频编码类型
-  videoStandard: VideoStandardType;
-  // 业务场景信息
-  sceneTemplateList: CheckedSceneTemplate[];
-  // 添加方式
-  sourceType: string;
-  // 车间信息
-  workshopId: number;
-}

+ 5 - 15
src/views/cameras/overview/CamerasOverview.vue

@@ -92,16 +92,8 @@
       @close="handleCloseBatchEdit"
     />
     <EditCamera class="add-popover" v-model="showEditPopover" :edit-data="editCameraData" />
-    <EditSRSCamera
-      class="add-popover"
-      v-model="showEditSRSPopover"
-      :edit-data="editCameraData! as any as CameraSRS"
-    />
-    <EditNVRCamera
-      class="add-popover"
-      v-model="showEditNVRPopover"
-      :edit-data="editCameraData! as any as CameraNVRItem"
-    />
+    <EditSRSCamera class="add-popover" v-model="showEditSRSPopover" :edit-data="editCameraData" />
+    <EditNVRCamera class="add-popover" v-model="showEditNVRPopover" :edit-data="editCameraData" />
     <ShareCamera class="add-popover" v-model="addSharedPopover" :share-data="shareCameraData" />
     <EditSharedCamera
       class="add-popover"
@@ -133,7 +125,7 @@
   import deleteIcon from '@/assets/images/table/table-delete.png';
   import useCameraOverview from './stores/useCameraOverview';
   import { storeToRefs } from 'pinia';
-  import { CameraIPItem, CameraNVRItem, CameraShowItem, CameraSRS } from '@/types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
   import { deleteCameraItem, deleteCameraItems } from '@/api/camera/camera-overview';
   import { ElMessage, ElMessageBox } from 'element-plus';
   import useCameraShare from './hooks/useCameraShare';
@@ -145,7 +137,6 @@
   import { useSceneTemplateList } from './stores/useSceneTemplateList';
 
   const sceneTemplateListInfo = useSceneTemplateList();
-  const { sceneTemplateList } = storeToRefs(sceneTemplateListInfo);
   const { getSceneTemplateList } = sceneTemplateListInfo;
 
   const { urlPrefix } = useGlobSetting();
@@ -176,8 +167,8 @@
   const showEditPopover = ref(false);
   const showEditSRSPopover = ref(false);
   const showEditNVRPopover = ref(false);
-  const editCameraData = ref<CameraIPItem | null>();
-  const shareCameraData = ref<CameraShowItem | null>();
+  const editCameraData = ref<CameraDetailServer>();
+  const shareCameraData = ref<CameraDetailServer | null>();
   // 多选操作
   const showActionBar = ref(false);
   const chooseNum = ref(0);
@@ -388,7 +379,6 @@
     getCameraItems();
     openInterval();
     getSceneTemplateList();
-    console.log('--------------', sceneTemplateList.value);
   });
 
   onBeforeUnmount(() => {

+ 4 - 8
src/views/cameras/overview/components/AddCameraByIP.vue

@@ -130,7 +130,7 @@
 
 <script setup lang="ts">
   import { onBeforeMount, ref } from 'vue';
-  import { CameraIPItem } from '@/types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
   import {
     protocalTypeSelect,
     serviceTypeSelect,
@@ -138,17 +138,16 @@
   } from '@/types/camera/constant';
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
   import { cloneDeep } from 'lodash-es';
-  import { ElMessage } from 'element-plus';
   import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
 
-  const props = defineProps<{ formData?: CameraIPItem | null }>();
+  const props = defineProps<{ formData?: CameraDetailServer | null }>();
   const emits = defineEmits(['cancel-execute', 'confirm-execute']);
 
   const treeWorkspaceInfo = useTreeWorkspaceInfo();
   const { workspaceInfo, getWorkspaceFromTreeInfo } = treeWorkspaceInfo;
 
   const IPFormRef = ref();
-  const cameraIPData = ref<CameraIPItem>({} as CameraIPItem);
+  const cameraIPData = ref<CameraDetailServer>({} as CameraDetailServer);
 
   const rules = {
     name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
@@ -184,13 +183,10 @@
   };
 
   const handleTreeSelect = (node) => {
-    console.log('点击选择车间', node);
+    if (node.disabled) return;
     cameraIPData.value.workspaceId = node.value;
     cameraIPData.value.principal = node.principalName;
     cameraIPData.value.workshopId = node.workshopId;
-    if (node.disabled && node.children.length < 1) {
-      ElMessage.error('请先添加工位');
-    }
   };
 
   onBeforeMount(() => {

+ 3 - 3
src/views/cameras/overview/components/AddCameraByNVR.vue

@@ -126,7 +126,7 @@
   import { cloneDeep } from 'lodash-es';
   import { ElMessage, ElIcon } from 'element-plus';
   import { InfoFilled } from '@element-plus/icons-vue';
-  import { CameraNVRItem } from '@/types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
   import {
     protocalTypeSelect,
     serviceTypeSelect,
@@ -136,7 +136,7 @@
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
   import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
 
-  const props = defineProps<{ formData?: CameraNVRItem | null }>();
+  const props = defineProps<{ formData?: CameraDetailServer | null }>();
   const emits = defineEmits(['cancel-execute', 'confirm-execute']);
 
   const nvrDeviceInfo = useNvrDevice();
@@ -146,7 +146,7 @@
   const { workspaceInfo, getWorkspaceFromTreeInfo } = treeWorkspaceInfo;
 
   const NVRFormRef = ref();
-  const cameraNVRData = ref<CameraNVRItem>({} as CameraNVRItem);
+  const cameraNVRData = ref<CameraDetailServer>({} as CameraDetailServer);
 
   const rules = {
     nvrId: [{ required: true, message: '请选择NVR设备', trigger: 'blur' }],

+ 2 - 2
src/views/cameras/overview/components/AddCameraByRange.vue

@@ -79,7 +79,7 @@
 
 <script setup lang="ts">
   import { computed, h, reactive, ref } from 'vue';
-  import { CameraRangeItem, CameraIPItem } from '../../../../types/camera/type';
+  import { CameraRangeItem, CameraDetailServer } from '../../../../types/camera/type';
   import { cameraRangeAddForm } from '../../../../types/camera/constant';
   import SearchCamerasAction from './SearchCamerasAction.vue';
   import { BasicTable } from '@/components/Table';
@@ -95,7 +95,7 @@
   const cameraRangeData = ref<CameraRangeItem>({} as CameraRangeItem);
 
   const showEditPop = ref(false);
-  const editRow = ref<CameraIPItem | null>(null);
+  const editRow = ref<CameraDetailServer | null>(null);
 
   const rules = computed(() => {
     const newRule = {};

+ 3 - 3
src/views/cameras/overview/components/AddCameraBySRS.vue

@@ -102,21 +102,21 @@
 
 <script setup lang="ts">
   import { onBeforeMount, ref } from 'vue';
-  import { CameraSRS } from '@/types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
   import { cloneDeep } from 'lodash-es';
   import { serviceTypeSelect, standardTypeSelect } from '../../../../types/camera/constant';
   import { ElMessage } from 'element-plus';
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
   import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
 
-  const props = defineProps<{ formData?: CameraSRS | null }>();
+  const props = defineProps<{ formData?: CameraDetailServer | null }>();
   const emits = defineEmits(['cancel-execute', 'confirm-execute']);
 
   const treeWorkspaceInfo = useTreeWorkspaceInfo();
   const { workspaceInfo, getWorkspaceFromTreeInfo } = treeWorkspaceInfo;
 
   const IPFormRef = ref();
-  const CameraSRSData = ref<CameraSRS>({} as CameraSRS);
+  const CameraSRSData = ref<CameraDetailServer>({} as CameraDetailServer);
 
   const rules = {
     name: [{ required: true, message: '请输入名称', trigger: 'blur' }],

+ 1 - 1
src/views/cameras/overview/components/CameraAddPopover.vue

@@ -42,7 +42,7 @@
 
 <script setup lang="ts">
   import { ref } from 'vue';
-  import { cameraAddType } from '../../../../types/camera/constant';
+  import { cameraAddType } from '@/types/camera/constant';
   import { Close } from '@element-plus/icons-vue';
   import IPAddCamera from './AddCameraByIP.vue';
   import SRSAddCamera from './AddCameraBySRS.vue';

+ 2 - 2
src/views/cameras/overview/components/CameraEditNVRPopover.vue

@@ -19,13 +19,13 @@
 <script setup lang="ts">
   import { ElMessage } from 'element-plus';
   import { Close } from '@element-plus/icons-vue';
-  import { CameraNVRItem } from '@/types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
   import useCameraOverview from '../stores/useCameraOverview';
   import NVRAddCamera from './AddCameraByNVR.vue';
 
   const props = defineProps<{
     modelValue: boolean;
-    editData?: CameraNVRItem | null;
+    editData?: CameraDetailServer | null;
     confirmEvent?: (data) => any;
   }>();
 

+ 2 - 2
src/views/cameras/overview/components/CameraEditPopover.vue

@@ -19,13 +19,13 @@
 <script setup lang="ts">
   import { ElMessage } from 'element-plus';
   import { Close } from '@element-plus/icons-vue';
-  import { CameraIPItem } from '@/types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
   import useCameraOverview from '../stores/useCameraOverview';
   import IPAddCamera from './AddCameraByIP.vue';
 
   const props = defineProps<{
     modelValue: boolean;
-    editData?: CameraIPItem | null;
+    editData?: CameraDetailServer | null;
     confirmEvent?: (data) => any;
   }>();
 

+ 2 - 2
src/views/cameras/overview/components/CameraEditSRSPopover.vue

@@ -21,10 +21,10 @@
   import { Close } from '@element-plus/icons-vue';
   import SRSAddCamera from './AddCameraBySRS.vue';
   import useCameraOverview from '../stores/useCameraOverview';
-  import { CameraSRS } from '@/types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
   import { ElMessage } from 'element-plus';
 
-  const props = defineProps<{ modelValue: boolean; editData?: CameraSRS }>();
+  const props = defineProps<{ modelValue: boolean; editData?: CameraDetailServer }>();
 
   const emits = defineEmits(['update:modelValue']);
 

+ 3 - 3
src/views/cameras/overview/components/CameraSharePopover.vue

@@ -14,12 +14,12 @@
 
 <script setup lang="ts">
   import { ref } from 'vue';
-  import { cameraAddType } from '../../../../types/camera/constant';
+  import { cameraAddType } from '@/types/camera/constant';
   import { Close } from '@element-plus/icons-vue';
   import ShareCameraDetail from './ShareCameraDetail.vue';
-  import { CameraShowItem } from '../../../../types/camera/type';
+  import { CameraDetailServer } from '@/types/camera/type';
 
-  const props = defineProps<{ modelValue: boolean; shareData?: CameraShowItem | null }>();
+  const props = defineProps<{ modelValue: boolean; shareData?: CameraDetailServer | null }>();
 
   const emits = defineEmits(['update:modelValue']);
 

+ 15 - 9
src/views/cameras/overview/components/ConditionQuery.vue

@@ -30,13 +30,13 @@
         </el-select>
       </div>
       <div>
-        <span>场景:</span>
+        <span>工位:</span>
         <el-tree-select
           v-model="queryWorkSpace"
-          :data="scenesTree"
+          :data="workspaceInfo"
           :render-after-expand="false"
           check-strictly
-          placeholder="请选择场景"
+          placeholder="请选择工位"
           class="protocal-select"
         />
       </div>
@@ -74,13 +74,17 @@
 
 <script setup lang="ts">
   import { onMounted } from 'vue';
-  import { queryTypeSelect, cameraAddType, AddType } from '../../../../types/camera/constant';
+  import { queryTypeSelect, cameraAddType, AddType } from '@/types/camera/constant';
   import useCameraOverview from '../stores/useCameraOverview';
-  import useSceneInfos from '@/hooks/useSceneInfos';
+  // import useSceneInfos from '@/hooks/useSceneInfos';
   import { storeToRefs } from 'pinia';
+  import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
 
-  const sceneInfos = useSceneInfos();
-  const { scenesTree, getScenesTree } = sceneInfos;
+  const treeWorkspaceInfo = useTreeWorkspaceInfo();
+  const { workspaceInfo, getWorkspaceFromTreeInfo } = treeWorkspaceInfo;
+
+  // const sceneInfos = useSceneInfos();
+  // const { scenesTree, getScenesTree } = sceneInfos;
 
   const cameraOverview = useCameraOverview();
   const {
@@ -99,14 +103,16 @@
     queryType.value = '';
     queryTypeContent.value = '';
     querySourceType.value = '';
-    queryWorkSpace.value = '';
+    queryWorkSpace.value = undefined;
     integrationState.value = -1;
     networkingState.value = -1;
     openEagle.value = -1;
+    getCameraItems();
   };
 
   onMounted(() => {
-    getScenesTree({ level: 3, valueKey: 'code', labelKey: 'name' });
+    getWorkspaceFromTreeInfo();
+    // getScenesTree({ level: 3, valueKey: 'code', labelKey: 'name' });
   });
 </script>
 

+ 2 - 2
src/views/cameras/overview/components/ShareCameraDetail.vue

@@ -94,7 +94,7 @@
 <script setup lang="ts">
   import { h, reactive, ref, onMounted } from 'vue';
   import { BasicColumn, BasicTable, TableActionIcons } from '@/components/Table';
-  import { CameraShareItem, CameraShowItem } from '../../../../types/camera/type';
+  import { CameraShareItem, CameraDetailServer } from '../../../../types/camera/type';
   import deleteIcon from '@/assets/images/table/table-delete.png';
   import {
     authorityTypeSelect,
@@ -110,7 +110,7 @@
   const { cameraShareList, queryCameraId, conditionSearch, handleDel, handleAdd, handleEdit } =
     useShare;
 
-  const props = defineProps<{ formData?: CameraShowItem | null }>();
+  const props = defineProps<{ formData?: CameraDetailServer | null }>();
 
   const rules = reactive<FormRules>({
     tenantCode: [{ required: true, message: '请输入企业账号', trigger: 'blur' }],

+ 37 - 37
src/views/cameras/overview/hooks/overviewColumns.ts

@@ -32,8 +32,8 @@ export const columns: BasicColumn[] = [
     align: 'center',
   },
   {
-    label: '公司名称',
-    prop: 'companyName',
+    label: '设备ID',
+    prop: 'code',
     minWidth: 100,
     align: 'center',
   },
@@ -43,6 +43,41 @@ export const columns: BasicColumn[] = [
     minWidth: 140,
     align: 'center',
   },
+  {
+    label: '业务场景',
+    prop: 'sceneTemplateList',
+    minWidth: 160,
+    align: 'center',
+    render(record) {
+      const tags = getLabelById(record.row.sceneTemplateList, sceneTemplateList.value);
+      const tag = tags.map((item) => h(ElTag, item));
+      return h(
+        'span',
+        {
+          style: 'display: flex; justify-content: center; flex-wrap: wrap; gap: 5px;',
+        },
+        tag,
+      );
+    },
+  },
+  {
+    label: '公司',
+    prop: 'companyName',
+    minWidth: 100,
+    align: 'center',
+  },
+  {
+    label: '车间',
+    prop: 'workshopName',
+    minWidth: 140,
+    align: 'center',
+  },
+  {
+    label: '工位',
+    prop: 'workspaceName',
+    minWidth: 140,
+    align: 'center',
+  },
   {
     label: '添加方式',
     prop: 'sourceType',
@@ -79,41 +114,6 @@ export const columns: BasicColumn[] = [
   //   prop: 'cameraMac',
   //   minWidth: 140,
   // },
-  {
-    label: '设备ID',
-    prop: 'code',
-    minWidth: 120,
-    align: 'center',
-  },
-  {
-    label: '车间场景',
-    prop: 'workshopName',
-    minWidth: 140,
-    align: 'center',
-  },
-  {
-    label: '工位场景',
-    prop: 'workspaceName',
-    minWidth: 140,
-    align: 'center',
-  },
-  {
-    label: '业务场景',
-    prop: 'sceneTemplateList',
-    minWidth: 160,
-    align: 'center',
-    render(record) {
-      const tags = getLabelById(record.row.sceneTemplateList, sceneTemplateList.value);
-      const tag = tags.map((item) => h(ElTag, item));
-      return h(
-        'span',
-        {
-          style: 'display: flex; justify-content: center; flex-wrap: wrap; gap: 5px;',
-        },
-        tag,
-      );
-    },
-  },
   {
     label: '联网状态',
     prop: 'networkingState',

+ 6 - 14
src/views/cameras/overview/stores/useCameraOverview.ts

@@ -7,16 +7,8 @@ import {
   addCameraItem,
   updateCameraItem,
   getCameraState,
-  // addSRSCameraItem,
-  // addNVRCameraItem,
 } from '@/api/camera/camera-overview';
-import {
-  CameraAddType,
-  // CameraIPItem,
-  // CameraNVRItem,
-  // CameraSRS,
-  CameraShowItem,
-} from '@/types/camera/type';
+import { CameraAddItem, CameraDetailServer } from '@/types/camera/type';
 import { useRequest } from 'vue-hooks-plus';
 
 const ALL = -1;
@@ -25,7 +17,7 @@ export const useCameraOverview = defineStore('camera-overview', () => {
   const queryType = ref('');
   const queryTypeContent = ref('');
   const queryCameraType = ref('');
-  const queryWorkSpace = ref('');
+  const queryWorkSpace = ref<number>();
   const querySourceType = ref('');
   const networkingState = ref<number>(ALL);
   const integrationState = ref<number>(ALL);
@@ -36,7 +28,7 @@ export const useCameraOverview = defineStore('camera-overview', () => {
 
   let interval;
 
-  const cameraItems = ref<CameraShowItem[]>([]);
+  const cameraItems = ref<CameraDetailServer[]>([]);
 
   // 条件查询事件
   const conditionSearch = () => {
@@ -61,7 +53,7 @@ export const useCameraOverview = defineStore('camera-overview', () => {
       paramDetails.value.cameraType = queryCameraType.value;
     }
     if (queryWorkSpace.value) {
-      paramDetails.value.sceneCode = queryWorkSpace.value;
+      paramDetails.value.workspaceId = queryWorkSpace.value;
     }
     if (querySourceType.value) {
       console.log('queryCameraType.value', querySourceType.value);
@@ -89,7 +81,7 @@ export const useCameraOverview = defineStore('camera-overview', () => {
     },
   });
 
-  const addCamera = (data: CameraAddType) => {
+  const addCamera = (data: CameraAddItem) => {
     console.log('添加相机,相机信息————————', data);
 
     return addCameraItem(data).then(() => {
@@ -144,7 +136,7 @@ export const useCameraOverview = defineStore('camera-overview', () => {
     queryType.value = '';
     queryTypeContent.value = '';
     queryCameraType.value = '';
-    queryWorkSpace.value = '';
+    queryWorkSpace.value = undefined;
     total.value = 0;
     page.value = 1;
     size.value = 10;

+ 1 - 1
src/views/cameras/preview/CameraPreview.vue

@@ -23,7 +23,7 @@
   import useCameraAlgoStore from './store/useCameraAlgoStore';
   import usePresetListStore from './store/usePresetListStore';
   import useFenceStore from './store/useFenceStore';
-  import { IsPtz } from '@/api/camera/camera-overview';
+  import { IsPtz } from '@/types/camera/constant';
   import { getCameraDeatilById } from '@/api/camera/camera-preview';
 
   const cameraDetailStore = useCameraDetailStore();

+ 2 - 2
src/views/cameras/preview/store/useCameraDetailStore.ts

@@ -1,6 +1,6 @@
 /** 相机详情的store */
-
-import { CameraDetailServer, FenceDisplayStatus } from '@/api/camera/camera-overview';
+import { CameraDetailServer } from '@/types/camera/type';
+import { FenceDisplayStatus } from '@/types/camera/constant';
 import { useRouteQuery } from '@vueuse/router';
 import dayjs from 'dayjs';
 import { defineStore } from 'pinia';

+ 2 - 1
src/views/datamanager/playback/Playback.vue

@@ -27,7 +27,8 @@
   import useFenceStore from '@/views/cameras/preview/store/useFenceStore';
   import useCameraAlgoStore from '@/views/cameras/preview/store/useCameraAlgoStore';
   import { onMounted } from 'vue';
-  import { CameraDetailServer, IsPtz } from '@/api/camera/camera-overview';
+  import { IsPtz } from '@/types/camera/constant';
+  import { CameraDetailServer } from '@/types/camera/type';
   import { CameraTree, getCameraTreeOldVersion } from '@/api/camera/camera-preview';
   import useCameraStatus from '@/views/cameras/preview/store/useCameraStatus';