<template>
|
<GlobalWindow
|
:title="title"
|
width="60%"
|
:visible.sync="visible"
|
@confirm="confirm"
|
>
|
<div class="Analysis">
|
<span>请根据使用习惯自定义常用功能,支持拖动排</span>
|
<draggable v-model="filterList" chosenClass="chosen" forceFallback="true" group="people" animation="1000">
|
<transition-group class="dra">
|
<div class="list" v-for="(item, index) in filterList" :key="index">
|
<div class="list_checkbox">
|
<el-checkbox v-model="item.checked"> </el-checkbox>
|
</div>
|
<img :src="item.icoPath" />
|
<div class="list_title">{{ item.name }}</div>
|
</div>
|
</transition-group>
|
</draggable>
|
</div>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import { updMyYwQuickModel, getDefaultYwQuickList } from '@/api/ywWorkDesk'
|
import draggable from 'vuedraggable'
|
export default {
|
name: 'commonFunctions',
|
extends: BaseOpera,
|
components: { GlobalWindow, draggable },
|
data () {
|
return {
|
filterList: []
|
}
|
},
|
methods: {
|
open (title) {
|
this.title = title
|
getDefaultYwQuickList({})
|
.then(res => {
|
res.forEach(item => {
|
item.checked = false
|
})
|
this.filterList = res
|
this.visible = true
|
})
|
},
|
confirm () {
|
this.isWorking = true
|
let arr = this.filterList.filter(item => item.checked)
|
updMyYwQuickModel(arr.map(item => item.id))
|
.then(() => {
|
this.visible = false
|
this.$tip.apiSuccess('修改成功')
|
this.$emit('success')
|
})
|
.finally(() => {
|
this.isWorking = false
|
})
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.Analysis {
|
width: 100%;
|
margin-top: 20px;
|
display: flex;
|
flex-direction: column;
|
span {
|
font-weight: 400;
|
font-size: 14px;
|
color: #333333;
|
margin-bottom: 20px;
|
}
|
.dra {
|
display: flex;
|
flex-wrap: wrap;
|
justify-content: space-between;
|
}
|
.list {
|
cursor: pointer;
|
display: flex;
|
align-items: center;
|
width: 24%;
|
height: 80px;
|
background: #FFFFFF;
|
border-radius: 8px;
|
border: 1px solid #DFE2E8;
|
margin-bottom: 10px;
|
padding: 0 20px;
|
box-sizing: border-box;
|
position: relative;
|
.list_checkbox {
|
position: absolute;
|
right: 10px;
|
top: 10px;
|
}
|
img {
|
width: 40px;
|
height: 40px;
|
user-select: none;
|
margin-right: 10px;
|
}
|
.list_title {
|
width: 130px;
|
font-size: 11px;
|
user-select: none;
|
}
|
}
|
}
|
</style>
|