mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
feat: i18n
This commit is contained in:
parent
8e1a0e678c
commit
5cddada3be
|
|
@ -1,38 +1,39 @@
|
|||
import { t } from '@/locales'
|
||||
const input_type_list = [
|
||||
{
|
||||
label: '文本框',
|
||||
label: t('components.dynamicsForm.input_type_list.TextInput'),
|
||||
value: 'TextInput'
|
||||
},
|
||||
{
|
||||
label: '滑块',
|
||||
label: t('components.dynamicsForm.input_type_list.Slider'),
|
||||
value: 'Slider'
|
||||
},
|
||||
{
|
||||
label: '开关',
|
||||
label: t('components.dynamicsForm.input_type_list.SwitchInput'),
|
||||
value: 'SwitchInput'
|
||||
},
|
||||
{
|
||||
label: '单选框',
|
||||
label: t('components.dynamicsForm.input_type_list.SingleSelect'),
|
||||
value: 'SingleSelect'
|
||||
},
|
||||
{
|
||||
label: '多选框',
|
||||
label: t('components.dynamicsForm.input_type_list.MultiSelect'),
|
||||
value: 'MultiSelect'
|
||||
},
|
||||
{
|
||||
label: '日期',
|
||||
label: t('components.dynamicsForm.input_type_list.DatePicker'),
|
||||
value: 'DatePicker'
|
||||
},
|
||||
{
|
||||
label: 'JSON文本框',
|
||||
label: t('components.dynamicsForm.input_type_list.JsonInput'),
|
||||
value: 'JsonInput'
|
||||
},
|
||||
{
|
||||
label: '选项卡',
|
||||
label: t('components.dynamicsForm.input_type_list.RadioCard'),
|
||||
value: 'RadioCard'
|
||||
},
|
||||
{
|
||||
label: '单行选项卡',
|
||||
label: t('components.dynamicsForm.input_type_list.RadioRow'),
|
||||
value: 'RadioRow'
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -7,35 +7,35 @@
|
|||
:model="form_data"
|
||||
v-bind="$attrs"
|
||||
>
|
||||
<el-form-item label="参数" :required="true" prop="field" :rules="rules.field">
|
||||
<el-form-item :label="$t('components.dynamicsForm.paramForm.field.label')" :required="true" prop="field" :rules="rules.field">
|
||||
<el-input
|
||||
v-model="form_data.field"
|
||||
:maxlength="64"
|
||||
placeholder="请输入参数"
|
||||
:placeholder="$t('components.dynamicsForm.paramForm.field.placeholder')"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="显示名称" :required="true" prop="label" :rules="rules.label">
|
||||
<el-form-item :label="$t('components.dynamicsForm.paramForm.name.label')" :required="true" prop="label" :rules="rules.label">
|
||||
<el-input
|
||||
v-model="form_data.label"
|
||||
:maxlength="64"
|
||||
show-word-limit
|
||||
placeholder="请输入显示名称"
|
||||
:placeholder="$t('components.dynamicsForm.paramForm.name.placeholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="参数提示说明">
|
||||
<el-form-item :label="$t('components.dynamicsForm.paramForm.tooltip.label')">
|
||||
<el-input
|
||||
v-model="form_data.tooltip"
|
||||
:maxlength="128"
|
||||
show-word-limit
|
||||
placeholder="请输入参数提示说明"
|
||||
:placeholder="$t('components.dynamicsForm.paramForm.tooltip.placeholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否必填" :required="true" prop="required" :rules="rules.required">
|
||||
<el-form-item :label="$t('components.dynamicsForm.paramForm.required.label')" :required="true" prop="required" :rules="rules.required">
|
||||
<el-switch v-model="form_data.required" :active-value="true" :inactive-value="false" />
|
||||
</el-form-item>
|
||||
<el-form-item label="组件类型" :required="true" prop="input_type" :rules="rules.input_type">
|
||||
<el-select v-model="form_data.input_type" placeholder="请选择组件类型">
|
||||
<el-form-item :label="$t('components.dynamicsForm.paramForm.input_type.label')" :required="true" prop="input_type" :rules="rules.input_type">
|
||||
<el-select v-model="form_data.input_type" :placeholder="$t('components.dynamicsForm.paramForm.input_type.placeholder')">
|
||||
<el-option
|
||||
v-for="input_type in input_type_list"
|
||||
:key="input_type.value"
|
||||
|
|
@ -57,6 +57,7 @@ import { onMounted, ref, nextTick } from 'vue'
|
|||
import type { FormInstance } from 'element-plus'
|
||||
import _ from 'lodash'
|
||||
import { input_type_list as input_type_list_data } from '@/components/dynamics-form/constructor/data'
|
||||
import { t } from '@/locales'
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
modelValue?: any
|
||||
|
|
@ -80,10 +81,10 @@ const form_data = ref<any>({
|
|||
input_type: ''
|
||||
})
|
||||
const rules = {
|
||||
label: [{ required: true, message: '显示名称 为必填属性' }],
|
||||
field: [{ required: true, message: '参数 为必填属性' }],
|
||||
required: [{ required: true, message: '是否必填 为必填属性' }],
|
||||
input_type: [{ required: true, message: '组建类型 为必填属性' }]
|
||||
label: [{ required: true, message: t('components.dynamicsForm.paramForm.name.requiredMessage') }],
|
||||
field: [{ required: true, message: t('components.dynamicsForm.paramForm.field.requiredMessage') }],
|
||||
required: [{ required: true, message: t('components.dynamicsForm.paramForm.required.requiredMessage') }],
|
||||
input_type: [{ required: true, message: t('components.dynamicsForm.paramForm.input_type.requiredMessage') }]
|
||||
}
|
||||
const getData = () => {
|
||||
let label: string | any = form_data.value.label
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
class="defaultValueItem"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:rules="formValue.required ? [{ required: true, message: '默认值 为必填属性' }] : []"
|
||||
>
|
||||
<div class="defaultValueCheckbox">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-form-item
|
||||
class="defaultValueItem"
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
:rules="[default_value_rule]"
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
class="defaultValueItem"
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
:rules="formValue.required ? [{ required: true, message: '默认值 为必填属性' }] : []"
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
class="defaultValueItem"
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
:rules="formValue.required ? [{ required: true, message: '默认值 为必填属性' }] : []"
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
class="defaultValueItem"
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
:rules="formValue.required ? [{ required: true, message: '默认值 为必填属性' }] : []"
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
class="defaultValueItem"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:rules="formValue.required ? [{ required: true, message: '默认值 为必填属性' }] : []"
|
||||
>
|
||||
<div class="defaultValueCheckbox">
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
</el-col>
|
||||
|
||||
<el-form-item
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
:rules="formValue.required ? [{ required: true, message: '默认值 为必填属性' }] : []"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-form-item
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
:rules="formValue.required ? [{ required: true, message: '默认值 为必填属性' }] : []"
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
class="defaultValueItem"
|
||||
:required="formValue.required"
|
||||
prop="default_value"
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
:rules="
|
||||
formValue.required ? [{ required: true, message: '默认值 为必填属性' }, ...rules] : rules
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
import { t } from '@/locales'
|
||||
export enum PermissionType {
|
||||
PRIVATE = '私有',
|
||||
PUBLIC = '公用'
|
||||
PRIVATE = 'common.private',
|
||||
PUBLIC = 'common.public'
|
||||
}
|
||||
export enum PermissionDesc {
|
||||
PRIVATE = '仅当前用户使用',
|
||||
PUBLIC = '所有用户都可使用,不能编辑'
|
||||
PRIVATE = 'views.template.templateForm.form.permissionType.privateDesc',
|
||||
PUBLIC = 'views.template.templateForm.form.permissionType.publicDesc',
|
||||
}
|
||||
|
||||
export enum modelType {
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ export default {
|
|||
creator: 'Creator',
|
||||
debug: 'Debug',
|
||||
modify: 'Modify',
|
||||
required: 'Required',
|
||||
noData: 'No data',
|
||||
status: {
|
||||
label: 'Status',
|
||||
enableSuccess: 'Enable Successful',
|
||||
|
|
|
|||
|
|
@ -25,8 +25,6 @@ export default {
|
|||
functionForm: {
|
||||
title: {
|
||||
copy: 'Copy',
|
||||
editParam: 'Edit Parameters',
|
||||
addParam: 'Add Parameter',
|
||||
baseInfo: 'Basic Information'
|
||||
},
|
||||
form: {
|
||||
|
|
@ -68,7 +66,6 @@ export default {
|
|||
outputParam: 'Output Parameters',
|
||||
paramInfo1: 'Displayed when using the function',
|
||||
paramInfo2: 'Not displayed when using the function',
|
||||
required: 'Required',
|
||||
code: 'Code',
|
||||
result: 'Result'
|
||||
},
|
||||
|
|
|
|||
|
|
@ -21,6 +21,10 @@ export default {
|
|||
TTI: 'Image Generation'
|
||||
},
|
||||
templateForm: {
|
||||
title: {
|
||||
editParam: 'Edit Parameters',
|
||||
addParam: 'Add Parameter',
|
||||
},
|
||||
form: {
|
||||
provider: {
|
||||
label: 'Provider',
|
||||
|
|
|
|||
|
|
@ -30,12 +30,14 @@ export default {
|
|||
export: '导出',
|
||||
exportSuccess: '导出成功',
|
||||
unavailable: '(不可用)',
|
||||
public: '公用',
|
||||
public: '公有',
|
||||
private: '私有',
|
||||
paramSetting: '参数设置',
|
||||
creator: '创建者',
|
||||
debug: '调试',
|
||||
modify: '修改',
|
||||
required: '必填',
|
||||
noData: '暂无数据',
|
||||
status: {
|
||||
label: '状态',
|
||||
enableSuccess: '启用成功',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
export default {
|
||||
input_type_list: {
|
||||
TextInput: '文本框',
|
||||
Slider: '滑块',
|
||||
SwitchInput: '开关',
|
||||
SingleSelect: '单选框',
|
||||
MultiSelect: '多选框',
|
||||
DatePicker: '日期',
|
||||
JsonInput: 'JSON文本框',
|
||||
RadioCard: '选项卡',
|
||||
RadioRow: '单行选项卡'
|
||||
},
|
||||
default: {
|
||||
label: '默认值',
|
||||
placeholder: '请输入默认值',
|
||||
requiredMessage: '请输入默认值'
|
||||
},
|
||||
paramForm: {
|
||||
field: {
|
||||
label: '参数',
|
||||
placeholder: '请输入参数',
|
||||
requiredMessage: '参数 为必填属性'
|
||||
},
|
||||
name: {
|
||||
label: '显示名称',
|
||||
placeholder: '请输入显示名称',
|
||||
requiredMessage: '显示名称 为必填属性'
|
||||
},
|
||||
tooltip: {
|
||||
label: '参数提示说明',
|
||||
placeholder: '请输入参数提示说明'
|
||||
},
|
||||
required: {
|
||||
label: '是否必填',
|
||||
requiredMessage: '是否必填 为必填属性'
|
||||
},
|
||||
input_type: {
|
||||
label: '组件类型',
|
||||
placeholder: '请选择组件类型',
|
||||
requiredMessage: '组建类型 为必填属性'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +1,4 @@
|
|||
export default {}
|
||||
import dynamicsForm from './dynamics-form'
|
||||
export default {
|
||||
dynamicsForm
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@ export default {
|
|||
functionForm: {
|
||||
title: {
|
||||
copy: '副本',
|
||||
editParam: '编辑参数',
|
||||
addParam: '添加参数',
|
||||
baseInfo: '基础信息'
|
||||
},
|
||||
form: {
|
||||
|
|
@ -66,7 +64,6 @@ export default {
|
|||
outputParam: '输出参数',
|
||||
paramInfo1: '使用函数时显示',
|
||||
paramInfo2: '使用函数时不显示',
|
||||
required: '必填',
|
||||
code: '代码',
|
||||
result: '结果'
|
||||
},
|
||||
|
|
|
|||
|
|
@ -6,12 +6,20 @@ export default {
|
|||
searchBar: {
|
||||
placeholder: '按名称搜索'
|
||||
},
|
||||
delete: {},
|
||||
setting: {},
|
||||
delete: {
|
||||
confirmTitle: '删除模型',
|
||||
confirmMessage: '是否删除模型:'
|
||||
},
|
||||
tip: {
|
||||
createSuccessMessage: '创建模型成功',
|
||||
createErrorMessage: '基础信息有填写错误',
|
||||
errorMessage:'变量已存在: '
|
||||
errorMessage: '变量已存在: ',
|
||||
emptyMessage1: '请先选择基础信息的模型类型和基础模型',
|
||||
emptyMessage2: '所选模型不支持参数设置',
|
||||
updateSuccessMessage: '修改模型成功',
|
||||
saveSuccessMessage: '模型参数保存成功',
|
||||
downloadError: '下载失败',
|
||||
noModel: '模型在Ollama不存在'
|
||||
},
|
||||
model: {
|
||||
allModel: '全部模型',
|
||||
|
|
@ -28,7 +36,11 @@ export default {
|
|||
templateForm: {
|
||||
title: {
|
||||
baseInfo: '基础信息',
|
||||
advancedInfo: '高级设置'
|
||||
advancedInfo: '高级设置',
|
||||
modelParams: '模型参数',
|
||||
editParam: '编辑参数',
|
||||
addParam: '添加参数',
|
||||
paramSetting: '模型参数设置'
|
||||
},
|
||||
form: {
|
||||
templateName: {
|
||||
|
|
@ -39,9 +51,8 @@ export default {
|
|||
},
|
||||
permissionType: {
|
||||
label: '权限',
|
||||
placeholder: '请给基础模型设置一个名称',
|
||||
tooltip: 'MaxKB 中自定义的模型名称',
|
||||
requiredMessage: '权限不能为空'
|
||||
privateDesc: '仅当前用户使用',
|
||||
publicDesc: '所有用户都可使用,不能编辑'
|
||||
},
|
||||
model_type: {
|
||||
label: '模型类型',
|
||||
|
|
@ -53,9 +64,18 @@ export default {
|
|||
tooltip5: '重排模型:在高级编排应用中使用多路召回时,对候选分段进行重新排序的模型。',
|
||||
tooltip6: '图片理解:在高级编排应用中用于图片理解的视觉模型。',
|
||||
tooltip7: '图片生成:在高级编排应用中用于图片生成的视觉模型。',
|
||||
requiredMessage: '模型类型不能为空',
|
||||
warningMessage: '模型类型不能为空'
|
||||
requiredMessage: '模型类型不能为空'
|
||||
},
|
||||
base_model: {
|
||||
label: '基础模型',
|
||||
tooltip: '列表中未列出的模型,直接输入模型名称,回车即可添加',
|
||||
placeholder: '自定义输入基础模型后回车即可',
|
||||
requiredMessage: '基础模型不能为空'
|
||||
}
|
||||
}
|
||||
},
|
||||
download: {
|
||||
downloading: '正在下载中',
|
||||
cancelDownload: '取消下载'
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,12 +30,14 @@ export default {
|
|||
export: '匯出',
|
||||
exportSuccess: '匯出成功',
|
||||
unavailable: '(不可用)',
|
||||
public: '公用',
|
||||
public: '公有',
|
||||
private: '私有',
|
||||
paramSetting: '參數設定',
|
||||
creator: '建立者',
|
||||
debug: '調試',
|
||||
modify: '修改',
|
||||
required: '必填',
|
||||
noData: '暂无数据',
|
||||
status: {
|
||||
label: '狀態',
|
||||
enableSuccess: '啟用成功',
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@ export default {
|
|||
functionForm: {
|
||||
title: {
|
||||
copy: '副本',
|
||||
editParam: '編輯參數',
|
||||
addParam: '添加參數',
|
||||
baseInfo: '基礎信息'
|
||||
},
|
||||
form: {
|
||||
|
|
@ -66,7 +64,6 @@ export default {
|
|||
outputParam: '輸出參數',
|
||||
paramInfo1: '使用函數時顯示',
|
||||
paramInfo2: '使用函數時不顯示',
|
||||
required: '必填',
|
||||
code: '代碼',
|
||||
result: '結果'
|
||||
},
|
||||
|
|
|
|||
|
|
@ -21,11 +21,12 @@ export default {
|
|||
TTI: '圖片生成'
|
||||
},
|
||||
templateForm: {
|
||||
title: {
|
||||
editParam: '編輯參數',
|
||||
addParam: '添加參數',
|
||||
},
|
||||
form: {
|
||||
provider: {
|
||||
label: '供應商',
|
||||
placeholder: '選擇供應商'
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
<el-dialog
|
||||
:title="
|
||||
isEdit
|
||||
? $t('views.functionLib.functionForm.title.editParam')
|
||||
: $t('views.functionLib.functionForm.title.addParam')
|
||||
? $t('views.template.templateForm.title.editParam')
|
||||
: $t('views.template.templateForm.title.addParam')
|
||||
"
|
||||
v-model="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
|
|
|
|||
|
|
@ -53,9 +53,9 @@
|
|||
:class="form.permission_type === key ? 'active' : ''"
|
||||
>
|
||||
<el-radio :value="key" size="large">
|
||||
<p class="mb-4">{{ value }}</p>
|
||||
<p class="mb-4">{{ $t(value) }}</p>
|
||||
<el-text type="info">
|
||||
{{ PermissionDesc[key] }}
|
||||
{{ $t(PermissionDesc[key]) }}
|
||||
</el-text>
|
||||
</el-radio>
|
||||
</el-card>
|
||||
|
|
@ -87,7 +87,7 @@
|
|||
<el-tag type="info" class="info-tag">{{ row.type }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('views.functionLib.functionForm.form.param.required')">
|
||||
<el-table-column :label="$t('common.required')">
|
||||
<template #default="{ row }">
|
||||
<div @click.stop>
|
||||
<el-switch size="small" v-model="row.is_required" />
|
||||
|
|
@ -141,7 +141,10 @@
|
|||
</div>
|
||||
</div>
|
||||
<h4 class="title-decoration-1 mb-16 mt-16">
|
||||
{{ $t('views.functionLib.functionForm.form.param.outputParam') }} <el-text type="info" class="color-secondary"> {{ $t('views.functionLib.functionForm.form.param.paramInfo1') }} </el-text>
|
||||
{{ $t('views.functionLib.functionForm.form.param.outputParam') }}
|
||||
<el-text type="info" class="color-secondary">
|
||||
{{ $t('views.functionLib.functionForm.form.param.paramInfo1') }}
|
||||
</el-text>
|
||||
</h4>
|
||||
<div class="flex-between border-r-4 p-8-12 mb-8 layout-bg lighter">
|
||||
<span>{{ $t('views.functionLib.functionForm.form.param.result') }} {result}</span>
|
||||
|
|
@ -159,7 +162,12 @@
|
|||
</template>
|
||||
|
||||
<!-- Codemirror 弹出层 -->
|
||||
<el-dialog v-model="dialogVisible" :title="'Python '+ $t('views.functionLib.functionForm.form.param.code')" append-to-body fullscreen>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="'Python ' + $t('views.functionLib.functionForm.form.param.code')"
|
||||
append-to-body
|
||||
fullscreen
|
||||
>
|
||||
<CodemirrorEditor
|
||||
v-model="cloneContent"
|
||||
style="
|
||||
|
|
@ -233,8 +241,20 @@ watch(visible, (bool) => {
|
|||
})
|
||||
|
||||
const rules = reactive({
|
||||
name: [{ required: true, message: t('views.functionLib.functionForm.form.functionName.requiredMessage'), trigger: 'blur' }],
|
||||
permission_type: [{ required: true, message: t('views.functionLib.functionForm.form.permission_type.requiredMessage'), trigger: 'change' }]
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.functionLib.functionForm.form.functionName.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
permission_type: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.functionLib.functionForm.form.permission_type.requiredMessage'),
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
function openCodemirrorDialog() {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,13 @@
|
|||
:before-close="cancelClick"
|
||||
>
|
||||
<template #header>
|
||||
<h4>{{ isEdit ? '编辑参数' : '添加参数' }}</h4>
|
||||
<h4>
|
||||
{{
|
||||
isEdit
|
||||
? $t('views.template.templateForm.title.editParam')
|
||||
: $t('views.template.templateForm.title.addParam')
|
||||
}}
|
||||
</h4>
|
||||
</template>
|
||||
<template #default>
|
||||
<DynamicsFormConstructor
|
||||
|
|
@ -19,8 +25,10 @@
|
|||
</template>
|
||||
<template #footer>
|
||||
<div style="flex: auto">
|
||||
<el-button @click="cancelClick">{{$t('common.cancel')}}</el-button>
|
||||
<el-button type="primary" @click="confirmClick()">{{ isEdit ? $t('common.save') : $t('common.add') }}</el-button>
|
||||
<el-button @click="cancelClick">{{ $t('common.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="confirmClick()">{{
|
||||
isEdit ? $t('common.save') : $t('common.add')
|
||||
}}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-drawer>
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@
|
|||
<template #header="{ close, titleId, titleClass }">
|
||||
<el-breadcrumb separator=">">
|
||||
<el-breadcrumb-item>
|
||||
<span @click="toSelectProvider" class="select-provider"
|
||||
>{{ $t('views.template.providerPlaceholder') }}</span
|
||||
></el-breadcrumb-item
|
||||
>
|
||||
<span @click="toSelectProvider" class="select-provider">
|
||||
{{ $t('views.template.providerPlaceholder') }}
|
||||
</span>
|
||||
</el-breadcrumb-item>
|
||||
<el-breadcrumb-item
|
||||
><span class="active-breadcrumb">{{
|
||||
`${$t('common.add')} ${providerValue?.name}`
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
</el-breadcrumb>
|
||||
</template>
|
||||
<el-tabs v-model="activeName">
|
||||
<el-tab-pane label="基础信息" name="base-info">
|
||||
<el-tab-pane :label="$t('views.template.templateForm.title.baseInfo')" name="base-info">
|
||||
<DynamicsForm
|
||||
v-model="form_data"
|
||||
:render_data="model_form_field"
|
||||
|
|
@ -39,11 +39,11 @@
|
|||
<template #label>
|
||||
<div class="flex align-center" style="display: inline-flex">
|
||||
<div class="mr-4">
|
||||
<span>模型名称 </span>
|
||||
<span> {{ $t('views.template.templateForm.form.templateName.label') }} </span>
|
||||
</div>
|
||||
<el-tooltip effect="dark" placement="right">
|
||||
<template #content>
|
||||
<p>MaxKB 中自定义的模型名称</p>
|
||||
<p>{{ $t('views.template.templateForm.form.templateName.tooltip') }}</p>
|
||||
</template>
|
||||
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
|
||||
</el-tooltip>
|
||||
|
|
@ -53,12 +53,12 @@
|
|||
v-model="base_form_data.name"
|
||||
maxlength="64"
|
||||
show-word-limit
|
||||
placeholder="请给基础模型设置一个名称"
|
||||
:placeholder="$t('views.template.templateForm.form.templateName.placeholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="permission_type" :rules="base_form_data_rule.permission_type">
|
||||
<template #label>
|
||||
<span>权限</span>
|
||||
<span>{{ $t('views.template.templateForm.form.permissionType.label') }}</span>
|
||||
</template>
|
||||
<el-radio-group v-model="base_form_data.permission_type" class="card__radio">
|
||||
<el-row :gutter="16">
|
||||
|
|
@ -70,9 +70,9 @@
|
|||
:class="base_form_data.permission_type === key ? 'active' : ''"
|
||||
>
|
||||
<el-radio :value="key" size="large">
|
||||
<p class="mb-4">{{ value }}</p>
|
||||
<p class="mb-4">{{ $t(value) }}</p>
|
||||
<el-text type="info">
|
||||
{{ PermissionDesc[key] }}
|
||||
{{ $t(PermissionDesc[key]) }}
|
||||
</el-text>
|
||||
</el-radio>
|
||||
</el-card>
|
||||
|
|
@ -84,18 +84,18 @@
|
|||
<el-form-item prop="model_type" :rules="base_form_data_rule.model_type">
|
||||
<template #label>
|
||||
<div class="flex align-center" style="display: inline-flex">
|
||||
<span class="mr-4">模型类型 </span>
|
||||
<span class="mr-4"
|
||||
>{{ $t('views.template.templateForm.form.model_type.label') }}
|
||||
</span>
|
||||
<el-tooltip effect="dark" placement="right">
|
||||
<template #content>
|
||||
<p>大语言模型:在应用中与AI对话的推理模型。</p>
|
||||
<p>向量模型:在知识库中对文档内容进行向量化的模型。</p>
|
||||
<p>语音识别:在应用中开启语音识别后用于语音转文字的模型。</p>
|
||||
<p>语音合成:在应用中开启语音播放后用于文字转语音的模型。</p>
|
||||
<p>
|
||||
重排模型:在高级编排应用中使用多路召回时,对候选分段进行重新排序的模型。
|
||||
</p>
|
||||
<p>图片理解:在高级编排应用中用于图片理解的视觉模型。</p>
|
||||
<p>图片生成:在高级编排应用中用于图片生成的视觉模型。</p>
|
||||
<p>{{ $t('views.template.templateForm.form.model_type.tooltip1') }}</p>
|
||||
<p>{{ $t('views.template.templateForm.form.model_type.tooltip2') }}</p>
|
||||
<p>{{ $t('views.template.templateForm.form.model_type.tooltip3') }}</p>
|
||||
<p>{{ $t('views.template.templateForm.form.model_type.tooltip4') }}</p>
|
||||
<p>{{ $t('views.template.templateForm.form.model_type.tooltip5') }}</p>
|
||||
<p>{{ $t('views.template.templateForm.form.model_type.tooltip6') }}</p>
|
||||
<p>{{ $t('views.template.templateForm.form.model_type.tooltip7') }}</p>
|
||||
</template>
|
||||
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
|
||||
</el-tooltip>
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
@change="list_base_model($event, true)"
|
||||
v-model="base_form_data.model_type"
|
||||
class="w-full m-2"
|
||||
placeholder="请选择模型类型"
|
||||
:placeholder="$t('views.template.templateForm.form.model_type.placeholder')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in model_type_list"
|
||||
|
|
@ -121,8 +121,10 @@
|
|||
<template #label>
|
||||
<div class="flex align-center" style="display: inline-flex">
|
||||
<div class="mr-4">
|
||||
<span>基础模型 </span>
|
||||
<span class="danger">列表中未列出的模型,直接输入模型名称,回车即可添加</span>
|
||||
<span>{{ $t('views.template.templateForm.form.base_model.label') }} </span>
|
||||
<span class="danger ml-4">{{
|
||||
$t('views.template.templateForm.form.base_model.tooltip')
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -131,7 +133,7 @@
|
|||
v-loading="base_model_loading"
|
||||
v-model="base_form_data.model_name"
|
||||
class="w-full m-2"
|
||||
placeholder="自定义输入基础模型后回车即可"
|
||||
:placeholder="$t('views.template.templateForm.form.base_model.placeholder')"
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
|
|
@ -156,10 +158,13 @@
|
|||
</template>
|
||||
</DynamicsForm>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="高级设置" name="advanced-info">
|
||||
<el-tab-pane
|
||||
:label="$t('views.template.templateForm.title.advancedInfo')"
|
||||
name="advanced-info"
|
||||
>
|
||||
<el-empty
|
||||
v-if="!base_form_data.model_type || !base_form_data.model_name"
|
||||
description="请先选择基础信息的模型类型和基础模型"
|
||||
:description="$t('views.template.tip.emptyMessage1')"
|
||||
/>
|
||||
<el-empty
|
||||
v-else-if="
|
||||
|
|
@ -167,10 +172,10 @@
|
|||
base_form_data.model_type === 'EMBEDDING' ||
|
||||
base_form_data.model_type === 'STT'
|
||||
"
|
||||
description="所选模型不支持参数设置"
|
||||
:description="$t('views.template.tip.emptyMessage2')"
|
||||
/>
|
||||
<div class="flex-between mb-8" v-else>
|
||||
<h5>模型参数</h5>
|
||||
<h5>{{ $t('views.template.templateForm.title.modelParams') }}</h5>
|
||||
<el-button
|
||||
type="text"
|
||||
@click.stop="openAddDrawer()"
|
||||
|
|
@ -181,7 +186,7 @@
|
|||
base_form_data.model_type !== 'TTI'
|
||||
"
|
||||
>
|
||||
<AppIcon iconName="Plus" class="add-icon" />添加
|
||||
<AppIcon iconName="Plus" class="add-icon" />{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
|
|
@ -189,7 +194,11 @@
|
|||
v-if="base_form_data.model_params_form?.length > 0"
|
||||
class="mb-16"
|
||||
>
|
||||
<el-table-column prop="label" label="显示名称" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
prop="label"
|
||||
:label="$t('components.dynamicsForm.paramForm.name.label')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.label && row.label.input_type === 'TooltipLabel'">{{
|
||||
row.label.label
|
||||
|
|
@ -197,16 +206,27 @@
|
|||
<span v-else>{{ row.label }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="field" label="参数" show-overflow-tooltip />
|
||||
<el-table-column label="组件类型" width="110px">
|
||||
<el-table-column
|
||||
prop="field"
|
||||
:label="$t('components.dynamicsForm.paramForm.field.label')"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('components.dynamicsForm.paramForm.input_type.label')"
|
||||
width="110px"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag type="info" class="info-tag">{{
|
||||
input_type_list.find((item) => item.value === row.input_type)?.label
|
||||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="default_value" label="默认值" show-overflow-tooltip />
|
||||
<el-table-column label="必填">
|
||||
<el-table-column
|
||||
prop="default_value"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column :label="$t('common.required')">
|
||||
<template #default="{ row }">
|
||||
<div @click.stop>
|
||||
<el-switch disabled size="small" v-model="row.required" />
|
||||
|
|
@ -237,8 +257,10 @@
|
|||
</el-tabs>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="close">{{$t('common.cancel')}}</el-button>
|
||||
<el-button type="primary" @click="submit" :loading="loading"> {{$t('common.save')}} </el-button>
|
||||
<el-button @click="close">{{ $t('common.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submit" :loading="loading">
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
|
@ -256,6 +278,7 @@ import { MsgError, MsgSuccess, MsgWarning } from '@/utils/message'
|
|||
import { PermissionType, PermissionDesc } from '@/enums/model'
|
||||
import { input_type_list } from '@/components/dynamics-form/constructor/data'
|
||||
import AddParamDrawer from '@/views/template/component/AddParamDrawer.vue'
|
||||
import { t } from '@/locales'
|
||||
|
||||
const providerValue = ref<Provider>()
|
||||
const dynamicsFormRef = ref<InstanceType<typeof DynamicsForm>>()
|
||||
|
|
@ -272,10 +295,26 @@ const activeName = ref('base-info')
|
|||
const AddParamRef = ref()
|
||||
|
||||
const base_form_data_rule = ref<FormRules>({
|
||||
name: { required: true, trigger: 'blur', message: '模型名称不能为空' },
|
||||
permission_type: { required: true, trigger: 'change', message: '权限不能为空' },
|
||||
model_type: { required: true, trigger: 'change', message: '模型类型不能为空' },
|
||||
model_name: { required: true, trigger: 'change', message: '基础模型不能为空' }
|
||||
name: {
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
message: t('views.template.templateForm.form.templateName.requiredMessage')
|
||||
},
|
||||
permission_type: {
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: t('views.template.templateForm.form.permissionType.requiredMessage')
|
||||
},
|
||||
model_type: {
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: t('views.template.templateForm.form.model_type.requiredMessage')
|
||||
},
|
||||
model_name: {
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: t('views.template.templateForm.form.base_model.requiredMessage')
|
||||
}
|
||||
})
|
||||
|
||||
const base_form_data = ref<{
|
||||
|
|
@ -306,7 +345,7 @@ const form_data = computed({
|
|||
|
||||
const getModelForm = (model_name: string) => {
|
||||
if (!form_data.value.model_type) {
|
||||
MsgWarning('请先选择模型类型')
|
||||
MsgWarning(t('views.template.templateForm.form.model_type.requiredMessage'))
|
||||
base_form_data.value.model_name = ''
|
||||
return
|
||||
}
|
||||
|
|
@ -383,13 +422,13 @@ const submit = () => {
|
|||
loading
|
||||
).then((ok) => {
|
||||
close()
|
||||
MsgSuccess('创建模型成功')
|
||||
MsgSuccess(t('views.template.tip.createSuccessMessage'))
|
||||
emit('submit')
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
MsgError('基础信息有填写错误')
|
||||
MsgError(t('views.template.tip.createErrorMessage'))
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -414,11 +453,11 @@ function refresh(data: any, index: any) {
|
|||
}
|
||||
|
||||
if (field === data.field && index !== i) {
|
||||
MsgError('变量已存在: ' + data.field)
|
||||
MsgError(t('views.template.tip.errorMessage') + data.field)
|
||||
return
|
||||
}
|
||||
if (label === label2 && index !== i) {
|
||||
MsgError('变量已存在: ' + label)
|
||||
MsgError(t('views.template.tip.errorMessage') + label)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,11 +31,11 @@
|
|||
<template #label>
|
||||
<div class="flex align-center" style="display: inline-flex">
|
||||
<div class="mr-4">
|
||||
<span>模型名称 </span>
|
||||
<span>{{ $t('views.template.templateForm.form.templateName.label') }} </span>
|
||||
</div>
|
||||
<el-tooltip effect="dark" placement="right">
|
||||
<template #content>
|
||||
<p>MaxKB 中自定义的模型名称</p>
|
||||
<p>{{ $t('views.template.templateForm.form.templateName.tooltip') }}</p>
|
||||
</template>
|
||||
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
|
||||
</el-tooltip>
|
||||
|
|
@ -45,12 +45,12 @@
|
|||
v-model="base_form_data.name"
|
||||
maxlength="64"
|
||||
show-word-limit
|
||||
placeholder="请给基础模型设置一个名称"
|
||||
:placeholder="$t('views.template.templateForm.form.templateName.placeholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="permission_type" :rules="base_form_data_rule.permission_type">
|
||||
<template #label>
|
||||
<span>权限</span>
|
||||
<span>{{ $t('views.template.templateForm.form.permissionType.label') }}</span>
|
||||
</template>
|
||||
|
||||
<el-radio-group v-model="base_form_data.permission_type" class="card__radio">
|
||||
|
|
@ -63,9 +63,9 @@
|
|||
:class="base_form_data.permission_type === key ? 'active' : ''"
|
||||
>
|
||||
<el-radio :value="key" size="large">
|
||||
<p class="mb-4">{{ value }}</p>
|
||||
<p class="mb-4">{{ $t(value) }}</p>
|
||||
<el-text type="info">
|
||||
{{ PermissionDesc[key] }}
|
||||
{{ $t(PermissionDesc[key]) }}
|
||||
</el-text>
|
||||
</el-radio>
|
||||
</el-card>
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item prop="model_type" :rules="base_form_data_rule.model_type">
|
||||
<template #label>
|
||||
<span>模型类型</span>
|
||||
<span>{{ $t('views.template.templateForm.form.model_type.label') }}</span>
|
||||
</template>
|
||||
<el-select
|
||||
disabled
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
@change="list_base_model($event, true)"
|
||||
v-model="base_form_data.model_type"
|
||||
class="w-full m-2"
|
||||
placeholder="请选择模型类型"
|
||||
:placeholder="$t('views.template.templateForm.form.model_type.placeholder')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in model_type_list"
|
||||
|
|
@ -98,8 +98,10 @@
|
|||
<template #label>
|
||||
<div class="flex align-center" style="display: inline-flex">
|
||||
<div class="mr-4">
|
||||
<span>基础模型 </span>
|
||||
<span class="danger">列表中未列出的模型,直接输入模型名称,回车即可添加</span>
|
||||
<span>{{ $t('views.template.templateForm.form.base_model.label') }} </span>
|
||||
<span class="danger">{{
|
||||
$t('views.template.templateForm.form.base_model.tooltip')
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -108,7 +110,7 @@
|
|||
v-loading="base_model_loading"
|
||||
v-model="base_form_data.model_name"
|
||||
class="w-full m-2"
|
||||
placeholder="请选择基础模型"
|
||||
:placeholder="$t('views.template.templateForm.form.base_model.requiredMessage')"
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
|
|
@ -134,7 +136,7 @@
|
|||
</DynamicsForm>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="close">{{$t('common.cancel')}}</el-button>
|
||||
<el-button @click="close">{{ $t('common.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submit" :loading="loading">
|
||||
{{ $t('common.modify') }}
|
||||
</el-button>
|
||||
|
|
@ -152,6 +154,7 @@ import DynamicsForm from '@/components/dynamics-form/index.vue'
|
|||
import type { FormRules } from 'element-plus'
|
||||
import { MsgSuccess } from '@/utils/message'
|
||||
import { PermissionType, PermissionDesc } from '@/enums/model'
|
||||
import { t } from '@/locales'
|
||||
|
||||
const providerValue = ref<Provider>()
|
||||
const dynamicsFormRef = ref<InstanceType<typeof DynamicsForm>>()
|
||||
|
|
@ -167,9 +170,21 @@ const model_form_field = ref<Array<FormField>>([])
|
|||
const dialogVisible = ref<boolean>(false)
|
||||
|
||||
const base_form_data_rule = ref<FormRules>({
|
||||
name: { required: true, trigger: 'blur', message: '模型名称不能为空' },
|
||||
model_type: { required: true, trigger: 'change', message: '模型类型不能为空' },
|
||||
model_name: { required: true, trigger: 'change', message: '基础模型不能为空' }
|
||||
name: {
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
message: t('views.template.templateForm.form.templateName.requiredMessage')
|
||||
},
|
||||
model_type: {
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: t('views.template.templateForm.form.model_type.requiredMessage')
|
||||
},
|
||||
model_name: {
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: t('views.template.templateForm.form.base_model.requiredMessage')
|
||||
}
|
||||
})
|
||||
|
||||
const base_form_data = ref<{
|
||||
|
|
@ -260,7 +275,7 @@ const submit = () => {
|
|||
},
|
||||
loading
|
||||
).then((ok) => {
|
||||
MsgSuccess('修改模型成功')
|
||||
MsgSuccess(t('views.template.tip.updateSuccessMessage'))
|
||||
close()
|
||||
emit('submit')
|
||||
})
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<span v-if="currentModel.status === 'PAUSE_DOWNLOAD'">
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="`基础模型: ${props.model.model_name} 下载失败`"
|
||||
:content="`${$t('views.template.templateForm.form.base_model.label')}: ${props.model.model_name} ${$t('views.template.tip.downloadError')}`"
|
||||
placement="top"
|
||||
>
|
||||
<el-icon class="danger ml-4" size="18"><Warning /></el-icon>
|
||||
|
|
@ -24,9 +24,9 @@
|
|||
</span>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<el-tag v-if="model.permission_type === 'PRIVATE'" type="danger" class="danger-tag"
|
||||
>私有</el-tag
|
||||
>
|
||||
<el-tag v-if="model.permission_type === 'PRIVATE'" type="danger" class="danger-tag">{{
|
||||
$t('common.private')
|
||||
}}</el-tag>
|
||||
<el-tag v-else type="info" class="info-tag"> {{ $t('common.public') }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -36,13 +36,17 @@
|
|||
<div class="mt-16">
|
||||
<ul>
|
||||
<li class="flex mt-16">
|
||||
<el-text type="info">模型类型</el-text>
|
||||
<el-text type="info">{{
|
||||
$t('views.template.templateForm.form.model_type.label')
|
||||
}}</el-text>
|
||||
<span class="ellipsis ml-16">
|
||||
{{ $t(modelType[model.model_type as keyof typeof modelType]) }}</span
|
||||
>
|
||||
</li>
|
||||
<li class="flex mt-12">
|
||||
<el-text type="info">基础模型</el-text>
|
||||
<el-text type="info">{{
|
||||
$t('views.template.templateForm.form.base_model.label')
|
||||
}}</el-text>
|
||||
<span class="ellipsis-1 ml-16" style="height: 20px; width: 70%">
|
||||
{{ model.model_name }}</span
|
||||
>
|
||||
|
|
@ -60,14 +64,14 @@
|
|||
<DownloadLoading class="percentage" />
|
||||
|
||||
<div class="percentage-label flex-center">
|
||||
正在下载中 <span class="dotting"></span>
|
||||
{{ $t('views.template.download.downloading') }} <span class="dotting"></span>
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
class="ml-16"
|
||||
:disabled="!is_permisstion"
|
||||
@click.stop="cancelDownload"
|
||||
>取消下载</el-button
|
||||
>{{ $t('views.template.download.cancelDownload') }}</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -104,7 +108,7 @@
|
|||
icon="Setting"
|
||||
@click.stop="openParamSetting"
|
||||
>
|
||||
模型参数设置
|
||||
{{ $t('views.template.templateForm.title.paramSetting') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
icon="Delete"
|
||||
|
|
@ -133,7 +137,7 @@ import { MsgConfirm } from '@/utils/message'
|
|||
import { modelType } from '@/enums/model'
|
||||
import useStore from '@/stores'
|
||||
import ParamSettingDialog from './ParamSettingDialog.vue'
|
||||
|
||||
import { t } from '@/locales'
|
||||
const props = defineProps<{
|
||||
model: Model
|
||||
provider_list: Array<Provider>
|
||||
|
|
@ -157,7 +161,7 @@ const currentModel = computed(() => {
|
|||
const errMessage = computed(() => {
|
||||
if (currentModel.value.meta && currentModel.value.meta.message) {
|
||||
if (currentModel.value.meta.message === 'pull model manifest: file does not exist') {
|
||||
return `${currentModel.value.model_name} 模型在Ollama不存在`
|
||||
return `${currentModel.value.model_name} ${t('views.template.tip.noModel')}`
|
||||
}
|
||||
return currentModel.value.meta.message
|
||||
}
|
||||
|
|
@ -167,10 +171,14 @@ const emit = defineEmits(['change', 'update:model'])
|
|||
const editModelRef = ref<InstanceType<typeof EditModel>>()
|
||||
let interval: any
|
||||
const deleteModel = () => {
|
||||
MsgConfirm(`删除模型 `, `是否删除模型:${props.model.name} ?`, {
|
||||
confirmButtonText: t('common.delete'),
|
||||
confirmButtonClass: 'danger'
|
||||
})
|
||||
MsgConfirm(
|
||||
t('views.template.delete.confirmTitle'),
|
||||
`${t('views.template.delete.confirmMessage')}${props.model.name} ?`,
|
||||
{
|
||||
confirmButtonText: t('common.delete'),
|
||||
confirmButtonClass: 'danger'
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
ModelApi.deleteModel(props.model.id).then(() => {
|
||||
emit('change')
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
title="模型参数设置"
|
||||
:title="$t('views.template.templateForm.title.paramSetting')"
|
||||
v-model="dialogVisible"
|
||||
width="800px"
|
||||
:close-on-click-modal="false"
|
||||
|
|
@ -8,9 +8,11 @@
|
|||
:destroy-on-close="true"
|
||||
:before-close="close"
|
||||
>
|
||||
<el-button type="primary" @click="openAddDrawer()" class="mb-12"> 添加参数 </el-button>
|
||||
<el-button type="primary" @click="openAddDrawer()" class="mb-12">
|
||||
{{ $t('views.template.templateForm.title.addParam') }}
|
||||
</el-button>
|
||||
<el-table :data="modelParamsForm" class="mb-16">
|
||||
<el-table-column prop="label" label="显示名称" show-overflow-tooltip>
|
||||
<el-table-column prop="label" :label="$t('components.dynamicsForm.paramForm.name.label')" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.label && row.label.input_type === 'TooltipLabel'">{{
|
||||
row.label.label
|
||||
|
|
@ -18,16 +20,20 @@
|
|||
<span v-else>{{ row.label }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="field" label="参数" show-overflow-tooltip />
|
||||
<el-table-column label="组件类型" width="110px">
|
||||
<el-table-column prop="field" :label="$t('components.dynamicsForm.paramForm.field.label')" show-overflow-tooltip />
|
||||
<el-table-column :label="$t('components.dynamicsForm.paramForm.input_type.label')" width="110px">
|
||||
<template #default="{ row }">
|
||||
<el-tag type="info" class="info-tag">{{
|
||||
input_type_list.find((item) => item.value === row.input_type)?.label
|
||||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="default_value" label="默认值" show-overflow-tooltip />
|
||||
<el-table-column label="必填">
|
||||
<el-table-column
|
||||
prop="default_value"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column :label="$t('common.required')">
|
||||
<template #default="{ row }">
|
||||
<div @click.stop>
|
||||
<el-switch disabled size="small" v-model="row.required" />
|
||||
|
|
@ -56,8 +62,10 @@
|
|||
</el-table>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="close">{{$t('common.cancel')}}</el-button>
|
||||
<el-button type="primary" @click="submit" :loading="loading"> {{$t('common.save')}} </el-button>
|
||||
<el-button @click="close">{{ $t('common.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submit" :loading="loading">
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
|
@ -119,11 +127,11 @@ function refresh(data: any, index: any) {
|
|||
}
|
||||
|
||||
if (field === data.field && index !== i) {
|
||||
MsgError('变量已存在: ' + data.field)
|
||||
MsgError(t('views.template.tip.errorMessage') + data.field)
|
||||
return
|
||||
}
|
||||
if (label === label2 && index !== i) {
|
||||
MsgError('变量已存在: ' + label)
|
||||
MsgError(t('views.template.tip.errorMessage') + label)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
@ -136,7 +144,7 @@ function refresh(data: any, index: any) {
|
|||
|
||||
function submit() {
|
||||
ModelApi.updateModelParamsForm(props.model.id, modelParamsForm.value, loading).then((ok) => {
|
||||
MsgSuccess('模型参数保存成功')
|
||||
MsgSuccess(t('views.template.tip.saveSuccessMessage'))
|
||||
close()
|
||||
// emit('submit')
|
||||
})
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
import { ref } from 'vue'
|
||||
import ModelApi from '@/api/model'
|
||||
import type { Provider } from '@/api/type/model'
|
||||
import { modelTypeList } from './data.ts'
|
||||
import { modelTypeList } from './data'
|
||||
import { t } from '@/locales'
|
||||
|
||||
const loading = ref<boolean>(false)
|
||||
|
|
|
|||
|
|
@ -90,9 +90,18 @@
|
|||
@change="search_type_change"
|
||||
>
|
||||
<el-option :label="$t('common.creator')" value="create_user" />
|
||||
<el-option label="权限" value="permission_type" />
|
||||
<el-option label="模型类型" value="model_type" />
|
||||
<el-option label="模型名称" value="name" />
|
||||
<el-option
|
||||
:label="$t('views.template.templateForm.form.permissionType.label')"
|
||||
value="permission_type"
|
||||
/>
|
||||
<el-option
|
||||
:label="$t('views.template.templateForm.form.model_type.label')"
|
||||
value="model_type"
|
||||
/>
|
||||
<el-option
|
||||
:label="$t('views.template.templateForm.form.templateName.label')"
|
||||
value="name"
|
||||
/>
|
||||
</el-select>
|
||||
<el-input
|
||||
v-if="search_type === 'name'"
|
||||
|
|
@ -124,8 +133,8 @@
|
|||
@change="list_model"
|
||||
style="width: 220px"
|
||||
>
|
||||
<el-option label="公有" value="PUBLIC" />
|
||||
<el-option label="私有" value="PRIVATE" />
|
||||
<el-option :label="$t('views.template.templateForm.form.permissionType.public')" value="PUBLIC" />
|
||||
<el-option :label="$t('views.template.templateForm.form.permissionType.private')" value="PRIVATE" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-else-if="search_type === 'model_type'"
|
||||
|
|
@ -166,7 +175,7 @@
|
|||
</el-col>
|
||||
</template>
|
||||
</el-row>
|
||||
<el-empty description="暂无数据" v-else />
|
||||
<el-empty :description="$t('common.noData')" v-else />
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
|
@ -192,7 +201,7 @@ import type { Provider, Model } from '@/api/type/model'
|
|||
import AppIcon from '@/components/icons/AppIcon.vue'
|
||||
import ModelCard from '@/views/template/component/ModelCard.vue'
|
||||
import { splitArray } from '@/utils/common'
|
||||
import { modelTypeList } from '@/views/template/component/data.ts'
|
||||
import { modelTypeList } from '@/views/template/component/data'
|
||||
import CreateModelDialog from '@/views/template/component/CreateModelDialog.vue'
|
||||
import SelectProviderDialog from '@/views/template/component/SelectProviderDialog.vue'
|
||||
import { t } from '@/locales'
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:title="isEdit ? '编辑参数' : '添加参数'"
|
||||
:title="
|
||||
isEdit
|
||||
? $t('views.template.templateForm.title.editParam')
|
||||
: $t('views.template.templateForm.title.addParam')
|
||||
"
|
||||
v-model="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
|
|
@ -29,17 +33,17 @@
|
|||
<el-switch size="small" v-model="form.is_required"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="默认值"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
prop="default_value"
|
||||
:rules="{
|
||||
required: form.is_required,
|
||||
message: '请输入默认值',
|
||||
message: $t('components.dynamicsForm.paramForm.default.requiredMessage'),
|
||||
trigger: 'blur'
|
||||
}"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.default_value"
|
||||
placeholder="请输入默认值"
|
||||
:placeholder="$t('components.dynamicsForm.paramForm.default.placeholder')"
|
||||
@blur="form.name = form.name.trim()"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
class="mb-16"
|
||||
>
|
||||
<el-table-column prop="variable" label="参数" />
|
||||
<el-table-column prop="default_value" label="默认值" />
|
||||
<el-table-column label="必填">
|
||||
<el-table-column prop="default_value" :label="$t('components.dynamicsForm.default.label')" />
|
||||
<el-table-column :label="$t('common.required')">
|
||||
<template #default="{ row }">
|
||||
<div @click.stop>
|
||||
<el-switch disabled size="small" v-model="row.is_required" />
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:title="isEdit ? '编辑参数' : '添加参数'"
|
||||
:title="
|
||||
isEdit
|
||||
? $t('views.template.templateForm.title.editParam')
|
||||
: $t('views.template.templateForm.title.addParam')
|
||||
"
|
||||
v-model="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
|
|
@ -72,9 +76,11 @@ const currentRow = computed(() => {
|
|||
label: row.label || row.name,
|
||||
default_value: row.default_value,
|
||||
required: row.required != undefined ? row.required : row.is_required,
|
||||
option_list: row.option_list ? row.option_list: row.optionList.map((o: any) => {
|
||||
return { key: o, value: o }
|
||||
})
|
||||
option_list: row.option_list
|
||||
? row.option_list
|
||||
: row.optionList.map((o: any) => {
|
||||
return { key: o, value: o }
|
||||
})
|
||||
}
|
||||
|
||||
case 'date':
|
||||
|
|
|
|||
|
|
@ -47,12 +47,15 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="default_value" label="默认值">
|
||||
<el-table-column
|
||||
prop="default_value"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span :title="row.default_value" class="ellipsis-1">{{ getDefaultValue(row) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="必填">
|
||||
<el-table-column :label="$t('common.required')">
|
||||
<template #default="{ row }">
|
||||
<div @click.stop>
|
||||
<el-switch disabled size="small" v-model="row.required" />
|
||||
|
|
|
|||
|
|
@ -86,14 +86,17 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="default_value" label="默认值">
|
||||
<el-table-column
|
||||
prop="default_value"
|
||||
:label="$t('components.dynamicsForm.default.label')"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span :title="row.default_value" class="ellipsis-1">{{
|
||||
getDefaultValue(row)
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="必填">
|
||||
<el-table-column :label="$t('common.required')">
|
||||
<template #default="{ row }">
|
||||
<div @click.stop>
|
||||
<el-switch disabled size="small" v-model="row.required" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue