refactor(member): 提取公共登录态清理和注销逻辑到mixin
重构会员相关页面的重复代码,将清除登录态、退出登录、账号注销相关逻辑抽离到公共mixin中,统一复用代码并减少重复维护成本
This commit is contained in:
@@ -78,7 +78,10 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import memberPublic from './public/js/member-public.js';
|
||||
|
||||
export default {
|
||||
mixins: [memberPublic],
|
||||
data() {
|
||||
return {
|
||||
accountInfo: {},
|
||||
@@ -116,28 +119,7 @@ export default {
|
||||
this.$util.redirectTo('/pages_tool/member/cancellation');
|
||||
},
|
||||
submit() {
|
||||
uni.showModal({
|
||||
title: '风险提示',
|
||||
content: '确定要注销当前账号吗?',
|
||||
confirmColor: '#000000',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
this.$api.sendRequest({
|
||||
url: '/membercancel/api/membercancel/apply',
|
||||
success: rres => {
|
||||
let cancellation_condition = rres.data.is_audit;
|
||||
if (rres.code >= 0) {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelstatus');
|
||||
} else {
|
||||
this.$util.showToast({
|
||||
title: rres.message
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
this.submitCancelApply();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -37,7 +37,10 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import memberPublic from './public/js/member-public.js';
|
||||
|
||||
export default {
|
||||
mixins: [memberPublic],
|
||||
data() {
|
||||
return {
|
||||
state: 0
|
||||
@@ -67,10 +70,7 @@
|
||||
}
|
||||
|
||||
if (res.code == -1) {
|
||||
this.$store.commit('setToken', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.dispatch('emptyCart');
|
||||
this.clearLoginState();
|
||||
this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,10 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import memberPublic from './public/js/member-public.js';
|
||||
|
||||
export default {
|
||||
mixins: [memberPublic],
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
@@ -33,18 +36,20 @@
|
||||
methods: {
|
||||
getStatus() {
|
||||
this.$api.sendRequest({
|
||||
url: '/membercancel/api/membercancel/info',
|
||||
success: res => {
|
||||
if (res.code >= 0) {
|
||||
this.state = res.data.state;
|
||||
if (res.data.state == 1) {
|
||||
this.$store.commit('setToken', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.dispatch('emptyCart');
|
||||
if (res.data && res.data.status == 1) {
|
||||
this.clearLoginState();
|
||||
this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
success() {
|
||||
this.clearLoginState();
|
||||
this.$util.redirectTo(this.$util.INDEX_PAGE_URL);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
<script>
|
||||
import diyJs from '@/common/js/diy.js';
|
||||
import indexJs from './public/js/index.js';
|
||||
import memberPublic from './public/js/member-public.js';
|
||||
|
||||
import nsBirthdayGift from '../_components/ns-birthday-gift/ns-birthday-gift.vue';
|
||||
import nsNewGift from '../_components/ns-new-gift/ns-new-gift.vue';
|
||||
@@ -85,7 +86,7 @@ export default {
|
||||
nsBirthdayGift,
|
||||
nsNewGift
|
||||
},
|
||||
mixins: [diyJs, indexJs],
|
||||
mixins: [diyJs, indexJs, memberPublic],
|
||||
onLoad() {
|
||||
this.$util.hideHomeButton();
|
||||
},
|
||||
@@ -96,55 +97,6 @@ export default {
|
||||
|
||||
tourl(url) {
|
||||
this.$util.redirectTo(url);
|
||||
},
|
||||
|
||||
// 退出登录
|
||||
logout() {
|
||||
uni.showModal({
|
||||
title: this.$lang('logoutTitle'),
|
||||
content: this.$lang('logoutContent'),
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.$store.commit('setToken', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.dispatch('emptyCart');
|
||||
uni.removeStorageSync('authInfo');
|
||||
uni.removeStorageSync('privacyAgreed');
|
||||
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 账号注销
|
||||
cancellation() {
|
||||
uni.showModal({
|
||||
title: this.$lang('cancellationTitle'),
|
||||
content: this.$lang('cancellationContent'),
|
||||
confirmColor: '#000000',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
this.$api.sendRequest({
|
||||
url: '/membercancel/api/membercancel/apply',
|
||||
success: rres => {
|
||||
if (rres.code >= 0) {
|
||||
this.$store.commit('setToken', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.dispatch('emptyCart');
|
||||
uni.removeStorageSync('authInfo');
|
||||
uni.removeStorageSync('privacyAgreed');
|
||||
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
|
||||
|
||||
} else {
|
||||
this.$util.showToast({
|
||||
title: rres.message
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import validate from '@/common/js/validate.js';
|
||||
import memberPublic from './member-public.js';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@@ -136,6 +137,7 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...memberPublic.methods,
|
||||
// 初始化语言
|
||||
initLang() {
|
||||
//获取语言列表
|
||||
@@ -239,63 +241,6 @@ export default {
|
||||
});
|
||||
}
|
||||
},
|
||||
cancellation() {
|
||||
uni.showModal({
|
||||
title: '风险提示',
|
||||
content: '确定要注销当前账号吗?',
|
||||
confirmColor: '#000000',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
this.$api.sendRequest({
|
||||
url: '/membercancel/api/membercancel/apply',
|
||||
success: rres => {
|
||||
let cancellation_condition = rres.data.is_audit;
|
||||
if (rres.code >= 0) {
|
||||
this.$store.commit('setToken', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.dispatch('emptyCart');
|
||||
this.$store.dispatch('emptyCart');
|
||||
uni.removeStorageSync('authInfo');
|
||||
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
|
||||
} else {
|
||||
this.$util.showToast({
|
||||
title: rres.message
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
getCancelStatus() {
|
||||
this.$api.sendRequest({
|
||||
url: '/membercancel/api/membercancel/info',
|
||||
success: res => {
|
||||
if (res.code >= 0) {
|
||||
if (res.data) {
|
||||
if (res.data.status == 0) {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelstatus', {
|
||||
back: '/pages_tool/member/info'
|
||||
});
|
||||
} else if (res.data.status == 1) {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelsuccess', {
|
||||
back: '/pages_tool/member/info'
|
||||
});
|
||||
} else {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelrefuse', {
|
||||
back: '/pages_tool/member/info'
|
||||
});
|
||||
}
|
||||
} else {
|
||||
this.$util.redirectTo('/pages_tool/member/assets', {
|
||||
back: '/pages_tool/member/info'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 导航返回
|
||||
NavReturn() {
|
||||
uni.navigateBack({
|
||||
@@ -317,23 +262,6 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
// 退出登录
|
||||
logout() {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确定要退出登录吗',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.$store.commit('setToken', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.dispatch('emptyCart');
|
||||
this.$store.dispatch('emptyCart');
|
||||
uni.removeStorageSync('authInfo');
|
||||
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
headImage() {
|
||||
this.$util.redirectTo("/pages_tool/member/modify_face");
|
||||
},
|
||||
|
||||
87
pages_tool/member/public/js/member-public.js
Normal file
87
pages_tool/member/public/js/member-public.js
Normal file
@@ -0,0 +1,87 @@
|
||||
export default {
|
||||
methods: {
|
||||
// 清除登录态(token / 用户信息 / 购物车 / 本地存储)
|
||||
clearLoginState() {
|
||||
this.$store.commit('setToken', '');
|
||||
this.$store.commit('setMemberInfo', '');
|
||||
this.$store.dispatch('emptyCart');
|
||||
uni.removeStorageSync('authInfo');
|
||||
uni.removeStorageSync('privacyAgreed');
|
||||
},
|
||||
|
||||
// 退出登录
|
||||
logout() {
|
||||
uni.showModal({
|
||||
title: this.$lang ? this.$lang('logoutTitle') : '提示',
|
||||
content: this.$lang ? this.$lang('logoutContent') : '确定要退出登录吗',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.clearLoginState();
|
||||
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 账号注销入口:先查状态,根据状态分流
|
||||
cancellation() {
|
||||
this.getCancelStatus();
|
||||
},
|
||||
|
||||
// 查询注销状态并跳转对应页面
|
||||
// status: undefined/null → 未申请 → 协议页 cancellation.vue
|
||||
// status: 0 → 审核中 → 状态页 cancelstatus.vue
|
||||
// status: 1 → 通过 → 成功页 cancelsuccess.vue
|
||||
// status: -1 → 拒绝 → 拒绝页 cancelrefuse.vue
|
||||
getCancelStatus() {
|
||||
this.$api.sendRequest({
|
||||
url: '/membercancel/api/membercancel/info',
|
||||
success: res => {
|
||||
if (res.code >= 0) {
|
||||
if (res.data) {
|
||||
if (res.data.status == 0) {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelstatus');
|
||||
} else if (res.data.status == 1) {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelsuccess');
|
||||
} else {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelrefuse');
|
||||
}
|
||||
} else {
|
||||
this.$util.redirectTo('/pages_tool/member/cancellation');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 提交注销申请并清理登录态(供 assets.vue 等页面调用)
|
||||
submitCancelApply(options = {}) {
|
||||
uni.showModal({
|
||||
title: options.title || '风险提示',
|
||||
content: options.content || '确定要注销当前账号吗?',
|
||||
confirmColor: '#000000',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
this.$api.sendRequest({
|
||||
url: '/membercancel/api/membercancel/apply',
|
||||
success: rres => {
|
||||
if (rres.code >= 0) {
|
||||
if (options.clearStateAndRedirect) {
|
||||
this.clearLoginState();
|
||||
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
|
||||
} else {
|
||||
this.$util.redirectTo('/pages_tool/member/cancelstatus');
|
||||
}
|
||||
} else {
|
||||
this.$util.showToast({
|
||||
title: rres.message
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user