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.
'plugins': ['dynamic-import-node']
}
},
"compact": false
}
}

BIN
dist.zip

Binary file not shown.

View File

@ -39,9 +39,7 @@
"-": "^0.0.1",
"@babel/parser": "^7.7.4",
"@riophae/vue-treeselect": "0.4.0",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^1.0.2",
"axios": "^0.24.0",
"axios": "0.24.0",
"babel-polyfill": "^6.26.0",
"clipboard": "2.0.8",
"crypto-js": "^4.1.1",
@ -76,7 +74,7 @@
"vue-meta": "2.4.0",
"vue-quill-editor": "^3.0.6",
"vue-router": "3.4.9",
"vuedraggable": "^2.24.3",
"vuedraggable": "2.24.3",
"vuex": "3.6.0",
"xlsx": "^0.17.0"
},
@ -91,7 +89,6 @@
"connect": "3.6.6",
"eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0",
"html-webpack-plugin": "^5.6.0",
"lint-staged": "10.5.3",
"runjs": "4.4.2",
"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.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;

View File

@ -54,234 +54,6 @@
<div class="content unicode" style="display: block;">
<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">
<span class="icon iconfont">&#xe642;</span>
<div class="name">菜单/列表</div>
@ -420,9 +192,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1719799268815') format('woff2'),
url('iconfont.woff?t=1719799268815') format('woff'),
url('iconfont.ttf?t=1719799268815') format('truetype');
src: url('iconfont.woff2?t=1696663877393') format('woff2'),
url('iconfont.woff?t=1696663877393') format('woff'),
url('iconfont.ttf?t=1696663877393') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -448,348 +220,6 @@
<div class="content font-class">
<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">
<span class="icon iconfont icon-caidan"></span>
<div class="name">
@ -997,310 +427,6 @@
<div class="content symbol">
<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">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-caidan"></use>

View File

@ -13,158 +13,6 @@
-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 {
content: "\e642";
}

File diff suppressed because one or more lines are too long

View File

