wenhongquan hace 6 meses
padre
commit
7915779232

+ 9 - 1
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/MqttServiceImpl.java

@@ -214,7 +214,15 @@ public class MqttServiceImpl implements MqttService {
                                             topic = StrUtil.replace(topic, "$protocolType$", finalProtocolType);
                                             topic = StrUtil.replace(topic, "$sensorId$", tblSensor.getId().toString());
                                             try {
-                                                mqttConnect.pub(topic, mqttstr.toString(), (Integer) p.get("qos"));
+                                                int qos = 0 ;
+                                                try{
+                                                    qos = Integer.parseInt(p.getStr("qos"));
+                                                }catch (Exception e){
+                                                    qos = 0;
+                                                }
+
+
+                                                mqttConnect.pub(topic, mqttstr.toString(), qos);
                                             } catch (MqttException e) {
                                                 log.error(topic);
                                                 log.error(obj.getServerAddress());

+ 1 - 1
ruoyi-ui-vue3/README.md

@@ -27,7 +27,7 @@ npm run dev
 ## 内置功能
 
 1.  用户管理:用户是系统操作者,该功能主要完成系统用户配置。
-2.  部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
+2.  组织机构管理:配置系统组织机构(公司、组织机构、小组),树结构展现支持数据权限。
 3.  岗位管理:配置系统用户所属担任职务。
 4.  菜单管理:配置系统菜单,操作权限,按钮权限标识等。
 5.  角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。

+ 6 - 6
ruoyi-ui-vue3/src/api/system/dept.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询部门列表
+// 查询组织机构列表
 export function listDept(query) {
   return request({
     url: '/system/dept/list',
@@ -9,7 +9,7 @@ export function listDept(query) {
   })
 }
 
-// 查询部门列表(排除节点)
+// 查询组织机构列表(排除节点)
 export function listDeptExcludeChild(deptId) {
   return request({
     url: '/system/dept/list/exclude/' + deptId,
@@ -17,7 +17,7 @@ export function listDeptExcludeChild(deptId) {
   })
 }
 
-// 查询部门详细
+// 查询组织机构详细
 export function getDept(deptId) {
   return request({
     url: '/system/dept/' + deptId,
@@ -25,7 +25,7 @@ export function getDept(deptId) {
   })
 }
 
-// 新增部门
+// 新增组织机构
 export function addDept(data) {
   return request({
     url: '/system/dept',
@@ -34,7 +34,7 @@ export function addDept(data) {
   })
 }
 
-// 修改部门
+// 修改组织机构
 export function updateDept(data) {
   return request({
     url: '/system/dept',
@@ -43,7 +43,7 @@ export function updateDept(data) {
   })
 }
 
-// 删除部门
+// 删除组织机构
 export function delDept(deptId) {
   return request({
     url: '/system/dept/' + deptId,

+ 1 - 1
ruoyi-ui-vue3/src/api/system/role.js

@@ -110,7 +110,7 @@ export function authUserSelectAll(data) {
   })
 }
 
-// 根据角色ID查询部门树结构
+// 根据角色ID查询组织机构树结构
 export function deptTreeSelect(roleId) {
   return request({
     url: '/system/role/deptTree/' + roleId,

+ 1 - 1
ruoyi-ui-vue3/src/api/system/user.js

@@ -126,7 +126,7 @@ export function updateAuthRole(data) {
   })
 }
 
-// 查询部门下拉树结构
+// 查询组织机构下拉树结构
 export function deptTreeSelect() {
   return request({
     url: '/system/user/deptTree',

+ 4 - 4
ruoyi-ui-vue3/src/views/demo/demo/index.vue

@@ -91,7 +91,7 @@
     <el-table v-loading="loading" :data="demoList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="主键" align="center" prop="id" v-if="columns[0].visible"/>
-      <el-table-column label="部门id" align="center" prop="deptId" v-if="columns[1].visible"/>
+      <el-table-column label="组织机构id" align="center" prop="deptId" v-if="columns[1].visible"/>
       <el-table-column label="用户id" align="center" prop="userId" v-if="columns[2].visible"/>
       <el-table-column label="排序号" align="center" prop="orderNum" v-if="columns[3].visible"/>
       <el-table-column label="key键" align="center" prop="testKey" v-if="columns[4].visible"/>
@@ -127,8 +127,8 @@
     <!-- 添加或修改测试单表对话框 -->
     <el-dialog :title="title" v-model="open" width="500px" append-to-body>
       <el-form ref="demoRef" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="部门id" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入部门id" />
+        <el-form-item label="组织机构id" prop="deptId">
+          <el-input v-model="form.deptId" placeholder="请输入组织机构id" />
         </el-form-item>
         <el-form-item label="用户id" prop="userId">
           <el-input v-model="form.userId" placeholder="请输入用户id" />
@@ -218,7 +218,7 @@ const upload = reactive({
 // 列显隐信息
 const columns = ref([
   { key: 0, label: `主键`, visible: false },
-  { key: 1, label: `部门id`, visible: true },
+  { key: 1, label: `组织机构id`, visible: true },
   { key: 2, label: `用户id`, visible: true },
   { key: 3, label: `排序号`, visible: true },
   { key: 4, label: `key键`, visible: true },

+ 5 - 5
ruoyi-ui-vue3/src/views/demo/tree/index.vue

@@ -57,7 +57,7 @@
       :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
     >
       <el-table-column label="父id" prop="parentId" v-if="columns[0].visible" />
-      <el-table-column label="部门id" align="center" prop="deptId" v-if="columns[1].visible" />
+      <el-table-column label="组织机构id" align="center" prop="deptId" v-if="columns[1].visible" />
       <el-table-column label="用户id" align="center" prop="userId" v-if="columns[2].visible" />
       <el-table-column label="树节点名" align="center" prop="treeName" v-if="columns[3].visible" />
       <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[4].visible" width="180">
@@ -85,8 +85,8 @@
               placeholder="请选择父id"
           />
         </el-form-item>
-        <el-form-item label="部门id" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入部门id" />
+        <el-form-item label="组织机构id" prop="deptId">
+          <el-input v-model="form.deptId" placeholder="请输入组织机构id" />
         </el-form-item>
         <el-form-item label="用户id" prop="userId">
           <el-input v-model="form.userId" placeholder="请输入用户id" />
@@ -127,7 +127,7 @@ const daterangeCreateTime = ref([]);
 // 列显隐信息
 const columns = ref([
   { key: 0, label: `父id`, visible: false },
-  { key: 1, label: `部门id`, visible: true },
+  { key: 1, label: `组织机构id`, visible: true },
   { key: 2, label: `用户id`, visible: true },
   { key: 3, label: `树节点名`, visible: true },
   { key: 4, label: `创建时间`, visible: true }
@@ -160,7 +160,7 @@ function getList() {
     loading.value = false;
   });
 }
-/** 查询部门下拉树结构 */
+/** 查询组织机构下拉树结构 */
 async function getTreeselect() {
   await listTree().then(response => {
     treeOptions.value = [];

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

@@ -687,6 +687,10 @@ const getalldata = () => {
       });
     });
   } else {
+    ElMessage({
+      message: "请选择左侧传感器所属设备",
+      type: "warning",
+    });
     pagedata.value = { total: 0, pageNum: 1, pageSize: 10 };
     devicetabledata.value = [];
   }
@@ -711,6 +715,13 @@ const getTreedata = () => {
         rows.push(item);
         data.value = proxy.handleTree(rows, "id", "parentId");
       });
+      // 初始化默认选中第一个节点
+      if (data.value && data.value.length > 0) {
+        currentnode.value = data.value[0];
+        selectedKey.value = data.value[0].id;
+        // 触发数据加载
+        getalldata();
+      }
     });
   });
 };

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

@@ -37,7 +37,7 @@
          </el-table-column>
          <el-table-column label="会话编号" align="center" prop="tokenId" :show-overflow-tooltip="true" />
          <el-table-column label="登录名称" align="center" prop="userName" :show-overflow-tooltip="true" />
-         <el-table-column label="所属部门" align="center" prop="deptName" :show-overflow-tooltip="true" />
+         <el-table-column label="所属组织机构" align="center" prop="deptName" :show-overflow-tooltip="true" />
          <el-table-column label="主机" align="center" prop="ipaddr" :show-overflow-tooltip="true" />
          <el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
          <el-table-column label="操作系统" align="center" prop="os" :show-overflow-tooltip="true" />

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

@@ -118,7 +118,7 @@
          </el-table-column>
          <el-table-column label="请求方式" align="center" prop="requestMethod" />
          <el-table-column label="操作人员" align="center" width="110" prop="operName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
-         <el-table-column label="部门" align="center" prop="deptName" width="130" :show-overflow-tooltip="true" />
+         <el-table-column label="组织机构" align="center" prop="deptName" width="130" :show-overflow-tooltip="true" />
          <el-table-column label="操作地址" align="center" prop="operIp" width="130" :show-overflow-tooltip="true" />
          <el-table-column label="操作地点" align="center" prop="operLocation" :show-overflow-tooltip="true" />
         <el-table-column label="操作状态" align="center" prop="status">

+ 22 - 2
ruoyi-ui-vue3/src/views/rules/index.vue

@@ -26,7 +26,7 @@
           <span>规则定义-告警模板</span>
           <div>
             <el-button type="primary" @click="goadd">添加</el-button>
-            <el-button type="danger">批量删除</el-button>
+            <el-button type="danger" @click="batchdel">批量删除</el-button>
             <el-button type="primary" plain @click="ziduanshow = true">显示字段</el-button>
           </div>
         </div>
@@ -34,7 +34,7 @@
       <div>
         <el-row>
           <el-col :span="24">
-            <el-table :data="tabledata" border>
+            <el-table :data="tabledata" border @selection-change="handleSelectionChange">
               <el-table-column type="selection" width="55" />
               <el-table-column v-for="item in cloumdata.filter(i => i.visible)" :prop="item.prop"
                 :label="item.label"></el-table-column>
@@ -122,6 +122,26 @@ const goadd = () => {
   router.push("/rules/add")
 }
 
+const selectids = ref([])
+/** 多选框选中数据 */
+const handleSelectionChange = (selection:any) => {
+  selectids.value = selection.map(item => item.id);
+}
+
+const batchdel = () => {
+  var arr = [];
+  selectids.value.forEach(item => {
+      arr.push(item);
+  });
+  if (arr.length > 0) {
+    delRule(arr).then(res => {
+      if (res.code == 200) {
+        getalldata();
+      }
+    });
+  }
+}
+
 const goupdate = (item) => {
   router.push({ path: '/rules/add', query: { id: item.id } })
 }

+ 15 - 15
ruoyi-ui-vue3/src/views/system/dept/index.vue

@@ -1,17 +1,17 @@
 <template>
    <div class="app-container">
       <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
-         <el-form-item label="部门名称" prop="deptName">
+         <el-form-item label="组织机构名称" prop="deptName">
             <el-input
                v-model="queryParams.deptName"
-               placeholder="请输入部门名称"
+               placeholder="请输入组织机构名称"
                clearable
                style="width: 200px"
                @keyup.enter="handleQuery"
             />
          </el-form-item>
          <el-form-item label="状态" prop="status">
-            <el-select v-model="queryParams.status" placeholder="部门状态" clearable style="width: 200px">
+            <el-select v-model="queryParams.status" placeholder="组织机构状态" clearable style="width: 200px">
                <el-option
                   v-for="dict in sys_normal_disable"
                   :key="dict.value"
@@ -55,7 +55,7 @@
          :default-expand-all="isExpandAll"
          :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
       >
-         <el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
+         <el-table-column prop="deptName" label="组织机构名称" width="260"></el-table-column>
          <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>
          <el-table-column prop="status" label="状态" width="100">
             <template #default="scope">
@@ -76,25 +76,25 @@
          </el-table-column>
       </el-table>
 
-      <!-- 添加或修改部门对话框 -->
+      <!-- 添加或修改组织机构对话框 -->
       <el-dialog :title="title" v-model="open" width="600px" append-to-body>
          <el-form ref="deptRef" :model="form" :rules="rules" label-width="80px">
             <el-row>
                <el-col :span="24" v-if="form.parentId !== 0">
-                  <el-form-item label="上级部门" prop="parentId">
+                  <el-form-item label="上级组织机构" prop="parentId">
                      <el-tree-select
                         v-model="form.parentId"
                         :data="deptOptions"
                         :props="{ value: 'deptId', label: 'deptName', children: 'children' }"
                         value-key="deptId"
-                        placeholder="选择上级部门"
+                        placeholder="选择上级组织机构"
                         check-strictly
                      />
                   </el-form-item>
                </el-col>
                <el-col :span="12">
-                  <el-form-item label="部门名称" prop="deptName">
-                     <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+                  <el-form-item label="组织机构名称" prop="deptName">
+                     <el-input v-model="form.deptName" placeholder="请输入组织机构名称" />
                   </el-form-item>
                </el-col>
                <el-col :span="12">
@@ -118,7 +118,7 @@
                   </el-form-item>
                </el-col>
                <el-col :span="12">
-                  <el-form-item label="部门状态">
+                  <el-form-item label="组织机构状态">
                      <el-radio-group v-model="form.status">
                         <el-radio
                            v-for="dict in sys_normal_disable"
@@ -162,8 +162,8 @@ const data = reactive({
     status: undefined
   },
   rules: {
-    parentId: [{ required: true, message: "上级部门不能为空", trigger: "blur" }],
-    deptName: [{ required: true, message: "部门名称不能为空", trigger: "blur" }],
+    parentId: [{ required: true, message: "上级组织机构不能为空", trigger: "blur" }],
+    deptName: [{ required: true, message: "组织机构名称不能为空", trigger: "blur" }],
     orderNum: [{ required: true, message: "显示排序不能为空", trigger: "blur" }],
     email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
     phone: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
@@ -172,7 +172,7 @@ const data = reactive({
 
 const { queryParams, form, rules } = toRefs(data);
 
-/** 查询部门列表 */
+/** 查询组织机构列表 */
 function getList() {
   loading.value = true;
   listDept(queryParams.value).then(response => {
@@ -218,7 +218,7 @@ function handleAdd(row) {
     form.value.parentId = row.deptId;
   }
   open.value = true;
-  title.value = "添加部门";
+  title.value = "添加组织机构";
 }
 /** 展开/折叠操作 */
 function toggleExpandAll() {
@@ -234,7 +234,7 @@ function handleUpdate(row) {
   getDept(row.deptId).then(response => {
     form.value = response.data;
     open.value = true;
-    title.value = "修改部门";
+    title.value = "修改组织机构";
     listDeptExcludeChild(row.deptId).then(response => {
       deptOptions.value = proxy.handleTree(response.data, "deptId");
       if (deptOptions.value.length == 0) {

+ 6 - 6
ruoyi-ui-vue3/src/views/system/role/index.vue

@@ -222,8 +222,8 @@ const deptRef = ref(null);
 const dataScopeOptions = ref([
   { value: "1", label: "全部数据权限" },
   { value: "2", label: "自定数据权限" },
-  { value: "3", label: "本部门数据权限" },
-  { value: "4", label: "本部门及以下数据权限" },
+  { value: "3", label: "本组织机构数据权限" },
+  { value: "4", label: "本组织机构及以下数据权限" },
   { value: "5", label: "仅本人数据权限" }
 ]);
 
@@ -332,11 +332,11 @@ function getMenuTreeselect() {
     menuOptions.value = response.data;
   });
 }
-/** 所有部门节点数据 */
+/** 所有组织机构节点数据 */
 function getDeptAllCheckedKeys() {
-  // 目前被选中的部门节点
+  // 目前被选中的组织机构节点
   let checkedKeys = deptRef.value.getCheckedKeys();
-  // 半选中的部门节点
+  // 半选中的组织机构节点
   let halfCheckedKeys = deptRef.value.getHalfCheckedKeys();
   checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
   return checkedKeys;
@@ -409,7 +409,7 @@ function getRoleMenuTreeselect(roleId) {
     return response;
   });
 }
-/** 根据角色ID查询部门树结构 */
+/** 根据角色ID查询组织机构树结构 */
 function getDeptTree(roleId) {
   return deptTreeSelect(roleId).then(response => {
     deptOptions.value = response.data.depts;

+ 8 - 8
ruoyi-ui-vue3/src/views/system/user/index.vue

@@ -1,12 +1,12 @@
 <template>
    <div class="app-container">
       <el-row :gutter="20">
-         <!--部门数据-->
+         <!--组织机构数据-->
          <el-col :span="4" :xs="24">
             <div class="head-container">
                <el-input
                   v-model="deptName"
-                  placeholder="请输入部门名称"
+                  placeholder="请输入组织机构名称"
                   clearable
                   prefix-icon="Search"
                   style="margin-bottom: 20px"
@@ -135,7 +135,7 @@
                <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
                <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
                <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
-               <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
+               <el-table-column label="组织机构" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
                <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
                <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
                   <template #default="scope">
@@ -189,13 +189,13 @@
                   </el-form-item>
                </el-col>
                <el-col :span="12">
-                  <el-form-item label="归属部门" prop="deptId">
+                  <el-form-item label="归属组织机构" prop="deptId">
                      <el-tree-select
                         v-model="form.deptId"
                         :data="deptOptions"
                         :props="{ value: 'id', label: 'label', children: 'children' }"
                         value-key="id"
-                        placeholder="请选择归属部门"
+                        placeholder="请选择归属组织机构"
                         check-strictly
                      />
                   </el-form-item>
@@ -396,7 +396,7 @@ const columns = ref([
   { key: 0, label: `用户编号`, visible: true },
   { key: 1, label: `用户名称`, visible: true },
   { key: 2, label: `用户昵称`, visible: true },
-  { key: 3, label: `部门`, visible: true },
+  { key: 3, label: `组织机构`, visible: true },
   { key: 4, label: `手机号码`, visible: true },
   { key: 5, label: `状态`, visible: true },
   { key: 6, label: `创建时间`, visible: true }
@@ -428,11 +428,11 @@ const filterNode = (value, data) => {
   if (!value) return true;
   return data.label.indexOf(value) !== -1;
 };
-/** 根据名称筛选部门树 */
+/** 根据名称筛选组织机构树 */
 watch(deptName, val => {
   proxy.$refs["deptTreeRef"].filter(val);
 });
-/** 查询部门下拉树结构 */
+/** 查询组织机构下拉树结构 */
 function getDeptTree() {
   deptTreeSelect().then(response => {
     deptOptions.value = response.data;

+ 1 - 1
ruoyi-ui-vue3/src/views/system/user/profile/index.vue

@@ -26,7 +26,7 @@
                         <div class="pull-right">{{ state.user.email }}</div>
                      </li>
                      <li class="list-group-item">
-                        <svg-icon icon-class="tree" />所属部门
+                        <svg-icon icon-class="tree" />所属组织机构
                         <div class="pull-right" v-if="state.user.dept">{{ state.user.dept.deptName }} / {{ state.postGroup }}</div>
                      </li>
                      <li class="list-group-item">

+ 6 - 6
ruoyi-ui-vue3/src/views/warnRole/index.vue

@@ -188,8 +188,8 @@ const warnvalue = ref([])
 const dataScopeOptions = ref([
   { value: "1", label: "全部数据权限" },
   { value: "2", label: "自定数据权限" },
-  { value: "3", label: "本部门数据权限" },
-  { value: "4", label: "本部门及以下数据权限" },
+  { value: "3", label: "本组织机构数据权限" },
+  { value: "4", label: "本组织机构及以下数据权限" },
   { value: "5", label: "仅本人数据权限" }
 ]);
 
@@ -301,11 +301,11 @@ function getMenuTreeselect() {
     menuOptions.value = response.data;
   });
 }
-/** 所有部门节点数据 */
+/** 所有组织机构节点数据 */
 function getDeptAllCheckedKeys() {
-  // 目前被选中的部门节点
+  // 目前被选中的组织机构节点
   let checkedKeys = deptRef.value.getCheckedKeys();
-  // 半选中的部门节点
+  // 半选中的组织机构节点
   let halfCheckedKeys = deptRef.value.getHalfCheckedKeys();
   checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
   return checkedKeys;
@@ -369,7 +369,7 @@ function getRoleMenuTreeselect(roleId) {
     return response;
   });
 }
-/** 根据角色ID查询部门树结构 */
+/** 根据角色ID查询组织机构树结构 */
 function getDeptTree(roleId) {
   return deptTreeSelect(roleId).then(response => {
     deptOptions.value = response.data.depts;

+ 1 - 1
ruoyi-ui-vue3/vite.config.js

@@ -30,7 +30,7 @@ export default defineConfig(({ mode, command }) => {
       proxy: {
         // https://cn.vitejs.dev/config/#server-proxy
         "/dev-api": {
-          target: "http://58.252.235.18:8084/iot/prod-api",
+          target: "https://183.234.23.34:8084/iot/prod-api",
           // target: "http://localhost:8989",
           changeOrigin: true,
           rewrite: (p) => p.replace(/^\/dev-api/, ""),