Просмотр исходного кода

Merge branch 'feature/20220929首页静态开发'

# Conflicts:
#	digital-park-web/digital-park/src/api/common.js
#	digital-park-web/digital-park/vue.config.js
feature/20220929首页静态开发
王饶冀 3 лет назад
Родитель
Сommit
58ccdefbc3

+ 11
- 0
digital-park-web/digital-park/package-lock.json Просмотреть файл

"dependencies": { "dependencies": {
"axios": "^0.19.2", "axios": "^0.19.2",
"core-js": "^3.6.4", "core-js": "^3.6.4",
"crypto-js": "^4.1.1",
"dayjs": "^1.10.4", "dayjs": "^1.10.4",
"element-ui": "^2.13.0", "element-ui": "^2.13.0",
"npm-check": "^6.0.1", "npm-check": "^6.0.1",
"node": "*" "node": "*"
} }
}, },
"node_modules/crypto-js": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
"integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
},
"node_modules/crypto-random-string": { "node_modules/crypto-random-string": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "resolved": "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
"randomfill": "^1.0.3" "randomfill": "^1.0.3"
} }
}, },
"crypto-js": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
"integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
},
"crypto-random-string": { "crypto-random-string": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "resolved": "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz",

+ 1
- 0
digital-park-web/digital-park/package.json Просмотреть файл

"dependencies": { "dependencies": {
"axios": "^0.19.2", "axios": "^0.19.2",
"core-js": "^3.6.4", "core-js": "^3.6.4",
"crypto-js": "^4.1.1",
"dayjs": "^1.10.4", "dayjs": "^1.10.4",
"element-ui": "^2.13.0", "element-ui": "^2.13.0",
"npm-check": "^6.0.1", "npm-check": "^6.0.1",

+ 3
- 1
digital-park-web/digital-park/src/App.vue Просмотреть файл

data() { data() {
return {}; return {};
}, },
created() {},
created() {
this.$store.dispatch('getUserInfo');
},
methods: {}, methods: {},
}; };
</script> </script>

+ 2
- 1
digital-park-web/digital-park/src/api/common.js Просмотреть файл

/** /**
<<<<<<< HEAD
* api接口统一管理 * api接口统一管理
* *
* 公共接口 * 公共接口
export const getClassificationType = p => get("/common/getClassificationType", p); export const getClassificationType = p => get("/common/getClassificationType", p);


// 获取所有列表 // 获取所有列表
export const getAllPickListByEntity = p => get("/common/getAllPickListByEntity", p);
export const getAllPickListByEntity = p => get("/common/getAllPickListByEntity", p);

+ 29
- 0
digital-park-web/digital-park/src/api/login/index.js Просмотреть файл

/**
* api-登录接口
*/
import { get, post } from "@/utils/http";



// 用户名、密码登录
export const accountLogin = (username, password) => post(`/account/login/${username}/${password}`);

// 手机验证码登录
export const mobilePhoneLogin = (mobilePhone, imgCode, smsVerificationCode) => post(`/account/login/code/${mobilePhone}/${imgCode}/${smsVerificationCode}`);

// 获取短信验证码
export const getMobilePhoneCode = (mobilePhone, imgCode) => post(`/verificationCode/sms/${mobilePhone}/${imgCode}`);

// 注册账号
export const accountRegister = p => post("/account/register", p);

// 忘记密码 --- 修改密码
export const forgetPassword = p => post("/account/forgetPassword", p);

// 退出登录
export const logout = p => post('/account/logout', p);






+ 26
- 10
digital-park-web/digital-park/src/components/Header.vue Просмотреть файл

</section> </section>
<section class="wrap_right"> <section class="wrap_right">
<div> <div>
<router-link v-for="item in nav" :key="item.name" :to="item.path">
{{ item.name }}
</router-link>
<router-link
v-for="item in nav"
:key="item.name"
:to="item.path"
>{{ item.name }}</router-link>
</div> </div>
<section class="enterprise pointer">
<section class="enterprise pointer" @click="goMyCompany">
<img src="@assets/image/index/icon_company.png" alt="icon_company" /> <img src="@assets/image/index/icon_company.png" alt="icon_company" />
我的企业 我的企业
</section> </section>
<script> <script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等) //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》'; //例如:import 《组件名称》 from '《组件路径》';
import { commonJs } from "@/utils/common.js";
import { routerOpenInNewWindow } from "@/utils/common.js";
import { mapGetters } from "vuex";
export default { export default {
//import引入的组件需要注入到对象中才能使用 //import引入的组件需要注入到对象中才能使用
components: {}, components: {},
computed: {
...mapGetters({
currentAccount: "currentAccount",
}),
},
data() { data() {
//这里存放数据 //这里存放数据
return { return {
], ],
}; };
}, },
//监听属性 类似于data概念
computed: {},
//监控data中的数据变化 //监控data中的数据变化
watch: {}, watch: {},
//方法集合 //方法集合
methods: { methods: {
clickRouter(path) { clickRouter(path) {
commonJs.routerOpenInNewWindow({
routerOpenInNewWindow({
path, path,
}); });
}, },
// 前往我的企业
goMyCompany() {
let path = '/my-business';
console.log(this.currentAccount,'this.currentAccount')
if(!this.currentAccount){
path = '/login'
}
localStorage.setItem('loginFrom','/my-business');
this.$router.push(path);
},
}, },
//生命周期 - 创建完成(可以访问当前this实例) //生命周期 - 创建完成(可以访问当前this实例)
created() {}, created() {},
//生命周期 - 挂载完成(可以访问DOM元素) //生命周期 - 挂载完成(可以访问DOM元素)
mounted() {},
mounted() {
},
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

