Przeglądaj źródła

Merge branch 'master' of http://git.xt.wenhq.top:8083/wenhongquan/iotc

# Conflicts:
#	ruoyi-admin/src/main/resources/application.yml
#	ruoyi-ui-vue3/vite.config.js
liwei19941102 2 lat temu
rodzic
commit
7ea5b54203

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -23,7 +23,7 @@ captcha:
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8088
+  port: 8989
   servlet:
     # 应用的访问路径
     context-path: /

+ 1 - 1
ruoyi-ui-vue3/.env.development

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = RuoYi-Vue-Plus后台管理系统
+VITE_APP_TITLE = 物联网平台
 
 # 开发环境配置
 VITE_APP_ENV = 'development'

+ 1 - 1
ruoyi-ui-vue3/.env.production

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = RuoYi-Vue-Plus后台管理系统
+VITE_APP_TITLE = 物联网平台
 
 # 生产环境配置
 VITE_APP_ENV = 'production'

+ 2 - 2
ruoyi-ui-vue3/index.html

@@ -7,7 +7,7 @@
   <meta name="renderer" content="webkit">
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
   <link rel="icon" href="/favicon.ico">
-  <title>RuoYi-Vue-Plus管理系统</title>
+  <title>物联网平台</title>
   <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
   <style>
     html,
@@ -212,4 +212,4 @@
   <script type="module" src="/src/main.js"></script>
 </body>
 
-</html>
+</html>

+ 4 - 2
ruoyi-ui-vue3/package.json

@@ -15,6 +15,7 @@
   },
   "dependencies": {
     "@element-plus/icons-vue": "2.0.10",
+    "@layui/layui-vue": "^2.12.0",
     "@vueup/vue-quill": "1.2.0",
     "@vueuse/core": "9.5.0",
     "axios": "0.27.2",
@@ -24,6 +25,7 @@
     "fuse.js": "6.6.2",
     "js-cookie": "3.0.1",
     "jsencrypt": "3.3.1",
+    "moment": "^2.29.4",
     "nprogress": "0.2.0",
     "pinia": "2.0.22",
     "vue": "3.2.45",
@@ -35,9 +37,9 @@
     "@vue/compiler-sfc": "3.2.45",
     "sass": "1.56.1",
     "unplugin-auto-import": "0.11.4",
+    "unplugin-vue-setup-extend-plus": "0.4.9",
     "vite": "3.2.3",
     "vite-plugin-compression": "0.5.1",
-    "vite-plugin-svg-icons": "2.0.1",
-    "unplugin-vue-setup-extend-plus": "0.4.9"
+    "vite-plugin-svg-icons": "2.0.1"
   }
 }

Plik diff jest za duży
+ 0 - 0
ruoyi-ui-vue3/src/assets/logo/logo.svg


+ 5 - 5
ruoyi-ui-vue3/src/layout/components/Navbar.vue

@@ -6,15 +6,15 @@
 
     <div class="right-menu">
       <template v-if="appStore.device !== 'mobile'">
-        <header-search id="header-search" class="right-menu-item" />
+        <!-- <header-search id="header-search" class="right-menu-item" /> -->
 
-        <el-tooltip content="源码地址" effect="dark" placement="bottom">
+        <!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">
           <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
-        </el-tooltip>
+        </el-tooltip> -->
 
-        <el-tooltip content="文档地址" effect="dark" placement="bottom">
+        <!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">
           <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
-        </el-tooltip>
+        </el-tooltip> -->
 
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
 

+ 3 - 3
ruoyi-ui-vue3/src/layout/components/Sidebar/Logo.vue

@@ -15,7 +15,7 @@
 
 <script setup>
 import variables from '@/assets/styles/variables.module.scss'
-import logo from '@/assets/logo/logo.png'
+import logo from '@/assets/logo/logo.svg'
 import useSettingsStore from '@/store/modules/settings'
 
 defineProps({
@@ -25,7 +25,7 @@ defineProps({
   }
 })
 
-const title = ref('RuoYi-Vue-Plus');
+const title = ref('物联网平台');
 const settingsStore = useSettingsStore();
 const sideTheme = computed(() => settingsStore.sideTheme);
 </script>
@@ -78,4 +78,4 @@ const sideTheme = computed(() => settingsStore.sideTheme);
     }
   }
 }
-</style>
+</style>

+ 2 - 0
ruoyi-ui-vue3/src/main.js

@@ -11,6 +11,8 @@ import store from './store'
 import router from './router'
 import directive from './directive' // directive
 
+
+
 // 注册指令
 import plugins from './plugins' // plugins
 import { download } from '@/utils/request'

+ 90 - 76
ruoyi-ui-vue3/src/router/index.js

