From 08fff72a7cfdd238fd51b0976fc3371c8fc05b5c Mon Sep 17 00:00:00 2001
From: shinnosuke <tantao@1hoper.com>
Date: 星期四, 06 八月 2026 22:46:28 +0800
Subject: [PATCH] fix(admin): 支持上传资讯封面图 (bug #24043)
---
talent-card-admin/src/views/TalentNewsEditView.vue | 17 ++++++++++++++++-
talent-card-admin/src/views/TalentNewsPublishView.vue | 17 ++++++++++++++++-
talent-card-admin/src/style.css | 9 +++++++++
3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/talent-card-admin/src/style.css b/talent-card-admin/src/style.css
index baede4e..2ff1f87 100644
--- a/talent-card-admin/src/style.css
+++ b/talent-card-admin/src/style.css
@@ -3502,6 +3502,15 @@
padding: 16px 0 10px;
}
+.news-cover-preview {
+ width: 120px;
+ height: 72px;
+ margin-left: 12px;
+ vertical-align: middle;
+ border: 1px solid #d9dee8;
+ border-radius: 4px;
+}
+
.article-management-table {
color: #111827;
font-size: 12px;
diff --git a/talent-card-admin/src/views/TalentNewsEditView.vue b/talent-card-admin/src/views/TalentNewsEditView.vue
index c792ee4..77700af 100644
--- a/talent-card-admin/src/views/TalentNewsEditView.vue
+++ b/talent-card-admin/src/views/TalentNewsEditView.vue
@@ -2,13 +2,14 @@
import { nextTick, onMounted, reactive, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
+import type { UploadFile } from 'element-plus'
import {
ArrowLeftBold,
ArrowRightBold,
Link,
Picture,
} from '@element-plus/icons-vue'
-import { getAdminNewsDetail, updateAdminNews } from '../api/admin'
+import { getAdminNewsDetail, updateAdminNews, uploadAdminImage } from '../api/admin'
interface NewsForm {
title: string
@@ -43,6 +44,13 @@
function updateContent(event: Event) {
form.content = (event.target as HTMLElement).innerHTML
+}
+
+async function uploadCover(file: UploadFile) {
+ if (!file.raw) return
+ const result = await uploadAdminImage(file.raw)
+ form.coverUrl = result.url
+ ElMessage.success('封面图上传成功')
}
function formatTime(value?: string) {
@@ -153,6 +161,13 @@
<el-switch v-model="form.pinned" />
</el-form-item>
+ <el-form-item label="封面图">
+ <el-upload accept="image/*" :auto-upload="false" :show-file-list="false" :on-change="uploadCover">
+ <el-button>上传图片</el-button>
+ </el-upload>
+ <el-image v-if="form.coverUrl" class="news-cover-preview" :src="form.coverUrl" fit="cover" />
+ </el-form-item>
+
<el-form-item>
<el-button type="primary" @click="saveNews">保存</el-button>
</el-form-item>
diff --git a/talent-card-admin/src/views/TalentNewsPublishView.vue b/talent-card-admin/src/views/TalentNewsPublishView.vue
index a0476c7..fb41348 100644
--- a/talent-card-admin/src/views/TalentNewsPublishView.vue
+++ b/talent-card-admin/src/views/TalentNewsPublishView.vue
@@ -2,13 +2,14 @@
import { reactive } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
+import type { UploadFile } from 'element-plus'
import {
ArrowLeftBold,
ArrowRightBold,
Link,
Picture,
} from '@element-plus/icons-vue'
-import { createAdminNews } from '../api/admin'
+import { createAdminNews, uploadAdminImage } from '../api/admin'
interface NewsForm {
title: string
@@ -38,6 +39,13 @@
function updateContent(event: Event) {
form.content = (event.target as HTMLElement).innerHTML
+}
+
+async function uploadCover(file: UploadFile) {
+ if (!file.raw) return
+ const result = await uploadAdminImage(file.raw)
+ form.coverUrl = result.url
+ ElMessage.success('封面图上传成功')
}
async function saveNews() {
@@ -103,6 +111,13 @@
<el-switch v-model="form.pinned" />
</el-form-item>
+ <el-form-item label="封面图">
+ <el-upload accept="image/*" :auto-upload="false" :show-file-list="false" :on-change="uploadCover">
+ <el-button>上传图片</el-button>
+ </el-upload>
+ <el-image v-if="form.coverUrl" class="news-cover-preview" :src="form.coverUrl" fit="cover" />
+ </el-form-item>
+
<el-form-item>
<el-button type="primary" @click="saveNews">保存</el-button>
</el-form-item>
--
Gitblit v1.7.1