|
@@ -38,15 +38,15 @@
|
|
prepend-inner-icon="mdi-lock-outline"
|
|
prepend-inner-icon="mdi-lock-outline"
|
|
:append-inner-icon="passwordType ? 'mdi-eye-outline' : 'mdi-eye-off-outline'"
|
|
:append-inner-icon="passwordType ? 'mdi-eye-outline' : 'mdi-eye-off-outline'"
|
|
:type="passwordType ? 'text' : 'password'"
|
|
:type="passwordType ? 'text' : 'password'"
|
|
- :rules="[v=> !!v || $t('login.enterPassword')]"
|
|
|
|
@click:append-inner="passwordType = !passwordType"
|
|
@click:append-inner="passwordType = !passwordType"
|
|
|
|
+ :rules="[v=> !!v || $t('login.enterPassword'), validPassword]"
|
|
@keyup.enter="handleEnter"
|
|
@keyup.enter="handleEnter"
|
|
></v-text-field>
|
|
></v-text-field>
|
|
</v-form>
|
|
</v-form>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup name="passwordPage">
|
|
<script setup name="passwordPage">
|
|
-import { ref, reactive } from 'vue'
|
|
|
|
|
|
+import { ref, reactive, computed } from 'vue'
|
|
defineOptions({ name: 'password-form' })
|
|
defineOptions({ name: 'password-form' })
|
|
import { checkEmail } from '@/utils/validate'
|
|
import { checkEmail } from '@/utils/validate'
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
@@ -93,6 +93,12 @@ if (props.validEmail) {
|
|
// currentArea.value = e.value
|
|
// currentArea.value = e.value
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
+// 密码效验
|
|
|
|
+const regex = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$/
|
|
|
|
+const validPassword = computed(() => {
|
|
|
|
+ return regex.test(loginData.password) || '请输入8-16位数由数字、大小写字母组成的密码'
|
|
|
|
+})
|
|
|
|
+
|
|
const loginUserPhone = localStorage.getItem('loginUserPhone') || ''
|
|
const loginUserPhone = localStorage.getItem('loginUserPhone') || ''
|
|
const loginData = reactive({
|
|
const loginData = reactive({
|
|
phone: loginUserPhone, // 13229740092
|
|
phone: loginUserPhone, // 13229740092
|