调整引导与帮助等

This commit is contained in:
24kycj
2025-11-15 14:01:39 +08:00
parent 4a412ea668
commit ba25ad48f0
5 changed files with 1185 additions and 447 deletions
+50
View File
@@ -228,4 +228,54 @@ export default {
color: #fff;
}
}
// 引导样式
.guide_body {
position: relative;
z-index: 200;
background-color: #fff;
padding: 0 10px;
border-radius: 4px;
border: 1px dashed #2e9bfb;
height: 100%;
}
.guide_box {
border: 1px dashed #2e9bfb;
padding: 12px;
.guide_title {
font-weight: bold;
font-size: 16px;
color: #000000;
line-height: 30px;
span {
font-size: 13px;
color: #999;
font-weight: 400;
}
}
.guide_desc {
font-size: 13px;
color: #000000;
line-height: 24px;
a {
color: #2e9bfb;
cursor: pointer;
}
}
.guide_btns {
padding: 10px 0 0;
display: flex;
align-items: center;
justify-content: end;
.guide_btn1 {
color: #999;
}
.guide_btn2 {
background-color: #2e9bfb;
border: none;
}
}
}
.el-popover {
padding: 0;
}
</style>
+307 -166
View File
@@ -4,194 +4,272 @@
:close-on-click-modal="false" :show-close="false">
<div class="work_body" v-loading="submitLoading" element-loading-text="正在准备任务,您也可以直接右上角关闭作业窗口"
element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)">
<div
v-if="currentStep && parseInt(currentStep) >= 8"
class="bg_box"
style="position: absolute; top: 0; left: 0; z-index: 10; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5)"></div>
<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.cd_type" placeholder="请选择">
<el-option v-for="item in cd_types" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-popover v-if="guideStep" :placement="guideStep[8].placement" width="250" trigger="manual"
v-model="guideStep[8].show">
<div class="guide_box">
<div class="guide_title">新手引导<span>{{ parseInt(currentStep) + 1 }}/{{ guideStep.length }}</span>
</div>
<div class="guide_desc">{{ guideStep[8].step }}</div>
<div class="guide_btns">
<el-button @click="exitGuide" class="guide_btn1" size="mini" type="text">跳过引导</el-button>
<el-button v-if="parseInt(currentStep) > 0" @click="prevStep" class="guide_btn1" size="mini">上一步</el-button>
<el-button @click="nextStep" class="guide_btn2" size="mini" type="primary">{{ currentStep ==
guideStep.length
- 1 ? '完成引导' : '下一步' }}</el-button>
</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_type" 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" @show="initSet">
<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 set_item">
<div class="set_label">是否虚拟刻录</div>
<div class="set_val">
<el-switch v-model="setForm.is_sim" active-color="#07C160" inactive-color="#aaa"> </el-switch>
</div>
</div>
<div v-if="setForm.isArrow" 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 class="flex_box" slot="reference" :class="{ 'guide_body': currentStep == 8}">
<div class="flex_box work_top_item">
<div class="work_top_label">光盘类型</div>
<div class="work_top_val">
<el-select v-model="form.cd_type" placeholder="请选择">
<el-option v-for="item in cd_types" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</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 class="flex_box work_top_item">
<div class="work_top_label">任务类型</div>
<div class="work_top_val">
<el-select v-model="form.copy_type" placeholder="请选择">
<el-option v-for="item in copyList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
</div>
</div>
<div class="flex_box work_top_set" slot="reference">
<img src="@/assets/images/Setting_icon.png" />
<div>高级作业设置</div>
</div>
</el-popover>
<template v-if="!currentStep || currentStep < 8">
<el-popover v-model="setShow" placement="bottom-end" trigger="click" @show="initSet">
<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 set_item">
<div class="set_label">是否虚拟刻录</div>
<div class="set_val">
<el-switch v-model="setForm.is_sim" active-color="#07C160" inactive-color="#aaa"> </el-switch>
</div>
</div>
<div v-if="setForm.isArrow" 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>
</template>
<template v-else>
<el-popover v-if="guideStep" :placement="guideStep[11].placement" width="250" trigger="manual"
v-model="guideStep[11].show">
<div class="guide_box">
<div class="guide_title">新手引导<span>{{ parseInt(currentStep) + 1 }}/{{ guideStep.length }}</span>
</div>
<div class="guide_desc">{{ guideStep[11].step }}</div>
<div class="guide_btns">
<el-button @click="exitGuide" class="guide_btn1" size="mini" type="text">跳过引导</el-button>
<el-button v-if="parseInt(currentStep) > 0" @click="prevStep" class="guide_btn1" size="mini">上一步</el-button>
<el-button @click="nextStep" class="guide_btn2" size="mini" type="primary">{{ currentStep ==
guideStep.length
- 1 ? '完成引导' : '下一步' }}</el-button>
</div>
</div>
<div slot="reference" :class="{ 'guide_body': currentStep == 11}">
<div class="flex_box work_top_set">
<img src="@/assets/images/Setting_icon.png" />
<div>高级作业设置</div>
</div>
</div>
</el-popover>
</template>
</div>
<div class="flex_box flex_col_top work_main">
<div class="work_left">
<div v-if="form.copy_type == 3 || form.copy_type == 4" class="flex_box flex_row_center work_no">
<img src="@/assets/images/ElBanCircle.png" />
</div>
<div class="flex_box flex_row_between work_left_top">
<div class="flex_box">
<div class="work_left_top_label">内容</div>
<div v-if="form.copy_type !== 2" @click="addFolder" class="flex_box work_left_top_btn">
<img src="@/assets/images/file_icon.png" />
<div>添加文件夹</div>
<el-popover v-if="guideStep" :placement="guideStep[9].placement" width="250" trigger="manual"
v-model="guideStep[9].show">
<div class="guide_box">
<div class="guide_title">新手引导<span>{{ parseInt(currentStep) + 1 }}/{{ guideStep.length }}</span>
</div>
<div @click="addFile" class="flex_box work_left_top_btn">
<img src="@/assets/images/paper_icon.png" />
<div>添加文件</div>
<div class="guide_desc">{{ guideStep[9].step }}</div>
<div class="guide_btns">
<el-button @click="exitGuide" class="guide_btn1" size="mini" type="text">跳过引导</el-button>
<el-button v-if="parseInt(currentStep) > 0" @click="prevStep" class="guide_btn1" size="mini">上一步</el-button>
<el-button @click="nextStep" class="guide_btn2" size="mini" type="primary">{{ currentStep ==
guideStep.length
- 1 ? '完成引导' : '下一步' }}</el-button>
</div>
</div>
<div @contextmenu.prevent="showContextMenu" class="work_left_top_input">
<el-input placeholder="请输入卷标" v-model="form.label">
<template slot="prepend">卷标</template>
</el-input>
<div slot="reference" :class="{ 'guide_body': currentStep == 9}">
<div v-if="form.copy_type == 3 || form.copy_type == 4" class="flex_box flex_row_center work_no">
<img src="@/assets/images/ElBanCircle.png" />
</div>
<div class="flex_box flex_row_between work_left_top">
<div class="flex_box">
<div class="work_left_top_label">内容</div>
<div v-if="form.copy_type !== 2" @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 @contextmenu.prevent="showContextMenu" class="work_left_top_input">
<el-input placeholder="请输入卷标" v-model="form.label">
<template slot="prepend">卷标</template>
</el-input>
</div>
</div>
<div class="work_files">
<div class="work_files_box">
<!-- 文件列表 -->
<files ref="files" :copyType="form.copy_type" :onSizechange="sizeChange" :complete="upload_over"></files>
</div>
<div class="work_files_progress">
<el-progress :text-inside="true" :percentage="file_percent" :format="format"
:color="customColors"></el-progress>
</div>
</div>
</div>
</div>
<div class="work_files">
<div class="work_files_box">
<!-- 文件列表 -->
<files ref="files" :copyType="form.copy_type" :onSizechange="sizeChange" :complete="upload_over"></files>
</div>
<div class="work_files_progress">
<el-progress :text-inside="true" :percentage="file_percent" :format="format"
:color="customColors"></el-progress>
</div>
</div>
</el-popover>
</div>
<div class="work_right">
<!-- <div v-if="form.copy_type == 3" class="flex_box flex_row_center work_no">
<img src="@/assets/images/ElBanCircle.png" />
</div> -->
<div class="flex_box work_right_top">
<div class="flex_box">
<div class="work_right_top_label">标签</div>
<el-select @change="changeTemplate" v-model="currentTemplate" placeholder="选择一个标签或点击创建标签">
<el-option v-for="item in templates" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-tooltip content="选择更多模版" placement="bottom">
<div @click="openFile" class="work_right_top_file">···</div>
</el-tooltip>
</div>
<div @click="openDesign" 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="soonImg" />
<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" />
<el-popover v-if="guideStep" :placement="guideStep[10].placement" width="250" trigger="manual"
v-model="guideStep[10].show">
<div class="guide_box">
<div class="guide_title">新手引导<span>{{ parseInt(currentStep) + 1 }}/{{ guideStep.length }}</span>
</div>
<div class="guide_desc">{{ guideStep[10].step }}</div>
<div class="guide_btns">
<el-button @click="exitGuide" class="guide_btn1" size="mini" type="text">跳过引导</el-button>
<el-button v-if="parseInt(currentStep) > 0" @click="prevStep" class="guide_btn1" size="mini">上一步</el-button>
<el-button @click="nextStep" class="guide_btn2" size="mini" type="primary">{{ currentStep ==
guideStep.length
- 1 ? '完成引导' : '下一步' }}</el-button>
</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">{{ item.name }}</div>
<div class="wook_soon_input">
<div v-if="item.type == 1">
<input type="file" accept="image/*" :ref="item.origin_name" :data-name="item.origin_name" />
</div>
<div v-if="item.type == 3 || item.type == 4 || item.type == 5">
<el-input clearable :disabled="csvIsExist" v-model="item.val" placeholder="请输入"></el-input>
<div slot="reference" :class="{ 'guide_body': currentStep == 10}">
<!-- <div v-if="form.copy_type == 3" class="flex_box flex_row_center work_no">
<img src="@/assets/images/ElBanCircle.png" />
</div> -->
<div class="flex_box work_right_top">
<div class="flex_box">
<div class="work_right_top_label">标签</div>
<el-select @change="changeTemplate" v-model="currentTemplate" placeholder="选择一个标签或点击创建标签">
<el-option v-for="item in templates" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-tooltip content="选择更多模版" placement="bottom">
<div @click="openFile" class="work_right_top_file">···</div>
</el-tooltip>
</div>
<div @click="openDesign" 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="soonImg" />
<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 @click="openFile2" v-if="item.type == 3 || item.type == 4 || item.type == 5"
class="wook_soon_add">添加字段
<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">{{ item.name }}</div>
<div class="wook_soon_input">
<div v-if="item.type == 1">
<input type="file" accept="image/*" :ref="item.origin_name" :data-name="item.origin_name" />
</div>
<div v-if="item.type == 3 || item.type == 4 || item.type == 5">
<el-input clearable :disabled="csvIsExist" v-model="item.val" placeholder="请输入"></el-input>
</div>
</div>
<div @click="openFile2" v-if="item.type == 3 || item.type == 4 || item.type == 5"
class="wook_soon_add">添加字段
</div>
</div>
</div>
</div>
</div>
</div>
</el-popover>
</div>
</div>
</div>
@@ -209,10 +287,25 @@
</el-input>
</div>
</div>
<div class="flex_box footer_btns">
<el-button type="primary" class="footer_save" @click="workSave" :loading="saveFlag">保存</el-button>
<el-button type="primary" class="footer_submit" @click="workSubmit" :loading="submitFlag">提交</el-button>
</div>
<el-popover v-if="guideStep" :placement="guideStep[12].placement" width="250" trigger="manual"
v-model="guideStep[12].show">
<div class="guide_box">
<div class="guide_title">新手引导<span>{{ parseInt(currentStep) + 1 }}/{{ guideStep.length }}</span>
</div>
<div class="guide_desc">{{ guideStep[12].step }}</div>
<div class="guide_btns">
<el-button @click="exitGuide" class="guide_btn1" size="mini" type="text">跳过引导</el-button>
<el-button v-if="parseInt(currentStep) > 0" @click="prevStep" class="guide_btn1" size="mini">上一步</el-button>
<el-button @click="nextStep" class="guide_btn2" size="mini" type="primary">{{ currentStep ==
guideStep.length
- 1 ? '完成引导' : '下一步' }}</el-button>
</div>
</div>
<div class="flex_box footer_btns" slot="reference" :class="{ 'guide_body': currentStep == 12}">
<el-button type="primary" class="footer_save" @click="workSave" :loading="saveFlag">保存</el-button>
<el-button type="primary" class="footer_submit" @click="workSubmit" :loading="submitFlag">提交</el-button>
</div>
</el-popover>
</div>
</div>
<!-- 上传文件区域 -->
@@ -425,6 +518,9 @@ export default {
}
],
cdList: [],
// 新手引导
guideStep: null,
currentStep: 0,
}
},
watch: {
@@ -547,7 +643,15 @@ export default {
if (setForm) {
this.$store.dispatch('setDatas', { name: 'setForm', data: JSON.parse(setForm) })
}
// 新手引导
this.guideStep = JSON.parse(localStorage.getItem('guideStep'))
this.currentStep = localStorage.getItem('currentStep')
if (this.guideStep[this.currentStep]) {
this.guideStep[this.currentStep].show = false
setTimeout(() => {
this.guideStep[this.currentStep].show = true
}, 200)
}
},
methods: {
// 右键事件
@@ -1043,7 +1147,44 @@ export default {
initSet() {
this.setForm = { ...this.$store.state.user.setForm }
console.log(this.$store.state.user.setForm)
}
},
// 退出新手引导
exitGuide() {
for (let key in this.guideStep) {
this.guideStep[key].show = false
}
this.currentStep = -1
localStorage.setItem('currentStep', this.currentStep)
localStorage.setItem('guideStep', JSON.stringify(this.guideStep))
this.close()
},
// 上一步
prevStep(e) {
this.guideStep[this.currentStep].show = false
this.currentStep = parseInt(this.currentStep) - 1
if (this.guideStep[this.currentStep]) {
this.guideStep[this.currentStep].show = true
localStorage.setItem('guideStep', JSON.stringify(this.guideStep))
localStorage.setItem('currentStep', this.currentStep)
if (this.currentStep == 7) {
this.close()
}
} else {
this.exitGuide()
}
},
// 下一步
nextStep(e) {
this.guideStep[this.currentStep].show = false
this.currentStep = parseInt(this.currentStep) + 1
if (this.guideStep[this.currentStep]) {
this.guideStep[this.currentStep].show = true
localStorage.setItem('guideStep', JSON.stringify(this.guideStep))
localStorage.setItem('currentStep', this.currentStep)
} else {
this.exitGuide()
}
},
}
}
</script>
+1
View File
@@ -213,6 +213,7 @@ const defaultData = {
lack_ink: 0, // 缺墨警告
cover_flag: false, //是否盖盖
printer_name: '', //设备名称
printer_path: '', //设备路径
printer_status: 'I', //设备状态 数字转成字符为I
printer_tray: 'I', //设备托盘状态 数字转成字符为I
red_last: 0, //红色墨盒遗留
File diff suppressed because it is too large Load Diff