| | |
| | | <div> |
| | | <el-input :width="width" :class="inputClass" :style="inputStyle" :clearable="true" :value="value" |
| | | :disabled="disabled" :placeholder="placeholder" type="text" :size="size" @clear="clearValue" @focus="handleFocus"> |
| | | <span slot="append" v-html="svgHtml"></span> |
| | | <span slot="append" v-html="svgHtml" style="font-size: 18px;height:18px;display: block"></span> |
| | | </el-input> |
| | | <el-dialog v-dialogDrag |
| | | v-dialog-resize |
| | |
| | | <span class="tag-group__title">分类</span> |
| | | <el-tag |
| | | v-for="item in types" |
| | | :key="item.value" |
| | | :type="checkedTypes.includes(item.value)?'success':'info'" size="small" |
| | | effect="plain" @click="changeType(item.value)"> |
| | | {{ item.label }} |
| | | :key="item.key" |
| | | :type="checkedTypes.includes(item.key)?'success':'info'" size="small" |
| | | effect="plain" @click="changeType(item.key)"> |
| | | {{ item.value }} |
| | | </el-tag> |
| | | </div> |
| | | <avue-input v-model="searchText" @change="handleSearch" placeholder="查询" size="mini" prefixIcon="el-icon-search" style="width: 300px;max-width: 30%"></avue-input> |
| | |
| | | <el-tab-pane v-for="item in iconList" :label="item.lable" :name="item.lable" style="height: calc(60vh - 80px);;overflow: auto "> |
| | | <div class="iconList"> |
| | | <div class="iconItem" v-for="svg in item.list" :data-value="svg.name" @click="checkSvg(svg,item.lable)"> |
| | | <div v-html="svg.content"></div> |
| | | <!--<span>{{svg.name.split(':')[1]}}</span>--> |
| | | <div class="svgContent" v-html="svg.content"></div> |
| | | <span>{{svg.name.split(':')[1]}}</span> |
| | | </div> |
| | | </div> |
| | | </el-tab-pane> |
| | |
| | | import func from "@/util/func"; |
| | | import store from "@/store"; |
| | | import {getIcons} from "@/api/UI/Icons"; |
| | | import {getDicts} from "@/api/system/dict"; |
| | | |
| | | export default { |
| | | name: "input-icon", |
| | |
| | | data(){ |
| | | return { |
| | | visible: false, |
| | | types: [{ |
| | | label:'按钮', |
| | | value:0 |
| | | },{ |
| | | label:'标签二', |
| | | value:1 |
| | | },{ |
| | | label:'标签三', |
| | | value:2 |
| | | }], |
| | | types: [], |
| | | checkedTypes:[], |
| | | searchText:'', |
| | | activeName:'', |
| | |
| | | } |
| | | }, |
| | | created(){ |
| | | this.getGroups(); |
| | | if (!validatenull(this.$store.state.icons)) { |
| | | this.iconList = this.$store.state.icons; |
| | | } else { |
| | |
| | | this.activeName=this.iconList[0].lable; |
| | | }else { |
| | | getIcons().then(res => { |
| | | this.iconList=res.data.data; |
| | | this.allIconList=this.iconList; |
| | | store.dispatch("setIcons", this.iconList); |
| | | if(this.iconList&&this.iconList.length>0) { |
| | | this.activeName=this.iconList[0].lable; |
| | | if (res.data.success) { |
| | | this.iconList = res.data.data; |
| | | this.allIconList = this.iconList; |
| | | store.dispatch("setIcons", this.iconList); |
| | | if (this.iconList.length > 0) { |
| | | this.activeName = this.iconList[0].lable; |
| | | } |
| | | } else { |
| | | this.$message.error(res.data.msg); |
| | | } |
| | | }) |
| | | } |
| | | |
| | | this.svgHtml=func.getSVGByName(this.value); |
| | | }, |
| | | methods:{ |
| | | getGroups() { |
| | | getDicts('EnumIconGroups').then(res => { |
| | | if (res.data.success) { |
| | | this.types = res.data.obj; |
| | | } else { |
| | | this.$message.error(res.data.msg); |
| | | } |
| | | }) |
| | | }, |
| | | dialogClose() { |
| | | this.visible = false; |
| | | }, |
| | |
| | | this.iconList=this.allIconList |
| | | }else{ |
| | | const checkedTypes=JSON.stringify(this.checkedTypes); |
| | | this.iconList=this.allIconList.filter(item=> { |
| | | return checkedTypes.indexOf(JSON.stringify(item.groups))!=-1; |
| | | const iconList=[]; |
| | | this.allIconList.forEach(item=>{ |
| | | iconList.push({ |
| | | lable:item.lable, |
| | | list:item.list.filter(iconitem=> { |
| | | return checkedTypes.indexOf(iconitem.groups)!=-1; |
| | | }) |
| | | }) |
| | | }) |
| | | this.iconList=iconList; |
| | | } |
| | | this.activeName=this.iconList[0].lable; |
| | | }, |
| | |
| | | flex-wrap: wrap; |
| | | } |
| | | .iconList .iconItem{ |
| | | width: 65px; |
| | | margin: 6px; |
| | | width: 85px; |
| | | margin: 6px 5px 10px 5px; |
| | | text-align: center; |
| | | } |
| | | .iconList .iconItem div:hover{ |
| | | .iconList .iconItem .svgContent{ |
| | | font-size: 24px; |
| | | } |
| | | .iconList .iconItem .svgContent:hover{ |
| | | transform: scale(1.5); |
| | | } |
| | | .iconList .iconItem span{ |