Quellcode durchsuchen

更新vue工程

guohh vor 3 Jahren
Ursprung
Commit
354f19a3aa
22 geänderte Dateien mit 437 neuen und 130 gelöschten Zeilen
  1. 2 1
      .gitignore
  2. 3 0
      common/vue/project/ipu-admin-element/src/assets/styles/common.css
  3. 0 8
      common/vue/project/ipu-admin-element/src/assets/styles/element-customer.scss
  4. 1 3
      common/vue/project/ipu-admin-element/src/assets/styles/index.scss
  5. 9 0
      common/vue/project/ipu-admin-element/src/assets/styles/third.scss
  6. 15 15
      common/vue/project/ipu-admin-element/src/routes.js
  7. 10 6
      common/vue/project/ipu-admin-element/src/services/index.js
  8. 3 0
      common/vue/project/ipu-admin-element/src/store.js
  9. 33 0
      common/vue/project/ipu-admin-element/src/views/HelloA.vue
  10. 1 1
      common/vue/project/ipu-admin-element/src/views/HelloWorldBb.vue
  11. 1 1
      common/vue/project/ipu-admin-element/src/views/HelloWorldCc.vue
  12. 0 58
      common/vue/project/ipu-admin-element/src/views/HelloWorld.vue
  13. 0 33
      common/vue/project/ipu-admin-element/src/views/HelloWorldAa.vue
  14. 0 0
      common/vue/project/ipu-admin-element/src/views/NotFound.vue
  15. 4 4
      common/vue/project/ipu-admin-element/vue.config.js
  16. BIN
      common/vue/project/ipu-admin-v1/src/assets/img/logo.png
  17. 11 0
      common/vue/project/ipu-admin-v1/src/service/modules/account.js
  18. 13 0
      common/vue/project/ipu-admin-v1/src/service/modules/app.js
  19. 11 0
      common/vue/project/ipu-admin-v1/src/service/modules/index.js
  20. 16 0
      common/vue/project/ipu-admin-v1/src/service/modules/menu.js
  21. 16 0
      common/vue/project/ipu-admin-v1/src/service/modules/user.js
  22. 288 0
      common/vue/project/ipu-admin-v1/src/views/login/index.vue

+ 2 - 1
.gitignore

@ -1,4 +1,5 @@
1 1
**/node_modules
2 2
.sass-cache
3 3
.settings
4
.project
4
.project
5
/.idea/

+ 3 - 0
common/vue/project/ipu-admin-element/src/assets/styles/common.css

