mirror of
https://github.com/certd/certd.git
synced 2025-11-25 09:10:11 +08:00
perf: 注册页面增加手机注册tab页签
This commit is contained in:
30
.vscode/launch.json
vendored
30
.vscode/launch.json
vendored
@@ -24,6 +24,36 @@
|
|||||||
"runtimeArgs": ["dev"],
|
"runtimeArgs": ["dev"],
|
||||||
"console": "integratedTerminal",
|
"console": "integratedTerminal",
|
||||||
"internalConsoleOptions": "neverOpen"
|
"internalConsoleOptions": "neverOpen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "server-mysql",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||||
|
"runtimeExecutable": "pnpm",
|
||||||
|
"runtimeArgs": ["dev-mysql"],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "server-pg",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||||
|
"runtimeExecutable": "pnpm",
|
||||||
|
"runtimeArgs": ["dev-pg"],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "server-common",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||||
|
"runtimeExecutable": "pnpm",
|
||||||
|
"runtimeArgs": ["dev-commpro"],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "server-local-plus",
|
"name": "server-local-plus",
|
||||||
|
|||||||
@@ -28,10 +28,10 @@
|
|||||||
未设置触发源,不会自动执行
|
未设置触发源,不会自动执行
|
||||||
</span>
|
</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
<a-tag v-if="pipelineEntity.validTime > 0 && settingStore.sysPublic.pipelineValidTimeEnabled" v-plus="true" :color="pipelineEntity.validTime > Date.now() ? 'green' : 'red'">
|
<a-tag v-if="pipelineEntity.validTime > 0 && settingStore.sysPublic.pipelineValidTimeEnabled && settingStore.isPlus" :color="pipelineEntity.validTime > Date.now() ? 'green' : 'red'">
|
||||||
<span class="flex">
|
<span class="flex">
|
||||||
<fs-icon icon="ion:time-outline"></fs-icon>
|
<fs-icon icon="ion:time-outline"></fs-icon>
|
||||||
<span v-if="pipelineEntity.validTime > Date.now()"> 有效期:<FsTimeHumanize :model-value="pipelineEntity.validTime" :options="{ units: ['d'] }"></FsTimeHumanize> </span>
|
<span v-if="pipelineEntity.validTime > Date.now()"> 有效期:<FsTimeHumanize :model-value="pipelineEntity.validTime" :options="{ units: ['d'] }" format="YYYY-MM-DD"></FsTimeHumanize> </span>
|
||||||
<span v-else> 已过期 </span>
|
<span v-else> 已过期 </span>
|
||||||
</span>
|
</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
|
|||||||
@@ -95,11 +95,14 @@ import SmsCode from "/@/views/framework/login/sms-code.vue";
|
|||||||
import { useI18n } from "/@/locales";
|
import { useI18n } from "/@/locales";
|
||||||
import { LanguageToggle } from "/@/vben/layouts";
|
import { LanguageToggle } from "/@/vben/layouts";
|
||||||
import CaptchaInput from "/@/components/captcha/captcha-input.vue";
|
import CaptchaInput from "/@/components/captcha/captcha-input.vue";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "LoginPage",
|
name: "LoginPage",
|
||||||
components: { LanguageToggle, SmsCode, CaptchaInput },
|
components: { LanguageToggle, SmsCode, CaptchaInput },
|
||||||
setup() {
|
setup() {
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const route = useRoute();
|
||||||
|
const urlLoginType = route.query.loginType as string | undefined;
|
||||||
const verifyCodeInputRef = ref();
|
const verifyCodeInputRef = ref();
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
@@ -110,7 +113,7 @@ export default defineComponent({
|
|||||||
phoneCode: "86",
|
phoneCode: "86",
|
||||||
mobile: "",
|
mobile: "",
|
||||||
password: "",
|
password: "",
|
||||||
loginType: "password", //password
|
loginType: urlLoginType || "password", //password
|
||||||
smsCode: "",
|
smsCode: "",
|
||||||
captcha: null,
|
captcha: null,
|
||||||
smsCaptcha: null,
|
smsCaptcha: null,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<a-form ref="formRef" class="user-layout-register" name="custom-validation" :model="formState" :rules="rules" v-bind="layout" :label-col="{ span: 6 }" @finish="handleFinish" @finish-failed="handleFinishFailed">
|
<a-form ref="formRef" class="user-layout-register" name="custom-validation" :model="formState" :rules="rules" v-bind="layout" :label-col="{ span: 6 }" @finish="handleFinish" @finish-failed="handleFinishFailed">
|
||||||
<a-tabs v-model:active-key="registerType">
|
<a-tabs v-model:active-key="registerType" @change="handleTabChange">
|
||||||
<a-tab-pane key="username" tab="用户名注册" :disabled="!settingsStore.sysPublic.usernameRegisterEnabled">
|
<a-tab-pane key="username" tab="用户名注册" :disabled="!settingsStore.sysPublic.usernameRegisterEnabled">
|
||||||
<template v-if="registerType === 'username'">
|
<template v-if="registerType === 'username'">
|
||||||
<a-form-item required has-feedback name="username" label="用户名" :rules="rules.username">
|
<a-form-item required has-feedback name="username" label="用户名" :rules="rules.username">
|
||||||
@@ -70,6 +70,8 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</template>
|
</template>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
|
||||||
|
<a-tab-pane v-if="settingsStore.sysPublic.smsLoginEnabled" key="mobile" tab="手机号注册"> </a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
|
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
@@ -90,6 +92,7 @@ import EmailCode from "./email-code.vue";
|
|||||||
import { useSettingStore } from "/@/store/settings";
|
import { useSettingStore } from "/@/store/settings";
|
||||||
import { notification } from "ant-design-vue";
|
import { notification } from "ant-design-vue";
|
||||||
import CaptchaInput from "/@/components/captcha/captcha-input.vue";
|
import CaptchaInput from "/@/components/captcha/captcha-input.vue";
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "RegisterPage",
|
name: "RegisterPage",
|
||||||
components: { CaptchaInput, EmailCode },
|
components: { CaptchaInput, EmailCode },
|
||||||
@@ -171,6 +174,18 @@ export default defineComponent({
|
|||||||
message: "请输入邮件验证码",
|
message: "请输入邮件验证码",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
captcha: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请通过验证码",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
imgCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入验证码",
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
const layout = {
|
const layout = {
|
||||||
labelCol: {
|
labelCol: {
|
||||||
@@ -206,6 +221,13 @@ export default defineComponent({
|
|||||||
formRef.value.resetFields();
|
formRef.value.resetFields();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const handleTabChange = (key: string) => {
|
||||||
|
if (key === "mobile") {
|
||||||
|
router.push({ path: "/login", query: { loginType: "sms" } });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
formState,
|
formState,
|
||||||
formRef,
|
formRef,
|
||||||
@@ -216,6 +238,7 @@ export default defineComponent({
|
|||||||
resetForm,
|
resetForm,
|
||||||
registerType,
|
registerType,
|
||||||
settingsStore,
|
settingsStore,
|
||||||
|
handleTabChange,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
ALTER TABLE cd_site_info ADD COLUMN `remark` varchar(512);
|
||||||
|
|
||||||
|
CREATE TABLE `cd_group`
|
||||||
|
(
|
||||||
|
`id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL,
|
||||||
|
`user_id` bigint NOT NULL,
|
||||||
|
`name` varchar(100) NOT NULL,
|
||||||
|
`icon` varchar(100),
|
||||||
|
`favorite` boolean NOT NULL DEFAULT false,
|
||||||
|
`type` varchar(512),
|
||||||
|
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE cd_site_info ADD COLUMN `group_id` bigint;
|
||||||
|
|
||||||
|
ALTER TABLE pi_pipeline ADD COLUMN `valid_time` bigint;
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
ALTER TABLE cd_site_info ADD COLUMN "remark" varchar(512);
|
||||||
|
|
||||||
|
CREATE TABLE "cd_group"
|
||||||
|
(
|
||||||
|
"id" bigint PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY NOT NULL,
|
||||||
|
"user_id" bigint NOT NULL,
|
||||||
|
"name" varchar(100) NOT NULL,
|
||||||
|
"icon" varchar(100),
|
||||||
|
"favorite" boolean NOT NULL DEFAULT (false),
|
||||||
|
"type" varchar(512),
|
||||||
|
"create_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP),
|
||||||
|
"update_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE cd_site_info ADD COLUMN "group_id" bigint;
|
||||||
|
|
||||||
|
ALTER TABLE pi_pipeline ADD COLUMN "valid_time" bigint;
|
||||||
@@ -12,9 +12,6 @@ CREATE TABLE "cd_group"
|
|||||||
"update_time" datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP)
|
"update_time" datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP)
|
||||||
);
|
);
|
||||||
|
|
||||||
--分组字段
|
|
||||||
ALTER TABLE cd_site_info ADD COLUMN "group_id" integer;
|
ALTER TABLE cd_site_info ADD COLUMN "group_id" integer;
|
||||||
|
|
||||||
|
|
||||||
--流水线有效期
|
|
||||||
ALTER TABLE pi_pipeline ADD COLUMN "valid_time" integer;
|
ALTER TABLE pi_pipeline ADD COLUMN "valid_time" integer;
|
||||||
|
|||||||
Reference in New Issue
Block a user