Compare commits

..

No commits in common. "huyt" and "dev" have entirely different histories.
huyt ... dev

389 changed files with 10777 additions and 86299 deletions

View File

@ -9,6 +9,5 @@ module.exports = {
// This plugin can significantly increase the speed of hot updates, when you have a large number of pages. // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
'plugins': ['dynamic-import-node'] 'plugins': ['dynamic-import-node']
} }
}, }
"compact": false
} }

BIN
dist.zip

Binary file not shown.

View File

@ -39,9 +39,7 @@
"-": "^0.0.1", "-": "^0.0.1",
"@babel/parser": "^7.7.4", "@babel/parser": "^7.7.4",
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"@wangeditor/editor": "^5.1.23", "axios": "0.24.0",
"@wangeditor/editor-for-vue": "^1.0.2",
"axios": "^0.24.0",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
"clipboard": "2.0.8", "clipboard": "2.0.8",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
@ -76,7 +74,7 @@
"vue-meta": "2.4.0", "vue-meta": "2.4.0",
"vue-quill-editor": "^3.0.6", "vue-quill-editor": "^3.0.6",
"vue-router": "3.4.9", "vue-router": "3.4.9",
"vuedraggable": "^2.24.3", "vuedraggable": "2.24.3",
"vuex": "3.6.0", "vuex": "3.6.0",
"xlsx": "^0.17.0" "xlsx": "^0.17.0"
}, },
@ -91,7 +89,6 @@
"connect": "3.6.6", "connect": "3.6.6",
"eslint": "7.15.0", "eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0", "eslint-plugin-vue": "7.2.0",
"html-webpack-plugin": "^5.6.0",
"lint-staged": "10.5.3", "lint-staged": "10.5.3",
"runjs": "4.4.2", "runjs": "4.4.2",
"sass": "1.32.13", "sass": "1.32.13",

View File

@ -7,6 +7,7 @@
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
} }
.logo { .logo {
font-family: "iconfont logo"; font-family: "iconfont logo";
font-size: 160px; font-size: 160px;

View File

@ -54,234 +54,6 @@
<div class="content unicode" style="display: block;"> <div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe655;</span>
<div class="name">工作台</div>
<div class="code-name">&amp;#xe655;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe605;</span>
<div class="name">首页</div>
<div class="code-name">&amp;#xe605;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe643;</span>
<div class="name">客户脚本端</div>
<div class="code-name">&amp;#xe643;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe71f;</span>
<div class="name">仓库档案</div>
<div class="code-name">&amp;#xe71f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62e;</span>
<div class="name">银行类别档案</div>
<div class="code-name">&amp;#xe62e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe727;</span>
<div class="name">客户分类档案</div>
<div class="code-name">&amp;#xe727;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6c3;</span>
<div class="name">存货分类档案</div>
<div class="code-name">&amp;#xe6c3;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68f;</span>
<div class="name">银行账户档案</div>
<div class="code-name">&amp;#xe68f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe600;</span>
<div class="name">人员档案</div>
<div class="code-name">&amp;#xe600;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe601;</span>
<div class="name">资产类别档案</div>
<div class="code-name">&amp;#xe601;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60f;</span>
<div class="name">付款条件档案</div>
<div class="code-name">&amp;#xe60f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe63e;</span>
<div class="name">用户档案</div>
<div class="code-name">&amp;#xe63e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62d;</span>
<div class="name">客户档案</div>
<div class="code-name">&amp;#xe62d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe71b;</span>
<div class="name">会计科目档案</div>
<div class="code-name">&amp;#xe71b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe602;</span>
<div class="name">税率档案</div>
<div class="code-name">&amp;#xe602;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61b;</span>
<div class="name">物料档案</div>
<div class="code-name">&amp;#xe61b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe614;</span>
<div class="name">供应商分类档案</div>
<div class="code-name">&amp;#xe614;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe69b;</span>
<div class="name">供应商档案</div>
<div class="code-name">&amp;#xe69b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe603;</span>
<div class="name">地区分类档案</div>
<div class="code-name">&amp;#xe603;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe759;</span>
<div class="name">结算方式档案</div>
<div class="code-name">&amp;#xe759;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6ae;</span>
<div class="name">组织档案</div>
<div class="code-name">&amp;#xe6ae;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6af;</span>
<div class="name">项目档案</div>
<div class="code-name">&amp;#xe6af;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe64e;</span>
<div class="name">证件类型档案</div>
<div class="code-name">&amp;#xe64e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe7e8;</span>
<div class="name">人员类别档案</div>
<div class="code-name">&amp;#xe7e8;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe621;</span>
<div class="name">部门档案</div>
<div class="code-name">&amp;#xe621;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe634;</span>
<div class="name">货位档案</div>
<div class="code-name">&amp;#xe634;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe812;</span>
<div class="name">数据来源</div>
<div class="code-name">&amp;#xe812;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6d8;</span>
<div class="name">tsend</div>
<div class="code-name">&amp;#xe6d8;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe7e3;</span>
<div class="name">脚本语言</div>
<div class="code-name">&amp;#xe7e3;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6ec;</span>
<div class="name">webhook配置</div>
<div class="code-name">&amp;#xe6ec;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe81e;</span>
<div class="name">开工-filled</div>
<div class="code-name">&amp;#xe81e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6e4;</span>
<div class="name">auto</div>
<div class="code-name">&amp;#xe6e4;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68e;</span>
<div class="name">配置权限</div>
<div class="code-name">&amp;#xe68e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68a;</span>
<div class="name">分发设置</div>
<div class="code-name">&amp;#xe68a;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68b;</span>
<div class="name">数据源</div>
<div class="code-name">&amp;#xe68b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68c;</span>
<div class="name">显示信息</div>
<div class="code-name">&amp;#xe68c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68d;</span>
<div class="name">基本信息</div>
<div class="code-name">&amp;#xe68d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe627;</span>
<div class="name">取消&关闭1</div>
<div class="code-name">&amp;#xe627;</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont">&#xe642;</span> <span class="icon iconfont">&#xe642;</span>
<div class="name">菜单/列表</div> <div class="name">菜单/列表</div>
@ -420,9 +192,9 @@
<pre><code class="language-css" <pre><code class="language-css"
>@font-face { >@font-face {
font-family: 'iconfont'; font-family: 'iconfont';
src: url('iconfont.woff2?t=1719799268815') format('woff2'), src: url('iconfont.woff2?t=1696663877393') format('woff2'),
url('iconfont.woff?t=1719799268815') format('woff'), url('iconfont.woff?t=1696663877393') format('woff'),
url('iconfont.ttf?t=1719799268815') format('truetype'); url('iconfont.ttf?t=1696663877393') format('truetype');
} }
</code></pre> </code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3> <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -448,348 +220,6 @@
<div class="content font-class"> <div class="content font-class">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-gongzuotai"></span>
<div class="name">
工作台
</div>
<div class="code-name">.icon-gongzuotai
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shouye"></span>
<div class="name">
首页
</div>
<div class="code-name">.icon-shouye
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-kehujiaobenduan"></span>
<div class="name">
客户脚本端
</div>
<div class="code-name">.icon-kehujiaobenduan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-cangku"></span>
<div class="name">
仓库档案
</div>
<div class="code-name">.icon-cangku
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-yinhang-F"></span>
<div class="name">
银行类别档案
</div>
<div class="code-name">.icon-yinhang-F
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-jianliguanli"></span>
<div class="name">
客户分类档案
</div>
<div class="code-name">.icon-jianliguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-cunhuotong"></span>
<div class="name">
存货分类档案
</div>
<div class="code-name">.icon-cunhuotong
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-yinhangdangan"></span>
<div class="name">
银行账户档案
</div>
<div class="code-name">.icon-yinhangdangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-renyuandangan"></span>
<div class="name">
人员档案
</div>
<div class="code-name">.icon-renyuandangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zichandanganchaxun"></span>
<div class="name">
资产类别档案
</div>
<div class="code-name">.icon-zichandanganchaxun
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-fukuantiaojianshezhi"></span>
<div class="name">
付款条件档案
</div>
<div class="code-name">.icon-fukuantiaojianshezhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-yonghudangan"></span>
<div class="name">
用户档案
</div>
<div class="code-name">.icon-yonghudangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-chengyuanrenwu"></span>
<div class="name">
客户档案
</div>
<div class="code-name">.icon-chengyuanrenwu
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zhongdengwangdengjijiaoyi"></span>
<div class="name">
会计科目档案
</div>
<div class="code-name">.icon-zhongdengwangdengjijiaoyi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shuishuaiweihu"></span>
<div class="name">
税率档案
</div>
<div class="code-name">.icon-shuishuaiweihu
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-wuliaodangan"></span>
<div class="name">
物料档案
</div>
<div class="code-name">.icon-wuliaodangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-gongyingshangdangan"></span>
<div class="name">
供应商分类档案
</div>
<div class="code-name">.icon-gongyingshangdangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-gongyingshangdangan1"></span>
<div class="name">
供应商档案
</div>
<div class="code-name">.icon-gongyingshangdangan1
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-a-91-2"></span>
<div class="name">
地区分类档案
</div>
<div class="code-name">.icon-a-91-2
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-jiesuanfangshi"></span>
<div class="name">
结算方式档案
</div>
<div class="code-name">.icon-jiesuanfangshi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zuzhidangan"></span>
<div class="name">
组织档案
</div>
<div class="code-name">.icon-zuzhidangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xiangmudanganku"></span>
<div class="name">
项目档案
</div>
<div class="code-name">.icon-xiangmudanganku
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-path-2-3"></span>
<div class="name">
证件类型档案
</div>
<div class="code-name">.icon-path-2-3
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-wenjian"></span>
<div class="name">
人员类别档案
</div>
<div class="code-name">.icon-wenjian
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-bumendangan"></span>
<div class="name">
部门档案
</div>
<div class="code-name">.icon-bumendangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-erji-huowei-changgui"></span>
<div class="name">
货位档案
</div>
<div class="code-name">.icon-erji-huowei-changgui
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shujulaiyuan"></span>
<div class="name">
数据来源
</div>
<div class="code-name">.icon-shujulaiyuan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-tsend"></span>
<div class="name">
tsend
</div>
<div class="code-name">.icon-tsend
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-script-language"></span>
<div class="name">
脚本语言
</div>
<div class="code-name">.icon-script-language
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-webhookpeizhi"></span>
<div class="name">
webhook配置
</div>
<div class="code-name">.icon-webhookpeizhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-kaigong-filled"></span>
<div class="name">
开工-filled
</div>
<div class="code-name">.icon-kaigong-filled
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-auto-01"></span>
<div class="name">
auto
</div>
<div class="code-name">.icon-auto-01
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-peizhiquanxian"></span>
<div class="name">
配置权限
</div>
<div class="code-name">.icon-peizhiquanxian
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-fenfashezhi"></span>
<div class="name">
分发设置
</div>
<div class="code-name">.icon-fenfashezhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shujuyuan"></span>
<div class="name">
数据源
</div>
<div class="code-name">.icon-shujuyuan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xianshixinxi"></span>
<div class="name">
显示信息
</div>
<div class="code-name">.icon-xianshixinxi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-jibenxinxi"></span>
<div class="name">
基本信息
</div>
<div class="code-name">.icon-jibenxinxi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-quxiaoguanbi1"></span>
<div class="name">
取消&关闭1
</div>
<div class="code-name">.icon-quxiaoguanbi1
</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont icon-caidan"></span> <span class="icon iconfont icon-caidan"></span>
<div class="name"> <div class="name">
@ -997,310 +427,6 @@
<div class="content symbol"> <div class="content symbol">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-gongzuotai"></use>
</svg>
<div class="name">工作台</div>
<div class="code-name">#icon-gongzuotai</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shouye"></use>
</svg>
<div class="name">首页</div>
<div class="code-name">#icon-shouye</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-kehujiaobenduan"></use>
</svg>
<div class="name">客户脚本端</div>
<div class="code-name">#icon-kehujiaobenduan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-cangku"></use>
</svg>
<div class="name">仓库档案</div>
<div class="code-name">#icon-cangku</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yinhang-F"></use>
</svg>
<div class="name">银行类别档案</div>
<div class="code-name">#icon-yinhang-F</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jianliguanli"></use>
</svg>
<div class="name">客户分类档案</div>
<div class="code-name">#icon-jianliguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-cunhuotong"></use>
</svg>
<div class="name">存货分类档案</div>
<div class="code-name">#icon-cunhuotong</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yinhangdangan"></use>
</svg>
<div class="name">银行账户档案</div>
<div class="code-name">#icon-yinhangdangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-renyuandangan"></use>
</svg>
<div class="name">人员档案</div>
<div class="code-name">#icon-renyuandangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zichandanganchaxun"></use>
</svg>
<div class="name">资产类别档案</div>
<div class="code-name">#icon-zichandanganchaxun</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-fukuantiaojianshezhi"></use>
</svg>
<div class="name">付款条件档案</div>
<div class="code-name">#icon-fukuantiaojianshezhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yonghudangan"></use>
</svg>
<div class="name">用户档案</div>
<div class="code-name">#icon-yonghudangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-chengyuanrenwu"></use>
</svg>
<div class="name">客户档案</div>
<div class="code-name">#icon-chengyuanrenwu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zhongdengwangdengjijiaoyi"></use>
</svg>
<div class="name">会计科目档案</div>
<div class="code-name">#icon-zhongdengwangdengjijiaoyi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shuishuaiweihu"></use>
</svg>
<div class="name">税率档案</div>
<div class="code-name">#icon-shuishuaiweihu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-wuliaodangan"></use>
</svg>
<div class="name">物料档案</div>
<div class="code-name">#icon-wuliaodangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-gongyingshangdangan"></use>
</svg>
<div class="name">供应商分类档案</div>
<div class="code-name">#icon-gongyingshangdangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-gongyingshangdangan1"></use>
</svg>
<div class="name">供应商档案</div>
<div class="code-name">#icon-gongyingshangdangan1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-a-91-2"></use>
</svg>
<div class="name">地区分类档案</div>
<div class="code-name">#icon-a-91-2</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jiesuanfangshi"></use>
</svg>
<div class="name">结算方式档案</div>
<div class="code-name">#icon-jiesuanfangshi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zuzhidangan"></use>
</svg>
<div class="name">组织档案</div>
<div class="code-name">#icon-zuzhidangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xiangmudanganku"></use>
</svg>
<div class="name">项目档案</div>
<div class="code-name">#icon-xiangmudanganku</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-path-2-3"></use>
</svg>
<div class="name">证件类型档案</div>
<div class="code-name">#icon-path-2-3</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-wenjian"></use>
</svg>
<div class="name">人员类别档案</div>
<div class="code-name">#icon-wenjian</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-bumendangan"></use>
</svg>
<div class="name">部门档案</div>
<div class="code-name">#icon-bumendangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-erji-huowei-changgui"></use>
</svg>
<div class="name">货位档案</div>
<div class="code-name">#icon-erji-huowei-changgui</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shujulaiyuan"></use>
</svg>
<div class="name">数据来源</div>
<div class="code-name">#icon-shujulaiyuan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-tsend"></use>
</svg>
<div class="name">tsend</div>
<div class="code-name">#icon-tsend</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-script-language"></use>
</svg>
<div class="name">脚本语言</div>
<div class="code-name">#icon-script-language</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-webhookpeizhi"></use>
</svg>
<div class="name">webhook配置</div>
<div class="code-name">#icon-webhookpeizhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-kaigong-filled"></use>
</svg>
<div class="name">开工-filled</div>
<div class="code-name">#icon-kaigong-filled</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-auto-01"></use>
</svg>
<div class="name">auto</div>
<div class="code-name">#icon-auto-01</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-peizhiquanxian"></use>
</svg>
<div class="name">配置权限</div>
<div class="code-name">#icon-peizhiquanxian</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-fenfashezhi"></use>
</svg>
<div class="name">分发设置</div>
<div class="code-name">#icon-fenfashezhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shujuyuan"></use>
</svg>
<div class="name">数据源</div>
<div class="code-name">#icon-shujuyuan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xianshixinxi"></use>
</svg>
<div class="name">显示信息</div>
<div class="code-name">#icon-xianshixinxi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jibenxinxi"></use>
</svg>
<div class="name">基本信息</div>
<div class="code-name">#icon-jibenxinxi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-quxiaoguanbi1"></use>
</svg>
<div class="name">取消&关闭1</div>
<div class="code-name">#icon-quxiaoguanbi1</div>
</li>
<li class="dib"> <li class="dib">
<svg class="icon svg-icon" aria-hidden="true"> <svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-caidan"></use> <use xlink:href="#icon-caidan"></use>

View File

@ -13,158 +13,6 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-gongzuotai:before {
content: "\e655";
}
.icon-shouye:before {
content: "\e605";
}
.icon-kehujiaobenduan:before {
content: "\e643";
}
.icon-cangku:before {
content: "\e71f";
}
.icon-yinhang-F:before {
content: "\e62e";
}
.icon-jianliguanli:before {
content: "\e727";
}
.icon-cunhuotong:before {
content: "\e6c3";
}
.icon-yinhangdangan:before {
content: "\e68f";
}
.icon-renyuandangan:before {
content: "\e600";
}
.icon-zichandanganchaxun:before {
content: "\e601";
}
.icon-fukuantiaojianshezhi:before {
content: "\e60f";
}
.icon-yonghudangan:before {
content: "\e63e";
}
.icon-chengyuanrenwu:before {
content: "\e62d";
}
.icon-zhongdengwangdengjijiaoyi:before {
content: "\e71b";
}
.icon-shuishuaiweihu:before {
content: "\e602";
}
.icon-wuliaodangan:before {
content: "\e61b";
}
.icon-gongyingshangdangan:before {
content: "\e614";
}
.icon-gongyingshangdangan1:before {
content: "\e69b";
}
.icon-a-91-2:before {
content: "\e603";
}
.icon-jiesuanfangshi:before {
content: "\e759";
}
.icon-zuzhidangan:before {
content: "\e6ae";
}
.icon-xiangmudanganku:before {
content: "\e6af";
}
.icon-path-2-3:before {
content: "\e64e";
}
.icon-wenjian:before {
content: "\e7e8";
}
.icon-bumendangan:before {
content: "\e621";
}
.icon-erji-huowei-changgui:before {
content: "\e634";
}
.icon-shujulaiyuan:before {
content: "\e812";
}
.icon-tsend:before {
content: "\e6d8";
}
.icon-script-language:before {
content: "\e7e3";
}
.icon-webhookpeizhi:before {
content: "\e6ec";
}
.icon-kaigong-filled:before {
content: "\e81e";
}
.icon-auto-01:before {
content: "\e6e4";
}
.icon-peizhiquanxian:before {
content: "\e68e";
}
.icon-fenfashezhi:before {
content: "\e68a";
}
.icon-shujuyuan:before {
content: "\e68b";
}
.icon-xianshixinxi:before {
content: "\e68c";
}
.icon-jibenxinxi:before {
content: "\e68d";
}
.icon-quxiaoguanbi1:before {
content: "\e627";
}
.icon-caidan:before { .icon-caidan:before {
content: "\e642"; content: "\e642";
} }

File diff suppressed because one or more lines are too long

View File

@ -5,272 +5,6 @@
"css_prefix_text": "icon-", "css_prefix_text": "icon-",
"description": "", "description": "",
"glyphs": [ "glyphs": [
{
"icon_id": "5035443",
"name": "工作台",
"font_class": "gongzuotai",
"unicode": "e655",
"unicode_decimal": 58965
},
{
"icon_id": "7083396",
"name": "首页",
"font_class": "shouye",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "11121518",
"name": "客户脚本端",
"font_class": "kehujiaobenduan",
"unicode": "e643",
"unicode_decimal": 58947
},
{
"icon_id": "7712191",
"name": "仓库档案",
"font_class": "cangku",
"unicode": "e71f",
"unicode_decimal": 59167
},
{
"icon_id": "37539306",
"name": "银行类别档案",
"font_class": "yinhang-F",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "1665242",
"name": "客户分类档案",
"font_class": "jianliguanli",
"unicode": "e727",
"unicode_decimal": 59175
},
{
"icon_id": "2450725",
"name": "存货分类档案",
"font_class": "cunhuotong",
"unicode": "e6c3",
"unicode_decimal": 59075
},
{
"icon_id": "4393215",
"name": "银行账户档案",
"font_class": "yinhangdangan",
"unicode": "e68f",
"unicode_decimal": 59023
},
{
"icon_id": "4424768",
"name": "人员档案",
"font_class": "renyuandangan",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "4659403",
"name": "资产类别档案",
"font_class": "zichandanganchaxun",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "7674544",
"name": "付款条件档案",
"font_class": "fukuantiaojianshezhi",
"unicode": "e60f",
"unicode_decimal": 58895
},
{
"icon_id": "10900331",
"name": "用户档案",
"font_class": "yonghudangan",
"unicode": "e63e",
"unicode_decimal": 58942
},
{
"icon_id": "12535859",
"name": "客户档案",
"font_class": "chengyuanrenwu",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "14237522",
"name": "会计科目档案",
"font_class": "zhongdengwangdengjijiaoyi",
"unicode": "e71b",
"unicode_decimal": 59163
},
{
"icon_id": "15919260",
"name": "税率档案",
"font_class": "shuishuaiweihu",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "20585487",
"name": "物料档案",
"font_class": "wuliaodangan",
"unicode": "e61b",
"unicode_decimal": 58907
},
{
"icon_id": "20713639",
"name": "供应商分类档案",
"font_class": "gongyingshangdangan",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "21507384",
"name": "供应商档案",
"font_class": "gongyingshangdangan1",
"unicode": "e69b",
"unicode_decimal": 59035
},
{
"icon_id": "25997282",
"name": "地区分类档案",
"font_class": "a-91-2",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "26045975",
"name": "结算方式档案",
"font_class": "jiesuanfangshi",
"unicode": "e759",
"unicode_decimal": 59225
},
{
"icon_id": "27089294",
"name": "组织档案",
"font_class": "zuzhidangan",
"unicode": "e6ae",
"unicode_decimal": 59054
},
{
"icon_id": "27928496",
"name": "项目档案",
"font_class": "xiangmudanganku",
"unicode": "e6af",
"unicode_decimal": 59055
},
{
"icon_id": "35882632",
"name": "证件类型档案",
"font_class": "path-2-3",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "3765344",
"name": "人员类别档案",
"font_class": "wenjian",
"unicode": "e7e8",
"unicode_decimal": 59368
},
{
"icon_id": "21013308",
"name": "部门档案",
"font_class": "bumendangan",
"unicode": "e621",
"unicode_decimal": 58913
},
{
"icon_id": "27201660",
"name": "货位档案",
"font_class": "erji-huowei-changgui",
"unicode": "e634",
"unicode_decimal": 58932
},
{
"icon_id": "38608609",
"name": "数据来源",
"font_class": "shujulaiyuan",
"unicode": "e812",
"unicode_decimal": 59410
},
{
"icon_id": "1786166",
"name": "tsend",
"font_class": "tsend",
"unicode": "e6d8",
"unicode_decimal": 59096
},
{
"icon_id": "5657738",
"name": "脚本语言",
"font_class": "script-language",
"unicode": "e7e3",
"unicode_decimal": 59363
},
{
"icon_id": "10420513",
"name": "webhook配置",
"font_class": "webhookpeizhi",
"unicode": "e6ec",
"unicode_decimal": 59116
},
{
"icon_id": "12428742",
"name": "开工-filled",
"font_class": "kaigong-filled",
"unicode": "e81e",
"unicode_decimal": 59422
},
{
"icon_id": "30653940",
"name": "auto",
"font_class": "auto-01",
"unicode": "e6e4",
"unicode_decimal": 59108
},
{
"icon_id": "37706795",
"name": "配置权限",
"font_class": "peizhiquanxian",
"unicode": "e68e",
"unicode_decimal": 59022
},
{
"icon_id": "37706794",
"name": "分发设置",
"font_class": "fenfashezhi",
"unicode": "e68a",
"unicode_decimal": 59018
},
{
"icon_id": "37706798",
"name": "数据源",
"font_class": "shujuyuan",
"unicode": "e68b",
"unicode_decimal": 59019
},
{
"icon_id": "37706797",
"name": "显示信息",
"font_class": "xianshixinxi",
"unicode": "e68c",
"unicode_decimal": 59020
},
{
"icon_id": "37706796",
"name": "基本信息",
"font_class": "jibenxinxi",
"unicode": "e68d",
"unicode_decimal": 59021
},
{
"icon_id": "16290376",
"name": "取消&关闭1",
"font_class": "quxiaoguanbi1",
"unicode": "e627",
"unicode_decimal": 58919
},
{ {
"icon_id": "8094171", "icon_id": "8094171",
"name": "菜单/列表", "name": "菜单/列表",

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -13,42 +13,41 @@
</template> </template>
<script> <script>
import { setTheme } from '@/utils/setTheme' import { setTheme } from "@/utils/setTheme";
export default { export default {
name: 'App', name: "App",
data() { data() {
return { return {
chalk: '', // content of theme-chalk css chalk: "", // content of theme-chalk css
theme: '', theme: "",
routerAlive: true routerAlive: true,
} };
}, },
provide() { provide() {
return { return {
routerRefresh: this.routerRefresh routerRefresh: this.routerRefresh,
} };
}, },
mounted() { mounted() {
setTheme(this.$store.state.settings.theme) setTheme(this.$store.state.settings.theme);
window.addEventListener( window.addEventListener(
'hashchange', "hashchange",
() => { () => {
let currentPath = window.location.hash.slice(1) let currentPath = window.location.hash.slice(1);
if (this.$route.path !== currentPath) { if (this.$route.path !== currentPath) {
this.$router.push(currentPath) this.$router.push(currentPath);
} }
}, },
false false
) );
}, },
methods: { methods: {
routerRefresh() { routerRefresh() {
this.routerAlive = false this.routerAlive = false;
this.$nextTick(() => { this.$nextTick(() => {
this.routerAlive = true this.routerAlive = true;
}) });
} },
}, },
metaInfo() { metaInfo() {
return { return {
@ -58,27 +57,26 @@ export default {
titleTemplate: (title) => { titleTemplate: (title) => {
return title return title
? `${title} - ${process.env.VUE_APP_TITLE}` ? `${title} - ${process.env.VUE_APP_TITLE}`
: process.env.VUE_APP_TITLE : process.env.VUE_APP_TITLE;
} },
} };
}, },
activated() { activated() {
// 使 Vue.nextTick // 使 Vue.nextTick
this.$nextTick(() => { this.$nextTick(() => {
}) });
}, },
deactivated() { deactivated() {
// 使 Vue.nextTick // 使 Vue.nextTick
this.$nextTick(() => { this.$nextTick(() => {
}) });
} },
} };
</script> </script>
<style lang="scss"> <style lang="scss">
.loadingclass { .loadingclass {
z-index: 9999999 !important; z-index: 9999999 !important;
} }
// //
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 5px; width: 5px;
@ -107,124 +105,63 @@ export default {
} }
</style> </style>
<style lang="scss"> <style lang="scss">
//
.settingBtn {
cursor: pointer;
width: 24px;
height: 24px;
background: #EBEBED;
border-radius: 6px;
display: flex;
justify-content: center;
align-items: center;
> img {
width: 14px !important;
height: 14px !important;
}
}
.deleBtn {
cursor: pointer;
margin-left: 10px;
width: 24px;
height: 24px;
background: #EBEBED;
border-radius: 6px;
display: flex;
justify-content: center;
align-items: center;
> img {
width: 14px !important;
height: 14px !important;
}
}
//
.cell{
font-size: 14px !important;
}
.el-form-item__content {
display: block !important;
}
//
.el-button--primary.is-plain {
color: #fff !important;
}
//dialog线
.el-dialog__header {
border-bottom: 1px solid #ebebeb;
}
/* 定义滚动条样式 */
.scrollable-box {
overflow: auto;
box-sizing: border-box;
}
.scrollable-box:hover {
overflow: auto;
}
.el-table__header-wrapper { .el-table__header-wrapper {
border-radius: 10px !important;
background: #f7f7f7 !important; background: #f7f7f7 !important;
} }
.el-table__body-wrapper {
.el-button--primary { // border-radius: 15px !important;
background-color: #3877f5 !important; // margin-top: 5px;
}
.el-table__body {
padding-top: 5px;
} }
.el-table { .el-table {
width: 100%; width: 100%;
margin-bottom: 20px;
&::before { &::before {
display: none; display: none;
} }
.el-table__body {
//-webkit-border-horizontal-spacing: 13px; //
-webkit-border-vertical-spacing: 7px; //
}
// //
thead th { thead th {
font-size: 14px; font-size: 14px;
color: #575757; color: #575757;
&:nth-last-child(2) { &:nth-last-child(2) {
border-right: 1px solid rgba(0, 0, 0, 0.1) !important; border-right: 1px solid rgba(0, 0, 0, 0.1) !important;
border-radius: 0 5px 5px 0; border-radius: 0 5px 5px 0;
right: 1px; right: 1px;
} }
} }
thead th, thead th,
.el-table__row td { .el-table__row td {
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
padding: 10px 0; padding: 10px 0;
border-top: 0px solid rgba(0, 0, 0, 0.1) !important; border-top: 1px solid rgba(0, 0, 0, 0.1) !important;
border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important; border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;
background: #fff;
&:first-child { &:first-child {
border-left: 0px solid rgba(0, 0, 0, 0.1) !important; border-left: 1px solid rgba(0, 0, 0, 0.1) !important;
// border-radius: 5px 0 0 5px; // border-radius: 5px 0 0 5px;
border-radius: 10px 0 0 10px;
} }
} }
.el-table__row > td { .el-table__row > td {
font-size: 12px; font-size: 12px;
color: #333333; color: #333333;
&:last-child { &:last-child {
border-right: 0px solid rgba(0, 0, 0, 0.1) !important; border-right: 1px solid rgba(0, 0, 0, 0.1) !important;
// border-radius: 0 5px 5px 0; // border-radius: 0 5px 5px 0;
border-radius: 0 10px 10px 0;
right: 1px; right: 1px;
} }
} }
.el-table__body tr:hover > td.el-table__cell { .el-table__body tr:hover > td.el-table__cell {
background-color: rgba(0, 110, 255, 0.05); background-color: rgba(0, 110, 255, 0.05);
} }
.el-table__fixed::before { .el-table__fixed::before {
display: none; display: none;
} }

View File

@ -1,65 +0,0 @@
import request from '@/utils/request'
// 表格数据获取
export function confTempSaveAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/save",
method: 'post',
data,
})
}
export function queryVoucherTypeAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryVoucherType",
method: 'post',
data,
})
}export function tempupdateAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/update",
method: 'post',
data,
})
}export function tempqueryAllAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/queryAll",
method: 'post',
data,
})
}
export function tempdeleteAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/delete",
method: 'post',
data,
})
}export function tempcheckAbstractAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/checkAbstract",
method: 'post',
data,
})
}export function tempQueryAllAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/type/queryAll",
method: 'post',
data,
})
}export function typeSaveAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/type/save",
method: 'post',
data,
})
}export function typeUpdateAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/type/update",
method: 'post',
data,
})
}export function typeDeleteAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/temp/type/delete",
method: 'post',
data,
})
}

View File

@ -1,80 +0,0 @@
//会计科技
import request from "@/utils/request";
//业务模块
//新增模块
export function subjectContrastQueryAll(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectContrast/queryAll",
method: "post",
data,
});
}export function queryOrgBookVOAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryOrgBookVO",
method: "post",
data,
});
}export function queryBdinfoListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryBdinfoList",
method: "post",
data,
});
}export function subjectContrastSaveAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectContrast/save",
method: "post",
data,
});
}export function subjectContrastqueryAll(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectContrast/queryAll",
method: "post",
data,
});
}export function subjectContrastdeleteAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectContrast/delete",
method: "post",
data,
});
}export function subjectContrastupdateAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectContrast/update",
method: "post",
data,
});
}export function queryDataByMapAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryDataByMap",
method: "post",
data,
});
}export function queryDataPagedByMapAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryDataPagedByMap",
method: "post",
data,
});
}export function queryAccSubjByOrgBookIdAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryAccSubjByOrgBookId",
method: "post",
data,
});
}export function subjectContrastBDelete(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectContrastB/delete",
method: "post",
data,
});
}export function queryGlsubrelationAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryGlsubrelation",
method: "post",
data,
});
}

View File

@ -1,55 +0,0 @@
import request from "@/utils/request";
export function logqueryBillAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/push/log/queryBill",
method: "post",
data,
});
}
// 生成
export function coreGenerateAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/core/generate",
method: "post",
data,
});
}
//收回
export function backVoucherAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/core/backVoucher",
method: "post",
data,
});
}
// 凭证明细查询
export function queryDetailsByBillCodeAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/push/log/queryDetailsByBillCode",
method: "post",
data,
});
}
export function queryBillFiledsAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/push/log/queryBillFileds",
method: "post",
data,
});
}
export function queryBillPagedAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/push/log/queryBillPaged",
method: "post",
data,
});
}
export function queryDetailsByBillCodeAndMdmIdAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/push/log/queryDetailsByBillCodeAndMdmId",
method: "post",
data,
});
}

View File

@ -1,56 +0,0 @@
//会计科技
import request from "@/utils/request";
//业务模块
//新增模块
export function queryOrgVOAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryOrgVO",
method: "post",
data,
});
}export function queryOrgBookVOAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryOrgBookVO",
method: "post",
data,
});
}export function subjectClassificationqueryAllAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectClassification/queryAll",
method: "post",
data,
});
}export function subjectClassificationSaveAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectClassification/save",
method: "post",
data,
});
}export function subjectClassificationUpdateAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectClassification/update",
method: "post",
data,
});
}export function queryByInfluenceIdsAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectContrast/queryByInfluenceIds",
method: "post",
data,
});
}export function subjectClassificationDeleteAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/subjectClassification/delete",
method: "post",
data,
});
}export function queryBdInfoAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryBdInfo",
method: "post",
data,
});
}

View File

@ -1,138 +0,0 @@
import request from "@/utils/request";
import baseTree from '@/components/base/BaseMenuTree/index.vue'
import basePage from '@/components/base/basePage/index.vue'
export default {
components: { basePage, baseTree }
}
//业务模块
//新增模块
export function queryByIdAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModule/save",
method: "post",
data,
});
}export function queryAllAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModule/queryAll",
method: "post",
data,
});
}export function businessModuledeleteAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModule/delete",
method: "post",
data,
});
}export function businessModuleUpdateAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModule/update",
method: "post",
data,
});
}export function queryMdmsByModuleIdAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModuleMdm/queryMdmsByModuleId",
method: "post",
data,
});
}export function businessModulequeryAllAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/mdm/queryAll",
method: "post",
data,
});
}export function businessModuleMdmSaveListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModuleMdm/saveList",
method: "post",
data,
});
}export function businessModuleMdmupdateListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModuleMdm/updateList",
method: "post",
data,
});
}export function businessModuleMdmdeleteListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModuleMdm/deleteList",
method: "post",
data,
});
}export function influenceFactorqueryAllAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactor/queryAll",
method: "post",
data,
});
}export function influenceFactorsaveAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactor/save",
method: "post",
data,
});
}export function influenceFactorupdateAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactor/update",
method: "post",
data,
});
}export function deleteAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactor/delete",
method: "post",
data,
});
}export function queryByMdmIdAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactorCorrelation/queryByMdmId",
method: "post",
data,
});
}export function queryMdmAndFiledsByMdmIdAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/mdm/queryMdmAndFiledsByMdmId",
method: "post",
data,
});
}export function influenceFactorCorrelationsaveListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactorCorrelation/saveList",
method: "post",
data,
});
}export function influenceFactorCorrelationupdateListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactorCorrelation/updateList",
method: "post",
data,
});
}export function influenceFactorCorrelationdeleteListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/influenceFactorCorrelation/deleteList",
method: "post",
data,
});
}export function queryBdinfoListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryBdinfoList",
method: "post",
data,
});
}export function queryCashFlowMapAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/bd/queryCashFlowMap",
method: "post",
data,
});
}export function queryMdmAndFiledssByMdmIdAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/mdmfile/queryMdmAndFiledssByMdmId",
method: "post",
data,
});
}

View File

@ -1,11 +0,0 @@
import request from "@/utils/request";
//影响因素关联
//新增模块
export function queryModuleIncludeMdmListAPI(data) {
return request({
url: "/kangarooDataCenterV3/ae/conf/businessModuleMdm/queryModuleIncludeMdmList",
method: "post",
data,
});
}

View File

