From b12d026f0e1c640c2a59a66a389702fb0f99d10b Mon Sep 17 00:00:00 2001 From: Cindy Chang Date: Thu, 27 Jun 2024 08:58:40 +0800 Subject: [PATCH] editable status control --- .../ModalAccountEditCreate.vue | 53 +++++++++++++------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/src/views/AccountManagement/ModalAccountEditCreate.vue b/src/views/AccountManagement/ModalAccountEditCreate.vue index bae4146..d582e2a 100644 --- a/src/views/AccountManagement/ModalAccountEditCreate.vue +++ b/src/views/AccountManagement/ModalAccountEditCreate.vue @@ -20,7 +20,8 @@ 'text-[#FF3366]': !isAccountUnique, 'border-[#FF3366]': !isAccountUnique, }" - @focus="onInputAccountFocus" + @focus="onInputAccountFocus" :readonly="!isEditable" + @dblclick="onInputDoubleClick" />
@@ -41,7 +42,8 @@
+ v-model="inputName" :readonly="!isEditable" @dblclick="onInputDoubleClick" + />
@@ -52,7 +54,7 @@
+ v-model="inputPwd" :readonly="!isEditable" @dblclick="onInputDoubleClick"/> @@ -75,7 +77,7 @@ 'border-[#FF3366]': !isPwdMatched, }"> { if (newVal === MODAL_CREATE_NEW) { @@ -189,16 +193,16 @@ export default defineComponent({ return modalStore.whichModal === MODAL_CREATE_NEW ? i18next.t('AcctMgmt.CreateNew') : i18next.t('AcctMgmt.AccountEdit'); }); - watch( [inputUserAccount, inputName, inputPwd, inputConfirmPwd, isAccountUnique, - isPwdMatched, + isPwdMatched, ], ([newAccount, newName, newPwd, newConfirmPwd, newIsAccountUnique, newPwdMatched, ]) => { - if (!newAccount.length || !newName.length || !newPwd.length - || !newConfirmPwd.length || !newIsAccountUnique + + if (!newAccount?.length || !newName?.length || !newPwd?.length + || !newConfirmPwd?.length || !newIsAccountUnique || !newPwdMatched ) { isConfirmDisabled.value = true; @@ -221,19 +225,23 @@ export default defineComponent({ isPwdMatched.value = inputPwd.value.length > 0 && inputPwd.value === inputConfirmPwd.value; } + const onInputDoubleClick = () => { + // 允許編輯模式 + isEditable.value = true; + } + const onConfirmBtnClick = async () => { validateConfirmPwd(); if(!isPwdMatched.value){ return; } - - await checkAccountIsUnique(); - if(!isAccountUnique.value) { - return; - } switch(whichCurrentModal.value) { - case MODAL_CREATE_NEW: + case MODAL_CREATE_NEW: + await checkAccountIsUnique(); + if(!isAccountUnique.value) { + return; + } await acctMgmtStore.createNewAccount({ username: inputUserAccount.value, password: inputPwd.value, @@ -257,6 +265,7 @@ export default defineComponent({ // is_active: isSetActivedChecked.value, //TODO: 待確認需求規格 }); await toast.success(i18next.t("AcctMgmt.MsgAccountEdited")); + isEditable.value = false; default: break; } @@ -270,11 +279,15 @@ export default defineComponent({ }; const toggleIsAdmin = () => { - isSetAsAdminChecked.value = !isSetAsAdminChecked.value; + if(isEditable){ + isSetAsAdminChecked.value = !isSetAsAdminChecked.value; + } } const toggleIsActivated = () => { - isSetActivedChecked.value = !isSetActivedChecked.value; + if(isEditable){ + isSetActivedChecked.value = !isSetActivedChecked.value; + } } const onInputAccountFocus = () => { if(!isAccountUnique.value) { @@ -282,6 +295,10 @@ export default defineComponent({ isAccountUnique.value = true; } } + + onMounted(() => { + }); + return { isConfirmDisabled, username, @@ -297,6 +314,7 @@ export default defineComponent({ inputPwd, inputConfirmPwd, onConfirmBtnClick, + onInputDoubleClick, isSetAsAdminChecked, isSetActivedChecked, toggleIsAdmin, @@ -306,6 +324,7 @@ export default defineComponent({ modalTitle, isAccountUnique, onInputAccountFocus, + isEditable, }; }, data() {