前端页面提交

This commit is contained in:
黄嘉宇 2024-12-04 11:28:48 +08:00
parent b4b8c41056
commit a7b543fab7
253 changed files with 27233 additions and 2 deletions

2
.gitignore vendored
View File

@ -1,2 +0,0 @@

BIN
2024ECweb/.DS_Store vendored Normal file

Binary file not shown.

46
2024ECweb/README.md Normal file
View File

@ -0,0 +1,46 @@
# incol
This template should help get you started developing with Vue 3 in Vite.
## Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
## Type Support for `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
1. Disable the built-in TypeScript Extension
1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
## Customize configuration
See [Vite Configuration Reference](https://vitejs.dev/config/).
## Project Setup
```sh
pnpm install
```
### Compile and Hot-Reload for Development
```sh
pnpm dev
```
### Type-Check, Compile and Minify for Production
```sh
pnpm build
```
### Lint with [ESLint](https://eslint.org/)
```sh
pnpm lint
```

View File

9
2024ECweb/auto-imports.d.ts vendored Normal file
View File

@ -0,0 +1,9 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
}

35
2024ECweb/components.d.ts vendored Normal file
View File

@ -0,0 +1,35 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}
declare module 'vue' {
export interface GlobalComponents {
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCol: typeof import('element-plus/es')['ElCol']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElInput: typeof import('element-plus/es')['ElInput']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
}
}

1
2024ECweb/env.d.ts vendored Normal file
View File

@ -0,0 +1 @@
/// <reference types="vite/client" />

14
2024ECweb/index.html Normal file
View File

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vite App</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

View File