@ -9,6 +9,8 @@ export function login(login_name, password) {
const data = { const data = {
loginCode:login_name, loginCode:login_name,
password, password,
} }
return request({ return request({
url: 'kangarooDataCenterV3/entranceController/option', url: 'kangarooDataCenterV3/entranceController/option',

View File

@ -566,7 +566,7 @@ body {
background: #FFFFFF; background: #FFFFFF;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 14px; font-size: 14px;
line-height: 1.4285em;
/* color: rgba(0, 0, 0, 0.87); */ /* color: rgba(0, 0, 0, 0.87); */
color: #58657d; color: #58657d;
font-smoothing: antialiased; font-smoothing: antialiased;
@ -629,6 +629,10 @@ h5:last-child {
Text Text
*******************************/ *******************************/
p {
margin: 0em 0em 1em;
line-height: 1.4285em;
}
p:first-child { p:first-child {
margin-top: 0em; margin-top: 0em;
@ -25193,7 +25197,7 @@ Floated Menu / Item
margin: 1em 0em; margin: 1em 0em;
background: #F8F8F9; background: #F8F8F9;
padding: 1em 1.5em; padding: 1em 1.5em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease;
border-radius: 0.28571429rem; border-radius: 0.28571429rem;
@ -28794,7 +28798,7 @@ a.ui.card:hover,
border-left: none; border-left: none;
font-size: 1em; font-size: 1em;
max-width: 500px; max-width: 500px;
line-height: 1.4285em;
} }
/*-------------- /*--------------
@ -29074,7 +29078,7 @@ a.ui.card:hover,
margin-top: 0.6em; margin-top: 0.6em;
max-width: auto; max-width: auto;
font-size: 1em; font-size: 1em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
} }
@ -33736,7 +33740,7 @@ a.ui.nag {
min-width: min-content; min-width: min-content;
z-index: 1900; z-index: 1900;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: 250px; max-width: 250px;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;
@ -33810,7 +33814,7 @@ a.ui.nag {
white-space: nowrap; white-space: nowrap;
font-size: 1rem; font-size: 1rem;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: none; max-width: none;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;

View File

@ -566,7 +566,7 @@ body {
background: #FFFFFF; background: #FFFFFF;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 14px; font-size: 14px;
line-height: 1.4285em;
/* color: rgba(0, 0, 0, 0.87); */ /* color: rgba(0, 0, 0, 0.87); */
color: #58657d; color: #58657d;
font-smoothing: antialiased; font-smoothing: antialiased;
@ -631,7 +631,7 @@ h5:last-child {
p { p {
margin: 0em 0em 1em; margin: 0em 0em 1em;
line-height: 1.4285em;
} }
p:first-child { p:first-child {
@ -25197,7 +25197,7 @@ Floated Menu / Item
margin: 1em 0em; margin: 1em 0em;
background: #F8F8F9; background: #F8F8F9;
padding: 1em 1.5em; padding: 1em 1.5em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease;
border-radius: 0.28571429rem; border-radius: 0.28571429rem;
@ -28798,7 +28798,7 @@ a.ui.card:hover,
border-left: none; border-left: none;
font-size: 1em; font-size: 1em;
max-width: 500px; max-width: 500px;
line-height: 1.4285em;
} }
/*-------------- /*--------------
@ -29078,7 +29078,7 @@ a.ui.card:hover,
margin-top: 0.6em; margin-top: 0.6em;
max-width: auto; max-width: auto;
font-size: 1em; font-size: 1em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
} }
@ -33740,7 +33740,7 @@ a.ui.nag {
min-width: min-content; min-width: min-content;
z-index: 1900; z-index: 1900;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: 250px; max-width: 250px;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;
@ -33814,7 +33814,7 @@ a.ui.nag {
white-space: nowrap; white-space: nowrap;
font-size: 1rem; font-size: 1rem;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: none; max-width: none;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;

View File

@ -652,7 +652,7 @@ body {
background: #FFFFFF; background: #FFFFFF;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 14px; font-size: 14px;
line-height: 1.4285em;
/* color: rgba(0, 0, 0, 0.87); */ /* color: rgba(0, 0, 0, 0.87); */
color: #58657d; color: #58657d;
font-smoothing: antialiased; font-smoothing: antialiased;
@ -717,7 +717,7 @@ h5:last-child {
p { p {
margin: 0em 0em 1em; margin: 0em 0em 1em;
line-height: 1.4285em;
} }
p:first-child { p:first-child {
@ -25283,7 +25283,7 @@ Floated Menu / Item
margin: 1em 0em; margin: 1em 0em;
background: #F8F8F9; background: #F8F8F9;
padding: 1em 1.5em; padding: 1em 1.5em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease;
border-radius: 0.28571429rem; border-radius: 0.28571429rem;
@ -28884,7 +28884,7 @@ a.ui.card:hover,
border-left: none; border-left: none;
font-size: 1em; font-size: 1em;
max-width: 500px; max-width: 500px;
line-height: 1.4285em;
} }
/*-------------- /*--------------
@ -29164,7 +29164,7 @@ a.ui.card:hover,
margin-top: 0.6em; margin-top: 0.6em;
max-width: auto; max-width: auto;
font-size: 1em; font-size: 1em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
} }
@ -33826,7 +33826,7 @@ a.ui.nag {
min-width: min-content; min-width: min-content;
z-index: 1900; z-index: 1900;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: 250px; max-width: 250px;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;
@ -33900,7 +33900,7 @@ a.ui.nag {
white-space: nowrap; white-space: nowrap;
font-size: 1rem; font-size: 1rem;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: none; max-width: none;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;
@ -46970,7 +46970,7 @@ body {
background: #FFFFFF; background: #FFFFFF;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 14px; font-size: 14px;
line-height: 1.4285em;
/* color: rgba(0, 0, 0, 0.87); */ /* color: rgba(0, 0, 0, 0.87); */
color: #58657d; color: #58657d;
font-smoothing: antialiased; font-smoothing: antialiased;
@ -47035,7 +47035,7 @@ h5:last-child {
p { p {
margin: 0em 0em 1em; margin: 0em 0em 1em;
line-height: 1.4285em;
} }
p:first-child { p:first-child {
@ -71601,7 +71601,7 @@ Floated Menu / Item
margin: 1em 0em; margin: 1em 0em;
background: #F8F8F9; background: #F8F8F9;
padding: 1em 1.5em; padding: 1em 1.5em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease;
border-radius: 0.28571429rem; border-radius: 0.28571429rem;
@ -75202,7 +75202,7 @@ a.ui.card:hover,
border-left: none; border-left: none;
font-size: 1em; font-size: 1em;
max-width: 500px; max-width: 500px;
line-height: 1.4285em;
} }
/*-------------- /*--------------
@ -75482,7 +75482,7 @@ a.ui.card:hover,
margin-top: 0.6em; margin-top: 0.6em;
max-width: auto; max-width: auto;
font-size: 1em; font-size: 1em;
line-height: 1.4285em;
color: rgba(0, 0, 0, 0.87); color: rgba(0, 0, 0, 0.87);
} }
@ -80144,7 +80144,7 @@ a.ui.nag {
min-width: min-content; min-width: min-content;
z-index: 1900; z-index: 1900;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: 250px; max-width: 250px;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;
@ -80218,7 +80218,7 @@ a.ui.nag {
white-space: nowrap; white-space: nowrap;
font-size: 1rem; font-size: 1rem;
border: 1px solid #D4D4D5; border: 1px solid #D4D4D5;
line-height: 1.4285em;
max-width: none; max-width: none;
background: #FFFFFF; background: #FFFFFF;
padding: 0.833em 1em; padding: 0.833em 1em;

View File

@ -3342,6 +3342,7 @@
.custom-theme .el-radio-group { .custom-theme .el-radio-group {
display: inline-block; display: inline-block;
line-height: 1;
vertical-align: middle; vertical-align: middle;
font-size: 0 font-size: 0
} }
@ -3354,6 +3355,7 @@
.custom-theme .el-radio-button__inner { .custom-theme .el-radio-button__inner {
display: inline-block; display: inline-block;
line-height: 1;
white-space: nowrap; white-space: nowrap;
vertical-align: middle; vertical-align: middle;
background: #fff; background: #fff;

View File

@ -7,6 +7,7 @@
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
} }
.logo { .logo {
font-family: "iconfont logo"; font-family: "iconfont logo";
font-size: 160px; font-size: 160px;

View File

@ -54,234 +54,6 @@
<div class="content unicode" style="display: block;"> <div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe655;</span>
<div class="name">工作台</div>
<div class="code-name">&amp;#xe655;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe605;</span>
<div class="name">首页</div>
<div class="code-name">&amp;#xe605;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe643;</span>
<div class="name">客户脚本端</div>
<div class="code-name">&amp;#xe643;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe71f;</span>
<div class="name">仓库档案</div>
<div class="code-name">&amp;#xe71f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62e;</span>
<div class="name">银行类别档案</div>
<div class="code-name">&amp;#xe62e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe727;</span>
<div class="name">客户分类档案</div>
<div class="code-name">&amp;#xe727;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6c3;</span>
<div class="name">存货分类档案</div>
<div class="code-name">&amp;#xe6c3;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68f;</span>
<div class="name">银行账户档案</div>
<div class="code-name">&amp;#xe68f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe600;</span>
<div class="name">人员档案</div>
<div class="code-name">&amp;#xe600;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe601;</span>
<div class="name">资产类别档案</div>
<div class="code-name">&amp;#xe601;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60f;</span>
<div class="name">付款条件档案</div>
<div class="code-name">&amp;#xe60f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe63e;</span>
<div class="name">用户档案</div>
<div class="code-name">&amp;#xe63e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62d;</span>
<div class="name">客户档案</div>
<div class="code-name">&amp;#xe62d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe71b;</span>
<div class="name">会计科目档案</div>
<div class="code-name">&amp;#xe71b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe602;</span>
<div class="name">税率档案</div>
<div class="code-name">&amp;#xe602;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61b;</span>
<div class="name">物料档案</div>
<div class="code-name">&amp;#xe61b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe614;</span>
<div class="name">供应商分类档案</div>
<div class="code-name">&amp;#xe614;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe69b;</span>
<div class="name">供应商档案</div>
<div class="code-name">&amp;#xe69b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe603;</span>
<div class="name">地区分类档案</div>
<div class="code-name">&amp;#xe603;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe759;</span>
<div class="name">结算方式档案</div>
<div class="code-name">&amp;#xe759;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6ae;</span>
<div class="name">组织档案</div>
<div class="code-name">&amp;#xe6ae;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6af;</span>
<div class="name">项目档案</div>
<div class="code-name">&amp;#xe6af;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe64e;</span>
<div class="name">证件类型档案</div>
<div class="code-name">&amp;#xe64e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe7e8;</span>
<div class="name">人员类别档案</div>
<div class="code-name">&amp;#xe7e8;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe621;</span>
<div class="name">部门档案</div>
<div class="code-name">&amp;#xe621;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe634;</span>
<div class="name">货位档案</div>
<div class="code-name">&amp;#xe634;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe812;</span>
<div class="name">数据来源</div>
<div class="code-name">&amp;#xe812;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6d8;</span>
<div class="name">tsend</div>
<div class="code-name">&amp;#xe6d8;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe7e3;</span>
<div class="name">脚本语言</div>
<div class="code-name">&amp;#xe7e3;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6ec;</span>
<div class="name">webhook配置</div>
<div class="code-name">&amp;#xe6ec;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe81e;</span>
<div class="name">开工-filled</div>
<div class="code-name">&amp;#xe81e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6e4;</span>
<div class="name">auto</div>
<div class="code-name">&amp;#xe6e4;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68e;</span>
<div class="name">配置权限</div>
<div class="code-name">&amp;#xe68e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68a;</span>
<div class="name">分发设置</div>
<div class="code-name">&amp;#xe68a;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68b;</span>
<div class="name">数据源</div>
<div class="code-name">&amp;#xe68b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68c;</span>
<div class="name">显示信息</div>
<div class="code-name">&amp;#xe68c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe68d;</span>
<div class="name">基本信息</div>
<div class="code-name">&amp;#xe68d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe627;</span>
<div class="name">取消&关闭1</div>
<div class="code-name">&amp;#xe627;</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont">&#xe642;</span> <span class="icon iconfont">&#xe642;</span>
<div class="name">菜单/列表</div> <div class="name">菜单/列表</div>
@ -420,9 +192,9 @@
<pre><code class="language-css" <pre><code class="language-css"
>@font-face { >@font-face {
font-family: 'iconfont'; font-family: 'iconfont';
src: url('iconfont.woff2?t=1719799268815') format('woff2'), src: url('iconfont.woff2?t=1696663877393') format('woff2'),
url('iconfont.woff?t=1719799268815') format('woff'), url('iconfont.woff?t=1696663877393') format('woff'),
url('iconfont.ttf?t=1719799268815') format('truetype'); url('iconfont.ttf?t=1696663877393') format('truetype');
} }
</code></pre> </code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3> <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -448,348 +220,6 @@
<div class="content font-class"> <div class="content font-class">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-gongzuotai"></span>
<div class="name">
工作台
</div>
<div class="code-name">.icon-gongzuotai
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shouye"></span>
<div class="name">
首页
</div>
<div class="code-name">.icon-shouye
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-kehujiaobenduan"></span>
<div class="name">
客户脚本端
</div>
<div class="code-name">.icon-kehujiaobenduan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-cangku"></span>
<div class="name">
仓库档案
</div>
<div class="code-name">.icon-cangku
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-yinhang-F"></span>
<div class="name">
银行类别档案
</div>
<div class="code-name">.icon-yinhang-F
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-jianliguanli"></span>
<div class="name">
客户分类档案
</div>
<div class="code-name">.icon-jianliguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-cunhuotong"></span>
<div class="name">
存货分类档案
</div>
<div class="code-name">.icon-cunhuotong
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-yinhangdangan"></span>
<div class="name">
银行账户档案
</div>
<div class="code-name">.icon-yinhangdangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-renyuandangan"></span>
<div class="name">
人员档案
</div>
<div class="code-name">.icon-renyuandangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zichandanganchaxun"></span>
<div class="name">
资产类别档案
</div>
<div class="code-name">.icon-zichandanganchaxun
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-fukuantiaojianshezhi"></span>
<div class="name">
付款条件档案
</div>
<div class="code-name">.icon-fukuantiaojianshezhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-yonghudangan"></span>
<div class="name">
用户档案
</div>
<div class="code-name">.icon-yonghudangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-chengyuanrenwu"></span>
<div class="name">
客户档案
</div>
<div class="code-name">.icon-chengyuanrenwu
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zhongdengwangdengjijiaoyi"></span>
<div class="name">
会计科目档案
</div>
<div class="code-name">.icon-zhongdengwangdengjijiaoyi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shuishuaiweihu"></span>
<div class="name">
税率档案
</div>
<div class="code-name">.icon-shuishuaiweihu
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-wuliaodangan"></span>
<div class="name">
物料档案
</div>
<div class="code-name">.icon-wuliaodangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-gongyingshangdangan"></span>
<div class="name">
供应商分类档案
</div>
<div class="code-name">.icon-gongyingshangdangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-gongyingshangdangan1"></span>
<div class="name">
供应商档案
</div>
<div class="code-name">.icon-gongyingshangdangan1
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-a-91-2"></span>
<div class="name">
地区分类档案
</div>
<div class="code-name">.icon-a-91-2
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-jiesuanfangshi"></span>
<div class="name">
结算方式档案
</div>
<div class="code-name">.icon-jiesuanfangshi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zuzhidangan"></span>
<div class="name">
组织档案
</div>
<div class="code-name">.icon-zuzhidangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xiangmudanganku"></span>
<div class="name">
项目档案
</div>
<div class="code-name">.icon-xiangmudanganku
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-path-2-3"></span>
<div class="name">
证件类型档案
</div>
<div class="code-name">.icon-path-2-3
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-wenjian"></span>
<div class="name">
人员类别档案
</div>
<div class="code-name">.icon-wenjian
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-bumendangan"></span>
<div class="name">
部门档案
</div>
<div class="code-name">.icon-bumendangan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-erji-huowei-changgui"></span>
<div class="name">
货位档案
</div>
<div class="code-name">.icon-erji-huowei-changgui
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shujulaiyuan"></span>
<div class="name">
数据来源
</div>
<div class="code-name">.icon-shujulaiyuan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-tsend"></span>
<div class="name">
tsend
</div>
<div class="code-name">.icon-tsend
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-script-language"></span>
<div class="name">
脚本语言
</div>
<div class="code-name">.icon-script-language
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-webhookpeizhi"></span>
<div class="name">
webhook配置
</div>
<div class="code-name">.icon-webhookpeizhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-kaigong-filled"></span>
<div class="name">
开工-filled
</div>
<div class="code-name">.icon-kaigong-filled
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-auto-01"></span>
<div class="name">
auto
</div>
<div class="code-name">.icon-auto-01
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-peizhiquanxian"></span>
<div class="name">
配置权限
</div>
<div class="code-name">.icon-peizhiquanxian
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-fenfashezhi"></span>
<div class="name">
分发设置
</div>
<div class="code-name">.icon-fenfashezhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shujuyuan"></span>
<div class="name">
数据源
</div>
<div class="code-name">.icon-shujuyuan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-xianshixinxi"></span>
<div class="name">
显示信息
</div>
<div class="code-name">.icon-xianshixinxi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-jibenxinxi"></span>
<div class="name">
基本信息
</div>
<div class="code-name">.icon-jibenxinxi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-quxiaoguanbi1"></span>
<div class="name">
取消&关闭1
</div>
<div class="code-name">.icon-quxiaoguanbi1
</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont icon-caidan"></span> <span class="icon iconfont icon-caidan"></span>
<div class="name"> <div class="name">
@ -997,310 +427,6 @@
<div class="content symbol"> <div class="content symbol">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-gongzuotai"></use>
</svg>
<div class="name">工作台</div>
<div class="code-name">#icon-gongzuotai</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shouye"></use>
</svg>
<div class="name">首页</div>
<div class="code-name">#icon-shouye</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-kehujiaobenduan"></use>
</svg>
<div class="name">客户脚本端</div>
<div class="code-name">#icon-kehujiaobenduan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-cangku"></use>
</svg>
<div class="name">仓库档案</div>
<div class="code-name">#icon-cangku</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yinhang-F"></use>
</svg>
<div class="name">银行类别档案</div>
<div class="code-name">#icon-yinhang-F</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jianliguanli"></use>
</svg>
<div class="name">客户分类档案</div>
<div class="code-name">#icon-jianliguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-cunhuotong"></use>
</svg>
<div class="name">存货分类档案</div>
<div class="code-name">#icon-cunhuotong</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yinhangdangan"></use>
</svg>
<div class="name">银行账户档案</div>
<div class="code-name">#icon-yinhangdangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-renyuandangan"></use>
</svg>
<div class="name">人员档案</div>
<div class="code-name">#icon-renyuandangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zichandanganchaxun"></use>
</svg>
<div class="name">资产类别档案</div>
<div class="code-name">#icon-zichandanganchaxun</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-fukuantiaojianshezhi"></use>
</svg>
<div class="name">付款条件档案</div>
<div class="code-name">#icon-fukuantiaojianshezhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yonghudangan"></use>
</svg>
<div class="name">用户档案</div>
<div class="code-name">#icon-yonghudangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-chengyuanrenwu"></use>
</svg>
<div class="name">客户档案</div>
<div class="code-name">#icon-chengyuanrenwu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zhongdengwangdengjijiaoyi"></use>
</svg>
<div class="name">会计科目档案</div>
<div class="code-name">#icon-zhongdengwangdengjijiaoyi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shuishuaiweihu"></use>
</svg>
<div class="name">税率档案</div>
<div class="code-name">#icon-shuishuaiweihu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-wuliaodangan"></use>
</svg>
<div class="name">物料档案</div>
<div class="code-name">#icon-wuliaodangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-gongyingshangdangan"></use>
</svg>
<div class="name">供应商分类档案</div>
<div class="code-name">#icon-gongyingshangdangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-gongyingshangdangan1"></use>
</svg>
<div class="name">供应商档案</div>
<div class="code-name">#icon-gongyingshangdangan1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-a-91-2"></use>
</svg>
<div class="name">地区分类档案</div>
<div class="code-name">#icon-a-91-2</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jiesuanfangshi"></use>
</svg>
<div class="name">结算方式档案</div>
<div class="code-name">#icon-jiesuanfangshi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zuzhidangan"></use>
</svg>
<div class="name">组织档案</div>
<div class="code-name">#icon-zuzhidangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xiangmudanganku"></use>
</svg>
<div class="name">项目档案</div>
<div class="code-name">#icon-xiangmudanganku</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-path-2-3"></use>
</svg>
<div class="name">证件类型档案</div>
<div class="code-name">#icon-path-2-3</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-wenjian"></use>
</svg>
<div class="name">人员类别档案</div>
<div class="code-name">#icon-wenjian</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-bumendangan"></use>
</svg>
<div class="name">部门档案</div>
<div class="code-name">#icon-bumendangan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-erji-huowei-changgui"></use>
</svg>
<div class="name">货位档案</div>
<div class="code-name">#icon-erji-huowei-changgui</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shujulaiyuan"></use>
</svg>
<div class="name">数据来源</div>
<div class="code-name">#icon-shujulaiyuan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-tsend"></use>
</svg>
<div class="name">tsend</div>
<div class="code-name">#icon-tsend</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-script-language"></use>
</svg>
<div class="name">脚本语言</div>
<div class="code-name">#icon-script-language</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-webhookpeizhi"></use>
</svg>
<div class="name">webhook配置</div>
<div class="code-name">#icon-webhookpeizhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-kaigong-filled"></use>
</svg>
<div class="name">开工-filled</div>
<div class="code-name">#icon-kaigong-filled</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-auto-01"></use>
</svg>
<div class="name">auto</div>
<div class="code-name">#icon-auto-01</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-peizhiquanxian"></use>
</svg>
<div class="name">配置权限</div>
<div class="code-name">#icon-peizhiquanxian</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-fenfashezhi"></use>
</svg>
<div class="name">分发设置</div>
<div class="code-name">#icon-fenfashezhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shujuyuan"></use>
</svg>
<div class="name">数据源</div>
<div class="code-name">#icon-shujuyuan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-xianshixinxi"></use>
</svg>
<div class="name">显示信息</div>
<div class="code-name">#icon-xianshixinxi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jibenxinxi"></use>
</svg>
<div class="name">基本信息</div>
<div class="code-name">#icon-jibenxinxi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-quxiaoguanbi1"></use>
</svg>
<div class="name">取消&关闭1</div>
<div class="code-name">#icon-quxiaoguanbi1</div>
</li>
<li class="dib"> <li class="dib">
<svg class="icon svg-icon" aria-hidden="true"> <svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-caidan"></use> <use xlink:href="#icon-caidan"></use>

View File

@ -13,158 +13,6 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-gongzuotai:before {
content: "\e655";
}
.icon-shouye:before {
content: "\e605";
}
.icon-kehujiaobenduan:before {
content: "\e643";
}
.icon-cangku:before {
content: "\e71f";
}
.icon-yinhang-F:before {
content: "\e62e";
}
.icon-jianliguanli:before {
content: "\e727";
}
.icon-cunhuotong:before {
content: "\e6c3";
}
.icon-yinhangdangan:before {
content: "\e68f";
}
.icon-renyuandangan:before {
content: "\e600";
}
.icon-zichandanganchaxun:before {
content: "\e601";
}
.icon-fukuantiaojianshezhi:before {
content: "\e60f";
}
.icon-yonghudangan:before {
content: "\e63e";
}
.icon-chengyuanrenwu:before {
content: "\e62d";
}
.icon-zhongdengwangdengjijiaoyi:before {
content: "\e71b";
}
.icon-shuishuaiweihu:before {
content: "\e602";
}
.icon-wuliaodangan:before {
content: "\e61b";
}
.icon-gongyingshangdangan:before {
content: "\e614";
}
.icon-gongyingshangdangan1:before {
content: "\e69b";
}
.icon-a-91-2:before {
content: "\e603";
}
.icon-jiesuanfangshi:before {
content: "\e759";
}
.icon-zuzhidangan:before {
content: "\e6ae";
}
.icon-xiangmudanganku:before {
content: "\e6af";
}
.icon-path-2-3:before {
content: "\e64e";
}
.icon-wenjian:before {
content: "\e7e8";
}
.icon-bumendangan:before {
content: "\e621";
}
.icon-erji-huowei-changgui:before {
content: "\e634";
}
.icon-shujulaiyuan:before {
content: "\e812";
}
.icon-tsend:before {
content: "\e6d8";
}
.icon-script-language:before {
content: "\e7e3";
}
.icon-webhookpeizhi:before {
content: "\e6ec";
}
.icon-kaigong-filled:before {
content: "\e81e";
}
.icon-auto-01:before {
content: "\e6e4";
}
.icon-peizhiquanxian:before {
content: "\e68e";
}
.icon-fenfashezhi:before {
content: "\e68a";
}
.icon-shujuyuan:before {
content: "\e68b";
}
.icon-xianshixinxi:before {
content: "\e68c";
}
.icon-jibenxinxi:before {
content: "\e68d";
}
.icon-quxiaoguanbi1:before {
content: "\e627";
}
.icon-caidan:before { .icon-caidan:before {
content: "\e642"; content: "\e642";
} }

File diff suppressed because one or more lines are too long

View File

@ -5,272 +5,6 @@
"css_prefix_text": "icon-", "css_prefix_text": "icon-",
"description": "", "description": "",
"glyphs": [ "glyphs": [
{
"icon_id": "5035443",
"name": "工作台",
"font_class": "gongzuotai",
"unicode": "e655",
"unicode_decimal": 58965
},
{
"icon_id": "7083396",
"name": "首页",
"font_class": "shouye",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "11121518",
"name": "客户脚本端",
"font_class": "kehujiaobenduan",
"unicode": "e643",
"unicode_decimal": 58947
},
{
"icon_id": "7712191",
"name": "仓库档案",
"font_class": "cangku",
"unicode": "e71f",
"unicode_decimal": 59167
},
{
"icon_id": "37539306",
"name": "银行类别档案",
"font_class": "yinhang-F",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "1665242",
"name": "客户分类档案",
"font_class": "jianliguanli",
"unicode": "e727",
"unicode_decimal": 59175
},
{
"icon_id": "2450725",
"name": "存货分类档案",
"font_class": "cunhuotong",
"unicode": "e6c3",
"unicode_decimal": 59075
},
{
"icon_id": "4393215",
"name": "银行账户档案",
"font_class": "yinhangdangan",
"unicode": "e68f",
"unicode_decimal": 59023
},
{
"icon_id": "4424768",
"name": "人员档案",
"font_class": "renyuandangan",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "4659403",
"name": "资产类别档案",
"font_class": "zichandanganchaxun",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "7674544",
"name": "付款条件档案",
"font_class": "fukuantiaojianshezhi",
"unicode": "e60f",
"unicode_decimal": 58895
},
{
"icon_id": "10900331",
"name": "用户档案",
"font_class": "yonghudangan",
"unicode": "e63e",
"unicode_decimal": 58942
},
{
"icon_id": "12535859",
"name": "客户档案",
"font_class": "chengyuanrenwu",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "14237522",
"name": "会计科目档案",
"font_class": "zhongdengwangdengjijiaoyi",
"unicode": "e71b",
"unicode_decimal": 59163
},
{
"icon_id": "15919260",
"name": "税率档案",
"font_class": "shuishuaiweihu",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "20585487",
"name": "物料档案",
"font_class": "wuliaodangan",
"unicode": "e61b",
"unicode_decimal": 58907
},
{
"icon_id": "20713639",
"name": "供应商分类档案",
"font_class": "gongyingshangdangan",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "21507384",
"name": "供应商档案",
"font_class": "gongyingshangdangan1",
"unicode": "e69b",
"unicode_decimal": 59035
},
{
"icon_id": "25997282",
"name": "地区分类档案",
"font_class": "a-91-2",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "26045975",
"name": "结算方式档案",
"font_class": "jiesuanfangshi",
"unicode": "e759",
"unicode_decimal": 59225
},
{
"icon_id": "27089294",
"name": "组织档案",
"font_class": "zuzhidangan",
"unicode": "e6ae",
"unicode_decimal": 59054
},
{
"icon_id": "27928496",
"name": "项目档案",
"font_class": "xiangmudanganku",
"unicode": "e6af",
"unicode_decimal": 59055
},
{
"icon_id": "35882632",
"name": "证件类型档案",
"font_class": "path-2-3",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "3765344",
"name": "人员类别档案",
"font_class": "wenjian",
"unicode": "e7e8",
"unicode_decimal": 59368
},
{
"icon_id": "21013308",
"name": "部门档案",
"font_class": "bumendangan",
"unicode": "e621",
"unicode_decimal": 58913
},
{
"icon_id": "27201660",
"name": "货位档案",
"font_class": "erji-huowei-changgui",
"unicode": "e634",
"unicode_decimal": 58932
},
{
"icon_id": "38608609",
"name": "数据来源",
"font_class": "shujulaiyuan",
"unicode": "e812",
"unicode_decimal": 59410
},
{
"icon_id": "1786166",
"name": "tsend",
"font_class": "tsend",
"unicode": "e6d8",
"unicode_decimal": 59096
},
{
"icon_id": "5657738",
"name": "脚本语言",
"font_class": "script-language",
"unicode": "e7e3",
"unicode_decimal": 59363
},
{
"icon_id": "10420513",
"name": "webhook配置",
"font_class": "webhookpeizhi",
"unicode": "e6ec",
"unicode_decimal": 59116
},
{
"icon_id": "12428742",
"name": "开工-filled",
"font_class": "kaigong-filled",
"unicode": "e81e",
"unicode_decimal": 59422
},
{
"icon_id": "30653940",
"name": "auto",
"font_class": "auto-01",
"unicode": "e6e4",
"unicode_decimal": 59108
},
{
"icon_id": "37706795",
"name": "配置权限",
"font_class": "peizhiquanxian",
"unicode": "e68e",
"unicode_decimal": 59022
},
{
"icon_id": "37706794",
"name": "分发设置",
"font_class": "fenfashezhi",
"unicode": "e68a",
"unicode_decimal": 59018
},
{
"icon_id": "37706798",
"name": "数据源",
"font_class": "shujuyuan",
"unicode": "e68b",
"unicode_decimal": 59019
},
{
"icon_id": "37706797",
"name": "显示信息",
"font_class": "xianshixinxi",
"unicode": "e68c",
"unicode_decimal": 59020
},
{
"icon_id": "37706796",
"name": "基本信息",
"font_class": "jibenxinxi",
"unicode": "e68d",
"unicode_decimal": 59021
},
{
"icon_id": "16290376",
"name": "取消&关闭1",
"font_class": "quxiaoguanbi1",
"unicode": "e627",
"unicode_decimal": 58919
},
{ {
"icon_id": "8094171", "icon_id": "8094171",
"name": "菜单/列表", "name": "菜单/列表",

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1 +0,0 @@
<svg t="1719277109538" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4273" width="200" height="200"><path d="M919.113143 325.485714H104.813714v-67.803428h814.299429v-133.12a36.571429 36.571429 0 0 0-36.571429-36.571429H141.385143a36.571429 36.571429 0 0 0-36.571429 36.571429L103.862857 865.645714a36.425143 36.425143 0 0 0 36.571429 36.571429h673.865143a33.938286 33.938286 0 1 1 0 67.876571h-705.097143-0.146286a73.142857 73.142857 0 0 1-73.069714-73.142857L36.937143 93.184a73.142857 73.142857 0 0 1 73.142857-73.142857h803.693714a73.142857 73.142857 0 0 1 73.142857 73.142857v703.268571a33.938286 33.938286 0 0 1-67.803428 0V325.485714zM206.628571 215.844571a33.938286 33.938286 0 1 1 0-67.803428 33.938286 33.938286 0 0 1 0 67.803428z m203.556572 0a33.938286 33.938286 0 1 1 0-67.803428 33.938286 33.938286 0 0 1 0 67.803428z m-101.814857 0a33.938286 33.938286 0 1 1 0-67.803428 33.938286 33.938286 0 0 1 0 67.803428z m34.889143 250.148572c7.168-7.094857 26.112-7.094857 33.28 0 7.168 7.094857 7.168 29.476571 0 37.156571L265.874286 610.742857 373.76 712.923429c7.168 7.094857 8.118857 27.355429 0 35.328-9.801143 9.728-29.842286 8.192-36.571429 1.609142l-126.025142-125.805714a18.432 18.432 0 0 1 0-25.965714l132.096-132.096z m343.478857 0l132.096 132.096a18.432 18.432 0 0 1 0 26.038857l-126.098286 125.732571c-6.656 6.582857-25.6 10.752-36.571429 0-10.313143-10.24-7.094857-31.305143 0-38.4l108.397715-100.717714-111.908572-108.690286c-7.168-7.68-9.508571-26.624 0-36.059428 9.289143-9.142857 26.916571-7.094857 34.084572 0z m-135.68-26.331429c3.657143-9.508571 21.430857-15.506286 32.768-11.264 10.825143 4.022857 17.188571 19.017143 14.189714 28.525715l-119.808 329.947428c-3.657143 9.508571-20.699429 13.238857-30.281143 9.728-10.166857-3.584-21.211429-17.554286-17.554286-27.062857l120.685715-329.874286z" p-id="4274"></path></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,9 +1 @@
<svg t="1720579857492" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3356" <svg t="1698635429898" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13525" width="200" height="200"><path d="M383.977281 638.040122C248.113773 629.720642 131.961033 595.162802 63.99728 546.909818V639.960002c0 63.420036 138.359353 116.088744 319.980001 126.200113v63.868008c-135.863509-8.31948-252.016249-42.813324-319.980001-91.130304V831.948003H0.00128V223.986001C0.00128 100.281732 200.564745 0 447.973282 0s447.972002 100.281732 447.972001 223.986001v202.099369h-63.996V339.434785C753.554183 404.454722 610.907098 447.972002 447.973282 447.972002s-305.580901-43.51728-383.976002-108.537217V447.972002c0 63.420036 138.359353 116.088744 319.980001 126.200112v63.868008zM447.973282 1023.936004c-247.408537 0-447.972002-85.946628-447.972002-191.988001h63.996c0 70.71558 171.893257 127.992 383.976002 127.992001v63.996zM447.973282 383.976001c212.082745 0 383.976001-71.67552 383.976001-159.99S660.056027 63.996 447.973282 63.996 63.99728 135.671521 63.99728 223.986001 235.890537 383.976001 447.973282 383.976001z m556.893194 419.813762l-44.541216-25.91838c2.495844-13.631148 4.095744-27.51828 4.095744-41.91738a231.665521 231.665521 0 0 0-4.095744-41.91738l44.541216-25.982376a38.589588 38.589588 0 0 0 13.951128-52.476721l-38.07762-66.491844a37.885632 37.885632 0 0 0-52.028748-14.07912l-45.053185 26.23836a227.825761 227.825761 0 0 0-71.547528-42.23736V486.369602c0-21.182676-17.022936-38.3976-38.07762-38.3976h-76.15524a38.269608 38.269608 0 0 0-38.07762 38.3976v32.63796a227.825761 227.825761 0 0 0-71.547529 42.23736l-45.053184-26.23836a37.885632 37.885632 0 0 0-52.028748 14.07912L453.092962 615.641522a38.589588 38.589588 0 0 0 13.951128 52.476721l44.541216 25.91838a231.665521 231.665521 0 0 0-4.095744 41.91738c0 14.3991 1.5999 28.286232 4.095744 41.91738l-44.541216 25.982376a38.589588 38.589588 0 0 0-13.951128 52.47672l38.07762 66.491845a37.885632 37.885632 0 0 0 52.028748 14.07912l45.053184-26.23836c21.054684 18.046872 44.925192 32.765952 71.547529 42.23736v32.63796c0 21.182676 17.022936 38.3976 38.07762 38.3976h76.15524a38.269608 38.269608 0 0 0 38.07762-38.3976v-32.63796a227.825761 227.825761 0 0 0 71.547528-42.23736l45.053185 26.23836a37.949628 37.949628 0 0 0 52.028748-14.07912l38.07762-66.555841a38.589588 38.589588 0 0 0-13.951128-52.47672z m-47.293044 37.821636l-17.534904 29.886132a17.726892 17.726892 0 0 1-23.9985 6.271608l-48.764953-27.646272a175.989001 175.989001 0 0 1-96.185988 54.652585v37.949628c0 9.471408-7.871508 17.214924-17.5989 17.214924h-35.069808a17.406912 17.406912 0 0 1-17.5989-17.27892v-37.885632a175.989001 175.989001 0 0 1-96.185989-54.652585l-48.764952 27.646272a17.726892 17.726892 0 0 1-23.9985-6.271608l-17.534904-29.886132a17.022936 17.022936 0 0 1 6.3996-23.486532l48.95694-27.774264a168.245485 168.245485 0 0 1-9.27942-54.3966c0-19.070808 3.455784-37.245672 9.343416-54.3966l-49.020936-27.774264a17.022936 17.022936 0 0 1-6.3996-23.486533l17.534904-29.886132a17.726892 17.726892 0 0 1 23.9985-6.271608l48.764952 27.646272a175.989001 175.989001 0 0 1 96.185989-54.652584v-37.949628c0-9.535404 7.871508-17.214924 17.5989-17.214924h35.069808c9.727392 0 17.5989 7.67952 17.5989 17.27892v37.885632a175.989001 175.989001 0 0 1 96.185988 54.652584l48.764953-27.646272a17.726892 17.726892 0 0 1 23.9985 6.271608l17.534904 29.886132a17.022936 17.022936 0 0 1-6.3996 23.486533l-48.95694 27.774264c5.75964 17.150928 9.27942 35.325792 9.27942 54.3966 0 19.070808-3.455784 37.245672-9.27942 54.3966l48.95694 27.774264a17.022936 17.022936 0 0 1 6.3996 23.486532zM735.955283 639.960002a95.994 95.994 0 1 0 0 191.988001 95.994 95.994 0 0 0 0-191.988001z m0 127.992001a31.998 31.998 0 1 1 0-63.996 31.998 31.998 0 0 1 0 63.996z"></path></svg>
width="200" height="200">
<path
d="M252.442947 766.005895l3.449264 1.778526 262.844631 151.767579a13.473684 13.473684 0 0 0 11.317895 0.997053l2.155789-0.997053 254.679579-147.051789a40.421053 40.421053 0 0 1 43.708632 67.907368l-3.287579 2.101895-254.679579 147.051789a94.315789 94.315789 0 0 1-89.088 2.802526l-5.22779-2.802526-262.844631-151.767579a40.421053 40.421053 0 0 1 33.414737-73.216l3.557052 1.428211z m401.731369-657.51579l249.613473 144.114527a94.315789 94.315789 0 0 1 46.996211 75.749052l0.161684 5.928421v76.90779a40.421053 40.421053 0 0 1-80.653473 3.880421l-0.188632-3.880421v-76.90779a13.473684 13.473684 0 0 0-6.736842-11.66821l-249.613474-144.114527a40.421053 40.421053 0 0 1 40.421053-70.009263z m-201.027369 14.120421a40.421053 40.421053 0 0 1-14.821052 55.215158l-250.745263 144.788211a13.473684 13.473684 0 0 0-6.548211 9.296842l-0.188632 2.371368v72.677053a40.421053 40.421053 0 0 1-80.680421 3.880421l-0.161684-3.880421v-72.677053a94.315789 94.315789 0 0 1 47.157895-81.677473L397.931789 107.789474a40.421053 40.421053 0 0 1 55.215158 14.794105z"
p-id="3357"></path>
<path
d="M525.473684 0a121.263158 121.263158 0 1 1 0 242.526316 121.263158 121.263158 0 0 1 0-242.526316z m0 80.842105a40.421053 40.421053 0 1 0 0 80.842106 40.421053 40.421053 0 0 0 0-80.842106zM148.210526 485.052632a121.263158 121.263158 0 1 1 0 242.526315 121.263158 121.263158 0 0 1 0-242.526315z m0 80.842105a40.421053 40.421053 0 1 0 0 80.842105 40.421053 40.421053 0 0 0 0-80.842105zM902.736842 485.052632a121.263158 121.263158 0 1 1 0 242.526315 121.263158 121.263158 0 0 1 0-242.526315z m0 80.842105a40.421053 40.421053 0 1 0 0 80.842105 40.421053 40.421053 0 0 0 0-80.842105z"
p-id="3358"></path>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -1,21 +1 @@
<svg t="1720579955400" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3512" <svg t="1698634142296" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7826" width="200" height="200"><path d="M960 80H64c-35.3 0-64 28.6-64 64v576c0 35.3 28.7 64 64 64h312c4.4 0 8 3.6 8 8v84c0 2.2-1.8 4-4 4h-60c-17.7 0-32 14.3-32 32v32h448v-32c0-17.7-14.3-32-32-32h-60c-2.2 0-4-1.8-4-4v-84c0-4.4 3.6-8 8-8h312c35.3 0 64-28.7 64-64V144c0-35.4-28.7-64-64-64zM576 876c0 2.2-1.8 4-4 4H452c-2.2 0-4-1.8-4-4v-52c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v52z m384-172c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-44c0-2.2 1.8-4 4-4h888c2.2 0 4 1.8 4 4v44z m-4-112H68c-2.2 0-4-1.8-4-4V160c0-8.8 7.2-16 16-16h864c8.8 0 16 7.2 16 16v428c0 2.2-1.8 4-4 4z"></path></svg>
width="200" height="200">
<path
d="M215.578947 889.263158m40.421053 0l538.947368 0q40.421053 0 40.421053 40.421053l0 0q0 40.421053-40.421053 40.421052l-538.947368 0q-40.421053 0-40.421053-40.421052l0 0q0-40.421053 40.421053-40.421053Z"
p-id="3513"></path>
<path
d="M215.578947 242.526316m40.421053 0l538.947368 0q40.421053 0 40.421053 40.421052l0 0q0 40.421053-40.421053 40.421053l-538.947368 0q-40.421053 0-40.421053-40.421053l0 0q0-40.421053 40.421053-40.421052Z"
p-id="3514"></path>
<path
d="M215.578947 377.263158m40.421053 0l538.947368 0q40.421053 0 40.421053 40.421053l0 0q0 40.421053-40.421053 40.421052l-538.947368 0q-40.421053 0-40.421053-40.421052l0 0q0-40.421053 40.421053-40.421053Z"
p-id="3515"></path>
<path
d="M215.578947 512m40.421053 0l242.526316 0q40.421053 0 40.421052 40.421053l0 0q0 40.421053-40.421052 40.421052l-242.526316 0q-40.421053 0-40.421053-40.421052l0 0q0-40.421053 40.421053-40.421053Z"
p-id="3516"></path>
<path
d="M889.263158 80.842105a107.789474 107.789474 0 0 1 107.789474 107.789474v485.052632a107.789474 107.789474 0 0 1-107.789474 107.789473H134.736842a107.789474 107.789474 0 0 1-107.789474-107.789473V188.631579a107.789474 107.789474 0 0 1 107.789474-107.789474h754.526316z m0 80.842106H134.736842a26.947368 26.947368 0 0 0-26.758737 23.794526L107.789474 188.631579v485.052632a26.947368 26.947368 0 0 0 23.794526 26.758736L134.736842 700.631579h754.526316a26.947368 26.947368 0 0 0 26.758737-23.794526L916.210526 673.684211V188.631579a26.947368 26.947368 0 0 0-23.794526-26.758737L889.263158 161.684211z"
p-id="3517"></path>
<path
d="M673.684211 700.631579v269.473684H377.263158V700.631579h296.421053z m-80.842106 80.842105h-134.736842v107.789474h134.736842v-107.789474z"
p-id="3518"></path>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 696 B

View File

@ -1 +1 @@
<svg t="1720580017201" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3672" width="200" height="200"><path d="M808.9 536.4v-347h-4c-5.5-38.2-43.4-70-110.6-92.5-62.1-20.7-144.5-32.1-232.1-32.1S292.1 76.3 230 97c-72.8 24.3-111.3 59.6-111.3 102.2v524.7c0 42.6 38.5 77.9 111.3 102.2 62.1 20.7 144.5 32.1 232.1 32.1 18.3 0 36.4-0.5 53.8-1.5l177.4 102.4 211.9-122.3V592.1l-96.3-55.7z m-261.3 94l145.8-84.1 145.7 84.1v168.2l-145.7 84.1-145.8-84.1V630.4z m188.6-346.1v89.6c-5.3 6.3-21.3 20.5-64.7 34.5-55.4 18.1-129.7 28-209.2 28-102.8 0-171-15.5-210.1-28.5-51.3-17.1-67.2-35-67.2-39.6l-0.1-85.6c29 15 67.6 27.3 112.7 36 50 9.7 106.9 14.8 164.6 14.8 111 0 211.6-18.2 274-49.2z m-0.1-90.9v11.2c-5.3 6.3-21.3 20.5-64.7 34.5-55.3 18-129.6 28-209.2 28-102.8 0-171-15.5-210.1-28.5-51-17-67-34.8-67.2-39.6 0.5-4 13.4-22.2 68.1-40 55.4-18 129.7-28 209.2-28 79.4 0 153.7 9.9 209.2 28 40.6 13.3 58.2 26.7 64.7 34.4zM184.9 647.6c29 15 67.6 27.3 112.7 36.1 50 9.7 106.9 14.8 164.6 14.8 6.3 0 12.8 0 19.3-0.1v93.5c-6.3 0.1-12.8 0.2-19.3 0.2-102.8 0-171-15.5-210.1-28.5-51.3-17.1-67.2-35-67.2-39.6v-76.4z m296.5-55.5v39.8c-7.1 0.2-13.4 0.3-19.3 0.3-102.8 0-171-15.5-210.1-28.5-51.3-17.1-67.2-35-67.2-39.6V451.6c29 15 67.6 27.3 112.7 36.1 50 9.7 106.9 14.8 164.6 14.8 86.7 0 167-11.1 227.7-30.7L481.4 592.1z m254.8-138.8v41l-41.6-24c15.2-5.2 29.2-10.9 41.6-17z" p-id="3673"></path><path d="M797.5 684.1h-129l33.9-33.9c4.4-4.4 4.4-11.6 0-16L682 613.9c-4.4-4.4-11.6-4.4-16 0L591.9 688c-12.1 12.1-12.1 31.8 0 43.8l74.1 74.1c2.2 2.2 5.1 3.3 8 3.3 2.9 0 5.8-1.1 8-3.3l20.4-20.4c2.1-2.1 3.3-5 3.3-8s-1.2-5.9-3.3-8l-33.9-33.8h129c6.2 0 11.3-5.1 11.3-11.3v-28.9c0.1-6.3-5-11.4-11.3-11.4z" p-id="3674"></path></svg> <svg t="1698634166079" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8825" width="200" height="200"><path d="M544.033302 516.000776V96.000564c0-17.672051-14.478655-31.998984-32.150706-31.998984s-32.150706 14.326933-32.150707 31.998984v420.061624c-54.909072 14.251072-95.809105 64.333925-95.809105 123.935554 0 59.691941 40.82056 109.836206 96.090876 124.000579a32.298816 32.298816 0 0 0-0.281771 4.006195v159.99492c0 17.672051 14.478655 31.998984 32.150707 31.998984s32.150706-14.326933 32.150706-31.998984V768.004516a32.280754 32.280754 0 0 0-0.317894-3.941171c55.389526-14.088512 96.397933-64.301413 96.397932-124.058378 0.010837-59.691941-40.809723-109.832593-96.080038-124.004191z m13.221527 169.249989a64.00158 64.00158 0 1 1 18.744945-45.256635 63.578925 63.578925 0 0 1-18.744945 45.260247zM223.678606 196.003711a32.287979 32.287979 0 0 0 0.292607-4.002582V96.000564a31.970084 31.970084 0 1 0-63.940169 0V192.001129a32.371065 32.371065 0 0 0 0.180622 4.060381c-55.270316 14.160761-96.173962 64.301413-96.173961 124.000579s40.910871 109.818143 96.181186 123.996966a32.360228 32.360228 0 0 0-0.184234 3.937558V927.999436a31.970084 31.970084 0 1 0 63.940169 0V448.000226a32.287979 32.287979 0 0 0-0.278158-3.883372c55.385914-14.088512 96.350971-64.301413 96.350971-124.054765S279.071744 210.084998 223.678606 196.003711z m13.575545 169.315013A64.00158 64.00158 0 1 1 255.999097 320.062089a63.578925 63.578925 0 0 1-18.744946 45.256635zM959.99842 320.062089c0-59.775027-41.048144-109.977091-96.45212-124.058378a32.360228 32.360228 0 0 0 0.173397-4.002582V96.000564a31.970084 31.970084 0 1 0-63.940169 0V192.001129a32.291592 32.291592 0 0 0 0.299833 4.060381c-55.270316 14.160761-96.116162 64.301413-96.116163 124.000579s40.82056 109.836206 96.090876 124.000578a32.298816 32.298816 0 0 0-0.281771 3.99897V927.999436a31.970084 31.970084 0 1 0 63.940169 0V448.061637a32.381903 32.381903 0 0 0-0.166172-3.941171c55.407588-14.084899 96.452119-64.286963 96.45212-124.058377z m-82.746526 45.253022a63.997968 63.997968 0 1 1 18.748558-45.253022 63.578925 63.578925 0 0 1-18.748558 45.253022z"></path></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,9 +1 @@
<svg t="1720580039910" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3828" <svg t="1698634431255" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12479" width="200" height="200"><path d="M249.381471 284.474073c-78.441032 0-142.247703-63.806671-142.247703-142.247703S170.940439-0.021333 249.381471-0.021333s142.247703 63.806671 142.247703 142.247703-63.806671 142.247703-142.247703 142.247703z m0-241.829628c-54.910856 0-99.581925 44.671069-99.581925 99.581925s44.671069 99.581925 99.581925 99.581926 99.581925-44.671069 99.581926-99.581926-44.671069-99.581925-99.581926-99.581925z" p-id="12480"></path><path d="M249.360138 496.800317H0v-21.332889c0-166.73786 130.045291-261.77588 135.591842-265.722464a21.332889 21.332889 0 1 1 24.831483 34.687277c-1.087977 0.789317-106.323118 78.270369-116.904232 209.702298h205.841045a21.332889 21.332889 0 0 1 0 42.665778z" p-id="12481"></path><path d="M498.74161 496.800317h-249.381472a21.332889 21.332889 0 0 1 0-42.665778h205.862378c-10.581113-131.453261-115.816254-208.912981-116.925564-209.723631a21.332889 21.332889 0 0 1 24.852816-34.665944c5.546551 3.967917 135.591842 98.984604 135.591842 265.722464v21.332889zM774.618529 811.631091c-78.441032 0-142.247703-63.806671-142.247703-142.22637s63.806671-142.22637 142.247703-142.226371c78.4197 0 142.205037 63.806671 142.205037 142.226371s-63.806671 142.22637-142.205037 142.22637z m0-241.786963c-54.910856 0-99.581925 44.671069-99.581926 99.560593s44.671069 99.560592 99.581926 99.560592c54.889523 0 99.53926-44.671069 99.539259-99.560592s-44.649736-99.560592-99.539259-99.560593z" p-id="12482"></path><path d="M774.618529 1023.978667H525.215725v-21.332889c0-166.780525 130.066624-261.77588 135.591842-265.722464a21.354222 21.354222 0 0 1 24.852815 34.70861c-1.087977 0.767984-106.323118 78.206371-116.904231 209.680965h205.862378a21.332889 21.332889 0 1 1 0 42.665778z" p-id="12483"></path><path d="M1023.978667 1023.978667H774.618529a21.332889 21.332889 0 1 1 0-42.665778h205.841045c-10.581113-131.474594-115.816254-208.912981-116.904231-209.702298a21.332889 21.332889 0 1 1 24.852815-34.687277C893.933376 740.869899 1023.978667 835.865253 1023.978667 1002.645778v21.332889z" p-id="12484"></path><path d="M852.248911 479.286015a21.332889 21.332889 0 0 1-21.332888-21.332889c0-175.889669-143.079686-318.990688-318.926689-318.990688a21.332889 21.332889 0 0 1 0-42.665778c199.398513 0 361.592467 162.23662 361.592466 361.656466a21.332889 21.332889 0 0 1-21.332889 21.332889z" p-id="12485"></path><path d="M855.555509 499.082936l-102.739193-78.995688a21.332889 21.332889 0 1 1 25.983459-33.833962l70.121206 53.908211 60.222745-72.723819a21.332889 21.332889 0 0 1 32.873982 27.220767l-86.462199 104.424491z" p-id="12486"></path><path d="M477.430054 948.289577c-199.398513 0-361.635133-162.215287-361.635133-361.613799a21.332889 21.332889 0 1 1 42.665778 0c0 175.868336 143.101019 318.948022 318.969355 318.948022a21.332889 21.332889 0 1 1 0 42.665777z" p-id="12487"></path><path d="M61.801379 684.295077a21.332889 21.332889 0 0 1-16.426324-34.921939l86.440866-104.445824 102.760525 78.995688a21.332889 21.332889 0 0 1-25.983458 33.833961L138.450449 603.848753l-60.201413 72.723818a21.247557 21.247557 0 0 1-16.447657 7.722506z"></path></svg>
width="200" height="200">
<path
d="M498.526316 323.368421a202.105263 202.105263 0 1 1 0 404.210526 202.105263 202.105263 0 0 1 0-404.210526z m0 80.842105a121.263158 121.263158 0 1 0 0 242.526316 121.263158 121.263158 0 0 0 0-242.526316zM821.894737 80.842105a121.263158 121.263158 0 1 1 0 242.526316 121.263158 121.263158 0 0 1 0-242.526316z m0 80.842106a40.421053 40.421053 0 1 0 0 80.842105 40.421053 40.421053 0 0 0 0-80.842105zM875.789474 727.578947a121.263158 121.263158 0 1 1 0 242.526316 121.263158 121.263158 0 0 1 0-242.526316z m0 80.842106a40.421053 40.421053 0 1 0 0 80.842105 40.421053 40.421053 0 0 0 0-80.842105zM202.105263 700.631579a121.263158 121.263158 0 1 1 0 242.526316 121.263158 121.263158 0 0 1 0-242.526316z m0 80.842105a40.421053 40.421053 0 1 0 0 80.842105 40.421053 40.421053 0 0 0 0-80.842105zM175.157895 80.842105a121.263158 121.263158 0 1 1 0 242.526316 121.263158 121.263158 0 0 1 0-242.526316z m0 80.842106a40.421053 40.421053 0 1 0 0 80.842105 40.421053 40.421053 0 0 0 0-80.842105z"
p-id="3829"></path>
<path
d="M242.202947 220.052211l190.544842 190.544842-57.155368 57.182315-190.544842-190.571789zM779.776 220.052211l-190.544842 190.544842 57.155368 57.182315 190.544842-190.571789zM375.565474 597.315368L223.124211 749.756632l57.182315 57.155368 152.414316-152.441263zM646.413474 597.315368l190.544842 190.544843-57.155369 57.182315-190.544842-190.571789z"
p-id="3830"></path>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -1 +0,0 @@
<svg t="1718845590777" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4246" width="200" height="200"><path d="M819.9 472.9L675 723.9l1.7 99.4 86.9-48.3 144.9-251-88.6-51.1zM871.1 384.3L837 443.4l88.6 51.1 34.1-59.1-88.6-51.1zM544.3 703h-288c-17.7 0-32 14.3-32 32s14.3 32 32 32h288c17.7 0 32-14.3 32-32s-14.3-32-32-32zM256.3 511c-17.7 0-32 14.3-32 32s14.3 32 32 32h384c17.7 0 32-14.3 32-32s-14.3-32-32-32h-384zM256.3 319c-17.7 0-32 14.3-32 32s14.3 32 32 32h384c17.7 0 32-14.3 32-32s-14.3-32-32-32h-384zM288 64h64v160h-64zM384 128h128v64H384zM544 64h64v160h-64z" p-id="4247" ></path><path d="M768 864c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32h96v-64h-96c-53 0-96 43-96 96v640c0 53 43 96 96 96h576c53 0 96-43 96-96V686.7L768 798v66zM832 224c0-53-43-96-96-96h-96v64h96c17.7 0 32 14.3 32 32v311l64-111.3V224z" p-id="4248"></path></svg>

Before

Width:  |  Height:  |  Size: 907 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -187,8 +187,7 @@ $base-sub-menu-hover:#001528;
} }
#app .sidebar-container .horizontal-collapse-transition { #app .sidebar-container .horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
0s padding-right ease-in-out;
} }
#app .sidebar-container .scrollbar-wrapper { #app .sidebar-container .scrollbar-wrapper {
@ -526,8 +525,7 @@ body {
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
Microsoft YaHei, Arial, sans-serif;
} }
html { html {
@ -615,8 +613,7 @@ aside {
display: block; display: block;
line-height: 32px; line-height: 32px;
font-size: 16px; font-size: 16px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
color: #2c3e50; color: #2c3e50;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
@ -715,4 +712,5 @@ aside a:hover {
} }
.el-form-item__error { .el-form-item__error {
top: unset !important;
} }

View File

@ -214,4 +214,5 @@ aside {
right: 10px !important; right: 10px !important;
} }
.el-form-item__error { .el-form-item__error {
top: unset !important;
} }

View File

@ -1,242 +0,0 @@
<!-- 柱状图折线图 -->
<template>
<div style="width: 100%">
<span class="Breadcrumbs" v-if="Breadcrumbs">
<div v-for="(item, index) in breadcrumbsList" :key="index">
<span class="title">{{ item.title }}</span>
<span class="Separator" v-show="index + 1 != breadcrumbsList.length"
>/</span
>
</div>
</span>
<div :style="proportion" ref="echarts" id="echarts"></div>
</div>
</template>
<script>
import echarts from 'echarts'
export default {
data() {
return {
myEcharts: null,
option: {},
sidebarRetract: null,
breadcrumbsList: [
{
title: "首页",
},
{
title: "活动管理",
},
],
};
},
components: {},
computed: {},
mounted() {
this.myEcharts = echarts.init(this.$refs.echarts);
this.getEcharts();
window.addEventListener("resize", this.change);
},
watch: {
"$store.getters.sidebarRetract": {
deep: true,
handler(val) {
this.change();
},
},
DataCollection: {
deep: true,
handler(newVal, oldVal) {
this.getEcharts();
},
},
},
props: {
//
Breadcrumbs: {
type: Boolean,
default: false,
},
//
proportion: {
type: Object,
default: () => {
return {
width: "700px",
height: "700px",
};
},
},
//
title: {
type: String,
default: "",
},
//
DataCollection: {
type: Object,
require: true,
default: () => {
return {};
},
},
// // ['', '']
// columnHeader: {
// type: Array,
// required: true,
// default: () => {
// return []
// }
// },
// // ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
// Dimension: {
// type: Array,
// required: true,
// default: () => {
// return []
// }
// },
// series: {
// type: Array,
// required: true,
// default: () => {
// return []
// }
// }
},
methods: {
change() {
this.myEcharts.resize();
},
getEcharts() {
let _this = this;
const colors = [
"#224ef5",
"#e33722",
"#ffcc2c",
"#C1232B",
"#B5C334",
"#FCCE10",
"#E87C25",
"#27727B",
"#FE8463",
"#9BCA63",
"#FAD860",
"#F3A43B",
"#60C0DD",
"#D7504B",
"#C6E579",
"#F4E001",
"#F0805A",
"#26C0C0",
"#FAD860",
"#F3A43B",
"#60C0DD",
"#D7504B",
"#C6E579",
"#F4E001",
"#F0805A",
"#26C0C0",
];
this.option = {
color: colors,
title: {
text: "", //
subtext: "",
},
tooltip: {
trigger: "axis",
},
grid: {
left: "2%",
right: "2%",
bottom: "10%",
top: "2%",
containLabel: true,
},
legend: {
data: this.DataCollection.title,
align: "right",
right: 5,
textStyle: {
color: "#000",
},
itemWidth: 10,
itemHeight: 10,
itemGap: 35,
x: "center",
y: "bottom",
padding: [20, 0, 0, 0],
},
toolbox: {
show: false,
feature: {
mark: { show: true }, //
dataView: { show: true, readOnly: false }, //线
magicType: { show: true, type: ["line", "bar"] }, //
restore: { show: true }, //
saveAsImage: { show: true }, //
},
},
calculable: true,
xAxis: [
{
type: "category",
axisLabel: { interval: 0, rotate: 60 },
data: this.DataCollection.parameter,
},
],
yAxis: [
{
type: "value",
axisLine: {
show: true,
lineStyle: {
color: "#000",
},
},
"splitLine": {
"lineStyle": {
"type": "dashed", // 线
"color": "#ccc", // 线
"length": 10, // 线
"interval": 5 // 线
}
}
},
],
series: this.DataCollection.series,
};
this.myEcharts.setOption(this.option);
this.myEcharts.on("click", function (params) {
_this.echartsClick(params);
});
},
echartsClick(e) {
console.log("点击", e);
},
},
};
</script>
<style scoped lang="scss">
.Breadcrumbs {
margin: 10px 0 10px 10px;
display: flex;
font-size: 13px;
.title {
cursor: pointer;
}
.Separator {
display: inline-block;
margin: 0 9px;
color: #c0c4cc;
font-weight: 700;
}
}
</style>

View File

@ -1,252 +0,0 @@
<!-- 柱状图折线图 -->
<template>
<div style="width: 100%">
<span class="Breadcrumbs" v-if="Breadcrumbs">
<div v-for="(item, index) in breadcrumbsList" :key="index">
<span class="title">{{ item.title }}</span>
<span class="Separator" v-show="index + 1 != breadcrumbsList.length"
>/</span
>
</div>
</span>
<div :style="proportion" ref="echarts" id="echarts"></div>
</div>
</template>
<script>
import echarts from 'echarts'
export default {
data() {
return {
myEcharts: null,
option: {},
sidebarRetract: null,
breadcrumbsList: [
{
title: "首页",
},
{
title: "活动管理",
},
],
};
},
components: {},
computed: {},
mounted() {
this.myEcharts = echarts.init(this.$refs.echarts);
this.getEcharts();
window.addEventListener("resize", this.change);
},
watch: {
"$store.getters.sidebarRetract": {
deep: true,
handler(val) {
this.change();
},
},
DataCollection: {
deep: true,
handler(newVal, oldVal) {
this.getEcharts();
},
},
},
props: {
//
Breadcrumbs: {
type: Boolean,
default: false,
},
//
proportion: {
type: Object,
default: () => {
return {
width: "700px",
height: "700px",
};
},
},
//
title: {
type: String,
default: "",
},
//
DataCollection: {
type: Object,
require: true,
default: () => {
return {};
},
},
// // ['', '']
// columnHeader: {
// type: Array,
// required: true,
// default: () => {
// return []
// }
// },
// // ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
// Dimension: {
// type: Array,
// required: true,
// default: () => {
// return []
// }
// },
// series: {
// type: Array,
// required: true,
// default: () => {
// return []
// }
// }
},
methods: {
change() {
this.myEcharts.resize();
},
getEcharts() {
let _this = this;
const colors = [
"#224ef5",
"#e33722",
"#ffcc2c",
"#C1232B",
"#B5C334",
"#FCCE10",
"#E87C25",
"#27727B",
"#FE8463",
"#9BCA63",
"#FAD860",
"#F3A43B",
"#60C0DD",
"#D7504B",
"#C6E579",
"#F4E001",
"#F0805A",
"#26C0C0",
"#FAD860",
"#F3A43B",
"#60C0DD",
"#D7504B",
"#C6E579",
"#F4E001",
"#F0805A",
"#26C0C0",
];
this.option = {
color: colors,
title: {
text: "", //
subtext: "",
},
tooltip: {
trigger: "axis",
},
grid: {
left: "2%",
right: "2%",
bottom: "10%",
top: "2%",
containLabel: true,
},
legend: {
data: this.DataCollection.title,
align: "right",
right: 5,
textStyle: {
color: "#fff",
},
itemWidth: 10,
itemHeight: 10,
itemGap: 35,
x: "center",
y: "bottom",
padding: [20, 0, 0, 0],
},
toolbox: {
show: false,
feature: {
mark: { show: true }, //
dataView: { show: true, readOnly: false }, //线
magicType: { show: true, type: ["line", "bar"] }, //
restore: { show: true }, //
saveAsImage: { show: true }, //
},
},
calculable: true,
xAxis: [
{
type: "category",
axisLabel: { interval: 0, rotate: 60,color:'#01E5EB' },
axisLine: {
show: true,
lineStyle: {
color: "#01E5EB",
},
},
data: this.DataCollection.parameter,
},
],
yAxis: [
{
type: "value",
axisLine: {
show: true,
lineStyle: {
color: "#01E5EB",
},
},
axisLabel:{
color:'#01E5EB'
},
"splitLine": {
"lineStyle": {
"type": "dashed", // 线
"color": "#5679ac", // 线
"length": 10, // 线
"interval": 5 // 线
}
}
},
],
series: this.DataCollection.series,
};
this.myEcharts.setOption(this.option);
this.myEcharts.on("click", function (params) {
_this.echartsClick(params);
});
},
echartsClick(e) {
console.log("点击", e);
},
},
};
</script>
<style scoped lang="scss">
.Breadcrumbs {
margin: 10px 0 10px 10px;
display: flex;
font-size: 13px;
.title {
cursor: pointer;
}
.Separator {
display: inline-block;
margin: 0 9px;
color: #c0c4cc;
font-weight: 700;
}
}
</style>

View File

@ -6,7 +6,7 @@
> >
<template v-for="(item, index) in topMenus"> <template v-for="(item, index) in topMenus">
<el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index" v-if="index < visibleNumber" <el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index" v-if="index < visibleNumber"
><svg-icon :icon-class="item.meta.icon" /> ><svg-icon :icon-class="item.meta.menuIcon" />
{{ item.meta.title }}</el-menu-item {{ item.meta.title }}</el-menu-item
> >
</template> </template>
@ -19,7 +19,7 @@
:index="item.path" :index="item.path"
:key="index" :key="index"
v-if="index >= visibleNumber" v-if="index >= visibleNumber"
><svg-icon :icon-class="item.meta.icon" /> ><svg-icon :icon-class="item.meta.menuIcon" />
{{ item.meta.title }}</el-menu-item> {{ item.meta.title }}</el-menu-item>
</template> </template>
</el-submenu> </el-submenu>

View File

@ -6,101 +6,20 @@
<template> <template>
<!-- 权限设置弹框 --> <!-- 权限设置弹框 -->
<!-- :style="{'margin':isCenter?'auto':''}"> --> <!-- :style="{'margin':isCenter?'auto':''}"> -->
<div style="height: 100%">
<div flex="cross:center" v-if="filterShow" style="margin-bottom: 5px"> <div v-loading="treeLoading" flex style="margin:auto;height: 100%;">
<el-input
placeholder="输入关键字进行过滤"
v-model="filterText"
style="margin-right: 13px"
></el-input>
<el-button
icon="el-icon-plus"
style="height: 32px; line-height: 32px; padding: 0 13px !important"
@click="add"
v-if="filterButtonShow"
>
</el-button>
</div>
<div
flex="dir:top cross:center main:center"
style="margin: auto; height: calc(100% - 22px); overflow: auto"
class="treeBodyHeight"
>
<div class="menu-i" flex="cross:center main:center"> <div class="menu-i" flex="cross:center main:center">
<div class="menu-i-t" flex="cross:top main:justify"> <div class="menu-i-t" flex="cross:top main:justify">
<el-tree <el-tree :data="menuData" :check-strictly="true" :default-checked-keys="selectData"
:data="menuData" @node-click="handleNodeClick" :expand-on-click-node="false" :default-expand-all="expandAll"
:check-strictly="true" :key="new Date().getTime()" :props="treeProps" style="width: 100%;background-color:white;height: 100%;"
:default-checked-keys="selectData" @check-change="checkChange" node-key="id" ref="elTree" :show-checkbox="showCheckbox">
v-loading="treeLoading"
@node-click="handleNodeClick"
:expand-on-click-node="false"
:default-expand-all="expandAll"
:filter-node-method="filterNode"
:props="treeProps"
style="width: 100%; background-color: transparent"
@check-change="checkChange"
node-key="id"
ref="elTree"
:show-checkbox="showCheckbox"
>
<div
flex="cross:center main:justify"
class="treeItem"
style="width: calc(100% - 31px)"
slot-scope="{ node, data }"
>
<p
class="nowrap"
style="
flex: 1;
font-size: 14px;
height: 32px;
line-height: 32px;
"
@dblclick="dbTree(node, data)"
>
{{ nodeLabel == "" ? node.label : node.label[nodeLabel] }}
</p>
<div style="width: 60px" v-if="treeButton" class="treeItemBtn">
<el-button
type="text"
size="mini"
icon="el-icon-plus"
v-if="appendButton"
@click.stop="() => append(node, data)"
style="color: #333"
>
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-edit"
v-if="reviseButton && data.id != 80"
@click.stop="() => revise(node, data)"
style="color: #333"
>
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-delete"
v-if="removeButton && data.id != 80"
@click.stop="() => remove(node, data)"
style="color: #ff3b30"
>
</el-button>
</div>
</div>
</el-tree> </el-tree>
<div @click="changePcAll" class="checkText" v-if="Allshow">全选</div> <div @click="changePcAll" class="checkText" v-if="Allshow">全选</div>
</div> </div>
</div> </div>
<div flex="cross:center main:center" style="width:100%" v-if="isSaveBtn"> <div flex="cross:center main:center" style="width:100%" v-if="isSaveBtn">
<el-button style="width: 40%" type="primary" @click="saveMenuUser" <el-button style="width:40%" type="primary" @click="saveMenuUser">保存</el-button>
>保存
</el-button>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -111,103 +30,45 @@ export default {
// //
expandAll: { expandAll: {
type: Boolean, type: Boolean,
default: true, default: true
},
//
treeButton: {
type: Boolean,
default: false,
},
//
filterButtonShow: {
type: Boolean,
default: false,
}, },
// //
isSaveBtn: { isSaveBtn: {
type: Boolean, type: Boolean,
default: false, default: false
}, },
// //
Allshow: { Allshow: {
type: Boolean, type: Boolean,
default: false, default: false
}, },
// //
showCheckbox: { showCheckbox: {
type: Boolean, type: Boolean,
default: false, default: false
}, },
// //
isCenter: { isCenter: {
type: Boolean, type: Boolean,
default: true, default: true
},
//
filterShow: {
type: Boolean,
default: false,
}, },
menuData: { menuData: {
type: Array, type: Array,
default: () => { default: () => {
return []; return []
}, }
}, },
setting: { setting: {
type: Boolean, type: Boolean,
default: false, default: false
},
treeLoading: {
type: Boolean,
default: false,
},
appendButton: {
type: Boolean,
default: true,
},
reviseButton: {
type: Boolean,
default: true,
},
removeButton: {
type: Boolean,
default: true,
},
nodeLabel: {
type: String,
default: "",
},
treeProps: {
type: Object,
default() {
return {
children: "children",
label: "label",
};
},
},
},
watch: {
defaultTheme: {
handler: function (val, oldVal) {
this.theme = val;
// document.getElementsByTagName('body')[0].style.setProperty('--active', val)
// let arr = document.getElementsByClassName('.el-tree-node:focus>.el-tree-node__content')
// $('.el-tree-node:focus>.el-tree-node__content').css('color',val)
},
immediate: true,
},
filterText(val) {
this.$refs.elTree.filter(val);
}, },
}, },
data() { data() {
return { return {
filterText: "", theme: '',
theme: "",
powerDlog: false, powerDlog: false,
//
// menuData: [],
// ids // ids
selectData: [], selectData: [],
// //
@ -215,75 +76,52 @@ export default {
// label: 'menuName', // label: 'menuName',
// children: 'id', // children: 'id',
// }, // },
// treeProps: { treeProps: {
// children: 'children', children: 'children',
// label: 'label' label: 'label'
// }, },
// PC // PC
checkedAllPc: false, checkedAllPc: false,
// //
outing: false, outing: false,
}; treeLoading: false,
}
}, },
created() { }, created() { },
mounted() {}, mounted() {
},
computed: { computed: {
defaultTheme() { defaultTheme() {
return this.$store.state.settings.theme; return this.$store.state.settings.theme
},
},
watch: {
defaultTheme: {
handler: function (val, oldVal) {
this.theme = val
// document.getElementsByTagName('body')[0].style.setProperty('--active', val)
// let arr = document.getElementsByClassName('.el-tree-node:focus>.el-tree-node__content')
// $('.el-tree-node:focus>.el-tree-node__content').css('color',val)
},
immediate: true,
}, },
}, },
methods: { methods: {
//
clickFirst() {
document.querySelectorAll(".is-focusable")[0].click();
},
setCurrentKey(selectId) {
this.$nextTick(() => {
this.$refs.elTree.setCurrentKey(selectId);
});
},
dbTree(node, data) {
console.log(node, data, "node");
this.setCurrentKey(null);
},
//
append(node, data) {
this.$emit("append", data, node);
},
//
revise(node, data) {
this.$emit("revise", data, node);
},
//
remove(node, data) {
this.$emit("remove", data, node);
},
add() {
this.$emit("add");
},
filterNode(value, data, node) {
if (!value) return true;
let nodeData =
this.nodeLabel == ""
? data[this.treeProps.label]
: data[this.treeProps.label][this.nodeLabel];
return nodeData.indexOf(value) !== -1;
},
buttonL(el) { buttonL(el) {
el.active = !el.active; el.active = !el.active
this.$forceUpdate(); this.$forceUpdate()
}, },
setData(id) { setData(id) {
this.selectData.push(id); this.selectData.push(id)
}, },
saveMenuUser() { saveMenuUser() {
let allKeys = this.getKey(); let allKeys = this.getKey();
this.$emit("onSaveMenu", allKeys); this.$emit('onSaveMenu', allKeys);
}, },
// key // key
getKey() { getKey() {
return this.$refs.elTree.getCheckedKeys(); return this.$refs.elTree.getCheckedKeys()
}, },
// //
initData() { initData() {
@ -295,15 +133,15 @@ export default {
}, },
// //
handleClose() { handleClose() {
this.powerDlog = false; this.powerDlog = false
this.initData(); this.initData()
}, },
// //
changePcAll() { changePcAll() {
this.checkedAllPc = !this.checkedAllPc; this.checkedAllPc = !this.checkedAllPc;
let selectData = []; let selectData = [];
if (this.checkedAllPc) { if (this.checkedAllPc) {
selectData = this.cycleData(this.menuData); selectData = this.cycleData(this.menuData)
} }
this.selectData = selectData; this.selectData = selectData;
}, },
@ -319,42 +157,39 @@ export default {
function cycle(data) { function cycle(data) {
if (!data || data.length == 0) { if (!data || data.length == 0) {
return false; return false
} else { } else {
for (var i = 0, len = data.length; i < len; i++) { for (var i = 0, len = data.length; i < len; i++) {
let item = data[i]; let item = data[i]
if (isSelect && item.selected == 1) { if (isSelect && item.selected == 1) {
newData.push(item.id); newData.push(item.id)
} }
if (!isSelect) { if (!isSelect) {
newData.push(item.id); newData.push(item.id)
} }
cycle(item.id); cycle(item.id)
} }
} }
} }
cycle(outData)
cycle(outData); return newData
return newData;
}, },
getData(childIds) { getData(childIds) {
let newData = []; let newData = [];
function cycle(data) { function cycle(data) {
data.forEach((el) => { data.forEach(el => {
childIds.forEach((item) => { childIds.forEach(item => {
if (el.id == item) { if (el.id == item) {
newData.push(el); newData.push(el)
} }
}); })
if (el.children != null && el.children && el.children.length) { if (el.children != null && el.children && el.children.length) {
cycle(el.children, childIds); cycle(el.children, childIds)
} }
}); })
} }
cycle(this.menuData, childIds)
cycle(this.menuData, childIds); return newData
return newData;
}, },
/** /**
* @description 节点选中状态发生变化时的回调 * @description 节点选中状态发生变化时的回调
@ -364,46 +199,40 @@ export default {
* @param { Boolean } checked 当前节点是否选中 * @param { Boolean } checked 当前节点是否选中
*/ */
checkChange(nodeDode, checked) { checkChange(nodeDode, checked) {
let getHalfCheckedKeys = this.$refs.elTree let getHalfCheckedKeys = this.$refs.elTree.getCheckedKeys().concat(this.$refs.elTree.getHalfCheckedKeys())
.getCheckedKeys()
.concat(this.$refs.elTree.getHalfCheckedKeys());
// let getHalfCheckedKeys = this.$refs.elTree.getHalfCheckedKeys() // let getHalfCheckedKeys = this.$refs.elTree.getHalfCheckedKeys()
let childIds = let childIds = getHalfCheckedKeys.length != 0 ? getHalfCheckedKeys : this.selectData
getHalfCheckedKeys.length != 0 ? getHalfCheckedKeys : this.selectData; let checkdata = this.getData(childIds)
let checkdata = this.getData(childIds); this.$emit('checkChange', childIds, checkdata)
this.$emit("checkChange", childIds, checkdata); return
return;
let id = nodeDode.id; let id = nodeDode.id;
// let childIds = this.cycleData(id) // let childIds = this.cycleData(id)
console.log(id)
// //
childIds.forEach((item) => { childIds.forEach(item => {
this.$refs.elTree.setChecked(item, checked); this.$refs.elTree.setChecked(item, checked)
}); })
}, },
// //
handleNodeClick(data, b, c) { handleNodeClick(data) {
this.$emit("handleNodeClick", data, b, c); this.$emit('handleNodeClick', data);
}, },
},
}; }
}
</script> </script>
<style lang="scss"> <style lang="scss">
// $activeColor:val(--activeColor, "#00aaff"); // $activeColor:val(--activeColor, "#00aaff");
.nowrap {
/*让长段文本不换行*/
white-space: nowrap;
/*设置文本超出元素宽度部分隐藏*/
overflow-x: hidden;
/*设置文本超出部分用省略号显示*/
text-overflow: ellipsis;
}
.el-tree-node__content { .el-tree-node__content {
height: 32px !important; height: 32px !important;
} }
.el-tree-node__label { .el-tree-node__label {
// font-size: 16px !important; font-size: 14px !important;
margin-left: 4px; margin-left: 4px;
} }
@ -424,31 +253,9 @@ export default {
} }
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
.treeItem {
.treeItemBtn {
display: none;
margin-right: 10px;
}
&:hover {
.treeItemBtn {
display: block;
}
}
}
::v-deep .el-button--mini {
padding: 0 !important;
margin: 4px !important;
}
.el-tree-node.is-current > .el-tree-node__content .el-button--text {
}
.menu-i { .menu-i {
width: 100%; width: 100%;
// margin-bottom: 24px; // margin-bottom: 24px;
height: 100%;
&-f { &-f {
color: #52575a; color: #52575a;
@ -459,10 +266,10 @@ export default {
&-t { &-t {
width: 100%; width: 100%;
height: 100%;
// height: 450px; // height: 450px;
// border: 1px solid #d8d8d8; // border: 1px solid #d8d8d8;
// overflow-y: auto; overflow-y: auto;
height: 100%;
} }
} }
@ -482,7 +289,7 @@ export default {
transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out;
&:hover { &:hover {
color: #ecf5ff; color: #4570fc;
} }
} }
</style> </style>

View File

@ -9,7 +9,7 @@
<el-button type="primary" @click="handleReset" v-if="resetButton"> </el-button> <el-button type="primary" @click="handleReset" v-if="resetButton"> </el-button>
<el-button @click="handleClose"> </el-button> <el-button @click="handleClose"> </el-button>
<!-- <el-button v-if="orderCenter" @click="handleCancel">取消下单</el-button> --> <!-- <el-button v-if="orderCenter" @click="handleCancel">取消下单</el-button> -->
<el-button type="primary" v-if="submitButton" @click="handleConfirmClick"> </el-button> <el-button type="primary" @click="handleConfirmClick"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -86,11 +86,6 @@ export default {
width: { width: {
type: String, type: String,
default: '30%', default: '30%',
},
//
submitButton: {
type: Boolean,
default: true,
}, },
}, },
data() { data() {

View File

@ -2,44 +2,38 @@
<div flex> <div flex>
<div class="treeBody" v-if="menuData.length > 0"> <div class="treeBody" v-if="menuData.length > 0">
<base-tree ref="baseTree" :isCenter="false" :isSaveBtn="false" :Allshow="false" :showCheckbox="false" <base-tree ref="baseTree" :isCenter="false" :isSaveBtn="false" :Allshow="false" :showCheckbox="false"
:menuData="menuData" @handleNodeClick="handleNodeClick" :menuData="menuData" @handleNodeClick="handleNodeClick">
>
</base-tree> </base-tree>
</div> </div>
<div style="overflow: hidden;padding: 10px;flex: 1;"> <div style="overflow: hidden;padding: 10px;flex: 1;">
<div flex="cross:center" style="margin-bottom: 10px;" v-if="showSearch"> <!-- <div flex="cross:center" style="margin-bottom: 10px;">
<el-input v-model="write" :placeholder="placeholder" style="width: 200px;margin-right: 10px;"> <el-input v-model="write" :placeholder="placeholder" style="width: 200px;margin-right: 10px;">
</el-input> </el-input>
<el-button type="primary" icon="el-icon-search" @click="search">查询</el-button> <el-button type="primary" icon="el-icon-search" @click="search">查询</el-button>
</div> </div> -->
<base-table ref="customtable" :border="true" :showIndex="false" :tabLoading.sync="tabLoading" :slotrow="true" <base-table ref="customtable" :border="true" :showIndex="false" :tabLoading.sync="tabLoading" :slotrow="true"
:tableData="tableData" :tableColumn="tableColumn" :funData="[]" @onCellClick="getCell" :tableData="tableData" :tableColumn="tableColumn" :funData="[]" @onCellClick="getCell" :tableHeight="tableHeightLog"
:tableHeight="tableHeightLog" @onSelectionChange="getSelect" :highlightCurrent="true" @radioChange="radioChange">
@onSelectionChange="getSelect" :highlightCurrent="true" @radioChange="radioChange"
>
<!-- 单选 --> <!-- 单选 -->
<template v-slot:option="{row}"> <template v-slot:option="{row}">
<el-radio v-model="radio" :label="row.$index" ></el-radio> <el-radio v-model="radio" :label="row.$index" ></el-radio>
</template> </template>
</base-table> </base-table>
<base-page :pageModel.sync="pageModel" @onPageChange="pageChange" :pageSizesList="[10 , 20, 80, 100, 150]" <base-page :pageModel.sync="pageModel" @onPageChange="pageChange" :pageSizesList='[10 , 20, 80, 100, 150]'></base-page>
v-if="pageShow"
></base-page>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import baseTable from '@/components/base/baseTable' import baseTable from "@/components/base/baseTable";
import baseLayout from '@/components/base/baseLayout' import baseLayout from "@/components/base/baseLayout";
import baseJurisdiction from '@/components/base/baseJurisdiction/index.vue' import baseJurisdiction from "@/components/base/baseJurisdiction/index.vue";
import baseTree from '@/components/base/BaseMenuTree/index.vue' import baseTree from "@/components/base/BaseMenuTree/index.vue";
import basePage from '@/components/base/basePage' import basePage from '@/components/base/basePage'
import configData from './configData' import configData from "./configData";
export default { export default {
name: 'review', name: "review",
components: { components: {
baseLayout, baseLayout,
baseTable, baseTable,
@ -61,30 +55,20 @@ export default {
type: Array, type: Array,
default () { default () {
return [] return []
} },
}, },
menuData: { menuData: {
type: Array, type: Array,
default () { default () {
return [] return []
} },
}, },
tableData: { tableData: {
type: Array, type: Array,
default () { default () {
return [] return []
}
}, },
pageShow: {
type: Boolean,
default: true
}, },
showSearch: {
type: Boolean,
default: false
},
}, },
watch: { watch: {
choiceDialog: { choiceDialog: {
@ -94,7 +78,7 @@ export default {
this.reset() this.reset()
} }
} }
} },
}, },
data() { data() {
return { return {
@ -104,7 +88,7 @@ export default {
pageModel: { pageModel: {
total: 0, total: 0,
page: 1, page: 1,
limit: 10 limit: 10,
}, },
write: '', write: '',
nowBtns: [{ nowBtns: [{
@ -114,8 +98,8 @@ export default {
tabLoading: false, tabLoading: false,
selectTable: [], // selectTable: [], //
settingsDialog: false, settingsDialog: false,
settingCenter: 'left', settingCenter: "left",
tableHeightLog: 'calc(100vh - 416px)' tableHeightLog: "calc(100vh - 416px)",
} }
}, },
computed: { computed: {
@ -140,8 +124,7 @@ export default {
goInfo(type = 1, id) { goInfo(type = 1, id) {
}, },
getElSelect(event, index, indexItem, param) { getElSelect(event, index, indexItem, param) {},
},
// //
getFuncBtn(btnEven) { getFuncBtn(btnEven) {
console.log(btnEven) console.log(btnEven)
@ -157,7 +140,7 @@ export default {
handleNodeClick(data) { handleNodeClick(data) {
this.organizationForm = { this.organizationForm = {
o_OrganCode: data.o_OrganCode, o_OrganCode: data.o_OrganCode,
ParentOrganName: data.label ParentOrganName: data.label,
} }
this.propvalue = data.label this.propvalue = data.label
this.optionData = '' this.optionData = ''
@ -166,24 +149,19 @@ export default {
}, },
// //
pageChange() { pageChange() {
let pageModel ={ this.$emit('onQuery', this.mergeParam())
page: this.pageModel.pageIndex ? this.pageModel.pageIndex : 1,
limit: this.pageModel.pageSize? this.pageModel.pageSize : 10
}
this.$emit('onQuery', this.mergeParam(), pageModel)
}, },
mergeParam(state) { mergeParam(state) {
if (state) { if (state) {
this.pageModel.page = 1 this.pageModel.page = 1;
} }
let page = { let page = {
page: this.pageModel.page, page: this.pageModel.page,
limit: this.pageModel.limit limit: this.pageModel.limit,
} }
for (let i in this.model) { for (let i in this.model) {
if (!this.model[i]) { if (!this.model[i]) {
this.model[i] = null this.model[i] = null;
} }
} }
let search = Object.assign({}, page, this.model) let search = Object.assign({}, page, this.model)
@ -195,7 +173,7 @@ export default {
}, },
// //
search() { search() {
this.$emit('getTableList', this.write) this.$emit('getTableList', this.write);
}, },
radioChange(val) { radioChange(val) {
this.optionData = val this.optionData = val
@ -208,7 +186,7 @@ export default {
}, },
mounted() { mounted() {
// this.$refs.choice.reset() // this.$refs.choice.reset()
} },
} }
</script> </script>

View File

@ -72,16 +72,6 @@
<!-- 搜索 --> <!-- 搜索 -->
<div v-show="queryShow" style="padding: 16px;" flex="cross:center" ref="serchRefs" class="searchContainer"> <div v-show="queryShow" style="padding: 16px;" flex="cross:center" ref="serchRefs" class="searchContainer">
<div v-for="(row, indexRow) in searchList" class="searchBox" :key="indexRow"> <div v-for="(row, indexRow) in searchList" class="searchBox" :key="indexRow">
<el-cascader v-model="ruleForm[row.prop]"
:options="row.options"
:show-all-levels="false"
@change="(value)=>handleSelectChange(row,value)"
:props="{emitPath:false}"
:placeholder="!row.placeholder ? '请选择' : row.placeholder" v-if="row.tag==='elCascader'"
clearable>
</el-cascader>
<el-input v-model="ruleForm[row.prop]" clearable :type="row.type ? row.type : 'text'" style="width: 100%" <el-input v-model="ruleForm[row.prop]" clearable :type="row.type ? row.type : 'text'" style="width: 100%"
:placeholder="!row.placeholder ? '请输入' : row.placeholder" v-if="row.tag === 'elInput'" min="1"> :placeholder="!row.placeholder ? '请输入' : row.placeholder" v-if="row.tag === 'elInput'" min="1">
</el-input> </el-input>
@ -111,10 +101,8 @@
<i class="el-icon-circle-close" v-if="!row.disabled && ruleForm[row.prop]" @click="elDialogClear(row)" <i class="el-icon-circle-close" v-if="!row.disabled && ruleForm[row.prop]" @click="elDialogClear(row)"
style="margin-left: 10px"></i> style="margin-left: 10px"></i>
</div> </div>
<el-select v-model="ruleForm[row.prop]" filterable style="width: 100%" :multiple="row.multiple?row.multiple:false" <el-select v-model="ruleForm[row.prop]" filterable style="width: 100%"
:collapse-tags="true" @change="selectChange($event, indexRow, indexRow, row)" :clearable="row.clearable ? row.clearable : true"
@change="selectChange($event, indexRow, indexRow, row)"
:clearable="row.clearable ? row.clearable : true"
:placeholder="!row.placeholder ? '请选择' : row.placeholder" v-if="row.tag === 'elSelect'"> :placeholder="!row.placeholder ? '请选择' : row.placeholder" v-if="row.tag === 'elSelect'">
<el-option v-for="(el, elIndex) in row.options" :key="!row.optionValue ? el['value'] : el[row.optionValue]" <el-option v-for="(el, elIndex) in row.options" :key="!row.optionValue ? el['value'] : el[row.optionValue]"
:label="!row.optionLabel ? el['label'] : el[row.optionLabel]" :label="!row.optionLabel ? el['label'] : el[row.optionLabel]"
@ -336,7 +324,7 @@ export default {
pageModel: { pageModel: {
total: 0, total: 0,
pageIndex: 1, pageIndex: 1,
pageSize: 100, pageSize: 10,
}, },
// //
clearState: 0, clearState: 0,
@ -366,11 +354,6 @@ export default {
// } // }
}, },
methods: { methods: {
handleSelectChange(row,value) {
this.ruleForm[row.prop]=value
console.log("Selected value:"+value);
},
watchSize() { watchSize() {
const _this = this; const _this = this;
var erd = elementResizeDetectorMaker(); var erd = elementResizeDetectorMaker();
@ -562,7 +545,7 @@ export default {
}, },
refresh() { refresh() {
this.ruleForm = Object.assign({}, ""); this.ruleForm = Object.assign({}, "");
this.$emit("onQuery", this.mergeParam(true),this.ruleForm); this.$emit("onQuery", this.mergeParam(true));
}, },
testEnter() { testEnter() {
if (this.enterClickType) { if (this.enterClickType) {

View File

@ -5,140 +5,91 @@
--> -->
<template> <template>
<el-form validate-on-rule-change :model="ruleForm" :rules="rules" label-position="top" ref="ruleForm" <el-form validate-on-rule-change :model="ruleForm" :rules="rules" label-position="top" ref="ruleForm"
label-width="100px" label-width="100px">
> <el-row :gutter="24" v-for="(item, index) in formRow" :key="index" style="margin-bottom: 17px;">
<el-row :gutter="24" v-for="(item, index) in formRow" :key="index" :style="{marginBottom: isSence ?'0': '17px'}">
<el-col v-for="(row, indexRow) in item.elCol" :span="row.span ? row.span : spanNumber" :key="indexRow"> <el-col v-for="(row, indexRow) in item.elCol" :span="row.span ? row.span : spanNumber" :key="indexRow">
<el-form-item :prop="row.prop" :style="`display: flex;margin-bottom: ${marginBottom}px;`" <el-form-item :prop="row.prop" :style="`display: flex;margin-bottom: ${marginBottom}px;`"
v-if="row.show != false" :class="(rules[row.prop] ? 'ruleFormClass ' : '')" v-if="row.show != false" :class="(rules[row.prop] ? 'ruleFormClass ' : '')">
>
<!-- <span class="label" slot="label" style="width: 25%;">{{row.label}}</span> --> <!-- <span class="label" slot="label" style="width: 25%;">{{row.label}}</span> -->
<div class="single label" v-if="row.label" slot="label" <div class="single label" v-if="row.label" slot="label"
:style="`width: ${spanWidth};` + `justify-content: ${justifyContent};`" flex :style="`width: ${spanWidth};` + `justify-content: ${justifyContent};`" flex>
> <span class="label">{{ row.label }}</span>
<span class="label" :style="{color: isSence ? '#999':'#333',fontSize: isSence ? '14px':'13px'}">{{ row.label }}</span>
</div> </div>
<el-input v-model="ruleForm[row.prop]" v-if="row.tag === 'password'" type="password" show-password clearable <el-input v-model="ruleForm[row.prop]" v-if="row.tag === 'password'" type="password" show-password clearable auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin" :disabled="row.disabled ? row.disabled : false">
auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin"
:disabled="row.disabled ? row.disabled : false"
>
<svg-icon <svg-icon
slot="prefix" slot="prefix"
icon-class="password" icon-class="password"
class="el-input__icon input-icon" class="el-input__icon input-icon"
/> />
</el-input> </el-input>
<el-input v-model="ruleForm[row.prop]" clearable :disabled="row.disabled || disabled" <el-input v-model="ruleForm[row.prop]" clearable :disabled="row.disabled ? row.disabled : false"
:rows="row.rows ? row.rows : 2" :type="row.type ? row.type : 'text'" :rows="row.rows ? row.rows : 2" :type="row.type ? row.type : 'text'" :maxlength="row.maxlength ? row.maxlength : ''"
:maxlength="row.maxlength ? row.maxlength : ''"
:placeholder="!row.placeholder ? '请输入' : row.placeholder" v-if="row.tag === 'elInput'" :placeholder="!row.placeholder ? '请输入' : row.placeholder" v-if="row.tag === 'elInput'"
@blur="searchByStationName(row.prop)" min="1" @input="row.rules ? integerNumber(row) : ''" @blur="searchByStationName(row.prop)" min="1" @input="row.rules ? integerNumber(row) : ''">
@change="row.changeRemind?changeRemind(row):''"
>
</el-input> </el-input>
<el-input-number v-if="row.tag === 'elInputNumber'" v-model="ruleForm[row.prop]"style="width: 100%;" <el-input-number v-if="row.tag === 'elInputNumber'" v-model="ruleForm[row.prop]"style="width: 100%;"
:disabled="row.disabled ? row.disabled : false" :disabled="row.disabled ? row.disabled : false" :precision="row.precisionNum ? row.precisionNum : 0"
:precision="row.precisionNum ? row.precisionNum : 0"
:step="row.stepNum ? row.stepNum : 1" @change="handleChange" :min="0" :step="row.stepNum ? row.stepNum : 1" @change="handleChange" :min="0"
:max="row.maxNum ? row.maxNum : 99999" :max="row.maxNum ? row.maxNum : 99999"
:label="!row.placeholder ? '描述文字' : row.placeholder" :label="!row.placeholder ? '描述文字' : row.placeholder"></el-input-number>
></el-input-number>
<!-- <div v-if="row.prop=='address'" id="container" <!-- <div v-if="row.prop=='address'" id="container"
style="display:none;margin-top:30px;width: 730px;margin:0 auto;height: 590px;border: 1px solid gray;overflow:hidden;"> style="display:none;margin-top:30px;width: 730px;margin:0 auto;height: 590px;border: 1px solid gray;overflow:hidden;">
</div> --> </div> -->
<el-switch v-if="row.tag === 'elSwitch'" v-model="ruleForm[row.prop]" :active-text="row.activeText" <el-switch v-if="row.tag === 'elSwitch'" v-model="ruleForm[row.prop]" :active-text="row.activeText"
@change="switchChange($event, index, indexRow, row)" :inactive-text="row.inactiveText" @change="switchChange($event, index, indexRow, row)" :inactive-text="row.inactiveText"
:active-value="row.activeValue ? row.activeValue : true" :active-value="row.activeValue ? row.activeValue : true"
:inactive-value="row.inactiveValue || row.inactiveValue == 0 ? row.inactiveValue : false" :inactive-value="row.inactiveValue || row.inactiveValue == 0 ? row.inactiveValue : false">
>
</el-switch> </el-switch>
<el-date-picker v-model="ruleForm[row.prop]" v-if="row.tag === 'elDatePicker'" class="w-100" <el-date-picker v-model="ruleForm[row.prop]" v-if="row.tag === 'elDatePicker'" class="w-100"
:class="{ one: row.type ? 'date' : row.type }" :disabled="row.disabled ? row.disabled : false" :class="{ one: row.type ? 'date' : row.type }" :disabled="row.disabled ? row.disabled : false"
:value-format="!row.valueFormat ? 'yyyy-MM-dd' : row.valueFormat" range-separator="至" :value-format="!row.valueFormat ? 'yyyy-MM-dd' : row.valueFormat" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" :type="!row.type ? 'date' : row.type" start-placeholder="开始日期" end-placeholder="结束日期" :type="!row.type ? 'date' : row.type"
:placeholder="!row.placeholder ? '请选择' : row.placeholder" :placeholder="!row.placeholder ? '请选择' : row.placeholder">
>
</el-date-picker> </el-date-picker>
<el-radio-group v-model="ruleForm[row.prop]" v-if="row.tag === 'elRadio'" <el-radio-group v-model="ruleForm[row.prop]" v-if="row.tag === 'elRadio'" @input="changeRadio($event,index,indexRow,row)"
@input="changeRadio($event,index,indexRow,row)" :disabled="row.disabled ? row.disabled : false">
:disabled="row.disabled ? row.disabled : false"
>
<el-radio v-for="el in row.options" :label="el.value" :key="el.value">{{ el.label }}</el-radio> <el-radio v-for="el in row.options" :label="el.value" :key="el.value">{{ el.label }}</el-radio>
</el-radio-group> </el-radio-group>
<div @click="elDialogClick(row, index, indexRow)" @mouseover="elDialogHover(row)" <div @click="elDialogClick(row, index, indexRow)" @mouseover="elDialogHover(row)"
@mouseleave="elDialogLeave(row)" v-if="row.tag === 'elDialog'" class="elDialog" @mouseleave="elDialogLeave(row)" v-if="row.tag === 'elDialog'" class="elDialog"
:style="{ 'background-color': row.disabled ? '#F5FAF7' : '#fff', 'curpur': row.disabled ? 'pointer' : 'default' }" :style="{ 'background-color': row.disabled ? '#F5FAF7' : '#fff', 'curpur': row.disabled ? 'pointer' : 'default' }">
>
<!-- ,background-color:row.disabled?'#c0c4cc':'#fff' --> <!-- ,background-color:row.disabled?'#c0c4cc':'#fff' -->
<p :style="{ color: ruleForm[row.prop] ? '#000' : '#c0c4cc' }" class="showText" <p :style="{ color: ruleForm[row.prop] ? '#000' : '#c0c4cc' }" class="showText"
@click="elDialogClick(row, index, indexRow)" @click="elDialogClick(row, index, indexRow)">{{ ruleForm[row.prop] ? ruleForm[row.prop] :
>{{ '请点击选择' }}
ruleForm[row.prop] ? ruleForm[row.prop] :
'请点击选择'
}}
<!-- <el-input v-model="ruleForm[row.prop]"></el-input> --> <!-- <el-input v-model="ruleForm[row.prop]"></el-input> -->
</p> </p>
<!-- <i class="el-icon-more " v-if="row.elDialogHoverType"></i> --> <!-- <i class="el-icon-more " v-if="row.elDialogHoverType"></i> -->
<i class="el-icon-more " @click="elDialogClick(row, index, indexRow)" <i class="el-icon-more " @click="elDialogClick(row, index, indexRow)"
v-if="!row.disabled && !ruleForm[row.prop]" v-if="!row.disabled && !ruleForm[row.prop]"></i>
></i>
<i class="el-icon-circle-close " v-if="!row.disabled && ruleForm[row.prop] && row.elDialogHoverType" <i class="el-icon-circle-close " v-if="!row.disabled && ruleForm[row.prop] && row.elDialogHoverType"
@click.stop="resetField(row.prop)" style="margin-left: 10px;" @click.stop="resetField(row.prop)" style="margin-left: 10px;"></i>
></i>
</div> </div>
<div v-if="row.tag === 'elLook'"> <div v-if="row.tag === 'elLook'">
{{ ruleForm[row.prop] }} {{ ruleForm[row.prop] }}
</div> </div>
<el-cascader class="w-100" v-if="row.tag === 'elCascader'"
v-model="ruleForm[row.prop]" :options="row.options"
:disabled="row.disabled ? row.disabled : false"
:show-all-levels="row.showAllLevels == false ? false : true"
:clearable="row.clearable ? row.clearable : true" @change="
cascaderChange(ruleForm[row.prop], row.options, row)
" :placeholder="!row.placeholder ? '请选择' : row.placeholder" :props="
row.props
? row.props
: { expandTrigger: 'hover', checkStrictly: true }
" popper-class="search_choose" ref="searchUnit" filterable>
<div slot-scope="{ data }" @click="clickNode" style="z-index: 99999"
v-if="row.props && row.props.label">
{{ data[row.props.label] }}
</div>
<div slot-scope="{ data }" @click="clickNode" style="z-index: 99999" v-else>
{{ data.label }}
</div>
</el-cascader>
<el-select class="w-100" v-model="ruleForm[row.prop]" filterable <el-select class="w-100" v-model="ruleForm[row.prop]" filterable
@change="selectChange($event, index, indexRow, row.options,row)" @change="selectChange($event, index, indexRow, row.options)" :disabled="row.disabled?row.disabled:false"
:disabled="row.disabled?row.disabled:false"
:clearable="row.clearable ? row.clearable : true" :clearable="row.clearable ? row.clearable : true"
:placeholder="!row.placeholder ? '请选择' : row.placeholder" v-if="row.tag === 'elSelect'" :placeholder="!row.placeholder ? '请选择' : row.placeholder" v-if="row.tag === 'elSelect'">
>
<el-option v-for="(el, index) in row.options" <el-option v-for="(el, index) in row.options"
:key="!row.optionValue ? el['value'] : el[row.optionValue]" :key="!row.optionValue ? el['value'] : el[row.optionValue]"
:label="!row.optionLabel ? el['label'] : el[row.optionLabel]" :label="!row.optionLabel ? el['label'] : el[row.optionLabel]"
:value="!row.optionValue ? el['value'] : el[row.optionValue]" :value="!row.optionValue ? el['value'] : el[row.optionValue]">
>
</el-option> </el-option>
</el-select> </el-select>
<el-select class="w-100" v-model="ruleForm[row.prop]" multiple :disabled="row.disabled?row.disabled:false" <el-select class="w-100" v-model="ruleForm[row.prop]" multiple :disabled="row.disabled?row.disabled:false"
:clearable="row.clearable" :placeholder="!row.placeholder ? '请选择' : row.placeholder" :clearable="row.clearable" :placeholder="!row.placeholder ? '请选择' : row.placeholder"
@change="selectChange($event, index, indexRow, row.options, row)" v-if="row.tag === 'elMultiple'">
v-if="row.tag === 'elMultiple'"
filterable
:multiple-limit="row.limit ? row.limit :0"
>
<el-option v-for="el in row.options" :key="!row.optionValue ? el['value'] : el[row.optionValue]" <el-option v-for="el in row.options" :key="!row.optionValue ? el['value'] : el[row.optionValue]"
:label="!row.optionLabel ? el['label'] : el[row.optionLabel]" :label="!row.optionLabel ? el['label'] : el[row.optionLabel]"
:value="!row.optionValue ? el['value'] : el[row.optionValue]" :value="!row.optionValue ? el['value'] : el[row.optionValue]">
>
</el-option> </el-option>
</el-select> </el-select>
<treeselect v-if="row.tag === 'elTreeSelect'" v-model="ruleForm[row.prop]" :normalizer="normalizer" <treeselect v-if="row.tag === 'elTreeSelect'" v-model="ruleForm[row.prop]" :normalizer="normalizer"
:options="delTreeChildren(row.options)" :multiple="row.multiple?row.multiple:false" :options="delTreeChildren(row.options)" :multiple="row.multiple?row.multiple:false"
:disabled="row.disabled?row.disabled:false" @clear="treeSelectClear" ref="selectTree" :disabled="row.disabled?row.disabled:false" @clear="treeSelectClear" ref="selectTree"
:placeholder="!row.placeholder?'请选择':row.placeholder" @select="selectTree" :placeholder="!row.placeholder?'请选择':row.placeholder" @select="selectTree" />
/>
<slot :name="row.slotName" v-if="row.tag === 'elSlot'" :row="ruleForm"></slot> <slot :name="row.slotName" v-if="row.tag === 'elSlot'" :row="ruleForm"></slot>
<!-- <upload-file v-if="row.tag === 'uploadFile'" :showImgPath="ruleForm[row.prop]" ref="imgFile" <!-- <upload-file v-if="row.tag === 'uploadFile'" :showImgPath="ruleForm[row.prop]" ref="imgFile"
@onImage="row.prop == 'beforeImgList'? getbeforeImgList:row.prop == 'materialsList'? getmaterialsList:row.prop == 'getmaterialsListAfter'?getmaterialsListAfter:getImage "></upload-file> --> @onImage="row.prop == 'beforeImgList'? getbeforeImgList:row.prop == 'materialsList'? getmaterialsList:row.prop == 'getmaterialsListAfter'?getmaterialsListAfter:getImage "></upload-file> -->
@ -164,7 +115,6 @@
import { import {
checkMobile checkMobile
} from '@/utils/util' } from '@/utils/util'
export default { export default {
components: { components: {
// uploadFile, // uploadFile,
@ -204,12 +154,8 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
isSence: {
type: Boolean,
default: false
},
formdata: { formdata: {
type: Object type: Object,
}, },
justifyContent: { justifyContent: {
type: String, type: String,
@ -218,12 +164,12 @@ export default {
marginBottom: { marginBottom: {
type: String, type: String,
default: '0' default: '0'
} },
}, },
data() { data() {
return { return {
// //
ruleForm: {} ruleForm: {},
} }
}, },
watch: { watch: {
@ -231,65 +177,16 @@ export default {
immediate: true, // immediate: true, //
deep: true, // deep: true, //
handler(newVal, oldVal) { handler(newVal, oldVal) {
this.$emit('dataChanges', newVal, oldVal) this.$emit('dataChanges')
} }
} }
}, },
created() { created() { },
},
mounted() { mounted() {
// this.ruleForm = this.formdata // this.ruleForm = this.formdata
}, },
computed: {}, computed: {},
methods: { methods: {
cascaderChange(val, options, row) {
console.log(row,'row')
let valLabel = "";
let obj = {}
function getLabelPath(el, data, path = []) {
for (let i = 0; i < data.length; i++) {
const item = data[i];
path.push(item[row.props.label]);
if (el === item[row.props.value]) {
obj = item
return [...path]; //
}
if (item[row.props.children] && item[row.props.children].length > 0) {
const result = getLabelPath(el, item[row.props.children], path);
if (result) return result;
}
path.pop(); // 退
}
return null;
}
// 🧠 valval
const lastValue = Array.isArray(val) ? val[val.length - 1] : val;
const labelPath = getLabelPath(lastValue, options);
valLabel = labelPath ? labelPath.join('.') : '';
this.$emit("cascaderChange", val, options, row, valLabel,obj);
},
//
clickNode($event) {
console.log(123, "?");
console.log(
$event.target.parentElement.parentElement.firstElementChild,
"$event.target.parentElement.parentElement.firstElementChild"
);
$event.target.parentElement.parentElement.firstElementChild.click();
},
addHandle(){
},
changeRemind() {
this.$emit('changeRemind', this.ruleForm)
},
integerNumber(row) { integerNumber(row) {
// row.rules?(v)=>()):'' // row.rules?(v)=>()):''
// @input="(v)=>(row.row.number=v.replace(/[^\d]/g,''))" // @input="(v)=>(row.row.number=v.replace(/[^\d]/g,''))"
@ -333,36 +230,36 @@ let obj = {}
if (type == 'address') { if (type == 'address') {
let address = this.ruleForm[type] let address = this.ruleForm[type]
let that = this let that = this
var map = new BMap.Map('container') var map = new BMap.Map("container");
map.centerAndZoom(address, 18) map.centerAndZoom(address, 18);
map.enableScrollWheelZoom() // map.enableScrollWheelZoom(); //
map.enableContinuousZoom() // map.enableContinuousZoom(); //
map.addControl(new BMap.NavigationControl()) // map.addControl(new BMap.NavigationControl()); //
map.addControl(new BMap.OverviewMapControl()) // map.addControl(new BMap.OverviewMapControl()); //
map.addControl(new BMap.OverviewMapControl({ map.addControl(new BMap.OverviewMapControl({
isOpen: true, isOpen: true,
anchor: BMAP_ANCHOR_BOTTOM_RIGHT anchor: BMAP_ANCHOR_BOTTOM_RIGHT
})) // })); //
var localSearch = new BMap.LocalSearch(map) var localSearch = new BMap.LocalSearch(map);
localSearch.enableAutoViewport() // localSearch.enableAutoViewport(); //
map.clearOverlays() // map.clearOverlays(); //
var keyword = address var keyword = address
localSearch.setSearchCompleteCallback(function (searchResult) { localSearch.setSearchCompleteCallback(function (searchResult) {
var poi = searchResult.getPoi(0) var poi = searchResult.getPoi(0);
map.centerAndZoom(poi.point, 13) map.centerAndZoom(poi.point, 13);
var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point
.lat)) // .lat)); //
map.addOverlay(marker) map.addOverlay(marker);
var content = keyword + '<br/><br/>经度:' + poi.point.lng + '<br/>纬度:' + poi.point.lat var content = keyword + "<br/><br/>经度:" + poi.point.lng + "<br/>纬度:" + poi.point.lat;
that.ruleForm['lng'] = poi.point.lng that.ruleForm['lng'] = poi.point.lng
that.ruleForm['lat'] = poi.point.lat that.ruleForm['lat'] = poi.point.lat
var infoWindow = new BMap.InfoWindow('<p style=\'font-size:14px;\'>' + content + '</p>') var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>");
marker.addEventListener('click', function() { marker.addEventListener("click", function () {
this.openInfoWindow(infoWindow) this.openInfoWindow(infoWindow);
}) });
// marker.setAnimation(BMAP_ANIMATION_BOUNCE); // // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //
}) });
localSearch.search(keyword) localSearch.search(keyword);
} }
}, },
@ -372,21 +269,21 @@ let obj = {}
}, },
// //
getImage(imagePath) { getImage(imagePath) {
let licenseImg = imagePath.join(',') let licenseImg = imagePath.join(",")
}, },
// //
getbeforeImgList(imagePath) { getbeforeImgList(imagePath) {
let licenseImg = imagePath.join(',') let licenseImg = imagePath.join(",")
this.$set(this.ruleForm, 'beforeImgList', licenseImg) this.$set(this.ruleForm, 'beforeImgList', licenseImg)
}, },
// //
getmaterialsList(imagePath) { getmaterialsList(imagePath) {
let licenseImg = imagePath.join(',') let licenseImg = imagePath.join(",")
this.$set(this.ruleForm, 'materialsList', licenseImg) this.$set(this.ruleForm, 'materialsList', licenseImg)
}, },
// //
getmaterialsListAfter(imagePath) { getmaterialsListAfter(imagePath) {
let licenseImg = imagePath.join(',') let licenseImg = imagePath.join(",")
this.$set(this.ruleForm, 'materialsListAfter', licenseImg) this.$set(this.ruleForm, 'materialsListAfter', licenseImg)
}, },
revealPhoto(licenseImg) { revealPhoto(licenseImg) {
@ -401,12 +298,10 @@ let obj = {}
let newJson = [].concat.apply([], jsonData) let newJson = [].concat.apply([], jsonData)
newJson.forEach(item => { newJson.forEach(item => {
if (this.ruleForm.factoryInFlag == 1) { if (this.ruleForm.factoryInFlag == 1) {
for (let i = 0; i < this.formRow[8].elCol.length; i++) { for (let i = 0; i < this.formRow[8].elCol.length; i++) { }
}
} }
if (this.ruleForm.factoryInFlag == 0) { if (this.ruleForm.factoryInFlag == 0) {
for (let i = 0; i < this.formRow[8].elCol.length; i++) { for (let i = 0; i < this.formRow[8].elCol.length; i++) { }
}
} }
this.$set(this.ruleForm, item.prop, echoData[item.prop]) this.$set(this.ruleForm, item.prop, echoData[item.prop])
}) })
@ -454,26 +349,23 @@ let obj = {}
resetField(field) { resetField(field) {
if (this.ruleForm[field]) { if (this.ruleForm[field]) {
this.$set(this.ruleForm, field, '') this.$set(this.ruleForm, field, '')
this.$refs['ruleForm'].clearValidate(field) // this.$refs['ruleForm'].clearValidate(field); //
} }
}, },
resetFields() { resetFields() {
this.choiceAssignment({}) this.choiceAssignment({})
this.$refs.ruleForm.resetFields() this.$refs.ruleForm.resetFields();
}, },
// , index indexRow // , index indexRow
selectChange(val, index, indexRow, options, row) { selectChange(val, index, indexRow, options) {
let obj = {} let obj = {}
options.forEach((item) => { options.forEach((item) => {
if (item.value == val) { if (item.value == val) {
obj = item obj = item
} }
}) })
this.$emit('onSelect', val, index, indexRow, obj, options, this.ruleForm, row) this.$emit('onSelect', val, index, indexRow, obj)
if (row.changeRemind) { this.$forceUpdate();
this.$emit('changeRemind', this.ruleForm)
}
this.$forceUpdate()
}, },
switchChange(val, index, indexRow, row) { switchChange(val, index, indexRow, row) {
this.$emit('switchChange', val, index, indexRow, row) this.$emit('switchChange', val, index, indexRow, row)
@ -488,10 +380,10 @@ let obj = {}
if (valid) { if (valid) {
this.$emit('onSubmit', this.ruleForm) this.$emit('onSubmit', this.ruleForm)
} else { } else {
console.log('error submit!!') console.log('error submit!!');
return false return false;
} }
}) });
}, },
// //
resetForm(formName) { resetForm(formName) {
@ -535,12 +427,10 @@ let obj = {}
treeSelectClear(){ treeSelectClear(){
this.$refs.selectTree.clear() this.$refs.selectTree.clear()
} }
} },
} }
</script> </script>
<style> <style>
.el-form-item__label { .el-form-item__label {
/* width: 25%; */ /* width: 25%; */
line-height: 1.2; line-height: 1.2;
@ -557,12 +447,10 @@ let obj = {}
content: '' content: ''
} }
</style> </style>
<style scoped lang="scss"> <style scoped lang='scss'>
::v-deep textarea.el-textarea__inner{ ::v-deep textarea.el-textarea__inner{
min-height: 100px !important; min-height: 100px !important;
} }
.label { .label {
/* @include fontBase(16px, #333333) ; */ /* @include fontBase(16px, #333333) ; */
color: #333; color: #333;
@ -607,7 +495,7 @@ let obj = {}
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
border: 1px solid #DCDFE6; border: 1px solid #DCDFE6;
border-radius: 4px; border-radius: 8px;
padding: 0 15px; padding: 0 15px;
cursor: pointer; cursor: pointer;
@ -628,10 +516,6 @@ let obj = {}
} }
::v-deep .el-form-item__content {
line-height: 36px !important;
}
.ruleFormClass { .ruleFormClass {
::v-deep .el-input__inner { ::v-deep .el-input__inner {
border-color: #E6A23C !important border-color: #E6A23C !important
@ -658,4 +542,3 @@ let obj = {}
} }
} }
</style> </style>

View File

@ -410,7 +410,7 @@ export default {
pageModel: { pageModel: {
total: 0, total: 0,
page: 1, page: 1,
pageSize: 100, limit: 20,
}, },
// //
clearState: 0, clearState: 0,
@ -600,7 +600,7 @@ export default {
} }
let page = { let page = {
page: this.pageModel.page, page: this.pageModel.page,
limit: this.pageModel.pageSize, limit: this.pageModel.limit,
}; };
for (let i in this.model) { for (let i in this.model) {
if (!this.model[i]) { if (!this.model[i]) {

View File

@ -36,7 +36,7 @@
<script> <script>
import baseDialog from "@/components/base/BaseNewDialog/index.vue" import baseDialog from "@/components/base/BaseNewDialog/index.vue"
import baseTree from "@/components/base/BaseMenuTree/index.vue" import baseTree from "@/components/base/BaseMenuTree/index.vue"
import baseLayout from "@/components/base/baseNewLayout" import baseLayout from "@/components/base/baseLayout"
export default { export default {
components: { components: {
baseLayout, baseLayout,

View File

@ -5,12 +5,8 @@
--> -->
<template> <template>
<div class="pageTion" flex="main:right"> <div class="pageTion" flex="main:right">
<el-pagination ref="pagination" :page-sizes="[10,20, 30, 40,100]" :total="pageModel.total" <el-pagination ref="pagination" :page-sizes="[10,20, 30, 40,100]" :total="pageModel.total" :current-page="pageModel.pageIndex" :page-size="10"
:current-page="pageModel.pageIndex" @current-change="currentChange" @size-change="sizeChange" background layout="prev, pager, next,jumper,total,sizes">
:page-size="pageModel.pageSize"
@current-change="currentChange" @size-change="sizeChange" background
layout="prev, pager, next,jumper,total,sizes"
>
</el-pagination> </el-pagination>
</div> </div>
</template> </template>
@ -24,8 +20,7 @@ export default {
data() { data() {
return {} return {}
}, },
created() { created() {},
},
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
}) })
@ -33,28 +28,25 @@ export default {
computed: {}, computed: {},
methods: { methods: {
sizeChange(val) { sizeChange(val) {
let pageModel = this.pageModel let pageModel = this.pageModel;
pageModel.pageSize = val pageModel.pageSize = val;
pageModel.limit = val
this.$emit('update:pageModel', pageModel) this.$emit('update:pageModel', pageModel)
this.$emit('onPageChange') this.$emit('onPageChange')
}, },
currentChange(val) { currentChange(val) {
let pageModel = this.pageModel let pageModel = this.pageModel;
pageModel.pageIndex = val pageModel.pageIndex = val;
pageModel.page = val
this.$emit('update:pageModel', pageModel) this.$emit('update:pageModel', pageModel)
this.$emit('onPageChange') this.$emit('onPageChange')
} },
} },
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang='scss'>
.pageTion { .pageTion {
width: 100%; width: 100%;
margin: 10px 0; margin: 10px 0;
} }
::v-deep .el-pager li { ::v-deep .el-pager li {
background-color: #f9f9f9 !important ; background-color: #f9f9f9 !important ;
width: 36px !important; width: 36px !important;
@ -62,11 +54,9 @@ export default {
line-height: 36px !important; line-height: 36px !important;
border-radius: 50% !important; border-radius: 50% !important;
} }
::v-deep .el-pager .active { ::v-deep .el-pager .active {
background-color: #409EFF !important; background-color: #409EFF !important;
} }
::v-deep .el-pagination button { ::v-deep .el-pagination button {
background-color: #f9f9f9 !important; background-color: #f9f9f9 !important;
color: #333333 !important; color: #333333 !important;
@ -75,16 +65,13 @@ export default {
width: 98px !important; width: 98px !important;
height: 36px !important; height: 36px !important;
} }
::v-deep .el-pagination__total { ::v-deep .el-pagination__total {
line-height: 36px !important; line-height: 36px !important;
} }
::v-deep .el-pagination__jump { ::v-deep .el-pagination__jump {
height: 36px !important; height: 36px !important;
line-height: 36px !important; line-height: 36px !important;
} }
::v-deep .el-input__inner { ::v-deep .el-input__inner {
height: 36px !important; height: 36px !important;
line-height: 36px !important; line-height: 36px !important;

View File

@ -5,7 +5,7 @@
--> -->
<template> <template>
<base-dialog :closeEscape="true" :showClose="true" :closeModal="false" @handleConfirmClick="personConfirmClick" <base-dialog :closeEscape="true" :showClose="true" :closeModal="false" @handleConfirmClick="personConfirmClick"
:dialogVisible.sync="personDialog" class="userDialog" title="选择人员" width="1200px" top="10vh" :footerShow="true"> :dialogVisible.sync="personDialog" class="userDialog" title="选择人员" width="1000px" top="10vh" :footerShow="true">
<div class="organizationBody"> <div class="organizationBody">
<base-layout title="组织机构" style="width: 20%;border-radius: 5px;height: 350px;overflow: auto; " <base-layout title="组织机构" style="width: 20%;border-radius: 5px;height: 350px;overflow: auto; "
:operateButtonSwitch="false" :bottonShow="false" :isPage="false" :mainColor="mainColor" :operateButtonSwitch="false" :bottonShow="false" :isPage="false" :mainColor="mainColor"
@ -21,9 +21,6 @@
<base-table ref="personCustomtable" :border="true" :showIndex="false" :slotrow="true" <base-table ref="personCustomtable" :border="true" :showIndex="false" :slotrow="true"
@radioChange="radioChange" :tabLoading.sync="personLoading" :tableHeight="personTableHeight" @radioChange="radioChange" :tabLoading.sync="personLoading" :tableHeight="personTableHeight"
:tableData="personTableData" :tableColumn="tableColumn"> :tableData="personTableData" :tableColumn="tableColumn">
<template #state="{row}">
<div>{{ row.row.state == 1 ? '停用' : '启用'}}</div>
</template>
</base-table> </base-table>
</div> </div>
</base-layout> </base-layout>
@ -35,7 +32,7 @@
import { authApi } from "@/api/apis/auth"; import { authApi } from "@/api/apis/auth";
import baseDialog from "@/components/base/BaseNewDialog/index.vue" import baseDialog from "@/components/base/BaseNewDialog/index.vue"
import baseTree from "@/components/base/BaseMenuTree/index.vue" import baseTree from "@/components/base/BaseMenuTree/index.vue"
import baseLayout from "@/components/base/baseNewLayout" import baseLayout from "@/components/base/baseLayout"
import baseTable from "@/components/base/baseTable" import baseTable from "@/components/base/baseTable"
import { import {
PersonList PersonList

View File

@ -15,15 +15,14 @@
> >
<div class="rightDialog"> <div class="rightDialog">
<div flex="cross:center main:justify" class="rightConcat"> <div flex="cross:center main:justify" class="rightConcat">
<span style="font-size: 16px">{{ title }} <slot name="operateTitle"></slot></span> <span style="font-size: 16px">{{ title }}</span>
<span v-if="footerShow" flex="main:right"> <span v-if="footerShow" flex="main:right">
<el-button @click="handleClose" v-if="closeShow"> </el-button> <el-button @click="handleClose" v-if="closeShow"> </el-button>
<slot name="addButton"></slot>
<el-button <el-button
type="primary" type="primary"
@click="handleConfirmClick" @click="handleConfirmClick"
v-if="submitShow" v-if="submitShow"
></el-button ></el-button
> >
</span> </span>
<slot name="buttonPlus"></slot> <slot name="buttonPlus"></slot>
@ -111,7 +110,7 @@ export default {
/* padding-bottom:16px; */ /* padding-bottom:16px; */
padding: 16px 0; padding: 16px 0;
overflow-y: auto; overflow-y: auto;
border-bottom: 1px solid #eee; border-bottom: 1px solid #ddd;
margin-bottom: 20px; margin-bottom: 20px;
} }
</style> </style>

View File

@ -110,10 +110,6 @@
color: item.color ? item.color : '#333', color: item.color ? item.color : '#333',
cursor: item.isClick ? 'pointer' : 'default', cursor: item.isClick ? 'pointer' : 'default',
}" }"
:title="!item.stateOption
? scope.row[item.prop]
: item.stateOption[scope.row[item.prop]]"
class='multipleLines_one'
>{{ >{{
!item.stateOption !item.stateOption
? scope.row[item.prop] ? scope.row[item.prop]
@ -183,9 +179,6 @@
</span> </span>
</template> </template>
<script> <script>
import {
v4 as uuidv4
} from 'uuid'
import Sortable from "sortablejs"; import Sortable from "sortablejs";
export default { export default {
props: { props: {
@ -232,10 +225,6 @@ export default {
type: String, type: String,
default: "small", default: "small",
}, },
currentType: {
type: String,
default: "",
},
// //
bottomPlus: { bottomPlus: {
type: Boolean, type: Boolean,
@ -338,23 +327,7 @@ export default {
watch: {}, watch: {},
methods: { methods: {
select(selection, row) { select(selection, row) {
// this.$emit("select", selection, row);
if(this.currentType == "apiCode"){
let flag = selection.some(item => {
if (item.apiCode === row.apiCode) {
return true
}
})
this.$emit("select", selection, row, flag);
}else{
let flag = selection.some(item => {
if (item.id === row.id) {
return true
}
})
this.$emit("select", selection, row, flag);
}
}, },
selectAll(selection) { selectAll(selection) {
this.$emit("selectAll", selection); this.$emit("selectAll", selection);
@ -406,7 +379,7 @@ export default {
}, },
// id,row-keykey // id,row-keykey
getRowKey(row) { getRowKey(row) {
return row.id ? row.id : uuidv4() return row.id;
}, },
// //
handleSelectionChange(selectTable) { handleSelectionChange(selectTable) {
@ -575,15 +548,6 @@ export default {
::v-deep .el-table--border { ::v-deep .el-table--border {
border: none; border: none;
} }
.multipleLines_one {
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 1;
display: -webkit-box !important;
-webkit-box-orient: vertical;
word-break: break-all;
white-space: pre-line;
}
// ::v-deep .el-table .sort-caret.ascending { // ::v-deep .el-table .sort-caret.ascending {
// top: 1px // top: 1px
// } // }

View File

@ -1,357 +1,101 @@
<!--
* @name: 弹窗配置
* @author: zhangpengcheng
* @date: 2022-08-25
-->
<template> <template>
<!-- 权限设置弹框 --> <div>
<!-- :style="{'margin':isCenter?'auto':''}"> --> <div v-for="(item, index) in parentTreeData" :key="index" class="classifyButtonList">
<div flex="cross:center" flex-wrap style="height: 100%;">
<div v-loading="treeLoading" flex style="margin: auto; height: 100%"> <div class="title">
<div class="menu-i" flex="cross:center main:center"> <!-- <i class="el-icon-caret-bottom" @click="showHidden(item, index)"></i> -->
<div class="menu-i-t" flex="cross:top main:justify"> <i v-if="item.children" :class="item.isShow?'el-icon-caret-top':'el-icon-caret-bottom'"@click="showHidden(item, index)"></i>
<el-tree <!-- <el-checkbox v-model="item.checked">{{item.label}}</el-checkbox> -->
:data="menuData" {{item.label}}
:check-strictly="true" </div>
:current-node-key="currentNodeKey" <div flex flex-wrap="cross:center" style="width: 79%;">
:default-checked-keys="selectData" <p class="recordText" v-for="(el,index) in item.buttonList">{{el.NameCN}}</p>
@node-click="handleNodeClick"
:expand-on-click-node="false"
:default-expand-all="expandAll"
:key="keyWord ? keyWord :new Date().getTime()"
:props="treeProps"
style="width: 100%; background-color: white; height: 100%"
@check-change="checkChange"
:default-expanded-keys="defaultExpandedKeys"
node-key="pkAccsubj"
ref="elTree"
:show-checkbox="showCheckbox"
>
</el-tree>
<div @click="changePcAll" class="checkText" v-if="Allshow">全选</div>
</div> </div>
</div> </div>
<div flex="cross:center main:center" style="width: 100%" v-if="isSaveBtn"> <menu-tree v-if="item.isShow && item.children" :parent-tree-data="item.children"></menu-tree>
<el-button style="width: 40%" type="primary" @click="saveMenuUser"
>保存
</el-button
>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
// import { queryMenuList, menuListSave } from '@/api/apis/auth'
export default { export default {
name: "menuTree",
props: { props: {
// parentTreeData: {
expandAll: {
type: Boolean,
default: true,
},
//
isSaveBtn: {
type: Boolean,
default: false,
},
//
Allshow: {
type: Boolean,
default: false,
},
//
showCheckbox: {
type: Boolean,
default: false,
},
//
isCenter: {
type: Boolean,
default: true,
},
currentNodeKey: {
type: [String, Number],
default: '',
},
keyWord: {
type: [String, Number],
default: '',
},
menuData: {
type: Array, type: Array,
default: () => { default: () => {
return []; return []
}, }
},
defaultExpandedKeys: {
type: Array,
default: () => {
return [];
},
},
defaultCheckedKeys: {
type: Array,
default: () => {
return [];
},
},
setting: {
type: Boolean,
default: false,
},
treeProps: {
type: Object,
default: () => {
return {
children: "children",
label: "label",
value:'id',
};
},
},
},
data() {
return {
theme: "",
powerDlog: false,
//
// menuData: [],
// ids
selectData: [],
//
// treeProps: {
// label: 'menuName',
// children: 'id',
// },
// PC
checkedAllPc: false,
//
outing: false,
treeLoading: false,
};
},
created() {
},
mounted() {
},
computed: {
defaultTheme() {
return this.$store.state.settings.theme;
},
},
watch: {
defaultTheme: {
handler: function (val, oldVal) {
this.theme = val;
// document.getElementsByTagName('body')[0].style.setProperty('--active', val)
// let arr = document.getElementsByClassName('.el-tree-node:focus>.el-tree-node__content')
// $('.el-tree-node:focus>.el-tree-node__content').css('color',val)
},
immediate: true,
}, },
}, },
methods: { methods: {
// //
clickFirst() { showHidden(item, index) {
document.querySelectorAll(".is-focusable")[0].click(); // this.parentTreeData.forEach(value => {
}, // // parentTreeData[i]showisShowmenuList[i]false
buttonL(el) { // if (value.isShow !== this.parentTreeData[index].isShow) {
el.active = !el.active; // value.isShow = false;
this.$forceUpdate(); // }
},
setData(id) {
this.selectData.push(id);
},
saveMenuUser() {
let allKeys = this.getKey();
this.$emit("onSaveMenu", allKeys);
},
// key
getKey() {
return this.$refs.elTree.getCheckedKeys();
},
clearKey() {
// this.nodeKey = new Date().getTime(); // node-key
this.$refs.elTree.store.nodesMap = {}; // nodesMap
this.$forceUpdate(); // 使
// const nodes = this.$refs.tree.getNodes();
// nodes.forEach(node => {
// node.checked = false;
// }); // });
item.isShow = !item.isShow;
this.$forceUpdate()
}, },
// setCheck(menuIDs){
initData() { this.setButtonName(this.parentTreeData,menuIDs)
// // this.$forceUpdate()
// this.menuData = [];
// ids
this.selectData = [];
}, },
// setButtonName(menuData,data) {
handleClose() { menuData.forEach((el, index) => {
this.powerDlog = false; data.forEach(item=>{
this.initData();
},
//
changePcAll() {
this.checkedAllPc = !this.checkedAllPc;
let selectData = [];
if (this.checkedAllPc) {
selectData = this.cycleData(this.menuData);
}
this.selectData = selectData;
},
/**
* @description 递归获取菜单id树状 多叉树结构
* @author duanyipeng
* @createDate 2020/7/31 20:54
* @param {Array} outData 需要递归的数组
* @param {Boolean} isSelect: false返回所有id,true返回已选择id
*/
cycleData(outData, isSelect) {
let newData = [];
function cycle(data) {
if (!data || data.length == 0) {
return false;
} else {
for (var i = 0, len = data.length; i < len; i++) {
let item = data[i];
if (isSelect && item.selected == 1) {
newData.push(item.id);
}
if (!isSelect) {
newData.push(item.id);
}
cycle(item.id);
}
}
}
cycle(outData);
return newData;
},
getData(childIds) {
let newData = [];
function cycle(data) {
data.forEach((el) => {
childIds.forEach((item) => {
if (el.id == item) { if (el.id == item) {
newData.push(el); el.checked = true
} }
}); })
if (el.children != null && el.children && el.children.length) { if (el.children != null && el.children && el.children.length) {
cycle(el.children, childIds); this.setButtonName(el.children,data)
}
})
},
} }
});
} }
cycle(this.menuData, childIds);
return newData;
},
/**
* @description 节点选中状态发生变化时的回调
* @author duanyipeng
* @createDate 2020/7/31 20:53
* @param { Object } nodeDode 当前节点对象
* @param { Boolean } checked 当前节点是否选中
*/
checkChange(nodeDode, checked) {
let getHalfCheckedKeys = this.$refs.elTree
.getCheckedKeys()
.concat(this.$refs.elTree.getHalfCheckedKeys());
// let getHalfCheckedKeys = this.$refs.elTree.getHalfCheckedKeys()
let nodeList = this.$refs.elTree.getCheckedNodes();
let childIds =
getHalfCheckedKeys.length != 0 ? getHalfCheckedKeys : this.selectData;
let checkdata = this.getData(childIds);
this.$emit("checkChange", childIds, checkdata, nodeList);
return;
let id = nodeDode.id;
// let childIds = this.cycleData(id)
console.log(id);
//
childIds.forEach((item) => {
this.$refs.elTree.setChecked(item, checked);
});
},
//
handleNodeClick(data) {
this.$emit("handleNodeClick", data);
},
},
};
</script> </script>
<style lang="scss"> <style lang="scss">
// $activeColor:val(--activeColor, "#00aaff"); $activeColor: var(--bg-color, "#00aaff");
.el-tree-node__content { .el-icon-star-on {
height: 32px !important; /* color: #00aa00; */
color: $activeColor;
} }
.recordText {
.el-tree-node__label { border: 1px solid #fff;
font-size: 14px !important; padding: 3px 10px;
margin-left: 4px;
}
.el-tree-node__content > label.el-checkbox {
transform: scale(1.3);
}
.el-tree-node__content > .el-tree-node__expand-icon {
font-size: 18px;
}
.el-checkbox__label {
font-size: 16px;
}
.checkBox .el-checkbox__inner {
transform: scale(1.3);
}
</style>
<style lang="scss" scoped>
.menu-i {
width: 100%;
// margin-bottom: 24px;
&-f {
color: #333;
font-size: 18px;
text-align: center; text-align: center;
margin-bottom: 12px; font-size: 14px;
}
&-t {
width: 100%;
// height: 450px;
// border: 1px solid #d8d8d8;
overflow-y: auto;
height: 100%;
}
}
.checkBox {
margin-top: 6px;
margin-right: 12px;
}
.checkText {
width: 60px;
height: 30px;
line-height: 30px;
text-align: center;
color: #333;
font-size: 16px;
cursor: pointer; cursor: pointer;
transition: all 0.3s ease-in-out; background: #f2f2f2;
color: #4e4e4e;
&:hover { margin:5px;
color: #4570fc; border-radius: 5px;
} }
.recordText.active {
background-color: $activeColor;
color: white;
}
</style>
<style scoped lang="scss">
.tree-div {
}
.classifyButtonList{
// margin-bottom: 10px;
padding: 0 0 0 10px;
// cursor: pointer;
line-height: 25px;
.title{
// text-align: right;
// width: 20%;
}
} }
</style> </style>

View File

@ -4,7 +4,7 @@ import dialogDrag from './dialog/drag'
import dialogDragWidth from './dialog/dragWidth' import dialogDragWidth from './dialog/dragWidth'
import dialogDragHeight from './dialog/dragHeight' import dialogDragHeight from './dialog/dragHeight'
import clipboard from './module/clipboard' import clipboard from './module/clipboard'
import btnPermission from "@/directive/permission/btnPermission";
const install = function(Vue) { const install = function(Vue) {
Vue.directive('hasRole', hasRole) Vue.directive('hasRole', hasRole)
Vue.directive('hasPermi', hasPermi) Vue.directive('hasPermi', hasPermi)
@ -12,7 +12,6 @@ const install = function(Vue) {
Vue.directive('dialogDrag', dialogDrag) Vue.directive('dialogDrag', dialogDrag)
Vue.directive('dialogDragWidth', dialogDragWidth) Vue.directive('dialogDragWidth', dialogDragWidth)
Vue.directive('dialogDragHeight', dialogDragHeight) Vue.directive('dialogDragHeight', dialogDragHeight)
Vue.directive("btnPermission", btnPermission);
} }
if (window.Vue) { if (window.Vue) {

View File

@ -1,17 +0,0 @@
import store from "@/store";
export default {
inserted(el, bindling) {
let perVal = bindling.value.btnID;
let routeId = bindling.value.routeId;
if (perVal && routeId) {
let perObj = store.getters.getButtonPre;
if (Object.keys(perObj).length) {
let hasPer = perObj[routeId] && perObj[routeId].includes(perVal);
if (!hasPer) {
el.parentNode.removeChild(el);
}
}
}
},
};

View File

@ -1,11 +0,0 @@
import btnPermission from "@/directive/permission/btnPermission";
const directives = {
btnPermission,
};
export default {
install(Vue) {
Object.keys(directives).forEach((key) => {
Vue.directive(key, directives[key]);
});
},
};

View File

@ -1,11 +1,5 @@
<template> <template>
<section <section class="app-main" :class="!sidebar.opened ? 'openSider' : ''">
class="app-main"
:style="{
top: matchTop,
}"
:class="matchHeight"
>
<transition name="fade-transform" mode="out-in"> <transition name="fade-transform" mode="out-in">
<keep-alive :include="cachedData"> <keep-alive :include="cachedData">
<!-- <keep-alive :include="cachedViews"> --> <!-- <keep-alive :include="cachedViews"> -->
@ -32,31 +26,9 @@ export default {
cachedViews() { cachedViews() {
return this.$store.state.tagsView.cachedViews; return this.$store.state.tagsView.cachedViews;
}, },
// tag
showTagsView() {
return this.$store.state.settings.showTagsView;
},
key() { key() {
return this.$route.path; return this.$route.path;
}, },
matchTop() {
let top = "";
if (!this.showTagsView) {
top = "5px";
} else {
top = "63px";
}
return top;
},
matchHeight() {
let height = "";
if (!this.showTagsView) {
height = "h-10";
} else {
height = "h-65";
}
return height;
},
}, },
}; };
</script> </script>
@ -67,7 +39,6 @@ export default {
margin-left: 136px; margin-left: 136px;
} }
.app-main { .app-main {
border-radius: 8px;
/* 50= navbar 50 */ /* 50= navbar 50 */
// padding-top: 104px; // padding-top: 104px;
// min-height: calc(100vh - 50px); // min-height: calc(100vh - 50px);
@ -76,14 +47,8 @@ export default {
// width: calc(100% - 20px); // width: calc(100% - 20px);
// margin:0 10px; // margin:0 10px;
position: relative; position: relative;
border-radius: 4px;
top: 80px; top: 80px;
margin-left: 10px;
}
.h-10{
height: calc(100vh - 10px);
}
.h-65{
height: calc(100vh - 73px);
} }
.fixed-header + .app-main { .fixed-header + .app-main {

View File

@ -11,53 +11,14 @@
</template> </template>
<script> <script>
import InnerLink from "../InnerLink/index"; import InnerLink from "../InnerLink/index"
import { getCompanyId, getMenuNode } from "@/utils/auth";
export default { export default {
components: { InnerLink }, components: { InnerLink },
data(){ computed: {
return{ iframeViews() {
iframeViews:[] return this.$store.state.tagsView.iframeViews
} }
},
watch: {
"$store.getters.currentMenuNode": {
deep: true,
immediate: true,
handler(newVal, old) {
this.iframeViews = this.getVisitedViews();
},
},
},
methods:{
getVisitedViews() {
let url = getMenuNode();
let empty = [];
let data = this.$store.state.tagsView.iframeViews;
if (url) {
if (url.includes("Workbench")) {
return data[0];
} else if (url.includes("MasterDataCenter")) {
return data[1];
} else if (url.includes("IntegrationTaskCenter")) {
return data[2];
} else if (url.includes("businessCenter")) {
return data[3];
} else if (url.includes("ApplicationCenter")) {
return data[4];
}else if (url.includes("businessMatter")) {
return data[5];
}else if (url.includes("accountantMatter")) {
return data[6];
} }
else {
return empty;
} }
} else {
return empty;
}
},
}
};
</script> </script>

View File

@ -15,7 +15,7 @@
<!-- color: activePage == index ? '#1478f6' : ''}" v-for="(item,index) in lagerScreenMenuData" :key="index"--> <!-- color: activePage == index ? '#1478f6' : ''}" v-for="(item,index) in lagerScreenMenuData" :key="index"-->
<!-- >--> <!-- >-->
<!-- <div @click="handlerClick(item,index)" flex>--> <!-- <div @click="handlerClick(item,index)" flex>-->
<!-- <i :class="item.meta.icon"></i>--> <!-- <i :class="item.meta.menuIcon"></i>-->
<!-- <p>{{ item.meta.title }}</p>--> <!-- <p>{{ item.meta.title }}</p>-->
<!-- </div>--> <!-- </div>-->
<!-- </router-link>--> <!-- </router-link>-->
@ -273,8 +273,6 @@ export default {
.then(() => { .then(() => {
this.$store.dispatch("LogOut").then(() => { this.$store.dispatch("LogOut").then(() => {
Cookies.remove("automaticLogin"); Cookies.remove("automaticLogin");
this.$store.commit("REMOVE_ROUTER");
this.$store.dispatch("tagsView/delAllViews");
// location.href = '/login'; // location.href = '/login';
this.$router.replace({ path: "/login" }); this.$router.replace({ path: "/login" });
// this.$router.push("/login"); // this.$router.push("/login");
@ -502,7 +500,6 @@ export default {
.avatar-container { .avatar-container {
margin-right: 15px; margin-right: 15px;
background-color: #fff;
.avatar-wrapper { .avatar-wrapper {
// margin-top: 5px; // margin-top: 5px;

View File

@ -1,536 +0,0 @@
<template>
<div class="MenuContainer">
<!-- Logo 公司 -->
<div class="logoBox">
<img v-if="logo" :src="logo" class="sidebar-logo" />
</div>
<!-- 菜单 -->
<div class="menuBox">
<div
v-for="(item, index) in menuData"
:key="index"
class="newsSider"
:class="{ active: activeType(item.path) }"
v-if="item.show"
@click="jumpRoute(item)"
>
<div
class="badge"
v-if="
item.icon == 'icon-xiaoxi' &&
!isNaN(messageCount) &&
messageCount > 0
"
>
{{ messageCount > 100 ? "99+" : messageCount }}
</div>
<i class="newsSider-icon iconfont" :class="item.icon"> </i>
<p class="newsSider-title">
{{ item.title }}
</p>
</div>
</div>
<!-- 头像 -->
<div class="avatar-container">
<div class="searchBox">
<i class="el-icon-search"></i>
</div>
<el-dropdown placement="right-start" style="width: 100%">
<div class="avatar-wrapper">
<img :src="avatar" class="user-avatar" v-if="avatar" />
<div class="text" v-else>{{ PersonName.slice(-2) }}</div>
<p class="personName">{{ PersonName }}</p>
</div>
<el-dropdown-menu slot="dropdown">
<router-link to="/user/profile">
<el-dropdown-item>个人中心</el-dropdown-item>
</router-link>
<el-dropdown-item divided @click.native="logout">
<span>退出登录</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import Cookies from "js-cookie";
import {
getInfo,
setInfo,
getCompanyId,
setCompanyId,
getMenuNode,
setMenuNode,
} from "@/utils/auth";
import { PersonDetail } from "@/api/apis/personnelSettings";
import logoImg from "@/assets/logo/tranLogo.png";
import personImg from "@/assets/images/person.png";
import { OrganGetUserCompany } from "@/api/apis/organization.js";
import { GetMessageCount } from "@/api/apis/messageManagement.js";
export default {
computed: {
...mapGetters(["avatar"]),
setting: {
get() {
return this.$store.state.settings.showSettings;
},
set(val) {
this.$store.dispatch("settings/changeSetting", {
key: "showSettings",
value: val,
});
},
},
messageCount() {
let count = this.$store.getters.messageCount;
return count * 1;
},
},
watch: {
"$store.getters.currentMenuNode": {
deep: true,
immediate: true,
handler(newVal, old) {
let url = getMenuNode();
if (url) {
this.currentPath = url;
} else {
this.currentPath = "/index";
}
},
},
//
$route: {
deep: true,
immediate: true,
handler(to, old) {
let route = { ...to };
if (this.currentPath == to.path) {
if (
this.currentPath.includes("Workbench") ||
this.currentPath.includes("MasterDataCenter") ||
this.currentPath.includes("IntegrationTaskCenter") ||
this.currentPath.includes("businessCenter") ||
this.currentPath.includes("ApplicationCenter")||
this.currentPath.includes("businessMatter") ||
this.currentPath.includes("accountantMatter")
) {
route.meta.affix = true;
this.$store.dispatch("tagsView/addVisitedView", route);
}
}
},
},
},
data() {
return {
logo: logoImg,
PersonName: "",
companyName: "用安数智中台",
menuData: [],
// companyList: [], //
personInfo: {},
currentPath: "",
fixedMenu: [
{
title: "首页",
path: "/index",
icon: "icon-shouye",
show: true,
},
// {
// title: "",
// path: "/message",
// icon: "el-icon-chat-dot-square",
// show: true,
// },
{
title: "工作台",
path: "/Workbench",
icon: "icon-gongzuotai",
show: true,
},
],
permissionsMenu: [
{
title: "主数据中心",
path: "/MasterDataCenter",
icon: "el-icon-coin",
show: false,
},
{
title: "应用管理",
path: "/ApplicationCenter",
icon: "el-icon-menu",
show: false,
},
{
title: "集成任务",
path: "/IntegrationTaskCenter",
icon: "el-icon-data-line",
show: false,
},
{
title: "业务中心",
path: "/businessCenter",
icon: "el-icon-postcard",
show: false,
},
{
title: "会计事项平台",
path: "/businessMatter",
icon: "el-icon-postcard",
show: false,
},
{
title: "财资事项平台",
path: "/accountantMatter",
icon: "el-icon-postcard",
show: false,
},
],
};
},
created() {
let url = getMenuNode();
if (url) {
if (
url.includes("Workbench") ||
url.includes("MasterDataCenter") ||
url.includes("IntegrationTaskCenter") ||
url.includes("businessCenter") ||
url.includes("ApplicationCenter") ||
url.includes("businessMatter") ||
url.includes("accountantMatter")
) {
this.$store.dispatch("settings/changeSetting", {
key: "showTagsView",
value: true,
});
} else {
//
this.$store.dispatch("settings/changeSetting", {
key: "showTagsView",
value: false,
});
}
// this.$router.push({
// path: url,
// });
} else {
this.$store.dispatch("settings/changeSetting", {
key: "showTagsView",
value: false,
});
setMenuNode("/index");
this.$store.commit("SET_CURRENT_MENU_NODE", "/index");
// this.$router.push({
// path: "/index",
// });
}
},
mounted() {
// this.GetMessageCount();
this.DetermineMenuPermission();
this.personInfo = JSON.parse(getInfo());
this.PersonName = JSON.parse(getInfo()).personName;
// this.getInfoDetail(JSON.parse(getInfo()).personID);
},
methods: {
async GetMessageCount() {
let res = await GetMessageCount({});
if (res.code == 1) {
let count = 0;
res.data[0].forEach((item) => {
count += item.count * 1;
});
this.$store.commit("SET_MESSAGE_COUNT", count);
}
},
activeType(path) {
let type = false;
if (path === this.currentPath) {
type = true;
} else {
type = false;
}
return type;
},
//
DetermineMenuPermission() {
this.menuData = [];
let routeList = localStorage.getItem("routeList")
? localStorage.getItem("routeList")
: null;
this.permissionsMenu.forEach((aItem) => {
if (routeList != null && routeList.includes(aItem.title)) {
aItem.show = true;
}
});
this.menuData = [...this.fixedMenu, ...this.permissionsMenu];
},
//
jumpRoute(item) {
if (item.path == this.currentPath) {
return;
}
if (
item.path.includes("Workbench") ||
item.path.includes("MasterDataCenter") ||
item.path.includes("IntegrationTaskCenter") ||
item.path.includes("businessCenter") ||
item.path.includes("ApplicationCenter") ||
item.path.includes("businessMatter") ||
item.path.includes("accountantMatter")
) {
this.$store.dispatch("settings/changeSetting", {
key: "showTagsView",
value: true,
});
} else {
//
this.$store.dispatch("settings/changeSetting", {
key: "showTagsView",
value: false,
});
}
setMenuNode(item.path);
this.$store.commit("SET_CURRENT_MENU_NODE", item.path);
this.$router.push({
path: item.path,
});
},
//
async getInfoDetail(id) {
let params = {
id: id,
};
let res = await PersonDetail(params);
if (res.success == "true") {
let qrUrl =
res.data[0].headImageUrl == null
? ""
: res.data[0].headImageUrl.split("/wwwroot")[1];
this.$store.commit("SET_AVATAR", qrUrl);
}
},
async logout() {
this.$confirm("确定要退出系统吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$store.commit("REMOVE_ROUTER");
this.$store.dispatch("tagsView/delAllViews");
this.$store.dispatch("LogOut").then(() => {
Cookies.remove("automaticLogin");
setMenuNode("/index");
this.$store.commit("SET_CURRENT_MENU_NODE", "/index");
this.$router.replace({ path: "/login" });
});
})
.catch(() => {});
},
},
};
</script>
<style lang="scss" scoped>
.searchBox {
text-align: center;
width: 28px;
height: 28px;
line-height: 28px;
font-size: 14px;
background: #e7e7e7;
border-radius: 50%;
margin: 0 auto 10px;
}
.MenuContainer {
width: 100px;
height: 100%;
background: #f4f5f7;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
z-index: 1999;
padding-top: 8px;
}
// ----------logo
.logoBox {
width: 90%;
display: flex;
flex-direction: column;
align-items: center;
border-bottom: 1px solid #eaeaea;
background: #c73b26;
border-radius: 10px;
}
.sidebar-logo {
margin: 10px 0;
width: 70px;
height: 50px;
vertical-align: middle;
}
// ------------
.companyTitle {
font-weight: bold;
color: #000;
margin: 10px 0 15px 0;
}
.companyBox {
margin: 8px 0;
cursor: pointer;
display: flex;
align-items: center;
font-size: 12px;
div {
width: 75px;
white-space: nowrap; /* 禁止换行 */
overflow: hidden; /* 隐藏溢出部分 */
text-overflow: ellipsis; /* 显示省略号 */
}
i {
transform: rotate(90deg); /* 将文字旋转90度 */
}
}
.companyItem {
display: flex;
justify-content: space-between;
align-items: center;
padding: 13px 10px;
margin: 5px 0;
border-radius: 8px;
}
.checkBox {
color: transparent;
font-size: 18px;
font-weight: bold;
}
.companyItem:hover {
background: #f6f6f6;
}
.selectedCompany {
background: #f6f6f6;
.checkBox {
color: #1478f6;
}
}
// ---------------
.menuBox {
display: flex;
flex-direction: column;
align-items: center;
padding: 10px 5px 15px 10px;
width: 100%;
height: calc(100% - 180px);
overflow-y: auto;
}
/* 定制滚动条样式 */
.menuBox::-webkit-scrollbar {
background-color: transparent; /* 背景色为透明色 */
box-shadow: 0px 1px 3px transparent inset;
}
/* 定制滚动条轨道样式 */
.menuBox::-webkit-scrollbar-track {
background-color: transparent; /* 轨道背景色为透明色 */
box-shadow: 0px 1px 3px transparent inset;
}
/* 定制滚动条滑块样式 */
.menuBox::-webkit-scrollbar-thumb {
background-color: transparent; /* 滑块颜色为透明色 */
box-shadow: 0px 1px 3px transparent inset;
}
.newsSider {
display: flex;
flex-direction: column;
align-items: center;
margin: 5px 0;
cursor: pointer;
position: relative;
.badge {
position: absolute;
width: 38px;
height: 18px;
background: #ff3b30;
border-radius: 40px;
font-size: 12px;
line-height: 16px;
color: #ffffff;
text-align: center;
left: 28px;
top: -8px;
border: 1px solid #ffffff;
}
&-icon {
width: 44px;
height: 44px;
line-height: 44px;
font-size: 20px;
margin-bottom: 7px;
text-align: center;
background: #fff;
border-radius: 12px;
color: #000;
}
&-title {
font-size: 12px;
padding-bottom: 5px;
}
}
::v-deep .newsSider.active .newsSider-icon {
background: #1478f6;
color: #fff;
}
::v-deep .newsSider.active .newsSider-title {
// color: #000;
}
// -----------
.avatar-container {
position: absolute;
bottom: 20px;
width: 90%;
padding-top: 10px;
border-top: 1px solid #eaeaea;
background: #fff;
display: flex;
flex-direction: column;
align-items: center;
.avatar-wrapper {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
font-size: 12px;
.user-avatar {
cursor: pointer;
width: 28px;
height: 28px;
border-radius: 4px;
margin-bottom: 8px;
}
.text {
cursor: pointer;
width: 28px;
height: 28px;
line-height: 24px;
border-radius: 4px;
margin-bottom: 8px;
background: #1478f6;
color: #ffffff;
text-align: center;
}
}
}
</style>

View File

@ -5,25 +5,25 @@
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)"> <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}"> <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <template slot="title"> --> <!-- <template slot="title"> -->
<!-- <i class="iconfont" :class="item.meta.icon" > </i> --> <!-- <i class="iconfont" :class="item.meta.menuIcon" > </i> -->
<!-- <span v-show="sidebarOpened && !isNest">{{onlyOneChild.meta.title}}</span> --> <!-- <span v-show="sidebarOpened && !isNest">{{onlyOneChild.meta.title}}</span> -->
<!-- <span v-show="isNest">{{onlyOneChild.meta.title}}</span> --> <!-- <span v-show="isNest">{{onlyOneChild.meta.title}}</span> -->
<!-- <div v-if="sidebarOpened"> <!-- <div v-if="sidebarOpened">
<i class="iconfont" :class="item.meta.icon" > </i> <i class="iconfont" :class="item.meta.menuIcon" > </i>
<span>{{isNest}}</span> <span>{{isNest}}</span>
</div> --> </div> -->
<div v-if="isNest === false" :style="{'text-align':sidebarOpened?'left':'center'}"> <div v-if="isNest === false" :style="{'text-align':sidebarOpened?'left':'center'}">
<i class="iconfont" :class="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon"> </i>
<span v-show="sidebarOpened" style="margin-left: 16px;">{{onlyOneChild.meta.title}}</span> <span v-show="sidebarOpened" style="margin-left: 16px;">{{onlyOneChild.meta.title}}</span>
</div> </div>
<div v-else> <div v-else>
<i class="iconfont" :class="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon"> </i>
<span>{{onlyOneChild.meta.title}}</span> <span>{{onlyOneChild.meta.title}}</span>
</div> </div>
<template slot="title"> <template slot="title">
<div v-if="isNest === false"> <div v-if="isNest === false">
<i class="iconfont" :class="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon"> </i>
<span style="margin-left: 16px;">{{item.meta.title}}</span> <span style="margin-left: 16px;">{{item.meta.title}}</span>
</div> </div>
</template> </template>
@ -32,7 +32,7 @@
</template> </template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body> <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<template slot="title"> <template slot="title">
<i class="iconfont" :class="item.meta.icon" v-if="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon" v-if="item.meta.menuIcon"> </i>
<span v-show="sidebarOpened" :style="{'margin-left':(sidebarOpened && isNest == false) ?'16px':''}" <span v-show="sidebarOpened" :style="{'margin-left':(sidebarOpened && isNest == false) ?'16px':''}"
class="itemSidebar">{{item.meta.title}}</span> class="itemSidebar">{{item.meta.title}}</span>
</template> </template>

View File

@ -3,7 +3,7 @@
<div class="newsSider bitTitle lastList" v-if="!isNest && hasOneShowingChild(item.children, item)" <div class="newsSider bitTitle lastList" v-if="!isNest && hasOneShowingChild(item.children, item)"
style="width:100px;" @click="goRoute(item)"> style="width:100px;" @click="goRoute(item)">
<div class="concise"> <div class="concise">
<i class=" concise-icon-item iconfont" :class="item.meta.icon"></i> <i class=" concise-icon-item iconfont" :class="item.meta.menuIcon"></i>
<i :class="item.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon" <i :class="item.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon"
@click.stop="handleClickWithDelay(item)"></i> @click.stop="handleClickWithDelay(item)"></i>
</div> </div>
@ -20,7 +20,7 @@
<div v-for="(route, index) in getPriceList(item.children)" class="lastList" :key="index" <div v-for="(route, index) in getPriceList(item.children)" class="lastList" :key="index"
@click="goRoute(item, route)" style="width:100px"> @click="goRoute(item, route)" style="width:100px">
<div class="concise"> <div class="concise">
<i class=" concise-icon-item iconfont" :class="route.meta.icon"> <i class=" concise-icon-item iconfont" :class="route.meta.menuIcon">
</i> </i>
<i :class="route.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon" <i :class="route.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon"
@click.stop="handleClickWithDelay(route)"></i> @click.stop="handleClickWithDelay(route)"></i>
@ -93,7 +93,7 @@ export default {
this.$emit("openChildren", item); this.$emit("openChildren", item);
}, },
async collectClick(val) { async collectClick(val) {
// console.log(val.meta.icon); // console.log(val.meta.menuIcon);
let params = { let params = {
mcId: val.id, mcId: val.id,
type: "", type: "",

View File

@ -5,8 +5,7 @@
settings.sideTheme === 'theme-dark' settings.sideTheme === 'theme-dark'
? variables.menuBackground ? variables.menuBackground
: variables.menuLightBackground, : variables.menuLightBackground,
}" }">
>
<!-- <news-sider <!-- <news-sider
v-if="!isConciseMode" v-if="!isConciseMode"
:collectionsData="collectionsData" :collectionsData="collectionsData"
@ -17,21 +16,17 @@
ref="newsSiderRef" ref="newsSiderRef"
/> --> /> -->
<news-sider-app :collectionsData="collectionsData" :sidebarRouters="sidebarRouters" @openChildren="openChildren" <news-sider-app :collectionsData="collectionsData" :sidebarRouters="sidebarRouters" @openChildren="openChildren"
@closeWin="closeOpenWin" :routePath="routePath" ref="newsSiderRef" @closeWin="closeOpenWin" :routePath="routePath" ref="newsSiderRef" />
/>
<!-- @mouseleave="closeOpenWin" --> <!-- @mouseleave="closeOpenWin" -->
</div> </div>
<!-- v-if="childrenList.length > 0 && sidebar.childrenHide" --> <!-- v-if="childrenList.length > 0 && sidebar.childrenHide" -->
<div @mouseleave="closeOpenWin" class="sidebar_box" <div @mouseleave="closeOpenWin" class="sidebar_box"
:style="'width:' + childrenWidth + 'px;' + 'padding:' + childrenPadding" :style="'width:' + childrenWidth + 'px;' + 'padding:' + childrenPadding">
>
<div flex="cross:center main:justify;" style="margin: 15px 0; justify-content: space-between; over-flow: auto"> <div flex="cross:center main:justify;" style="margin: 15px 0; justify-content: space-between; over-flow: auto">
<div flex="cross:center"> <div flex="cross:center">
<p>{{ childrenList }}</p> <p>{{ childrenList }}</p>
<el-autocomplete v-model="state" placeholder="请输入内容" :fetch-suggestions="querySearch" <el-autocomplete v-model="state" placeholder="请输入内容" :fetch-suggestions="querySearch"
:trigger-on-focus="false" @select="handleSelect" class="navbarSearch" :trigger-on-focus="false" @select="handleSelect" class="navbarSearch" suffix-icon="el-icon-search">
suffix-icon="el-icon-search"
>
</el-autocomplete> </el-autocomplete>
<i class="el-icon-close" style="font-size: 24px; cursor: pointer; margin-left: 15px" @click="closeOpenWin" /> <i class="el-icon-close" style="font-size: 24px; cursor: pointer; margin-left: 15px" @click="closeOpenWin" />
</div> </div>
@ -39,8 +34,7 @@
<div flex="dir:top" flex-wrap style="height: calc(100% - 70px)"> <div flex="dir:top" flex-wrap style="height: calc(100% - 70px)">
<children-sider ref="childrenSider" v-for="(route, index) in menuList" :key="route.path + index" :item="route" <children-sider ref="childrenSider" v-for="(route, index) in menuList" :key="route.path + index" :item="route"
@refreshSider="refreshSider" @openChildren="openChildren" @clearActive="clearActive" @refreshSider="refreshSider" @openChildren="openChildren" @clearActive="clearActive"
@closeOpenWin="closeOpenWin" :fatherPath="fatherPath" :lastPath="lastPath" style="width: 200px" @closeOpenWin="closeOpenWin" :fatherPath="fatherPath" :lastPath="lastPath" style="width: 200px" />
/>
<!-- <children-app-sider <!-- <children-app-sider
v-if="isConciseMode" v-if="isConciseMode"
v-for="(route, index) in childrenList" v-for="(route, index) in childrenList"
@ -61,18 +55,18 @@
import { import {
mapGetters, mapGetters,
mapState mapState
} from 'vuex' } from "vuex";
import Logo from './Logo' import Logo from "./Logo";
import newsSider from './newsSider' import newsSider from "./newsSider";
import childrenSider from './childrenSider' import childrenSider from "./childrenSider";
import newsSiderApp from './newsSiderApp' import newsSiderApp from "./newsSiderApp";
import childrenAppSider from './childrenAppSider' import childrenAppSider from "./childrenAppSider";
import variables from '@/assets/styles/variables.scss' import variables from "@/assets/styles/variables.scss";
import { import {
GetMyCollectionData GetMyCollectionData
} from '@/api/apis/menuManage' } from "@/api/apis/menuManage";
import router from '@/router' import router from "@/router";
import loginVue from '../../../views/login.vue' import loginVue from "../../../views/login.vue";
export default { export default {
components: { components: {
@ -80,81 +74,80 @@ export default {
newsSider, newsSider,
childrenSider, childrenSider,
newsSiderApp, newsSiderApp,
childrenAppSider childrenAppSider,
}, },
computed: { computed: {
...mapState(['settings', 'sidebar']), ...mapState(["settings", "sidebar"]),
...mapGetters(['sidebarRouters', 'sidebar']), ...mapGetters(["sidebarRouters", "sidebar"]),
activeMenu() { activeMenu() {
const route = this.$route const route = this.$route;
const { const {
meta, meta,
path path
} = route } = route;
// if set path, the sidebar will highlight the path you set // if set path, the sidebar will highlight the path you set
if (meta.activeMenu) { if (meta.activeMenu) {
return meta.activeMenu return meta.activeMenu;
} }
let pathUrl = path + '?id=' + meta.id let pathUrl = path + "?id=" + meta.id;
return path return path;
}, },
showLogo() { showLogo() {
return this.$store.state.settings.sidebarLogo return this.$store.state.settings.sidebarLogo;
}, },
conciseMenu() { conciseMenu() {
return true return true;
}, },
variables() { variables() {
return variables return variables;
}, },
isCollapse() { isCollapse() {
return !this.sidebar.opened return !this.sidebar.opened;
}, },
defaultTheme() { defaultTheme() {
return this.$store.state.settings.theme return this.$store.state.settings.theme;
} },
}, },
watch: { watch: {
defaultTheme: { defaultTheme: {
handler: function (val, oldVal) { handler: function (val, oldVal) {
this.theme = val this.theme = val;
this.changeBgColor(val) this.changeBgColor(val);
}, },
immediate: true immediate: true,
}, },
conciseMenu: { conciseMenu: {
handler: function (val, oldVal) { handler: function (val, oldVal) {
this.isConciseMode = val this.isConciseMode = val;
// this.changeBgColor(val); // this.changeBgColor(val);
}, },
immediate: true immediate: true,
}, },
sidebar: { sidebar: {
handler: function (val, oldVal) { handler: function (val, oldVal) {
if (val.opened) { if (val.opened) {
this.state = '' this.state = "";
} }
}, },
deep: true deep: true,
}, },
siderBoxHeight: { siderBoxHeight: {
immediate: true, immediate: true,
handler() { handler() {
this.handleResize() this.handleResize();
}
}
}, },
created() {
}, },
},
created() {},
data() { data() {
return { return {
childrenPadding: 0, childrenPadding: 0,
childrenWidth: 0, childrenWidth: 0,
childrenList: [], childrenList: [],
state: '', state: "",
fatherPath: '', fatherPath: "",
routePath: '', routePath: "",
lastPath: '', lastPath: "",
hoverType: false, hoverType: false,
firstNum: true, firstNum: true,
windowHeight: 0, windowHeight: 0,
@ -164,105 +157,105 @@ export default {
valForm: {}, valForm: {},
isConciseMode: false, isConciseMode: false,
siderSHowType: false, siderSHowType: false,
menuList: [] menuList: [],
// clientHeight: document.body.clientHeight // clientHeight: document.body.clientHeight
} };
}, },
mounted() { mounted() {
// this.GetMyCollectionData(); // this.GetMyCollectionData();
this.siderBoxHeight = this.$refs.siderBox.offsetHeight this.siderBoxHeight = this.$refs.siderBox.offsetHeight;
}, },
methods: { methods: {
handleResize() { handleResize() {
// const siderBoxHeight = this.$refs.siderBox.offsetHeight; // const siderBoxHeight = this.$refs.siderBox.offsetHeight;
this.windowHeight = this.siderBoxHeight - 110 this.windowHeight = this.siderBoxHeight - 110;
}, },
clearActive() { clearActive() {
this.$refs.newsSiderRef.activeIndex = null this.$refs.newsSiderRef.activeIndex = null;
}, },
getRoute() { getRoute() {
this.$store.dispatch('app/changeChildrenHide') this.$store.dispatch("app/changeChildrenHide");
let path = this.$route.path let path = this.$route.path;
this.routePath = '/' + path.split('/')[1] this.routePath = "/" + path.split("/")[1];
this.fatherPath = this.routePath this.fatherPath = this.routePath;
this.lastPath = path.split('/')[path.split('/').length - 1] this.lastPath = path.split("/")[path.split("/").length - 1];
this.sidebarRouters.forEach((el) => { this.sidebarRouters.forEach((el) => {
if (el.path.split('/')[1] == path.split('/')[1] && el.children) { if (el.path.split("/")[1] == path.split("/")[1] && el.children) {
this.childrenList = el.children this.childrenList = el.children;
this.$emit( this.$emit(
'openChildren', "openChildren",
this.childrenList.length > 0 ? true : false this.childrenList.length > 0 ? true : false
) );
} }
}) });
}, },
refreshSider() { refreshSider() {
this.GetMyCollectionData(true) this.GetMyCollectionData(true);
}, },
changeBgColor(val) { changeBgColor(val) {
document document
.getElementsByTagName('body')[0] .getElementsByTagName("body")[0]
.style.setProperty('--bg-color', val) .style.setProperty("--bg-color", val);
}, },
hoverChilden() { hoverChilden() {
this.hoverType = true this.hoverType = true;
this.firstNum = false this.firstNum = false;
}, },
openChildren(val) { openChildren(val) {
this.valForm = val this.valForm = val;
this.getRoute() this.getRoute();
this.isSearch = false this.isSearch = false;
this.state = '' this.state = "";
if (val.id != '129') { if (val.id != "129") {
if (!val.children) { if (!val.children) {
this.childrenWidth = 0 this.childrenWidth = 0;
this.childrenPadding = 0 this.childrenPadding = 0;
this.childrenList = [] this.childrenList = [];
} else { } else {
const setCollect = (arr) => { const setCollect = (arr) => {
arr.forEach((el) => { arr.forEach((el) => {
el.collect = false el.collect = false;
this.matchMyCollection(el) this.matchMyCollection(el);
if (el.children != null && el.children && el.children.length) { if (el.children != null && el.children && el.children.length) {
setCollect(el.children) setCollect(el.children);
} }
}) });
} };
setCollect(val.children) setCollect(val.children);
this.childrenList = val.children this.childrenList = val.children;
this.fatherPath = val.path this.fatherPath = val.path;
} }
} else { } else {
this.childrenList = val.children this.childrenList = val.children;
} }
let menuList = [] let menuList = [];
function changeMenuData(data, path) { function changeMenuData(data, path) {
data.forEach((el) => { data.forEach((el) => {
let menuPath = path + '/' + el.path let menuPath = path + "/" + el.path;
let level = el.children ? 2 : 3 let level = el.children ? 2 : 3;
let arr = { let arr = {
collect: el.collect, collect: el.collect,
meta: el.meta, meta: el.meta,
name: el.name, name: el.name,
path: menuPath, path: menuPath,
hidden: el.hidden == 'true' ? true : false || false, hidden: el.hidden == "true" ? true : false || false,
level: level level: level,
} };
// if(!arr.hidden){ // if(!arr.hidden){
// } // }
menuList.push(arr) menuList.push(arr);
if (el.children && el.children.length > 0) { if (el.children && el.children.length > 0) {
changeMenuData(el.children, menuPath) changeMenuData(el.children, menuPath);
} }
}) });
} }
changeMenuData(this.childrenList, this.fatherPath) changeMenuData(this.childrenList, this.fatherPath);
this.menuList = menuList this.menuList = menuList;
this.changeWidth() this.changeWidth();
// let chilrenSum = 0 // let chilrenSum = 0
// let notChildrenSum = 0 // let notChildrenSum = 0
@ -289,58 +282,58 @@ export default {
// this.childrenWidth = 0 // this.childrenWidth = 0
// this.childrenPadding = 0 // this.childrenPadding = 0
// } // }
this.$store.dispatch('app/changeChildrenHide', true) this.$store.dispatch("app/changeChildrenHide", true);
this.$emit('openChildren', this.childrenList.length > 0 ? true : false) this.$emit("openChildren", this.childrenList.length > 0 ? true : false);
}, },
changeWidth() { changeWidth() {
let secondNumber = 0 let secondNumber = 0;
let thirdNumber = 0 let thirdNumber = 0;
this.menuList.forEach((el) => { this.menuList.forEach((el) => {
if (el.level == 2 && !el.hidden) { if (el.level == 2 && !el.hidden) {
secondNumber = secondNumber + 1 secondNumber = secondNumber + 1;
} else if (el.level == 3 && !el.hidden) { } else if (el.level == 3 && !el.hidden) {
thirdNumber = thirdNumber + 1 thirdNumber = thirdNumber + 1;
} }
}) });
this.$nextTick(() => { this.$nextTick(() => {
let childrenHight = thirdNumber * 50 + secondNumber * 35 let childrenHight = thirdNumber * 50 + secondNumber * 35;
let windowHight = this.$refs.siderBox.offsetHeight - 51 let windowHight = this.$refs.siderBox.offsetHeight - 51;
if (this.childrenList.length > 0) { if (this.childrenList.length > 0) {
this.childrenPadding = '20px ' this.childrenPadding = "20px ";
windowHight = windowHight - 40 windowHight = windowHight - 40;
this.childrenWidth = this.childrenWidth =
(Math.floor(childrenHight / windowHight) + 1) * 320 (Math.floor(childrenHight / windowHight) + 1) * 320;
} else { } else {
this.childrenWidth = 0 this.childrenWidth = 0;
this.childrenPadding = 0 this.childrenPadding = 0;
} }
this.$emit('changeWidth', this.childrenWidth) this.$emit("changeWidth", this.childrenWidth);
}) });
}, },
// //
async GetMyCollectionData(collectType) { async GetMyCollectionData(collectType) {
let res = await GetMyCollectionData({}) let res = await GetMyCollectionData({});
if (res.code == 1) { if (res.code == 1) {
const putCollectData = (res) => { const putCollectData = (res) => {
res.forEach((el) => { res.forEach((el) => {
el.collect = true el.collect = true;
if (el.children != null && el.children && el.children.length) { if (el.children != null && el.children && el.children.length) {
putCollectData(el.children) putCollectData(el.children);
} }
}) });
} };
putCollectData(res.data) putCollectData(res.data);
this.collectionsData = res.data this.collectionsData = res.data;
this.childrenList = [] this.childrenList = [];
if (collectType) { if (collectType) {
setTimeout(() => { setTimeout(() => {
if (this.valForm.id != '129') { if (this.valForm.id != "129") {
this.openChildren(this.valForm) this.openChildren(this.valForm);
} else { } else {
this.openChildren(this.collectionsData[0]) this.openChildren(this.collectionsData[0]);
} }
}, 1) }, 1);
} }
} }
}, },
@ -349,121 +342,119 @@ export default {
const isCollectData = (res) => { const isCollectData = (res) => {
res.forEach((el) => { res.forEach((el) => {
if (el.id === item.id) { if (el.id === item.id) {
item.collect = true item.collect = true;
} }
if (el.children != null && el.children && el.children.length) { if (el.children != null && el.children && el.children.length) {
isCollectData(el.children) isCollectData(el.children);
} }
}) });
} };
isCollectData(this.collectionsData) isCollectData(this.collectionsData);
}, },
// //
closeOpenWin() { closeOpenWin() {
if (this.isSearch != true) { if (this.isSearch != true) {
this.$refs.newsSiderRef.activeIndex = null this.$refs.newsSiderRef.activeIndex = null;
this.childrenWidth = 0 this.childrenWidth = 0;
this.childrenPadding = 0 this.childrenPadding = 0;
this.$store.dispatch('app/changeChildrenHide', false) this.$store.dispatch("app/changeChildrenHide", false);
} }
}, },
routerClick() { routerClick() {
this.isSearch = false this.isSearch = false;
this.closeOpenWin() this.closeOpenWin();
}, },
createList(row) { createList(row) {
let children = [] let children = [];
const parseList = (arr, centerPath) => { const parseList = (arr, centerPath) => {
arr.forEach((el) => { arr.forEach((el) => {
let path let path;
if (!centerPath) { if (!centerPath) {
path = this.fatherPath + '/' + el.path path = this.fatherPath + "/" + el.path;
} else { } else {
path = this.fatherPath + '/' + centerPath + '/' + el.path path = this.fatherPath + "/" + centerPath + "/" + el.path;
} }
let arr = { let arr = {
value: el.meta.title, value: el.meta.title,
path: path path: path,
} };
children.push(arr) children.push(arr);
if (el.children != null && el.children && el.children.length) { if (el.children != null && el.children && el.children.length) {
parseList(el.children, el.path) parseList(el.children, el.path);
} }
}) });
} };
parseList(row) parseList(row);
return children return children;
}, },
getRestaurants(row) { getRestaurants(row) {
let children = [] let children = [];
const restaurants = (arr, fatherPath) => { const restaurants = (arr, fatherPath) => {
console.log(arr, 'arr')
arr.forEach((el) => { arr.forEach((el) => {
let path = '' let path = "";
el.fullpath = fatherPath ? fatherPath + '/' + el.path : el.path el.fullpath = fatherPath ? fatherPath + "/" + el.path : el.path;
console.log(el, 'el')
let arr = { let arr = {
value: el.meta ? el.meta.title : '', value: el.meta.title,
path: el.fullpath path: el.fullpath,
} };
children.push(arr) children.push(arr);
if (el.children != null && el.children && el.children.length) { if (el.children != null && el.children && el.children.length) {
restaurants(el.children, el.fullpath) restaurants(el.children, el.fullpath);
} }
}) });
} };
restaurants(row) restaurants(row);
return children return children;
}, },
querySearch(queryString, cb) { querySearch(queryString, cb) {
this.isSearch = true this.isSearch = true;
var restaurants = this.getRestaurants(this.sidebarRouters) var restaurants = this.getRestaurants(this.sidebarRouters);
var results = queryString ? var results = queryString ?
restaurants.filter(this.createFilter(queryString)) : restaurants.filter(this.createFilter(queryString)) :
restaurants restaurants;
console.log(results, 'results') cb(results);
cb(results)
}, },
createFilter(queryString) { createFilter(queryString) {
return (restaurant) => { return (restaurant) => {
return restaurant.value.toLowerCase().indexOf(queryString) !== -1 return restaurant.value.toLowerCase().indexOf(queryString) !== -1;
} };
}, },
handleSelect(item) { handleSelect(item) {
let routeData = this.$router.resolve({ let routeData = this.$router.resolve({
path: item.path path: item.path,
}) });
window.open(routeData.href, '_self') window.open(routeData.href, "_self");
this.routerClick() this.routerClick();
this.$refs.newsSiderRef.activeIndex = null this.$refs.newsSiderRef.activeIndex = null;
this.childrenPadding = 0 this.childrenPadding = 0;
this.$store.dispatch('app/changeChildrenHide', false) this.$store.dispatch("app/changeChildrenHide", false);
}, },
collectClick(item) { collectClick(item) {},
} },
} };
}
</script> </script>
<style lang="scss" scoped> <style lang="scss">
$activeColor: var(--bg-color, "#00aaff"); $activeColor: var(--bg-color, "#00aaff");
.el-tree-node__content:hover, .el-tree-node__content:hover,
.el-upload-list__item:hover { .el-upload-list__item:hover {
color: #333; // color: white;
background-color: #eef5fe !important; // background-color: $activeColor !important;
background-color: #ecf5ff !important;
} }
.el-tree-node:focus>.el-tree-node__content { .el-tree-node:focus>.el-tree-node__content {
color: #333; color: white;
background-color: #eef5fe !important; background-color: $activeColor !important;
} }
.el-tree-node.is-current>.el-tree-node__content { .el-tree-node.is-current>.el-tree-node__content {
color: #333; color: white;
background-color: #eef5fe !important; background-color: $activeColor !important;
} }
.navbarSearch { .navbarSearch {

View File

@ -30,7 +30,7 @@
@mouseenter="openChildren(item, index)" @mouseenter="openChildren(item, index)"
@click="goRouter(item, index)" @click="goRouter(item, index)"
> >
<i class="newsSider-icon iconfont" :class="item.meta.icon"> </i> <i class="newsSider-icon iconfont" :class="item.meta.menuIcon"> </i>
<p class="newsSider-title" :class="{ active: index === activeIndex }"> <p class="newsSider-title" :class="{ active: index === activeIndex }">
{{ item.meta.title }} {{ item.meta.title }}
</p> </p>

View File

@ -29,8 +29,8 @@
class="newsSider" class="newsSider"
@mouseenter="openChildren(item, index)" @mouseenter="openChildren(item, index)"
> >
<i class="newsSider-icon iconfont" :class="item.meta.icon ? item.meta.icon :'el-icon-office-building'"> </i> <i class="newsSider-icon iconfont" :class="item.meta.menuIcon ? item.meta.menuIcon :'el-icon-office-building'"> </i>
<!-- <i class="newsSider-icon iconfont" :class="item.meta.icon"> </i> --> <!-- <i class="newsSider-icon iconfont" :class="item.meta.menuIcon"> </i> -->
<p class="newsSider-title" :class="{ active: index === activeIndex }"> <p class="newsSider-title" :class="{ active: index === activeIndex }">
{{ item.meta.title }} {{ item.meta.title }}
</p> </p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,53 +1,25 @@
<template> <template>
<div id="tags-view-container" class="tags-view-container"> <div id="tags-view-container" class="tags-view-container" style="display: flex">
<scroll-pane <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
ref="scrollPane" <router-link v-for="tag in visitedViews" ref="tag" :key="tag.path" :class="isActive(tag) ? 'active' : ''"
class="tags-view-wrapper" :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" tag="span" class="tags-view-item"
@scroll="handleScroll" :style="activeStyle(tag)" @click.middle.native="!isAffix(tag) ? closeSelectedTag(tag) : ''"
>
<router-link
v-for="tag in visitedViews"
ref="tag"
:key="tag.path"
:class="isActive(tag) ? 'active' : ''"
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span"
class="tags-view-item"
@click.middle.native="!isAffix(tag) ? closeSelectedTag(tag) : ''"
@contextmenu.prevent.native="openMenu(tag, $event)" @contextmenu.prevent.native="openMenu(tag, $event)"
> >
<span <div class="showBox">
v-if="!isAffix(tag)" <div v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)"></div>
class="el-icon-close" <div class="text">{{ tag.meta.title ? tag.meta.title : tag.title }}</div>
@click.prevent.stop="closeSelectedTag(tag)" </div>
/>
<span v-else class="el-icon-close-else"/>
<span>{{ tag.meta.title ? tag.meta.title : tag.title }}</span>
</router-link> </router-link>
</scroll-pane> </scroll-pane>
<ul <ul v-show="visible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu">
v-show="visible" <li @click="refreshSelectedTag(selectedTag)"><i class="el-icon-refresh-right"></i> 刷新页面</li>
:style="{ left: left + 'px', top: top + 'px' }" <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"><i class="el-icon-close"></i> 关闭当前
class="contextmenu"
>
<li @click="refreshSelectedTag(selectedTag)">
<i class="el-icon-refresh-right"></i> 刷新页面
</li>
<li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">
<i class="el-icon-close"></i> 关闭当前
</li>
<li @click="closeOthersTags">
<i class="el-icon-circle-close"></i> 关闭其他
</li>
<li v-if="!isFirstView()" @click="closeLeftTags">
<i class="el-icon-back"></i> 关闭左侧
</li>
<li v-if="!isLastView()" @click="closeRightTags">
<i class="el-icon-right"></i> 关闭右侧
</li>
<li @click="closeAllTags(selectedTag)">
<i class="el-icon-circle-close"></i> 全部关闭
</li> </li>
<li @click="closeOthersTags"><i class="el-icon-circle-close"></i> 关闭其他</li>
<li v-if="!isFirstView()" @click="closeLeftTags"><i class="el-icon-back"></i> 关闭左侧</li>
<li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 关闭右侧</li>
<li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 全部关闭</li>
</ul> </ul>
</div> </div>
</template> </template>
@ -55,8 +27,9 @@
<script> <script>
import ScrollPane from './ScrollPane' import ScrollPane from './ScrollPane'
import path from 'path' import path from 'path'
import { getCompanyId, getMenuNode } from '@/utils/auth' import {
import { ChangeCompany } from '@/api/apis/auth' getCompanyId
} from '@/utils/auth'
export default { export default {
components: { components: {
@ -68,11 +41,13 @@ export default {
top: 0, top: 0,
left: 0, left: 0,
selectedTag: {}, selectedTag: {},
affixTags: [], affixTags: []
visitedViews: []
} }
}, },
computed: { computed: {
visitedViews() {
return this.$store.state.tagsView.visitedViews
},
routes() { routes() {
return this.$store.state.permission.routes return this.$store.state.permission.routes
}, },
@ -84,13 +59,6 @@ export default {
} }
}, },
watch: { watch: {
'$store.getters.currentMenuNode': {
deep: true,
immediate: true,
handler(newVal, old) {
this.visitedViews = this.getVisitedViews()
}
},
$route() { $route() {
this.addTags() this.addTags()
this.moveToCurrentTag() this.moveToCurrentTag()
@ -105,61 +73,26 @@ export default {
companyID: { companyID: {
deep: true, // true deep: true, // true
handler: function(newV, oldV) { handler: function(newV, oldV) {
if (newV) { if (oldV) {
this.ChangeCompany(newV)
this.$vmNews('切换公司成功', 'success') this.$vmNews('切换公司成功', 'success')
this.closeAllTags(this.closeAllTags) this.closeAllTags(this.closeAllTags)
} }
} }
} }
}, },
mounted() { mounted() {
// this.initTags(); this.initTags()
// this.addTags(); this.addTags()
}, },
methods: { methods: {
getVisitedViews() {
let url = getMenuNode()
let currentData = []
let data = this.$store.state.tagsView.visitedViews || []
if (url) {
if (url.includes('Workbench')) {
currentData = data[0]
} else if (url.includes('MasterDataCenter')) {
currentData = data[1]
} else if (url.includes('IntegrationTaskCenter')) {
currentData = data[2]
} else if (url.includes('businessCenter')) {
currentData = data[3]
} else if (url.includes('ApplicationCenter')) {
currentData = data[4]
} else if (url.includes('businessMatter')) {
currentData = data[5]
} else if (url.includes('accountantMatter')) {
currentData = data[6]
}
else {
currentData = []
}
} else {
currentData = []
}
return currentData
},
async ChangeCompany(CompanyID) {
let params = {
CompanyID: CompanyID
}
let res = await ChangeCompany(params)
},
isActive(route) { isActive(route) {
return route.path === this.$route.path return route.path === this.$route.path
}, },
activeStyle(tag) { activeStyle(tag) {
if (!this.isActive(tag)) return {} if (!this.isActive(tag)) return {}
return { return {
'background-color': this.theme, // "background-color": this.theme,
'border-color': this.theme 'border-color': this.theme
} }
}, },
@ -168,27 +101,22 @@ export default {
}, },
isFirstView() { isFirstView() {
try { try {
return ( return this.selectedTag.fullPath === this.visitedViews[1].fullPath || this.selectedTag.fullPath ===
this.selectedTag.fullPath === this.visitedViews[1].fullPath || '/index'
this.selectedTag.fullPath === '/index'
)
} catch (err) { } catch (err) {
return false return false
} }
}, },
isLastView() { isLastView() {
try { try {
return ( return this.selectedTag.fullPath === this.visitedViews[this.visitedViews.length - 1].fullPath
this.selectedTag.fullPath ===
this.visitedViews[this.visitedViews.length - 1].fullPath
)
} catch (err) { } catch (err) {
return false return false
} }
}, },
filterAffixTags(routes, basePath = '/') { filterAffixTags(routes, basePath = '/') {
let tags = [] let tags = []
routes.forEach((route) => { routes.forEach(route => {
if (route.meta && route.meta.affix) { if (route.meta && route.meta.affix) {
const tagPath = path.resolve(basePath, route.path) const tagPath = path.resolve(basePath, route.path)
tags.push({ tags.push({
@ -211,8 +139,7 @@ export default {
return tags return tags
}, },
initTags() { initTags() {
const affixTags = (this.affixTags = this.filterAffixTags(this.routes)) const affixTags = this.affixTags = this.filterAffixTags(this.routes)
console.log(affixTags, 'affixTags')
for (const tag of affixTags) { for (const tag of affixTags) {
// Must have tag name // Must have tag name
if (tag.name) { if (tag.name) {
@ -225,7 +152,7 @@ export default {
// this.$route.meta.noCache = false // this.$route.meta.noCache = false
if (name) { if (name) {
this.$store.dispatch('tagsView/addView', this.$route) this.$store.dispatch('tagsView/addView', this.$route)
if (this.$route.meta && this.$route.meta.link) { if (this.$route.meta.link) {
this.$store.dispatch('tagsView/addIframeView', this.$route) this.$store.dispatch('tagsView/addIframeView', this.$route)
} }
} }
@ -248,101 +175,30 @@ export default {
}, },
refreshSelectedTag(view) { refreshSelectedTag(view) {
this.$tab.refreshPage(view) this.$tab.refreshPage(view)
if (this.$route.meta && this.$route.meta.link) { if (this.$route.meta.link) {
this.$store.dispatch('tagsView/delIframeView', this.$route) this.$store.dispatch('tagsView/delIframeView', this.$route)
} }
}, },
closeSelectedTag(view) { closeSelectedTag(view) {
this.$tab.closePage(view).then(({ visitedViews }) => { this.$tab.closePage(view).then(({
let url = getMenuNode() visitedViews
let currentData = [] }) => {
let data = visitedViews
if (url) {
if (url.includes('Workbench')) {
currentData = data[0]
} else if (url.includes('MasterDataCenter')) {
currentData = data[1]
} else if (url.includes('IntegrationTaskCenter')) {
currentData = data[2]
} else if (url.includes('businessCenter')) {
currentData = data[3]
} else if (url.includes('ApplicationCenter')) {
currentData = data[4]
} else if (url.includes('businessMatter')) {
currentData = data[5]
}else if (url.includes('accountantMatter')) {
currentData = data[6]
}
}
if (this.isActive(view)) { if (this.isActive(view)) {
this.toLastView(currentData, view) this.toLastView(visitedViews, view)
} }
}) })
}, },
closeRightTags() { closeRightTags() {
this.$tab.closeRightPage(this.selectedTag).then((visitedViews) => { this.$tab.closeRightPage(this.selectedTag).then(visitedViews => {
let url = getMenuNode() if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
let INDEX = null this.toLastView(visitedViews)
if (url) {
if (url.includes('Workbench')) {
INDEX = 0
} else if (url.includes('MasterDataCenter')) {
INDEX = 1
} else if (url.includes('IntegrationTaskCenter')) {
INDEX = 2
} else if (url.includes('businessCenter')) {
INDEX = 3
} else if (url.includes('ApplicationCenter')) {
INDEX = 4
} else if (url.includes('businessMatter')) {
INDEX = 5
} else if (url.includes('accountantMatter')) {
INDEX = 6
}
}
if (INDEX != null) {
if (
!visitedViews[INDEX].find(
(i) => i.fullPath === this.$route.fullPath
)
) {
this.toLastView(visitedViews[INDEX])
}
this.visitedViews = this.getVisitedViews()
} }
}) })
}, },
closeLeftTags() { closeLeftTags() {
this.$tab.closeLeftPage(this.selectedTag).then((visitedViews) => { this.$tab.closeLeftPage(this.selectedTag).then(visitedViews => {
let url = getMenuNode() if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
let INDEX = null this.toLastView(visitedViews)
if (url) {
if (url.includes('Workbench')) {
INDEX = 0
} else if (url.includes('MasterDataCenter')) {
INDEX = 1
} else if (url.includes('IntegrationTaskCenter')) {
INDEX = 2
} else if (url.includes('businessCenter')) {
INDEX = 3
} else if (url.includes('ApplicationCenter')) {
INDEX = 4
} else if (url.includes('businessMatter')) {
INDEX = 5
}else if (url.includes('accountantMatter')) {
INDEX = 6
}
}
if (INDEX != null) {
if (
!visitedViews[INDEX].find(
(i) => i.fullPath === this.$route.fullPath
)
) {
this.toLastView(visitedViews[INDEX])
}
this.visitedViews = this.getVisitedViews()
} }
}) })
}, },
@ -351,37 +207,16 @@ export default {
}) })
this.$tab.closeOtherPage(this.selectedTag).then(() => { this.$tab.closeOtherPage(this.selectedTag).then(() => {
this.moveToCurrentTag() this.moveToCurrentTag()
this.visitedViews = this.getVisitedViews()
}) })
}, },
closeAllTags(view) { closeAllTags(view) {
this.$tab.closeAllPage().then(({ visitedViews }) => { this.$tab.closeAllPage().then(({
let url = getMenuNode() visitedViews
let INDEX = null }) => {
if (url) { if (this.affixTags.some(tag => tag.path === this.$route.path)) {
if (url.includes('Workbench')) {
INDEX = 0
} else if (url.includes('MasterDataCenter')) {
INDEX = 1
} else if (url.includes('IntegrationTaskCenter')) {
INDEX = 2
} else if (url.includes('businessCenter')) {
INDEX = 3
} else if (url.includes('ApplicationCenter')) {
INDEX = 4
} else if (url.includes('businessMatter')) {
INDEX = 5
} else if (url.includes('accountantMatter')) {
INDEX = 6
}
}
if (INDEX != null) {
if (this.affixTags.some((tag) => tag.path === this.$route.path)) {
return return
} }
this.toLastView(visitedViews[INDEX], view) this.toLastView(visitedViews, view)
this.visitedViews = this.getVisitedViews()
}
}) })
}, },
toLastView(visitedViews, view) { toLastView(visitedViews, view) {
@ -402,23 +237,20 @@ export default {
} }
}, },
openMenu(tag, e) { openMenu(tag, e) {
console.log(e.target, 'e')
const menuMinWidth = 105 const menuMinWidth = 105
const offsetLeft = this.$el.getBoundingClientRect().left // container margin left const offsetLeft = e.target.getBoundingClientRect().left // container margin left
const offsetWidth = this.$el.offsetWidth // container width const offsetWidth = e.target.offsetWidth // container width
const maxLeft = offsetWidth - menuMinWidth // left boundary const maxLeft = offsetWidth - menuMinWidth // left boundary
const left = e.clientX - offsetLeft + 15 // 15: margin right const left = offsetLeft + 100 // 15: margin right
if (left > maxLeft) { // if (left > maxLeft) {
this.left = maxLeft // this.left = 800
} else { // } else {
// this.left = 800
// }
this.left = left this.left = left
}
if (this.newVersionSystem) {
this.top = e.clientY
} else {
this.top = e.clientY - 40 this.top = e.clientY - 40
}
this.visible = true this.visible = true
this.selectedTag = tag this.selectedTag = tag
}, },
@ -433,100 +265,73 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .tags-view-wrapper .tags-view-item.active::before { ::v-deep .scrollbar__view {
content: ""; display: flex;
width: unset !important; align-items: center;
height: unset !important;
margin-right: unset !important;
} }
.tags-view-container { .tags-view-container {
// height: 34px; // height: 34px;
width: calc(100% - 133px); width: 80vw;
overflow: auto;
// width: calc(100% - 180px); // width: calc(100% - 180px);
margin-left: 10px; //margin-left: 10px;
background: #fff !important; background: #fff;
border-radius: 4px; border-radius: 4px;
padding: 0px 10px;
// border-bottom: 1px solid #d8dce5; // border-bottom: 1px solid #d8dce5;
// box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04); // box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
position: fixed; //position: fixed;
top: 10px; //top: 22px;
// margin-top: 60px; // margin-top: 60px;
z-index: 1000; z-index: 1000;
.tags-view-wrapper { .tags-view-wrapper {
display: flex;
align-items: center;
.tags-view-item { .tags-view-item {
display: inline-block; display: flex;
align-items: center;
justify-content: center;
position: relative; position: relative;
cursor: pointer; cursor: pointer;
height: 35px; //border: 1px solid #d8dce5;
line-height: 35px;
// border-right: 1px solid #d8dce5;
color: #495060; color: #495060;
// background: #fff; background: #fff;
padding: 0 15px; padding: 0 15px;
font-size: 12px; height: 39px;
margin: 4px 10px;
text-align: center !important;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 14px; font-size: 14px;
color: #333333; .showBox{
font-style: normal; position: relative;
display: flex;
align-items: center;
justify-content: center;
}
&:first-of-type { &:first-of-type {
// margin-left: 15px; // margin-left: 15px;
} }
&:last-of-type { &:last-of-type {
margin-right: 15px;
}
&::after {
content: "";
background: #e4e3e3;
display: inline-block;
position: absolute;
top: 50%;
transform: translateY(-50%);
right: -10px;
width: 1px;
height: 15px;
margin-left: 8px;
vertical-align: -3px;
} }
&.active { &.active {
//background-color: #42b983; //background-color: #42b983;
color: #fff; color: #fff;
border-color: #42b983; border-color: #42b983;
text-align: center !important; background: #3876ee;
&::before {
content: "";
background: #fff;
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
position: relative;
margin-right: 2px;
}
&::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
width: 100%;
height: calc(100% + 10px);
padding: 0 70%;
z-index: -1;
background: url("./images/矩形@2x.png") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} border-radius: 20px;
//&::before {
// content: '';
// background: #fff;
// display: inline-block;
// width: 8px;
// height: 8px;
// border-radius: 50%;
// position: relative;
// margin-right: 2px;
//}
} }
} }
} }
@ -534,7 +339,7 @@ export default {
.contextmenu { .contextmenu {
margin: 0; margin: 0;
background: #fff; background: #fff;
z-index: 3000; z-index: 999999;
position: absolute; position: absolute;
list-style-type: none; list-style-type: none;
padding: 5px 0; padding: 5px 0;
@ -542,7 +347,7 @@ export default {
font-size: 12px; font-size: 12px;
font-weight: 400; font-weight: 400;
color: #333; color: #333;
box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3); box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
li { li {
margin: 0; margin: 0;
@ -561,22 +366,23 @@ export default {
//reset element css of el-icon-close //reset element css of el-icon-close
.tags-view-wrapper { .tags-view-wrapper {
.tags-view-item { .tags-view-item {
color: #333;
.el-icon-close { .el-icon-close {
width: 16px; //width: 16px;
height: 16px; //height: 16px;
left: -14px;
top: -3px;
position: absolute;
vertical-align: 2px; vertical-align: 2px;
border-radius: 50%; border-radius: 50%;
text-align: center; text-align: center;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); //transition: all .3s cubic-bezier(.645, .045, .355, 1);
transform-origin: 100% 50%; transform-origin: 100% 50%;
margin-right: 5px; font-weight: 700;
&:before { &:before {
// transform: scale(0.6); transform: scale(.6);
display: inline-block; display: inline-block;
vertical-align: -2px; vertical-align: -3px;
} }
&:hover { &:hover {
@ -584,21 +390,6 @@ export default {
color: #fff; color: #fff;
} }
} }
.el-icon-close-else {
width: 16px;
height: 16px;
vertical-align: 2px;
border-radius: 50%;
text-align: center;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
transform-origin: 100% 50%;
&:before {
display: inline-block;
vertical-align: -2px;
}
}
} }
} }
</style> </style>

View File

@ -3,4 +3,3 @@ export { default as Navbar } from './Navbar'
export { default as Settings } from './Settings' export { default as Settings } from './Settings'
export { default as Sidebar } from './Sidebar/index.vue' export { default as Sidebar } from './Sidebar/index.vue'
export { default as TagsView } from './TagsView/index.vue' export { default as TagsView } from './TagsView/index.vue'
export { default as NewMenu } from './NewMenu/index.vue'

View File

@ -5,25 +5,25 @@
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)"> <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}"> <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <template slot="title"> --> <!-- <template slot="title"> -->
<!-- <i class="iconfont" :class="item.meta.icon" > </i> --> <!-- <i class="iconfont" :class="item.meta.menuIcon" > </i> -->
<!-- <span v-show="sidebarOpened && !isNest">{{onlyOneChild.meta.title}}</span> --> <!-- <span v-show="sidebarOpened && !isNest">{{onlyOneChild.meta.title}}</span> -->
<!-- <span v-show="isNest">{{onlyOneChild.meta.title}}</span> --> <!-- <span v-show="isNest">{{onlyOneChild.meta.title}}</span> -->
<!-- <div v-if="sidebarOpened"> <!-- <div v-if="sidebarOpened">
<i class="iconfont" :class="item.meta.icon" > </i> <i class="iconfont" :class="item.meta.menuIcon" > </i>
<span>{{isNest}}</span> <span>{{isNest}}</span>
</div> --> </div> -->
<div v-if="isNest === false" :style="{'text-align':sidebarOpened?'left':'center'}"> <div v-if="isNest === false" :style="{'text-align':sidebarOpened?'left':'center'}">
<i class="iconfont" :class="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon"> </i>
<span v-show="sidebarOpened" style="margin-left: 16px;">{{onlyOneChild.meta.title}}</span> <span v-show="sidebarOpened" style="margin-left: 16px;">{{onlyOneChild.meta.title}}</span>
</div> </div>
<div v-else> <div v-else>
<i class="iconfont" :class="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon"> </i>
<span>{{onlyOneChild.meta.title}}</span> <span>{{onlyOneChild.meta.title}}</span>
</div> </div>
<template slot="title"> <template slot="title">
<div v-if="isNest === false"> <div v-if="isNest === false">
<i class="iconfont" :class="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon"> </i>
<span style="margin-left: 16px;">{{item.meta.title}}</span> <span style="margin-left: 16px;">{{item.meta.title}}</span>
</div> </div>
</template> </template>
@ -32,7 +32,7 @@
</template> </template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body> <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<template slot="title"> <template slot="title">
<i class="iconfont" :class="item.meta.icon" v-if="item.meta.icon"> </i> <i class="iconfont" :class="item.meta.menuIcon" v-if="item.meta.menuIcon"> </i>
<span v-show="sidebarOpened" :style="{'margin-left':(sidebarOpened && isNest == false) ?'16px':''}" <span v-show="sidebarOpened" :style="{'margin-left':(sidebarOpened && isNest == false) ?'16px':''}"
class="itemSidebar">{{item.meta.title}}</span> class="itemSidebar">{{item.meta.title}}</span>
</template> </template>

View File

@ -3,7 +3,7 @@
<div class="newsSider bitTitle lastList" v-if="!isNest && hasOneShowingChild(item.children, item)" <div class="newsSider bitTitle lastList" v-if="!isNest && hasOneShowingChild(item.children, item)"
style="width:100px;" @click="goRoute(item)"> style="width:100px;" @click="goRoute(item)">
<div class="concise"> <div class="concise">
<i class=" concise-icon-item iconfont" :class="item.meta.icon"></i> <i class=" concise-icon-item iconfont" :class="item.meta.menuIcon"></i>
<i :class="item.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon" <i :class="item.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon"
@click.stop="handleClickWithDelay(item)"></i> @click.stop="handleClickWithDelay(item)"></i>
</div> </div>
@ -20,7 +20,7 @@
<div v-for="(route, index) in getPriceList(item.children)" class="lastList" :key="index" <div v-for="(route, index) in getPriceList(item.children)" class="lastList" :key="index"
@click="goRoute(item, route)" style="width:100px"> @click="goRoute(item, route)" style="width:100px">
<div class="concise"> <div class="concise">
<i class=" concise-icon-item iconfont" :class="route.meta.icon"> <i class=" concise-icon-item iconfont" :class="route.meta.menuIcon">
</i> </i>
<i :class="route.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon" <i :class="route.collect == true ? 'el-icon-star-on' : 'el-icon-star-off'" class="star concise-icon"
@click.stop="handleClickWithDelay(route)"></i> @click.stop="handleClickWithDelay(route)"></i>
@ -93,7 +93,7 @@ export default {
this.$emit("openChildren", item); this.$emit("openChildren", item);
}, },
async collectClick(val) { async collectClick(val) {
// console.log(val.meta.icon); // console.log(val.meta.menuIcon);
let params = { let params = {
mcId: val.id, mcId: val.id,
type: "", type: "",

View File

@ -477,6 +477,15 @@ $activeColor: var(--bg-color, "#00aaff");
background-color: #ecf5ff !important; background-color: #ecf5ff !important;
} }
.el-tree-node:focus > .el-tree-node__content {
color: white;
background-color: $activeColor !important;
}
.el-tree-node.is-current > .el-tree-node__content {
color: white;
background-color: $activeColor !important;
}
.navbarSearch { .navbarSearch {
// width: 200px !important; // width: 200px !important;

View File

@ -14,7 +14,7 @@
<div v-if="!item.hidden && item.meta" flex="cross:center" :class="{ active: index === activeIndex }" :style="{ <div v-if="!item.hidden && item.meta" flex="cross:center" :class="{ active: index === activeIndex }" :style="{
color: settings.sideTheme === 'theme-dark' ? '#fff' : '#4c4c4c', color: settings.sideTheme === 'theme-dark' ? '#fff' : '#4c4c4c',
}" class="newsSider" @mouseenter="openChildren(item, index)"> }" class="newsSider" @mouseenter="openChildren(item, index)">
<i class="newsSider-icon iconfont" :class="item.meta.icon"> </i> <i class="newsSider-icon iconfont" :class="item.meta.menuIcon"> </i>
<p class="newsSider-title" :class="{ active: index === activeIndex }"> <p class="newsSider-title" :class="{ active: index === activeIndex }">
{{ item.meta.title }} {{ item.meta.title }}
</p> </p>

View File

@ -14,7 +14,7 @@
<div v-if="!item.hidden && item.meta" flex="cross:center" :class="{ active: index === activeIndex }" :style="{ <div v-if="!item.hidden && item.meta" flex="cross:center" :class="{ active: index === activeIndex }" :style="{
color: settings.sideTheme === 'theme-dark' ? '#fff' : '#4c4c4c', color: settings.sideTheme === 'theme-dark' ? '#fff' : '#4c4c4c',
}" class="newsSider" @mouseenter="openChildren(item, index)"> }" class="newsSider" @mouseenter="openChildren(item, index)">
<i class="newsSider-icon iconfont" :class="item.meta.icon"> </i> <i class="newsSider-icon iconfont" :class="item.meta.menuIcon"> </i>
<p class="newsSider-title" :class="{ active: index === activeIndex }"> <p class="newsSider-title" :class="{ active: index === activeIndex }">
{{ item.meta.title }} {{ item.meta.title }}
</p> </p>

View File

@ -108,7 +108,7 @@ export default {
}, },
mounted() { mounted() {
this.initTags(); this.initTags();
// this.addTags(); this.addTags();
}, },
methods: { methods: {
isActive(route) { isActive(route) {

View File

@ -4,34 +4,47 @@
class="app-wrapper" class="app-wrapper"
:style="{ '--current-color': theme }" :style="{ '--current-color': theme }"
> >
<div class="newVersionSystem"> <div
<new-menu class="newMenuWidth" :class="{'closeWidth':$route.path.includes('settingMenu')}"/> :class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }"
<div class="newMenuAppMain"> class="main-container"
<tags-view v-if="showTagsView"/> >
<app-main/> <div :class="{ 'fixed-header': fixedHeader }">
<navbar />
<sidebar
ref="sidebar"
class="sidebar-container"
v-if="true"
:style="{
width: sidebar.opened
? '0px'
: childrenType
? childrenWidth
: '128px',
}"
@openChildren="openChildren"
@changeWidth="changeWidth"
/>
<!-- <tags-view v-if="needTagsView" /> -->
</div> </div>
<app-main />
<right-panel>
<settings />
</right-panel>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import router from '@/router' import router from "@/router";
import RightPanel from '@/components/RightPanel' import RightPanel from "@/components/RightPanel";
import notFound from '@/views/error/404' import notFound from "@/views/error/404";
import { import { AppMain, Navbar, Settings, Sidebar, TagsView } from "./components";
AppMain, import ResizeMixin from "./mixin/ResizeHandler";
Navbar, import { mapState } from "vuex";
Settings, import variables from "@/assets/styles/variables.scss";
Sidebar,
TagsView,
NewMenu
} from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
import variables from '@/assets/styles/variables.scss'
export default { export default {
name: 'Layout', name: "Layout",
components: { components: {
AppMain, AppMain,
Navbar, Navbar,
@ -39,8 +52,7 @@ export default {
Settings, Settings,
Sidebar, Sidebar,
TagsView, TagsView,
NewMenu, notFound,
notFound
}, },
mixins: [ResizeMixin], mixins: [ResizeMixin],
computed: { computed: {
@ -52,35 +64,72 @@ export default {
notFound: (state) => state.app.notFound, notFound: (state) => state.app.notFound,
conciseMenu: (state) => state.settings.conciseMenu, conciseMenu: (state) => state.settings.conciseMenu,
needTagsView: (state) => state.settings.tagsView, needTagsView: (state) => state.settings.tagsView,
showTagsView: (state) => state.settings.showTagsView, fixedHeader: (state) => state.settings.fixedHeader,
fixedHeader: (state) => state.settings.fixedHeader
}), }),
classObj() { classObj() {
return { return {
// hideSidebar: !this.sidebar.opened, // hideSidebar: !this.sidebar.opened,
openSidebar: this.sidebar.opened, openSidebar: this.sidebar.opened,
withoutAnimation: this.sidebar.withoutAnimation, withoutAnimation: this.sidebar.withoutAnimation,
mobile: this.device === 'mobile' mobile: this.device === "mobile",
} };
}, },
variables() { variables() {
return variables return variables;
} },
}, },
data() { data() {
return { return {
childrenType: false, childrenType: false,
childrenWidth: '1200px' childrenWidth: "1200px",
};
},
watch: {
sidebar: {
handler: function (val, oldVal) {
if (!val.opened && this.childrenType) {
this.$nextTick(() => {
let newWidth = this.$refs.sidebar.childrenWidth + 128 + "px";
this.childrenWidth = newWidth;
});
} }
}, },
deep: true,
},
},
mounted() {
this.getMenu();
this.childrenWidth = this.$refs.sidebar.childrenWidth;
// console.log(this.childrenWidth )
},
methods: { methods: {
openChildren(val) {
let newWidth = this.$refs.sidebar.childrenWidth + 128 + "px";
this.childrenWidth = newWidth;
this.childrenType = val;
},
changeWidth(width) {
this.childrenWidth = width + 128 + "px";
},
handleClickOutside() { handleClickOutside() {
this.$store.dispatch('app/closeSideBar', { this.$store.dispatch("app/closeSideBar", {
withoutAnimation: false withoutAnimation: false,
}) });
} },
} getMenu() {
} //
// this.$store.dispatch("GenerateRoutes").then((accessRoutes) => {
// // console.log(accessRoutes)
// // roles访
// for (let i = 0, length = accessRoutes.length; i < length; i += 1) {
// const element = accessRoutes[i];
// router.addRoutes(accessRoutes); // 访
// }
// localStorage.setItem("routeList", JSON.stringify(accessRoutes));
// });
},
},
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -92,39 +141,14 @@ export default {
position: relative; position: relative;
height: 100%; height: 100%;
width: 100%; width: 100%;
// padding: 0 8px; padding: 0 8px;
background: #ffffff; background: #fafafa;
&.mobile.openSidebar { &.mobile.openSidebar {
position: fixed; position: fixed;
top: 0; top: 0;
} }
} }
.newVersionSystem {
display: flex;
height: 100%;
width: 100%;
}
.newMenuWidth {
width: 114px;
background-color: #fff;
transition: all .3s;
opacity: 1;
}
.closeWidth {
width: 0px !important;
opacity: 0;
}
.newMenuAppMain {
flex: 1;
overflow: hidden;
background-color: #f5f5f5;
}
.drawer-bg { .drawer-bg {
background: #000; background: #000;
opacity: 0.3; opacity: 0.3;
@ -134,21 +158,18 @@ export default {
position: absolute; position: absolute;
z-index: 999; z-index: 999;
} }
.defaultMuneStyle { .defaultMuneStyle {
width: calc(100% - 160px); width: calc(100% - 160px);
margin-left: 160px; margin-left: 160px;
height: 100%; height: 100%;
// padding:10px; // padding:10px;
} }
.conciseMenuStyle { .conciseMenuStyle {
width: calc(100% - 70px); width: calc(100% - 70px);
margin-left: 70px; margin-left: 70px;
padding: 10px; padding: 10px;
height: 100%; height: 100%;
} }
.fixed-header { .fixed-header {
position: fixed; position: fixed;
top: 0; top: 0;
@ -169,7 +190,6 @@ export default {
.mobile .fixed-header { .mobile .fixed-header {
width: 100%; width: 100%;
} }
.webConcat { .webConcat {
position: fixed; position: fixed;
top: 50px; top: 50px;

View File

@ -1,199 +0,0 @@
<template>
<div
:class="classObj"
class="app-wrapper"
:style="{ '--current-color': theme }"
>
<div
:class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }"
class="main-container"
>
<div :class="{ 'fixed-header': fixedHeader }">
<navbar />
<sidebar
ref="sidebar"
class="sidebar-container"
v-if="true"
:style="{
width: sidebar.opened
? '0px'
: childrenType
? childrenWidth
: '128px',
}"
@openChildren="openChildren"
@changeWidth="changeWidth"
/>
<!-- <tags-view v-if="needTagsView" /> -->
</div>
<app-main />
<right-panel>
<settings />
</right-panel>
</div>
</div>
</template>
<script>
import router from "@/router";
import RightPanel from "@/components/RightPanel";
import notFound from "@/views/error/404";
import { AppMain, Navbar, Settings, Sidebar, TagsView } from "./components";
import ResizeMixin from "./mixin/ResizeHandler";
import { mapState } from "vuex";
import variables from "@/assets/styles/variables.scss";
export default {
name: "Layout",
components: {
AppMain,
Navbar,
RightPanel,
Settings,
Sidebar,
TagsView,
notFound,
},
mixins: [ResizeMixin],
computed: {
...mapState({
theme: (state) => state.settings.theme,
sideTheme: (state) => state.settings.sideTheme,
sidebar: (state) => state.app.sidebar,
device: (state) => state.app.device,
notFound: (state) => state.app.notFound,
conciseMenu: (state) => state.settings.conciseMenu,
needTagsView: (state) => state.settings.tagsView,
fixedHeader: (state) => state.settings.fixedHeader,
}),
classObj() {
return {
// hideSidebar: !this.sidebar.opened,
openSidebar: this.sidebar.opened,
withoutAnimation: this.sidebar.withoutAnimation,
mobile: this.device === "mobile",
};
},
variables() {
return variables;
},
},
data() {
return {
childrenType: false,
childrenWidth: "1200px",
};
},
watch: {
sidebar: {
handler: function (val, oldVal) {
if (!val.opened && this.childrenType) {
this.$nextTick(() => {
let newWidth = this.$refs.sidebar.childrenWidth + 128 + "px";
this.childrenWidth = newWidth;
});
}
},
deep: true,
},
},
mounted() {
this.getMenu();
this.childrenWidth = this.$refs.sidebar.childrenWidth;
// console.log(this.childrenWidth )
},
methods: {
openChildren(val) {
let newWidth = this.$refs.sidebar.childrenWidth + 128 + "px";
this.childrenWidth = newWidth;
this.childrenType = val;
},
changeWidth(width) {
this.childrenWidth = width + 128 + "px";
},
handleClickOutside() {
this.$store.dispatch("app/closeSideBar", {
withoutAnimation: false,
});
},
getMenu() {
//
// this.$store.dispatch("GenerateRoutes").then((accessRoutes) => {
// // console.log(accessRoutes)
// // roles访
// for (let i = 0, length = accessRoutes.length; i < length; i += 1) {
// const element = accessRoutes[i];
// router.addRoutes(accessRoutes); // 访
// }
// localStorage.setItem("routeList", JSON.stringify(accessRoutes));
// });
},
},
};
</script>
<style lang="scss" scoped>
@import "~@/assets/styles/mixin.scss";
@import "~@/assets/styles/variables.scss";
.app-wrapper {
@include clearfix;
position: relative;
height: 100%;
width: 100%;
padding: 0 8px;
background: #fafafa;
&.mobile.openSidebar {
position: fixed;
top: 0;
}
}
.drawer-bg {
background: #000;
opacity: 0.3;
width: 100%;
top: 0;
height: 100%;
position: absolute;
z-index: 999;
}
.defaultMuneStyle {
width: calc(100% - 160px);
margin-left: 160px;
height: 100%;
// padding:10px;
}
.conciseMenuStyle {
width: calc(100% - 70px);
margin-left: 70px;
padding: 10px;
height: 100%;
}
.fixed-header {
position: fixed;
top: 0;
right: 0;
z-index: 9;
width: calc(100% - #{$base-sidebar-width});
transition: width 0.28s;
}
// .hideSidebar .fixed-header {
// width: calc(100% - 54px);
// }
.sidebarHide .fixed-header {
width: 100%;
}
.mobile .fixed-header {
width: 100%;
}
.webConcat {
position: fixed;
top: 50px;
height: calc(100vh - 50px);
width: 100%;
}
</style>

View File

@ -38,11 +38,7 @@ import nodeWrap from '@/components/nodeWrap'
import { delTreeChildren } from '@/utils/util' import { delTreeChildren } from '@/utils/util'
Vue.use(nodeWrap) Vue.use(nodeWrap)
Vue.component('NodeWrap', nodeWrap) // 初始化组件 Vue.component('NodeWrap', nodeWrap) // 初始化组件
// 柱状图、折线图组件
import BarChart from "@/components/Echarts/BarChart";
import BarChartBlack from "@/components/Echarts/BarChartBlack.vue";
Vue.component("BarChart", BarChart);
Vue.component("BarChartBlack", BarChartBlack);
import followWorkShow from '@/components/nodeWrapShow' import followWorkShow from '@/components/nodeWrapShow'
Vue.use(followWorkShow) Vue.use(followWorkShow)
Vue.component('FollowWorkShow', followWorkShow) // 初始化组件 Vue.component('FollowWorkShow', followWorkShow) // 初始化组件
@ -66,8 +62,6 @@ Vue.directive('enterNumber', {
}) })
} }
}) })
import Directives from "@/directive/permission/index";
Vue.use(Directives);
import { download } from '@/utils/request' import { download } from '@/utils/request'
import { openLoading, closeLoading } from '@/utils/loading' import { openLoading, closeLoading } from '@/utils/loading'

View File

@ -1,158 +1,76 @@
import router from './router' import router from "./router";
import store from './store' import store from "./store";
import { Message } from 'element-ui' import { Message } from "element-ui";
import NProgress from 'nprogress' import NProgress from "nprogress";
import 'nprogress/nprogress.css' import "nprogress/nprogress.css";
import { getToken, getCompanyId, getMenuNode,setMenuNode } from '@/utils/auth' import { getToken, getCompanyId } from "@/utils/auth";
import { isRelogin, getButtonLish } from '@/utils/request' import { isRelogin, getButtonLish } from "@/utils/request";
import { authApi } from '@/api/apis/auth'
import { getInfo } from '@/utils/auth'
NProgress.configure({ NProgress.configure({
showSpinner: false showSpinner: false,
}) });
//判断是否第一次进入页面
let isFirst = true;
const whiteList = [
'/login',
'/test',
'/auth-redirect',
'/bind',
'/contractAssistant',
'/register',
'/systemInit',
'/databaseLogin',
'/apiLogs',
'/apiLogsError'
] const whiteList = [
"/login",
"/test",
"/auth-redirect",
"/bind",
"/contractAssistant",
"/register",
"/systemInit",
"/databaseLogin",
];
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
let reloaded = sessionStorage.getItem('reloaded') NProgress.start();
//网站第一次进来逻辑 当from为空
if (from.path === '/' && !reloaded && isFirst && !whiteList.includes(to.path)) {
isFirst = false
setMenuNode("/index");
store.commit("SET_CURRENT_MENU_NODE", "/index");
next({
path: '/index',
})
return
}
//网站刷新后逻辑
if (reloaded === 'true' && !whiteList.includes(to.path)) {
sessionStorage.setItem('reloaded', 'false')
let url = getMenuNode();
if (url) {
next({
path: url,
})
} else {
next({
path: '/index',
})
}
return
}
NProgress.start()
if (getToken()) { if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title) to.meta.title && store.dispatch("settings/setTitle", to.meta.title);
/* has token*/ /* has token*/
if (to.path === '/login') { if (to.path === "/login") {
next({ next({
path: '/' path: "/",
}) });
NProgress.done() NProgress.done();
} else { } else {
let routeList = localStorage.getItem('routeList') let routeList = localStorage.getItem("routeList")
? localStorage.getItem('routeList') ? localStorage.getItem("routeList")
: null : null;
// store.dispatch("GenerateRoutes").then((accessRoutes) => { // store.dispatch("GenerateRoutes").then((accessRoutes) => {
// next() // next()
// }) // })
if (store.getters.permission_routes.length == 0) { if (store.getters.permission_routes.length == 0) {
store.dispatch('GenerateRoutes').then((accessRoutes) => { store.dispatch("GenerateRoutes").then((accessRoutes) => {
// 根据roles权限生成可访问的路由表 // 根据roles权限生成可访问的路由表
// for (let i = 0, length = accessRoutes.length; i < length; i += 1) { // for (let i = 0, length = accessRoutes.length; i < length; i += 1) {
// const element = accessRoutes[i]; // const element = accessRoutes[i];
// // router.addRoutes(accessRoutes); // 动态添加可访问路由表 // // router.addRoutes(accessRoutes); // 动态添加可访问路由表
// } // }
router.addRoutes(accessRoutes) // 动态添加可访问路由表 router.addRoutes(accessRoutes); // 动态添加可访问路由表
// router.addRoutes(accessRoutes) // 动态添加可访问路由表 // router.addRoutes(accessRoutes) // 动态添加可访问路由表
localStorage.setItem('routeList', JSON.stringify(accessRoutes)) localStorage.setItem("routeList", JSON.stringify(accessRoutes));
//获取当前已获取的权限按钮
let perObj = store.getters.getButtonPre
//获取当前权限按钮
if (to.meta.id && !perObj[to.meta.id]) {
let userId = JSON.parse(getInfo()).id
authApi('sysButtonConfigService', '', 'getUserButton', '', {
menuId: to.meta.id,
userId: userId
}).then((res) => {
// 处理接口 格式为:{路由id:[按钮id,按钮id],....}
let tempObj = {}
let tempArr = []
res.attribute.forEach((item) => {
tempArr.push(item.nameEn)
})
tempObj.id = to.meta.id
tempObj.value = tempArr
store.commit('perButton/SET_BUTTONOBJ', tempObj)
next({ next({
...to, ...to,
replace: true replace: true,
}) }); // hack方法 确保addRoutes已完成
}) });
} else { } else {
next({ next();
...to,
replace: true
})
}
// next({
// ...to,
// replace: true
// }) // hack方法 确保addRoutes已完成
})
} else {
//获取当前已获取的权限按钮
let perObj = store.getters.getButtonPre
if (to.meta.id && !perObj[to.meta.id]) {
let userId = JSON.parse(getInfo()).id
authApi('sysButtonConfigService', '', 'getUserButton', '', {
menuId: to.meta.id,
userId: userId
}).then((res) => {
// 处理接口 格式为:{路由id:[按钮id,按钮id],....}
let tempObj = {}
let tempArr = []
res.attribute.forEach((item) => {
tempArr.push(item.nameEn)
})
tempObj.id = to.meta.id
tempObj.value = tempArr
store.commit('perButton/SET_BUTTONOBJ', tempObj)
next()
})
} else {
next()
}
} }
} }
} else { } else {
// 没有token // 没有token
if (whiteList.indexOf(to.path) !== -1) { if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入 // 在免登录白名单,直接进入
next() next();
} else { } else {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
NProgress.done() NProgress.done();
} }
} }
}) });
router.afterEach(() => { router.afterEach(() => {
NProgress.done() NProgress.done();
}) });

View File

@ -16,7 +16,6 @@ All.prototype = {
setCookie(val) { //cookie设置[{key:value}]、获取key、清除['key1','key2'] setCookie(val) { //cookie设置[{key:value}]、获取key、清除['key1','key2']
for (var i = 0, len = val.length; i < len; i++) { for (var i = 0, len = val.length; i < len; i++) {
for (var key in val[i]) { for (var key in val[i]) {
console.log(key,'key123')
document.cookie = key + '=' + encodeURIComponent(val[i][key]) + "; path=/"; document.cookie = key + '=' + encodeURIComponent(val[i][key]) + "; path=/";
} }
} }
@ -35,7 +34,6 @@ All.prototype = {
var myDate = new Date(); var myDate = new Date();
myDate.setTime(-1000); //设置时间 myDate.setTime(-1000); //设置时间
for (var i = 0, len = name.length; i < len; i++) { for (var i = 0, len = name.length; i < len; i++) {
console.log(name,'?')
document.cookie = "" + name[i] + "=''; path=/; expires=" + myDate.toGMTString(); document.cookie = "" + name[i] + "=''; path=/; expires=" + myDate.toGMTString();
} }
}, },

View File

@ -1,12 +1,12 @@
import Vue from 'vue' import Vue from "vue";
import Router from 'vue-router' import Router from "vue-router";
Vue.use(Router) Vue.use(Router);
/* Layout */ /* Layout */
import Layout from '@/layout/index.vue' import Layout from "@/layout/index.vue";
import ParentView from '@/components/ParentView' import ParentView from "@/components/ParentView";
import ApiAdmin from '@/views/integrationApi/apiAdmin' import ApiAdmin from "@/views/integrationApi/apiAdmin"
/** /**
* Note: 路由配置项 * Note: 路由配置项
@ -32,54 +32,39 @@ import ApiAdmin from '@/views/integrationApi/apiAdmin'
// 公共路由 // 公共路由
export const constantRoutes = [{ export const constantRoutes = [{
path: '/redirect', path: "/redirect",
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [{ children: [{
path: '/redirect/:path(.*)', path: "/redirect/:path(.*)",
component: () => import('@/views/redirect') component: () => import("@/views/redirect"),
}] },],
}, },
{ {
path: '/apiLogs', path: "/login",
component: () => import('@/views/apiLogs/index.vue'), component: () => import("@/views/login"),
hidden: true hidden: true,
}, },
{ {
path: '/apiLogsError', path: "/register",
component: () => import('@/views/apiLogsError/index.vue'), component: () => import("@/views/register/index"),
hidden: true hidden: true,
}, },
{ {
path: '/login', path: "/systemInit",
component: () => import('@/views/login'),
hidden: true
},
{
path: '/test',
component: () => import('@/views/test'),
hidden: true
},
{
path: '/register',
component: () => import('@/views/register/index'),
hidden: true
},
{
path: '/systemInit',
// name: "databaseIndex", // name: "databaseIndex",
component: () => import('@/views/systemInit/index'), component: () => import("@/views/systemInit/index"),
hidden: true hidden: true,
}, },
{ {
path: '/404', path: "/404",
component: () => import('@/views/error/404'), component: () => import("@/views/error/404"),
hidden: true hidden: true,
}, },
{ {
path: '/401', path: "/401",
component: () => import('@/views/error/401'), component: () => import("@/views/error/401"),
hidden: true hidden: true,
}, },
// { // {
// path: "/contractAssistant", // path: "/contractAssistant",
@ -87,123 +72,51 @@ export const constantRoutes = [{
// hidden: true, // hidden: true,
// }, // },
{ {
path: '', path: "",
component: Layout, component: Layout,
redirect: 'index', redirect: "index",
children: [{ children: [{
path: 'index', path: "index",
component: () => import('@/views/index_v2'), component: () => import("@/views/index_v2"),
name: 'Index', name: "Index",
meta: { meta: {
title: '首页', title: "首页",
icon: 'dashboard', icon: "dashboard",
affix: true affix: true,
} },
}, },
{ {
path: 'notFound', path: "notFound",
component: () => import('@/views/notFound'), component: () => import("@/views/notFound"),
name: 'notFound', name: "notFound",
meta: { meta: {
title: '404', title: "404",
icon: 'dashboard' icon: "dashboard",
// affix: true, // affix: true,
} },
},
],
}, },
{ {
path: 'message', path: "/user",
component: () => import('@/views/newVersionView/message/index'),
name: 'message',
meta: {
title: '消息',
icon: 'dashboard'
}
},
{
path: 'Workbench',
component: () => import('@/views/newVersionView/Workbench/index'),
name: 'Workbench',
meta: {
title: '工作台',
icon: 'dashboard'
}
},
{
path: 'MasterDataCenter',
component: () => import('@/views/newVersionView/MasterDataCenter/index'),
name: 'MasterDataCenter',
meta: {
title: '主数据中心',
icon: 'dashboard'
}
},
{
path: 'ApplicationCenter',
component: () => import('@/views/newVersionView/ApplicationCenter/index'),
name: 'ApplicationCenter',
meta: {
title: '应用管理',
icon: 'dashboard'
}
},
{
path: 'IntegrationTaskCenter',
component: () => import('@/views/newVersionView/IntegrationTaskCenter/index'),
name: 'IntegrationTaskCenter',
meta: {
title: '集成任务',
icon: 'dashboard'
}
},
{
path: 'businessCenter',
component: () => import('@/views/newVersionView/businessCenter/index'),
name: 'businessCenter',
meta: {
title: '业务中心',
icon: 'dashboard'
}
},
{
path: 'businessMatter',
component: () => import('@/views/newVersionView/businessMatter/index'),
name: 'businessMatter',
meta: {
title: '会计事项平台',
icon: 'dashboard'
}
},
{
path: 'accountantMatter',
component: () => import('@/views/newVersionView/accountantMatter/index'),
name: 'accountantMatter',
meta: {
title: '财资事项平台',
icon: 'dashboard'
}
}
]
},
{
path: '/user',
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'Profile', redirect: "Profile",
children: [{ children: [{
path: 'Profile', path: "Profile",
// component: () => import('@/views/system/user/personalCenter/index'), // component: () => import('@/views/system/user/personalCenter/index'),
component: () => component: () =>
import( import(
'@/views/systemSettings/userSettings/PersonnelSettings/personalCenter/index' "@/views/systemSettings/userSettings/PersonnelSettings/personalCenter/index"
), ),
name: 'Profile', name: "Profile",
meta: { meta: {
title: '个人中心', title: "个人中心",
icon: 'user' icon: "user",
} },
}] },],
} },
// { // {
// path: "/integrationOption", // path: "/integrationOption",
// component: Layout, // component: Layout,
@ -1060,36 +973,36 @@ export const constantRoutes = [{
// } // }
// }] // }]
// }, // },
] ];
// 动态路由,基于用户权限动态去加载 // 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [{ export const dynamicRoutes = [{
path: '/tool/gen-edit', path: "/tool/gen-edit",
component: Layout, component: Layout,
hidden: true, hidden: true,
permissions: ['tool:gen:edit'], permissions: ["tool:gen:edit"],
children: [{ children: [{
path: 'index/:tableId(\\d+)', path: "index/:tableId(\\d+)",
// component: () => import('@/views/tool/gen/editTable'), // component: () => import('@/views/tool/gen/editTable'),
// component: () => import('@/views/tool/gen/index'), // component: () => import('@/views/tool/gen/index'),
name: 'GenEdit', name: "GenEdit",
meta: { meta: {
title: '修改生成配置', title: "修改生成配置",
activeMenu: '/tool/gen' activeMenu: "/tool/gen",
} },
}] },],
}] },];
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错
let routerPush = Router.prototype.push let routerPush = Router.prototype.push;
Router.prototype.push = function push(location) { Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch((err) => err) return routerPush.call(this, location).catch((err) => err);
} };
export default new Router({ export default new Router({
mode: 'hash', // 去掉url中的# mode: "hash", // 去掉url中的#
scrollBehavior: () => ({ scrollBehavior: () => ({
y: 0 y: 0,
}), }),
routes: constantRoutes routes: constantRoutes,
}) });

View File

@ -18,7 +18,6 @@ const getters = {
sidebarRouters: state => state.permission.sidebarRouters, sidebarRouters: state => state.permission.sidebarRouters,
personInfo: state => state.permission.personInfo, personInfo: state => state.permission.personInfo,
companyID: state => state.user.companyID, companyID: state => state.user.companyID,
currentMenuNode: state => state.user.currentMenuNode,
// tableId: state => state.approval.tableId, // tableId: state => state.approval.tableId,
// isTried: state => state.approval.isTried, // isTried: state => state.approval.isTried,
// flowPermission1: state => state.approval.flowPermission1, // flowPermission1: state => state.approval.flowPermission1,
@ -37,7 +36,5 @@ const getters = {
copyerConfig: state => state.flowPath.copyerConfig, copyerConfig: state => state.flowPath.copyerConfig,
conditionDrawer: state => state.flowPath.conditionDrawer, conditionDrawer: state => state.flowPath.conditionDrawer,
conditionsConfig: state => state.flowPath.conditionsConfig, conditionsConfig: state => state.flowPath.conditionsConfig,
getButtonPre: (state) => state.perButton.buttonObj,
messageCount: state => state.user.messageCount,
} }
export default getters export default getters

View File

@ -9,7 +9,6 @@ import settings from './modules/settings'
import getters from './getters' import getters from './getters'
import approval from './modules/approval' import approval from './modules/approval'
import flowPath from "./modules/flowPath" import flowPath from "./modules/flowPath"
import perButton from "@/store/modules/perButton";
Vue.use(Vuex) Vue.use(Vuex)
@ -22,8 +21,7 @@ const store = new Vuex.Store({
permission, permission,
settings, settings,
approval, approval,
flowPath, flowPath
perButton
}, },
getters getters
}) })

View File

@ -1,23 +0,0 @@
const state = {
buttonObj: {},
};
const mutations = {
//保存按钮
SET_BUTTONOBJ(state, data) {
if (!data.id) return;
state.buttonObj[data.id] = data.value;
},
//清空按钮
CLEAN_BUTTONOBJ(state, data) {
state.buttonObj = {};
},
};
const actions = {};
export default {
namespaced: true,
state,
mutations,
actions,
};

View File

@ -29,6 +29,7 @@ const permission = {
name: 'applicationEdit', name: 'applicationEdit',
hidden: true, hidden: true,
meta: { meta: {
title: '应用编辑',
hidden: true hidden: true
} }
}, },
@ -38,6 +39,7 @@ const permission = {
name: 'exploit', name: 'exploit',
hidden: true, hidden: true,
meta: { meta: {
title: '开发管理',
hidden: true hidden: true
} }
}, },
@ -47,6 +49,7 @@ const permission = {
name: 'authority', name: 'authority',
hidden: true, hidden: true,
meta: { meta: {
title: '权限管理',
hidden: true hidden: true
} }
@ -56,14 +59,7 @@ const permission = {
name: 'appApiAdmin', name: 'appApiAdmin',
component: () => import('@/views/applicationList/apiList/apiAdmin'), component: () => import('@/views/applicationList/apiList/apiAdmin'),
meta: { meta: {
hidden: true title: 'API管理',
}
},
{
path: 'accountAdmin',
name: 'accountAdmin',
component: () => import('@/views/applicationList/accountList/accountAdmin'),
meta: {
hidden: true hidden: true
} }
}, },
@ -72,14 +68,7 @@ const permission = {
name: 'inserterAdmin', name: 'inserterAdmin',
component: () => import('@/views/applicationList/inserterAdmin'), component: () => import('@/views/applicationList/inserterAdmin'),
meta: { meta: {
hidden: true title: '插件管理',
}
},
{
path: 'scriptAdmin',
name: 'scriptAdmin',
component: () => import('@/views/applicationList/scriptAdmin'),
meta: {
hidden: true hidden: true
} }
}, },
@ -90,6 +79,7 @@ const permission = {
hidden: 'true', hidden: 'true',
component: () => import('@/views/applicationList/apiList/apiAdd'), component: () => import('@/views/applicationList/apiList/apiAdd'),
meta: { meta: {
title: 'API新增'
} }
}, },
@ -99,6 +89,7 @@ const permission = {
hidden: 'true', hidden: 'true',
component: () => import('@/views/applicationList/apiList/apiView'), component: () => import('@/views/applicationList/apiList/apiView'),
meta: { meta: {
title: 'API查看'
} }
} }
] ]
@ -115,17 +106,17 @@ const permission = {
name: 'masterDataEdit', name: 'masterDataEdit',
hidden: true, hidden: true,
meta: { meta: {
title: '', title: '基本信息',
hidden: true hidden: true
} }
}, },
{ {
path: 'dataOrigin', path: 'dataOrigin',
component: () => import('@/views/masterDataOptions/dataOrigin'), component: () => import('@/views/masterDataOptions/dataOrigin'),
name: 'masterDataEdit', name: 'dataOrigin',
hidden: true, hidden: true,
meta: { meta: {
title: '', title: '数据源',
hidden: true hidden: true
} }
}, },
@ -135,7 +126,7 @@ const permission = {
name: 'displayInfo', name: 'displayInfo',
hidden: true, hidden: true,
meta: { meta: {
title: '', title: '显示信息',
hidden: true hidden: true
} }
@ -145,7 +136,7 @@ const permission = {
name: 'authorily', name: 'authorily',
component: () => import('@/views/masterDataOptions/authority'), component: () => import('@/views/masterDataOptions/authority'),
meta: { meta: {
title: '', title: '配置权限',
hidden: true hidden: true
} }
}, },
@ -154,19 +145,10 @@ const permission = {
name: 'distribute', name: 'distribute',
component: () => import('@/views/masterDataOptions/distribute'), component: () => import('@/views/masterDataOptions/distribute'),
meta: { meta: {
title: '', title: '分发设置',
hidden: true hidden: true
} }
},
{
path: 'logsDeatil',
name: 'logsDeatil',
component: () => import('@/views/masterDataOptions/logsDeatil'),
meta: {
title: '',
hidden: true
} }
},
] ]
} }
}) })

View File

@ -1,6 +1,6 @@
import defaultSettings from '@/settings' import defaultSettings from '@/settings'
const { sideTheme, showSettings,conciseMenu, topNav, tagsView, showTagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings const { sideTheme, showSettings,conciseMenu, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings
const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || '' const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
const state = { const state = {
title: '', title: '',
@ -12,7 +12,6 @@ const state = {
tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView, tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader, fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo, sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
showTagsView: storageSetting.showTagsView === undefined ? showTagsView : storageSetting.showTagsView,
dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle
} }
const mutations = { const mutations = {

View File

@ -1,458 +1,120 @@
import { getMenuNode } from "@/utils/auth";
const state = { const state = {
visitedViews: [ visitedViews: [],
[], cachedViews: [],
[], iframeViews: []
[],
[],
[],
[],
[]
],
cachedViews: [
[],
[],
[],
[],
[],
[],
[]
],
iframeViews: [
[],
[],
[],
[],
[],
[],
[]
],
} }
const mutations = { const mutations = {
ADD_IFRAME_VIEW: (state, view) => { ADD_IFRAME_VIEW: (state, view) => {
let url = getMenuNode(); if (state.iframeViews.some(v => v.path === view.path)) return
let Index = null state.iframeViews.push(
if (url) {
if (url.includes("Workbench")) {
Index = 0
} else if (url.includes("MasterDataCenter")) {
Index = 1
} else if (url.includes("IntegrationTaskCenter")) {
Index = 2
} else if (url.includes("businessCenter")) {
Index = 3
} else if (url.includes("ApplicationCenter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 5;
}else if (url.includes("accountantMatter")) {
Index = 6;
}
}
if (Index != null) {
if (state.iframeViews[Index].some(v => v.path === view.path)) return
state.iframeViews[Index].push(
Object.assign({}, view, { Object.assign({}, view, {
title: view.meta.title || 'no-name' title: view.meta.title || 'no-name'
}) })
) )
}
}, },
ADD_VISITED_VIEW: (state, view) => { ADD_VISITED_VIEW: (state, view) => {
let url = getMenuNode(); if (state.visitedViews.some(v => v.path === view.path)) return
let Index = null state.visitedViews.push(
if (url) {
if (url.includes("Workbench")) {
Index = 0
} else if (url.includes("MasterDataCenter")) {
Index = 1
} else if (url.includes("IntegrationTaskCenter")) {
Index = 2
} else if (url.includes("businessCenter")) {
Index = 3
} else if (url.includes("ApplicationCenter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 5;
}else if (url.includes("accountantMatter")) {
Index = 6;
}
}
if (Index != null) {
if (state.visitedViews[Index].some(v => v.path === view.path)) return
if(view.meta.affix){
state.visitedViews[Index].unshift(
Object.assign({}, view, { Object.assign({}, view, {
title: view.meta.title || 'no-name' title: view.meta.title || 'no-name'
}) })
) )
}else{
state.visitedViews[Index].push(
Object.assign({}, view, {
title: view.meta.title || 'no-name'
})
)
}
}
}, },
ADD_CACHED_VIEW: (state, view) => { ADD_CACHED_VIEW: (state, view) => {
let url = getMenuNode(); if (state.cachedViews.includes(view.name)) return
let Index = null
if (url) {
if (url.includes("Workbench")) {
Index = 0
} else if (url.includes("MasterDataCenter")) {
Index = 1
} else if (url.includes("IntegrationTaskCenter")) {
Index = 2
} else if (url.includes("businessCenter")) {
Index = 3
} else if (url.includes("ApplicationCenter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 5;
}else if (url.includes("accountantMatter")) {
Index = 6;
}
}
if (Index != null) {
if (state.cachedViews[Index].includes(view.name)) return
if (view.meta && !view.meta.noCache) { if (view.meta && !view.meta.noCache) {
state.cachedViews[Index].push(view.name) state.cachedViews.push(view.name)
}
} }
}, },
DEL_VISITED_VIEW: (state, view) => { DEL_VISITED_VIEW: (state, view) => {
let url = getMenuNode(); for (const [i, v] of state.visitedViews.entries()) {
let Index = null
if (url) {
if (url.includes("Workbench")) {
Index = 0
} else if (url.includes("MasterDataCenter")) {
Index = 1
} else if (url.includes("IntegrationTaskCenter")) {
Index = 2
} else if (url.includes("businessCenter")) {
Index = 3
} else if (url.includes("ApplicationCenter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 5;
}else if (url.includes("accountantMatter")) {
Index = 6;
}
}
if (Index != null) {
for (const [i, v] of state.visitedViews[Index].entries()) {
if (v.path === view.path) { if (v.path === view.path) {
state.visitedViews[Index].splice(i, 1) state.visitedViews.splice(i, 1)
break break
} }
} }
state.iframeViews[Index] = state.iframeViews[Index].filter(item => item.path !== view.path) state.iframeViews = state.iframeViews.filter(item => item.path !== view.path)
}
}, },
DEL_IFRAME_VIEW: (state, view) => { DEL_IFRAME_VIEW: (state, view) => {
let url = getMenuNode(); state.iframeViews = state.iframeViews.filter(item => item.path !== view.path)
let Index = null
if (url) {
if (url.includes("Workbench")) {
Index = 0
} else if (url.includes("MasterDataCenter")) {
Index = 1
} else if (url.includes("IntegrationTaskCenter")) {
Index = 2
} else if (url.includes("businessCenter")) {
Index = 3
} else if (url.includes("ApplicationCenter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 5;
}else if (url.includes("accountantMatter")) {
Index = 6;
}
}
if (Index != null) {
state.iframeViews[Index] = state.iframeViews[Index].filter(item => item.path !== view.path)
}
}, },
DEL_CACHED_VIEW: (state, view) => { DEL_CACHED_VIEW: (state, view) => {
let url = getMenuNode(); const index = state.cachedViews.indexOf(view.name)
let Index = null index > -1 && state.cachedViews.splice(index, 1)
if (url) {
if (url.includes("Workbench")) {
Index = 0
} else if (url.includes("MasterDataCenter")) {
Index = 1
} else if (url.includes("IntegrationTaskCenter")) {
Index = 2
} else if (url.includes("businessCenter")) {
Index = 3
} else if (url.includes("ApplicationCenter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 5;
}else if (url.includes("accountantMatter")) {
Index = 6;
}
}
if (Index != null) {
const index = state.cachedViews[Index].indexOf(view.name)
index > -1 && state.cachedViews[Index].splice(index, 1)
}
}, },
DEL_OTHERS_VISITED_VIEWS: (state, view) => { DEL_OTHERS_VISITED_VIEWS: (state, view) => {
let url = getMenuNode(); state.visitedViews = state.visitedViews.filter(v => {
let Index = null
if (url) {
if (url.includes("Workbench")) {
Index = 0
} else if (url.includes("MasterDataCenter")) {
Index = 1
} else if (url.includes("IntegrationTaskCenter")) {
Index = 2
} else if (url.includes("businessCenter")) {
Index = 3
} else if (url.includes("ApplicationCenter")) {
Index = 4
}else if (url.includes("businessMatter")) {
Index = 5;
}else if (url.includes("accountantMatter")) {
Index = 6;
}
}
if (Index != null) {
state.visitedViews[Index] = state.visitedViews[Index].filter(v => {
return v.meta.affix || v.path === view.path return v.meta.affix || v.path === view.path
}) })
state.iframeViews[Index] = state.iframeViews[Index].filter(item => item.path === view.path) state.iframeViews = state.iframeViews.filter(item => item.path === view.path)
}
}, },
DEL_OTHERS_CACHED_VIEWS: (state, view) => { DEL_OTHERS_CACHED_VIEWS: (state, view) => {
let url = getMenuNode(); const index = state.cachedViews.indexOf(view.name)
let INDEX = null
if (url) {
if (url.includes("Workbench")) {
INDEX = 0
} else if (url.includes("MasterDataCenter")) {
INDEX = 1
} else if (url.includes("IntegrationTaskCenter")) {
INDEX = 2
} else if (url.includes("businessCenter")) {
INDEX = 3
} else if (url.includes("ApplicationCenter")) {
INDEX = 4
}else if (url.includes("businessMatter")) {
INDEX = 5;
}else if (url.includes("accountantMatter")) {
INDEX = 6;
}
}
if (INDEX != null) {
const index = state.cachedViews[INDEX].indexOf(view.name)
if (index > -1) { if (index > -1) {
state.cachedViews[INDEX] = state.cachedViews[INDEX].slice(index, index + 1) state.cachedViews = state.cachedViews.slice(index, index + 1)
} else { } else {
state.cachedViews[INDEX] = [] state.cachedViews = []
}
} }
}, },
DEL_ALL_VISITED_VIEWS: state => { DEL_ALL_VISITED_VIEWS: state => {
// keep affix tags // keep affix tags
const affixTags = state.visitedViews.filter(tag => tag.meta.affix)
let url = getMenuNode(); state.visitedViews = affixTags
let INDEX = null state.iframeViews = []
if (url) {
if (url.includes("Workbench")) {
INDEX = 0
} else if (url.includes("MasterDataCenter")) {
INDEX = 1
} else if (url.includes("IntegrationTaskCenter")) {
INDEX = 2
} else if (url.includes("businessCenter")) {
INDEX = 3
} else if (url.includes("ApplicationCenter")) {
INDEX = 4
}else if (url.includes("businessMatter")) {
INDEX = 5;
}else if (url.includes("accountantMatter")) {
INDEX = 6;
}
}
if (INDEX != null) {
const affixTags = state.visitedViews[INDEX].filter(tag => tag.meta.affix)
state.visitedViews[INDEX] = affixTags
state.iframeViews[INDEX] = []
}
}, },
DEL_ALL_CACHED_VIEWS: state => { DEL_ALL_CACHED_VIEWS: state => {
let url = getMenuNode(); state.cachedViews = []
let INDEX = null
if (url) {
if (url.includes("Workbench")) {
INDEX = 0
} else if (url.includes("MasterDataCenter")) {
INDEX = 1
} else if (url.includes("IntegrationTaskCenter")) {
INDEX = 2
} else if (url.includes("businessCenter")) {
INDEX = 3
} else if (url.includes("ApplicationCenter")) {
INDEX = 4
}else if (url.includes("businessMatter")) {
INDEX = 5;
}else if (url.includes("accountantMatter")) {
INDEX = 6;
}
}
if (INDEX != null) {
state.cachedViews[INDEX] = []
}
},
CLEAR_VISTEDVIEWS: state => {
let url = getMenuNode();
let INDEX = null
if (url) {
if (url.includes("Workbench")) {
INDEX = 0
} else if (url.includes("MasterDataCenter")) {
INDEX = 1
} else if (url.includes("IntegrationTaskCenter")) {
INDEX = 2
} else if (url.includes("businessCenter")) {
INDEX = 3
} else if (url.includes("ApplicationCenter")) {
INDEX = 4
}else if (url.includes("businessMatter")) {
INDEX = 5;
}else if (url.includes("accountantMatter")) {
INDEX = 6;
}
}
if (INDEX != null) {
state.visitedViews[INDEX] = []
}
}, },
UPDATE_VISITED_VIEW: (state, view) => { UPDATE_VISITED_VIEW: (state, view) => {
let url = getMenuNode(); for (let v of state.visitedViews) {
let INDEX = null
if (url) {
if (url.includes("Workbench")) {
INDEX = 0
} else if (url.includes("MasterDataCenter")) {
INDEX = 1
} else if (url.includes("IntegrationTaskCenter")) {
INDEX = 2
} else if (url.includes("businessCenter")) {
INDEX = 3
} else if (url.includes("ApplicationCenter")) {
INDEX = 4
}else if (url.includes("businessMatter")) {
INDEX = 5;
}else if (url.includes("accountantMatter")) {
INDEX = 6;
}
}
if (INDEX != null) {
for (let v of state.visitedViews[INDEX]) {
if (v.path === view.path) { if (v.path === view.path) {
v = Object.assign(v, view) v = Object.assign(v, view)
break break
} }
} }
}
}, },
DEL_RIGHT_VIEWS: (state, view) => { DEL_RIGHT_VIEWS: (state, view) => {
let url = getMenuNode(); const index = state.visitedViews.findIndex(v => v.path === view.path)
let INDEX = null
if (url) {
if (url.includes("Workbench")) {
INDEX = 0
} else if (url.includes("MasterDataCenter")) {
INDEX = 1
} else if (url.includes("IntegrationTaskCenter")) {
INDEX = 2
} else if (url.includes("businessCenter")) {
INDEX = 3
} else if (url.includes("ApplicationCenter")) {
INDEX = 4
}else if (url.includes("businessMatter")) {
INDEX = 5;
}else if (url.includes("accountantMatter")) {
INDEX = 6;
}
}
if (INDEX != null) {
const index = state.visitedViews[INDEX].findIndex(v => v.path === view.path)
if (index === -1) { if (index === -1) {
return return
} }
state.visitedViews[INDEX] = state.visitedViews[INDEX].filter((item, idx) => { state.visitedViews = state.visitedViews.filter((item, idx) => {
if (idx <= index || (item.meta && item.meta.affix)) { if (idx <= index || (item.meta && item.meta.affix)) {
return true return true
} }
const i = state.cachedViews[INDEX].indexOf(item.name) const i = state.cachedViews.indexOf(item.name)
if (i > -1) { if (i > -1) {
state.cachedViews[INDEX].splice(i, 1) state.cachedViews.splice(i, 1)
} }
if (item.meta && item.meta.link) { if(item.meta.link) {
const fi = state.iframeViews[INDEX].findIndex(v => v.path === item.path) const fi = state.iframeViews.findIndex(v => v.path === item.path)
state.iframeViews[INDEX].splice(fi, 1) state.iframeViews.splice(fi, 1)
} }
return false return false
}) })
}
}, },
DEL_LEFT_VIEWS: (state, view) => { DEL_LEFT_VIEWS: (state, view) => {
let url = getMenuNode(); const index = state.visitedViews.findIndex(v => v.path === view.path)
let INDEX = null
if (url) {
if (url.includes("Workbench")) {
INDEX = 0
} else if (url.includes("MasterDataCenter")) {
INDEX = 1
} else if (url.includes("IntegrationTaskCenter")) {
INDEX = 2
} else if (url.includes("businessCenter")) {
INDEX = 3
} else if (url.includes("ApplicationCenter")) {
INDEX = 4
}else if (url.includes("businessMatter")) {
INDEX = 5;
}else if (url.includes("accountantMatter")) {
INDEX = 6;
}
}
if (INDEX != null) {
const index = state.visitedViews[INDEX].findIndex(v => v.path === view.path)
if (index === -1) { if (index === -1) {
return return
} }
state.visitedViews[INDEX] = state.visitedViews[INDEX].filter((item, idx) => { state.visitedViews = state.visitedViews.filter((item, idx) => {
if (idx >= index || (item.meta && item.meta.affix)) { if (idx >= index || (item.meta && item.meta.affix)) {
return true return true
} }
const i = state.cachedViews[INDEX].indexOf(item.name) const i = state.cachedViews.indexOf(item.name)
if (i > -1) { if (i > -1) {
state.cachedViews[INDEX].splice(i, 1) state.cachedViews.splice(i, 1)
} }
if (item.meta && item.meta.link) { if(item.meta.link) {
const fi = state.iframeViews[INDEX].findIndex(v => v.path === item.path) const fi = state.iframeViews.findIndex(v => v.path === item.path)
state.iframeViews[INDEX].splice(fi, 1) state.iframeViews.splice(fi, 1)
} }
return false return false
}) })
} }
}
} }
const actions = { const actions = {
@ -460,11 +122,6 @@ const actions = {
dispatch('addVisitedView', view) dispatch('addVisitedView', view)
dispatch('addCachedView', view) dispatch('addCachedView', view)
}, },
clearVisted({ commit }) {
commit('CLEAR_VISTEDVIEWS')
},
addIframeView({ commit }, view) { addIframeView({ commit }, view) {
commit('ADD_IFRAME_VIEW', view) commit('ADD_IFRAME_VIEW', view)
}, },

View File

@ -1,4 +1,4 @@
import { login, logout, getInfo } from '@/api/login' import { login, logout, getInfo } from "@/api/login";
import { import {
getToken, getToken,
setToken, setToken,
@ -6,77 +6,67 @@ import {
removeInfo, removeInfo,
setInfo, setInfo,
setCompanyId, setCompanyId,
removeCompanyId removeCompanyId,
} from '@/utils/auth' } from "@/utils/auth";
const user = { const user = {
state: { state: {
token: getToken(), token: getToken(),
name: '', name: "",
avatar: '', avatar: "",
roles: [], roles: [],
permissions: [], permissions: [],
info: {}, info: {},
companyID: '', companyID: "",
companyListAll: [], companyListAll: [],
messageCount: 0,
currentMenuNode: ''//目的是 结合cokkie 实时监听当前导航栏的变化
}, },
mutations: { mutations: {
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token;
}, },
SET_NAME: (state, name) => { SET_NAME: (state, name) => {
state.name = name state.name = name;
}, },
SET_AVATAR: (state, avatar) => { SET_AVATAR: (state, avatar) => {
state.avatar = avatar state.avatar = avatar;
}, },
SET_ROLES: (state, roles) => { SET_ROLES: (state, roles) => {
state.roles = roles state.roles = roles;
}, },
SET_PERMISSIONS: (state, permissions) => { SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions state.permissions = permissions;
}, },
SET_INFO: (state, info) => { SET_INFO: (state, info) => {
state.info = info state.info = info;
}, },
SET_COMPANYID: (state, companyID) => { SET_COMPANYID: (state, companyID) => {
state.companyID = companyID state.companyID = companyID;
}, },
SET_COMPANYID_LIST_All: (state, companyListAll) => { SET_COMPANYID_LIST_All: (state, companyListAll) => {
state.companyListAll = companyListAll state.companyListAll = companyListAll;
}, },
SET_MESSAGE_COUNT: (state, messageCount) => {
state.messageCount = messageCount
},
SET_CURRENT_MENU_NODE: (state, currentMenuNode) => {
state.currentMenuNode = currentMenuNode
}
}, },
actions: { actions: {
// 登录 // 登录
Login({ commit }, userInfo) { Login({ commit }, userInfo) {
const login_name = userInfo.login_name.trim() const login_name = userInfo.login_name.trim();
const password = userInfo.password const password = userInfo.password;
// const companyID = userInfo.companyID; // const companyID = userInfo.companyID;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login(login_name, password) login(login_name, password)
.then((res) => { .then((res) => {
setToken(res.attribute['zt-token']) setToken(res.attribute.token);
setInfo(JSON.stringify(res.attribute.userInfo)) setInfo(JSON.stringify(res.attribute.userInfo));
commit('SET_TOKEN', res.attribute.token) commit("SET_TOKEN", res.attribute.token);
commit('SET_INFO', res.attribute.userInfo) commit("SET_INFO", res.attribute.userInfo);
resolve() resolve();
}) })
.catch((error) => { .catch((error) => {
commit('LogOut') reject(error);
reject(error) });
});
})
})
}, },
// 获取用户信息 // 获取用户信息
@ -84,53 +74,52 @@ const user = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo() getInfo()
.then((res) => { .then((res) => {
const user = res.user const user = res.user;
const avatar = const avatar =
user.avatar == '' || user.avatar == null user.avatar == "" || user.avatar == null
? require('@/assets/images/profile.jpg') ? require("@/assets/images/profile.jpg")
: process.env.VUE_APP_BASE_API + user.avatar : process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) { if (res.roles && res.roles.length > 0) {
// 验证返回的roles是否是一个非空数组 // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles) commit("SET_ROLES", res.roles);
commit('SET_PERMISSIONS', res.permissions) commit("SET_PERMISSIONS", res.permissions);
} else { } else {
commit('SET_ROLES', ['ROLE_DEFAULT']) commit("SET_ROLES", ["ROLE_DEFAULT"]);
} }
commit('SET_NAME', user.userName) commit("SET_NAME", user.userName);
commit('SET_AVATAR', avatar) commit("SET_AVATAR", avatar);
resolve(res) resolve(res);
}) })
.catch((error) => { .catch((error) => {
reject(error) reject(error);
}) });
}) });
}, },
// 退出系统 // 退出系统
LogOut({ commit, state }) { LogOut({ commit, state }) {
console.log('触发推出')
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
commit('SET_TOKEN', '') commit("SET_TOKEN", "");
commit('SET_ROLES', []) commit("SET_ROLES", []);
commit('SET_PERMISSIONS', []) commit("SET_PERMISSIONS", []);
commit('SET_COMPANYID_LIST_All', []) commit("SET_COMPANYID_LIST_All", []);
removeToken() removeToken();
removeInfo() removeInfo();
removeCompanyId() removeCompanyId();
resolve() resolve();
}) });
}, },
// 前端 登出 // 前端 登出
FedLogOut({ commit }) { FedLogOut({ commit }) {
return new Promise((resolve) => { return new Promise((resolve) => {
commit('SET_TOKEN', '') commit("SET_TOKEN", "");
removeToken() removeToken();
removeInfo() removeInfo();
resolve() resolve();
}) });
} },
} },
} };
export default user export default user;

View File

@ -3,7 +3,6 @@ import Cookies from 'js-cookie'
const TokenKey = 'zhongtai-Token' const TokenKey = 'zhongtai-Token'
const InfoKey = 'zhongtai-Info' const InfoKey = 'zhongtai-Info'
const CompanyId = 'Company-Id' const CompanyId = 'Company-Id'
const MenuNode = 'Menu-Node'
export function getToken() { export function getToken() {
return Cookies.get(TokenKey) return Cookies.get(TokenKey)
@ -43,15 +42,3 @@ export function setCompanyId(info) {
export function removeCompanyId() { export function removeCompanyId() {
return Cookies.remove(CompanyId) return Cookies.remove(CompanyId)
} }
export function getMenuNode() {
return Cookies.get(MenuNode)
}
export function setMenuNode(info) {
return Cookies.set(MenuNode, info)
}
export function removeMenuNode() {
return Cookies.remove(MenuNode)
}

View File

@ -3,7 +3,7 @@ import {
} from 'element-ui' } from 'element-ui'
let appLoading let appLoading
export function openLoading(loadingName='加载中') { export function openLoading(loadingName) {
let loadingText let loadingText
switch (loadingName) { switch (loadingName) {
case 'submit': case 'submit':
@ -21,12 +21,6 @@ export function openLoading(loadingName='加载中') {
case 'del': case 'del':
loadingText = '删除' loadingText = '删除'
break; break;
case 'test':
loadingText = '校验数据'
break;
default:
loadingText = loadingName
break;
} }
appLoading = Loading.service({ appLoading = Loading.service({
text: "正在" + loadingText + ",请稍候", text: "正在" + loadingText + ",请稍候",
@ -36,7 +30,7 @@ export function openLoading(loadingName='加载中') {
}) })
setTimeout(() => { setTimeout(() => {
appLoading.close(); appLoading.close();
}, 1000000) }, 10000)
} }
export function closeLoading() { export function closeLoading() {
if (appLoading) { if (appLoading) {

View File

@ -1,47 +1,44 @@
import axios from 'axios' import axios from "axios";
import { import {
Notification, Notification,
MessageBox, MessageBox,
Message, Message,
Loading Loading
} from 'element-ui' } from "element-ui";
import store from '@/store' import store from "@/store";
import { import {
getToken, getToken,
setMenuNode,
setToken, setToken,
removeCompanyId, removeCompanyId,
removeToken, removeToken,
removeInfo removeInfo,
} from '@/utils/auth' } from "@/utils/auth";
import errorCode from '@/utils/errorCode' import errorCode from "@/utils/errorCode";
import { import {
tansParams, tansParams,
blobValidate blobValidate
} from '@/utils/ruoyi' } from "@/utils/ruoyi";
import { closeLoading, openLoading } from '@/utils/loading' import { closeLoading, openLoading } from '@/utils/loading'
import cache from '@/plugins/cache' import cache from "@/plugins/cache";
import { import {
saveAs saveAs
} from 'file-saver' } from "file-saver";
import route from '../router/index' import route from "../router/index";
// import configKey from '@/assets/js/configKey.js' // import configKey from '@/assets/js/configKey.js'
let downloadLoadingInstance let downloadLoadingInstance;
let downloadLoadingAxios let downloadLoadingAxios;
// 是否显示重新登录 // 是否显示重新登录
export let isRelogin = { export let isRelogin = {
show: false show: false,
} };
let timer = null let timer = null;
// 是否正在刷新的标记 // 是否正在刷新的标记
let isRefreshing = false let isRefreshing = false;
//重试队列 //重试队列
let requests = [] let requests = [];
// 在模块作用域定义一个全局标志变量
let isHandlingTokenInvalid = false
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分 // axios中请求配置有baseURL选项表示请求URL公共部分
@ -49,8 +46,8 @@ const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// baseURL: "http://192.168.2.240:8066/", // baseURL: "http://192.168.2.240:8066/",
// 超时 // 超时
timeout: 2 * 60 * 1000 timeout: 2 * 60 * 1000,
}) });
// request拦截器 // request拦截器
service.interceptors.request.use( service.interceptors.request.use(
@ -59,13 +56,13 @@ service.interceptors.request.use(
// config.headers['secretkey'] = 'aQ+b2wGj1LuhR8N2O0aOmKlkjgnOyHSlZ0QUtZMP3dHkVkAGhJe37KOdmpexsE6W' //本机密钥 // config.headers['secretkey'] = 'aQ+b2wGj1LuhR8N2O0aOmKlkjgnOyHSlZ0QUtZMP3dHkVkAGhJe37KOdmpexsE6W' //本机密钥
// config.headers['secretkey'] = 'm/Ah8KQ6IfWEv85KEoaHKf4SfwtemYtGkiuBabkQCnOuJ/+nyvqBLOVheirHN1TO' //本机密钥 // config.headers['secretkey'] = 'm/Ah8KQ6IfWEv85KEoaHKf4SfwtemYtGkiuBabkQCnOuJ/+nyvqBLOVheirHN1TO' //本机密钥
config.headers['secretkey'] = configKey.secretkey config.headers["secretkey"] = configKey.secretkey;
// if (store.getters.token) { // if (store.getters.token) {
// if (window.localStorage.userToken) { // if (window.localStorage.userToken) {
let token = getToken() let token = getToken();
if (token) { if (token) {
config.headers['zt-token'] = token config.headers["token"] = token;
} }
if (config.url.indexOf('updateDto') != -1 || config.url.indexOf('saveDto') != -1) { if (config.url.indexOf('updateDto') != -1 || config.url.indexOf('saveDto') != -1) {
@ -79,145 +76,120 @@ service.interceptors.request.use(
} }
// 生成请求的唯一标识符 // 生成请求的唯一标识符
const requestIdentifier = `${config.url}-${config.method}` const requestIdentifier = `${config.url}-${config.method}`;
// 判断是否已存在相同的请求 // 判断是否已存在相同的请求
const isDuplicateRequest = requests.includes(requestIdentifier) const isDuplicateRequest = requests.includes(requestIdentifier);
// 如果存在相同请求,取消当前请求 // 如果存在相同请求,取消当前请求
if (isDuplicateRequest) { if (isDuplicateRequest) {
// return Promise.reject(new Error("Duplicate request")); // return Promise.reject(new Error("Duplicate request"));
} }
// 将请求的唯一标识符添加到请求队列中 // 将请求的唯一标识符添加到请求队列中
requests.push(requestIdentifier) requests.push(requestIdentifier);
// 设置计时器,在秒后移除请求的唯一标识符 // 设置计时器,在秒后移除请求的唯一标识符
clearTimeout(timer) clearTimeout(timer);
timer = setTimeout(() => { timer = setTimeout(() => {
const index = requests.indexOf(requestIdentifier) const index = requests.indexOf(requestIdentifier);
if (index !== -1) { if (index !== -1) {
requests.splice(index, 1) // 移除请求的唯一标识符 requests.splice(index, 1); // 移除请求的唯一标识符
} }
}, 2000) }, 2000);
return config return config;
}, },
(error) => { (error) => {
// do something with request error // do something with request error
// 请求发生错误时清除唯一标识符 // 请求发生错误时清除唯一标识符
const requestIdentifier = `${error.config.url}-${error.config.method}` const requestIdentifier = `${error.config.url}-${error.config.method}`;
const index = requests.indexOf(requestIdentifier) const index = requests.indexOf(requestIdentifier);
if (index !== -1) { if (index !== -1) {
requests.splice(index, 1) // 清除唯一标识符 requests.splice(index, 1); // 清除唯一标识符
} }
return Promise.reject(error) return Promise.reject(error);
} }
) );
// 响应拦截器 // 响应拦截器
service.interceptors.response.use( service.interceptors.response.use(
(res) => { (res) => {
// 请求完成时清除唯一标识符 // 请求完成时清除唯一标识符
const requestIdentifier = `${res.config.url}-${res.config.method}` const requestIdentifier = `${res.config.url}-${res.config.method}`;
const index = requests.indexOf(requestIdentifier) const index = requests.indexOf(requestIdentifier);
if (index !== -1) { if (index !== -1) {
requests.splice(index, 1) // 清除唯一标识符 requests.splice(index, 1); // 清除唯一标识符
} }
// downloadLoadingAxios.close() // downloadLoadingAxios.close()
// 未设置状态码则默认成功状态 // 未设置状态码则默认成功状态
const code = res.data.status || '200' const code = res.data.status || '200';
// 获取错误信息 // 获取错误信息
const msg = res.data.msg const msg = res.data.msg;
closeLoading() closeLoading();
// 二进制数据则直接返回 // 二进制数据则直接返回
if ( if (
res.request.responseType === 'blob' || res.request.responseType === "blob" ||
res.request.responseType === 'arraybuffer' res.request.responseType === "arraybuffer"
) { ) {
return res.data return res.data;
} }
if (code === '500') { if (code === '500') {
// 判断是否在处理 token 无效情况 MessageBox.confirm(msg, "系统提示", {
if (msg === 'zt-token无效' && isHandlingTokenInvalid) return confirmButtonText: "确定",
if (msg === 'zt-token无效' && !isHandlingTokenInvalid) {
isHandlingTokenInvalid = true;
MessageBox.confirm('登录失效!请重新登录。', '系统提示', {
confirmButtonText: '确定',
showCancelButton: false, showCancelButton: false,
showClose: false, showClose: false,
closeOnClickModal: false, closeOnClickModal: false,
closeOnPressEscape: false, closeOnPressEscape: false,
type: 'error' type: "error",
}) })
.then(() => { .then(() => {
store.commit("REMOVE_ROUTER"); if (msg === 'token无效') {
store.dispatch("tagsView/delAllViews");
setMenuNode("/index");
store.commit("SET_CURRENT_MENU_NODE", "/index");
store.dispatch('LogOut').then(() => { store.dispatch('LogOut').then(() => {
route.replace({ route.replace({
path: '/login' path: "/login"
}); });;
// 重置标志变量
isHandlingTokenInvalid = false;
});
}) })
.catch(() => {
// 处理取消逻辑
isHandlingTokenInvalid = false;
});
} else {
// 其他错误处理
MessageBox.confirm(msg, '系统提示', {
confirmButtonText: '确定',
showCancelButton: false,
showClose: false,
closeOnClickModal: false,
closeOnPressEscape: false,
type: 'error'
});
} }
})
.catch(() => { });
return Promise.reject(new Error(msg)); return Promise.reject(new Error(msg));
} else if (code == '1002') { } else if (code == '1002') {
MessageBox.confirm(msg, '系统提示', { MessageBox.confirm(msg, "系统提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
showCancelButton: false, showCancelButton: false,
showClose: false, showClose: false,
closeOnClickModal: false, closeOnClickModal: false,
closeOnPressEscape: false, closeOnPressEscape: false,
type: 'error' type: "error",
}) })
.then(() => { .then(() => {
store.dispatch('LogOut').then(() => { store.dispatch('LogOut').then(() => {
route.replace({ route.replace({
path: '/login' path: "/login"
}) });;
}) })
}) })
.catch(() => { .catch(() => { });
})
} else if (code !== '200') { } else if (code !== '200') {
MessageBox.confirm(msg, '系统提示', { MessageBox.confirm(msg, "系统提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
showCancelButton: false, showCancelButton: false,
showClose: false, showClose: false,
closeOnClickModal: false, closeOnClickModal: false,
closeOnPressEscape: false, closeOnPressEscape: false,
type: 'error' type: "error",
}) })
.then(() => { .then(() => { })
}) .catch(() => { });
.catch(() => { return Promise.reject("error");
})
return Promise.reject('error')
} else { } else {
return res.data return res.data;
} }
}, },
(error) => { (error) => {
let response = error.response let response = error.response;
closeLoading() closeLoading();
// downloadLoadingAxios.close() // downloadLoadingAxios.close()
// if (response.status == 401) { // if (response.status == 401) {
// if (response.data.code == 1002) { // if (response.data.code == 1002) {
@ -279,48 +251,48 @@ service.interceptors.response.use(
// .catch(() => {}); // .catch(() => {});
// } // }
return Promise.reject(error) return Promise.reject(error);
} }
) );
// 通用下载方法 // 通用下载方法
export function download(url, params, filename, config) { export function download(url, params, filename, config) {
downloadLoadingInstance = Loading.service({ downloadLoadingInstance = Loading.service({
text: '正在下载数据,请稍候', text: "正在下载数据,请稍候",
spinner: 'el-icon-loading', spinner: "el-icon-loading",
background: 'rgba(0, 0, 0, 0.7)' background: "rgba(0, 0, 0, 0.7)",
}) });
return service return service
.post(url, params, { .post(url, params, {
transformRequest: [ transformRequest: [
(params) => { (params) => {
return tansParams(params) return tansParams(params);
} },
], ],
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' "Content-Type": "application/x-www-form-urlencoded",
}, },
responseType: 'blob', responseType: "blob",
...config ...config,
}) })
.then(async (data) => { .then(async (data) => {
const isLogin = await blobValidate(data) const isLogin = await blobValidate(data);
if (isLogin) { if (isLogin) {
const blob = new Blob([data]) const blob = new Blob([data]);
saveAs(blob, filename) saveAs(blob, filename);
} else { } else {
const resText = await data.text() const resText = await data.text();
const rspObj = JSON.parse(resText) const rspObj = JSON.parse(resText);
const errMsg = const errMsg =
errorCode[rspObj.code] || rspObj.msg || errorCode['default'] errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
Message.error(errMsg) Message.error(errMsg);
} }
downloadLoadingInstance.close() downloadLoadingInstance.close();
}) })
.catch((r) => { .catch((r) => {
Message.error('下载文件出现错误,请联系管理员!') Message.error("下载文件出现错误,请联系管理员!");
downloadLoadingInstance.close() downloadLoadingInstance.close();
}) });
} }
export default service export default service;

Some files were not shown because too many files have changed in this diff Show More