+ 10
- 1
digital-park-web/digital-park/src/store/actions.js Просмотреть файл

export default {};
import { RECEIVE_PRESENT_USER } from "./mutation-types";
import { getSession } from "@api/common";

export default {
// 异步获取用户信息
async getUserInfo({ commit }) {
const result = await getSession();
commit(RECEIVE_PRESENT_USER, result.data.data)
}
};

+ 3
- 1
digital-park-web/digital-park/src/store/getters.js Просмотреть файл

const getters = {};
const getters = {
currentAccount: state => state.sessionInfo.currentAccount,
};
export default getters; export default getters;

+ 0
- 4
digital-park-web/digital-park/src/store/modules/state.js Просмотреть файл

// 状态对象
export default {

}

+ 2
- 0
digital-park-web/digital-park/src/store/mutation-types.js Просмотреть файл

// 接收用户信息
export const RECEIVE_PRESENT_USER = 'receive_present_user'

+ 6
- 1
digital-park-web/digital-park/src/store/mutations.js Просмотреть файл

export default {};
import { RECEIVE_PRESENT_USER } from "./mutation-types";
export default {
[RECEIVE_PRESENT_USER](state, payload) {
state.sessionInfo = payload;
}
};

+ 4
- 1
digital-park-web/digital-park/src/store/state.js Просмотреть файл

// 状态对象 // 状态对象
export default {};
export default {
sessionInfo: {},
test: 123,
};

+ 25
- 7
digital-park-web/digital-park/src/utils/common.js Просмотреть файл

import router from "../router/index"; import router from "../router/index";
import { Message } from "element-ui";
// export const commonJs = {
// // 在新的页面打开路由
// routerOpenInNewWindow: routerPath => {
// let routeData = router.resolve(routerPath);
// window.open(routeData.href, "_blank");
// },
// };


export const commonJs = {
// 在新的页面打开路由
routerOpenInNewWindow: routerPath => {
let routeData = router.resolve(routerPath);
window.open(routeData.href, "_blank");
},
};
// 在新的页面打开路由
export const routerOpenInNewWindow = routerPath => {
let routeData = router.resolve(routerPath);
window.open(routeData.href, "_blank");
}


/**
*
* @param {*} status 1成功 0错误 可迭代
* @param {*} msg 提示信息
*/
export const sendMsg = (status, msg) => {
if (status == 1) {
Message.success(msg)
} else {
Message.error(msg)
}
}

+ 42
- 0
digital-park-web/digital-park/src/utils/cookie-util.js Просмотреть файл

