Browse Source

Merge branch 'lisu' into dev

# Conflicts:
#	src/api/index.js
#	src/assets/css/common.less
#	src/views/assistance/card.vue
master
mk 1 year ago
parent
commit
632ebb4e98
  1. 1
      src/api/index.js
  2. 9
      src/api/user.js
  3. 3
      src/config/env.development.js
  4. 5
      src/router/router.config.js
  5. 46
      src/store/index.js
  6. 1
      src/utils/request.js
  7. 2
      src/views/login/index.vue
  8. 123
      src/views/mine/changePassword.vue
  9. 24
      src/views/mine/index.vue

1
src/api/index.js

@ -3,6 +3,7 @@ const api = {
UserInfo: '/epmetuser/customerstaff/govH5/detail', UserInfo: '/epmetuser/customerstaff/govH5/detail',
Customerlist: '/epmetuser/customerstaff/customerlist', Customerlist: '/epmetuser/customerstaff/customerlist',
ServiceListRcv: '/governance/service/rcvAndProcess/waitingRcvServiceList', ServiceListRcv: '/governance/service/rcvAndProcess/waitingRcvServiceList',
Password: '/epmetuser/customerstaff/changePassword',
ServiceListProcess: '/governance/service/rcvAndProcess/waitingProcessServiceList', ServiceListProcess: '/governance/service/rcvAndProcess/waitingProcessServiceList',
ServiceListCompleted: '/governance/service/rcvAndProcess/completedServiceList' ServiceListCompleted: '/governance/service/rcvAndProcess/completedServiceList'
} }

9
src/api/user.js

@ -28,3 +28,12 @@ export function getCustomerlist(data) {
data, data,
}) })
} }
// 用户修改密码 post 方法
export function changePassword(data) {
return request({
url: api.Password,
method: 'post',
data,
})
}

3
src/config/env.development.js

@ -3,7 +3,8 @@ module.exports = {
env: 'development', env: 'development',
title: 'e联社区', title: 'e联社区',
baseUrl: 'http://192.168.1.144/', // 项目地址 baseUrl: 'http://192.168.1.144/', // 项目地址
baseApi: 'http://192.168.1.144/api', // 本地api请求地址,注意:如果你使用了代理,请设置成'/' // baseApi: 'http://192.168.1.144/api', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
baseApi: 'http://219.146.91.110:30801/api', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
APPID: 'xxx', APPID: 'xxx',
APPSECRET: 'xxx', APPSECRET: 'xxx',
} }

5
src/router/router.config.js

@ -19,5 +19,10 @@ export const constantRouterMap = [
path: '/assistance', path: '/assistance',
component: () => import('@/views/assistance'), component: () => import('@/views/assistance'),
meta: { title: '诉求代办', keepAlive: false } meta: { title: '诉求代办', keepAlive: false }
},
{
path: '/changePassword',
component: () => import('@/views/mine/changePassword'),
meta: { title: '修改密码', keepAlive: false }
} }
] ]

46
src/store/index.js

@ -1,3 +1,21 @@
// import Vue from 'vue'
// import Vuex from 'vuex'
// import getters from './getters'
// import app from './modules/app'
// Vue.use(Vuex)
// const store = new Vuex.Store({
// modules: {
// app
// },
// getters
// })
// export default store
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import getters from './getters' import getters from './getters'
@ -5,11 +23,31 @@ import app from './modules/app'
Vue.use(Vuex) Vue.use(Vuex)
const userInfo = {
state: {
userInfo: {
userName: '',
agencyName: '',
serviceOrgIdentities: []
}
},
mutations: {
setUserInfo(state, userInfo) {
state.userInfo = userInfo;
}
}
};
const userInfoGetters = {
userInfo: state => state.userInfo.userInfo
};
const store = new Vuex.Store({ const store = new Vuex.Store({
modules: { modules: {
app app,
userInfo
}, },
getters getters: userInfoGetters
}) });
export default store export default store;

1
src/utils/request.js

