3 changed files with 737 additions and 2 deletions
-
4src/views/deviceManage/map/indexv3.vue
-
267src/views/deviceManage/shelfManage/codeRules copy.vue
-
468src/views/deviceManage/shelfManage/codeRules.vue
@ -0,0 +1,267 @@ |
|||
<template> |
|||
<div class="app-container" style=" padding: 20px; height: calc(100vh - 140px); background-color: #fff;"> |
|||
<div style="display: flex; justify-content: flex-start;"> |
|||
<div class="code-rules-left"> |
|||
<div class="code-rules-content"> |
|||
<div |
|||
v-for="(item,index) in field" |
|||
:key="`position-${index}`" |
|||
class="rules-item" |
|||
:class="{ active: hoverIndex === index }" |
|||
@mouseenter="handleItemHover(index)" |
|||
@mouseleave="handleItemLeave" |
|||
> |
|||
<p>第{{ index+1 }}位</p> |
|||
<span v-if="index < field.length - 1" /> |
|||
</div> |
|||
</div> |
|||
<div class="code-rules-content code-rules-field"> |
|||
<div |
|||
v-for="(item, index) in field" |
|||
:key="`field-${index}`" |
|||
class="rules-item" |
|||
:class="{ active: hoverIndex === index }" |
|||
@mouseenter="handleItemHover(index)" |
|||
@mouseleave="handleItemLeave" |
|||
> |
|||
<p>{{ item.name }}</p> |
|||
<span v-if="index < field.length - 1">-</span> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="code-rules-right"> |
|||
<div class="code-rules-tip"> |
|||
<span style="display: block; padding-bottom: 6px; font-weight: bold;">说明:</span> |
|||
书架的层架位编码规则可根据图书馆现行方案进行设置。本系统默认的规则为:区-排-面-架-层。<br> |
|||
显示时可根据设置决定是否需要在编号第1位加入“机构编号”。 |
|||
</div> |
|||
<div |
|||
v-for="(item, index) in [...field].reverse()" |
|||
:key="`field-${index}`" |
|||
:class="['rules-item-remark', `remark-${index+1}`, { 'remark-active': hoverIndex === (field.length - 1 - index) }]" |
|||
@mouseenter="handleRemarkHover(field.length - 1 - index)" |
|||
@mouseleave="handleRemarkLeave" |
|||
> |
|||
<span>{{ item.name }}:</span> |
|||
<p v-html="item.remark" /> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="code-rules-setting" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: 'CodeRules', |
|||
data() { |
|||
return { |
|||
field: [ |
|||
{ name: '机构', remark: '可在本系统的“系统设置-机构管理”中进行设置。注意:一般因机构名称较长,中文显示时会省略。<br/> 例如:中文显示【智慧图书馆或不显示】、编号显示【FTZN】' }, |
|||
{ name: '区域', remark: '可在本系统的“场馆设备管理-区域管理”中进行设置。注意:区域编号不可重复!<br/>例如:中文显示【成人阅览室】、编号显示【01】' }, |
|||
{ name: '排', remark: '根据书架的实际位置设置。通常情况用3位数字进行标识,不足3位的在前面补“0”。 <br/>例如:中文显示【001排】、编号显示【001】' }, |
|||
{ name: '面', remark: ' 根据书架的实际情况设置。通常书架有两面(靠墙则为单面)。用字母A、B或数字1、2标识。 <br/>例如:中文显示【A面】、编号显示【A或1】' }, |
|||
{ name: '架/列', remark: '根据书架的实际情况设置。通常情况用2位数字进行标识,不足2位的在前面补“0”。<br/> 例如:中文显示【01架】、编号显示【01】' }, |
|||
{ name: '层', remark: '根据书架的实际情况设置。通常情况下书架为6层,用1位数字进行标识。 <br/>例如:中文显示【6层】、编号显示【6】' } |
|||
], |
|||
hoverIndex: -1 // 用于追踪当前悬停的索引 |
|||
} |
|||
}, |
|||
methods: { |
|||
// 处理备注项的鼠标进入事件 |
|||
handleRemarkHover(index) { |
|||
this.hoverIndex = index |
|||
}, |
|||
// 处理备注项的鼠标离开事件 |
|||
handleRemarkLeave() { |
|||
this.hoverIndex = -1 |
|||
}, |
|||
// 处理项目项的鼠标进入事件 |
|||
handleItemHover(index) { |
|||
this.hoverIndex = index |
|||
}, |
|||
// 处理项目项的鼠标离开事件 |
|||
handleItemLeave() { |
|||
this.hoverIndex = -1 |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.code-rules-left{ |
|||
width: 520px; |
|||
} |
|||
.code-rules-right{ |
|||
flex: 1; |
|||
margin-left: 30px; |
|||
} |
|||
.code-rules-content{ |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
text-align: center; |
|||
height: 36px; |
|||
line-height: 36px; |
|||
margin-bottom: 20px; |
|||
font-size: 14px; |
|||
.rules-item{ |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
text-align: center; |
|||
p{ |
|||
width: 70px; |
|||
background-color: #909399; |
|||
border:1px solid #909399; |
|||
color: #fff; |
|||
border-radius: 4px; |
|||
transition: all 0.3s ease; |
|||
} |
|||
span{ |
|||
display: block; |
|||
width: 20px; |
|||
} |
|||
&.active { |
|||
p { |
|||
border-color: #0348f3; |
|||
background-color: #0348f3; |
|||
} |
|||
} |
|||
&:hover { |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
} |
|||
.code-rules-field{ |
|||
.rules-item{ |
|||
p{ |
|||
background-color: transparent; |
|||
border-color: #545b65; |
|||
color: #545b65; |
|||
font-weight: bold; |
|||
} |
|||
&.active{ |
|||
p{ |
|||
border-color: #0348f3; |
|||
color: #fff; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.code-rules-tip{ |
|||
height: 93px; |
|||
padding: 6px 10px; |
|||
background-color: #eef5fe; |
|||
color: #545b65; |
|||
line-height: 24px; |
|||
border-left: 3px solid #0348f3; |
|||
font-size: 14px; |
|||
} |
|||
|
|||
.rules-item-remark{ |
|||
position: relative; |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
margin-top: 15px; |
|||
padding: 8px; |
|||
background-color: #eef5fe; |
|||
font-size: 14px; |
|||
line-height: 22px; |
|||
border-radius: 4px; |
|||
transition: all 0.3s ease; |
|||
&::before{ |
|||
content: ''; |
|||
position: absolute; |
|||
bottom: 30px; |
|||
width: 2px; |
|||
border-left: 1px dashed #9098a4; |
|||
} |
|||
&::after{ |
|||
content: ''; |
|||
position: absolute; |
|||
bottom: 30px; |
|||
height: 2px; |
|||
border-bottom: 1px dashed #9098a4; |
|||
} |
|||
span{ |
|||
display: block; |
|||
width: 46px; |
|||
} |
|||
&:hover, &.remark-active{ |
|||
cursor: pointer; |
|||
color: #fff; |
|||
background-color: #0348f3; |
|||
&::before{ |
|||
content: ''; |
|||
border-left: 1px dashed #0348f3; |
|||
} |
|||
&::after{ |
|||
content: ''; |
|||
border-bottom: 1px dashed #0348f3; |
|||
} |
|||
} |
|||
|
|||
&.remark-1{ |
|||
&::before{ |
|||
height: 45px; |
|||
left: -65px; |
|||
} |
|||
&::after{ |
|||
width: 65px; |
|||
left: -65px; |
|||
} |
|||
} |
|||
&.remark-2{ |
|||
&::before{ |
|||
height: 120px; |
|||
left: -155px; |
|||
} |
|||
&::after{ |
|||
width: 155px; |
|||
left: -155px; |
|||
} |
|||
} |
|||
&.remark-3{ |
|||
&::before{ |
|||
height: 195px; |
|||
left: -245px; |
|||
} |
|||
&::after{ |
|||
width: 245px; |
|||
left: -245px; |
|||
} |
|||
} |
|||
&.remark-4{ |
|||
&::before{ |
|||
height: 270px; |
|||
left: -336px; |
|||
} |
|||
&::after{ |
|||
width: 336px; |
|||
left: -336px; |
|||
} |
|||
} |
|||
&.remark-5{ |
|||
&::before{ |
|||
height: 345px; |
|||
left: -425px; |
|||
} |
|||
&::after{ |
|||
width: 425px; |
|||
left: -425px; |
|||
} |
|||
} |
|||
&.remark-6{ |
|||
&::before{ |
|||
height: 420px; |
|||
left: -514px; |
|||
} |
|||
&::after{ |
|||
width: 514px; |
|||
left: -514px; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,468 @@ |
|||
<template> |
|||
<div class="app-container" style=" padding: 20px; height: calc(100vh - 140px); background-color: #fff;"> |
|||
<div style="display: flex; justify-content: flex-start;"> |
|||
<div class="code-rules-left"> |
|||
<div class="code-rules-content"> |
|||
<div |
|||
v-for="(item,index) in field" |
|||
:key="`position-${index}`" |
|||
class="rules-item" |
|||
:class="{ active: hoverIndex === index }" |
|||
@mouseenter="handleItemHover(index)" |
|||
@mouseleave="handleItemLeave" |
|||
> |
|||
<p>第{{ index+1 }}位</p> |
|||
<span v-if="index < field.length - 1" /> |
|||
</div> |
|||
</div> |
|||
<div class="code-rules-content code-rules-field"> |
|||
<div |
|||
v-for="(item, index) in field" |
|||
:key="`field-${index}`" |
|||
class="rules-item" |
|||
:class="{ active: hoverIndex === index }" |
|||
|
|||
@mouseenter="handleItemHover(index)" |
|||
@mouseleave="handleItemLeave" |
|||
> |
|||
<p>{{ item.name }}</p> |
|||
<span v-if="index < field.length - 1">-</span> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="code-rules-right"> |
|||
<div class="code-rules-tip"> |
|||
<span style="display: block; padding-bottom: 6px; font-weight: bold;">说明:</span> |
|||
书架的层架位编码规则可根据图书馆现行方案进行设置。本系统默认的规则为:区-排-面-架-层。<br> |
|||
显示时可根据设置决定是否需要在编号第1位加入“机构编号”。 |
|||
</div> |
|||
<div |
|||
v-for="(item, index) in [...field].reverse()" |
|||
:key="`field-${index}`" |
|||
:style="{ |
|||
'--remark-left': -(65 + 89 * index) + 'px', |
|||
'--remark-height': 45 + 75 * index + 'px', |
|||
'--remark-width': Math.abs(65 + 89 * index) + 'px' |
|||
}" |
|||
:class="['rules-item-remark', { 'remark-active': hoverIndex === (field.length - 1 - index) }]" |
|||
@mouseenter="handleRemarkHover(field.length - 1 - index)" |
|||
@mouseleave="handleRemarkLeave" |
|||
> |
|||
<span>{{ item.name }}:</span> |
|||
<p v-html="item.remark" /> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<el-card class="code-rules-setting"> |
|||
<p class="setting-title">当前设置</p> |
|||
<ul class="setting-list"> |
|||
<li> |
|||
<span>中文显示规则:</span> |
|||
<p>区域-排-面-架/列-层</p> |
|||
</li> |
|||
<li> |
|||
<span>例如:</span> |
|||
<p>01区001排A面01架6层</p> |
|||
</li> |
|||
<li> |
|||
<span>编号显示规则:</span> |
|||
<p>机构-区域-排-面-架/列-层 </p> |
|||
</li> |
|||
<li> |
|||
<span>例如:</span> |
|||
<p>FTZN-01-001-A-01-6</p> |
|||
</li> |
|||
</ul> |
|||
<el-button size="mini" @click="toVerify('reset')"> |
|||
<i class="iconfont icon-zishebeiguanli" /> |
|||
规则设置 |
|||
</el-button> |
|||
</el-card> |
|||
|
|||
<el-dialog class="tip-dialog tip-middle-dialog" title="操作提示" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="verifyDialogVisible" :before-close="handleClose"> |
|||
<div class="setting-dialog"> |
|||
<div class="tip-content"> |
|||
<p class="tipMsg">这里为技术人员维护系统时使用,普通用户无需设置</p> |
|||
<p class="delt-tip"><span>注意:强行修改会导致数据异常或丢失!如果用户强行修改,本系统不负责因此导致的相关后果!</span></p> |
|||
</div> |
|||
<el-form ref="verfiyForm" :model="verfiyForm" style="margin-top:30px;" @submit.native.prevent> |
|||
<el-form-item label="维护验证码" label-width="110px"> |
|||
<el-input v-model="verfiyForm.verifyCode" show-password style="width: 480px;" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="handleClose">取消 </el-button> |
|||
<el-button type="primary" @click.native="handleConfirm">确定</el-button> |
|||
</div> |
|||
</div> |
|||
</el-dialog> |
|||
|
|||
<el-dialog title="规则设置" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="settingDialog" :before-close="handleClose"> |
|||
<div class="setting-dialog"> |
|||
<div class="setting-tip"><i class="iconfont icon-zhuyi-lan" /><span>“机构编码”只能显示在最前,其他项目可根据机构的现行规则修改显示顺序 (使用鼠标拖拽完成操作) !</span></div> |
|||
<el-checkbox v-model="isConnector">编号显示时加入连接字符“-”</el-checkbox> |
|||
|
|||
<div class="config-field"> |
|||
<div |
|||
v-for="(item,index) in field" |
|||
:key="index" |
|||
class="config-field-item" |
|||
:data-index="index" |
|||
> |
|||
{{ item.name }} |
|||
</div> |
|||
</div> |
|||
|
|||
<div style="padding: 10px; background-color: #eef5fe;"> |
|||
<p class="setting-title">当前设置</p> |
|||
<ul class="setting-list"> |
|||
<li> |
|||
<span>中文显示规则:</span> |
|||
<p>区域-排-面-架/列-层</p> |
|||
</li> |
|||
<li> |
|||
<span>例如:</span> |
|||
<p>01区001排A面01架6层</p> |
|||
</li> |
|||
<li> |
|||
<span>编号显示规则:</span> |
|||
<p>机构-区域-排-面-架/列-层 </p> |
|||
</li> |
|||
<li> |
|||
<span>例如:</span> |
|||
<p>FTZN-01-001-A-01-6</p> |
|||
</li> |
|||
</ul> |
|||
</div> |
|||
|
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="handleClose">取消 </el-button> |
|||
<el-button type="primary" @click.native="handleRulesConfirm">确定</el-button> |
|||
</div> |
|||
</div> |
|||
</el-dialog> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapGetters } from 'vuex' |
|||
import { encrypt } from '@/utils/rsaEncrypt' |
|||
import { verifyMaintenance } from '@/api/system/param' |
|||
import Sortable from 'sortablejs' |
|||
export default { |
|||
name: 'CodeRules', |
|||
data() { |
|||
return { |
|||
field: [ |
|||
{ id: 1, name: '机构', remark: '可在本系统的“系统设置-机构管理”中进行设置。注意:一般因机构名称较长,中文显示时会省略。<br/> 例如:中文显示【智慧图书馆或不显示】、编号显示【FTZN】' }, |
|||
{ id: 2, name: '区域', remark: '可在本系统的“场馆设备管理-区域管理”中进行设置。注意:区域编号不可重复!<br/>例如:中文显示【成人阅览室】、编号显示【01】' }, |
|||
{ id: 3, name: '排', remark: '根据书架的实际位置设置。通常情况用3位数字进行标识,不足3位的在前面补“0”。 <br/>例如:中文显示【001排】、编号显示【001】' }, |
|||
{ id: 4, name: '面', remark: ' 根据书架的实际情况设置。通常书架有两面(靠墙则为单面)。用字母A、B或数字1、2标识。 <br/>例如:中文显示【A面】、编号显示【A或1】' }, |
|||
{ id: 5, name: '架/列', remark: '根据书架的实际情况设置。通常情况用2位数字进行标识,不足2位的在前面补“0”。<br/> 例如:中文显示【01架】、编号显示【01】' }, |
|||
{ id: 6, name: '层', remark: '根据书架的实际情况设置。通常情况下书架为6层,用1位数字进行标识。 <br/>例如:中文显示【6层】、编号显示【6】' } |
|||
], |
|||
hoverIndex: -1, |
|||
verifyDialogVisible: false, |
|||
verfiyForm: { |
|||
verifyCode: '' |
|||
}, |
|||
verifyStatus: '', |
|||
showVerifyDialog: true, |
|||
settingDialog: true, |
|||
isConnector: false |
|||
} |
|||
}, |
|||
computed: { |
|||
...mapGetters([ |
|||
'baseApi' |
|||
]) |
|||
}, |
|||
mounted() { |
|||
this.$nextTick(() => { |
|||
this.draggableScreen() |
|||
}) |
|||
}, |
|||
methods: { |
|||
handleRemarkHover(index) { |
|||
this.hoverIndex = index |
|||
}, |
|||
handleRemarkLeave() { |
|||
this.hoverIndex = -1 |
|||
}, |
|||
handleItemHover(index) { |
|||
this.hoverIndex = index |
|||
}, |
|||
handleItemLeave() { |
|||
this.hoverIndex = -1 |
|||
}, |
|||
toVerify(btn) { |
|||
this.verifyStatus = btn |
|||
this.verifyDialogVisible = true |
|||
}, |
|||
handleConfirm() { |
|||
verifyMaintenance(encrypt(this.verfiyForm.verifyCode)).then((res) => { |
|||
if (res) { |
|||
this.verifyDialogVisible = false |
|||
this.verfiyForm.verifyCode = '' |
|||
this.showVerifyDialog = false |
|||
this.settingDialog = true |
|||
this.draggableScreen() |
|||
} else { |
|||
this.$message({ message: '验证码错误!', type: 'error', offset: 8 }) |
|||
} |
|||
}) |
|||
}, |
|||
draggableScreen() { |
|||
const container = document.querySelector('.config-field') |
|||
const that = this |
|||
let originalOrder = [...this.field.map(item => item.id)] |
|||
Sortable.create(container, { |
|||
draggable: '.config-field-item', |
|||
animation: 150, |
|||
onStart() { |
|||
originalOrder = [...that.field.map(item => item.id)] |
|||
}, |
|||
onEnd({ newIndex, oldIndex }) { |
|||
if (newIndex === oldIndex) return |
|||
|
|||
// 执行元素移动操作 |
|||
const movedItem = that.field.splice(oldIndex, 1)[0] |
|||
that.field.splice(newIndex, 0, movedItem) |
|||
|
|||
// 检查顺序是否真的发生了变化 |
|||
const newOrder = [...that.field.map(item => item.id)] |
|||
console.log('newOrder', newOrder) |
|||
if (!that.arraysEqual(originalOrder, newOrder)) { |
|||
// 顺序变化,提交show_screen数据 |
|||
// that.submitScreenOrderAndStatus() |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
arraysEqual(arr1, arr2) { |
|||
if (arr1.length !== arr2.length) return false |
|||
for (let i = 0; i < arr1.length; i++) { |
|||
if (arr1[i] !== arr2[i]) return false |
|||
} |
|||
return true |
|||
}, |
|||
handleRulesConfirm() { |
|||
this.$refs.form.validate((valid) => { |
|||
if (valid) { |
|||
const param = { |
|||
'code': 'preview_url', |
|||
'context': this.form.preview_url, |
|||
'remarks': null |
|||
} |
|||
console.log('param', param) |
|||
} else { |
|||
console.log('error submit!!') |
|||
return false |
|||
} |
|||
}) |
|||
}, |
|||
handleClose() { |
|||
if (this.$refs.verfiyForm) { |
|||
this.verfiyForm.verifyCode = '' |
|||
this.$refs.verfiyForm.resetFields() |
|||
this.verifyDialogVisible = false |
|||
} |
|||
this.settingDialog = false |
|||
if (this.$refs.form) { |
|||
|
|||
// this.form.preview_url = '' |
|||
// this.$refs.form.resetFields() |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.code-rules-left{ |
|||
// width: 520px; |
|||
} |
|||
.code-rules-right{ |
|||
flex: 1; |
|||
margin-left: 30px; |
|||
position: relative; |
|||
} |
|||
.code-rules-content{ |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
text-align: center; |
|||
height: 36px; |
|||
line-height: 36px; |
|||
margin-bottom: 20px; |
|||
font-size: 14px; |
|||
.rules-item{ |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
text-align: center; |
|||
p{ |
|||
width: 70px; |
|||
background-color: #909399; |
|||
border:1px solid #909399; |
|||
color: #fff; |
|||
border-radius: 4px; |
|||
transition: all 0.3s ease; |
|||
} |
|||
span{ |
|||
display: block; |
|||
width: 20px; |
|||
} |
|||
&.active { |
|||
p { |
|||
border-color: #0348f3; |
|||
background-color: #0348f3; |
|||
} |
|||
} |
|||
&:hover { |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
} |
|||
.code-rules-field{ |
|||
.rules-item{ |
|||
p{ |
|||
background-color: transparent; |
|||
border-color: #545b65; |
|||
color: #545b65; |
|||
font-weight: bold; |
|||
} |
|||
&.active{ |
|||
p{ |
|||
border-color: #0348f3; |
|||
color: #fff; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.code-rules-tip{ |
|||
height: 93px; |
|||
padding: 6px 10px; |
|||
background-color: #eef5fe; |
|||
color: #545b65; |
|||
line-height: 24px; |
|||
border-left: 3px solid #0348f3; |
|||
font-size: 14px; |
|||
} |
|||
|
|||
.rules-item-remark{ |
|||
position: relative; |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
margin-top: 15px; |
|||
padding: 8px; |
|||
background-color: #eef5fe; |
|||
font-size: 14px; |
|||
line-height: 22px; |
|||
border-radius: 4px; |
|||
transition: all 0.3s ease; |
|||
&::before { |
|||
content: ''; |
|||
position: absolute; |
|||
bottom: 30px; |
|||
width: 2px; |
|||
border-left: 1px dashed #9098a4; |
|||
left: var(--remark-left); |
|||
height: var(--remark-height); |
|||
} |
|||
|
|||
&::after { |
|||
content: ''; |
|||
position: absolute; |
|||
bottom: 30px; |
|||
height: 2px; |
|||
border-bottom: 1px dashed #9098a4; |
|||
left: var(--remark-left); |
|||
width: var(--remark-width); |
|||
} |
|||
span{ |
|||
display: block; |
|||
width: 46px; |
|||
} |
|||
&:hover, &.remark-active{ |
|||
cursor: pointer; |
|||
color: #fff; |
|||
background-color: #0348f3; |
|||
&::before{ |
|||
content: ''; |
|||
border-left: 1px dashed #0348f3; |
|||
} |
|||
&::after{ |
|||
content: ''; |
|||
border-bottom: 1px dashed #0348f3; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.code-rules-setting{ |
|||
position: relative; |
|||
padding: 20px; |
|||
margin-top: 40px; |
|||
|
|||
.el-button{ |
|||
position: absolute; |
|||
right: 20px; |
|||
bottom: 20px; |
|||
} |
|||
} |
|||
|
|||
.setting-title{ |
|||
color: #0c0e1e; |
|||
font-size: 16px; |
|||
font-weight: bold; |
|||
margin-bottom: 10px; |
|||
} |
|||
|
|||
.setting-list{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
width: 600px; |
|||
font-size: 14px; |
|||
li{ |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
line-height: 28px; |
|||
width: 50%; |
|||
span{ |
|||
display: block; |
|||
} |
|||
p{ |
|||
font-weight: bold; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.setting-tip{ |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
line-height: 26px; |
|||
span{ |
|||
display: inline-block; |
|||
font-size: 12px; |
|||
color: #545B65; |
|||
} |
|||
i{ |
|||
display: inline-block; |
|||
color: #0348F3; |
|||
} |
|||
} |
|||
|
|||
.config-field{ |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
} |
|||
|
|||
.config-field-item{ |
|||
width: 100px; |
|||
height: 100px; |
|||
border: 1px solid #0348F3; |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue