+
@@ -91,11 +72,8 @@
取消
-
+
确认选择
@@ -127,12 +105,17 @@ export default {
modelList: [],
selectedProviderId: '',
selectedModelName: '',
+ // 临时选择状态,用于对话框内的选择
+ tempSelectedProviderId: '',
+ tempSelectedModelName: '',
loadingModels: false
};
},
mounted() {
// 从localStorage加载保存的选择
this.loadFromStorage();
+ // 初始化临时选择
+ this.resetTempSelection();
// 获取提供商列表
this.loadProviderConfigs();
// 如果有保存的选择,加载对应的模型列表
@@ -145,13 +128,13 @@ export default {
loadFromStorage() {
const savedProvider = localStorage.getItem('selectedProvider');
const savedModel = localStorage.getItem('selectedModel');
-
+
if (savedProvider) {
this.selectedProviderId = savedProvider;
} else if (this.initialProvider) {
this.selectedProviderId = this.initialProvider;
}
-
+
if (savedModel) {
this.selectedModelName = savedModel;
} else if (this.initialModel) {
@@ -215,36 +198,40 @@ export default {
// 选择提供商
selectProvider(provider) {
- this.selectedProviderId = provider.id;
- this.selectedModelName = ''; // 清空已选择的模型
+ this.tempSelectedProviderId = provider.id;
+ this.tempSelectedModelName = ''; // 清空已选择的模型
this.modelList = []; // 清空模型列表
this.getProviderModels(provider.id); // 获取该提供商的模型列表
},
// 选择模型
selectModel(model) {
- this.selectedModelName = model;
+ this.tempSelectedModelName = model;
},
// 刷新模型列表
refreshModels() {
- if (this.selectedProviderId) {
- this.getProviderModels(this.selectedProviderId);
+ if (this.tempSelectedProviderId) {
+ this.getProviderModels(this.tempSelectedProviderId);
}
},
// 确认选择
confirmSelection() {
- if (this.selectedProviderId && this.selectedModelName) {
+ if (this.tempSelectedProviderId && this.tempSelectedModelName) {
+ // 将临时选择应用到正式选择
+ this.selectedProviderId = this.tempSelectedProviderId;
+ this.selectedModelName = this.tempSelectedModelName;
+
// 保存到localStorage
this.saveToStorage();
-
+
// 触发事件通知父组件
this.$emit('selection-changed', {
providerId: this.selectedProviderId,
modelName: this.selectedModelName
});
-
+
this.closeDialog();
}
},
@@ -252,6 +239,24 @@ export default {
// 关闭对话框
closeDialog() {
this.showDialog = false;
+ // 重置临时选择为当前选择
+ this.resetTempSelection();
+ },
+
+ // 重置临时选择
+ resetTempSelection() {
+ this.tempSelectedProviderId = this.selectedProviderId;
+ this.tempSelectedModelName = this.selectedModelName;
+ // 如果有临时选择的提供商,重新加载模型列表
+ if (this.tempSelectedProviderId) {
+ this.getProviderModels(this.tempSelectedProviderId);
+ }
+ },
+
+ // 打开对话框
+ openDialog() {
+ this.resetTempSelection();
+ this.showDialog = true;
},
// 公开方法:获取当前选择