From 2bfc684a69be43f1fe5f12c0e258286530d5c0f0 Mon Sep 17 00:00:00 2001 From: wangting <wangting@vci-tech.com> Date: 星期一, 06 一月 2025 11:23:54 +0800 Subject: [PATCH] 修改节点默认展示 --- Source/plt-web/plt-web-ui/src/components/PLT-basic-component/input-icon.vue | 119 +++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 70 insertions(+), 49 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/input-icon.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/input-icon.vue index cd445af..aee44d0 100644 --- a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/input-icon.vue +++ b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/input-icon.vue @@ -2,7 +2,7 @@ <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;padding:3px 10px;width:18px;height:18px;display: block" @click="handleFocus"></span> </el-input> <el-dialog v-dialogDrag v-dialog-resize @@ -14,23 +14,23 @@ @close="dialogClose"> <div style="display: flex;justify-content: space-between;flex-wrap: wrap"> <div class="tag-group"> - <span class="tag-group__title">鍒嗙被</span> + <span class="tag-group__title" v-if="types.length>0">鍒嗙粍</span> <el-tag v-for="item in types" - :key="item" - :type="checkedTypes.includes(item)?'success':'info'" size="small" - effect="plain" @click="changeType(item)"> - {{ item }} + :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> </div> <div style="height: 60vh"> <el-tabs v-model="activeName" @tab-click="handleTabClick"> - <el-tab-pane v-for="item in iconList" :label="item.label" :name="item.label"> + <el-tab-pane v-for="item in iconList" :label="item.lable" :name="item.lable" style="height: calc(60vh - 60px);;overflow: auto "> <div class="iconList"> - <div class="iconItem" v-for="svg in item.list" :data-value="svg.name" @click="checkSvg(svg,item.type)"> - <div v-html="svg.svg"></div> + <div class="iconItem" v-for="svg in item.list" :data-value="svg.name" @click="checkSvg(svg,item.lable)"> + <div class="svgContent" v-html="svg.content"></div> <span>{{svg.name.split(':')[1]}}</span> </div> </div> @@ -47,6 +47,7 @@ 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", @@ -79,7 +80,7 @@ data(){ return { visible: false, - types: ['鏍囩涓�' , '鏍囩浜�' , '鏍囩涓�' , '鏍囩鍥�','鏍囩浜�' ], + types: [], checkedTypes:[], searchText:'', activeName:'', @@ -96,6 +97,7 @@ } }, created(){ + this.getGroups(); if (!validatenull(this.$store.state.icons)) { this.iconList = this.$store.state.icons; } else { @@ -103,45 +105,41 @@ } this.allIconList=this.iconList; if(this.iconList && this.iconList.length>0){ - this.activeName=this.iconList[0].label; + 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].label; + getIcons().then(res => { + 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; }, handleFocus() { if (!this.disabled) { if(this.iconList&&this.iconList.length>0) { - this.activeName=this.iconList[0].label; - }else { - if (!validatenull(this.$store.state.icons)) { - this.iconList = this.$store.state.icons; - } else { - this.iconList = getStore({ name:'icons'}); - } - this.allIconList=this.iconList; - if(this.iconList && this.iconList.length>0){ - this.activeName=this.iconList[0].label; - }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].label; - } - })*/ - } + this.activeName=this.iconList[0].lable; } this.visible = true; } @@ -157,11 +155,19 @@ if(this.checkedTypes.length==0){ this.iconList=this.allIconList }else{ - this.iconList=this.allIconList.filter(item=> { - return this.checkedTypes.includes(item.type); + const checkedTypes=JSON.stringify(this.checkedTypes); + 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].label; + this.activeName=this.iconList[0].lable; }, handleTabClick(tab, event){ @@ -173,10 +179,9 @@ let iconList=[] this.allIconList.forEach(item=> { iconList.push({ - label:item.label, - type:item.type, + lable:item.lable, list: item.list.filter(iconItem=>{ - return iconItem.name.replace(item.label,'').indexOf(data.value)!=-1; + return iconItem.name.replace(item.lable,'').indexOf(data.value)!=-1; }) }) }) @@ -187,7 +192,7 @@ this.$emit('input','') }, checkSvg(item){ - this.svgHtml=item.svg; + this.svgHtml=item.content; this.$emit('input',item.name) this.dialogClose(); } @@ -195,7 +200,17 @@ } </script> -<style scoped> +<style scoped lang="scss"> +::v-deep{ + .el-input-group__append, .el-input-group__prepend{ + padding: 0; + } + svg{ + font-size: inherit; + height: 100%; + width:100%; + } +} .tag-group{font-size: 14px;} .el-tag{ margin: 0 0 10px 10px; @@ -207,11 +222,17 @@ 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; + width: 24px; + height: 24px; + margin: 0 auto; +} +.iconList .iconItem .svgContent:hover{ transform: scale(1.5); } .iconList .iconItem span{ -- Gitblit v1.9.3