@ -0,0 +1,342 @@
export default [
{
path: '/jlyx',
// component: () => import('@/layout/index.vue'),
meta: { sort: 1, title: '计量运行监测', icon: 'icon-celianggongju' },
children: [
{
path: '/jlyx/sjfx',
meta: { title: '数据分析', icon: 'icon-chaxun' }
// component: () => import('@/views/index/analysis.vue')
},
{
path: '/jlyx/tjpj',
meta: { title: '统计评价', icon: 'icon-daipingjia' }
// component: () => import('@/views/index/bigData.vue')
}
]
},
{
path: '/cate',
// component: () => import('@/layout/index.vue'),
meta: { sort: 2, title: '采集运维', icon: 'icon-shouye-1' },
children: [
{
path: '/cate/cjyx',
meta: { title: '采集运行总览', icon: 'icon-fengxianfenxi' }
// component: () => import('@/views/cate/index.vue')
},
{
path: '/cate/sbyx',
meta: { title: '设备运行监控', icon: 'icon-shebeidadian_o' }
// component: () => import('@/views/cate/create.vue')
},
{
path: '/cate/cjyw',
meta: { title: '采集运维闭环管理', icon: 'icon--graphic' }
// component: () => import('@/views/cate/index.vue')
},
{
path: '/cate/sbts',
meta: { title: '设备调试管理', icon: 'icon-shebeiguanli' }
// component: () => import('@/views/cate/create.vue')
},
{
path: '/cate/tjfx',
meta: { title: '统计分析', icon: 'icon-tongjifenxi' }
// component: () => import('@/views/cate/index.vue')
},
{
path: '/cate/lhfl',
meta: { title: '灵活费率采集监控', icon: 'icon-tixianfeishuai' }
// component: () => import('@/views/cate/create.vue')
},
{
path: '/cate/dygl',
meta: { title: 'BC类供电电压管理', icon: 'icon-fuhe' }
// component: () => import('@/views/cate/index.vue')
},
{
path: '/cate/zxsj',
meta: { title: '专线数据管理', icon: 'icon-shuju' }
// component: () => import('@/views/cate/create.vue')
},
{
path: '/cate/fljk',
meta: { title: '脉冲分路监控', icon: 'icon-maichong' }
// component: () => import('@/views/cate/index.vue')
}
]
},
{
path: '/store',
// component: () => import('@/layout/index.vue'),
meta: { sort: 3, title: '抄表发布', icon: 'icon-shishichaobiao' },
children: [
{
path: '/store/sjzl',
meta: { title: '数据总览', icon: 'icon-tosboard' }
// component: () => import('@/views/store/index.vue')
},
{
path: '/store/sjfb',
meta: { title: '数据发布管理', icon: 'icon-fabu' }
// component: () => import('@/views/store/create.vue')
}
]
},
{
path: '/fkjk',
// component: () => import('@/layout/index.vue'),
meta: { sort: 4, title: '费控监控', icon: 'icon-fufei' },
children: [
{
path: '/fkjk/fkzk',
meta: { title: '费控总览', icon: 'icon-qian' }
// component: () => import('@/views/goods/index.vue')
},
{
path: '/fkjk/bdzd',
meta: { title: '本地自动复电分析', icon: 'icon-shujufenxi-baobeifenxi' }
// component: () => import('@/views/goods/create.vue')
}
]
},
{
path: '/order',
// component: () => import('@/layout/index.vue'),
meta: { sort: 5, title: '配电监控', icon: 'icon-peidian' },
children: [
{
path: '/order/pdljzl',
meta: { title: '配电监控总览', icon: 'icon-yujingkanban' }
// component: () => import('@/views/order/index.vue')
},
{
path: '/order/pdfx',
meta: { title: '配电分析', icon: 'icon-navicon-tjb' }
// component: () => import('@/views/order/create.vue')
},
{
path: '/order/pdtj',
meta: { title: '配电统计', icon: 'icon-zonglan' }
// component: () => import('@/views/order/index.vue')
},
{
path: '/order/ldyxjc',
meta: { title: '漏电流运行监测', icon: 'icon-caijiguanli' }
// component: () => import('@/views/order/create.vue')
},
{
path: '/order/dtfx',
meta: { title: '停电分析', icon: 'icon--graphic' }
// component: () => import('@/views/order/create.vue')
}
]
},
{
path: '/xsjk',
// component: () => import('@/layout/index.vue'),
meta: { sort: 6, title: '线损监控', icon: 'icon-xiansunfenxi' },
children: [
{
path: '/xxjk/mxgl',
meta: { title: '模型管理', icon: 'icon-moxingguanli' }
// component: () => import('@/views/user/index.vue')
},
{
path: '/xxjk/fzgl',
meta: { title: '赋值管理', icon: 'icon-navicon-tjb' }
// component: () => import('@/views/user/create.vue')
},
{
path: '/xxjk/xxfx',
meta: { title: '线损分析', icon: 'icon-fengxianfenxi' }
// component: () => import('@/views/user/index.vue')
},
{
path: '/xxjk/xxcx',
meta: { title: '线损查询', icon: 'icon-pinggu' }
// component: () => import('@/views/user/create.vue')
}
]
},
{
path: '/role',
// component: () => import('@/layout/index.vue'),
meta: { sort: 7, title: '用电分析', icon: 'icon-tongjifenxi' },
children: [
{
path: '/role/ydfxzl',
meta: { title: '用电分析总览', icon: 'icon-tosboard' }
// component: () => import('@/views/role/index.vue')
},
{
path: '/role/dqydfx',
meta: { title: '地区用电分析', icon: 'icon-shouye-1' }
// component: () => import('@/views/role/create.vue')
},
{
path: '/role/hydyfx',
meta: { title: '行业用电分析', icon: 'icon-jiagezoushi' }
// component: () => import('@/views/role/index.vue')
},
{
path: '/role/jzpz',
meta: { title: '群组配置', icon: 'icon-zuzhiqunzu' }
// component: () => import('@/views/role/create.vue')
},
{
path: '/role/jzydfx',
meta: { title: '群组用电分析', icon: 'icon-gujixian' }
// component: () => import('@/views/role/index.vue')
},
{
path: '/role/shydfx',
meta: { title: '社会用电分析', icon: 'icon-fengxianfenxi' }
// component: () => import('@/views/role/create.vue')
}
]
},
{
path: '/auth',
// component: () => import('@/layout/index.vue'),
meta: { sort: 8, title: '用电监测', icon: 'icon-leidian' },
children: [
{
path: '/auth/xjczl',
meta: { title: '新用电监测总览', icon: 'icon--graphic' }
// component: () => import('@/views/auth/index.vue')
},
{
path: '/auth/jczl',
meta: { title: '用电监测总览', icon: 'icon-yujingkanban' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/auth/ydyc',
meta: { title: '用电异常统计', icon: 'icon-jingbao' }
// component: () => import('@/views/auth/index.vue')
}
]
},
{
path: 'yxyd',
// component: () => import('@/layout/index.vue'),
meta: { sort: 9, title: '有序用电', icon: 'icon-chatou' },
children: [
{
path: '/yxyd/yxydzl',
meta: { title: '有序用电总览', icon: 'icon-tosboard' }
// component: () => import('@/views/auth/index.vue')
},
{
path: '/yxyd/fagl',
meta: { title: '方案管理', icon: 'icon-sousuoliebiao' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/yxyd/xgpg',
meta: { title: '效果评估', icon: 'icon-chaxun' }
// component: () => import('@/views/auth/index.vue')
},
{
path: '/yxyd/yccs',
meta: { title: '异常监测', icon: 'icon-pinggu' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/yxyd/fhbj',
meta: { title: '负荷比较', icon: 'icon-fuhe' }
// component: () => import('@/views/auth/index.vue')
},
{
path: '/yxyd/fhcx',
meta: { title: '负荷查询', icon: 'icon-jrtb_03' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/yxyd/sjtb',
meta: { title: '数据同步', icon: 'icon-wenjianjia_o' }
// component: () => import('@/views/auth/create.vue')
}
]
},
{
path: 'ztyy',
// component: () => import('@/layout/index.vue'),
meta: { sort: 10, title: '专题应用', icon: 'icon-tianchongxing-' },
children: [
{
path: '/ztyy/gccyxjc',
meta: { title: '光绪存运行监测', icon: 'icon-chuqinfenxi' }
// component: () => import('@/views/auth/index.vue')
},
{
path: '/ztyy/dyjc',
meta: { title: '分布式电源监测', icon: 'icon-sousuoliebiao' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/ztyy/cdjc',
meta: { title: '充电桩监测', icon: 'icon-shujufenxi-baobeifenxi' }
// component: () => import('@/views/auth/create.vue')
}
]
},
{
path: '/auth',
// component: () => import('@/layout/index.vue'),
meta: { sort: 11, title: '系统支撑功能', icon: 'icon-nengyuanshuzihuayanjiu' },
children: [
{
path: '/auth/yyzx',
meta: { title: '运营中心', icon: 'icon-yunyingguanli' }
// component: () => import('@/views/auth/index.vue')
},
{
path: '/auth/stzx',
meta: { title: '视图中心', icon: 'icon-shitu' },
// component: () => import('@/views/auth/create.vue')
children: [
{
path: '/auth/stzx/dbst',
meta: { title: '电表视图', icon: '' }
// component: () => import('@/views/auth/index.vue')
},
{
path: '/auth/stzx/yhst',
meta: { title: '用户视图', icon: '' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/auth/stzx/bxst',
meta: { title: '表箱视图', icon: '' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/auth/stzx/ztst',
meta: { title: '终端视图', icon: 'icon-zengjia1' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/auth/stzx/tqst',
meta: { title: '台区视图', icon: 'icon-zengjia1' }
// component: () => import('@/views/auth/create.vue')
},
{
path: '/auth/stzx/pbst',
meta: { title: '配变视图', icon: 'icon-zengjia1' }
// component: () => import('@/views/auth/create.vue')
}
]
}
]
}
// ...
]

8330
2024ECweb/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

42
2024ECweb/package.json Normal file
View File

@ -0,0 +1,42 @@
{
"name": "incol",
"version": "0.0.0",
"private": true,
"scripts": {
"dev": "vite",
"build": "run-p type-check build-only",
"preview": "vite preview",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
"format": "prettier --write src/"
},
"dependencies": {
"@element-plus/icons-vue": "^2.1.0",
"echarts": "^5.4.3",
"element-plus": "^2.3.12",
"pinia": "^2.1.6",
"vue": "^3.3.4",
"vue-router": "^4.2.4"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.3.2",
"@tsconfig/node18": "^18.2.0",
"@types/node": "^18.17.5",
"@vitejs/plugin-vue": "^4.3.1",
"@vue/eslint-config-prettier": "^8.0.0",
"@vue/eslint-config-typescript": "^11.0.3",
"@vue/tsconfig": "^0.4.0",
"axios": "^1.5.0",
"eslint": "^8.46.0",
"eslint-plugin-vue": "^9.16.1",
"npm-run-all": "^4.1.5",
"prettier": "^3.0.0",
"sass": "^1.66.1",
"typescript": "~5.1.6",
"unplugin-auto-import": "^0.16.6",
"unplugin-vue-components": "^0.25.2",
"vite": "^4.4.9",
"vue-tsc": "^1.8.8"
}
}

3168
2024ECweb/pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

12
2024ECweb/src/App.vue Normal file
View File

@ -0,0 +1,12 @@
<script setup lang="ts">
import { RouterView } from "vue-router";
</script>
<template>
<RouterView />
</template>
<style lang="scss">
@import "styles/reset.scss";
// @import "icon-font/iconfont.css";
</style>

View File

@ -0,0 +1,35 @@
import type { GetRdjTableValue, GetRdjLineChartData,GetRdjData } from './types'
// PostUserPayloadType
import request from '@/utils/request'
const { get, post, del, put } = request
// 1 响应的数据类型限制
// 2 方便后期批量封装 -》参考锋域
export const GetRdjTableValApi = (tq_code:string,column2:string) => {
return get<GetRdjTableValue>('/DailyFreeze.ashx?action=biaoji&module=日冻结-日冻结示值&tq_code='+tq_code+"&biaoji="+column2, {})
}
export const GetRdjLineChartDataApi = (module: string,column2:string) => {
return get<GetRdjLineChartData>(
'/DailyFreeze.ashx?action=biaoji&module=' + (module || '日冻结-曲线数据')+"&biaoji="+column2,
{}
)
}
export const GetTqCodeApi = (module: string) => {
return get<GetRdjData>(
'/Taiqu.ashx?action=BindBJ&bianhao=' + module,
{}
)
}
export const GetJiLiangApi = (bianhao: string) => {
return get<GetRdjData>(
'/Taiqu.ashx?action=JiLiangXinXi&bianhao=' + bianhao,
{}
)
}

View File

@ -0,0 +1,29 @@
// 日冻结示值GetRdjLineChartData
export interface GetRdjTableValue{
action:string
tq_code:string | number
biaoji:string
module:string
}
// 日冻结曲线数据
export interface GetRdjLineChartData {
action:string
tq_code:string | number
biaoji:string
module:string
}
// 日冻结曲线数据
export interface GetRdjLineChartData {
action:string
tq_code:string | number
biaoji:string
module:string
}
// 日冻结曲线数据
export interface GetRdjData {
action:string
biaoji:string
bianhao:string
}

View File

@ -0,0 +1,35 @@
import type { GetTaiQuType, PostTaiQuPayloadType } from './types'
// PostUserPayloadType
import request from '@/utils/request'
const { get, post, del, put } = request
// 1 响应的数据类型限制
// 2 方便后期批量封装 -》参考锋域
export const getUserApi = (params: object) => {
return get<GetTaiQuType>('/Taiqu.ashx?action=taiqu&tq_code=&bianhao=', params)
}
export const getUserApiTwo = (two: object, params: object) => {
return get<GetTaiQuType>('/Taiqu.ashx?action=taiqu&tq_code=&two=' + two, params)
}
//供电量接口
export const postUserApi = (tq_code: string) => {
return get<PostTaiQuPayloadType>('/Taiqu.ashx?action=taiqudetail&module=线损监测-线损查询-明细1&bianhao=' + tq_code, {})
}
//售电量接口
export const shoudlApi = (tq_code: string) => {
return get<PostTaiQuPayloadType>('/Taiqu.ashx?action=taiqudetail&module=线损监测-线损查询-明细2&bianhao=' + tq_code, {})
}
//损失电量接口
export const ssdlApi = (tq_code: string) => {
return get<PostTaiQuPayloadType>('/Taiqu.ashx?action=taiqudetail&module=线损监测-线损查询-明细1&bianhao=' + tq_code, {})
}
// export const postUserApi = (data: PostUserPayloadType) => {
// return post<API.Result>('/user/create', data)
// }c
export const wireLossApi = (tq_code:string) => {
return get<PostTaiQuPayloadType>('/DailyFreeze.ashx?action=taiqu&tq_module=线损率分析-线损记录&tq_code='+tq_code, {})
}

View File

@ -0,0 +1,64 @@
export interface PostTaiQuPayloadType {
state: boolean
message: string
data: []
}
export interface PostAssignRolePayloadType {
user_id: number
role_id: number
username?: string
role_name?: string
}
export interface PutUserStatePayloadType {
user_id: number
state: number
}
export interface DeleteUserPayloadType {
user_id: string | number
}
export interface GetUserPayloadType {
pagenum: number
pagesize: number
username: string
mobile: string
role_name: string
created_at: Date[] | string
updated_at: Array<Date> | string
}
export interface user {
// id: string,
// role_name:string,
// uname: string,
// mobile: string,
// state:0|1
// avatar: string,
// created_at: string,
// updated_at: string,
user_id: number
role_id: number
role_name: string
username: string
mobile: string
state: number
created_at: string
updated_at: string
avatar: string
[k: string]: any
}
export interface GetUserResType {
state?: number
msg?: string
list: user[]
total: number
}
export interface GetTaiQuType {
state: boolean
message: string
data: []
}

View File

@ -0,0 +1,19 @@
import type { GetXianSunType } from './types'
// PostUserPayloadType
import request from '@/utils/request'
const { get, post, del, put } = request
// 1 响应的数据类型限制
// 2 方便后期批量封装 -》参考锋域
export const getRoleApi = () => {
return get<GetXianSunType>('Taiqu.ashx?action=zsj', {})
}
// export const postRoleApi = () => {
// return get<PostGongDianType>('DailyFreeze.ashx?action=taiqu&tq_code=01&tq_module=线损率分析-线损记录', {})
// }
// export const postRoleApi = (data: PostRolePayloadType) => {
// return post<API.Result>('/role/create', data)
// }

50
2024ECweb/src/api/xiansun/types.d.ts vendored Normal file
View File

@ -0,0 +1,50 @@
export interface PostRolePayloadType {
role_name: string
role_desc?: string
}
export interface PutRolePayloadType extends PostRolePayloadType {
role_id: number
}
export interface PostRoleAssignAuthPayloadType {
defaultCheckedKeys?: number[]
role_name?: string
role_id: number
auth_ids: string
auth_ids_son: string
}
export interface DeleteRolePayloadType {
role_id: string | number
}
export interface GetRoleResType {
state?: number
msg?: string
list: Role[]
total: number
}
export interface GetRolePayloadType {
pagenum: number
pagesize: number
role_name: string
// total: number
}
export interface GetXianSunType {
state: boolean
message: string
data: []
}
// id: string
// role_name: string
// role_desc: string
// created_at: string
// updated_at: string
// role_id: number
// role_name: string
// action_list: string
// role_desc: string
// created_at: string
// updated_at: string
// auth_ids: string
// auth_ids_son: string
// [k: string]: any

View File

@ -0,0 +1,17 @@
import type { GetXianSunLvType } from './types'
// PostUserPayloadType
import request from '@/utils/request'
const { get, post, del, put } = request
// 1 响应的数据类型限制
// 2 方便后期批量封装 -》参考锋域
export const getUseApi = (tq_code: string) => {
return get<GetXianSunLvType>('DailyFreeze.ashx?action=taiqu&tq_module=线损率分析-用户电量&tq_code='+tq_code, {})
}
export const getNameApi = (bianhao: string) => {
return get<GetXianSunLvType>('Taiqu.ashx?action=queryuser&bianhao=' + bianhao, {})
}

View File

@ -0,0 +1,5 @@
export interface GetXianSunLvType {
state: boolean
message: string
data: []
}

View File

@ -0,0 +1,13 @@
import type { GetNameType } from './types'
// PostUserPayloadType
import request from '@/utils/request'
const { get, post, del, put } = request
// 1 响应的数据类型限制
// 2 方便后期批量封装 -》参考锋域
export const getUserNameApi = () => {
return get<GetNameType>('Taiqu.ashx?action=queryuser&bianhao=9104039400', {})
}

5
2024ECweb/src/api/yhbh/types.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
export interface GetNameType {
state: boolean
message: string
data: []
}

View File

@ -0,0 +1,3 @@
export const config = {
apiBaseUrl: 'http://172.16.1.254:20013/Handler', // 设置接口的基础路径
};

View File

@ -0,0 +1,539 @@
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,215 @@
@font-face {
font-family: "iconfont"; /* Project id 4244231 */
src: url('iconfont.woff2?t=1694194507005') format('woff2'),
url('iconfont.woff?t=1694194507005') format('woff'),
url('iconfont.ttf?t=1694194507005') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-sousuo:before {
content: "\e651";
}
.icon-qian:before {
content: "\e662";
}
.icon-tongjifenxi:before {
content: "\e626";
}
.icon-sousuoliebiao:before {
content: "\e60e";
}
.icon-caijiguanli:before {
content: "\e618";
}
.icon-maichong:before {
content: "\e62b";
}
.icon-shujufenxi:before {
content: "\e620";
}
.icon-navicon-tjb:before {
content: "\e657";
}
.icon-chuqinfenxi:before {
content: "\e62a";
}
.icon-fengxianfenxi:before {
content: "\e62d";
}
.icon-tixianfeishuai:before {
content: "\e653";
}
.icon-shebeiguanli:before {
content: "\ebb7";
}
.icon-zuzhiqunzu:before {
content: "\ebd8";
}
.icon-wenjianjia_o:before {
content: "\eb4f";
}
.icon-shebeidadian_o:before {
content: "\eb59";
}
.icon-moxingguanli:before {
content: "\e633";
}
.icon-daipingjia:before {
content: "\e610";
}
.icon--graphic:before {
content: "\e64a";
}
.icon-chatou:before {
content: "\ec77";
}
.icon-tianchongxing-:before {
content: "\e645";
}
.icon-xitong:before {
content: "\e835";
}
.icon-chaxun:before {
content: "\e632";
}
.icon-shishichaobiao:before {
content: "\e69f";
}
.icon-xiansunfenxi:before {
content: "\e6a0";
}
.icon-shuju:before {
content: "\e616";
}
.icon-shujufenxi-baobeifenxi:before {
content: "\e600";
}
.icon-pinggu:before {
content: "\e65a";
}
.icon-gujixian:before {
content: "\e625";
}
.icon-jiance:before {
content: "\e605";
}
.icon-fuhe:before {
content: "\e6a3";
}
.icon-yewuyujing:before {
content: "\e62c";
}
.icon-zuocecaidanlantubiao_ALGxitongguanli:before {
content: "\e606";
}
.icon-zonglan:before {
content: "\e6cd";
}
.icon-fufei:before {
content: "\e614";
}
.icon-peidian:before {
content: "\e62e";
}
.icon-jiagezoushi:before {
content: "\e638";
}
.icon-jrtb_03:before {
content: "\e61e";
}
.icon-yunyingguanli:before {
content: "\e62f";
}
.icon-leidian:before {
content: "\e6c3";
}
.icon-shitu:before {
content: "\e68e";
}
.icon-nengyuanshuzihuayanjiu:before {
content: "\e601";
}
.icon-shouye-1:before {
content: "\e705";
}
.icon-celianggongju:before {
content: "\e604";
}
.icon-fabu:before {
content: "\e642";
}
.icon-yujingkanban:before {
content: "\e629";
}
.icon-jingbao:before {
content: "\e639";
}
.icon-tosboard:before {
content: "\e630";
}
.icon-icon-denglushebeishezhi:before {
content: "\e602";
}
.icon-icon-supplierinventoryproposes:before {
content: "\e694";
}
.icon-icons8-group-64:before {
content: "\e603";
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,359 @@
{
"id": "4244231",
"name": "yc",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "629357",
"name": "搜索",
"font_class": "sousuo",
"unicode": "e651",
"unicode_decimal": 58961
},
{
"icon_id": "658035",
"name": "钱",
"font_class": "qian",
"unicode": "e662",
"unicode_decimal": 58978
},
{
"icon_id": "741899",
"name": "统计分析",
"font_class": "tongjifenxi",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "1147053",
"name": "确认方案",
"font_class": "sousuoliebiao",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "1986963",
"name": "采集管理",
"font_class": "caijiguanli",
"unicode": "e618",
"unicode_decimal": 58904
},
{
"icon_id": "1987004",
"name": "脉冲",
"font_class": "maichong",
"unicode": "e62b",
"unicode_decimal": 58923
},
{
"icon_id": "2060217",
"name": "数据分析1",
"font_class": "shujufenxi",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "3702982",
"name": "统计表",
"font_class": "navicon-tjb",
"unicode": "e657",
"unicode_decimal": 58967
},
{
"icon_id": "4237366",
"name": "出勤分析",
"font_class": "chuqinfenxi",
"unicode": "e62a",
"unicode_decimal": 58922
},
{
"icon_id": "4237376",
"name": "风险分析",
"font_class": "fengxianfenxi",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "4322612",
"name": "提现费率",
"font_class": "tixianfeishuai",
"unicode": "e653",
"unicode_decimal": 58963
},
{
"icon_id": "4506836",
"name": "设备管理",
"font_class": "shebeiguanli",
"unicode": "ebb7",
"unicode_decimal": 60343
},
{
"icon_id": "4521283",
"name": "组织群组",
"font_class": "zuzhiqunzu",
"unicode": "ebd8",
"unicode_decimal": 60376
},
{
"icon_id": "5387767",
"name": "文件夹_o",
"font_class": "wenjianjia_o",
"unicode": "eb4f",
"unicode_decimal": 60239
},
{
"icon_id": "5387797",
"name": "设备打点_o",
"font_class": "shebeidadian_o",
"unicode": "eb59",
"unicode_decimal": 60249
},
{
"icon_id": "5536248",
"name": "模型管理",
"font_class": "moxingguanli",
"unicode": "e633",
"unicode_decimal": 58931
},
{
"icon_id": "5588397",
"name": "待评价",
"font_class": "daipingjia",
"unicode": "e610",
"unicode_decimal": 58896
},
{
"icon_id": "5679726",
"name": "005-graphic",
"font_class": "-graphic",
"unicode": "e64a",
"unicode_decimal": 58954
},
{
"icon_id": "5982855",
"name": "插头",
"font_class": "chatou",
"unicode": "ec77",
"unicode_decimal": 60535
},
{
"icon_id": "6446344",
"name": "方块",
"font_class": "tianchongxing-",
"unicode": "e645",
"unicode_decimal": 58949
},
{
"icon_id": "6510092",
"name": "系统",
"font_class": "xitong",
"unicode": "e835",
"unicode_decimal": 59445
},
{
"icon_id": "7158008",
"name": "查询",
"font_class": "chaxun",
"unicode": "e632",
"unicode_decimal": 58930
},
{
"icon_id": "7339805",
"name": "实时抄表",
"font_class": "shishichaobiao",
"unicode": "e69f",
"unicode_decimal": 59039
},
{
"icon_id": "7339809",
"name": "线损分析",
"font_class": "xiansunfenxi",
"unicode": "e6a0",
"unicode_decimal": 59040
},
{
"icon_id": "7638980",
"name": "数据",
"font_class": "shuju",
"unicode": "e616",
"unicode_decimal": 58902
},
{
"icon_id": "7898737",
"name": "数据分析-宝贝分析",
"font_class": "shujufenxi-baobeifenxi",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "8487969",
"name": "118评估",
"font_class": "pinggu",
"unicode": "e65a",
"unicode_decimal": 58970
},
{
"icon_id": "9060626",
"name": "谷脊线",
"font_class": "gujixian",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "9499384",
"name": "监测",
"font_class": "jiance",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "10268989",
"name": "负荷",
"font_class": "fuhe",
"unicode": "e6a3",
"unicode_decimal": 59043
},
{
"icon_id": "10826652",
"name": "业务预警",
"font_class": "yewuyujing",
"unicode": "e62c",
"unicode_decimal": 58924
},
{
"icon_id": "11187557",
"name": "左侧菜单栏图标_ALG系统管理",
"font_class": "zuocecaidanlantubiao_ALGxitongguanli",
"unicode": "e606",
"unicode_decimal": 58886
},
{
"icon_id": "12931781",
"name": "总览",
"font_class": "zonglan",
"unicode": "e6cd",
"unicode_decimal": 59085
},
{
"icon_id": "13645760",
"name": "付费",
"font_class": "fufei",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "14151204",
"name": "配电",
"font_class": "peidian",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "14384447",
"name": "价格走势",
"font_class": "jiagezoushi",
"unicode": "e638",
"unicode_decimal": 58936
},
{
"icon_id": "14512633",
"name": "jrtb_03",
"font_class": "jrtb_03",
"unicode": "e61e",
"unicode_decimal": 58910
},
{
"icon_id": "15351663",
"name": "运营管理",
"font_class": "yunyingguanli",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "15644348",
"name": "雷电",
"font_class": "leidian",
"unicode": "e6c3",
"unicode_decimal": 59075
},
{
"icon_id": "16082913",
"name": "视图",
"font_class": "shitu",
"unicode": "e68e",
"unicode_decimal": 59022
},
{
"icon_id": "17560052",
"name": "能源数字化研究",
"font_class": "nengyuanshuzihuayanjiu",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "17699576",
"name": "shouye-1",
"font_class": "shouye-1",
"unicode": "e705",
"unicode_decimal": 59141
},
{
"icon_id": "17930624",
"name": "测量工具",
"font_class": "celianggongju",
"unicode": "e604",
"unicode_decimal": 58884
},
{
"icon_id": "18863158",
"name": "发布",
"font_class": "fabu",
"unicode": "e642",
"unicode_decimal": 58946
},
{
"icon_id": "19145075",
"name": "预警看板",
"font_class": "yujingkanban",
"unicode": "e629",
"unicode_decimal": 58921
},
{
"icon_id": "20600817",
"name": "警报",
"font_class": "jingbao",
"unicode": "e639",
"unicode_decimal": 58937
},
{
"icon_id": "21205818",
"name": "tosboard",
"font_class": "tosboard",
"unicode": "e630",
"unicode_decimal": 58928
},
{
"icon_id": "21578050",
"name": "icon-登录设备设置",
"font_class": "icon-denglushebeishezhi",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "21843120",
"name": "盘点",
"font_class": "icon-supplierinventoryproposes",
"unicode": "e694",
"unicode_decimal": 59028
},
{
"icon_id": "26868183",
"name": "关于本站",
"font_class": "icons8-group-64",
"unicode": "e603",
"unicode_decimal": 58883
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,539 @@
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,215 @@
@font-face {
font-family: "iconfont"; /* Project id 4244231 */
src: url('iconfont.woff2?t=1694229553713') format('woff2'),
url('iconfont.woff?t=1694229553713') format('woff'),
url('iconfont.ttf?t=1694229553713') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-sousuo:before {
content: "\e651";
}
.icon-qian:before {
content: "\e662";
}
.icon-tongjifenxi:before {
content: "\e626";
}
.icon-sousuoliebiao:before {
content: "\e60e";
}
.icon-caijiguanli:before {
content: "\e618";
}
.icon-maichong:before {
content: "\e62b";
}
.icon-shujufenxi:before {
content: "\e620";
}
.icon-navicon-tjb:before {
content: "\e657";
}
.icon-chuqinfenxi:before {
content: "\e62a";
}
.icon-fengxianfenxi:before {
content: "\e62d";
}
.icon-tixianfeishuai:before {
content: "\e653";
}
.icon-shebeiguanli:before {
content: "\ebb7";
}
.icon-zuzhiqunzu:before {
content: "\ebd8";
}
.icon-wenjianjia_o:before {
content: "\eb4f";
}
.icon-shebeidadian_o:before {
content: "\eb59";
}
.icon-moxingguanli:before {
content: "\e633";
}
.icon-daipingjia:before {
content: "\e610";
}
.icon--graphic:before {
content: "\e64a";
}
.icon-chatou:before {
content: "\ec77";
}
.icon-tianchongxing-:before {
content: "\e645";
}
.icon-xitong:before {
content: "\e835";
}
.icon-chaxun:before {
content: "\e632";
}
.icon-shishichaobiao:before {
content: "\e69f";
}
.icon-xiansunfenxi:before {
content: "\e6a0";
}
.icon-shuju:before {
content: "\e616";
}
.icon-shujufenxi-baobeifenxi:before {
content: "\e600";
}
.icon-pinggu:before {
content: "\e65a";
}
.icon-gujixian:before {
content: "\e625";
}
.icon-jiance:before {
content: "\e605";
}
.icon-fuhe:before {
content: "\e6a3";
}
.icon-yewuyujing:before {
content: "\e62c";
}
.icon-zuocecaidanlantubiao_ALGxitongguanli:before {
content: "\e606";
}
.icon-zonglan:before {
content: "\e6cd";
}
.icon-fufei:before {
content: "\e614";
}
.icon-peidian:before {
content: "\e62e";
}
.icon-jiagezoushi:before {
content: "\e638";
}
.icon-jrtb_03:before {
content: "\e61e";
}
.icon-yunyingguanli:before {
content: "\e62f";
}
.icon-leidian:before {
content: "\e6c3";
}
.icon-shitu:before {
content: "\e68e";
}
.icon-nengyuanshuzihuayanjiu:before {
content: "\e601";
}
.icon-shouye-1:before {
content: "\e705";
}
.icon-celianggongju:before {
content: "\e604";
}
.icon-fabu:before {
content: "\e642";
}
.icon-yujingkanban:before {
content: "\e629";
}
.icon-jingbao:before {
content: "\e639";
}
.icon-tosboard:before {
content: "\e630";
}
.icon-icon-denglushebeishezhi:before {
content: "\e602";
}
.icon-icon-supplierinventoryproposes:before {
content: "\e694";
}
.icon-icons8-group-64:before {
content: "\e603";
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,359 @@
{
"id": "4244231",
"name": "yc",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "629357",
"name": "搜索",
"font_class": "sousuo",
"unicode": "e651",
"unicode_decimal": 58961
},
{
"icon_id": "658035",
"name": "钱",
"font_class": "qian",
"unicode": "e662",
"unicode_decimal": 58978
},
{
"icon_id": "741899",
"name": "统计分析",
"font_class": "tongjifenxi",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "1147053",
"name": "确认方案",
"font_class": "sousuoliebiao",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "1986963",
"name": "采集管理",
"font_class": "caijiguanli",
"unicode": "e618",
"unicode_decimal": 58904
},
{
"icon_id": "1987004",
"name": "脉冲",
"font_class": "maichong",
"unicode": "e62b",
"unicode_decimal": 58923
},
{
"icon_id": "2060217",
"name": "数据分析1",
"font_class": "shujufenxi",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "3702982",
"name": "统计表",
"font_class": "navicon-tjb",
"unicode": "e657",
"unicode_decimal": 58967
},
{
"icon_id": "4237366",
"name": "出勤分析",
"font_class": "chuqinfenxi",
"unicode": "e62a",
"unicode_decimal": 58922
},
{
"icon_id": "4237376",
"name": "风险分析",
"font_class": "fengxianfenxi",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "4322612",
"name": "提现费率",
"font_class": "tixianfeishuai",
"unicode": "e653",
"unicode_decimal": 58963
},
{
"icon_id": "4506836",
"name": "设备管理",
"font_class": "shebeiguanli",
"unicode": "ebb7",
"unicode_decimal": 60343
},
{
"icon_id": "4521283",
"name": "组织群组",
"font_class": "zuzhiqunzu",
"unicode": "ebd8",
"unicode_decimal": 60376
},
{
"icon_id": "5387767",
"name": "文件夹_o",
"font_class": "wenjianjia_o",
"unicode": "eb4f",
"unicode_decimal": 60239
},
{
"icon_id": "5387797",
"name": "设备打点_o",
"font_class": "shebeidadian_o",
"unicode": "eb59",
"unicode_decimal": 60249
},
{
"icon_id": "5536248",
"name": "模型管理",
"font_class": "moxingguanli",
"unicode": "e633",
"unicode_decimal": 58931
},
{
"icon_id": "5588397",
"name": "待评价",
"font_class": "daipingjia",
"unicode": "e610",
"unicode_decimal": 58896
},
{
"icon_id": "5679726",
"name": "005-graphic",
"font_class": "-graphic",
"unicode": "e64a",
"unicode_decimal": 58954
},
{
"icon_id": "5982855",
"name": "插头",
"font_class": "chatou",
"unicode": "ec77",
"unicode_decimal": 60535
},
{
"icon_id": "6446344",
"name": "方块",
"font_class": "tianchongxing-",
"unicode": "e645",
"unicode_decimal": 58949
},
{
"icon_id": "6510092",
"name": "系统",
"font_class": "xitong",
"unicode": "e835",
"unicode_decimal": 59445
},
{
"icon_id": "7158008",
"name": "查询",
"font_class": "chaxun",
"unicode": "e632",
"unicode_decimal": 58930
},
{
"icon_id": "7339805",
"name": "实时抄表",
"font_class": "shishichaobiao",
"unicode": "e69f",
"unicode_decimal": 59039
},
{
"icon_id": "7339809",
"name": "线损分析",
"font_class": "xiansunfenxi",
"unicode": "e6a0",
"unicode_decimal": 59040
},
{
"icon_id": "7638980",
"name": "数据",
"font_class": "shuju",
"unicode": "e616",
"unicode_decimal": 58902
},
{
"icon_id": "7898737",
"name": "数据分析-宝贝分析",
"font_class": "shujufenxi-baobeifenxi",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "8487969",
"name": "118评估",
"font_class": "pinggu",
"unicode": "e65a",
"unicode_decimal": 58970
},
{
"icon_id": "9060626",
"name": "谷脊线",
"font_class": "gujixian",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "9499384",
"name": "监测",
"font_class": "jiance",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "10268989",
"name": "负荷",
"font_class": "fuhe",
"unicode": "e6a3",
"unicode_decimal": 59043
},
{
"icon_id": "10826652",
"name": "业务预警",
"font_class": "yewuyujing",
"unicode": "e62c",
"unicode_decimal": 58924
},
{
"icon_id": "11187557",
"name": "左侧菜单栏图标_ALG系统管理",
"font_class": "zuocecaidanlantubiao_ALGxitongguanli",
"unicode": "e606",
"unicode_decimal": 58886
},
{
"icon_id": "12931781",
"name": "总览",
"font_class": "zonglan",
"unicode": "e6cd",
"unicode_decimal": 59085
},
{
"icon_id": "13645760",
"name": "付费",
"font_class": "fufei",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "14151204",
"name": "配电",
"font_class": "peidian",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "14384447",
"name": "价格走势",
"font_class": "jiagezoushi",
"unicode": "e638",
"unicode_decimal": 58936
},
{
"icon_id": "14512633",
"name": "jrtb_03",
"font_class": "jrtb_03",
"unicode": "e61e",
"unicode_decimal": 58910
},
{
"icon_id": "15351663",
"name": "运营管理",
"font_class": "yunyingguanli",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "15644348",
"name": "雷电",
"font_class": "leidian",
"unicode": "e6c3",
"unicode_decimal": 59075
},
{
"icon_id": "16082913",
"name": "视图",
"font_class": "shitu",
"unicode": "e68e",
"unicode_decimal": 59022
},
{
"icon_id": "17560052",
"name": "能源数字化研究",
"font_class": "nengyuanshuzihuayanjiu",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "17699576",
"name": "shouye-1",
"font_class": "shouye-1",
"unicode": "e705",
"unicode_decimal": 59141
},
{
"icon_id": "17930624",
"name": "测量工具",
"font_class": "celianggongju",
"unicode": "e604",
"unicode_decimal": 58884
},
{
"icon_id": "18863158",
"name": "发布",
"font_class": "fabu",
"unicode": "e642",
"unicode_decimal": 58946
},
{
"icon_id": "19145075",
"name": "预警看板",
"font_class": "yujingkanban",
"unicode": "e629",
"unicode_decimal": 58921
},
{
"icon_id": "20600817",
"name": "警报",
"font_class": "jingbao",
"unicode": "e639",
"unicode_decimal": 58937
},
{
"icon_id": "21205818",
"name": "tosboard",
"font_class": "tosboard",
"unicode": "e630",
"unicode_decimal": 58928
},
{
"icon_id": "21578050",
"name": "icon-登录设备设置",
"font_class": "icon-denglushebeishezhi",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "21843120",
"name": "盘点",
"font_class": "icon-supplierinventoryproposes",
"unicode": "e694",
"unicode_decimal": 59028
},
{
"icon_id": "26868183",
"name": "关于本站",
"font_class": "icons8-group-64",
"unicode": "e603",
"unicode_decimal": 58883
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,168 @@
<script setup lang="ts">
import mock from '../../../mock/menu/index.ts'
import { ref, onMounted, watchEffect } from 'vue'
import router from '@/router'
import { Location } from '@element-plus/icons-vue'
import { useRoute } from 'vue-router'
import { storeToRefs } from 'pinia'
import { useAsideStore } from '@/stores/aside'
import { useTabsStore } from '@/stores/tabs'
const { handleTabsAdd } = useTabsStore()
//
const { isLeftIcon } = storeToRefs(useAsideStore())
//
// const isCollapse = ref(false)
const isCollapse = ref(false)
const handleOpen = (key: string, keyPath: string[]) => {
console.log(key, keyPath)
}
const handleClose = (key: string, keyPath: string[]) => {
console.log(key, keyPath)
}
//
let w = ref<number>(document.documentElement.clientWidth)
const onresize = () => {
w.value = document.documentElement.clientWidth
if (w.value <= 990 && isLeftIcon.value) {
isLeftIcon.value = !isLeftIcon.value
// console.log(isLeftIcon)
}
}
onresize()
window.addEventListener('resize', onresize)
const defaultActive = ref('5-2')
const onMenuClick = (twoItem: any) => {
// router.push(twoItem.path)
handleTabsAdd({
path: twoItem.path,
label: twoItem.meta.title
})
localStorage.setItem('lujing', JSON.stringify({ path: twoItem.path, label: twoItem.meta.title }))
}
const defaultMenuActive = ref('5-2')
const route = useRoute()
watchEffect(() => {
mock.forEach((firstItem: any, firstI: number) => {
// console.log(firstItem);
if (firstItem.children) {
firstItem.children.forEach((twoItem: any, twoI: number) => {
// console.log(twoItem.path);
// console.log(twoItem.path, `${firstI}-${twoI}`)
//
if (route.path === twoItem.path) {
defaultMenuActive.value = `${firstI}-${twoI}`
}
})
}
})
})
onMounted(() => {})
</script>
<template>
<div
:class="{
menuMobileBg: true,
menuMobileBgClose: !isLeftIcon
}"
@click="isLeftIcon = false"
></div>
<aside
:class="{
menu: true,
menuMobile: true,
menuMobileClose: !isLeftIcon
}"
:style="{ width: `${isLeftIcon ? 210 : 64}px` }"
>
<el-menu
:default-active="defaultMenuActive"
class="el-menu-vertical-demo"
@open="handleOpen"
@close="handleClose"
text-color="black"
:collapse="!isLeftIcon"
:collapse-transition="false"
:unique-opened="true"
>
<template v-for="(firstitem, firsti) in mock" :key="firsti">
<el-sub-menu :index="String(firsti)">
<template #title>
<i :class="['iconfont', firstitem.meta.icon]"></i>
<span>{{ firstitem.meta.title }}</span>
</template>
<el-menu-item
v-for="(twoitem, twoi) in firstitem.children"
:index="`${firsti}-${twoi}`"
:key="twoi"
@click="onMenuClick(twoitem)"
v-show="!twoitem.children"
>
<template #title>
<i :class="['iconfont', twoitem.meta.icon]"></i>
<span>{{ twoitem.meta.title }}</span>
</template>
<!-- <i :class="['iconfont', twoitem.meta.icon]"></i>
<span>{{ twoitem.meta.title }}</span> -->
</el-menu-item>
<template v-for="(twoitem, twoi) in firstitem.children" :key="twoi">
<el-sub-menu v-show="twoitem.children" :index="`${firsti}-${twoi}`">
<template #title>{{ twoitem.meta.title }}</template>
<el-menu-item
v-for="(threeitem, threei) in twoitem.children"
:key="threei"
:index="`${firsti}-${twoi}-${threei}`"
@click="onMenuClick(threeitem)"
>{{ threeitem.meta.title }}</el-menu-item
>
</el-sub-menu>
</template>
</el-sub-menu>
</template>
</el-menu>
</aside>
</template>
<style lang="scss" scoped>
aside {
width: 150px;
height: 100%;
transition: width 0.3s;
overflow:scroll;
.el-menu {
border: none;
.iconfont {
font-size: 18px;
margin: 0 8px;
color: #ccc;
}
}
// .el-menu .iconfont[data-v-42ce06ec]
}
.el-sub-menu__title *{
color:#837f7f!important;
}
.el-menu-item *{
color:#837f7f;
}
.el-sub-menu .el-menu-item{
color:#837f7f
}
</style>

View File

@ -0,0 +1,54 @@
<script setup lang="ts">
//
import { useTabsStore } from '@/stores/tabs'
import { storeToRefs } from 'pinia'
const tabsStore = useTabsStore()
const { tabs, tabsName } = storeToRefs(tabsStore)
</script>
<template>
<section class="tabs">
<div class="l">
<el-tabs v-model="tabsName" type="card" closable @tab-remove="tabsStore.handleTabsDelete">
<el-tab-pane v-for="(item, i) in tabs" :key="i" :label="item.label" :name="item.path"></el-tab-pane>
</el-tabs>
</div>
</section>
</template>
<style lang="scss" scoped>
.tabs {
width: 100%;
height: 40px;
background-color: #fff;
box-sizing: border-box;
padding: 0 10px;
box-shadow: 0 1px 4px #00152914;
display: flex;
.l {
flex: 1;
overflow: hidden;
:deep(.el-tabs--card > .el-tabs__header .el-tabs__nav) {
border: none;
}
:deep(.el-tabs--card > .el-tabs__header .el-tabs__item) {
color: #ccc;
border: none;
}
:deep(.el-tabs--card > .el-tabs__header .el-tabs__item.is-active) {
color: #409eff;
border-bottom: 2px solid #409eff !important;
}
}
.r {
display: flex;
align-items: center;
justify-content: center;
}
}
</style>

View File

@ -0,0 +1,87 @@
<script setup lang="ts">
import Menu from './components/menu.vue'
import Tabs from './components/tabs.vue'
</script>
<template>
<div class="layout" >
<!-- 图标 -->
<div class="gap">
<img src="../assets/img/qiu.png" alt="" />
<p>用采2.0</p>
</div>
<!-- 图标 -->
<!-- 侧边栏 -->
<Menu />
<!-- 侧边栏 -->
<!-- 主体 -->
<div class="section">
<header>
<!-- <Tabs /> -->
</header>
<main>
<router-view></router-view>
</main>
<footer></footer>
</div>
<!-- 主体 -->
</div>
</template>
<style lang="scss" scoped>
.layout {
height: 100%;
display: flex;
.gap {
height: 100%;
background-color: #05b8fa;
img {
width: 20px;
height: 20px;
margin-left: 12px;
margin-top: 10px;
}
p {
font-size: 10px;
color: #c2ffff;
padding-left: 2px;
}
}
.section {
flex: 1;
background-color: #f0f2f5;
display: flex;
flex-direction: column;
overflow-y: scroll;
overflow-x: hidden;
// header {
// height: 40px;
// width: 100%;
// background-color: rgb(255, 146, 127);
// position: fixed;
// top: 0;
// z-index: 20;
// }
main {
// width: calc(100vw - 275px);
box-sizing: border-box;
// margin-top: 40px;
flex: 1;
// padding-left: 50px;
// padding-right: 50px;
// background-color: #ebf8ff;
// background-image: url(../assets/img/bg.png);
// background-position: center center;
// background-repeat: no-repeat;
}
}
}
</style>

15
2024ECweb/src/main.ts Normal file
View File

@ -0,0 +1,15 @@
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import'./assets/icon-font/iconfont.css'
const app = createApp(App)
app.use(createPinia())
app.use(router)
app.mount('#app')

1
2024ECweb/src/mo.d.ts vendored Normal file
View File

@ -0,0 +1 @@
declare module 'element-plus'

0
2024ECweb/src/mod.t.ds Normal file
View File

View File

@ -0,0 +1,289 @@
import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
component: () => import('@/layout/index.vue'),
children: [
{
path: '/',
alias: '/xxjk/xxfx',
component: () => import('@/views/xxjk/xxfx/index.vue'),
meta: { name1: '线损监控', name2: '线损分析' }
},
{
path: '/xxjk/xxcx',
component: () => import('@/views/xxjk/xxcx/index.vue'),
meta: { name1: '线损监控', name2: '线损查询' }
},
// {
// path: '/',
// alias: '/xxjk/xxcx2',
// component: () => import('@/views/xxjk/xxjk/newpage.vue'),
// meta: { name1: '线损监控', name2: '线损查询详情' }
// },
{
path: '/xxjk/mxgl',
component: () => import('@/views/xxjk/mxgl/index.vue'),
meta: { name1: '线损监控', name2: '模型管理' }
},
{
path: '/xxjk/fzgl',
component: () => import('@/views/xxjk/fzgl/index.vue'),
meta: { name1: '线损监控', name2: '赋值管理' }
},
{
path: '/xxjk/newpage',
component: () => import('@/views/xxjk/xxcx/newpage.vue'),
meta: { name1: '线损监控', name2: '新的页面2' }
},
{
path: '/jlyx/sjfx',
component: () => import('@/views/jlyx/sjfx/index.vue'),
meta: { name1: '数据分析', name2: '数据分析' }
},
{
path: '/jlyx/tjpj',
component: () => import('@/views/jlyx/tjpj/index.vue'),
meta: { name1: '计量运行监测', name2: '统计评价' }
},
{
path: '/cate/cjyx',
component: () => import('@/views/cate/cjyx/index.vue'),
meta: { name1: '计量运行监测', name2: '采集运行总览' }
},
{
path: '/cate/sbyx',
component: () => import('@/views/cate/sbyx/index.vue'),
meta: { name1: '采集运维', name2: '设备运行监控' }
},
{
path: '/cate/cjyw',
component: () => import('@/views/cate/cjyw/index.vue'),
meta: { name1: '采集运维', name2: '采集运维闭环管理' }
},
{
path: '/',
alias: '/cate/sbts',
component: () => import('@/views/cate/sbts/index.vue'),
meta: { name1: '采集运维', name2: '设备调试管理' }
},
{
path: '/cate/tjfx',
component: () => import('@/views/cate/tjfx/index.vue'),
meta: { name1: '采集运维', name2: '统计分析' }
},
{
path: '/cate/lhfl',
component: () => import('@/views/cate/lhfl/index.vue'),
meta: { name1: '采集运维', name2: '灵活费率采集监控' }
},
{
path: '/cate/dygl',
component: () => import('@/views/cate/dygl/index.vue'),
meta: { name1: '采集运维', name2: 'BC类供电电压管理' }
},
{
path: '/cate/zxsj',
component: () => import('@/views/cate/zxsj/index.vue'),
meta: { name1: '采集运维', name2: '专线数据管理' }
},
{
path: '/cate/fljk',
component: () => import('@/views/cate/fljk/index.vue'),
meta: { name1: '采集运维', name2: '脉冲分路监控' }
},
{
path: '/store/sjzl',
component: () => import('@/views/store/sjzl/index.vue'),
meta: { name1: '抄表发布', name2: '数据总览' }
},
{
path: '/store/sjfb',
component: () => import('@/views/store/sjfb/index.vue'),
meta: { name1: '抄表发布', name2: '数据发布管理' }
},
{
path: '/fkjk/fkzk',
component: () => import('@/views/fkjk/fkzk/index.vue'),
meta: { name1: '费控监控', name2: '费控总览' }
},
{
path: '/fkjk/bdzd',
component: () => import('@/views/fkjk/bdzd/index.vue'),
meta: { name1: '费控监控', name2: '本地自动复电分析' }
},
{
path: '/order/pdljzl',
component: () => import('@/views/order/pdljzl/index.vue'),
meta: { name1: '配电监控', name2: '配电监控总览' }
},
{
path: '/order/pdfx',
component: () => import('@/views/order/pdfx/index.vue'),
meta: { name1: '配电监控', name2: '配电分析' }
},
{
path: '/order/pdtj',
component: () => import('@/views/order/pdtj/index.vue'),
meta: { name1: '配电监控', name2: '配电统计' }
},
{
path: '/order/ldyxjc',
component: () => import('@/views/order/ldyxjc/index.vue'),
meta: { name1: '配电监控', name2: '漏电流运行监测' }
},
{
path: '/order/dtfx',
component: () => import('@/views/order/dtfx/index.vue'),
meta: { name1: '配电监控', name2: '停电分析' }
},
{
path: '/role/ydfxzl',
component: () => import('@/views/role/ydfxzl/index.vue'),
meta: { name1: '用电分析', name2: '用电分析总览' }
},
{
path: '/role/dqydfx',
component: () => import('@/views/role/dqydfx/index.vue'),
meta: { name1: '用电分析', name2: '地区用电分析' }
},
{
path: '/role/hydyfx',
component: () => import('@/views/role/hydyfx/index.vue'),
meta: { name1: '用电分析', name2: '行业用电分析' }
},
{
path: '/role/jzpz',
component: () => import('@/views/role/jzpz/index.vue'),
meta: { name1: '用电分析', name2: '群组配置' }
},
{
path: '/role/jzydfx',
component: () => import('@/views/role/jzydfx/index.vue'),
meta: { name1: '用电分析', name2: '群组用电分析' }
},
{
path: '/role/shydfx',
component: () => import('@/views/role/shydfx/index.vue'),
meta: { name1: '用电分析', name2: '社会用电分析' }
},
{
path: '/auth/xjczl',
component: () => import('@/views/auth/xjczl/index.vue'),
meta: { name1: '用电监测', name2: '新用电监测总览' }
},
{
path: '/auth/jczl',
component: () => import('@/views/auth/jczl/index.vue'),
meta: { name1: '用电监测', name2: '用电监测总览' }
},
{
path: '/auth/ydyc',
component: () => import('@/views/auth/ydyc/index.vue'),
meta: { name1: '用电监测', name2: '用电异常统计' }
},
{
path: '/yxyd/yxydzl',
component: () => import('@/views/yxyd/yxydzl/index.vue'),
meta: { name1: '有序用电', name2: '有序用电总览' }
},
{
path: '/yxyd/fagl',
component: () => import('@/views/yxyd/fagl/index.vue'),
meta: { name1: '有序用电', name2: '方案管理' }
},
{
path: '/yxyd/xgpg',
component: () => import('@/views/yxyd/xgpg/index.vue'),
meta: { name1: '有序用电', name2: '效果评估' }
},
{
path: '/yxyd/yccs',
component: () => import('@/views/yxyd/yccs/index.vue'),
meta: { name1: '有序用电', name2: '异常监测' }
},
{
path: '/yxyd/fhbj',
component: () => import('@/views/yxyd/fhbj/index.vue'),
meta: { name1: '有序用电', name2: '负荷比较' }
},
{
path: '/yxyd/fhcx',
component: () => import('@/views/yxyd/fhcx/index.vue'),
meta: { name1: '有序用电', name2: '负荷查询' }
},
{
path: '/yxyd/sjtb',
component: () => import('@/views/yxyd/sjtb/index.vue'),
meta: { name1: '有序用电', name2: '数据同步' }
},
{
path: '/ztyy/gccyxjc',
component: () => import('@/views/ztyy/gccyxjc/index.vue'),
meta: { name1: '专题应用', name2: '光绪存运行监测' }
},
{
path: '/ztyy/dyjc',
component: () => import('@/views/ztyy/dyjc/index.vue'),
meta: { name1: '专题应用', name2: '分布式电源监测' }
},
{
path: '/ztyy/cdjc',
component: () => import('@/views/ztyy/cdjc/index.vue'),
meta: { name1: '专题应用', name2: '充电桩监测' }
},
{
path: '/auth/stzx/dbst',
component: () => import('@/views/stzx/dbst/index.vue'),
meta: { name1: '电表视图', name2: '电表视图' }
},
{
path: '/auth/stzx/yhst',
component: () => import('@/views/stzx/yhst/index.vue'),
meta: { name1: '用户视图', name2: '用户视图' }
},
{
path: '/auth/yyzx',
component: () => import('@/views/auth/yyzx/index.vue'),
meta: { name1: '视图中心', name2: '运营中心' }
},
{
path: '/auth/stzx/bxst',
component: () => import('@/views/stzx/bxst/index.vue'),
meta: { name1: '视图中心', name2: '表箱视图' }
},
{
path: '/auth/stzx/ztst',
component: () => import('@/views/stzx/ztst/index.vue'),
meta: { name1: '视图中心', name2: '终端视图' }
},
{
path: '/auth/stzx/tqst',
component: () => import('@/views/stzx/tqst/index.vue'),
meta: { name1: '视图中心', name2: '台区视图' }
},
{
path: '/auth/stzx/pbst',
component: () => import('@/views/stzx/pbst/index.vue'),
meta: { name1: '视图中心', name2: '表箱视图' }
}
]
}
]
})
export default router

View File

@ -0,0 +1,8 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
export const useAsideStore = defineStore('aside', () => {
const isLeftIcon = ref<boolean>(true)
return { isLeftIcon }
})

View File

@ -0,0 +1,12 @@
import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
export const useCounterStore = defineStore('counter', () => {
const count = ref(0)
const doubleCount = computed(() => count.value * 2)
function increment() {
count.value++
}
return { count, doubleCount, increment }
})

View File

@ -0,0 +1,13 @@
import { ref } from 'vue'
import { defineStore } from 'pinia'
export const userlogin1 = defineStore("login1",() => {
const login1:any = ref({})
function setlogin1 (ap:any) {
login1.value = ap
}
return {
login1,
setlogin1
}
})

View File

@ -0,0 +1,85 @@
export interface Tabs {
path: string
label: string
}
import router from '@/router'
import { ElMessage } from 'element-plus'
import { defineStore } from 'pinia'
import { ref, reactive, watch } from 'vue'
// 全局变量
export const useTabsStore = defineStore('tabs', () => {
const tabss = JSON.parse(localStorage.getItem("lujing") as string) || {}
const tabs = reactive<Tabs[]>([{ path: tabss.path? tabss.path: '/xsjk/xsfx', label: tabss.label?tabss.label:'线损分析' }])
const tabsName = ref(tabs[0].path)
watch(tabsName, () => {
router.push(tabsName.value)
})
const handleTabsAdd = (row: Tabs) => {
const findIndex = tabs.findIndex((item: Tabs) => {
return item.path === row.path
})
if (findIndex === -1) tabs.push(row)
tabsName.value = row.path
}
const handleTabsDelete = (path: string) => {
tabs.forEach((item, i) => {
if (path === item.path) {
tabs.splice(i, 1)
// 删除后跳转前一个
tabsName.value = tabs[tabs.length - 1].path
}
})
}
const handleReload = () => {
router.replace(tabsName.value)
}
const handleCloseCurrent = () => {
handleTabsDelete(tabsName.value)
}
const handleCloseOther = () => {
const tab: Tabs | undefined = tabs.find((item: Tabs) => {
return tabsName.value === item.path
})
if (tab) {
tabs.splice(0, 9999999)
tabs.push(tab)
}
}
const handleCloseAll = () => {
tabs.splice(0, 9999999)
// 保留跳转默认
tabs.push({ path: tabss.path, label: tabss.label })
tabsName.value = tabss.path
}
return {
tabs,
tabsName,
handleTabsAdd,
handleTabsDelete,
handleReload,
handleCloseCurrent,
handleCloseOther,
handleCloseAll
}
})

View File

@ -0,0 +1,10 @@
* {
padding: 0;
margin: 0;
}
html,
body,
#app {
height: 100%;
}/*# sourceMappingURL=reset.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["reset.scss","reset.css"],"names":[],"mappings":"AAAA;EACI,UAAA;EACA,SAAA;ACCJ;;ADEA;;;EAGI,YAAA;ACCJ","file":"reset.css"}

View File

@ -0,0 +1,10 @@
* {
padding:0;
margin:0
}
html,
body,
#app {
height:100%;
}

View File

@ -0,0 +1,2 @@
@charset "UTF-8";
/* 颜色变量 *//*# sourceMappingURL=variables.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["variables.css","variables.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB,SAAA","file":"variables.css"}

View File

@ -0,0 +1,19 @@
/* 颜色变量 */
// 行为颜色
$qf-color-primary: #007aff;
$qf-color-success: #4cd964;
$qf-color-warning: #f0ad4e;
$qf-color-error: #dd524d;
// 文字颜色
$qf-text-color:#eee;//基本色
$qf-text-color-inverse:#fff;//反色
$qf-text-color-grey:#999;//辅助灰色如加载更多的提示信息
$qf-text-color-placeholder: #808080;
$qf-text-color-disable:#c0c0c0;
// 背景颜色
$qf-bg-color: #2d3a4b;
$qf-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
$qf-bg-color-other:#f1f1f1;//点击状态颜色

1
2024ECweb/src/types/mock.d.ts vendored Normal file
View File

@ -0,0 +1 @@
declare module '~mock/*'

1
2024ECweb/src/types/plug.d.ts vendored Normal file
View File

@ -0,0 +1 @@
declare module "*.ts"

5
2024ECweb/src/types/vue.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
declare module '*.vue' {
import { ComponentOptions } from 'vue'
const componentOptions: ComponentOptions
export default componentOptions
}

BIN
2024ECweb/src/utils.zip Normal file

Binary file not shown.

View File

@ -0,0 +1,68 @@
// 导入Axios
import type { AxiosInstance, AxiosRequestConfig, AxiosError, AxiosResponse } from 'axios'
import axios from 'axios' // pnpm add axios
import { config } from '@/assets/config';
const apiUrl = config.apiBaseUrl;
console.log('API Base URL:', apiUrl);
// 创建axios实例
const request: AxiosInstance = axios.create({
//baseURL: 'http://24.47.182.209/Handler',
//baseURL: 'http://24.47.177.195/Handler',
// baseURL: 'http://172.16.1.254:10013/Handler',
baseURL: apiUrl,
timeout: 60000,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
// // 拦截器request
// request.interceptors.request.use(
// (config) => {
// const token =
// 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJpYXQiOjE2ODcxNjAyNDB9.3KWLh4m6JJ3ZXFaC0ZUpF4VfMDLlaTnfkOI7bpXBv4s'
// // localStorage.getItem('token') || '9201591ba0eb36c8abaea2854274f5082'
// // config.headers.Authorization = token
// config.headers['token'] = token
// return config
// },
// (error: AxiosError) => {
// return Promise.reject(error)
// }
// )
// // 拦截器response
// request.interceptors.response.use(
// (response: AxiosResponse) => {
// return response.data
// },
// (error: AxiosError) => {
// return Promise.reject(error)
// }
// )
// 导出useAxios
const get = <T = any>(url: string, params: object = {}, option: AxiosRequestConfig = {}): Promise<T> => {
return request.get(url, { params, ...option })
}
const del = <T = any>(url: string, params: object = {}, option: AxiosRequestConfig = {}): Promise<T> => {
return request.delete(url, { params, ...option })
}
const post = <T = any>(url: string, data: object = {}, option: AxiosRequestConfig = {}): Promise<T> => {
return request.post(url, data, option)
}
const put = <T = any>(url: string, data: object = {}, option: AxiosRequestConfig = {}): Promise<T> => {
return request.put(url, data, option)
}
export default {
get,
del,
post,
put
}

View File

@ -0,0 +1,7 @@
export const checkMobile = ( rule:any,value:string, callback:Function) => {
if(/^1\d{10}$/.test(value) || !value){
return callback()
}else{
return callback(new Error('手机格式有误'))
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Some files were not shown because too many files have changed in this diff Show More