@ -5,272 +5,6 @@
"css_prefix_text": "icon-",
"description": "",
"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",
"name": "菜单/列表",

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -13,42 +13,41 @@
</template>
<script>
import { setTheme } from '@/utils/setTheme'
import { setTheme } from "@/utils/setTheme";
export default {
name: 'App',
name: "App",
data() {
return {
chalk: '', // content of theme-chalk css
theme: '',
routerAlive: true
}
chalk: "", // content of theme-chalk css
theme: "",
routerAlive: true,
};
},
provide() {
return {
routerRefresh: this.routerRefresh
}
routerRefresh: this.routerRefresh,
};
},
mounted() {
setTheme(this.$store.state.settings.theme)
setTheme(this.$store.state.settings.theme);
window.addEventListener(
'hashchange',
"hashchange",
() => {
let currentPath = window.location.hash.slice(1)
let currentPath = window.location.hash.slice(1);
if (this.$route.path !== currentPath) {
this.$router.push(currentPath)
this.$router.push(currentPath);
}
},
false
)
);
},
methods: {
routerRefresh() {
this.routerAlive = false
this.routerAlive = false;
this.$nextTick(() => {
this.routerAlive = true
})
}
this.routerAlive = true;
});
},
},
metaInfo() {
return {
@ -58,27 +57,26 @@ export default {
titleTemplate: (title) => {
return title
? `${title} - ${process.env.VUE_APP_TITLE}`
: process.env.VUE_APP_TITLE
}
}
: process.env.VUE_APP_TITLE;
},
};
},
activated() {
// 使 Vue.nextTick
this.$nextTick(() => {
})
});
},
deactivated() {
// 使 Vue.nextTick
this.$nextTick(() => {
})
}
}
});
},
};
</script>
<style lang="scss">
.loadingclass {
.loadingclass {
z-index: 9999999 !important;
}
}
//
::-webkit-scrollbar {
width: 5px;
@ -107,124 +105,63 @@ export default {
}
</style>
<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 {
border-radius: 10px !important;
background: #f7f7f7 !important;
}
.el-button--primary {
background-color: #3877f5 !important;
.el-table__body-wrapper {
// border-radius: 15px !important;
// margin-top: 5px;
}
.el-table__body {
padding-top: 5px;
}
.el-table {
width: 100%;
margin-bottom: 20px;
&::before {
display: none;
}
.el-table__body {
//-webkit-border-horizontal-spacing: 13px; //
-webkit-border-vertical-spacing: 7px; //
}
//
thead th {
font-size: 14px;
color: #575757;
&:nth-last-child(2) {
border-right: 1px solid rgba(0, 0, 0, 0.1) !important;
border-radius: 0 5px 5px 0;
right: 1px;
}
}
thead th,
.el-table__row td {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
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;
background: #fff;
&: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: 10px 0 0 10px;
}
}
.el-table__row > td {
font-size: 12px;
color: #333333;
&: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 10px 10px 0;
right: 1px;
}
}
.el-table__body tr:hover > td.el-table__cell {
background-color: rgba(0, 110, 255, 0.05);
}
.el-table__fixed::before {
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 = {
loginCode:login_name,
password,
}
return request({
url: 'kangarooDataCenterV3/entranceController/option',

View File

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

View File

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

View File

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

View File

@ -3342,6 +3342,7 @@
.custom-theme .el-radio-group {
display: inline-block;
line-height: 1;
vertical-align: middle;
font-size: 0
}
@ -3354,6 +3355,7 @@
.custom-theme .el-radio-button__inner {
display: inline-block;
line-height: 1;
white-space: nowrap;
vertical-align: middle;
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.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;

View File

@ -54,234 +54,6 @@
<div class="content unicode" style="display: block;">
<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">
<span class="icon iconfont">&#xe642;</span>
<div class="name">菜单/列表</div>
@ -420,9 +192,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1719799268815') format('woff2'),
url('iconfont.woff?t=1719799268815') format('woff'),
url('iconfont.ttf?t=1719799268815') format('truetype');
src: url('iconfont.woff2?t=1696663877393') format('woff2'),
url('iconfont.woff?t=1696663877393') format('woff'),
url('iconfont.ttf?t=1696663877393') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -448,348 +220,6 @@
<div class="content font-class">
<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">
<span class="icon iconfont icon-caidan"></span>
<div class="name">
@ -997,310 +427,6 @@
<div class="content symbol">
<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">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-caidan"></use>

View File

@ -13,158 +13,6 @@
-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 {
content: "\e642";
}

File diff suppressed because one or more lines are too long

View File

@ -5,272 +5,6 @@
"css_prefix_text": "icon-",
"description": "",
"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",
"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"
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>
<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>

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"
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>
<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>

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"
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>
<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>

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

View File

@ -214,4 +214,5 @@ aside {
right: 10px !important;
}
.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">
<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
>
</template>
@ -19,7 +19,7 @@
: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>
</template>
</el-submenu>

View File

@ -6,101 +6,20 @@
<template>
<!-- 权限设置弹框 -->
<!-- :style="{'margin':isCenter?'auto':''}"> -->
<div style="height: 100%">
<div flex="cross:center" v-if="filterShow" style="margin-bottom: 5px">
<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 v-loading="treeLoading" flex style="margin:auto;height: 100%;">
<div class="menu-i" flex="cross:center main:center">
<div class="menu-i-t" flex="cross:top main:justify">
<el-tree
:data="menuData"
:check-strictly="true"
:default-checked-keys="selectData"
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 :data="menuData" :check-strictly="true" :default-checked-keys="selectData"
@node-click="handleNodeClick" :expand-on-click-node="false" :default-expand-all="expandAll"
:key="new Date().getTime()" :props="treeProps" style="width: 100%;background-color:white;height: 100%;"
@check-change="checkChange" node-key="id" ref="elTree" :show-checkbox="showCheckbox">
</el-tree>
<div @click="changePcAll" class="checkText" v-if="Allshow">全选</div>
</div>
</div>
<div flex="cross:center main:center" style="width: 100%" v-if="isSaveBtn">
<el-button style="width: 40%" type="primary" @click="saveMenuUser"
>保存
</el-button>
</div>
<div flex="cross:center main:center" style="width:100%" v-if="isSaveBtn">
<el-button style="width:40%" type="primary" @click="saveMenuUser">保存</el-button>
</div>
</div>
</template>
@ -111,103 +30,45 @@ export default {
//
expandAll: {
type: Boolean,
default: true,
},
//
treeButton: {
type: Boolean,
default: false,
},
//
filterButtonShow: {
type: Boolean,
default: false,
default: true
},
//
isSaveBtn: {
type: Boolean,
default: false,
default: false
},
//
Allshow: {
type: Boolean,
default: false,
default: false
},
//
showCheckbox: {
type: Boolean,
default: false,
default: false
},
//
isCenter: {
type: Boolean,
default: true,
},
//
filterShow: {
type: Boolean,
default: false,
default: true
},
menuData: {
type: Array,
default: () => {
return [];
},
return []
}
},
setting: {
type: Boolean,
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);
default: false
},
},
data() {
return {
filterText: "",
theme: "",
theme: '',
powerDlog: false,
//
// menuData: [],
// ids
selectData: [],
//
@ -215,75 +76,52 @@ export default {
// label: 'menuName',
// children: 'id',
// },
// treeProps: {
// children: 'children',
// label: 'label'
// },
treeProps: {
children: 'children',
label: 'label'
},
// PC
checkedAllPc: false,
//
outing: false,
};
treeLoading: false,
}
},
created() { },
mounted() {
},
created() {},
mounted() {},
computed: {
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: {
//
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) {
el.active = !el.active;
this.$forceUpdate();
el.active = !el.active
this.$forceUpdate()
},
setData(id) {
this.selectData.push(id);
this.selectData.push(id)
},
saveMenuUser() {
let allKeys = this.getKey();
this.$emit("onSaveMenu", allKeys);
this.$emit('onSaveMenu', allKeys);
},
// key
getKey() {
return this.$refs.elTree.getCheckedKeys();
return this.$refs.elTree.getCheckedKeys()
},
//
initData() {
@ -295,15 +133,15 @@ export default {
},
//
handleClose() {
this.powerDlog = false;
this.initData();
this.powerDlog = false
this.initData()
},
//
changePcAll() {
this.checkedAllPc = !this.checkedAllPc;
let selectData = [];
if (this.checkedAllPc) {
selectData = this.cycleData(this.menuData);
selectData = this.cycleData(this.menuData)
}
this.selectData = selectData;
},
@ -319,42 +157,39 @@ export default {
function cycle(data) {
if (!data || data.length == 0) {
return false;
return false
} else {
for (var i = 0, len = data.length; i < len; i++) {
let item = data[i];
let item = data[i]
if (isSelect && item.selected == 1) {
newData.push(item.id);
newData.push(item.id)
}
if (!isSelect) {
newData.push(item.id);
newData.push(item.id)
}
cycle(item.id);
cycle(item.id)
}
}
}
cycle(outData);
return newData;
cycle(outData)
return newData
},
getData(childIds) {
let newData = [];
function cycle(data) {
data.forEach((el) => {
childIds.forEach((item) => {
data.forEach(el => {
childIds.forEach(item => {
if (el.id == item) {
newData.push(el);
newData.push(el)
}
});
})
if (el.children != null && el.children && el.children.length) {
cycle(el.children, childIds);
cycle(el.children, childIds)
}
});
})
}
cycle(this.menuData, childIds);
return newData;
cycle(this.menuData, childIds)
return newData
},
/**
* @description 节点选中状态发生变化时的回调
@ -364,54 +199,48 @@ export default {
* @param { Boolean } checked 当前节点是否选中
*/
checkChange(nodeDode, checked) {
let getHalfCheckedKeys = this.$refs.elTree
.getCheckedKeys()
.concat(this.$refs.elTree.getHalfCheckedKeys());
let getHalfCheckedKeys = this.$refs.elTree.getCheckedKeys().concat(this.$refs.elTree.getHalfCheckedKeys())
// let getHalfCheckedKeys = this.$refs.elTree.getHalfCheckedKeys()
let childIds =
getHalfCheckedKeys.length != 0 ? getHalfCheckedKeys : this.selectData;
let checkdata = this.getData(childIds);
this.$emit("checkChange", childIds, checkdata);
return;
let childIds = getHalfCheckedKeys.length != 0 ? getHalfCheckedKeys : this.selectData
let checkdata = this.getData(childIds)
this.$emit('checkChange', childIds, checkdata)
return
let id = nodeDode.id;
// let childIds = this.cycleData(id)
console.log(id)
//
childIds.forEach((item) => {
this.$refs.elTree.setChecked(item, checked);
});
childIds.forEach(item => {
this.$refs.elTree.setChecked(item, checked)
})
},
//
handleNodeClick(data, b, c) {
this.$emit("handleNodeClick", data, b, c);
handleNodeClick(data) {
this.$emit('handleNodeClick', data);
},
},
};
}
}
</script>
<style lang="scss">
// $activeColor:val(--activeColor, "#00aaff");
.nowrap {
/*让长段文本不换行*/
white-space: nowrap;
/*设置文本超出元素宽度部分隐藏*/
overflow-x: hidden;
/*设置文本超出部分用省略号显示*/
text-overflow: ellipsis;
}
.el-tree-node__content {
height: 32px !important;
}
.el-tree-node__label {
// font-size: 16px !important;
font-size: 14px !important;
margin-left: 4px;
}
.el-tree-node__content > label.el-checkbox {
.el-tree-node__content>label.el-checkbox {
transform: scale(1.3);
}
.el-tree-node__content > .el-tree-node__expand-icon {
.el-tree-node__content>.el-tree-node__expand-icon {
font-size: 18px;
}
@ -424,31 +253,9 @@ export default {
}
</style>
<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 {
width: 100%;
// margin-bottom: 24px;
height: 100%;
&-f {
color: #52575a;
@ -459,10 +266,10 @@ export default {
&-t {
width: 100%;
height: 100%;
// height: 450px;
// 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;
&:hover {
color: #ecf5ff;
color: #4570fc;
}
}
</style>

View File

@ -9,7 +9,7 @@
<el-button type="primary" @click="handleReset" v-if="resetButton"> </el-button>
<el-button @click="handleClose"> </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>
</el-dialog>
</div>
@ -86,11 +86,6 @@ export default {
width: {
type: String,
default: '30%',
},
//
submitButton: {
type: Boolean,
default: true,
},
},
data() {

View File

@ -2,44 +2,38 @@
<div flex>
<div class="treeBody" v-if="menuData.length > 0">
<base-tree ref="baseTree" :isCenter="false" :isSaveBtn="false" :Allshow="false" :showCheckbox="false"
:menuData="menuData" @handleNodeClick="handleNodeClick"
>
:menuData="menuData" @handleNodeClick="handleNodeClick">
</base-tree>
</div>
<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>
<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"
:tableData="tableData" :tableColumn="tableColumn" :funData="[]" @onCellClick="getCell"
:tableHeight="tableHeightLog"
@onSelectionChange="getSelect" :highlightCurrent="true" @radioChange="radioChange"
>
:tableData="tableData" :tableColumn="tableColumn" :funData="[]" @onCellClick="getCell" :tableHeight="tableHeightLog"
@onSelectionChange="getSelect" :highlightCurrent="true" @radioChange="radioChange">
<!-- 单选 -->
<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>
</base-table>
<base-page :pageModel.sync="pageModel" @onPageChange="pageChange" :pageSizesList="[10 , 20, 80, 100, 150]"
v-if="pageShow"
></base-page>
<base-page :pageModel.sync="pageModel" @onPageChange="pageChange" :pageSizesList='[10 , 20, 80, 100, 150]'></base-page>
</div>
</div>
</template>
<script>
import baseTable from '@/components/base/baseTable'
import baseLayout from '@/components/base/baseLayout'
import baseJurisdiction from '@/components/base/baseJurisdiction/index.vue'
import baseTree from '@/components/base/BaseMenuTree/index.vue'
import basePage from '@/components/base/basePage'
import configData from './configData'
export default {
name: 'review',
import baseTable from "@/components/base/baseTable";
import baseLayout from "@/components/base/baseLayout";
import baseJurisdiction from "@/components/base/baseJurisdiction/index.vue";
import baseTree from "@/components/base/BaseMenuTree/index.vue";
import basePage from '@/components/base/basePage'
import configData from "./configData";
export default {
name: "review",
components: {
baseLayout,
baseTable,
@ -59,42 +53,32 @@ export default {
},
tableColumn: {
type: Array,
default() {
default () {
return []
}
},
},
menuData: {
type: Array,
default() {
default () {
return []
}
},
},
tableData: {
type: Array,
default() {
default () {
return []
}
},
pageShow: {
type: Boolean,
default: true
},
showSearch: {
type: Boolean,
default: false
},
},
watch: {
choiceDialog: {
deep: true, // true
handler: function(newV, oldV) {
if (this.choiceDialog) {
if(this.choiceDialog){
this.reset()
}
}
}
},
},
data() {
return {
@ -104,7 +88,7 @@ export default {
pageModel: {
total: 0,
page: 1,
limit: 10
limit: 10,
},
write: '',
nowBtns: [{
@ -114,8 +98,8 @@ export default {
tabLoading: false,
selectTable: [], //
settingsDialog: false,
settingCenter: 'left',
tableHeightLog: 'calc(100vh - 416px)'
settingCenter: "left",
tableHeightLog: "calc(100vh - 416px)",
}
},
computed: {
@ -140,8 +124,7 @@ export default {
goInfo(type = 1, id) {
},
getElSelect(event, index, indexItem, param) {
},
getElSelect(event, index, indexItem, param) {},
//
getFuncBtn(btnEven) {
console.log(btnEven)
@ -157,7 +140,7 @@ export default {
handleNodeClick(data) {
this.organizationForm = {
o_OrganCode: data.o_OrganCode,
ParentOrganName: data.label
ParentOrganName: data.label,
}
this.propvalue = data.label
this.optionData = ''
@ -166,24 +149,19 @@ export default {
},
//
pageChange() {
let pageModel ={
page: this.pageModel.pageIndex ? this.pageModel.pageIndex : 1,
limit: this.pageModel.pageSize? this.pageModel.pageSize : 10
}
this.$emit('onQuery', this.mergeParam(), pageModel)
this.$emit('onQuery', this.mergeParam())
},
mergeParam(state) {
if (state) {
this.pageModel.page = 1
this.pageModel.page = 1;
}
let page = {
page: this.pageModel.page,
limit: this.pageModel.limit
limit: this.pageModel.limit,
}
for (let i in this.model) {
if (!this.model[i]) {
this.model[i] = null
this.model[i] = null;
}
}
let search = Object.assign({}, page, this.model)
@ -195,7 +173,7 @@ export default {
},
//
search() {
this.$emit('getTableList', this.write)
this.$emit('getTableList', this.write);
},
radioChange(val) {
this.optionData = val
@ -208,25 +186,25 @@ export default {
},
mounted() {
// this.$refs.choice.reset()
}
},
}
}
</script>
<style scoped>
.treeBody {
.treeBody {
background-color: #f2f3f4;
width: 25%;
margin-top: 10px;
height: calc(100vh - 360px);
overflow-y: auto;
}
}
/* >>>.el-table__body-wrapper {
/* >>>.el-table__body-wrapper {
height: 300px !important;
} */
} */
.app-container {
.app-container {
height: calc(100% - 52px);
}
}
</style>

View File

@ -72,16 +72,6 @@
<!-- 搜索 -->
<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">
<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%"
:placeholder="!row.placeholder ? '请输入' : row.placeholder" v-if="row.tag === 'elInput'" min="1">
</el-input>
@ -111,10 +101,8 @@
<i class="el-icon-circle-close" v-if="!row.disabled && ruleForm[row.prop]" @click="elDialogClear(row)"
style="margin-left: 10px"></i>
</div>
<el-select v-model="ruleForm[row.prop]" filterable style="width: 100%" :multiple="row.multiple?row.multiple:false"
:collapse-tags="true"
@change="selectChange($event, indexRow, indexRow, row)"
:clearable="row.clearable ? row.clearable : true"
<el-select v-model="ruleForm[row.prop]" filterable style="width: 100%"
@change="selectChange($event, indexRow, indexRow, row)" :clearable="row.clearable ? row.clearable : true"
: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]"
:label="!row.optionLabel ? el['label'] : el[row.optionLabel]"
@ -336,7 +324,7 @@ export default {
pageModel: {
total: 0,
pageIndex: 1,
pageSize: 100,
pageSize: 10,
},
//
clearState: 0,
@ -366,11 +354,6 @@ export default {
// }
},
methods: {
handleSelectChange(row,value) {
this.ruleForm[row.prop]=value
console.log("Selected value:"+value);
},
watchSize() {
const _this = this;
var erd = elementResizeDetectorMaker();
@ -562,7 +545,7 @@ export default {
},
refresh() {
this.ruleForm = Object.assign({}, "");
this.$emit("onQuery", this.mergeParam(true),this.ruleForm);
this.$emit("onQuery", this.mergeParam(true));
},
testEnter() {
if (this.enterClickType) {

View File

@ -5,140 +5,91 @@
-->
<template>
<el-form validate-on-rule-change :model="ruleForm" :rules="rules" label-position="top" ref="ruleForm"
label-width="100px"
>
<el-row :gutter="24" v-for="(item, index) in formRow" :key="index" :style="{marginBottom: isSence ?'0': '17px'}">
label-width="100px">
<el-row :gutter="24" v-for="(item, index) in formRow" :key="index" style="margin-bottom: 17px;">
<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;`"
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> -->
<div class="single label" v-if="row.label" slot="label"
:style="`width: ${spanWidth};` + `justify-content: ${justifyContent};`" flex
>
<span class="label" :style="{color: isSence ? '#999':'#333',fontSize: isSence ? '14px':'13px'}">{{ row.label }}</span>
:style="`width: ${spanWidth};` + `justify-content: ${justifyContent};`" flex>
<span class="label">{{ row.label }}</span>
</div>
<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"
>
<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">
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input>
<el-input v-model="ruleForm[row.prop]" clearable :disabled="row.disabled || disabled"
:rows="row.rows ? row.rows : 2" :type="row.type ? row.type : 'text'"
:maxlength="row.maxlength ? row.maxlength : ''"
<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'" :maxlength="row.maxlength ? row.maxlength : ''"
:placeholder="!row.placeholder ? '请输入' : row.placeholder" v-if="row.tag === 'elInput'"
@blur="searchByStationName(row.prop)" min="1" @input="row.rules ? integerNumber(row) : ''"
@change="row.changeRemind?changeRemind(row):''"
>
@blur="searchByStationName(row.prop)" min="1" @input="row.rules ? integerNumber(row) : ''">
</el-input>
<el-input-number v-if="row.tag === 'elInputNumber'" v-model="ruleForm[row.prop]" style="width: 100%;"
:disabled="row.disabled ? row.disabled : false"
:precision="row.precisionNum ? row.precisionNum : 0"
<el-input-number v-if="row.tag === 'elInputNumber'" v-model="ruleForm[row.prop]"style="width: 100%;"
:disabled="row.disabled ? row.disabled : false" :precision="row.precisionNum ? row.precisionNum : 0"
:step="row.stepNum ? row.stepNum : 1" @change="handleChange" :min="0"
:max="row.maxNum ? row.maxNum : 99999"
:label="!row.placeholder ? '描述文字' : row.placeholder"
></el-input-number>
:label="!row.placeholder ? '描述文字' : row.placeholder"></el-input-number>
<!-- <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;">
</div> -->
<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"
: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-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"
:value-format="!row.valueFormat ? 'yyyy-MM-dd' : row.valueFormat" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" :type="!row.type ? 'date' : row.type"
:placeholder="!row.placeholder ? '请选择' : row.placeholder"
>
:placeholder="!row.placeholder ? '请选择' : row.placeholder">
</el-date-picker>
<el-radio-group v-model="ruleForm[row.prop]" v-if="row.tag === 'elRadio'"
@input="changeRadio($event,index,indexRow,row)"
:disabled="row.disabled ? row.disabled : false"
>
<el-radio-group v-model="ruleForm[row.prop]" v-if="row.tag === 'elRadio'" @input="changeRadio($event,index,indexRow,row)"
: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-group>
<div @click="elDialogClick(row, index, indexRow)" @mouseover="elDialogHover(row)"
@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' -->
<p :style="{ color: ruleForm[row.prop] ? '#000' : '#c0c4cc' }" class="showText"
@click="elDialogClick(row, index, indexRow)"
>{{
ruleForm[row.prop] ? ruleForm[row.prop] :
'请点击选择'
}}
@click="elDialogClick(row, index, indexRow)">{{ ruleForm[row.prop] ? ruleForm[row.prop] :
'请点击选择' }}
<!-- <el-input v-model="ruleForm[row.prop]"></el-input> -->
</p>
<!-- <i class="el-icon-more " v-if="row.elDialogHoverType"></i> -->
<i class="el-icon-more " @click="elDialogClick(row, index, indexRow)"
v-if="!row.disabled && !ruleForm[row.prop]"
></i>
v-if="!row.disabled && !ruleForm[row.prop]"></i>
<i class="el-icon-circle-close " v-if="!row.disabled && ruleForm[row.prop] && row.elDialogHoverType"
@click.stop="resetField(row.prop)" style="margin-left: 10px;"
></i>
@click.stop="resetField(row.prop)" style="margin-left: 10px;"></i>
</div>
<div v-if="row.tag === 'elLook'">
{{ ruleForm[row.prop] }}
</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
@change="selectChange($event, index, indexRow, row.options,row)"
:disabled="row.disabled?row.disabled:false"
@change="selectChange($event, index, indexRow, row.options)" :disabled="row.disabled?row.disabled:false"
: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"
:key="!row.optionValue ? el['value'] : el[row.optionValue]"
: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-select>
<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"
@change="selectChange($event, index, indexRow, row.options, row)"
v-if="row.tag === 'elMultiple'"
filterable
:multiple-limit="row.limit ? row.limit :0"
>
v-if="row.tag === 'elMultiple'">
<el-option v-for="el in row.options" :key="!row.optionValue ? el['value'] : el[row.optionValue]"
: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-select>
<treeselect v-if="row.tag === 'elTreeSelect'" v-model="ruleForm[row.prop]" :normalizer="normalizer"
:options="delTreeChildren(row.options)" :multiple="row.multiple?row.multiple:false"
: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>
<!-- <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> -->
@ -164,7 +115,6 @@
import {
checkMobile
} from '@/utils/util'
export default {
components: {
// uploadFile,
@ -204,12 +154,8 @@ export default {
type: Boolean,
default: true
},
isSence: {
type: Boolean,
default: false
},
formdata: {
type: Object
type: Object,
},
justifyContent: {
type: String,
@ -218,12 +164,12 @@ export default {
marginBottom: {
type: String,
default: '0'
}
},
},
data() {
return {
//
ruleForm: {}
ruleForm: {},
}
},
watch: {
@ -231,65 +177,16 @@ export default {
immediate: true, //
deep: true, //
handler(newVal, oldVal) {
this.$emit('dataChanges', newVal, oldVal)
this.$emit('dataChanges')
}
}
},
created() {
},
created() { },
mounted() {
// this.ruleForm = this.formdata
},
computed: {},
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) {
// row.rules?(v)=>()):''
// @input="(v)=>(row.row.number=v.replace(/[^\d]/g,''))"
@ -333,36 +230,36 @@ let obj = {}
if (type == 'address') {
let address = this.ruleForm[type]
let that = this
var map = new BMap.Map('container')
map.centerAndZoom(address, 18)
map.enableScrollWheelZoom() //
map.enableContinuousZoom() //
map.addControl(new BMap.NavigationControl()) //
map.addControl(new BMap.OverviewMapControl()) //
var map = new BMap.Map("container");
map.centerAndZoom(address, 18);
map.enableScrollWheelZoom(); //
map.enableContinuousZoom(); //
map.addControl(new BMap.NavigationControl()); //
map.addControl(new BMap.OverviewMapControl()); //
map.addControl(new BMap.OverviewMapControl({
isOpen: true,
anchor: BMAP_ANCHOR_BOTTOM_RIGHT
})) //
var localSearch = new BMap.LocalSearch(map)
localSearch.enableAutoViewport() //
map.clearOverlays() //
})); //
var localSearch = new BMap.LocalSearch(map);
localSearch.enableAutoViewport(); //
map.clearOverlays(); //
var keyword = address
localSearch.setSearchCompleteCallback(function(searchResult) {
var poi = searchResult.getPoi(0)
map.centerAndZoom(poi.point, 13)
localSearch.setSearchCompleteCallback(function (searchResult) {
var poi = searchResult.getPoi(0);
map.centerAndZoom(poi.point, 13);
var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point
.lat)) //
map.addOverlay(marker)
var content = keyword + '<br/><br/>经度:' + poi.point.lng + '<br/>纬度:' + poi.point.lat
.lat)); //
map.addOverlay(marker);
var content = keyword + "<br/><br/>经度:" + poi.point.lng + "<br/>纬度:" + poi.point.lat;
that.ruleForm['lng'] = poi.point.lng
that.ruleForm['lat'] = poi.point.lat
var infoWindow = new BMap.InfoWindow('<p style=\'font-size:14px;\'>' + content + '</p>')
marker.addEventListener('click', function() {
this.openInfoWindow(infoWindow)
})
var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>");
marker.addEventListener("click", function () {
this.openInfoWindow(infoWindow);
});
// marker.setAnimation(BMAP_ANIMATION_BOUNCE); //
})
localSearch.search(keyword)
});
localSearch.search(keyword);
}
},
@ -372,21 +269,21 @@ let obj = {}
},
//
getImage(imagePath) {
let licenseImg = imagePath.join(',')
let licenseImg = imagePath.join(",")
},
//
getbeforeImgList(imagePath) {
let licenseImg = imagePath.join(',')
let licenseImg = imagePath.join(",")
this.$set(this.ruleForm, 'beforeImgList', licenseImg)
},
//
getmaterialsList(imagePath) {
let licenseImg = imagePath.join(',')
let licenseImg = imagePath.join(",")
this.$set(this.ruleForm, 'materialsList', licenseImg)
},
//
getmaterialsListAfter(imagePath) {
let licenseImg = imagePath.join(',')
let licenseImg = imagePath.join(",")
this.$set(this.ruleForm, 'materialsListAfter', licenseImg)
},
revealPhoto(licenseImg) {
@ -401,12 +298,10 @@ let obj = {}
let newJson = [].concat.apply([], jsonData)
newJson.forEach(item => {
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) {
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])
})
@ -454,26 +349,23 @@ let obj = {}
resetField(field) {
if (this.ruleForm[field]) {
this.$set(this.ruleForm, field, '')
this.$refs['ruleForm'].clearValidate(field) //
this.$refs['ruleForm'].clearValidate(field); //
}
},
resetFields() {
this.choiceAssignment({})
this.$refs.ruleForm.resetFields()
this.$refs.ruleForm.resetFields();
},
// , index indexRow
selectChange(val, index, indexRow, options, row) {
selectChange(val, index, indexRow, options) {
let obj = {}
options.forEach((item) => {
if (item.value == val) {
obj = item
}
})
this.$emit('onSelect', val, index, indexRow, obj, options, this.ruleForm, row)
if (row.changeRemind) {
this.$emit('changeRemind', this.ruleForm)
}
this.$forceUpdate()
this.$emit('onSelect', val, index, indexRow, obj)
this.$forceUpdate();
},
switchChange(val, index, indexRow, row) {
this.$emit('switchChange', val, index, indexRow, row)
@ -488,10 +380,10 @@ let obj = {}
if (valid) {
this.$emit('onSubmit', this.ruleForm)
} else {
console.log('error submit!!')
return false
console.log('error submit!!');
return false;
}
})
});
},
//
resetForm(formName) {
@ -516,10 +408,10 @@ let obj = {}
// row.elDialogHoverType = false
},
// input
changeRadio(val, index, indexRow, row) {
changeRadio(val, index, indexRow, row){
this.$emit('onChangeRadio', val, index, indexRow, row)
},
normalizer(node, row) {
normalizer(node,row) {
//children=null
if (node.children == null || node.children == 'null') {
delete node.children
@ -532,15 +424,13 @@ let obj = {}
selectTree(node, instanceId) {
this.$emit('selectTree', node)
},
treeSelectClear() {
treeSelectClear(){
this.$refs.selectTree.clear()
}
}
},
}
</script>
<style>
.el-form-item__label {
/* width: 25%; */
line-height: 1.2;
@ -552,17 +442,15 @@ let obj = {}
flex: 1
}
.el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before {
.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before {
margin-right: 0;
content: ''
}
</style>
<style scoped lang="scss">
::v-deep textarea.el-textarea__inner {
<style scoped lang='scss'>
::v-deep textarea.el-textarea__inner{
min-height: 100px !important;
}
.label {
/* @include fontBase(16px, #333333) ; */
color: #333;
@ -572,7 +460,7 @@ let obj = {}
padding-right: 5px;
}
> > > .el-form-item__label {
>>>.el-form-item__label {
width: 100px;
text-align: right !important;
margin-right: 10px !important;
@ -607,7 +495,7 @@ let obj = {}
align-items: center;
justify-content: space-between;
border: 1px solid #DCDFE6;
border-radius: 4px;
border-radius: 8px;
padding: 0 15px;
cursor: pointer;
@ -628,10 +516,6 @@ let obj = {}
}
::v-deep .el-form-item__content {
line-height: 36px !important;
}
.ruleFormClass {
::v-deep .el-input__inner {
border-color: #E6A23C !important
@ -658,4 +542,3 @@ let obj = {}
}
}
</style>

View File

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

View File

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

View File

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

View File

@ -5,7 +5,7 @@
-->
<template>
<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">
<base-layout title="组织机构" style="width: 20%;border-radius: 5px;height: 350px;overflow: auto; "
:operateButtonSwitch="false" :bottonShow="false" :isPage="false" :mainColor="mainColor"
@ -21,9 +21,6 @@
<base-table ref="personCustomtable" :border="true" :showIndex="false" :slotrow="true"
@radioChange="radioChange" :tabLoading.sync="personLoading" :tableHeight="personTableHeight"
:tableData="personTableData" :tableColumn="tableColumn">
<template #state="{row}">
<div>{{ row.row.state == 1 ? '停用' : '启用'}}</div>
</template>
</base-table>
</div>
</base-layout>
@ -35,7 +32,7 @@
import { authApi } from "@/api/apis/auth";
import baseDialog from "@/components/base/BaseNewDialog/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 {
PersonList

View File

@ -15,15 +15,14 @@
>
<div class="rightDialog">
<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">
<el-button @click="handleClose" v-if="closeShow"> </el-button>
<slot name="addButton"></slot>
<el-button @click="handleClose" v-if="closeShow"> </el-button>
<el-button
type="primary"
@click="handleConfirmClick"
v-if="submitShow"
></el-button
></el-button
>
</span>
<slot name="buttonPlus"></slot>
@ -111,7 +110,7 @@ export default {
/* padding-bottom:16px; */
padding: 16px 0;
overflow-y: auto;
border-bottom: 1px solid #eee;
border-bottom: 1px solid #ddd;
margin-bottom: 20px;
}
</style>

View File

@ -110,10 +110,6 @@
color: item.color ? item.color : '#333',
cursor: item.isClick ? 'pointer' : 'default',
}"
:title="!item.stateOption
? scope.row[item.prop]
: item.stateOption[scope.row[item.prop]]"
class='multipleLines_one'
>{{
!item.stateOption
? scope.row[item.prop]
@ -183,9 +179,6 @@
</span>
</template>
<script>
import {
v4 as uuidv4
} from 'uuid'
import Sortable from "sortablejs";
export default {
props: {
@ -232,10 +225,6 @@ export default {
type: String,
default: "small",
},
currentType: {
type: String,
default: "",
},
//
bottomPlus: {
type: Boolean,
@ -338,23 +327,7 @@ export default {
watch: {},
methods: {
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);
}
this.$emit("select", selection, row);
},
selectAll(selection) {
this.$emit("selectAll", selection);
@ -406,7 +379,7 @@ export default {
},
// id,row-keykey
getRowKey(row) {
return row.id ? row.id : uuidv4()
return row.id;
},
//
handleSelectionChange(selectTable) {
@ -575,15 +548,6 @@ export default {
::v-deep .el-table--border {
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 {
// top: 1px
// }

View File

@ -1,357 +1,101 @@
<!--
* @name: 弹窗配置
* @author: zhangpengcheng
* @date: 2022-08-25
-->
<template>
<!-- 权限设置弹框 -->
<!-- :style="{'margin':isCenter?'auto':''}"> -->
<div v-loading="treeLoading" flex style="margin: auto; height: 100%">
<div class="menu-i" flex="cross:center main:center">
<div class="menu-i-t" flex="cross:top main:justify">
<el-tree
:data="menuData"
:check-strictly="true"
:current-node-key="currentNodeKey"
:default-checked-keys="selectData"
@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 v-for="(item, index) in parentTreeData" :key="index" class="classifyButtonList">
<div flex="cross:center" flex-wrap style="height: 100%;">
<div class="title">
<!-- <i class="el-icon-caret-bottom" @click="showHidden(item, index)"></i> -->
<i v-if="item.children" :class="item.isShow?'el-icon-caret-top':'el-icon-caret-bottom'"@click="showHidden(item, index)"></i>
<!-- <el-checkbox v-model="item.checked">{{item.label}}</el-checkbox> -->
{{item.label}}
</div>
<div flex flex-wrap="cross:center" style="width: 79%;">
<p class="recordText" v-for="(el,index) in item.buttonList">{{el.NameCN}}</p>
</div>
</div>
<div flex="cross:center main:center" style="width: 100%" v-if="isSaveBtn">
<el-button style="width: 40%" type="primary" @click="saveMenuUser"
>保存
</el-button
>
<menu-tree v-if="item.isShow && item.children" :parent-tree-data="item.children"></menu-tree>
</div>
</div>
</template>
<script>
// import { queryMenuList, menuListSave } from '@/api/apis/auth'
export default {
export default {
name: "menuTree",
props: {
//
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: {
parentTreeData: {
type: Array,
default: () => {
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,
return []
}
},
},
methods: {
//
clickFirst() {
document.querySelectorAll(".is-focusable")[0].click();
},
buttonL(el) {
el.active = !el.active;
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;
//
showHidden(item, index) {
// this.parentTreeData.forEach(value => {
// // parentTreeData[i]showisShowmenuList[i]false
// if (value.isShow !== this.parentTreeData[index].isShow) {
// value.isShow = false;
// }
// });
item.isShow = !item.isShow;
this.$forceUpdate()
},
//
initData() {
//
// this.menuData = [];
// ids
this.selectData = [];
setCheck(menuIDs){
this.setButtonName(this.parentTreeData,menuIDs)
// this.$forceUpdate()
},
//
handleClose() {
this.powerDlog = false;
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) => {
setButtonName(menuData,data) {
menuData.forEach((el, index) => {
data.forEach(item=>{
if (el.id == item) {
newData.push(el);
el.checked = true
}
});
})
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>
<style lang="scss">
// $activeColor:val(--activeColor, "#00aaff");
$activeColor: var(--bg-color, "#00aaff");
.el-tree-node__content {
height: 32px !important;
}
.el-tree-node__label {
font-size: 14px !important;
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;
margin-bottom: 12px;
.el-icon-star-on {
/* color: #00aa00; */
color: $activeColor;
}
&-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;
.recordText {
border: 1px solid #fff;
padding: 3px 10px;
text-align: center;
color: #333;
font-size: 16px;
font-size: 14px;
cursor: pointer;
transition: all 0.3s ease-in-out;
&:hover {
color: #4570fc;
background: #f2f2f2;
color: #4e4e4e;
margin:5px;
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>

View File

@ -4,7 +4,7 @@ import dialogDrag from './dialog/drag'
import dialogDragWidth from './dialog/dragWidth'
import dialogDragHeight from './dialog/dragHeight'
import clipboard from './module/clipboard'
import btnPermission from "@/directive/permission/btnPermission";
const install = function(Vue) {
Vue.directive('hasRole', hasRole)
Vue.directive('hasPermi', hasPermi)
@ -12,7 +12,6 @@ const install = function(Vue) {
Vue.directive('dialogDrag', dialogDrag)
Vue.directive('dialogDragWidth', dialogDragWidth)
Vue.directive('dialogDragHeight', dialogDragHeight)
Vue.directive("btnPermission", btnPermission);
}
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>
<section
class="app-main"
:style="{
top: matchTop,
}"
:class="matchHeight"
>
<section class="app-main" :class="!sidebar.opened ? 'openSider' : ''">
<transition name="fade-transform" mode="out-in">
<keep-alive :include="cachedData">
<!-- <keep-alive :include="cachedViews"> -->
@ -24,7 +18,7 @@ export default {
components: { iframeToggle },
data() {
return {
cachedData: ["ApiAdmin", "scenneAdmin", "listOfApps"],
cachedData: ["ApiAdmin", "scenneAdmin","listOfApps"],
};
},
computed: {
@ -32,31 +26,9 @@ export default {
cachedViews() {
return this.$store.state.tagsView.cachedViews;
},
// tag
showTagsView() {
return this.$store.state.settings.showTagsView;
},
key() {
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>
@ -67,7 +39,6 @@ export default {
margin-left: 136px;
}
.app-main {
border-radius: 8px;
/* 50= navbar 50 */
// padding-top: 104px;
// min-height: calc(100vh - 50px);
@ -76,14 +47,8 @@ export default {
// width: calc(100% - 20px);
// margin:0 10px;
position: relative;
border-radius: 4px;
top: 80px;
margin-left: 10px;
}
.h-10{
height: calc(100vh - 10px);
}
.h-65{
height: calc(100vh - 73px);
}
.fixed-header + .app-main {

View File

@ -11,53 +11,14 @@
</template>
<script>
import InnerLink from "../InnerLink/index";
import { getCompanyId, getMenuNode } from "@/utils/auth";
import InnerLink from "../InnerLink/index"
export default {
components: { InnerLink },
data(){
return{
iframeViews:[]
computed: {
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>

View File

@ -15,7 +15,7 @@
<!-- color: activePage == index ? '#1478f6' : ''}" v-for="(item,index) in lagerScreenMenuData" :key="index"-->
<!-- >-->
<!-- <div @click="handlerClick(item,index)" flex>-->
<!-- <i :class="item.meta.icon"></i>-->
<!-- <i :class="item.meta.menuIcon"></i>-->
<!-- <p>{{ item.meta.title }}</p>-->
<!-- </div>-->
<!-- </router-link>-->
@ -273,8 +273,6 @@ export default {
.then(() => {
this.$store.dispatch("LogOut").then(() => {
Cookies.remove("automaticLogin");
this.$store.commit("REMOVE_ROUTER");
this.$store.dispatch("tagsView/delAllViews");
// location.href = '/login';
this.$router.replace({ path: "/login" });
// this.$router.push("/login");
@ -502,7 +500,6 @@ export default {
.avatar-container {
margin-right: 15px;
background-color: #fff;
.avatar-wrapper {
// 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)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <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="isNest">{{onlyOneChild.meta.title}}</span> -->
<!-- <div v-if="sidebarOpened">
<i class="iconfont" :class="item.meta.icon" > </i>
<i class="iconfont" :class="item.meta.menuIcon" > </i>
<span>{{isNest}}</span>
</div> -->
<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>
</div>
<div v-else>
<i class="iconfont" :class="item.meta.icon"> </i>
<i class="iconfont" :class="item.meta.menuIcon"> </i>
<span>{{onlyOneChild.meta.title}}</span>
</div>
<template slot="title">
<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>
</div>
</template>
@ -32,7 +32,7 @@
</template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<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':''}"
class="itemSidebar">{{item.meta.title}}</span>
</template>

View File

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

View File

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

View File

@ -30,7 +30,7 @@
@mouseenter="openChildren(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 }">
{{ item.meta.title }}
</p>

View File

@ -29,8 +29,8 @@
class="newsSider"
@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.icon"> </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.menuIcon"> </i> -->
<p class="newsSider-title" :class="{ active: index === activeIndex }">
{{ item.meta.title }}
</p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

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

View File

@ -3,4 +3,3 @@ export { default as Navbar } from './Navbar'
export { default as Settings } from './Settings'
export { default as Sidebar } from './Sidebar/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)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <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="isNest">{{onlyOneChild.meta.title}}</span> -->
<!-- <div v-if="sidebarOpened">
<i class="iconfont" :class="item.meta.icon" > </i>
<i class="iconfont" :class="item.meta.menuIcon" > </i>
<span>{{isNest}}</span>
</div> -->
<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>
</div>
<div v-else>
<i class="iconfont" :class="item.meta.icon"> </i>
<i class="iconfont" :class="item.meta.menuIcon"> </i>
<span>{{onlyOneChild.meta.title}}</span>
</div>
<template slot="title">
<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>
</div>
</template>
@ -32,7 +32,7 @@
</template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<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':''}"
class="itemSidebar">{{item.meta.title}}</span>
</template>

View File

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

View File

@ -477,6 +477,15 @@ $activeColor: var(--bg-color, "#00aaff");
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 {
// width: 200px !important;

View File

@ -14,7 +14,7 @@
<div v-if="!item.hidden && item.meta" flex="cross:center" :class="{ active: index === activeIndex }" :style="{
color: settings.sideTheme === 'theme-dark' ? '#fff' : '#4c4c4c',
}" 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 }">
{{ item.meta.title }}
</p>

View File

@ -14,7 +14,7 @@
<div v-if="!item.hidden && item.meta" flex="cross:center" :class="{ active: index === activeIndex }" :style="{
color: settings.sideTheme === 'theme-dark' ? '#fff' : '#4c4c4c',
}" 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 }">
{{ item.meta.title }}
</p>

View File

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

View File

@ -4,34 +4,47 @@
class="app-wrapper"
:style="{ '--current-color': theme }"
>
<div class="newVersionSystem">
<new-menu class="newMenuWidth" :class="{'closeWidth':$route.path.includes('settingMenu')}"/>
<div class="newMenuAppMain">
<tags-view v-if="showTagsView"/>
<app-main/>
<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,
NewMenu
} from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
import variables from '@/assets/styles/variables.scss'
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',
name: "Layout",
components: {
AppMain,
Navbar,
@ -39,8 +52,7 @@ export default {
Settings,
Sidebar,
TagsView,
NewMenu,
notFound
notFound,
},
mixins: [ResizeMixin],
computed: {
@ -52,35 +64,72 @@ export default {
notFound: (state) => state.app.notFound,
conciseMenu: (state) => state.settings.conciseMenu,
needTagsView: (state) => state.settings.tagsView,
showTagsView: (state) => state.settings.showTagsView,
fixedHeader: (state) => state.settings.fixedHeader
fixedHeader: (state) => state.settings.fixedHeader,
}),
classObj() {
return {
// hideSidebar: !this.sidebar.opened,
openSidebar: this.sidebar.opened,
withoutAnimation: this.sidebar.withoutAnimation,
mobile: this.device === 'mobile'
}
mobile: this.device === "mobile",
};
},
variables() {
return variables
}
return variables;
},
},
data() {
return {
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: {
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
})
}
}
}
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>
@ -92,39 +141,14 @@ export default {
position: relative;
height: 100%;
width: 100%;
// padding: 0 8px;
background: #ffffff;
padding: 0 8px;
background: #fafafa;
&.mobile.openSidebar {
position: fixed;
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 {
background: #000;
opacity: 0.3;
@ -134,21 +158,18 @@ export default {
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;
@ -169,7 +190,6 @@ export default {
.mobile .fixed-header {
width: 100%;
}
.webConcat {
position: fixed;
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'
Vue.use(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'
Vue.use(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 { openLoading, closeLoading } from '@/utils/loading'

View File

@ -1,158 +1,76 @@
import router from './router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken, getCompanyId, getMenuNode,setMenuNode } from '@/utils/auth'
import { isRelogin, getButtonLish } from '@/utils/request'
import { authApi } from '@/api/apis/auth'
import { getInfo } from '@/utils/auth'
import router from "./router";
import store from "./store";
import { Message } from "element-ui";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getToken, getCompanyId } from "@/utils/auth";
import { isRelogin, getButtonLish } from "@/utils/request";
NProgress.configure({
showSpinner: false
})
//判断是否第一次进入页面
let isFirst = true;
const whiteList = [
'/login',
'/test',
'/auth-redirect',
'/bind',
'/contractAssistant',
'/register',
'/systemInit',
'/databaseLogin',
'/apiLogs',
'/apiLogsError'
showSpinner: false,
});
]
const whiteList = [
"/login",
"/test",
"/auth-redirect",
"/bind",
"/contractAssistant",
"/register",
"/systemInit",
"/databaseLogin",
];
router.beforeEach((to, from, next) => {
let reloaded = sessionStorage.getItem('reloaded')
//网站第一次进来逻辑 当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()
NProgress.start();
if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
to.meta.title && store.dispatch("settings/setTitle", to.meta.title);
/* has token*/
if (to.path === '/login') {
if (to.path === "/login") {
next({
path: '/'
})
NProgress.done()
path: "/",
});
NProgress.done();
} else {
let routeList = localStorage.getItem('routeList')
? localStorage.getItem('routeList')
: null
let routeList = localStorage.getItem("routeList")
? localStorage.getItem("routeList")
: null;
// store.dispatch("GenerateRoutes").then((accessRoutes) => {
// next()
// })
if (store.getters.permission_routes.length == 0) {
store.dispatch('GenerateRoutes').then((accessRoutes) => {
store.dispatch("GenerateRoutes").then((accessRoutes) => {
// 根据roles权限生成可访问的路由表
// for (let i = 0, length = accessRoutes.length; i < length; i += 1) {
// const element = accessRoutes[i];
// // router.addRoutes(accessRoutes); // 动态添加可访问路由表
// }
router.addRoutes(accessRoutes) // 动态添加可访问路由表
router.addRoutes(accessRoutes); // 动态添加可访问路由表
// router.addRoutes(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)
localStorage.setItem("routeList", JSON.stringify(accessRoutes));
next({
...to,
replace: true
})
})
replace: true,
}); // hack方法 确保addRoutes已完成
});
} else {
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()
}
next();
}
}
} else {
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next()
next();
} else {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
NProgress.done()
next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
NProgress.done();
}
}
})
});
router.afterEach(() => {
NProgress.done()
})
NProgress.done();
});

View File

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

View File

@ -1,12 +1,12 @@
import Vue from 'vue'
import Router from 'vue-router'
import Vue from "vue";
import Router from "vue-router";
Vue.use(Router)
Vue.use(Router);
/* Layout */
import Layout from '@/layout/index.vue'
import ParentView from '@/components/ParentView'
import ApiAdmin from '@/views/integrationApi/apiAdmin'
import Layout from "@/layout/index.vue";
import ParentView from "@/components/ParentView";
import ApiAdmin from "@/views/integrationApi/apiAdmin"
/**
* Note: 路由配置项
@ -32,310 +32,223 @@ import ApiAdmin from '@/views/integrationApi/apiAdmin'
// 公共路由
export const constantRoutes = [{
path: '/redirect',
path: "/redirect",
component: Layout,
hidden: true,
children: [{
path: '/redirect/:path(.*)',
component: () => import('@/views/redirect')
}]
path: "/redirect/:path(.*)",
component: () => import("@/views/redirect"),
},],
},
{
path: '/apiLogs',
component: () => import('@/views/apiLogs/index.vue'),
hidden: true
},
{
path: '/apiLogsError',
component: () => import('@/views/apiLogsError/index.vue'),
hidden: true
},
{
path: '/login',
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',
{
path: "/login",
component: () => import("@/views/login"),
hidden: true,
},
{
path: "/register",
component: () => import("@/views/register/index"),
hidden: true,
},
{
path: "/systemInit",
// name: "databaseIndex",
component: () => import('@/views/systemInit/index'),
hidden: true
},
{
path: '/404',
component: () => import('@/views/error/404'),
hidden: true
},
{
path: '/401',
component: () => import('@/views/error/401'),
hidden: true
},
component: () => import("@/views/systemInit/index"),
hidden: true,
},
{
path: "/404",
component: () => import("@/views/error/404"),
hidden: true,
},
{
path: "/401",
component: () => import("@/views/error/401"),
hidden: true,
},
// {
// path: "/contractAssistant",
// component: () => import("@/views/contractAssistant"),
// hidden: true,
// },
{
path: '',
{
path: "",
component: Layout,
redirect: 'index',
redirect: "index",
children: [{
path: 'index',
component: () => import('@/views/index_v2'),
name: 'Index',
path: "index",
component: () => import("@/views/index_v2"),
name: "Index",
meta: {
title: '首页',
icon: 'dashboard',
affix: true
}
title: "首页",
icon: "dashboard",
affix: true,
},
},
{
path: 'notFound',
component: () => import('@/views/notFound'),
name: 'notFound',
path: "notFound",
component: () => import("@/views/notFound"),
name: "notFound",
meta: {
title: '404',
icon: 'dashboard'
title: "404",
icon: "dashboard",
// affix: true,
}
},
{
path: 'message',
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',
],
},
{
path: "/user",
component: Layout,
hidden: true,
redirect: 'Profile',
redirect: "Profile",
children: [{
path: 'Profile',
path: "Profile",
// component: () => import('@/views/system/user/personalCenter/index'),
component: () =>
import(
'@/views/systemSettings/userSettings/PersonnelSettings/personalCenter/index'
"@/views/systemSettings/userSettings/PersonnelSettings/personalCenter/index"
),
name: 'Profile',
name: "Profile",
meta: {
title: '个人中心',
icon: 'user'
title: "个人中心",
icon: "user",
}
}]
}
// {
// path: "/integrationOption",
// component: Layout,
// name: "integrationOption",
// redirect: "dataOption",
// meta: {
// title: "主数据中心",
// icon: "documentation",
// },
// children: [
// {
// path: "dataOption",
// component: () => import("@/views/integrationOption/index.vue"),
// name: "dataOption",
// meta: {
// title: "主数据中心",
// },
// },
// ],
// },
// {
// path: "/applicationList",
// component: Layout,
// name: "applicationList",
// redirect: "applicationListAdmin",
// meta: {
// title: "应用列表",
// icon: "el-icon-s-home",
// },
// children: [
// {
// path: "applicationListAdmin",
// component: () => import("@/views/applicationList/index.vue"),
// name: "applicationListAdmin",
// meta: {
// title: "应用列表",
// },
// },
// {
// path: "settingMenu",
// component: () => import("@/views/applicationList/settingMenu.vue"),
// name: "settingMenu",
// redirect: 'settingMenu/applicationEdit',
// hidden: true,
// meta: {
// title: "应用设置",
// hidden: true,
// },
// children: [
// {
// path: "applicationEdit",
// component: () => import("@/views/applicationList/masterDataAdd.vue"),
// name: "applicationEdit",
// hidden: true,
// meta: {
// title: "应用编辑",
// hidden: true,
// },
// },
// {
// path: "exploit",
// component: () => import("@/views/applicationList/exploit"),
// name: "exploit",
// hidden: true,
// meta: {
// title: "开发管理",
// hidden: true,
// },
// },
// {
// path: "authority",
// component: () => import("@/views/applicationList/authority"),
// name: "authority",
// hidden: true,
// meta: {
// title: "权限管理",
// hidden: true,
//
// },
// },
// {
// path: "appApiAdmin",
// name: "appApiAdmin",
// component: () => import("@/views/applicationList/apiList/apiAdmin"),
// meta: {
// title: "API管理",
// hidden: true
// }
// },
// {
// path: "inserterAdmin",
// name: "inserterAdmin",
// component: () => import("@/views/applicationList/inserterAdmin"),
// meta: {
// title: "插件管理",
// hidden: true,
// }
// },
// {
// path: "appApiadd",
// name: "appApiAdd",
// redirect: "",
// hidden: "true",
// component: () => import("@/views/applicationList/apiList/apiAdd"),
// meta: {
// title: "API新增",
//
// },
// },
// {
// path: "appApiview",
// name: "appApiView",
// hidden: "true",
// component: () => import("@/views/applicationList/apiList/apiView"),
// meta: {
// title: "API查看"
// }
// },
// ]
// },
// {
// path: "applicationAdd",
// component: () => import("@/views/applicationList/masterDataAdd.vue"),
// name: "applicationAdd",
// hidden: true,
// meta: {
// title: "应用新增",
// hidden: true,
// },
// },
// ],
// },
},
},],
},
// {
// path: "/integrationOption",
// component: Layout,
// name: "integrationOption",
// redirect: "dataOption",
// meta: {
// title: "主数据中心",
// icon: "documentation",
// },
// children: [
// {
// path: "dataOption",
// component: () => import("@/views/integrationOption/index.vue"),
// name: "dataOption",
// meta: {
// title: "主数据中心",
// },
// },
// ],
// },
// {
// path: "/applicationList",
// component: Layout,
// name: "applicationList",
// redirect: "applicationListAdmin",
// meta: {
// title: "应用列表",
// icon: "el-icon-s-home",
// },
// children: [
// {
// path: "applicationListAdmin",
// component: () => import("@/views/applicationList/index.vue"),
// name: "applicationListAdmin",
// meta: {
// title: "应用列表",
// },
// },
// {
// path: "settingMenu",
// component: () => import("@/views/applicationList/settingMenu.vue"),
// name: "settingMenu",
// redirect: 'settingMenu/applicationEdit',
// hidden: true,
// meta: {
// title: "应用设置",
// hidden: true,
// },
// children: [
// {
// path: "applicationEdit",
// component: () => import("@/views/applicationList/masterDataAdd.vue"),
// name: "applicationEdit",
// hidden: true,
// meta: {
// title: "应用编辑",
// hidden: true,
// },
// },
// {
// path: "exploit",
// component: () => import("@/views/applicationList/exploit"),
// name: "exploit",
// hidden: true,
// meta: {
// title: "开发管理",
// hidden: true,
// },
// },
// {
// path: "authority",
// component: () => import("@/views/applicationList/authority"),
// name: "authority",
// hidden: true,
// meta: {
// title: "权限管理",
// hidden: true,
//
// },
// },
// {
// path: "appApiAdmin",
// name: "appApiAdmin",
// component: () => import("@/views/applicationList/apiList/apiAdmin"),
// meta: {
// title: "API管理",
// hidden: true
// }
// },
// {
// path: "inserterAdmin",
// name: "inserterAdmin",
// component: () => import("@/views/applicationList/inserterAdmin"),
// meta: {
// title: "插件管理",
// hidden: true,
// }
// },
// {
// path: "appApiadd",
// name: "appApiAdd",
// redirect: "",
// hidden: "true",
// component: () => import("@/views/applicationList/apiList/apiAdd"),
// meta: {
// title: "API新增",
//
// },
// },
// {
// path: "appApiview",
// name: "appApiView",
// hidden: "true",
// component: () => import("@/views/applicationList/apiList/apiView"),
// meta: {
// title: "API查看"
// }
// },
// ]
// },
// {
// path: "applicationAdd",
// component: () => import("@/views/applicationList/masterDataAdd.vue"),
// name: "applicationAdd",
// hidden: true,
// meta: {
// title: "应用新增",
// hidden: true,
// },
// },
// ],
// },
// {
// path: "/scene",
// component: Layout,
@ -1060,36 +973,36 @@ export const constantRoutes = [{
// }
// }]
// },
]
];
// 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [{
path: '/tool/gen-edit',
path: "/tool/gen-edit",
component: Layout,
hidden: true,
permissions: ['tool:gen:edit'],
permissions: ["tool:gen:edit"],
children: [{
path: 'index/:tableId(\\d+)',
path: "index/:tableId(\\d+)",
// component: () => import('@/views/tool/gen/editTable'),
// component: () => import('@/views/tool/gen/index'),
name: 'GenEdit',
name: "GenEdit",
meta: {
title: '修改生成配置',
activeMenu: '/tool/gen'
}
}]
}]
title: "修改生成配置",
activeMenu: "/tool/gen",
},
},],
},];
// 防止连续点击多次路由报错
let routerPush = Router.prototype.push
let routerPush = Router.prototype.push;
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({
mode: 'hash', // 去掉url中的#
mode: "hash", // 去掉url中的#
scrollBehavior: () => ({
y: 0
y: 0,
}),
routes: constantRoutes
})
routes: constantRoutes,
});

View File

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

View File

@ -9,7 +9,6 @@ import settings from './modules/settings'
import getters from './getters'
import approval from './modules/approval'
import flowPath from "./modules/flowPath"
import perButton from "@/store/modules/perButton";
Vue.use(Vuex)
@ -22,8 +21,7 @@ const store = new Vuex.Store({
permission,
settings,
approval,
flowPath,
perButton
flowPath
},
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',
hidden: true,
meta: {
title: '应用编辑',
hidden: true
}
},
@ -38,6 +39,7 @@ const permission = {
name: 'exploit',
hidden: true,
meta: {
title: '开发管理',
hidden: true
}
},
@ -47,6 +49,7 @@ const permission = {
name: 'authority',
hidden: true,
meta: {
title: '权限管理',
hidden: true
}
@ -56,14 +59,7 @@ const permission = {
name: 'appApiAdmin',
component: () => import('@/views/applicationList/apiList/apiAdmin'),
meta: {
hidden: true
}
},
{
path: 'accountAdmin',
name: 'accountAdmin',
component: () => import('@/views/applicationList/accountList/accountAdmin'),
meta: {
title: 'API管理',
hidden: true
}
},
@ -72,14 +68,7 @@ const permission = {
name: 'inserterAdmin',
component: () => import('@/views/applicationList/inserterAdmin'),
meta: {
hidden: true
}
},
{
path: 'scriptAdmin',
name: 'scriptAdmin',
component: () => import('@/views/applicationList/scriptAdmin'),
meta: {
title: '插件管理',
hidden: true
}
},
@ -90,6 +79,7 @@ const permission = {
hidden: 'true',
component: () => import('@/views/applicationList/apiList/apiAdd'),
meta: {
title: 'API新增'
}
},
@ -99,6 +89,7 @@ const permission = {
hidden: 'true',
component: () => import('@/views/applicationList/apiList/apiView'),
meta: {
title: 'API查看'
}
}
]
@ -115,17 +106,17 @@ const permission = {
name: 'masterDataEdit',
hidden: true,
meta: {
title: '',
title: '基本信息',
hidden: true
}
},
{
path: 'dataOrigin',
component: () => import('@/views/masterDataOptions/dataOrigin'),
name: 'masterDataEdit',
name: 'dataOrigin',
hidden: true,
meta: {
title: '',
title: '数据源',
hidden: true
}
},
@ -135,7 +126,7 @@ const permission = {
name: 'displayInfo',
hidden: true,
meta: {
title: '',
title: '显示信息',
hidden: true
}
@ -145,7 +136,7 @@ const permission = {
name: 'authorily',
component: () => import('@/views/masterDataOptions/authority'),
meta: {
title: '',
title: '配置权限',
hidden: true
}
},
@ -154,19 +145,10 @@ const permission = {
name: 'distribute',
component: () => import('@/views/masterDataOptions/distribute'),
meta: {
title: '',
title: '分发设置',
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'
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 state = {
title: '',
@ -12,7 +12,6 @@ const state = {
tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
showTagsView: storageSetting.showTagsView === undefined ? showTagsView : storageSetting.showTagsView,
dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle
}
const mutations = {

View File

@ -1,458 +1,120 @@
import { getMenuNode } from "@/utils/auth";
const state = {
visitedViews: [
[],
[],
[],
[],
[],
[],
[]
],
cachedViews: [
[],
[],
[],
[],
[],
[],
[]
],
iframeViews: [
[],
[],
[],
[],
[],
[],
[]
],
visitedViews: [],
cachedViews: [],
iframeViews: []
}
const mutations = {
ADD_IFRAME_VIEW: (state, view) => {
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 = 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(
if (state.iframeViews.some(v => v.path === view.path)) return
state.iframeViews.push(
Object.assign({}, view, {
title: view.meta.title || 'no-name'
})
)
}
},
ADD_VISITED_VIEW: (state, view) => {
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) {
if (state.visitedViews[Index].some(v => v.path === view.path)) return
if(view.meta.affix){
state.visitedViews[Index].unshift(
if (state.visitedViews.some(v => v.path === view.path)) return
state.visitedViews.push(
Object.assign({}, view, {
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) => {
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) {
if (state.cachedViews[Index].includes(view.name)) return
if (state.cachedViews.includes(view.name)) return
if (view.meta && !view.meta.noCache) {
state.cachedViews[Index].push(view.name)
}
state.cachedViews.push(view.name)
}
},
DEL_VISITED_VIEW: (state, view) => {
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) {
for (const [i, v] of state.visitedViews[Index].entries()) {
for (const [i, v] of state.visitedViews.entries()) {
if (v.path === view.path) {
state.visitedViews[Index].splice(i, 1)
state.visitedViews.splice(i, 1)
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) => {
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.iframeViews[Index] = state.iframeViews[Index].filter(item => item.path !== view.path)
}
state.iframeViews = state.iframeViews.filter(item => item.path !== view.path)
},
DEL_CACHED_VIEW: (state, view) => {
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) {
const index = state.cachedViews[Index].indexOf(view.name)
index > -1 && state.cachedViews[Index].splice(index, 1)
}
const index = state.cachedViews.indexOf(view.name)
index > -1 && state.cachedViews.splice(index, 1)
},
DEL_OTHERS_VISITED_VIEWS: (state, view) => {
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] = state.visitedViews[Index].filter(v => {
state.visitedViews = state.visitedViews.filter(v => {
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) => {
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) {
const index = state.cachedViews[INDEX].indexOf(view.name)
const index = state.cachedViews.indexOf(view.name)
if (index > -1) {
state.cachedViews[INDEX] = state.cachedViews[INDEX].slice(index, index + 1)
state.cachedViews = state.cachedViews.slice(index, index + 1)
} else {
state.cachedViews[INDEX] = []
}
state.cachedViews = []
}
},
DEL_ALL_VISITED_VIEWS: state => {
// keep affix tags
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) {
const affixTags = state.visitedViews[INDEX].filter(tag => tag.meta.affix)
state.visitedViews[INDEX] = affixTags
state.iframeViews[INDEX] = []
}
const affixTags = state.visitedViews.filter(tag => tag.meta.affix)
state.visitedViews = affixTags
state.iframeViews = []
},
DEL_ALL_CACHED_VIEWS: 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.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] = []
}
state.cachedViews = []
},
UPDATE_VISITED_VIEW: (state, view) => {
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) {
for (let v of state.visitedViews[INDEX]) {
for (let v of state.visitedViews) {
if (v.path === view.path) {
v = Object.assign(v, view)
break
}
}
}
},
DEL_RIGHT_VIEWS: (state, view) => {
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) {
const index = state.visitedViews[INDEX].findIndex(v => v.path === view.path)
const index = state.visitedViews.findIndex(v => v.path === view.path)
if (index === -1) {
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)) {
return true
}
const i = state.cachedViews[INDEX].indexOf(item.name)
const i = state.cachedViews.indexOf(item.name)
if (i > -1) {
state.cachedViews[INDEX].splice(i, 1)
state.cachedViews.splice(i, 1)
}
if (item.meta && item.meta.link) {
const fi = state.iframeViews[INDEX].findIndex(v => v.path === item.path)
state.iframeViews[INDEX].splice(fi, 1)
if(item.meta.link) {
const fi = state.iframeViews.findIndex(v => v.path === item.path)
state.iframeViews.splice(fi, 1)
}
return false
})
}
},
DEL_LEFT_VIEWS: (state, view) => {
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) {
const index = state.visitedViews[INDEX].findIndex(v => v.path === view.path)
const index = state.visitedViews.findIndex(v => v.path === view.path)
if (index === -1) {
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)) {
return true
}
const i = state.cachedViews[INDEX].indexOf(item.name)
const i = state.cachedViews.indexOf(item.name)
if (i > -1) {
state.cachedViews[INDEX].splice(i, 1)
state.cachedViews.splice(i, 1)
}
if (item.meta && item.meta.link) {
const fi = state.iframeViews[INDEX].findIndex(v => v.path === item.path)
state.iframeViews[INDEX].splice(fi, 1)
if(item.meta.link) {
const fi = state.iframeViews.findIndex(v => v.path === item.path)
state.iframeViews.splice(fi, 1)
}
return false
})
}
}
}
const actions = {
@ -460,11 +122,6 @@ const actions = {
dispatch('addVisitedView', view)
dispatch('addCachedView', view)
},
clearVisted({ commit }) {
commit('CLEAR_VISTEDVIEWS')
},
addIframeView({ commit }, 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 {
getToken,
setToken,
@ -6,77 +6,67 @@ import {
removeInfo,
setInfo,
setCompanyId,
removeCompanyId
} from '@/utils/auth'
removeCompanyId,
} from "@/utils/auth";
const user = {
state: {
token: getToken(),
name: '',
avatar: '',
name: "",
avatar: "",
roles: [],
permissions: [],
info: {},
companyID: '',
companyID: "",
companyListAll: [],
messageCount: 0,
currentMenuNode: ''//目的是 结合cokkie 实时监听当前导航栏的变化
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
state.token = token;
},
SET_NAME: (state, name) => {
state.name = name
state.name = name;
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
state.avatar = avatar;
},
SET_ROLES: (state, roles) => {
state.roles = roles
state.roles = roles;
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
state.permissions = permissions;
},
SET_INFO: (state, info) => {
state.info = info
state.info = info;
},
SET_COMPANYID: (state, companyID) => {
state.companyID = companyID
state.companyID = companyID;
},
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: {
// 登录
Login({ commit }, userInfo) {
const login_name = userInfo.login_name.trim()
const password = userInfo.password
const login_name = userInfo.login_name.trim();
const password = userInfo.password;
// const companyID = userInfo.companyID;
return new Promise((resolve, reject) => {
login(login_name, password)
.then((res) => {
setToken(res.attribute['zt-token'])
setInfo(JSON.stringify(res.attribute.userInfo))
commit('SET_TOKEN', res.attribute.token)
commit('SET_INFO', res.attribute.userInfo)
resolve()
setToken(res.attribute.token);
setInfo(JSON.stringify(res.attribute.userInfo));
commit("SET_TOKEN", res.attribute.token);
commit("SET_INFO", res.attribute.userInfo);
resolve();
})
.catch((error) => {
commit('LogOut')
reject(error)
})
})
reject(error);
});
});
},
// 获取用户信息
@ -84,53 +74,52 @@ const user = {
return new Promise((resolve, reject) => {
getInfo()
.then((res) => {
const user = res.user
const user = res.user;
const avatar =
user.avatar == '' || user.avatar == null
? require('@/assets/images/profile.jpg')
: process.env.VUE_APP_BASE_API + user.avatar
user.avatar == "" || user.avatar == null
? require("@/assets/images/profile.jpg")
: process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) {
// 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions)
commit("SET_ROLES", res.roles);
commit("SET_PERMISSIONS", res.permissions);
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
commit("SET_ROLES", ["ROLE_DEFAULT"]);
}
commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar)
resolve(res)
commit("SET_NAME", user.userName);
commit("SET_AVATAR", avatar);
resolve(res);
})
.catch((error) => {
reject(error)
})
})
reject(error);
});
});
},
// 退出系统
LogOut({ commit, state }) {
console.log('触发推出')
return new Promise((resolve, reject) => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
commit('SET_COMPANYID_LIST_All', [])
removeToken()
removeInfo()
removeCompanyId()
resolve()
})
commit("SET_TOKEN", "");
commit("SET_ROLES", []);
commit("SET_PERMISSIONS", []);
commit("SET_COMPANYID_LIST_All", []);
removeToken();
removeInfo();
removeCompanyId();
resolve();
});
},
// 前端 登出
FedLogOut({ commit }) {
return new Promise((resolve) => {
commit('SET_TOKEN', '')
removeToken()
removeInfo()
resolve()
})
}
}
}
commit("SET_TOKEN", "");
removeToken();
removeInfo();
resolve();
});
},
},
};
export default user
export default user;

View File

@ -3,7 +3,6 @@ import Cookies from 'js-cookie'
const TokenKey = 'zhongtai-Token'
const InfoKey = 'zhongtai-Info'
const CompanyId = 'Company-Id'
const MenuNode = 'Menu-Node'
export function getToken() {
return Cookies.get(TokenKey)
@ -23,7 +22,7 @@ export function getInfo() {
}
export function setInfo(info) {
localStorage.setItem(InfoKey, info)
localStorage.setItem(InfoKey,info)
return Cookies.set(InfoKey, info)
}
@ -43,15 +42,3 @@ export function setCompanyId(info) {
export function removeCompanyId() {
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'
let appLoading
export function openLoading(loadingName='加载中') {
export function openLoading(loadingName) {
let loadingText
switch (loadingName) {
case 'submit':
@ -21,12 +21,6 @@ export function openLoading(loadingName='加载中') {
case 'del':
loadingText = '删除'
break;
case 'test':
loadingText = '校验数据'
break;
default:
loadingText = loadingName
break;
}
appLoading = Loading.service({
text: "正在" + loadingText + ",请稍候",
@ -36,7 +30,7 @@ export function openLoading(loadingName='加载中') {
})
setTimeout(() => {
appLoading.close();
}, 1000000)
}, 10000)
}
export function closeLoading() {
if (appLoading) {

View File

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

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