页面完善

This commit is contained in:
24kycj
2024-11-07 17:06:51 +08:00
parent d375616372
commit ca1a2e11b5
58 changed files with 5467 additions and 837 deletions
+650 -49
View File
@@ -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">主机IP192.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;
}
}
}
+6 -1
View File
@@ -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;
+327
View File
@@ -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>
+318
View File
@@ -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>
+86
View File
@@ -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>