Commit 4f5055dd by liuchenxi

update: init repo

parents
> 1%
last 2 versions
[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
!/src
/src/images
/dist/
/*.js
// https://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parserOptions: {
parser: "babel-eslint"
},
env: {
browser: true
},
extends: [
// https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
// consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
// "standard",
"plugin:vue/essential",
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
// "plugin:prettier/recommended"
],
// required to lint *.vue files
plugins: ["vue"],
// add your custom rules here
rules: {
// "prettier/prettier": "error",
// allow async-await
"generator-star-spacing": "off",
// "no-console": process.env.NODE_ENV === "production" ? 2 : 0,
"no-alert": process.env.NODE_ENV === "production" ? 2 : 0, //禁止使用alert confirm prompt
"no-debugger": process.env.NODE_ENV === "production" ? 2 : 0,
// --------------------静态检测-----------------------------
/**
* 静态检测:
* 以下基本位能够帮助发现代码错误的规则
* */
// 禁止与负零进行比较
"no-compare-neg-zero": 2,
// 禁止将常量作为 if 或三元表达式的测试条件,比如 if (true), let foo = 0 ? 'foo' : 'bar'
"no-constant-condition": [
2,
{
checkLoops: false
}
],
// 禁止在函数参数中出现重复名称的参数 【辅助检测】
"no-dupe-args": 2,
// 禁止在对象字面量中出现重复名称的键名 【辅助检测】
"no-dupe-keys": 2,
// 禁止出现空代码块 【可读性差】
"no-empty": [
2,
{
"allowEmptyCatch": true
}
],
// 禁止将 catch 的第一个参数 error 重新赋值 【重新赋值,error将没有意义】
"no-ex-assign": 2,
// @fixable 禁止函数表达式中出现多余的括号,比如 let foo = (function () { return 1 }) 【一般不会这么写,可读性差】
"no-extra-parens": [2, "functions"],
// 禁止将一个函数申明重新赋值,如:
// function foo() {}
// foo = bar [静态检测:无意义]
"no-func-assign": 2,
// 禁止在 if 内出现函数申明或使用 var 定义变量
"no-inner-declarations": [2, "both"],
// 禁止使用特殊空白符(比如全角空格),除非是出现在字符串、正则表达式或模版字符串中
"no-irregular-whitespace": [
2,
{
skipStrings: true,
skipComments: false,
skipRegExps: true,
skipTemplates: true
}
],
// typeof 表达式比较的对象必须是 'undefined', 'object', 'boolean', 'number', 'string', 'function' 或 'symbol'
"valid-typeof": 2,
// -----------------------------------最佳实践----------------------------------------------
/**
* 最佳实践
* 这些规则通过一些最佳实践帮助你避免问题
*/
// 禁止函数的循环复杂度超过 20,【https://en.wikipedia.org/wiki/Cyclomatic_complexity】
complexity: [
2,
{
max: 200
}
],
// 不允许有空函数,除非是将一个空函数设置为某个项的默认值 【否则空函数并没有实际意义】
"no-empty-function": [
2,
{
allow: ["functions", "arrowFunctions"]
}
],
// 禁止修改原生对象 【例如 Array.protype.xxx=funcion(){},很容易出问题,比如for in 循环数组 会出问题】
"no-extend-native": 2,
// @fixable 表示小数时,禁止省略 0,比如 .5 【可读性】
"no-floating-decimal": 2,
// 禁止直接 new 一个类而不赋值 【 那么除了占用内存还有什么意义呢? @off vue语法糖大量存在此类语义 先手动关闭】
"no-new": 0,
// 禁止使用 new Function,比如 let x = new Function("a", "b", "return a + b"); 【可读性差】
"no-new-func": 2,
// 禁止将自己赋值给自己 [规则帮助检测]
"no-self-assign": 2,
// 禁止将自己与自己比较 [规则帮助检测]
"no-self-compare": 2,
// @fixable 立即执行的函数必须符合如下格式 (function () { alert('Hello') })() 【立即函数写法很多,这个是最易读最标准的】
"wrap-iife": [
2,
"inside",
{
functionPrototypeMethods: true
}
],
// 禁止使用保留字作为变量名 [规则帮助检测保留字,通常ide难以发现,生产会出现问题]
"no-shadow-restricted-names": 2,
// 禁止使用未定义的变量
"no-undef": [
2,
{
typeof: false
}
],
// 定义过的变量必须使用 【正规应该是这样的,具体可以大家讨论】
"no-unused-vars": [
2,
{
vars: "all",
args: "none",
caughtErrors: "none",
ignoreRestSiblings: true
}
],
// 变量必须先定义后使用 【ps:涉及到es6存在不允许变量提升的问题,以免引起意想不到的错误,具体可以大家讨论】
"no-use-before-define": [
2,
{
functions: false,
classes: false,
variables: false
}
],
// ----------------------------------------------------代码规范----------------------------------------------------------
/**
* 代码规范
* */
// 变量名必须是 camelcase 驼峰风格的
camelcase: [ 2, { "properties": "always" }],
// @fixable 禁止在行首写逗号
"comma-style": [2, "last"],
// @fixable 一个缩进必须用两个空格替代
// @off 【不限制大家,为了关闭eslint默认值,所以手动关闭,off不可去掉】 讨论
indent: [2, 2,{ "SwitchCase": 1 }],
//@off 手动关闭//前面需要空格 注释
"spaced-comment": 2,
//@off 手动关闭: 禁用行尾空白
"no-trailing-spaces": 2,
//@off 手动关闭: 不允许多行回车
"no-multiple-empty-lines": 1,
//@off 手动关闭: 逗号前必须加空格
"comma-spacing": 2,
//@off 手动关闭: 冒号后必须加空格
"key-spacing": 2,
// 代码块嵌套的深度禁止超过 5 层
"max-depth": [1, 20],
// 回调函数嵌套禁止超过 4 层,多了请用 async await 替代
"max-nested-callbacks": [2, 8],
// 函数的参数禁止超过 7 个
"max-params": [2, 7],
// new 后面的类名必须首字母大写 【面向对象编程原则】
"new-cap": [
2,
{
newIsCap: true,
capIsNew: false,
properties: true
}
],
// @fixable new 后面的类必须有小括号 【没有小括号、指针指过去没有意义】
"new-parens": 2,
// @fixable 禁止属性前有空格,比如 foo. bar() 【可读性太差,一般也没人这么写】
"no-whitespace-before-property": 2,
// @fixable 禁止 if 后面不加大括号而写两行代码 eg: if(a>b) a=0 b=0
"nonblock-statement-body-position": [
2,
"beside",
{ overrides: { while: "below" } }
],
// 禁止变量申明时用逗号一次申明多个 eg: let a,b,c,d,e,f,g = [] 【debug并不好审查、并且没办法单独写注释】
"one-var": [2, "never"],
// @fixable 【变量申明必须每行一个,同上】
"one-var-declaration-per-line": [2, "always"],
//是否使用全等
eqeqeq: 0,
//this别名
"consistent-this": [2, "that"],
//强制使用一致的反勾号、双引号或单引号 (quotes) 关闭
quotes: [2, "single"],
"array-bracket-spacing": [2,"always"],//[后 ]前必须有一个空格
"object-curly-spacing": [2,"always"],//{后 }前必须有一个空格
"space-before-function-paren": [2, "never"],//函数圆括号之前无空格
"space-infix-ops": 2,
"semi": [2, "always"],// 代码使用分号结尾
"valid-jsdoc": ["error", {
"requireReturn": false,
"requireParamDescription": false,
"requireReturnDescription": false
}], //使用JSDoc注释
"vue/attribute-hyphenation": ["error", "always"], // 自定义组件的属性使用连字符,不可使用小驼峰命名法
"vue/component-name-in-template-casing": ["error", "kebab-case", { registeredComponentsOnly: false }], // 自定义组件在template中的标签使用连字符
"vue/html-closing-bracket-newline": ["error", { // vue组件template中不能以 > 开头
"singleline": "never",
"multiline": "never"
}],
"vue/html-quotes": [ "error", "double"], // vue组件template中使用双引号
"vue/name-property-casing": ["error", "PascalCase"], // vue组件name属性使用大驼峰命名法
"vue/prop-name-casing": ["error", "camelCase"], // vue组件props的key使用小驼峰命名法
"vue/this-in-template": ["error", "never"], // vue组件template中不能使用this
"vue/order-in-components": ["error", {
"order": [
"el",
"name",
"key",
"parent",
"functional",
["delimiters", "comments"],
["components", "directives"],
"extends",
"mixins",
["provide", "inject"],
"ROUTER_GUARDS",
"layout",
"middleware",
"validate",
"scrollToTop",
"transition",
"loading",
"inheritAttrs",
"model",
["props", "propsData"],
"emits",
"setup",
"asyncData",
"data",
"fetch",
"head",
"watchQuery",
"LIFECYCLE_HOOKS",
"methods",
"filters",
"computed",
"watch",
["template", "render"],
"renderError"
]
}],
// -----------------------------ECMAScript 6-------------------------------------
/**
* ECMAScript 6
* 这些规则与 ES6 有关 【请大家 尝试使用正确使用const和let代替var,以后大家熟悉之后可能会提升规则】
* */
// 禁止对定义过的 class 重新赋值
"no-class-assign": 2,
// @fixable 禁止出现难以理解的箭头函数,比如 let x = a => 1 ? 2 : 3
"no-confusing-arrow": [2, { allowParens: true }],
// 禁止对使用 const 定义的常量重新赋值
"no-const-assign": 2,
// 禁止重复定义类
"no-dupe-class-members": 2,
// 禁止重复 import 模块
"no-duplicate-imports": 2,
//@off 禁止 var
"no-var": 2,
// ---------------------------------被关闭的规则-----------------------
// parseInt必须指定第二个参数 parseInt("071",10);
radix: 0,
//禁止或强制圆括号内的空格
"space-in-parens": [0, "never"],
//关键字后面是否要空一格
"space-after-keywords": [0, "always"],
// 要求或禁止在函数标识符和其调用之间有空格
"func-call-spacing": [0, "never"]
}
};
.DS_Store
node_modules
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
yarn.lock
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
{
"printWidth": 400,
"tabWidth": 2,
"useTabs": false,
"singleQuote": true,
"semi": true,
"trailingComma": "none",
"bracketSpacing": true,
"jsxBracketSameLine": true,
"proseWrap": "preserve"
}
module.exports = {
presets: [
'@vue/app'
],
plugins: [
"@babel/plugin-proposal-optional-chaining"
]
}
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'scope-empty': [0],
'scope-case': [0],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'type-enum': [ // commit type 类型
2,
'always',
[
'add', // 新功能
'feat', // 新功能
'fix', // 修改问题
'update', // 更新
'style', // 样式
'test', // 测试
'docs', // 文档
'refactor', // 重构
'chore' // 依赖包/辅助工具的变动
]
]
}
};
{
"name": "message-operation",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"dev": "vue-cli-service serve",
"start": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@babel/plugin-proposal-optional-chaining": "^7.11.0",
"axios": "^0.19.2",
"vue-clipboard2": "^0.1.1",
"core-js": "^2.6.5",
"element-ui": "^2.13.0",
"js-cookie": "^2.2.0",
"vue": "^2.6.11",
"vue-router": "^3.1.5"
},
"devDependencies": {
"@commitlint/cli": "^11.0.0",
"@commitlint/config-conventional": "^11.0.0",
"@vue/cli-plugin-babel": "^3.8.0",
"@vue/cli-plugin-eslint": "^3.8.0",
"@vue/cli-service": "^3.8.0",
"@vue/eslint-config-standard": "^4.0.0",
"babel-eslint": "^10.0.1",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0",
"husky": "^4.3.0",
"less": "^3.9.0",
"less-loader": "^5.0.0",
"lint-staged": "^8.1.5",
"node-sass": "^4.9.0",
"qs": "^6.7.0",
"sass-loader": "^7.1.0",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.2",
"vue-template-compiler": "^2.6.10"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -e $HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
"*.{js,vue}": [
"vue-cli-service lint",
"git add"
]
}
}
module.exports = {
plugins: {
autoprefixer: {}
}
}
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon2.ico">
<link rel="stylesheet" type="text/css" href="//web-1251519181.file.myqcloud.com/custom-element/custom-element.1.0.68.css" />
<title>实施运维</title>
</head>
<body class="damolish">
<noscript>
<strong>We're sorry but damolish doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<script src="//web-1251519181.file.myqcloud.com/lib-4.0/vue/2.6.10/vue.min.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/input.2.0.14.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/transfer.1.0.15.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/steps.1.0.8.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/step.1.0.5.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/user-info.1.0.3.js"></script>
<!-- <script src="//web-1251519181.file.myqcloud.com/components/layout.1.1.32.js"></script> -->
<!-- <script src="//web-1251519181.file.myqcloud.com/components/store-select.1.1.10.js"></script> -->
<!-- <script src="//web-1251519181.file.myqcloud.com/components/goods-rights-selector.1.0.6.js"></script> -->
</body>
</html>
<template>
<div id="app" class="dm-reset">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App',
mounted() {
window.addEventListener('offline', _ => {
this.$message.error('网络连接中断');
});
}
};
</script>
<style lang="scss">
.el-pagination {
text-align: right;
}
</style>
import { request } from '@/utils/request.js';
export default function getFetch(api, baseUrl) {
api = api || {};
let keys = Object.keys(api);
keys.forEach(key => {
let opt = api[key];
if (typeof opt === 'string') opt = { url: opt };
opt.url = `${baseUrl}${opt.url}`;
api[key] = params => request(opt, params);
});
return api;
}
import getFetch from './getFetch.js';
let api1 = {
/** 登录信息 */
getUserInfo: 'gic-authcenter/loginuser',
/** 列表 */
getList: {
url: '/goods-async-schedulers/config/list',
method: 'get'
},
/** 下拉服务器ip列表 */
serverList: {
url: '/goods-async-schedulers/config/server-list',
method: 'get'
},
/** 开启同步 */
uploadSync: {
url: '/goods-async-schedulers/config/update-sync',
method: 'post'
},
getDetail: {
url: '/goods-async-schedulers/config/detail',
method: 'post'
},
update: {
url: '/goods-async-schedulers/config/update',
method: 'post'
},
create: {
url: '/goods-async-schedulers/config/create',
method: 'post'
},
importGoodsIndex: '/goods-async-schedulers/config/import-goods-index',
refreshGoodsIndex: '/goods-async-schedulers/config/refresh-goods-index',
refreshProductIndex: '/goods-async-schedulers/config/refresh-product-index', // 索引重建并写入数据
productIndexMapping: '/goods-async-schedulers/config/product-index-mapping',
goodsIndexMapping: '/goods-async-schedulers/config/goods-index-mapping'
};
// api = getFetch(api, '/gic-erp-manage');
api1 = getFetch(api1, '');
export default { ...api1 };
<template>
<div class="aside-menu">
<ul class="aside-menu__wrapper">
<template v-for="item in tabData">
<li
v-if="item.isShow == 1"
:class="['tab-left-list-cell p-l-14', {'active-tab': item.uri === activeTab}]"
:key="item.id"
@click="selectTab(item)">
<!-- <i class="my-icon" :class="['iconfont', item.icon, !!item.onlyIconActive ? 'iconActive' : '']"></i> -->
{{ item.menuName }}
<i v-if="item.nodeChildren && item.nodeChildren.length" :class="[item.collapsFlag ? 'el-icon-arrow-up' : 'el-icon-arrow-down']"></i>
</li>
<el-collapse-transition :key="`${item.id}-sub`">
<div v-show="item.collapsFlag">
<ul class="child-tab-left-list">
<template v-for="childitem in item.nodeChildren">
<li
v-if="childitem.isShow == 1"
:class="['tab-left-list-cell p-l-40', {'active-tab': childitem.uri == activeTab}]"
:key="childitem.id"
@click="selectTab(childitem)">
{{ childitem.menuName }}
<i v-if="childitem.nodeChildren && childitem.nodeChildren.length" :class="[childitem.collapsFlag ? 'el-icon-arrow-up' : 'el-icon-arrow-down']"></i>
</li>
<ul class="third-tab-left-list" :key="`${childitem.id}-sub`" v-show="childitem.collapsFlag">
<template v-for="thirditem in childitem.nodeChildren">
<li
v-if="thirditem.isShow == 1"
:class="['tab-left-list-cell p-l-60', {'active-tab': thirditem.uri === activeTab }]"
:key="thirditem.id"
@click="selectTab(thirditem)">
{{ thirditem.menuName }}
</li>
</template>
</ul>
</template>
</ul>
</div>
</el-collapse-transition>
</template>
</ul>
</div>
</template>
<script>
export default {
name: 'AsideMenu',
props: {
menu: Array
},
data() {
return {
activeTab: '',
tabData: []
};
},
methods: {
selectTab(item) {
console.log(item);
if (this.activeTab === item.uri) return;
if (Array.isArray(item.nodeChildren) && item.nodeChildren.length > 0) {
return item.collapsFlag = !item.collapsFlag;
} else {
this.$router.push({ path: item.uri });
this.tabData.forEach(ele => {
if (ele.id != item.id && (!ele.nodeChildren || !ele.nodeChildren.length)) {
ele.collapsFlag = false;
} else if (ele.nodeChildren && ele.nodeChildren.length) {
let i = 0;
ele.nodeChildren.forEach(element => {
if (element.id == item.id) i++;
});
i <= 0 && (ele.collapsFlag = false);
}
});
}
},
},
watch: {
'$route.path': {
immediate: true,
handler(path) {
this.activeTab = path;
}
},
menu: {
immediate: true,
handler(menu) {
let menuTree = menu.filter(item => item.code === 'goods_operation')[0] || {};
console.log(menu, menuTree);
this.tabData = (menuTree.nodeChildren || []).map(item => {
this.$set(item, 'collapsFlag', false);
if (item.uri === this.activeTab) {
this.$set(item, 'collapsFlag', true);
} else if (item.nodeChildren && item.nodeChildren.length) {
item.nodeChildren.forEach(element => {
if (element.uri === this.activeTab) this.$set(item, 'collapsFlag', true);
});
}
return item;
});
console.log(this.tabData);
}
}
}
};
</script>
<style lang="scss" scoped>
.aside-menu {
position: fixed;
top: 20px;
bottom: 20px;
// left: 20px;
// z-index: 2;
padding-top: 64px;
width: 200px;
overflow: hidden;
// height: 100%;
.aside-menu__wrapper {
width: 100%;
background-color: #fff;
overflow-y: auto;
box-shadow: 3px 0 4px 0 rgba(214, 224, 240, 0.3);
position: absolute;
top: 64px;
bottom: 0;
padding: 0 0 20px 0;
}
.tab-left-list-cell {
position: relative;
margin-top: 15px;
height: 30px;
font-size: 14px;
color: #303133;
text-align: left;
line-height: 30px;
white-space: nowrap;
overflow: hidden;
cursor: pointer;
.iconActive {
color: #2f54ed;
}
&:hover {
color: #606266;
background: rgba(24, 144, 255, 0.06);
i {
color: #2f54ed;
}
}
&.active-tab {
color: #606266;
background: rgba(24, 144, 255, 0.06);
&::before {
content: ' ';
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 2px;
background: #2f54ed;
z-index: 1;
}
i {
color: #2f54ed;
}
}
.my-icon {
font-size: 17px;
color: #000;
padding-right: 8px;
width: 25px;
display: inline-block;
box-sizing: border-box;
}
}
.child-tab-left-list {
-webkit-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
li {
position: relative;
text-align: left;
height: 30px;
line-height: 30px;
white-space: nowrap;
overflow: hidden;
cursor: pointer;
&:hover {
background: rgba(24, 144, 255, 0.06);
i {
color: #2f54ed;
}
}
&.active-tab {
background: rgba(24, 144, 255, 0.06);
&::before {
content: ' ';
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 2px;
background: #2f54ed;
z-index: 1;
}
i {
color: #2f54ed;
}
}
}
}
}
.p-l-14 {
padding-left: 14px;
}
.p-l-40 {
padding-left: 40px;
}
.p-l-60 {
padding-left: 60px;
}
</style>
<template>
<div id="breadcrumb">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-for="item in navData" :key="item" :to="item.path ? { path: item.path } : null">{{ item.name }}</el-breadcrumb-item>
</el-breadcrumb>
<slot name="button"></slot>
</div>
</template>
<script>
export default {
props: {
navData: {
type: Array,
default() {
return [
{ name: '首页', path: '/' }
];
}
}
},
data() {
return {
};
}
};
</script>
<style lang="scss" scoped>
@import '@/styles/colors.scss';
#breadcrumb {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 20px solid $gray-background;
padding: 10px 20px;
}
</style>
\ No newline at end of file
<template>
<router-view/>
</template>
<script>
export default {
name: 'ModuleView'
};
</script>
<template>
<el-tabs :value="value" @tab-click="linkTo">
<el-tab-pane v-for="i in data" :key="i.name" :label="i.label" :name="i.name"></el-tab-pane>
</el-tabs>
</template>
<script>
export default {
name: 'PageTabs',
props: {
value: [ String, Number ], // name
data: Array, // [{ name: '', label: '', path: '' }]
},
methods: {
linkTo(ref) {
let { name } = ref || {};
let { path } = this.data.find(el => el.name == name) || {};
path && this.$router.push({ path });
},
},
};
</script>
<style>
</style>
<template>
<div class="header">
<a :href="index" class="logo">
<img src="../images/logo.png" alt="" />
<span>短信管理</span>
</a>
<yw-user-info :user-data="userInfo"></yw-user-info>
</div>
</template>
<script>
import { origin } from '@/config';
import fetch from '@/api/operation.js';
const { getUserInfo } = fetch;
export default {
name: 'YwHeader',
data() {
return {
userInfo: {
realName: '',
sex: '',
employeeNumber: '',
userMobile: '',
position: '',
},
showUserInfo: false,
index: origin + '/operation-platform/#/index'
};
},
mounted() {
this.getUserInfo();
},
methods: {
// 获取用户信息
getUserInfo() {
getUserInfo().then(res => {
let result = res?.result || {};
this.userInfo = Object.assign({}, this.userInfo, result);
this.$emit('updateAsideMenu', result?.menuTree || []);
this.$emit('set-global-data', { key: 'userInfo', data: result });
});
},
}
};
</script>
<style lang="less" scoped>
.header {
position: fixed;
top: 0;
right: 0;
left: 0;
// z-index: 20;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 45px;
width: 100%;
min-width: 1400px;
height: 64px;
background: #fff;
box-shadow: 0px 3px 4px 0px rgba(214, 224, 240, 0.3);
.logo {
display: flex;
align-items: center;
cursor: pointer;
img {
margin-right: 10px;
width: 30px;
height: 30px;
}
span {
padding-top: 2px;
font-size: 16px;
color: #303133;
}
}
}
</style>
function getOrigin() {
let origin = window.location.origin;
if (origin.indexOf('localhost') >= 0 || origin.indexOf('172.16') >= 0) {
origin = 'https://www.gicdev.com';
}
return origin;
}
export const origin = getOrigin();
// 请求成功的code
export const succCode = '0';
// 未登录、登录超时code
export const notAuthCode = '4002';
// 后端请求拦截的标识,用于区分是ajax请求还是页面跳转
export const isRequest = { isControl: true };
\ No newline at end of file
const formatMoney = (v, len, split) => {
if (!v) return '0.00';
split = split || ',', len = Math.abs((+len) % 20 || 2);
v = parseFloat((v + '').replace(/[^\d\.-]/g, '')).toFixed(len) + '';
return v.replace(/\d+/, function(v) {
let lit = v.length % 3 == 0;
let index = lit ? v.length - 3 : -1;
return v.split('').reverse().join('').replace(/\d{3}/g, function(k, l) {
return k + ((l == index && lit) ? '' : split);
}).split('').reverse().join('');
});
};
const formatDate = (val, format) => {
if (!val) return '--';
val = new Date(val);
let y = val.getFullYear();
let m = (val.getMonth() + 1).toString().padStart(2, '0');
let d = val.getDate().toString().padStart(2, '0');
let h = val.getHours().toString().padStart(2, '0');
let mm = val.getMinutes().toString().padStart(2, '0');
let s = val.getSeconds().toString().padStart(2, '0');
if (format == 'ymd') {
return y + '-' + m + '-' + d;
} else if (format == 'hms') {
return h + ':' + mm + ':' + s;
}
return `${y}-${m}-${d} ${h}:${mm}:${s}`;
};
// 时间戳转换成年月日
const getTime = (time) => {
if (!isNaN(time)) time = Number(time);
let now = new Date(time);
let year = now.getFullYear();
let month = now.getMonth() + 1;
month = month >= 10 ? month : '0' + month; // 判断小于10月份的情况
let date = now.getDate();
date = date >= 10 ? date : '0' + date; // 判断小于10日的情况
return year + '-' + month + '-' + date;
};
// 时间戳转换成时分秒
const getSeconds = (time) => {
if (!isNaN(time)) time = Number(time);
let now = new Date(time);
let hour = now.getHours();
hour = hour >= 10 ? hour : '0' + hour; // 判断小于10的时的情况
let minute = now.getMinutes();
minute = minute >= 10 ? minute : '0' + minute; // 判断小于10的分的情况
let second = now.getSeconds();
second = second >= 10 ? second : '0' + second; // 判断小于10的秒的情况
return hour + ':' + minute + ':' + second;
};
// 时间戳转换成时分
const getSeconds2 = (time) => {
if (!isNaN(time)) time = Number(time);
let now = new Date(time);
let hour = now.getHours();
hour = hour >= 10 ? hour : '0' + hour; // 判断小于10的时的情况
let minute = now.getMinutes();
minute = minute >= 10 ? minute : '0' + minute; // 判断小于10的分的情况
return hour + ':' + minute;
};
// 时间戳转换成年月日时分秒
const formatDate2 = (time) => {
if (!isNaN(time)) time = Number(time);
let now = new Date(time);
let year = now.getFullYear();
let month = now.getMonth() + 1;
month = month >= 10 ? month : '0' + month; // 判断小于10月份的情况
let date = now.getDate();
date = date >= 10 ? date : '0' + date; // 判断小于10日的情况
let hour = now.getHours();
hour = hour >= 10 ? hour : '0' + hour; // 判断小于10的时的情况
let minute = now.getMinutes();
minute = minute >= 10 ? minute : '0' + minute; // 判断小于10的分的情况
let second = now.getSeconds();
second = second >= 10 ? second : '0' + second; // 判断小于10的秒的情况
return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
};
export default {
formatMoney,
formatDate,
getTime,
getSeconds,
getSeconds2,
formatDate2
};
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
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;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1601001100818'); /* IE9 */
src: url('iconfont.eot?t=1601001100818#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
url('iconfont.woff?t=1601001100818') format('woff'),
url('iconfont.ttf?t=1601001100818') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1601001100818#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.iconexcel:before {
content: "\e897";
}
.iconqiyeguanli:before {
content: "\e65c";
}
.iconquanxianguanli:before {
content: "\e65d";
}
.iconshuaxin:before {
content: "\e65b";
}
.iconshangchuan:before {
content: "\eaf5";
}
.iconxiazai1:before {
content: "\eaf4";
}
.iconmiaozhun:before {
content: "\e659";
}
.iconzhiding:before {
content: "\e658";
}
.iconkoujingguanli:before {
content: "\e657";
}
.icontuozhuai1:before {
content: "\e663";
}
.icontuozhuai:before {
content: "\e656";
}
.iconmobanku:before {
content: "\eacc";
}
.icontongzhiliebiao:before {
content: "\eacb";
}
.iconjiantou-:before {
content: "\e654";
}
.iconpaixu1:before {
content: "\e652";
}
.iconxingbiao-moren:before {
content: "\eaba";
}
.iconxingbiao:before {
content: "\eab9";
}
.iconshouqi:before {
content: "\eab0";
}
.iconzhankai:before {
content: "\e70f";
}
.iconGICyunyingpingtai:before {
content: "\ea98";
}
.iconkaifangpingtai:before {
content: "\e69d";
}
.icontubiao-:before {
content: "\e647";
}
.iconhuiyuanbiaoqian:before {
content: "\e649";
}
.icongongxiaoguanli-:before {
content: "\e64f";
}
.icontiaodu:before {
content: "\e63e";
}
.iconcaiwuguanli:before {
content: "\e63f";
}
.iconicon-test:before {
content: "\e644";
}
.iconxiaochengxuguanli:before {
content: "\e697";
}
.iconguizeyinqing1:before {
content: "\e73c";
}
.iconBI-shaixuanqi:before {
content: "\e645";
}
.iconshangchengguanli:before {
content: "\e64c";
}
.iconrizhiguanli:before {
content: "\e646";
}
.iconchangyongtubiao-xianxingdaochu-zhuanqu-:before {
content: "\e727";
}
.iconshujuzidian:before {
content: "\e639";
}
.iconcaidan1:before {
content: "\e638";
}
.iconkong_huaban:before {
content: "\e637";
}
.iconfujianshangchuan:before {
content: "\e631";
}
.icongengduo-xiangqingye:before {
content: "\e62f";
}
.iconjiankonggaojing:before {
content: "\e6b1";
}
.iconpeizhi2:before {
content: "\e7c1";
}
.iconshangjiaguanli:before {
content: "\e62e";
}
.iconbangzhuzhongxin1:before {
content: "\e62a";
}
.icondanchuang1:before {
content: "\e65a";
}
.iconicon_xinyong_xianxing_jijin-:before {
content: "\e62b";
}
.iconqiye:before {
content: "\e629";
}
.iconnext:before {
content: "\e628";
}
.iconxiaochengxu:before {
content: "\e622";
}
.iconmobanguanli:before {
content: "\e636";
}
.icondaimaguanli:before {
content: "\e63b";
}
.iconshenhetijiao:before {
content: "\e63a";
}
.iconid:before {
content: "\e66c";
}
.icondongzuo:before {
content: "\e64b";
}
.iconGroup-:before {
content: "\e699";
}
.iconchangjing:before {
content: "\e635";
}
.iconziduan:before {
content: "\e68e";
}
.iconguizeyinqing:before {
content: "\e626";
}
.iconziduanjisuan-shuxing:before {
content: "\ec01";
}
.iconfujian:before {
content: "\e633";
}
.iconxuanzhong1:before {
content: "\e625";
}
.icondanchuang:before {
content: "\e99e";
}
.iconpingtaishouye:before {
content: "\e9c1";
}
.iconpeizhiguanli:before {
content: "\e9c0";
}
.iconpeizhi1:before {
content: "\e620";
}
.iconyanxuan:before {
content: "\e915";
}
.iconshaixuan:before {
content: "\e61a";
}
.iconshangpinliebiao:before {
content: "\e624";
}
.icongongyingshangliebiao:before {
content: "\e6a8";
}
.iconViconzq-:before {
content: "\e62c";
}
.iconziyuanzu:before {
content: "\e634";
}
.iconjiaoseguanli:before {
content: "\e613";
}
.iconbumenguanli:before {
content: "\e64e";
}
.iconyonghuguanli:before {
content: "\e614";
}
.icontubiaozhizuomoban:before {
content: "\e623";
}
.iconjichuyingyong:before {
content: "\e60c";
}
.iconfenzu:before {
content: "\e619";
}
.iconbangzhuzhongxin:before {
content: "\e612";
}
.iconzhuanti:before {
content: "\e61f";
}
.iconneirongguanli:before {
content: "\e60b";
}
.iconwendangguanli:before {
content: "\e618";
}
.icongonggaoguanli:before {
content: "\e609";
}
.icongonggaoleixing:before {
content: "\e655";
}
.iconxinjianxiangmu:before {
content: "\e61e";
}
.iconxitongshezhi-duanxinshezhi:before {
content: "\e746";
}
.iconxiangmu:before {
content: "\e604";
}
.iconduanxinqianmingguanli:before {
content: "\e71d";
}
.iconfasongjilu:before {
content: "\e6b6";
}
.iconshanchu1:before {
content: "\e603";
}
.iconicon-jinhuopingtaiH-:before {
content: "\e640";
}
.iconxinzeng:before {
content: "\e686";
}
.icongengduo:before {
content: "\e643";
}
.iconcaozuoshouceshuomingshuzhinanshiyongshouce:before {
content: "\e8d7";
}
.iconyonghufankuisvg:before {
content: "\e616";
}
.iconanzhuo:before {
content: "\e8d5";
}
.iconios:before {
content: "\e8d4";
}
.iconyue:before {
content: "\e602";
}
.iconzhifubaozhifu:before {
content: "\e642";
}
.iconweixinzhifu:before {
content: "\e630";
}
.iconyinhangzhuanzhang_x:before {
content: "\e6dd";
}
.iconjianshao:before {
content: "\e8cc";
}
.iconpaixu:before {
content: "\e887";
}
.iconzhanghaoguanli:before {
content: "\e615";
}
.iconcopylink:before {
content: "\e68f";
}
.iconxuanzhong:before {
content: "\e648";
}
.iconshanchu:before {
content: "\e7d7";
}
.iconbianji:before {
content: "\e653";
}
.iconxiazai:before {
content: "\e611";
}
.iconicon-qihuan:before {
content: "\e60f";
}
.iconsucaiguanli:before {
content: "\e6a4";
}
.icontubiaozhizuomoban-:before {
content: "\e61c";
}
.iconguanggaoweiguanli:before {
content: "\e64a";
}
.icondaohangguanli:before {
content: "\e617";
}
.iconlouceng:before {
content: "\e63d";
}
.iconcebianlan:before {
content: "\e673";
}
.iconpinpaiguanli:before {
content: "\e606";
}
.iconfenleishezhi:before {
content: "\e608";
}
.iconzhifushezhi:before {
content: "\e7fb";
}
.iconsousuoshezhi:before {
content: "\e679";
}
.iconshijian:before {
content: "\e8b2";
}
.iconpeizhi:before {
content: "\e8b3";
}
.iconyulan:before {
content: "\e8b1";
}
.iconquxiao:before {
content: "\e8a7";
}
.iconfabu:before {
content: "\e63c";
}
.iconzhuanzhang:before {
content: "\e60a";
}
.iconyunyingguifancunguan-mian:before {
content: "\edbd";
}
.iconcaiwuguanli_:before {
content: "\e627";
}
.iconzhedie:before {
content: "\e6b8";
}
.iconfenlei:before {
content: "\e6bd";
}
.icongerenzhongxin-:before {
content: "\e632";
}
.iconfuwushang:before {
content: "\e651";
}
.iconaccountnum:before {
content: "\e666";
}
.iconenterpriseapplicati:before {
content: "\e6b7";
}
.icontixianguanli:before {
content: "\e6c1";
}
.iconLicense:before {
content: "\e600";
}
.iconjiekouliebiao:before {
content: "\e6f3";
}
.icontuozhan:before {
content: "\e660";
}
.icondingdan:before {
content: "\e661";
}
.iconyouhuiquanguanli:before {
content: "\e6b4";
}
.iconyingyongguanli-:before {
content: "\e86f";
}
.iconpackage:before {
content: "\e7a7";
}
.iconfuwuguanli:before {
content: "\e601";
}
.iconjiantou-zuo:before {
content: "\e885";
}
.iconshujujiankong:before {
content: "\e60e";
}
.iconrizhi:before {
content: "\e6c6";
}
.iconjiekourizhi:before {
content: "\e60d";
}
.iconxiala1:before {
content: "\e61b";
}
.iconshanghuguanli:before {
content: "\e607";
}
.iconjichuzidian:before {
content: "\e64d";
}
.iconmc-sjtb:before {
content: "\e814";
}
.iconxinxixianshi:before {
content: "\e74f";
}
.iconguanggaoliebiao:before {
content: "\e6c7";
}
.iconbanbenguanli:before {
content: "\e733";
}
.iconcaidan:before {
content: "\e61d";
}
.iconshuoming:before {
content: "\e621";
}
.iconkong:before {
content: "\e650";
}
.iconquanxian:before {
content: "\e610";
}
.iconnav-_shujuzidianpeizhi:before {
content: "\e641";
}
.iconguanbi:before {
content: "\e605";
}
.iconxiala:before {
content: "\e62d";
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"id": "1082954",
"name": "运维平台4.0",
"font_family": "iconfont",
"css_prefix_text": "icon",
"description": "",
"glyphs": [
{
"icon_id": "9458771",
"name": "excel",
"font_class": "excel",
"unicode": "e897",
"unicode_decimal": 59543
},
{
"icon_id": "10122143",
"name": "企业管理",
"font_class": "qiyeguanli",
"unicode": "e65c",
"unicode_decimal": 58972
},
{
"icon_id": "11240679",
"name": "权限管理",
"font_class": "quanxianguanli",
"unicode": "e65d",
"unicode_decimal": 58973
},
{
"icon_id": "5279805",
"name": "刷新",
"font_class": "shuaxin",
"unicode": "e65b",
"unicode_decimal": 58971
},
{
"icon_id": "15977318",
"name": "上传",
"font_class": "shangchuan",
"unicode": "eaf5",
"unicode_decimal": 60149
},
{
"icon_id": "15976942",
"name": "下载",
"font_class": "xiazai1",
"unicode": "eaf4",
"unicode_decimal": 60148
},
{
"icon_id": "15818675",
"name": "瞄准",
"font_class": "miaozhun",
"unicode": "e659",
"unicode_decimal": 58969
},
{
"icon_id": "13799528",
"name": "置顶",
"font_class": "zhiding",
"unicode": "e658",
"unicode_decimal": 58968
},
{
"icon_id": "7532772",
"name": "口径管理",
"font_class": "koujingguanli",
"unicode": "e657",
"unicode_decimal": 58967
},
{
"icon_id": "8007358",
"name": "拖拽",
"font_class": "tuozhuai1",
"unicode": "e663",
"unicode_decimal": 58979
},
{
"icon_id": "11883482",
"name": "拖拽",
"font_class": "tuozhuai",
"unicode": "e656",
"unicode_decimal": 58966
},
{
"icon_id": "15159545",
"name": "模板库",
"font_class": "mobanku",
"unicode": "eacc",
"unicode_decimal": 60108
},
{
"icon_id": "15159419",
"name": "通知列表",
"font_class": "tongzhiliebiao",
"unicode": "eacb",
"unicode_decimal": 60107
},
{
"icon_id": "11173935",
"name": "箭头",
"font_class": "jiantou-",
"unicode": "e654",
"unicode_decimal": 58964
},
{
"icon_id": "10334756",
"name": "排序",
"font_class": "paixu1",
"unicode": "e652",
"unicode_decimal": 58962
},
{
"icon_id": "14903372",
"name": "星标-默认",
"font_class": "xingbiao-moren",
"unicode": "eaba",
"unicode_decimal": 60090
},
{
"icon_id": "14903360",
"name": "星标",
"font_class": "xingbiao",
"unicode": "eab9",
"unicode_decimal": 60089
},
{
"icon_id": "14425078",
"name": "收起",
"font_class": "shouqi",
"unicode": "eab0",
"unicode_decimal": 60080
},
{
"icon_id": "7129466",
"name": "展开",
"font_class": "zhankai",
"unicode": "e70f",
"unicode_decimal": 59151
},
{
"icon_id": "13839813",
"name": "GIC运营平台",
"font_class": "GICyunyingpingtai",
"unicode": "ea98",
"unicode_decimal": 60056
},
{
"icon_id": "10916666",
"name": "开放平台",
"font_class": "kaifangpingtai",
"unicode": "e69d",
"unicode_decimal": 59037
},
{
"icon_id": "12143530",
"name": "运营",
"font_class": "tubiao-",
"unicode": "e647",
"unicode_decimal": 58951
},
{
"icon_id": "12316239",
"name": "会员标签",
"font_class": "huiyuanbiaoqian",
"unicode": "e649",
"unicode_decimal": 58953
},
{
"icon_id": "13345294",
"name": "供销管理",
"font_class": "gongxiaoguanli-",
"unicode": "e64f",
"unicode_decimal": 58959
},
{
"icon_id": "2148511",
"name": "调度",
"font_class": "tiaodu",
"unicode": "e63e",
"unicode_decimal": 58942
},
{
"icon_id": "2934074",
"name": "财务管理",
"font_class": "caiwuguanli",
"unicode": "e63f",
"unicode_decimal": 58943
},
{
"icon_id": "4878603",
"name": "实施运维-导航",
"font_class": "icon-test",
"unicode": "e644",
"unicode_decimal": 58948
},
{
"icon_id": "4970382",
"name": "小程序管理",
"font_class": "xiaochengxuguanli",
"unicode": "e697",
"unicode_decimal": 59031
},
{
"icon_id": "6981717",
"name": "规则引擎",
"font_class": "guizeyinqing1",
"unicode": "e73c",
"unicode_decimal": 59196
},
{
"icon_id": "7676960",
"name": "BI-筛选器",
"font_class": "BI-shaixuanqi",
"unicode": "e645",
"unicode_decimal": 58949
},
{
"icon_id": "10451027",
"name": "商城管理",
"font_class": "shangchengguanli",
"unicode": "e64c",
"unicode_decimal": 58956
},
{
"icon_id": "10788302",
"name": "日志管理",
"font_class": "rizhiguanli",
"unicode": "e646",
"unicode_decimal": 58950
},
{
"icon_id": "10809787",
"name": "通知 喇叭 声音",
"font_class": "changyongtubiao-xianxingdaochu-zhuanqu-",
"unicode": "e727",
"unicode_decimal": 59175
},
{
"icon_id": "9555140",
"name": "数据字典",
"font_class": "shujuzidian",
"unicode": "e639",
"unicode_decimal": 58937
},
{
"icon_id": "3973940",
"name": "菜单",
"font_class": "caidan1",
"unicode": "e638",
"unicode_decimal": 58936
},
{
"icon_id": "8427001",
"name": "空",
"font_class": "kong_huaban",
"unicode": "e637",
"unicode_decimal": 58935
},
{
"icon_id": "9982362",
"name": "附件上传",
"font_class": "fujianshangchuan",
"unicode": "e631",
"unicode_decimal": 58929
},
{
"icon_id": "9134129",
"name": "更多-详情页",
"font_class": "gengduo-xiangqingye",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "2906921",
"name": "监控告警",
"font_class": "jiankonggaojing",
"unicode": "e6b1",
"unicode_decimal": 59057
},
{
"icon_id": "3688112",
"name": "配置",
"font_class": "peizhi2",
"unicode": "e7c1",
"unicode_decimal": 59329
},
{
"icon_id": "7555712",
"name": "商家管理",
"font_class": "shangjiaguanli",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "7641144",
"name": "帮助中心",
"font_class": "bangzhuzhongxin1",
"unicode": "e62a",
"unicode_decimal": 58922
},
{
"icon_id": "8963466",
"name": "弹窗",
"font_class": "danchuang1",
"unicode": "e65a",
"unicode_decimal": 58970
},
{
"icon_id": "10083763",
"name": "数据分析",
"font_class": "icon_xinyong_xianxing_jijin-",
"unicode": "e62b",
"unicode_decimal": 58923
},
{
"icon_id": "9144672",
"name": "企业",
"font_class": "qiye",
"unicode": "e629",
"unicode_decimal": 58921
},
{
"icon_id": "8106002",
"name": "next",
"font_class": "next",
"unicode": "e628",
"unicode_decimal": 58920
},
{
"icon_id": "3552293",
"name": "小程序",
"font_class": "xiaochengxu",
"unicode": "e622",
"unicode_decimal": 58914
},
{
"icon_id": "4599422",
"name": "模板管理",
"font_class": "mobanguanli",
"unicode": "e636",
"unicode_decimal": 58934
},
{
"icon_id": "11661820",
"name": "代码管理",
"font_class": "daimaguanli",
"unicode": "e63b",
"unicode_decimal": 58939
},
{
"icon_id": "8159858",
"name": "审核提交",
"font_class": "shenhetijiao",
"unicode": "e63a",
"unicode_decimal": 58938
},
{
"icon_id": "11673428",
"name": "id",
"font_class": "id",
"unicode": "e66c",
"unicode_decimal": 58988
},
{
"icon_id": "3325496",
"name": "动作",
"font_class": "dongzuo",
"unicode": "e64b",
"unicode_decimal": 58955
},
{
"icon_id": "4685737",
"name": "控件",
"font_class": "Group-",
"unicode": "e699",
"unicode_decimal": 59033
},
{
"icon_id": "6937234",
"name": "场景",
"font_class": "changjing",
"unicode": "e635",
"unicode_decimal": 58933
},
{
"icon_id": "6975145",
"name": "字段",
"font_class": "ziduan",
"unicode": "e68e",
"unicode_decimal": 59022
},
{
"icon_id": "8179969",
"name": "规则引擎",
"font_class": "guizeyinqing",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "9652048",
"name": "字段计算-属性",
"font_class": "ziduanjisuan-shuxing",
"unicode": "ec01",
"unicode_decimal": 60417
},
{
"icon_id": "414140",
"name": "附件",
"font_class": "fujian",
"unicode": "e633",
"unicode_decimal": 58931
},
{
"icon_id": "8487621",
"name": "选中",
"font_class": "xuanzhong1",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "8012357",
"name": "弹窗",
"font_class": "danchuang",
"unicode": "e99e",
"unicode_decimal": 59806
},
{
"icon_id": "12046147",
"name": "平台首页",
"font_class": "pingtaishouye",
"unicode": "e9c1",
"unicode_decimal": 59841
},
{
"icon_id": "12045802",
"name": "配置管理",
"font_class": "peizhiguanli",
"unicode": "e9c0",
"unicode_decimal": 59840
},
{
"icon_id": "9099406",
"name": "配置",
"font_class": "peizhi1",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "11091718",
"name": "严选",
"font_class": "yanxuan",
"unicode": "e915",
"unicode_decimal": 59669
},
{
"icon_id": "10089771",
"name": "筛选",
"font_class": "shaixuan",
"unicode": "e61a",
"unicode_decimal": 58906
},
{
"icon_id": "3379885",
"name": "商品列表",
"font_class": "shangpinliebiao",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "10375654",
"name": "供应商列表",
"font_class": "gongyingshangliebiao",
"unicode": "e6a8",
"unicode_decimal": 59048
},
{
"icon_id": "4190489",
"name": "菜单管理 ",
"font_class": "Viconzq-",
"unicode": "e62c",
"unicode_decimal": 58924
},
{
"icon_id": "1305025",
"name": "资源组",
"font_class": "ziyuanzu",
"unicode": "e634",
"unicode_decimal": 58932
},
{
"icon_id": "4978297",
"name": "角色管理",
"font_class": "jiaoseguanli",
"unicode": "e613",
"unicode_decimal": 58899
},
{
"icon_id": "9016993",
"name": "部门管理",
"font_class": "bumenguanli",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "9593478",
"name": "用户管理",
"font_class": "yonghuguanli",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "2271989",
"name": "授权",
"font_class": "tubiaozhizuomoban",
"unicode": "e623",
"unicode_decimal": 58915
},
{
"icon_id": "6519041",
"name": "基础应用",
"font_class": "jichuyingyong",
"unicode": "e60c",
"unicode_decimal": 58892
},
{
"icon_id": "6524124",
"name": "分组",
"font_class": "fenzu",
"unicode": "e619",
"unicode_decimal": 58905
},
{
"icon_id": "8679269",
"name": "帮助中心",
"font_class": "bangzhuzhongxin",
"unicode": "e612",
"unicode_decimal": 58898
},
{
"icon_id": "9322850",
"name": "专题",
"font_class": "zhuanti",
"unicode": "e61f",
"unicode_decimal": 58911
},
{
"icon_id": "1984604",
"name": "内容管理",
"font_class": "neirongguanli",
"unicode": "e60b",
"unicode_decimal": 58891
},
{
"icon_id": "6473516",
"name": "文档管理",
"font_class": "wendangguanli",
"unicode": "e618",
"unicode_decimal": 58904
},
{
"icon_id": "7357325",
"name": "公告管理",
"font_class": "gonggaoguanli",
"unicode": "e609",
"unicode_decimal": 58889
},
{
"icon_id": "8739129",
"name": "公告类型",
"font_class": "gonggaoleixing",
"unicode": "e655",
"unicode_decimal": 58965
},
{
"icon_id": "5669269",
"name": "新建项目",
"font_class": "xinjianxiangmu",
"unicode": "e61e",
"unicode_decimal": 58910
},
{
"icon_id": "9400720",
"name": "系统设置-短信设置",
"font_class": "xitongshezhi-duanxinshezhi",
"unicode": "e746",
"unicode_decimal": 59206
},
{
"icon_id": "4267511",
"name": "项目",
"font_class": "xiangmu",
"unicode": "e604",
"unicode_decimal": 58884
},
{
"icon_id": "9995633",
"name": "短信签名管理",
"font_class": "duanxinqianmingguanli",
"unicode": "e71d",
"unicode_decimal": 59165
},
{
"icon_id": "10110464",
"name": "发送记录",
"font_class": "fasongjilu",
"unicode": "e6b6",
"unicode_decimal": 59062
},
{
"icon_id": "6883949",
"name": "删除",
"font_class": "shanchu1",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "3709845",
"name": "clear",
"font_class": "icon-jinhuopingtaiH-",
"unicode": "e640",
"unicode_decimal": 58944
},
{
"icon_id": "4674679",
"name": "新增",
"font_class": "xinzeng",
"unicode": "e686",
"unicode_decimal": 59014
},
{
"icon_id": "5959484",
"name": "更多",
"font_class": "gengduo",
"unicode": "e643",
"unicode_decimal": 58947
},
{
"icon_id": "10343843",
"name": "使用手册",
"font_class": "caozuoshouceshuomingshuzhinanshiyongshouce",
"unicode": "e8d7",
"unicode_decimal": 59607
},
{
"icon_id": "6723775",
"name": "用户反馈svg",
"font_class": "yonghufankuisvg",
"unicode": "e616",
"unicode_decimal": 58902
},
{
"icon_id": "10343118",
"name": "安卓",
"font_class": "anzhuo",
"unicode": "e8d5",
"unicode_decimal": 59605
},
{
"icon_id": "10342482",
"name": "ios",
"font_class": "ios",
"unicode": "e8d4",
"unicode_decimal": 59604
},
{
"icon_id": "5761368",
"name": "余额",
"font_class": "yue",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "5934100",
"name": "支付宝支付",
"font_class": "zhifubaozhifu",
"unicode": "e642",
"unicode_decimal": 58946
},
{
"icon_id": "6133627",
"name": "微信支付",
"font_class": "weixinzhifu",
"unicode": "e630",
"unicode_decimal": 58928
},
{
"icon_id": "9710205",
"name": "银行转帐_60x60",
"font_class": "yinhangzhuanzhang_x",
"unicode": "e6dd",
"unicode_decimal": 59101
},
{
"icon_id": "10294949",
"name": "减少",
"font_class": "jianshao",
"unicode": "e8cc",
"unicode_decimal": 59596
},
{
"icon_id": "9448499",
"name": "排序",
"font_class": "paixu",
"unicode": "e887",
"unicode_decimal": 59527
},
{
"icon_id": "7491485",
"name": "账号管理",
"font_class": "zhanghaoguanli",
"unicode": "e615",
"unicode_decimal": 58901
},
{
"icon_id": "2409950",
"name": "复制链接",
"font_class": "copylink",
"unicode": "e68f",
"unicode_decimal": 59023
},
{
"icon_id": "7898990",
"name": "选中",
"font_class": "xuanzhong",
"unicode": "e648",
"unicode_decimal": 58952
},
{
"icon_id": "7957263",
"name": "删 除",
"font_class": "shanchu",
"unicode": "e7d7",
"unicode_decimal": 59351
},
{
"icon_id": "639704",
"name": "编辑",
"font_class": "bianji",
"unicode": "e653",
"unicode_decimal": 58963
},
{
"icon_id": "687576",
"name": "下载",
"font_class": "xiazai",
"unicode": "e611",
"unicode_decimal": 58897
},
{
"icon_id": "1327132",
"name": "切换",
"font_class": "icon-qihuan",
"unicode": "e60f",
"unicode_decimal": 58895
},
{
"icon_id": "5425891",
"name": "素材管理",
"font_class": "sucaiguanli",
"unicode": "e6a4",
"unicode_decimal": 59044
},
{
"icon_id": "2016384",
"name": "轮播图",
"font_class": "tubiaozhizuomoban-",
"unicode": "e61c",
"unicode_decimal": 58908
},
{
"icon_id": "3287654",
"name": "广告位管理",
"font_class": "guanggaoweiguanli",
"unicode": "e64a",
"unicode_decimal": 58954
},
{
"icon_id": "5692953",
"name": "导航管理",
"font_class": "daohangguanli",
"unicode": "e617",
"unicode_decimal": 58903
},
{
"icon_id": "8946582",
"name": "楼层",
"font_class": "louceng",
"unicode": "e63d",
"unicode_decimal": 58941
},
{
"icon_id": "10136272",
"name": "侧边栏",
"font_class": "cebianlan",
"unicode": "e673",
"unicode_decimal": 58995
},
{
"icon_id": "6179993",
"name": "品牌管理",
"font_class": "pinpaiguanli",
"unicode": "e606",
"unicode_decimal": 58886
},
{
"icon_id": "3079327",
"name": "分类设置",
"font_class": "fenleishezhi",
"unicode": "e608",
"unicode_decimal": 58888
},
{
"icon_id": "3769478",
"name": "支付设置",
"font_class": "zhifushezhi",
"unicode": "e7fb",
"unicode_decimal": 59387
},
{
"icon_id": "10071870",
"name": "43搜索设置",
"font_class": "sousuoshezhi",
"unicode": "e679",
"unicode_decimal": 59001
},
{
"icon_id": "10013653",
"name": "时间",
"font_class": "shijian",
"unicode": "e8b2",
"unicode_decimal": 59570
},
{
"icon_id": "10013654",
"name": "配置 (1)",
"font_class": "peizhi",
"unicode": "e8b3",
"unicode_decimal": 59571
},
{
"icon_id": "10013388",
"name": "预览 (1)",
"font_class": "yulan",
"unicode": "e8b1",
"unicode_decimal": 59569
},
{
"icon_id": "2901157",
"name": "取消",
"font_class": "quxiao",
"unicode": "e8a7",
"unicode_decimal": 59559
},
{
"icon_id": "7573188",
"name": "发布",
"font_class": "fabu",
"unicode": "e63c",
"unicode_decimal": 58940
},
{
"icon_id": "1511876",
"name": "转账",
"font_class": "zhuanzhang",
"unicode": "e60a",
"unicode_decimal": 58890
},
{
"icon_id": "8243535",
"name": "运营规范存管-面",
"font_class": "yunyingguifancunguan-mian",
"unicode": "edbd",
"unicode_decimal": 60861
},
{
"icon_id": "9638486",
"name": "财务管理_2",
"font_class": "caiwuguanli_",
"unicode": "e627",
"unicode_decimal": 58919
},
{
"icon_id": "2137283",
"name": "折叠",
"font_class": "zhedie",
"unicode": "e6b8",
"unicode_decimal": 59064
},
{
"icon_id": "4140237",
"name": "分类",
"font_class": "fenlei",
"unicode": "e6bd",
"unicode_decimal": 59069
},
{
"icon_id": "6540503",
"name": "保证金",
"font_class": "gerenzhongxin-",
"unicode": "e632",
"unicode_decimal": 58930
},
{
"icon_id": "4146541",
"name": "服务商",
"font_class": "fuwushang",
"unicode": "e651",
"unicode_decimal": 58961
},
{
"icon_id": "1828470",
"name": "账号管理",
"font_class": "accountnum",
"unicode": "e666",
"unicode_decimal": 58982
},
{
"icon_id": "4925940",
"name": "企业应用",
"font_class": "enterpriseapplicati",
"unicode": "e6b7",
"unicode_decimal": 59063
},
{
"icon_id": "7717788",
"name": "提现管理",
"font_class": "tixianguanli",
"unicode": "e6c1",
"unicode_decimal": 59073
},
{
"icon_id": "9171528",
"name": "License",
"font_class": "License",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "2544323",
"name": "接口列表",
"font_class": "jiekouliebiao",
"unicode": "e6f3",
"unicode_decimal": 59123
},
{
"icon_id": "2286418",
"name": "拓展",
"font_class": "tuozhan",
"unicode": "e660",
"unicode_decimal": 58976
},
{
"icon_id": "5906887",
"name": "订单管理",
"font_class": "dingdan",
"unicode": "e661",
"unicode_decimal": 58977
},
{
"icon_id": "6033141",
"name": "优惠券管理",
"font_class": "youhuiquanguanli",
"unicode": "e6b4",
"unicode_decimal": 59060
},
{
"icon_id": "6715843",
"name": "应用管理",
"font_class": "yingyongguanli-",
"unicode": "e86f",
"unicode_decimal": 59503
},
{
"icon_id": "7723356",
"name": "套餐包",
"font_class": "package",
"unicode": "e7a7",
"unicode_decimal": 59303
},
{
"icon_id": "9087204",
"name": "服务管理",
"font_class": "fuwuguanli",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "9383360",
"name": "箭头-左",
"font_class": "jiantou-zuo",
"unicode": "e885",
"unicode_decimal": 59525
},
{
"icon_id": "3337179",
"name": "数据监控",
"font_class": "shujujiankong",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "2280405",
"name": "日志",
"font_class": "rizhi",
"unicode": "e6c6",
"unicode_decimal": 59078
},
{
"icon_id": "6682657",
"name": "接口日志",
"font_class": "jiekourizhi",
"unicode": "e60d",
"unicode_decimal": 58893
},
{
"icon_id": "7524368",
"name": "下 拉",
"font_class": "xiala1",
"unicode": "e61b",
"unicode_decimal": 58907
},
{
"icon_id": "955525",
"name": "商户管理",
"font_class": "shanghuguanli",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "8087621",
"name": "基础字典",
"font_class": "jichuzidian",
"unicode": "e64d",
"unicode_decimal": 58957
},
{
"icon_id": "8220752",
"name": "操作-数据同步",
"font_class": "mc-sjtb",
"unicode": "e814",
"unicode_decimal": 59412
},
{
"icon_id": "6055317",
"name": "信息 显示",
"font_class": "xinxixianshi",
"unicode": "e74f",
"unicode_decimal": 59215
},
{
"icon_id": "4387368",
"name": "广告列表",
"font_class": "guanggaoliebiao",
"unicode": "e6c7",
"unicode_decimal": 59079
},
{
"icon_id": "7469561",
"name": "版本管理16",
"font_class": "banbenguanli",
"unicode": "e733",
"unicode_decimal": 59187
},
{
"icon_id": "7708032",
"name": "菜单",
"font_class": "caidan",
"unicode": "e61d",
"unicode_decimal": 58909
},
{
"icon_id": "6026391",
"name": "说明",
"font_class": "shuoming",
"unicode": "e621",
"unicode_decimal": 58913
},
{
"icon_id": "6021044",
"name": "空",
"font_class": "kong",
"unicode": "e650",
"unicode_decimal": 58960
},
{
"icon_id": "2901166",
"name": "权限管理",
"font_class": "quanxian",
"unicode": "e610",
"unicode_decimal": 58896
},
{
"icon_id": "4556089",
"name": "nav-1_数据字典配置",
"font_class": "nav-_shujuzidianpeizhi",
"unicode": "e641",
"unicode_decimal": 58945
},
{
"icon_id": "6086138",
"name": "关 闭",
"font_class": "guanbi",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "5378297",
"name": "下 拉",
"font_class": "xiala",
"unicode": "e62d",
"unicode_decimal": 58925
}
]
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<template>
<div class="layout">
<yw-header @updateAsideMenu="updateAsideMenu" @set-global-data="setGlobalData"></yw-header>
<div class="bottomBox">
<aside-menu :menu="menu"></aside-menu>
<main class="main">
<div class="breadcrumb" v-show="breadcrumbList.length">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-for="item in breadcrumbList" :key="item" :to="item.path ? { path: item.path } : null">{{ item.name }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="content" :class="{ noBread: !breadcrumbList.length }">
<router-view class="routerCon" @getBread="getBread" />
</div>
</main>
</div>
</div>
</template>
<script>
import ywHeader from '@/components/yw-header.vue';
import asideMenu from '@/components/aside-menu.vue';
export default {
name: 'Layout',
components: {
ywHeader,
asideMenu,
},
provide() {
return {
globalData: this.globalData,
};
},
data() {
return {
menu: [],
breadcrumbList: [],
globalData: {},
};
},
methods: {
updateAsideMenu(menu) {
this.menu = menu || [];
},
getBread(val) {
this.breadcrumbList = val || [];
},
setGlobalData(data) {
this.$set(this.globalData, data.key, data.data);
},
}
};
</script>
<style lang="scss" scoped>
.layout {
min-width: 1400px;
height: 100vh;
}
.bottomBox {
padding: 20px;
height: 100%;
}
.main {
position: relative;
top: 64px;
left: 210px;
right: 0;
bottom: 0;
z-index: 1;
width: calc(100% - 210px);
height: calc(100% - 64px);
}
.breadcrumb {
display: flex;
align-items: center;
padding-left: 20px;
height: 50px;
background-color: #fff;
box-shadow: 0px 3px 4px 0px rgba(214, 224, 240, 0.3);
border-bottom: 1px solid #E6E7EB;
}
.content {
height: calc(100% - 50px);
// overflow-y: auto;
.routerCon {
min-height: 100%;
background-color: #fff;
margin: 0 0 20px 0;
}
}
.noBread {
height: 100%;
}
</style>
import '@/styles/reset.less';
import '@/styles/component.less';
// import './images/font-icon/iconfont.css';
// import './images/font-icon/iconfont.js';
import axios from 'axios';
import Vue from 'vue';
import App from './App.vue';
import router from './router';
import { isRequest } from '@/config';
import filters from '@/filters';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
// 请求头这种添加请求标识
Vue.use(ElementUI);
// 复制粘贴
import VueClipboard from 'vue-clipboard2';
Vue.use(VueClipboard);
axios.defaults.headers.common = Object.assign(axios.defaults.headers.common, isRequest);
axios.defaults.withCredentials = true;
Vue.config.productionTip = false;
Vue.prototype.axios = axios;
// 开启vue devtools.....
/* eslint-disable-next-line */
Vue.config.devtools = process.env.NODE_ENV !== 'production';
// 全局引入filter
Object.keys(filters).forEach(item => Vue.filter(item, filters[item]));
new Vue({
router,
render: h => h(App)
}).$mount('#app');
// eslint-disable-next-line
module.exports = (parantfile, file) => {
return () => import('@/views/' + parantfile + '/' + file + '.vue');
};
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
import { routes } from './routes.js';
// import Layout from '@/layout/layout';
export const staticRoutes = [
{
path: '*',
component: () => import('@/views/404.vue')
}
];
export const asyncRoutes = [
...routes
];
const router = new VueRouter({
// mode: 'history',
// base: '/gic-operation/',
routes: [ ...staticRoutes, ...asyncRoutes ]
});
export default router;
import Layout from '@/layout/layout.vue';
import _import from './import';
export const routes = [
{
path: '/',
name: '短信管理',
redirect: '/messageTemplate',
component: Layout,
children: [
{
path: '/messageTemplate',
name: '短信模板管理',
component: _import('message', 'index')
},
{
path: '/messagePass',
name: '短信通道管理',
},
]
}
];
// selected background color
@blue-selected: #f0f5ff;
// hover
@blue-hover: #597ef7;
// click
@blue-click: #1d39c4;
// normal、link、brand color
@blue: #2f54ed;
// success
@green-success: #52c41a;
// warning
@yellow-warning: #faad14;
// success
@red-error: #f5222d;
// 标题文字
@gray01: #303133;
// 常规信息、按钮文字
@gray02: #606266;
// 内容文字、说明文字
@gray03: #909399;
// 输入框说明文字
@gray-placeholder: #c0c4cc;
// 线框、输入框、下拉框的边框颜色
@gray-border: #c4c6cf;
// tab选项卡、表格单元格底部分割线
@gray-tab: #dcdfe6;
// 表头背景色
@gray-thead: #ebecf0;
// 分割线的颜色
@gray-separator: #e4e7ed;
// 背景底色
@gray-background: #f0f2f5;
// 输入框禁止输入的颜色
@gray-disable: #f5f7fa;
.damolish {
.el-table .cell,
.el-table th div,
.el-table--border td:first-child .cell,
.el-table--border th:first-child .cell {
padding-left: 10px;
}
}
.right_content {
padding: 10px;
}
.mr10 {
margin-right: 10px;
}
.ml10 {
margin-left: 10px;
}
.mt10 {
margin-top: 10px;
}
.mb10 {
margin-bottom: 10px;
}
\ No newline at end of file
/**
* Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
* http://cssreset.com
*/
@import "./colors.less";
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video,
input {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font-weight: normal;
vertical-align: baseline;
box-sizing: border-box;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
/* custom */
a {
color: inherit;
text-decoration: none;
-webkit-backface-visibility: hidden;
}
li {
list-style: none;
}
input::-webkit-input-placeholder{
color: @gray-placeholder;
}
input:-ms-input-placeholder{
color: @gray-placeholder;
}
input::-moz-placeholder{
color: @gray-placeholder;
}
::-webkit-scrollbar {
width: 5px;
height: 5px;
-webkit-border-radius: 6px;
border-radius: 6px;
}
::-webkit-scrollbar-track {
-webkit-border-radius: 6px;
border-radius: 6px;
}
::-webkit-scrollbar-track-piece {
/*background-color: rgba(0, 0, 0, 0.2);
-webkit-border-radius: 6px;*/
}
::-webkit-scrollbar-thumb {
-webkit-border-radius: 6px;
border-radius: 6px;
background-color: rgba(0, 0, 0, 0.1)
}
@-moz-document url-prefix(http: //),url-prefix(https://) {
/* 滚动条颜色 */
scrollbar {
-moz-appearance: none !important;
width: 5px;
height: 5px;
-webkit-border-radius: 6px;
border-radius: 6px;
}
/* 滚动条按钮颜色 */
thumb, scrollbarbutton {
-moz-appearance: none !important;
}
/* 鼠标悬停时按钮颜色 */
thumb:hover, scrollbarbutton:hover {
-moz-appearance: none !important;
}
/* 隐藏上下箭头 */
scrollbarbutton {
display: none !important;
}
/* 纵向滚动条宽度 */
scrollbar[orient="vertical"] {
/*min-width: 15px !important;*/
}
}
scrollbar {
/* clear useragent default style*/
-moz-appearance: none !important;
}
/* buttons at two ends */
scrollbarbutton {
-moz-appearance: none !important;
}
/* the sliding part*/
thumb {
-moz-appearance: none !important;
}
scrollcorner {
-moz-appearance: none !important;
resize: both;
}
/* vertical or horizontal */
scrollbar[orient="vertical"] {
color: silver;
}
-moz-scrollbar-track {
width: 5px;
border: none;
background: #ff0000;
}
-moz-scrollbar-face {
width: 5px;
border: none;
background: #ff0000;
}
-moz-scrollbar-arrow {
width: 5px;
border: none;
background: #ff0000;
}
-moz-scrollbar {
-moz-scrollbar-width: 15px;
-moz-scrollbar-border: 1px solid black;
-moz-scrollbar-background-color: white;
-moz-scrollbar-track-background-color: silver;
-moz-scrollbar-arrow-background-color: silver;
-moz-scrollbar-arrow-color: blue;
}
/*::-webkit-scrollbar-button {
color: #c8cbd3;
}*/
html, body {
width: 100%;
height: 100%;
background-color: @gray-background;
font-size: 14px;
font-family: "Helvetica Neue", "Helvetica", "PingFang SC", "Hiragino Sans GB","Microsoft YaHei", "微软雅黑", Arial, sans-serif;
}
body {
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
input:focus {
box-shadow: none;
outline: none;
}
.el-breadcrumb__inner a:hover,
.el-breadcrumb__inner.is-link:hover{
color: #2f54ed !important;
}
.damolish .el-step__head.is-finish{
color: #2f54ed;
border-color: #2f54ed;
}
.damolish .el-step__title.is-finish{
color: #2f54ed;
}
.damolish .el-step__description.is-finish{
color: #2f54ed;
}
\ No newline at end of file
const TokenKey = 'Admin-Token';
export function getToken() {
return localStorage.getItem(TokenKey);
}
export function setToken(token) {
return localStorage.setItem(TokenKey, token);
}
export function removeToken() {
return localStorage.removeItem(TokenKey);
}
import Vue from 'vue';
import Clipboard from 'clipboard';
function clipboardSuccess() {
Vue.prototype.$message({
message: 'Copy successfully',
type: 'success',
duration: 1500
});
}
function clipboardError() {
Vue.prototype.$message({
message: 'Copy failed',
type: 'error'
});
}
export default function handleClipboard(text, event) {
const clipboard = new Clipboard(event.target, {
text: () => text
});
clipboard.on('success', () => {
clipboardSuccess();
clipboard.off('error');
clipboard.off('success');
clipboard.destroy();
});
clipboard.on('error', () => {
clipboardError();
clipboard.off('error');
clipboard.off('success');
clipboard.destroy();
});
clipboard.onClick(event);
}
import axios from 'axios';
import qs from 'qs';
import { Message } from 'element-ui';
import { origin } from '@/config/index.js';
axios.defaults.baseURL = origin;
const request = (opt, params) => {
params = Object.assign({}, params);
opt = Object.assign({}, opt);
let requestConfig = {
// 请求路径
url: '',
params: '',
data: '',
// 请求type
method: 'get',
// request body 是否使用 formData格式
useFormData: false,
// response 是否使用 code === '0000' 验证
useIntercept: true,
// 设置headers
headers: {}
};
requestConfig = Object.assign(requestConfig, opt);
if (requestConfig.useFormData) params = qs.stringify(params);
switch (requestConfig.method.toLowerCase()) {
case 'get':
requestConfig.params = params;
break;
case 'post':
requestConfig.data = qs.stringify(params);
break;
default:
requestConfig.data = params;
break;
}
return new Promise((resolve, reject) => {
axios(requestConfig).then(res => {
let resp = res.data;
if (resp.errorCode != 0) {
Message({
message: resp.message || '未知错误',
type: 'warning'
});
return reject(resp);
}
resolve(resp);
}).catch(error => {
let response = error.response || {};
let data = response.data || {};
Message({
message: data.message || '网络连接异常',
type: 'warning'
});
reject(error);
});
});
};
export { axios, request };
<template>
<div class="not-found">您访问的页面被外星人带走啦...</div>
</template>
<script>
export default {
name: '404'
};
</script>
<style lang="scss" scoped>
.not-found {
display: flex;
justify-content: center;
align-items: center;
padding-bottom: 10vh;
width: 100vw;
height: 100vh;
background-color: #eee;
}
</style>
<template>
<div class="container right_content">
<div class="search">
<el-input v-model="searchText" prefix-icon="el-icon-search" placeholder="请输入品牌名称/公司名称" style="width: 234px" />
<el-select v-model="mode" placeholder="选择发送模式" class="ml10">
<el-option v-for="(item, index) in passList" :key="index" :value="item.value">{{ item.label }}</el-option>
</el-select>
</div>
<el-table :data="tableData.data" element-loading-text="拼命加载中">
<el-table-column v-for="(v, i) in tableData.tableHeader" :key="i" :prop="v.prop" :min-width="v.minWidth" :label="v.label" :formatter="v.formatter" :fixed="v.fixed" show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
<span v-else>{{ scope.row[v.prop] || '--' }}</span>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="{ row }">
<el-button type="text" @click="toDetail(row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<dm-pagination background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="tableData.currentPage" :page-sizes="tableData.pageSizeList" :page-size="tableData.pageSize" layout="total, sizes, prev, pager, next" :total="tableData.total" hide-on-single-page />
</div>
</template>
<script>
export default {
data() {
return {
passList: [
{
label: '多通道',
value: 1
},
{
label: '腾讯云',
value: 2
},
{
label: '大汉三通',
value: 3
}
],
search: {
searchText: '',
mode: 0
},
tableData: {
data: [],
currentPage: 1,
pageSizeList: [ 20, 40, 60, 80 ],
pageSize: 20,
tableHeader: [],
total: 0
}
};
},
created() {
this.getTableHeader();
},
methods: {
// table methods
getTableHeader() {
this.tableData.tableHeader = [
{ label: '手机号', prop: 'phoneNumber' },
{ label: '黑名单原因', prop: 'reason' },
{ label: '操作人', prop: 'creatorName' }
];
},
async getTableData() {
// const { currentPage, pageSize } = this.tableData;
// const { phone, time } = this.search;
// const para = {
// currentPage,
// pageSize,
// phoneNumber: phone,
// startTime: new Date(time[0]).getTime() || '',
// endTime: new Date(time[1]).getTime() || ''
// };
// const result = await getBlackList(para);
// this.tableData.data = result.result.result || [];
// this.tableData.total = result.result.totalCount || 0;
},
handleSizeChange(val) {
this.tableData.pageSize = val;
this.tableData.currentPage = 1;
this.getTableData();
},
handleCurrentChange(val) {
this.tableData.currentPage = val;
this.getTableData();
},
toDetail(row) {
console.log(row);
}
}
};
</script>
<style scoped lang="scss"></style>
<template>
<div class="no-access">
<p>Sorry,您无该页面的访问权限,请联系超级管理员!</p>
</div>
</template>
<script>
export default {
name: 'NoAccess'
};
</script>
<style lang="scss" scoped>
.no-access {
display: flex;
justify-content: center;
align-items: center;
padding-bottom: 10vh;
width: 100vw;
height: 100vh;
font-size: 16px;
background-color: #eee;
}
</style>
const path = require("path");
module.exports = {
productionSourceMap: process.env.NODE_ENV !== 'production',
publicPath: process.env.NODE_ENV === 'production' ? '/goods-operation' : '/',
devServer: {
overlay: {
warnings: true,
errors: true
},
},
configureWebpack: config => {
config.externals = {
vue: 'Vue',
// 'vue-router': 'VueRouter',
// vuex: 'Vuex',
// axios: 'axios',
// 'element-ui': 'ELEMENT',
// BMap: 'BMap'
};
if (process.env.NODE_ENV === 'production') {
config.optimization.minimizer[0].options.terserOptions.compress.warnings = false;
config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true;
config.optimization.minimizer[0].options.terserOptions.compress.drop_debugger = true;
config.optimization.minimizer[0].options.terserOptions.compress.pure_funcs = [
'console.log'
];
}
}
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment