diff --git a/src/components/CustomerList.vue b/src/components/CustomerList.vue index 96ea7c8..38a43e6 100644 --- a/src/components/CustomerList.vue +++ b/src/components/CustomerList.vue @@ -32,7 +32,7 @@ -
+
@@ -115,22 +115,6 @@ function handleRemove(customer: Customer): void { width: 3.5rem; height: 3.5rem; } - - .empty-block { - color: #52607a; - margin: 1rem; - padding: 1rem; - text-align: center; - background: #f8fbff; - border-radius: 1rem; - } -} - -:deep(.avatar .t-image__img) { - width: 100%; - height: 100%; - object-fit: cover; - border-radius: inherit; } :global(html.theme-dark) { diff --git a/src/main.ts b/src/main.ts index 8c93367..ebd7eb7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -66,6 +66,8 @@ async function bootstrap(): Promise { app.use(router); await router.isReady(); + await import("tdesign-mobile-vue"); + await import("../../timi-web/src/index"); await import("timi-tdesign-mobile"); app.mount("#root"); } diff --git a/src/pages/user/InviteRegister.vue b/src/pages/user/InviteRegister.vue index ee7397a..48bc97e 100644 --- a/src/pages/user/InviteRegister.vue +++ b/src/pages/user/InviteRegister.vue @@ -49,7 +49,8 @@ />
- 注册并登录 + + 注册并登录 @@ -61,6 +62,7 @@ import { CommonAPI, NotifyAPI, useUserStore, type LoginResponse } from "timi-web import ManagedUserAPI from "@/api/ManagedUserAPI"; import { useCurrentStoreStore } from "@/store/currentStoreStore"; import Logo from "@/pages/user/component/Logo.vue"; +import UserAgreement from "@/pages/user/component/UserAgreement.vue"; type CaptchaExpose = { captchaId: string; update: () => Promise }; @@ -75,6 +77,7 @@ const isValid = ref(false); const expireAt = ref(0); const invalidMessage = ref("邀请码无效或已过期,请联系邀请人重新生成。"); const isSubmitting = ref(false); +const hasAgreed = ref(false); const captchaRef = ref(null); const formModel = reactive({ phoneNo: "", @@ -193,7 +196,11 @@ async function sendSms(): Promise { } async function register(): Promise { - if (isSubmitting.value || isExpired.value || !validateForm()) { + if (isSubmitting.value || !hasAgreed.value || isExpired.value || !validateForm()) { + if (!hasAgreed.value) { + Message.warning("请先阅读并同意用户协议"); + return; + } if (isExpired.value) { Message.warning("邀请码已失效,请联系邀请人重新生成"); } diff --git a/src/pages/user/LoginIndex.vue b/src/pages/user/LoginIndex.vue index 493b2b0..5ba1013 100644 --- a/src/pages/user/LoginIndex.vue +++ b/src/pages/user/LoginIndex.vue @@ -11,8 +11,9 @@ :options="loginTypeOptions" v-entrance-transition="140" /> - - + + + @@ -21,6 +22,7 @@ import PasswordLogin from "@/pages/user/component/PasswordLogin.vue"; import SmsLogin from "@/pages/user/component/SmsLogin.vue"; import Logo from "@/pages/user/component/Logo.vue"; +import UserAgreement from "@/pages/user/component/UserAgreement.vue"; defineOptions({ name: "LoginIndex" @@ -29,6 +31,7 @@ defineOptions({ type LoginType = "password" | "sms"; const loginType = ref("password"); +const hasAgreed = ref(false); const loginTypeOptions = [ { value: "password" as LoginType, label: "密码登录" }, { value: "sms" as LoginType, label: "短信登录" } diff --git a/src/pages/user/UserProfile.vue b/src/pages/user/UserProfile.vue index 833546a..bb1d99e 100644 --- a/src/pages/user/UserProfile.vue +++ b/src/pages/user/UserProfile.vue @@ -39,7 +39,6 @@ 退出登录 diff --git a/src/pages/user/component/PasswordLogin.vue b/src/pages/user/component/PasswordLogin.vue index 2468ebf..7326a81 100644 --- a/src/pages/user/component/PasswordLogin.vue +++ b/src/pages/user/component/PasswordLogin.vue @@ -13,7 +13,7 @@
- 登录 + 登录
@@ -39,6 +39,12 @@ defineOptions({ name: "PasswordLogin" }); +const props = withDefaults(defineProps<{ + agreementAccepted?: boolean; +}>(), { + agreementAccepted: false +}); + const route = useRoute(); const router = useRouter(); const userStore = useUserStore(); @@ -56,6 +62,10 @@ function getRedirectPath(): string { } function validateForm(): boolean { + if (!props.agreementAccepted) { + Message.warning("请先阅读并同意用户协议"); + return false; + } if (!formModel.user || !formModel.password || !formModel.captcha || !captchaRef.value?.captchaId) { Message.warning("请输入账号、密码和验证码"); return false; diff --git a/src/pages/user/component/SmsLogin.vue b/src/pages/user/component/SmsLogin.vue index 7eb89eb..c1a35d4 100644 --- a/src/pages/user/component/SmsLogin.vue +++ b/src/pages/user/component/SmsLogin.vue @@ -24,7 +24,7 @@ />
- 登录 + 登录
@@ -51,6 +51,12 @@ defineOptions({ name: "SmsLogin" }); +const props = withDefaults(defineProps<{ + agreementAccepted?: boolean; +}>(), { + agreementAccepted: false +}); + const route = useRoute(); const router = useRouter(); const userStore = useUserStore(); @@ -136,6 +142,10 @@ async function sendSms(): Promise { } function validateForm(): boolean { + if (!props.agreementAccepted) { + Message.warning("请先阅读并同意用户协议"); + return false; + } if (!/^1\d{10}$/.test(formModel.mobilePhone)) { Message.warning("请输入正确的 11 位手机号"); return false; diff --git a/src/pages/user/component/UserAgreement.vue b/src/pages/user/component/UserAgreement.vue new file mode 100644 index 0000000..6bc6dd1 --- /dev/null +++ b/src/pages/user/component/UserAgreement.vue @@ -0,0 +1,311 @@ + + + + +