From 03e602bbaee807c42a22df05f1f00c558ffe9fa0 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期一, 13 一月 2025 17:27:19 +0800
Subject: [PATCH] 首页跳转日志bug
---
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue | 610 +++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 475 insertions(+), 135 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue
index f78570a..ab0a66b 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue
@@ -4,186 +4,499 @@
<basic-container>
<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="form" placeholder="鏌ヨ" size="mini" prefixIcon="el-icon-search" style="width: 300px;max-width: 30%"></avue-input>
+ <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: calc(100vh - 190px)">
- <input-icon v-model="iconValue"></input-icon>
+ <div>
+ <el-button v-if="permissionList.addBtn" class="button-custom-icon" type="primary" size="small" @click="addHandler">
+ <icon-show :name="permissionList.addBtn.source"></icon-show>
+ 娣诲姞
+ </el-button>
+ <el-button v-if="permissionList.uploadBtn" class="button-custom-icon" type="primary" size="small" @click="uploadHandler">
+ <icon-show :name="permissionList.uploadBtn.source"></icon-show>
+ 涓婁紶
+ </el-button>
+ </div>
+
<el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane v-for="item in iconList" :label="item.label" :name="item.label">
- <div class="iconList">
- <div class="iconItem" v-for="svg in item.list" :data-value="svg.name">
- <div v-html="svg.svg"></div>
+ <el-tab-pane v-for="item in iconList" :label="item.lable" :name="item.lable" style="height: calc(100vh - 270px);overflow: auto ">
+ <div class="iconList" :key="key">
+ <div class="iconItem" v-for="svg in item.list"
+ :data-value="svg.name" v-right-click="{action:checkSvg,data:svg}">
+ <div class="svgContent" v-html="svg.content"></div>
<span>{{svg.name.split(':')[1]}}</span>
</div>
+ </div>
+ <div v-if="menuVisible" class="el-cascader-panel is-bordered iconList__menu" :style="menuPosition">
+ <div class="iconList__item" @click="editHandler">缂� 杈�</div>
+ <div class="iconList__item" @click="delHandler">鍒� 闄�</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
+ <!-- 涓婁紶 -->
+ <el-dialog
+ v-dialogDrag
+ title="涓婁紶鍥炬爣"
+ :visible.sync="visible"
+ append-to-body="true"
+ class="avue-dialog"
+ width="600px"
+ @close="visibleCloseHandler"
+ >
+ <avue-form ref="form" :option="option" v-model="form" :upload-after="uploadAfter" style="margin-bottom: 0;height:90px;overflow: hidden"> </avue-form>
+ <pre style="font-size: 12px;color: #909399;margin-top: 0;padding:5px;background-color: #F5F7FA">涓婁紶鏂囦欢涓簀son鏂囦欢锛岀ず渚嬪涓�
+[{
+ "name": "鍥炬爣搴撳悕:鍥炬爣鍚嶇О",
+ "svg": "svg鐨刪tml浠g爜"
+ },
+ {
+ "name": "鍥炬爣搴撳悕:鍥炬爣鍚嶇О",
+ "svg": "svg鐨刪tml浠g爜"
+ }]
+ 鏂囦欢鍐呭椤讳弗鏍兼寜鐓хず渚嬫牸寮忥紝name涓哄浘鏍囧簱鍚�+鍥炬爣鍚嶇О锛屼互鈥�:鈥濆垎闅旓紝svg涓哄浘鏍噃tml浠g爜</pre>
+ </el-dialog>
+ <!-- 娣诲姞銆佷慨鏀� -->
+ <el-dialog
+ v-dialogDrag
+ :title="editType=='add'?'娣诲姞鍥炬爣':'淇敼鍥炬爣'"
+ :visible.sync="editVisible"
+ append-to-body="true"
+ class="avue-dialog"
+ width="500px"
+ @close="closeHandler"
+ >
+ <avue-form ref="editForm" :option="editOption" v-model="editForm"> </avue-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button size="small" type="primary" @click="editSaveHandler">纭� 瀹�</el-button>
+ <el-button size="small" @click="closeHandler">鍙� 娑�</el-button>
+ </span>
+ </el-dialog>
</basic-container>
</el-main>
</el-container>
</template>
<script>
-import {getIcons} from "@/api/UI/Icons";
+import {getIcons,addIcon,updateIcon,deleteIcon} from "@/api/UI/Icons";
+import {getDicts} from "@/api/system/dict";
import {validatenull} from "@/util/validate";
import {getStore} from "@/util/store";
import store from "@/store";
+import {getToken} from "@/util/auth";
+import {mapGetters} from "vuex";
export default {
name: "index",
+ directives: {
+ rightClick: {
+ bind(el, binding) {
+ el.oncontextmenu = (e) => {
+ e.preventDefault();
+ const menu = binding.value;
+ menu.action(e,menu.data);
+ };
+ }
+ }
+ },
data() {
return {
- types: ['鏍囩涓�' , '鏍囩浜�' , '鏍囩涓�' , '鏍囩鍥�','鏍囩浜�' ],
+ key:1,
+ types: [],
checkedTypes:[],
- form:'',
+ searchText:'',
activeName:'',
- iconValue:'iconoir2:adobe-illustrator',
- iconList:[]
+ allIconList:[],
+ iconList:[],
+ visible: false,
+ checkItem:null,
+ option: {
+ labelWidth: 80,
+ submitBtn:false,
+ emptyBtn:false,
+ column: [{
+ label: '鍒嗙粍',
+ prop: 'groups',
+ type: 'select',
+ span: 24,
+ multiple:true,
+ dicData:[],
+ props:{
+ label:'value',
+ value:'key'
+ }
+ }, {
+ label: "闄勪欢涓婁紶",
+ prop: "file",
+ type: "upload",
+ dataType: "object",
+ accept:'.json',
+ action:"api/webIconController/importIcon",
+ data:{},
+ headers:this.uploadHeaders,
+ span: 24,
+ }
+ ]
+ },
+ form:{
+ type:'svg',
+ groups:[],
+ file:null
+ },
+ editType:'edit',
+ editVisible:false,
+ editOption:{
+ labelWidth: 90,
+ submitBtn:false,
+ emptyBtn:false,
+ column: [{
+ label: '鍥炬爣搴撳悕',
+ prop: 'libname',
+ type: 'input',
+ disabled:true,
+ span: 24,
+ rules: [{
+ required: true,
+ message: "璇疯緭鍏ュ浘鏍囧簱鍚�",
+ trigger: "blur"
+ }]
+ },{
+ label: '鍚嶇О',
+ prop: 'iconname',
+ type: 'input',
+ disabled:true,
+ span: 24,
+ rules: [{
+ required: true,
+ message: "璇疯緭鍏ュ浘鏍囧悕绉�",
+ trigger: "blur"
+ }]
+ },{
+ label: '鍒嗙粍',
+ prop: 'groups',
+ type: 'select',
+ span: 24,
+ multiple:true,
+ dicData:[],
+ props:{
+ label:'value',
+ value:'key'
+ }
+ }, {
+ label: "鍥炬爣浠g爜",
+ prop: "content",
+ type: "textarea",
+ span: 24,
+ placeholder:'璇疯緭鍏ュ浘鏍噃tml浠g爜锛屾牸寮忕ず渚�<svg xmlns=\"http://www.w3.org/2000/svg\" ></svg>',
+ rules: [{
+ required: true,
+ message: "璇疯緭鍏ュ浘鏍噑vg浠g爜",
+ trigger: "blur"
+ }]
+ }]
+ },
+ editForm:{
+ oid:'',
+ libname:'',
+ iconname:'',
+ content:''
+ },
+ menuVisible:false,
+ menuPosition: {
+ top: 0,
+ left: 0
+ }
}
},
- created() {debugger;
- if (!validatenull(this.$store.state.icons)) {
- this.iconList = this.$store.state.icons;
- } else {
- this.iconList = getStore({ name:'icons'});
+ computed: {
+ uploadHeaders() {
+ return {
+ "Authorizationtoken":getToken(),
+ };
+ },
+ ...mapGetters(["permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
+ uploadBtn: this.vaildData(this.permission[this.$route.query.id].UPLOAD, false),
+ };
+ },
+ },
+ watch:{
+ 'form.groups'(val){
+ this.option.column[1].data={
+ type:'svg',
+ groups:val
+ }
}
- if(this.iconList && this.iconList.length>0){
- this.activeName=this.iconList[0].label;
- }else {
- getIcons().then(res => {
- this.iconList=res.data.data;
- this.iconList=[{
- label:'iconoir',
- type:'鏍囩涓�',
- list:[{
- "name": "iconoir:accessibility",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2S2 6.477 2 12s4.477 10 10 10M7 9l5 1m5-1l-5 1m0 0v3m0 0l-2 5m2-5l2 5\"/><path fill=\"currentColor\" d=\"M12 7a.5.5 0 1 1 0-1a.5.5 0 0 1 0 1\"/></g></svg>"
- },
- {
- "name": "iconoir:accessibility-sign",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"m11.5 12.5l7-.5l-1.5 6.5m-5.5-6l4.5-5L12.5 5L10 7.5m8.5-1a2 2 0 1 1 0-4a2 2 0 0 1 0 4\"/><path d=\"M5.5 12.5a5 5 0 0 1 7.584 6M3.729 15A5 5 0 0 0 11 20.831\"/></g></svg>"
- },
- {
- "name": "iconoir:accessibility-tech",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M3 19V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z\"/><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m12.5 12.16l4-.16l-.5 4.5M11.833 12L13.5 9.538L10.833 8L9.5 9.846\"/><path fill=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.5 7.5a.5.5 0 1 1 0-1a.5.5 0 0 1 0 1\"/><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10.5 18a3 3 0 1 1 0-6a3 3 0 0 1 0 6\"/></g></svg>"
- },
- {
- "name": "iconoir:activity",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3 12h3l3-9l6 18l3-9h3\"/></svg>"
- },
- {
- "name": "iconoir:adobe-after-effects",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M21 7v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4\"/><path d=\"M14 13v-1a2 2 0 0 1 2-2v0a2 2 0 0 1 2 2v1zm0 0v1a2 2 0 0 0 2 2h1.5M6 16l1.125-3M12 16l-1.125-3m-3.75 0L9 8l1.875 5m-3.75 0h3.75\"/></g></svg>"
- },
- {
- "name": "iconoir:adobe-after-effects-solid",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M21.75 17A4.75 4.75 0 0 1 17 21.75H7A4.75 4.75 0 0 1 2.25 17V7A4.75 4.75 0 0 1 7 2.25h10A4.75 4.75 0 0 1 21.75 7zm-3.5-1a.75.75 0 0 1-.75.75H16A2.75 2.75 0 0 1 13.25 14v-2a2.75 2.75 0 1 1 5.5 0v1a.75.75 0 0 1-.75.75h-3.25V14c0 .69.56 1.25 1.25 1.25h1.5a.75.75 0 0 1 .75.75m-1-3.75V12a1.25 1.25 0 1 0-2.5 0v.25zM5.298 15.736a.75.75 0 1 0 1.404.527l.943-2.513h2.71l.943 2.513a.75.75 0 1 0 1.404-.527l-3-8a.75.75 0 0 0-1.404 0zm4.495-3.486H8.207L9 10.136z\" clip-rule=\"evenodd\"/></svg>"
- },
- {
- "name": "iconoir:adobe-illustrator",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M21 7v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4m-5 5v4m0-7v.01\"/><path d=\"m7 16l1.125-3M13 16l-1.125-3m-3.75 0L10 8l1.875 5m-3.75 0h3.75\"/></g></svg>"
- },
- {
- "name": "iconoir:adobe-illustrator-solid",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M17 21.75A4.75 4.75 0 0 0 21.75 17V7A4.75 4.75 0 0 0 17 2.25H7A4.75 4.75 0 0 0 2.25 7v10A4.75 4.75 0 0 0 7 21.75zM15.25 16a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0zM16 9.76a.75.75 0 0 1-.75-.75V9a.75.75 0 0 1 1.5 0v.01a.75.75 0 0 1-.75.75m-9.702 5.977a.75.75 0 1 0 1.404.526l.943-2.513h2.71l.943 2.513a.75.75 0 1 0 1.404-.527l-3-8a.75.75 0 0 0-1.404 0zM10 10.136l.793 2.114H9.207z\" clip-rule=\"evenodd\"/></svg>"
- }]
- },{
- label:'iconoir2',
- type:'鏍囩浜�',
- list:[{
- "name": "iconoir2:adobe-illustrator",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M21 7v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4m-5 5v4m0-7v.01\"/><path d=\"m7 16l1.125-3M13 16l-1.125-3m-3.75 0L10 8l1.875 5m-3.75 0h3.75\"/></g></svg>"
- },
- {
- "name": "iconoir2:adobe-illustrator-solid",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M17 21.75A4.75 4.75 0 0 0 21.75 17V7A4.75 4.75 0 0 0 17 2.25H7A4.75 4.75 0 0 0 2.25 7v10A4.75 4.75 0 0 0 7 21.75zM15.25 16a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0zM16 9.76a.75.75 0 0 1-.75-.75V9a.75.75 0 0 1 1.5 0v.01a.75.75 0 0 1-.75.75m-9.702 5.977a.75.75 0 1 0 1.404.526l.943-2.513h2.71l.943 2.513a.75.75 0 1 0 1.404-.527l-3-8a.75.75 0 0 0-1.404 0zM10 10.136l.793 2.114H9.207z\" clip-rule=\"evenodd\"/></svg>"
- },
- {
- "name": "iconoir2:adobe-indesign",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M21 7v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4M8.5 8v8\"/><path d=\"M15.5 12v3.4a.6.6 0 0 1-.6.6h-1.4a2 2 0 0 1-2-2v0a2 2 0 0 1 2-2zm0 0V9\"/></g></svg>"
- },
- {
- "name": "iconoir2:adobe-indesign-solid",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M21.75 17A4.75 4.75 0 0 1 17 21.75H7A4.75 4.75 0 0 1 2.25 17V7A4.75 4.75 0 0 1 7 2.25h10A4.75 4.75 0 0 1 21.75 7zM8.5 16.75a.75.75 0 0 1-.75-.75V8a.75.75 0 0 1 1.5 0v8a.75.75 0 0 1-.75.75m5-4h1.25v2.5H13.5a1.25 1.25 0 1 1 0-2.5m0 4a2.75 2.75 0 1 1 0-5.5h1.25V9a.75.75 0 0 1 1.5 0v6.4a1.35 1.35 0 0 1-1.35 1.35z\" clip-rule=\"evenodd\"/></svg>"
- },
- {
- "name": "iconoir2:adobe-lightroom",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M21 7v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4\"/><path d=\"M7 8v8h4m3-5.5V13m0 3v-3m0 0s0-2.5 3-2.5\"/></g></svg>"
- },
- {
- "name": "iconoir2:adobe-lightroom-solid",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M21.75 17A4.75 4.75 0 0 1 17 21.75H7A4.75 4.75 0 0 1 2.25 17V7A4.75 4.75 0 0 1 7 2.25h10A4.75 4.75 0 0 1 21.75 7zM7 16.75a.75.75 0 0 1-.75-.75V8a.75.75 0 0 1 1.5 0v7.25H11a.75.75 0 0 1 0 1.5zm6.25-.75a.75.75 0 0 0 1.5 0v-2.998l.003-.045a2 2 0 0 1 .265-.82c.235-.392.736-.887 1.982-.887a.75.75 0 0 0 0-1.5c-.973 0-1.713.232-2.268.586a.75.75 0 0 0-1.482.164z\" clip-rule=\"evenodd\"/></svg>"
- },
- {
- "name": "iconoir2:adobe-photoshop",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M21 7v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4\"/><path d=\"M7 16v-4m0 0V8h2a2 2 0 0 1 2 2v0a2 2 0 0 1-2 2zm10-1c-.306-.613-.933-1-1.618-1H15a1.5 1.5 0 0 0-1.5 1.5v0A1.5 1.5 0 0 0 15 13h.5a1.5 1.5 0 0 1 1.5 1.5v0a1.5 1.5 0 0 1-1.5 1.5h-.382a1.81 1.81 0 0 1-1.618-1v0\"/></g></svg>"
- },
- {
- "name": "iconoir2:adobe-photoshop-solid",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M21.75 17A4.75 4.75 0 0 1 17 21.75H7A4.75 4.75 0 0 1 2.25 17V7A4.75 4.75 0 0 1 7 2.25h10A4.75 4.75 0 0 1 21.75 7zM7 16.75a.75.75 0 0 1-.75-.75V8A.75.75 0 0 1 7 7.25h2a2.75 2.75 0 1 1 0 5.5H7.75V16a.75.75 0 0 1-.75.75m.75-5.5H9a1.25 1.25 0 1 0 0-2.5H7.75zm8.579.085a.75.75 0 1 0 1.342-.67a2.56 2.56 0 0 0-2.29-1.415H15a2.25 2.25 0 0 0 0 4.5h.5a.75.75 0 0 1 0 1.5h-.382a1.06 1.06 0 0 1-.947-.585a.75.75 0 0 0-1.342.67a2.56 2.56 0 0 0 2.289 1.415h.382a2.25 2.25 0 1 0 0-4.5H15a.75.75 0 0 1 0-1.5h.382c.4 0 .768.227.947.585\" clip-rule=\"evenodd\"/></svg>"
- },
- {
- "name": "iconoir2:adobe-xd",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M21 7v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4M7 8l4 8m-4 0l4-8\"/><path d=\"M17 12v3.4a.6.6 0 0 1-.6.6H15a2 2 0 0 1-2-2v0a2 2 0 0 1 2-2zm0 0V9\"/></g></svg>"
- },
- {
- "name": "iconoir2:adobe-xd-solid",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M21.75 17A4.75 4.75 0 0 1 17 21.75H7A4.75 4.75 0 0 1 2.25 17V7A4.75 4.75 0 0 1 7 2.25h10A4.75 4.75 0 0 1 21.75 7zm-15.085-.33a.75.75 0 0 1-.336-1.006L8.162 12L6.329 8.335a.75.75 0 0 1 1.342-.67l1.33 2.658l1.328-2.659a.75.75 0 0 1 1.342.671L9.839 12l1.832 3.664a.75.75 0 0 1-1.342.671L9 13.677l-1.329 2.658a.75.75 0 0 1-1.006.336M15 12.75h1.25v2.5H15a1.25 1.25 0 1 1 0-2.5m0 4a2.75 2.75 0 1 1 0-5.5h1.25V9a.75.75 0 0 1 1.5 0v6.4a1.35 1.35 0 0 1-1.35 1.35z\" clip-rule=\"evenodd\"/></svg>"
- },
- {
- "name": "iconoir2:african-tree",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 22V12m0-4v4m0 0l3-3m-2.576 9.576l6.169-6.169a5.502 5.502 0 0 0-.513-8.234a9.904 9.904 0 0 0-12.16 0a5.502 5.502 0 0 0-.513 8.234l6.169 6.169a.6.6 0 0 0 .848 0\"/></svg>"
- },
- {
- "name": "iconoir2:agile",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M17.5 19H22m0 0l-2.5-2.5M22 19l-2.5 2.5M12 2L9.5 4.5L12 7\"/><path d=\"M10.5 4.5a7.5 7.5 0 0 1 0 15H2\"/><path d=\"M6.756 5.5A7.5 7.5 0 0 0 3 12c0 1.688.558 3.246 1.5 4.5\"/></g></svg>"
- },
- {
- "name": "iconoir2:air-conditioner",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M22 3.6V11H2V3.6a.6.6 0 0 1 .6-.6h18.8a.6.6 0 0 1 .6.6M18 7h1M2 11l.79 2.584A2 2 0 0 0 4.702 15H6m16-4l-.79 2.584A2 2 0 0 1 19.298 15H18m-8.5-.5s0 7-3.5 7m8.5-7s0 7 3.5 7m-6-7v7\"/></svg>"
- },
- {
- "name": "iconoir2:airplane",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M10.5 4.5v4.667a.6.6 0 0 1-.282.51l-7.436 4.647a.6.6 0 0 0-.282.508v.9a.6.6 0 0 0 .746.582l6.508-1.628a.6.6 0 0 1 .746.582v2.96a.6.6 0 0 1-.205.451l-2.16 1.89c-.458.402-.097 1.151.502 1.042l3.256-.591a.6.6 0 0 1 .214 0l3.256.591c.599.11.96-.64.502-1.041l-2.16-1.89a.6.6 0 0 1-.205-.452v-2.96a.6.6 0 0 1 .745-.582l6.51 1.628a.6.6 0 0 0 .745-.582v-.9a.6.6 0 0 0-.282-.508l-7.436-4.648a.6.6 0 0 1-.282-.509V4.5a1.5 1.5 0 0 0-3 0\"/></svg>"
- },
- {
- "name": "iconoir2:airplane-helix",
- "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"1.5\" stroke-width=\"1.5\"><path d=\"M12 15a3 3 0 1 0 0-6a3 3 0 0 0 0 6\"/><path d=\"M12 9s-1.988-1.975-2-4c.001-1.993-.05-4.001 2-4c1.948.001 1.997 1.976 2 4c.003 1.985-2 4-2 4m3 3s1.975-1.988 4-2c1.993.001 4.001-.05 4 2c-.001 1.948-1.976 1.997-4 2c-1.985.003-4-2-4-2m-6 0s-1.975 1.988-4 2c-1.993-.001-4.001.05-4-2c.001-1.948 1.976-1.997 4-2c1.985-.003 4 2 4 2m3 3s1.988 1.975 2 4c-.001 1.993.05 4.001-2 4c-1.948-.001-1.997-1.976-2-4c-.003-1.985 2-4 2-4\" clip-rule=\"evenodd\"/></g></svg>"
- }]
- }]
- store.dispatch("setIcons", this.iconList);
- if(this.iconList.length>0) {
- this.activeName=this.iconList[0].label;
- }
- })
- }
+ },
+ created() {
+ this.getGroups();
+ this.initList();
},
methods:{
+ getGroups() {
+ getDicts('EnumIconGroups').then(res => {
+ if (res.data.success) {
+ this.types = res.data.obj;
+ this.option.column[0].dicData = res.data.obj;
+ this.editOption.column[2].dicData =res.data.obj;
+ } else {
+ this.$message.error(res.data.msg);
+ }
+ })
+ },
+ initList(reload){
+ if(reload) {
+ 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;
+ }
+ this.key++;
+ } else {
+ this.$message.error(res.data.msg);
+ }
+ })
+
+ return;
+ }
+ 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].lable;
+ }else {
+ getIcons().then(res => {
+ if (res.data.success) {
+ this.iconList = [{
+ lable: 'iconoir',
+ list: [{
+ oid: '',
+ groups: '1',
+ "name": "iconoir:accessibility",
+ "content": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2S2 6.477 2 12s4.477 10 10 10M7 9l5 1m5-1l-5 1m0 0v3m0 0l-2 5m2-5l2 5\"/><path fill=\"currentColor\" d=\"M12 7a.5.5 0 1 1 0-1a.5.5 0 0 1 0 1\"/></g></svg>"
+ }]
+ }]
+ 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);
+ }
+ })
+ }
+ },
changeType(type){
if(this.checkedTypes.includes(type)){
this.checkedTypes=this.checkedTypes.filter(item=> item!=type)
}else {
this.checkedTypes.push(type)
}
+ //鎸夌収鍒嗙被杩囨护鍥炬爣
+ if(this.checkedTypes.length==0){
+ this.iconList=this.allIconList
+ }else{
+ 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].lable;
+ },
+ handleSearch(data){
+ if(data.value==''){
+ this.iconList=this.allIconList;
+ }
+ let iconList=[]
+ this.allIconList.forEach(item=> {
+ iconList.push({
+ lable:item.lable,
+ list: item.list.filter(iconItem=>{
+ return iconItem.name.replace(item.lable,'').indexOf(data.value)!=-1;
+ })
+ })
+ })
+ this.iconList=iconList;
},
handleClick(tab, event){
+ },
+ uploadHandler(){
+ this.visible = true;
+ },
+ //涓婁紶鍚�
+ uploadAfter(res,done){
+ if (res.success) {
+ this.$message.success(res.msg);
+ this.initList(true);
+ this.visibleCloseHandler();
+ }else {
+ this.$message.error(res.msg);
+ }
+ done();
+ },
+ // 鍏抽棴瀵硅瘽妗�
+ visibleCloseHandler() {
+ const form = {
+ type:'svg',
+ groups:[],
+ file:null
+ }
+ this.form = form;
+ this.visible = false;
+ this.$refs.form.clearValidate();
+ },
+ checkSvg(event,svgObj){
+ this.checkItem=svgObj;
+ // 璁剧疆鑿滃崟鍙
+ this.menuVisible = true;
+ this.menuPosition.top = `${event.clientY}px`;
+ this.menuPosition.left = `${event.clientX}px`;
+ document.addEventListener('click',()=>{
+ this.menuVisible=false;
+ })
+ },
+ // 涓婁紶淇濆瓨
+ uploadSaveHandler() {
+ this.$refs.form.validate((valid,done) => {
+ if (valid) {
+ done()
+ addIcon(this.form).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.msg);
+ this.initList(true);
+ done();
+ this.visibleCloseHandler();
+ } else {
+ this.$message.error(res.data.msg);
+ }
+ })
+ } else {
+ return false;
+ }
+ });
+ },
+ addHandler(){
+ this.editOption.column[0].disabled=false;
+ this.editOption.column[1].disabled=false;
+ this.editType='add';
+ this.editVisible=true;
+ },
+ editHandler(){
+ this.editType='edit';
+ this.editOption.column[0].disabled=true;
+ this.editOption.column[1].disabled=true;
+ this.editForm=this.checkItem;
+ this.editForm.libname=this.checkItem.name.split(':')[0]
+ this.editForm.iconname=this.checkItem.name.split(':')[1]
+ this.editVisible=true;
+ },
+ editSaveHandler(){
+ this.$refs.editForm.validate((valid,done) => {
+ if (valid) {
+ done()
+ this.editForm.name= this.editForm.libname+':'+ this.editForm.iconname;
+ if(this.editType=='edit'){
+ updateIcon(this.editForm).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.msg);
+ this.initList(true);
+ done();
+ this.closeHandler();
+ } else {
+ this.$message.error(res.data.msg);
+ }
+ })
+ }else {
+ addIcon(this.editForm).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.msg);
+ this.initList(true);
+ done();
+ this.closeHandler();
+ } else {
+ this.$message.error(res.data.msg);
+ }
+ })
+ }
+ } else {
+ return false;
+ }
+ });
+ },
+ closeHandler(){
+ this.editForm={
+ type:'svg',
+ oid:'',
+ libname:'',
+ iconname:'',
+ groups:[],
+ content:''
+ };
+ this.editOption.column[0].disabled=false;
+ this.editOption.column[1].disabled=false;
+ this.editVisible=false;
+ this.$refs.editForm.clearValidate();
+ },
+ delHandler(){
+ this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎璇ュ浘鏍囧悧锛�', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ const {name,oid} = this.checkItem;
+ const obj = {name,oid};
+ deleteIcon(obj).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.msg);
+ this.initList(true);
+ }
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
}
}
}
</script>
-<style scoped>
+<style scoped lang="scss">
+::v-deep{
+ svg{
+ font-size: inherit;
+ height: 100%;
+ width:100%;
+ }
+}
.tag-group{font-size: 14px;}
.el-tag{
margin: 0 0 10px 10px;
@@ -195,14 +508,41 @@
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{
font-size: 12px;
}
+.iconList__menu{
+ width: 150px;
+ position: fixed;
+ z-index: 1024;
+ flex-wrap: wrap;
+ background-color: #fff;
+}
+.iconList__item {
+ height: 34px;
+ line-height: 34px;
+ outline: 0;
+ padding: 0 10px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ width: 100%;
+ color: #666;
+}
+.iconList__item:hover {
+ cursor: pointer;
+ color: #409eff
+}
</style>
--
Gitblit v1.9.3