新增多证书模板管理流程
This commit is contained in:
@@ -19,6 +19,11 @@
|
||||
<el-form-item label="默认发证单位">
|
||||
<el-input v-model.trim="form.default_issuer_name" maxlength="128" />
|
||||
</el-form-item>
|
||||
<el-form-item label="默认证书模板">
|
||||
<el-select v-model="form.default_template_code">
|
||||
<el-option v-for="item in templates" :key="item.code" :label="item.name" :value="item.code" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="默认课程名称">
|
||||
<el-input v-model.trim="form.default_course_name" maxlength="128" />
|
||||
</el-form-item>
|
||||
@@ -47,6 +52,9 @@
|
||||
<el-table-column prop="default_course_name" label="课程名称" min-width="140" />
|
||||
<el-table-column prop="default_stage_name" label="阶段名称" min-width="120" />
|
||||
<el-table-column prop="default_issuer_name" label="发证单位" min-width="140" />
|
||||
<el-table-column label="默认模板" min-width="150">
|
||||
<template #default="{ row }">{{ templateName(row.default_template_code) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" width="100">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.status === 'active' ? 'success' : 'info'">
|
||||
@@ -71,17 +79,19 @@
|
||||
import { ElMessage } from "element-plus";
|
||||
import { computed, onMounted, reactive, ref } from "vue";
|
||||
|
||||
import { http, type ProjectCourse } from "../api";
|
||||
import { http, type CertificateTemplate, type ProjectCourse } from "../api";
|
||||
|
||||
const allProjects = ref<ProjectCourse[]>([]);
|
||||
const keyword = ref("");
|
||||
const editingId = ref<number | null>(null);
|
||||
const templates = ref<CertificateTemplate[]>([]);
|
||||
const form = reactive({
|
||||
code: "",
|
||||
name: "",
|
||||
default_course_name: "",
|
||||
default_stage_name: "",
|
||||
default_issuer_name: "本公司",
|
||||
default_template_code: "classic",
|
||||
status: "active",
|
||||
});
|
||||
|
||||
@@ -110,6 +120,15 @@ async function loadProjects() {
|
||||
allProjects.value = data;
|
||||
}
|
||||
|
||||
async function loadTemplates() {
|
||||
const { data } = await http.get<CertificateTemplate[]>("/admin/certificate-templates");
|
||||
templates.value = data;
|
||||
}
|
||||
|
||||
function templateName(code: string) {
|
||||
return templates.value.find((item) => item.code === code)?.name || code;
|
||||
}
|
||||
|
||||
function editProject(row: ProjectCourse) {
|
||||
editingId.value = row.id;
|
||||
Object.assign(form, {
|
||||
@@ -118,6 +137,7 @@ function editProject(row: ProjectCourse) {
|
||||
default_course_name: row.default_course_name || "",
|
||||
default_stage_name: row.default_stage_name || "",
|
||||
default_issuer_name: row.default_issuer_name,
|
||||
default_template_code: row.default_template_code,
|
||||
status: row.status,
|
||||
});
|
||||
}
|
||||
@@ -130,6 +150,7 @@ function resetForm() {
|
||||
default_course_name: "",
|
||||
default_stage_name: "",
|
||||
default_issuer_name: "本公司",
|
||||
default_template_code: "classic",
|
||||
status: "active",
|
||||
});
|
||||
}
|
||||
@@ -141,6 +162,7 @@ function projectPayload() {
|
||||
default_course_name: form.default_course_name || null,
|
||||
default_stage_name: form.default_stage_name || null,
|
||||
default_issuer_name: form.default_issuer_name,
|
||||
default_template_code: form.default_template_code,
|
||||
status: form.status,
|
||||
};
|
||||
}
|
||||
@@ -165,7 +187,7 @@ async function toggleStatus(row: ProjectCourse) {
|
||||
await loadProjects();
|
||||
}
|
||||
|
||||
onMounted(loadProjects);
|
||||
onMounted(() => Promise.all([loadProjects(), loadTemplates()]));
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
Reference in New Issue
Block a user