|
@@ -1,45 +1,79 @@
|
|
|
<template>
|
|
|
<el-dialog
|
|
|
:visible.sync="visible"
|
|
|
- title="编辑视频"
|
|
|
+ :title="formData.id ? '编辑视频' : '新增视频'"
|
|
|
width="800px"
|
|
|
@close="handleCancel"
|
|
|
custom-class="custom-dialog"
|
|
|
>
|
|
|
- <!-- 表单区域 -->
|
|
|
<el-form
|
|
|
ref="editForm"
|
|
|
:model="formData"
|
|
|
:rules="formRules"
|
|
|
- label-width="100px"
|
|
|
+ label-width="120px"
|
|
|
label-position="right"
|
|
|
style="background-color: #003c68"
|
|
|
>
|
|
|
- <el-form-item label="视频名称:" prop="videoName">
|
|
|
+ <el-form-item label="视频名称:" prop="name">
|
|
|
<el-input v-model="formData.name" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="视频地址:" prop="videoUrl">
|
|
|
- <el-input v-model="formData.url" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="视频播放地址:" prop="videoUrl">
|
|
|
- <el-input v-model="formData.playUrl" />
|
|
|
+
|
|
|
+ <el-form-item label="设备类型:" prop="deviceType">
|
|
|
+ <el-select v-model="formData.deviceType" placeholder="选择设备类型">
|
|
|
+ <el-option label="IPC" value="IPC" />
|
|
|
+ <el-option label="MINMOE" value="MINMOE" />
|
|
|
+ <el-option label="LPR_GATE" value="LPR_GATE" />
|
|
|
+ <el-option label="TURNSTILE" value="TURNSTILE" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="视频IP:" prop="videoIp">
|
|
|
+
|
|
|
+ <el-form-item label="视频IP:" prop="ip">
|
|
|
<el-input v-model="formData.ip" />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
<el-form-item label="端口号:" prop="port">
|
|
|
<el-input v-model.number="formData.port" type="number" />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
<el-form-item label="用户名:" prop="username">
|
|
|
<el-input v-model="formData.username" />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
<el-form-item label="密码:" prop="password">
|
|
|
<el-input v-model="formData.password" type="password" show-password />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="通道号:" prop="channel">
|
|
|
+ <el-input-number v-model="formData.channel" :min="1" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
<el-form-item label="通道名称:" prop="channelName">
|
|
|
<el-input v-model="formData.channelName" />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="RTSP地址:" prop="rtspUrl">
|
|
|
+ <el-input v-model="formData.rtspUrl" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="取流方式:" prop="previewType">
|
|
|
+ <el-select v-model="formData.previewType" placeholder="选择取流方式">
|
|
|
+ <el-option label="RTSP" value="RTSP" />
|
|
|
+ <el-option label="SDK" value="SDK" />
|
|
|
+ <el-option label="ISAPI" value="ISAPI" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="启用:" prop="enable">
|
|
|
+ <el-switch
|
|
|
+ v-model="formData.enable"
|
|
|
+ active-color="#13ce66"
|
|
|
+ inactive-color="#ff4949"
|
|
|
+ :active-value="true"
|
|
|
+ :inactive-value="false"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
+
|
|
|
<span slot="footer">
|
|
|
<el-button @click="handleCancel">取消</el-button>
|
|
|
<el-button type="primary" @click="handleSubmit">保存</el-button>
|
|
@@ -60,25 +94,50 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
formData: {
|
|
|
- videoName: "",
|
|
|
- videoUrl: "",
|
|
|
- videoIp: "",
|
|
|
- port: null,
|
|
|
+ id: null,
|
|
|
+ name: "",
|
|
|
+ deviceType: "IPC",
|
|
|
+ ip: "",
|
|
|
+ port: 554,
|
|
|
username: "",
|
|
|
password: "",
|
|
|
+ channel: 1,
|
|
|
channelName: "",
|
|
|
+ rtspUrl: "",
|
|
|
+ previewType: "RTSP",
|
|
|
+ enable: 1,
|
|
|
},
|
|
|
formRules: {
|
|
|
- videoName: [{ required: true, message: "请输入视频名称", trigger: "blur" }],
|
|
|
- videoUrl: [{ required: true, message: "请输入视频地址", trigger: "blur" }],
|
|
|
- videoIp: [{ required: true, message: "请输入视频IP", trigger: "blur" }],
|
|
|
+ name: [{ required: true, message: "请输入视频名称", trigger: "blur" }],
|
|
|
+ deviceType: [
|
|
|
+ { required: true, message: "请选择设备类型", trigger: "change" },
|
|
|
+ ],
|
|
|
+ ip: [{ required: true, message: "请输入视频IP", trigger: "blur" }],
|
|
|
port: [
|
|
|
{ required: true, message: "请输入端口号", trigger: "blur" },
|
|
|
{ type: "number", message: "端口号必须是数字" },
|
|
|
],
|
|
|
- username: [{ required: true, message: "请输入用户名", trigger: "blur" }],
|
|
|
+ username: [
|
|
|
+ { required: true, message: "请输入用户名", trigger: "blur" },
|
|
|
+ ],
|
|
|
password: [{ required: true, message: "请输入密码", trigger: "blur" }],
|
|
|
- channelName: [{ required: true, message: "请输入通道名称", trigger: "blur" }],
|
|
|
+ channel: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ type: "number",
|
|
|
+ message: "请输入通道号",
|
|
|
+ trigger: "blur",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ channelName: [
|
|
|
+ { required: true, message: "请输入通道名称", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ rtspUrl: [
|
|
|
+ { required: true, message: "请输入RTSP地址", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ previewType: [
|
|
|
+ { required: true, message: "请选择取流方式", trigger: "change" },
|
|
|
+ ],
|
|
|
},
|
|
|
};
|
|
|
},
|
|
@@ -86,18 +145,54 @@ export default {
|
|
|
videoData: {
|
|
|
immediate: true,
|
|
|
handler(newVal) {
|
|
|
- this.formData = { ...newVal }; // 回填父组件传入的数据
|
|
|
+ if (!newVal || Object.keys(newVal).length === 0) {
|
|
|
+ console.log("新增");
|
|
|
+ // 新增时重置为默认值
|
|
|
+ this.formData = {
|
|
|
+ id: null,
|
|
|
+ name: "",
|
|
|
+ deviceType: "IPC",
|
|
|
+ ip: "",
|
|
|
+ port: 554,
|
|
|
+ username: "",
|
|
|
+ password: "",
|
|
|
+ channel: 1,
|
|
|
+ channelName: "",
|
|
|
+ rtspUrl: "",
|
|
|
+ previewType: "RTSP",
|
|
|
+ enable: 1,
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ console.log("修改", this.formData);
|
|
|
+ this.formData = { ...this.formData, ...newVal };
|
|
|
+ }
|
|
|
},
|
|
|
},
|
|
|
+ // 监听关键字段自动生成RTSP
|
|
|
+ "formData.ip": "updateRtsp",
|
|
|
+ "formData.port": "updateRtsp",
|
|
|
+ "formData.username": "updateRtsp",
|
|
|
+ "formData.password": "updateRtsp",
|
|
|
+ "formData.channel": "updateRtsp",
|
|
|
},
|
|
|
methods: {
|
|
|
+ updateRtsp() {
|
|
|
+ if (this.formData.ip && this.formData.port && this.formData.channel) {
|
|
|
+ const user = this.formData.username || "admin";
|
|
|
+ const pass = this.formData.password || "12345";
|
|
|
+ const channel = this.formData.channel;
|
|
|
+ this.formData.rtspUrl = `rtsp://${user}:${pass}@${this.formData.ip}:${this.formData.port}/channel${channel}`;
|
|
|
+ } else {
|
|
|
+ this.formData.rtspUrl = "";
|
|
|
+ }
|
|
|
+ },
|
|
|
handleCancel() {
|
|
|
this.$emit("cancel");
|
|
|
},
|
|
|
handleSubmit() {
|
|
|
this.$refs.editForm.validate((valid) => {
|
|
|
if (valid) {
|
|
|
- this.$emit("submit", { ...this.formData }); // 提交表单数据到父组件
|
|
|
+ this.$emit("submit", { ...this.formData });
|
|
|
} else {
|
|
|
this.$message.error("请检查表单填写项");
|
|
|
return false;
|