|
@@ -48,14 +48,14 @@
|
|
|
style="width: 200px"
|
|
style="width: 200px"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="协议类型:" prop="cameraType">
|
|
|
|
|
|
|
+ <el-form-item label="视频编码标准:" prop="videoStandard">
|
|
|
<el-select
|
|
<el-select
|
|
|
- v-model="cameraIPData.cameraType"
|
|
|
|
|
- placeholder="请选择协议类型"
|
|
|
|
|
|
|
+ v-model="cameraIPData.videoStandard"
|
|
|
|
|
+ placeholder="请选择视频编码标准"
|
|
|
style="width: 200px"
|
|
style="width: 200px"
|
|
|
>
|
|
>
|
|
|
<el-option
|
|
<el-option
|
|
|
- v-for="protocal in protocalTypeSelect"
|
|
|
|
|
|
|
+ v-for="protocal in standardTypeSelect"
|
|
|
:key="protocal.value"
|
|
:key="protocal.value"
|
|
|
:label="protocal.label"
|
|
:label="protocal.label"
|
|
|
:value="protocal.value"
|
|
:value="protocal.value"
|
|
@@ -76,11 +76,35 @@
|
|
|
/>
|
|
/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
|
|
|
|
|
- <sysConfigItemOfAddCamera
|
|
|
|
|
- :origin-scene-checked-list="cameraIPData.sceneTemplateList"
|
|
|
|
|
- @update:scene-checked-list="handleUpdateSceneTemplateList"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <el-form-item label="NVR设备:" prop="nvrId">
|
|
|
|
|
+ <el-select v-model="cameraIPData.nvrId" placeholder="请选择NVR设备" style="width: 200px">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in nvrDevice"
|
|
|
|
|
+ :key="item.id"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.id"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ <div style="margin-left: 10px; position: relative; width: 20px; height: 32px">
|
|
|
|
|
+ <el-tooltip content="选择已添加在【NVR设备管理】中的设备编号">
|
|
|
|
|
+ <el-icon :size="16" style="position: absolute; top: 8px"><InfoFilled /></el-icon>
|
|
|
|
|
+ </el-tooltip>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="协议类型:" prop="cameraType">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="cameraIPData.cameraType"
|
|
|
|
|
+ placeholder="请选择协议类型"
|
|
|
|
|
+ style="width: 200px"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="protocal in protocalTypeSelect"
|
|
|
|
|
+ :key="protocal.value"
|
|
|
|
|
+ :label="protocal.label"
|
|
|
|
|
+ :value="protocal.value"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="所属工位:" prop="workspaceIdStr">
|
|
<el-form-item label="所属工位:" prop="workspaceIdStr">
|
|
|
<el-tree-select
|
|
<el-tree-select
|
|
@@ -102,22 +126,14 @@
|
|
|
style="width: 200px"
|
|
style="width: 200px"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="视频编码标准:" prop="videoStandard">
|
|
|
|
|
- <el-select
|
|
|
|
|
- v-model="cameraIPData.videoStandard"
|
|
|
|
|
- placeholder="请选择视频编码标准"
|
|
|
|
|
- style="width: 200px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="protocal in standardTypeSelect"
|
|
|
|
|
- :key="protocal.value"
|
|
|
|
|
- :label="protocal.label"
|
|
|
|
|
- :value="protocal.value"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+ <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
|
|
|
|
|
+ <sysConfigItemOfAddCamera
|
|
|
|
|
+ :origin-scene-checked-list="cameraIPData.sceneTemplateList"
|
|
|
|
|
+ @update:scene-checked-list="handleUpdateSceneTemplateList"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="备注:" prop="remark">
|
|
|
|
|
- <el-input v-model="cameraIPData.remark" placeholder="请输入备注" style="width: 200px" />
|
|
|
|
|
|
|
+ <el-form-item label="备注:" prop="remark" style="width: 766px">
|
|
|
|
|
+ <el-input v-model="cameraIPData.remark" placeholder="请输入备注" style="width: 655px" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
</div>
|
|
</div>
|
|
@@ -130,12 +146,15 @@
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import { onBeforeMount, ref } from 'vue';
|
|
import { onBeforeMount, ref } from 'vue';
|
|
|
|
|
+ import { ElIcon } from 'element-plus';
|
|
|
|
|
+ import { InfoFilled } from '@element-plus/icons-vue';
|
|
|
import { CameraDetailServer } from '@/types/camera/type';
|
|
import { CameraDetailServer } from '@/types/camera/type';
|
|
|
import {
|
|
import {
|
|
|
protocalTypeSelect,
|
|
protocalTypeSelect,
|
|
|
serviceTypeSelect,
|
|
serviceTypeSelect,
|
|
|
standardTypeSelect,
|
|
standardTypeSelect,
|
|
|
} from '@/types/camera/constant';
|
|
} from '@/types/camera/constant';
|
|
|
|
|
+ import useNvrDevice from '../hooks/useNvrDevice';
|
|
|
import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
|
|
import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
|
|
|
import { cloneDeep } from 'lodash-es';
|
|
import { cloneDeep } from 'lodash-es';
|
|
|
import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
|
|
import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
|
|
@@ -146,6 +165,9 @@
|
|
|
const treeWorkspaceInfo = useTreeWorkspaceInfo();
|
|
const treeWorkspaceInfo = useTreeWorkspaceInfo();
|
|
|
const { workspaceInfo, getWorkspaceFromTreeInfo, getWorkspaceIdFromTreeNode } = treeWorkspaceInfo;
|
|
const { workspaceInfo, getWorkspaceFromTreeInfo, getWorkspaceIdFromTreeNode } = treeWorkspaceInfo;
|
|
|
|
|
|
|
|
|
|
+ const nvrDeviceInfo = useNvrDevice();
|
|
|
|
|
+ const { nvrDevice, getNvrDevice } = nvrDeviceInfo;
|
|
|
|
|
+
|
|
|
const IPFormRef = ref();
|
|
const IPFormRef = ref();
|
|
|
|
|
|
|
|
type CameraDetailForm = CameraDetailServer & { workspaceIdStr?: string };
|
|
type CameraDetailForm = CameraDetailServer & { workspaceIdStr?: string };
|
|
@@ -158,10 +180,10 @@
|
|
|
cameraPort: [{ required: true, message: '请输入端口号', trigger: 'blur' }],
|
|
cameraPort: [{ required: true, message: '请输入端口号', trigger: 'blur' }],
|
|
|
username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
|
|
username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
|
|
|
password: [{ required: true, message: '请输入用户名密码', trigger: 'blur' }],
|
|
password: [{ required: true, message: '请输入用户名密码', trigger: 'blur' }],
|
|
|
|
|
+ videoStandard: [{ required: true, message: '请选择视频编码标准', trigger: 'blur' }],
|
|
|
cameraType: [{ required: true, message: '请选择协议类型', trigger: 'blur' }],
|
|
cameraType: [{ required: true, message: '请选择协议类型', trigger: 'blur' }],
|
|
|
- sceneTemplateList: [{ required: true, message: '请选择至少一个业务场景', trigger: 'blur' }],
|
|
|
|
|
workspaceIdStr: [{ required: true, message: '请选择工位', trigger: 'blur' }],
|
|
workspaceIdStr: [{ required: true, message: '请选择工位', trigger: 'blur' }],
|
|
|
- videoStandard: [{ required: true, message: '请选择视频编码标准', trigger: 'blur' }],
|
|
|
|
|
|
|
+ sceneTemplateList: [{ required: true, message: '请选择至少一个业务场景', trigger: 'blur' }],
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const handleUpdateSceneTemplateList = (data) => {
|
|
const handleUpdateSceneTemplateList = (data) => {
|
|
@@ -194,6 +216,7 @@
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
onBeforeMount(() => {
|
|
onBeforeMount(() => {
|
|
|
|
|
+ getNvrDevice();
|
|
|
getWorkspaceFromTreeInfo();
|
|
getWorkspaceFromTreeInfo();
|
|
|
if (props.formData) {
|
|
if (props.formData) {
|
|
|
cameraIPData.value = props.formData;
|
|
cameraIPData.value = props.formData;
|