页面完善

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
+845
View File
@@ -0,0 +1,845 @@
<template>
<div class="add_box">
<el-dialog center :visible.sync="addShow" width="80%" top="10vh" title="新建作业" :close-on-press-escape="false" :close-on-click-modal="false" :show-close="false">
<div @click="close" class="close_box">
<img src="@/assets/images/Close_icon.png" />
</div>
<div class="work_box">
<div class="flex_box flex_row_between work_top">
<div class="flex_box">
<div class="flex_box work_top_item">
<div class="work_top_label">容量</div>
<div class="work_top_val">
<el-select v-model="form.capacity" placeholder="请选择">
<el-option v-for="item in capacityList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</div>
</div>
<div class="flex_box work_top_item">
<div class="work_top_label">拷贝类型</div>
<div class="work_top_val">
<el-select v-model="form.copy" placeholder="请选择">
<el-option v-for="item in copyList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</div>
</div>
</div>
<el-popover v-model="setShow" placement="bottom-end" trigger="click">
<div class="set_box">
<div class="set_list">
<div class="flex_box set_item">
<div class="set_label">优先级</div>
<div class="set_val">
<el-select v-model="setForm.priority" placeholder="请选择">
<el-option v-for="item in priorityList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</div>
</div>
<div class="flex_box set_item">
<div class="set_label">目标工作站</div>
<div class="set_val">
<el-select v-model="setForm.stage" placeholder="请选择">
<el-option v-for="item in stageList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</div>
</div>
<div class="flex_box set_item">
<div class="set_label">刻录速率</div>
<div class="set_val">
<el-select v-model="setForm.speed" placeholder="请选择">
<el-option v-for="item in speedList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</div>
</div>
<div class="flex_box set_item">
<div class="set_label">刻录完成后校验光盘</div>
<div class="set_val">
<el-switch v-model="setForm.isCheck" active-color="#07C160" inactive-color="#aaa"> </el-switch>
</div>
</div>
<div class="flex_box set_item">
<div class="set_label">刻录完成后关闭光盘</div>
<div class="set_val">
<el-switch v-model="setForm.isClose" active-color="#07C160" inactive-color="#aaa"> </el-switch>
</div>
</div>
<div class="flex_box set_item">
<div class="set_label">刻录完成后删除缓存</div>
<div class="set_val">
<el-switch v-model="setForm.isDel" active-color="#07C160" inactive-color="#aaa"> </el-switch>
</div>
</div>
<div class="flex_box set_item">
<div class="set_label">作业失败打印标签</div>
<div class="set_val">
<el-switch v-model="setForm.isPrint" active-color="#07C160" inactive-color="#aaa"> </el-switch>
</div>
</div>
<div class="flex_box set_item">
<div class="set_label">允许跨盘</div>
<div class="set_val">
<el-switch v-model="setForm.isArrow" active-color="#07C160" inactive-color="#aaa"> </el-switch>
</div>
</div>
<div class="flex_box flex_col_top set_item">
<div class="set_label">分盘设置</div>
<div class="set_val">
<el-radio-group v-model="setForm.disk">
<el-radio :label="item.id" v-for="(item, index) in diskSet" :key="index">
<div class="set_disk_name">{{ item.name }}</div>
<div class="set_disk_desc">{{ item.desc }}</div>
</el-radio>
</el-radio-group>
</div>
</div>
</div>
<div class="flex_box flex_row_center set_btns">
<el-button @click="setCancel" class="set_btn1">取消</el-button>
<el-button @click="setSure" class="set_btn2" type="primary">确定</el-button>
</div>
</div>
<div class="flex_box work_top_set" slot="reference">
<img src="@/assets/images/Setting_icon.png" />
<div>高级作业设置</div>
</div>
</el-popover>
</div>
<div class="flex_box flex_col_top work_main">
<div class="work_left">
<div class="flex_box flex_row_between work_left_top">
<div class="flex_box">
<div class="work_left_top_label">内容</div>
<div @click="addFolder" class="flex_box work_left_top_btn">
<img src="@/assets/images/file_icon.png" />
<div>添加文件夹</div>
</div>
<div @click="addFile" class="flex_box work_left_top_btn">
<img src="@/assets/images/paper_icon.png" />
<div>添加文件</div>
</div>
</div>
<div class="work_left_top_input">
<el-input placeholder="请输入卷标" v-model="form.volume">
<template slot="prepend">卷标</template>
</el-input>
</div>
</div>
<div class="work_files">
<div class="work_files_box">
<!-- 空文件 -->
<file-empty v-if="!fileList.length"></file-empty>
</div>
<div class="work_files_progress">
<div class="work_files_progress_content" :style="{ width: fileProgess + '%' }"></div>
<div class="work_files_progress_text">0.0MB/0MB</div>
</div>
</div>
</div>
<div class="work_right">
<div class="flex_box work_right_top">
<div class="flex_box">
<div class="work_right_top_label">标签</div>
<el-select v-model="form.capacity" placeholder="选择一个标签或点击创建标签">
<el-option v-for="item in capacityList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
<div class="work_right_top_file">···</div>
</div>
<div class="work_right_top_add">新建标签</div>
</div>
<div class="wook_soon" :class="{ wook_soon1: !showList }">
<div class="flex_box flex_row_center wook_soon_top">
<img class="wook_soon_img" src="@/assets/images/soon.jpg" />
<div @click="showList = !showList" class="flex_box flex_row_center wook_soon_btn" :class="{ wook_soon_btn1: !showList }">
<img src="@/assets/images/Arrow_up_icon.png" />
</div>
</div>
<div class="wook_soon_list">
<div v-for="(item, index) in soonList" :key="index" class="flex_box wook_soon_item">
<div class="wook_soon_label">OUT_TEXT_4[正面]</div>
<div class="wook_soon_input">
<el-input v-model="item.value" placeholder="请输入"></el-input>
</div>
<div class="wook_soon_add">添加字段</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="flex_box flex_row_between footer_box">
<div class="flex_box footer_main">
<div class="footer_input">
<el-input placeholder="请输入数量" v-model="form.number">
<template slot="prepend">数量</template>
</el-input>
</div>
</div>
<div class="flex_box footer_btns">
<el-button type="primary" class="footer_save" @click="workSave">保存</el-button>
<el-button type="primary" class="footer_submit" @click="workSubmit">提交</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
const { dialog } = require('@electron/remote')
import { mapGetters } from 'vuex'
import fileEmpty from './files/fileEmpty'
export default {
name: 'UserInfo',
components: { fileEmpty },
data() {
return {
addShow: true,
form: {
number: 1,
capacity: 1,
copy: 1,
volume: '2024-10-17'
},
capacityList: [
{
value: 1,
label: '4GB'
},
{
value: 2,
label: '8GB'
},
{
value: 3,
label: '16GB'
}
],
copyList: [
{
value: 1,
label: '复制'
},
{
value: 2,
label: '打印'
},
{
value: 3,
label: '复制与打印'
}
],
// 文件列表
fileList: [],
fileProgess: 30,
// soon文件数据
soonList: [
{
label: '正面',
value: 'tj44545fsa13yt544r15e6h4r6'
},
{
label: '二维码',
value: 'soon'
}
],
showList: true,
setShow: false,
setForm: {
priority: 2,
stage: 0,
speed: 0,
isCheck: true,
isDel: true,
isClose: true,
isArrow: true,
isPrint: true,
disk: 1
},
priorityList: [
{
value: 1,
label: '低'
},
{
value: 2,
label: '正常'
},
{
value: 3,
label: '高'
}
],
stageList: [
{
value: 0,
label: '任何'
},
{
value: 1,
label: '002A工作站'
}
],
speedList: [
{
value: 0,
label: 'Auto'
},
{
value: 1,
label: '低'
},
{
value: 2,
label: '中'
},
{
value: 3,
label: '高'
}
],
diskSet: [
{
id: 1,
name: '文件大小',
desc: '按照文件大小进行排序分盘'
},
{
id: 2,
name: '文件名称',
desc: '按照文件名称进行升序分盘'
},
{
id: 3,
name: '文件修改时间',
desc: '按照文件修改时间进行升序分盘'
}
]
}
},
computed: {
...mapGetters(['name', 'roles'])
},
methods: {
// 选择文件
addFile() {
const _this = this
dialog
.showOpenDialog({
properties: ['multiSelections']
})
.then(async (res) => {
// for (const item of res.filePaths) {
// await fs.stat(item, function (err, res) {
// if (err) {
// return false
// }
// _this.insertList({
// name: getFileName(item),
// path: item,
// size: res.size,
// folder: false
// })
// })
// }
})
},
addFolder() {
const _this = this
dialog
.showOpenDialog({
properties: ['openDirectory', 'multiSelections']
})
.then((res) => {
// for (const item of res.filePaths) {
// const result = _this.insertList({
// name: getFileName(item),
// path: item,
// size: -1,
// folder: true
// })
// if (result) {
// calcSize(item, _this.folderCalcCallback)
// }
// }
})
},
// 保存
workSave() {
},
// 提交
workSubmit() {
},
show() {
this.addShow = true
},
close() {
this.addShow = false
},
// 高级设置
setCancel() {
this.setShow = false
},
setSure() {
this.setShow = false
}
}
}
</script>
<style lang="scss" scoped>
.add_box {
::v-deep {
.el-dialog {
border-radius: 6px;
box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.2);
.el-dialog__header {
padding: 28px 28px 18px 0 0;
.el-dialog__title {
font-size: 24px;
font-weight: 500;
color: #000;
}
}
.el-dialog__body {
padding: 0;
}
.el-dialog__footer {
padding: 0;
}
}
}
.close_box {
position: absolute;
z-index: 99;
top: 0;
right: 0;
cursor: pointer;
padding: 24px 24px 0 0;
img {
width: 28px;
height: 28px;
}
}
.work_box {
padding: 0 28px;
.work_top {
height: 80px;
.work_top_item {
margin-right: 50px;
.work_top_label {
font-weight: 500;
font-size: 19px;
color: #000000;
margin-right: 12px;
}
.work_top_val {
.el-input {
height: 32px;
line-height: 32px;
}
::v-deep {
.el-input__inner {
width: 180px;
height: 32px;
line-height: 32px;
font-size: 16px;
color: #000;
font-weight: 500;
}
.el-input__icon {
height: 32px;
line-height: 32px;
font-weight: bold;
color: #000;
}
}
}
}
.work_top_set {
cursor: pointer;
height: 36px;
padding: 0 22px;
background: rgba(0, 195, 37, 0.12);
border-radius: 4px;
border: 1px solid rgba(0, 195, 37, 0.32);
font-weight: 500;
font-size: 18px;
color: #00c325;
img {
width: 22px;
height: 22px;
margin-right: 10px;
}
}
}
.work_main {
background-color: #f8f8f8;
border-radius: 4px;
.work_left {
width: 50%;
border-right: 1px solid #aaaaaa;
padding: 0 16px 16px;
.work_left_top {
height: 72px;
.work_left_top_label {
font-size: 19px;
font-weight: 500;
color: #000;
padding-right: 18px;
}
.work_left_top_btn {
cursor: pointer;
height: 32px;
padding: 0 22px;
background: rgba(0, 195, 37, 0.12);
border-radius: 4px;
border: 1px solid rgba(0, 195, 37, 0.32);
font-weight: 500;
font-size: 16px;
color: #00c325;
margin-right: 22px;
img {
width: 20px;
height: 20px;
margin-right: 10px;
}
}
.work_left_top_input {
.el-input {
height: 32px;
line-height: 32px;
}
::v-deep {
.el-input-group__prepend {
font-size: 16px;
color: #000;
font-weight: 500;
}
.el-input__inner {
width: 180px;
height: 32px;
line-height: 32px;
font-size: 16px;
color: #000;
font-weight: 500;
}
.el-input__icon {
font-size: 16px;
height: 32px;
line-height: 32px;
font-weight: bold;
color: #000;
}
}
}
}
.work_files {
height: 500px;
cursor: pointer;
.work_files_box {
height: 478px;
overflow-y: scroll;
}
.work_files_progress {
height: 22px;
padding: 2px 0;
position: relative;
border-radius: 12px;
background-color: #ffe6e6;
.work_files_progress_content {
transition: all 0.5s;
width: 0;
height: 18px;
background: #e54d4d;
border-radius: 10px;
}
.work_files_progress_text {
font-weight: 500;
font-size: 10px;
color: #ffffff;
line-height: 22px;
padding-left: 16px;
position: absolute;
left: 0;
top: 0;
z-index: 8;
}
}
}
}
.work_right {
width: 50%;
padding: 0 16px 16px;
.work_right_top {
height: 76px;
.work_right_top_label {
font-size: 19px;
font-weight: 500;
color: #000;
padding-right: 18px;
}
::v-deep {
.el-input__inner {
width: 300px;
height: 32px;
line-height: 32px;
font-size: 16px;
color: #000;
font-weight: 500;
}
.el-input__icon {
font-size: 16px;
height: 32px;
line-height: 32px;
font-weight: bold;
color: #000;
}
}
.work_right_top_file {
width: 63px;
height: 32px;
cursor: pointer;
background: rgba(195, 189, 0, 0.12);
border-radius: 4px;
border: 1px solid rgba(182, 195, 0, 0.4);
font-weight: 500;
font-size: 16px;
color: #d9b028;
line-height: 32px;
text-align: center;
margin: 0 22px;
}
.work_right_top_add {
width: 123px;
height: 32px;
cursor: pointer;
background: #d8f6ff;
border-radius: 4px;
border: 1px solid #75d5f2;
font-weight: 500;
font-size: 16px;
color: #25aed9;
line-height: 32px;
text-align: center;
}
}
.wook_soon {
height: 500px;
.wook_soon_top {
height: 200px;
position: relative;
transition: all 0.5s;
.wook_soon_img {
height: 100%;
}
.wook_soon_btn {
position: absolute;
right: 0;
bottom: 10px;
width: 56px;
height: 56px;
z-index: 9;
background: #ffffff;
border-radius: 4px;
transition: all 0.5s;
cursor: pointer;
img {
width: 25px;
height: 16px;
}
}
.wook_soon_btn1 {
transform: rotate(180deg);
}
}
.wook_soon_list {
transition: all 0.5s;
margin-top: 18px;
height: 282px;
background: #ffffff;
border-radius: 2px;
border: 1px solid #eaeaea;
overflow-y: scroll;
padding: 0 22px;
.wook_soon_item {
height: 68px;
border-bottom: 2px solid #e1f5e5;
.wook_soon_label {
width: 200px;
font-weight: 500;
font-size: 16px;
color: #000000;
line-height: 28px;
}
.wook_soon_input {
width: 300px;
height: 32px;
border-radius: 4px;
::v-deep {
.el-input__inner {
width: 300px;
height: 32px;
line-height: 32px;
font-size: 16px;
color: #000;
font-weight: 500;
}
.el-input__icon {
font-size: 16px;
height: 32px;
line-height: 32px;
font-weight: bold;
color: #000;
}
}
}
.wook_soon_add {
width: 110px;
height: 32px;
cursor: pointer;
background: #d8f6ff;
border-radius: 4px;
border: 1px solid #75d5f2;
font-weight: 500;
font-size: 16px;
color: #25aed9;
line-height: 30px;
text-align: center;
margin-left: 30px;
}
}
}
}
.wook_soon1 {
.wook_soon_top {
height: 100%;
}
.wook_soon_list {
height: 0;
margin: 0;
border: none;
}
}
}
}
}
.footer_box {
height: 90px;
padding: 0 28px;
.footer_main {
.footer_input {
}
}
.footer_btns {
.footer_save {
width: 166px;
height: 45px;
background: #00bcc3;
border-radius: 4px;
font-weight: 500;
font-size: 19px;
color: #ffffff;
padding: 0;
margin-right: 22px;
}
.footer_submit {
width: 166px;
height: 45px;
background: #00c325;
border-radius: 4px;
font-weight: 500;
font-size: 19px;
color: #ffffff;
padding: 0;
}
}
}
}
// 高级设置
.set_box {
.set_list {
padding: 24px;
.set_item {
padding: 10px 0;
.set_label {
width: 180px;
font-weight: 500;
font-size: 16px;
color: #000000;
line-height: 32px;
text-align: right;
padding-right: 12px;
}
.set_val {
::v-deep {
.el-input__inner {
width: 180px;
height: 32px;
line-height: 32px;
font-size: 16px;
color: #000;
font-weight: 500;
}
.el-input__icon {
height: 32px;
line-height: 32px;
font-weight: bold;
color: #000;
}
}
.el-switch {
zoom: 1.3;
}
.el-radio-group {
padding: 10px 0;
.el-radio {
display: flex;
.set_disk_name {
font-weight: 500;
font-size: 16px;
color: #000000;
line-height: 16px;
margin-bottom: 4px;
}
.set_disk_desc {
font-weight: 500;
font-size: 13px;
color: #666666;
line-height: 20px;
padding-bottom: 10px;
}
}
}
}
}
}
.set_btns {
border-top: 1px solid #e1f5e5;
height: 62px;
.set_btn1 {
width: 120px;
height: 32px;
background: #ffffff;
border-radius: 4px;
border: 1px solid #000000;
font-weight: 500;
font-size: 16px;
color: #000000;
padding: 0;
margin: 0 12px;
}
.set_btn2 {
width: 120px;
height: 32px;
background: #00c325;
border-radius: 4px;
font-weight: 500;
font-size: 16px;
padding: 0;
margin: 0 12px;
}
}
}
</style>