[toc]
### 1. 删除忘记密码和竖线
### 2. 注册账户文字切换 与 登录按钮文字切换
```
1. 在data内定义 type : "login",
2. <a href="#" class="ml-auto small" @click="changeType">
3. changeType(){
this.type = this.type == "login" ? "reg" : "login"
},
4. <a href="#" class="ml-auto small" @click="changeType">
{{type == "login" ? "注册账户" :"立即登录" }}
</a>
<Button type="primary" long @click="handleSubmit('formItem')">
{{type == "login" ? "登 录" :"注 册" }}
</Button>
```
### 3. 实现表单注册框确认密码
```
<Form ref="formItem" :label-width="0" :model="formItem" :rules="rules">
<FormItem prop="username">
<Input v-model="formItem.username" placeholder="请输入用户名..."></Input>
</FormItem>
<FormItem prop="password">
<Input type="password" v-model="formItem.password" placeholder="请输入密码..."></Input>
</FormItem>
<FormItem prop="repassword" v-if="type === 'reg'">
<Input type="password" v-model="formItem.repassword" placeholder="请输入确认密码..."></Input>
</FormItem>
<div class="d-flex align-items-center mb-2">
<Checkbox v-model="formItem.remember">自动登录</Checkbox>
<a href="#" class="ml-auto small" @click="changeType">
{{type == "login" ? "注册账户" :"立即登录" }}
</a>
</div>
<FormItem>
<Button type="primary" long @click="handleSubmit('formItem')">
{{type == "login" ? "登 录" :"注 册" }}
</Button>
</FormItem>
</Form>
repassword: [{
required: true,
message: '请输入确认密码...',
trigger: 'blur'
},
{
type: 'string',
min: 6,
message: '密码长度不能小于6位',
trigger: 'blur'
}
]
```
### 4. 实现登录与注册的数据交互
```
handleSubmit(name) {
this.$refs[name].validate((valid) => {
if (valid) {
this.$Message.success('Success!');
let text = this.type == "login" ? "登录" : "注册"
this.axios.post("/api/" + this.type,this.formItem).then(res=>{
if(this.type == "reg"){
this.$Message.success(text + "成功");
this.type = "login"
}else{
//存储登录的状态
//跳转到首页
this.$router.push({name : "index"})
}
}).catch(err=>{
})
} else {
this.$Message.error('Fail!');
}
})
}
```
### 5. 存储登录状态
```
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
export default new Vuex.Store({
state: {
user : null
},
mutations: {},
actions: {
//存储登录状态
login({state},user){
state.user = user;
window.localStorage.setItem("user",JSON.stringify(user));
window.localStorage.setItem("token",user.token);
}
},
modules: {}
});
```
```
handleSubmit(name) {
this.$refs[name].validate((valid) => {
if (valid) {
this.$Message.success('Success!');
let text = this.type == "login" ? "登录" : "注册"
this.axios.post("/api/" + this.type,this.formItem).then(res=>{
if(this.type == "reg"){
this.$Message.success(text + "成功");
this.type = "login"
}else{
//存储登录的状态
this.$store.dispatch("login",res)
//跳转到首页
this.$router.push({name : "index"})
}
}).catch(err=>{
})
} else {
this.$Message.error('Fail!');
}
})
}
```
- 第一章 VUE-CLI+IVIEW进行项目初始化
- 1.1 使用vue-cli4创建项目
- 1.2 引入iview组件库
- 1.3 引入bootstrap4和图标库
- 1.4 安装和配置vue-router
- 第二章 pc端登录页开发
- 2.1 pc端登录页开发(一)
- 2.2 pc端登录页开发(二)
- 2.3 pc端登录页开发(三)
- 第三章 pc端全局布局开发
- 3.1 pc端全局布局开发(一)
- 3.2 pc端全局布局开发(二) 顶部导航
- 第四章 pc端侧边栏开发
- 4.1 pc端侧边栏开发(一) 菜单
- 4.2 pc端侧边栏开发(二) 容量提示
- 第五章 pc端文件列表开发
- 5.1 pc端文件列表开发(一) 操作条
- 5.2 pc端文件列表开发(二) 列表(1)
- 5.3 pc端文件列表开发(三) 列表(2)
- 第六章 封装多功能文件列表组件
- 6.1 封装文件列表组件(一)
- 6.2 封装文件列表组件(二) 删除
- 6.3 封装文件列表组件(三) 多选操作
- 6.4 封装文件列表组件(四) 重命名
- 6.5 封装文件列表组件(五) 图片预览
- 第七章 前端数据交互开发
- 7.1 pc端交互-引入axios和vuex
- 7.2 pc端交互-注册登录
- 7.3 pc端交互-初始化和退出登录
- 7.4 pc端交互-拦截器完善
- 7.5 权限验证
- 7.6 pc端交互-获取文件列表
- 7.7 pc端交互-创建文件夹
- 7.8 上传文件
- 7.9 pc端交互-文件重命名
- 7.10 pc端交互-批量删除
- 7.11 pc端交互-搜索文件
- 7.12 pc端交互-切换目录
- 7.13 pc端交互-优化体验和筛选类型
- 7.14 pc端交互-下载文件
- 7.15 pc端交互-生成分享链接
- 7.16 pc端交互-我的分享列表
- 7.17 pc端交互-查看分享
- 7.18 pc端交互-保存我的网盘
- 第八章 项目打包与部署
- 8.1 部署前环境搭建
- 8.2 部署pc端部分