fix: 代码生成器 模板仓库
This commit is contained in:
parent
2bd36d1848
commit
61ae056134
@ -232,18 +232,6 @@ export function addTemplateToRepositoryApi(data: TemplateRepository) {
|
||||
});
|
||||
}
|
||||
|
||||
// 从用户仓库移除模板
|
||||
export function removeTemplateFromRepositoryApi(
|
||||
templateSource: string,
|
||||
templateId: string
|
||||
) {
|
||||
return http.request<ResponseData<void>>(
|
||||
"post",
|
||||
"/codegen/repository/remove",
|
||||
{ data: { templateSource, templateId } }
|
||||
);
|
||||
}
|
||||
|
||||
// 切换模板启用状态
|
||||
export function toggleTemplateStatusApi(
|
||||
templateSource: string,
|
||||
|
||||
@ -1,12 +1,10 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, watch, onMounted, computed } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { Search } from "@element-plus/icons-vue";
|
||||
import {
|
||||
getAvailableTemplatesApi,
|
||||
getUserRepositoryListApi,
|
||||
addTemplateToRepositoryApi,
|
||||
removeTemplateFromRepositoryApi,
|
||||
toggleTemplateStatusApi,
|
||||
type TemplateRepository
|
||||
} from "@/api/system/codegen";
|
||||
@ -76,6 +74,22 @@ const loadData = async () => {
|
||||
|
||||
if (userRes.code === 200) {
|
||||
userTemplates.value = userRes.data;
|
||||
|
||||
// 同步用户仓库的状态到可用模板列表
|
||||
if (availableTemplates.value && userTemplates.value) {
|
||||
availableTemplates.value.forEach(available => {
|
||||
const userTemplate = userTemplates.value.find(
|
||||
user =>
|
||||
user.templateSource === available.templateSource &&
|
||||
user.templateId === available.templateId
|
||||
);
|
||||
if (userTemplate) {
|
||||
// 使用用户仓库中的显示状态
|
||||
available.isEnabled = userTemplate.isEnabled;
|
||||
}
|
||||
// 注意:现在所有模板都应该在用户仓库中有记录,不需要else分支
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error("加载模板数据失败");
|
||||
@ -85,56 +99,10 @@ const loadData = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
// 添加模板到仓库
|
||||
const addTemplate = async (template: TemplateRepository) => {
|
||||
try {
|
||||
const res = await addTemplateToRepositoryApi(template);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success("添加成功");
|
||||
template.isEnabled = 1;
|
||||
await loadData();
|
||||
emits("refresh");
|
||||
} else {
|
||||
ElMessage.error(res.msg || "添加失败");
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error("添加失败");
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
// 从仓库移除模板
|
||||
const removeTemplate = async (template: TemplateRepository) => {
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`确定要从仓库中移除模板 "${template.templateName}" 吗?`,
|
||||
"确认移除",
|
||||
{ type: "warning" }
|
||||
);
|
||||
|
||||
const res = await removeTemplateFromRepositoryApi(
|
||||
template.templateSource,
|
||||
template.templateId
|
||||
);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success("移除成功");
|
||||
template.isEnabled = 0;
|
||||
await loadData();
|
||||
emits("refresh");
|
||||
} else {
|
||||
ElMessage.error(res.msg || "移除失败");
|
||||
}
|
||||
} catch (error) {
|
||||
if (error !== "cancel") {
|
||||
ElMessage.error("移除失败");
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// 切换模板状态
|
||||
const toggleTemplate = async (template: TemplateRepository) => {
|
||||
const newStatus = template.isEnabled === 1 ? 0 : 1;
|
||||
const originalStatus = template.isEnabled;
|
||||
const newStatus = originalStatus === 1 ? 0 : 1;
|
||||
|
||||
try {
|
||||
const res = await toggleTemplateStatusApi(
|
||||
@ -143,14 +111,30 @@ const toggleTemplate = async (template: TemplateRepository) => {
|
||||
newStatus
|
||||
);
|
||||
if (res.code === 200) {
|
||||
// 直接更新本地状态,不需要重新加载所有数据
|
||||
template.isEnabled = newStatus;
|
||||
ElMessage.success(newStatus === 1 ? "已启用" : "已禁用");
|
||||
|
||||
// 同步更新用户模板列表中的状态
|
||||
const userTemplate = userTemplates.value.find(
|
||||
user =>
|
||||
user.templateSource === template.templateSource &&
|
||||
user.templateId === template.templateId
|
||||
);
|
||||
if (userTemplate) {
|
||||
userTemplate.isEnabled = newStatus;
|
||||
}
|
||||
|
||||
ElMessage.success(newStatus === 1 ? "已显示" : "已隐藏");
|
||||
emits("refresh");
|
||||
} else {
|
||||
ElMessage.error(res.msg || "操作失败");
|
||||
// 操作失败,恢复原状态
|
||||
template.isEnabled = originalStatus;
|
||||
ElMessage.error(res.msg || "切换模板状态失败");
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error("操作失败");
|
||||
// 网络错误,恢复原状态
|
||||
template.isEnabled = originalStatus;
|
||||
ElMessage.error("网络错误,切换模板状态失败");
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
@ -246,41 +230,22 @@ watch(
|
||||
}}
|
||||
</el-tag>
|
||||
<el-tag
|
||||
v-if="template.isEnabled === 1"
|
||||
type="primary"
|
||||
:type="template.isEnabled === 1 ? 'success' : 'info'"
|
||||
size="small"
|
||||
>
|
||||
已启用
|
||||
{{ template.isEnabled === 1 ? "显示中" : "已隐藏" }}
|
||||
</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="template-actions">
|
||||
<el-button
|
||||
v-if="template.isEnabled === 0"
|
||||
type="primary"
|
||||
:type="template.isEnabled === 1 ? 'warning' : 'primary'"
|
||||
size="small"
|
||||
@click="addTemplate(template)"
|
||||
@click="toggleTemplate(template)"
|
||||
>
|
||||
添加到仓库
|
||||
{{ template.isEnabled === 1 ? "隐藏" : "显示" }}
|
||||
</el-button>
|
||||
|
||||
<template v-else>
|
||||
<el-button
|
||||
type="warning"
|
||||
size="small"
|
||||
@click="toggleTemplate(template)"
|
||||
>
|
||||
{{ template.isEnabled === 1 ? "禁用" : "启用" }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
@click="removeTemplate(template)"
|
||||
>
|
||||
移除
|
||||
</el-button>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user