|
|
@@ -33,6 +33,22 @@
|
|
|
v-loading="loading"
|
|
|
class="l-flex__fill l-flex--col center"
|
|
|
>
|
|
|
+ <el-tabs
|
|
|
+ v-model="active"
|
|
|
+ class="c-tabs has-padding u-align-self--stretch"
|
|
|
+ stretch
|
|
|
+ >
|
|
|
+ <el-tab-pane
|
|
|
+ class="c-sibling-item"
|
|
|
+ label="账号设置"
|
|
|
+ name="settings"
|
|
|
+ />
|
|
|
+ <el-tab-pane
|
|
|
+ class="c-sibling-item far"
|
|
|
+ label="密码重置"
|
|
|
+ name="password"
|
|
|
+ />
|
|
|
+ </el-tabs>
|
|
|
<warning
|
|
|
v-if="error"
|
|
|
@click="getUserInfo"
|
|
|
@@ -41,60 +57,65 @@
|
|
|
v-else
|
|
|
class="has-padding l-flex--col"
|
|
|
>
|
|
|
- <div class="l-flex--row has-bottom-padding">
|
|
|
- <user-info-item
|
|
|
- v-if="user"
|
|
|
- key="phone"
|
|
|
- v-model="phone"
|
|
|
- type="phone"
|
|
|
- :initial="user.attributes.phone[0]"
|
|
|
- @update="changeAttribute('phone', phone, '更新手机号')"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="l-flex--row has-padding--v">
|
|
|
- <user-info-item
|
|
|
- v-if="user"
|
|
|
- key="email"
|
|
|
- v-model="email"
|
|
|
- type="email"
|
|
|
- :initial="user.email"
|
|
|
- @update="updateUser({email}, '更新邮箱')"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="l-flex--row center has-top-padding">
|
|
|
- <div
|
|
|
- class="o-app u-pointer"
|
|
|
- @click="onClickWechat"
|
|
|
- >
|
|
|
- <i class="o-icon wechat has-bg" />
|
|
|
+ <template v-if="active === 'settings'">
|
|
|
+ <div class="l-flex--row has-bottom-padding">
|
|
|
+ <user-info-item
|
|
|
+ v-if="user"
|
|
|
+ key="phone"
|
|
|
+ v-model="phone"
|
|
|
+ type="phone"
|
|
|
+ :initial="user.attributes.phone[0]"
|
|
|
+ @update="changeAttribute('phone', phone, '更新手机号')"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="l-flex--row has-padding--v">
|
|
|
+ <user-info-item
|
|
|
+ v-if="user"
|
|
|
+ key="email"
|
|
|
+ v-model="email"
|
|
|
+ type="email"
|
|
|
+ :initial="user.email"
|
|
|
+ @update="updateUser({email}, '更新邮箱')"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="l-flex--row center has-top-padding">
|
|
|
<div
|
|
|
- v-if="wechat"
|
|
|
- class="l-flex--row"
|
|
|
+ class="o-app u-pointer"
|
|
|
+ @click="onClickWechat"
|
|
|
>
|
|
|
- <div class="c-sibling-item u-color--info light">已绑定</div>
|
|
|
- <div class="c-sibling-item u-pointer">解绑</div>
|
|
|
+ <i class="o-icon wechat has-bg" />
|
|
|
+ <div
|
|
|
+ v-if="wechat"
|
|
|
+ class="l-flex--row"
|
|
|
+ >
|
|
|
+ <div class="c-sibling-item u-color--info light">已绑定</div>
|
|
|
+ <div class="c-sibling-item u-pointer">解绑</div>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ 绑定微信
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div v-else>
|
|
|
- 绑定微信
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div
|
|
|
- class="o-app u-pointer"
|
|
|
- @click="onClickApplet"
|
|
|
- >
|
|
|
- <i class="o-icon applet has-bg" />
|
|
|
<div
|
|
|
- v-if="applet"
|
|
|
- class="l-flex--row"
|
|
|
+ class="o-app u-pointer"
|
|
|
+ @click="onClickApplet"
|
|
|
>
|
|
|
- <div class="c-sibling-item u-color--info light">已绑定</div>
|
|
|
- <div class="c-sibling-item u-pointer">解绑</div>
|
|
|
- </div>
|
|
|
- <div v-else>
|
|
|
- 绑定小程序
|
|
|
+ <i class="o-icon applet has-bg" />
|
|
|
+ <div
|
|
|
+ v-if="applet"
|
|
|
+ class="l-flex--row"
|
|
|
+ >
|
|
|
+ <div class="c-sibling-item u-color--info light">已绑定</div>
|
|
|
+ <div class="c-sibling-item u-pointer">解绑</div>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ 绑定小程序
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </template>
|
|
|
+ <template v-if="active === 'password'">
|
|
|
+ <reset-password />
|
|
|
+ </template>
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-dialog
|
|
|
@@ -129,27 +150,31 @@
|
|
|
|
|
|
<script>
|
|
|
import { mapGetters } from 'vuex'
|
|
|
-import UserInfoItem from './components/UserInfoItem'
|
|
|
import {
|
|
|
userinfo,
|
|
|
updateUser,
|
|
|
getTicket,
|
|
|
getQrcode
|
|
|
} from '@/api/user'
|
|
|
+import { GATEWAY } from '@/constant'
|
|
|
import {
|
|
|
validPhone,
|
|
|
validEmail
|
|
|
} from '@/utils/validate'
|
|
|
-import { GATEWAY } from '@/constant'
|
|
|
+import UserInfoItem from './components/UserInfoItem'
|
|
|
+import ResetPassword from './components/ResetPassword'
|
|
|
+
|
|
|
export default {
|
|
|
name: 'Profile',
|
|
|
components: {
|
|
|
- UserInfoItem
|
|
|
+ UserInfoItem,
|
|
|
+ ResetPassword
|
|
|
},
|
|
|
data () {
|
|
|
return {
|
|
|
loading: true,
|
|
|
error: false,
|
|
|
+ active: 'settings',
|
|
|
user: {
|
|
|
email: '',
|
|
|
attributes: {
|