【修复】主机提供商显示值变化,关联的内容发生提示

This commit is contained in:
chudong
2025-05-23 18:34:31 +08:00
parent c1243a557c
commit 38acf30f88
69 changed files with 191 additions and 115 deletions

View File

@@ -123,21 +123,21 @@ export default defineComponent({
// 使用自定义属性来传递事件处理程序
'onUpdate:value': (val: { value: number; type: string }) => {
param.value.provider_id = val.value
param.value.siteName = []
},
}
// 使用类型断言创建VNode
return (<DnsProviderSelect {...dnsProviderProps} />) as VNode
}),
)
} else {
config.push(formConfig.select($t('t_0_1746754500246'), 'provider', localProvider.value, { disabled: true }))
config.push(formConfig.select($t('t_0_1746754500246'), 'provider', localProvider.value))
}
// 证书来源选择
config.push(
formConfig.select($t('t_1_1745748290291'), 'inputs.fromNodeId', certOptions.value, {
onUpdateValue: (val: string, option: { label: string; value: string }) => {
console.log('val', val)
param.value.inputs.fromNodeId = val
param.value.inputs.name = option?.label
},
@@ -161,8 +161,6 @@ export default defineComponent({
clearable: true,
loading: siteOptionsLoading.value,
onSearch: handleSiteSearch,
// renderLabel: (option: any) => option.label,
// renderTag: ({ option }: { option: any }) => option.label,
}),
)
break
@@ -275,7 +273,6 @@ export default defineComponent({
() => {
if (param.value.provider === 'btpanel-site') {
handleSiteSearch('')
param.value.siteName = []
}
},
)
@@ -309,10 +306,6 @@ export default defineComponent({
// 初始化
onMounted(() => {
// 隐藏底部按钮
modalOptions.value.footer = false
// 设置弹窗宽度和高度
modalOptions.value.area = [850, 600]
// 如果已经选择了部署类型,则跳转到下一步
if (param.value.provider) {
if (props.node.inputs) param.value.inputs = props.node.inputs[0]

View File

@@ -276,19 +276,84 @@
/* 响应式布局适配 */
@media (max-width: 768px) {
.loginBox {
@apply flex-col p-7;
@apply flex-col p-4 w-[95vw] min-h-[auto];
}
.leftSection {
@apply p-7 text-center;
@apply p-4 text-center mb-4;
}
.leftTitle {
@apply text-[2.4rem] mb-4;
}
.leftImageWrapper {
@apply hidden;
}
.leftDesc {
@apply mx-auto;
@apply mx-auto text-[1.4rem];
}
.rightSection {
@apply w-full mx-auto;
@apply w-full mx-auto mr-0 p-8 min-h-[auto];
}
.title {
@apply text-[2.8rem] mb-8;
}
.formContainer {
@apply gap-4;
}
}
/* 更小屏幕适配 */
@media (max-width: 480px) {
.container {
@apply p-4;
}
.loginBox {
@apply w-full p-2 min-h-[auto];
}
.leftSection {
@apply p-2 mb-2;
}
.leftTitle {
@apply text-[2rem] mb-2 flex-col;
}
.logo {
@apply w-[4rem] h-[4rem] mr-0 mb-2;
}
.rightSection {
@apply p-6;
}
.title {
@apply text-[2.4rem] mb-6;
}
.formInputs :global(.n-form-item) {
@apply mb-4;
}
.rememberSection {
@apply flex-col items-start gap-2 mb-4;
}
/* 验证码输入框移动端优化 */
.formInputs :global(.n-input) {
@apply text-[1.6rem];
}
/* 验证码图片容器移动端优化 */
.codeImageContainer {
@apply w-[8rem] h-[3.5rem] mr-[-1rem] text-[1.4rem];
}
}
@@ -310,3 +375,12 @@
.icon {
color: var(--n-primary-color-suppl);
}
/* 验证码图片容器样式 */
.codeImageContainer {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.codeImageContainer:hover {
@apply bg-slate-500;
}

View File

@@ -1,32 +1,24 @@
// External Libraries
import { NInput, NButton, NCheckbox, NForm, NFormItem, NIcon, NImage } from 'naive-ui';
import { UserOutlined, LockOutlined, CodeOutlined } from '@vicons/antd';
import { NInput, NButton, NCheckbox, NForm, NFormItem, NIcon, NImage } from 'naive-ui'
import { UserOutlined, LockOutlined, CodeOutlined } from '@vicons/antd'
// Absolute Internal Imports
import { useTheme, useThemeCssVar } from '@baota/naive-ui/theme';
import { $t } from '@locales/index';
import { useTheme, useThemeCssVar } from '@baota/naive-ui/theme'
import { $t } from '@locales/index'
// Relative Internal Imports
import { useController } from './useController';
import { useController } from './useController'
// Side-effect Imports
import styles from './index.module.css';
// import LocalesTips from '@baota/naive-ui/components/localesTips'; // 多语言切换提示组件 (注释掉)
// import ThemeTips from '@baota/naive-ui/components/themeTips'; // 主题切换提示组件 (注释掉)
import styles from './index.module.css'
export default defineComponent({
name: 'LoginView', // 组件命名规范
name: 'LoginView',
setup() {
// 获取登录控制器
const { loading, error, rememberMe, handleSubmit, handleKeyup, loginData, handleGetCode, codeImg, mustCode } =
useController();
// 获取主题暗色模式
const { isDark } = useTheme();
// 获取主题变量
const cssVar = useThemeCssVar(['textColor2', 'actionColor', 'errorColor', 'primaryColor', 'primaryColorSuppl']);
useController()
const { isDark } = useTheme()
const cssVar = useThemeCssVar(['textColor2', 'actionColor', 'errorColor', 'primaryColor', 'primaryColorSuppl'])
return () => (
<div style={cssVar.value}>
@@ -34,10 +26,6 @@ export default defineComponent({
class={styles.container}
style={`background-image:${isDark.value ? 'url(/static/images/login-bg-dark.svg)' : 'url(/static/images/login-bg.svg)'};`}
>
{/* 国际化和主题切换组件暂时注释,如果需要请取消注释并确保其功能 */}
{/* <LocalesTips /> */}
{/* <ThemeTips /> */}
{/* </div> */}
<div class={styles.loginBox}>
<div class={styles.leftSection}>
<h2 class={styles.leftTitle}>
@@ -54,7 +42,11 @@ export default defineComponent({
<NForm onSubmit={handleSubmit} class={styles.formWrapper}>
<div class={styles.formContent}>
<div class={styles.formInputs}>
<NFormItem show-label={false} path="username" rule={{ required: true, message: $t('t_3_1744164839524'), trigger: ['input', 'blur'] }}>
<NFormItem
show-label={false}
path="username"
rule={{ required: true, message: $t('t_3_1744164839524'), trigger: ['input', 'blur'] }}
>
<NInput
v-model:value={loginData.value.username}
onKeyup={handleKeyup}
@@ -68,7 +60,11 @@ export default defineComponent({
}}
</NInput>
</NFormItem>
<NFormItem show-label={false} path="password" rule={{ required: true, message: $t('t_4_1744164840458'), trigger: ['input', 'blur'] }}>
<NFormItem
show-label={false}
path="password"
rule={{ required: true, message: $t('t_4_1744164840458'), trigger: ['input', 'blur'] }}
>
<NInput
onKeyup={handleKeyup}
disabled={loading.value}
@@ -85,7 +81,11 @@ export default defineComponent({
</NInput>
</NFormItem>
{mustCode.value ? (
<NFormItem show-label={false} path="code" rule={{ required: true, message: $t('t_25_1745289355721'), trigger: ['input', 'blur'] }}>
<NFormItem
show-label={false}
path="code"
rule={{ required: true, message: $t('t_25_1745289355721'), trigger: ['input', 'blur'] }}
>
<NInput
onKeyup={handleKeyup}
disabled={loading.value}
@@ -100,10 +100,14 @@ export default defineComponent({
suffix: () => (
<span
onClick={handleGetCode}
title={$t('t_0_1745936396853')} // 点击刷新验证码
class="w-[10rem] h-[4rem] mr-[-1.5rem] flex items-center justify-center relative z-[999] cursor-pointer bg-slate-400 rounded-r-[6px]" // 确保图片居中和样式
title={$t('t_0_1745936396853')}
class={`w-[10rem] h-[4rem] mr-[-1.5rem] flex items-center justify-center relative z-[999] cursor-pointer bg-slate-400 rounded-r-[6px] ${styles.codeImageContainer}`}
>
<NImage src={codeImg.value} preview-disabled class="max-w-full max-h-full object-contain" /> {/* 确保图片在容器内显示 */}
<NImage
src={codeImg.value}
preview-disabled
class="max-w-full max-h-full object-contain"
/>
</span>
),
}}
@@ -114,20 +118,25 @@ export default defineComponent({
<div class={styles.formActions}>
<div class={styles.rememberSection}>
<NCheckbox v-model:checked={rememberMe.value} > {/* 使用 v-model:checked */}
{$t('t_5_1744164840468')}
</NCheckbox>
<NCheckbox v-model:checked={rememberMe.value}>{$t('t_5_1744164840468')}</NCheckbox>
<a
class={styles.forgotPassword}
href="https://www.bt.cn/bbs/thread-144776-1-1.html" // 考虑将此URL配置化
href="https://www.bt.cn/bbs/thread-144776-1-1.html"
target="_blank"
rel="noopener noreferrer" // 安全性考虑
rel="noopener noreferrer"
>
{$t('t_6_1744164838900')}
</a>
</div>
{error.value && <div class={styles.error}>{error.value}</div>}
<NButton type="primary" size="large" block loading={loading.value} attrType="submit" onClick={handleSubmit}> {/* 添加 attrType="submit" */}
<NButton
type="primary"
size="large"
block
loading={loading.value}
attrType="submit"
onClick={handleSubmit}
>
{loading.value ? $t('t_7_1744164838625') : $t('t_8_1744164839833')}
</NButton>
</div>
@@ -138,6 +147,6 @@ export default defineComponent({
</div>
</div>
</div>
);
)
},
})