vue自定义实现icon选择器

<template>

  <div>

    <span class="iconStyle" @click="selectIcon">

      <i :class="value" />

    </span>

    <div class="iconTitle">选择图标</div>

    <el-dialog

      title=""

      :visible.sync="dialogVisible"

      width="40%"

      :close-on-click-modal="false"

      :modal="false"

      :show-close="false"

    >

      <div class="iconList">

        <el-tabs v-model="activeName">

          <el-tab-pane

            v-for="item in list"

            :key="item.label"

            :name="item.label"

            :label="item.label"

          >

            <el-scrollbar wrap-class="scrollbar-wrapper">

              <span class="icon" v-for="(item, index) in item.list" :key="item">

                <i

                  :key="item"

                  :class="[item]"

                  :style="{ color: showIndex == index ? '#3a84ff' : '' }"

                  @click="setIcon(item, index)"

                ></i>

              </span>

            </el-scrollbar>

          </el-tab-pane>

        </el-tabs>

      </div>

      <span slot="footer" class="dialog-footer">

        <el-button type="primary" @click="dialogVisible = false"

          >确定</el-button

        >

        <el-button @click="cancel">取消</el-button>

      </span>

    </el-dialog>

  </div>

</template>

  <script>

export default {

  name: "selectIcon",

  model: {

    prop: "value",

    event: "input",

  },

  props: {

    value: {

      type: String,

      default: "",

    },

  },

  data() {

    return {

      dialogVisible: false,

      activeName: "系统图标",

      showIndex: 0,

      list: [

        // {

        //   label: "线框",

        //   list: [

        //     "el-icon-eleme",

        //     "el-icon-delete",

        //     "el-icon-setting",

        //     "el-icon-user",

        //     "el-icon-phone-outline",

        //     "el-icon-more-outline",

        //     "el-icon-star-off",

        //     "el-icon-goods",

        //     "el-icon-warning-outline",

        //     "el-icon-zoom-in",

        //     "el-icon-zoom-out",

        //     "el-icon-remove-outline",

        //     "el-icon-circle-plus-outline",

        //     "el-icon-circle-check",

        //     "el-icon-circle-close",

        //     "el-icon-help",

        //     "el-icon-minus",

        //     "el-icon-plus",

        //     "el-icon-check",

        //     "el-icon-close",

        //     "el-icon-picture-outline",

        //     "el-icon-picture-outline-round",

        //     "el-icon-upload2",

        //     "el-icon-download",

        //     "el-icon-camera",

        //     "el-icon-video-camera",

        //     "el-icon-bell",

        //     "el-icon-bottom-left",

        //     "el-icon-bottom-right",

        //     "el-icon-back",

        //     "el-icon-right",

        //     "el-icon-bottom",

        //     "el-icon-top",

        //     "el-icon-top-left",

        //     "el-icon-top-right",

        //     "el-icon-arrow-left",

        //     "el-icon-arrow-right",

        //     "el-icon-arrow-down",

        //     "el-icon-arrow-up",

        //     "el-icon-d-arrow-left",

        //     "el-icon-d-arrow-right",

        //     "el-icon-video-pause",

        //     "el-icon-video-play",

        //     "el-icon-refresh",

        //     "el-icon-refresh-right",

        //     "el-icon-refresh-left",

        //     "el-icon-finished",

        //     "el-icon-sort",

        //     "el-icon-sort-up",

        //     "el-icon-sort-down",

        //     "el-icon-rank",

        //     "el-icon-loading",

        //     "el-icon-view",

        //     "el-icon-c-scale-to-original",

        //     "el-icon-date",

        //     "el-icon-edit",

        //     "el-icon-edit-outline",

        //     "el-icon-folder",

        //     "el-icon-folder-opened",

        //     "el-icon-folder-add",

        //     "el-icon-folder-remove",

        //     "el-icon-folder-delete",

        //     "el-icon-folder-checked",

        //     "el-icon-tickets",

        //     "el-icon-document-remove",

        //     "el-icon-document-delete",

        //     "el-icon-document-copy",

        //     "el-icon-document-checked",

        //     "el-icon-document",

        //     "el-icon-document-add",

        //     "el-icon-printer",

        //     "el-icon-paperclip",

        //     "el-icon-takeaway-box",

        //     "el-icon-search",

        //     "el-icon-monitor",

        //     "el-icon-attract",

        //     "el-icon-mobile",

        //     "el-icon-scissors",

        //     "el-icon-umbrella",

        //     "el-icon-headset",

        //     "el-icon-brush",

        //     "el-icon-mouse",

        //     "el-icon-coordinate",

        //     "el-icon-magic-stick",

        //     "el-icon-reading",

        //     "el-icon-data-line",

        //     "el-icon-data-board",

        //     "el-icon-pie-chart",

        //     "el-icon-data-analysis",

        //     "el-icon-collection-tag",

        //     "el-icon-film",

        //     "el-icon-suitcase",

        //     "el-icon-suitcase-1",

        //     "el-icon-receiving",

        //     "el-icon-collection",

        //     "el-icon-files",

        //     "el-icon-notebook-1",

        //     "el-icon-notebook-2",

        //     "el-icon-toilet-paper",

        //     "el-icon-office-building",

        //     "el-icon-school",

        //     "el-icon-table-lamp",

        //     "el-icon-house",

        //     "el-icon-no-smoking",

        //     "el-icon-smoking",

        //     "el-icon-shopping-cart-full",

        //     "el-icon-shopping-cart-1",

        //     "el-icon-shopping-cart-2",

        //     "el-icon-shopping-bag-1",

        //     "el-icon-shopping-bag-2",

        //     "el-icon-sold-out",

        //     "el-icon-sell",

        //     "el-icon-present",

        //     "el-icon-box",

        //     "el-icon-bank-card",

        //     "el-icon-money",

        //     "el-icon-coin",

        //     "el-icon-wallet",

        //     "el-icon-discount",

        //     "el-icon-price-tag",

        //     "el-icon-news",

        //     "el-icon-guide",

        //     "el-icon-male",

        //     "el-icon-female",

        //     "el-icon-thumb",

        //     "el-icon-cpu",

        //     "el-icon-link",

        //     "el-icon-connection",

        //     "el-icon-open",

        //     "el-icon-turn-off",

        //     "el-icon-set-up",

        //     "el-icon-chat-round",

        //     "el-icon-chat-line-round",

        //     "el-icon-chat-square",

        //     "el-icon-chat-dot-round",

        //     "el-icon-chat-dot-square",

        //     "el-icon-chat-line-square",

        //     "el-icon-message",

        //     "el-icon-postcard",

        //     "el-icon-position",

        //     "el-icon-turn-off-microphone",

        //     "el-icon-microphone",

        //     "el-icon-close-notification",

        //     "el-icon-bangzhu",

        //     "el-icon-time",

        //     "el-icon-odometer",

        //     "el-icon-crop",

        //     "el-icon-aim",

        //     "el-icon-switch-button",

        //     "el-icon-full-screen",

        //     "el-icon-copy-document",

        //     "el-icon-mic",

        //     "el-icon-stopwatch",

        //     "el-icon-medal-1",

        //     "el-icon-medal",

        //     "el-icon-trophy",

        //     "el-icon-trophy-1",

        //     "el-icon-first-aid-kit",

        //     "el-icon-discover",

        //     "el-icon-place",

        //     "el-icon-location",

        //     "el-icon-location-outline",

        //     "el-icon-location-information",

        //     "el-icon-add-location",

        //     "el-icon-delete-location",

        //     "el-icon-map-location",

        //     "el-icon-alarm-clock",

        //     "el-icon-timer",

        //     "el-icon-watch-1",

        //     "el-icon-watch",

        //     "el-icon-lock",

        //     "el-icon-unlock",

        //     "el-icon-key",

        //     "el-icon-service",

        //     "el-icon-mobile-phone",

        //     "el-icon-bicycle",

        //     "el-icon-truck",

        //     "el-icon-ship",

        //     "el-icon-basketball",

        //     "el-icon-football",

        //     "el-icon-soccer",

        //     "el-icon-baseball",

        //     "el-icon-wind-power",

        //     "el-icon-light-rain",

        //     "el-icon-lightning",

        //     "el-icon-heavy-rain",

        //     "el-icon-sunrise",

        //     "el-icon-sunrise-1",

        //     "el-icon-sunset",

        //     "el-icon-sunny",

        //     "el-icon-cloudy",

        //     "el-icon-partly-cloudy",

        //     "el-icon-cloudy-and-sunny",

        //     "el-icon-moon",

        //     "el-icon-moon-night",

        //     "el-icon-dish",

        //     "el-icon-dish-1",

        //     "el-icon-food",

        //     "el-icon-chicken",

        //     "el-icon-fork-spoon",

        //     "el-icon-knife-fork",

        //     "el-icon-burger",

        //     "el-icon-tableware",

        //     "el-icon-sugar",

        //     "el-icon-dessert",

        //     "el-icon-ice-cream",

        //     "el-icon-hot-water",

        //     "el-icon-water-cup",

        //     "el-icon-coffee-cup",

        //     "el-icon-cold-drink",

        //     "el-icon-goblet",

        //     "el-icon-goblet-full",

        //     "el-icon-goblet-square",

        //     "el-icon-goblet-square-full",

        //     "el-icon-refrigerator",

        //     "el-icon-grape",

        //     "el-icon-watermelon",

        //     "el-icon-cherry",

        //     "el-icon-apple",

        //     "el-icon-pear",

        //     "el-icon-orange",

        //     "el-icon-coffee",

        //     "el-icon-ice-tea",

        //     "el-icon-ice-drink",

        //     "el-icon-milk-tea",

        //     "el-icon-potato-strips",

        //     "el-icon-lollipop",

        //     "el-icon-ice-cream-square",

        //     "el-icon-ice-cream-round",

        //   ],

        // },

        {

          label: "系统图标",

          list: [

            "el-icon-question",

            "el-icon-platform-eleme",

            "el-icon-delete-solid",

            "el-icon-s-tools",

            "el-icon-user-solid",

            "el-icon-phone",

            "el-icon-more",

            "el-icon-star-on",

            "el-icon-s-goods",

            "el-icon-warning",

            "el-icon-info",

            "el-icon-remove",

            "el-icon-circle-plus",

            "el-icon-success",

            "el-icon-error",

            "el-icon-s-help",

            "el-icon-picture",

            "el-icon-upload",

            "el-icon-camera-solid",

            "el-icon-video-camera-solid",

            "el-icon-message-solid",

            "el-icon-s-cooperation",

            "el-icon-s-order",

            "el-icon-s-platform",

            "el-icon-s-fold",

            "el-icon-s-unfold",

            "el-icon-s-operation",

            "el-icon-s-promotion",

            "el-icon-s-home",

            "el-icon-s-release",

            "el-icon-s-ticket",

            "el-icon-s-management",

            "el-icon-s-open",

            "el-icon-s-shop",

            "el-icon-s-marketing",

            "el-icon-s-flag",

            "el-icon-s-comment",

            "el-icon-s-finance",

            "el-icon-s-claim",

            "el-icon-s-custom",

            "el-icon-s-opportunity",

            "el-icon-s-data",

            "el-icon-s-check",

            "el-icon-s-grid",

            "el-icon-menu",

            "el-icon-share",

            "el-icon-d-caret",

            "el-icon-caret-left",

            "el-icon-caret-right",

            "el-icon-caret-bottom",

            "el-icon-caret-top",

          ],

        },

      ],

    };

  },

  methods: {

    setIcon(row, index) {

      this.showIndex = index;

      this.$emit("input", row);

    },

    cancel() {

        this.dialogVisible = false

        this.showIndex = 0;

        this.$emit('cancelIcon')

    },

    selectIcon() {

      this.dialogVisible = true;

    },

  },

};

