diff --git a/.env b/.env index d546358fd5112b1f677f5350710575878030ccac..3166b32410867ada49150dde68b5b44c42ef5d0c 100644 --- a/.env +++ b/.env @@ -1,8 +1,8 @@ # port -VITE_PORT = 16801 +VITE_PORT = 8888 # Automatically open the browser when running npm run dev -VITE_OPEN = false +VITE_OPEN = http://localhost:8888/ # When public path configures online environment path (packaging) and local access through http server, please leave it blank VITE_PUBLIC_PATH = \ No newline at end of file diff --git a/.env.development b/.env.development index 76f6759abbedbd5c96d56103dd275a200032dc97..682ca9058013fe8c2922f6d17ced482229b940fc 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,5 @@ ENV = 'development' # Local environment interface address -VITE_API_URL = 'https://localhost:18443' \ No newline at end of file +VITE_API_URL = 'https://localhost:18443' +VITE_PUBLIC_PATH = './' \ No newline at end of file diff --git a/.env.production b/.env.production index e1d71108b8f24f7c154448d6484684d68464e957..3cf7aee2c9e7c6bc46e43bceeeb35e4fdd187420 100644 --- a/.env.production +++ b/.env.production @@ -2,4 +2,5 @@ ENV = 'production' # Online environment interface address -VITE_API_URL = 'http://127.0.0.1:2122' \ No newline at end of file +VITE_API_URL = '' +VITE_PUBLIC_PATH = './' \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 850b2db8ca7f21b815f2cd6f4727fc48086f4599..cfc877d6cdb8bb6afbad7b032477a6f54ac013f6 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,4 @@ -/dist/ + *.sh node_modules lib diff --git a/.eslintrc.js b/.eslintrc.js index 1593b03667b83903dbb5e821209bd5d506154b33..fbb10b02ea517f5370a3afacb2bfc4b984710ded 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,9 +12,18 @@ module.exports = { }, extends: ['plugin:vue/vue3-essential', 'plugin:vue/essential', 'eslint:recommended'], plugins: ['vue', '@typescript-eslint'], + overrides: [ + { + files: ['*.ts', '*.tsx', '*.vue'], + rules: { + 'no-undef': 'off', + }, + }, + ], rules: { // http://eslint.cn/docs/rules/ // https://eslint.vuejs.org/rules/ + // https://typescript-eslint.io/rules/no-unused-vars/ '@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-explicit-any': 'off', @@ -25,6 +34,7 @@ module.exports = { '@typescript-eslint/ban-types': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unused-vars': 'warn', 'accessor-pairs': 2, 'arrow-spacing': [2, { 'before': true, @@ -142,6 +152,7 @@ module.exports = { 'vars': 'all', 'args': 'none' }], + 'no-useless-call': 2, 'no-useless-computed-key': 2, 'no-useless-constructor': 2, 'no-useless-escape': 0, diff --git a/.gitignore b/.gitignore index 8b8e95da12d836d657d73134f98c19c60fa8f3a1..878b7b1953c66a660302d7283784890f54553f92 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,8 @@ -node_modules .DS_Store -dist -dist-ssr -*.local -*-lock.* +node_modules +/dist +/dfs +/dsms-ui # local env files .env.local @@ -13,6 +12,7 @@ dist-ssr npm-debug.log* yarn-debug.log* yarn-error.log* +pnpm-debug.log* # Editor directories and files .idea @@ -21,4 +21,6 @@ yarn-error.log* *.ntvs* *.njsproj *.sln -*.sw? \ No newline at end of file +*.sw? +/rpmbuild/ +/target/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..5e63149aadc82e92758ad4b3365ebb9f7d77fd4e --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ +RPM_NAME=dsms-ui +RPM_VERSION=V1.0.0 +RPM_RELEASE=V1.0 +RPM_ARCH=x86_64 +RPM_BUILD_DIR=$(shell pwd)/rpmbuild +RPM_SPEC_FILE=${RPM_BUILD_DIR}/SPECS/${RPM_NAME}.spec + + +.PHONY: clean build + +clean: + rm -rf target + rm -rf ${RPM_BUILD_DIR} + +build: clean + npm install --force && npm run build + mkdir -p ${RPM_BUILD_DIR}/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} + mkdir -p ${RPM_BUILD_DIR}/BUILD/dsms-ui/ + cp -r dsms-ui/* ${RPM_BUILD_DIR}/BUILD/dsms-ui/ + cp build/* ${RPM_BUILD_DIR}/BUILD/ + + sed -e "s/@RPM_NAME@/${RPM_NAME}/g" \ + -e "s/@RPM_VERSION@/${RPM_VERSION}/g" \ + -e "s/@RPM_RELEASE@/${RPM_RELEASE}/g" \ + -e "s/@RPM_ARCH@/${RPM_ARCH}/g" \ + -e "s|@RPM_BUILD_DIR@|${RPM_BUILD_DIR}|g" \ + build/dsms-ui.spec > ${RPM_SPEC_FILE} + + + rpmbuild -bb ${RPM_SPEC_FILE} + + mkdir target + + find ${RPM_BUILD_DIR}/RPMS -type f -name "*.rpm" -exec cp {} ./target \; + + rm -rf ${RPM_BUILD_DIR} + + diff --git a/README.en.md b/README.en.md index 751b4771dda7541fff4f0257c77da5a00e0147b6..6f770810989ffb8be96645bbf6b8c49252996d97 100644 --- a/README.en.md +++ b/README.en.md @@ -9,6 +9,8 @@ This component works with dsms-engine (the management engine component) to enabl - Vue3 - Es6 - Element-plus +- Pinia +- Typescript ### Installation and use 1. Get the project code ``` diff --git a/README.md b/README.md index bfb6fcbfacd585187c5ed92c7adba0469c92f4cd..472567cce11ac7488292f0038455ac7a4084990b 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ dsms-ui是为DSMS (Distributed Storage Management System) 分布式存储管理 - Vue3 - Es6 - Element-plus +- Pinia +- Typescript ### 安装和使用 1. 获取代码 ``` diff --git a/build/dsms-ui.conf b/build/dsms-ui.conf new file mode 100644 index 0000000000000000000000000000000000000000..932945042855ee99ff5d85889366821d431834e3 --- /dev/null +++ b/build/dsms-ui.conf @@ -0,0 +1,23 @@ +server { + listen 8081 ssl; + ssl_certificate /etc/nginx/conf.d/dsms.pem; + ssl_certificate_key /etc/nginx/conf.d/dsms.key; + location / { + root /etc/dsms/dsms-ui/; + index index.html index.htm; + } + + location /api/ { + proxy_pass https://127.0.0.1:18443; + } + # WebSocket Configuration + location /websocket/ { + proxy_pass https://127.0.0.1:18443; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto https; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } +} \ No newline at end of file diff --git a/build/dsms-ui.spec b/build/dsms-ui.spec new file mode 100644 index 0000000000000000000000000000000000000000..ee0cfaa6ecbac220f6d8d45c305e37dee7b24abc --- /dev/null +++ b/build/dsms-ui.spec @@ -0,0 +1,33 @@ +%define _topdir @RPM_BUILD_DIR@ +%define name @RPM_NAME@ +%define version @RPM_VERSION@ +%define release @RPM_RELEASE@ +%define arch @RPM_ARCH@ + +Name: %{name} +Version: %{version} +Release: %{release} +Summary: DSMS UI components, providing a web-based graphical interface. +License: MIT +BuildArch: %{arch} + +Requires: nginx + +%description +UI components, providing a web-based graphical interface for user management and use of DSMS systems. +%install +mkdir -p %{buildroot}/etc/dsms/dsms-ui/ +mkdir -p %{buildroot}/etc/nginx/conf.d/ +cp dsms-ui.conf %{buildroot}/etc/nginx/conf.d +cp dsms.key %{buildroot}/etc/nginx/conf.d +cp dsms.pem %{buildroot}/etc/nginx/conf.d +cp -r dsms-ui/* %{buildroot}/etc/dsms/dsms-ui + +%post +systemctl start nginx +systemctl enable nginx + +%files +/etc/* + +%changelog \ No newline at end of file diff --git a/build/dsms.key b/build/dsms.key new file mode 100644 index 0000000000000000000000000000000000000000..b4f6fa7d15b361d765ff05781c77b36e21697c03 --- /dev/null +++ b/build/dsms.key @@ -0,0 +1,32 @@ +Bag Attributes + friendlyName: dsms + localKeyID: 54 69 6D 65 20 31 36 36 39 32 38 32 30 31 36 38 31 32 +Key Attributes: +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCmdmgmHMFi6ou+ +wYdopPM/X3oyLisvw+DGt1IvCyHb6MhwNZq/+0FAu/RHRjP5ud66RkVVaoiqxn6d +M2oeLjk1M4T3Y+AEopIjy+VaU/Bf6l9Hz+UNmIGn0qjnrL9OIQrDzetEn3HUtru6 +FZJjIacy//6BvqxXknRS3NUJcjw7dUfEVqzymmi4NMGx3ft7YHZdobTIxrAo77hS +tFetuu4GeimLvt4hlB19nGl0kF8OuJ0IDFZ684J2h9XEintOk9QtXmVlyhT5M15V +Rby0IvZgholDrFPkwJvAcdOj3EDNnQJycESsQpvvIhV1CYddtyz7bdrUchImDI14 +4O7G+zlRAgMBAAECggEBAIIASwoovubvYb/SCFwzJj1B5X63C8c75JmMpcRTn1fN +DmyDkJ2KLcXOg9H+A61t+YHkS1WP47frWQqQEroLQ2ZHG/rQpy03gYYvQKkwkLN3 +qH2+4JWjmu5j2MFF6gmsSGnusWRgWVfUdfu3ySFeMOPlhO/y50lk+S+Vg1LjQiL0 +C/G4sl+y+T1b/W/J9Da/mQeaVAAcJ+TI1cZKkTaWefxlt9BgmzoiCoGn+w1YGbLF +gpjzv8HF7oDKV94kXNAkU5Bt3Jz48okOSJQLQkKH4c2cC4SBKzwHyrwG1MgDjG/o +7/CpJW+BX/rQw9twTnGXbsNLW9OBMMB2z6xVQDqHeVkCgYEA2hb+1t5g/mA1Wefm +hjbQVNuwRqYGgC0x7XiHkqsv82joZSzbuo7vRw4qRe4+EMio3iEIcvA3lSdFYcnh +BBeEh/Ejb1LoRlQEL5V9DoJQ/KfiDSet2i9kJx6y5y0TqgQ83dqVKFzzoEBMxmwX +5Rb9ylGHyUv+7jhXkMur7WbQGksCgYEAw2X+rKcHdpD910TsQ53qVW4KD5SPWanP +Fe7Ztn0ykzRshd5Ci2K4gFi5tdwJL1GE/XZLOGoGLoTYHMQclNU9Wv8m1sTBvQdv +TAceq039Sf31KFPADgZLYsGmMOJCeseMTJlpOFYd6yBMpbbiW+6akqMLsjSGciNE +m1i+JAn4OVMCgYEAqtsfFRis5jxbL68082rX9dMSm5aQOzStC7zEgYwpicljX3gw +QEygeotHZPfLmfyKB1Pbuagl820LtxugdEM0agfpWdqa7BYAHYNAsPA5IGcp+mJe +mjNMhDVRtTikUir1wFzxQ+jmWGJng3/FjI1hkHIlLfeipeBwAZj+fYNxf1cCgYAU +IxTF8kjAnVyrrLy0kzetKjP7OxIy6V8gIYdqWSi3JvXwLeGpv7jH8VziMxT3PW15 +OZGy9KpCbQpgnI1dgURbdmQoSgq1UmjT6v/sI5Nw5q03RLpMN7XZLZ/U9dxoDtyU +oFLJrYZTzvZXNavKUaK4bfksmmEorh3J7LFbwXNFZQKBgD9eIrXApN6efAg3l/4N +eo2zjLk+GXVtMJwGvknxTpx1oMhBIxPZuclvGENBi/OsPNCY462bnC1GwerKfaw3 +AGFN8d12FtEbTlwtwWAnDYXNV6k2UVNUH6wT3/XLN934IOKD3oTV91hfodbaqiu4 +ty82/atl6DvWpeS1bW7ZxGmZ +-----END PRIVATE KEY----- diff --git a/build/dsms.pem b/build/dsms.pem new file mode 100644 index 0000000000000000000000000000000000000000..a08cc0c4877dfd10b87d678d1f7b60a1178d0073 --- /dev/null +++ b/build/dsms.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIEMH36gjANBgkqhkiG9w0BAQsFADBaMQ0wCwYDVQQGEwRk +c21zMQ0wCwYDVQQIEwRkc21zMQ0wCwYDVQQHEwRkc21zMQ0wCwYDVQQKEwRkc21z +MQ0wCwYDVQQLEwRkc21zMQ0wCwYDVQQDEwRkc21zMB4XDTIyMTEyNDA5MjY1NloX +DTIzMDIyMjA5MjY1NlowWjENMAsGA1UEBhMEZHNtczENMAsGA1UECBMEZHNtczEN +MAsGA1UEBxMEZHNtczENMAsGA1UEChMEZHNtczENMAsGA1UECxMEZHNtczENMAsG +A1UEAxMEZHNtczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKZ2aCYc +wWLqi77Bh2ik8z9fejIuKy/D4Ma3Ui8LIdvoyHA1mr/7QUC79EdGM/m53rpGRVVq +iKrGfp0zah4uOTUzhPdj4ASikiPL5VpT8F/qX0fP5Q2YgafSqOesv04hCsPN60Sf +cdS2u7oVkmMhpzL//oG+rFeSdFLc1QlyPDt1R8RWrPKaaLg0wbHd+3tgdl2htMjG +sCjvuFK0V6267gZ6KYu+3iGUHX2caXSQXw64nQgMVnrzgnaH1cSKe06T1C1eZWXK +FPkzXlVFvLQi9mCGiUOsU+TAm8Bx06PcQM2dAnJwRKxCm+8iFXUJh123LPtt2tRy +EiYMjXjg7sb7OVECAwEAAaMhMB8wHQYDVR0OBBYEFOeqvs6S6mG2jZ+27a7QgL0Z +ArQRMA0GCSqGSIb3DQEBCwUAA4IBAQAq9TEEbx5mkKJuKEiLFeFFEOnJKCKFqlV4 +EQAm4hRtyqheK0qatZCiThmpxqFlK15p+sG4065B7cGWc0hC8JSoXZaqy3yuvTh/ +fmKxon0Un0LY6mSlDxTtngtuTPIPRwcGePGPSfTDWkuEu3bvd2rlnQ/1Nr86ggOz +6tju3WmSol84Vu0K2fcxu+XDe2wW8A7rF08NVOknJ5Xo1pl9KLeW2aX/xhmEPj4l +P+TWId+n2RyzsSeX7WcjyoMKLeDYri4Ed5fIHnpZklk8X2h4XAlS1BaSGauIHMus +iJ7DYn98fbb9ZHgbMjLK/De2rKCydzOGPag6QZRFlDT2B68tNEXB +-----END CERTIFICATE----- diff --git a/index.html b/index.html index f34437bc5b674a183db2d41de7372394f11e8589..8c7c059bfe2fcc8ba424a9e88eae3dfc1ae863dc 100644 --- a/index.html +++ b/index.html @@ -6,22 +6,13 @@ - - DFS-management + + dsms
- diff --git a/package.json b/package.json index 35fda1704cce15b6771e0dc44f8b05ca3f557603..25f13155965568f9f89e2f6973f9cd91552ad5c7 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,69 @@ { - "name": "dsms-ui", - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/" - }, - "dependencies": { - "element-plus": "^2.2.2", - "axios": "^0.27.2", - "js-cookie": "^3.0.1", - "mitt": "^3.0.0", - "pinia": "^2.0.14", - "sortablejs": "^1.10.2", - "vue": "^3.2.36", - "vue-grid-layout": "^3.0.0-beta1", - "vue-router": "^4.0.1" - }, - "devDependencies": { - "@types/js-cookie": "^3.0.2", - "@types/sortablejs": "^1.10.6", - "@typescript-eslint/eslint-plugin": "^5.27.0", - "@typescript-eslint/parser": "^5.27.0", - "@vitejs/plugin-vue": "^2.3.3", - "@vue/compiler-sfc": "^3.0.4", - "eslint": "^8.17.0", - "eslint-plugin-vue": "^9.1.0", - "sass": "^1.30.0", - "sass-loader": "^10.1.0", - "typescript": "^4.1.2", - "vite": "^3.1.0", - "vue-eslint-parser": "^9.0.2" - } + "name": "dsms-admin", + "version": "1.0.0", + "description": "template", + "author": "linx", + "license": "MIT", + "scripts": { + "dev": "vite --force", + "build": "vite build", + "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.0.3", + "axios": "^0.27.2", + "babel-polyfill": "^6.26.0", + "countup.js": "^2.2.0", + "echarts": "^5.3.2", + "echarts-gl": "^2.0.9", + "echarts-wordcloud": "^2.0.0", + "element-plus": "^2.2.2", + "js-cookie": "^3.0.1", + "jsplumb": "^2.15.6", + "mitt": "^3.0.0", + "nprogress": "^0.2.0", + "pinia": "^2.0.14", + "qrcodejs2-fixes": "^0.0.2", + "screenfull": "^6.0.1", + "sortablejs": "^1.15.0", + "spark-md5": "^3.0.2", + "splitpanes": "^3.1.1", + "terser": "^5.15.1", + "vue": "^3.2.36", + "vue-clipboard3": "^2.0.0", + "vue-grid-layout": "^3.0.0-beta1", + "vue-router": "^4.0.15" + }, + "devDependencies": { + "@types/node": "^17.0.39", + "@types/nprogress": "^0.2.0", + "@types/sortablejs": "^1.13.0", + "@typescript-eslint/eslint-plugin": "^5.27.0", + "@typescript-eslint/parser": "^5.27.0", + "@vitejs/plugin-legacy": "^2.3.1", + "@vitejs/plugin-vue": "^2.3.3", + "@vue/compiler-sfc": "^3.2.36", + "dotenv": "^16.0.1", + "eslint": "^8.17.0", + "eslint-plugin-vue": "^9.1.0", + "prettier": "^2.6.2", + "sass": "^1.52.2", + "sass-loader": "^13.0.0", + "typescript": "^4.7.3", + "vite": "^4.0.0", + "vue-eslint-parser": "^9.0.2" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ], + "engines": { + "node": ">=12.0.0", + "npm": ">= 6.0.0" + }, + "keywords": [ + "vue", + "vue3" + ] } diff --git a/plugins.d.ts b/plugins.d.ts index 457e784f035232f353f2f93b2f2c361100fe9e18..4129414280a0f6bce020a5dfdcddfe0c57766e2e 100644 --- a/plugins.d.ts +++ b/plugins.d.ts @@ -1,2 +1,5 @@ declare module 'vue-grid-layout'; -declare module 'js-cookie'; \ No newline at end of file +declare module 'qrcodejs2-fixes'; +declare module 'splitpanes'; +declare module 'js-cookie'; +declare module 'spark-md5' diff --git a/public/favicon.ico b/public/favicon.ico index df36fcfb72584e00488330b560ebcf34a41c64c2..635fc11e98976eca165cf7e7ecf5a2a51663ba89 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/settings.ts b/settings.ts new file mode 100644 index 0000000000000000000000000000000000000000..9982d96b972802f555c7505c4c7a4c3111c4f671 --- /dev/null +++ b/settings.ts @@ -0,0 +1 @@ +export const uiVersion = 'V1.0.0'; \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 970cdf9b21a13c98bc7fd09fd59b74a099744680..af269e8064cde46227cd327aaa9f2390985a8694 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,15 +1,26 @@ - diff --git a/src/api/about/index.ts b/src/api/about/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..43439f859f77d60856c0d727fbf6178ba906a983 --- /dev/null +++ b/src/api/about/index.ts @@ -0,0 +1,13 @@ +import request from '/@/utils/request'; + +export function useAboutApi() { + return { + // get version + getComponentsVersion: () => { + return request({ + url: '/api/component/about', + method: 'post' + }); + }, + }; +} diff --git a/src/api/alarm/index.ts b/src/api/alarm/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3b5df5a3d0457bfabe8e6d14993b6612bab371b --- /dev/null +++ b/src/api/alarm/index.ts @@ -0,0 +1,128 @@ +import request from '/@/utils/request'; + +export function useAlarmApi() { + return { + getAlarmStrategyList: (data:object) => { + return request({ + url: '/api/alertrule/list', + method: 'post', + data + }); + }, + + getAlarmStrategy: (ruleId: number | null) => { + return request({ + url: '/api/alertrule/get', + method: 'post', + data: { ruleId } + }); + }, + + updateAlarmStrategy: (data: Object) => { + return request({ + url: '/api/alertrule/update_rule', + method: 'post', + data + }); + }, + + resetAlarmStrategy: (ruleId: number) => { + return request({ + url: '/api/alertrule/reset_rule', + method: 'post', + data: { ruleId } + }); + }, + + getAlarmAppriseList: (data: object) => { + return request({ + url: '/api/alertapprise/list', + method: 'post', + data + }); + }, + + updateAlarmApprise: (data: object) => { + return request({ + url: '/api/alertapprise/update_apprise', + method: 'post', + data + }); + }, + + addAlarmContact: (data: { + contactAccount:string, + contactName:string, + contactType:number + }) => { + return request({ + url: '/api/alertcontact/create', + method: 'post', + data + }); + }, + + deleteAlarmContact: (data: {contactId:number}) => { + return request({ + url: '/api/alertcontact/delete', + method: 'post', + data + }); + }, + + sendEmailTest: () => { + return request({ + url: '/api/alertapprise/send_email', + method: 'post', + }); + }, + + sendSmsTest: () => { + return request({ + url: '/api/alertapprise/send_sms', + method: 'post', + }); + }, + + getAlertMessageList: (data: { + level?: string | number | undefined | null, + model?: string | undefined | null, + pageNo: string | number, + pageSize: string | number, + status?: string | number | undefined | null, + }) => { + return request({ + url: '/api/alertmessage/list', + method: 'post', + data + }); + }, + + confirmAlertMessage: (data: { + ids: number[] + }) => { + return request({ + url: '/api/alertmessage/confirm_message', + method: 'post', + data + }); + }, + + delAlertMessage: (data: { + ids: number[] + }) => { + return request({ + url: '/api/alertmessage/delete_message', + method: 'post', + data + }); + }, + + getUnconfirmMessageNum: () => { + return request({ + url: '/api/alertmessage/get_unconfirmed_message_num', + method: 'post', + }); + }, + }; +} \ No newline at end of file diff --git a/src/api/block-storage/index.ts b/src/api/block-storage/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..549bc80505500e8c8ab62fca0ed12b754db955d4 --- /dev/null +++ b/src/api/block-storage/index.ts @@ -0,0 +1,67 @@ +import request from '/@/utils/request'; + +export function useBlockStorageApi() { + return { + getVolumeList: (params:{ + poolName?:string, + rbdName?:string, + pageNo?:number, + pageSize?:number + }) => { + return request({ + url: '/api/volume/list', + method: 'post', + data: params, + timeout: 30000 + }); + }, + addVolume: (params:{ + poolName:string|null, + rbdName:string, + rbdSize:string, + basedOnEra:boolean, + }) => { + return request({ + url: '/api/volume/create_rbd', + method: 'post', + data: params + }); + }, + delVolume: (params:{ + poolName:string | undefined, + rbdName:string | undefined, + }) => { + return request({ + url: '/api/volume/delete_rbd', + method: 'post', + data: params + }); + }, + updataVolume: (params:{ + poolName:string, + rbdName:string, + rbdSize:string + }) => { + return request({ + url: '/api/volume/update_rbd', + method: 'post', + data: params + }); + }, + downloadKey: () => { + return request({ + url: '/api/volume/download_key', + method: 'post', + }); + }, + getPool: (params:{ + poolName:string | undefined, + }) => { + return request({ + url: '/api/pool/get', + method: 'post', + data: params + }); + } + }; +} \ No newline at end of file diff --git a/src/api/cluster/index.ts b/src/api/cluster/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..ddcd63c8d88481540ca3b5e05572a041671333c3 --- /dev/null +++ b/src/api/cluster/index.ts @@ -0,0 +1,33 @@ +import request from '/@/utils/request'; + +export function useClusterApi() { + return { + // query cluster + getCluster: (params?: object) => { + return request({ + url: '/api/cluster/about', + method: 'post', + data: params, + headers: { + tip: 'no' + } + }); + }, + // binding cluster + bindingCluster: (params: object) => { + return request({ + url: '/api/cluster/bind', + method: 'post', + data: params, + }); + }, + // unbinding cluster + unbindcluster: (params?: object) => { + return request({ + url: '/api/cluster/unbind', + method: 'post', + data: params + }); + } + }; +} \ No newline at end of file diff --git a/src/api/file-storage/index.ts b/src/api/file-storage/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..a72651376c364e99bea74fe0cd3cd59f697677c2 --- /dev/null +++ b/src/api/file-storage/index.ts @@ -0,0 +1,57 @@ +import request from '/@/utils/request'; + +export function useFileStorageApi() { + return { + getFileSystemList: () => { + return request({ + url: '/api/cephfs/list', + method: 'post', + }); + }, + addFileSystem: (params: object) => { + return request({ + url: '/api/cephfs/create_fs', + method: 'post', + data: params + }); + }, + delFileSystem: (params: object) => { + return request({ + url: '/api/cephfs/delete_fs', + method: 'post', + data: params + }); + }, + getStorageDirList: (data:{ + pageNo: number, + pageSize: number, + storageDirName?:string, + }) => { + return request({ + url: '/api/storagedir/list', + method: 'post', + data + }); + }, + addStorageDir: (params: object) => { + return request({ + url: '/api/storagedir/create_dir', + method: 'post', + data: params + }); + }, + delStorageDir: (params: object) => { + return request({ + url: '/api/storagedir/delete_dir', + method: 'post', + data: params + }); + }, + getStorageDirGuide: () => { + return request({ + url: '/api/storagedir/guide', + method: 'post' + }); + }, + }; +} \ No newline at end of file diff --git a/src/api/home/index.ts b/src/api/home/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8d1bb9bb03ffda9a84f2e184ec2cca11100912a --- /dev/null +++ b/src/api/home/index.ts @@ -0,0 +1,12 @@ +import request from '/@/utils/request'; + +export function useHomeApi() { + return { + getOverview: () => { + return request({ + url: '/api/overview/get', + method: 'post' + }); + }, + }; +} diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 91feee8bbf812544837f9df554d85247fdfdef53..3b1b321787f43def738f9edc8681a0e84cdaaabc 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -11,7 +11,7 @@ export function useLoginApi() { }); }, // Logout - signOut: (params: object) => { + signOut: (params?: object) => { return request({ url: '/api/logout', method: 'post', diff --git a/src/api/monitor-center/index.ts b/src/api/monitor-center/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..eba74d8655e7fcb519c5929093c8570d23498f1e --- /dev/null +++ b/src/api/monitor-center/index.ts @@ -0,0 +1,71 @@ +import request from '/@/utils/request'; + +export function useMonitorApi() { + return { + // cluster status list + monitorList: () => { + return request({ + url: '/api/monitor/list_mon_status', + method: 'post', + }); + }, + // cluster performance + getClusterMon: (data:object) => { + return request({ + url: '/api/monitor/get_cluster_mon', + method: 'post', + data, + timeout: 30000 + }); + }, + // node performance + getNodeMon: (data:object) => { + return request({ + url: '/api/monitor/get_node_mon', + method: 'post', + data + }); + }, + // pool performance + getPoolMon: (data:object) => { + return request({ + url: '/api/monitor/get_pool_mon', + method: 'post', + data + }); + }, + // open rbd performance + openRbdMon: (data:object) => { + return request({ + url: '/api/monitor/enable_rbd_mon', + method: 'post', + data + }); + }, + // rbd performance + getRbdMon: (data:object) => { + return request({ + url: '/api/monitor/get_rbd_mon', + method: 'post', + data + }); + }, + // cephfs performance + getCephfsMon: (data:object) => { + return request({ + url: '/api/monitor/get_cephfs_mon', + method: 'post', + data, + timeout: 30000 + }); + }, + // osd performance + getOsdMon: (data:object) => { + return request({ + url: '/api/monitor/get_osd_mon', + method: 'post', + data + }); + }, + }; +} diff --git a/src/api/node/index.ts b/src/api/node/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..b5f5de1360f0e2cd9cc4116497eca911d0acb2c7 --- /dev/null +++ b/src/api/node/index.ts @@ -0,0 +1,44 @@ +import request from '/@/utils/request'; + +export function useNodeApi() { + return { + // node list + nodeList: (data:{ + pageNo?: number, + pageSize?: number, + nodeName?: string, + nodeStatus?: number, + }) => { + return request({ + url: '/api/node/list', + method: 'post', + data, + timeout: 30000 + }); + }, + // node info + nodeInfo: (params: object) => { + return request({ + url: '/api/node/get', + method: 'post', + data: params, + }); + }, + // add disk to node + addDiskToNode: (params: object) => { + return request({ + url: '/api/node/add_osd', + method: 'post', + data: params, + }); + }, + // remove disk from node + removeDiskFromNode: (params: object) => { + return request({ + url: '/api/node/remove_osd', + method: 'post', + data: params, + }); + }, + }; +} diff --git a/src/api/storage/index.ts b/src/api/storage/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebb48d0ebca3d02a281aaf4ffb714f5cb6a40cb5 --- /dev/null +++ b/src/api/storage/index.ts @@ -0,0 +1,85 @@ +import request from '/@/utils/request'; + +export function useStorageApi() { + return { + // get pool list + getPoolList: (data: { + pageNo?: number, + pageSize?: number, + fileSystem?: string, + poolName?: string, + poolType?: number | string, + rbd?: string[] | null, + isAvailable?:boolean + }) => { + return request({ + url: '/api/pool/list', + method: 'post', + data, + timeout: 30000 + }); + }, + // get pool_disk list + getPoolDiskList: (data: object) => { + return request({ + url: '/api/pool/list_used_disk', + method: 'post', + data + }); + }, + // create storage_pool + createStoragePool: (data: object) => { + return request({ + url: '/api/pool/create_pool', + method: 'post', + data + }); + }, + // add storage_pool disk + addStoragePoolDisk: (data: object) => { + return request({ + url: '/api/pool/add_disk', + method: 'post', + data + }); + }, + // remove storage_pool disk + removeStoragePoolDisk: (data: object) => { + return request({ + url: '/api/pool/remove_disk', + method: 'post', + data + }); + }, + // delete storage pool + deleteStoragePool: (data: object) => { + return request({ + url: '/api/pool/delete_pool', + method: 'post', + data + }); + }, + // add node + addNode: (data:object) => { + return request({ + url: '/api/pool/add_node', + method: 'post', + data + }); + }, + removeNode: (data:object) => { + return request({ + url: 'api/pool/remove_node', + method: 'post', + data + }); + }, + getUnusedDisk: (data:object) => { + return request({ + url: '/api/pool/list_unused_disk', + method: 'post', + data + }); + } + }; +} \ No newline at end of file diff --git a/src/api/task/index.ts b/src/api/task/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..dec1fc69e094403ba700af48d52a01ece8eca7c2 --- /dev/null +++ b/src/api/task/index.ts @@ -0,0 +1,14 @@ +import request from '/@/utils/request'; + +export function useTaskApi() { + return { + // task list + taskList: (params: object) => { + return request({ + url: '/api/task/list', + method: 'post', + data: params + }); + }, + }; +} diff --git a/src/api/user/index.ts b/src/api/user/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..fae16cb0ab115b8992bdb601d3ca1d93ef0c231e --- /dev/null +++ b/src/api/user/index.ts @@ -0,0 +1,14 @@ +import request from '/@/utils/request'; + +export function useUserApi() { + return { + // Get userinfo + userInfo: (params: object) => { + return request({ + url: '/api/getLoginUser', + method: 'post', + data: params, + }); + }, + }; +} diff --git a/src/assets/avatar.png b/src/assets/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..e16488e4534d25626ac002e04ce9c64cd834ade2 Binary files /dev/null and b/src/assets/avatar.png differ diff --git a/src/assets/dsms_logo_.png b/src/assets/dsms_logo_.png new file mode 100644 index 0000000000000000000000000000000000000000..272574d6a3eaeb31cdac923074fd7c1963b75045 Binary files /dev/null and b/src/assets/dsms_logo_.png differ diff --git a/src/assets/dsms_logo_mini.png b/src/assets/dsms_logo_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..34c0c103eb81af61c1b0246e0cbd8d8369aa1967 Binary files /dev/null and b/src/assets/dsms_logo_mini.png differ diff --git a/src/components/auth/auth.vue b/src/components/auth/auth.vue new file mode 100644 index 0000000000000000000000000000000000000000..27c1a11513040327f02d4e0235f59a61ef420dc7 --- /dev/null +++ b/src/components/auth/auth.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/auth/authAll.vue b/src/components/auth/authAll.vue new file mode 100644 index 0000000000000000000000000000000000000000..9ae99df96a1ced412607751e79e942892e8c7333 --- /dev/null +++ b/src/components/auth/authAll.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/auth/auths.vue b/src/components/auth/auths.vue new file mode 100644 index 0000000000000000000000000000000000000000..97f1a4b2ccc4f78bcf153d6b17392cc75c56195a --- /dev/null +++ b/src/components/auth/auths.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/description/index.vue b/src/components/description/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..b0540678a03702ba007f4b95337febe14eb3c448 --- /dev/null +++ b/src/components/description/index.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/src/components/echarts/line.vue b/src/components/echarts/line.vue new file mode 100644 index 0000000000000000000000000000000000000000..e00fb1292b44aa709d8cf11c7b79dd2caa034482 --- /dev/null +++ b/src/components/echarts/line.vue @@ -0,0 +1,394 @@ + + + \ No newline at end of file diff --git a/src/components/echarts/pie.vue b/src/components/echarts/pie.vue new file mode 100644 index 0000000000000000000000000000000000000000..9be51fd90566699fc6788b1ab62b1128dff6c151 --- /dev/null +++ b/src/components/echarts/pie.vue @@ -0,0 +1,145 @@ + + + \ No newline at end of file diff --git a/src/components/iconSelector/index.vue b/src/components/iconSelector/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..59c523ca7cde0813dd25194c333df39321b07aa1 --- /dev/null +++ b/src/components/iconSelector/index.vue @@ -0,0 +1,245 @@ + + + diff --git a/src/components/svgIcon/index.vue b/src/components/svgIcon/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..2011f94d454941fbf85274f992a1f165b2c6a75e --- /dev/null +++ b/src/components/svgIcon/index.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/components/task/index.vue b/src/components/task/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..a04663633eed377c7bf2b8279784930bb9d82928 --- /dev/null +++ b/src/components/task/index.vue @@ -0,0 +1,188 @@ + + + \ No newline at end of file diff --git a/src/layout/component/columnsAside.vue b/src/layout/component/columnsAside.vue new file mode 100644 index 0000000000000000000000000000000000000000..fd808fe825fbaaff52c8883a86e87494ae3eb492 --- /dev/null +++ b/src/layout/component/columnsAside.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/src/layout/component/main.vue b/src/layout/component/main.vue index 0244b6caba68964f32a71bef60a39fc3c9d8bc23..920c416280eb40424225a8e56f1d934be9fdfb35 100644 --- a/src/layout/component/main.vue +++ b/src/layout/component/main.vue @@ -14,7 +14,7 @@ transition: 'padding 0.3s ease-in-out', }" /> - + 任务列表