正在显示
11 个修改的文件
包含
172 行增加
和
45 行删除
1 | import axios from 'axios'; | 1 | import axios from 'axios'; |
2 | 2 | ||
3 | -let base = ''; | ||
4 | - | ||
5 | -export const requestLogin = params => { return axios.post(`${base}/login`, params).then(res => res.data); }; | 3 | +let base = 'http://127.0.0.1:7003'; |
4 | +axios.defaults.baseURL = 'http://127.0.0.1:7003'; | ||
5 | + | ||
6 | +export const requestLogin = params => { | ||
7 | + return axios({ | ||
8 | + method: 'POST', | ||
9 | + url: '/login', | ||
10 | + data: params, | ||
11 | + transformRequest: [function (data) { | ||
12 | + // Do whatever you want to transform the data | ||
13 | + let ret = '' | ||
14 | + for (let it in data) { | ||
15 | + ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' | ||
16 | + } | ||
17 | + console.log(ret) | ||
18 | + return ret | ||
19 | + }], | ||
20 | + headers: { | ||
21 | + 'Content-Type': 'application/x-www-form-urlencoded' | ||
22 | + } | ||
23 | + }) | ||
24 | + // return axios.post(`${base}/login`, params).then(res => res.data); | ||
25 | +}; | ||
6 | 26 | ||
7 | export const getUserList = params => { return axios.get(`${base}/user/list`, { params: params }); }; | 27 | export const getUserList = params => { return axios.get(`${base}/user/list`, { params: params }); }; |
8 | 28 | ||
9 | -export const getUserListPage = params => { return axios.get(`${base}/user/listpage`, { params: params }); }; | 29 | +export const getUserListPage = params => { return axios.get(`${base}/user/list`, { params: params }); }; |
10 | 30 | ||
11 | export const removeUser = params => { return axios.get(`${base}/user/remove`, { params: params }); }; | 31 | export const removeUser = params => { return axios.get(`${base}/user/remove`, { params: params }); }; |
12 | 32 |
@@ -8,7 +8,7 @@ export default { | @@ -8,7 +8,7 @@ export default { | ||
8 | * mock bootstrap | 8 | * mock bootstrap |
9 | */ | 9 | */ |
10 | bootstrap() { | 10 | bootstrap() { |
11 | - let mock = new MockAdapter(axios); | 11 | + let mock = new MockAdapter(); |
12 | 12 | ||
13 | // mock success request | 13 | // mock success request |
14 | mock.onGet('/success').reply(200, { | 14 | mock.onGet('/success').reply(200, { |
@@ -31,7 +31,7 @@ let routes = [ | @@ -31,7 +31,7 @@ let routes = [ | ||
31 | iconCls: 'el-icon-message',//图标样式class | 31 | iconCls: 'el-icon-message',//图标样式class |
32 | children: [ | 32 | children: [ |
33 | { path: '/main', component: Main, name: '主页', hidden: false }, | 33 | { path: '/main', component: Main, name: '主页', hidden: false }, |
34 | - { path: '/table', component: Table, name: 'Table' }, | 34 | + { path: '/table', component: Table, name: '用户管理' }, |
35 | { path: '/form', component: Form, name: 'Form' }, | 35 | { path: '/form', component: Form, name: 'Form' }, |
36 | { path: '/user', component: user, name: '列表' }, | 36 | { path: '/user', component: user, name: '列表' }, |
37 | ] | 37 | ] |
@@ -129,8 +129,8 @@ | @@ -129,8 +129,8 @@ | ||
129 | var user = sessionStorage.getItem('user'); | 129 | var user = sessionStorage.getItem('user'); |
130 | if (user) { | 130 | if (user) { |
131 | user = JSON.parse(user); | 131 | user = JSON.parse(user); |
132 | - this.sysUserName = user.name || ''; | ||
133 | - this.sysUserAvatar = user.avatar || ''; | 132 | + this.sysUserName = user.username || ''; |
133 | + this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg'; | ||
134 | } | 134 | } |
135 | 135 | ||
136 | } | 136 | } |
1 | <template> | 1 | <template> |
2 | - <el-form :model="ruleForm2" :rules="rules2" ref="ruleForm2" label-position="left" label-width="0px" class="demo-ruleForm login-container"> | 2 | + <div> |
3 | + <el-form :model="ruleForm2" :rules="rules2" ref="ruleForm2" label-position="left" label-width="0px" class="demo-ruleForm login-container" id="loginForm"> | ||
3 | <h3 class="title">系统登录</h3> | 4 | <h3 class="title">系统登录</h3> |
4 | <el-form-item prop="account"> | 5 | <el-form-item prop="account"> |
5 | <el-input type="text" v-model="ruleForm2.account" auto-complete="off" placeholder="账号"></el-input> | 6 | <el-input type="text" v-model="ruleForm2.account" auto-complete="off" placeholder="账号"></el-input> |
@@ -9,10 +10,25 @@ | @@ -9,10 +10,25 @@ | ||
9 | </el-form-item> | 10 | </el-form-item> |
10 | <el-checkbox v-model="checked" checked class="remember">记住密码</el-checkbox> | 11 | <el-checkbox v-model="checked" checked class="remember">记住密码</el-checkbox> |
11 | <el-form-item style="width:100%;"> | 12 | <el-form-item style="width:100%;"> |
12 | - <el-button type="primary" style="width:100%;" @click.native.prevent="handleSubmit2" :loading="logining">登录</el-button> | 13 | + <el-button type="primary" style="width:100%;" @click.native.prevent="handleSubmit2" :loading="logining" :plain="true">登录</el-button> |
13 | <!--<el-button @click.native.prevent="handleReset2">重置</el-button>--> | 14 | <!--<el-button @click.native.prevent="handleReset2">重置</el-button>--> |
14 | </el-form-item> | 15 | </el-form-item> |
15 | </el-form> | 16 | </el-form> |
17 | + <div class="homepage-hero-module"> | ||
18 | + <div class="video-container"> | ||
19 | + <div :style="fixStyle" class="filter"></div> | ||
20 | + <video :style="fixStyle" autoplay loop class="fillWidth" v-on:canplay="canplay"> | ||
21 | + <source src="/static/login/New-jumbo.mp4" type="video/mp4"/> | ||
22 | + 浏览器不支持 video 标签,建议升级浏览器。 | ||
23 | + <!--<source src="/static/login/New-jumbo.webm" type="video/webm"/>--> | ||
24 | + <!--浏览器不支持 video 标签,建议升级浏览器。--> | ||
25 | + </video> | ||
26 | + <div class="poster hidden" v-if="!vedioCanPlay"> | ||
27 | + <img :style="fixStyle" src="https://s2.best-wallpaper.net/wallpaper/2560x1600/1511/Airplane-passenger-airliner-flight-sea-lights-airport-evening_2560x1600.jpg" alt=""> | ||
28 | + </div> | ||
29 | + </div> | ||
30 | + </div> | ||
31 | + </div> | ||
16 | </template> | 32 | </template> |
17 | 33 | ||
18 | <script> | 34 | <script> |
@@ -21,6 +37,8 @@ | @@ -21,6 +37,8 @@ | ||
21 | export default { | 37 | export default { |
22 | data() { | 38 | data() { |
23 | return { | 39 | return { |
40 | + vedioCanPlay: true, | ||
41 | + fixStyle: '', | ||
24 | logining: false, | 42 | logining: false, |
25 | ruleForm2: { | 43 | ruleForm2: { |
26 | account: 'admin', | 44 | account: 'admin', |
@@ -40,30 +58,45 @@ | @@ -40,30 +58,45 @@ | ||
40 | }; | 58 | }; |
41 | }, | 59 | }, |
42 | methods: { | 60 | methods: { |
61 | + canplay() { | ||
62 | + this.vedioCanPlay = true | ||
63 | + }, | ||
43 | handleReset2() { | 64 | handleReset2() { |
44 | this.$refs.ruleForm2.resetFields(); | 65 | this.$refs.ruleForm2.resetFields(); |
45 | }, | 66 | }, |
46 | - handleSubmit2(ev) { | 67 | + handleSubmit2: function (ev) { |
47 | var _this = this; | 68 | var _this = this; |
48 | this.$refs.ruleForm2.validate((valid) => { | 69 | this.$refs.ruleForm2.validate((valid) => { |
49 | if (valid) { | 70 | if (valid) { |
50 | //_this.$router.replace('/table'); | 71 | //_this.$router.replace('/table'); |
51 | this.logining = true; | 72 | this.logining = true; |
52 | //NProgress.start(); | 73 | //NProgress.start(); |
53 | - var loginParams = { username: this.ruleForm2.account, password: this.ruleForm2.checkPass }; | ||
54 | - requestLogin(loginParams).then(data => { | 74 | + var loginParams = {username: this.ruleForm2.account, password: this.ruleForm2.checkPass}; |
75 | + requestLogin(loginParams).then(res => { | ||
55 | this.logining = false; | 76 | this.logining = false; |
56 | //NProgress.done(); | 77 | //NProgress.done(); |
57 | - let { msg, code, user } = data; | ||
58 | - if (code !== 200) { | 78 | + let status = res.status; |
79 | + let user = res.data.principal; | ||
80 | + let loginSuccess = res.data.authenticated; | ||
81 | + | ||
82 | + if (status !== 200) { | ||
83 | + let msg = "登录错误"; | ||
59 | this.$message({ | 84 | this.$message({ |
60 | message: msg, | 85 | message: msg, |
61 | - type: 'error' | 86 | + type: "error" |
62 | }); | 87 | }); |
63 | - } else { | 88 | + } else if (loginSuccess) { |
64 | sessionStorage.setItem('user', JSON.stringify(user)); | 89 | sessionStorage.setItem('user', JSON.stringify(user)); |
65 | - this.$router.push({ path: '/table' }); | 90 | + this.$router.push({path: '/table'}); |
66 | } | 91 | } |
92 | + }).catch(error => { | ||
93 | + let msg = error.message; | ||
94 | + this.$message({ | ||
95 | + message: msg, | ||
96 | + type: "error" | ||
97 | + }); | ||
98 | + this.logining = false; | ||
99 | + console.log(_this); | ||
67 | }); | 100 | }); |
68 | } else { | 101 | } else { |
69 | console.log('error submit!!'); | 102 | console.log('error submit!!'); |
@@ -71,12 +104,67 @@ | @@ -71,12 +104,67 @@ | ||
71 | } | 104 | } |
72 | }); | 105 | }); |
73 | } | 106 | } |
107 | + }, | ||
108 | + mounted:function () { | ||
109 | + window.onresize = () => { | ||
110 | + const windowWidth = document.body.clientWidth | ||
111 | + const windowHeight = document.body.clientHeight | ||
112 | + const windowAspectRatio = windowHeight / windowWidth | ||
113 | + let videoWidth | ||
114 | + let videoHeight | ||
115 | + if (windowAspectRatio < 0.5625) { | ||
116 | + videoWidth = windowWidth | ||
117 | + videoHeight = videoWidth * 0.5625 | ||
118 | + this.fixStyle = { | ||
119 | + height: windowWidth * 0.5625 + 'px', | ||
120 | + width: windowWidth + 'px', | ||
121 | + 'margin-bottom': (windowHeight - videoHeight) / 2 + 'px', | ||
122 | + 'margin-left': 'initial' | ||
123 | + } | ||
124 | + } else { | ||
125 | + videoHeight = windowHeight | ||
126 | + videoWidth = videoHeight / 0.5625 | ||
127 | + this.fixStyle = { | ||
128 | + height: windowHeight + 'px', | ||
129 | + width: windowHeight / 0.5625 + 'px', | ||
130 | + 'margin-left': (windowWidth - videoWidth) / 2 + 'px', | ||
131 | + 'margin-bottom': 'initial' | ||
132 | + } | ||
133 | + } | ||
134 | + } | ||
135 | + window.onresize() | ||
74 | } | 136 | } |
75 | } | 137 | } |
76 | 138 | ||
77 | </script> | 139 | </script> |
78 | 140 | ||
79 | <style lang="scss" scoped> | 141 | <style lang="scss" scoped> |
142 | + #loginForm{ | ||
143 | + filter:alpha(Opacity=90); | ||
144 | + -moz-opacity:0.9; | ||
145 | + opacity: 0.9; | ||
146 | + } | ||
147 | + .homepage-hero-module, | ||
148 | + .video-container { | ||
149 | + height: 100vh; | ||
150 | + /*overflow: hidden;*/ | ||
151 | + position: absolute; | ||
152 | + top:0px; | ||
153 | + left: 0; | ||
154 | + z-index: -1; | ||
155 | + } | ||
156 | + | ||
157 | + .video-container .poster img, | ||
158 | + .video-container video { | ||
159 | + z-index: 0; | ||
160 | + position: absolute; | ||
161 | + } | ||
162 | + | ||
163 | + .video-container .filter { | ||
164 | + z-index: 1; | ||
165 | + position: absolute; | ||
166 | + background: rgba(0, 0, 0, 0.4); | ||
167 | + } | ||
80 | .login-container { | 168 | .login-container { |
81 | /*box-shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02);*/ | 169 | /*box-shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02);*/ |
82 | -webkit-border-radius: 5px; | 170 | -webkit-border-radius: 5px; |
@@ -4,7 +4,10 @@ | @@ -4,7 +4,10 @@ | ||
4 | <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> | 4 | <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> |
5 | <el-form :inline="true" :model="filters"> | 5 | <el-form :inline="true" :model="filters"> |
6 | <el-form-item> | 6 | <el-form-item> |
7 | - <el-input v-model="filters.name" placeholder="姓名"></el-input> | 7 | + <el-input v-model="filters.ext1" placeholder="姓名"></el-input> |
8 | + </el-form-item> | ||
9 | + <el-form-item> | ||
10 | + <el-input v-model="filters.username" placeholder="账号"></el-input> | ||
8 | </el-form-item> | 11 | </el-form-item> |
9 | <el-form-item> | 12 | <el-form-item> |
10 | <el-button type="primary" v-on:click="getUsers">查询</el-button> | 13 | <el-button type="primary" v-on:click="getUsers">查询</el-button> |
@@ -21,18 +24,24 @@ | @@ -21,18 +24,24 @@ | ||
21 | </el-table-column> | 24 | </el-table-column> |
22 | <el-table-column type="index" width="60"> | 25 | <el-table-column type="index" width="60"> |
23 | </el-table-column> | 26 | </el-table-column> |
24 | - <el-table-column prop="name" label="姓名" width="120" sortable> | 27 | + <el-table-column prop="userId" label="ID" width="100" sortable> |
28 | + </el-table-column> | ||
29 | + <el-table-column prop="username" label="账号" width="120" sortable> | ||
30 | + </el-table-column> | ||
31 | + <el-table-column prop="ext1" label="姓名" width="120" sortable> | ||
25 | </el-table-column> | 32 | </el-table-column> |
26 | <el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable> | 33 | <el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable> |
27 | </el-table-column> | 34 | </el-table-column> |
28 | - <el-table-column prop="age" label="年龄" width="100" sortable> | 35 | + <el-table-column prop="mobilephone" label="电话" width="125" sortable> |
29 | </el-table-column> | 36 | </el-table-column> |
30 | - <el-table-column prop="birth" label="生日" width="120" sortable> | 37 | + <el-table-column prop="creattime" label="创建时间" width="170" sortable> |
31 | </el-table-column> | 38 | </el-table-column> |
32 | - <el-table-column prop="addr" label="地址" min-width="180" sortable> | 39 | + <el-table-column prop="updatetime" label="更新时间" width="170" sortable> |
40 | + </el-table-column> | ||
41 | + <el-table-column prop="address" label="地址" min-width="180" sortable> | ||
33 | </el-table-column> | 42 | </el-table-column> |
34 | <el-table-column label="操作" width="150"> | 43 | <el-table-column label="操作" width="150"> |
35 | - <template scope="scope"> | 44 | + <template slot-scope="scope"> |
36 | <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> | 45 | <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> |
37 | <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button> | 46 | <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button> |
38 | </template> | 47 | </template> |
@@ -42,30 +51,36 @@ | @@ -42,30 +51,36 @@ | ||
42 | <!--工具条--> | 51 | <!--工具条--> |
43 | <el-col :span="24" class="toolbar"> | 52 | <el-col :span="24" class="toolbar"> |
44 | <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button> | 53 | <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button> |
45 | - <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="20" :total="total" style="float:right;"> | 54 | + <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;"> |
46 | </el-pagination> | 55 | </el-pagination> |
47 | </el-col> | 56 | </el-col> |
48 | 57 | ||
49 | <!--编辑界面--> | 58 | <!--编辑界面--> |
50 | <el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false"> | 59 | <el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false"> |
51 | <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm"> | 60 | <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm"> |
52 | - <el-form-item label="姓名" prop="name"> | ||
53 | - <el-input v-model="editForm.name" auto-complete="off"></el-input> | 61 | + <el-form-item label="ID"> |
62 | + <span>{{editForm.userId}}</span> | ||
63 | + </el-form-item> | ||
64 | + <el-form-item label="姓名" prop="username"> | ||
65 | + <el-input v-model="editForm.username" auto-complete="off"></el-input> | ||
66 | + </el-form-item> | ||
67 | + <el-form-item label="密码" prop="password"> | ||
68 | + <el-input v-model="editForm.password" auto-complete="off" type="password"></el-input> | ||
54 | </el-form-item> | 69 | </el-form-item> |
55 | <el-form-item label="性别"> | 70 | <el-form-item label="性别"> |
56 | <el-radio-group v-model="editForm.sex"> | 71 | <el-radio-group v-model="editForm.sex"> |
57 | - <el-radio class="radio" :label="1">男</el-radio> | ||
58 | - <el-radio class="radio" :label="0">女</el-radio> | 72 | + <el-radio class="radio" label="1" >男</el-radio> |
73 | + <el-radio class="radio" label="0" >女</el-radio> | ||
59 | </el-radio-group> | 74 | </el-radio-group> |
60 | </el-form-item> | 75 | </el-form-item> |
61 | <el-form-item label="年龄"> | 76 | <el-form-item label="年龄"> |
62 | <el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number> | 77 | <el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number> |
63 | </el-form-item> | 78 | </el-form-item> |
64 | <el-form-item label="生日"> | 79 | <el-form-item label="生日"> |
65 | - <el-date-picker type="date" placeholder="选择日期" v-model="editForm.birth"></el-date-picker> | 80 | + <el-date-picker type="date" placeholder="选择日期" v-model="editForm.creattime"></el-date-picker> |
66 | </el-form-item> | 81 | </el-form-item> |
67 | <el-form-item label="地址"> | 82 | <el-form-item label="地址"> |
68 | - <el-input type="textarea" v-model="editForm.addr"></el-input> | 83 | + <el-input type="textarea" v-model="editForm.address"></el-input> |
69 | </el-form-item> | 84 | </el-form-item> |
70 | </el-form> | 85 | </el-form> |
71 | <div slot="footer" class="dialog-footer"> | 86 | <div slot="footer" class="dialog-footer"> |
@@ -117,11 +132,11 @@ | @@ -117,11 +132,11 @@ | ||
117 | }, | 132 | }, |
118 | users: [], | 133 | users: [], |
119 | total: 0, | 134 | total: 0, |
120 | - page: 1, | 135 | + pageNum: 1, |
121 | listLoading: false, | 136 | listLoading: false, |
122 | sels: [],//列表选中列 | 137 | sels: [],//列表选中列 |
123 | - | ||
124 | - editFormVisible: false,//编辑界面是否显示 | 138 | + //编辑界面是否显示 |
139 | + editFormVisible: false, | ||
125 | editLoading: false, | 140 | editLoading: false, |
126 | editFormRules: { | 141 | editFormRules: { |
127 | name: [ | 142 | name: [ |
@@ -130,12 +145,13 @@ | @@ -130,12 +145,13 @@ | ||
130 | }, | 145 | }, |
131 | //编辑界面数据 | 146 | //编辑界面数据 |
132 | editForm: { | 147 | editForm: { |
133 | - id: 0, | ||
134 | - name: '', | ||
135 | - sex: -1, | 148 | + userId: 1, |
149 | + username: '', | ||
150 | + password: '', | ||
151 | + sex: 1, | ||
136 | age: 0, | 152 | age: 0, |
137 | - birth: '', | ||
138 | - addr: '' | 153 | + creattime: '', |
154 | + address: '' | ||
139 | }, | 155 | }, |
140 | 156 | ||
141 | addFormVisible: false,//新增界面是否显示 | 157 | addFormVisible: false,//新增界面是否显示 |
@@ -162,20 +178,20 @@ | @@ -162,20 +178,20 @@ | ||
162 | return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知'; | 178 | return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知'; |
163 | }, | 179 | }, |
164 | handleCurrentChange(val) { | 180 | handleCurrentChange(val) { |
165 | - this.page = val; | 181 | + this.pageNum = val; |
166 | this.getUsers(); | 182 | this.getUsers(); |
167 | }, | 183 | }, |
168 | //获取用户列表 | 184 | //获取用户列表 |
169 | getUsers() { | 185 | getUsers() { |
170 | let para = { | 186 | let para = { |
171 | - page: this.page, | 187 | + pageNum: this.pageNum, |
172 | name: this.filters.name | 188 | name: this.filters.name |
173 | }; | 189 | }; |
174 | this.listLoading = true; | 190 | this.listLoading = true; |
175 | //NProgress.start(); | 191 | //NProgress.start(); |
176 | getUserListPage(para).then((res) => { | 192 | getUserListPage(para).then((res) => { |
177 | this.total = res.data.total; | 193 | this.total = res.data.total; |
178 | - this.users = res.data.users; | 194 | + this.users = res.data.list; |
179 | this.listLoading = false; | 195 | this.listLoading = false; |
180 | //NProgress.done(); | 196 | //NProgress.done(); |
181 | }); | 197 | }); |
@@ -201,7 +217,11 @@ | @@ -201,7 +217,11 @@ | ||
201 | 217 | ||
202 | }); | 218 | }); |
203 | }, | 219 | }, |
204 | - //显示编辑界面 | 220 | + /** |
221 | + * 显示编辑界面 | ||
222 | + * @param index | ||
223 | + * @param row 为这行的数据对象 | ||
224 | + */ | ||
205 | handleEdit: function (index, row) { | 225 | handleEdit: function (index, row) { |
206 | this.editFormVisible = true; | 226 | this.editFormVisible = true; |
207 | this.editForm = Object.assign({}, row); | 227 | this.editForm = Object.assign({}, row); |
static/login/New-jumbo.jpg
0 → 100644

494.8 KB
static/login/New-jumbo.mp4
0 → 100644
不能预览此文件类型
static/login/New-jumbo.ogv
0 → 100644
不能预览此文件类型
static/login/New-jumbo.webm
0 → 100644
不能预览此文件类型
-
请 注册 或 登录 后发表评论