Bläddra i källkod

feat: 放开已上架文章和活动的编辑权限,便于初期维护

- 后端 AdminArticleController.update 允许 published 状态编辑(仍拦截 pending/rejected/withdrawn)
- 前端 ArticleEdit/ActivityEdit 的 published 不再进入 readonly
- 列表页 published 文章按钮由「查看」改为「编辑」
- 保存按钮文案与提示语按状态区分(保存修改/保存草稿)
Xiaogang Liao 1 månad sedan
förälder
incheckning
22dc331f6e

+ 3 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminArticleController.java

@@ -135,8 +135,9 @@ public class AdminArticleController {
         Long articleId = body.get("id") != null ? Long.valueOf(body.get("id").toString()) : null;
         if (articleId != null) {
             Article existing = articleService.getById(articleId);
-            if (existing != null && !"draft".equals(existing.getStatus())) {
-                return Result.error("非草稿状态不可编辑");
+            if (existing != null && !"draft".equals(existing.getStatus())
+                    && !"published".equals(existing.getStatus())) {
+                return Result.error("仅草稿或已上架状态可编辑");
             }
         }
         Article article = new Article();

+ 3 - 3
cfc-web/src/views/admin/ActivityEdit.vue

@@ -6,8 +6,8 @@
         <div class="admin-page-actions">
           <el-button @click="$router.push('/activities')">返回列表</el-button>
           <template v-if="!readonly && activityStatus !== 'rejected'">
-            <el-button type="primary" @click="saveActivity(false)" :loading="saving">保存草稿</el-button>
-            <el-button v-if="isEdit" type="success" @click="handleSubmitReview" :loading="reviewLoading">提交审核</el-button>
+            <el-button type="primary" @click="saveActivity(false)" :loading="saving">{{ activityStatus === 'published' ? '保存修改' : '保存草稿' }}</el-button>
+            <el-button v-if="isEdit && activityStatus !== 'published'" type="success" @click="handleSubmitReview" :loading="reviewLoading">提交审核</el-button>
           </template>
           <template v-if="activityStatus === 'rejected'">
             <el-button type="primary" @click="handleReDraft" :loading="reDraftLoading">保存到草稿箱重新编辑</el-button>
@@ -281,7 +281,7 @@ export default {
           this.activityStatus = d.status || ''
           this.auditReason = d.auditReason || ''
           // Set readonly based on workflow status
-          if (d.status === 'pending' || d.status === 'rejected' || d.status === 'published' || d.status === 'withdrawn') {
+          if (d.status === 'pending' || d.status === 'rejected' || d.status === 'withdrawn') {
             this.readonly = true
           } else if (this.$route.query.readonly === '1') {
             this.readonly = true

+ 3 - 3
cfc-web/src/views/admin/ArticleEdit.vue

@@ -6,7 +6,7 @@
         <div class="admin-page-actions">
           <el-button @click="$router.push('/article-manage')">返回列表</el-button>
           <template v-if="!readonly">
-            <el-button type="primary" @click="handleSave(false)" :loading="saving">保存草稿</el-button>
+            <el-button type="primary" @click="handleSave(false)" :loading="saving">{{ articleStatus === 'published' ? '保存修改' : '保存草稿' }}</el-button>
             <el-button type="success" @click="handleSubmitReview" :loading="reviewLoading" v-if="isEdit && articleStatus === 'draft' && !articleWasPublished">提交审核</el-button>
             <el-button type="success" @click="handleSave(true)" :loading="publishing" v-if="!isEdit || articleStatus === 'draft'">直接发布</el-button>
           </template>
@@ -306,7 +306,7 @@ export default {
             this.readonly = true
           } else if (d.status === 'rejected') {
             this.readonly = true
-          } else if (d.status === 'published' || d.status === 'withdrawn') {
+          } else if (d.status === 'withdrawn') {
             this.readonly = true
           } else {
             this.readonly = this.$route.query.readonly === '1'
@@ -457,7 +457,7 @@ export default {
             console.error('保存维度权重失败', e)
           }
         }
-        this.$message.success(publishNow ? '文章已发布' : '草稿已保存')
+        this.$message.success(publishNow ? '文章已发布' : (this.articleStatus === 'published' ? '修改已保存' : '草稿已保存'))
         this.$router.push('/article-manage')
       } catch (e) {
         this.$message.error(e.message || '保存失败')

+ 2 - 2
cfc-web/src/views/admin/ArticleManage.vue

@@ -161,9 +161,9 @@
                 </el-dropdown-menu>
               </el-dropdown>
             </template>
-            <!-- 发布中:查看 + 下架 + 精选 -->
+            <!-- 发布中:编辑 + 下架 + 精选 -->
             <template v-else-if="row.status === 'published'">
-              <el-button size="mini" type="primary" @click="$router.push('/article-edit?id=' + row.id + '&readonly=1')">查看</el-button>
+              <el-button size="mini" type="primary" @click="$router.push('/article-edit?id=' + row.id)">编辑</el-button>
               <el-dropdown trigger="hover" @command="(cmd) => handleActionCmd(row, cmd)">
                 <el-button size="mini">
                   更多<i class="el-icon-arrow-down el-icon--right"></i>