12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <template>
- <div class="grid full init-name-view">
- <div class="init-name-modal">
- <div class="p-l-large modal-header">首次登录,请填写姓名</div>
- <div class="login-modal-content">
- <base-form ref="formRef" :model="model" :items="items" size="large"></base-form>
- <div class="m-t-super-large">
- <confirm-button ok-text="确定" cancel-text="退出" :loading="loading" @confirm="onSubmit" @cancel="logout">
- </confirm-button>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script setup lang="ts" name="InitUserName">
- import { reactive } from 'vue'
- import { useRouter } from 'vue-router'
- import BaseForm from '@/components/element/BaseForm.vue'
- import ConfirmButton from '@/components/common/ConfirmButton.vue'
- import useFetch from '@/hooks/useFetch'
- import useForm from '@/hooks/useForm'
- import useMainStore from '@/store/main'
- import { logout } from '@/utils/shared'
- import type { EpFormItem } from 'global-type'
- const { replace } = useRouter()
- const mainStore = useMainStore()
- const model = reactive<{ name: string }>({ name: '' })
- const { formRef, elFormRef } = useForm()
- const items: EpFormItem[] = [
- {
- prop: 'name',
- slotType: 'input',
- slot: {
- placeholder: '请输入你的姓名',
- },
- },
- ]
- const { loading, fetch } = useFetch('updateUserName')
- async function onSubmit() {
- if (!elFormRef) {
- return
- }
- try {
- await elFormRef.value?.validate()
- await fetch({ name: model.name })
- mainStore.getMyUserInfo()
- replace({ name: mainStore.loginInfo?.role === 'MARKER' ? 'MarkingMark' : 'AnalysisMonitoring' })
- } catch (error) {
- console.error(error)
- }
- }
- </script>
- <style scoped lang="scss">
- .init-name-view {
- place-items: center;
- .init-name-modal {
- width: 640px;
- background: $LoginModalBg;
- border-radius: $LoginModalRadius;
- overflow: hidden;
- .modal-header {
- height: $LoginModalHeaderHeight;
- line-height: $LoginModalHeaderHeight;
- background: $LoginModalHeaderBg;
- font-size: $LoginModalHeaderFontSize;
- font-weight: normal;
- color: $LoginModalHeaderFontColor;
- }
- .login-modal-content {
- padding: 52px 80px;
- }
- :deep(button.el-button) {
- width: 120px;
- height: 48px;
- }
- }
- }
- </style>
|