cac首页
@ -0,0 +1,8 @@
|
|||||||
|
# 开发环境配置
|
||||||
|
ENV = 'development'
|
||||||
|
|
||||||
|
# 管理系统/开发环境
|
||||||
|
VUE_APP_BASE_API = '/api'
|
||||||
|
|
||||||
|
# 路由懒加载
|
||||||
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
@ -0,0 +1,5 @@
|
|||||||
|
# 生产环境配置
|
||||||
|
ENV = 'production'
|
||||||
|
|
||||||
|
# 管理系统/生产环境
|
||||||
|
VUE_APP_BASE_API = '/prod-api'
|
@ -0,0 +1,7 @@
|
|||||||
|
NODE_ENV = production
|
||||||
|
|
||||||
|
# 测试环境配置
|
||||||
|
ENV = 'staging'
|
||||||
|
|
||||||
|
# 管理系统/测试环境
|
||||||
|
VUE_APP_BASE_API = '/stage-api'
|
@ -0,0 +1,29 @@
|
|||||||
|
module.exports = {
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
node: true,
|
||||||
|
// es6: true,
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:vue/essential"
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
parser: 'babel-eslint',
|
||||||
|
sourceType: 'module'
|
||||||
|
},
|
||||||
|
"globals": {
|
||||||
|
"Atomics": "readonly",
|
||||||
|
"SharedArrayBuffer": "readonly",
|
||||||
|
"process": true
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"vue"
|
||||||
|
],
|
||||||
|
"parser": "vue-eslint-parser",
|
||||||
|
rules: {
|
||||||
|
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||||
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||||
|
"no-unused-vars": 'off'
|
||||||
|
}
|
||||||
|
};
|
@ -1,11 +1,23 @@
|
|||||||
# ---> Vue
|
.DS_Store
|
||||||
# gitignore template for Vue.js projects
|
node_modules
|
||||||
#
|
/dist
|
||||||
# Recommended template: Node.gitignore
|
|
||||||
|
|
||||||
# TODO: where does this rule come from?
|
|
||||||
docs/_book
|
|
||||||
|
|
||||||
# TODO: where does this rule come from?
|
# local env files
|
||||||
test/
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
# oldcac
|
# my-project
|
||||||
|
|
||||||
cac首页
|
## Project setup
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and hot-reloads for development
|
||||||
|
```
|
||||||
|
npm run serve
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and minifies for production
|
||||||
|
```
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lints and fixes files
|
||||||
|
```
|
||||||
|
npm run lint
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customize configuration
|
||||||
|
See [Configuration Reference](https://cli.vuejs.org/config/).
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
module.exports = {
|
||||||
|
"presets": [
|
||||||
|
"@vue/app"
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
[
|
||||||
|
"component",
|
||||||
|
{
|
||||||
|
"libraryName": "element-ui",
|
||||||
|
"styleLibraryName": "theme-chalk"
|
||||||
|
},
|
||||||
|
"syntax-dynamic-import"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: [
|
||||||
|
'@vue/cli-plugin-babel/preset'
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
const { run } = require('runjs')
|
||||||
|
const chalk = require('chalk')
|
||||||
|
const config = require('../vue.config.js')
|
||||||
|
const rawArgv = process.argv.slice(2)
|
||||||
|
const args = rawArgv.join(' ')
|
||||||
|
|
||||||
|
if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
|
||||||
|
const report = rawArgv.includes('--report')
|
||||||
|
|
||||||
|
run(`vue-cli-service build ${args}`)
|
||||||
|
|
||||||
|
const port = 9526
|
||||||
|
const publicPath = config.publicPath
|
||||||
|
|
||||||
|
var connect = require('connect')
|
||||||
|
var serveStatic = require('serve-static')
|
||||||
|
const app = connect()
|
||||||
|
|
||||||
|
app.use(
|
||||||
|
publicPath,
|
||||||
|
serveStatic('./dist', {
|
||||||
|
index: ['index.html', '/']
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
app.listen(port, function () {
|
||||||
|
console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
|
||||||
|
if (report) {
|
||||||
|
console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
run(`vue-cli-service build ${args}`)
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"name": "my-project",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build",
|
||||||
|
"lint": "vue-cli-service lint"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@smallwei/avue": "^2.8.23",
|
||||||
|
"autoprefixer": "^8.0.0",
|
||||||
|
"axios": "^0.23.0",
|
||||||
|
"chromedriver": "^94.0.0",
|
||||||
|
"core-js": "^3.6.5",
|
||||||
|
"echarts": "^4.9.0",
|
||||||
|
"element-ui": "^2.15.6",
|
||||||
|
"js-cookie": "^3.0.1",
|
||||||
|
"jsencrypt": "^3.3.2",
|
||||||
|
"node-sass": "^4.14.1",
|
||||||
|
"postcss-px-to-viewport": "^1.1.1",
|
||||||
|
"script-ext-html-webpack-plugin": "^2.1.5",
|
||||||
|
"vue": "^2.6.11",
|
||||||
|
"vue-router": "^3.5.2",
|
||||||
|
"vuex": "^3.6.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vue/cli-plugin-babel": "~4.5.0",
|
||||||
|
"@vue/cli-plugin-eslint": "^4.5.14",
|
||||||
|
"@vue/cli-service": "~4.5.0",
|
||||||
|
"babel-eslint": "^10.1.0",
|
||||||
|
"eslint": "^6.8.0",
|
||||||
|
"eslint-plugin-vue": "^7.19.1",
|
||||||
|
"sass-loader": "^7.3.1",
|
||||||
|
"svg-sprite-loader": "^6.0.9",
|
||||||
|
"vue-template-compiler": "^2.6.11"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"root": true,
|
||||||
|
"plugins": [
|
||||||
|
"example"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"example/custom": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"plugin:vue/essential",
|
||||||
|
"eslint:recommended"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"parser": "babel-eslint"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"generator-star-spacing": "off",
|
||||||
|
"no-tabs": "off",
|
||||||
|
"no-unused-vars": "off",
|
||||||
|
"no-console": "off",
|
||||||
|
"no-irregular-whitespace": "off",
|
||||||
|
"no-debugger": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"> 1%",
|
||||||
|
"last 2 versions",
|
||||||
|
"not dead"
|
||||||
|
],
|
||||||
|
"postcss": {
|
||||||
|
"plugins": {
|
||||||
|
"autoprefixer": {},
|
||||||
|
"postcss-px-to-viewport": {
|
||||||
|
"viewportWidth": 1920,
|
||||||
|
"minPixelValue": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 8.8 KiB |
@ -0,0 +1,28 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||||
|
<title>欣影电力-抽水蓄能电站状态监测系统</title>
|
||||||
|
<style>
|
||||||
|
html,body{
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1440px) {
|
||||||
|
html,body{
|
||||||
|
height: auto;
|
||||||
|
min-height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body style="margin: 0;overflow-x: hidden;">
|
||||||
|
<noscript>
|
||||||
|
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||||
|
</noscript>
|
||||||
|
<div id="app"></div>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,9 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
export function queryCustomerInfos(query) {
|
||||||
|
// 列表
|
||||||
|
return request({
|
||||||
|
url: '/web/xihari/customerInfo/queryCustomerInfos',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,214 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import { UPMS_SREVICE } from '@/api/module/urls'
|
||||||
|
/**
|
||||||
|
* 获取lxId
|
||||||
|
*/
|
||||||
|
export function getLxId(jgid,mtid) {
|
||||||
|
return request({
|
||||||
|
url: '/EquipController/queryLx/' + jgid + '/' + mtid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 获取EqmId
|
||||||
|
*/
|
||||||
|
export function getEqmId(jgid,lxid,mtid) {
|
||||||
|
return request({
|
||||||
|
url: '/EquipController/queryEqmId/' + jgid + '/' + lxid + '/' + mtid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 油色谱
|
||||||
|
*/
|
||||||
|
// 表格数据
|
||||||
|
export function oilChromaControllerTable(eqmid) {
|
||||||
|
return request({
|
||||||
|
url: '/oilChromaController/queryTableData/' + eqmid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 趋势图数据
|
||||||
|
export function oilChromaControllerLine(eqmid) {
|
||||||
|
return request({
|
||||||
|
url: '/oilChromaController/queryLineData/' + eqmid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 铁芯/夹件
|
||||||
|
*/
|
||||||
|
// 表格数据
|
||||||
|
export function ironCoreJoinClampControllerTable({ ...idGather }) {
|
||||||
|
return request({
|
||||||
|
url: '/ironCoreJoinClampController/queryTableData/' + idGather.ironCoreId + '/' + idGather.clampId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 趋势图数据
|
||||||
|
export function ironCoreJoinClampControllerLine({ ...idGather }) {
|
||||||
|
return request({
|
||||||
|
url: '/ironCoreJoinClampController/queryLineData/' + idGather.ironCoreId + '/' + idGather.clampId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电缆环流
|
||||||
|
*/
|
||||||
|
// 表格数据
|
||||||
|
export function cableCircleControllerTable(arr) {
|
||||||
|
return request({
|
||||||
|
url: '/cableCircleController/queryTableData/' + arr[0]+'/'+ arr[1]+'/'+ arr[2]+'/'+ arr[3]+'/'+ arr[4]+'/'+ arr[5],
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 趋势图数据
|
||||||
|
export function cableCircleControllerLine(arr) {
|
||||||
|
return request({
|
||||||
|
url: '/cableCircleController/queryLineData/' + arr[0]+'/'+ arr[1]+'/'+ arr[2]+'/'+ arr[3]+'/'+ arr[4]+'/'+ arr[5],
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 红外
|
||||||
|
*/
|
||||||
|
// 表格数据
|
||||||
|
export function InfraredThermographyControllerTable(arr) {
|
||||||
|
return request({
|
||||||
|
url: '/InfraredThermographyController/queryTableData/' + arr[0]+'/'+ arr[1]+'/'+ arr[2],
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 趋势图数据
|
||||||
|
export function InfraredThermographyControllerLine(arr) {
|
||||||
|
return request({
|
||||||
|
url: '/InfraredThermographyController/queryLineData/' + arr[0]+'/'+ arr[1]+'/'+ arr[2],
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 局放
|
||||||
|
*/
|
||||||
|
// 表格数据
|
||||||
|
export function CablePartialDischargeControllerTable(arr) {
|
||||||
|
return request({
|
||||||
|
url: '/cablePartialDischargeController/queryTableData/' + arr[0]+'/'+ arr[1]+'/'+ arr[2],
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 趋势图数据
|
||||||
|
export function CablePartialDischargeControllerLine(arr) {
|
||||||
|
return request({
|
||||||
|
url: '/cablePartialDischargeController/queryLineData/' + arr[0]+'/'+ arr[1]+'/'+ arr[2],
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 监测装置
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GIS
|
||||||
|
*/
|
||||||
|
// 表格数据
|
||||||
|
export function SF6ControllerTable(eqmid) {
|
||||||
|
return request({
|
||||||
|
url: '/SF6Controller/queryTableData/' + eqmid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 趋势图数据
|
||||||
|
export function SF6ControllerLine(eqmid) {
|
||||||
|
return request({
|
||||||
|
url: '/SF6Controller/queryLineData/' + eqmid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 避雷器
|
||||||
|
*/
|
||||||
|
// 表格数据
|
||||||
|
export function BlackBlqControllerTable(eqmid) {
|
||||||
|
return request({
|
||||||
|
url: '/BlqController/queryTableData/' + eqmid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 趋势图数据
|
||||||
|
export function BlackBlqControllerLine(eqmid) {
|
||||||
|
return request({
|
||||||
|
url: '/BlqController/queryLineData/' + eqmid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备信息
|
||||||
|
*/
|
||||||
|
// 设备总数
|
||||||
|
export function getEquNum() {
|
||||||
|
return request({
|
||||||
|
url: '/EquipController/queryEquipNum',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 告警详情
|
||||||
|
*/
|
||||||
|
// 变电设备类型
|
||||||
|
export function getJgType() {
|
||||||
|
return request({
|
||||||
|
url: '/EquipController/queryJg',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设备小类
|
||||||
|
export function getLxType(jgid) {
|
||||||
|
return request({
|
||||||
|
url: '/EquipController/getLxType/' + jgid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 监测设备类型
|
||||||
|
export function getEqType(jgid,lxid) {
|
||||||
|
return request({
|
||||||
|
url: '/EquipController/getEqType/' + jgid +'/'+ lxid,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 告警列表
|
||||||
|
export function queryAlarm(params) {
|
||||||
|
return request({
|
||||||
|
url: '/cableCirculationController/page',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 告警详情列表
|
||||||
|
export function queryAlarmDetail(params) {
|
||||||
|
return request({
|
||||||
|
url: '/cableCirculationController/secondPage',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 告警处理
|
||||||
|
export function dealwarning(params) {
|
||||||
|
return request({
|
||||||
|
url: '/cableCirculationController/deal',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
import {
|
||||||
|
UPMS_SREVICE,
|
||||||
|
AUTH_SREVICE,
|
||||||
|
SJZD_SREVICE
|
||||||
|
} from '@/api/module/urls'
|
||||||
|
|
||||||
|
const client_id = 'web'
|
||||||
|
const client_secret = '123456'
|
||||||
|
const scope = 'server'
|
||||||
|
|
||||||
|
// 登录方法
|
||||||
|
export function login(username, password, clienttype) {
|
||||||
|
return request({
|
||||||
|
url: '/login',
|
||||||
|
method: 'post',
|
||||||
|
params: {
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
clienttype
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 刷新方法
|
||||||
|
export function refreshToken() {
|
||||||
|
return request({
|
||||||
|
url: AUTH_SREVICE + '/auth/refresh',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户详细信息
|
||||||
|
export function getInfo() {
|
||||||
|
return request({
|
||||||
|
url: UPMS_SREVICE + '/system/getInfo',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 退出方法
|
||||||
|
export function logout() {
|
||||||
|
return request({
|
||||||
|
url: '/logout',
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取验证码
|
||||||
|
export function getCodeImg() {
|
||||||
|
return request({
|
||||||
|
url: '/code',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
const UPMS_SREVICE='/api-upms';
|
||||||
|
const AUTH_SREVICE='/prod-api';
|
||||||
|
const LOGS_SREVICE='/api-logs';
|
||||||
|
const GEN_CODE_SREVICE='/api-gen';
|
||||||
|
const SJZD_SREVICE='http://127.0.0.1:8081';
|
||||||
|
|
||||||
|
|
||||||
|
export { UPMS_SREVICE, AUTH_SREVICE, LOGS_SREVICE, GEN_CODE_SREVICE,SJZD_SREVICE}
|
@ -0,0 +1,9 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import SvgIcon from '@/components/SvgIcon' // svg组件
|
||||||
|
|
||||||
|
// 注册到全局
|
||||||
|
Vue.component('svg-icon', SvgIcon)
|
||||||
|
|
||||||
|
const requireAll = requireContext => requireContext.keys().map(requireContext)
|
||||||
|
const req = require.context('./svg', false, /\.svg$/)
|
||||||
|
requireAll(req)
|
@ -0,0 +1 @@
|
|||||||
|
<svg t="1634285040593" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23714" width="120" height="120"><path d="M370.752 608L129.6 849.152a32 32 0 0 0 45.248 45.248L416 653.248V768a32 32 0 0 0 64 0v-192a31.904 31.904 0 0 0-32-32H256a32 32 0 0 0 0 64h114.752z m182.624-137.376A31.904 31.904 0 0 1 544 448V256a32 32 0 0 1 64 0v114.752l241.152-241.152a32 32 0 1 1 45.248 45.248L653.248 416H768a32 32 0 0 1 0 64h-192a31.904 31.904 0 0 1-22.624-9.376z" p-id="23715"></path></svg>
|
After Width: | Height: | Size: 518 B |
@ -0,0 +1 @@
|
|||||||
|
<svg t="1634285025582" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23573" width="120" height="120"><path d="M818.752 160l-241.152 241.152a32 32 0 0 0 45.248 45.248L864 205.248V320a32 32 0 0 0 64 0V128a31.904 31.904 0 0 0-32-32h-192a32 32 0 0 0 0 64h114.752zM105.376 918.624A31.904 31.904 0 0 1 96 896v-192a32 32 0 0 1 64 0v114.752l241.152-241.152a32 32 0 0 1 45.248 45.248L205.248 864H320a32 32 0 0 1 0 64H128a31.904 31.904 0 0 1-22.624-9.376z" p-id="23574"></path></svg>
|
After Width: | Height: | Size: 519 B |
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1575802846045" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2750" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M868.593046 403.832442c-30.081109-28.844955-70.037123-44.753273-112.624057-44.753273L265.949606 359.079168c-42.554188 0-82.510202 15.908318-112.469538 44.690852-30.236652 28.782533-46.857191 67.222007-46.857191 108.198258l0 294.079782c0 40.977273 16.619516 79.414701 46.702672 108.136859 29.959336 28.844955 70.069869 44.814672 112.624057 44.814672l490.019383 0c42.585911 0 82.696444-15.969717 112.624057-44.814672 30.082132-28.844955 46.579875-67.222007 46.579875-108.136859L915.172921 511.968278C915.171897 471.053426 898.675178 432.677397 868.593046 403.832442zM841.821309 806.049083c0 22.098297-8.882298 42.772152-25.099654 58.306964-16.154935 15.661701-37.81935 24.203238-60.752666 24.203238L265.949606 888.559285c-22.934339 0-44.567032-8.54256-60.877509-24.264637-16.186657-15.474436-25.067932-36.148291-25.067932-58.246589L180.004165 511.968278c0-22.035876 8.881274-42.772152 25.192775-58.307987 16.186657-15.536858 37.81935-24.139793 60.753689-24.139793l490.019383 0c22.933315 0 44.597731 8.602935 60.752666 24.139793 16.21838 15.535835 25.099654 36.272112 25.099654 58.307987L841.822332 806.049083zM510.974136 135.440715c114.914216 0 208.318536 89.75214 208.318536 200.055338l73.350588 0c0-149.113109-126.366036-270.496667-281.669124-270.496667-155.333788 0-281.699824 121.383558-281.699824 270.496667l73.350588 0C302.623877 225.193879 396.059919 135.440715 510.974136 135.440715zM474.299865 747.244792l73.350588 0L547.650453 629.576859l-73.350588 0L474.299865 747.244792z" p-id="2751"></path></svg>
|
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1 @@
|
|||||||
|
<svg width="130" height="130" xmlns="http://www.w3.org/2000/svg"><path d="M63.444 64.996c20.633 0 37.359-14.308 37.359-31.953 0-17.649-16.726-31.952-37.359-31.952-20.631 0-37.36 14.303-37.358 31.952 0 17.645 16.727 31.953 37.359 31.953zM80.57 75.65H49.434c-26.652 0-48.26 18.477-48.26 41.27v2.664c0 9.316 21.608 9.325 48.26 9.325H80.57c26.649 0 48.256-.344 48.256-9.325v-2.663c0-22.794-21.605-41.271-48.256-41.271z" stroke="#979797"/></svg>
|
After Width: | Height: | Size: 440 B |
@ -0,0 +1,22 @@
|
|||||||
|
# replace default config
|
||||||
|
|
||||||
|
# multipass: true
|
||||||
|
# full: true
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
|
||||||
|
# - name
|
||||||
|
#
|
||||||
|
# or:
|
||||||
|
# - name: false
|
||||||
|
# - name: true
|
||||||
|
#
|
||||||
|
# or:
|
||||||
|
# - name:
|
||||||
|
# param1: 1
|
||||||
|
# param2: 2
|
||||||
|
|
||||||
|
- removeAttrs:
|
||||||
|
attrs:
|
||||||
|
- 'fill'
|
||||||
|
- 'fill-rule'
|
After Width: | Height: | Size: 476 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 200 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,193 @@
|
|||||||
|
.iconSvg {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid #03bcff;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 20px;
|
||||||
|
border-radius: 2px;
|
||||||
|
.closeSvg {
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
-webkit-transform: rotate(-90deg);
|
||||||
|
-moz-transform: rotate(-90deg);
|
||||||
|
-ms-transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
.svg {
|
||||||
|
color: #03bcff;
|
||||||
|
font-weight: bolder;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pageCardTitle {
|
||||||
|
width: 100%;
|
||||||
|
height: 50px;
|
||||||
|
padding: 0px 60px 0px 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #03bcff;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
background: #08092419;
|
||||||
|
box-shadow: inset 0px 4px 44px 0px #106cdeff;
|
||||||
|
background-image: url('../../../assets/shrink.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.pageCard .cardTitle {
|
||||||
|
height: 50px;
|
||||||
|
line-height: 50px;
|
||||||
|
padding: 0px 60px 0px 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #03bcff;
|
||||||
|
text-align: left;
|
||||||
|
display: flex;
|
||||||
|
// font-size: 16px;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
.unfoldCloseIcon {
|
||||||
|
font-size: 18px;
|
||||||
|
color: #03bcff;
|
||||||
|
font-weight: bolder;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pageCard .cardContent {
|
||||||
|
padding: 10px 60px 9px 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
.project {
|
||||||
|
height: 40px;
|
||||||
|
margin-bottom: 11px;
|
||||||
|
font-size: 12px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
flex-flow: column;
|
||||||
|
span {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.projectVal {
|
||||||
|
color: #03bcff;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.projectLable {
|
||||||
|
color: #9eeeff;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cardDate {
|
||||||
|
height: 25px;
|
||||||
|
line-height: 25px;
|
||||||
|
padding: 0 8px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-left: 1px solid #03bcff;
|
||||||
|
border-bottom: 1px solid #03bcff;
|
||||||
|
border-right: 1px solid #03bcff;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
/* 修改标签页切换默认样式 */
|
||||||
|
/deep/ .cardTab .el-tabs__nav {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
/deep/ .cardTab .el-tabs__active-bar,
|
||||||
|
/deep/ .cardTab .el-tabs__item {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
/deep/ .cardTab .el-tabs__item {
|
||||||
|
padding: 0 !important;
|
||||||
|
color: #03bcff;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
/deep/ .cardTab .el-tabs__item.is-active {
|
||||||
|
background: #ff8a00ff;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
/deep/ .cardTab .el-tabs__nav-wrap {
|
||||||
|
border: 1px solid #03bcff;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
/deep/ .cardTab .el-tabs__nav-wrap::after,
|
||||||
|
/deep/ .cardTab .el-tabs__active-bar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tendencyChartText {
|
||||||
|
writing-mode: vertical-lr;
|
||||||
|
position: absolute;
|
||||||
|
right: 8px;
|
||||||
|
top: 15px;
|
||||||
|
color: #fff;
|
||||||
|
font-family: Source Han Sans SC;
|
||||||
|
font-weight: regular;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 14px;
|
||||||
|
letter-spacing: 0px;
|
||||||
|
text-align: left;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.backgroundTitle {
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.tabDropdown {
|
||||||
|
height: 45px;
|
||||||
|
line-height: 45px;
|
||||||
|
ul {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
align-items: center;
|
||||||
|
li {
|
||||||
|
width: 140px;
|
||||||
|
height: 34px;
|
||||||
|
line-height: 34px;
|
||||||
|
margin-right: 30px;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-dropdown-menu {
|
||||||
|
background: #106cde;
|
||||||
|
}
|
||||||
|
.el-dropdown-menu__item {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.el-dropdown {
|
||||||
|
color: #03bcff !important;
|
||||||
|
font-size: 16px;
|
||||||
|
// margin-left: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
// 设置滚动条的宽度
|
||||||
|
/deep/ .el-table__body-wrapper::-webkit-scrollbar {
|
||||||
|
width: 2px;
|
||||||
|
height: 10px;
|
||||||
|
}
|
||||||
|
// 设置滚动条的背景色和圆角
|
||||||
|
/deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {
|
||||||
|
background-color: #03bcff;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
// 表格不换行显示省略号
|
||||||
|
/deep/ .el-table .el-table__body-wrapper .cell {
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
/deep/ .el-table__empty-text {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
/deep/ .el-loading-mask {
|
||||||
|
background-color: rgba(16, 108, 222, 0.3);
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1440px) {
|
||||||
|
.cardTitle {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
<template>
|
||||||
|
<div class="hello">
|
||||||
|
<h1>{{ msg }}</h1>
|
||||||
|
<p>
|
||||||
|
For a guide and recipes on how to configure / customize this project,<br>
|
||||||
|
check out the
|
||||||
|
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
|
||||||
|
</p>
|
||||||
|
<h3>Installed CLI Plugins</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
|
||||||
|
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
|
||||||
|
</ul>
|
||||||
|
<h3>Essential Links</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
|
||||||
|
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
|
||||||
|
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
|
||||||
|
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
|
||||||
|
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
|
||||||
|
</ul>
|
||||||
|
<h3>Ecosystem</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
|
||||||
|
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
|
||||||
|
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
|
||||||
|
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
|
||||||
|
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'HelloWorld',
|
||||||
|
props: {
|
||||||
|
msg: String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||||
|
<style scoped>
|
||||||
|
h3 {
|
||||||
|
margin: 40px 0 0;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #42b983;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,62 @@
|
|||||||
|
<template>
|
||||||
|
<div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
|
||||||
|
<svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
|
||||||
|
<use :xlink:href="iconName" />
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
|
||||||
|
import { isExternal } from '@/utils/validate'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SvgIcon',
|
||||||
|
props: {
|
||||||
|
iconClass: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
className: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isExternal() {
|
||||||
|
return isExternal(this.iconClass)
|
||||||
|
},
|
||||||
|
iconName() {
|
||||||
|
return `#icon-${this.iconClass}`
|
||||||
|
},
|
||||||
|
svgClass() {
|
||||||
|
if (this.className) {
|
||||||
|
return 'svg-icon ' + this.className
|
||||||
|
} else {
|
||||||
|
return 'svg-icon'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
styleExternalIcon() {
|
||||||
|
return {
|
||||||
|
mask: `url(${this.iconClass}) no-repeat 50% 50%`,
|
||||||
|
'-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.svg-icon {
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
vertical-align: -0.15em;
|
||||||
|
fill: currentColor;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-external-icon {
|
||||||
|
background-color: currentColor;
|
||||||
|
mask-size: cover!important;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,67 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-table
|
||||||
|
:data="data"
|
||||||
|
border
|
||||||
|
style="width: 100%"
|
||||||
|
:max-height="maxHeight"
|
||||||
|
:resizable="false"
|
||||||
|
v-loading="tableLoading"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, key) in option"
|
||||||
|
:width="item.width"
|
||||||
|
align="center"
|
||||||
|
:key="key"
|
||||||
|
:label="item.label"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tooltip
|
||||||
|
class="item"
|
||||||
|
effect="dark"
|
||||||
|
:content="scope.row[item.prop]"
|
||||||
|
placement="top"
|
||||||
|
>
|
||||||
|
<span> {{ scope.row[item.prop] }}</span>
|
||||||
|
</el-tooltip>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "Tablemodule",
|
||||||
|
props: ["option", "data", "maxHeight",'tableLoading'],
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||||
|
<style scoped rel="stylesheet/scss" lang="scss">
|
||||||
|
/deep/.el-table,
|
||||||
|
/deep/.el-table thead,
|
||||||
|
/deep/.el-table tr,
|
||||||
|
/deep/.el-table td.el-table__cell,
|
||||||
|
/deep/.el-table th.el-table__cell.is-leaf {
|
||||||
|
color: #03bcff !important;
|
||||||
|
background: transparent !important;
|
||||||
|
border-color: #03bcff !important;
|
||||||
|
}
|
||||||
|
/deep/.el-table::before,
|
||||||
|
/deep/.el-table--border::after,
|
||||||
|
/deep/.el-table--group::after {
|
||||||
|
background-color: #03bcff;
|
||||||
|
}
|
||||||
|
/deep/.el-table td.el-table__cell,
|
||||||
|
/deep/.el-table .el-table__cell {
|
||||||
|
padding: 4px 0;
|
||||||
|
}
|
||||||
|
/deep/.el-table .cell,
|
||||||
|
.el-table--border .el-table__cell:first-child .cell {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
title: '电缆环流',
|
||||||
|
logoTitle:'洪屛抽水蓄能电站' || config.logoTitle,
|
||||||
|
isSinglePlatform:true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
// The Vue build version to load with the `import` command
|
||||||
|
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
|
||||||
|
import Vue from 'vue'
|
||||||
|
import App from './App'
|
||||||
|
import router from './router'
|
||||||
|
import axios from 'axios'
|
||||||
|
import ElementUI from 'element-ui'
|
||||||
|
import 'element-ui/lib/theme-chalk/index.css'
|
||||||
|
import myChart from "echarts";
|
||||||
|
import Avue from '@smallwei/avue';
|
||||||
|
import store from './store'
|
||||||
|
import {GetUrlParam} from '@/utils/index.js'
|
||||||
|
import Cookies from 'js-cookie'
|
||||||
|
import './permission'
|
||||||
|
import './assets/icons'
|
||||||
|
import '@/utils/request.js';
|
||||||
|
// import '@smallwei/avue/lib/index.css';
|
||||||
|
// import './assets/icons/index'
|
||||||
|
|
||||||
|
GetUrlParam('token') && Cookies.set('Admin-Token', GetUrlParam('token'));
|
||||||
|
GetUrlParam('token') && store.commit('SET_TOKEN', GetUrlParam('token'))
|
||||||
|
|
||||||
|
Vue.prototype.$ajax = axios
|
||||||
|
Vue.use(Avue);
|
||||||
|
Vue.prototype.$echarts = myChart;
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
Vue.use(ElementUI)
|
||||||
|
Vue.use(myChart)
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
router,
|
||||||
|
store,
|
||||||
|
render: h => h(App)
|
||||||
|
}).$mount("#app")
|
@ -0,0 +1,32 @@
|
|||||||
|
import router from "./router";
|
||||||
|
import store from "./store";
|
||||||
|
import { Message } from "element-ui";
|
||||||
|
import NProgress from "nprogress";
|
||||||
|
import "nprogress/nprogress.css";
|
||||||
|
import { getToken } from "@/utils/auth";
|
||||||
|
|
||||||
|
NProgress.configure({ showSpinner: false });
|
||||||
|
|
||||||
|
const whiteList = ["/login", "/auth-redirect", "/bind", "/register"];
|
||||||
|
|
||||||
|
router.beforeEach((to, from, next) => {
|
||||||
|
NProgress.start();
|
||||||
|
if (getToken()) {
|
||||||
|
next();
|
||||||
|
NProgress.done();
|
||||||
|
} else {
|
||||||
|
if (whiteList.indexOf(to.path) !== -1) {
|
||||||
|
// 在免登录白名单,直接进入
|
||||||
|
next();
|
||||||
|
} else {
|
||||||
|
// next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
|
||||||
|
next("login"); // 否则全部重定向到登录页
|
||||||
|
NProgress.done();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
|
router.afterEach(() => {
|
||||||
|
NProgress.done();
|
||||||
|
});
|
@ -0,0 +1,25 @@
|
|||||||
|
import Vue from "vue";
|
||||||
|
import Router from "vue-router";
|
||||||
|
|
||||||
|
Vue.use(Router);
|
||||||
|
|
||||||
|
// 公共路由
|
||||||
|
export const constantRoutes = [
|
||||||
|
{
|
||||||
|
path: "/login",
|
||||||
|
name: "login",
|
||||||
|
component: () => import("@/view/login"),
|
||||||
|
hidden: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/",
|
||||||
|
component: () => import("@/view/home/home"),
|
||||||
|
hidden: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default new Router({
|
||||||
|
// mode: 'history', // 去掉url中的#
|
||||||
|
// scrollBehavior: () => ({ y: 0 }),
|
||||||
|
routes: constantRoutes,
|
||||||
|
});
|
@ -0,0 +1,7 @@
|
|||||||
|
const getters = {
|
||||||
|
token: state => state.user.token,
|
||||||
|
roles: state => state.user.roles,
|
||||||
|
permissions: state => state.user.permissions,
|
||||||
|
}
|
||||||
|
export default getters
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import user from './modules/user'
|
||||||
|
import getters from './getters'
|
||||||
|
import Vuex from 'vuex'
|
||||||
|
|
||||||
|
Vue.use(Vuex)
|
||||||
|
const store = new Vuex.Store({
|
||||||
|
modules: {
|
||||||
|
user
|
||||||
|
},
|
||||||
|
getters
|
||||||
|
})
|
||||||
|
export default store
|
@ -0,0 +1,89 @@
|
|||||||
|
import { login, logout,loginSjzd } from '@/api/login'
|
||||||
|
import { getToken, setToken, removeToken } from '@/utils/auth'
|
||||||
|
|
||||||
|
const user = {
|
||||||
|
state: {
|
||||||
|
token: getToken(),
|
||||||
|
name: '',
|
||||||
|
avatar: '',
|
||||||
|
roles: [],
|
||||||
|
permissions: []
|
||||||
|
},
|
||||||
|
|
||||||
|
mutations: {
|
||||||
|
SET_TOKEN: (state, token) => {
|
||||||
|
state.token = token
|
||||||
|
},
|
||||||
|
SET_NAME: (state, name) => {
|
||||||
|
state.name = name
|
||||||
|
},
|
||||||
|
SET_AVATAR: (state, avatar) => {
|
||||||
|
state.avatar = avatar
|
||||||
|
},
|
||||||
|
SET_ROLES: (state, roles) => {
|
||||||
|
state.roles = roles
|
||||||
|
},
|
||||||
|
SET_PERMISSIONS: (state, permissions) => {
|
||||||
|
state.permissions = permissions
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
// 登录
|
||||||
|
Login({ commit }, userInfo) {
|
||||||
|
const username = userInfo.username.trim()
|
||||||
|
const password = userInfo.password
|
||||||
|
const code = userInfo.code
|
||||||
|
const uuid = userInfo.uuid
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
login(username, password, code, uuid).then(res => {
|
||||||
|
setToken(res.token)
|
||||||
|
commit('SET_TOKEN', res.token)
|
||||||
|
resolve()
|
||||||
|
}).catch(error => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 退出系统
|
||||||
|
LogOut({ commit, state }) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
logout(state.token).then(() => {
|
||||||
|
commit('SET_TOKEN', '')
|
||||||
|
commit('SET_ROLES', [])
|
||||||
|
commit('SET_PERMISSIONS', [])
|
||||||
|
removeToken()
|
||||||
|
resolve()
|
||||||
|
}).catch(error => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 前端 登出
|
||||||
|
FedLogOut({ commit }) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
commit('SET_TOKEN', '')
|
||||||
|
removeToken()
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
//登录声级振动
|
||||||
|
async loginSjzd({ state, commit, dispatch }) {
|
||||||
|
const userName = sessionStorage.getItem('userName');
|
||||||
|
const password = '123456';
|
||||||
|
loginSjzd({ userName, password }).then((res) => {
|
||||||
|
if (res && res.code === 200) {
|
||||||
|
//声级震动前端页面访问地址
|
||||||
|
window.open('http://127.0.0.1:9528/login?token=' + res.token, '_blank')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default user
|
@ -0,0 +1,15 @@
|
|||||||
|
import Cookies from 'js-cookie'
|
||||||
|
|
||||||
|
const TokenKey = 'Admin-Token'
|
||||||
|
|
||||||
|
export function getToken() {
|
||||||
|
return Cookies.get(TokenKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setToken(token) {
|
||||||
|
return Cookies.set(TokenKey, token)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function removeToken() {
|
||||||
|
return Cookies.remove(TokenKey)
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* echart 数据为null处理
|
||||||
|
*/
|
||||||
|
export function echartData(data) {
|
||||||
|
var newData = data.map((ele, index) => {
|
||||||
|
if (ele === null) {
|
||||||
|
return '- -';
|
||||||
|
}
|
||||||
|
return Number(ele);
|
||||||
|
});
|
||||||
|
return newData;
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
export default {
|
||||||
|
'401': '认证失败,无法访问系统资源',
|
||||||
|
'403': '当前操作没有权限',
|
||||||
|
'404': '访问资源不存在',
|
||||||
|
'default': '系统未知错误,请反馈给管理员'
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
import JSEncrypt from 'jsencrypt/bin/jsencrypt'
|
||||||
|
|
||||||
|
// 密钥对生成 http://web.chacuo.net/netrsakeypair
|
||||||
|
|
||||||
|
const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
|
||||||
|
'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
|
||||||
|
|
||||||
|
const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
|
||||||
|
'7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
|
||||||
|
'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
|
||||||
|
'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
|
||||||
|
'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
|
||||||
|
'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
|
||||||
|
'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
|
||||||
|
'UP8iWi1Qw0Y='
|
||||||
|
|
||||||
|
// 加密
|
||||||
|
export function encrypt(txt) {
|
||||||
|
const encryptor = new JSEncrypt()
|
||||||
|
encryptor.setPublicKey(publicKey) // 设置公钥
|
||||||
|
return encryptor.encrypt(txt) // 对数据进行加密
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解密
|
||||||
|
export function decrypt(txt) {
|
||||||
|
const encryptor = new JSEncrypt()
|
||||||
|
encryptor.setPrivateKey(privateKey) // 设置私钥
|
||||||
|
return encryptor.decrypt(txt) // 对数据进行解密
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* @param {string} path
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
export function isExternal(path) {
|
||||||
|
return /^(https?:|mailto:|tel:)/.test(path)
|
||||||
|
}
|
@ -0,0 +1,525 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="searh">
|
||||||
|
<el-form ref="queryParams" :model="queryParams">
|
||||||
|
<el-row>
|
||||||
|
<el-col :md="6" :lg="6" :xl="6">
|
||||||
|
<el-form-item
|
||||||
|
label="变电设备类型"
|
||||||
|
label-width="120px"
|
||||||
|
prop="jcType"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
v-model="queryParams.jcType"
|
||||||
|
placeholder="请选择变电设备类型"
|
||||||
|
@change="getLxType"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in jcOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :md="6" :lg="6" :xl="6">
|
||||||
|
<el-form-item label="设备小类" label-width="120px" prop="lxType">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
v-model="queryParams.lxType"
|
||||||
|
placeholder="请选择设备小类"
|
||||||
|
@change="getEqType"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in lxOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.zmc"
|
||||||
|
:value="item.lxid"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :md="6" :lg="6" :xl="6">
|
||||||
|
<el-form-item
|
||||||
|
label="被监测设备"
|
||||||
|
label-width="120px"
|
||||||
|
prop="eqType"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
v-model="queryParams.eqType"
|
||||||
|
placeholder="请选择被监测设备"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in eqOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<!-- <el-col :md="6" :lg="6" :xl="6">
|
||||||
|
<el-form-item label="告警类型" label-width="120px" prop="status">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
v-model="queryParams.gjType"
|
||||||
|
placeholder="请选择告警类型"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in gjOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col> -->
|
||||||
|
<el-col :md="6" :lg="6" :xl="6">
|
||||||
|
<el-form-item
|
||||||
|
label="报警时间"
|
||||||
|
label-width="120px"
|
||||||
|
prop="warningTime"
|
||||||
|
>
|
||||||
|
<el-date-picker
|
||||||
|
size="small"
|
||||||
|
v-model="queryParams.warningTime"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :md="6" :lg="6" :xl="6">
|
||||||
|
<el-form-item style="margin-left: 120px">
|
||||||
|
<div class="searhButtons">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
icon="el-icon-search"
|
||||||
|
type="primary"
|
||||||
|
@click="onResearchClick()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
icon="el-icon-refresh"
|
||||||
|
@click="resetSearchForm()"
|
||||||
|
style="margin-left: 20px"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="dataTable">
|
||||||
|
<avue-crud
|
||||||
|
style="margin-top: 10px"
|
||||||
|
:table-loading="loading"
|
||||||
|
:option="option"
|
||||||
|
:data="data"
|
||||||
|
:page.sync="tablePage"
|
||||||
|
@size-change="sizeChange"
|
||||||
|
@current-change="currentChange"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
>
|
||||||
|
<!-- 左边按钮 -->
|
||||||
|
<!-- :disabled="single" -->
|
||||||
|
<template slot="menuLeft">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-notebook-2"
|
||||||
|
size="mini"
|
||||||
|
class="operationBut"
|
||||||
|
@click.stop="batchProcessing()"
|
||||||
|
>批量处理</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
size="mini"
|
||||||
|
class="operationBut"
|
||||||
|
@click.stop="allRemove()"
|
||||||
|
>一键清除</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope" slot="menu">
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-edit"
|
||||||
|
size="small"
|
||||||
|
@click.stop="batchProcessing(scope.row)"
|
||||||
|
>处理</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</avue-crud>
|
||||||
|
</div>
|
||||||
|
<!-- 批量处理警告 -->
|
||||||
|
</div>
|
||||||
|
<el-dialog
|
||||||
|
:title="dialogTitle"
|
||||||
|
:visible.sync="dialogOpen"
|
||||||
|
width="40%"
|
||||||
|
append-to-body
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item :label="processingPrompt" prop="cljg">
|
||||||
|
<el-input v-model="form.cljg"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitForm">处 理</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getJgType,
|
||||||
|
getLxType,
|
||||||
|
getEqType,
|
||||||
|
queryAlarmDetail,
|
||||||
|
dealwarning,
|
||||||
|
} from "@/api/home/home";
|
||||||
|
export default {
|
||||||
|
name: "userManagement",
|
||||||
|
props: {
|
||||||
|
tableData: Object,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParams: {
|
||||||
|
jcType: "",
|
||||||
|
lxType: "",
|
||||||
|
eqType: "",
|
||||||
|
gjType: "",
|
||||||
|
warningTime: "",
|
||||||
|
},
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 选中的用户id
|
||||||
|
selectIds: [],
|
||||||
|
selectStatus: [],
|
||||||
|
single: true,
|
||||||
|
tablePage: {
|
||||||
|
limit: 10,
|
||||||
|
total: 0,
|
||||||
|
page: 1,
|
||||||
|
},
|
||||||
|
page: {
|
||||||
|
total: 0,
|
||||||
|
limit: 1,
|
||||||
|
page: 10,
|
||||||
|
},
|
||||||
|
// 遮罩层
|
||||||
|
loading: false,
|
||||||
|
// 弹出层标题
|
||||||
|
dialogTitle: "告警单批处理",
|
||||||
|
jcOptions: [],
|
||||||
|
lxOptions: [],
|
||||||
|
eqOptions: [],
|
||||||
|
gjOptions: [],
|
||||||
|
processingPrompt:'批处理结果',
|
||||||
|
// 是否显示弹出层
|
||||||
|
dialogOpen: false,
|
||||||
|
rules: {
|
||||||
|
cljg: [
|
||||||
|
{ required: true, message: "不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
// 表格数据
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
toType: "1111",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
option: {
|
||||||
|
title: "",
|
||||||
|
border: true,
|
||||||
|
emptyText: "暂无数据!",
|
||||||
|
align: "center",
|
||||||
|
menuAlign: "center",
|
||||||
|
menuWidth: 200,
|
||||||
|
menuTitle: "操作",
|
||||||
|
menuType: "text",
|
||||||
|
addBtn: false,
|
||||||
|
delBtn: false,
|
||||||
|
editBtn: false,
|
||||||
|
refreshBtn: false,
|
||||||
|
selection: false,
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: "监测设备",
|
||||||
|
prop: "deviceName",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "阈值",
|
||||||
|
prop: "threadval",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "当前值",
|
||||||
|
prop: "warningValue",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "告警信息",
|
||||||
|
prop: "warnDesc",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "报警时间",
|
||||||
|
prop: "warnTime",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
toDept: "1",
|
||||||
|
// 表格选中的数据
|
||||||
|
selectData: {},
|
||||||
|
queryData: {
|
||||||
|
state: "1",
|
||||||
|
startTime: "",
|
||||||
|
jgid: "",
|
||||||
|
lxid: "",
|
||||||
|
mtid: "",
|
||||||
|
endTime: "",
|
||||||
|
eqmId: "",
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
process: "",
|
||||||
|
id: "",
|
||||||
|
state: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
tableData: function (value) {
|
||||||
|
this.tablePage.total = value.total;
|
||||||
|
this.data = value.records;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getJgType();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getJgType() {
|
||||||
|
getJgType().then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
const obj = [];
|
||||||
|
for (const key in data) {
|
||||||
|
obj.push({
|
||||||
|
label: key,
|
||||||
|
value: data[key],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.jcOptions = obj;
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getLxType() {
|
||||||
|
getLxType(this.queryParams.jcType).then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.queryParams.lxType = "";
|
||||||
|
this.queryParams.eqType = "";
|
||||||
|
this.lxOptions = data;
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getEqType() {
|
||||||
|
getEqType(this.queryParams.jcType, this.queryParams.lxType).then(
|
||||||
|
(response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.queryParams.eqType = "";
|
||||||
|
this.eqOptions = data;
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
// 点击查询
|
||||||
|
getList() {
|
||||||
|
queryAlarmDetail(this.queryData).then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.data = data.records;
|
||||||
|
this.tablePage.total = data.total;
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 重置条件搜索表单
|
||||||
|
resetSearchForm() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs["queryParams"] !== undefined) {
|
||||||
|
this.$refs["queryParams"].resetFields();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//搜索
|
||||||
|
onResearchClick() {
|
||||||
|
this.queryData.startTime = this.queryParams.warningTime
|
||||||
|
? this.queryParams.warningTime[0]
|
||||||
|
: "";
|
||||||
|
this.queryData.endTime = this.queryParams.warningTime
|
||||||
|
? this.queryParams.warningTime[1]
|
||||||
|
: "";
|
||||||
|
this.queryData.jgid = this.queryParams.jcType
|
||||||
|
? this.queryParams.jcType
|
||||||
|
: "";
|
||||||
|
this.queryData.lxid = this.queryParams.lxType
|
||||||
|
? this.queryParams.lxType
|
||||||
|
: "";
|
||||||
|
this.queryData.eqmId = this.queryParams.eqType
|
||||||
|
? this.queryParams.eqType
|
||||||
|
: "";
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
// 批量处理
|
||||||
|
batchProcessing(row) {
|
||||||
|
this.dialogTitle=row?'告警处理':'告警批处理'
|
||||||
|
this.processingPrompt=row?'处理结果':'批处理结果'
|
||||||
|
this.rules.cljg[0].message=this.processingPrompt+'不能为空'
|
||||||
|
this.dialogOpen = true;
|
||||||
|
this.form.id = row.id;
|
||||||
|
this.form.state = row.state;
|
||||||
|
},
|
||||||
|
// 一键清除
|
||||||
|
allRemove() {
|
||||||
|
this.$confirm("确定要处理当前所有的告警吗?", "警告", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
dealwarning(this.form).then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.dialogOpen = false;
|
||||||
|
this.$message.success("处理成功!");
|
||||||
|
this.getList();
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(function () {});
|
||||||
|
},
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.selectIds = selection.map((item) => item.noticeId);
|
||||||
|
this.single = selection.length != 1;
|
||||||
|
},
|
||||||
|
/** 页码大小改变操作 */
|
||||||
|
sizeChange(val) {
|
||||||
|
this.tablePage.limit = 10;
|
||||||
|
this.tablePage.page = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 翻页操作 */
|
||||||
|
currentChange(val) {
|
||||||
|
this.queryData.page = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
// 批量处理
|
||||||
|
submitForm() {
|
||||||
|
this.$refs['form'].validate((valid) => {
|
||||||
|
if(valid){
|
||||||
|
dealwarning(this.form).then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.dialogOpen = false;
|
||||||
|
this.$message.success("处理成功!");
|
||||||
|
this.getList();
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.dialogOpen = false;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.dataTable {
|
||||||
|
box-shadow: 0 0 5px 4px #e7e7e7;
|
||||||
|
.operationBut {
|
||||||
|
margin-right: 10px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.searh {
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 20px 30px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-top: 20px;
|
||||||
|
box-shadow: 0 0 5px 4px #e7e7e7;
|
||||||
|
}
|
||||||
|
.avue-crud__right {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.el-dialog__body {
|
||||||
|
padding: 0px 20px;
|
||||||
|
}
|
||||||
|
.el-select {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.el-form {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.el-dialog.is-fullscreen {
|
||||||
|
background-color: rgb(240, 240, 240);
|
||||||
|
}
|
||||||
|
.el-dialog__header {
|
||||||
|
background-color: #106cde;
|
||||||
|
padding: 20px 30px !important;
|
||||||
|
color: #ffffff;
|
||||||
|
.el-dialog__title {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.el-dialog__headerbtn .el-dialog__close {
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-card__body {
|
||||||
|
min-height: 500px;
|
||||||
|
box-shadow: 0 0 5px 4px #e7e7e7;
|
||||||
|
}
|
||||||
|
.el-date-editor {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
.el-table__empty-block {
|
||||||
|
padding: 50px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,176 @@
|
|||||||
|
<template>
|
||||||
|
<div class="login">
|
||||||
|
<!-- 1#主变 油色谱 -->
|
||||||
|
<!-- 标题和内容 -->
|
||||||
|
<div class="pageCardTitle" v-show="hideSwitchShow">
|
||||||
|
<div><span>监测装置总数</span><span> | </span><span>{{ number.totalNum }}</span></div>
|
||||||
|
<div class="iconSvg closeSvg" @click="changeStatus(true)">
|
||||||
|
<svg-icon slot="prefix" icon-class="close" className="svg" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="pageCard backgroundTitle monitoringDevice"
|
||||||
|
:style="'background-image:url(' + monitoringDevice + ');'"
|
||||||
|
v-show="cardShow"
|
||||||
|
>
|
||||||
|
<div class="cardTitle">
|
||||||
|
<div>
|
||||||
|
<span>监测装置总数</span><span> | </span><span>{{ number.totalNum }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="iconSvg" @click="changeStatus(false)">
|
||||||
|
<svg-icon slot="prefix" icon-class="open" className="svg" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cardContent">
|
||||||
|
<Tablemodule
|
||||||
|
:table-loading="loading"
|
||||||
|
:option="tableData.column"
|
||||||
|
:data="tableData.data"
|
||||||
|
></Tablemodule>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getEquNum } from "@/api/home/home";
|
||||||
|
// 左边
|
||||||
|
import monitoringDevice from "@/assets/page_right/monitoringDevice.png";
|
||||||
|
// 引入table组件
|
||||||
|
import Tablemodule from "@/components/Tablemodule/index";
|
||||||
|
export default {
|
||||||
|
name: "Login",
|
||||||
|
components: {
|
||||||
|
Tablemodule,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
// 左边
|
||||||
|
monitoringDevice: monitoringDevice,
|
||||||
|
// 卡片显示与否
|
||||||
|
cardShow: true,
|
||||||
|
tabPosition: "bottom",
|
||||||
|
// 开关状态
|
||||||
|
switchValue: true,
|
||||||
|
// 标题内容是否显示
|
||||||
|
hideSwitchShow: false,
|
||||||
|
pageCardTitle: "",
|
||||||
|
tableData: {
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: "主设备类型",
|
||||||
|
prop: "type",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "装置数量(个)",
|
||||||
|
prop: "num",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
type: "变压器",
|
||||||
|
num: '0',
|
||||||
|
prop: "byqNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "GIS",
|
||||||
|
num: '0',
|
||||||
|
prop: "gisNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "避雷器",
|
||||||
|
num: '0',
|
||||||
|
prop: "blqNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "开关柜",
|
||||||
|
num: '0',
|
||||||
|
prop: "cwNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "电缆",
|
||||||
|
num: '0',
|
||||||
|
prop: "dlNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "发电机",
|
||||||
|
num: '0',
|
||||||
|
prop: "otherNum",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
samplingDate: "2021-10-11 15:15:30",
|
||||||
|
number: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getEquNum();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 点击开关
|
||||||
|
changeStatus: function ($event) {
|
||||||
|
if (!$event) {
|
||||||
|
this.cardShow = false;
|
||||||
|
this.hideSwitchShow = true;
|
||||||
|
this.switchValue = false;
|
||||||
|
} else {
|
||||||
|
this.cardShow = true;
|
||||||
|
this.hideSwitchShow = false;
|
||||||
|
this.switchValue = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tendencyChartChange(type) {
|
||||||
|
let unit = "mA";
|
||||||
|
let legendData = ["铁芯泄露电流", "夹件泄漏电流"];
|
||||||
|
let xAxisData = ["10-01", "10-02", "10-03", "10-04", "10-05", "10-06"];
|
||||||
|
let seriesData = [
|
||||||
|
{ name: "铁芯泄露电流", data: [10, 25, 2, 100, 59, 78, 36] },
|
||||||
|
];
|
||||||
|
this.$emit("dataDispose", unit, legendData, xAxisData, seriesData);
|
||||||
|
},
|
||||||
|
// 获取数量
|
||||||
|
getEquNum() {
|
||||||
|
this.loading=true
|
||||||
|
getEquNum().then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
if (code === 200) {
|
||||||
|
this.number = data;
|
||||||
|
const arr = this.tableData.data;
|
||||||
|
for (let index = 0; index < arr.length; index++) {
|
||||||
|
const element = arr[index];
|
||||||
|
for (const key in data) {
|
||||||
|
if (element.prop === key) {
|
||||||
|
arr[index].num = data[key].toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
@import "~@/assets/stylesheet/card";
|
||||||
|
// 开光样式
|
||||||
|
.pageCard {
|
||||||
|
// min-height: 370px!important;
|
||||||
|
.cardTitle {
|
||||||
|
padding: 0px 30px 0px 20px;
|
||||||
|
}
|
||||||
|
.cardTitle span {
|
||||||
|
// padding: 0 5px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pageCard .cardContent {
|
||||||
|
padding: 30px !important;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,326 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="searh">
|
||||||
|
<el-form ref="queryParams" :model="queryParams">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="报警时间" label-width="120px" prop="warningTime">
|
||||||
|
<el-date-picker
|
||||||
|
size="small"
|
||||||
|
v-model="queryParams.warningTime"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item style="margin-left: 120px">
|
||||||
|
<div class="searhButtons">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
icon="el-icon-search"
|
||||||
|
type="primary"
|
||||||
|
@click="onResearchClick()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
icon="el-icon-refresh"
|
||||||
|
@click="resetSearchForm()"
|
||||||
|
style="margin-left: 20px"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="dataTable">
|
||||||
|
<avue-crud
|
||||||
|
style="margin-top: 10px"
|
||||||
|
:table-loading="loading"
|
||||||
|
:option="option"
|
||||||
|
:data="tableData"
|
||||||
|
:page.sync="tablePage"
|
||||||
|
@size-change="sizeChange"
|
||||||
|
@current-change="currentChange"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
>
|
||||||
|
<!-- 左边按钮 -->
|
||||||
|
<!-- :disabled="single" -->
|
||||||
|
<template slot="menuLeft">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-notebook-2"
|
||||||
|
size="mini"
|
||||||
|
class="operationBut"
|
||||||
|
@click.stop="batchProcessing()"
|
||||||
|
>批量处理</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
size="mini"
|
||||||
|
class="operationBut"
|
||||||
|
@click.stop="allRemove()"
|
||||||
|
>一键清除</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope" slot="menu">
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-edit"
|
||||||
|
size="small"
|
||||||
|
@click.stop="batchProcessing(scope.row)"
|
||||||
|
>处理</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</avue-crud>
|
||||||
|
</div>
|
||||||
|
<!-- 批量处理警告 -->
|
||||||
|
</div>
|
||||||
|
<el-dialog
|
||||||
|
:title="dialogTitle"
|
||||||
|
:visible.sync="dialogOpen"
|
||||||
|
width="40%"
|
||||||
|
append-to-body
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="处理结果" prop="process">
|
||||||
|
<el-input v-model="form.process"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitForm">处 理</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {queryAlarmDetail,dealwarning} from "@/api/home/home";
|
||||||
|
export default {
|
||||||
|
name: "userManagement",
|
||||||
|
props: {
|
||||||
|
data: Object
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParams: {
|
||||||
|
jcType: "",
|
||||||
|
gjType: "",
|
||||||
|
warningTime: "",
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
process: "",
|
||||||
|
id : "",
|
||||||
|
state : "",
|
||||||
|
},
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 选中的用户id
|
||||||
|
selectIds: [],
|
||||||
|
selectStatus: [],
|
||||||
|
single: true,
|
||||||
|
tablePage: {
|
||||||
|
limit: 10,
|
||||||
|
total: 0,
|
||||||
|
page: 1,
|
||||||
|
},
|
||||||
|
queryData:{
|
||||||
|
state:"1",
|
||||||
|
startTime:"",
|
||||||
|
endTime:"",
|
||||||
|
eqmId:"",
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
},
|
||||||
|
// 遮罩层
|
||||||
|
loading: false,
|
||||||
|
// 弹出层标题
|
||||||
|
dialogTitle: "告警单批处理",
|
||||||
|
jcOptions: [],
|
||||||
|
gjOptions: [],
|
||||||
|
// 是否显示弹出层
|
||||||
|
dialogOpen: false,
|
||||||
|
rules: {
|
||||||
|
cljg: [
|
||||||
|
{ required: true, message: "处理结果不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
option: {
|
||||||
|
title: "",
|
||||||
|
border: true,
|
||||||
|
emptyText: "暂无数据!",
|
||||||
|
align: "center",
|
||||||
|
menuAlign: "center",
|
||||||
|
menuWidth: 200,
|
||||||
|
menuTitle: "操作",
|
||||||
|
menuType: "text",
|
||||||
|
addBtn: false,
|
||||||
|
delBtn: false,
|
||||||
|
editBtn: false,
|
||||||
|
refreshBtn: false,
|
||||||
|
selection: false,
|
||||||
|
// multiple: false,
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: "监测设备",
|
||||||
|
prop: "deviceName",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "阈值",
|
||||||
|
prop: "threadval",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "当前值",
|
||||||
|
prop: "warningValue",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "告警信息",
|
||||||
|
prop: "warnDesc",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "报警时间",
|
||||||
|
prop: "warnTime",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
toDept: "1",
|
||||||
|
// 表格选中的数据
|
||||||
|
selectData: {},
|
||||||
|
tableData: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
data:function(value){
|
||||||
|
this.tablePage.total=value.total
|
||||||
|
this.tableData=value.records
|
||||||
|
this.queryData.eqmId = value.records[0].eqmId
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
methods: {
|
||||||
|
onResearchClick(){
|
||||||
|
this.queryData.startTime = this.queryParams.warningTime[0]
|
||||||
|
this.queryData.endTime = this.queryParams.warningTime[1]
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
getList(){
|
||||||
|
queryAlarmDetail(this.queryData).then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.tableData = data.records
|
||||||
|
this.tablePage.total = data.total
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 重置条件搜索表单
|
||||||
|
resetSearchForm() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs["queryParams"] !== undefined) {
|
||||||
|
this.$refs["queryParams"].resetFields();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 批量处理
|
||||||
|
batchProcessing(row) {
|
||||||
|
this.dialogOpen = true;
|
||||||
|
this.form.id = row.id
|
||||||
|
this.form.state = row.state
|
||||||
|
},
|
||||||
|
// 一键清除
|
||||||
|
allRemove() {
|
||||||
|
this.$confirm("确定要处理当前所有的告警吗?", "警告", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
dealwarning(this.form).then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.dialogOpen = false
|
||||||
|
this.$message.success('处理成功!')
|
||||||
|
this.getList()
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(function () {});
|
||||||
|
},
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.selectIds = selection.map((item) => item.noticeId);
|
||||||
|
this.single = selection.length != 1;
|
||||||
|
},
|
||||||
|
/** 页码大小改变操作 */
|
||||||
|
sizeChange(val) {
|
||||||
|
this.tablePage.limit = 10;
|
||||||
|
this.tablePage.page = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 翻页操作 */
|
||||||
|
currentChange(val) {
|
||||||
|
// this.tablePage.page = val;
|
||||||
|
this.queryData.page = val
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
// 批量处理
|
||||||
|
submitForm() {
|
||||||
|
dealwarning(this.form).then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.dialogOpen = false
|
||||||
|
this.$message.success('处理成功!')
|
||||||
|
this.getList()
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.dialogOpen = false;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.dataTable {
|
||||||
|
.operationBut {
|
||||||
|
margin-right: 10px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.avue-crud__right {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.el-dialog__body{
|
||||||
|
padding: 0px 20px;
|
||||||
|
}
|
||||||
|
.el-select{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.el-form {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.el-table__empty-block {
|
||||||
|
padding: 50px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,187 @@
|
|||||||
|
<template>
|
||||||
|
<div class="login">
|
||||||
|
<!-- 1#主变 油色谱 -->
|
||||||
|
<!-- 标题和内容 -->
|
||||||
|
<div class="pageCardTitle" v-show="hideSwitchShow">
|
||||||
|
{{ pageCardTitle }}
|
||||||
|
<div class="iconSvg closeSvg" @click="changeStatus(true)">
|
||||||
|
<svg-icon slot="prefix" icon-class="close" className="svg" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="pageCard backgroundTitle"
|
||||||
|
:style="'background-image:url(' + clamp + ');'"
|
||||||
|
v-show="cardShow"
|
||||||
|
>
|
||||||
|
<!-- tendencyChart文字标题 -->
|
||||||
|
<div class="tendencyChartText" @click="tendencyChartChange()">趋势图</div>
|
||||||
|
<!-- 标题和内容 -->
|
||||||
|
<div class="cardTitle">
|
||||||
|
{{ pageCardTitle }}
|
||||||
|
<div class="iconSvg" @click="changeStatus(false)">
|
||||||
|
<svg-icon slot="prefix" icon-class="open" className="svg" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cardContent">
|
||||||
|
<Tablemodule
|
||||||
|
:table-loading="loading"
|
||||||
|
:option="tableData.column"
|
||||||
|
:data="tableData.data"
|
||||||
|
></Tablemodule>
|
||||||
|
<div class="cardTab">
|
||||||
|
<el-tabs :tab-position="tabPosition" @tab-click="handleChangeChart">
|
||||||
|
<el-tab-pane label="1#"></el-tab-pane>
|
||||||
|
<el-tab-pane label="2#"></el-tab-pane>
|
||||||
|
<el-tab-pane label="3#"></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { oilChromaControllerTable,oilChromaControllerLine } from "@/api/home/home";
|
||||||
|
// 左边
|
||||||
|
import clamp from "@/assets/page_left/clamp.png";
|
||||||
|
// 引入table组件
|
||||||
|
import Tablemodule from "@/components/Tablemodule/index";
|
||||||
|
export default {
|
||||||
|
name: "Login",
|
||||||
|
components: {
|
||||||
|
Tablemodule,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
// 左边
|
||||||
|
clamp: clamp,
|
||||||
|
// 卡片显示与否
|
||||||
|
cardShow: true,
|
||||||
|
tabPosition: "bottom",
|
||||||
|
// 开关状态
|
||||||
|
switchValue: true,
|
||||||
|
// 标题内容是否显示
|
||||||
|
hideSwitchShow: false,
|
||||||
|
tendencyChartTitle: "1#主变 绕阻测温",
|
||||||
|
pageCardTitle: "1#主变 绕阻测温",
|
||||||
|
tableData: {
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: "相位",
|
||||||
|
prop: "nodeCode",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "温度",
|
||||||
|
prop: "nodeCode",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
data: [],
|
||||||
|
},
|
||||||
|
samplingDate: "",
|
||||||
|
egendData:[],
|
||||||
|
xAxisData:[],
|
||||||
|
seriesData:[]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 表格数据
|
||||||
|
// this.tableDatas()
|
||||||
|
// // 趋势图数据
|
||||||
|
// this.tendencyChartData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tableDatas() {
|
||||||
|
oilChromaControllerTable('237')
|
||||||
|
.then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
this.data = data.records;
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.msgError(err.msg);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
tendencyChartData() {
|
||||||
|
oilChromaControllerLine('237')
|
||||||
|
.then((response) => {
|
||||||
|
const { code, data, msg } = response;
|
||||||
|
this.loading = false;
|
||||||
|
if (code === 200) {
|
||||||
|
for (let index = 0; index < data.length; index++) {
|
||||||
|
const element = data[index];
|
||||||
|
this.legendData.push(element.gas)
|
||||||
|
this.seriesData.push({
|
||||||
|
name:element.gas,
|
||||||
|
data:element.currentVals
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.xAxisData=data[0].dtimes
|
||||||
|
} else {
|
||||||
|
this.msgError(msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.msgError(err.msg);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 点击标签页
|
||||||
|
handleChangeChart(tab) {
|
||||||
|
this.tendencyChartTitle = tab.label + "主变 绕阻测温";
|
||||||
|
this.pageCardTitle= tab.label + "主变 绕阻测温";
|
||||||
|
this.tendencyChartChange()
|
||||||
|
},
|
||||||
|
// 点击开关
|
||||||
|
changeStatus: function ($event) {
|
||||||
|
if (!$event) {
|
||||||
|
this.cardShow = false;
|
||||||
|
this.hideSwitchShow = true;
|
||||||
|
this.switchValue = false;
|
||||||
|
} else {
|
||||||
|
this.cardShow = true;
|
||||||
|
this.hideSwitchShow = false;
|
||||||
|
this.switchValue = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tendencyChartChange(type) {
|
||||||
|
this.$emit(
|
||||||
|
"dataDispose",
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
this.tendencyChartTitle
|
||||||
|
);
|
||||||
|
// let legendData = ["A项 温度"];
|
||||||
|
// let xAxisData = ["10-01", "10-02", "10-03", "10-04", "10-05", "10-06"];
|
||||||
|
// let seriesData = [
|
||||||
|
// { name: "A项 温度", data: [10, 25, 2, 100, 59, 78, 36] },
|
||||||
|
// ];
|
||||||
|
// this.$emit("dataDispose", unit, this.legendData, this.xAxisData, this.seriesData,this.tendencyChartTitle);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
.backgroundTitle{
|
||||||
|
margin-bottom: 0px!important
|
||||||
|
}
|
||||||
|
.backgroundTitle{
|
||||||
|
margin-bottom: 0!important;
|
||||||
|
}
|
||||||
|
@import "~@/assets/stylesheet/card";
|
||||||
|
// 开光样式
|
||||||
|
/deep/ .el-table__empty-block {
|
||||||
|
padding: 30px 0!important;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1440px){
|
||||||
|
.pageCard .cardContent{
|
||||||
|
padding-bottom:15px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,223 @@
|
|||||||
|
<template>
|
||||||
|
<div class="login">
|
||||||
|
<el-form
|
||||||
|
ref="loginForm"
|
||||||
|
:model="loginForm"
|
||||||
|
:rules="loginRules"
|
||||||
|
class="login-form"
|
||||||
|
>
|
||||||
|
<h3 class="title">用户登陆</h3>
|
||||||
|
<el-form-item prop="username">
|
||||||
|
<el-input
|
||||||
|
v-model="loginForm.username"
|
||||||
|
type="text"
|
||||||
|
auto-complete="off"
|
||||||
|
placeholder="账号"
|
||||||
|
>
|
||||||
|
<svg-icon
|
||||||
|
slot="prefix"
|
||||||
|
icon-class="user"
|
||||||
|
class="el-input__icon input-icon"
|
||||||
|
/>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="password">
|
||||||
|
<el-input
|
||||||
|
v-model="loginForm.password"
|
||||||
|
type="password"
|
||||||
|
auto-complete="off"
|
||||||
|
placeholder="密码"
|
||||||
|
@keyup.enter.native="handleLogin"
|
||||||
|
show-password
|
||||||
|
>
|
||||||
|
<svg-icon
|
||||||
|
slot="prefix"
|
||||||
|
icon-class="password"
|
||||||
|
class="el-input__icon input-icon"
|
||||||
|
/>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-checkbox
|
||||||
|
v-model="loginForm.rememberMe"
|
||||||
|
style="margin:0px 0px 25px 0px;"
|
||||||
|
>记住密码</el-checkbox
|
||||||
|
>
|
||||||
|
<el-form-item style="width:100%;">
|
||||||
|
<el-button
|
||||||
|
:loading="loading"
|
||||||
|
size="medium"
|
||||||
|
type="primary"
|
||||||
|
style="width:100%;"
|
||||||
|
@click.native.prevent="handleLogin"
|
||||||
|
>
|
||||||
|
<span v-if="!loading">登 录</span>
|
||||||
|
<span v-else>登 录 中...</span>
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<!-- 底部 -->
|
||||||
|
<div class="el-login-footer">
|
||||||
|
<span>Copyright © 2018-2019 ruoyi.vip All Rights Reserved.</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Cookies from "js-cookie";
|
||||||
|
import { encrypt, decrypt } from "@/utils/jsencrypt";
|
||||||
|
export default {
|
||||||
|
name: "Login",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
codeUrl: "",
|
||||||
|
cookiePassword: "",
|
||||||
|
loginForm: {
|
||||||
|
username: "",
|
||||||
|
password: "",
|
||||||
|
rememberMe: false,
|
||||||
|
},
|
||||||
|
loginRules: {
|
||||||
|
username: [
|
||||||
|
{ required: true, trigger: "blur", message: "用户名不能为空" },
|
||||||
|
],
|
||||||
|
password: [
|
||||||
|
{ required: true, trigger: "blur", message: "密码不能为空" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
loading: false,
|
||||||
|
redirect: undefined,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
handler: function(route) {
|
||||||
|
this.redirect = route.query && route.query.redirect;
|
||||||
|
},
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
Cookies.remove("Admin-Token");
|
||||||
|
this.getCookie();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getCookie() {
|
||||||
|
const username = Cookies.get("username");
|
||||||
|
const password = decrypt(Cookies.get("password"));
|
||||||
|
const rememberMe = Cookies.get("rememberMe");
|
||||||
|
this.loginForm = {
|
||||||
|
username: !username ? this.loginForm.username : username,
|
||||||
|
password: !password ? this.loginForm.password : password,
|
||||||
|
rememberMe: !rememberMe ? false : Boolean(rememberMe),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
handleLogin() {
|
||||||
|
this.$refs.loginForm.validate((valid) => {
|
||||||
|
// if (this.loginForm.password !== this.cookiePass) {
|
||||||
|
// this.loginForm.password = encrypt(user.password)
|
||||||
|
// }
|
||||||
|
if (valid) {
|
||||||
|
this.loading = true;
|
||||||
|
if (this.loginForm.rememberMe) {
|
||||||
|
Cookies.set("username", this.loginForm.username, { expires: 30 });
|
||||||
|
Cookies.set("password", encrypt(this.loginForm.password), {
|
||||||
|
expires: 30,
|
||||||
|
});
|
||||||
|
Cookies.set("rememberMe", this.loginForm.rememberMe, {
|
||||||
|
expires: 30,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Cookies.remove("username");
|
||||||
|
Cookies.remove("password");
|
||||||
|
Cookies.remove("rememberMe");
|
||||||
|
}
|
||||||
|
let user = {
|
||||||
|
username: this.loginForm.username,
|
||||||
|
rememberMe: this.loginForm.rememberMe,
|
||||||
|
password: encrypt(this.loginForm.password),
|
||||||
|
};
|
||||||
|
this.$store
|
||||||
|
.dispatch("Login", user)
|
||||||
|
.then((res) => {
|
||||||
|
sessionStorage.setItem("userName", this.loginForm.username);
|
||||||
|
sessionStorage.setItem("password", user.password);
|
||||||
|
console.log("登录信息==========", this.loginForm);
|
||||||
|
this.$router.push({ path: this.redirect || "/" });
|
||||||
|
this.loading = false;
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return this.$router.go(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
.login {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
background-image: url("../assets/loginLeft.png");
|
||||||
|
background-color: #1c92a0;
|
||||||
|
background-size: cover;
|
||||||
|
-webkit-background-size: cover;
|
||||||
|
-o-background-size: cover;
|
||||||
|
background-position: center 0;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
margin: 0px auto 30px auto;
|
||||||
|
text-align: center;
|
||||||
|
color: #707070;
|
||||||
|
}
|
||||||
|
.login-form {
|
||||||
|
border-radius: 6px;
|
||||||
|
background: #ffffff;
|
||||||
|
width: 400px;
|
||||||
|
margin-left: 50%;
|
||||||
|
padding: 25px 25px 5px 25px;
|
||||||
|
text-align: left;
|
||||||
|
.el-input {
|
||||||
|
height: 38px;
|
||||||
|
input {
|
||||||
|
height: 38px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.input-icon {
|
||||||
|
height: 39px;
|
||||||
|
width: 14px;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.login-tip {
|
||||||
|
font-size: 13px;
|
||||||
|
text-align: center;
|
||||||
|
color: #bfbfbf;
|
||||||
|
}
|
||||||
|
.login-code {
|
||||||
|
width: 33%;
|
||||||
|
height: 38px;
|
||||||
|
float: right;
|
||||||
|
img {
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-login-footer {
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
font-family: Arial;
|
||||||
|
font-size: 12px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,12 @@
|
|||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
created() {
|
||||||
|
const { params, query } = this.$route
|
||||||
|
const { path } = params
|
||||||
|
this.$router.replace({ path: '/' + path, query })
|
||||||
|
},
|
||||||
|
render: function(h) {
|
||||||
|
return h() // avoid warning message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|