@ -1,5 +1,7 @@
1 1
/* 项目公共样式 */
2 2
3
@import "./ipuUI";      /* ipuUI中关于flex的样式定义  */
4
3 5
* :after,
4 6
* :before,
5 7
* {
@ -53,3 +55,4 @@ textarea:-webkit-autofill,
53 55
select:-webkit-autofill {
54 56
  -webkit-box-shadow: 0 0 0 1000px white inset;
55 57
}
58

+ 0 - 8
common/vue/project/ipu-admin-element/src/assets/styles/element-customer.scss

@ -1,8 +0,0 @@
1
/* 改变主题色变量 */
2
3
$--color-primary: $c-primary;
4
5
/* 改变 icon 字体路径变量,必需 */
6
$--font-path: '~element-ui/lib/theme-chalk/fonts';
7
8
@import "~element-ui/packages/theme-chalk/src/index";

+ 1 - 3
common/vue/project/ipu-admin-element/src/assets/styles/index.scss

@ -1,9 +1,7 @@
1 1
@import './variable';   // 变量定义
2
@import '~remixicon/fonts/remixicon.css';   // 字体图标样式
3
@import "element-customer";   // element样式自定义
2
@import './third';      // 第三方样式
4 3
5 4
@import "./reset";      // 浏览器样式重置
6 5
@import './common';     // 项目通用样式
7
@import "./ipuUI";      // ipuUI中关于flex的样式定义
8 6
9 7
// 普通样式随组件定义,不放这里

+ 9 - 0
common/vue/project/ipu-admin-element/src/assets/styles/third.scss

@ -0,0 +1,9 @@
1
@import '~remixicon/fonts/remixicon.css';   // 字体图标样式
2
3
/* 定义element-ui主题色 */
4
$--color-primary: $c-primary;
5
6
/* 改变 icon 字体路径变量,必需 */
7
$--font-path: '~element-ui/lib/theme-chalk/fonts';
8
9
@import "~element-ui/packages/theme-chalk/src/index";   // element-ui样式

+ 15 - 15
common/vue/project/ipu-admin-element/src/routes.js

@ -5,13 +5,13 @@
5 5
import Layout from './views/layout/Layout';
6 6
import Welcome from './views/Welcome';
7 7
import Login from './views/user/Login';
8
import NotFind from './views/NotFind';
8
import NotFound from './views/NotFound';
9 9
10 10
11
import HelloWorldAa from './views/HelloWorldAa';
12
import HelloWorldBb from './views/HelloWorldBb';
13
import HelloWorldCc from './views/HelloWorldCc';
14
11
import HelloA from './views/HelloA';
12
import HelloB from './views/HelloB';
13
import HelloC from './views/HelloB';
14
 
15 15
export default [{
16 16
    path: '/login',
17 17
    name: 'Login',
@ -33,27 +33,27 @@ export default [{
33 33
      }
34 34
    }, {
35 35
      path: '/a',
36
      name: 'HelloWorldAa',
37
      component: HelloWorldAa
36
      name: 'HelloA',
37
      component: HelloA
38 38
    }, {
39 39
      path: '/b',
40
      name: 'HelloWorldBb',
41
      component: HelloWorldBb
40
      name: 'HelloB',
41
      component: HelloB
42 42
    }, {
43 43
      path: '/c',
44
      name: 'HelloWorldCc',
45
      component: HelloWorldCc,
44
      name: 'HelloC',
45
      component: HelloC,
46 46
      meta:{
47 47
        noCache: true
48 48
      }
49 49
    }, {
50 50
      path: '/*',
51
      name: 'NotFind',
52
      component: NotFind,
51
      name: 'NotFound',
52
      component: NotFound,
53 53
    }]
54 54
  }, {    // 404页面匹配*,要放最后面
55 55
    path: '/*',
56
    name: 'NotFind',
57
    component: NotFind
56
    name: 'NotFound',
57
    component: NotFound
58 58
  }
59 59
]

+ 10 - 6
common/vue/project/ipu-admin-element/src/services/index.js

@ -9,31 +9,35 @@ import menuSer from "./service-menu"
9 9
10 10
/*
11 11
模块服务配置参考
12
调用服务 service.moudleName.postForm(data, config)  // data都是以json格式传入,根据内容格式调用contTypes对应方法转换数据
13
若未设置模块名称,方法直接挂在根目录下 service.postForm(data, config)
14
可通过service.$http,取则axios对象自定义调用接口请求,但是数据转换与请求拦截代码仍会生效
15
12 16
let paths = {
13 17
  deleteApp: "/qb/deleteApp"    // 请求数据格式与config一致,直接配置路径
14
  getAppDetail: {
18
  postForm: {
15 19
    path: "/getAppDetail",
16 20
    contentType: 'form'   // form接口请求
21
    method:'post'        //  请求方式
17 22
  },
18
   getAppDetail: {
23
   json: {
19 24
    path: "getAppDetail",
20
    contentType: 'rest'   // rest接口请求
25
    contentType: 'json'   // rest接口请求
21 26
  },
22
   getAppDetail: {
27
   file: {
23 28
    path: "/getAppDetail",
24 29
    contentType: 'file'   // 文件上传请求
25 30
  }
26 31
}
27 32
28 33
let config = {
29
  mname: "app",        // 服务模块名
34
  mname: "moudleName",        // 服务模块名,可为空
30 35
  prefix: "/qb/",      // 路径公共前缀
31 36
  paths
32 37
}
33 38
34 39
export default config
35 40
36
调用服务 service.app.deleteApp(data, config)  // data都是以json格式传入,调用content-types对应方法转换数据
37 41
*/
38 42
39 43
let contType = process.env.VUE_APP_MODE == 'mock' ? 'json' : 'form'  // 模拟接口用的是json格式请求,服务用的是form

+ 3 - 0
common/vue/project/ipu-admin-element/src/store.js

