更新模型配置页面,新增 API 密钥字段为必填项,并为普通用户提供 API 密钥验证逻辑,确保服务商模型的安全性和用户体验。
This commit is contained in:
@@ -17,7 +17,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||||
<el-form-item label="模型类型" prop="modelType">
|
<el-form-item label="模型类型" prop="modelType" required>
|
||||||
<el-select v-model="state.ruleForm.modelType" placeholder="请选择模型类型" clearable style="width: 100%">
|
<el-select v-model="state.ruleForm.modelType" placeholder="请选择模型类型" clearable style="width: 100%">
|
||||||
<el-option v-for="t in modelTypeOptions" :key="String(t.id)" :label="t.label" :value="typeOptionValue(t.id)"></el-option>
|
<el-option v-for="t in modelTypeOptions" :key="String(t.id)" :label="t.label" :value="typeOptionValue(t.id)"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="!props.isSuperAdmin && state.ruleForm.isPrivate === 1" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
<el-col v-if="!props.isSuperAdmin && state.ruleForm.isPrivate === 1" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||||
<el-form-item label="API 密钥" prop="apiKey">
|
<el-form-item label="API 密钥" prop="apiKey" required>
|
||||||
<el-input v-model="state.ruleForm.apiKey" type="password" show-password placeholder="请输入 API 密钥字符串" clearable></el-input>
|
<el-input v-model="state.ruleForm.apiKey" type="password" show-password placeholder="请输入 API 密钥字符串" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -313,6 +313,28 @@ const state = reactive({
|
|||||||
],
|
],
|
||||||
baseUrl: [{ required: true, message: '请输入模型服务地址', trigger: 'blur' }],
|
baseUrl: [{ required: true, message: '请输入模型服务地址', trigger: 'blur' }],
|
||||||
httpMethod: [{ required: true, message: '请选择请求方式', trigger: 'change' }],
|
httpMethod: [{ required: true, message: '请选择请求方式', trigger: 'change' }],
|
||||||
|
apiKey: [
|
||||||
|
{
|
||||||
|
validator: (_rule: unknown, value: unknown, callback: (e?: Error) => void) => {
|
||||||
|
// 管理员不需要验证 apiKey
|
||||||
|
if (props.isSuperAdmin) {
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 普通用户:如果是服务商模型(isPrivate = 1),apiKey 必填
|
||||||
|
if (state.ruleForm.isPrivate === 1) {
|
||||||
|
if (!value || String(value).trim() === '') {
|
||||||
|
callback(new Error('服务商模型必须输入 API 密钥'));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
],
|
||||||
maxConcurrency: [{ required: true, message: '请输入最大并发数', trigger: 'blur' }],
|
maxConcurrency: [{ required: true, message: '请输入最大并发数', trigger: 'blur' }],
|
||||||
queueLimit: [{ required: true, message: '请输入排队队列上限', trigger: 'blur' }],
|
queueLimit: [{ required: true, message: '请输入排队队列上限', trigger: 'blur' }],
|
||||||
timeoutSeconds: [{ required: true, message: '请输入请求超时时间', trigger: 'blur' }],
|
timeoutSeconds: [{ required: true, message: '请输入请求超时时间', trigger: 'blur' }],
|
||||||
@@ -751,3 +773,7 @@ defineExpose({
|
|||||||
color: #606266;
|
color: #606266;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user