From a1ca3b9cacc9263d444033c383a6526d51814285 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com>
Date: Thu, 27 Mar 2025 18:04:17 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E6=9E=84=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../admin/institution/InstitutionArea.api.ts | 39 +++
.../admin/institution/InstitutionArea.data.ts | 73 +++++
.../components/InstitutionAreaDrawer.vue | 119 ++++++++
.../components/InstitutionAreaForm.vue | 117 +++++++
.../components/InstitutionAreaLeftTree.vue | 287 ++++++++++++++++++
src/views/admin/institution/index.vue | 63 ++++
.../camera/components/CameraBitrateForm.vue | 2 +-
.../camera/components/CameraBlockForm.vue | 2 +-
.../camera/components/CameraCommonForm.vue | 2 +-
.../camera/components/CameraInfoDrawer.vue | 5 +-
.../camera/components/CameraInfoList.vue | 4 +-
.../camera/components/CameraLeftTree.vue | 2 +-
.../components/CameraLightAlarmForm.vue | 2 +-
.../components/CameraMultitransForm.vue | 2 +-
.../camera/components/CameraOsdForm.vue | 2 +-
.../camera/components/CameraPictureConfig.vue | 4 +-
.../camera/components/CameraPlaybackForm.vue | 2 +-
.../camera/components/CameraPreviewForm.vue | 2 +-
.../camera/components/CameraRecordList.vue | 4 +-
.../components/CameraSoundAlarmForm.vue | 2 +-
.../camera/components/CameraUploadForm.vue | 2 +-
src/views/iot/tplink/camera/index.vue | 2 +-
.../tplink/project/components/ProjectForm.vue | 4 +-
.../tplink/region/components/RegionForm.vue | 4 +-
.../region/components/RegionInfoDrawer.vue | 5 +-
.../region/components/RegionLeftTree.vue | 18 +-
src/views/iot/tplink/region/index.vue | 6 +-
27 files changed, 736 insertions(+), 40 deletions(-)
create mode 100644 src/views/admin/institution/InstitutionArea.api.ts
create mode 100644 src/views/admin/institution/InstitutionArea.data.ts
create mode 100644 src/views/admin/institution/components/InstitutionAreaDrawer.vue
create mode 100644 src/views/admin/institution/components/InstitutionAreaForm.vue
create mode 100644 src/views/admin/institution/components/InstitutionAreaLeftTree.vue
create mode 100644 src/views/admin/institution/index.vue
diff --git a/src/views/admin/institution/InstitutionArea.api.ts b/src/views/admin/institution/InstitutionArea.api.ts
new file mode 100644
index 0000000..b46b8f4
--- /dev/null
+++ b/src/views/admin/institution/InstitutionArea.api.ts
@@ -0,0 +1,39 @@
+import { defHttp } from '/@/utils/http/axios';
+
+enum Api {
+ queryTreeSync = '/admin/institutionArea/queryTreeSync',
+ searchBy = '/admin/institutionArea/searchBy',
+ add = '/admin/institutionArea/add',
+ edit = '/admin/institutionArea/edit',
+ delete = '/admin/institutionArea/delete',
+}
+
+
+/**
+ * 获取机构树列表
+ * @param params
+ */
+export const queryTreeSync = (params?) => defHttp.get({ url: Api.queryTreeSync, params });
+
+/**
+ * 根据关键字搜索机构
+ */
+export const searchByKeywords = (params) => defHttp.get({ url: Api.searchBy, params });
+
+/**
+ * 保存或者更新机构
+ * @param params
+ */
+export const saveOrUpdateInst = (params, isUpdate) => {
+ let url = isUpdate ? Api.edit : Api.add;
+ return defHttp.post({ url: url, params });
+};
+
+/**
+ * 删除机构
+ */
+export const deleteInst = (params,handleSuccess) => {
+ return defHttp.post({ url: Api.delete, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess();
+ });
+};
diff --git a/src/views/admin/institution/InstitutionArea.data.ts b/src/views/admin/institution/InstitutionArea.data.ts
new file mode 100644
index 0000000..d2e8139
--- /dev/null
+++ b/src/views/admin/institution/InstitutionArea.data.ts
@@ -0,0 +1,73 @@
+import { FormSchema } from '/@/components/Form';
+
+// 部门基础表单
+export function useBasicFormSchema() {
+ const basicFormSchema: FormSchema[] = [
+ {
+ field: 'instName',
+ label: '名称',
+ component: 'Input',
+ componentProps: {
+ placeholder: '请输入机构/区域名称',
+ },
+ rules: [{ required: true, message: '名称不能为空' }],
+ },
+ {
+ field: 'parentId',
+ label: '上级',
+ component: 'TreeSelect',
+ componentProps: {
+ treeData: [],
+ placeholder: '无',
+ dropdownStyle: { maxHeight: '200px', overflow: 'auto' },
+ },
+ },
+ {
+ field: 'orgCode',
+ label: '编码',
+ component: 'Input',
+ componentProps: {
+ placeholder: '请输入编码',
+ },
+ },
+ {
+ field: 'orgCategory',
+ label: '类型',
+ component: 'RadioButtonGroup',
+ componentProps: { options: [] },
+ },
+ {
+ field: 'instOrder',
+ label: '排序',
+ component: 'InputNumber',
+ componentProps: {},
+ },
+ {
+ field: 'mobile',
+ label: '电话',
+ component: 'Input',
+ componentProps: {
+ placeholder: '请输入电话',
+ },
+ },
+ {
+ field: 'address',
+ label: '地址',
+ component: 'Input',
+ componentProps: {
+ placeholder: '请输入地址',
+ },
+ },
+ ];
+ return { basicFormSchema };
+}
+
+// 机构类型选项
+export const orgCategoryOptions = {
+ // 一级部门
+ root: [{ value: '1', label: '机构' }],
+ // 子级部门
+ child: [
+ { value: '2', label: '区域' },
+ ],
+};
diff --git a/src/views/admin/institution/components/InstitutionAreaDrawer.vue b/src/views/admin/institution/components/InstitutionAreaDrawer.vue
new file mode 100644
index 0000000..434e6a4
--- /dev/null
+++ b/src/views/admin/institution/components/InstitutionAreaDrawer.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
diff --git a/src/views/admin/institution/components/InstitutionAreaForm.vue b/src/views/admin/institution/components/InstitutionAreaForm.vue
new file mode 100644
index 0000000..3132da3
--- /dev/null
+++ b/src/views/admin/institution/components/InstitutionAreaForm.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/institution/components/InstitutionAreaLeftTree.vue b/src/views/admin/institution/components/InstitutionAreaLeftTree.vue
new file mode 100644
index 0000000..9547ca7
--- /dev/null
+++ b/src/views/admin/institution/components/InstitutionAreaLeftTree.vue
@@ -0,0 +1,287 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+ 添加子级
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/institution/index.vue b/src/views/admin/institution/index.vue
new file mode 100644
index 0000000..fd4df38
--- /dev/null
+++ b/src/views/admin/institution/index.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/iot/tplink/camera/components/CameraBitrateForm.vue b/src/views/iot/tplink/camera/components/CameraBitrateForm.vue
index 8264226..2b00141 100644
--- a/src/views/iot/tplink/camera/components/CameraBitrateForm.vue
+++ b/src/views/iot/tplink/camera/components/CameraBitrateForm.vue
@@ -157,7 +157,7 @@
import { getValueType } from '/@/utils';
import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
- import { getVideoParams,setVideoParams } from "@/views/iot/tplink/camera/camera.api";
+ import { getVideoParams,setVideoParams } from "../camera.api";
const props = defineProps({
data: { type: Object, default: () => ({}) },
diff --git a/src/views/iot/tplink/camera/components/CameraBlockForm.vue b/src/views/iot/tplink/camera/components/CameraBlockForm.vue
index b548c2f..d505200 100644
--- a/src/views/iot/tplink/camera/components/CameraBlockForm.vue
+++ b/src/views/iot/tplink/camera/components/CameraBlockForm.vue
@@ -131,7 +131,7 @@
getTamperNotif,
setTamperNotif,
testAudio
- } from "@/views/iot/tplink/camera/camera.api";
+ } from "../camera.api";
const props = defineProps({
data: { type: Object, default: () => ({}) },
diff --git a/src/views/iot/tplink/camera/components/CameraCommonForm.vue b/src/views/iot/tplink/camera/components/CameraCommonForm.vue
index e12fb6c..44ecaa0 100644
--- a/src/views/iot/tplink/camera/components/CameraCommonForm.vue
+++ b/src/views/iot/tplink/camera/components/CameraCommonForm.vue
@@ -216,7 +216,7 @@ import {
setImageCommon,
configRecovery,
getPreviewUrl,
- } from "@/views/iot/tplink/camera/camera.api";
+ } from "../camera.api";
const props = defineProps({
data: { type: Object, default: () => ({}) },
diff --git a/src/views/iot/tplink/camera/components/CameraInfoDrawer.vue b/src/views/iot/tplink/camera/components/CameraInfoDrawer.vue
index f801a70..53d53e9 100644
--- a/src/views/iot/tplink/camera/components/CameraInfoDrawer.vue
+++ b/src/views/iot/tplink/camera/components/CameraInfoDrawer.vue
@@ -19,13 +19,12 @@