<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> 
 |