完成修改模型页面的”获取模型供应器列表“功能;”删除模型配置“出现”服务器内部异常“错误。

This commit is contained in:
CGD
2025-04-04 23:52:36 +08:00
parent f7eab31b57
commit 148e71985f
3 changed files with 106 additions and 30 deletions
+18
View File
@@ -74,5 +74,23 @@ export default {
}) })
}).send() }).send()
}, },
// 删除模型配置
deleteModel(modelType, provideCode, id, callback) {
RequestService.sendRequest()
.url(`${getServiceUrl()}/api/v1/models/models/${modelType}/${provideCode}/${id}`)
.method('DELETE')
.success((res) => {
RequestService.clearRequestTime()
callback(res)
})
.fail((err) => {
console.error('删除模型失败:', err)
this.$message.error(err.msg || '删除模型失败')
RequestService.reAjaxFun(() => {
this.deleteModel(modelType, provideCode, id, callback)
})
}).send()
},
} }
@@ -37,10 +37,9 @@
<div style="display: flex; gap: 20px; margin-bottom: 0;"> <div style="display: flex; gap: 20px; margin-bottom: 0;">
<el-form-item label="供应器" prop="supplier" style="flex: 1;"> <el-form-item label="供应器" prop="supplier" style="flex: 1;">
<el-select v-model="form.supplier" placeholder="请选择" class="custom-select custom-input-bg" style="width: 100%;"> <el-select v-model="form.supplier" placeholder="请选择" class="custom-select custom-input-bg" style="width: 100%;" @focus="loadProviders" filterable>
<el-option label="openai" value="openai"></el-option> <el-option v-for="item in providers" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="dify" value="dify"></el-option> </el-select>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="排序号" prop="sort" style="flex: 1;"> <el-form-item label="排序号" prop="sort" style="flex: 1;">
<el-input v-model="form.sort" placeholder="请输入排序号" class="custom-input-bg"></el-input> <el-input v-model="form.sort" placeholder="请输入排序号" class="custom-input-bg"></el-input>
@@ -84,15 +83,19 @@
</template> </template>
<script> <script>
import model from '@/apis/module/model'
export default { export default {
name: "ModelConfigDialog", name: "ModelConfigDialog",
props: { props: {
visible: { type: Boolean, default: false }, visible: { type: Boolean, default: false },
configData: { type: Object, default: () => ({}) } configData: { type: Object, default: () => ({}) },
modelType: { type: String, required: true }
}, },
data() { data() {
return { return {
dialogVisible: this.visible, dialogVisible: this.visible,
providers: [],
providersLoaded: false,
form: { form: {
code: "", code: "",
name: "", name: "",
@@ -109,19 +112,51 @@ export default {
}; };
}, },
watch: { watch: {
modelType() {
this.resetProviders()
},
dialogVisible(val) { dialogVisible(val) {
this.$emit('update:visible', val); this.$emit('update:visible', val);
if (!val) {
this.form = {
code: "",
name: "",
supplier: "",
};
}
}, },
visible(val) { visible(val) {
this.dialogVisible = val; this.dialogVisible = val;
if (val) this.form = { ...this.form, ...this.configData }; if (val) {
} this.form = JSON.parse(JSON.stringify({
...this.form,
...this.configData
}));
this.resetProviders();
}
},
}, },
methods: { methods: {
resetProviders() {
this.providers = []
this.providersLoaded = false
},
handleSave() { handleSave() {
this.$emit("submit", this.form); this.$emit("submit", this.form);
this.dialogVisible = false; this.dialogVisible = false;
} },
loadProviders() {
if (this.providersLoaded) return
model.getModelProviders(this.modelType, (data) => {
this.providers = data.map(item => ({
label: item.name,
value: item.providerCode
}))
this.providersLoaded = true
})
},
} }
}; };
</script> </script>
+45 -22
View File
@@ -118,7 +118,7 @@
</div> </div>
</div> </div>
<ModelEditDialog :visible.sync="editDialogVisible" :modelData="editModelData" @save="handleModelSave"/> <ModelEditDialog :modelType="activeTab" :visible.sync="editDialogVisible" :modelData="editModelData" @save="handleModelSave"/>
<TtsModel :visible.sync="ttsDialogVisible" /> <TtsModel :visible.sync="ttsDialogVisible" />
<AddModelDialog :modelType="activeTab" :visible.sync="addDialogVisible" @confirm="handleAddConfirm"/> <AddModelDialog :modelType="activeTab" :visible.sync="addDialogVisible" @confirm="handleAddConfirm"/>
</div> </div>
@@ -209,48 +209,71 @@ export default {
handleSearch() { handleSearch() {
console.log('查询:', this.search); console.log('查询:', this.search);
}, },
// 批量删除
batchDelete() { batchDelete() {
if (this.selectedModels.length === 0) { if (this.selectedModels.length === 0) {
this.$message.warning('请先选择要删除的模型'); this.$message.warning('请先选择要删除的模型')
return; return
} }
this.$confirm('确定要删除选中的模型吗?', '提示', { this.$confirm('确定要删除选中的模型吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
const selectedIds = this.selectedModels.map(model => model.code); const deletePromises = this.selectedModels.map(model =>
this.modelList = this.modelList.filter(model => !selectedIds.includes(model.code)); new Promise(resolve => {
this.$message.success('删除成功'); ModelApi.deleteModel(
this.selectedModels = []; this.activeTab,
this.isAllSelected = false; model.configJson?.provider || '',
model.id,
({data}) => resolve(data.code === 0)
)
})
)
Promise.all(deletePromises).then(results => {
if (results.every(Boolean)) {
this.$message.success('批量删除成功')
this.loadData()
} else {
this.$message.error('部分删除失败')
}
})
}).catch(() => { }).catch(() => {
this.$message.info('已取消删除'); this.$message.info('已取消删除')
}); })
}, },
addModel() { addModel() {
this.addDialogVisible = true; this.addDialogVisible = true;
}, },
editModel(model) { editModel(model) {
this.editModelData = { this.editModelData = JSON.parse(JSON.stringify(model));
code: model.code,
name: model.candidateName,
supplier: model.supplier,
};
this.editDialogVisible = true; this.editDialogVisible = true;
}, },
// 删除模型配置 // 删除单个模型
deleteModel(model) { deleteModel(model) {
this.$confirm(`确定要删除模型 ${model.candidateName} 吗?`, '提示', { this.$confirm('确定要删除模型吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.modelList = this.modelList.filter(item => item.code !== model.code); ModelApi.deleteModel(
this.$message.success('删除成功'); this.activeTab,
model.configJson?.provider || '', // 从configJson获取provider
model.id,
({data}) => {
if (data.code === 0) {
this.$message.success('删除成功')
this.loadData()
} else {
this.$message.error(data.msg || '删除失败')
}
}
)
}).catch(() => { }).catch(() => {
this.$message.info('已取消删除'); this.$message.info('已取消删除')
}); })
}, },
handleCurrentChange(page) { handleCurrentChange(page) {
this.currentPage = page; this.currentPage = page;