@ -37,6 +37,7 @@ service.interceptors.response.use(
response => { response => {
Toast.clear() Toast.clear()
const res = response.data const res = response.data
const code = res.code;
if (res.status && res.status !== 200) { if (res.status && res.status !== 200) {
return Promise.reject(res || 'error') return Promise.reject(res || 'error')
} else { } else {

2
src/views/login/index.vue

@ -11,7 +11,7 @@
</div> </div>
<van-button type="info" round block style="margin-top: 35px;" native-type="submit">登录</van-button> <van-button type="info" round block style="margin-top: 35px;" native-type="submit">登录</van-button>
</van-form> </van-form>
<div class="flex flex-end flex-center1 m-top12"> <div class="flex flex-end flex-center1 m-">
<van-checkbox v-model="autoLogin" shape="square">下次自动登录</van-checkbox> <van-checkbox v-model="autoLogin" shape="square">下次自动登录</van-checkbox>
<span class="text-blue">忘记密码?</span> <span class="text-blue">忘记密码?</span>
</div> </div>

123
src/views/mine/changePassword.vue

@ -0,0 +1,123 @@
<template>
<div class="page">
<div class="card m-top5 m-top5-left m-top5-right flex " style="box-shadow: none;">
<van-cell-group>
<van-field :required="false" clearable label="账号" icon="question-o" placeholder="请输入用户名"
v-model="userName" style="opacity: 1; pointer-events: none;" />
<van-field ref="oldPasswordField" type="password" label="原始密码" placeholder="原密码"
v-model="dataForm.oldPassword" :error-message="errorMessages.oldPasswordError"
@blur="validateOldPassword" />
<van-field ref="newPasswordField" type="password" label="新密码" placeholder="输入新密码"
v-model="dataForm.newPassword" :error-message="errorMessages.newPasswordError"
@blur="validateNewPassword" />
<van-field ref="confirmPasswordField" type="password" label="确认密码" placeholder="确认新密码"
v-model="dataForm.confirmPassword" :error-message="errorMessages.confirmPasswordError"
@blur="validateConfirmPassword" />
</van-cell-group>
</div>
<van-button type="info" round block style="margin-top: 35px;" @click="changePassword()">确定修改</van-button>
</div>
</template>
<script>
import { changePassword } from '@/api/user'
import { encryptedData } from "@/utils";
export default {
data() {
return {
userName: '',
dataForm: {
oldPassword: '',
newPassword: '',
confirmPassword: ''
},
errorMessages: {
oldPasswordError: '',
newPasswordError: '',
confirmPasswordError: ''
},
regex: {
passwordRegex: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/
},
touched: {
oldPassword: false,
newPassword: false,
confirmPassword: false
},
};
},
created() {
this.userName = this.$store.state.userInfo.userInfo.userName,
this.gtePubKey()
},
methods: {
validateOldPassword() {
if (!this.dataForm.oldPassword) {
this.errorMessages.oldPasswordError = '原始密码不能为空';
} else {
this.errorMessages.oldPasswordError = '';
}
},
validateNewPassword() {
if (!this.dataForm.newPassword) {
this.errorMessages.newPasswordError = '新密码不能为空';
} else if (!this.regex.passwordRegex.test(this.dataForm.newPassword)) {
this.errorMessages.newPasswordError = '新密码要求至少包含一个大写字母、一个小写字母和一个数字,且长度不少于8位';
} else {
this.errorMessages.newPasswordError = '';
}
if (this.dataForm.confirmPassword) {
this.validateConfirmPassword();
}
},
validateConfirmPassword() {
if (!this.dataForm.confirmPassword) {
this.errorMessages.confirmPasswordError = '确认密码不能为空';
} else if (this.dataForm.newPassword !== this.dataForm.confirmPassword) {
this.errorMessages.confirmPasswordError = '确认密码与新密码不一致';
} else {
this.errorMessages.confirmPasswordError = '';
}
},
gtePubKey() {
this.$http
.post("/auth/govweb/getKey")
.then((res) => {
this.pubKey = res.data; // ;
})
.catch((err) => {
console.log(err);
});
},
changePassword() {
this.validateOldPassword();
this.validateNewPassword();
this.validateConfirmPassword();
if (this.errorMessages.oldPasswordError || this.errorMessages.newPasswordError || this.errorMessages.confirmPasswordError) {
return;
}
try {
let parms = {
oldPassword: encryptedData(this.pubKey, this.dataForm.oldPassword),
newPassword: encryptedData(this.pubKey, this.dataForm.newPassword),
confirmPassword: encryptedData(this.pubKey, this.dataForm.confirmPassword),
}
let { code, data, msg } = changePassword(parms);
console.log(code, data, msg);
if (code === 0) {
localStorage.setItem("token", data.token);
this.$router.replace({ name: 'mine' });
} else {
throw new Error(msg);
}
} catch (error) {
console.log(error.message);
}
}
}
};
</script>
<style scoped>
</style>

24
src/views/mine/index.vue

@ -7,14 +7,17 @@
</div> </div>
<div class="my_right"> <div class="my_right">
<div class="mmm"> <div class="mmm">
<div class="my_name">李某</div> <div class="my_name">{{ userName }}</div>
<div class="intro">|某某社区</div> <div class="intro">|{{ agencyName }}</div>
</div> </div>
<div class="details">表堕书朕津单位-忆跌科技获建单位-亿联星社区白组织-志硕生修队</div> <div class="details"><span v-for="(item, index) in serviceOrgIdentities" :key="index">
{{ item }}
<span v-if="index < serviceOrgIdentities.length - 1"></span>
</span></div>
</div> </div>
</div> </div>
<div class="my_card"> <div class="my_card">
<div class="my_zzz"> <div class="my_zzz" @click="changePassword()">
<div class="z_left"><img src="@/assets/images/icon/password.png" class="z_img">修改密码</div> <div class="z_left"><img src="@/assets/images/icon/password.png" class="z_img">修改密码</div>
<div class="z_right"><img src="@/assets/images/icon/right.png" class="z_img"></div> <div class="z_right"><img src="@/assets/images/icon/right.png" class="z_img"></div>
</div> </div>
@ -34,6 +37,9 @@ export default {
data() { data() {
return { return {
show:false, show:false,
userName:'',
agencyName:'',
serviceOrgIdentities:[],
}; };
}, },
created() { created() {
@ -44,6 +50,12 @@ export default {
let { data, code, msg } = await getUserInfo() let { data, code, msg } = await getUserInfo()
if (code == 0) { if (code == 0) {
console.log(data); console.log(data);
data.serviceOrgIdentities = data.serviceOrgIdentities.map(item => item.split('-')[0]);
this.$store.commit('setUserInfo', data);
console.log('this.$store.state.userInfo.userInfo',this.$store.state.userInfo.userInfo);
this.userName = data.userName
this.agencyName = data.agencyName
this.serviceOrgIdentities = data.serviceOrgIdentities
} }
}, },
hadnelClicklogOut() { hadnelClicklogOut() {
@ -57,6 +69,10 @@ export default {
}); });
}, },
changePassword(){
console.log('changePassword')
this.$router.push('./changePassword')
}
}, },
components: {}, components: {},

Loading…
Cancel
Save