@@ -27,138 +27,152 @@ import Layout from '@/layout'
 // 公共路由
 export const constantRoutes = [
   {
-    path: '/redirect',
+    path: "/redirect",
     component: Layout,
     hidden: true,
     children: [
       {
-        path: '/redirect/:path(.*)',
-        component: () => import('@/views/redirect/index.vue')
-      }
-    ]
+        path: "/redirect/:path(.*)",
+        component: () => import("@/views/redirect/index.vue"),
+      },
+    ],
   },
   {
-    path: '/login',
-    component: () => import('@/views/login'),
-    hidden: true
+    path: "/login",
+    component: () => import("@/views/login"),
+    hidden: true,
   },
   {
-    path: '/register',
-    component: () => import('@/views/register'),
-    hidden: true
+    path: "/register",
+    component: () => import("@/views/register"),
+    hidden: true,
   },
   {
     path: "/:pathMatch(.*)*",
-    component: () => import('@/views/error/404'),
-    hidden: true
+    component: () => import("@/views/error/404"),
+    hidden: true,
   },
   {
-    path: '/401',
-    component: () => import('@/views/error/401'),
-    hidden: true
+    path: "/401",
+    component: () => import("@/views/error/401"),
+    hidden: true,
   },
   {
-    path: '',
+    path: "",
     component: Layout,
-    redirect: '/index',
+    redirect: "/index",
     children: [
       {
-        path: '/index',
-        component: () => import('@/views/index'),
-        name: 'Index',
-        meta: { title: '首页', icon: 'dashboard', affix: true }
-      }
-    ]
+        path: "/index",
+        component: () => import("@/views/index"),
+        name: "Index",
+        meta: { title: "首页", icon: "dashboard", affix: true },
+      },
+    ],
   },
   {
-    path: '/user',
+    path: "/user",
     component: Layout,
     hidden: true,
-    redirect: 'noredirect',
+    redirect: "noredirect",
     children: [
       {
-        path: 'profile',
-        component: () => import('@/views/system/user/profile/index'),
-        name: 'Profile',
-        meta: { title: '个人中心', icon: 'user' }
-      }
-    ]
-  }
-]
+        path: "profile",
+        component: () => import("@/views/system/user/profile/index"),
+        name: "Profile",
+        meta: { title: "个人中心", icon: "user" },
+      },
+    ],
+  },
+  {
+    path: "/device/camera/detail",
+    hidden: true,
+    component: Layout,
+    children: [
+      {
+        path: "",
+        component: () => import("@/views/device/camera/detail"),
+        name: "CameraDetail",
+        meta: { title: "摄像头详情", activeMenu: "/device/camera" },
+      },
+    ],
+  },
+];
 
 // 动态路由,基于用户权限动态去加载
 export const dynamicRoutes = [
   {
-    path: '/system/user-auth',
+    path: "/system/user-auth",
     component: Layout,
     hidden: true,
-    permissions: ['system:user:edit'],
+    permissions: ["system:user:edit"],
     children: [
       {
-        path: 'role/:userId(\\d+)',
-        component: () => import('@/views/system/user/authRole'),
-        name: 'AuthRole',
-        meta: { title: '分配角色', activeMenu: '/system/user' }
-      }
-    ]
+        path: "role/:userId(\\d+)",
+        component: () => import("@/views/system/user/authRole"),
+        name: "AuthRole",
+        meta: { title: "分配角色", activeMenu: "/system/user" },
+      },
+    ],
   },
   {
-    path: '/system/role-auth',
+    path: "/system/role-auth",
     component: Layout,
     hidden: true,
-    permissions: ['system:role:edit'],
+    permissions: ["system:role:edit"],
     children: [
       {
-        path: 'user/:roleId(\\d+)',
-        component: () => import('@/views/system/role/authUser'),
-        name: 'AuthUser',
-        meta: { title: '分配用户', activeMenu: '/system/role' }
-      }
-    ]
+        path: "user/:roleId(\\d+)",
+        component: () => import("@/views/system/role/authUser"),
+        name: "AuthUser",
+        meta: { title: "分配用户", activeMenu: "/system/role" },
+      },
+    ],
   },
   {
-    path: '/system/dict-data',
+    path: "/system/dict-data",
     component: Layout,
     hidden: true,
-    permissions: ['system:dict:list'],
+    permissions: ["system:dict:list"],
     children: [
       {
-        path: 'index/:dictId(\\d+)',
-        component: () => import('@/views/system/dict/data'),
-        name: 'Data',
-        meta: { title: '字典数据', activeMenu: '/system/dict' }
-      }
-    ]
+        path: "index/:dictId(\\d+)",
+        component: () => import("@/views/system/dict/data"),
+        name: "Data",
+        meta: { title: "字典数据", activeMenu: "/system/dict" },
+      },
+    ],
   },
   {
-    path: '/system/oss-config',
+    path: "/system/oss-config",
     component: Layout,
     hidden: true,
-    permissions: ['system:oss:list'],
+    permissions: ["system:oss:list"],
     children: [
       {
-        path: 'index',
-        component: () => import('@/views/system/oss/config'),
-        name: 'OssConfig',
-        meta: { title: '配置管理', activeMenu: '/system/oss'}
-      }
-    ]
+        path: "index",
+        component: () => import("@/views/system/oss/config"),
+        name: "OssConfig",
+        meta: { title: "配置管理", activeMenu: "/system/oss" },
+      },
+    ],
   },
   {
-    path: '/tool/gen-edit',
+    path: "/tool/gen-edit",
     component: Layout,
     hidden: true,
-    permissions: ['tool:gen:edit'],
+    permissions: ["tool:gen:edit"],
     children: [
       {
-        path: 'index/:tableId(\\d+)',
-        component: () => import('@/views/tool/gen/editTable'),
-        name: 'GenEdit',
-        meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
-      }
-    ]
-  }
-]
+        path: "index/:tableId(\\d+)",
+        component: () => import("@/views/tool/gen/editTable"),
+        name: "GenEdit",
+        meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
+      },
+    ],
+  },
+
+];
 
 const router = createRouter({
   history: createWebHistory(import.meta.env.VITE_APP_CONTEXT_PATH),

+ 73 - 0
ruoyi-ui-vue3/src/views/device/camera/detail.vue

@@ -0,0 +1,73 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-card class="box-card">
+      <template #header>
+        <div class="card-header">
+          <span>主设备信息-详情</span>
+        </div>
+      </template>
+      <el-row>
+        <el-col :span="24">
+          <el-descriptions :column="4">
+            <el-descriptions-item label-class-name="mylabel" label="设备名称">kooriookami</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="平台编码">18100000000</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="主设备类型">Suzhou</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="主设备协议类型">Suzhou</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="设备互联编码">Suzhou</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="设备类型">Suzhou</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="视频制式">Suzhou</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="设备提供商类型">Suzhou</el-descriptions-item>
+            <el-descriptions-item label-class-name="mylabel" label="序列号">Suzhou</el-descriptions-item>
+
+          </el-descriptions>
+        </el-col>
+      </el-row>
+
+    </el-card>
+    <el-card class="box-card" style="margin-top: 10px">
+      <template #header>
+        <div class="card-header">
+          <span>视频设备</span>
+        </div>
+      </template>
+      <el-row>
+        <el-col :span="24">
+          <el-table :data="tableData" border>
+            <el-table-column width="180" prop="name" label="视频输入通道号"></el-table-column>
+            <el-table-column width="180" prop="code" label="摄像机编码"></el-table-column>
+            <el-table-column prop="type" label="摄像机名称"></el-table-column>
+            <el-table-column prop="protocol" label="摄像机类型"></el-table-column>
+            <el-table-column prop="protocol" label="纬度"></el-table-column>
+            <el-table-column prop="protocol" label="经度"></el-table-column>
+            <el-table-column prop="protocol" label="摄像机安装高度"></el-table-column>
+            <el-table-column  width="180" prop="protocol" label="摄像机绑定音频通道"></el-table-column>
+            <el-table-column prop="protocol" label="是否支持组播"></el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+
+    </el-card>
+
+
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import {ref} from "vue";
+
+const tableData = ref([]);
+
+</script>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+:deep(.mylabel) {
+  font-size: 15px;
+  color: #000;
+  font-weight: 800 !important;
+}
+</style>

+ 190 - 0
ruoyi-ui-vue3/src/views/device/camera/index.vue

@@ -0,0 +1,190 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-row>
+      <el-col :span="6" style="padding-right: 10px">
+        <el-card class="box-card" style="min-height: 80vh;">
+          <template #header>
+            <div class="card-header">
+              <span>视频设备</span>
+            </div></template
+          >
+          <div class="tree">
+            <LayTree
+              :data="data"
+              :tail-node-icon="false"
+              :onlyIconControl="true"
+              v-model:selectedKey="selectedKey"
+              @node-click="handleClick"
+            >
+            </LayTree>
+          </div>
+        </el-card>
+      </el-col>
+      <el-col :span="18">
+        <el-card class="box-card">
+          <div style="display: flex; flex-direction: row; justify-content: space-between">
+            <div>
+              <div
+                style="
+                  display: flex;
+                  flex-direction: row;
+                  flex-wrap: nowrap;
+                  align-items: center;
+                "
+              >
+                <div style="font-size: 12px; width: 80px">设备名称:</div>
+                <el-input
+                  v-model="searchform.devicename"
+                  placeholder="设备名称"
+                ></el-input>
+              </div>
+            </div>
+            <div>
+              <el-button type="primary" plain>重置</el-button>
+              <el-button type="primary">搜索</el-button>
+            </div>
+          </div>
+        </el-card>
+
+        <el-card class="box-card" style="margin-top: 10px;">
+             <template #header>
+            <div class="card-header">
+              <span>主要设备</span>
+              <el-button type="warning">同步</el-button>
+            </div></template>
+
+            <el-row>
+        <el-col :span="24" style="padding-left: 10px">
+          <el-table :data="devicetabledata" :border="true">
+            <el-table-column label="设备名称"></el-table-column>
+            <el-table-column label="平台编码"></el-table-column>
+            <el-table-column label="主要设备协议类型"></el-table-column>
+            <el-table-column label="设备互联编码"></el-table-column>
+            <el-table-column label="设备型号"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="scope">
+                <div>
+                  <el-button link @click="godetail">
+                    <el-tooltip effect="dark" content="详情">
+                      <el-icon>
+                        <Memo />
+                      </el-icon>
+                    </el-tooltip>
+                  </el-button>
+                  <el-popconfirm title="确定删除该标签?">
+                    <template #reference>
+                      <el-button link
+                        ><el-tooltip effect="dark" content="删除"
+                          ><el-icon><Delete /></el-icon></el-tooltip
+                      ></el-button>
+                    </template>
+                  </el-popconfirm>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+
+
+        </el-col>
+        <el-col :span="24" style="margin-top: 10px;">
+          <el-pagination style="float: right;"
+            small
+            background
+            layout="prev, pager, next"
+            :total="50"
+            class="mt-4"
+          />
+        </el-col>
+      </el-row>
+        </el-card>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import { ref } from "vue";
+import { useRoute,useRouter } from "vue-router";
+import { LayTree } from "@layui/layui-vue";
+import "@layui/layui-vue/lib/index.css";
+
+
+const route = useRoute();
+const router = useRouter();
+
+const handleClick = (node) => {
+  console.log("Click Node:" + JSON.stringify(node));
+};
+const selectedKey = ref(1);
+const data = ref([
+  {
+    title: "大华西门nvr1",
+    id: 1,
+    checked: true,
+    spread: true,
+    children: [
+      {
+        title: "东门立柱摄像机",
+        id: 2,
+        href: "https://www.layui.com/",
+      },
+      {
+        title: "东门立柱摄像机",
+        id: 3,
+        href: "https://www.layui.com/",
+      },
+      {
+        title: "东门立柱摄像机",
+        id: 4,
+        href: "https://www.layui.com/",
+      },
+      {
+        title: "东门立柱摄像机",
+        id: 5,
+        href: "https://www.layui.com/",
+      },
+      {
+        title: "东门立柱摄像机",
+        id: 6,
+        href: "https://www.layui.com/",
+      },
+    ],
+  },
+]);
+
+
+
+
+const devicetabledata = ref([1]);
+
+const searchform = ref({
+  devicename: "",
+});
+
+
+const godetail = () => {
+
+
+  router.push("/device/camera/detail")
+
+}
+
+
+</script>
+
+<style></style>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+.tree {
+  *,
+  *:before,
+  *:after {
+    box-sizing: content-box !important;
+  }
+}
+</style>

+ 105 - 0
ruoyi-ui-vue3/src/views/device/device/index.vue

@@ -0,0 +1,105 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-card class="box-card">
+      <div style="display: flex; flex-direction: row; justify-content: space-between">
+        <div>
+          <div
+            style="
+              display: flex;
+              flex-direction: row;
+              flex-wrap: nowrap;
+              align-items: center;
+            "
+          >
+            <div style="font-size: 12px; width: 80px">设备名称:</div>
+            <el-input v-model="searchform.devicename" placeholder="设备名称"></el-input>
+          </div>
+        </div>
+        <div>
+          <el-button type="primary" plain>重置</el-button>
+          <el-button type="primary">搜索</el-button>
+        </div>
+      </div>
+    </el-card>
+    <el-card class="box-card" style="margin-top: 10px">
+      <template #header>
+        <div class="card-header">
+          <span>设备管理</span>
+
+          <div>
+            <el-button type="primary">添加</el-button>
+            <el-button type="danger">批量删除</el-button>
+            <el-button type="primary" plain>显示字段</el-button>
+          </div>
+        </div>
+      </template>
+
+      <el-row>
+        <el-col :span="24" style="padding-left: 10px">
+          <el-table :data="devicetabledata" :border="true">
+            <el-table-column type="selection" width="55"></el-table-column>
+            <el-table-column label="设备名称"></el-table-column>
+            <el-table-column label="型号"></el-table-column>
+            <el-table-column label="设备类型"></el-table-column>
+            <el-table-column label="生产厂商"></el-table-column>
+            <el-table-column label="制造商"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="scope">
+                <div>
+                  <el-button link>
+                    <el-tooltip effect="dark" content="编辑">
+                      <el-icon>
+                        <Edit />
+                      </el-icon>
+                    </el-tooltip>
+                  </el-button>
+                  <el-popconfirm title="确定删除该标签?">
+                    <template #reference>
+                      <el-button link
+                        ><el-tooltip effect="dark" content="删除"
+                          ><el-icon><Delete /></el-icon></el-tooltip
+                      ></el-button>
+                    </template>
+                  </el-popconfirm>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+
+
+        </el-col>
+        <el-col :span="24" style="margin-top: 10px;">
+          <el-pagination style="float: right;"
+            small
+            background
+            layout="prev, pager, next"
+            :total="50"
+            class="mt-4"
+          />
+        </el-col>
+      </el-row>
+    </el-card>
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import { ref } from "vue";
+
+const searchform = ref({
+  devicename: "",
+});
+
+const gettbheight = () => {
+  return window.innerHeight - 280;
+};
+
+const devicetabledata = ref([1]);
+</script>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+</style>

+ 216 - 0
ruoyi-ui-vue3/src/views/device/equipmentdash/index.vue

@@ -0,0 +1,216 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-row>
+      <el-col :span="6" style="padding-right: 10px">
+    <el-card class="box-card">
+      <template #header>
+        <div class="card-header">
+          <span>东门立柱摄像-详情</span>
+        </div>
+      </template>
+      <div class="tree">
+        <LayTree
+          :data="data"
+          :tail-node-icon="false"
+          :onlyIconControl="true"
+          v-model:selectedKey="selectedKey"
+          @node-click="handleClick"
+        >
+        </LayTree>
+      </div>
+    </el-card>
+      </el-col>
+
+      <el-col :span="18">
+        <el-card class="box-card">
+          <div style="display: flex; flex-direction: row; justify-content: space-between">
+            <div style="display: flex; flex-direction: row;">
+              <div
+                style="
+                  display: flex;
+                  flex-direction: row;
+                  flex-wrap: nowrap;
+                  align-items: center;
+                "
+              >
+                <div style="font-size: 12px; width: 80px;">设备名称:</div>
+                <el-input
+                  v-model="searchform.devicename"
+                  placeholder="设备名称"
+                ></el-input>
+              </div>
+              <div
+                style="
+                  display: flex;
+                  flex-direction: row;
+                  flex-wrap: nowrap;
+                  align-items: center;
+                "
+              >
+                <div style="font-size: 12px; width: 80px;margin-left: 10px">设备编码:</div>
+                <el-input
+                  v-model="searchform.devicename"
+                  placeholder="设备编码"
+                ></el-input>
+              </div>
+            </div>
+            <div>
+              <el-button type="primary" plain>重置</el-button>
+              <el-button type="primary">搜索</el-button>
+            </div>
+          </div>
+        </el-card>
+
+        <el-card class="box-card" style="margin-top: 10px;">
+          <template #header>
+            <div class="card-header">
+              <span>设备台账</span>
+              <div>
+                <el-button type="primary">添加</el-button>
+                <el-button type="danger">批量删除</el-button>
+                <el-button type="primary" plain>显示字段</el-button>
+              </div>
+            </div></template>
+
+          <el-row>
+            <el-col :span="24" style="padding-left: 10px">
+              <el-table :data="devicetabledata" :border="true">
+                <el-table-column label="上层位置"></el-table-column>
+                <el-table-column label="设备编码"></el-table-column>
+                <el-table-column label="备用编码"></el-table-column>
+                <el-table-column label="设备名称"></el-table-column>
+                <el-table-column label="设备信息"></el-table-column>
+                <el-table-column label="所属公司"></el-table-column>
+                <el-table-column label="所属组织机构"></el-table-column>
+                <el-table-column label="所属类型"></el-table-column>
+                <el-table-column label="负责人"></el-table-column>
+                <el-table-column label="安装日期"></el-table-column>
+                <el-table-column label="安装地点地址"></el-table-column>
+                <el-table-column label="关联设备Id"></el-table-column>
+                <el-table-column label="标签"></el-table-column>
+                <el-table-column label="状态"></el-table-column>
+                <el-table-column label="保修期结束日期"></el-table-column>
+                <el-table-column label="制造日期"></el-table-column>
+                <el-table-column label="资产编码"></el-table-column>
+                <el-table-column label="资产编号"></el-table-column>
+                <el-table-column label="使用证编号"></el-table-column>
+                <el-table-column label="安全级别"></el-table-column>
+                <el-table-column label="使用年限"></el-table-column>
+                <el-table-column label="变动日期"></el-table-column>
+                <el-table-column label="供货厂家"></el-table-column>
+                <el-table-column label="创建人"></el-table-column>
+                <el-table-column label="创建时间"></el-table-column>
+                <el-table-column label="更新人"></el-table-column>
+                <el-table-column label="更新时间"></el-table-column>
+                <el-table-column label="备注"></el-table-column>
+                <el-table-column label="设备编码"></el-table-column>
+                <el-table-column label="操作">
+                  <template #default="scope">
+                    <div>
+                      <el-button link >
+                        <el-tooltip effect="dark" content="详情">
+                          <el-icon>
+                            <Memo />
+                          </el-icon>
+                        </el-tooltip>
+                      </el-button>
+                      <el-popconfirm title="确定删除该标签?">
+                        <template #reference>
+                          <el-button link
+                          ><el-tooltip effect="dark" content="删除"
+                          ><el-icon><Delete /></el-icon></el-tooltip
+                          ></el-button>
+                        </template>
+                      </el-popconfirm>
+                    </div>
+                  </template>
+                </el-table-column>
+              </el-table>
+
+
+            </el-col>
+            <el-col :span="24" style="margin-top: 10px;">
+              <el-pagination style="float: right;"
+                             small
+                             background
+                             layout="prev, pager, next"
+                             :total="50"
+                             class="mt-4"
+              />
+            </el-col>
+          </el-row>
+        </el-card>
+      </el-col>
+    </el-row>
+
+
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import {ref} from "vue";
+import { LayTree } from "@layui/layui-vue";
+import "@layui/layui-vue/lib/index.css";
+
+
+const handleClick = (node) => {
+  console.log("Click Node:" + JSON.stringify(node));
+};
+const selectedKey = ref(4);
+const data = ref([
+  {
+    title: "集团公司",
+    id: 1,
+    checked: true,
+    spread: true,
+    children: [
+      {
+        title: "示范项目",
+        id: 2,
+        spread: true,
+        children: [
+          {
+            title: "监测站",
+            id: 4,
+            href: "https://www.layui.com/",
+          },
+          {
+            title: "用能区域",
+            id: 5,
+            href: "https://www.layui.com/",
+          },
+
+        ],
+      },
+      {
+        title: "虚拟项目",
+        id: 3,
+        href: "https://www.layui.com/",
+      },
+
+    ],
+  },
+]);
+
+const devicetabledata = ref([1]);
+const searchform = ref({
+  devicename: "",
+  devicesn:""
+});
+</script>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+
+.tree {
+  *,
+  *:before,
+  *:after {
+    box-sizing: content-box !important;
+  }
+}
+</style>

+ 126 - 0
ruoyi-ui-vue3/src/views/device/sensordash/index.vue

@@ -0,0 +1,126 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-card class="box-card">
+      <template #header>
+        <div class="card-header">
+          <span>设备标签管理</span>
+
+          <el-button
+            type="primary"
+            @click="
+              detailshow = true;
+              edittype = 1;
+            "
+            >添加</el-button
+          >
+        </div>
+      </template>
+      <el-row>
+
+        <el-col :span="24" style="padding-left: 10px">
+          <el-table :data="dwtabledata" :border="true" :height="gettbheight()">
+            <el-table-column label="编码"></el-table-column>
+            <el-table-column label="名称"></el-table-column>
+            <el-table-column label="备注"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="scope">
+                <div>
+                  <el-button
+                    link
+                    @click="
+                      detailshow = true;
+                      edittype = 2;
+                    "
+                  >
+                    <el-tooltip effect="dark" content="编辑">
+                      <el-icon>
+                        <Edit />
+                      </el-icon>
+                    </el-tooltip>
+                  </el-button>
+                  <el-popconfirm title="确定删除该标签?">
+                    <template #reference>
+                      <el-button link
+                        ><el-tooltip effect="dark" content="删除"
+                          ><el-icon><Delete /></el-icon></el-tooltip
+                      ></el-button>
+                    </template>
+                  </el-popconfirm>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <el-dialog
+      :title="`${edittype == 1 ? '新增' : edittype == 2 ? '编辑' : '查看'}设备标签`"
+      v-model="detailshow"
+    >
+      <el-form  :model="dwform" label-width="120px">
+        <el-form-item label="编码">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="名称">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="备注">
+          <el-input type="textarea" v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+      <div class="dialog-footer">
+         <el-button @click="detailshow=false;"> 取消 </el-button>
+          <el-button type="primary" @click="dosavedw"> 保存 </el-button>
+      </div>
+    </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import { ref } from "vue";
+
+const dwtypetabledata = ref([]);
+const dwtabledata = ref([1,1,1,1,1,1]);
+
+const edittype = ref(1);
+const detailshow = ref(false);
+
+const dwform = ref({
+  id: 0,
+  name: "",
+  unitSymbol: "",
+  unitName: "",
+  isStandard: "",
+  unitType: "",
+  toStandardRatio: 0,
+  toOffset: 0,
+  remark: "",
+  creator: "",
+  ctime: "",
+  modifier: "",
+  utime: "",
+});
+
+const gettbheight = () => {
+
+  return window.innerHeight - 200;
+}
+
+const dosavedw = () => {
+
+  detailshow.value = false;
+
+};
+
+</script>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+</style>

+ 1 - 158
ruoyi-ui-vue3/src/views/index.vue

@@ -2,100 +2,7 @@
   <div class="app-container home">
     <el-row :gutter="20">
       <el-col :sm="24" :lg="12" style="padding-left: 20px">
-        <h2>RuoYi-Vue-Plus后台管理系统</h2>
-        <p>
-          RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 分布式集群 场景升级(不兼容原框架)
-          <br/>
-          * 前端开发框架 Vue、Element UI<br/>
-          * 后端开发框架 Spring Boot<br/>
-          * 容器框架 Undertow 基于 Netty 的高性能容器<br/>
-          * 权限认证框架 Sa-Token 支持多终端认证系统<br/>
-          * 关系数据库 MySQL 适配 8.X 最低 5.7<br/>
-          * 缓存数据库 Redis 适配 6.X 最低 4.X<br/>
-          * 数据库框架 Mybatis-Plus 快速 CRUD 增加开发效率<br/>
-          * 数据库框架 p6spy 更强劲的 SQL 分析<br/>
-          * 多数据源框架 dynamic-datasource 支持主从与多种类数据库异构<br/>
-          * 序列化框架 Jackson 统一使用 jackson 高效可靠<br/>
-          * Redis客户端 Redisson 性能强劲、API丰富<br/>
-          * 分布式限流 Redisson 全局、请求IP、集群ID 多种限流<br/>
-          * 分布式锁 Lock4j 注解锁、工具锁 多种多样<br/>
-          * 分布式幂等 Lock4j 基于分布式锁实现<br/>
-          * 分布式链路追踪 SkyWalking 支持链路追踪、网格分析、度量聚合、可视化<br/>
-          * 分布式任务调度 Xxl-Job 高性能 高可靠 易扩展<br/>
-          * 文件存储 Minio 本地存储<br/>
-          * 文件存储 七牛、阿里、腾讯	云存储<br/>
-          * 监控框架 SpringBoot-Admin 全方位服务监控<br/>
-          * 校验框架 Validation 增强接口安全性 严谨性<br/>
-          * Excel框架 Alibaba EasyExcel 性能优异 扩展性强<br/>
-          * 文档框架 SpringDoc、javadoc 无注解零入侵基于java注释<br/>
-          * 工具类框架 Hutool、Lombok 减少代码冗余 增加安全性<br/>
-          * 代码生成器 适配MP、SpringDoc规范化代码 一键生成前后端代码<br/>
-          * 部署方式 Docker 容器编排 一键部署业务集群<br/>
-          * 国际化 SpringMessage Spring标准国际化方案<br/>
-        </p>
-        <p>
-          <b>当前版本:</b> <span>v{{ version }}</span>
-        </p>
-        <p>
-          <el-tag type="danger">&yen;免费开源</el-tag>
-        </p>
-        <p>
-          <el-button
-            type="primary"
-            icon="Cloudy"
-            plain
-            @click="goTarget('https://gitee.com/JavaLionLi/RuoYi-Vue-Plus')"
-            >访问码云</el-button
-          >
-          <el-button
-            type="primary"
-            icon="Cloudy"
-            plain
-            @click="goTarget('https://github.com/JavaLionLi/RuoYi-Vue-Plus')"
-            >访问GitHub</el-button
-          >
-          <el-button
-            type="primary"
-            icon="Cloudy"
-            plain
-            @click="goTarget('https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages?sort_id=4106467&doc_id=1469725')"
-          >更新日志</el-button
-          >
-        </p>
-      </el-col>
-
-      <el-col :sm="24" :lg="12" style="padding-left: 50px">
-        <el-row>
-          <el-col :span="12">
-            <h2>技术选型</h2>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="6">
-            <h4>后端技术</h4>
-            <ul>
-              <li>SpringBoot</li>
-              <li>Sa-Token</li>
-              <li>JWT</li>
-              <li>MyBatis</li>
-              <li>Druid</li>
-              <li>Jackson</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-          <el-col :span="6">
-            <h4>前端技术</h4>
-            <ul>
-              <li>Vue</li>
-              <li>Vuex</li>
-              <li>Element-ui</li>
-              <li>Axios</li>
-              <li>Sass</li>
-              <li>Quill</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-        </el-row>
+        ...
       </el-col>
     </el-row>
     <el-divider />
@@ -103,74 +10,10 @@
 </template>
 
 <script setup name="Index">
-const version = ref('4.8.1')
 
-function goTarget(url) {
-  window.open(url, '__blank')
-}
 </script>
 
 <style scoped lang="scss">
-.home {
-  blockquote {
-    padding: 10px 20px;
-    margin: 0 0 20px;
-    font-size: 17.5px;
-    border-left: 5px solid #eee;
-  }
-  hr {
-    margin-top: 20px;
-    margin-bottom: 20px;
-    border: 0;
-    border-top: 1px solid #eee;
-  }
-  .col-item {
-    margin-bottom: 20px;
-  }
-
-  ul {
-    padding: 0;
-    margin: 0;
-  }
-
-  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  color: #676a6c;
-  overflow-x: hidden;
-
-  ul {
-    list-style-type: none;
-  }
-
-  h4 {
-    margin-top: 0px;
-  }
-
-  h2 {
-    margin-top: 10px;
-    font-size: 26px;
-    font-weight: 100;
-  }
-
-  p {
-    margin-top: 10px;
-
-    b {
-      font-weight: 700;
-    }
-  }
 
-  .update-log {
-    ol {
-      display: block;
-      list-style-type: decimal;
-      margin-block-start: 1em;
-      margin-block-end: 1em;
-      margin-inline-start: 0;
-      margin-inline-end: 0;
-      padding-inline-start: 40px;
-    }
-  }
-}
 </style>
 

+ 3 - 2
ruoyi-ui-vue3/src/views/login.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="login">
     <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
-      <h3 class="title">RuoYi-Vue-Plus后台管理系统</h3>
+      <h3 class="title">物联网平台</h3>
       <el-form-item prop="username">
         <el-input
           v-model="loginForm.username"
@@ -59,7 +59,7 @@
     </el-form>
     <!--  底部  -->
     <div class="el-login-footer">
-      <span>Copyright © 2018-2023 疯狂的狮子Li All Rights Reserved.</span>
+      <span>Copyright © {{ moment().format("yyyy") }} crj All Rights Reserved.</span>
     </div>
   </div>
 </template>
@@ -69,6 +69,7 @@ import { getCodeImg } from "@/api/login";
 import Cookies from "js-cookie";
 import { encrypt, decrypt } from "@/utils/jsencrypt";
 import useUserStore from '@/store/modules/user'
+import moment from 'moment'
 
 const userStore = useUserStore()
 const router = useRouter();

+ 1 - 1
ruoyi-ui-vue3/src/views/register.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="register">
     <el-form ref="registerRef" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">RuoYi-Vue-Plus后台管理系统</h3>
+      <h3 class="title">物联网平台</h3>
       <el-form-item prop="username">
         <el-input
           v-model="registerForm.username"

+ 134 - 0
ruoyi-ui-vue3/src/views/system/devicecode/index.vue

@@ -0,0 +1,134 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-card class="box-card">
+      <template #header>
+        <div class="card-header">
+          <span>设备编码管理</span>
+
+          <el-button
+            type="primary"
+            @click="
+              detailshow = true;
+              edittype = 1;
+            "
+            >添加</el-button
+          >
+        </div>
+      </template>
+      <el-row>
+
+        <el-col :span="24" style="padding-left: 10px">
+          <el-table :data="dwtabledata" :border="true" :height="gettbheight()">
+            <el-table-column label="名称"></el-table-column>
+            <el-table-column label="设备"></el-table-column>
+            <el-table-column label="编码前缀"></el-table-column>
+            <el-table-column label="编码序号规则"></el-table-column>
+            <el-table-column label="备注"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="scope">
+                <div>
+                  <el-button
+                    link
+                    @click="
+                      detailshow = true;
+                      edittype = 2;
+                    "
+                  >
+                    <el-tooltip effect="dark" content="编辑">
+                      <el-icon>
+                        <Edit />
+                      </el-icon>
+                    </el-tooltip>
+                  </el-button>
+                  <el-popconfirm title="确定删除该编码?">
+                    <template #reference>
+                      <el-button link
+                        ><el-tooltip effect="dark" content="删除"
+                          ><el-icon><Delete /></el-icon></el-tooltip
+                      ></el-button>
+                    </template>
+                  </el-popconfirm>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <el-dialog
+      :title="`${edittype == 1 ? '新增' : edittype == 2 ? '编辑' : '查看'}设备编码`"
+      v-model="detailshow"
+    >
+      <el-form  :model="dwform" label-width="120px">
+        <el-form-item label="名称">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="设备">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+         <el-form-item label="编码前缀">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+         <el-form-item label="编码序号规则">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="备注">
+          <el-input type="textarea" v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+      <div class="dialog-footer">
+         <el-button @click="detailshow=false;"> 取消 </el-button>
+          <el-button type="primary" @click="dosavedw"> 保存 </el-button>
+      </div>
+    </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import { ref } from "vue";
+
+const dwtypetabledata = ref([]);
+const dwtabledata = ref([1,1,1,1,1,1]);
+
+const edittype = ref(1);
+const detailshow = ref(false);
+
+const dwform = ref({
+  id: 0,
+  name: "",
+  unitSymbol: "",
+  unitName: "",
+  isStandard: "",
+  unitType: "",
+  toStandardRatio: 0,
+  toOffset: 0,
+  remark: "",
+  creator: "",
+  ctime: "",
+  modifier: "",
+  utime: "",
+});
+
+const gettbheight = () => {
+
+  return window.innerHeight - 200;
+}
+
+const dosavedw = () => {
+
+  detailshow.value = false;
+
+};
+
+</script>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+</style>

+ 126 - 0
ruoyi-ui-vue3/src/views/system/devicetag/index.vue

@@ -0,0 +1,126 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-card class="box-card">
+      <template #header>
+        <div class="card-header">
+          <span>设备标签管理</span>
+
+          <el-button
+            type="primary"
+            @click="
+              detailshow = true;
+              edittype = 1;
+            "
+            >添加</el-button
+          >
+        </div>
+      </template>
+      <el-row>
+
+        <el-col :span="24" style="padding-left: 10px">
+          <el-table :data="dwtabledata" :border="true" :height="gettbheight()">
+            <el-table-column label="编码"></el-table-column>
+            <el-table-column label="名称"></el-table-column>
+            <el-table-column label="备注"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="scope">
+                <div>
+                  <el-button
+                    link
+                    @click="
+                      detailshow = true;
+                      edittype = 2;
+                    "
+                  >
+                    <el-tooltip effect="dark" content="编辑">
+                      <el-icon>
+                        <Edit />
+                      </el-icon>
+                    </el-tooltip>
+                  </el-button>
+                  <el-popconfirm title="确定删除该标签?">
+                    <template #reference>
+                      <el-button link
+                        ><el-tooltip effect="dark" content="删除"
+                          ><el-icon><Delete /></el-icon></el-tooltip
+                      ></el-button>
+                    </template>
+                  </el-popconfirm>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <el-dialog
+      :title="`${edittype == 1 ? '新增' : edittype == 2 ? '编辑' : '查看'}设备标签`"
+      v-model="detailshow"
+    >
+      <el-form  :model="dwform" label-width="120px">
+        <el-form-item label="编码">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="名称">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="备注">
+          <el-input type="textarea" v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+      <div class="dialog-footer">
+         <el-button @click="detailshow=false;"> 取消 </el-button>
+          <el-button type="primary" @click="dosavedw"> 保存 </el-button>
+      </div>
+    </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import { ref } from "vue";
+
+const dwtypetabledata = ref([]);
+const dwtabledata = ref([1,1,1,1,1,1]);
+
+const edittype = ref(1);
+const detailshow = ref(false);
+
+const dwform = ref({
+  id: 0,
+  name: "",
+  unitSymbol: "",
+  unitName: "",
+  isStandard: "",
+  unitType: "",
+  toStandardRatio: 0,
+  toOffset: 0,
+  remark: "",
+  creator: "",
+  ctime: "",
+  modifier: "",
+  utime: "",
+});
+
+const gettbheight = () => {
+
+  return window.innerHeight - 200;
+}
+
+const dosavedw = () => {
+
+  detailshow.value = false;
+
+};
+
+</script>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+</style>

+ 159 - 0
ruoyi-ui-vue3/src/views/system/units/index.vue

@@ -0,0 +1,159 @@
+<template>
+  <div style="padding: 10px 15px">
+    <el-card class="box-card">
+      <template #header>
+        <div class="card-header">
+          <span>单位管理</span>
+
+          <el-button
+            type="primary"
+            @click="
+              detailshow = true;
+              edittype = 1;
+            "
+            >添加</el-button
+          >
+        </div>
+      </template>
+      <el-row>
+        <el-col :span="8">
+          <el-table :data="dwtypetabledata" :border="true">
+            <el-table-column label="单位名称"></el-table-column>
+          </el-table>
+        </el-col>
+        <el-col :span="16" style="padding-left: 10px">
+          <el-table :data="dwtabledata" :border="true" :height="gettbheight()">
+            <el-table-column label="名称"></el-table-column>
+            <el-table-column label="单位符号"></el-table-column>
+            <el-table-column label="单位名称"></el-table-column>
+            <el-table-column label="标准名称"></el-table-column>
+            <el-table-column label="单位分类"></el-table-column>
+            <el-table-column label="单位换算比例"></el-table-column>
+            <el-table-column label="偏移量"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="scope">
+                <div>
+                  <el-button
+                    link
+                    @click="
+                      detailshow = true;
+                      edittype = 3;
+                    "
+                  >
+                    <el-tooltip effect="dark" content="详情">
+                      <el-icon>
+                        <Memo />
+                      </el-icon>
+                    </el-tooltip>
+                  </el-button>
+                  <el-button
+                    link
+                    @click="
+                      detailshow = true;
+                      edittype = 2;
+                    "
+                  >
+                    <el-tooltip effect="dark" content="编辑">
+                      <el-icon>
+                        <Edit />
+                      </el-icon>
+                    </el-tooltip>
+                  </el-button>
+                  <el-popconfirm title="确定删除该单位?">
+                    <template #reference>
+                      <el-button link
+                        ><el-tooltip effect="dark" content="删除"
+                          ><el-icon><Delete /></el-icon></el-tooltip
+                      ></el-button>
+                    </template>
+                  </el-popconfirm>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <el-dialog
+      :title="`${edittype == 1 ? '新增' : edittype == 2 ? '编辑' : '查看'}单位`"
+      v-model="detailshow"
+    >
+      <el-form :inline="true" :model="dwform" label-width="120px">
+        <el-form-item label="名称">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="单位符号">
+          <el-input v-model="dwform.name"  :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="单位名称">
+          <el-input v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="标准名称">
+          <el-input v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="单位分类">
+          <el-input v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="换算比例">
+          <el-input v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+        <el-form-item label="偏移量">
+          <el-input v-model="dwform.name" :disabled="edittype==3"/>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+      <div class="dialog-footer">
+         <el-button @click="detailshow=false;"> 取消 </el-button>
+          <el-button type="primary" @click="dosavedw"> 保存 </el-button>
+      </div>
+    </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup lang="ts" name="Units">
+import { ref } from "vue";
+
+const dwtypetabledata = ref([]);
+const dwtabledata = ref([1,1,1,1,1,1]);
+
+const edittype = ref(1);
+const detailshow = ref(false);
+
+const dwform = ref({
+  id: 0,
+  name: "",
+  unitSymbol: "",
+  unitName: "",
+  isStandard: "",
+  unitType: "",
+  toStandardRatio: 0,
+  toOffset: 0,
+  remark: "",
+  creator: "",
+  ctime: "",
+  modifier: "",
+  utime: "",
+});
+
+const gettbheight = () => {
+
+  return window.innerHeight - 200;
+}
+
+const dosavedw = () => {
+
+  detailshow.value = false;
+
+};
+
+</script>
+
+<style lang="scss" scoped>
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+</style>

+ 2 - 3
ruoyi-ui-vue3/vite.config.js

@@ -24,14 +24,13 @@ export default defineConfig(({ mode, command }) => {
     },
     // vite 相关配置
     server: {
-      port: 80,
+      // port: 80,
       host: true,
       open: true,
       proxy: {
         // https://cn.vitejs.dev/config/#server-proxy
         '/dev-api': {
-          // target: 'http://localhost:8080',
-          target: 'http://localhost:8088',
+          target: 'http://localhost:8989',
           changeOrigin: true,
           rewrite: (p) => p.replace(/^\/dev-api/, '')
         }

BIN
功能详情解析 IoT平台开发.docx


BIN
物联网IOT平台详细设计(1).docx


BIN
软件需求.docx


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików