vue-admin-better/src/views/vab/icon/remixIcon.vue

154 lines
4.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="colorful-icon-container">
<el-row :gutter="20">
<el-col :span="24">
<el-divider content-position="left">
小清新图标在演示环境中使用的是cdn加速服务开发时需存储到本地使用方法可查看群文档点击图标即可复制源码点击图标即可复制源码
</el-divider>
</el-col>
<el-col :span="24">
<el-form :inline="true" label-width="80px" @submit.native.prevent>
<el-form-item label="图标名称">
<el-input v-model="queryForm.title"></el-input>
</el-form-item>
<el-form-item label-width="0">
<el-button native-type="submit" type="primary" @click="queryData">
搜索
</el-button>
</el-form-item>
<!-- <el-form-item label-width="0">
<el-input :value="copyText" type="text"></el-input>
</el-form-item>-->
</el-form>
</el-col>
<el-col
v-for="(item, index) in queryIcon"
:key="index"
:xs="6"
:sm="8"
:md="3"
:lg="2"
:xl="2"
>
<el-card
shadow="hover"
style="cursor: pointer"
@click.native="handleCopyIcon(index, $event)"
>
<vab-remix-icon
:icon-class="`https://cdn.jsdelivr.net/gh/chuzhixin/zx-remixicon/src/icons/svg/${item}.svg`"
@click.stop
></vab-remix-icon>
</el-card>
<div class="icon-text">{{ item }}</div>
</el-col>
<el-col :span="24">
<el-pagination
:background="background"
:current-page="queryForm.pageNo"
:page-size="queryForm.pageSize"
:page-sizes="[72, 144, 216, 288]"
:layout="layout"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</el-col>
</el-row>
</div>
</template>
<script>
import { getIconList } from '@/api/remixIcon'
import clip from '@/utils/clipboard'
export default {
name: 'RemixIcon',
data() {
return {
copyText: '',
layout: 'total, sizes, prev, pager, next, jumper',
total: 0,
background: true,
height: 0,
selectRows: '',
elementLoadingText: '正在加载...',
queryIcon: [],
queryForm: {
pageNo: 1,
pageSize: 72,
title: '',
},
}
},
created() {
this.fetchData()
},
methods: {
handleSizeChange(val) {
this.queryForm.pageSize = val
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.pageNo = val
this.fetchData()
},
queryData() {
this.queryForm.pageNo = 1
this.fetchData()
},
async fetchData() {
const { data, totalCount } = await getIconList(this.queryForm)
this.queryIcon = data
this.allIcon = data
this.total = totalCount
},
handleCopyIcon(index, event) {
//const copyText = `<vab-remix-icon icon-class="https://cdn.jsdelivr.net/gh/chuzhixin/zx-remixicon@master/src/icons/svg/${this.queryIcon[index]}.svg" />`;
const copyText = `<vab-remix-icon icon-class="${this.queryIcon[index]}" />`
this.copyText = copyText
clip(copyText, event)
},
},
}
</script>
<style lang="scss" scoped>
.colorful-icon-container {
::v-deep {
.el-card__body {
position: relative;
display: flex;
flex-direction: column;
align-items: center; /* 垂直居中 */
justify-content: center; /* 水平居中 */
svg:not(:root),
.svg-external-icon {
font-size: 16px;
font-weight: bold;
color: $base-color-gray;
text-align: center;
vertical-align: middle;
pointer-events: none;
cursor: pointer;
}
}
}
.icon-text {
height: 30px;
margin-top: -15px;
overflow: hidden;
font-size: 12px;
line-height: 30px;
text-align: center;
text-overflow: ellipsis;
white-space: nowrap;
}
}
</style>