</script>

  <style scoped lang="scss">

.iconList {

  .el-tab-pane {

    .el-scrollbar {

      width: 600px;

      height: 388px;

      overflow-x: hidden !important;

      .icon {

        display: inline-block;

        width: calc((100% - 60px) / 6);

        height: 40px;

        border: 1px solid #ededed;

        text-align: center;

        box-sizing: border-box;

        line-height: 38px;

        margin-right: 10px;

        border-radius: 3px;

        margin-top: 10px;

        cursor: pointer;

        &:nth-child(-n + 6) {

          margin-top: 0;

        }

        i {

          font-size: 16px;

          color: #303133;

          transition: all 100ms;

        }

        &:hover {

          box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.15);

          i {

            transform: scale(1.5);

          }

        }

      }

    }

  }

}

.iconStyle {

  display: inline-block;

  width: 85px;

  height: 85px;

  border-radius: 50%;

  border: 1px solid #ccc;

  text-align: center;

  line-height: 116px;

  cursor: pointer;

  i {

    font-size: 60px;

    color: #3a84ff;

  }

}

.iconTitle {

    margin-left: 15px;

    margin-top: 3px;

}

</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/502501.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bvh文件,人体骨骼重定向

关于两个bvh文件&#xff0c;人体骨骼重定向&#xff0c;小白记录 1、打开 Motionbuilder &#xff0c;选择 打开特定路径下的bvh文件。 绑定骨骼&#xff08;在绑定骨骼过程中&#xff0c;如果骨骼角度&#xff0c;大小之类的不方便&#xff0c;可以shift键加鼠标拖拽界面&…

