├── .eslintrc.cjs
├── .gitignore
├── .prettierrc.json
├── README.md
├── auto-imports.d.ts
├── components.d.ts
├── env.d.ts
├── images
├── image-20240527131428007.png
├── image-20240527131440378.png
├── image-20240527131823450.png
├── image-20240527131840315.png
├── image-20240527131920020.png
└── image-20240527131929228.png
├── index.html
├── package-lock.json
├── package.json
├── public
└── favicon.ico
├── src
├── App.vue
├── api
│ ├── home
│ │ └── index.ts
│ ├── index.ts
│ ├── poc
│ │ └── index.ts
│ ├── project
│ │ └── index.ts
│ ├── tasks
│ │ └── index.ts
│ └── user
│ │ └── index.ts
├── assets
│ ├── base.css
│ ├── login.png
│ ├── logo.svg
│ └── main.css
├── components
│ ├── Common
│ │ ├── Loading
│ │ │ ├── LoadingCss.css
│ │ │ ├── LoadingView.vue
│ │ │ └── index.ts
│ │ ├── Tables
│ │ │ ├── Config
│ │ │ │ └── config.ts
│ │ │ ├── Search
│ │ │ │ └── index.ts
│ │ │ ├── TableColumn.vue
│ │ │ ├── TablesView.vue
│ │ │ ├── index.ts
│ │ │ └── useTableContext.ts
│ │ ├── Test
│ │ │ └── TestTable.vue
│ │ ├── TestVIew.vue
│ │ └── WaterMark
│ │ │ ├── WaterMark.ts
│ │ │ └── index.ts
│ ├── HeaDer.vue
│ ├── Project
│ │ ├── ProjectList.vue
│ │ ├── ProjectVulInfoWinodws.vue
│ │ └── SideBar.vue
│ ├── RouterBreadcrumd.vue
│ ├── SideBar.vue
│ ├── TagsView.vue
│ ├── Tasks
│ │ └── CreateTasksWindows.vue
│ └── Users
│ │ └── CreateUserWindows.vue
├── main.ts
├── plugins
│ ├── index.ts
│ └── loading
│ │ └── index.ts
├── router
│ └── index.ts
├── stores
│ ├── counter.ts
│ ├── sidebar.ts
│ ├── tags.ts
│ ├── taskinfo.ts
│ ├── user.ts
│ └── userpermiss.ts
├── type
│ └── table
│ │ └── index.d.ts
├── utils
│ └── request
│ │ └── index.ts
└── views
│ ├── HomeView.vue
│ ├── echarts
│ ├── CpuEcharts.vue
│ ├── MemoryEcharts.vue
│ └── NetworkEcharts.vue
│ ├── error
│ ├── 401View.vue
│ └── 404View.vue
│ ├── home
│ └── DashBoard.vue
│ ├── login
│ └── LoginView.vue
│ ├── poc
│ ├── PocListView.vue
│ └── ts
│ │ └── PocList.ts
│ ├── project
│ ├── ProJectView.vue
│ └── View
│ │ ├── ProJectInfo.vue
│ │ ├── ProJectList.vue
│ │ ├── ProJectVulList.vue
│ │ └── ts
│ │ ├── ProJectVul.ts
│ │ ├── TaskCelery.ts
│ │ └── TaskInfo.ts
│ ├── tasks
│ ├── TasksCeleryView.vue
│ ├── TasksReportView.vue
│ ├── TasksView.vue
│ └── ts
│ │ ├── TaskCelery.ts
│ │ ├── TaskReport.ts
│ │ └── Tasks.ts
│ └── user
│ ├── ResetPassword.vue
│ ├── UserInfo.vue
│ ├── UserView.vue
│ └── ts
│ └── UserList.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
├── tsconfig.vitest.json
├── vite.config.ts
├── vitest.config.ts
├── web-types.json
└── yarn.lock
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | require('@rushstack/eslint-patch/modern-module-resolution')
3 |
4 | module.exports = {
5 | root: true,
6 | 'extends': [
7 | 'plugin:vue/vue3-essential',
8 | 'eslint:recommended',
9 | '@vue/eslint-config-typescript',
10 | '@vue/eslint-config-prettier/skip-formatting'
11 | ],
12 | overrides: [
13 | {
14 | files: [
15 | 'cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}',
16 | 'cypress/support/**/*.{js,ts,jsx,tsx}'
17 | ],
18 | 'extends': [
19 | 'plugin:cypress/recommended'
20 | ]
21 | }
22 | ],
23 | parserOptions: {
24 | ecmaVersion: 'latest'
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 | .vscode
17 | /cypress/videos/
18 | /cypress/screenshots/
19 |
20 | # Editor directories and files
21 | .idea
22 | *.suo
23 | *.ntvs*
24 | *.njsproj
25 | *.sln
26 | *.sw?
27 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/prettierrc",
3 | "semi": false,
4 | "tabWidth": 2,
5 | "singleQuote": true,
6 | "printWidth": 100,
7 | "trailingComma": "none"
8 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # iotscan-web
2 |
3 | 这是一个基于vue3+element-plus+vite4+pinia开发一个资产测绘平台+漏洞扫描的前端项目,提供多种自定义的开发,如果你的扫描器或资产测绘平台不追求UI仅仅是为了快速开发,可以参考此项目。
4 |
5 | ## Project Setup
6 |
7 | ```shell
8 | npm install
9 | ```
10 |
11 | ### Compile and Hot-Reload for Development
12 |
13 | ```shell
14 | npm run dev
15 | ```
16 |
17 | ### Type-Check, Compile and Minify for Production
18 |
19 | ```shell
20 | npm run build
21 | ```
22 |
23 | ### Run Unit Tests with [Vitest](https://vitest.dev/)
24 |
25 | ```shell
26 | npm run test:unit
27 | ```
28 |
29 | ### Lint with [ESLint](https://eslint.org/)
30 |
31 | ```shell
32 | npm run lint
33 | ```
34 |
35 | ### Preview使用
36 |
37 | ```shell
38 | # stage environment
39 | pnpm preview:stage
40 |
41 | # prod environment
42 | pnpm preview:prod
43 | ```
44 |
45 | ## 界面展示
46 |
47 | 
48 |
49 | 
50 |
51 | 
52 |
53 | 
54 |
55 | 
56 |
57 | 
58 |
59 |
--------------------------------------------------------------------------------
/auto-imports.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | /* prettier-ignore */
3 | // @ts-nocheck
4 | // noinspection JSUnusedGlobalSymbols
5 | // Generated by unplugin-auto-import
6 | export {}
7 | declare global {
8 | const ElButton: typeof import('element-plus/es')['ElButton']
9 | const ElInput: typeof import('element-plus/es')['ElInput']
10 | const ElMessage: typeof import('element-plus/es')['ElMessage']
11 | const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
12 | const ElTag: typeof import('element-plus/es')['ElTag']
13 | }
14 |
--------------------------------------------------------------------------------
/components.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | /* prettier-ignore */
3 | // @ts-nocheck
4 | // Generated by unplugin-vue-components
5 | // Read more: https://github.com/vuejs/core/pull/3399
6 | export {}
7 |
8 | declare module 'vue' {
9 | export interface GlobalComponents {
10 | CreateTasksWindows: typeof import('./src/components/Tasks/CreateTasksWindows.vue')['default']
11 | CreateUserWindows: typeof import('./src/components/Users/CreateUserWindows.vue')['default']
12 | ElAvatar: typeof import('element-plus/es')['ElAvatar']
13 | ElButton: typeof import('element-plus/es')['ElButton']
14 | ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
15 | ElCard: typeof import('element-plus/es')['ElCard']
16 | ElCol: typeof import('element-plus/es')['ElCol']
17 | ElCollapse: typeof import('element-plus/es')['ElCollapse']
18 | ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
19 | ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
20 | ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
21 | ElDialog: typeof import('element-plus/es')['ElDialog']
22 | ElDivider: typeof import('element-plus/es')['ElDivider']
23 | ElDropdown: typeof import('element-plus/es')['ElDropdown']
24 | ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
25 | ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
26 | ElEmpty: typeof import('element-plus/es')['ElEmpty']
27 | ElForm: typeof import('element-plus/es')['ElForm']
28 | ElFormItem: typeof import('element-plus/es')['ElFormItem']
29 | ElIcon: typeof import('element-plus/es')['ElIcon']
30 | ElImage: typeof import('element-plus/es')['ElImage']
31 | ElInput: typeof import('element-plus/es')['ElInput']
32 | ElLink: typeof import('element-plus/es')['ElLink']
33 | ElMenu: typeof import('element-plus/es')['ElMenu']
34 | ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
35 | ElOption: typeof import('element-plus/es')['ElOption']
36 | ElPagination: typeof import('element-plus/es')['ElPagination']
37 | ElProgress: typeof import('element-plus/es')['ElProgress']
38 | ElRadio: typeof import('element-plus/es')['ElRadio']
39 | ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
40 | ElRow: typeof import('element-plus/es')['ElRow']
41 | ElSelect: typeof import('element-plus/es')['ElSelect']
42 | ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
43 | ElSwitch: typeof import('element-plus/es')['ElSwitch']
44 | ElTable: typeof import('element-plus/es')['ElTable']
45 | ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
46 | ElTabPane: typeof import('element-plus/es')['ElTabPane']
47 | ElTabs: typeof import('element-plus/es')['ElTabs']
48 | ElTag: typeof import('element-plus/es')['ElTag']
49 | ElTooltip: typeof import('element-plus/es')['ElTooltip']
50 | HeaDer: typeof import('./src/components/HeaDer.vue')['default']
51 | LoadingView: typeof import('./src/components/Common/Loading/LoadingView.vue')['default']
52 | ProjectList: typeof import('./src/components/Project/ProjectList.vue')['default']
53 | ProjectVulInfoWinodws: typeof import('./src/components/Project/ProjectVulInfoWinodws.vue')['default']
54 | RouterBreadcrumd: typeof import('./src/components/RouterBreadcrumd.vue')['default']
55 | RouterLink: typeof import('vue-router')['RouterLink']
56 | RouterView: typeof import('vue-router')['RouterView']
57 | SideBar: typeof import('./src/components/SideBar.vue')['default']
58 | TableColumn: typeof import('./src/components/Common/Tables/TableColumn.vue')['default']
59 | TablesView: typeof import('./src/components/Common/Tables/TablesView.vue')['default']
60 | TagsView: typeof import('./src/components/TagsView.vue')['default']
61 | TestTable: typeof import('./src/components/Common/Test/TestTable.vue')['default']
62 | TestVIew: typeof import('./src/components/Common/TestVIew.vue')['default']
63 | }
64 | export interface ComponentCustomProperties {
65 | vLoading: typeof import('element-plus/es')['ElLoadingDirective']
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
当前cpu使用率
74 |当前使用:{{ Device_Status.memory_usage }} G
80 |空闲:{{ Device_Status.memory_free_size }} G
81 |总共:{{ Device_Status.memory_size }} G
82 |当前使用:{{ Device_Status.disk_usage }} G
88 |空闲:{{ Device_Status.disk_free_size }} G
89 |总共:{{ Device_Status.disk_size }} G
90 |正在运行进程:{{ Device_Status.process_count }} 个
96 |