页面完善
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
<template>
|
||||
<div class="container_box">
|
||||
<!-- 头部 -->
|
||||
<div class="flex_box flex_row_between top_box">
|
||||
<div class="flex_box top_left">
|
||||
<div class="flex_box flex_row_center top_btn1">
|
||||
<div @click="showWork" class="flex_box flex_row_center top_btn1">
|
||||
<img src="@/assets/images/Plus1_icon.png" />
|
||||
<div>新建作业</div>
|
||||
</div>
|
||||
@@ -10,7 +11,7 @@
|
||||
<img src="@/assets/images/Search_icon.png" />
|
||||
<div>打开作业文件</div>
|
||||
</div>
|
||||
<div class="flex_box flex_row_center top_btn2">
|
||||
<div @click="$router.push({ path: '/manage' })" class="flex_box flex_row_center top_btn2">
|
||||
<img src="@/assets/images/Setting_icon.png" />
|
||||
<div>系统设置</div>
|
||||
</div>
|
||||
@@ -35,32 +36,286 @@
|
||||
</div>
|
||||
<div class="top_left_line"></div>
|
||||
</div>
|
||||
<div @click="goOut" class="flex_box top_right">
|
||||
<div class="top_right_name">你好,admin</div>
|
||||
<div class="top_right_btn">登出</div>
|
||||
<user-info></user-info>
|
||||
</div>
|
||||
<!-- 设备 -->
|
||||
<div class="flex_box device_box">
|
||||
<!-- 左侧 -->
|
||||
<div class="device_left">
|
||||
<div class="flex_box device_left_top">
|
||||
<img class="flex_shrink device_img" src="@/assets/images/device1.png" />
|
||||
<div class="flex_box flex_row_between device_info">
|
||||
<div class="device_info_box">
|
||||
<div class="device_info_main" :class="{'device_info_main1': infoStatus===1}">
|
||||
<div class="device_info_item">
|
||||
<div class="device_info_text">系统序列号:4F524201</div>
|
||||
<div class="device_info_text">主机名:DGF031</div>
|
||||
<div class="device_info_text">主机IP:192.168.1.25</div>
|
||||
<div class="device_info_text">缓存空间:123G(共200G)</div>
|
||||
</div>
|
||||
<div class="device_info_item">
|
||||
<div class="device_info_title">Disc Publisher 4200 Series</div>
|
||||
<div class="flex_box device_info_options">
|
||||
<div class="device_info_option">
|
||||
<div class="device_info_option_box">
|
||||
<img src="@/assets/images/device4.png" />
|
||||
</div>
|
||||
<div class="flex_box flex_row_center device_info_option_b">
|
||||
<div class="device_info_option_b_text">CD 5张</div>
|
||||
<i class="el-icon-caret-bottom"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="device_info_option">
|
||||
<div class="device_info_option_box">
|
||||
<img src="@/assets/images/device4.png" />
|
||||
</div>
|
||||
<div class="flex_box flex_row_center device_info_option_b">
|
||||
<div class="device_info_option_b_text">DVD 15张</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="device_info_option">
|
||||
<img class="device_info_option_img" src="@/assets/images/device5.png" />
|
||||
<div class="flex_box flex_row_center device_info_option_b">
|
||||
<div class="device_info_option_b_text">75%</div>
|
||||
<i class="el-icon-caret-bottom"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="device_info_right">
|
||||
<div @click="infoStatus=0" class="device_info_right_item">
|
||||
<img v-if="infoStatus===0" src="@/assets/images/Arrow_right_icon.png" />
|
||||
<img v-if="infoStatus===1" src="@/assets/images/Arrow_right1_icon.png" />
|
||||
</div>
|
||||
<div @click="infoStatus=1" class="device_info_right_item">
|
||||
<img v-if="infoStatus===1" src="@/assets/images/Arrow_left_icon.png" />
|
||||
<img v-if="infoStatus===0" src="@/assets/images/Arrow_left1_icon.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box device_status">
|
||||
<div class="device_status_dot"></div>
|
||||
<div class="device_status_text">{{runText}}</div>
|
||||
</div>
|
||||
<div class="flex_box device_run">
|
||||
<div class="flex_box device_run_input">
|
||||
<el-select v-model="runVal" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in runList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button type="primary" class="device_run_btn">执行</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 右侧 -->
|
||||
<div class="device_right">
|
||||
<div class="flex_box device_right_top">
|
||||
<div class="flex_box flex_row_between device_right_top_item">
|
||||
<img class="device_right_top_img" src="@/assets/images/device2.png" />
|
||||
<div class="device_right_top_content">
|
||||
<div class="device_right_top_title">BD驱动器(S)(顶部)</div>
|
||||
<div class="device_right_top_text">状态:插入光盘中</div>
|
||||
<div class="device_right_top_text">任务:文件刻录_20210323095213</div>
|
||||
<div class="device_right_top_text">光盘:56210323002</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="device_right_top_line"></div>
|
||||
<div class="flex_box flex_row_between device_right_top_item">
|
||||
<img class="device_right_top_img" src="@/assets/images/device2.png" />
|
||||
<div class="device_right_top_content">
|
||||
<div class="device_right_top_title">21032200009(H)(底部)</div>
|
||||
<div class="flex_box device_right_top_progress">
|
||||
<div class="device_right_top_progress_box" :style="{width: progressW+'%'}"></div>
|
||||
</div>
|
||||
<div class="device_right_top_text">15GB可用,共60GB</div>
|
||||
<div class="device_right_top_text">状态:插入光盘中</div>
|
||||
<div class="device_right_top_text">任务:文件刻录_20210323095213</div>
|
||||
<div class="device_right_top_text">光盘:56210323002</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="notice_box">
|
||||
<div class="flex_box flex_row_between notice_top">
|
||||
<div class="flex_box notice_title">
|
||||
<img src="@/assets/images/inform1_icon.png" />
|
||||
<div>动态</div>
|
||||
</div>
|
||||
<div class="flex_box notice_all">
|
||||
<img src="@/assets/images/Calendar_icon.png" />
|
||||
<div>全部日志</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="notice_list">
|
||||
<div v-for="(item, index) in noticeList" :key="index" class="flex_box flex_row_between notice_item">
|
||||
<div class="notice_content"><span>{{ index+1 }}</span>{{ item.message }}</div>
|
||||
<div class="notice_time">{{ item.createtime }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="device_box">
|
||||
|
||||
<!-- 作业队列 -->
|
||||
<div class="work_box">
|
||||
<div class="flex_box work_top">
|
||||
<div class="work_top_text">作业列表</div>
|
||||
</div>
|
||||
<el-table max-height="250" class="work_table" :data="workList" empty-text="暂无作业列表">
|
||||
<el-table-column type="index" width="50" label="序号"></el-table-column>
|
||||
<el-table-column prop="jId" label="作业ID"></el-table-column>
|
||||
<el-table-column prop="DataSource" label="作业来源"></el-table-column>
|
||||
<el-table-column prop="PrinterID" label="工作站"></el-table-column>
|
||||
<el-table-column prop="PrinterType" label="存储卡类型"></el-table-column>
|
||||
<el-table-column prop="TaskCapacity" label="拷贝数"></el-table-column>
|
||||
<el-table-column prop="CreateTime" label="开始时间"></el-table-column>
|
||||
<el-table-column prop="FinishTime" label="结束时间"></el-table-column>
|
||||
<el-table-column prop="JobCompletion" label="完成"></el-table-column>
|
||||
<el-table-column prop="JobStatus" label="状态">
|
||||
<template slot-scope="scope">
|
||||
<div class="flex_box work_status_box">
|
||||
<div>{{scope.row.JobStatus==1?'成功':'失败'}}</div>
|
||||
<i class="el-icon-caret-bottom"></i>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<!-- 底部 -->
|
||||
<div class="flex_box flex_row_center footer_box">
|
||||
<div>Copyright @ 2023 CARDSOON Corporation</div>
|
||||
<div class="footer_line"></div>
|
||||
<div class="footer_text">帮助</div>
|
||||
<div class="footer_line"></div>
|
||||
<div class="footer_text">关于我们</div>
|
||||
</div>
|
||||
|
||||
<!-- 新建作业 -->
|
||||
<work-add ref="workAdd"></work-add>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
let that
|
||||
import { mapGetters } from 'vuex'
|
||||
import UserInfo from '@/components/userInfo/userInfo.vue';
|
||||
import WorkAdd from '@/components/workAdd/workAdd.vue';
|
||||
|
||||
export default {
|
||||
name: 'dashboard',
|
||||
components: { UserInfo, WorkAdd },
|
||||
data() {
|
||||
return {
|
||||
workStatus: true
|
||||
// 设备运行状态
|
||||
workStatus: true,
|
||||
// 工作状态
|
||||
infoStatus: 0,
|
||||
runText: '设备门盖被打开,请关闭门盖。',
|
||||
runVal: 1,
|
||||
runList: [
|
||||
{
|
||||
value: 1,
|
||||
label: '检查打印机',
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
label: '打印机换纸',
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: '校准打印机',
|
||||
}
|
||||
],
|
||||
// 剩余容量
|
||||
progressW: 50,
|
||||
// 日志
|
||||
noticeList: [
|
||||
{
|
||||
id: 1,
|
||||
message: '《CRMEB 开源/标准版商城系统客服配置教程》',
|
||||
createtime: '2024 10-13'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
message: '《CRMEB 开源/标准版商城系统客服配置教程》',
|
||||
createtime: '2024 10-13'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
message: '《CRMEB 开源/标准版商城系统客服配置教程》',
|
||||
createtime: '2024 10-13'
|
||||
}
|
||||
],
|
||||
// 作业列表
|
||||
workList: [
|
||||
{
|
||||
ID: '1',
|
||||
jId: '202410145423408',
|
||||
DataSource: '127.0.0.1',
|
||||
PrinterID: '002A',
|
||||
PrinterType: '4GB丨2.0',
|
||||
TaskCapacity: '1GB278MB',
|
||||
CreateTime: '10-14 15:46:24',
|
||||
FinishTime: '10-14 16:10:01',
|
||||
JobCompletion: '5/10',
|
||||
JobStatus: '1'
|
||||
},
|
||||
{
|
||||
ID: '1',
|
||||
jId: '202410145423408',
|
||||
DataSource: '127.0.0.1',
|
||||
PrinterID: '002A',
|
||||
PrinterType: '4GB丨2.0',
|
||||
TaskCapacity: '1GB278MB',
|
||||
CreateTime: '10-14 15:46:24',
|
||||
FinishTime: '10-14 16:10:01',
|
||||
JobCompletion: '5/10',
|
||||
JobStatus: '1'
|
||||
},
|
||||
{
|
||||
ID: '1',
|
||||
jId: '202410145423408',
|
||||
DataSource: '127.0.0.1',
|
||||
PrinterID: '002A',
|
||||
PrinterType: '4GB丨2.0',
|
||||
TaskCapacity: '1GB278MB',
|
||||
CreateTime: '10-14 15:46:24',
|
||||
FinishTime: '10-14 16:10:01',
|
||||
JobCompletion: '5/10',
|
||||
JobStatus: '1'
|
||||
},
|
||||
{
|
||||
ID: '1',
|
||||
jId: '202410145423408',
|
||||
DataSource: '127.0.0.1',
|
||||
PrinterID: '002A',
|
||||
PrinterType: '4GB丨2.0',
|
||||
TaskCapacity: '1GB278MB',
|
||||
CreateTime: '10-14 15:46:24',
|
||||
FinishTime: '10-14 16:10:01',
|
||||
JobCompletion: '5/10',
|
||||
JobStatus: '1'
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['name', 'roles'])
|
||||
},
|
||||
mounted() {
|
||||
that = this
|
||||
},
|
||||
methods: {
|
||||
// 新建作业
|
||||
showWork() {
|
||||
that.$refs.workAdd.show()
|
||||
},
|
||||
// 退出登录
|
||||
goOut() {
|
||||
this.$store.dispatch('FedLogOut').then(() => {
|
||||
location.reload()// In order to re-instantiate the vue-router object to avoid bugs
|
||||
@@ -72,71 +327,72 @@ export default {
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.container_box {
|
||||
min-height: 100vh;
|
||||
background-color: #F8F8F8;
|
||||
height: 100vh;
|
||||
.top_box {
|
||||
height: 90px;
|
||||
padding: 0 48px;
|
||||
height: 78px;
|
||||
padding: 0 32px;
|
||||
background-color: #ffffff;
|
||||
.top_left {
|
||||
.top_btn1 {
|
||||
padding: 0 24px;
|
||||
height: 45px;
|
||||
cursor: pointer;
|
||||
padding: 0 16px;
|
||||
height: 30px;
|
||||
background: #00C325;
|
||||
border-radius: 6px;
|
||||
margin-right: 24px;
|
||||
margin-right: 16px;
|
||||
font-weight: 500;
|
||||
font-size: 21px;
|
||||
font-size: 15px;
|
||||
color: #FFFFFF;
|
||||
img {
|
||||
width: 27px;
|
||||
height: 27px;
|
||||
margin-right: 12px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
.top_btn2 {
|
||||
padding: 0 24px;
|
||||
height: 45px;
|
||||
cursor: pointer;
|
||||
padding: 0 16px;
|
||||
height: 30px;
|
||||
background: rgba(0,195,37,0.12);
|
||||
border: 2px solid rgba(0,195,37,0.32);
|
||||
border-radius: 6px;
|
||||
margin-right: 24px;
|
||||
margin-right: 16px;
|
||||
font-weight: 500;
|
||||
font-size: 21px;
|
||||
font-size: 15px;
|
||||
color: #00C325;
|
||||
img {
|
||||
width: 27px;
|
||||
height: 27px;
|
||||
margin-right: 12px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
.top_left_line {
|
||||
width: 2px;
|
||||
height: 45px;
|
||||
height: 30px;
|
||||
background: #E0E0E0;
|
||||
margin: 0 24px;
|
||||
margin: 0 16px;
|
||||
}
|
||||
.top_left_status {
|
||||
padding: 0 24px;
|
||||
transform: scale(1.6);
|
||||
padding: 0 16px;
|
||||
zoom: 1.3;
|
||||
}
|
||||
.top_left_option {
|
||||
margin-left: 24px;
|
||||
margin-left: 16px;
|
||||
.top_left_text {
|
||||
font-weight: 500;
|
||||
font-size: 21px;
|
||||
font-size: 15px;
|
||||
color: #000000;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.top_left_num {
|
||||
padding: 0 14px;
|
||||
height: 36px;
|
||||
padding: 0 10px;
|
||||
height: 28px;
|
||||
background: #00C325;
|
||||
border-radius: 6px;
|
||||
font-weight: 500;
|
||||
font-size: 21px;
|
||||
font-size: 15px;
|
||||
color: #FFFFFF;
|
||||
line-height: 36px;
|
||||
line-height: 28px;
|
||||
margin-left: 12px;
|
||||
}
|
||||
.top_left_num1 {
|
||||
@@ -144,20 +400,365 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
.top_right {
|
||||
.top_right_name {
|
||||
font-weight: 500;
|
||||
font-size: 21px;
|
||||
color: #000000;
|
||||
padding: 0 24px;
|
||||
}
|
||||
.device_box {
|
||||
padding: 16px;
|
||||
background-color: #F8F8F8;
|
||||
.device_left {
|
||||
width: 50%;
|
||||
padding: 0 45px;
|
||||
.device_left_top {
|
||||
margin-bottom: 24px;
|
||||
.device_img {
|
||||
width: 255px;
|
||||
height: 180px;
|
||||
margin-right: 35px;
|
||||
}
|
||||
.device_info {
|
||||
width: calc(100% - 290px);
|
||||
.device_info_box {
|
||||
width: calc(100% - 50px);
|
||||
overflow: hidden;
|
||||
.device_info_main {
|
||||
white-space: nowrap;
|
||||
transition: all 0.5s;
|
||||
.device_info_item {
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
.device_info_text {
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
line-height: 38px;
|
||||
}
|
||||
.device_info_title {
|
||||
font-weight: bold;
|
||||
font-size: 25px;
|
||||
color: #000000;
|
||||
line-height: 38px;
|
||||
margin-bottom: 42px;
|
||||
}
|
||||
.device_info_options {
|
||||
.device_info_option {
|
||||
margin-right: 30px;
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
.device_info_option_box {
|
||||
width: 84px;
|
||||
height: 67px;
|
||||
position: relative;
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.device_info_option_img {
|
||||
width: 118px;
|
||||
height: 67px;
|
||||
}
|
||||
.device_info_option_b {
|
||||
height: 30px;
|
||||
padding-top: 10px;
|
||||
font-size: 24px;
|
||||
.device_info_option_b_text {
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
color: #000000;
|
||||
}
|
||||
.el-icon-caret-bottom {
|
||||
transition: all 0.5s;
|
||||
}
|
||||
}
|
||||
.device_info_option_b1 {
|
||||
.el-icon-caret-bottom {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.device_info_main1 {
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
}
|
||||
.device_info_right {
|
||||
.device_info_right_item {
|
||||
width: 28px;
|
||||
padding: 8px 0;
|
||||
cursor: pointer;
|
||||
img {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.top_right_btn {
|
||||
font-weight: 500;
|
||||
font-size: 21px;
|
||||
.device_status {
|
||||
height: 44px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 24px;
|
||||
padding: 0 18px;
|
||||
.device_status_dot {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border-radius: 50%;
|
||||
background: #E54D4D;
|
||||
margin-right: 18px;
|
||||
}
|
||||
.device_status_text {
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #E54D4D;
|
||||
line-height: 30px;
|
||||
}
|
||||
}
|
||||
.device_run {
|
||||
width: 100%;
|
||||
height: 44px;
|
||||
overflow: hidden;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 5 9px 2px rgba(102,102,102,0.18);
|
||||
border-radius: 6px;
|
||||
.device_run_input {
|
||||
width: calc(100% - 140px);
|
||||
height: 44px;
|
||||
border: 2px solid #00BCC3;
|
||||
overflow: hidden;
|
||||
border-radius: 6px 0 0 6px;
|
||||
.el-select {
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
::v-deep {
|
||||
.el-input__inner {
|
||||
border: none;
|
||||
font-weight: 500;
|
||||
background-color: transparent;
|
||||
font-size: 20px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
color: #000000;
|
||||
}
|
||||
.el-input__icon {
|
||||
height: 40px;
|
||||
font-size: 20px;
|
||||
line-height: 40px;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.device_run_btn {
|
||||
width: 140px;
|
||||
height: 44px;
|
||||
background: #00BCC3;
|
||||
border-radius: 0px 6px 6px 0px;
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
margin: 0;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
.device_right {
|
||||
width: 50%;
|
||||
.device_right_top {
|
||||
height: 200px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 18px;
|
||||
padding: 0 24px;
|
||||
.device_right_top_item {
|
||||
width: calc(50% - 25px);
|
||||
.device_right_top_img {
|
||||
width: 116px;
|
||||
height: 101px;
|
||||
}
|
||||
.device_right_top_content {
|
||||
width: calc(100% - 136px);
|
||||
.device_right_top_title {
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
line-height: 34px;
|
||||
}
|
||||
.device_right_top_text {
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
line-height: 30px;
|
||||
}
|
||||
.device_right_top_progress {
|
||||
height: 18px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 3px;
|
||||
border: 2px solid #707070;
|
||||
margin: 2px 0 2px;
|
||||
.device_right_top_progress_box {
|
||||
width: 0;
|
||||
height: 15px;
|
||||
background: #00C325;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.device_right_top_line {
|
||||
width: 2px;
|
||||
height: 150px;
|
||||
background: #E1F5E5;
|
||||
margin: 0 24px;
|
||||
}
|
||||
}
|
||||
.notice_box {
|
||||
background: #FFFFFF;
|
||||
border-radius: 6px;
|
||||
.notice_top {
|
||||
height: 75px;
|
||||
padding: 0 30px;
|
||||
border-bottom: 2px solid #E1F5E5;
|
||||
.notice_title {
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
img {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
margin-right: 18px;
|
||||
}
|
||||
}
|
||||
.notice_all {
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #00C325;
|
||||
cursor: pointer;
|
||||
img {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
margin-right: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.notice_list {
|
||||
max-height: 200px;
|
||||
overflow-y: scroll;
|
||||
padding: 6px;
|
||||
::-webkit-scrollbar {
|
||||
width: 6px; /* 设置滚动条的宽度 */
|
||||
height: 6px;
|
||||
}
|
||||
/* 滚动条滑块样式 */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: #b5b5b5; /* 设置滑块背景颜色 */
|
||||
}
|
||||
/* 滚动条轨道hover状态样式 */
|
||||
::-webkit-scrollbar-track:hover {
|
||||
background-color: #efefef; /* 设置轨道hover状态时的背景颜色 */
|
||||
}
|
||||
/* 滚动条滑块hover状态样式 */
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: #b5b5b5; /* 设置滑块hover状态时的背景颜色 */
|
||||
}
|
||||
.notice_item {
|
||||
height: 42px;
|
||||
background-color: #F8F8F8;
|
||||
margin-bottom: 3px;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background-color: #FFE6E6;
|
||||
.notice_content,
|
||||
.notice_time {
|
||||
color: #FF0000;
|
||||
}
|
||||
}
|
||||
.notice_content {
|
||||
width: calc(100% - 108px);
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
line-height: 24px;
|
||||
span {
|
||||
display: inline-block;
|
||||
width: 42px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.notice_time {
|
||||
width: 108px;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
color: #000000;
|
||||
line-height: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.work_box {
|
||||
height: calc(100vh - 590px);
|
||||
.work_top {
|
||||
height: 72px;
|
||||
.work_top_text {
|
||||
width: 132px;
|
||||
height: 72px;
|
||||
background: linear-gradient( 180deg, #C1FFCD 0%, #FFFFFF 100%);
|
||||
font-weight: bold;
|
||||
font-size: 19px;
|
||||
color: #00C325;
|
||||
line-height: 72px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.work_table {
|
||||
background-color: #F8F8F8;
|
||||
::v-deep {
|
||||
tr {
|
||||
background-color: #F8F8F8;
|
||||
}
|
||||
td.el-table__cell {
|
||||
background-color: #F8F8F8;
|
||||
border-bottom: 3px solid #ffffff;
|
||||
}
|
||||
th.el-table__cell {
|
||||
background-color: #F2F9F4;
|
||||
border-bottom: 3px solid #ffffff;
|
||||
}
|
||||
.el-table__cell {
|
||||
padding: 6px 0;
|
||||
}
|
||||
.cell {
|
||||
line-height: 28px;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
.work_status_box {
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
color: #000000;
|
||||
height: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.footer_box {
|
||||
height: 36px;
|
||||
background: #DCF5E1;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
.footer_line {
|
||||
width: 2px;
|
||||
height: 14px;
|
||||
background-color: #666666;
|
||||
margin: 0 20px;
|
||||
}
|
||||
.footer_text {
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
color: #00C325;
|
||||
line-height: 50px;
|
||||
padding-left: 24px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="login-container">
|
||||
<img class="login_bg" src="@/assets/images/login_bg.png" />
|
||||
<img class="login_bg" src="@/assets/images/login_bg.jpg" />
|
||||
<div class="flex_box form_box">
|
||||
<el-form class="flex_box flex_col flex_row_center login-form" autoComplete="on" :model="loginForm" :rules="loginRules" ref="loginForm" label-position="left">
|
||||
<img class="login_logo" src="@/assets/images/logo.png" />
|
||||
@@ -81,6 +81,7 @@ export default {
|
||||
this.loading = true
|
||||
setToken('data.token')
|
||||
this.$store.commit('SET_TOKEN', 'data.token')
|
||||
// this.$store.dispatch('chat/initWebSocket') // 初始化websocket
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
this.$router.push({ path: '/' })
|
||||
@@ -186,6 +187,10 @@ $light_gray:#eee;
|
||||
}
|
||||
.login_check {
|
||||
::v-deep {
|
||||
.el-checkbox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.el-checkbox__inner {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
|
||||
@@ -0,0 +1,327 @@
|
||||
<template>
|
||||
<div class="container_box">
|
||||
<!-- 头部 -->
|
||||
<tab-bar :active="1"></tab-bar>
|
||||
<!-- 内容 -->
|
||||
<div class="form_box">
|
||||
<div class="form_item">
|
||||
<div class="flex_box form_title">
|
||||
<div class="flex_box flex_col">
|
||||
<div class="form_title_text">系统管理</div>
|
||||
<div class="form_title_line"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_content">
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">移动卡片到</div>
|
||||
<div class="form_val">
|
||||
<div class="flex_box flex_wrap form_tabs">
|
||||
<div v-for="(item, index) in moveList" :key="index" class="form_tab">{{ item.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">维护工作站</div>
|
||||
<div class="form_val">
|
||||
<div class="flex_box flex_wrap form_tabs">
|
||||
<div v-for="(item, index) in actionList" :key="index" class="form_tab">{{ item.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_item">
|
||||
<div class="flex_box form_title">
|
||||
<div class="flex_box flex_col">
|
||||
<div class="form_title_text">系统</div>
|
||||
<div class="form_title_line"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_content">
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">刷新时间</div>
|
||||
<div class="form_val">
|
||||
<div class="flex_box flex_col_top form_input">
|
||||
<el-input border="none" v-model="refreshTime" placeholder="请输入刷新时间"></el-input>
|
||||
<el-button type="primary">执行</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">休眠时间</div>
|
||||
<div class="form_val">
|
||||
<div class="flex_box flex_col_top form_input">
|
||||
<el-input border="none" v-model="refreshTime" placeholder="请输入刷新时间"></el-input>
|
||||
<el-button type="primary">执行</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">清除任务</div>
|
||||
<div class="form_val">
|
||||
<el-checkbox v-model="isDel">服务重启时是否删除已完成和已取消任务?</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_item">
|
||||
<div class="flex_box form_title">
|
||||
<div class="flex_box flex_col">
|
||||
<div class="form_title_text">语言</div>
|
||||
<div class="form_title_line"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_content">
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">切换语言</div>
|
||||
<div class="form_val">
|
||||
<div class="flex_box form_select">
|
||||
<el-select v-model="langVal" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in langList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import TabBar from '@/components/tabBar/tabBar.vue';
|
||||
|
||||
export default {
|
||||
name: 'manage',
|
||||
components: { TabBar },
|
||||
data() {
|
||||
return {
|
||||
moveList: [
|
||||
{
|
||||
id: 1,
|
||||
name: '读卡器'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '废卡盒'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: '出卡口'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: '等待'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: '待取口'
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
name: '后出卡口'
|
||||
}
|
||||
],
|
||||
actionList: [
|
||||
{
|
||||
id: 1,
|
||||
name: '重置工作站'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '重置工作站(有卡)'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: '核准色带灯'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: '初始化进卡槽'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: '清洁工作站'
|
||||
}
|
||||
],
|
||||
refreshTime: 3000,
|
||||
sleepTime: 300000,
|
||||
isDel: true,
|
||||
langVal: 'zhCN',
|
||||
langList: [
|
||||
{
|
||||
label: '简体中文',
|
||||
value: 'zhCN'
|
||||
},
|
||||
{
|
||||
label: 'English',
|
||||
value: 'en'
|
||||
},
|
||||
{
|
||||
label: '繁体中文',
|
||||
value: 'zhYW'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['name', 'roles'])
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.container_box {
|
||||
.form_box {
|
||||
padding: 0 32px;
|
||||
.form_item {
|
||||
padding: 10px 0;
|
||||
.form_title {
|
||||
border-bottom: 2px solid #E1F5E5;
|
||||
.form_title_text {
|
||||
font-weight: 500;
|
||||
font-size: 25px;
|
||||
color: #000000;
|
||||
line-height: 37px;
|
||||
}
|
||||
.form_title_line {
|
||||
width: 100%;
|
||||
height: 6px;
|
||||
background: #98E8A6;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
.form_content {
|
||||
padding: 10px 0;
|
||||
.form_option {
|
||||
padding: 16px 0;
|
||||
}
|
||||
.form_label {
|
||||
width: 140px;
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
}
|
||||
.form_val {
|
||||
max-width: 1100px;
|
||||
.form_tabs {
|
||||
.form_tab {
|
||||
width: 250px;
|
||||
height: 42px;
|
||||
cursor: pointer;
|
||||
background: rgba(0,195,37,0.12);
|
||||
border-radius: 4px;
|
||||
border: 1px solid rgba(0,195,37,0.32);
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #00C325;
|
||||
margin: 6px;
|
||||
}
|
||||
}
|
||||
.form_input {
|
||||
width: 500px;
|
||||
height: 42px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #98E8A6;
|
||||
overflow: hidden;
|
||||
::v-deep {
|
||||
.el-input__inner {
|
||||
width: 360px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
border: none;
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
}
|
||||
.el-input__icon {
|
||||
font-size: 19px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
.el-button {
|
||||
width: 140px;
|
||||
height: 40px;
|
||||
border: none;
|
||||
padding: 0;
|
||||
background: #00C325;
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.el-checkbox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.el-checkbox__inner {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
.el-checkbox__input.is-checked .el-checkbox__inner {
|
||||
background-color: #00C325;
|
||||
border-color: #00C325;
|
||||
}
|
||||
.el-checkbox__inner::after {
|
||||
width: 6px;
|
||||
height: 14px;
|
||||
left: 8px;
|
||||
}
|
||||
.el-checkbox__label {
|
||||
font-size: 24px;
|
||||
line-height: 24px;
|
||||
}
|
||||
.el-checkbox__input.is-checked+.el-checkbox__label {
|
||||
color: #00C325;
|
||||
}
|
||||
}
|
||||
.form_select {
|
||||
width: 500px;
|
||||
height: 42px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #98E8A6;
|
||||
.el-select {
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
::v-deep {
|
||||
.el-input__inner {
|
||||
border: none;
|
||||
font-weight: 500;
|
||||
background-color: transparent;
|
||||
font-size: 20px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
color: #000000;
|
||||
}
|
||||
.el-input__icon {
|
||||
font-size: 20px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,318 @@
|
||||
<template>
|
||||
<div class="container_box">
|
||||
<!-- 头部 -->
|
||||
<tab-bar :active="3"></tab-bar>
|
||||
<!-- 内容 -->
|
||||
<div class="form_box">
|
||||
<div class="form_item">
|
||||
<div class="flex_box form_title">
|
||||
<div class="flex_box flex_col">
|
||||
<div class="form_title_text">系统配置</div>
|
||||
<div class="form_title_line"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_content">
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">LogLevel</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_select">
|
||||
<el-select v-model="form.LogLevel" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in levelList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form_text">记录日志等级,建议用户设置为INFO</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">AutoRetryTimes</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_select">
|
||||
<el-select v-model="form.AutoRetryTimes" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in timesList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form_text">作业失败后重试次数,默认0为不重试</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">TaskDir</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_input">
|
||||
<el-input border="none" v-model="form.TaskDir" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
<div class="form_text">自动作业文件路径</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">SharedDir</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_input">
|
||||
<el-input border="none" v-model="form.SharedDir" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
<div class="form_text">作业缓存路径,存放作业中临时生成的内容文件、标签、合并图片、字段数据等</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">RejectConfig</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_switch">
|
||||
<el-switch active-color="#07C160" inactive-color="#aaa" v-model="form.RejectConfig"></el-switch>
|
||||
</div>
|
||||
<div class="form_text">出卡盒配置。默认勾选为正常出卡,取消勾选则从Reject出卡盒出卡</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">StopOnFailure</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_switch">
|
||||
<el-switch active-color="#07C160" inactive-color="#aaa" v-model="form.StopOnFailure"></el-switch>
|
||||
</div>
|
||||
<div class="form_text">作业失败后停止接受任务,默认不勾选</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">KeepCombinedImage</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_switch">
|
||||
<el-switch active-color="#07C160" inactive-color="#aaa" v-model="form.KeepCombinedImage"></el-switch>
|
||||
</div>
|
||||
<div class="form_text">是否保留作业临时图片和字段数据</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">CleanTaskFile</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_switch">
|
||||
<el-switch active-color="#07C160" inactive-color="#aaa" v-model="form.CleanTaskFile"></el-switch>
|
||||
</div>
|
||||
<div class="form_text">是否清除作业临时文件</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box form_option">
|
||||
<div class="form_label">UploadSharedDir</div>
|
||||
<div class="flex_box form_val">
|
||||
<div class="form_switch">
|
||||
<el-switch active-color="#07C160" inactive-color="#aaa" v-model="form.UploadSharedDir"></el-switch>
|
||||
</div>
|
||||
<div class="form_text">启用作业缓存路径,勾选后作业内容会先拷贝到缓存路径后再拷贝到存储卡</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex_box flex_row_center footer_btns">
|
||||
<el-button type="primary" class="footer_submit" @click="workSubmit">提交</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import TabBar from '@/components/tabBar/tabBar.vue';
|
||||
|
||||
export default {
|
||||
name: 'manage',
|
||||
components: { TabBar },
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
LogLevel: 'INFO',
|
||||
AutoRetryTimes: '2',
|
||||
TaskDir: 'D:\PrintTasks',
|
||||
SharedDir: 'D:\CardSoonRepo',
|
||||
RejectConfig: true,
|
||||
StopOnFailure: false,
|
||||
KeepCombinedImage: true,
|
||||
CleanTaskFile: false,
|
||||
UploadSharedDir: false,
|
||||
},
|
||||
levelList: [
|
||||
{
|
||||
label: 'TRACE',
|
||||
value: 'TRACE'
|
||||
},
|
||||
{
|
||||
label: 'DEBUG',
|
||||
value: 'DEBUG'
|
||||
},
|
||||
{
|
||||
label: 'INFO',
|
||||
value: 'INFO'
|
||||
},
|
||||
{
|
||||
label: 'WARNING',
|
||||
value: 'WARNING'
|
||||
},
|
||||
{
|
||||
label: 'ERROR',
|
||||
value: 'ERROR'
|
||||
},
|
||||
{
|
||||
label: 'FATAL',
|
||||
value: 'FATAL'
|
||||
}
|
||||
],
|
||||
timesList: [
|
||||
{
|
||||
label: '0',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '1',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
label: '2',
|
||||
value: '2'
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['name', 'roles'])
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.container_box {
|
||||
.form_box {
|
||||
padding: 0 32px;
|
||||
.form_item {
|
||||
padding: 10px 0;
|
||||
.form_title {
|
||||
border-bottom: 2px solid #E1F5E5;
|
||||
.form_title_text {
|
||||
font-weight: 500;
|
||||
font-size: 25px;
|
||||
color: #000000;
|
||||
line-height: 37px;
|
||||
}
|
||||
.form_title_line {
|
||||
width: 100%;
|
||||
height: 6px;
|
||||
background: #98E8A6;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
.form_content {
|
||||
padding: 10px 0;
|
||||
.form_option {
|
||||
padding: 16px 0;
|
||||
}
|
||||
.form_label {
|
||||
width: 300px;
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
}
|
||||
.form_val {
|
||||
.form_input {
|
||||
width: 300px;
|
||||
height: 42px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #98E8A6;
|
||||
overflow: hidden;
|
||||
::v-deep {
|
||||
.el-input__inner {
|
||||
width: 360px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
border: none;
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
}
|
||||
.el-input__icon {
|
||||
font-size: 20px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
.el-button {
|
||||
width: 140px;
|
||||
height: 40px;
|
||||
border: none;
|
||||
padding: 0;
|
||||
background: #00C325;
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form_switch {
|
||||
width: 300px;
|
||||
.el-switch {
|
||||
zoom: 1.4;
|
||||
}
|
||||
}
|
||||
|
||||
.form_select {
|
||||
width: 300px;
|
||||
height: 42px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #98E8A6;
|
||||
.el-select {
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
::v-deep {
|
||||
.el-input__inner {
|
||||
border: none;
|
||||
font-weight: 500;
|
||||
background-color: transparent;
|
||||
font-size: 20px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
color: #000000;
|
||||
}
|
||||
.el-input__icon {
|
||||
font-size: 20px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.form_text {
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #000000;
|
||||
padding-left: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.footer_btns {
|
||||
height: 80px;
|
||||
.footer_submit {
|
||||
width: 166px;
|
||||
height: 45px;
|
||||
background: #00C325;
|
||||
border-radius: 4px;
|
||||
font-weight: 500;
|
||||
font-size: 19px;
|
||||
color: #FFFFFF;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,86 @@
|
||||
<template>
|
||||
<div class="container_box">
|
||||
<!-- 头部 -->
|
||||
<tab-bar :active="2"></tab-bar>
|
||||
<div class="table_box">
|
||||
<el-table :data="userList">
|
||||
<el-table-column prop="ID" label="序号"></el-table-column>
|
||||
<el-table-column prop="userName" label="用户名"></el-table-column>
|
||||
<el-table-column prop="role" label="用户组"></el-table-column>
|
||||
<el-table-column prop="logintime" label="最后登录时间"></el-table-column>
|
||||
<el-table-column prop="status" label="状态">
|
||||
<template slot-scope="scope">
|
||||
<div class="table_status" :class="{'table_status1': scope.row.status === 1}">{{ scope.row.status === 1 ? '在线' : '离线' }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import TabBar from '@/components/tabBar/tabBar.vue';
|
||||
|
||||
export default {
|
||||
name: 'User',
|
||||
components: { TabBar },
|
||||
data() {
|
||||
return {
|
||||
userList: [
|
||||
{
|
||||
ID: '1',
|
||||
userName: 'admin',
|
||||
role: 'administrator',
|
||||
logintime: '2024-10-06 18:12:10',
|
||||
status: 1
|
||||
},
|
||||
{
|
||||
ID: '2',
|
||||
userName: '卡树测试',
|
||||
role: 'test',
|
||||
logintime: '2024-10-05 19:06:45',
|
||||
status: 0
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['name', 'roles'])
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.container_box {
|
||||
height: 100vh;
|
||||
.table_box {
|
||||
padding: 32px;
|
||||
.el-table {
|
||||
::v-deep {
|
||||
th.el-table__cell {
|
||||
background-color: #F2F9F4;
|
||||
}
|
||||
.el-table__cell {
|
||||
padding: 6px 0;
|
||||
}
|
||||
.cell {
|
||||
line-height: 28px;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
.table_status {
|
||||
font-weight: 500;
|
||||
color: #000000;
|
||||
}
|
||||
.table_status1 {
|
||||
color: #00C325;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user