From ac235850a9287dae6977c964213176fa7c86b140 Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期四, 09 十二月 2021 14:42:20 +0800 Subject: [PATCH] Merge branch 'refactor/separate-vue' of ssh://192.168.0.10:29418/pcalife/PAM into refactor/separate-vue --- PAMapp/pages/accountSetting/index.vue | 255 +++----------------------------------------------- 1 files changed, 18 insertions(+), 237 deletions(-) diff --git a/PAMapp/pages/accountSetting/index.vue b/PAMapp/pages/accountSetting/index.vue index fb21f19..8c4a31e 100644 --- a/PAMapp/pages/accountSetting/index.vue +++ b/PAMapp/pages/accountSetting/index.vue @@ -1,14 +1,14 @@ <template> <div class="account-page"> <div class="account-page-title">�犖撣唾�身摰�</div> - <section class="account-card" :class="{'edit': !userNameDisabled }"> + <section class="account-card" :class="{'edit': !userNameDisabled }"> <div class="header"> <div class="block"> <div class="setting-title">憪��</div> <div class="contact-type"> <input :disabled="userNameDisabled" - v-model="userNameValue" + v-model="userNameValue" ref="userName" class="input name-input" > @@ -16,22 +16,22 @@ <span v-show="!nameValid" class="error">甇斗���‵</span> </div> </div> - + </div> <i class="icon-edit icon" @click="editField('userName')" :class="{'icon-color-change': !userNameDisabled}"></i> </div> - + </section> - <section class="account-card" :class="{'edit': !userPhoneDisabled }" v-if="phoneValue"> + <section class="account-card" :class="{'edit': !userPhoneDisabled }" v-if="phoneValue"> <div class="header"> - <div class="block"> + <div class="block"> <div class="setting-title">蝬��</div> <div class="contact-type"> ����Ⅳ <input :disabled="userPhoneDisabled" - v-model="phoneValue" + v-model="phoneValue" :class="{ 'is-invalid': !phoneValid }" @@ -44,19 +44,19 @@ </div> </div> </div> - <!-- <i class="icon-edit icon" + <!-- <i class="icon-edit icon" @click="editField('userPhone')" :class="{'icon-color-change': !userPhoneDisabled}"></i> --> </div> - + </section> - <section class="account-card" :class="{'edit': !userEmailDisabled }" v-if="emailValue"> + <section class="account-card" :class="{'edit': !userEmailDisabled }" v-if="emailValue"> <div class="header"> <div class="block"> <div class="setting-title">蝬��</div> <div class="contact-type">Email - <input + <input :disabled="userEmailDisabled" v-model="emailValue" :class="{ @@ -71,15 +71,15 @@ </div> </div> </div> - - <!-- <i class="icon-edit icon" @click="editField('userEmail')" + + <!-- <i class="icon-edit icon" @click="editField('userEmail')" :class="{'icon-color-change': !userEmailDisabled}"></i> --> </div> - + </section> <div class="account-setting-btn mb-30"> - <el-button + <el-button :disabled="isSubmitBtnDisabled" @click.native="updateAccountSetting">�</el-button> </div> @@ -87,227 +87,8 @@ </div> </template> -<script lang="ts"> -import { Vue,Component } from 'vue-property-decorator' -import { getUserAccountSetting, updateAccountSetting } from '~/assets/ts/api/consultant'; -import { UserSetting } from '~/assets/ts/models/account.model'; - -@Component -export default class AccountSetting extends Vue { - _userSetting!: UserSetting; - userNameDisabled = true; - userPhoneDisabled = true; - userEmailDisabled = true ; - userNameValue = ''; - phoneValue = '' ; - emailValue = '' ; - - onEditMode = false; - formValidStatus = { - name: true, - phone: true, - email: true, - }; - - get nameValid(): boolean { - this.formValidStatus.name = this.userNameValue ? true : false; - return this.formValidStatus.name; - } - - get phoneValid(): boolean { - const rule = /^09[0-9]{8}$/; - this.formValidStatus.phone = this.phoneValue ? rule.test(this.phoneValue) : true; - return this.formValidStatus.phone; - } - - get emailValid(): boolean { - const rule = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; - this.formValidStatus.email = this.emailValue ? rule.test(this.emailValue) : true;; - return this.formValidStatus.email; - } - - editField(fieldName: string): void { - this.onEditMode = true; - const enablePromise = new Promise((resolve, reject) => { // 甇斤promise隤�� - resolve((this as any)[`${fieldName}Disabled`] = false); - }); - const targetInput = this.$refs[fieldName] as any; - enablePromise.then((_) => { - targetInput.focus(); - }); - } - - get isSubmitBtnDisabled(): boolean { - const isFormValid = this.formValidStatus.name && this.formValidStatus.phone && this.formValidStatus.email; - return !isFormValid || !this.onEditMode - || (!this.phoneValue && !this.emailValue); - } - - updateAccountSetting(): void { - // const dataChanged = (): boolean => { - // return this._userSetting.name !== this.userNameValue - // || this._userSetting.phone !== this.phoneValue - // || this._userSetting.email !== this.emailValue; - // }; - // if (dataChanged) { - - // } - if (!this.onEditMode) return; - const editSettingInfo: UserSetting = { - name: this.userNameValue, - phone: this.phoneValue, - email: this.emailValue - } - updateAccountSetting(editSettingInfo).then((res: any) => { - console.log('updateRes:', res); - this.resetSettingForm(); - }); - } - - private resetSettingForm(): void { - this.onEditMode = false; - this.userNameDisabled = true; - this.userPhoneDisabled = true; - this.userEmailDisabled = true ; - } - - mounted(){ - getUserAccountSetting().then((userInfo: UserSetting)=>{ - this._userSetting = { - name: userInfo.name || '', - phone: userInfo.phone || '', - email: userInfo.email || '', - }; - - this.phoneValue = this._userSetting.phone!; - this.userNameValue = this._userSetting.name!; - this.emailValue = this._userSetting.email!; - }) - } - -} - - -</script> +<script src="./account-setting.component.ts"></script> <style lang="scss" scoped> -.account-page{ - .block{ - display: flex; - } - .account-page-title{ - font-size: 20px; - margin-bottom: 34px; - } - .account-card{ - display: flex; - flex-direction: column; - border-bottom: 1px solid gray; - margin-bottom: 33px; - .contact-type{ - width: 184px; - margin-right: 16px; - font-size: 20px; - display: flex; - flex-direction: column; - align-items: flex-start; - } - &.edit { - input { - border: 1px solid lightgray; - background-color: #fff; - } - } - } - .account-setting-btn{ - display: flex; - justify-content: center; - } -} -.error-txt{ - padding-bottom: 10px; - .error { - @extend .smTxt_bold; - @extend .text--primary; - height: 16px; - } -} -.name-input{ - width: 184px; - height:27px; - margin-bottom: 20px; - font-size: 20px; - margin-top: -3px; - } -.setting-title{ - margin-left: 28px; - margin-bottom:10px; - width: 58px; - font-size: 20px; - } -.header{ - display: flex; - align-items: baseline; -} -.contact-input{ - font-size: 20px; - margin-bottom: 10px; - text-overflow: ellipsis; - margin-top: 10px; - width: 184px; -} -.input{ - border: 0; - background-color: rgba(0,0,0,0) ; - outline-color: gainsboro; -} -.input:focus{ - background-color: #fff; -} -.icon-color-change{ - color:$PRIMARY_RED; - font-size: 20px; -} -.icon{ - font-size:20px; - // color:#1B365D; -} -@include desktop{ - - .header{ - display: flex; - align-items: baseline; - justify-content: space-between; - } - .setting-title{ - margin-bottom:10px; - width: 58px; - font-size: 18px; - font-weight: bold; - } - .account-page{ - .account-page-title{ - font-size: 20px; - margin-bottom: 34px; - font-weight: bold; - } - } - .account-card{ - display: flex; - flex-direction: column; - border-bottom: 1px solid gray; - margin-bottom: 33px; - .contact-type{ - margin-left: 10px; - font-size: 20px; - } - } - .name-input{ - width: 550px; - } - .contact-input{ - width:550px - } - } - -</style> \ No newline at end of file + @import "./account-setting.component.scss"; +</style> -- Gitblit v1.8.0