|
@@ -0,0 +1,112 @@
|
|
|
+<route lang="json">
|
|
|
+{ "style": { "navigationBarTitleText": "修改密码", "navigationBarBackgroundColor": "#fff" } }
|
|
|
+</route>
|
|
|
+<script setup lang="ts">
|
|
|
+import { DataFormSchema } from '@/components/data-form'
|
|
|
+import { updatePassword, UpdatePasswordData } from '@/core/libs/requests'
|
|
|
+import DataForm from '@/components/data-form.vue'
|
|
|
+import BottomAppBar from '@/components/bottom-app-bar.vue'
|
|
|
+import { ComponentExposed } from 'vue-component-type-helpers'
|
|
|
+import { useUserStore } from '@/store'
|
|
|
+import { storeToRefs } from 'pinia'
|
|
|
+import { requestToast } from '@designer-hub/app/src/core/utils/common'
|
|
|
+
|
|
|
+const userStore = useUserStore()
|
|
|
+const { userInfo } = storeToRefs(userStore)
|
|
|
+const dataFormRef = ref<ComponentExposed<typeof DataForm>>()
|
|
|
+const formData = ref({
|
|
|
+ oldPassword: '',
|
|
|
+ newPassword: '',
|
|
|
+ confirmPassword: '',
|
|
|
+})
|
|
|
+const schema = ref<DataFormSchema>({
|
|
|
+ oldPassword: {
|
|
|
+ type: 'TextField',
|
|
|
+ label: '旧密码',
|
|
|
+ labelWidth: 90,
|
|
|
+ required: true,
|
|
|
+ props: {
|
|
|
+ placeholder: '请输入旧密码',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ newPassword: {
|
|
|
+ type: 'TextField',
|
|
|
+ label: '新密码',
|
|
|
+ labelWidth: 90,
|
|
|
+ required: true,
|
|
|
+ props: {
|
|
|
+ placeholder: '请输入新密码',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ confirmPassword: {
|
|
|
+ type: 'TextField',
|
|
|
+ label: '再次输入',
|
|
|
+ labelWidth: 90,
|
|
|
+ required: true,
|
|
|
+ props: {
|
|
|
+ placeholder: '请再次输入新密码',
|
|
|
+ },
|
|
|
+ },
|
|
|
+})
|
|
|
+const confirmPasswordValidator = (val: any) => {
|
|
|
+ if (!val) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if (formData.value?.newPassword?.trim() === '') {
|
|
|
+ return Promise.reject('请输入新密码')
|
|
|
+ }
|
|
|
+ if (formData.value?.newPassword !== formData.value?.confirmPassword) {
|
|
|
+ return Promise.reject('输入两次新密码不一致')
|
|
|
+ }
|
|
|
+}
|
|
|
+const rules = ref({
|
|
|
+ oldPassword: [{ required: true, message: '请输入旧密码' }],
|
|
|
+ newPassword: [{ required: true, message: '请输入新密码' }],
|
|
|
+ confirmPassword: [
|
|
|
+ { required: true, message: '请再次输入新密码', validator: confirmPasswordValidator },
|
|
|
+ ],
|
|
|
+})
|
|
|
+const submitDisabled = computed(() => ({}))
|
|
|
+const handleSubmit = async () => {
|
|
|
+ // const data = await dataFormRef.value?.validate()
|
|
|
+ if (!(await dataFormRef.value!.validate())) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ console.log(1111)
|
|
|
+ if (!userInfo.value.userId) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ const { code } = await requestToast(
|
|
|
+ () =>
|
|
|
+ updatePassword({
|
|
|
+ ...formData.value,
|
|
|
+ appLoginType: 3,
|
|
|
+ id: userInfo.value.userId ?? 0,
|
|
|
+ }),
|
|
|
+ { success: true, successTitle: '修改成功' },
|
|
|
+ )
|
|
|
+ if (code === 0) {
|
|
|
+ userStore.clearUserInfo()
|
|
|
+ uni.reLaunch({ url: '/pages/login/index' })
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="flex-grow bg-white px-2 pt-8">
|
|
|
+ <DataForm
|
|
|
+ ref="dataFormRef"
|
|
|
+ :schema="schema"
|
|
|
+ :rules="rules"
|
|
|
+ v-model="formData"
|
|
|
+ direction="horizontal"
|
|
|
+ ></DataForm>
|
|
|
+ <BottomAppBar fixed placeholder>
|
|
|
+ <wd-button :disabled="dataFormRef?.submitDisabled" :round="false" block @click="handleSubmit">
|
|
|
+ 确认
|
|
|
+ </wd-button>
|
|
|
+ </BottomAppBar>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<style scoped lang="scss"></style>
|