Commit cc9218a6 by 无尘

feat: 新增好办4.0 运营后台前端项目

parent 81738ae5
> 1%
last 2 versions
[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
# http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
!/src
/src/images
/dist/
/*.js
src/assets
public
static
// 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 驼峰风格的
// @off 【涉及到 很多 api 或文件名可能都不是 camelcase 先关闭】
camelcase: 0,
// @fixable 禁止在行首写逗号
"comma-style": [2, "last"],
// @fixable 一个缩进必须用两个空格替代
// @off 【不限制大家,为了关闭eslint默认值,所以手动关闭,off不可去掉】 讨论
indent: [2, 2,{ "SwitchCase": 1 }],
//@off 手动关闭//前面需要回车的规则 注释
"spaced-comment": 0,
//@off 手动关闭: 禁用行尾空白
"no-trailing-spaces": 2,
//@off 手动关闭: 不允许多行回车
"no-multiple-empty-lines": 1,
//@off 手动关闭: 逗号前必须加空格
"comma-spacing": 0,
//@off 手动关闭: 冒号后必须加空格
"key-spacing": 1,
// @fixable 结尾禁止使用分号
//@off [vue官方推荐无分号,不知道大家是否可以接受?先手动off掉] 讨论
// "semi": [2,"never"],
semi: 0,
// 代码块嵌套的深度禁止超过 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"],
// -----------------------------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": 0,
// ---------------------------------被关闭的规则-----------------------
// parseInt必须指定第二个参数 parseInt("071",10);
radix: 0,
//强制使用一致的反勾号、双引号或单引号 (quotes) 关闭
quotes: [1, "single"],
//要求或禁止函数圆括号之前有一个空格
"space-before-function-paren": [0, "always"],
//禁止或强制圆括号内的空格
"space-in-parens": [0, "never"],
//关键字后面是否要空一格
"space-after-keywords": [0, "always"],
// 要求或禁止在函数标识符和其调用之间有空格
"func-call-spacing": [0, "never"]
}
};
.DS_Store
node_modules
dm-layout
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
yarn.lock
index-1.js
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2020-07-16 16:36:48
* @LastEditors: 无尘
* @LastEditTime: 2020-07-21 09:51:15
-->
# 好办 4.0 运营后台前端项目
> 由于 `node-sass` 经常出现下载问题,项目中尽量统一使用 less
## Build Setup
```bash
# clone the project
git clone
# enter the project directory
cd haoban-4
# install dependency
npm install
# develop
npm run dev
```
This will automatically open http://localhost:8088
## Build
```bash
# build for production environment
npm run build
```
## Browsers support
Modern browsers and Internet Explorer 10+.
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
| --------- | --------- | --------- | --------- |
| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
## License
[MIT]() license.
Copyright (c) 2020-present
\ No newline at end of file
module.exports = {
presets: [
'@vue/app'
]
}
{
"name": "haoban-operation-4",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"dev": "npm run serve",
"start": "npm run serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"awesome-phonenumber": "^2.35.0",
"axios": "^0.19.0",
"babel-polyfill": "^6.26.0",
"clipboard": "^2.0.4",
"core-js": "^2.6.5",
"element-ui": "^2.13.2",
"vue": "^2.6.10",
"vue-router": "^3.0.3",
"vuex": "^3.0.1"
},
"devDependencies": {
"@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",
"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",
"style-resources-loader": "^1.3.3",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.2",
"vue-template-compiler": "^2.6.10"
},
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"*.{js,vue}": [
"vue-cli-service lint",
"git add"
]
}
}
module.exports = {
plugins: {
autoprefixer: {}
}
}
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2020-07-16 16:37:05
* @LastEditors: 无尘
* @LastEditTime: 2020-07-16 18:12:33
-->
<!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 %>favicon.ico">
<link rel="stylesheet" type="text/css" href="//web-1251519181.file.myqcloud.com/custom-element/custom-element.1.0.39.css" />
<link rel="stylesheet" type="text/css" href="<%= BASE_URL %>static/fonts/iconfont.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>
<!-- built files will be auto injected -->
<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/lib-4.0/vuex/3.0.1/vuex.js"></script>
<script src="//web-1251519181.file.myqcloud.com/lib-4.0/axios/0.19.0/axios.min.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/layout.1.2.41.js"></script>
</body>
</html>
/* 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;
}
{
"id": "1434755",
"name": "GIC4.0 营销",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "2110662",
"name": "二维码",
"font_class": "erweima",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "3964103",
"name": "免费福利的副本-01",
"font_class": "mianfeifulidefuben-",
"unicode": "e724",
"unicode_decimal": 59172
},
{
"icon_id": "13265224",
"name": "通知公告",
"font_class": "tongzhigonggao",
"unicode": "e659",
"unicode_decimal": 58969
},
{
"icon_id": "8866671",
"name": "已删除",
"font_class": "yishanchu",
"unicode": "e6af",
"unicode_decimal": 59055
},
{
"icon_id": "4778433",
"name": "卡券展架",
"font_class": "qiaquan-",
"unicode": "e6ba",
"unicode_decimal": 59066
},
{
"icon_id": "12797879",
"name": "成就奖章",
"font_class": "chengjiujiangzhang",
"unicode": "ea42",
"unicode_decimal": 59970
},
{
"icon_id": "12797876",
"name": "会员任务",
"font_class": "huiyuanrenwu",
"unicode": "ea41",
"unicode_decimal": 59969
},
{
"icon_id": "6817288",
"name": "小程序",
"font_class": "xiaochengxu",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "12136395",
"name": "同步记录",
"font_class": "tongbujilu",
"unicode": "e9c4",
"unicode_decimal": 59844
},
{
"icon_id": "12136294",
"name": "卡券投放",
"font_class": "kaquantoufang",
"unicode": "e9c3",
"unicode_decimal": 59843
},
{
"icon_id": "3978703",
"name": "列表",
"font_class": "liebiao",
"unicode": "e654",
"unicode_decimal": 58964
},
{
"icon_id": "10480689",
"name": "卡片",
"font_class": "kapian",
"unicode": "e606",
"unicode_decimal": 58886
},
{
"icon_id": "9448499",
"name": "排序",
"font_class": "paixu",
"unicode": "e887",
"unicode_decimal": 59527
},
{
"icon_id": "11636491",
"name": "刷新",
"font_class": "shuaxin",
"unicode": "e962",
"unicode_decimal": 59746
},
{
"icon_id": "876514",
"name": "上传",
"font_class": "shangchuan",
"unicode": "e667",
"unicode_decimal": 58983
},
{
"icon_id": "6927557",
"name": "zhankai-2",
"font_class": "zhankai-",
"unicode": "e793",
"unicode_decimal": 59283
},
{
"icon_id": "6929749",
"name": "zhongzhi",
"font_class": "zhongzhi",
"unicode": "e794",
"unicode_decimal": 59284
},
{
"icon_id": "6790692",
"name": "背景音乐音乐",
"font_class": "beijingyinleyinle",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "11531059",
"name": "暂停",
"font_class": "shitinghui1",
"unicode": "e954",
"unicode_decimal": 59732
},
{
"icon_id": "11531045",
"name": "试听",
"font_class": "shitinghui",
"unicode": "e953",
"unicode_decimal": 59731
},
{
"icon_id": "11528118",
"name": "游戏列表",
"font_class": "gerenzhongxin_wodeyouxi-xuanzhong",
"unicode": "e952",
"unicode_decimal": 59730
},
{
"icon_id": "11518592",
"name": "录音播放",
"font_class": "luyinbofang",
"unicode": "e951",
"unicode_decimal": 59729
},
{
"icon_id": "8262371",
"name": "上移",
"font_class": "shangyi",
"unicode": "e69d",
"unicode_decimal": 59037
},
{
"icon_id": "8262372",
"name": "下移",
"font_class": "xiayi",
"unicode": "e69e",
"unicode_decimal": 59038
},
{
"icon_id": "11498968",
"name": "添加",
"font_class": "tianjia",
"unicode": "e950",
"unicode_decimal": 59728
},
{
"icon_id": "4780314",
"name": "更多",
"font_class": "gengduo",
"unicode": "e733",
"unicode_decimal": 59187
},
{
"icon_id": "4118258",
"name": "选择",
"font_class": "xuanze",
"unicode": "e86e",
"unicode_decimal": 59502
},
{
"icon_id": "11481969",
"name": "微信营销",
"font_class": "duanxinmobanku",
"unicode": "e94e",
"unicode_decimal": 59726
},
{
"icon_id": "11481929",
"name": "素材库",
"font_class": "sucaiku",
"unicode": "e94d",
"unicode_decimal": 59725
},
{
"icon_id": "11466838",
"name": "短信模板库",
"font_class": "moban",
"unicode": "e94a",
"unicode_decimal": 59722
},
{
"icon_id": "11466650",
"name": "短息群发",
"font_class": "duanxiqunfa",
"unicode": "e949",
"unicode_decimal": 59721
},
{
"icon_id": "11464168",
"name": "话术模板",
"font_class": "zidingyi",
"unicode": "e948",
"unicode_decimal": 59720
},
{
"icon_id": "11463979",
"name": "通话模板",
"font_class": "tonghuashezhi",
"unicode": "e947",
"unicode_decimal": 59719
},
{
"icon_id": "11463841",
"name": "话务群发",
"font_class": "piliangqunfa",
"unicode": "e946",
"unicode_decimal": 59718
},
{
"icon_id": "11213523",
"name": "详情",
"font_class": "dianjianxiangqing",
"unicode": "e91e",
"unicode_decimal": 59678
},
{
"icon_id": "4918851",
"name": "下载",
"font_class": "icon_yunxiazai",
"unicode": "e6e8",
"unicode_decimal": 59112
},
{
"icon_id": "11211458",
"name": "选中",
"font_class": "xuanzhong",
"unicode": "e91d",
"unicode_decimal": 59677
},
{
"icon_id": "11211433",
"name": "设置",
"font_class": "shezhi",
"unicode": "e91c",
"unicode_decimal": 59676
},
{
"icon_id": "7525939",
"name": "应用配置",
"font_class": "yingyongpeizhi",
"unicode": "e6b3",
"unicode_decimal": 59059
},
{
"icon_id": "11029885",
"name": "卡券库",
"font_class": "kaquan",
"unicode": "e908",
"unicode_decimal": 59656
},
{
"icon_id": "11030091",
"name": "卡券日志",
"font_class": "caozuorizhi",
"unicode": "e909",
"unicode_decimal": 59657
},
{
"icon_id": "11030163",
"name": "审核记录",
"font_class": "shenhejilu",
"unicode": "e90a",
"unicode_decimal": 59658
},
{
"icon_id": "111908",
"name": "不支持",
"font_class": "buzhichi",
"unicode": "e64c",
"unicode_decimal": 58956
},
{
"icon_id": "3710230",
"name": "统计报表",
"font_class": "tongjibaobiao",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "11032295",
"name": "复制",
"font_class": "baobeifuzhi",
"unicode": "e90b",
"unicode_decimal": 59659
}
]
}
<template>
<div id="app" class="dm-reset">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App'
};
</script>
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2020-07-20 15:30:24
*/
// import Vue from 'vue';
import axios from 'axios';
import qs from 'qs';
import { Message } from 'element-ui';
/**
* 获取好办 企业 id
*/
// if (!!localStorage.getItem('userInfos')) {
// let haobanSign = JSON.parse(localStorage.getItem('userInfos')).enterpriseId;
// axios.defaults.headers.post['haobansign'] = haobanSign;
// axios.defaults.headers.get['haobansign'] = haobanSign;
// }
axios.defaults.timeout = 500000;
let local = window.location.origin;
/* if (local.indexOf('localhost') != -1) {
local = 'http://www.gicdev.com';
} */
let axiosPromiseArr = []; //储存cancel toke
let pending = []; //声明一个数组用于存储每个ajax请求的取消函数和ajax标识
let CancelToken = axios.CancelToken;
let removePending = ever => {
for (let p in pending) {
if (pending[p].u === ever.url + '&' + ever.method) {
//当当前请求在数组中存在时执行函数体
pending[p].f(); //执行取消操作
pending.splice(p, 1); //把这条记录从数组中移除
}
}
};
axios.interceptors.request.use(
config => {
removePending(config); //在一个ajax发送前执行一下取消操作
config.cancelToken = new CancelToken(c => {
// 这里的ajax标识我是用请求地址&请求方式拼接的字符串,当然你可以选择其他的一些方式
pending.push({
u: config.url + '&' + config.method,
f: c
});
});
// 在发送请求设置cancel token
config.cancelToken = new axios.CancelToken(cancel => {
axiosPromiseArr.push({
cancel
});
});
return config;
},
err => {
Message.error({ message: '请求超时!' });
return Promise.resolve(err);
}
);
axios.interceptors.response.use(
data => {
removePending(data.config); //在一个ajax响应后再执行一下取消操作,把已经完成的请求从pending中移除
// console.log(data);
if (data.status && data.status == 200 && data.data.errorCode != 1) {
// Message.error({message: data.data.message});
if (data.data.errorCode == 4) {
if (window.location.href.indexOf('gic-error') != -1) {
return false;
}
window.location.href = local + '/haoban-4/#/login';
}
/* if (data.data.errorCode == 3) {
Message.error({ message: data.data.message });
window.location.href = local + '/haoban-3/#/login';
} */
if (data.data.errorCode == 10 || data.data.errorCode == 7) {
window.location.href = local + '/haoban-4/#/index';
}
return data;
}
return data;
},
err => {
// console.log(err, typeof err, err.response);
if (axios.isCancel(err)) {
// console.log('请求取消');
}
if (err.response.status == 502) {
window.location.href = local + '/haoban-4/#/login';
Message.error({ message: '服务异常⊙﹏⊙∥' });
}
// Message.error({message: err.response.message});
if (err.response.status == 504 || err.response.status == 404) {
// window.location.href= local + "/haoban-3/#/login"
// Message.error({message: '服务异常⊙﹏⊙∥'});
} else if (err.response.status == 403) {
// window.location.href= local + "/haoban-3/#/login"
// Message.error({message: '权限不足,请联系管理员!'});
} else {
window.location.href = local + '/haoban-4/#/login';
Message.error({ message: '登录失效!' });
}
return Promise.resolve(err);
}
);
/*
*
* 统一 get 请求方法
* @url: 请求的 url
* @params: 请求带的参数
* @header: 带 token
*
*/
export const getRequest = (url, params) => {
params.requestProject = 'haoban-manage-web';
return axios({
method: 'get',
url: `${local}${url}`,
data: {},
params: params,
headers: {
'Content-type': 'application/x-www-form-urlencoded'
}
});
};
/**
*
* 统一 post 请求方法
* url: 请求的 url
* @params: 请求带的参数
* @header:
*
*/
export const postRequest = (url, params) => {
params.requestProject = 'haoban-manage-web';
return axios({
method: 'post',
url: `${local}${url}`,
data: qs.stringify(params),
headers: {
'Content-type': 'application/x-www-form-urlencoded'
}
});
};
export const postJsonRequest = (url, params) => {
params.requestProject = 'haoban-manage-web';
return axios({
method: 'post',
url: `${local}${url}`,
data: '{}',
params: params,
headers: { 'Content-Type': 'application/json;charset=UTF-8' }
});
};
/**
* method: 'post'
* 'Content-Type': 'application/json;charset=UTF-8'
* @data: params
* @requestProject: 'haoban-manage-web'
*
*/
export const postJson = (url, params) => {
// params.requestProject = "haoban-manage-web";
return axios({
method: 'post',
url: `${local}${url}`,
data: params,
params: { requestProject: 'haoban-manage-web' },
headers: { 'Content-Type': 'application/json;charset=UTF-8' } //multipart/form-data{"token": token}
});
};
/**
* method: 'post'
* data: params
*
*/
export const postForm = (url, params) => {
params.requestProject = 'haoban-manage-web';
return axios({
method: 'post',
url: `${local}${url}`,
data: params,
headers: {}
});
};
/**
* post excel
*/
export const postExcel = (url, params) => {
params.requestProject = 'haoban-manage-web';
return axios({
method: 'post',
url: `${local}${url}`,
data: qs.stringify(params),
responseType: 'blob',
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
});
};
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 * as api from './api';
export default api;
import getFetch from './getFetch.js';
let api = {
getUserInfo: '/user/get-login-user', // 获取用户信息
sendSmsCode: '/user/send-auth-code-to-modify-phone', // 发送手机验证码
editUserName: '//user/edit-user-name', // 修改姓名
updatePhone: '/user/modify-phone', // 修改手机号
updatePwd: '/user/modify-password', // 修改密码
logout: '/logout', // 登出
}
api = getFetch(api, '/gic-auth-web');
export default api;
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 400 335" style="enable-background:new 0 0 400 335;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FAFCFF;}
.st1{fill:#DBE5F1;}
.st2{fill:#DEE7F4;}
.st3{fill:#B9C7DB;}
.st4{fill:#FFFFFF;}
.st5{fill:none;stroke:#B9C7DB;stroke-width:4;stroke-miterlimit:10;}
.st6{fill:none;stroke:#B6C7D8;stroke-miterlimit:10;}
</style>
<path class="st5" d="M274.5,241.3c-5.3-5.3-4.4,4.4-6.7,6.7c-3.1,3.1-6.3,6-9.7,8.6H125.2c-3.4-2.7-6.6-5.6-9.7-8.7
c-28.4-28.5-38.6-70.5-26.6-109l-10.5-10.6c-5.3-5.3-5.3-13.8,0-19.2c5.2-5.3,13.7-5.3,19-0.1c0,0,0,0,0.1,0.1l6.6,6.8
c3.1,3.2,8.2,3.2,11.4,0l0,0c3.2-3.2,3.2-8.3,0-11.5L103.1,92c-3.2-3.2-3.2-8.3,0-11.5c3.1-3.2,8.2-3.2,11.4,0l0,0l17.2,17.2
c-0.9,3.7,0.9,7.6,4.4,9.3c3.5,1.7,7.7,0.6,9.9-2.5c2.3-3.1,2.1-7.4-0.5-10.3c-3.3-3.8-6.5-7.2-6.5-7.2l-7.3-7.4
c34.8-21.3,82.6-21.7,117.2,0c34.5,21.7,53.9,61.2,50,101.9l15.4,15.6c3.2,3.2,3.2,8.3,0,11.5c-3.1,3.2-8.2,3.2-11.4,0l0,0
l-15.1-15.3c-3.1-3.2-8.2-3.2-11.4,0l0,0c-3.2,3.2-3.2,8.3,0,11.5l17.1,17.2c5.2,5.3,5.2,13.8,0,19.1
C288.4,246.6,279.9,246.6,274.5,241.3C274.6,241.3,274.6,241.3,274.5,241.3L274.5,241.3z"/>
<path class="st3" d="M86.6,71.4c0,4.7,3.8,8.5,8.5,8.5c1.5,0,3-0.4,4.3-1.1c4.1-2.3,5.5-7.5,3.1-11.6c-1.5-2.6-4.3-4.3-7.4-4.3
C90.4,62.9,86.6,66.7,86.6,71.4"/>
<path class="st3" d="M216.4,145.4h24.3l-7.4,17.9c2.6,1.8,4.5,3.8,5.8,6c1.2,2.2,1.9,4.8,1.9,7.8c0,4.6-1.6,8.4-4.8,11.2
c-3.2,2.9-7.3,4.3-12.3,4.3c-2.5,0-5.1-0.4-7.5-1.1v-13.1c2,0.9,3.9,1.4,5.5,1.4s2.9-0.5,3.7-1.4c0.9-1,1.3-2.3,1.3-4.1
c0-1.9-0.8-3.4-2.4-4.6c-1.6-1.2-3.7-1.7-6.4-1.7l3.4-9.1h-5.1V145.4L216.4,145.4z M207.5,181.6c0,1.5-0.3,3-0.8,4.3
s-1.3,2.5-2.3,3.5s-2.2,1.8-3.4,2.3c-1.3,0.6-2.8,0.9-4.3,0.9h-9.6c-1.5,0-2.9-0.3-4.3-0.9c-1.3-0.6-2.5-1.3-3.4-2.3
c-0.4-0.4-0.8-0.9-1.2-1.4l11.7-17.3v6c0,0.6,0.2,1.1,0.6,1.4c0.4,0.4,0.8,0.6,1.4,0.6c1.1,0,2-0.8,2-1.9v-0.1v-11.9l10.9-16.1
c1.8,2,2.8,4.6,2.7,7.3L207.5,181.6L207.5,181.6L207.5,181.6z M177.1,185.9c-0.6-1.4-0.9-2.8-0.8-4.3V156c0-1.5,0.3-3,0.8-4.3
s1.3-2.5,2.3-3.5s2.2-1.8,3.4-2.3c1.3-0.6,2.8-0.9,4.3-0.9h9.6c1.5,0,2.9,0.3,4.3,0.9c1.3,0.5,2.4,1.3,3.4,2.3l-10.5,15.4v-2.7
c0-0.5-0.2-1.1-0.6-1.4c-0.4-0.4-0.9-0.6-1.4-0.6c-1.1,0-2,0.8-2,1.9v0.1v8.6l-12.1,17.9C177.5,186.9,177.3,186.4,177.1,185.9
L177.1,185.9z M243.8,192.7c3.5-7.4,5.3-15.5,5.3-23.7c0-30.5-24.4-55.2-54.6-55.2s-54.6,24.7-54.6,55.2c0,0.4,0,0.8,0,1.1
l19.6-24.6h11.4L154,171.3h5.5v-6.5l11.7-18.5v46.8h-11.7v-9.8h-17.8c5.1,19.2,20.1,34.3,39.2,39.2c-1.2,3.1-4.8,10.7-10.7,12
c-7.3,1.7,19.9,0.4,39.4-12.5c14.9-4.4,27.2-15,33.9-28.9L243.8,192.7L243.8,192.7z"/>
<path class="st4" d="M238.9,154.3l-24.4,35.4l0.5,0.3l24.4-35.4L238.9,154.3z"/>
<path class="st3" d="M266.2,66.6h8c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.4-0.1,0.7-0.4,1c-0.2,0.3-0.6,0.4-0.9,0.4h-8
c-0.4,0-0.7-0.1-0.9-0.4c-0.5-0.5-0.5-1.4,0-1.9C265.5,66.7,265.8,66.6,266.2,66.6 M116.5,201.9c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1
s8-3.6,8-8.1S120.9,201.9,116.5,201.9L116.5,201.9z M121.4,212.1c-0.8,2-2.8,3.3-4.9,3.3c-3,0-5.3-2.4-5.3-5.4c0-2.2,1.3-4.1,3.3-5
c2-0.8,4.3-0.4,5.8,1.2C121.8,207.7,122.2,210,121.4,212.1L121.4,212.1z M191.3,78.7c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1
c2.1,0,4.2-0.9,5.7-2.4s2.3-3.6,2.3-5.7C199.3,82.4,195.7,78.7,191.3,78.7z M196.3,88.9c-0.8,2-2.8,3.3-4.9,3.3
c-3,0-5.3-2.4-5.3-5.4c0-2.2,1.3-4.2,3.3-5s4.3-0.4,5.8,1.2C196.6,84.6,197.1,86.9,196.3,88.9L196.3,88.9z M270.2,162.6
c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1s8-3.6,8-8.1C278.2,166.3,274.6,162.6,270.2,162.6z M275.1,172.8c-0.8,2-2.8,3.3-4.9,3.3
c-3,0-5.3-2.4-5.3-5.4c0-2.2,1.3-4.2,3.3-5s4.3-0.4,5.8,1.2S275.9,170.8,275.1,172.8z M230.1,31.4c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1
c2.1,0,4.2-0.9,5.7-2.4s2.3-3.6,2.3-5.7C238.1,35,234.5,31.4,230.1,31.4z M235,41.6c-0.8,2-2.8,3.3-4.9,3.3c-3,0-5.3-2.4-5.3-5.4
c0-2.2,1.3-4.2,3.3-5s4.3-0.4,5.8,1.2C235.4,37.2,235.8,39.5,235,41.6z"/>
<path class="st3" d="M163.2,45.9h8.2c0.4,0,0.7,0.1,1,0.4c0.5,0.5,0.5,1.3,0,1.9l0,0c-0.3,0.3-0.6,0.4-1,0.4h-8.2
c-0.4,0-0.7-0.1-1-0.4c-0.5-0.5-0.5-1.3,0-1.9l0,0C162.4,46.1,162.8,45.9,163.2,45.9 M271.7,63.5v8c0,0.4-0.1,0.7-0.4,0.9
c-0.3,0.3-0.6,0.4-1,0.4c-0.7,0-1.4-0.6-1.4-1.3l0,0v-8c0-0.4,0.1-0.7,0.4-0.9c0.5-0.5,1.4-0.5,1.9,0
C271.6,62.8,271.7,63.2,271.7,63.5"/>
<path class="st3" d="M107.4,154.8h8.2c0.4,0,0.7,0.1,1,0.4c0.3,0.2,0.4,0.6,0.4,0.9c0,0.7-0.6,1.3-1.4,1.3h-8.2
c-0.5,0-0.9-0.3-1.2-0.7c-0.2-0.4-0.2-0.9,0-1.3C106.4,155.1,106.9,154.8,107.4,154.8 M169,42.7v8c0,0.4-0.1,0.7-0.4,0.9
c-0.5,0.5-1.4,0.5-2,0c-0.2-0.2-0.4-0.6-0.4-0.9v-8c0-0.4,0.1-0.7,0.4-0.9c0.5-0.5,1.4-0.5,1.9,0C168.8,42,169,42.3,169,42.7"/>
<path class="st3" d="M230.9,110.3h8.1c0.7,0,1.3,0.6,1.3,1.4c0,0.7-0.6,1.3-1.3,1.4h-8.1c-0.8,0-1.4-0.6-1.4-1.4
c0-0.4,0.1-0.7,0.4-1C230.2,110.4,230.6,110.3,230.9,110.3"/>
<path class="st3" d="M114.6,163.8v8.2c0,0.4-0.1,0.7-0.4,1c-0.5,0.5-1.4,0.5-1.9,0c-0.3-0.3-0.4-0.6-0.4-1v-8.2c0-0.4,0.1-0.7,0.4-1
c0.5-0.5,1.4-0.5,1.9,0l0,0C114.4,163.1,114.6,163.4,114.6,163.8"/>
<path class="st1" d="M126,272.7h60.4c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4H126c-0.7,0-1.3-0.6-1.3-1.3
C124.7,273.3,125.3,272.7,126,272.7"/>
<path class="st1" d="M218.6,272.7h34.9c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-34.9c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C217.9,272.9,218.2,272.7,218.6,272.7"/>
<path class="st1" d="M158.2,282.2h131.5c0.7,0,1.3,0.6,1.4,1.3c0,0.4-0.1,0.7-0.4,1c-0.3,0.3-0.6,0.4-1,0.4H158.2
c-0.7,0-1.3-0.6-1.3-1.3l0,0C156.9,282.8,157.5,282.2,158.2,282.2"/>
<path class="st1" d="M93.8,282.2h34.9c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4l0,0H93.8c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C93.1,282.3,93.5,282.2,93.8,282.2"/>
<path class="st1" d="M197.1,272.7h8.1c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-8.1c-0.7,0.1-1.4-0.5-1.4-1.3
c-0.1-0.7,0.5-1.4,1.3-1.4C197,272.7,197.1,272.7,197.1,272.7"/>
<path class="st1" d="M284.4,264.6h8.1c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.3h-8.1c-0.7,0-1.3-0.6-1.3-1.3
C283,265.3,283.6,264.6,284.4,264.6"/>
<path class="st1" d="M99.2,264.6h171.7c0.4,0,0.7,0.1,0.9,0.4c0.4,0.4,0.5,1,0.3,1.5c-0.2,0.5-0.7,0.8-1.2,0.8H99.1
c-0.7,0-1.3-0.6-1.3-1.3C97.8,265.3,98.4,264.6,99.2,264.6"/>
<path class="st3" d="M235,95.8v8.1c0,0.7-0.6,1.3-1.3,1.3s-1.3-0.6-1.3-1.3v-8.1c0-0.7,0.6-1.3,1.3-1.4C234.4,94.4,235,95,235,95.8"
/>
</svg>
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors : 无尘
* @LastEditTime : 2020-04-04 09:46:43
*/
/* 后台返回消息提示 */
import { Message } from 'element-ui';
// 后台返回异常提示
export default {
errorMsg: function(response) {
let local = window.location.origin;
/* if (local.indexOf('localhost') != -1) {
local = 'http://www.gicdev.com';
} */
if (response.errorCode != 1) {
if (response.errorCode == 4) {
window.location.href = local + '/haoban-3/#/login';
return false;
}
if (response.errorCode == 10) {
window.location.href = local + '/haoban-3/#/index';
return false;
}
Message.error({
duration: 1000,
message: response.message
});
}
}
};
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-12-05 09:56:10
* @LastEditors: 无尘
* @LastEditTime: 2018-12-05 09:56:10
*/
// 防抖
export function _debounce(fn, delay) {
var delay = delay || 200;
var timer;
// console.log(fn)
return function() {
var that = this;
var args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function() {
timer = null;
fn.apply(that, args);
}, delay);
};
}
// 节流
export function _throttle(fn, interval) {
var last;
var timer;
var interval = interval || 200;
return function() {
var that = this;
var args = arguments;
var now = +new Date();
if (last && now - last < interval) {
clearTimeout(timer);
timer = setTimeout(function() {
last = now;
fn.apply(that, args);
}, interval);
} else {
last = now;
fn.apply(that, args);
}
};
}
/**
* 手机号格式化
* @param {String} phone
*/
export function formatPhone(phone) {
phone = phone.toString();
return phone.substr(0, 3) + '****' + phone.substr(7, 11);
}
/**
* 时间戳格式化
*/
function formatDig(num) {
return num > 9 ? '' + num : '0' + num;
}
export function formatDate(time) {
let now = new Date(time);
let year = now.getFullYear();
let month = now.getMonth() + 1;
let date = now.getDate();
let hour = now.getHours();
let minute = now.getMinutes();
let second = now.getSeconds();
let data = year + '-' + formatDig(month) + '-' + formatDig(date) + ' ' + formatDig(hour) + ':' + formatDig(minute) + ':' + formatDig(second);
return data;
}
/**
* 千位分割
*/
export function formatNum(num) {
let number = num.toString().split('.'); // 分隔小数点
let dot = '0.' + (number[1] || 0);
var reg = /\d{1,3}(?=(\d{3})+$)/g;
return (
(number[0] + '').replace(reg, '$&,') +
'.' +
Number(dot)
.toFixed(2)
.toString()
.split('.')[1]
);
}
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2019-09-25 17:17:00
*/
/* 消息提示 */
import { Message } from 'element-ui';
export default {
showmsg: function(msg, type) {
Message({
duration: 1000,
message: msg,
type: type
});
}
};
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2018-10-10 14:44:45
*/
/**
* 判断字符长度
* @param: str
*/
export default {
/**
* 一个汉字算两个字符,一个英文字母或数字算一个字符
*/
getByteLen: function(val) {
let valStr = val == '' || val == null ? '' : val;
let len = 0;
for (let i = 0; i < valStr.length; i++) {
let a = valStr.charAt(i);
if (a.match(/[^\x00-\xff]/gi) != null) {
len += 2;
} else {
len += 1;
}
}
return len;
},
/**
* 一个汉字算一个字,一个英文字母或数字算半个字
*/
getZhLen: function(val) {
let valStr = val == '' || val == null ? '' : val;
let len = 0;
for (let i = 0; i < valStr.length; i++) {
let a = valStr.charAt(i);
if (a.match(/[^\x00-\xff]/gi) != null) {
len += 1;
} else {
len += 0.5;
}
}
return Math.ceil(len);
},
/*暂无用*/
cutStr: function(str, len, type) {
let char_length = 0;
for (let i = 0; i < str.length; i++) {
let son_str = str.charAt(i);
if (type == 1) {
encodeURI(son_str).length > 2 ? (char_length += 1) : (char_length += 0.5);
}
if (type == 2) {
char_length += 1;
}
if (char_length >= len) {
let sub_len = char_length == len ? i + 1 : i;
return str.substr(0, sub_len);
}
}
},
/**
* 限制字数用, 一个汉字算一个字,两个英文/字母算一个字
*/
getByteVal: function(val, max) {
let valStr = val == '' || val == null ? '' : val;
let returnValue = '';
let byteValLen = 0;
for (let i = 0; i < valStr.length; i++) {
if (valStr[i].match(/[^\x00-\xff]/gi) != null) byteValLen += 1;
else byteValLen += 0.5;
if (byteValLen > max) break;
returnValue += valStr[i];
}
return returnValue;
},
/**
* 限制字符数用, 一个汉字算两个字符,一个英文/字母算一个字符
*/
getCharVal: function(val, max) {
let valStr = val == '' || val == null ? '' : val;
let returnValue = '';
let byteValLen = 0;
for (let i = 0; i < valStr.length; i++) {
if (valStr[i].match(/[^\x00-\xff]/gi) != null) byteValLen += 2;
else byteValLen += 1;
if (byteValLen > max) break;
returnValue += valStr[i];
}
return returnValue;
},
/**
* 正则校验,校验非负数字
*/
regPos: function(v) {
let regTest = /^\d+(\.\d+)?$/;
return regTest.test(v);
}
};
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2019-09-25 17:18:40
*/
/*
* 时间日期转换
* @param: "10:00-22:00"/ new Date()
*/
export default {
/*
* var storeBusinessTime="10:00-22:00" to
*/
timeToDate: function(val) {
var date = new Date()
var y = date.getFullYear();
var m = date.getMonth() +1;
var day = date.getDate();
var d = []; var newArr = [];
var dArr = val.split('-');
dArr.forEach(function(ele,index){
newArr.push(ele.split(':'))
})
d = [new Date(y,m,day,newArr[0][0],newArr[0][1]),new Date(y,m,day,newArr[1][0],newArr[1][1])]
return d;
},
dateToTime(val) {
console.log(val)
// (0-9)年月数字的显示
function formatDig(num) {
return num > 9 ? '' + num : '0' + num;
}
var t;
var t1 = formatDig(new Date(val[0]).getHours())+':'+formatDig(new Date(val[0]).getMinutes())
var t2 = formatDig(new Date(val[1]).getHours())+':'+formatDig(new Date(val[1]).getMinutes())
t= t1+'-'+t2
return t;
}
}
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2020-03-11 17:33:01
-->
<template>
<div class="navwrap border-box flex flex-space-between">
<el-breadcrumb separator-class="el-icon-arrow-right">
<template v-for="(item, index) in navpath">
<template v-if="!!item.path">
<el-breadcrumb-item :key="'nav' + index" :to="{ path: item.path }" @click="changeRoute(item.path, item.relocation)">
<span class="el-breadcrumb__inner is-link" @click="changeRoute(item.path, item.relocation)">
{{ item.name }}
</span>
</el-breadcrumb-item>
</template>
<template v-else>
<el-breadcrumb-item :key="'nav' + index">{{ item.name }}</el-breadcrumb-item>
</template>
</template>
</el-breadcrumb>
<div class="my-customer-brand">
<el-tooltip class="item" effect="dark" content="不同品牌的工作台可分别进行管理。点击后切换,可以管理不同品牌下的应用" placement="top-start">
<span class="font-14 color-606266" style="cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;">授权商户名称 </span>
</el-tooltip>
<el-select class="p-l-10" v-model="activeBrand" placeholder="请选择" @change="changeSelect">
<el-option v-for="item in brandListData" :key="item.enterpriseId" :label="item.enterpriseName" :value="item.enterpriseId"> </el-option>
</el-select>
</div>
</div>
</template>
<script>
import { postRequest } from '@/api/api';
import errMsg from '@/common/js/error';
export default {
name: 'navpath',
data() {
return {
projectName: 'haoban', // 当前项目名
activeBrand: '',
brandListData: []
};
},
props: {
navpath: {
type: Array,
default: function() {
return [];
}
},
slotFlag: {
type: Boolean,
default: false
},
navtip: {
type: Boolean,
default: false
},
subNavText: {
type: String,
default: ''
}
},
watch: {
brandId: function(newData, oldData) {
const that = this;
that.getBrandData();
}
},
methods: {
changeRoute(path, relocation) {
let that = this;
if (relocation) {
window.location.href = path;
} else {
that.$router.push(path);
}
},
/**
* 选择品牌
*/
changeSelect(val) {
let that = this;
let enterpriseId = '';
that.brandListData.forEach(ele => {
if (ele.enterpriseId == val) {
enterpriseId = ele.enterpriseId;
}
});
that.$emit('selectBrandId', val, enterpriseId);
},
/**
* 获取品牌
*/
getBrandData() {
const that = this;
postRequest('/haoban-manage3-web/wx-enterprise-list', {})
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
if (!!resData.result && !!resData.result.length) {
that.brandListData = resData.result;
if (!!that.$route.query.enterpriseId) {
that.activeBrand = that.$route.query.enterpriseId;
that.$emit('selectBrandId', that.$route.query.enterpriseId);
return false;
}
that.activeBrand = that.brandListData[0].enterpriseId;
// 由于门店选择组件中没有品牌id ,只有 groupId
that.$emit('selectBrandId', that.brandListData[0].enterpriseId, that.brandListData[0].enterpriseId);
}
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
}
},
mounted() {
const that = this;
that.getBrandData();
}
};
</script>
<style type="text/less" lang="less" scoped>
.navwrap {
height: 48px;
line-height: 48px;
padding: 0 20px;
box-sizing: border-box;
.el-breadcrumb {
line-height: 48px;
}
}
.boxbttom {
border-bottom: 1px solid #e4e7ed;
}
.boxshow {
border-bottom: 1px solid #e4e7ed;
box-shadow: 5px -1px 5px #dfdfdf;
}
.navtitle {
margin: 24px 0 0 0;
font-size: 20px;
color: #303133;
font-weight: 500;
}
.navtip {
width: 100%;
height: 38px;
line-height: 38px;
font-size: 13px;
border-radius: 2px;
color: #606266;
background-color: #f4f4f5;
}
.navmTop {
margin-top: 25px;
}
.navtipcolor {
margin: 0 12px;
color: #2f54eb;
}
.el-breadcrumb__inner.is-link:hover,
.el-breadcrumb__inner a:hover {
color: #2f54eb;
}
.el-breadcrumb__item:last-child .el-breadcrumb__inner,
.el-breadcrumb__item:last-child .el-breadcrumb__inner a,
.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,
.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover {
font-weight: 700;
text-decoration: none;
cursor: pointer;
color: #303133;
}
</style>
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2020-03-11 17:32:16
-->
<template>
<div class="navwrap border-box">
<el-breadcrumb separator-class="el-icon-arrow-right">
<template v-for="(item, index) in navpath">
<template v-if="!!item.path">
<el-breadcrumb-item :key="'nav' + index" :to="{ path: item.path }" @click="changeRoute(item.path, item.relocation)">
<span class="el-breadcrumb__inner is-link" @click="changeRoute(item.path, item.relocation)">
{{ item.name }}
</span>
</el-breadcrumb-item>
</template>
<template v-else>
<el-breadcrumb-item :key="'nav' + index">{{ item.name }}</el-breadcrumb-item>
</template>
</template>
</el-breadcrumb>
</div>
</template>
<script>
import { postRequest } from '@/api/api';
import errMsg from '@/common/js/error';
export default {
name: 'navpath',
data() {
return {
projectName: 'member' // 当前项目名
// navpath: [
// {
// name: '首页',
// path: ''
// },
// {
// name: '会员标签',
// path: ''
// },
// ],
};
},
props: {
navpath: {
type: Array,
default: function() {
return [];
}
},
slotFlag: {
type: Boolean,
default: false
},
navtip: {
type: Boolean,
default: false
},
subNavText: {
type: String,
default: ''
}
},
methods: {
changeRoute(path, relocation) {
let that = this;
if (relocation) {
window.location.href = path;
} else {
that.$router.push(path);
}
},
// get nav path
getNavPath() {
let that = this;
let para = {
project: that.projectName,
path: that.$route.path.split('/')[1]
};
postRequest('/api-auth/get-current-memu-data', para)
.then(res => {
// console.log(res,res.data,res.data.errorCode)
var resData = res.data;
if (resData.errorCode == 0) {
if (!resData.result) {
return false;
}
that.navpath = [];
if (!!resData.result.list && !!resData.result.list.length) {
resData.result.list.forEach(function(ele, index) {
ele.name = ele.menuName;
ele.path = '';
if (index == resData.result.list.length - 1) {
ele.path = '/' + ele.menuUrl;
}
if (index > 0) {
that.navpath.push(ele);
}
});
// that.navpath = resData.result.list
}
// that.navpath[0].name = resData.result.level2.menuName;
// that.navpath[0].path = ''
// that.navpath[1].name = resData.result.level3.menuName;
// that.navpath[1].path = ''
// if (!!resData.result.level4) {
// that.navpath[2] = {
// name:'',
// path: ''
// }
// that.navpath[2].name = resData.result.level4.menuName;
// that.navpath[2].path = ''
// }
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
// that.toLogin()
that.$message.error({
duration: 1000,
message: error.message
});
});
}
},
/* eslint-disable */
mounted() {
// var that = this;
// that.getNavPath();
}
};
</script>
<style scoped>
.navwrap {
padding: 12px 20px;
}
.boxbttom {
border-bottom: 1px solid #e4e7ed;
}
.boxshow {
border-bottom: 1px solid #e4e7ed;
box-shadow: 5px -1px 5px #dfdfdf;
}
.navtitle {
margin: 24px 0 0 0;
font-size: 20px;
color: #303133;
font-weight: 500;
}
.navtip {
width: 100%;
height: 38px;
line-height: 38px;
font-size: 13px;
border-radius: 2px;
color: #606266;
background-color: #f4f4f5;
}
.navmTop {
margin-top: 25px;
}
.navtipcolor {
margin: 0 12px;
color: #2f54eb;
}
.el-breadcrumb__inner.is-link:hover, .el-breadcrumb__inner a:hover {
color: #2f54eb;
}
.el-breadcrumb__item:last-child .el-breadcrumb__inner,
.el-breadcrumb__item:last-child .el-breadcrumb__inner a,
.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,
.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover {
font-weight: 700;
text-decoration: none;
cursor: pointer;
color: #303133;
}
</style>
function getOrigin() {
let origin = window.location.origin;
if (origin.indexOf('localhost') >= 0 || origin.indexOf('192.168') >= 0) {
origin = 'https://four.gicdev.com';
}
return origin;
}
export const origin = getOrigin();
// 请求成功的code
export const succCode = '0000';
// 未登录、登录超时code
export const notAuthCode = '6666';
// 后端请求拦截的标识,用于区分是ajax请求还是页面跳转
export const isRequest = { isControl: true };
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2019-09-11 18:18:32
* @LastEditors: 无尘
* @LastEditTime: 2020-07-08 14:46:27
*/
/* 全局过滤器 */
const dateFormat = function(timeSpan, format) {
if (!timeSpan) return;
timeSpan = timeSpan.toString().length === 10 ? timeSpan * 1000 : timeSpan;
let date = new Date(timeSpan);
let o = {
'M+': date.getMonth() + 1,
'D+': date.getDate(),
W: '日一二三四五六'.charAt(date.getDay()),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
S: date.getMilliseconds()
};
if (/(Y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (let k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
}
}
return format;
};
/**
* 时间戳---> 年-月-日 时:分:秒
* @param timestamp
*/
const formatTimeStamp = function(data) {
if (!data) {
return;
}
let date = new Date(data);
let month = date.getMonth() + 1;
let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
let newMonth = month < 10 ? '0' + month : month;
let hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
let minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
let seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return `${date.getFullYear()}-${newMonth}-${day} ${hours}:${minutes}:${seconds}`;
};
/**
* 时间戳---> 年.月.日 时:分:秒
* @param timestamp
*/
const formatTimeYmdHms = function(data) {
if (!data) {
return;
}
let date = new Date(data);
let month = date.getMonth() + 1;
let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
let newMonth = month < 10 ? '0' + month : month;
let hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
let minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
let seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return `${date.getFullYear()}.${newMonth}.${day} ${hours}:${minutes}:${seconds}`;
};
/**
* 时间戳---> 年-月
* @param timestamp
*/
const timeStampToYm = function(data) {
if (!data) {
return;
}
let date = new Date(data);
let month = date.getMonth() + 1;
let newMonth = month < 10 ? '0' + month : month;
return `${date.getFullYear()}-${newMonth}`;
};
/**
* 时间戳---> 年-月-日
* @param timestamp
*/
const timeStampToYmd = function(data) {
if (!data) {
return;
}
let date = new Date(data);
let month = date.getMonth() + 1;
let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
let newMonth = month < 10 ? '0' + month : month;
return `${date.getFullYear()}-${newMonth}-${day}`;
};
/**
* 时间戳---> 时:分:秒
* @param timestamp
*/
const timeStampToHms = function(data) {
if (!data) {
return;
}
let date = new Date(data);
let hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
let minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
let seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return `${hours}:${minutes}:${seconds}`;
};
/**
* 时间戳---> *天*小时*分
* @param timestamp
*/
const timeStampSpace = function(date) {
if (!date) {
return;
}
let date2 = new Date();
let date3 = new Date(Number(date)).getTime() - date2.getTime(); //时间差的毫秒数
if (date3 < 0) {
return '';
}
//计算出相差天数
let days = Math.floor(date3 / (24 * 3600 * 1000));
//计算出小时数
let leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
let hours = Math.floor(leave1 / (3600 * 1000));
//计算相差分钟数
let leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
let minutes = Math.floor(leave2 / (60 * 1000));
//计算相差秒数
// let leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
// let seconds = Math.round(leave3 / 1000);
return `${days}${hours}小时${minutes}分`;
};
/**
* 手机号格式化
* @param {String} phone
*/
const formatPhoneNum = function(phone) {
if (!phone) {
return '';
}
phone = phone.toString();
return phone.substr(0, 3) + '****' + phone.substr(7, 11);
};
/**
* 姓名格式化
* @param {String} phone
*/
const formatName = function(name) {
if (!name) {
return '';
}
name = name.toString();
return '**' + name.substr(name.length - 1, name.length);
};
/**
* 毫秒---> *时*分*秒
* @param timestamp
*/
const formatTime = function(msTime) {
if (!msTime) {
return '00:00:00';
}
let time = msTime / 1000;
let day = Math.floor(time / 60 / 60 / 24);
let hour = day * 24 + (Math.floor(time / 60 / 60) % 24) < 10 ? '0' + (day * 24 + (Math.floor(time / 60 / 60) % 24)) : day * 24 + (Math.floor(time / 60 / 60) % 24);
let minute = Math.floor(time / 60) % 60 < 10 ? '0' + (Math.floor(time / 60) % 60) : Math.floor(time / 60) % 60;
let second = Math.floor(time) % 60 < 10 ? '0' + (Math.floor(time) % 60) : Math.floor(time) % 60;
return `${hour}:${minute}:${second}`;
};
export default {
dateFormat,
formatTimeStamp,
timeStampToYm,
timeStampToYmd,
timeStampToHms,
formatTimeYmdHms,
formatPhoneNum,
formatName,
timeStampSpace,
formatTime
};
<template>
<dm-layout/>
</template>
<script>
export default {
name: 'layout'
}
</script>
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2020-07-16 16:37:05
* @LastEditors: 无尘
* @LastEditTime: 2020-07-20 14:28:50
*/
import 'babel-polyfill';
import 'element-ui/lib/theme-chalk/index.css';
import '@/styles/reset.less';
import '@/styles/font/iconfont.css';
import Vue from 'vue';
import VueRouter from 'vue-router';
import axios from 'axios';
import ElementUI from 'element-ui';
import App from './App.vue';
import router from './router';
import filters from '@/filters/index.js';
// import { isRequest, itemCode } from '@/config';
Vue.use(VueRouter);
Vue.use(ElementUI);
// 请求头这种添加请求标识
// Object.assign(axios.defaults.headers.common, isRequest);
axios.defaults.withCredentials = true;
Vue.prototype.axios = axios;
// 开启vue devtools.....
/* eslint-disable-next-line */
Vue.config.devtools = process.env.NODE_ENV !== 'production';
Vue.config.productionTip = false;
// 全局注册过滤器
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key]);
});
new Vue({
router,
render: h => h(App)
}).$mount('#app')
'use strict';
/* eslint-disable */
function _broadcast(componentName, eventName, params) {
this.$children.forEach(function(child) {
var name = child.$options.componentName;
if (name === componentName) {
child.$emit.apply(child, [eventName].concat(params));
} else {
_broadcast.apply(child, [componentName, eventName].concat([params]));
}
});
}
export default {
methods: {
dispatch: function dispatch(componentName, eventName, params) {
var parent = this.$parent || this.$root;
var name = parent.$options.componentName;
while (parent && (!name || name !== componentName)) {
parent = parent.$parent;
if (parent) {
name = parent.$options.componentName;
}
}
if (parent) {
parent.$emit.apply(parent, [eventName].concat(params));
}
},
broadcast: function broadcast(componentName, eventName, params) {
_broadcast.call(this, componentName, eventName, params);
}
}
};
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2020-07-17 10:38:29
* @LastEditors: 无尘
* @LastEditTime: 2020-07-17 11:07:42
*/
/* eslint-disable */
module.exports = (parantfile, file) => r => {
import('@/views/' + parantfile + '/' + file + '.vue').then(module => {
r(module);
});
};
import VueRouter from 'vue-router';
import { routes } from './routes.js';
const router = new VueRouter({
routes
});
export default router;
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2020-07-16 16:37:05
* @LastEditors: 无尘
* @LastEditTime: 2020-07-21 09:52:25
*/
import _import from './_import.js';
const errorPage = r => {
import('@/views/errorPage/index.vue').then(module => {
r(module);
});
};
export const routes = [
{
path: '/',
name: '/',
redirect: 'login'
},
{
path: '/login',
name: '登录',
component: _import('login', 'index')
},
{
path: '/index',
name: 'index',
component: _import('index', 'index')
},
{
path: '/403',
name: '无权访问',
component: errorPage
},
{
path: '/404',
name: 'error404',
component: errorPage
},
{
path: '/500',
name: 'error500',
component: errorPage
},
{
path: '*',
redirect: '/404',
hidden: true
}
]
// 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;
@import './colors.less';
.font-909399 {
color: #909399;
}
.damolish .dm-store-plus {
display: inline-block;
vertical-align: middle;
font-weight: bold;
color: #1890FF;
}
.option-dropdown {
padding: 13px 8px !important;
li {
padding: 0 8px;
text-align: center;
height: 32px;
line-height: 32px;
color: @gray02;
font-size: 14px;
cursor: pointer;
&.disabled {
cursor: no-drop;
}
&:hover, &.active {
background: #ecf5ff;
color: @blue;
}
}
padding: 13px 5px;
min-width: 170px;
&.gray {
li {
color: @gray02;
}
li:hover, li.active {
color: @gray02;
background: @gray-disable;
}
}
}
pre, textarea {
font-family: inherit;
}
/**
按钮微动
**/
[ant-click-animating],
[ant-click-animating-without-extra-node] {
position: relative;
}
[ant-click-animating-without-extra-node]:after,
.ant-click-animating-node {
content: '';
position: absolute;
top: -1px;
left: -1px;
bottom: -1px;
right: -1px;
border-radius: inherit;
border: 0 solid #1890ff;
opacity: 0.2;
-webkit-animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
display: block;
pointer-events: none;
}
@-webkit-keyframes waveEffect {
100% {
top: -6px;
left: -6px;
bottom: -6px;
right: -6px;
border-width: 6px;
}
}
@keyframes waveEffect {
100% {
top: -6px;
left: -6px;
bottom: -6px;
right: -6px;
border-width: 6px;
}
}
@-webkit-keyframes fadeEffect {
100% {
opacity: 0;
}
}
@keyframes fadeEffect {
100% {
opacity: 0;
}
}
/* 框的微动效 */
.el-select .el-input__inner {
border: none;
}
.el-input__inner:focus{
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
border-right-width: 1px !important;
}
.el-textarea__inner:focus,
.el-range-editor.is-active,
.el-range-editor.is-active:hover {
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
}
.el-select .el-input {
border: 1px solid #c0c4cc;
border-radius: 4px;
}
.el-select .el-input.is-focus {
border-color: #1890ff;
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
}
.el-select .el-input .el-input__inner {
box-shadow: none;
}
/* 对话框的弹入 弹出效果 */
.dialog-fade-enter-active {
-webkit-animation: dialog-fade-in .3s;
animation: dialog-fade-in .3s;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.dialog-fade-leave-active {
-webkit-animation: dialog-fade-out .3s;
animation: dialog-fade-out .3s;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.dialog-fade-enter-active {
/* transform: scale(0); */
-webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
}
.dialog-fade-leave-active {
-webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
}
@-webkit-keyframes dialog-fade-in{
0% {
opacity: 0;
}
1% {
transform: scale(0, 0);
}
100% {
opacity: 1;
transform: scale(1, 1);
}
}
@keyframes dialog-fade-in {
0% {
opacity: 0;
}
1% {
transform: scale(0, 0);
}
100% {
opacity: 1;
transform: scale(1, 1);
}
}
@-webkit-keyframes dialog-fade-out {
0% {
transform: scale(1, 1)
}
100% {
opacity: 0;
transform: scale(0, 0);
}
}
@keyframes dialog-fade-out{
0% {
transform: scale(1, 1)
}
100% {
opacity: 0;
transform: scale(0, 0);
}
}
.damo-table-animation {
-webkit-animation: table-animation 0.5s;
animation: table-animation 0.5s;
}
@keyframes table-animation {
0% {
opacity: 0;
}
100% {
transform: translateX(30px);
opacity: 1;
}
}
@-webkit-keyframes table-animation {
0% {
opacity: 0;
}
100% {
transform: translateX(-30px);
opacity: 1;
}
}
/* tag的reset */
.dm-reset-style .el-tag.el-tag--info .el-tag__close:hover {
color: #FFFFFF;
background-color: #f4f4f5;
}
.dm-reset-style .el-step-text {
position: relative;
top: -4px;
left: -4px;
display: inline-block;
vertical-align: text-top;
font-size: 14px;
background-color: #fff;
padding: 0 5px;
}
.dm-reset-style .el-step__title {
line-height: 24px;
}
.dm-reset-style .el-step__title.is-success {
color: #909399;
}
.dm-reset-style .is-process .is-text {
background-color: #409eff;
border-color: #409eff;
color: #fff;
}
.dm-reset-style .el-step__head.is-success {
color: #409eff;
border-color: #409eff;
}
.dm-reset-style .el-step__description {
max-width: 150px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
color: #c0c4cc;
}
/* 点状 */
.dm-reset-style .el-step__icon.is-dot {
height: 12px;
width: 12px;
top: 6px;
}
.dm-reset-style .el-step__title.is-dot {
margin-top: 10px;
}
.el-select-dropdown {
min-width: 214px;
}
/* .el-input__inner {
height: 32px !important;
} */
.damolish .el-transfer-panel__select .el-input__inner {
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
width: 142px;
/* margin-top: 8px; */
/* margin-left: -6px; */
}
.damolish .el-transfer-panel__select {
display: inline-block;
vertical-align: middle;
margin: 0;
margin-top: 15px;
margin-left: -6px;
}
.damolish .el-transfer-panel__body .el-select {
display: inline-block;
vertical-align: middle;
margin-top: 15px;
margin-left: 15px;
}
.damolish .el-transfer-panel__body {
border-top: 1px solid transparent;
}
.damolish .el-transfer__slot {
width: 270px;
}
\ No newline at end of file
/* 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;
}
/**
* 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;
}
.fl {
float: left;
}
.fr {
float: right;
}
.clearfix:before,
.clearfix:after {
display: block;
visibility: hidden;
height: 0;
content: "";
clear: both;
}
.clearfix {
zoom: 1;
}
.inline-block {
display: inline-block;
}
.block {
display: block;
}
.vertical-top {
vertical-align: top;
}
.vertical-middle {
vertical-align: middle;
}
.border-box {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.border-radius-18 {
border-radius: 18px;
}
.cursor-pointer {
cursor: pointer;
}
.t-rt {
text-align: right;
}
.t-ct {
text-align: center;
}
.text-left {
text-align: left;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.color-fff {
color: #fff;
}
.color-1890ff {
color: #2f54eb;
}
.color-c0c4cc {
color: #c0c4cc;
}
.color-606266 {
color: #606266;
}
.color-303133 {
color: #303133;
}
.color-f56c6c {
color: #f56c6c;
}
.color-909399 {
color: #909399;
}
.color-2f54eb {
color: #2F54EB;
}
.color-dedfe6 {
color: #dedfe6;
}
.p-0 {
padding: 0;
}
.p-20 {
padding: 20px;
}
.p-24 {
padding: 24px;
}
.p-60 {
padding: 60px;
}
.p-45 {
padding: 45px;
}
.p-l-5 {
padding-left: 5px;
}
.p-l-6 {
padding-left: 6px;
}
.p-l-8 {
padding-left: 8px;
}
.p-l-10 {
padding-left: 10px;
}
.p-l-12 {
padding-left: 12px;
}
.p-l-14 {
padding-left: 14px;
}
.p-l-15 {
padding-left: 15px;
}
.p-l-20 {
padding-left: 20px;
}
.p-l-40 {
padding-left: 40px;
}
.p-l-60 {
padding-left: 60px;
}
.p-l-110 {
padding-left: 110px;
}
.p-lr-11 {
padding: 0 11px;
}
.p-r-6 {
padding-right: 6px;
}
.p-r-10 {
padding-right: 10px;
}
.p-r-20 {
padding-right: 20px;
}
.p-t-12 {
padding-top: 12px;
}
.p-t-14 {
padding-top: 14px;
}
.p-t-20 {
padding-top: 20px;
}
.p-t-35 {
padding-top: 35px;
}
.p-t-185 {
padding-top: 185px;
}
.m-l-10 {
margin-left: 10px;
}
.m-l-16 {
margin-left: 16px;
}
.m-t-8 {
margin-top: 8px;
}
.m-t-10 {
margin-top: 10px;
}
.m-t-15 {
margin-top: 15px;
}
.m-t-20 {
margin-top: 20px;
}
.m-t-22 {
margin-top: 22px;
}
.m-t-24 {
margin-top: 24px;
}
.m-t-30 {
margin-top: 30px;
}
.m-t-40 {
margin-top: 40px;
}
.m-t-45 {
margin-top: 45px;
}
.m-r-10 {
margin-right: 10px;
}
.m-r-20 {
margin-right: 20px;
}
.m-b-10 {
margin-bottom: 10px;
}
.m-b-16 {
margin-bottom: 16px;
}
.m-b-20 {
margin-bottom: 20px;
}
.m-b-25 {
margin-bottom: 25px;
}
.m-b-40 {
margin-bottom: 40px;
}
.m-b-60 {
margin-bottom: 60px;
}
.m-20 {
margin: 20px;
}
.font-0 {
font-size: 0;
}
.font-10 {
font-size: 10px;
}
.font-12 {
font-size: 12px;
}
.font-13 {
font-size: 13px;
}
.font-14 {
font-size: 14px;
}
.font-16 {
font-size: 16px;
}
.font-20 {
font-size: 20px;
}
.font-30 {
font-size: 30px;
}
.font-w-400 {
font-weight: 400;
}
.font-w-500 {
font-weight: 500;
}
.font-w-600 {
font-weight: 600;
}
.line-h-1 {
line-height: 1;
}
.line-h-18 {
line-height: 18px;
}
.w-80 {
width: 80px;
}
.w-105 {
width: 105px;
}
.w-118 {
width: 118px;
}
.w-130 {
width: 130px;
}
.w-250 {
width: 250px;
}
.w-500 {
width: 500px;
}
.w-680 {
width: 680px;
}
.inline-block {
display: inline-block;
}
.block {
display: block;
}
.text-ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* flex */
.flex {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
.flex-1 {
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
}
.flex-column {
-webkit-flex-direction: column;
-moz-flex-direction: column;
-ms-flex-direction: column;
-o-flex-direction: column;
flex-direction: column;
}
.flex-row {
-webkit-flex-direction: row;
-moz-flex-direction: row;
-ms-flex-direction: row;
-o-flex-direction: row;
flex-direction: row;
}
.flex-align-center {
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.flex-align-start {
-webkit-box-align: flex-start;
-webkit-align-items: flex-start;
-ms-flex-align: flex-start;
align-items: flex-start;
}
.flex-pack-center {
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
}
.flex-start {
-webkit-justify-content: flex-start;
-moz-justify-content: flex-start;
-ms-justify-content: flex-start;
-o-justify-content: flex-start;
justify-content: flex-start;
}
.flex-wrap {
-webkit-flex-wrap: wrap;
-moz-flex-wrap: wrap;
-ms-flex-wrap: wrap;
-o-flex-wrap: wrap;
flex-wrap: wrap;
}
.flex-space-between {
-webkit-justify-content: space-between;
-moz-justify-content: space-between;
-ms-justify-content: space-between;
-o-justify-content: space-between;
justify-content: space-between;
}
/* 表格隐藏省略 */
.el-table .el-table-column--selection .cell {
text-overflow: clip;
}
/* 单选 */
.el-table .hide-ellipsis .cell {
text-overflow: clip;
}
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: '复制成功',
type: 'success',
duration: 1500
})
}
function clipboardError() {
Vue.prototype.$message({
message: '复制失败',
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)
}
/**
* 传入参数 向url后追加 返回新的url
* @param {string} uri 原始url
* @param {string} key 追加的key
* @param {string} value 追加的key的value
*/
export const updateQueryStringParameter = (uri, key, value) => {
if (!value) {
return uri;
}
var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
var separator = uri.indexOf('?') !== -1 ? '&' : '?';
if (uri.match(re)) {
return uri.replace(re, '$1' + key + '=' + value + '$2');
} else {
return uri + separator + key + '=' + value;
}
};
// 序列化反序列化法 深拷贝对象
export const deepClone = obj => {
return JSON.parse(JSON.stringify(obj));
};
\ No newline at end of file
[{"city":"中国大陆","code":"+86"},{"city":"中国香港","code":"+852"},{"city":"中国澳门","code":"+853"},{"city":"中国台湾","code":"+886"},{"city":"新加坡","code":"+65"},{"city":"阿富汗","code":"+93"},{"city":"阿尔巴尼亚","code":"+355"},{"city":"阿尔格拉","code":"+213"},{"city":"安道尔","code":"+376"},{"city":"安哥拉","code":"+244"},{"city":"安圭拉","code":"+1264"},{"city":"阿森松岛","code":"+247"},{"city":"安提瓜和巴布达","code":"+1268"},{"city":"阿根廷","code":"+54"},{"city":"亚美尼亚","code":"+374"},{"city":"阿鲁巴","code":"+297"},{"city":"澳大利亚","code":"+61"},{"city":"奥地利","code":"+43"},{"city":"阿塞拜疆","code":"+994"},{"city":"巴哈马","code":"+1242"},{"city":"巴林","code":"+973"},{"city":"孟加拉国","code":"+880"},{"city":"巴巴多斯","code":"+1246"},{"city":"白俄罗斯","code":"+375"},{"city":"比利时","code":"+32"},{"city":"伯利兹","code":"+501"},{"city":"贝宁","code":"+229"},{"city":"百慕大","code":"+1441"},{"city":"不丹","code":"+975"},{"city":"玻利维亚","code":"+591"},{"city":"波斯尼亚和黑塞哥维那","code":"+387"},{"city":"博茨瓦纳","code":"+267"},{"city":"巴西","code":"+55"},{"city":"文莱","code":"+673"},{"city":"保加利亚","code":"+359"},{"city":"布基纳法索","code":"+226"},{"city":"布隆迪","code":"+257"},{"city":"柬埔寨","code":"+855"},{"city":"喀麦隆","code":"+237"},{"city":"加拿大","code":"+1"},{"city":"佛得角","code":"+238"},{"city":"开曼群岛","code":"+1345"},{"city":"中非共和国","code":"+236"},{"city":"乍得","code":"+235"},{"city":"智利","code":"+56"},{"city":"哥伦比亚","code":"+57"},{"city":"科摩罗","code":"+269"},{"city":"刚果共和国","code":"+242"},{"city":"刚果民主共和国","code":"+243"},{"city":"库克群岛","code":"+682"},{"city":"哥斯达黎加","code":"+506"},{"city":"科特迪沃","code":"+225"},{"city":"克罗地亚","code":"+385"},{"city":"古巴","code":"+53"},{"city":"塞浦路斯","code":"+357"},{"city":"+捷克共和国","code":"+420"},{"city":"丹麦","code":"+45"},{"city":"吉布提","code":"+253"},{"city":"多米尼加","code":"+1767"},{"city":"多米尼加共和国","code":"+1809"},{"city":"厄瓜多尔","code":"+593"},{"city":"埃及","code":"+20"},{"city":"艾萨尔瓦多","code":"+503"},{"city":"爱沙尼亚","code":"+372"},{"city":"埃塞俄比亚","code":"+251"},{"city":"法罗群岛","code":"+298"},{"city":"斐济","code":"+679"},{"city":"芬兰","code":"+358"},{"city":"法国","code":"+33"},{"city":"法属圭亚那","code":"+594"},{"city":"法属波利尼西亚","code":"+689"},{"city":"加蓬","code":"+241"},{"city":"冈比亚","code":"+220"},{"city":"格鲁吉亚","code":"+995"},{"city":"德国","code":"+94"},{"city":"加纳","code":"+233"},{"city":"直布罗陀","code":"+350"},{"city":"希腊","code":"+30"},{"city":"格陵兰","code":"+299"},{"city":"格林纳达","code":"+1473"},{"city":"瓜德罗普","code":"+590"},{"city":"关岛","code":"+1671"},{"city":"危地马拉","code":"+502"},{"city":"几内亚","code":"+240"},{"city":"根西","code":"+44"},{"city":"几内亚","code":"+224"},{"city":"圭亚那","code":"+592"},{"city":"海地","code":"+509"},{"city":"洪都拉斯","code":"+504"},{"city":"缅甸","code":"+95"},{"city":"匈牙利","code":"+36"},{"city":"冰岛","code":"+354"},{"city":"印度","code":"+91"},{"city":"印度尼西亚","code":"+62"},{"city":"伊朗","code":"+98"},{"city":"伊拉克","code":"+964"},{"city":"爱尔兰","code":"+353"},{"city":"马恩岛","code":"+44"},{"city":"以色列","code":"+972"},{"city":"意大利","code":"+93"},{"city":"牙买加","code":"+1876"},{"city":"日本","code":"+81"},{"city":"泽西岛","code":"+44"},{"city":"约旦","code":"+962"},{"city":"哈萨克斯坦","code":"+7"},{"city":"肯尼亚","code":"+254"},{"city":"科索沃","code":"+383"},{"city":"科威特","code":"+965"},{"city":"吉尔吉斯斯坦","code":"+996"},{"city":"老挝","code":"+856"},{"city":"拉脱维亚","code":"+371"},{"city":"黎巴嫩","code":"+961"},{"city":"莱索托","code":"+266"},{"city":"利比里亚","code":"+231"},{"city":"利比亚","code":"+218"},{"city":"列支敦士登","code":"+423"},{"city":"立陶宛","code":"+370"},{"city":"卢森堡","code":"+352"},{"city":"马其顿","code":"+389"},{"city":"马达加斯加","code":"+261"},{"city":"马拉维","code":"+265"},{"city":"马来西亚","code":"+60"},{"city":"马尔代夫","code":"+960"},{"city":"马里","code":"+223"},{"city":"马耳他","code":"+356"},{"city":"马提尼克","code":"+596"},{"city":"毛里塔尼亚","code":"+222"},{"city":"毛里求斯","code":"+230"},{"city":"马约特","code":"+262"},{"city":"墨西哥","code":"+52"},{"city":"摩尔多瓦","code":"+373"},{"city":"摩纳哥","code":"+377"},{"city":"蒙古","code":"+976"},{"city":"黑山","code":"+382"},{"city":"蒙特塞拉特","code":"+1664"},{"city":"摩洛哥","code":"+212"},{"city":"莫桑比克","code":"+258"},{"city":"纳米比亚","code":"+264"},{"city":"尼泊尔","code":"+977"},{"city":"荷兰","code":"+31"},{"city":"荷属安的列斯","code":"+599"},{"city":"新喀里多尼亚","code":"+687"},{"city":"新西兰","code":"+64"},{"city":"尼加拉瓜","code":"+505"},{"city":"尼日尔","code":"+227"},{"city":"尼日利亚","code":"+234"},{"city":"挪威","code":"+47"},{"city":"阿曼","code":"+968"},{"city":"巴基斯坦","code":"+92"},{"city":"巴勒斯坦","code":"+970"},{"city":"巴拿马","code":"+507"},{"city":"巴布亚新几内亚","code":"+675"},{"city":"巴拉圭","code":"+595"},{"city":"秘鲁","code":"+51"},{"city":"菲律宾","code":"+63"},{"city":"波兰","code":"+48"},{"city":"葡萄牙","code":"+351"},{"city":"波多黎各","code":"+1"},{"city":"库塔","code":"+974"},{"city":"留尼汪","code":"+262"},{"city":"罗马尼亚","code":"+40"},{"city":"俄罗斯","code":"+7"},{"city":"卢旺达","code":"+250"},{"city":"萨摩亚东部","code":"+684"},{"city":"萨摩亚西部","code":"+685"},{"city":"圣马力诺","code":"+378"},{"city":"圣多美和普林西比","code":"+239"},{"city":"沙特阿拉伯","code":"+966"},{"city":"塞内加尔","code":"+221"},{"city":"塞尔维亚","code":"+381"},{"city":"塞舌尔","code":"+248"},{"city":"塞拉利昂","code":"+232"},{"city":"斯洛伐克","code":"+421"},{"city":"斯洛文尼亚","code":"+386"},{"city":"南非","code":"+27"},{"city":"韩国","code":"+82"},{"city":"西班牙","code":"+34"},{"city":"斯里兰卡","code":"+94"},{"city":"圣基茨和尼维斯","code":"+1869"},{"city":"圣卢西亚","code":"+1758"},{"city":"圣文森特","code":"+1784"},{"city":"苏丹","code":"+249"},{"city":"苏里南","code":"+597"},{"city":"斯威士兰","code":"+268"},{"city":"瑞典","code":"+46"},{"city":"瑞士","code":"+41"},{"city":"叙利亚","code":"+963"},{"city":"塔吉克斯坦","code":"+992"},{"city":"坦桑尼亚","code":"+255"},{"city":"泰国","code":"+66"},{"city":"东帝汶","code":"+670"},{"city":"多哥","code":"+228"},{"city":"汤加","code":"+676"},{"city":"特立尼达和多巴哥","code":"+1868"},{"city":"突尼斯","code":"+216"},{"city":"土耳其","code":"+90"},{"city":"土库曼斯坦","code":"+993"},{"city":"特克斯和凯科斯群岛","code":"+1649"},{"city":"乌干达","code":"+256"},{"city":"乌克兰","code":"+380"},{"city":"阿拉伯联合酋长国","code":"+971"},{"city":"英国","code":"+44"},{"city":"美国","code":"+1"},{"city":"乌拉圭","code":"+598"},{"city":"乌兹别克斯坦","code":"+998"},{"city":"瓦努阿图","code":"+678"},{"city":"委内瑞拉","code":"+58"},{"city":"越南","code":"+84"},{"city":"维尔京群岛","code":"+1340"},{"city":"也门","code":"+967"},{"city":"赞比亚","code":"+260"},{"city":"津巴布韦","code":"+263"}]
\ No newline at end of file
/*
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2020-07-16 16:37:05
* @LastEditors: 无尘
* @LastEditTime: 2020-07-20 15:30:44
*/
import axios from 'axios';
import qs from 'qs';
import { Message } from 'element-ui';
import { origin, succCode, notAuthCode } from '@/config/index.js';
/* eslint-disable-next-line */
// const BASEURL = process.env.NODE_ENV !== 'production' ? 'https://four.gicdev.com' : '';
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 = params;
break;
default:
requestConfig.data = params;
break;
}
return new Promise((resolve, reject) => {
axios(requestConfig).then(res => {
let resp = res.data;
if (resp.code == notAuthCode) {
window.location.href = `${origin}/haoban-4/#/login`;
return;
}
if (requestConfig.useIntercept && resp.code != succCode) {
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 style="background:#f0f2f5;margin-top: -20px;height:100%;">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" :src="img_403" alt="403" />
</div>
<div class="bullshit">
<!-- <div class="bullshit__oops">403</div> -->
<div class="bullshit__headline">{{ message }}</div>
<a href="#/companyGroup" class="bullshit__return-home">返回首页</a>
</div>
</div>
</div>
</template>
<script>
import img_403 from '@/assets/403_images/error_403.svg';
export default {
name: 'page403',
data() {
return {
img_403
};
},
computed: {
message() {
return '抱歉,你无权访问该页面';
}
}
};
</script>
<style lang="less" scoped>
.wscn-http404 {
position: relative;
width: 1200px;
margin: 20px auto 60px;
padding: 0 100px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
padding: 150px 152px 150px 0;
text-align: right;
overflow: hidden;
&__parent {
width: 100%;
max-width: 430px;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 150px 0;
overflow: hidden;
display: flex;
align-items: flex-start;
flex-direction: column;
justify-content: center;
height: 360px;
&__oops {
color: #434e59;
font-size: 72px;
font-weight: 600;
line-height: 72px;
margin-bottom: 24px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;*/
}
&__headline {
color: rgba(0, 0, 0, 0.45);
font-size: 20px;
line-height: 28px;
margin-bottom: 16px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;*/
}
&__return-home {
display: inline-block;
height: 32px;
line-height: 32px;
font-weight: 400;
text-align: center;
-ms-touch-action: manipulation;
touch-action: manipulation;
background-image: none;
white-space: nowrap;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border: 1px solid #2f54eb;
color: #fff;
background-color: #2f54eb;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
-webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035);
cursor: pointer;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;*/
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
<template>
<div style="background:#f0f2f5;margin-top: -20px;height:100%;">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" :src="img_404" alt="404" />
</div>
<div class="bullshit">
<!-- <div class="bullshit__oops">404</div> -->
<div class="bullshit__headline">{{ message }}</div>
<a href="#/companyGroup" class="bullshit__return-home">返回首页</a>
</div>
</div>
</div>
</template>
<script>
import img_404 from '@/assets/404_images/error_404.svg';
export default {
name: 'page404',
data() {
return {
img_404
};
},
computed: {
message() {
return '抱歉,你访问的页面不存在';
}
},
/* eslint-disable */
mounted() {
}
};
</script>
<style lang="less" scoped>
.wscn-http404 {
position: relative;
width: 1200px;
margin: 20px auto 60px;
padding: 0 100px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
padding: 150px 152px 150px 0;
text-align: right;
overflow: hidden;
&__parent {
width: 100%;
max-width: 430px;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 150px 0;
overflow: hidden;
display: flex;
align-items: flex-start;
flex-direction: column;
justify-content: center;
height: 360px;
&__oops {
color: #434e59;
font-size: 72px;
font-weight: 600;
line-height: 72px;
margin-bottom: 24px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;*/
}
&__headline {
color: rgba(0, 0, 0, 0.45);
font-size: 20px;
line-height: 28px;
margin-bottom: 16px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;*/
}
&__return-home {
display: inline-block;
height: 32px;
line-height: 32px;
font-weight: 400;
text-align: center;
-ms-touch-action: manipulation;
touch-action: manipulation;
background-image: none;
white-space: nowrap;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border: 1px solid #2f54eb;
color: #fff;
background-color: #2f54eb;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
-webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035);
cursor: pointer;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;*/
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
This diff is collapsed. Click to expand it.
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