@ -1,6 +1,9 @@
1 1
import Vue from 'vue'
2 2
import Vuex from 'vuex'
3 3
4
// 模块范围内的store,可在模块内定义
5
6
4 7
Vue.use(Vuex)
5 8
6 9
// 使用sessionStorage存储,可在页面刷新时不丢失数据

+ 33 - 0
common/vue/project/ipu-admin-element/src/views/HelloA.vue

@ -0,0 +1,33 @@
1
<template>
2
  <div class="hello">
3
    <input type="text" value="Hello A">
4
  </div>
5
</template>
6
7
8
<script>
9
  export default {
10
    name: 'HelloA',
11
    props: {
12
      msg: String
13
    }
14
  }
15
</script>
16
17
<!-- Add "scoped" attribute to limit CSS to this component only -->
18
<style scoped>
19
  h3 {
20
    margin: 40px 0 0;
21
  }
22
  ul {
23
    list-style-type: none;
24
    padding: 0;
25
  }
26
  li {
27
    display: inline-block;
28
    margin: 0 10px;
29
  }
30
  a {
31
    color: #42b983;
32
  }
33
</style>

+ 1 - 1
common/vue/project/ipu-admin-element/src/views/HelloWorldBb.vue

@ -7,7 +7,7 @@
7 7
8 8
<script>
9 9
export default {
10
  name: 'HelloWorld',
10
  name: 'HelloB',
11 11
  props: {
12 12
    msg: String
13 13
  }

+ 1 - 1
common/vue/project/ipu-admin-element/src/views/HelloWorldCc.vue

@ -7,7 +7,7 @@
7 7
8 8
<script>
9 9
export default {
10
  name: 'HelloWorld',
10
  name: 'HelloC',
11 11
  props: {
12 12
    msg: String
13 13
  }

+ 0 - 58
common/vue/project/ipu-admin-element/src/views/HelloWorld.vue

@ -1,58 +0,0 @@
1
<template>
2
  <div class="hello">
3
    <h1>{{ msg }}</h1>
4
    <p>
5
      For a guide and recipes on how to configure / customize this project,<br>
6
      check out the
7
      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
8
    </p>
9
    <h3>Installed CLI Plugins</h3>
10
    <ul>
11
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
12
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
13
    </ul>
14
    <h3>Essential Links</h3>
15
    <ul>
16
      <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
17
      <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
18
      <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
19
      <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
20
      <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
21
    </ul>
22
    <h3>Ecosystem</h3>
23
    <ul>
24
      <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
25
      <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
26
      <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
27
      <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
28
      <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
29
    </ul>
30
  </div>
31
</template>
32
33
<script>
34
export default {
35
  name: 'HelloWorld',
36
  props: {
37
    msg: String
38
  }
39
}
40
</script>
41
42
<!-- Add "scoped" attribute to limit CSS to this component only -->
43
<style scoped>
44
h3 {
45
  margin: 40px 0 0;
46
}
47
ul {
48
  list-style-type: none;
49
  padding: 0;
50
}
51
li {
52
  display: inline-block;
53
  margin: 0 10px;
54
}
55
a {
56
  color: #42b983;
57
}
58
</style>

+ 0 - 33
common/vue/project/ipu-admin-element/src/views/HelloWorldAa.vue

@ -1,33 +0,0 @@
1
<template>
2
  <div class="hello">
3
    <input type="text" value="Hello A">
4
  </div>
5
</template>
6
7
8
<script>
9
export default {
10
  name: 'HelloWorldA',
11
  props: {
12
    msg: String
13
  }
14
}
15
</script>
16
17
<!-- Add "scoped" attribute to limit CSS to this component only -->
18
<style scoped>
19
h3 {
20
  margin: 40px 0 0;
21
}
22
ul {
23
  list-style-type: none;
24
  padding: 0;
25
}
26
li {
27
  display: inline-block;
28
  margin: 0 10px;
29
}
30
a {
31
  color: #42b983;
32
}
33
</style>

common/vue/project/ipu-admin-element/src/views/NotFind.vue → common/vue/project/ipu-admin-element/src/views/NotFound.vue


+ 4 - 4
common/vue/project/ipu-admin-element/vue.config.js

@ -1,12 +1,12 @@
1 1
module.exports = {
2
  publicPath: './',   // 默认是'/'
2
  publicPath: './',   // 静态资源路径前缀设置,默认是'/'
3 3
  css: {
4 4
    sourceMap: true
5 5
  },
6
  lintOnSave: 'warning',  // lint错误生成为警告不导致编译失败
7
  chainWebpack: (config) => { // 对webpack配置进行定制
6
  lintOnSave: 'warning',          // lint错误生成为警告不导致编译失败
7
  chainWebpack: (config) => {     // 对webpack配置进行定制
8 8
    config.plugin('html').tap(args => {
9
      args[0].title = "基础工程";
9
      args[0].title = "基础工程";   // 修改首页标题
10 10
      return args;
11 11
    })
12 12
  }

BIN
common/vue/project/ipu-admin-v1/src/assets/img/logo.png


+ 11 - 0
common/vue/project/ipu-admin-v1/src/service/modules/account.js

@ -0,0 +1,11 @@
1
// 账号相关,不用登录的业务,如登录、注册、找回密码等
2
3
let config = {
4
  moduleName: "account",    // 服务模块名
5
  prefix: "/qb",      // 模块公共路径前缀
6
  paths:{
7
    login: "/login"
8
  }
9
}
10
11
export default config

+ 13 - 0
common/vue/project/ipu-admin-v1/src/service/modules/app.js

@ -0,0 +1,13 @@
1
let config = {
2
  moduleName: "app",    // 服务模块名
3
  prefix: "",      // 路径公共前缀
4
  paths: {
5
    getAppList: "/qb/getAppList",
6
    createApp: "/qb/createApp",   // 修改当前用户信息?
7
    getAppDetail: "/qb/getAppDetail",
8
    modifyAppInfo: "/qb/modifyAppInfo",
9
    deleteApp: "/qb/deleteApp"
10
  }
11
}
12
13
export default config

+ 11 - 0
common/vue/project/ipu-admin-v1/src/service/modules/index.js

@ -0,0 +1,11 @@
1
import account from './account';
2
import app from './app';
3
import menu from './menu';
4
import user from './user';
5
6
export default {
7
  account,
8
  app,
9
  menu,
10
  user
11
}

+ 16 - 0
common/vue/project/ipu-admin-v1/src/service/modules/menu.js

@ -0,0 +1,16 @@
1
let config = {
2
  moduleName: "menu",    // 服务模块名
3
  prefix: "",       // 模块下公共路径前缀
4
  paths: {
5
    getMenuList: "/qb/getAppMenus",
6
    createMenu: "/qb/createMenu",   // 修改当前用户信息?
7
    getMenuDetail: "/qb/getMenuDetail",
8
    modifyMenu: "/qb/modifyMenu",
9
    deleteMenu: "/qb/deleteMenu",
10
    modifyMenuAttr: "/qb/modifyMenuAttr",  // 调整菜单位置
11
    modifyMenuSort: "/qb/modifyMenuSort",  // 调整菜单位置
12
    getMenuCatalog: "/qb/getMenuCatalog"  // 获取目录列表
13
  }
14
}
15
16
export default config

+ 16 - 0
common/vue/project/ipu-admin-v1/src/service/modules/user.js

@ -0,0 +1,16 @@
1
let config = {
2
  moduleName: "user",    // 服务模块名
3
  prefix: "",    // 路径公共前缀
4
  paths: {
5
    getUserInfoDetail: "/qb/getUserInfoDetail",
6
    modifyUserInfo: "/qb/modifyUserInfo",   // 修改当前用户信息?
7
    modifyPasswd: "/qb/modifyPasswd",
8
    getUserList: "/qb/getUserList",
9
    createUser: "/qb/createUser",
10
    modifyUser: "/qb/modifyUser",            // 修改别的用户信息
11
    deleteUser: "/qb/deleteUser",            // 修改别的用户信息
12
    resetPasswd: "/qb/resetPasswd",            // 修改别的用户信息
13
  }
14
}
15
16
export default config

+ 288 - 0
common/vue/project/ipu-admin-v1/src/views/login/index.vue

@ -0,0 +1,288 @@
1
<template>
2
  <div class="pages-login">
3
4
    <div class="login-form">
5
      <div class="ipu-flex-middle-center login-form-header">
6
        <div class="logo"></div>
7
        <div class="ipu-flex sys-name">
8
          后台管理平台
9
        </div>
10
      </div>
11
      <div class="login-form-body">
12
        <div class="login-form-row">
13
          <div class="ipu-flex-middle login-form-input login-form-input-account">
14
            <div class="ipu-flex-grow-0 ipu-flex-center form-icon icon-user">
15
              <i class="ri-user-line"></i>
16
            </div>
17
            <div class="ipu-flex-grow-1 form-input-wrap">
18
              <input type="text" class="form-input" v-model="username" placeholder="请输入账号" autocomplete="new-password">
19
            </div>
20
            <div class="ipu-flex-grow-0 form-input-clear" v-show="username!=''" @click="username=''">
21
              <i class="ri-close-circle-fill"></i>
22
            </div>
23
          </div>
24
          <div class="login-form-row-tips">
25
            账号不存在,请重新输入
26
          </div>
27
        </div>
28
        <div class="login-form-row">
29
          <div class="ipu-flex-middle login-form-input login-form-input-pass">
30
            <div class="ipu-flex-grow-0 ipu-flex-center form-icon icon-user">
31
              <i class="ri-lock-line"></i>
32
            </div>
33
            <div class="ipu-flex-grow-1 form-input-wrap">
34
              <input type="password" v-model="password" class="form-input" placeholder="请输入密码" autocomplete="new-password">
35
            </div>
36
            <div class="ipu-flex-grow-0 form-input-clear" v-show="password!=''" @click="password=''">
37
              <i class="ri-close-circle-fill"></i>
38
            </div>
39
          </div>
40
          <div class="login-form-row-tips">
41
            密码错误,请重新输入
42
          </div>
43
        </div>
44
45
        <div class="ipu-flex-middle ipu-flex-justify-space login-form-row login-form-row-asset">
46
          <el-checkbox v-model="autoLogin">自动登录</el-checkbox>
47
          <a href="javascript:;" class="link-to-forget">忘记密码</a>
48
        </div>
49
        <div class="login-form-row">
50
          <button class="form-btn" @click="login">登录</button>
51
        </div>
52
      </div>
53
      <div class="login-form-footer">
54
        还没有账号?<a href="javascript:;" class="link-to-register">注册账号</a>
55
      </div>
56
    </div>
57
58
    <div class="sys-power">
59
      Powered by AISWare IPU
60
    </div>
61
62
  </div>
63
</template>
64
65
<script>
66
  export default {
67
    name: 'Login',
68
    props: {},
69
    data() {
70
      return {
71
        username: "",   // 登录用户名
72
        password: "",   // 登录密码
73
        autoLogin: true   // 下次是否自动登录
74
      }
75
    },
76
    created() {
77
      this.resetInput()
78
    },
79
    mounted() {
80
      this.resetInput()
81
    },
82
    methods: {
83
      resetInput() {
84
        this.username = ""
85
        this.password = ""
86
      },
87
      login() {
88
        console.log(this.username, this.password);
89
        this.$router.push({name: "Welcome"})
90
      }
91
    }
92
  }
93
</script>
94
<!-- Add "scoped" attribute to limit CSS to this component only -->
95
<style lang="scss" rel="stylesheet/scss" scoped>
96
  @import "@/assets/styles/variable.scss";
97
98
  .pages-login {
99
    width: 100%;
100
    height: 100%;
101
    position: relative;
102
    background: linear-gradient(360deg, #36527C 0%, #071A34 100%);
103
    min-height: 600px;
104
    min-width: 600px;
105
  }
106
107
  .login-form {
108
    position: relative;
109
    left: 50%;
110
    top: 45%;
111
    transform: translate(-50%, -50%);
112
    background-color: #fff;
113
    width: 480px;
114
    border-radius: 8px;
115
    padding: 60px;
116
  }
117
118
  .login-form-header .logo {
119
    width: 36px;
120
    height: 36px;
121
    background: url("~@/assets/img/logo-black.png") center no-repeat;
122
    background-size: 100%;
123
    margin-right: 12px;
124
  }
125
126
  .form-input-wrap {
127
    margin: 0 10px;
128
  }
129
130
  .login-form-header .sys-name {
131
    font-size: 32px;
132
    font-weight: 500;
133
    color: rgba(0, 0, 0, .85);
134
    line-height: 50px;
135
  }
136
137
  .login-form-header .sys-name .parent {
138
    margin-right: 5px;
139
  }
140
141
  .login-form-row .form-btn {
142
    margin-top: 16px;
143
    -webkit-appearance: none;
144
    display: block;
145
    width: 100%;
146
    background: $c-primary;
147
    border-radius: 4px;
148
    text-align: center;
149
    font-size: 16px;
150
    font-weight: 400;
151
    color: #FFFFFF;
152
    line-height: 40px;
153
    cursor: pointer;
154
  }
155
156
  .login-form-input {
157
    height: 40px;
158
    border-radius: 4px;
159
    border: 1px solid rgba(0, 0, 0, .15);
160
  }
161
162
  .form-input {
163
    display: block;
164
    width: 100%;
165
    border: none;
166
    font-size: 16px;
167
    font-weight: 400;
168
    color: rgba(0, 0, 0, .65);
169
    line-height: 24px;
170
    padding: 0 2px;
171
    background-color: transparent;
172
  }
173
174
175
  .form-input::-webkit-input-placeholder {
176
    color: rgba(0, 0, 0, .25);
177
  }
178
179
  .form-input::-moz-placeholder { /* Mozilla Firefox 19+ */
180
    color: rgba(0, 0, 0, .25);
181
  }
182
183
  .form-input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
184
    color: rgba(0, 0, 0, .25);
185
  }
186
187
  .form-input:-ms-input-placeholder { /* Internet Explorer 10-11 */
188
    color: rgba(0, 0, 0, .25);
189
  }
190
191
  .form-icon {
192
    margin-left: 12px;
193
  }
194
195
  .form-icon i {
196
    font-size: 16px;
197
    width: 16px;
198
    line-height: 1;
199
    color: rgba(0, 0, 0, .25);
200
  }
201
202
  .login-form-row-asset {
203
    font-size: 14px;
204
    font-weight: 400;
205
    color: rgba(0, 0, 0, .65);
206
    line-height: 22px;
207
  }
208
209
  .login-form-row-tips {
210
    font-size: 12px;
211
    font-weight: 400;
212
    color: #F5222D;
213
    line-height: 16px;
214
    height: 16px;
215
    visibility: hidden;
216
  }
217
218
  .login-form-body {
219
    margin-top: 40px;
220
  }
221
222
  .login-captcha-img {
223
    width: 62px;
224
    height: 38px;
225
    margin: 0 7px;
226
    display: block;
227
  }
228
229
  .form-input-clear {
230
    width: 30px;
231
    height: 30px;
232
    text-align: center;
233
    line-height: 30px;
234
    font-size: 14px;
235
    cursor: pointer;
236
    color: rgba(0, 0, 0, .25);
237
  }
238
239
  .login-form-row-invalid .login-form-input {
240
    border-color: #F5222D;
241
  }
242
243
  .login-form-row-invalid .form-input-clear {
244
    display: block;
245
  }
246
247
  .login-form-row-invalid .login-form-row-tips {
248
    visibility: visible;
249
  }
250
251
252
  .form-input { /* 火狐下有效,输入框有历史记住数据,背景是黄色 */
253
    background: none;
254
    outline: none;
255
  }
256
257
  .sys-power {
258
    position: absolute;
259
    left: 50%;
260
    transform: translate(-50%, 0);
261
    font-size: 12px;
262
    font-weight: 400;
263
    color: rgba(255, 255, 255, .25);
264
    line-height: 20px;
265
    bottom: 5%;
266
  }
267
268
  .link-to-forget {
269
    font-size: 14px;
270
    font-weight: 400;
271
    color: rgba(0, 0, 0, .45);
272
    line-height: 22px;
273
  }
274
275
  .login-form-footer {
276
    margin-top: 40px;
277
    text-align: center;
278
    font-size: 14px;
279
    font-weight: 400;
280
    color: rgba(0, 0, 0, .65);
281
    line-height: 22px;
282
  }
283
284
  .link-to-register {
285
    color: $c-primary;
286
  }
287
288
</style>