|
|
@@ -5,6 +5,7 @@ import { useRoute } from "vue-router";
|
|
|
import { CompLog } from "@/libs/log.lib";
|
|
|
import { ChapterManager } from "@/models/report.model";
|
|
|
import * as reportTemplateService from "@/services/reportTemplate.service"
|
|
|
+import * as reportTemplateLogoService from "@/services/reportTemplateLogo.service"
|
|
|
import ReportTemplateName from "./components/ReportTemplateName.vue"
|
|
|
import ReportTemplateLabel from "./components/ReportTemplateTags.vue"
|
|
|
import RelationCompanyInput from '../report/components/report-create/RelationCompanyInput.vue';
|
|
|
@@ -17,10 +18,14 @@ import ChapterTypeSelect from "../report/components/ChapterTypeSelect.vue";
|
|
|
import LogoComponent from "../report/components/LogoComponent.vue";
|
|
|
import ChapterEditor from "../report/components/ChapterEditor.vue";
|
|
|
import { message } from "ant-design-vue";
|
|
|
+import { useAuthStore } from "@/stores/auth.store";
|
|
|
|
|
|
const logError = CompLog.logErr("ReportTemplateEditorView")
|
|
|
|
|
|
+// 当前路由
|
|
|
const route = useRoute()
|
|
|
+// 权限store
|
|
|
+const authStore = useAuthStore()
|
|
|
|
|
|
const reportTemplate = ref<ReportTemplateSave | null>(null);
|
|
|
|
|
|
@@ -32,11 +37,17 @@ const chapterTypeSelectVisible = ref(false);
|
|
|
const chapterManager = new ChapterManager();
|
|
|
// 正在保存状态
|
|
|
const saveLoading = ref(false);
|
|
|
+// logo url
|
|
|
+const logoUrl = ref<string | undefined>(undefined)
|
|
|
|
|
|
function fetchReportTemplate(id: number) {
|
|
|
reportTemplateService.get(id).then((data) => {
|
|
|
reportTemplate.value = data;
|
|
|
chapterManager.setChapters(reportTemplate.value.chapters)
|
|
|
+ // 设置Logo信息
|
|
|
+ if (reportTemplate.value.id && authStore.token) {
|
|
|
+ logoUrl.value = reportTemplateLogoService.link(reportTemplate.value.id, authStore.token)
|
|
|
+ }
|
|
|
}).catch(logError)
|
|
|
}
|
|
|
|
|
|
@@ -87,6 +98,41 @@ function onCompanyChange(companyId: number) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * Logo组件上传处理函数
|
|
|
+ * @param file 图片文件
|
|
|
+ */
|
|
|
+function onLogoChange(file: File) {
|
|
|
+ if (!reportTemplate.value) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append("file", file)
|
|
|
+ formData.append("templateId", reportTemplate.value.id.toString())
|
|
|
+
|
|
|
+ reportTemplateLogoService.upload(formData).then((resp) => {
|
|
|
+ if (resp && reportTemplate.value && authStore.token) {
|
|
|
+ reportTemplate.value.logoPath = resp;
|
|
|
+ logoUrl.value = reportTemplateLogoService.link(reportTemplate.value.id, authStore.token)
|
|
|
+ onSave()
|
|
|
+ }
|
|
|
+ }).catch(logError)
|
|
|
+}
|
|
|
+
|
|
|
+function onLogoDelete() {
|
|
|
+ if (!reportTemplate.value || !reportTemplate.value.logoPath) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ reportTemplateLogoService.remove(reportTemplate.value.id).then((resp) => {
|
|
|
+ if (resp) {
|
|
|
+ if (reportTemplate.value) {
|
|
|
+ reportTemplate.value.logoPath = ''
|
|
|
+ }
|
|
|
+ logoUrl.value = undefined
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
const id = parseInt(route.params.id as string)
|
|
|
if (id) {
|
|
|
@@ -108,7 +154,7 @@ onMounted(() => {
|
|
|
</a-space>
|
|
|
</a-col>
|
|
|
<a-col :span="12">
|
|
|
- <LogoComponent />
|
|
|
+ <LogoComponent @change="onLogoChange" @delete="onLogoDelete" :url="logoUrl" />
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
<a-divider />
|