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