diff --git a/xiuosiot-frontend/package-lock.json b/xiuosiot-frontend/package-lock.json index b45f6c5..601ed4f 100644 --- a/xiuosiot-frontend/package-lock.json +++ b/xiuosiot-frontend/package-lock.json @@ -10,9 +10,10 @@ "license": "MIT", "dependencies": { "axios": "0.18.1", - "core-js": "^3.6.5", + "core-js": "^3.23.4", "echarts": "^5.3.3", - "element-ui": "^2.15.8", + "element-ui": "2.15.13", + "file-saver": "^2.0.5", "html-loader": "^4.2.0", "js-cookie": "2.2.0", "markdown-loader": "^8.0.0", @@ -6028,10 +6029,9 @@ } }, "node_modules/core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "version": "3.23.4", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.23.4.tgz", + "integrity": "sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==", "hasInstallScript": true }, "node_modules/core-js-compat": { @@ -7198,9 +7198,9 @@ "dev": true }, "node_modules/element-ui": { - "version": "2.15.10", - "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.10.tgz", - "integrity": "sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==", + "version": "2.15.13", + "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.13.tgz", + "integrity": "sha512-LJoatEYX6WV74FqXBss8Xfho9fh9rjDSzrDrTyREdGb1h1R3uRvmLh5jqp2JU137aj4/BgqA3K06RQpQBX33Bg==", "dependencies": { "async-validator": "~1.8.1", "babel-helper-vue-jsx-merge-props": "^2.0.0", @@ -8482,6 +8482,11 @@ "node": ">=4.0.0" } }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -25192,9 +25197,9 @@ } }, "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + "version": "3.23.4", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.23.4.tgz", + "integrity": "sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==" }, "core-js-compat": { "version": "3.25.1", @@ -26188,9 +26193,9 @@ "dev": true }, "element-ui": { - "version": "2.15.10", - "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.10.tgz", - "integrity": "sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==", + "version": "2.15.13", + "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.13.tgz", + "integrity": "sha512-LJoatEYX6WV74FqXBss8Xfho9fh9rjDSzrDrTyREdGb1h1R3uRvmLh5jqp2JU137aj4/BgqA3K06RQpQBX33Bg==", "requires": { "async-validator": "~1.8.1", "babel-helper-vue-jsx-merge-props": "^2.0.0", @@ -27229,6 +27234,11 @@ } } }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", diff --git a/xiuosiot-frontend/package.json b/xiuosiot-frontend/package.json index 9e05975..64beef3 100644 --- a/xiuosiot-frontend/package.json +++ b/xiuosiot-frontend/package.json @@ -15,9 +15,10 @@ }, "dependencies": { "axios": "0.18.1", - "core-js": "^3.6.5", + "core-js": "^3.23.4", "echarts": "^5.3.3", "element-ui": "2.15.13", + "file-saver": "^2.0.5", "html-loader": "^4.2.0", "js-cookie": "2.2.0", "markdown-loader": "^8.0.0", diff --git a/xiuosiot-frontend/src/api/terminal/ota.js b/xiuosiot-frontend/src/api/terminal/ota.js new file mode 100644 index 0000000..83b3cd7 --- /dev/null +++ b/xiuosiot-frontend/src/api/terminal/ota.js @@ -0,0 +1,82 @@ +import request from '@/utils/request' + +export function remove(data) { + return request({ + url: '/firmware/delete', + method: 'post', + data + }) +} + +export function upload(data) { + return request({ + url: '/firmware/upload', + method: 'post', + data + }) +} + +export function add(data) { + return request({ + url: '/firmware/add', + method: 'post', + data + }) +} + +export function verify(data) { + return request({ + url: '/firmware/verify', + method: 'post', + data + }) +} + +export function download(data) { + return request({ + url: '/firmware/download', + method: 'get', + params: data || {}, + responseType: 'blob' + }) +} + +export function getList(data) { + return request({ + url: '/firmware/getAll', + method: 'get', + params: data || {} + }) +} + +export function getByVerify(data) { + return request({ + url: '/firmware/getVerify', + method: 'get', + params: data || {} + }) +} + +export function getByName(data) { + return request({ + url: '/firmware/getByName', + method: 'get', + params: data || {} + }) +} + +export function addTask(data) { + return request({ + url: '/ota/addJob', + method: 'post', + data + }) +} + +export function getTaskList(data) { + return request({ + url: '/ota/getAll', + method: 'get', + params: data || {} + }) +} diff --git a/xiuosiot-frontend/src/assets/images/ota_file.png b/xiuosiot-frontend/src/assets/images/ota_file.png new file mode 100644 index 0000000..944955e Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_file.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_md5.png b/xiuosiot-frontend/src/assets/images/ota_md5.png new file mode 100644 index 0000000..f27d0e4 Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_md5.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_time.png b/xiuosiot-frontend/src/assets/images/ota_time.png new file mode 100644 index 0000000..9c42a5b Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_time.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_verify_failed_big.png b/xiuosiot-frontend/src/assets/images/ota_verify_failed_big.png new file mode 100644 index 0000000..1e3c826 Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_verify_failed_big.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_verify_failed_small.png b/xiuosiot-frontend/src/assets/images/ota_verify_failed_small.png new file mode 100644 index 0000000..cd73b89 Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_verify_failed_small.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_verify_not_big.png b/xiuosiot-frontend/src/assets/images/ota_verify_not_big.png new file mode 100644 index 0000000..e2391a8 Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_verify_not_big.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_verify_not_small.png b/xiuosiot-frontend/src/assets/images/ota_verify_not_small.png new file mode 100644 index 0000000..e176a98 Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_verify_not_small.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_verify_success_big.png b/xiuosiot-frontend/src/assets/images/ota_verify_success_big.png new file mode 100644 index 0000000..9c9e666 Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_verify_success_big.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_verify_success_small.png b/xiuosiot-frontend/src/assets/images/ota_verify_success_small.png new file mode 100644 index 0000000..7a2d7df Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_verify_success_small.png differ diff --git a/xiuosiot-frontend/src/assets/images/ota_version.png b/xiuosiot-frontend/src/assets/images/ota_version.png new file mode 100644 index 0000000..12bc7df Binary files /dev/null and b/xiuosiot-frontend/src/assets/images/ota_version.png differ diff --git a/xiuosiot-frontend/src/icons/svg/ota_arrow_up.svg b/xiuosiot-frontend/src/icons/svg/ota_arrow_up.svg new file mode 100644 index 0000000..a486c92 --- /dev/null +++ b/xiuosiot-frontend/src/icons/svg/ota_arrow_up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/xiuosiot-frontend/src/icons/svg/ota_close.svg b/xiuosiot-frontend/src/icons/svg/ota_close.svg new file mode 100644 index 0000000..76399f1 --- /dev/null +++ b/xiuosiot-frontend/src/icons/svg/ota_close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/xiuosiot-frontend/src/icons/svg/ota_refresh.svg b/xiuosiot-frontend/src/icons/svg/ota_refresh.svg new file mode 100644 index 0000000..186c8fc --- /dev/null +++ b/xiuosiot-frontend/src/icons/svg/ota_refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/xiuosiot-frontend/src/layout/index.vue b/xiuosiot-frontend/src/layout/index.vue index 95a9f59..17f90f8 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', 'terminal/stock', 'data/value', 'configuration/development', 'dashboard', 'log/accessLog', 'log/systemLog', 'rule/manage', 'rule/dataTransfer'] + const whiteList = ['overview', 'terminal/add', 'terminal/plc', 'terminal/stock', 'terminal/ota', '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 31ad718..3d41bfd 100644 --- a/xiuosiot-frontend/src/router/index.js +++ b/xiuosiot-frontend/src/router/index.js @@ -219,7 +219,7 @@ export const asyncRouter = [ path: 'ota', name: 'OTA', component: () => import('@/views/terminal/OTA/index'), - meta: { title: 'OTA升级', disabled: true, permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } + meta: { title: 'OTA升级', permission: ['dashengda', 'hangxiao', 'qianjiangdianqi'] } }, { path: 'stock', diff --git a/xiuosiot-frontend/src/utils/request.js b/xiuosiot-frontend/src/utils/request.js index f4cfcaf..a1ea20a 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-11-10 15:09:14 + * @LastEditTime: 2023-08-23 15:32:34 * @FilePath: \dashengda\src\utils\request.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -56,35 +56,35 @@ service.interceptors.response.use( */ response => { const res = response.data - - // if the custom code is not 20000, it is judged as an error. - if (res.code !== '200000') { - Message({ - message: res.message || 'Error', - type: 'error', - duration: 5 * 1000 - }) + if (res instanceof Blob) { + return response + } else { + if (res.code !== '200000') { + Message({ + message: res.message || 'Error', + type: 'error', + duration: 5 * 1000 + }) + } + if (res.code === '200300') {} + // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; + // if (res.code === 50008 || res.code === 50012 || res.code === 50014) { + // // to re-login + // MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { + // confirmButtonText: 'Re-Login', + // cancelButtonText: 'Cancel', + // type: 'warning' + // }).then(() => { + // store.dispatch('user/resetToken').then(() => { + // location.reload() + // }) + // }) + // } + // return Promise.reject(new Error(res.message || 'Error')) + // } else { + return res + // } } - if (res.code === '200300') { - - } - // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; - // if (res.code === 50008 || res.code === 50012 || res.code === 50014) { - // // to re-login - // MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { - // confirmButtonText: 'Re-Login', - // cancelButtonText: 'Cancel', - // type: 'warning' - // }).then(() => { - // store.dispatch('user/resetToken').then(() => { - // location.reload() - // }) - // }) - // } - // return Promise.reject(new Error(res.message || 'Error')) - // } else { - return res - // } }, error => { Message({ diff --git a/xiuosiot-frontend/src/views/terminal/OTA/index.vue b/xiuosiot-frontend/src/views/terminal/OTA/index.vue index a5c1833..8a66203 100644 --- a/xiuosiot-frontend/src/views/terminal/OTA/index.vue +++ b/xiuosiot-frontend/src/views/terminal/OTA/index.vue @@ -1,3 +1,836 @@ + + + diff --git a/xiuosiot-frontend/src/views/terminal/PLC/index.vue b/xiuosiot-frontend/src/views/terminal/PLC/index.vue index 57d5a95..516b236 100644 --- a/xiuosiot-frontend/src/views/terminal/PLC/index.vue +++ b/xiuosiot-frontend/src/views/terminal/PLC/index.vue @@ -6,7 +6,7 @@ style="align-items: baseline; margin-bottom: 30px" >
-

{{ abbrCorpName+'PLC管理' }}

+

{{ abbrCorpName + "PLC管理" }}

{{ date }}
@@ -26,15 +26,32 @@
-
x
+
+ x +

{{ formula.productName }}

{{ formula.brandName }}

{{ formula.protocolType }}

-

{{ '工业设备ID:' + formula.deviceId }}

-

{{ '工业设备名称:' + formula.deviceName }}

-

{{ '扫描间隔:' + formula.readPeriod + 'ms' }}

+

{{ "工业设备ID:" + formula.deviceId }}

+

{{ "工业设备名称:" + formula.deviceName }}

+

{{ "扫描间隔:" + formula.readPeriod + "ms" }}

+

+ 文件导出 +

+

+ 在线烧录 +

@@ -153,7 +170,7 @@ - {{ form.readPeriod + 'ms' }} + {{ form.readPeriod + "ms" }}
@@ -228,50 +245,82 @@ -
+

读取数据设置

- + - + - + - + - + - + - + - + @@ -288,7 +337,11 @@ - + @@ -297,30 +350,105 @@
- - - - - - - - - - - - + + + + + + + + + + + + - +
- +

添加

- +

删除

- +

清空