Browse Source

login

master
chutingting 1 year ago
parent
commit
be3480cd6c
11 changed files with 167 additions and 81 deletions
  1. +26
    -1
      package-lock.json
  2. +3
    -1
      package.json
  3. +13
    -3
      src/api/login.js
  4. +9
    -1
      src/api/request.js
  5. +33
    -1
      src/components/login/index.vue
  6. +44
    -1
      src/layouts/index.vue
  7. +2
    -0
      src/main.js
  8. +1
    -5
      src/store/getters.js
  9. +1
    -0
      src/store/index.js
  10. +13
    -47
      src/store/modules/user.js
  11. +22
    -21
      src/views/aigc/index.vue

+ 26
- 1
package-lock.json View File

@@ -12,10 +12,12 @@
"core-js": "^3.6.5", "core-js": "^3.6.5",
"element-ui": "^2.15.14", "element-ui": "^2.15.14",
"identify": "^0.1.5", "identify": "^0.1.5",
"js-cookie": "^3.0.5",
"moment": "^2.30.1", "moment": "^2.30.1",
"swiper": "^3.4.0", "swiper": "^3.4.0",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-router": "^3.5.2"
"vue-router": "^3.5.2",
"vuex": "^3.1.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "~4.5.9", "@vue/cli-plugin-babel": "~4.5.9",
@@ -9451,6 +9453,14 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/js-cookie": {
"version": "3.0.5",
"resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz",
"integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
"engines": {
"node": ">=14"
}
},
"node_modules/js-message": { "node_modules/js-message": {
"version": "1.0.7", "version": "1.0.7",
"dev": true, "dev": true,
@@ -15344,6 +15354,11 @@
"prettier": "^1.18.2 || ^2.0.0" "prettier": "^1.18.2 || ^2.0.0"
} }
}, },
"node_modules/vuex": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/vuex/-/vuex-3.1.0.tgz",
"integrity": "sha512-mdHeHT/7u4BncpUZMlxNaIdcN/HIt1GsGG5LKByArvYG/v6DvHcOxvDCts+7SRdCoIRGllK8IMZvQtQXLppDYg=="
},
"node_modules/watchpack": { "node_modules/watchpack": {
"version": "1.7.5", "version": "1.7.5",
"dev": true, "dev": true,
@@ -22628,6 +22643,11 @@
"version": "2.1.0", "version": "2.1.0",
"dev": true "dev": true
}, },
"js-cookie": {
"version": "3.0.5",
"resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz",
"integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw=="
},
"js-message": { "js-message": {
"version": "1.0.7", "version": "1.0.7",
"dev": true "dev": true
@@ -26658,6 +26678,11 @@
"version": "1.9.1", "version": "1.9.1",
"dev": true "dev": true
}, },
"vuex": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/vuex/-/vuex-3.1.0.tgz",
"integrity": "sha512-mdHeHT/7u4BncpUZMlxNaIdcN/HIt1GsGG5LKByArvYG/v6DvHcOxvDCts+7SRdCoIRGllK8IMZvQtQXLppDYg=="
},
"watchpack": { "watchpack": {
"version": "1.7.5", "version": "1.7.5",
"dev": true, "dev": true,


+ 3
- 1
package.json View File

@@ -13,10 +13,12 @@
"core-js": "^3.6.5", "core-js": "^3.6.5",
"element-ui": "^2.15.14", "element-ui": "^2.15.14",
"identify": "^0.1.5", "identify": "^0.1.5",
"js-cookie": "^3.0.5",
"moment": "^2.30.1", "moment": "^2.30.1",
"swiper": "^3.4.0", "swiper": "^3.4.0",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-router": "^3.5.2"
"vue-router": "^3.5.2",
"vuex": "^3.1.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "~4.5.9", "@vue/cli-plugin-babel": "~4.5.9",


+ 13
- 3
src/api/login.js View File

@@ -53,7 +53,17 @@ export function doRegisterByPhoneAPi(data) {
*/ */
export const getUserInfoApi = () => { export const getUserInfoApi = () => {
return request({ return request({
method: 'get',
url: baseUrl + `/C/api/user/getUserInfo`
method: 'get',
url: baseUrl + `/C/api/user/getUserInfo`
}) })
}
}
/**
* 退出
* @returns request
*/
export const logoutApi = () => {
return request({
method: 'get',
url: baseUrl + `/C/api/user/logout`
})
}

+ 9
- 1
src/api/request.js View File

@@ -1,5 +1,6 @@
import axios from 'axios' import axios from 'axios'
import Cookies from 'js-cookie'
/* eslint-disable */
// create an axios instance // create an axios instance
const service = axios.create({ const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // /api baseURL: process.env.VUE_APP_BASE_API, // /api
@@ -14,6 +15,13 @@ service.interceptors.request.use(
// if (AccessToken) { // if (AccessToken) {
// config.headers.token = AccessToken // config.headers.token = AccessToken
// } // }
if (Cookies.get('token')) {
// let each request carry token
// ['X-Token'] is a custom headers key
// please modify it according to the actual situation
// config.headers['Authorization'] = getToken()
config.token['Authorization'] = Cookies.get('token')
}
return config return config
}, },
error => { error => {


+ 33
- 1
src/components/login/index.vue View File

@@ -33,6 +33,7 @@
<script> <script>
/* eslint-disable */ /* eslint-disable */
import { loginApi, sendLoginPhoneCodeApi, doLoginByPhoneApi, doRegisterByPhoneAPi, getUserInfoApi } from '@/api/login.js' import { loginApi, sendLoginPhoneCodeApi, doLoginByPhoneApi, doRegisterByPhoneAPi, getUserInfoApi } from '@/api/login.js'
import Cookies from "js-cookie";
export default { export default {
props: {}, props: {},
data() { data() {
@@ -81,7 +82,6 @@ export default {
type: 'success' type: 'success'
}); });
}else { }else {
debugger
this.$message({ this.$message({
message: res.data.message, message: res.data.message,
type: 'warning' type: 'warning'
@@ -89,6 +89,13 @@ export default {
} }
}) })
}, },
getUserInfo() {
getUserInfoApi().then(res => {
if (res.data.code === 200) {
this.$store.dispatch('user/setUserInfo', res.data.data)
}
})
},
async login(formName) { async login(formName) {
this.$refs[formName].validate(async(valid) => { this.$refs[formName].validate(async(valid) => {
if (valid) { if (valid) {
@@ -111,9 +118,34 @@ export default {
}); });
} }
}) })
} else if (this.loginFlag === 2) {
let d = {
password: this.form.password,
code: this.form.code
}
doLoginByPhoneApi(d).then(res => {
if (res.data.code === 200) {
Cookies.set("token", res.data.data.token);
this.$store.dispatch('user/setIsLogin', true)
this.getUserInfo()
this.$message({
message: '登录成功',
type: 'success'
});
this.dialogVisible = false
} else {
this.$message({
message: res.data.message,
type: 'warning'
});
}
})
} else { } else {
loginApi(this.form).then(res => { loginApi(this.form).then(res => {
if (res.data.code === 200) { if (res.data.code === 200) {
Cookies.set("token", res.data.data.token);
this.$store.dispatch('user/setIsLogin', true)
this.getUserInfo()
this.$message({ this.$message({
message: '登录成功', message: '登录成功',
type: 'success' type: 'success'


+ 44
- 1
src/layouts/index.vue View File

@@ -4,7 +4,15 @@
<div class="header"> <div class="header">
<img src="@/assets/logo.png" id="logo" /> <img src="@/assets/logo.png" id="logo" />
<yqheaders/> <yqheaders/>
<el-button plain class="login" size="small" @click="loginFn">注册 / 登录</el-button>
<el-button v-if="isLogin" plain class="login" size="small" @click="loginFn">注册 / 登录</el-button>
<el-dropdown v-else class="user">
<span class="el-dropdown-link">
{{ userInfo.phone }}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item><a @click="logout">退出</a></el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div> </div>
</el-header> </el-header>
<el-main> <el-main>
@@ -18,6 +26,9 @@
import yqheaders from '@/components/header.vue' import yqheaders from '@/components/header.vue'
import yqfooters from '@/components/footer.vue' import yqfooters from '@/components/footer.vue'
import login from '@/components/login' import login from '@/components/login'
import { mapState } from 'vuex'
import { logoutApi } from '@/api/login.js'
/* eslint-disable */
export default { export default {
name: 'layouts', name: 'layouts',
data () { data () {
@@ -30,9 +41,34 @@ export default {
yqfooters, yqfooters,
login login
}, },
computed: {
...mapState({
isLogin: state => state.user.isLogin,
userInfo: state => state.user.userInfo
})
},
methods: { methods: {
loginFn () { loginFn () {
this.loginFlag = true this.loginFlag = true
},
logout() {
debugger
logoutApi().then(res => {
if (res.data.coode === 200) {
this.$store.dispatch('user/setIsLogin', false)
this.$store.dispatch('user/setUserInfo', {})
Cookies.remove('token');
this.$message({
message: '退出成功',
type: 'success'
});
}else {
this.$message({
message: res.data.message,
type: 'warning'
});
}
})
} }
} }
} }
@@ -40,6 +76,13 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.header{ .header{
width: 1200px !important; width: 1200px !important;
position: relative;
}
.user {
position: absolute;
right: 0;
top: 30px;
color: #fff;
} }
.el-container { .el-container {
margin: 0; margin: 0;


+ 2
- 0
src/main.js View File

@@ -5,11 +5,13 @@ import 'element-ui/lib/theme-chalk/index.css'
import '@/styles/element-variables.scss' import '@/styles/element-variables.scss'
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
import store from './store'
import moment from 'moment' import moment from 'moment'
Vue.prototype.$moment = moment Vue.prototype.$moment = moment
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.use(Element) Vue.use(Element)
new Vue({ new Vue({
router, router,
store,
render: h => h(App) render: h => h(App)
}).$mount('#app') }).$mount('#app')

+ 1
- 5
src/store/getters.js View File

@@ -1,8 +1,4 @@
/*
* @Date: 2021-07-16 17:52:04
* @LastEditTime: 2022-07-27 10:48:11
* @Description:
*/
/* eslint-disable */
const getters = { const getters = {
sidebar: state => state.app.sidebar, sidebar: state => state.app.sidebar,
device: state => state.app.device, device: state => state.app.device,


+ 1
- 0
src/store/index.js View File

@@ -1,3 +1,4 @@
/* eslint-disable */
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import getters from './getters' import getters from './getters'


+ 13
- 47
src/store/modules/user.js View File

@@ -1,70 +1,36 @@
import { login, logout, getInfo } from '@/api/user'
import { getToken, removeToken } from '@/utils/auth'
import { resetRouter } from '@/router'

/* eslint-disable */
const getDefaultState = () => { const getDefaultState = () => {
return { return {
loginFlag: false,
phone: ''
isLogin: false,
userInfo: {},
token: ''
} }
} }


const state = getDefaultState() const state = getDefaultState()


const mutations = { const mutations = {
RESET_STATE: (state) => {
Object.assign(state, getDefaultState())
SET_USERINFO: (state, userInfo) => {
state.userInfo = userInfo
},
SET_ISLOGIN: (state, isLogin) => {
state.isLogin = isLogin
}, },
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
},
SET_NAME: (state, name) => {
state.name = name
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_ISCHILD: (state, isChild) => {
state.isChild = isChild
},
SET_Login: (state, roles) => {
state.roles = roles
} }
} }


const actions = { const actions = {
setChild({ commit }, isChild) {
commit('SET_ISCHILD', isChild)
setUserInfo({ commit }, userInfo) {
commit('SET_USERINFO', userInfo)
}, },
setRoles({ commit }, roles) {
commit('SET_ROLES', roles)
setIsLogin({ commit }, isLogin) {
commit('SET_ISLOGIN', isLogin)
}, },
setToken({ commit }, token) { setToken({ commit }, token) {
commit('SET_TOKEN', token) commit('SET_TOKEN', token)
}, },
// user login
/* login({ commit }, userInfo) {
const { username, password } = userInfo
return new Promise((resolve, reject) => {
login({ username: username.trim(), password: password }).then(response => {
const { data } = response
commit('SET_TOKEN', data.token)
setToken(data.token)
resolve()
}).catch(error => {
reject(error)
})
})
}, */

// remove token
resetToken({ commit }) {
return new Promise(resolve => {
removeToken() // must remove token first
commit('RESET_STATE')
resolve()
})
}
} }


export default { export default {


+ 22
- 21
src/views/aigc/index.vue View File

@@ -2,27 +2,11 @@
<div class="aigc"> <div class="aigc">
<div id="top"> <div id="top">
<Swiper :banner-array="carouselList" /> <Swiper :banner-array="carouselList" />
<!-- <el-form ref="form" :model="form" label-width="0px">
<el-form ref="form" :model="form" label-width="0px">
<el-form-item> <el-form-item>
<el-input v-model="form.phone" placeholder="手机号"></el-input>
<el-button type="primary" class="createai" @click="loginFn">{{ isLogin ? '制作数字人' : '登录'}}</el-button>
</el-form-item> </el-form-item>
<el-form-item>
<el-input v-model="form.password" placeholder="登录密码"></el-input>
</el-form-item>
<el-form-item>
<el-input class="identify" v-model="form.code" placeholder="验证码"></el-input>
<img :src="verifyCodeUrl" class="code" alt="">
</el-form-item>
<el-form-item class="nomargin">
<el-button type="primary" @click="login">登录</el-button>
</el-form-item>
<el-form-item class="nomargin">
<a>使用短信登录</a>
</el-form-item>
<el-form-item>
<el-button type="primary" class="createai">制作数字人</el-button>
</el-form-item>
</el-form> -->
</el-form>
</div> </div>
<div id="hot"> <div id="hot">
<div class="content"> <div class="content">
@@ -71,11 +55,15 @@
</div> </div>
</div> </div>
</div> </div>
<login v-if="loginFlag" />
</div> </div>
</template> </template>
<script> <script>
/* eslint-disable */
import Swiper from '@/components/swiper' import Swiper from '@/components/swiper'
import SwiperHor from '@/components/swiperHor' import SwiperHor from '@/components/swiperHor'
import { mapState } from 'vuex'
import login from '@/components/login'
import { guanggao, shuzirenremark, shuzirenList, shuzirenZhiBoList, videoList, lunboList } from '@/api/aigc.js' import { guanggao, shuzirenremark, shuzirenList, shuzirenZhiBoList, videoList, lunboList } from '@/api/aigc.js'
export default { export default {
name: 'aigc', name: 'aigc',
@@ -100,12 +88,18 @@ export default {
aigcsp: [], aigcsp: [],
gg1: {}, gg1: {},
gg2: {}, gg2: {},
verifyCodeUrl: 'https://www.meta-autotv.com/C/api/user/captcha.jpg'
loginFlag: false
} }
}, },
components: { components: {
Swiper, Swiper,
SwiperHor
SwiperHor,
login
},
computed: {
...mapState({
isLogin: state => state.user.isLogin
})
}, },
mounted () { mounted () {
this.getguanggao() this.getguanggao()
@@ -116,6 +110,13 @@ export default {
this.getlunboList() this.getlunboList()
}, },
methods: { methods: {
loginFn() {
if (this.isLogin) {
window.open()
} else {
this.loginFlag = true
}
},
async getlunboList () { async getlunboList () {
const { data: { code, data } } = await lunboList() const { data: { code, data } } = await lunboList()
if (code === 200) { if (code === 200) {


Loading…
Cancel
Save