diff --git a/xiuosiot-frontend/src/api/rule/dataTransfer.js b/xiuosiot-frontend/src/api/rule/dataTransfer.js new file mode 100644 index 0000000..e9aa3a0 --- /dev/null +++ b/xiuosiot-frontend/src/api/rule/dataTransfer.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +export function getList(data) { + return request({ + url: '/alarmRule/selectAll', + method: 'get', + params: data || {} + }) +} + +export function executeSql(data) { + return request({ + url: '/dataForward/executeSql', + method: 'get', + params: data || {} + }) +} + +export function addRecord(data) { + return request({ + url: '/dataForward/addRecord', + method: 'post', + data + }) +} + diff --git a/xiuosiot-frontend/src/assets/images/dataAnalysisBg2.jpeg b/xiuosiot-frontend/src/assets/images/dataAnalysisBg2.jpeg new file mode 100644 index 0000000..e4b9782 Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/dataAnalysisBg2.jpeg differ diff --git a/xiuosiot-frontend/src/layout/index.vue b/xiuosiot-frontend/src/layout/index.vue index 5ed1196..4adc4a9 100644 --- a/xiuosiot-frontend/src/layout/index.vue +++ b/xiuosiot-frontend/src/layout/index.vue @@ -48,7 +48,7 @@ export default { } }, showBreadcrumb() { - const whiteList = ['overview', 'terminal/add', 'terminal/plc', 'data/value', 'configuration/development', 'dashboard', 'log/accessLog'] + const whiteList = ['overview', 'terminal/add', 'terminal/plc', 'data/value', 'configuration/development', 'dashboard', 'log/accessLog', 'log/systemLog', 'rule/manage', 'rule/dataTransfer'] return whiteList.every((item) => this.$route.path.indexOf(item) === -1) } }, diff --git a/xiuosiot-frontend/src/router/index.js b/xiuosiot-frontend/src/router/index.js index ec0a666..fe95ef1 100644 --- a/xiuosiot-frontend/src/router/index.js +++ b/xiuosiot-frontend/src/router/index.js @@ -116,22 +116,26 @@ export const constantRoutes = [ meta: { title: '概览', icon: 'overview' } }] }, + { path: '*', redirect: '/404', hidden: true } +] + +export const asyncRouter = [ { path: '/dashboard', component: Layout, - meta: {}, + meta: { permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] }, children: [{ path: '', name: 'Dashboard', component: () => import('@/views/dashboard/index'), - meta: { title: '设备看板', icon: 'dashboard' } + meta: { title: '设备看板', icon: 'dashboard', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } }] }, { path: '/terminal', component: Layout, name: 'Terminal', - meta: { title: '设备管理', icon: 'terminal' }, + meta: { title: '设备管理', icon: 'terminal', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi', 'jiangxishida'] }, children: [ // { // path: 'product', @@ -143,37 +147,43 @@ export const constantRoutes = [ path: 'add', name: 'Add', component: () => import('@/views/terminal/add/index'), - meta: { title: '设备新增' } + meta: { title: '设备新增', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } }, { path: 'center', name: 'Center', component: () => import('@/views/terminal/center/index'), - meta: { title: '设备参数' } + meta: { title: '设备参数', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } }, { path: 'monitor', name: 'Monitor', component: () => import('@/views/terminal/monitor/index'), - meta: { title: '设备监控' } + meta: { title: '设备监控', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } }, { path: 'alarm', name: 'Alarm', component: () => import('@/views/terminal/alarm/index'), - meta: { title: '设备告警' } + meta: { title: '设备告警', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } }, { path: 'plc', name: 'PLC', component: () => import('@/views/terminal/PLC/index'), - meta: { title: 'PLC管理' } + meta: { title: 'PLC管理', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } + }, + { + path: 'plcMonitor', + name: 'PLCMonitor', + component: () => import('@/views/terminal/PLC/monitor'), + meta: { title: 'PLC实时监控', permission: ['jiangxishida'] } }, { path: 'ota', name: 'OTA', component: () => import('@/views/terminal/OTA/index'), - meta: { title: 'OTA升级', disabled: true } + meta: { title: 'OTA升级', disabled: true, permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } } ] }, @@ -181,7 +191,7 @@ export const constantRoutes = [ path: '/rule', component: Layout, name: 'Rule', - meta: { title: '规则引擎', icon: 'rule' }, + meta: { title: '规则引擎', icon: 'rule', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] }, children: [ { path: 'manage', @@ -190,10 +200,10 @@ export const constantRoutes = [ meta: { title: '规则管理' } }, { - path: 'message', - name: 'Message', - // component: () => import('@/views/terminal/add/index'), - meta: { title: '数据转发', disabled: true } + path: 'dataTransfer', + name: 'DataTransfer', + component: () => import('@/views/rule/dataTransfer/index'), + meta: { title: '数据转发' } } ] }, @@ -233,13 +243,13 @@ export const constantRoutes = [ path: '/configureApp', component: Layout, name: 'configureApp', - meta: { title: '组态应用', icon: 'configuration', disabled: true } + meta: { title: '组态应用', icon: 'configuration', disabled: true, permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } }, { path: '/log', component: Layout, name: 'Log', - meta: { title: '日志管理', icon: 'log' }, + meta: { title: '日志管理', icon: 'log', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] }, children: [ { path: 'accessLog', @@ -255,35 +265,38 @@ export const constantRoutes = [ } ] }, - { path: '*', redirect: '/404', hidden: true } -] - -export const asyncRouter = [{ - path: '/data', - component: Layout, - name: 'Data', - meta: { title: '数据管理', icon: 'data', permission: ['dashengda'] }, - children: [ - { - path: 'realTime', - name: 'RealTime', - component: () => import('@/views/data/realTime/index'), - meta: { title: '实时数据', permission: ['dashengda'] } - }, - { - path: 'history', - name: 'History', - component: () => import('@/views/data/history/index'), - meta: { title: '历史数据', permission: ['dashengda'] } - }, - { - path: 'value', - name: 'Value', - component: () => import('@/views/data/value/index'), - meta: { title: '数据价值', permission: ['dashengda'] } - } - ] -}] + { + path: '/data', + component: Layout, + name: 'Data', + meta: { title: '数据管理', icon: 'data', permission: ['dashengda', 'qianjiangdianqi'] }, + children: [ + { + path: 'realTime', + name: 'RealTime', + component: () => import('@/views/data/realTime/index'), + meta: { title: '实时数据', permission: ['dashengda'] } + }, + { + path: 'history', + name: 'History', + component: () => import('@/views/data/history/index'), + meta: { title: '历史数据', permission: ['dashengda'] } + }, + { + path: 'qjdq/history', + name: 'QJDQHistory', + component: () => import('@/views/data/history/qianjiang'), + meta: { title: '历史数据', permission: ['qianjiangdianqi'] } + }, + { + path: 'value', + name: 'Value', + component: () => import('@/views/data/value/index'), + meta: { title: '数据价值', permission: ['dashengda'] } + } + ] + }] const createRouter = () => new Router({ mode: 'history', // require service support diff --git a/xiuosiot-frontend/src/utils/request.js b/xiuosiot-frontend/src/utils/request.js index e07e91e..f4cfcaf 100644 --- a/xiuosiot-frontend/src/utils/request.js +++ b/xiuosiot-frontend/src/utils/request.js @@ -2,7 +2,7 @@ * @Author: 龚祖望 573413756@qq.com * @Date: 2022-05-16 09:16:41 * @LastEditors: 龚祖望 573413756@qq.com - * @LastEditTime: 2022-09-01 20:13:59 + * @LastEditTime: 2022-11-10 15:09:14 * @FilePath: \dashengda\src\utils\request.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -16,7 +16,7 @@ import { method } from 'lodash' const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url // withCredentials: true, // send cookies when cross-domain requests - timeout: 5000, // request timeout, + timeout: 10000, // request timeout, headers: { 'Content-Type': 'application/json;charset=UTF-8' } diff --git a/xiuosiot-frontend/src/views/data/history/qianjiang.vue b/xiuosiot-frontend/src/views/data/history/qianjiang.vue new file mode 100644 index 0000000..7f7eade --- /dev/null +++ b/xiuosiot-frontend/src/views/data/history/qianjiang.vue @@ -0,0 +1,1198 @@ + + + + + diff --git a/xiuosiot-frontend/src/views/login/index.vue b/xiuosiot-frontend/src/views/login/index.vue index 97c2bc1..c8e76e3 100644 --- a/xiuosiot-frontend/src/views/login/index.vue +++ b/xiuosiot-frontend/src/views/login/index.vue @@ -114,8 +114,8 @@ export default { } return { loginForm: { - username: 'aiitxios', - password: 'xiosaiit', + username: 'jxsd', + password: 'jxsd', verifycode: '' }, loginRules: { diff --git a/xiuosiot-frontend/src/views/overview/index.vue b/xiuosiot-frontend/src/views/overview/index.vue index def0370..a5b92e3 100644 --- a/xiuosiot-frontend/src/views/overview/index.vue +++ b/xiuosiot-frontend/src/views/overview/index.vue @@ -2,7 +2,7 @@ * @Author: 龚祖望 573413756@qq.com * @Date: 2022-05-16 09:16:41 * @LastEditors: 龚祖望 573413756@qq.com - * @LastEditTime: 2022-10-09 15:42:31 + * @LastEditTime: 2022-11-11 11:07:15 * @FilePath: \dashengda\src\views\dashboard\index.vue * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE --> @@ -56,6 +56,10 @@ export default { this.slide1 = require('@/assets/images/hangxiao-slide1.png') this.slide2 = require('@/assets/images/hangxiao-slide2.png') break + case '江西师大': + this.slide1 = require('@/assets/images/hangxiao-slide1.png') + this.slide2 = require('@/assets/images/hangxiao-slide2.png') + break } }, mounted() { diff --git a/xiuosiot-frontend/src/views/rule/dataTransfer/index.vue b/xiuosiot-frontend/src/views/rule/dataTransfer/index.vue new file mode 100644 index 0000000..bd59db2 --- /dev/null +++ b/xiuosiot-frontend/src/views/rule/dataTransfer/index.vue @@ -0,0 +1,457 @@ + + + + + diff --git a/xiuosiot-frontend/src/views/rule/ruleManage/index.vue b/xiuosiot-frontend/src/views/rule/ruleManage/index.vue index 58a6cc4..7286665 100644 --- a/xiuosiot-frontend/src/views/rule/ruleManage/index.vue +++ b/xiuosiot-frontend/src/views/rule/ruleManage/index.vue @@ -650,6 +650,7 @@ export default { ::v-deep .el-button--primary { background-color: #789AF3; border-color: #789AF3; + border-radius: 20px; } .el-form-item{ span{ diff --git a/xiuosiot-frontend/src/views/terminal/PLC/monitor.vue b/xiuosiot-frontend/src/views/terminal/PLC/monitor.vue new file mode 100644 index 0000000..599e4ef --- /dev/null +++ b/xiuosiot-frontend/src/views/terminal/PLC/monitor.vue @@ -0,0 +1,344 @@ + + + diff --git a/xiuosiot-frontend/src/views/terminal/center/index.vue b/xiuosiot-frontend/src/views/terminal/center/index.vue index aeb3dea..a903212 100644 --- a/xiuosiot-frontend/src/views/terminal/center/index.vue +++ b/xiuosiot-frontend/src/views/terminal/center/index.vue @@ -139,118 +139,7 @@ import { getList } from '@/api/terminal/center' export default { data() { return { - deviceList: [ - { - productname: '彩印车间', - status: 1, - statusdesc: '运行', - type: 'M-168-Lora-FM100', - kernel: 'rt-thread kenel', - webversion: '1.0', - no: 'A000001', - ipaddr: '192.168.131.29', - netmask: '255.255.254.0', - gateway: '192.168.130.1', - dnsserver0: '10.0.110.21', - dnsserver1: '10.0.110.20', - topic: '/broadcast/hf6mzwdVnJg/989898', - serveraddr: 'zwdVnJg.iot-as-mqtt.cn-shanghai.aliyuncs.com', - serverport: '1883', - username: 'test1&hf6mzwdVnJg', - clientid: '123|securemode=3,signmethod=hmacsha1|', - privateserveraddr: '192.168.131.30', - privateserverport: '9898', - privateserverusername: 'admin' - }, - { - productname: '生产车间', - status: 0, - statusdesc: '待机', - type: 'M528-A800-5G-HM100', - kernel: 'rt-thread kenel', - webversion: '1.0', - no: 'A000002', - ipaddr: '192.168.131.29', - netmask: '255.255.254.0', - gateway: '192.168.130.1', - dnsserver0: '10.0.110.21', - dnsserver1: '10.0.110.20', - topic: '/broadcast/hf6mzwdVnJg/989898', - serveraddr: 'zwdVnJg.iot-as-mqtt.cn-shanghai.aliyuncs.com', - serverport: '1883', - username: 'test1&hf6mzwdVnJg', - clientid: '123|securemode=3,signmethod=hmacsha1|', - privateserveraddr: '192.168.131.30', - privateserverport: '9898', - privateserverusername: 'admin' - }, - { - productname: '成型车间', - status: 1, - statusdesc: '运行', - type: 'RV400-NPU4T-5G-SR100', - kernel: 'rt-thread kenel', - webversion: '1.0', - no: 'A000003', - ipaddr: '192.168.131.29', - netmask: '255.255.254.0', - gateway: '192.168.130.1', - dnsserver0: '10.0.110.21', - dnsserver1: '10.0.110.20', - topic: '/broadcast/hf6mzwdVnJg/989898', - serveraddr: 'zwdVnJg.iot-as-mqtt.cn-shanghai.aliyuncs.com', - serverport: '1883', - username: 'test1&hf6mzwdVnJg', - clientid: '123|securemode=3,signmethod=hmacsha1|', - privateserveraddr: '192.168.131.30', - privateserverport: '9898', - privateserverusername: 'admin' - }, - { - productname: '打包车间', - status: 2, - statusdesc: '警告', - type: 'RV400-NPU16T-5G-AR100', - kernel: 'rt-thread kenel', - webversion: '1.0', - no: 'A000004', - ipaddr: '192.168.131.29', - netmask: '255.255.254.0', - gateway: '192.168.130.1', - dnsserver0: '10.0.110.21', - dnsserver1: '10.0.110.20', - topic: '/broadcast/hf6mzwdVnJg/989898', - serveraddr: 'zwdVnJg.iot-as-mqtt.cn-shanghai.aliyuncs.com', - serverport: '1883', - username: 'test1&hf6mzwdVnJg', - clientid: '123|securemode=3,signmethod=hmacsha1|', - privateserveraddr: '192.168.131.30', - privateserverport: '9898', - privateserverusername: 'admin' - }, - { - productname: '打包车间', - status: 1, - statusdesc: '运行', - type: 'RV400-NPU16T-5G-AR100', - kernel: 'rt-thread kenel', - webversion: '1.0', - no: 'A000005', - ipaddr: '192.168.131.29', - netmask: '255.255.254.0', - gateway: '192.168.130.1', - dnsserver0: '10.0.110.21', - dnsserver1: '10.0.110.20', - topic: '/broadcast/hf6mzwdVnJg/989898', - serveraddr: 'zwdVnJg.iot-as-mqtt.cn-shanghai.aliyuncs.com', - serverport: '1883', - username: 'test1&hf6mzwdVnJg', - clientid: '123|securemode=3,signmethod=hmacsha1|', - privateserveraddr: '192.168.131.30', - privateserverport: '9898', - privateserverusername: 'admin' - } - ], + deviceList: [], visible: false, current: {}, protocol: 'TCP/IP' diff --git a/xiuosiot-frontend/vue.config.js b/xiuosiot-frontend/vue.config.js index 10af40b..f3c0b8a 100644 --- a/xiuosiot-frontend/vue.config.js +++ b/xiuosiot-frontend/vue.config.js @@ -44,6 +44,13 @@ module.exports = { pathRewrite: { '^/cgi-bin': '/cgi-bin' } + }, + '/qianjiang': { + target: 'http://115.238.53.61:33333/', // webnet + changeOrigin: true, + pathRewrite: { + '^/qianjiang': '' + } } }, open: true,