vulhub中Aapache Tomcat AJP 文件包含漏洞复现(CVE-2020-1938)

查看tomcat默认页面&#xff0c;此时通过AJP协议的8009端口亦可访问Tomcat。 利用如下工具均可测试漏洞&#xff1a; https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi 工具需要用到python2&#xff0c; 如果需要进一步利用需要向服务器的/webapps/ROOT目录下上传…

Entry First Day 入职恩孚第一天

入职第一天&#xff0c;电脑还没配置好就去了工厂。 熟悉了一下设备&#xff0c;切了几个小玩意&#xff0c; hello world 一下。 了解了串行端口的Nodejs的库 https://github.com/serialport/node-serialport&#xff0c;以后要用这个东西和硬件通讯&#xff0c;安装&#…

6. Z 字形变换

将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你的输出需要从左往右…

【零基础SRC】成为漏洞赏金猎人的第一课:加入玲珑安全漏洞挖掘班。

我们是谁 你是否对漏洞挖掘充满好奇&#xff1f;零基础或有基础但想更进一步&#xff1f;想赚取可观的漏洞赏金让自己有更大的自由度&#xff1f; 那么&#xff0c;不妨了解下我们《玲珑安全团队》。 玲珑安全团队&#xff0c;拥有多名实力讲师&#xff0c;均就职于互联网头…

