diff --git a/src/views/iot/tplink/camera/components/CameraPictureConfig.vue b/src/views/iot/tplink/camera/components/CameraPictureConfig.vue
index 866b6d2..55ae8bc 100644
--- a/src/views/iot/tplink/camera/components/CameraPictureConfig.vue
+++ b/src/views/iot/tplink/camera/components/CameraPictureConfig.vue
@@ -203,6 +203,7 @@
cameraData.value.regionId = formData.regionId;
cameraData.value.multitrans = formData.multitrans;
cameraData.value.scale = formData.scale;
+ cameraData.value.parentId = formData.parentId;
})
diff --git a/src/views/iot/tplink/camera/components/CameraPreviewForm.vue b/src/views/iot/tplink/camera/components/CameraPreviewForm.vue
index e42a6e8..fd3567d 100644
--- a/src/views/iot/tplink/camera/components/CameraPreviewForm.vue
+++ b/src/views/iot/tplink/camera/components/CameraPreviewForm.vue
@@ -14,9 +14,9 @@
{{ resolution }}
-
+
电话
diff --git a/src/views/iot/tplink/camera/components/CameraUploadForm.vue b/src/views/iot/tplink/camera/components/CameraUploadForm.vue
index 40ff55b..108ac7a 100644
--- a/src/views/iot/tplink/camera/components/CameraUploadForm.vue
+++ b/src/views/iot/tplink/camera/components/CameraUploadForm.vue
@@ -196,6 +196,7 @@ import {
formData.regionId = props.data.regionId;
formData.multitrans = props.data.multitrans;
formData.scale = props.data.scale;
+ formData.parentId = props.data.parentId;
},
{ deep: true, immediate: true }
);
diff --git a/src/views/iot/tplink/plan/components/PlanAdd.vue b/src/views/iot/tplink/plan/components/PlanAdd.vue
new file mode 100644
index 0000000..0c354b5
--- /dev/null
+++ b/src/views/iot/tplink/plan/components/PlanAdd.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/plan/components/PlanAddForm.vue b/src/views/iot/tplink/plan/components/PlanAddForm.vue
new file mode 100644
index 0000000..401941b
--- /dev/null
+++ b/src/views/iot/tplink/plan/components/PlanAddForm.vue
@@ -0,0 +1,160 @@
+
+
+
+ 2.选择录像存储位置、码流、计划
+
+
+
+
+
+
+
+
+ {{item.storageDevName}}
+
+
+
+
+
+
+
+
+ {{item.planName}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/plan/components/PlanAddTree.vue b/src/views/iot/tplink/plan/components/PlanAddTree.vue
new file mode 100644
index 0000000..056c164
--- /dev/null
+++ b/src/views/iot/tplink/plan/components/PlanAddTree.vue
@@ -0,0 +1,147 @@
+
+
+
+ 1.选择监控点
+
+
+
+
+
+ 已选中 {{ checkedKeys.length }} 条记录
+
+ 清空
+
+
+ 未选中任何数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/plan/components/PlanLeftTree.vue b/src/views/iot/tplink/plan/components/PlanLeftTree.vue
new file mode 100644
index 0000000..1b9f263
--- /dev/null
+++ b/src/views/iot/tplink/plan/components/PlanLeftTree.vue
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/plan/components/PlanList.vue b/src/views/iot/tplink/plan/components/PlanList.vue
new file mode 100644
index 0000000..2495139
--- /dev/null
+++ b/src/views/iot/tplink/plan/components/PlanList.vue
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+ 新增
+ 删除
+
+
+
+
+
+ handleSwitchChange(checked, record)"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/plan/components/PlanModal.vue b/src/views/iot/tplink/plan/components/PlanModal.vue
new file mode 100644
index 0000000..4045aed
--- /dev/null
+++ b/src/views/iot/tplink/plan/components/PlanModal.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/plan/index.vue b/src/views/iot/tplink/plan/index.vue
new file mode 100644
index 0000000..a42473d
--- /dev/null
+++ b/src/views/iot/tplink/plan/index.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/plan/plan.api.ts b/src/views/iot/tplink/plan/plan.api.ts
new file mode 100644
index 0000000..1567ff9
--- /dev/null
+++ b/src/views/iot/tplink/plan/plan.api.ts
@@ -0,0 +1,86 @@
+import { defHttp } from '/@/utils/http/axios';
+import {Modal} from "ant-design-vue";
+
+enum Api {
+ queryProjectTreeSync = '/iot/projectInfo/queryRegionTreeSync',
+ queryRegionTreeSync = '/iot/regionInfo/queryRegionTreeSync',
+ queryTreeList = '/iot/cameraInfo/queryTreeList',
+ getStorageDevice = '/iot/cameraInfo/getStorageDevice',
+ getAllRecordPlans = '/iot/cameraInfo/getAllRecordPlans',
+ getRecordCfgs = '/iot/cameraInfo/getRecordCfgs',
+ addRecordCfgs = '/iot/cameraInfo/addRecordCfgs',
+ setRecordCfgs = '/iot/cameraInfo/setRecordCfgs',
+ delRecordCfgs = '/iot/cameraInfo/delRecordCfgs',
+ getBatchProgress = '/iot/cameraInfo/getBatchProgress',
+}
+
+/**
+ * 获取项目树列表
+ * @param params
+ */
+export const queryProjectTreeSync = (params?) => defHttp.get({ url: Api.queryProjectTreeSync, params });
+
+/**
+ * 获取区域树列表
+ * @param params
+ */
+export const queryRegionTreeSync = (params?) => defHttp.get({ url: Api.queryRegionTreeSync, params });
+
+/**
+ * 获取树列表
+ * @param params
+ */
+export const queryTreeList = (params?) => defHttp.get({ url: Api.queryTreeList, params });
+
+/**
+ * 列表接口
+ * @param params
+ */
+export const getStorageDevice = (params) => defHttp.get({ url: Api.getStorageDevice, params });
+
+/**
+ * 获取存储设备列表
+ * @param params
+ */
+export const getAllRecordPlans = (params) => defHttp.get({ url: Api.getAllRecordPlans, params });
+
+/**
+ * 获取录像配置
+ * @param params
+ */
+export const list = (params) => defHttp.get({ url: Api.getRecordCfgs, params });
+
+/**
+ * 添加录像计划
+ * @param params
+ */
+export const addRecordCfgs = (params) => defHttp.post({ url: Api.addRecordCfgs, params });
+
+/**
+ * 设置录像计划
+ * @param params
+ */
+export const editRecordCfgs = (params) => defHttp.post({ url: Api.setRecordCfgs, params });
+
+/**
+ * 获取批量操作录像计划进度
+ * @param params
+ */
+export const getBatchProgress = (params) => defHttp.get({ url: Api.getBatchProgress, params });
+
+
+/**
+ * 批量删除数据源
+ * @param params
+ */
+export const batchDeleteCfgs = (params) => {
+ Modal.confirm({
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ defHttp.get({ url: Api.delRecordCfgs, params });
+ },
+ });
+};
diff --git a/src/views/iot/tplink/plan/plan.data.ts b/src/views/iot/tplink/plan/plan.data.ts
new file mode 100644
index 0000000..aebeaae
--- /dev/null
+++ b/src/views/iot/tplink/plan/plan.data.ts
@@ -0,0 +1,158 @@
+import {BasicColumn} from '/@/components/Table';
+import {FormSchema} from '/@/components/Table';
+
+//列表数据
+export const columns: BasicColumn[] = [
+ {
+ title: '设备序号',
+ align: "center",
+ dataIndex: 'deviceIndex'
+ },
+ {
+ title: '设备名称',
+ align: "center",
+ dataIndex: 'deviceName'
+ },
+ {
+ title: 'IP地址',
+ align: "center",
+ dataIndex: 'ip'
+ },
+ {
+ title: '录像开关',
+ align: "center",
+ dataIndex: 'recordSwitchBoolean',
+ },
+ {
+ title: '录像存储位置',
+ align: "center",
+ dataIndex: 'storageDevName'
+ },
+ {
+ title: '录像码流',
+ align: "center",
+ dataIndex: 'streamType',
+ customRender:({record})=>{
+ if(record.streamType == 0){
+ return '主码流';
+ }else if(record.streamType == 1){
+ return '子码流';
+ }else{
+ return '';
+ }
+ },
+ },
+ {
+ title: '录像计划',
+ align: "center",
+ dataIndex: 'planName'
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '',
+ field: 'ids',
+ component: 'Input',
+ show: false,
+ },
+ {
+ label: '设备序号',
+ field: 'deviceIndex',
+ component: 'Input',
+ dynamicDisabled: true
+ },
+ {
+ label: '设备名称',
+ field: 'deviceName',
+ component: 'Input',
+ dynamicDisabled: true
+ },
+ {
+ label: '录像开关',
+ field: 'recordSwitch',
+ component: 'Select',
+ componentProps: {
+ options: [
+ {label:'开启' , value: '1'},
+ {label:'关闭' , value: '0'},
+ ]
+ },
+ defaultValue: '1'
+ },
+ {
+ label: '存储位置',
+ field: 'storageDevName',
+ component: 'Input',
+ slot: 'storageDevInput',
+ },
+ {
+ label: '录像码流',
+ field: 'streamType',
+ component: 'Select',
+ componentProps: {
+ options: [
+ {label:'主码流' , value: 0},
+ {label:'子码流' , value: 1},
+ ]
+ },
+ dynamicDisabled: true
+ },
+ {
+ label: '录像计划',
+ field: 'planName',
+ component: 'Input',
+ }
+];
+
+export const addFormSchema: FormSchema[] = [
+ {
+ label: '设备序号',
+ field: 'deviceIndex',
+ component: 'Input',
+ show: false
+ },
+ {
+ label: '录像开关',
+ field: 'recordSwitch',
+ component: 'Select',
+ componentProps: {
+ options: [
+ {label:'开启' , value: '1'},
+ {label:'关闭' , value: '0'},
+ ]
+ },
+ defaultValue: '1',
+ required: true,
+ },
+ {
+ label: '存储位置',
+ field: 'storageDevId',
+ component: 'Input',
+ slot: 'storageDevInput',
+ defaultValue: '0',
+ required: true,
+ },
+ {
+ label: '录像码流',
+ field: 'streamType',
+ component: 'Select',
+ componentProps: {
+ options: [
+ {label:'主码流' , value: 0},
+ {label:'子码流' , value: 1},
+ ]
+ },
+ defaultValue: 0,
+ required: true,
+ },
+ {
+ label: '录像计划',
+ field: 'recordPlanId',
+ component: 'Input',
+ slot: 'planInput',
+ defaultValue: '1',
+ required: true,
+ }
+];
+