├── .env.development ├── .env.production ├── .env.test ├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .husky ├── commit-msg └── pre-commit ├── .prettierignore ├── .prettierrc.json ├── .stylelintignore ├── .stylelintrc.cjs ├── .vscode └── extensions.json ├── README.md ├── auto-imports.d.ts ├── commitlint.config.cjs ├── components.d.ts ├── dist ├── Error404.svg ├── assets │ ├── dropdown-77bdf979.js │ ├── dropdown-77bdf979.js.map │ ├── el-button-2cb60ae5.css │ ├── el-button-ce6a7349.js │ ├── el-button-ce6a7349.js.map │ ├── el-checkbox-39396082.css │ ├── el-checkbox-7864edf7.js │ ├── el-checkbox-7864edf7.js.map │ ├── el-popover-184dd66d.js │ ├── el-popover-184dd66d.js.map │ ├── el-popover-9f471fc1.css │ ├── el-scrollbar-47c15925.js │ ├── el-scrollbar-47c15925.js.map │ ├── el-scrollbar-50ffe050.css │ ├── el-tag-5dc68ec4.css │ ├── el-tag-87ada828.js │ ├── el-tag-87ada828.js.map │ ├── el-tooltip-01852e75.js │ ├── el-tooltip-01852e75.js.map │ ├── el-tooltip-b17b6765.css │ ├── index-02cad9e4.js │ ├── index-02cad9e4.js.map │ ├── index-0944f19a.js │ ├── index-0944f19a.js.map │ ├── index-0a73b87f.css │ ├── index-0a9f0221.css │ ├── index-0c578ea2.js │ ├── index-0c578ea2.js.map │ ├── index-15a0175d.css │ ├── index-15ba9053.css │ ├── index-19d86c77.js │ ├── index-19d86c77.js.map │ ├── index-1b8b91fa.css │ ├── index-1f958002.css │ ├── index-2733eab0.js │ ├── index-2733eab0.js.map │ ├── index-2e1405a8.js │ ├── index-2e1405a8.js.map │ ├── index-2f425c93.js │ ├── index-2f425c93.js.map │ ├── index-3c6d6037.js │ ├── index-3c6d6037.js.map │ ├── index-41323360.js │ ├── index-41323360.js.map │ ├── index-4ab7df10.css │ ├── index-5157ca21.js │ ├── index-5157ca21.js.map │ ├── index-533eeab1.css │ ├── index-59d7491a.js │ ├── index-59d7491a.js.map │ ├── index-60c3dbff.css │ ├── index-643e088d.css │ ├── index-6744f3b8.css │ ├── index-71872fca.css │ ├── index-789817b8.js │ ├── index-789817b8.js.map │ ├── index-85c0c3d6.js │ ├── index-85c0c3d6.js.map │ ├── index-861b5711.css │ ├── index-87ef9524.js │ ├── index-87ef9524.js.map │ ├── index-8e53beb4.js │ ├── index-8e53beb4.js.map │ ├── index-8ffda740.css │ ├── index-9a3907bd.css │ ├── index-a197a568.js │ ├── index-a197a568.js.map │ ├── index-a24e27d3.js │ ├── index-a24e27d3.js.map │ ├── index-a7883952.css │ ├── index-a881b489.css │ ├── index-ac0a7fa2.css │ ├── index-af569a1a.js │ ├── index-af569a1a.js.map │ ├── index-b4b34e56.js │ ├── index-b4b34e56.js.map │ ├── index-c29f998c.js │ ├── index-c29f998c.js.map │ ├── index-c5ce11fa.css │ ├── index-cd4f1ed4.css │ ├── index-ce6e9686.css │ ├── index-d0a639e4.css │ ├── index-d55cf406.js │ ├── index-d55cf406.js.map │ ├── index-e713de8e.js │ ├── index-e713de8e.js.map │ ├── index-ef1dbbe3.css │ ├── index-f1908a3d.js │ ├── index-f1908a3d.js.map │ ├── index-f5221158.css │ ├── index-f63efcef.js │ ├── index-f63efcef.js.map │ ├── index-f9342d74.js │ ├── index-f9342d74.js.map │ ├── index-ff9f8535.css │ ├── logo_title_white-357c254f.js │ ├── logo_title_white-357c254f.js.map │ ├── use-form-item-c41ec946.js │ ├── use-form-item-c41ec946.js.map │ ├── use-global-config-40970ff6.js │ ├── use-global-config-40970ff6.js.map │ ├── user-a311e178.css │ ├── user-f5598cef.js │ ├── user-f5598cef.js.map │ ├── vnode-2586cffd.js │ └── vnode-2586cffd.js.map ├── index.html ├── logo_title_white.svg └── thingsboard.ico ├── index.html ├── mock ├── login.ts ├── mockProdServer.ts └── vite-plugin-mock.d.ts ├── package.json ├── proxy.conf.ts ├── public ├── Error404.svg ├── logo_title_white.svg └── thingsboard.ico ├── scripts └── preinstall.js ├── src ├── App.vue ├── api │ ├── alarm │ │ ├── index.ts │ │ └── type.ts │ ├── api_url.ts │ ├── common_type.ts │ ├── index.ts │ └── user │ │ ├── login.ts │ │ ├── logout.ts │ │ └── type.ts ├── assets │ └── icons │ │ ├── advanced.svg │ │ ├── alarm.svg │ │ ├── api.svg │ │ ├── asset.svg │ │ ├── assetconfig.svg │ │ ├── auditlog.svg │ │ ├── bell.svg │ │ ├── config.svg │ │ ├── dashboard.svg │ │ ├── device.svg │ │ ├── deviceconfig.svg │ │ ├── edgemanage.svg │ │ ├── entity.svg │ │ ├── entitys.svg │ │ ├── fire.svg │ │ ├── fullscreen.svg │ │ ├── home.svg │ │ ├── instances.svg │ │ ├── more.svg │ │ ├── notification.svg │ │ ├── offscreen.svg │ │ ├── ota.svg │ │ ├── resource.svg │ │ ├── resources.svg │ │ ├── rulechain.svg │ │ ├── rulechaintemplete.svg │ │ ├── secure.svg │ │ ├── setting.svg │ │ ├── user.svg │ │ ├── version.svg │ │ └── widget.svg ├── component.d.ts ├── components │ ├── common_table │ │ ├── Table.vue │ │ ├── TableHeader.vue │ │ ├── TablePager.vue │ │ └── index.vue │ ├── fade_transition │ │ └── index.vue │ ├── index.ts │ ├── side_bar_menu │ │ └── index.vue │ ├── svg_icon │ │ └── index.vue │ └── top_breadcrumb │ │ └── index.vue ├── layouts │ ├── LayoutAside.vue │ ├── LayoutHeader.vue │ ├── LayoutMain.vue │ └── index.vue ├── main.ts ├── nprogress.d.ts ├── router │ ├── dynamicRoutes.ts │ ├── index.ts │ └── routes.ts ├── stores │ ├── alarm.ts │ ├── index.ts │ └── user.ts ├── styles │ ├── index.scss │ └── reset.scss ├── utils │ └── http.ts ├── views │ ├── 404 │ │ └── index.vue │ ├── advanced_feature │ │ ├── ota │ │ │ └── index.vue │ │ └── version_control │ │ │ └── index.vue │ ├── alarm │ │ └── index.vue │ ├── api_statistics │ │ └── index.vue │ ├── config │ │ ├── asset_config │ │ │ └── index.vue │ │ └── device_config │ │ │ └── index.vue │ ├── dashboard │ │ └── index.vue │ ├── edge_manage │ │ ├── instances │ │ │ └── index.vue │ │ └── rulechain_template │ │ │ └── index.vue │ ├── entity │ │ ├── asset │ │ │ └── index.vue │ │ ├── device │ │ │ └── index.vue │ │ └── entity_view │ │ │ └── index.vue │ ├── home │ │ ├── index.vue │ │ ├── max_card │ │ │ └── index.vue │ │ └── mini_card │ │ │ └── index.vue │ ├── login │ │ └── index.vue │ ├── notification_center │ │ └── index.vue │ ├── resources │ │ ├── resource │ │ │ └── index.vue │ │ └── widget │ │ │ └── index.vue │ ├── rulechain │ │ └── index.vue │ ├── secure │ │ └── audit_log │ │ │ └── index.vue │ ├── settings │ │ └── index.vue │ └── user │ │ └── index.vue └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json ├── user_data.json ├── vite.config.ts └── yarn.lock /.env.development: -------------------------------------------------------------------------------- 1 | VITE_PROXY_URL = "http://localhost:8080" 2 | VITE_BASE_API_PREFIX = "/api" -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | VITE_BASE_API_PREFIX = "/api" -------------------------------------------------------------------------------- /.env.test: -------------------------------------------------------------------------------- 1 | VITE_PROXY_URL = "" 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2021: true, 5 | node: true, 6 | jest: true, 7 | }, 8 | /* 指定如何解析语法 */ 9 | parser: 'vue-eslint-parser', 10 | /** 优先级低于 parse 的语法解析配置 */ 11 | parserOptions: { 12 | ecmaVersion: 'latest', 13 | sourceType: 'module', 14 | parser: '@typescript-eslint/parser', 15 | jsxPragma: 'React', 16 | ecmaFeatures: { 17 | jsx: true, 18 | }, 19 | }, 20 | /* 继承已有的规则 */ 21 | extends: [ 22 | 'eslint:recommended', 23 | 'plugin:vue/vue3-essential', 24 | 'plugin:@typescript-eslint/recommended', 25 | 'plugin:prettier/recommended', 26 | ], 27 | plugins: ['vue', '@typescript-eslint'], 28 | /* 29 | * "off" 或 0 ==> 关闭规则 30 | * "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行) 31 | * "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错) 32 | */ 33 | rules: { 34 | // eslint(https://eslint.bootcss.com/docs/rules/) 35 | 'no-var': 'error', // 要求使用 let 或 const 而不是 var 36 | 'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行 37 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 38 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 39 | 'no-unexpected-multiline': 'error', // 禁止空余的多行 40 | 'no-useless-escape': 'off', // 禁止不必要的转义字符 41 | 42 | // typeScript (https://typescript-eslint.io/rules) 43 | '@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量 44 | '@typescript-eslint/prefer-ts-expect-error': 'error', // 禁止使用 @ts-ignore 45 | '@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型 46 | '@typescript-eslint/no-non-null-assertion': 'off', 47 | '@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间。 48 | '@typescript-eslint/semi': 'off', 49 | 50 | // eslint-plugin-vue (https://eslint.vuejs.org/rules/) 51 | 'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词 52 | 'vue/script-setup-uses-vars': 'error', // 防止\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,MACD,EACR,CACA,MAAA,QACS,KAAA,MACD,CACR,EACF,UAAA,GACW,KAAA,QACL,WAAA,CACM,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,UACkB"} -------------------------------------------------------------------------------- /dist/assets/index-0944f19a.js: -------------------------------------------------------------------------------- 1 | import"./el-scrollbar-47c15925.js";import"./el-tooltip-01852e75.js";import{E as i}from"./el-popover-184dd66d.js";import{E as n}from"./el-button-ce6a7349.js";import{C as l}from"./index-41323360.js";import{d as c,a as _,c as m,B as e,w as t,C as d,D as f,f as u,u as r,W as s,ac as g,ad as b,Z as x}from"./index-5157ca21.js";import"./use-form-item-c41ec946.js";import"./dropdown-77bdf979.js";import"./use-global-config-40970ff6.js";import"./el-checkbox-7864edf7.js";import"./el-tag-87ada828.js";const v={id:"container"},h={id:"filter"},y=c({__name:"index",setup(k){const p={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"发起者",prop:"name"},{label:"类型",prop:"type"},{label:"严重程度",prop:"severity"},{label:"Assignee",prop:"assignee"},{label:"状态",prop:"status"},{fixed:"right",label:"详情",prop:"detail"}],maxHeight:"",name:"",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未发现告警"};return(B,C)=>{const o=n,a=i;return _(),m("main",v,[e(l,d(f(p)),{table_head_left:t(()=>[u("section",h,[e(a,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(o,{class:"m-2",icon:r(g)},{default:t(()=>[s("Filter: 激活")]),_:1},8,["icon"])]),_:1}),e(a,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(o,{class:"m-2",icon:r(b)},{default:t(()=>[s("For All Time")]),_:1},8,["icon"])]),_:1})])]),_:1},16)])}}});const I=x(y,[["__scopeId","data-v-85a13664"]]);export{I as default}; 2 | //# sourceMappingURL=index-0944f19a.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-0944f19a.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-0944f19a.js","sources":["../../src/views/alarm/src/views/alarm/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"mjBAwBA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,MACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,UACD,EACR,CACA,MAAA,WACS,KAAA,UACD,EACR,CACA,MAAA,KACS,KAAA,QACD,EACR,CACA,MAAA,QACS,MAAA,KACA,KAAA,QACD,CACR,EACF,UAAA,GACW,KAAA,GACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-0a73b87f.css: -------------------------------------------------------------------------------- 1 | #container[data-v-252eab1e]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-252eab1e]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-252eab1e]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-0a9f0221.css: -------------------------------------------------------------------------------- 1 | #container[data-v-5f1e31e8]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-5f1e31e8]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-5f1e31e8]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-0c578ea2.js: -------------------------------------------------------------------------------- 1 | import{E as n}from"./el-scrollbar-47c15925.js";import{C as p}from"./index-41323360.js";import{d as s,a as r,c as l,B as e,w as a,C as _,D as i,u as c,ae as m,Z as d}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./el-tooltip-01852e75.js";const u={id:"container"},f=s({__name:"index",setup(b){const t={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"标题",prop:"title"},{label:"分配给客户",prop:"customr"},{label:"公开",prop:"public"}],maxHeight:"",name:"仪表板库",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未发现仪表板"};return(x,g)=>{const o=n;return r(),l("main",u,[e(p,_(i(t)),{table_column:a(()=>[e(o,null,{default:a(()=>[e(c(m))]),_:1})]),_:1},16)])}}});const E=d(f,[["__scopeId","data-v-eb70865e"]]);export{E as default}; 2 | //# sourceMappingURL=index-0c578ea2.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-0c578ea2.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-0c578ea2.js","sources":["../../src/views/dashboard/src/views/dashboard/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,QACS,KAAA,SACD,EACR,CACA,MAAA,KACS,KAAA,QACD,CACR,EACF,UAAA,GACW,KAAA,OACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,QACkB"} -------------------------------------------------------------------------------- /dist/assets/index-15a0175d.css: -------------------------------------------------------------------------------- 1 | .container[data-v-e79510d8]{display:flex;background-color:#fff;flex-direction:column} 2 | -------------------------------------------------------------------------------- /dist/assets/index-15ba9053.css: -------------------------------------------------------------------------------- 1 | #container[data-v-66cd12b8]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-66cd12b8]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-66cd12b8]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-1f958002.css: -------------------------------------------------------------------------------- 1 | #container[data-v-04e2942c]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-04e2942c]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-04e2942c]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-2733eab0.js: -------------------------------------------------------------------------------- 1 | import{Z as e,a as _,c}from"./index-5157ca21.js";const n={},t={class:"container"};function s(a,o){return _(),c("div",t)}const d=e(n,[["render",s],["__scopeId","data-v-8af4132b"]]);export{d as default}; 2 | //# sourceMappingURL=index-2733eab0.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-2733eab0.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-2733eab0.js","sources":["../../src/views/notification_center/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["_sfc_render","_ctx","_cache"],"mappings":"kFAGE,SAAAA,EAAAC,EAAAC,EAAA"} -------------------------------------------------------------------------------- /dist/assets/index-2e1405a8.js: -------------------------------------------------------------------------------- 1 | import{E as p}from"./el-scrollbar-47c15925.js";import{C as i}from"./index-41323360.js";import"./el-tooltip-01852e75.js";import{E as l}from"./el-popover-184dd66d.js";import{E as _}from"./el-button-ce6a7349.js";import{d as c,a as m,c as d,B as e,w as t,C as u,D as f,f as b,u as o,W as g,ac as x,af as h,Z as v}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./dropdown-77bdf979.js";import"./use-global-config-40970ff6.js";const E={id:"container"},y={id:"filter"},B=c({__name:"index",setup(C){const a={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"标题",prop:"title"},{label:"电子邮件",prop:"email"},{label:"国家",prop:"country"},{label:"城市",prop:"city"}],maxHeight:"",name:"客户",pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未发现客户"};return(z,D)=>{const r=_,n=l,s=p;return m(),d("main",E,[e(i,u(f(a)),{table_head_left:t(()=>[b("section",y,[e(n,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(r,{class:"m-2",icon:o(x)},{default:t(()=>[g("Device Filter")]),_:1},8,["icon"])]),_:1})])]),table_head_right:t(()=>[e(s,null,{default:t(()=>[e(o(h))]),_:1})]),_:1},16)])}}});const Z=v(B,[["__scopeId","data-v-b4b1d3db"]]);export{Z as default}; 2 | //# sourceMappingURL=index-2e1405a8.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-2e1405a8.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-2e1405a8.js","sources":["../../src/views/user/src/views/user/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"+jBAsBA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,OACS,KAAA,OACD,EACR,CACA,MAAA,KACS,KAAA,SACD,EACR,CACA,MAAA,KACS,KAAA,MACD,CACR,EACF,UAAA,GACW,KAAA,KACL,WAAA,CACM,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-2f425c93.js: -------------------------------------------------------------------------------- 1 | import{E as p}from"./el-scrollbar-47c15925.js";import{C as _}from"./index-41323360.js";import"./el-tooltip-01852e75.js";import{E as i}from"./el-popover-184dd66d.js";import{E as c}from"./el-button-ce6a7349.js";import{d as l,a as m,c as d,B as e,w as t,C as f,D as u,f as b,u as o,W as g,ac as x,af as h,Z as v}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./dropdown-77bdf979.js";import"./use-global-config-40970ff6.js";const E={id:"container"},B={id:"filter"},C=l({__name:"index",setup(y){const a={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"名称",prop:"name"},{label:"说明",prop:"desc"},{label:"默认",prop:"default"}],maxHeight:"",name:"资产配置",pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到资产配置"};return(z,D)=>{const r=c,n=i,s=p;return m(),d("main",E,[e(_,f(u(a)),{table_head_left:t(()=>[b("section",B,[e(n,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(r,{class:"m-2",icon:o(x)},{default:t(()=>[g("Device Filter")]),_:1},8,["icon"])]),_:1})])]),table_head_right:t(()=>[e(s,null,{default:t(()=>[e(o(h))]),_:1})]),_:1},16)])}}});const Z=v(C,[["__scopeId","data-v-1d3b360f"]]);export{Z as default}; 2 | //# sourceMappingURL=index-2f425c93.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-2f425c93.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-2f425c93.js","sources":["../../src/views/config/asset_config/src/views/config/asset_config/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"+jBAsBA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,SACD,CACR,EACF,UAAA,GACW,KAAA,OACL,WAAA,CACM,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,SACkB"} -------------------------------------------------------------------------------- /dist/assets/index-4ab7df10.css: -------------------------------------------------------------------------------- 1 | #container[data-v-7ca12e35]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-7ca12e35]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-7ca12e35]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-533eeab1.css: -------------------------------------------------------------------------------- 1 | #container[data-v-5d8edbd3]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-5d8edbd3]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-5d8edbd3]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-59d7491a.js: -------------------------------------------------------------------------------- 1 | import{E as s}from"./el-scrollbar-47c15925.js";import{C as l}from"./index-41323360.js";import"./el-tooltip-01852e75.js";import{E as c}from"./el-popover-184dd66d.js";import{E as i}from"./el-button-ce6a7349.js";import{d as _,a as m,c as d,B as e,w as t,C as f,D as u,f as b,u as o,W as g,ac as x,af as h,Z as v}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./dropdown-77bdf979.js";import"./use-global-config-40970ff6.js";const E={id:"container"},B={id:"filter"},C=_({__name:"index",setup(y){const a={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"名称",prop:"name"},{label:"资产配置",prop:"config"},{label:"标签",prop:"label"},{label:"客户",prop:"customr"},{label:"公开",prop:"public"}],maxHeight:"",name:"资产",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未发现资产"};return(z,D)=>{const r=i,n=c,p=s;return m(),d("main",E,[e(l,f(u(a)),{table_head_left:t(()=>[b("section",B,[e(n,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(r,{class:"m-2",icon:o(x)},{default:t(()=>[g("Device Filter")]),_:1},8,["icon"])]),_:1})])]),table_head_right:t(()=>[e(p,null,{default:t(()=>[e(o(h))]),_:1})]),_:1},16)])}}});const Z=v(C,[["__scopeId","data-v-7ca12e35"]]);export{Z as default}; 2 | //# sourceMappingURL=index-59d7491a.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-59d7491a.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-59d7491a.js","sources":["../../src/views/entity/asset/src/views/entity/asset/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"+jBAsBA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,QACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,KACS,KAAA,SACD,EACR,CACA,MAAA,KACS,KAAA,QACD,CACR,EACF,UAAA,GACW,KAAA,KACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-60c3dbff.css: -------------------------------------------------------------------------------- 1 | #container[data-v-b4b1d3db]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-b4b1d3db]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-b4b1d3db]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-643e088d.css: -------------------------------------------------------------------------------- 1 | .fade-enter-active[data-v-1d780b32],.fade-leave-active[data-v-1d780b32]{transition:opacity .5s}.fade-enter[data-v-1d780b32],.fade-leave-to[data-v-1d780b32]{opacity:0}.bounce-enter-active[data-v-1d780b32]{animation:bounce-in-1d780b32 .5s}.bounce-leave-active[data-v-1d780b32]{animation:bounce-in-1d780b32 .5s reverse}@keyframes bounce-in-1d780b32{0%{transform:scale(0)}50%{transform:scale(1.5)}to{transform:scale(1)}}.container[data-v-7090950c]{display:flex;width:100%;height:100vh;justify-content:center;align-items:center;background-color:#eee}.container #login_container[data-v-7090950c]{background-color:#305680;width:35%;height:800px;overflow-y:hidden;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.container #login_container #login_logo[data-v-7090950c]{width:50%;height:60px;margin:30px auto}.container #login_container #login_logo #img[data-v-7090950c]{width:100%}.container #login_container #label[data-v-7090950c]{display:block;width:100%;color:#fff;text-align:center}.container #login_container #login_btn[data-v-7090950c]{margin-top:50px;display:flex;flex-direction:column;align-items:stretch}.container #login_container #login_btn .elb[data-v-7090950c]{margin:10px 20px;font-weight:700}.container #login_container #login_divider[data-v-7090950c]{margin:10px 20px;display:flex;align-items:center;justify-content:space-between;color:#fff}.container #login_container #login_divider .left[data-v-7090950c],.container #login_container #login_divider .right[data-v-7090950c]{height:2px;width:45%}.container #login_container #login_form[data-v-7090950c]{margin:10px 20px}.container #login_container #login_form[data-v-7090950c] .el-input__wrapper{margin:25px 0}.container #login_container #login_operate[data-v-7090950c]{margin:10px 20px;display:flex;align-items:center;justify-content:space-between}.container #login_container #sign_up[data-v-7090950c]{margin:50px 20px}.container #login_container #sign_up #registry_operate[data-v-7090950c]{display:flex;justify-content:space-between;align-items:center}.container #login_container #sign_up #sign_up_title[data-v-7090950c]{color:#fff;font-weight:700;font-size:24px;margin:20px}.container #login_container #sign_up #fullname[data-v-7090950c]{display:flex;align-items:center;justify-content:space-between;margin:10px 0}.container #login_container #sign_up[data-v-7090950c] .el-input__wrapper{margin:10px 0}.container #login_container #login_submit[data-v-7090950c]{margin:40px 20px 10px}.container #login_container #submit[data-v-7090950c],.container #login_container #registry[data-v-7090950c]{margin:10px 0;width:100%;background-color:#f79a7e;border:none;padding:20px;border-radius:5px;cursor:pointer}@media (width <= 768px){.container #login_container[data-v-7090950c]{width:80%}}@media (width >= 1920px){.container #login_container[data-v-7090950c]{width:20%}}.v-enter-active[data-v-7090950c],.v-leave-active[data-v-7090950c]{transition:opacity .5s ease}.v-enter-from[data-v-7090950c],.v-leave-to[data-v-7090950c]{opacity:0} 2 | -------------------------------------------------------------------------------- /dist/assets/index-71872fca.css: -------------------------------------------------------------------------------- 1 | #container[data-v-bdd4c15b]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-bdd4c15b]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-bdd4c15b]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-789817b8.js: -------------------------------------------------------------------------------- 1 | import{E as s}from"./el-scrollbar-47c15925.js";import{C as p}from"./index-41323360.js";import{d as n,a as r,c as _,B as e,w as t,C as i,D as l,u as c,af as m,Z as d}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./el-tooltip-01852e75.js";const u={id:"container"},f=n({__name:"index",setup(b){const a={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"标题",prop:"title"},{label:"资源类型",prop:"type"},{label:"系统",prop:"system"}],maxHeight:"",name:"资源库",pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到资源"};return(x,g)=>{const o=s;return r(),_("main",u,[e(p,i(l(a)),{table_head_right:t(()=>[e(o,null,{default:t(()=>[e(c(m))]),_:1})]),_:1},16)])}}});const E=d(f,[["__scopeId","data-v-5d8edbd3"]]);export{E as default}; 2 | //# sourceMappingURL=index-789817b8.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-789817b8.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-789817b8.js","sources":["../../src/views/resources/resource/src/views/resources/resource/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,OACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,QACD,CACR,EACF,UAAA,GACW,KAAA,MACL,WAAA,CACM,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-85c0c3d6.js: -------------------------------------------------------------------------------- 1 | import{E as p}from"./el-scrollbar-47c15925.js";import{C as n}from"./index-41323360.js";import{d as r,a as s,c as i,B as e,w as a,C as l,D as _,u as c,af as m,Z as d}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./el-tooltip-01852e75.js";const u={id:"container"},f=r({__name:"index",setup(x){const t={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"名称",prop:"name"},{label:"实体视图类型",prop:"type"},{label:"客户",prop:"customr"},{fixed:"right",label:"公开",prop:"public"}],maxHeight:"",name:"实体视图",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未发现实体视图"};return(b,g)=>{const o=p;return s(),i("main",u,[e(n,l(_(t)),{table_head_right:a(()=>[e(o,null,{default:a(()=>[e(c(m))]),_:1})]),_:1},16)])}}});const E=d(f,[["__scopeId","data-v-5f1e31e8"]]);export{E as default}; 2 | //# sourceMappingURL=index-85c0c3d6.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-85c0c3d6.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-85c0c3d6.js","sources":["../../src/views/entity/entity_view/src/views/entity/entity_view/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,SACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,SACD,EACR,CACA,MAAA,QACS,MAAA,KACA,KAAA,QACD,CACR,EACF,UAAA,GACW,KAAA,OACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,SACkB"} -------------------------------------------------------------------------------- /dist/assets/index-861b5711.css: -------------------------------------------------------------------------------- 1 | #bg[data-v-8a7c0baa]{width:100%;height:100%;margin:auto} 2 | -------------------------------------------------------------------------------- /dist/assets/index-87ef9524.js: -------------------------------------------------------------------------------- 1 | import{f as R}from"./el-scrollbar-47c15925.js";import{E as J,a as O}from"./el-checkbox-7864edf7.js";import{E as T}from"./el-button-ce6a7349.js";import{_ as F}from"./logo_title_white-357c254f.js";import{d as h,a as y,g as $,w as i,b as L,T as A,Z as C,N as w,r as b,c as V,B as s,f as l,W as u,u as t,a2 as v,j as G,a3 as j,a4 as k,a5 as I,$ as D,a0 as M}from"./index-5157ca21.js";import{u as W}from"./user-f5598cef.js";import"./use-form-item-c41ec946.js";import"./use-global-config-40970ff6.js";const Z=h({__name:"index",props:{name:{default:"fade",type:String},mode:{default:"out-in",type:String}},setup(_){const p=_;return(a,d)=>(y(),$(A,{name:p.name,mode:p.mode},{default:i(()=>[L(a.$slots,"default",{},void 0,!0)]),_:3},8,["name","mode"]))}});const q=C(Z,[["__scopeId","data-v-1d780b32"]]),g=_=>(D("data-v-7090950c"),_=_(),M(),_),H={class:"container"},K=g(()=>l("header",{id:"login_logo"},[l("img",{id:"img","aria-label":"logo",src:F,alt:"login_icon"})],-1)),P=g(()=>l("label",{id:"label"},"Log in to see ThingsBoard in action",-1)),Q={id:"login_btn"},X=g(()=>l("fieldset",{id:"login_divider"},[l("section",{class:"left"}),l("section",{class:"center"},"或"),l("section",{class:"right"})],-1)),Y={key:0,id:"sign_up"},ee={id:"registry_operate"},se=g(()=>l("legend",{id:"sign_up_title"},"注册账号",-1)),oe={id:"fullname"},te=g(()=>l("span",{id:"place"}," ",-1)),le={key:1},ae={id:"login_form"},ie={id:"login_operate"},ne={id:"login_submit"},de=h({__name:"index",setup(_){const p=W(),a=w({userName:"",password:""});let d=b(!1),N=localStorage.getItem("isRemeber");if(N&&(d.value=JSON.parse(N),d.value)){const f=localStorage.getItem("userInfo");if(!f)d.value=!1;else{const{userName:e,password:n}=JSON.parse(f);a.password=n,a.userName=e}}let r=w({firstName:"",lastName:"",password:"",email:""}),x=b(!1),S=b(!1),m=b(!1);async function U(){await p.userLogin(a)&&(localStorage.setItem("userInfo",JSON.stringify(a)),localStorage.setItem("isAuthenticated",JSON.stringify(!0)),localStorage.setItem("isRemeber",JSON.stringify(d.value)),j.push({name:"Layout"}))}async function B(){x.value=!0;let f=await p.userRegistry(r);S.value=!!f,a.password=p.user_message.password,a.userName=p.user_message.userName,x.value=!1}return(f,e)=>{const n=T,c=J,E=O,z=R;return y(),V("div",H,[s(z,{height:"800px",id:"login_container"},{default:i(()=>[l("form",null,[K,P,l("fieldset",Q,[s(n,{disabled:"",class:"elb",size:"default",onClick:e[0]||(e[0]=()=>{})},{default:i(()=>[u(" Google登录 ")]),_:1}),s(n,{disabled:"",class:"elb",size:"default",onClick:e[1]||(e[1]=()=>{})},{default:i(()=>[u(" Facebook登录 ")]),_:1}),s(n,{disabled:"",class:"elb",size:"default",onClick:e[2]||(e[2]=()=>{})},{default:i(()=>[u(" Github登录 ")]),_:1}),s(n,{disabled:"",class:"elb",size:"default",onClick:e[3]||(e[3]=()=>{})},{default:i(()=>[u(" Apple登录 ")]),_:1})]),X,s(q,{name:"bounce"},{default:i(()=>[t(m)?(y(),V("fieldset",Y,[l("section",ee,[se,s(n,{size:"default",onClick:e[4]||(e[4]=o=>v(m)?m.value=!1:m=!1),text:""},{default:i(()=>[u(" 返回登录 ")]),_:1})]),l("section",oe,[s(c,{modelValue:t(r).firstName,"onUpdate:modelValue":e[5]||(e[5]=o=>t(r).firstName=o),placeholder:"姓"},null,8,["modelValue"]),te,s(c,{modelValue:t(r).lastName,"onUpdate:modelValue":e[6]||(e[6]=o=>t(r).lastName=o),placeholder:"名"},null,8,["modelValue"])]),s(c,{"prefix-icon":t(k),modelValue:t(r).email,"onUpdate:modelValue":e[7]||(e[7]=o=>t(r).email=o),type:"email",placeholder:"用户名(电子邮件)*"},null,8,["prefix-icon","modelValue"]),s(c,{"prefix-icon":t(I),"show-password":"",modelValue:t(r).password,"onUpdate:modelValue":e[8]||(e[8]=o=>t(r).password=o),type:"password",placeholder:"密码"},null,8,["prefix-icon","modelValue"]),s(n,{id:"registry",type:"primary",onClick:B,loading:t(x)},{default:i(()=>[u(G(t(S)?"注册成功":"注册"),1)]),_:1},8,["loading"])])):(y(),V("fieldset",le,[l("fieldset",ae,[s(c,{modelValue:a.userName,"onUpdate:modelValue":e[9]||(e[9]=o=>a.userName=o),placeholder:"用户名(电子邮件)*",type:"email","prefix-icon":t(k)},null,8,["modelValue","prefix-icon"]),s(c,{modelValue:a.password,"onUpdate:modelValue":e[10]||(e[10]=o=>a.password=o),placeholder:"密码",type:"password","show-password":"","prefix-icon":t(I)},null,8,["modelValue","prefix-icon"])]),l("fieldset",ie,[s(E,{modelValue:t(d),"onUpdate:modelValue":e[11]||(e[11]=o=>v(d)?d.value=o:d=o),label:"记住密码"},null,8,["modelValue"]),s(n,{text:"",size:"default",onClick:e[12]||(e[12]=o=>v(m)?m.value=!0:m=!0)},{default:i(()=>[u(" 注册账号 ")]),_:1})]),l("fieldset",ne,[s(n,{id:"submit",type:"primary",onClick:U},{default:i(()=>[u(" 登录 ")]),_:1})])]))]),_:1})])]),_:1})])}}});const be=C(de,[["__scopeId","data-v-7090950c"]]);export{be as default}; 2 | //# sourceMappingURL=index-87ef9524.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-8e53beb4.js: -------------------------------------------------------------------------------- 1 | import{Z as e,a as _,c}from"./index-5157ca21.js";const n={},t={class:"container"};function s(o,a){return _(),c("div",t)}const d=e(n,[["render",s],["__scopeId","data-v-64f6f5b9"]]);export{d as default}; 2 | //# sourceMappingURL=index-8e53beb4.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-8e53beb4.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-8e53beb4.js","sources":["../../src/views/advanced_feature/version_control/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["_sfc_render","_ctx","_cache"],"mappings":"kFAGE,SAAAA,EAAAC,EAAAC,EAAA"} -------------------------------------------------------------------------------- /dist/assets/index-8ffda740.css: -------------------------------------------------------------------------------- 1 | .container[data-v-8af4132b]{display:flex;background-color:#fff;flex-direction:column} 2 | -------------------------------------------------------------------------------- /dist/assets/index-9a3907bd.css: -------------------------------------------------------------------------------- 1 | #container[data-v-f4cdae04]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-f4cdae04]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-f4cdae04]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-a197a568.js: -------------------------------------------------------------------------------- 1 | import{E as s}from"./el-scrollbar-47c15925.js";import{C as l}from"./index-41323360.js";import"./el-tooltip-01852e75.js";import{E as c}from"./el-popover-184dd66d.js";import{E as _}from"./el-button-ce6a7349.js";import{d as i,a as m,c as d,B as e,w as t,C as f,D as u,f as b,u as o,W as x,ac as g,af as h,Z as v}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./dropdown-77bdf979.js";import"./use-global-config-40970ff6.js";const E={id:"container"},y={id:"filter"},B=i({__name:"index",setup(C){const a={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"名称",prop:"name"},{label:"配置类型",prop:"type"},{label:"传输方式",prop:"transformMethod"},{label:"说明",prop:"desc"},{label:"默认",prop:"default"}],maxHeight:"",name:"设备配置",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到设备配置"};return(z,D)=>{const r=_,n=c,p=s;return m(),d("main",E,[e(l,f(u(a)),{table_head_left:t(()=>[b("section",y,[e(n,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(r,{class:"m-2",icon:o(g)},{default:t(()=>[x("Device Filter")]),_:1},8,["icon"])]),_:1})])]),table_head_right:t(()=>[e(p,null,{default:t(()=>[e(o(h))]),_:1})]),_:1},16)])}}});const W=v(B,[["__scopeId","data-v-04e2942c"]]);export{W as default}; 2 | //# sourceMappingURL=index-a197a568.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-a197a568.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-a197a568.js","sources":["../../src/views/config/device_config/src/views/config/device_config/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"+jBAsBA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,iBACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,SACD,CACR,EACF,UAAA,GACW,KAAA,OACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,SACkB"} -------------------------------------------------------------------------------- /dist/assets/index-a24e27d3.js: -------------------------------------------------------------------------------- 1 | import{Z as _,a as e,c}from"./index-5157ca21.js";const t="/Error404.svg";const o={},a={id:"bg",src:t,alt:"404_Not_Found"};function s(n,r){return e(),c("img",a)}const i=_(o,[["render",s],["__scopeId","data-v-8a7c0baa"]]);export{i as default}; 2 | //# sourceMappingURL=index-a24e27d3.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-a24e27d3.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-a24e27d3.js","sources":["../../../../../../Error404.svg","../../src/views/404/index.vue"],"sourcesContent":["export default \"__VITE_PUBLIC_ASSET__bf9bee4f__\"","\r\n\r\n"],"names":["_imports_0","_hoisted_1","_sfc_render","_ctx","_cache"],"mappings":"iDAAA,MAAeA,EAAA,2BCCRC,EAAA,CAAQ,GAAA,KAAoB,IAAAD,uBAAjC,SAAAE,EAAAC,EAAAC,EAAA"} -------------------------------------------------------------------------------- /dist/assets/index-a7883952.css: -------------------------------------------------------------------------------- 1 | .container[data-v-04b11a6e]{display:flex;background-color:#fff;flex-direction:column} 2 | -------------------------------------------------------------------------------- /dist/assets/index-a881b489.css: -------------------------------------------------------------------------------- 1 | #main{width:100%;height:99vh}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*,*:after,*:before{box-sizing:border-box;outline:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline;border:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}table{border-spacing:0;border-collapse:collapse}input,textarea,button{font-family:inhert;font-size:inherit;color:inherit}select{text-indent:.01px;text-overflow:"";border:0;border-radius:0;-webkit-appearance:none;-moz-appearance:none}select::-ms-expand{display:none}code,pre{font-family:monospace,monospace;font-size:1em} 2 | -------------------------------------------------------------------------------- /dist/assets/index-af569a1a.js: -------------------------------------------------------------------------------- 1 | import{E as p}from"./el-scrollbar-47c15925.js";import{C as r}from"./index-41323360.js";import{d as n,a as s,c as l,B as e,w as a,C as i,D as _,u as c,af as m,Z as d}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./el-tooltip-01852e75.js";const u={id:"container"},b=n({__name:"index",setup(f){const t={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"名称",prop:"name"},{label:"边缘类型",prop:"type"},{label:"标签",prop:"label"},{label:"客户",prop:"customr"},{fixed:"right",label:"公开",prop:"public"}],maxHeight:"",name:"边缘实例",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到边缘"};return(x,g)=>{const o=p;return s(),l("main",u,[e(r,i(_(t)),{table_head_right:a(()=>[e(o,null,{default:a(()=>[e(c(m))]),_:1})]),_:1},16)])}}});const E=d(b,[["__scopeId","data-v-66cd12b8"]]);export{E as default}; 2 | //# sourceMappingURL=index-af569a1a.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-af569a1a.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-af569a1a.js","sources":["../../src/views/edge_manage/instances/src/views/edge_manage/instances/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,KACS,KAAA,SACD,EACR,CACA,MAAA,QACS,MAAA,KACA,KAAA,QACD,CACR,EACF,UAAA,GACW,KAAA,OACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-b4b34e56.js: -------------------------------------------------------------------------------- 1 | import"./el-scrollbar-47c15925.js";import"./el-tooltip-01852e75.js";import{E as r}from"./el-popover-184dd66d.js";import{E as n}from"./el-button-ce6a7349.js";import{C as s}from"./index-41323360.js";import{d as i,a as l,c as _,B as e,w as t,C as c,D as m,u as d,W as u,ad as f,Z as b}from"./index-5157ca21.js";import"./use-form-item-c41ec946.js";import"./dropdown-77bdf979.js";import"./use-global-config-40970ff6.js";import"./el-checkbox-7864edf7.js";import"./el-tag-87ada828.js";const x={id:"container"},g=i({__name:"index",setup(v){const o={tableData:[],columns:[{label:"时间戳",prop:"timestamp"},{label:"实体类型",prop:"entityType"},{label:"实体名称",prop:"name"},{label:"用户",prop:"email"},{label:"类型",prop:"type"},{label:"状态",prop:"status"}],name:"",maxHeight:"",pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到日志"};return(y,h)=>{const a=n,p=r;return l(),_("main",x,[e(s,c(m(o)),{table_head_left:t(()=>[e(p,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(a,{class:"m-2",icon:d(f)},{default:t(()=>[u("最后一天")]),_:1},8,["icon"])]),_:1})]),_:1},16)])}}});const H=b(g,[["__scopeId","data-v-86298574"]]);export{H as default}; 2 | //# sourceMappingURL=index-b4b34e56.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-b4b34e56.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-b4b34e56.js","sources":["../../src/views/secure/audit_log/src/views/secure/audit_log/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"ohBAiBA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,MACS,KAAA,WACD,EACR,CACA,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,OACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,KACS,KAAA,QACD,CACR,EACF,KAAA,GACM,UAAA,GACK,WAAA,CACC,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-c29f998c.js: -------------------------------------------------------------------------------- 1 | import{Z as e,a as _,c}from"./index-5157ca21.js";const n={},t={class:"container"};function s(a,o){return _(),c("div",t)}const d=e(n,[["render",s],["__scopeId","data-v-04b11a6e"]]);export{d as default}; 2 | //# sourceMappingURL=index-c29f998c.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-c29f998c.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-c29f998c.js","sources":["../../src/views/api_statistics/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["_sfc_render","_ctx","_cache"],"mappings":"kFAGE,SAAAA,EAAAC,EAAAC,EAAA"} -------------------------------------------------------------------------------- /dist/assets/index-c5ce11fa.css: -------------------------------------------------------------------------------- 1 | #container[data-v-85a13664]{width:100%;height:100%;background-color:#fff;padding:16px} 2 | -------------------------------------------------------------------------------- /dist/assets/index-cd4f1ed4.css: -------------------------------------------------------------------------------- 1 | #container[data-v-1d3b360f]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-1d3b360f]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-1d3b360f]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-ce6e9686.css: -------------------------------------------------------------------------------- 1 | #container[data-v-eb70865e]{width:100%;height:100%;background-color:#fff;padding:16px} 2 | -------------------------------------------------------------------------------- /dist/assets/index-d0a639e4.css: -------------------------------------------------------------------------------- 1 | #container[data-v-ba76f3eb]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-ba76f3eb]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-ba76f3eb]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-d55cf406.js: -------------------------------------------------------------------------------- 1 | import{Z as e,a as _,c}from"./index-5157ca21.js";const n={},t={class:"container"};function s(o,a){return _(),c("div",t)}const r=e(n,[["render",s],["__scopeId","data-v-e79510d8"]]);export{r as default}; 2 | //# sourceMappingURL=index-d55cf406.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-d55cf406.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-d55cf406.js","sources":["../../src/views/settings/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["_sfc_render","_ctx","_cache"],"mappings":"kFAGE,SAAAA,EAAAC,EAAAC,EAAA"} -------------------------------------------------------------------------------- /dist/assets/index-e713de8e.js: -------------------------------------------------------------------------------- 1 | import{E as n}from"./el-scrollbar-47c15925.js";import{C as s}from"./index-41323360.js";import"./el-tooltip-01852e75.js";import{E as i}from"./el-popover-184dd66d.js";import{E as c}from"./el-button-ce6a7349.js";import{d as _,a as m,c as d,B as e,w as t,C as f,D as u,f as b,u as a,W as g,ac as x,af as h,Z as v}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./dropdown-77bdf979.js";import"./use-global-config-40970ff6.js";const E={id:"container"},y={id:"filter"},B=_({__name:"index",setup(C){const o={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"名称",prop:"name"},{label:"设备配置",prop:"config"},{label:"标签",prop:"label"},{label:"State",prop:"state"},{label:"客户",prop:"customr"},{label:"公开",prop:"public"},{label:"是否网关",prop:"gateway"}],maxHeight:"",name:"设备",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未发现设备"};return(z,D)=>{const r=c,p=i,l=n;return m(),d("main",E,[e(s,f(u(o)),{table_head_left:t(()=>[b("section",y,[e(p,{placement:"bottom",trigger:"click"},{reference:t(()=>[e(r,{class:"m-2",icon:a(x)},{default:t(()=>[g("Device Filter")]),_:1},8,["icon"])]),_:1})])]),table_head_right:t(()=>[e(l,null,{default:t(()=>[e(a(h))]),_:1})]),_:1},16)])}}});const W=v(B,[["__scopeId","data-v-252eab1e"]]);export{W as default}; 2 | //# sourceMappingURL=index-e713de8e.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-e713de8e.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-e713de8e.js","sources":["../../src/views/entity/device/src/views/entity/device/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"+jBAsBA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,QACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,QACS,KAAA,OACD,EACR,CACA,MAAA,KACS,KAAA,SACD,EACR,CACA,MAAA,KACS,KAAA,QACD,EACR,CACA,MAAA,OACS,KAAA,SACD,CACR,EACF,UAAA,GACW,KAAA,KACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-ef1dbbe3.css: -------------------------------------------------------------------------------- 1 | #container[data-v-032617fc]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-032617fc]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-032617fc]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/index-f1908a3d.js: -------------------------------------------------------------------------------- 1 | import{E as p}from"./el-scrollbar-47c15925.js";import{C as l}from"./index-41323360.js";import{d as r,a as n,c as s,B as e,w as a,C as i,D as _,u as c,af as m,Z as d}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./el-tooltip-01852e75.js";const u={id:"container"},f=r({__name:"index",setup(b){const t={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"标题",prop:"title"},{label:"版本",prop:"version"},{label:"版本标签",prop:"label"},{label:"包类型",prop:"type"},{label:"直接URL",prop:"url"},{label:"文件名",prop:"filename"},{label:"文件大小",prop:"size"},{fixed:"right",label:"校验和",prop:"check"}],maxHeight:"",name:"包仓库",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到包"};return(x,g)=>{const o=p;return n(),s("main",u,[e(l,i(_(t)),{table_head_right:a(()=>[e(o,null,{default:a(()=>[e(c(m))]),_:1})]),_:1},16)])}}});const D=d(f,[["__scopeId","data-v-f4cdae04"]]);export{D as default}; 2 | //# sourceMappingURL=index-f1908a3d.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-f1908a3d.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-f1908a3d.js","sources":["../../src/views/advanced_feature/ota/src/views/advanced_feature/ota/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,KACS,KAAA,SACD,EACR,CACA,MAAA,OACS,KAAA,OACD,EACR,CACA,MAAA,MACS,KAAA,MACD,EACR,CACA,MAAA,QACS,KAAA,KACD,EACR,CACA,MAAA,MACS,KAAA,UACD,EACR,CACA,MAAA,OACS,KAAA,MACD,EACR,CACA,MAAA,QACS,MAAA,MACA,KAAA,OACD,CACR,EACF,UAAA,GACW,KAAA,MACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,MACkB"} -------------------------------------------------------------------------------- /dist/assets/index-f5221158.css: -------------------------------------------------------------------------------- 1 | .container[data-v-64f6f5b9]{display:flex;background-color:#fff;flex-direction:column} 2 | -------------------------------------------------------------------------------- /dist/assets/index-f63efcef.js: -------------------------------------------------------------------------------- 1 | import{E as p}from"./el-scrollbar-47c15925.js";import{C as n}from"./index-41323360.js";import{d as s,a as r,c as _,B as e,w as a,C as i,D as l,u as c,af as m,Z as d}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./el-tooltip-01852e75.js";const u={id:"container"},b=s({__name:"index",setup(f){const t={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"名称",prop:"name"},{label:"配置类型",prop:"type",width:"300px"},{label:"是否根链",prop:"root"}],maxHeight:"",name:"规则链库",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到规则链"};return(x,g)=>{const o=p;return r(),_("main",u,[e(n,i(l(t)),{table_head_right:a(()=>[e(o,null,{default:a(()=>[e(c(m))]),_:1})]),_:1},16)])}}});const D=d(b,[["__scopeId","data-v-bdd4c15b"]]);export{D as default}; 2 | //# sourceMappingURL=index-f63efcef.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-f63efcef.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-f63efcef.js","sources":["../../src/views/rulechain/src/views/rulechain/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,MACD,EACR,CACA,MAAA,OACS,KAAA,OACD,MAAA,OACC,EACT,CACA,MAAA,OACS,KAAA,MACD,CACR,EACF,UAAA,GACW,KAAA,OACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,QACkB"} -------------------------------------------------------------------------------- /dist/assets/index-f9342d74.js: -------------------------------------------------------------------------------- 1 | import{E as s}from"./el-scrollbar-47c15925.js";import{C as n}from"./index-41323360.js";import{d as p,a as r,c as _,B as e,w as t,C as i,D as l,u as c,af as m,Z as d}from"./index-5157ca21.js";import"./el-checkbox-7864edf7.js";import"./use-form-item-c41ec946.js";import"./el-tag-87ada828.js";import"./el-tooltip-01852e75.js";const u={id:"container"},f=p({__name:"index",setup(x){const a={tableData:[],columns:[{label:"创建时间",prop:"createTime"},{label:"标题",prop:"title"},{label:"系统",prop:"system"}],maxHeight:"",name:"部件库",expend:!1,pagination:{page_size:10,page_sizes:[10,20,50],total:21,current_page:1,layout:"total, sizes, prev, pager, next"},emptyDescription:"未找到部件"};return(g,b)=>{const o=s;return r(),_("main",u,[e(n,i(l(a)),{table_head_right:t(()=>[e(o,null,{default:t(()=>[e(c(m))]),_:1})]),_:1},16)])}}});const E=d(f,[["__scopeId","data-v-032617fc"]]);export{E as default}; 2 | //# sourceMappingURL=index-f9342d74.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/index-f9342d74.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index-f9342d74.js","sources":["../../src/views/resources/widget/src/views/resources/widget/index.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n"],"names":["tableProps"],"mappings":"yXAaA,MAAAA,EAAA,CAA0B,UAAA,CAAA,EACZ,QAAA,CACH,CACP,MAAA,OACS,KAAA,YACD,EACR,CACA,MAAA,KACS,KAAA,OACD,EACR,CACA,MAAA,KACS,KAAA,QACD,CACR,EACF,UAAA,GACW,KAAA,MACL,OAAA,GACE,WAAA,CACI,UAAA,GACC,WAAA,CAAA,GAAA,GAAA,EAAA,EACY,MAAA,GAChB,aAAA,EACO,OAAA,iCACN,EACV,iBAAA,OACkB"} -------------------------------------------------------------------------------- /dist/assets/index-ff9f8535.css: -------------------------------------------------------------------------------- 1 | #container[data-v-86298574]{width:100%;height:100%;background-color:#fff;padding:16px}#container .el-icon[data-v-86298574]{color:#f79a7e;font-size:24px}#container .el-icon[data-v-86298574]:hover{cursor:pointer;color:#ff6433} 2 | -------------------------------------------------------------------------------- /dist/assets/logo_title_white-357c254f.js: -------------------------------------------------------------------------------- 1 | const t="/logo_title_white.svg";export{t as _}; 2 | //# sourceMappingURL=logo_title_white-357c254f.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/logo_title_white-357c254f.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"logo_title_white-357c254f.js","sources":["../../../../../../logo_title_white.svg"],"sourcesContent":["export default \"__VITE_PUBLIC_ASSET__87ca0df1__\""],"names":["_imports_0"],"mappings":"AAAA,MAAeA,EAAA"} -------------------------------------------------------------------------------- /dist/assets/use-form-item-c41ec946.js: -------------------------------------------------------------------------------- 1 | import{z as p,u as I,s as f,k as m,e as d,r as i,o as y,y as h,ax as j}from"./index-5157ca21.js";import{ac as w,as as D,ae as F}from"./el-scrollbar-47c15925.js";const E=({from:s,replacement:e,scope:n,version:a,ref:u,type:t="API"},c)=>{p(()=>I(c),o=>{},{immediate:!0})},v={prefix:Math.floor(Math.random()*1e4),current:0},K=Symbol("elIdInjection"),N=()=>m()?d(K,v):v,R=s=>{const e=N(),n=w();return f(()=>I(s)||`${n.value}-id-${e.prefix}-${e.current++}`)},U=()=>{const s=d(D,void 0),e=d(F,void 0);return{form:s,formItem:e}},k=(s,{formItemContext:e,disableIdGeneration:n,disableIdManagement:a})=>{n||(n=i(!1)),a||(a=i(!1));const u=i();let t;const c=f(()=>{var o;return!!(!s.label&&e&&e.inputIds&&((o=e.inputIds)==null?void 0:o.length)<=1)});return y(()=>{t=p([h(s,"id"),n],([o,l])=>{const r=o??(l?void 0:R().value);r!==u.value&&(e!=null&&e.removeInputId&&(u.value&&e.removeInputId(u.value),!(a!=null&&a.value)&&!l&&r&&e.addInputId(r)),u.value=r)},{immediate:!0})}),j(()=>{t&&t(),e!=null&&e.removeInputId&&u.value&&e.removeInputId(u.value)}),{isLabeledByFormItem:c,inputId:u}};export{E as a,U as b,N as c,k as d,R as u}; 2 | //# sourceMappingURL=use-form-item-c41ec946.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/use-global-config-40970ff6.js: -------------------------------------------------------------------------------- 1 | import{u as m,F as x,g as C,G as I,H as _,I as z,J as y,K as b,S as K,L as d}from"./el-scrollbar-47c15925.js";import{r as S,s as o,u as c,p as G,k as f,e as N}from"./index-5157ca21.js";const g=Symbol(),i=S();function p(t,l=void 0){const n=f()?N(g,i):i;return t?o(()=>{var s,a;return(a=(s=n.value)==null?void 0:s[t])!=null?a:l}):n}function F(t,l){const n=p(),s=m(t,o(()=>{var e;return((e=n.value)==null?void 0:e.namespace)||x})),a=C(o(()=>{var e;return(e=n.value)==null?void 0:e.locale})),u=I(o(()=>{var e;return((e=n.value)==null?void 0:e.zIndex)||_})),r=o(()=>{var e;return c(l)||((e=n.value)==null?void 0:e.size)||""});return k(o(()=>c(n)||{})),{ns:s,locale:a,zIndex:u,size:r}}const k=(t,l,n=!1)=>{var s;const a=!!f(),u=a?p():void 0,r=(s=l==null?void 0:l.provide)!=null?s:a?G:void 0;if(!r)return;const e=o(()=>{const v=c(t);return u!=null&&u.value?E(u.value,v):v});return r(g,e),r(z,o(()=>e.value.locale)),r(y,o(()=>e.value.namespace)),r(b,o(()=>e.value.zIndex)),r(K,{size:o(()=>e.value.size||"")}),(n||!i.value)&&(i.value=e.value),e},E=(t,l)=>{var n;const s=[...new Set([...d(t),...d(l)])],a={};for(const u of s)a[u]=(n=l[u])!=null?n:t[u];return a};export{p as a,F as u}; 2 | //# sourceMappingURL=use-global-config-40970ff6.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/vnode-2586cffd.js: -------------------------------------------------------------------------------- 1 | import{J as p,a6 as a,a8 as f,a9 as u}from"./index-5157ca21.js";const m=t=>{if(!a(t))return{};const o=t.props||{},e=(a(t.type)?t.type.props:void 0)||{},s={};return Object.keys(e).forEach(r=>{f(e[r],"default")&&(s[r]=e[r].default)}),Object.keys(o).forEach(r=>{s[u(r)]=o[r]}),s},n=t=>{const o=p(t)?t:[t],e=[];return o.forEach(s=>{var r;p(s)?e.push(...n(s)):a(s)&&p(s.children)?e.push(...n(s.children)):(e.push(s),a(s)&&((r=s.component)!=null&&r.subTree)&&e.push(...n(s.component.subTree)))}),e};export{n as f,m as g}; 2 | //# sourceMappingURL=vnode-2586cffd.js.map 3 | -------------------------------------------------------------------------------- /dist/assets/vnode-2586cffd.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"vnode-2586cffd.js","sources":["../../node_modules/element-plus/es/utils/vue/vnode.mjs"],"sourcesContent":["import { isVNode, Fragment, Text, Comment, openBlock, createBlock, createCommentVNode } from 'vue';\nimport { hasOwn, camelize, isArray } from '@vue/shared';\nimport '../objects.mjs';\nimport { debugWarn } from '../error.mjs';\n\nconst SCOPE = \"utils/vue/vnode\";\nvar PatchFlags = /* @__PURE__ */ ((PatchFlags2) => {\n PatchFlags2[PatchFlags2[\"TEXT\"] = 1] = \"TEXT\";\n PatchFlags2[PatchFlags2[\"CLASS\"] = 2] = \"CLASS\";\n PatchFlags2[PatchFlags2[\"STYLE\"] = 4] = \"STYLE\";\n PatchFlags2[PatchFlags2[\"PROPS\"] = 8] = \"PROPS\";\n PatchFlags2[PatchFlags2[\"FULL_PROPS\"] = 16] = \"FULL_PROPS\";\n PatchFlags2[PatchFlags2[\"HYDRATE_EVENTS\"] = 32] = \"HYDRATE_EVENTS\";\n PatchFlags2[PatchFlags2[\"STABLE_FRAGMENT\"] = 64] = \"STABLE_FRAGMENT\";\n PatchFlags2[PatchFlags2[\"KEYED_FRAGMENT\"] = 128] = \"KEYED_FRAGMENT\";\n PatchFlags2[PatchFlags2[\"UNKEYED_FRAGMENT\"] = 256] = \"UNKEYED_FRAGMENT\";\n PatchFlags2[PatchFlags2[\"NEED_PATCH\"] = 512] = \"NEED_PATCH\";\n PatchFlags2[PatchFlags2[\"DYNAMIC_SLOTS\"] = 1024] = \"DYNAMIC_SLOTS\";\n PatchFlags2[PatchFlags2[\"HOISTED\"] = -1] = \"HOISTED\";\n PatchFlags2[PatchFlags2[\"BAIL\"] = -2] = \"BAIL\";\n return PatchFlags2;\n})(PatchFlags || {});\nfunction isFragment(node) {\n return isVNode(node) && node.type === Fragment;\n}\nfunction isText(node) {\n return isVNode(node) && node.type === Text;\n}\nfunction isComment(node) {\n return isVNode(node) && node.type === Comment;\n}\nconst TEMPLATE = \"template\";\nfunction isTemplate(node) {\n return isVNode(node) && node.type === TEMPLATE;\n}\nfunction isValidElementNode(node) {\n return isVNode(node) && !isFragment(node) && !isComment(node);\n}\nfunction getChildren(node, depth) {\n if (isComment(node))\n return;\n if (isFragment(node) || isTemplate(node)) {\n return depth > 0 ? getFirstValidNode(node.children, depth - 1) : void 0;\n }\n return node;\n}\nconst getFirstValidNode = (nodes, maxDepth = 3) => {\n if (Array.isArray(nodes)) {\n return getChildren(nodes[0], maxDepth);\n } else {\n return getChildren(nodes, maxDepth);\n }\n};\nfunction renderIf(condition, ...args) {\n return condition ? renderBlock(...args) : createCommentVNode(\"v-if\", true);\n}\nfunction renderBlock(...args) {\n return openBlock(), createBlock(...args);\n}\nconst getNormalizedProps = (node) => {\n if (!isVNode(node)) {\n debugWarn(SCOPE, \"[getNormalizedProps] must be a VNode\");\n return {};\n }\n const raw = node.props || {};\n const type = (isVNode(node.type) ? node.type.props : void 0) || {};\n const props = {};\n Object.keys(type).forEach((key) => {\n if (hasOwn(type[key], \"default\")) {\n props[key] = type[key].default;\n }\n });\n Object.keys(raw).forEach((key) => {\n props[camelize(key)] = raw[key];\n });\n return props;\n};\nconst ensureOnlyChild = (children) => {\n if (!isArray(children) || children.length > 1) {\n throw new Error(\"expect to receive a single Vue element child\");\n }\n return children[0];\n};\nconst flattedChildren = (children) => {\n const vNodes = isArray(children) ? children : [children];\n const result = [];\n vNodes.forEach((child) => {\n var _a;\n if (isArray(child)) {\n result.push(...flattedChildren(child));\n } else if (isVNode(child) && isArray(child.children)) {\n result.push(...flattedChildren(child.children));\n } else {\n result.push(child);\n if (isVNode(child) && ((_a = child.component) == null ? void 0 : _a.subTree)) {\n result.push(...flattedChildren(child.component.subTree));\n }\n }\n });\n return result;\n};\n\nexport { PatchFlags, ensureOnlyChild, flattedChildren, getFirstValidNode, getNormalizedProps, isComment, isFragment, isTemplate, isText, isValidElementNode, renderBlock, renderIf };\n//# sourceMappingURL=vnode.mjs.map\n"],"names":["getNormalizedProps","node","isVNode","raw","type","props","key","hasOwn","camelize","flattedChildren","children","vNodes","isArray","result","child","_a"],"mappings":"gEA2DK,MAACA,EAAsBC,GAAS,CACnC,GAAI,CAACC,EAAQD,CAAI,EAEf,MAAO,GAET,MAAME,EAAMF,EAAK,OAAS,GACpBG,GAAQF,EAAQD,EAAK,IAAI,EAAIA,EAAK,KAAK,MAAQ,SAAW,CAAA,EAC1DI,EAAQ,CAAA,EACd,cAAO,KAAKD,CAAI,EAAE,QAASE,GAAQ,CAC7BC,EAAOH,EAAKE,CAAG,EAAG,SAAS,IAC7BD,EAAMC,CAAG,EAAIF,EAAKE,CAAG,EAAE,QAE7B,CAAG,EACD,OAAO,KAAKH,CAAG,EAAE,QAASG,GAAQ,CAChCD,EAAMG,EAASF,CAAG,CAAC,EAAIH,EAAIG,CAAG,CAClC,CAAG,EACMD,CACT,EAOMI,EAAmBC,GAAa,CACpC,MAAMC,EAASC,EAAQF,CAAQ,EAAIA,EAAW,CAACA,CAAQ,EACjDG,EAAS,CAAA,EACf,OAAAF,EAAO,QAASG,GAAU,CACxB,IAAIC,EACAH,EAAQE,CAAK,EACfD,EAAO,KAAK,GAAGJ,EAAgBK,CAAK,CAAC,EAC5BZ,EAAQY,CAAK,GAAKF,EAAQE,EAAM,QAAQ,EACjDD,EAAO,KAAK,GAAGJ,EAAgBK,EAAM,QAAQ,CAAC,GAE9CD,EAAO,KAAKC,CAAK,EACbZ,EAAQY,CAAK,KAAOC,EAAKD,EAAM,YAAc,MAAgBC,EAAG,UAClEF,EAAO,KAAK,GAAGJ,EAAgBK,EAAM,UAAU,OAAO,CAAC,EAG/D,CAAG,EACMD,CACT","x_google_ignoreList":[0]} -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ThingsBoard 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /dist/thingsboard.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/776488326/ThingsBoard-Vue3/ad50547a7ba92ad914600225733df92e8541bc5b/dist/thingsboard.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ThingsBoard 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /mock/login.ts: -------------------------------------------------------------------------------- 1 | import { login_url, sign_up_url, logout_url } from '../src/api/api_url' 2 | import { MockMethod } from 'vite-plugin-mock' 3 | import type { Counter } from '../src/api/user/type' 4 | import type { Success, Fail } from '../src/api/common_type' 5 | import fs from 'fs' 6 | // #region 全局变量定义 7 | 8 | const successTemplate = ( 9 | data: Object | null, 10 | success_response = { code: 200, message: 'success' }, 11 | ): Success => { 12 | const { code, message } = success_response 13 | return { 14 | code, 15 | data, 16 | message, 17 | } 18 | } 19 | 20 | const failTemplate = ( 21 | data: Object | null, 22 | fail_response = { code: 400, message: 'fail' }, 23 | ): Fail => { 24 | const { code, message } = fail_response 25 | return { 26 | code, 27 | data, 28 | message, 29 | } 30 | } 31 | 32 | let counter: Counter[] | any = [ 33 | { 34 | password: 'admin', 35 | email: 'admin', 36 | firstName: 'feng', 37 | lastName: 'liang', 38 | }, 39 | ] 40 | counter = fs.readFileSync('./user_data.json') 41 | counter = JSON.parse(counter) 42 | // #endregion 43 | 44 | export default [ 45 | { 46 | url: '/api' + login_url, 47 | method: 'post', 48 | response({ url, body, query, headers }) { 49 | const { userName, password } = body 50 | body.isAuthenticated = userName == 'admin' ? true : false 51 | if ( 52 | counter.filter( 53 | (item) => item.email === userName && item.password === password, 54 | ).length 55 | ) { 56 | return successTemplate(body, { code: 200, message: '登录成功' }) 57 | } else { 58 | return failTemplate(body, { code: 401, message: '账号密码无效' }) 59 | } 60 | }, 61 | }, 62 | { 63 | url: '/api' + sign_up_url, 64 | method: 'post', 65 | response({ body }) { 66 | const { firstName, lastName, password, email } = body 67 | if (counter.some((item) => item.email === email)) { 68 | return failTemplate(null, { code: 400, message: '账号已注册' }) 69 | } else { 70 | counter.push(body) 71 | fs.writeFileSync('./user_data.json', JSON.stringify(counter)) 72 | return successTemplate({ userName: email, password }) 73 | } 74 | }, 75 | }, 76 | { 77 | url: '/api' + logout_url, 78 | method: 'get', 79 | response({ body }) { 80 | return successTemplate(null, { code: 200, message: '注销成功!' }) 81 | }, 82 | }, 83 | ] as MockMethod[] 84 | -------------------------------------------------------------------------------- /mock/mockProdServer.ts: -------------------------------------------------------------------------------- 1 | // mockProdServer.ts 2 | import { createProdMockServer } from 'vite-plugin-mock/client' 3 | 4 | // 逐一导入您的mock.ts文件 5 | // 如果使用vite.mock.config.ts,只需直接导入文件 6 | // 可以使用 import.meta.glob功能来进行全部导入 7 | import login from './login' 8 | 9 | export function setupProdMockServer() { 10 | createProdMockServer([...login]) 11 | } 12 | -------------------------------------------------------------------------------- /mock/vite-plugin-mock.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'vite-plugin-mock' {} 2 | declare module 'vite-plugin-mock/client' {} 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui-vue3", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "start": "vite", 8 | "build": "vue-tsc && vite build", 9 | "preview": "vite preview", 10 | "lint": "eslint src", 11 | "fix": "eslint src --fix", 12 | "lint:style": "stylelint src/**/*.{css,scss,vue} --cache --fix", 13 | "lint:eslint": "eslint src/**/*.{ts,vue} --cache --fix", 14 | "format": "prettier --write \"./**/*.{html,vue,ts,js,json,md}\"", 15 | "prepare": "husky install", 16 | "commitlint": "commitlint --config commitlint.config.cjs -e -V", 17 | "preinstall": "node ./scripts/preinstall.js" 18 | }, 19 | "dependencies": { 20 | "@digitalacorn/vite-plugin-svg-icons": "^3.0.0-pre.1", 21 | "@element-plus/icons-vue": "^2.1.0", 22 | "axios": "^1.4.0", 23 | "element-plus": "^2.3.5", 24 | "mockjs": "^1.1.0", 25 | "nprogress": "^0.2.0", 26 | "pinia": "^2.1.3", 27 | "vite-plugin-mock": "^3.0.0", 28 | "vue": "^3.2.47", 29 | "vue-router": "^4.2.1" 30 | }, 31 | "devDependencies": { 32 | "@babel/eslint-parser": "^7.21.8", 33 | "@commitlint/cli": "^17.6.3", 34 | "@commitlint/config-conventional": "^17.6.3", 35 | "@typescript-eslint/eslint-plugin": "^5.59.7", 36 | "@typescript-eslint/parser": "^5.59.7", 37 | "@vitejs/plugin-vue": "^4.1.0", 38 | "eslint": "^8.41.0", 39 | "eslint-config-prettier": "^8.8.0", 40 | "eslint-plugin-import": "^2.27.5", 41 | "eslint-plugin-node": "^11.1.0", 42 | "eslint-plugin-prettier": "^4.2.1", 43 | "eslint-plugin-vue": "^9.14.0", 44 | "husky": "^8.0.0", 45 | "postcss": "^8.4.23", 46 | "postcss-html": "^1.5.0", 47 | "postcss-scss": "^4.0.6", 48 | "prettier": "^2.8.8", 49 | "sass": "^1.62.1", 50 | "sass-loader": "^13.3.0", 51 | "stylelint": "^15.6.2", 52 | "stylelint-config-prettier": "^9.0.5", 53 | "stylelint-config-recess-order": "^4.0.0", 54 | "stylelint-config-recommended-scss": "^12.0.0", 55 | "stylelint-config-standard": "^33.0.0", 56 | "stylelint-config-standard-scss": "^9.0.0", 57 | "stylelint-config-standard-vue": "^1.0.0", 58 | "stylelint-order": "^6.0.3", 59 | "stylelint-scss": "^5.0.0", 60 | "typescript": "^5.0.2", 61 | "unplugin-auto-import": "^0.16.6", 62 | "unplugin-element-plus": "^0.7.2", 63 | "unplugin-vue-components": "^0.25.1", 64 | "vite": "^4.3.2", 65 | "vue-tsc": "^1.4.2" 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /proxy.conf.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | 3 | /* 4 | * Copyright © 2016-2023 The Thingsboard Authors 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | const forwardUrl = 20 | 'https://www.fastmock.site/mock/6b534c087799fa15118aaafa4ea4769b' 21 | // const forwardUrl = 'http://172.26.240.1:9090' 22 | const wsForwardUrl = 'ws://127.0.0.1:4523/m1/2826700-0-default' 23 | // const wsForwardUrl = 'ws://172.26.240.1:9090' 24 | const ruleNodeUiforwardUrl = forwardUrl 25 | 26 | const PROXY_CONFIG = { 27 | '/api': { 28 | target: forwardUrl, 29 | secure: false, 30 | }, 31 | '/static/rulenode': { 32 | target: ruleNodeUiforwardUrl, 33 | secure: false, 34 | }, 35 | '/static/widgets': { 36 | target: forwardUrl, 37 | secure: false, 38 | }, 39 | '/oauth2': { 40 | target: forwardUrl, 41 | secure: false, 42 | }, 43 | '/login/oauth2': { 44 | target: forwardUrl, 45 | secure: false, 46 | }, 47 | '/api/ws': { 48 | target: wsForwardUrl, 49 | ws: true, 50 | secure: false, 51 | }, 52 | } 53 | 54 | export default PROXY_CONFIG 55 | -------------------------------------------------------------------------------- /public/thingsboard.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/776488326/ThingsBoard-Vue3/ad50547a7ba92ad914600225733df92e8541bc5b/public/thingsboard.ico -------------------------------------------------------------------------------- /scripts/preinstall.js: -------------------------------------------------------------------------------- 1 | if (!/yarn/.test(process.env.npm_execpath || '')) { 2 | console.warn( 3 | `\u001b[33mThis repository must using yarn as the package manager ` + 4 | ` for scripts to work properly.\u001b[39m\n`, 5 | ) 6 | process.exit(1) 7 | } 8 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/api/alarm/index.ts: -------------------------------------------------------------------------------- 1 | import { alarms_url } from '../api_url' 2 | import http from '@/utils/http.ts' 3 | import type { AlarmQuery, Alarm } from './type' 4 | 5 | export async function getAlarms(params: AlarmQuery) { 6 | let url: string = Object.entries(params).reduce((prev, cur) => { 7 | return prev + `${cur[0]}=${cur[1]}&` 8 | }, `${alarms_url}?`) 9 | let result: Alarm[] = await http.get(url) 10 | return result 11 | } 12 | -------------------------------------------------------------------------------- /src/api/alarm/type.ts: -------------------------------------------------------------------------------- 1 | // pageSize: 10 2 | // page: 0 3 | // sortProperty: createdTime 4 | // sortOrder: DESC 5 | // statusList: ACTIVE,CLEARED 6 | // severityList: MAJOR 7 | // assigneeId: 5c7757e0-efce-11ed-906b-d778012ede74 8 | 9 | export interface AlarmQuery { 10 | pageSize: number 11 | page: number 12 | sortProperty?: string 13 | sortOrder?: 'DESC' | 'ASC' 14 | statusList?: string 15 | severityList?: string 16 | assigneeId?: string 17 | typeList?: string 18 | } 19 | 20 | export interface Alarm { 21 | createdTime: string 22 | name: string 23 | type: string 24 | severity: 'danger' | 'important' | 'secondary' | 'alarm' | 'uncertain' 25 | assignee: string 26 | status: 'actived' | 'cleared' | 'confirmed' | 'unconfirm' 27 | } 28 | -------------------------------------------------------------------------------- /src/api/api_url.ts: -------------------------------------------------------------------------------- 1 | export const login_url = '/auth/login' 2 | export const sign_up_url = '/noauth/signup' 3 | export const logout_url = '/auth/logout' 4 | export const alarms_url = '/alarms' 5 | -------------------------------------------------------------------------------- /src/api/common_type.ts: -------------------------------------------------------------------------------- 1 | export interface Success { 2 | code: Number 3 | data: Object | null 4 | message: String 5 | } 6 | 7 | export interface Fail { 8 | code: Number 9 | data?: Object | null 10 | message: String 11 | } 12 | -------------------------------------------------------------------------------- /src/api/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user/login' 2 | -------------------------------------------------------------------------------- /src/api/user/login.ts: -------------------------------------------------------------------------------- 1 | import http from '@/utils/http.ts' 2 | import { login_url, sign_up_url } from '../api_url' 3 | import type { UserInfo, Counter } from './type' 4 | 5 | export async function requestLogin(params: UserInfo) { 6 | return await http.post(login_url, params) 7 | } 8 | 9 | export async function requestSignUp(params: Counter) { 10 | return await http.post(sign_up_url, params) 11 | } 12 | -------------------------------------------------------------------------------- /src/api/user/logout.ts: -------------------------------------------------------------------------------- 1 | import http from '@/utils/http.ts' 2 | import { logout_url } from '../api_url' 3 | import type { Success, Fail } from '@/api/common_type.ts' 4 | export async function requestLogout(): Promise { 5 | return await http.get(logout_url) 6 | } 7 | -------------------------------------------------------------------------------- /src/api/user/type.ts: -------------------------------------------------------------------------------- 1 | export interface Counter { 2 | firstName: String 3 | lastName: String 4 | email: String 5 | password: String 6 | } 7 | 8 | export interface UserInfo { 9 | userName: String 10 | password: String 11 | } 12 | -------------------------------------------------------------------------------- /src/assets/icons/advanced.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/alarm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/api.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/asset.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/assetconfig.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/auditlog.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/bell.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/config.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/dashboard.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/device.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/deviceconfig.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/edgemanage.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/entity.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/entitys.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/fullscreen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/instances.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/more.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/notification.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/offscreen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/ota.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/resource.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/resources.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/rulechain.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/rulechaintemplete.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/secure.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/setting.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/version.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/widget.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/component.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import { DefineComponent } from 'vue' 3 | const component: DefineComponent<{}, {}, any> 4 | export default component 5 | } 6 | -------------------------------------------------------------------------------- /src/components/common_table/Table.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 46 | 47 | 55 | -------------------------------------------------------------------------------- /src/components/common_table/TableHeader.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 57 | 58 | 89 | -------------------------------------------------------------------------------- /src/components/common_table/TablePager.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 48 | 49 | 54 | -------------------------------------------------------------------------------- /src/components/common_table/index.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 59 | 60 | 82 | -------------------------------------------------------------------------------- /src/components/fade_transition/index.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 21 | 22 | 50 | -------------------------------------------------------------------------------- /src/components/index.ts: -------------------------------------------------------------------------------- 1 | import SvgIcon from './svg_icon/index.vue' 2 | const globalComponents = { 3 | SvgIcon, 4 | } 5 | export default { 6 | install(app: any) { 7 | Object.entries(globalComponents).forEach((item) => { 8 | app.component(item[0], item[1]) 9 | }) 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /src/components/side_bar_menu/index.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 65 | 66 | 72 | -------------------------------------------------------------------------------- /src/components/svg_icon/index.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 34 | -------------------------------------------------------------------------------- /src/components/top_breadcrumb/index.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 35 | -------------------------------------------------------------------------------- /src/layouts/LayoutAside.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 17 | 18 | 46 | -------------------------------------------------------------------------------- /src/layouts/LayoutHeader.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | 106 | 107 | 135 | -------------------------------------------------------------------------------- /src/layouts/LayoutMain.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/layouts/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 23 | 48 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import * as ElementPlusIconsVue from '@element-plus/icons-vue' 4 | //@ts-ignore 5 | import 'virtual:svg-icons-register' 6 | import globalComponentsRegistry from '@/components/index.ts' 7 | import store from '@/stores/index.ts' 8 | import router from '@/router/index.ts' 9 | import 'virtual:svg-icons-register' 10 | import '@/styles/reset.scss' 11 | 12 | const app = createApp(App) 13 | app.config.errorHandler = (err) => { 14 | // 自定义全局未捕获错误处理 15 | console.log(err) 16 | } 17 | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { 18 | app.component(key, component) 19 | } 20 | app.use(store) 21 | app.use(globalComponentsRegistry) 22 | app.use(router) 23 | app.mount('#app') 24 | -------------------------------------------------------------------------------- /src/nprogress.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'nprogress' 2 | -------------------------------------------------------------------------------- /src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHashHistory } from 'vue-router' 2 | import routes from './routes' 3 | import nprogress from 'nprogress' 4 | import 'nprogress/nprogress.css' 5 | const router = createRouter({ 6 | history: createWebHashHistory(), 7 | routes: routes, 8 | }) 9 | 10 | router.beforeEach((to) => { 11 | nprogress.start() 12 | const isAuth = JSON.parse(localStorage.getItem('isAuthenticated') || 'false') 13 | console.log('isAuth', isAuth) 14 | if (!isAuth && to.name !== 'Login') { 15 | console.log('redirect') 16 | return { 17 | name: 'Login', 18 | } 19 | } 20 | }) 21 | router.afterEach((to) => { 22 | nprogress.done() 23 | document.title = `ThingsBoard | ${to.meta.title}` 24 | }) 25 | 26 | export default router 27 | -------------------------------------------------------------------------------- /src/router/routes.ts: -------------------------------------------------------------------------------- 1 | import 'vue-router' 2 | declare module 'vue-router' { 3 | interface RouteMeta { 4 | authorization: Array 5 | title: String 6 | } 7 | } 8 | type To = { 9 | meta: { 10 | isShow: Boolean 11 | } 12 | } 13 | type From = { 14 | name: String 15 | } 16 | 17 | import children from './dynamicRoutes.ts' 18 | import type { RouteRecordRaw } from 'vue-router' 19 | export default [ 20 | { 21 | path: '/', 22 | component: () => import('@/layouts/index.vue'), 23 | name: 'Layout', 24 | redirect: '/home', 25 | meta: { 26 | authorization: ['Admin', 'User', 'Tenant'], 27 | isShow: false, 28 | }, 29 | children, 30 | beforeEnter: (to: To, from: From) => { 31 | if (from.name === 'Login') { 32 | to.meta.isShow = true 33 | } 34 | }, 35 | }, 36 | { 37 | path: '/404', 38 | component: () => import('@/views/404/index.vue'), 39 | name: 'NotFound', 40 | meta: { 41 | authorization: ['Admin', 'User', 'Tenant'], 42 | }, 43 | }, 44 | { 45 | path: '/login', 46 | component: () => import('@/views/login/index.vue'), 47 | name: 'Login', 48 | meta: { 49 | authorization: ['Admin', 'User', 'Tenant'], 50 | }, 51 | }, 52 | { 53 | path: '/:notFound(.*)', 54 | redirect: '/404', 55 | meta: { 56 | authorization: ['Admin', 'User', 'Tenant'], 57 | }, 58 | }, 59 | ] as RouteRecordRaw[] 60 | -------------------------------------------------------------------------------- /src/stores/alarm.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | export const useAlarmDataStore = defineStore('alarmData', () => {}) 3 | -------------------------------------------------------------------------------- /src/stores/index.ts: -------------------------------------------------------------------------------- 1 | import { createPinia } from 'pinia' 2 | 3 | export default createPinia() 4 | -------------------------------------------------------------------------------- /src/stores/user.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | import { reactive } from 'vue' 3 | import type { UserInfo, Counter } from '@/api/user/type' 4 | import { requestLogin, requestSignUp } from '@/api/index.ts' 5 | import type { Success, Fail } from '@/api/common_type' 6 | export const userMessageStore = defineStore('userMessage', () => { 7 | // computed 是 getters 8 | // function 是 actions 9 | // ref 是 state 10 | interface UserMessage { 11 | userName: String 12 | password: String 13 | isAuthenticated: Boolean 14 | } 15 | const { userName, password } = JSON.parse( 16 | localStorage.getItem('userInfo') || '{}', 17 | ) 18 | const isAuthenticated = JSON.parse( 19 | localStorage.getItem('isAuthenticated') || 'false', 20 | ) 21 | const user_message: UserMessage = reactive({ 22 | userName, 23 | password, 24 | isAuthenticated, 25 | }) 26 | 27 | async function userLogin(data: UserInfo) { 28 | const res: Success | Fail | any = await requestLogin(data) 29 | 30 | if (res) { 31 | user_message.userName = res.data.userName 32 | user_message.password = res.data.password 33 | user_message.isAuthenticated = !!res.data.isAuthenticated 34 | } else { 35 | console.log('userLogin: ', res) 36 | } 37 | return res 38 | } 39 | async function userRegistry(data: Counter) { 40 | const res: Success | Fail | any = await requestSignUp(data) 41 | 42 | // 以下是正常的注册流程 43 | if (res) { 44 | user_message.userName = res.data.userName 45 | user_message.password = res.data.password 46 | } else { 47 | console.log('userRegistry: ', res) 48 | } 49 | return res 50 | } 51 | return { 52 | user_message, 53 | userRegistry, 54 | userLogin, 55 | } 56 | }) 57 | -------------------------------------------------------------------------------- /src/styles/index.scss: -------------------------------------------------------------------------------- 1 | @forward 'element-plus/theme-chalk/src/common/var.scss' with ( 2 | $colors:( 3 | 'primary': ( 4 | // 'base': #305680 5 | ) 6 | ), 7 | $border-color:( 8 | '': #305680, 9 | 'light': #2e537b, 10 | 'lighter': #678bb1, 11 | 'extra-light': #86b7eb, 12 | 'dark': #ff6433, 13 | 'darker': #ac6854, 14 | ), 15 | $bg-color: ( 16 | '': #ffffff, 17 | 'page': #eee, 18 | 'overlay': #ffffff, 19 | ) 20 | ); 21 | 22 | // 全局scss变量 23 | $bg-color: #eee; 24 | $page-color: #fff; 25 | $theme-color: #305680; 26 | $theme-light-color: #2e537b; 27 | $second-color: #ff6433; 28 | $second-light-color: #f79a7e; 29 | $font-color: #fff; 30 | $border-radius: 8px; 31 | $half-border-radius: 4px; 32 | $space: 16px; 33 | $half-space: 8px; 34 | $sideBar-width: 250px; 35 | $header-height: 64px; -------------------------------------------------------------------------------- /src/styles/reset.scss: -------------------------------------------------------------------------------- 1 | *, 2 | *:after, 3 | *:before { 4 | box-sizing: border-box; 5 | 6 | outline: none; 7 | } 8 | 9 | html, 10 | body, 11 | div, 12 | span, 13 | applet, 14 | object, 15 | iframe, 16 | h1, 17 | h2, 18 | h3, 19 | h4, 20 | h5, 21 | h6, 22 | p, 23 | blockquote, 24 | pre, 25 | a, 26 | abbr, 27 | acronym, 28 | address, 29 | big, 30 | cite, 31 | code, 32 | del, 33 | dfn, 34 | em, 35 | img, 36 | ins, 37 | kbd, 38 | q, 39 | s, 40 | samp, 41 | small, 42 | strike, 43 | strong, 44 | sub, 45 | sup, 46 | tt, 47 | var, 48 | b, 49 | u, 50 | i, 51 | center, 52 | dl, 53 | dt, 54 | dd, 55 | ol, 56 | ul, 57 | li, 58 | fieldset, 59 | form, 60 | label, 61 | legend, 62 | table, 63 | caption, 64 | tbody, 65 | tfoot, 66 | thead, 67 | tr, 68 | th, 69 | td, 70 | article, 71 | aside, 72 | canvas, 73 | details, 74 | embed, 75 | figure, 76 | figcaption, 77 | footer, 78 | header, 79 | hgroup, 80 | menu, 81 | nav, 82 | output, 83 | ruby, 84 | section, 85 | summary, 86 | time, 87 | mark, 88 | audio, 89 | video { 90 | font: inherit; 91 | font-size: 100%; 92 | 93 | margin: 0; 94 | padding: 0; 95 | 96 | vertical-align: baseline; 97 | 98 | border: 0; 99 | } 100 | 101 | article, 102 | aside, 103 | details, 104 | figcaption, 105 | figure, 106 | footer, 107 | header, 108 | hgroup, 109 | menu, 110 | nav, 111 | section { 112 | display: block; 113 | } 114 | 115 | body { 116 | line-height: 1; 117 | } 118 | 119 | ol, 120 | ul { 121 | list-style: none; 122 | } 123 | 124 | blockquote, 125 | q { 126 | quotes: none; 127 | &:before, 128 | &:after { 129 | content: ''; 130 | content: none; 131 | } 132 | } 133 | 134 | sub, 135 | sup { 136 | font-size: 75%; 137 | line-height: 0; 138 | 139 | position: relative; 140 | 141 | vertical-align: baseline; 142 | } 143 | sup { 144 | top: -0.5em; 145 | } 146 | sub { 147 | bottom: -0.25em; 148 | } 149 | 150 | table { 151 | border-spacing: 0; 152 | border-collapse: collapse; 153 | } 154 | 155 | input, 156 | textarea, 157 | button { 158 | font-family: inhert; 159 | font-size: inherit; 160 | 161 | color: inherit; 162 | } 163 | 164 | select { 165 | text-indent: 0.01px; 166 | text-overflow: ''; 167 | 168 | border: 0; 169 | border-radius: 0; 170 | 171 | -webkit-appearance: none; 172 | -moz-appearance: none; 173 | } 174 | select::-ms-expand { 175 | display: none; 176 | } 177 | 178 | code, 179 | pre { 180 | font-family: monospace, monospace; 181 | font-size: 1em; 182 | } 183 | -------------------------------------------------------------------------------- /src/utils/http.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import { ElMessage } from 'element-plus' 3 | let http = axios.create({ 4 | baseURL: import.meta.env.VITE_BASE_API_PREFIX, 5 | timeout: 5000, 6 | }) 7 | 8 | function handleError(err: any, status: Number) { 9 | let message = '' 10 | 11 | switch (status) { 12 | case 400: 13 | message = '请求参数不正确' 14 | break 15 | case 401: 16 | message = 'TOKEN过期,或账号密码错误,请重新登录获取' 17 | break 18 | case 403: 19 | message = '账号密码权限不足,请联系管理员' 20 | break 21 | case 404: 22 | message = '请求地址不存在,请确认后重试' 23 | break 24 | case 500: 25 | message = '服务器异常,请稍后重试' 26 | break 27 | default: 28 | message = '网络异常' 29 | break 30 | } 31 | ElMessage({ 32 | message: err || message, 33 | type: 'error', 34 | }) 35 | return false 36 | } 37 | 38 | http.interceptors.request.use((config) => { 39 | return config 40 | }) 41 | 42 | http.interceptors.response.use( 43 | (resp) => { 44 | if (resp.data.code !== 200) { 45 | return handleError(resp.data.message, resp.data.code) 46 | } 47 | return resp.data 48 | }, 49 | (err) => { 50 | return handleError(err, err.response.status) 51 | }, 52 | ) 53 | 54 | export default http 55 | -------------------------------------------------------------------------------- /src/views/404/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 11 | -------------------------------------------------------------------------------- /src/views/advanced_feature/ota/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 68 | 69 | 85 | -------------------------------------------------------------------------------- /src/views/advanced_feature/version_control/index.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/views/alarm/index.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 71 | 72 | 80 | -------------------------------------------------------------------------------- /src/views/api_statistics/index.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/views/config/asset_config/index.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 55 | 56 | 72 | -------------------------------------------------------------------------------- /src/views/config/device_config/index.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 64 | 65 | 81 | -------------------------------------------------------------------------------- /src/views/dashboard/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 47 | 48 | 56 | -------------------------------------------------------------------------------- /src/views/edge_manage/instances/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 56 | 57 | 73 | -------------------------------------------------------------------------------- /src/views/edge_manage/rulechain_template/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | 47 | 63 | -------------------------------------------------------------------------------- /src/views/entity/asset/index.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 64 | 65 | 81 | -------------------------------------------------------------------------------- /src/views/entity/device/index.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 72 | 73 | 89 | -------------------------------------------------------------------------------- /src/views/entity/entity_view/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 52 | 53 | 69 | -------------------------------------------------------------------------------- /src/views/home/index.vue: -------------------------------------------------------------------------------- 1 | 70 | 71 | 85 | 86 | 145 | -------------------------------------------------------------------------------- /src/views/home/max_card/index.vue: -------------------------------------------------------------------------------- 1 | 118 | 119 | 124 | -------------------------------------------------------------------------------- /src/views/home/mini_card/index.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 27 | 28 | 70 | -------------------------------------------------------------------------------- /src/views/notification_center/index.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/views/resources/resource/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | 47 | 63 | -------------------------------------------------------------------------------- /src/views/resources/widget/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 43 | 44 | 60 | -------------------------------------------------------------------------------- /src/views/rulechain/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 48 | 49 | 65 | -------------------------------------------------------------------------------- /src/views/secure/audit_log/index.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 58 | 59 | 75 | -------------------------------------------------------------------------------- /src/views/settings/index.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/views/user/index.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 59 | 60 | 76 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "plugins": [ 4 | { 5 | "name": "vue-tsc", 6 | "transform": "vue-tsc" 7 | } 8 | ], 9 | "types": ["@digitalacorn/vite-plugin-svg-icons/client"], 10 | "baseUrl": "./", 11 | "paths": { 12 | "@/*": ["src/*"] 13 | }, 14 | "target": "ES2020", 15 | "useDefineForClassFields": true, 16 | "module": "ESNext", 17 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 18 | "skipLibCheck": true, 19 | /* Bundler mode */ 20 | "moduleResolution": "node", 21 | "allowImportingTsExtensions": true, 22 | "resolveJsonModule": true, 23 | "isolatedModules": true, 24 | "noEmit": true, 25 | "jsx": "preserve", 26 | /* Linting */ 27 | "strict": true, 28 | "noUnusedLocals": true, 29 | "noUnusedParameters": true, 30 | "noFallthroughCasesInSwitch": true 31 | }, 32 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 33 | "references": [ 34 | { 35 | "path": "./tsconfig.node.json" 36 | } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "node", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts", "proxy.conf.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /user_data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "password": "admin", 4 | "email": "admin", 5 | "firstName": "feng", 6 | "lastName": "liang" 7 | }, 8 | { "firstName": "1", "lastName": "1", "password": "1", "email": "1" }, 9 | { "firstName": "2", "lastName": "1", "password": "1", "email": "2" }, 10 | { "firstName": "2", "lastName": "1", "password": "1", "email": "3" }, 11 | { 12 | "firstName": "feng", 13 | "lastName": "liang", 14 | "password": "131452", 15 | "email": "776488326@qq.com" 16 | }, 17 | { 18 | "firstName": "test", 19 | "lastName": "01", 20 | "password": "123", 21 | "email": "776488326@qq.com001" 22 | }, 23 | { "firstName": "a", "lastName": "b", "password": "321", "email": "123" } 24 | ] 25 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { UserConfigExport, ConfigEnv } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | import { createSvgIconsPlugin } from '@digitalacorn/vite-plugin-svg-icons' 4 | import { viteMockServe } from 'vite-plugin-mock' 5 | import path from 'path' 6 | import PROXY_CONFIG from './proxy.conf' 7 | import ElementPlus from 'unplugin-element-plus/vite' 8 | import AutoImport from 'unplugin-auto-import/vite' 9 | import Components from 'unplugin-vue-components/vite' 10 | import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' 11 | // https://vitejs.dev/config/ 12 | export default ({ command }: ConfigEnv): UserConfigExport => { 13 | return { 14 | build: { 15 | sourcemap: true, 16 | }, 17 | server: { 18 | hmr: true, 19 | proxy: PROXY_CONFIG, 20 | }, 21 | plugins: [ 22 | vue(), 23 | createSvgIconsPlugin({ 24 | // Specify the icon folder to be cached 25 | iconDirs: [path.resolve(process.cwd(), './src/assets/icons')], 26 | // Specify symbolId format 27 | symbolId: 'icon-[name]', 28 | replaceStrokeWithCurrentColor: false /* */, 29 | }), 30 | viteMockServe({ 31 | mockPath: 'mock', 32 | enable: false, 33 | }), 34 | ElementPlus({ 35 | defaultLocale: 'zh-cn', 36 | useSource: true, 37 | }), 38 | AutoImport({ 39 | resolvers: [ElementPlusResolver()], 40 | }), 41 | Components({ 42 | resolvers: [ElementPlusResolver()], 43 | }), 44 | ], 45 | css: { 46 | preprocessorOptions: { 47 | scss: { 48 | additionalData: `@use "src/styles/index.scss" as *;`, 49 | }, 50 | }, 51 | }, 52 | resolve: { 53 | alias: { 54 | '@': 'src', 55 | }, 56 | extensions: [ 57 | '.mjs', 58 | '.js', 59 | '.mts', 60 | '.ts', 61 | '.jsx', 62 | '.tsx', 63 | '.json', 64 | '.vue', 65 | ], 66 | }, 67 | } 68 | } 69 | --------------------------------------------------------------------------------