SpringBoot整合OAuth2 实现单点登录 SSO

单点登录&#xff1a; SSO服务端和SSO客户端直接是通过授权以后发放Token的形式来访问受保护的资源相对于浏览器来说&#xff0c;业务系统是服务端&#xff0c;相对于SSO服务端来说&#xff0c;业务系统是客户端浏览器和业务系统之间通过会话正常访问不是每次浏览器请求都要去S…

2023中国PostgreSQL数据库生态大会:洞察前沿趋势,探索无限可能(附核心PPT资料下载)

随着数字化浪潮的推进&#xff0c;数据库技术已成为支撑各行各业数字化转型的核心力量。2023中国PostgreSQL数据库生态大会的召开&#xff0c;无疑为业界提供了一个深入交流、共同探索PostgreSQL数据库技术未来发展趋势的平台。本文将带您走进这场盛会&#xff0c;解析大会的亮…

springboot配置多数据源以及事务问题

一、背景以及为什么需要学习 在高并发的项目中,单数据库已无法承载大数据量的访问,因此需要使用多个数据库进行对数据的读写分离,此外就是在微服化的今天,我们在项目中可能采用各种不同存储,因此也需要连接不同的数据库,居于这样的背景,这里简单分享实现的思路以及实现…

Dell R730 2U服务器实践2:VMWare ESXi安装

缘起 刚到手边的一台Dell R730是三块硬盘raid0 &#xff0c;把我惊出一身冷汗&#xff0c;准备把它们改组成raid1 或者raid5 。 但是舍不得里面的ESXi 8 &#xff0c;寻找能否把raid0改成raid1 还不掉WSXi的方法&#xff0c;很遗憾没有找到。那样只能重装ESXi了。 ESXi软件下…

【办公类-18-03】(Python)中班米罗可儿证书批量生成打印(班级、姓名)

作品展示——米罗可儿证书打印幼儿姓名 背景需求 2024年3月1日&#xff0c;中4班孩子一起整理美术操作材料《米罗可儿》的操作本——将每一页纸撕下来&#xff0c;分类摆放、确保纸张上下位置正确。每位孩子们都非常厉害&#xff0c;不仅完成了自己的一本&#xff0c;还将没有…

mock工具whistle使用笔记

1、下载安装地址&#xff1a;关于whistle GitBook 安装完后&#xff0c;用本地的ip&#xff1a;设置的端口就可以反问&#xff0c;端口默认的8899&#xff0c;可以自定义 2、抓包https&#xff1a; &#xff08;1&#xff09;打开https &#xff08;2&#xff09;下载证书&…

QObject::moveToThread: Current thread (0x56059f9b0f70) is not the object‘s t

座右铭&#xff1a;怎么简单怎么来&#xff0c;以实现功能为主。 欢迎大家关注公众号与我交流 解决方法 pip install opencv-python4.1.2.30