//设置cookie
export function setCookie(key, value,day=36500) {
let exdate = new Date(); //获取时间
exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * day); //保存的天数,我这里写的是100年
//字符串拼接cookie
//escape方法的作用是进行编码,主要防止value中有特殊字符
window.document.cookie =
key + '=' + escape(value) + ';path=/;expires=' + exdate.toGMTString();
}

//读取cookie
export function getCookie(cookieName) {
var cookieStr = document.cookie;
var cookievalue = "";
var cookiMap ="";
if (cookieStr != null && cookieStr != undefined) {
var arrayCookie = cookieStr.split(';');
for (var i = 0; i < arrayCookie.length; i++) {
var arrayDetail = arrayCookie[i].split('=');
if (i == 0) {
cookiMap = '{"' + arrayDetail[0] + '":"' + arrayDetail[1] + '",';
} else if (i == arrayCookie.length - 1) {
cookiMap += '"' + arrayDetail[0] + '":"' + arrayDetail[1] + '"}';
} else {
cookiMap += '"' + arrayDetail[0] + '":"' + arrayDetail[1] + '",';
}
}
}
var s = cookiMap.replace(/\s/g, "");//去掉字符串中空格
var cookieObj = JSON.parse(s);
for (var item in cookieObj) {
if (item == cookieName) {
cookievalue = unescape(cookieObj[item]);
}
}
return cookievalue;
}

/*删除cookie*/
export function delCookie(c_name) {
setCookie(c_name, '', -1);
}

+ 21
- 0
digital-park-web/digital-park/src/utils/encrypt.js Просмотреть файл

