Commit 357c657c by 岑松青

dsada

parent 2875b3a8
<template>
<div v-loading="loading">
<el-container>
<el-header style="background:white">
<el-header style="background:white">
<div class="list-first" style="background:white">
<el-row :gutter="20">
<el-col :span="6">
<div class="content">设备报警列表</div>
</el-col>
<el-col :span="6" :offset="12">
<div class="content">
<el-input placeholder="请输入内容/编号" suffix-icon="el-icon-search" v-model="search" ></el-input>
</div>
</el-col>
</el-row>
</div>
</el-header>
<el-main>
<el-row style="margin-bottom:2%">
<el-col :span="8">
<div class="grid-content2">
选择日期:
<el-date-picker
size="mini"
v-model="value1"
type="daterange"
unlink-panels
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions">
</el-date-picker>
</div>
</el-col>
<el-col :span="5">
<div class="grid-content2">
设备型号:
<el-select size="mini" v-model="value2" multiple placeholder="请选择">
<el-option
v-for="item in models"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</el-col>
<el-col :span="5">
<div class="grid-content2">
设备选择:
<el-select size="mini" v-model="value3" multiple placeholder="请选择">
<el-option
v-for="item in devices"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</el-col>
<el-col :span="6">
<div class="grid-content2">
<el-button type="primary" class="bu" size="mini">搜索</el-button>
<el-button size="mini">重置</el-button>
<el-input
placeholder="请输入内容/编号"
suffix-icon="el-icon-search"
v-model="search"
></el-input>
</div>
</el-col>
</el-row>
<el-row>
<el-table
ref="multipleTable"
:data="tableData.filter(data => !search || data.model.toLowerCase().includes(search.toLowerCase())||data.number.toLowerCase().includes(search.toLowerCase()))"
tooltip-effect="dark"
style="width: 100% "
>
<el-table-column align="center" label="设备编号" width="110">
<template slot-scope="scope">{{ scope.row.number }}</template>
</el-table-column>
<el-table-column align="center" label="设备型号" width="110">
<template slot-scope="scope">{{ scope.row.model }}</template>
</el-table-column>
<el-table-column align="center" label="报警编号" width="110">
<template slot-scope="scope">{{ scope.row.AlarmNum }}</template>
</el-table-column>
<el-table-column align="center" label="报警类型" width="110">
<template slot-scope="scope">
<div v-if="scope.row.type==='一般'">
<div style="color:orange">{{scope.row.type}}</div>
</div>
<div v-else>
<div style="color:red">{{scope.row.type}}</div>
</div>
</template>
</el-table-column>
<el-table-column align="center" label="设备位置" width="110">
<template slot-scope="scope">{{ scope.row.location }}</template>
</el-table-column>
<el-table-column align="center" label="监测区域" width="110">
<template slot-scope="scope">{{ scope.row.area }}</template>
</el-table-column>
<el-table-column align="center" label="报警内容" width="110">
<template slot-scope="scope">{{ scope.row.content }}</template>
</el-table-column>
<el-table-column align="center" label="处理状态" width="110">
<template slot-scope="scope">
<div v-if="scope.row.state==='已处理'">
<el-tag :type="'success'">{{scope.row.state}}</el-tag>
</div>
<div v-else-if="scope.row.state==='待处理'">
<el-tag :type="'warning'">{{scope.row.state}}</el-tag>
</div>
<div v-else>
<el-tag :type="'danger'" >{{scope.row.state}}</el-tag>
</div>
</template>
</el-table-column>
<el-table-column align="center" label="巡检员" width="110">
<template slot-scope="scope">{{ scope.row.person }}</template>
</el-table-column>
<el-table-column align="center" label="报警时间" width="150">
<template slot-scope="scope">{{ scope.row.time }}</template>
</el-table-column>
<el-table-column align="center" label="操作" width="110">
<template slot-scope="scope">
<el-button @click="sure(scope.row)" type="text" size="small">设备参数快照</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
</el-main>
<el-footer style="margin:0 auto">
<el-row >
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage1"
:page-sizes="[5, 10, 15, 20]"
:page-size="5"
:total="100"
layout="prev, pager, next,sizes,jumper"
>
</el-pagination>
</el-row>
</el-footer>
</el-container>
</div>
</div>
</el-header>
<el-main>
<el-row style="margin-bottom:2%">
<el-col :span="8">
<div class="grid-content2">
选择日期:
<el-date-picker
size="mini"
v-model="value1"
type="daterange"
unlink-panels
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
>
</el-date-picker>
</div>
</el-col>
<el-col :span="5">
<div class="grid-content2">
设备型号:
<el-select
size="mini"
v-model="value2"
multiple
placeholder="请选择"
>
<el-option
v-for="item in models"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</el-col>
<el-col :span="5">
<div class="grid-content2">
设备选择:
<el-select
size="mini"
v-model="value3"
multiple
placeholder="请选择"
>
<el-option
v-for="item in devices"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</el-col>
<el-col :span="6">
<div class="grid-content2">
<el-button type="primary" class="bu" size="mini">搜索</el-button>
<el-button size="mini">重置</el-button>
</div>
</el-col>
</el-row>
<el-row>
<el-table
ref="multipleTable"
:data="
tableData.filter(
data =>
!search ||
data.model.toLowerCase().includes(search.toLowerCase()) ||
data.number.toLowerCase().includes(search.toLowerCase())
)
"
tooltip-effect="dark"
style="width: 100% "
>
<el-table-column align="center" label="设备编号" width="110">
<template slot-scope="scope">{{ scope.row.number }}</template>
</el-table-column>
<el-table-column align="center" label="设备型号" width="110">
<template slot-scope="scope">{{ scope.row.model }}</template>
</el-table-column>
<el-table-column align="center" label="报警编号" width="110">
<template slot-scope="scope">{{ scope.row.AlarmNum }}</template>
</el-table-column>
<el-table-column align="center" label="报警类型" width="110">
<template slot-scope="scope">
<div v-if="scope.row.type === '一般'">
<div style="color:orange">{{ scope.row.type }}</div>
</div>
<div v-else>
<div style="color:red">{{ scope.row.type }}</div>
</div>
</template>
</el-table-column>
<el-table-column align="center" label="设备位置" width="110">
<template slot-scope="scope">{{ scope.row.location }}</template>
</el-table-column>
<el-table-column align="center" label="监测区域" width="110">
<template slot-scope="scope">{{ scope.row.area }}</template>
</el-table-column>
<el-table-column align="center" label="报警内容" width="110">
<template slot-scope="scope">{{ scope.row.content }}</template>
</el-table-column>
<el-table-column align="center" label="处理状态" width="110">
<template slot-scope="scope">
<div v-if="scope.row.state === '已处理'">
<el-tag :type="'success'">{{ scope.row.state }}</el-tag>
</div>
<div v-else-if="scope.row.state === '待处理'">
<el-tag :type="'warning'">{{ scope.row.state }}</el-tag>
</div>
<div v-else>
<el-tag :type="'danger'">{{ scope.row.state }}</el-tag>
</div>
</template>
</el-table-column>
<el-table-column align="center" label="巡检员" width="110">
<template slot-scope="scope">{{ scope.row.person }}</template>
</el-table-column>
<el-table-column align="center" label="报警时间" width="150">
<template slot-scope="scope">{{ scope.row.time }}</template>
</el-table-column>
<el-table-column align="center" label="操作" width="110">
<template slot-scope="scope">
<el-button @click="sure(scope.row)" type="text" size="small"
>设备参数快照</el-button
>
</template>
</el-table-column>
</el-table>
</el-row>
</el-main>
<el-footer style="margin:0 auto">
<el-row>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage1"
:page-sizes="[5, 10, 15, 20]"
:page-size="5"
:total="100"
layout="prev, pager, next,sizes,jumper"
>
</el-pagination>
</el-row>
</el-footer>
</el-container>
</div>
</template>
<script lang="ts">
import { ref, onMounted } from '@vue/composition-api';
import { ref, onMounted } from "@vue/composition-api";
export default {
setup() {
function handleCurrentChange(val) {
console.log(`当前页: ${val}`);
function handleCurrentChange(val) {
console.log(`当前页: ${val}`);
}
const value1 = ref<any>([]);
const value2 = ref<any>([]);
const value3 = ref<any>([]);
const multipleSelection = ref<any>([]);
const models = [
{
value: "选项1",
label: "型号1"
},
{
value: "选项2",
label: "型号2"
},
{
value: "选项3",
label: "型号3"
},
{
value: "选项4",
label: "型号4"
}
const value1 = ref<any>([]);
const value2= ref<any>([]);
const value3= ref<any>([]);
const multipleSelection= ref<any>([]);
const models=[
{
value: "选项1",
label: "型号1"
},
{
value: "选项2",
label: "型号2"
},
{
value: "选项3",
label: "型号3"
},
{
value: "选项4",
label: "型号4"
}
]
const devices=[
{
value: "选项1",
label: "断路器1"
},
{
value: "选项2",
label: "断路器2"
},
{
value: "选项3",
label: "断路器3"
},
{
value: "选项4",
label: "断路器4"
}
]
const tableData=[
{
number: "LKT15456",
model: "DL01",
AlarmNum:'program',
type:'一般',
location:'车间1',
area:'一楼办公室',
content:'电压不稳定',
state:"待处理",
time:'2020/7/20 12:00:03',
person:"王邹",
},
{
number: "LKT15456",
model: "DL01",
AlarmNum:'program',
type:'重要',
location:'车间1',
area:'一楼办公室',
content:'电压不稳定',
state:"待处理",
time:'2020/7/20 12:00:03',
person:"王邹",
},
{
number: "LKT15456",
model: "DL01",
AlarmNum:'program',
type:'一般',
location:'车间1',
area:'一楼办公室',
content:'电压不稳定',
state:"已处理",
time:'2020/7/20 12:00:03',
person:"王邹",
},
{
number: "LKT15456",
model: "DL01",
AlarmNum:'program',
type:'一般',
location:'车间1',
area:'一楼办公室',
content:'电压不稳定',
state:"未处理",
time:'2020/7/20 12:00:03',
person:"王邹",
];
const devices = [
{
value: "选项1",
label: "断路器1"
},
{
value: "选项2",
label: "断路器2"
},
{
value: "选项3",
label: "断路器3"
},
{
value: "选项4",
label: "断路器4"
}
];
const tableData = [
{
number: "LKT15456",
model: "DL01",
AlarmNum: "program",
type: "一般",
location: "车间1",
area: "一楼办公室",
content: "电压不稳定",
state: "待处理",
time: "2020/7/20 12:00:03",
person: "王邹"
},
{
number: "LKT15456",
model: "DL01",
AlarmNum: "program",
type: "重要",
location: "车间1",
area: "一楼办公室",
content: "电压不稳定",
state: "待处理",
time: "2020/7/20 12:00:03",
person: "王邹"
},
{
number: "LKT15456",
model: "DL01",
AlarmNum: "program",
type: "一般",
location: "车间1",
area: "一楼办公室",
content: "电压不稳定",
state: "已处理",
time: "2020/7/20 12:00:03",
person: "王邹"
},
{
number: "LKT15456",
model: "DL01",
AlarmNum: "program",
type: "一般",
location: "车间1",
area: "一楼办公室",
content: "电压不稳定",
state: "未处理",
time: "2020/7/20 12:00:03",
person: "王邹"
},
{
number: "LKT15456",
model: "DL01",
AlarmNum: "program",
type: "一般",
location: "车间1",
area: "一楼办公室",
content: "电压不稳定",
state: "待处理",
time: "2020/7/20 12:00:03",
person: "王邹"
},
{
number: "LKT15456",
model: "DL01",
AlarmNum: "program",
type: "一般",
location: "车间1",
area: "一楼办公室",
content: "电压不稳定",
state: "待处理",
time: "2020/7/20 12:00:03",
person: "王邹"
},
{
number: "LKT15456",
model: "DL01",
AlarmNum: "program",
type: "一般",
location: "车间1",
area: "一楼办公室",
content: "电压不稳定",
state: "待处理",
time: "2020/7/20 12:00:03",
person: "王邹"
}
];
},
const loading = ref<boolean>(false);
const pickerOptions = {
shortcuts: [
{
number: "LKT15456",
model: "DL01",
AlarmNum:'program',
type:'一般',
location:'车间1',
area:'一楼办公室',
content:'电压不稳定',
state:"待处理",
time:'2020/7/20 12:00:03',
person:"王邹",
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
}
},
{
number: "LKT15456",
model: "DL01",
AlarmNum:'program',
type:'一般',
location:'车间1',
area:'一楼办公室',
content:'电压不稳定',
state:"待处理",
time:'2020/7/20 12:00:03',
person:"王邹",
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
}
},
{
number: "LKT15456",
model: "DL01",
AlarmNum:'program',
type:'一般',
location:'车间1',
area:'一楼办公室',
content:'电压不稳定',
state:"待处理",
time:'2020/7/20 12:00:03',
person:"王邹",
},
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
}
}
]
const loading = ref<boolean>(false);
const pickerOptions= {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
}]
};
return{
loading,
search: '',
tableData,
currentPage1:1,
handleCurrentChange,
num:1,
devices,
models,
pickerOptions,
value2,
value1,
value3,
};
},
return {
loading,
search: "",
tableData,
currentPage1: 1,
handleCurrentChange,
num: 1,
devices,
models,
pickerOptions,
value2,
value1,
value3
};
}
};
</script>
<style lang="scss">
......
......@@ -31,22 +31,28 @@
<el-col :span="6">
<div class="grid-content1">设备列表</div>
</el-col>
<el-col :span="6" :offset="12">
<div class="grid-content1">
<el-input placeholder="请输入内容/编号" suffix-icon="el-icon-search" v-model="search" ></el-input>
<el-input
placeholder="请输入内容/编号"
suffix-icon="el-icon-search"
v-model="search"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<div class="grid-content2">
设备状态:
<el-select size="mini" v-model="value1" multiple placeholder="请选择">
<el-select
size="mini"
v-model="value1"
multiple
placeholder="请选择"
>
<el-option
v-for="item in states"
:key="item.value"
......@@ -59,7 +65,12 @@
<el-col :span="6">
<div class="grid-content2">
设备型号:
<el-select size="mini" v-model="value2" multiple placeholder="请选择">
<el-select
size="mini"
v-model="value2"
multiple
placeholder="请选择"
>
<el-option
v-for="item in models"
:key="item.value"
......@@ -72,7 +83,12 @@
<el-col :span="6">
<div class="grid-content2">
设备选择:
<el-select size="mini" v-model="value3" multiple placeholder="请选择">
<el-select
size="mini"
v-model="value3"
multiple
placeholder="请选择"
>
<el-option
v-for="item in equipments"
:key="item.value"
......@@ -84,7 +100,9 @@
</el-col>
<el-col :span="6">
<div class="grid-content2">
<el-button type="primary" class="bu" size="mini">搜索</el-button>
<el-button type="primary" class="bu" size="mini"
>搜索</el-button
>
<el-button size="mini">重置</el-button>
</div>
</el-col>
......@@ -92,25 +110,36 @@
<el-row>
<el-table
ref="multipleTable"
:data="tableData.filter(data => !search || data.state.toLowerCase().includes(search.toLowerCase())||data.number.toLowerCase().includes(search.toLowerCase()))"
:data="
tableData.filter(
data =>
!search ||
data.state.toLowerCase().includes(search.toLowerCase()) ||
data.number.toLowerCase().includes(search.toLowerCase())
)
"
tooltip-effect="dark"
style="width: 100% "
@selection-change="handleSelectionChange"
>
<el-table-column align="center" type="selection" width="50"></el-table-column>
<el-table-column
align="center"
type="selection"
width="50"
></el-table-column>
<el-table-column align="center" label="设备状态" width="200">
<template slot-scope="scope">
<div v-if="scope.row.state==='正常'">
<el-tag :type="'success'">{{scope.row.state}}</el-tag>
<div v-if="scope.row.state === '正常'">
<el-tag :type="'success'">{{ scope.row.state }}</el-tag>
</div>
<div v-else-if="scope.row.state=='报警'">
<el-tag :type="'warning'">{{scope.row.state}}</el-tag>
<div v-else-if="scope.row.state == '报警'">
<el-tag :type="'warning'">{{ scope.row.state }}</el-tag>
</div>
<div v-else-if="scope.row.state=='故障'">
<el-tag :type="'danger'">{{scope.row.state}}</el-tag>
<div v-else-if="scope.row.state == '故障'">
<el-tag :type="'danger'">{{ scope.row.state }}</el-tag>
</div>
<div v-else>
<el-tag :type="'info'">{{scope.row.state}}</el-tag>
<el-tag :type="'info'">{{ scope.row.state }}</el-tag>
</div>
</template>
</el-table-column>
......@@ -128,7 +157,9 @@
</el-table-column>
<el-table-column align="center" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="detail(scope.row)" type="text" size="small">参数详情</el-button>
<el-button @click="detail(scope.row)" type="text" size="small"
>参数详情</el-button
>
</template>
</el-table-column>
</el-table>
......@@ -143,141 +174,145 @@ import { ref, onMounted } from "@vue/composition-api";
import { router } from "../../main";
export default {
setup() {
const tableData=[
{
state: "正常",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "故障",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "通讯中断",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "报警",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
}
]
const equipments=[
{
value: "选项1",
label: "断路器1"
},
{
value: "选项2",
label: "断路器2"
},
{
value: "选项3",
label: "断路器3"
},
{
value: "选项4",
label: "断路器4"
}
]
const models= [
{
value: "选项1",
label: "型号1"
},
{
value: "选项2",
label: "型号2"
},
{
value: "选项3",
label: "型号3"
},
{
value: "选项4",
label: "型号4"
}
]
const states=[
{
value: "选项1",
label: "正常"
},
{
value: "选项2",
label: "报警"
},
{
value: "选项3",
label: "故障"
},
{
value: "选项4",
label: "通讯中断"
}
]
function detail() {
router.push({ name: "demo3" });
const tableData = [
{
state: "正常",
number: "DLQ4323",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DL3423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "故障",
number: "DLQ453",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DL23",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "通讯中断",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "正常",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
},
{
state: "报警",
number: "DLQ423",
model: "LTY-1",
location: "杭州市西湖区",
area: "杭州市西湖区古荡湾",
collector: "LKT001"
}
];
const equipments = [
{
value: "选项1",
label: "断路器1"
},
{
value: "选项2",
label: "断路器2"
},
{
value: "选项3",
label: "断路器3"
},
{
value: "选项4",
label: "断路器4"
}
];
const models = [
{
value: "选项1",
label: "型号1"
},
{
value: "选项2",
label: "型号2"
},
{
value: "选项3",
label: "型号3"
},
{
value: "选项4",
label: "型号4"
}
];
const states = [
{
value: "选项1",
label: "正常"
},
{
value: "选项2",
label: "报警"
},
{
value: "选项3",
label: "故障"
},
{
value: "选项4",
label: "通讯中断"
}
];
function detail(row:any) {
router.push({ name: "detail" ,
params: {
obj: row
}
});
}
const loading = ref<boolean>(false);
const value1 = ref<any>([]);
const value2= ref<any>([]);
const value3= ref<any>([]);
const multipleSelection= ref<any>([]);
const value2 = ref<any>([]);
const value3 = ref<any>([]);
const multipleSelection = ref<any>([]);
return {
loading,
search: "",
msg: 'test message',
tableData,
detail,
states,
......
<template>
<div v-loading="loading">
<el-row>
<el-button type="primary" size="mini">返回</el-button>
</el-row>
<el-container>
<el-aside style="background:white; ;margin-right:15px;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<div style="margin-top:10px;margin-left:10px">
<el-row style="text-align:center;margin-bottom:5% ;font-weight:bold" >BOT0016</el-row>
<el-row >
<el-col :span="10"><div ><img src="../../assets/device.png" alt="" class="device"></div></el-col>
<el-col :span="7" :offset="3"><div>设备型号:</div><div>12</div><div style="margin-top:10px">采集器编号:</div><div>12</div></el-col>
</el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="10"><div>客户地址:</div></el-col>
<el-col :span="10" :offset="2"><div>杭州市江干区</div></el-col>
</el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="10"><div>联系人:</div></el-col>
<el-col :span="10" :offset="2"><div>张三</div></el-col>
</el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="10"><div>联系方式:</div></el-col>
<el-col :span="10" :offset="2"><div>1283948933</div></el-col>
</el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="10"><div>设备位置:</div></el-col>
<el-col :span="10" :offset="2"><div>北楼一区</div></el-col>
</el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="10"><div>监测区域:</div></el-col>
<el-col :span="10" :offset="2"><div>北楼一区</div></el-col>
</el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="10"><div>开机率:</div></el-col>
<el-col :span="10" :offset="2"><div><el-progress :text-inside="true" :stroke-width="24" :percentage="67" status="success"></el-progress></div></el-col>
</el-row>
<el-row style="background:white;margin-top:50px " justify="center"><el-col :span="3" :offset="7"><el-button type="primary" size="mini">运行参数查看</el-button></el-col></el-row>
<el-row style="background:white;margin-top:10px " justify="center"><el-col :span="3" :offset="7"><el-button type="primary" size="mini">运行时间统计</el-button></el-col></el-row>
<div v-loading="loading">
<div><el-button type="primary" size="mini">返回</el-button></div>
<div class="flex start " style="margin-top: 10px">
<div class="aside" >
<div>
<div style="text-align:center;margin-top:5%;margin-bottom:5% ;font-weight:bold" >{{dd.number}}</div>
<div class="bg">
<div class="text">
<div>设备型号:</div>
<div>12</div>
<div style="margin-top:10px">采集器编号:</div>
<div>12</div>
</div>
</div>
</div>
<el-form ref="form" :model="form" label-width="100px" size="mini" >
<el-form-item label="客户地址:">
<div>杭州市江干区</div>
</el-form-item>
<el-form-item label="联系人:">
<div>张三</div>
</el-form-item>
<el-form-item label="联系方式:">
<div>1283948933</div>
</el-form-item>
<el-form-item label="设备位置:">
<div>北楼一区</div>
</el-form-item>
<el-form-item label="监测区域:">
<div>北楼一区</div>
</el-form-item>
<el-form-item label="开机率:">
<div style="width:80%;margin-top:8px"><el-progress
:text-inside="true"
:stroke-width="20"
:percentage="67"
status="success"
></el-progress></div>
</el-form-item>
</el-form-item>
<el-form-item label="监测区域:">
<div>北楼一区</div>
</el-form-item>
</el-form-item>
<el-form-item >
<div><el-button type="primary" size="mini"
>运行参数查看</el-button
></div>
</el-form-item>
<el-form-item >
<div><el-button type="primary" size="mini"
>运行时间统计</el-button
></div>
</el-form-item>
</el-form>
</div>
</el-aside>
<el-container>
<el-header style="line-height:60px; height:60px; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-row >运行时间:</el-row>
</el-header>
<el-main style="background:white;margin-top:10px ;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-row style="background:white;margin-top:10px " justify="center"><el-col :span="3" :offset="8"><el-button type="primary" size="mini">实时参数列表</el-button></el-col><el-col :span="3" ><el-button size="mini">参数曲线监控</el-button></el-col></el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="5"><div>电流:</div></el-col>
<el-col :span="2" :offset="1"><div class="it">8.342342</div></el-col>
<el-col :span="5"><div>温度:</div ></el-col>
<el-col :span="2" :offset="1"><div class="it">8.342342</div></el-col>
<el-col :span="5"><div>断路器状态:</div></el-col>
<el-col :span="2" :offset="1"><div class="it">8.342342</div></el-col>
</el-row>
<el-row style="background:white;margin-top:5% ">
<el-col :span="5"><div>A相电压:</div></el-col>
<el-col :span="2" :offset="1"><div class="it">8.342342</div></el-col>
<el-col :span="5"><div>B相电压:</div ></el-col>
<el-col :span="2" :offset="1"><div class="it">8.342342</div></el-col>
<el-col :span="5"><div>AB相线电流:</div></el-col>
<el-col :span="2" :offset="1"><div class="it">8.342342</div></el-col>
</el-row>
<el-row justify="center" style="margin-top:300px"><el-col :span="3" :offset="8"><el-button type="primary" size="mini">上一页</el-button></el-col><el-col :span="3" ><el-button size="mini">下一页</el-button></el-col></el-row>
</el-main>
</el-container>
</el-container>
</div>
<div class="flex column " style="width:72%">
<div class="header1" >运行时间:</div>
<div class="main1" >
<div class="butt">
<el-form :inline="true">
<el-form-item>
<el-button type="primary" size="mini" style="margin-right:20px">实时参数列表</el-button>
<el-button size="mini">参数曲线监控</el-button>
</el-form-item>
</el-form>
</div>
<el-form :inline="true" >
<el-form-item label="电流:"style="margin-right:200px;width:150px">
<div class="it">8.342342</div>
</el-form-item>
<el-form-item label="温度:"style="margin-right:200px;width:150px">
<div class="it">8.342342</div>
</el-form-item>
<el-form-item label="断路器状态:">
<div class="it"></div>
</el-form-item>
</el-form>
<el-form :inline="true">
<el-form-item label="A相电压:"style="margin-right:200px;width:150px">
<div class="it">8.342342</div>
</el-form-item>
<el-form-item label="B相电压:"style="margin-right:200px;width:150px">
<div class="it">8.342342</div>
</el-form-item>
<el-form-item label="AB相线电流:">
<div class="it">8.342342</div>
</el-form-item>
</el-form>
<div class="butt1">
<el-button type="primary" size="mini" style="margin-right:20px">上一页</el-button>
<el-button size="mini">下一页</el-button>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { ref, onMounted } from '@vue/composition-api';
import { ref, onMounted } from "@vue/composition-api";
import { router } from '../../main';
export default {
setup() {
const loading = ref<boolean>(false);
return{
loading,
const dd=ref<any>()
onMounted(function () {
dd.value= router.currentRoute.params.obj
// console.log(aa)
})
return {
loading,dd
};
},
}
};
</script>
<style lang="scss">
.it{
color: blue;
font-weight:bold;
text-size-adjust: medium;
}
.device {
height: 60px;
overflow: hidden;
cursor:pointer;
}
.aside{border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);width:25%;background:white;margin-right:10px ;
}
.main1{padding-left:10px;background:white;margin-top:10px ;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)}
.header1{line-height:60px; padding-left:10px;height:60px; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)}
.it {
color: blue;
font-weight: bold;
text-align: center;
text-size-adjust: medium;
}
.butt{margin-left:35%}
.butt1{margin-left:38%;margin-top:31%;margin-bottom: 2%;}
.bg{background-image: url(../../assets/device.png);
background-repeat: no-repeat;
}
.text{margin-left:60%}
.device {
height: 60px;
overflow: hidden;
cursor: pointer;
}
</style>
<template>
<div v-loading="loading">
<el-container>
<el-aside style="background:white;width:75% ;margin-right:2%;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<div style="margin-top:10px;margin-left:10px">
<el-row style="text-align:left;margin-bottom:5% ;font-weight:bold;" >设备状态统计实时监测</el-row>
<el-row class="row-bg" >
<el-col :span="4">
<div class="grid-content bg-blue">设备总数</div>
<div class="grid-content bg-blue big">4545台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-green">正常</div>
<div class="grid-content bg-green big">3621台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-orange">报警</div>
<div class="grid-content bg-orange big">273台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-red">故障</div>
<div class="grid-content bg-red big">432台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-grey">通讯中断</div>
<div class="grid-content bg-grey big">422台</div>
</el-col>
</el-row>
<el-row >
<el-col ><div ><img src="../../assets/map.png" alt="" class="map"></div></el-col>
</el-row>
</div>
</el-aside>
<el-container>
<el-header style=" height:280px; margin-bottom:5%;background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-row style="text-align:left;margin-bottom:5% ;font-weight:bold;" >巡检通知</el-row>
<el-row ><div v-for="(item,i) in infos" class="info" ><el-col :span="1" style=" margin-top:12px;width: 25px;height: 25px;border: 1px solid #314659;color:white;background:#314659;border-radius:50%;text-align:center;line-height:25px">{{item.id}}</el-col>
<el-col :span="0.3" class="infos">{{item.location}}</el-col>
<el-col :span="0.3" class="infos"> <div ><el-button @click="detail(scope.row)" type="text" size="small"><div >{{item.operation}}</div></el-button></div></el-col>
</div></el-row>
</el-header>
<el-aside
style="background:white;width:75% ;margin-right:2%;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)"
>
<div style="margin-top:10px;margin-left:10px">
<el-row style="text-align:left;margin-bottom:5% ;font-weight:bold;"
>设备状态统计实时监测</el-row
>
<el-row class="row-bg">
<el-col :span="4">
<div class="grid-content bg-blue">设备总数</div>
<div class="grid-content bg-blue big">4545台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-green">正常</div>
<div class="grid-content bg-green big">3621台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-orange">报警</div>
<div class="grid-content bg-orange big">273台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-red">故障</div>
<div class="grid-content bg-red big">432台</div>
</el-col>
<el-col :span="4" :offset="1">
<div class="grid-content bg-grey">通讯中断</div>
<div class="grid-content bg-grey big">422台</div>
</el-col>
</el-row>
<el-row>
<el-col
><div><img src="../../assets/map.png" alt="" class="map" /></div
></el-col>
</el-row>
</div>
</el-aside>
<el-container>
<el-header
style=" height:280px; margin-bottom:5%;background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)"
>
<el-row style="text-align:left;margin-bottom:5% ;font-weight:bold;"
>巡检通知</el-row
>
<el-row
><div v-for="(item, i) in infos" class="info">
<el-col
:span="1"
style=" margin-top:12px;width: 25px;height: 25px;border: 1px solid #314659;color:white;background:#314659;border-radius:50%;text-align:center;line-height:25px"
>{{ item.id }}</el-col
>
<el-col :span="0.3" class="infos">{{ item.location }}</el-col>
<el-col :span="0.3" class="infos">
<div>
<el-button @click="detail(scope.row)" type="text" size="small"
><div>{{ item.operation }}</div></el-button
>
</div></el-col
>
</div></el-row
>
</el-header>
<el-main style=" overflow: hidden;height:280px; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-row style="text-align:left;margin-bottom:5% ;font-weight:bold;" >区域耗能统计</el-row>
<el-row ><v-chart autoresize :options="option" style="width: 100%;"/></el-row>
</el-main>
</el-container>
</el-container>
<el-container style="margin-top:1%">
<el-aside style="width:49% ;margin-right:2% ; overflow: hidden; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-row style="text-align:left;margin-bottom:2% ;font-weight:bold;" >今日能耗实时统计</el-row>
<el-row ><v-chart autoresize :options="option1" style="width: 100%;"/></el-row>
</el-aside>
<el-main style="overflow: hidden; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
<el-row style="text-align:left;margin-bottom:2% ;font-weight:bold;" >今日报警次数统计</el-row>
<el-row ><v-chart autoresize :options="option2" style="width: 100%;"/></el-row>
</el-main>
</el-container>
<el-main
style=" overflow: hidden;height:280px; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)"
>
<el-row style="text-align:left;margin-bottom:5% ;font-weight:bold;"
>区域耗能统计</el-row
>
<el-row
><v-chart autoresize :options="option" style="width: 100%;"
/></el-row>
</el-main>
</el-container>
</el-container>
<el-container style="margin-top:1%">
<el-aside
style="width:49% ;margin-right:2% ; overflow: hidden; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)"
>
<el-row style="text-align:left;margin-bottom:2% ;font-weight:bold;"
>今日能耗实时统计</el-row
>
<el-row
><v-chart autoresize :options="option1" style="width: 100%;"
/></el-row>
</el-aside>
<el-main
style="overflow: hidden; background:white;border-radius: 4px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)"
>
<el-row style="text-align:left;margin-bottom:2% ;font-weight:bold;"
>今日报警次数统计</el-row
>
<el-row
><v-chart autoresize :options="option2" style="width: 100%;"
/></el-row>
</el-main>
</el-container>
</div>
</template>
<script lang="ts">
import { ref, onMounted } from '@vue/composition-api';
import { ref, onMounted } from "@vue/composition-api";
export default {
setup() {
var labelRight = {
position: 'right'
};
const option = {
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
position: "right"
};
const option = {
tooltip: {
trigger: "axis",
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
}
},
grid: {
},
grid: {
top: 5,
bottom: 5
},
xAxis: {
type: 'value',
position: 'top',
},
xAxis: {
type: "value",
position: "top",
splitLine: {
lineStyle: {
type: 'dashed'
}
lineStyle: {
type: "dashed"
}
}
},
yAxis: {
type: 'category',
axisLine: {show: false},
axisLabel: {show: false},
axisTick: {show: false},
splitLine: {show: false},
max:5,
data: [ '孵化器2幢', '孵化器2幢', '孵化器2幢', '孵化器2幢', '孵化器1幢'],
},
series: [
},
yAxis: {
type: "category",
axisLine: { show: false },
axisLabel: { show: false },
axisTick: { show: false },
splitLine: { show: false },
max: 5,
data: ["孵化器2幢", "孵化器2幢", "孵化器2幢", "孵化器2幢", "孵化器1幢"]
},
series: [
{
name: '用电',
type: 'bar',
stack: '总量',
label: {
show: true,
formatter: '{b}'
},
data: [
{value: -0.07, label: labelRight},
{value: -0.09, label: labelRight},
0.2, 0.44,
{value: -0.23, label: labelRight},
0.08,
{value: -0.17, label: labelRight},
0.47,
{value: -0.36, label: labelRight},
0.18
]
name: "用电",
type: "bar",
stack: "总量",
label: {
show: true,
formatter: "{b}"
},
data: [
{ value: -0.07, label: labelRight },
{ value: -0.09, label: labelRight },
0.2,
0.44,
{ value: -0.23, label: labelRight },
0.08,
{ value: -0.17, label: labelRight },
0.47,
{ value: -0.36, label: labelRight },
0.18
]
}
]
};
const option1={
color: ['#3398DB'],
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
]
};
const option1 = {
color: ["#3398DB"],
tooltip: {
trigger: "axis",
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true
},
xAxis: [
},
xAxis: [
{
type: 'category',
data: ['9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00','16:00', '17:00', '18:00'],
axisTick: {
alignWithLabel: true
}
type: "category",
data: [
"9:00",
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
"18:00"
],
axisTick: {
alignWithLabel: true
}
}
],
yAxis: [
],
yAxis: [
{
type: 'value'
type: "value"
}
],
series: [
],
series: [
{
name: '能耗',
type: 'bar',
barWidth: '60%',
data: [10, 52, 200, 334, 390, 330, 220,435,656,232]
name: "能耗",
type: "bar",
barWidth: "60%",
data: [10, 52, 200, 334, 390, 330, 220, 435, 656, 232]
}
]
};
const option2={
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
]
};
const option2 = {
tooltip: {
trigger: "axis",
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
}
},
xAxis: {
type: 'category',
},
xAxis: {
type: "category",
boundaryGap: false,
data: ['9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00','16:00', '17:00', '18:00']
},
yAxis: {
type: 'value'
},
series: [{
name: '次数',
data: [820, 932, 901, 934, 1290, 1330, 1320,2312,5435,2121],
type: 'line',
areaStyle: {}
}]
};
const infos=[{id:'1',
location:'孵化器2幢一层',
operation:'日常巡检'},
{id:'2',
location:'孵化器2幢一层',
operation:'日常巡检'},
{id:'3',
location:'孵化器2幢一层',
operation:'日常巡检'},
{id:'4',
location:'孵化器2幢一层',
operation:'日常巡检'},
{id:'5',
location:'孵化器2幢一层',
operation:'日常巡检'},
]
data: [
"9:00",
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
"18:00"
]
},
yAxis: {
type: "value"
},
series: [
{
name: "次数",
data: [820, 932, 901, 934, 1290, 1330, 1320, 2312, 5435, 2121],
type: "line",
areaStyle: {}
}
]
};
const infos = [
{ id: "1", location: "孵化器2幢一层", operation: "日常巡检" },
{ id: "2", location: "孵化器2幢一层", operation: "日常巡检" },
{ id: "3", location: "孵化器2幢一层", operation: "日常巡检" },
{ id: "4", location: "孵化器2幢一层", operation: "日常巡检" },
{ id: "5", location: "孵化器2幢一层", operation: "日常巡检" }
];
const loading = ref<boolean>(false);
return{
return {
loading,
infos,
option,
option1,
option2,
labelRight,
option,
option1,
option2,
labelRight
};
},
}
};
</script>
<style lang="scss">
.map{
margin-left: 5%;
width:90%;
overflow: hidden;
cursor:pointer;
}
.grid-content {
.map {
margin-left: 5%;
width: 90%;
overflow: hidden;
cursor: pointer;
}
.grid-content {
text-align: center;
line-height: 30px;
}
......@@ -244,6 +303,10 @@ const option1={
padding: 10px 0;
background-color: #f9fafc;
}
.info{line-height: 50px;}
.infos{padding:0 25px;}
.info {
line-height: 50px;
}
.infos {
padding: 0 25px;
}
</style>
......@@ -2,29 +2,48 @@
<div class="flex column center login" v-loading="loading">
<div class="login-body vivify popIn flex center column">
<div class="login-head flex column center align-center">
<div class="title1">{{loginTitle1}}</div>
<div v-if="loginTitle2" class="title2">{{loginTitle2}}</div>
<div class="title1">{{ loginTitle1 }}</div>
<div v-if="loginTitle2" class="title2">{{ loginTitle2 }}</div>
</div>
<div class="inner flex center align-center around">
<div class="left">
<img src="../assets/u90.png">
<img src="../assets/u90.png" />
</div>
<div class="flex column right">
<div class="flex center">
<img :src="loginLogo"/>
<img :src="loginLogo" />
</div>
<el-form
label-position="left" label-width="70px"
class="flex column around" ref="formRef" :model="form" :rules="rule">
label-position="left"
label-width="70px"
class="flex column around"
ref="formRef"
:model="form"
:rules="rule"
>
<el-form-item prop="username" label="账户:">
<el-input v-model="form.username" autofocus autocomplete="off" placeholder="用户名" @keyup.enter.native="login($refs.formRef)" />
<el-input
v-model="form.username"
autofocus
autocomplete="off"
placeholder="用户名"
@keyup.enter.native="login($refs.formRef)"
/>
</el-form-item>
<el-form-item prop="pwd" label="密码:">
<el-input type="password" autocomplete="off" v-model="form.pwd" placeholder="密 码" @keyup.enter.native="login($refs.formRef)" />
<el-input
type="password"
autocomplete="off"
v-model="form.pwd"
placeholder="密 码"
@keyup.enter.native="login($refs.formRef)"
/>
</el-form-item>
<kit-err-channel id="login" style="margin-bottom: 5px" />
<el-form-item>
<el-button type="primary" @click="login($refs.formRef)">登录</el-button>
<el-button type="primary" @click="login($refs.formRef)"
>登录</el-button
>
</el-form-item>
</el-form>
</div>
......@@ -34,58 +53,67 @@
</div>
</template>
<script lang="ts">
import { ref, Ref, onMounted } from '@vue/composition-api';
import { ElForm } from 'element-ui/types/form';
import { useLoading } from 'web-toolkit/src/service';
import { postService, storeUserInfo, updateStoreUserInfo, submitErrChanel, pushMsgErr } from 'web-toolkit/src/case-main';
import {loginTitle1, loginTitle2, loginLogo, schema} from '@/main';
import {router} from '@/main';
import { Route } from 'vue-router';
import {assert} from 'web-toolkit/src/utils/index';
import {Login} from '@/dao/userDao';
import { ref, Ref, onMounted } from "@vue/composition-api";
import { ElForm } from "element-ui/types/form";
import { useLoading } from "web-toolkit/src/service";
import {
postService,
storeUserInfo,
updateStoreUserInfo,
submitErrChanel,
pushMsgErr
} from "web-toolkit/src/case-main";
import { loginTitle1, loginTitle2, loginLogo, schema } from "@/main";
import { router } from "@/main";
import { Route } from "vue-router";
import { assert } from "web-toolkit/src/utils/index";
import { Login } from "@/dao/userDao";
export default {
setup() {
const loading = ref(false);
const form = ref({ username: '', pwd: '' });
const formRef: Ref<ElForm|null> = ref(null);
const form = ref({ username: "", pwd: "" });
const formRef: Ref<ElForm | null> = ref(null);
const rule = {
username: {
required: true,
message: '请填写用户名',
trigger: 'none',
message: "请填写用户名",
trigger: "none"
},
pwd: [{
required: true,
message: '请填写密码',
trigger: 'none',
}, {
type: 'string',
min: 6,
message: '密码长度不能小于6位',
trigger: 'none',
}],
pwd: [
{
required: true,
message: "请填写密码",
trigger: "none"
},
{
type: "string",
min: 6,
message: "密码长度不能小于6位",
trigger: "none"
}
]
};
async function login() {
const valid = await (formRef.value as ElForm).validate();
assert(valid);
submitErrChanel('login');
submitErrChanel("login");
const data = await Login({
...form.value,
schema,
schema
});
updateStoreUserInfo(data as any);
// 设置登录后回到登录前页面
// @ts-ignore
const redirect: Route = {
name: 'index',
query: {},
name: "index",
query: {}
};
if (
storeUserInfo.redirect &&
storeUserInfo.redirect.name &&
storeUserInfo.redirect.name !== 'notFound' &&
storeUserInfo.redirect.name !== 'login'
storeUserInfo.redirect.name !== "notFound" &&
storeUserInfo.redirect.name !== "login"
) {
redirect.name = storeUserInfo.redirect.name;
redirect.query = storeUserInfo.redirect.query;
......@@ -95,75 +123,80 @@ export default {
router.push(redirect as any);
}
return {
formRef, loginTitle1, loginTitle2, loginLogo,
loading, form, rule, login: useLoading(loading, login),
formRef,
loginTitle1,
loginTitle2,
loginLogo,
loading,
form,
rule,
login: useLoading(loading, login)
};
},
}
};
</script>
<style lang="scss" scoped>
.login{
background: url("../assets/bg.jpg") no-repeat;
background-size: 100% 100%;
width: 100vw;
height: 100vh;
min-height: 600px;
.login {
background: url("../assets/bg.jpg") no-repeat;
background-size: 100% 100%;
width: 100vw;
height: 100vh;
min-height: 600px;
}
.login-body {
width: 90vw;
height: 90vh;
min-height: 400px;
.login-head {
color: white;
.title1 {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 10px;
}
.title2 {
font-size: 1.8rem;
margin-bottom: 2rem;
}
}
.login-body {
width: 90vw;
height: 90vh;
min-height: 400px;
.login-head{
color: white;
.title1{
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 10px;
}
.title2{
font-size: 1.8rem;
margin-bottom: 2rem;
.inner {
width: 100%;
max-height: 600px;
max-width: 1000px;
background: white;
padding: 2rem 2rem;
box-shadow: 3px 3px 10px rgba($color: #000, $alpha: 0.5);
border-radius: 10px;
font-size: 1rem;
.left {
img {
height: 40vh;
}
}
.inner{
width: 100%;
max-height: 600px;
max-width: 1000px;
background: white;
padding: 2rem 2rem;
box-shadow: 3px 3px 10px rgba($color: #000, $alpha: .5);
border-radius: 10px;
font-size: 1rem;
.left{
img{
height: 40vh;
}
.right {
width: 300px;
img {
height: 3.8rem;
width: auto;
margin-bottom: 3rem;
}
.right{
width: 300px;
img{
height: 3.8rem;
width: auto;
margin-bottom: 3rem;
}
.el-input{
width: 230px;
}
.el-button{
width: 230px;
font-weight: 600;
margin: 0 auto;
}
.el-input {
width: 230px;
}
.el-button {
width: 230px;
font-weight: 600;
margin: 0 auto;
}
}
}
.login-support{
/*margin-top: 3vh;*/
color: #fff;
width: 100%;
font-weight: 700;
font-size: 1.1rem;
text-align: center;
}
}
.login-support {
/*margin-top: 3vh;*/
color: #fff;
width: 100%;
font-weight: 700;
font-size: 1.1rem;
text-align: center;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment