提交 7aed245c 编写于 作者: KK's avatar KK

setting组件调整

上级 81453e04
export const settingConfig = { export const settingConfig = {
// 账号信息 default: [
accountInformation:true, {
// 用户实体参数名称 name: "accountInformation",
userEntityName:"user", isEnable: true,
text: "账号信息",
position: "top",
sort: "100",
},
{
name: "mobilePhoneNumber",
isEnable: true,
text: "手机号码",
position: "top",
sort: "200",
},
{
name: "theme",
isEnable: true,
text: "主题",
position: "top",
sort: "300",
},
{
name: "layoutStyle",
isEnable: true,
text: "风格",
position: "top",
sort: "400",
viewName: "app-mob-select-changeStyle",
},
{
name: "notification",
isEnable: true,
text: "消息通知",
position: "center",
sort: "100",
},
{
name: "privacy",
isEnable: true,
text: "隐私",
position: "center",
sort: "200",
},
{
name: "universal",
isEnable: true,
text: "通用",
position: "center",
sort: "300",
},
{
name: "accessibility",
isEnable: true,
text: "辅助功能",
position: "center",
sort: "400",
},
{
name: "about",
isEnable: true,
text: "关于",
position: "center",
sort: "500",
},
{
name: "logout",
isEnable: true,
text: "退出登录",
position: "bottom",
sort: "100",
},
{
name: "clear",
isEnable: true,
text: "清除缓存",
position: "bottom",
sort: "200",
},
],
// 个人中心视图(需用户手动配置) // 个人中心视图(需用户手动配置)
userCenterViewName:"", userCenterViewName: "",
// 手机号码 // 用户实体参数名称
mobilePhoneNumber:true, userEntityName: "user",
// 主题 // 自定义功能
theme:true, userCustomize: [
// 风格 // {
layoutStyle:true, // 名称(不可重复)
// 消息通知 // name: "test",
notification:true, // 是否启用
// 隐私 // isEnable: true,
privacy:true, // 显示文本
// 通用 // text: "test",
Universal:true, // // 板块位置(内置为三个板块,分别为 top、center、bottom)
// 辅助功能 // position: "center",
accessibility:true, // // 板块排序(与其他item的排序位置)
// 关于 // sort: "201",
about:true, // 打开视图名称
// 退出登录 // viewName: "",
logout:true, // },
// 清除缓存 ],
clear:true
}; };
...@@ -8,76 +8,59 @@ ...@@ -8,76 +8,59 @@
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<div class="content"> <div class="content">
<ion-list class="content-list"> <ion-list class="content-list content-list-top">
<ion-item v-if="settingConfig.accountInformation" @click="userCenter"> <template v-for="item in data.top">
<ion-item :key="item.name" v-if="item.isEnable" @click="onItemClick(item)">
<div class="content-list-item-content"> <div class="content-list-item-content">
<div class="content-list-item-content-text">账号信息</div> <div class="content-list-item-content-text">{{item.text}}</div>
<div class="content-list-item-content-text">{{srfloginname}}</div> <ion-icon
</div> v-if="item.name !== 'theme' && item.name !== 'accountInformation'"
</ion-item> name="chevron-forward-outline"
<ion-item v-if="settingConfig.mobilePhoneNumber"> ></ion-icon>
<div class="content-list-item-content"> <app-mob-select-changeTheme v-if="item.name == 'theme'" ref="changeTheme"></app-mob-select-changeTheme>
<div class="content-list-item-content-text">手机号码</div> <div
<ion-icon name="chevron-forward-outline"></ion-icon> v-if="item.name == 'accountInformation'"
</div> class="content-list-item-content-text"
</ion-item> >{{srfloginname}}</div>
<ion-item @click="changeTheme" v-if="settingConfig.theme">
<div class="content-list-item-content">
<ion-label class="content-list-item-content-text">主题</ion-label>
<app-mob-select-changeTheme ref="changeTheme"></app-mob-select-changeTheme>
</div>
</ion-item>
<ion-item v-if="settingConfig.layoutStyle" @click="openModal">
<div class="content-list-item-content">
<div class="content-list-item-content-text">风格</div>
<ion-icon name="chevron-forward-outline"></ion-icon>
</div> </div>
</ion-item> </ion-item>
</template>
</ion-list> </ion-list>
<ion-list class="content-list"> <ion-list class="content-list content-list-center">
<ion-item v-if="settingConfig.notification"> <template v-for="item in data.center">
<div class="content-list-item-content"> <ion-item :key="item.name" v-if="item.isEnable" @click="onItemClick(item)">
<div class="content-list-item-content-text">消息通知</div>
<ion-icon name="chevron-forward-outline"></ion-icon>
</div>
</ion-item>
<ion-item v-if="settingConfig.privacy">
<div class="content-list-item-content">
<div class="content-list-item-content-text">隐私</div>
<ion-icon name="chevron-forward-outline"></ion-icon>
</div>
</ion-item>
<ion-item v-if="settingConfig.Universal">
<div class="content-list-item-content"> <div class="content-list-item-content">
<div class="content-list-item-content-text">通用</div> <div class="content-list-item-content-text">{{item.text}}</div>
<ion-icon name="chevron-forward-outline"></ion-icon> <ion-icon
</div> v-if="item.name !== 'theme' && item.name !== 'accountInformation'"
</ion-item> name="chevron-forward-outline"
<ion-item v-if="settingConfig.accessibility"> ></ion-icon>
<div class="content-list-item-content"> <app-mob-select-changeTheme v-if="item.name == 'theme'" ref="changeTheme"></app-mob-select-changeTheme>
<div class="content-list-item-content-text">辅助功能</div> <div
<ion-icon name="chevron-forward-outline"></ion-icon> v-if="item.name == 'accountInformation'"
</div> class="content-list-item-content-text"
</ion-item> >{{srfloginname}}</div>
<ion-item v-if="settingConfig.about">
<div class="content-list-item-content">
<div class="content-list-item-content-text">关于ibiz</div>
<ion-icon name="chevron-forward-outline"></ion-icon>
</div> </div>
</ion-item> </ion-item>
</template>
</ion-list> </ion-list>
<ion-list class="content-list" > <ion-list class="content-list content-list-bottom">
<ion-item @click="logout" v-if="settingConfig.logout"> <template v-for="item in data.bottom">
<div class="content-list-item-content"> <ion-item :key="item.name" v-if="item.isEnable" @click="onItemClick(item)">
<div v-if="!thirdPartyName" class="content-list-item-content-text">退出当前账号</div>
<div v-if="thirdPartyName" class="content-list-item-content-text">退出应用</div>
</div>
</ion-item>
<ion-item @click="clear" v-if="settingConfig.clear">
<div class="content-list-item-content"> <div class="content-list-item-content">
<div class="content-list-item-content-text">清除缓存</div> <div class="content-list-item-content-text">{{item.text}}</div>
<ion-icon
v-if="item.name !== 'theme' && item.name !== 'accountInformation'"
name="chevron-forward-outline"
></ion-icon>
<app-mob-select-changeTheme v-if="item.name == 'theme'" ref="changeTheme"></app-mob-select-changeTheme>
<div
v-if="item.name == 'accountInformation'"
class="content-list-item-content-text"
>{{srfloginname}}</div>
</div> </div>
</ion-item> </ion-item>
</template>
</ion-list> </ion-list>
</div> </div>
</ion-page> </ion-page>
...@@ -91,16 +74,20 @@ import { ...@@ -91,16 +74,20 @@ import {
Emit, Emit,
Watch, Watch,
} from "vue-property-decorator"; } from "vue-property-decorator";
import { settingConfig } from './app-setting' import { settingConfig } from "./app-setting";
@Component({ @Component({
components: {}, components: {},
}) })
export default class AppSetting extends Vue { export default class AppSetting extends Vue {
public settingConfig = settingConfig; /**
* 用户名称
*/
public srfloginname = ""; public srfloginname = "";
/**
* 第三方服务
*/
public thirdPartyName = this.$viewTool.getThirdPartyName(); public thirdPartyName = this.$viewTool.getThirdPartyName();
/** /**
...@@ -111,75 +98,113 @@ export default class AppSetting extends Vue { ...@@ -111,75 +98,113 @@ export default class AppSetting extends Vue {
this.srfloginname = appdata.context.srfloginname; this.srfloginname = appdata.context.srfloginname;
this.$viewTool.setViewTitleOfThirdParty("设置"); this.$viewTool.setViewTitleOfThirdParty("设置");
this.setViewTitleStatus(); this.setViewTitleStatus();
this.initializeData();
}
/**
* 视图数据
*/
public data: any = {
top: [],
center: [],
bottom: [],
};
/**
* 初始化数据
*/
public initializeData() {
// console.log(settingConfig);
let data = [];
data.push(...settingConfig.default, ...settingConfig.userCustomize);
// 分类合并
data.forEach((item: any) => {
if (item.position == "top") {
this.data.top.push(item);
}
if (item.position == "center") {
this.data.center.push(item);
}
if (item.position == "bottom") {
this.data.bottom.push(item);
}
});
// 排序规则
let compare = (property: any) => {
return (a: any, b: any) => {
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
};
};
// 排序
Object.keys(this.data).forEach((item: any) => {
this.data[item].sort(compare("sort"));
});
} }
/** /**
* 标题状态 * 标题状态
* *
* @memberof ProductCloseMobEditViewBase
*/ */
public titleStatus :boolean = true; public titleStatus: boolean = true;
/** /**
* 设置标题状态 * 设置标题状态
* *
* @memberof ProductCloseMobEditViewBase
*/ */
public setViewTitleStatus(){ public setViewTitleStatus() {
const thirdPartyName = this.$store.getters.getThirdPartyName(); const thirdPartyName = this.$store.getters.getThirdPartyName();
if(thirdPartyName){ if (thirdPartyName) {
this.titleStatus = false; this.titleStatus = false;
} }
} }
/** /**
* 退出登录 * 退出登录
*
* @memberof
*/ */
public async logout() { public async logout() {
const title: any = this.$t('app.tabpage.sureclosetip.title'); const title: any = this.$t("app.tabpage.sureclosetip.title");
const contant: any = this.$t('app.tabpage.sureclosetip.content'); const contant: any = this.$t("app.tabpage.sureclosetip.content");
const result = await this.$notice.confirm(title, '确认退出当前账号?',this.$store); const result = await this.$notice.confirm(title, "确认退出当前账号?", this.$store);
if(result){ if (result) {
if(this.thirdPartyName){ if (this.thirdPartyName) {
this.$viewTool.ThirdPartyClose(); this.$viewTool.ThirdPartyClose();
return return;
} }
const get: Promise<any> = this.$http.get('v7/logout'); const get: Promise<any> = this.$http.get("v7/logout");
get.then((response:any) =>{ get.then((response: any) => {
if (response && response.status === 200) { if (response && response.status === 200) {
this.doLogin(); this.doLogin();
} }
}).catch((error: any) =>{
console.error(error);
}) })
.catch((error: any) => {
console.error(error);
});
} }
} }
/** /**
* 去登录 * 去登录
* *
* @param {*} [data]
* @memberof AppServiceBase
*/ */
public doLogin(data?: any): void { public doLogin(data?: any): void {
// 清除user、token // 清除user、token
if (localStorage.getItem('user')) { if (localStorage.getItem("user")) {
localStorage.removeItem('user'); localStorage.removeItem("user");
} }
if (localStorage.getItem('token')) { if (localStorage.getItem("token")) {
localStorage.removeItem('token'); localStorage.removeItem("token");
} }
this.$router.push({ name: 'login' }); this.$router.push({ name: "login" });
} }
/** /**
* 清除缓存 * 清除缓存
*/ */
public async clear() { public async clear() {
const result = await this.$notice.confirm("清除缓存", '清除缓存可能会导致当前登录信息失效!!!',this.$store); const result = await this.$notice.confirm("清除缓存", "清除缓存可能会导致当前登录信息失效!!!", this.$store);
if(result){ if (result) {
localStorage.clear(); localStorage.clear();
} }
} }
...@@ -188,53 +213,66 @@ export default class AppSetting extends Vue { ...@@ -188,53 +213,66 @@ export default class AppSetting extends Vue {
* 主题切换 * 主题切换
*/ */
public changeTheme() { public changeTheme() {
let changeTheme:any = this.$refs.changeTheme; let changeTheme: any = this.$refs.changeTheme;
if(changeTheme){ if (changeTheme && changeTheme[0]) {
changeTheme.open(); changeTheme[0].open();
} }
} }
/** /**
* 个人中心 * 个人中心
*/ */
public userCenter(){ public userCenter() {
const { context, param } = this.$store.getters.getAppData(); const { context, param } = this.$store.getters.getAppData();
let user :any = {} let user: any = {};
if(context && context.srfuserid){ if (context && context.srfuserid) {
user[this.settingConfig.userEntityName] = context.srfuserid; user[settingConfig.userEntityName] = context.srfuserid;
} }
if(this.settingConfig.userCenterViewName){ if (settingConfig.userCenterViewName) {
this.$appmodal.openModal({viewname:this.settingConfig.userCenterViewName,title:""},user); this.$appmodal.openModal(
}else{ { viewname: settingConfig.userCenterViewName, title: "" },
this.$notice.warning("用户自定义视图未配置") user
);
} else {
this.$notice.warning("用户自定义视图未配置");
} }
} }
/**
* 打开模态框
*
* @type {string}
* @memberof AppRichTextEditor
*/
public openModal(){
this.openPopupModal({ viewname: 'app-mob-select-changeStyle', title: 'app-mob-select-changeStyle'},{},{});
}
/** /**
* 模态打开 * 模态打开
* *
* @type {string}
* @memberof AppRichTextEditor
*/ */
private async openPopupModal(view: any, context: any, param: any): Promise<any> { private async openPopupModal(view: any, context: any, param: any): Promise<any> {
const result: any = await this.$appmodal.openModal(view, context, param); const result: any = await this.$appmodal.openModal(view, context, param);
if (result || Object.is(result.ret, 'OK')) { if (result || Object.is(result.ret, "OK")) {
this.$emit("change", result.datas[0].backEnd); this.$emit("change", result.datas[0].backEnd);
} }
} }
/**
* item点击事件
*/
public onItemClick(item: any) {
// 内置功能
if (item.name == "accountInformation") {
this.userCenter();
} else if (item.name == "theme") {
this.changeTheme();
} else if (item.name == "layoutStyle") {
this.openPopupModal({ viewname: item.viewName }, {}, {});
} else if (item.name == "logout") {
this.logout();
} else if (item.name == "clear") {
this.clear();
} else {
// 自定义功能
if (item.viewName) {
this.openPopupModal({ viewname: item.viewName }, {}, {});
}
}
}
} }
</script> </script>
<style lang="less"> <style lang="less">
@import './app-setting.less'; @import "./app-setting.less";
</style> </style>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册