/**
* 加密
*/
import CryptoJS from 'crypto-js'
export default {
//加密
encrypt(word, keyStr) {
keyStr = keyStr ? keyStr : 'abcdefgabcdefg12';
let key = CryptoJS.enc.Utf8.parse(keyStr);//Latin1 w8m31+Yy/Nw6thPsMpO5fg==
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return encrypted.toString();
},
//解密
decrypt(word, keyStr) {
keyStr = keyStr ? keyStr : 'abcdefgabcdefg12';
let key = CryptoJS.enc.Utf8.parse(keyStr);//Latin1 w8m31+Yy/Nw6thPsMpO5fg==
let decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
}

+ 61
- 17
digital-park-web/digital-park/src/views/login/LoginFrom/LoginFrom.scss Просмотреть файл

right: 360px; right: 360px;
top: 30%; top: 30%;
transform: translate(0, -20%); transform: translate(0, -20%);

.el-input__icon { .el-input__icon {
color: $boderColor; color: $boderColor;
} }
color: $fontColor; color: $fontColor;
} }
} }
.is-error {
.el-input__inner {
border-color: red;
}
}
.is-error-info {
@include font(12px, red);
float: left;
margin-top: -20px;
// position: relative;
// left: 10px;
}
} }
} }
.login-title { .login-title {
.verification-code-row { .verification-code-row {
height: 40px; height: 40px;
.img-code-input { .img-code-input {
width: 276px;
width: 270px;
margin-right: 6px; margin-right: 6px;
.img-code-icon { .img-code-icon {
width: 14px; width: 14px;
} }
} }
.img-code-box { .img-code-box {
width: 78px;
background-image: linear-gradient(135deg, #42a6fe 0%, #0070d2 100%);
width: 84px;
height: 40px; height: 40px;
border-radius: 6px;
color: #fff;
text-align: center;
line-height: 40px;
cursor: pointer;
&.get-code {
font-size: 12px;
img {
cursor: pointer;
width: 100%;
height: 100%;
}
.el-button {
color: #fff; color: #fff;
font-size: 14px;
width: 84px;
height: 40px;
cursor: pointer;
background-image: linear-gradient(
135deg,
#42a6fe 0%,
#0070d2 100%
);
border-radius: 6px;
text-align: center;
padding: 0;
&.is-disabled {
color: #c0c4cc;
cursor: not-allowed;
background-image: none;
}
} }
} }
} }
width: 360px; width: 360px;
height: 50px; height: 50px;
line-height: 50px; line-height: 50px;
background-image: linear-gradient(135deg, #42a6fe 0%, #0070d2 100%);
border-radius: 6px;
text-align: center;
font-size: 18px;
color: #ffffff;
font-weight: bold;
// background-image: linear-gradient(135deg, #42a6fe 0%, #0070d2 100%);
// border-radius: 6px;
// text-align: center;
// font-size: 18px;
// color: #ffffff;
// font-weight: bold;
margin-bottom: 30px; margin-bottom: 30px;
.el-button {
height: 100%;
width: 100%;
background-image: linear-gradient(135deg, #42a6fe 0%, #0070d2 100%);
font-size: 18px;
font-weight: bold;
}
} }
.other-login { .other-login {
color: $fontColor; color: $fontColor;
.mb-20 { .mb-20 {
margin-bottom: 20px; margin-bottom: 20px;
} }
}
.mt-20 {
margin-top: 20px;
}
.el-loading-mask {
background: transparent;
// .el-loading-text {
// color: #fff;
// }
}
}

+ 448
- 38
digital-park-web/digital-park/src/views/login/LoginFrom/LoginFrom.vue Просмотреть файл

>登录之后您可以享受企业服务、税收分析、订阅信息、定制化服务</div> >登录之后您可以享受企业服务、税收分析、订阅信息、定制化服务</div>
<!-- 默认登录 --> <!-- 默认登录 -->
<div v-if="loginMethod == 1"> <div v-if="loginMethod == 1">
<el-input placeholder="请输入用户名..." v-model="userName" class="mb-20">
<el-input
placeholder="请输入用户名..."
v-model="accountName"
class="mb-20"
:class="{'is-error':accountNameError}"
@focus="clearError('accountNameError')"
>
<i slot="prefix" class="el-input__icon el-icon-user"></i> <i slot="prefix" class="el-input__icon el-icon-user"></i>
<div class="is-error-info" v-if="accountNameError">请输入用户名</div>
</el-input> </el-input>
<div class="is-error-info" v-if="accountNameError">请输入用户名...</div>
<el-input <el-input
placeholder="请输入登录密码..." placeholder="请输入登录密码..."
v-model="password" v-model="password"
show-password show-password
class="mb-20" class="mb-20"
:class="{'is-error':passwordError}"
@focus="clearError('passwordError')"
> >
<i slot="prefix" class="el-input__icon el-icon-lock"></i> <i slot="prefix" class="el-input__icon el-icon-lock"></i>
</el-input> </el-input>
<div class="is-error-info" v-if="passwordError">请输入登录密码...</div>
</div> </div>
<!-- 手机登录 --> <!-- 手机登录 -->
<div v-if="loginMethod == 2"> <div v-if="loginMethod == 2">
alt alt
/> />
</el-input> </el-input>
<div class="img-code-box fl">123456</div>
<div class="img-code-box fl" @click="getVerificationCode">
<img class="imgCode" :src="imgCodeUrl" alt="验证码" />
</div>
</div>
<div class="verification-code-row mb-20">
<el-input
placeholder="请输入手机验证码..."
v-model="phoneCode"
class="fl img-code-input"
:class="{'is-error':phoneCodeError}"
@focus="clearError('phoneCodeError')"
>
<img
slot="prefix"
src="~@/assets/image/login/numCodeIcon.png"
class="img-code-icon-num"
alt
/>
</el-input>
<div class="img-code-box get-code fl">
<el-button :disabled="true" v-if="phoneCodeDisable">{{ word }}</el-button>
<el-button v-else @click="getPhoneCode">{{ word }}</el-button>
</div>
<div
class="is-error-info"
style="margin-top:0"
v-if="phoneCodeError"
>请输入手机验证码</div>
</div> </div>
<el-input
placeholder="请输入手机验证码..."
v-model="phoneCode"
class="mb-20 img-phone-number"
>
<img
slot="prefix"
src="~@/assets/image/login/numCodeIcon.png"
class="img-code-icon"
alt
/>
</el-input>
</div> </div>
<!-- 注册 || 忘记密码 --> <!-- 注册 || 忘记密码 -->
<div v-if="loginMethod == 3 || loginMethod == 4"> <div v-if="loginMethod == 3 || loginMethod == 4">
<el-input placeholder="请输入手机号码..." v-model="mobilePhone" class="mb-20">
<i slot="prefix" class="el-input__icon el-icon-mobile-phone"></i>
</el-input>
<el-input placeholder="请输入用户名..." v-model="userName" class="mb-20">
<i slot="prefix" class="el-input__icon el-icon-user"></i>
</el-input>
<el-input <el-input
placeholder="请输入新密码..."
v-model="newPassword"
show-password
placeholder="请输入手机号码..."
v-model="mobilePhone"
class="mb-20" class="mb-20"
:class="{'is-error':mobilePhoneError}"
@focus="clearError('mobilePhoneError')"
> >
<i slot="prefix" class="el-input__icon el-icon-lock"></i>
<i slot="prefix" class="el-input__icon el-icon-mobile-phone"></i>
</el-input> </el-input>
<div
class="is-error-info"
v-if="mobilePhoneError"
>{{ mobilePhone ? '请输入正确的手机号码':'请输入手机号码' }}</div>
<el-input <el-input
placeholder="请再次输入新密码..."
v-model="confirmPassword"
show-password
placeholder="请输入用户名..."
v-model="accountName"
class="mb-20" class="mb-20"
:class="{'is-error':accountNameError}"
@focus="clearError('accountNameError')"
v-if="loginMethod == 3"
> >
<i slot="prefix" class="el-input__icon el-icon-lock"></i>
<i slot="prefix" class="el-input__icon el-icon-user"></i>
</el-input> </el-input>
<div class="is-error-info" v-if="accountNameError && loginMethod == 3">请输入用户名</div>
<form>
<el-input
placeholder="请输入新密码..."
v-model="newPassword"
show-password
class="mb-20"
:class="{'is-error':newPasswordError}"
@focus="clearError('newPasswordError')"
>
<i slot="prefix" class="el-input__icon el-icon-lock"></i>
</el-input>
</form>

<div class="is-error-info" v-if="newPasswordError">请输入新密码</div>
<form>
<el-input
placeholder="请再次输入新密码..."
v-model="confirmPassword"
show-password
class="mb-20"
:class="{'is-error':confirmPasswordError}"
@focus="clearError('confirmPasswordError')"
>
<i slot="prefix" class="el-input__icon el-icon-lock"></i>
</el-input>
</form>

<div class="is-error-info" v-if="confirmPasswordError">请输入新密码</div>
<div class="verification-code-row mb-20"> <div class="verification-code-row mb-20">
<el-input <el-input
placeholder="请输入图片验证码..." placeholder="请输入图片验证码..."
v-model="imgCode" v-model="imgCode"
class="fl img-code-input" class="fl img-code-input"
:class="{'is-error':imgCodeError}"
@focus="clearError('imgCodeError')"
> >
<img <img
slot="prefix" slot="prefix"
alt alt
/> />
</el-input> </el-input>
<div class="img-code-box fl">123456</div>
<div class="img-code-box fl" @click="getVerificationCode">
<img class="imgCode" :src="imgCodeUrl" alt="验证码" />
</div>
<div class="is-error-info" style="margin-top:0" v-if="imgCodeError">请输入图片验证码</div>
</div> </div>
<div class="verification-code-row mb-20"> <div class="verification-code-row mb-20">
<el-input <el-input
placeholder="请输入手机验证码..." placeholder="请输入手机验证码..."
v-model="phoneCode" v-model="phoneCode"
class="fl img-code-input" class="fl img-code-input"
:class="{'is-error':phoneCodeError}"
@focus="clearError('phoneCodeError')"
> >
<img <img
slot="prefix" slot="prefix"
alt alt
/> />
</el-input> </el-input>
<div class="img-code-box get-code fl">获取验证码</div>
<div class="img-code-box get-code fl">
<el-button :disabled="true" v-if="phoneCodeDisable">{{ word }}</el-button>
<el-button v-else @click="getPhoneCode">{{ word }}</el-button>
</div>
<div
class="is-error-info"
style="margin-top:0"
v-if="phoneCodeError"
>请输入手机验证码</div>
</div> </div>
</div> </div>
<div class="remember-row mb-20" v-if="loginMethod == 1 || loginMethod == 2"> <div class="remember-row mb-20" v-if="loginMethod == 1 || loginMethod == 2">
<div class="remember-password fl">
<div class="remember-password fl" v-if="loginMethod == 1">
<el-checkbox v-model="isRemember">记住密码</el-checkbox> <el-checkbox v-model="isRemember">记住密码</el-checkbox>
</div> </div>
<span
class="forgot-password fr pointer"
@click="loginMethodChange(4)"
>忘记密码?</span>
<span class="forgot-password fr pointer" @click="loginMethodChange(4)">忘记密码?</span>
</div>
<!-- 登录按钮 -->
<div class="login-btn">
<el-button
type="primary"
v-if="loginLoading"
:loading="true"
disabled
>{{ loginLoadingText }}</el-button>
<el-button
type="primary"
v-else
@click="submitLoginInfo"
>{{ getLoginBtnText() }}</el-button>
</div> </div>
<div class="login-btn pointer">{{ getLoginBtnText() }}</div>
<div class="other-login" v-if="loginMethod == 1 || loginMethod == 2"> <div class="other-login" v-if="loginMethod == 1 || loginMethod == 2">
<span <span
class="fl pointer" class="fl pointer"
</template> </template>


<script> <script>
import ret from "bluebird/js/release/util";
import "./LoginFrom.scss"; import "./LoginFrom.scss";
import {
accountLogin,
getMobilePhoneCode,
accountRegister,
mobilePhoneLogin,
forgetPassword,
} from "../../../api/login";
// 密码加密
import Utils from "@/utils/encrypt";
// 引入工具方法
import { sendMsg } from "@/utils/common";
// 导入cookie操作
import { setCookie, getCookie, delCookie } from "@/utils/cookie-util";
export default { export default {
data() { data() {
return { return {
// 登录loading // 登录loading
loginLoading: false, loginLoading: false,
loginLoadingText: "",
/** /**
* *
* 登录方式 * 登录方式
*/ */
loginMethod: 1, loginMethod: 1,
// 用户名 // 用户名
userName: "",
accountName: "",
accountNameError: false,
// 登录密码 // 登录密码
password: "", password: "",
passwordError: false,
// 手机号码 // 手机号码
mobilePhone: "", mobilePhone: "",
mobilePhoneError: false,
// 图片验证码 // 图片验证码
imgCode: "", imgCode: "",
imgCodeUrl: "",
imgCodeError: false,
// 手机验证码 // 手机验证码
phoneCode: "", phoneCode: "",
phoneCodeError: false,
// 新密码 // 新密码
newPassword: "", newPassword: "",
newPasswordError: false,
// 确认密码 // 确认密码
confirmPassword: "", confirmPassword: "",
confirmPasswordError: false,
// 记住密码 // 记住密码
isRemember: false, isRemember: false,
// 加密码
encrypt: "hAw6eqnFLKxpsDv3",
// 获取手机验证密码倒计时
sendTimer: null,
word: "获取验证码", // 手机短信验证码文字
isOvertime: false, // 手机短信验证时间判断
phoneCodeDisable: false, // 手机短信验证码按钮禁用开启
}; };
}, },
mounted() {
this.init();
},
methods: { methods: {
//
init() {
// 获取图片验证码
this.getVerificationCode();
// 账号回显
this.accountName = getCookie("accountName");
// 手机号回显
this.mobilePhone = getCookie("mobilePhone");
// 如果有密码记录
if (getCookie("password")) {
this.password = Utils.decrypt(
getCookie("password"),
this.encrypt
);
this.isRemember = true;
}
},
// 获取图片验证码
getVerificationCode() {
this.imgCodeUrl =
process.env.VUE_APP_BASE_API +
"/verificationCode/img?height=40&width=84&fontSize=25" +
"&n=" +
parseInt(Math.random() * 9999 + 1);
},
// 获取手机验证码
getPhoneCode() {
let { imgCode, mobilePhone } = this;
if (this.checkIsAllow(["mobilePhone", "imgCode"])) {
this.phoneCodeDisable = true;
getMobilePhoneCode(mobilePhone.trim(), imgCode.trim())
.then((res) => {
if (res.data.status == 0) {
if (this.isOvertime) {
return false;
}
let time = 60;
this.sendTimer = setInterval(() => {
this.isOvertime = true;
time--;
this.word = "已发送" + time + "秒";
console.log(`测试定时器`);
if (time <= 0) {
this.isOvertime = false;
clearInterval(this.sendTimer);
this.word = "发送验证码";
this.phoneCodeDisable = false;
}
}, 1000);
this.$router.push("/");
console.log("跳转到首页");
} else {
sendMsg(0, res.data.msg);
this.phoneCodeDisable = false;
}
})
.catch((err) => {
sendMsg(0, "获取验证码失败");
console.log(err);
this.phoneCodeDisable = false;
});
}
},
// 登录界面切换 // 登录界面切换
loginMethodChange(status) { loginMethodChange(status) {
this.loginMethod = status; this.loginMethod = status;
this.clearAllError();
}, },
// 获取title // 获取title
getTitleText() { getTitleText() {
? "注册" ? "注册"
: "修改密码"; : "修改密码";
}, },
// 提交登录信息
submitLoginInfo() {
// 登录方式
let { loginMethod } = this;
// 检测字段
let checkKeyList = [];
// 账号密码登录
if (loginMethod == 1) {
checkKeyList = ["accountName", "password"];
}
// 手机登录
if (loginMethod == 2) {
checkKeyList = ["mobilePhone", "imgCode", "phoneCode"];
}
// 注册
if (loginMethod == 3) {
checkKeyList = [
"mobilePhone",
"accountName",
"newPassword",
"confirmPassword",
"imgCode",
"phoneCode",
];
}
// 忘记密码
if (loginMethod == 4) {
checkKeyList = [
"mobilePhone",
"newPassword",
"confirmPassword",
"imgCode",
"phoneCode",
];
}
// 效验不通过
if (!this.checkIsAllow(checkKeyList)) {
return;
}
// 默认登录
if (loginMethod == 1) {
this.accountLogin();
}
// 手机号登录
if (loginMethod == 2) {
this.mobilePhoneLogin();
}
// 注册账号
if (loginMethod == 3) {
this.accountRegister();
}
// 忘记密码
if (loginMethod == 4) {
this.forgetPassword();
}
},
// 忘记密码 --- 修改密码
forgetPassword() {
let { mobilePhone, newPassword, imgCode, phoneCode } = this;
let param = {
mobilePhone,
newPassword,
imgCode,
smsVerificationCode: phoneCode,
};
this.loginLoading = true;
this.loginLoadingText = "修改中...";

forgetPassword(param)
.then((res) => {
const data = res.data;
if (data.status == 0) {
sendMsg(1, "修改成功");
// 保存用户名
setCookie("accountName", accountName.trim());
this.loginMethodChange(1);
} else {
sendMsg(0, data.msg);
}
this.loginLoading = false;
})
.catch((err) => {
sendMsg(0, "修改失败");
console.log(err);
this.loginLoading = false;
});
},
// 手机号登录
mobilePhoneLogin() {
let { mobilePhone, imgCode, phoneCode } = this;
this.loginLoading = true;
this.loginLoadingText = "登录中...";
mobilePhoneLogin(mobilePhone, imgCode, phoneCode)
.then((res) => {
const data = res.data;
if (data.status == 0) {
sendMsg(1, "登录成功");
// 保存用户名
setCookie("mobilePhone", mobilePhone.trim());
this.loginSuccessFn();
} else {
sendMsg(0, data.msg);
}
this.loginLoading = false;
})
.catch((err) => {
sendMsg(0, "登录失败");
console.log(err);
this.loginLoading = false;
});
},
// 注册账号
accountRegister() {
let {
mobilePhone,
accountName,
newPassword,
confirmPassword,
imgCode,
phoneCode,
} = this;
let param = {
mobilePhone,
accountName,
password: newPassword,
confirmPassword,
imgCode,
smsVerificationCode: phoneCode,
};
this.loginLoading = true;
this.loginLoadingText = "注册中...";
accountRegister(param)
.then((res) => {
const data = res.data;
if (data.status == 0) {
sendMsg(1, "注册成功");
// 保存用户名
setCookie("accountName", accountName.trim());
this.loginSuccessFn();
} else {
sendMsg(0, data.msg);
}
this.loginLoading = false;
})
.catch((err) => {
sendMsg(0, "注册失败");
console.log(err);
this.loginLoading = false;
});
},
// 默认登录
accountLogin() {
let { isRemember, encrypt, accountName, password } = this;
this.loginLoading = true;
this.loginLoadingText = "登录中...";
accountLogin(accountName.trim(), password.trim())
.then((res) => {
const data = res.data;
if (data.status == 0) {
sendMsg(1, "登录成功");
// 保存用户名
setCookie("accountName", accountName.trim());
// 判断是否勾选记住密码
if (isRemember) {
let encryptPwd = Utils.encrypt(
password.trim(),
encrypt
);
setCookie("password", encryptPwd, 7);
} else {
delCookie("password");
}
this.loginSuccessFn();
} else {
sendMsg(0, data.msg);
}
this.loginLoading = false;
})
.catch((err) => {
sendMsg(0, "登录失败");
console.log(err);
this.loginLoading = false;
});
},
// 登录成功后的响应
loginSuccessFn() {
let getLoginFrom = localStorage.getItem("loginFrom") || "/";
this.$router.push(getLoginFrom);
this.$store.dispatch('getUserInfo');
},
// 检测是否通过
checkIsAllow(checkKeyList) {
let isAllow = true;
checkKeyList.forEach((el) => {
if (!this.checkKey(this[el], el + "Error")) {
isAllow = false;
}
});
return isAllow;
},
// 检测字段
checkKey(val, key) {
let flag = true;
if (!val || !val.trim()) {
this[key] = true;
flag = false;
}
if (
key == "mobilePhoneError" &&
!/^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(val)
) {
this[key] = true;
flag = false;
}
return flag;
},
// 清楚错误
clearError(key) {
this[key] = false;
},
// 清除所有错误
clearAllError() {
this.accountNameError = false;
this.passwordError = false;
this.newPasswordError = false;
this.confirmPasswordError = false;
this.imgCodeError = false;
this.phoneCodeError = false;
this.mobilePhoneError = false;
},
},
destroyed() {
clearInterval(this.sendTimer);
this.sendTimer = null;
}, },
}; };
</script> </script>

+ 10
- 1
digital-park-web/digital-park/src/views/my-related/business/Business.vue Просмотреть файл

<Nav /> <Nav />
<div class="header-container"> <div class="header-container">
<div class="company-name"> <div class="company-name">
<span class="company-span">公司名称:{{ getCompanyName() }}</span>
<span class="company-span">公司名称:{{ getCompanyName() }} <button @click="logout">(测试)退出登录</button></span>
<!-- 已认领,未入驻园区 --> <!-- 已认领,未入驻园区 -->
<div class="company-btn fr" v-if="isClaimed && !isSettleParl"> <div class="company-btn fr" v-if="isClaimed && !isSettleParl">
我是企业,<span class="btn-span">我要入驻园区</span> 我是企业,<span class="btn-span">我要入驻园区</span>
import "./Business.scss"; import "./Business.scss";
import Nav from "@components/Header.vue"; import Nav from "@components/Header.vue";
import Footer from "@components/Footer.vue"; import Footer from "@components/Footer.vue";
import { logout } from '@api/login';
export default { export default {
components: { Nav, Footer }, components: { Nav, Footer },
data() { data() {
} }
return companyName; return companyName;
}, },
// 退出登录
logout(){
logout().then(()=>{
this.$store.dispatch('getUserInfo').then(()=>{
this.$router.push('/login');
})
})
},
}, },
}; };
</script> </script>

+ 3
- 1
digital-park-web/digital-park/vue.config.js Просмотреть файл

proxy: { proxy: {
"/domain": { "/domain": {
// target: "http://localhost:80", // target: "http://localhost:80",
target: "http://192.168.18.236:18888/",
// target: "http://192.168.18.236:18888/",
target: "http://192.168.18.138:18888",
// target: "http://localhost:80",
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
"^/domain": "", "^/domain": "",

Загрузка…
Отмена
Сохранить