Browse Source

界面优化

dsy 2 months ago
parent
commit
ef69aaa31b

+ 1 - 1
.env

@@ -11,4 +11,4 @@ VUE_APP_BookWebSI = '/GCLSBookWebSI/ServiceInterface'
 VUE_APP_EepServer = '/EEPServer/SI'
 
 #version
-VUE_APP_VERSION = '2026.06.10'
+VUE_APP_VERSION = '2026.06.12'

+ 48 - 6
src/components/CommonPreview.vue

@@ -73,6 +73,7 @@
               deep,
               is_leaf_chapter,
               is_my_edit_task,
+              is_my_audit_task,
               is_show_submit_audit_button,
             } in node_list"
             :key="nodeId"
@@ -83,7 +84,15 @@
             <span
               class="name nowrap-ellipsis"
               :title="name"
-              :style="{ color: computedNameColor(status, is_leaf_chapter, is_my_edit_task, nodeId) }"
+              :style="{
+                color: computedNameColor({
+                  status,
+                  is_leaf_chapter,
+                  is_my_edit_task,
+                  nodeId,
+                  is_my_audit_task: isTrue(is_my_audit_task),
+                }),
+              }"
             >
               {{ name }}
             </span>
@@ -1361,13 +1370,19 @@ export default {
     },
     /**
      * 计算章节名称颜色
-     * @param {string} status - 章节状态
-     * @param {boolean} is_leaf_chapter - 是否是叶子章节
-     * @param {string} is_my_edit_task - 是否是我的编辑任务
-     * @param {string} nodeId - 节点ID
+     * @param {object} param
+     * @param {string} param.status - 章节状态
+     * @param {boolean} param.is_leaf_chapter - 是否是叶子章节
+     * @param {string} param.is_my_edit_task - 是否是我的编辑任务
+     * @param {string} param.nodeId - 节点ID
+     * @param {boolean} param.is_my_audit_task - 是否是我的审核任务
      * @returns {string} - 颜色值
      */
-    computedNameColor(status, is_leaf_chapter, is_my_edit_task, nodeId) {
+    computedNameColor({ status, is_leaf_chapter, is_my_edit_task, nodeId, is_my_audit_task }) {
+      if (this.type === 'audit') {
+        return this.computedAuditNameColor({ status, is_leaf_chapter, is_my_audit_task, nodeId });
+      }
+      // 其他页面都使用相同的颜色计算逻辑
       if (!isTrue(is_leaf_chapter)) {
         return '';
       }
@@ -1392,6 +1407,33 @@ export default {
       return color;
     },
     /**
+     * 计算审核页面章节名称颜色
+     * @param {object} param
+     * @param {string} param.status - 章节状态
+     * @param {boolean} param.is_leaf_chapter - 是否是叶子章节
+     * @param {string} param.is_my_audit_task - 是否是我的审核任务
+     * @param {string} param.nodeId - 节点ID
+     * @returns {string} - 颜色值
+     */
+    computedAuditNameColor({ status, is_leaf_chapter, is_my_audit_task, nodeId }) {
+      if (!isTrue(is_leaf_chapter)) {
+        return '';
+      }
+      // 当前选中节点,显示高亮蓝色
+      if (this.curSelectId === nodeId) {
+        return '#4095e5';
+      }
+      // 审核通过显示绿色
+      if (status === 2) {
+        return '#27ae60';
+      }
+      // 其他状态仅当是我的审核任务时显示蓝色
+      if (is_my_audit_task) {
+        return '#74b9ff';
+      }
+      return '';
+    },
+    /**
      * 切换左侧导航栏显示与隐藏
      */
     toggleNavigationShow() {

+ 2 - 4
src/views/create_project/createSuccess.vue

@@ -1,11 +1,9 @@
 <template>
   <div class="create-success">
-    <p class="tips">教材编辑项目《{{ project_name }}》创建成功,请切换到“教材管理” > “我的项目”进行管理。</p>
+    <p class="tips">教材编辑项目《{{ project_name }}》创建成功,请切换到“教材管理”进行管理。</p>
     <div class="btns">
       <el-button type="primary" @click="$router.push('/create_project/create')">创建新的项目</el-button>
-      <el-button type="primary" @click="$router.push('/personal_workbench/project')">
-        跳转到“教材管理” > “我的项目”
-      </el-button>
+      <el-button type="primary" @click="$router.push('/personal_workbench/project')"> 跳转到“教材管理” </el-button>
     </div>
   </div>
 </template>

+ 17 - 7
src/views/home/index.vue

@@ -212,10 +212,14 @@
           <el-table-column prop="version" label="版本" width="80" align="center" header-align="center" />
           <el-table-column prop="member_name_desc" label="作者" width="220" align="center" header-align="center" />
           <el-table-column prop="shangjia_date" label="上架日期" width="150" align="center" header-align="center" />
-          <el-table-column prop="revise_count" label="修订次数" align="center" header-align="center" />
+          <el-table-column prop="revise_count" label="修订次数" align="center" header-align="center">
+            <template slot-scope="{ row }">
+              {{ row.revise_count === 0 ? `首版` : `第${row.revise_count}修订` }}
+            </template>
+          </el-table-column>
           <el-table-column fixed="right" label="操作" align="center" header-align="center">
             <template slot-scope="{ row }">
-              <el-button type="text" @click="jumpDetail(row.id, 'manage')">进入</el-button>
+              <el-button type="text" @click="jumpDetail(row.id, 'launch')">进入</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -408,6 +412,11 @@ export default {
       this.currentOverview = key;
       this.getList({ cur_page: 1 });
     },
+    /**
+     * @description 首页功能入口点击事件,扩展工具单独处理
+     * @param {string} path - 路由路径
+     * @param {number} index - 点击项的索引
+     */
     onItemClick(path, index) {
       if (index === 4) {
         this.openToolModal();
@@ -426,6 +435,10 @@ export default {
         this.closeToolModal();
       }
     },
+    /**
+     * @description 打开扩展工具页面
+     * @param {string} type - 工具类型,template-模板库,pinyin-拼音校正库
+     */
     openToolPage(type) {
       this.closeToolModal();
       if (type === 'template') {
@@ -434,6 +447,7 @@ export default {
       }
       if (type === 'pinyin') {
         this.$router.push({ name: 'PersonalWorkbenchPinyinCorrectionList' });
+        return;
       }
     },
     jump(path) {
@@ -442,7 +456,7 @@ export default {
     /**
      * 跳转详情页
      * @param {string} projectId - 项目ID
-     * @param {'manage' | 'edit' | 'audit'} type - 进入类型,manage-管理页,edit-编辑页,audit-审核页
+     * @param {'manage' | 'edit' | 'audit' | 'launch'} type - 进入类型,manage-管理页,edit-编辑页,audit-审核页,launch-发布页
      */
     jumpDetail(projectId, type) {
       this.$router.push({ path: `/personal_workbench/courseware_detail/${projectId}?type=${type}` });
@@ -599,11 +613,7 @@ export default {
 
   .list-section {
     min-height: calc(100vh - 530px);
-    padding: 22px 24px 12px;
     background: rgba(255, 255, 255, 96%);
-    border: 1px solid rgba(226, 232, 240, 82%);
-    border-radius: 20px;
-    box-shadow: 0 16px 32px rgba(15, 23, 42, 4%);
   }
 
   .project-list {

+ 6 - 5
src/views/personal_workbench/check_task/audit/index.vue

@@ -24,7 +24,7 @@
         >
           审核驳回
         </span>
-        <span class="link" @click="goBackBookList">返回教材列表</span>
+        <span class="link" @click="goBack">返回</span>
       </template>
     </CommonPreview>
   </div>
@@ -45,6 +45,7 @@ export default {
     return {
       id: this.$route.params.id || '',
       project_id: this.$route.query.project_id || '',
+      type: this.$route.query.type || '',
       isSubmitting: false,
       actionTip: {
         complete: '审核完成',
@@ -80,9 +81,9 @@ export default {
         }
 
         this.isSubmitting = true;
-        await FinishCoursewareCurFlowNodeAudit({ id: this.id, is_pass });
+        await FinishCoursewareCurFlowNodeAudit({ id: this.$refs.preview.select_node, is_pass });
         this.$message.success('操作成功');
-        this.$refs.preview.getBookCoursewareInfo(this.id);
+        this.$refs.preview.getBookCoursewareInfo(this.$refs.preview.select_node);
       } catch (err) {
         // 忽略用户取消确认的情况
         if (err === 'cancel' || err === 'close') return;
@@ -93,8 +94,8 @@ export default {
         this.isSubmitting = false;
       }
     },
-    goBackBookList() {
-      this.$router.push({ path: `/personal_workbench/check_task` });
+    goBack() {
+      this.$router.push({ path: `/personal_workbench/courseware_detail/${this.project_id}?type=${this.type}` });
     },
 
     // 点击添加审核意见

+ 1 - 1
src/views/personal_workbench/common/menu.vue

@@ -45,7 +45,7 @@ export default {
       if (this.onlyKey === '/personal_workbench/check_task') {
         subMenuList = onlyMenuList;
       } else {
-        subMenuList = subMenuLists;
+        subMenuList = [subMenuLists.find((item) => item.key === this.onlyKey)];
       }
     }
     return {

+ 44 - 16
src/views/personal_workbench/courseware_detail/index.vue

@@ -2,7 +2,7 @@
 <template>
   <div class="courseware-detail">
     <div class="page-header">
-      <span class="header-back" @click="goBack">
+      <span v-if="normalizedType !== 'launch'" class="header-back" @click="goBack">
         <SvgIcon icon-class="courseware-undo" size="16" />
       </span>
     </div>
@@ -18,7 +18,7 @@
         <div class="detail-wrap">
           <div class="book-top">
             <span>{{ project.name || '-' }} </span>
-            <span class="book-button" title="查看详细信息" @click="goInfo">
+            <span v-if="normalizedType === 'manage'" class="book-button" title="查看详细信息" @click="goInfo">
               <SvgIcon icon-class="courseware-list" size="18" />
             </span>
           </div>
@@ -49,7 +49,7 @@
             </div>
           </div>
           <div class="book-intro">简介:{{ project.content_intro || '-' }}</div>
-          <div v-if="normalizedType === 'manage'" class="operator-wrap">
+          <div v-if="['manage', 'launch'].includes(normalizedType)" class="operator-wrap">
             <div class="preview-button" @click="managePreview">
               <SvgIcon icon-class="courseware-eye" size="20" /><span>预览</span>
             </div>
@@ -72,8 +72,9 @@
             ></div>
           </div>
         </div>
-        <div v-if="operateButtons.length > 0 && normalizedType === 'manage'" class="apply-wrap">
-          <div class="request-status">
+        <div v-if="normalizedType === 'manage'" class="apply-wrap">
+          <div v-if="project.status_name.length > 0" class="request-status">{{ project.status_name }}</div>
+          <div v-if="project.request_status_name.length > 0" class="request-status">
             {{ project.request_status_name }}
           </div>
           <div style="flex: 1"></div>
@@ -186,7 +187,7 @@ import BookUnifiedAttr from '@/views/personal_workbench/project/components/BookU
 
 import { GetProjectInfo, ProjectRequestOperate } from '@/api/project';
 
-const TYPE_LIST = ['edit', 'manage', 'audit'];
+const TYPE_LIST = ['edit', 'manage', 'audit', 'launch'];
 // 进度步骤配置
 const PROGRESS_STEP_CONFIG = [
   { key: 'create', label: '创建', finishKey: 'is_finish_create', dateKey: 'create_date' },
@@ -281,12 +282,12 @@ export default {
       );
     },
     stepClass(idx) {
-      if (this.currentStage > idx) return 'done';
+      if (this.progressSteps[idx - 1].finished) return 'done';
       if (this.currentStage === idx) return 'active';
       return 'pending';
     },
     stepIcon(idx) {
-      if (this.currentStage > idx) return '✓';
+      if (this.progressSteps[idx - 1].finished) return '✓';
       return String(idx);
     },
     /**
@@ -343,32 +344,58 @@ export default {
       }
     },
     goEdit() {
-      this.$router.push({ path: `/personal_workbench/edit_task/preview`, query: { project_id: this.projectId } });
+      this.$router.push({
+        path: `/personal_workbench/edit_task/preview`,
+        query: { project_id: this.projectId, type: this.normalizedType },
+      });
     },
     goAudit() {
-      this.$router.push({ path: `/personal_workbench/check_task/audit`, query: { project_id: this.projectId } });
+      this.$router.push({
+        path: `/personal_workbench/check_task/audit`,
+        query: { project_id: this.projectId, type: this.normalizedType },
+      });
     },
     goManage(type) {
       if (type === 'editorial') {
-        this.$router.push({ name: 'ProductionEditorial', params: { id: this.projectId } });
+        this.$router.push({
+          name: 'ProductionEditorial',
+          params: { id: this.projectId },
+          query: { type: this.normalizedType },
+        });
         return;
       }
       if (type === 'resource') {
-        this.$router.push({ name: 'ProjectResource', params: { id: this.projectId } });
+        this.$router.push({
+          name: 'ProjectResource',
+          params: { id: this.projectId },
+          query: { type: this.normalizedType },
+        });
         return;
       }
     },
     goMindMap() {
-      this.$router.push({ path: `/project_manage/project/mind_map/${this.projectId}` });
+      this.$router.push({
+        path: `/project_manage/project/mind_map/${this.projectId}`,
+        query: { type: this.normalizedType },
+      });
     },
     goKnowledgeGraph() {
-      this.$router.push({ path: `/project_manage/project/vis_network/${this.projectId}` });
+      this.$router.push({
+        path: `/project_manage/project/vis_network/${this.projectId}`,
+        query: { type: this.normalizedType },
+      });
     },
     goInfo() {
-      this.$router.push({ path: `/personal_workbench/project_info/${this.projectId}`, query: { isManage: 'true' } });
+      this.$router.push({
+        path: `/personal_workbench/project_info/${this.projectId}`,
+        query: { isManage: 'true', type: this.normalizedType },
+      });
     },
     managePreview() {
-      this.$router.push({ path: `/project_manage/project/preview/${this.projectId}` });
+      this.$router.push({
+        path: `/project_manage/project/preview/${this.projectId}`,
+        query: { type: this.normalizedType },
+      });
     },
   },
 };
@@ -637,6 +664,7 @@ export default {
           display: inline-block;
           width: 6px;
           height: 6px;
+          margin-right: 2px;
           content: '';
           background: #2563eb;
           border-radius: 50%;

+ 2 - 1
src/views/personal_workbench/edit_task/edit/index.vue

@@ -102,6 +102,7 @@ export default {
     return {
       id: this.$route.params.courseware_id,
       project_id: this.$route.query.project_id,
+      project_type: this.$route.query.type,
       type: this.$route.query.template_type,
       courseware_info: {},
       courseware_list: [],
@@ -274,7 +275,7 @@ export default {
       } else {
         this.$router.push({
           path: `/personal_workbench/edit_task/preview`,
-          query: { id: this.id, project_id: this.project_id, visible_id },
+          query: { id: this.id, project_id: this.project_id, visible_id, type: this.project_type },
         });
       }
     },

+ 5 - 4
src/views/personal_workbench/edit_task/preview/index.vue

@@ -18,7 +18,7 @@
         <span v-if="isTrue(courseware.is_can_submit_audit)" class="link" @click="submitCoursewareToAuditFlow()">
           提交审核
         </span>
-        <span class="link" @click="goBackBookList()">返回教材列表</span>
+        <span class="link" @click="goBack">返回</span>
       </template>
     </CommonPreview>
 
@@ -71,6 +71,7 @@ export default {
     return {
       id: this.$route.query.id,
       project_id: this.$route.query.project_id,
+      type: this.$route.query.type || '',
       isTrue,
       visibleTemplate: false,
       background: {
@@ -98,15 +99,15 @@ export default {
     });
   },
   methods: {
-    goBackBookList() {
-      this.$router.push({ path: '/personal_workbench/edit_task' });
+    goBack() {
+      this.$router.push({ path: `/personal_workbench/courseware_detail/${this.project_id}?type=${this.type}` });
     },
     editTask() {
       const visibleId = this.$refs.preview.getFirstVisibleComponentId();
 
       this.$router.push({
         path: `/personal_workbench/edit_task/edit/${this.$refs.preview.select_node}`,
-        query: { project_id: this.project_id, visible_id: visibleId },
+        query: { project_id: this.project_id, visible_id: visibleId, type: this.type },
       });
     },
     /**

+ 20 - 17
src/views/personal_workbench/pinyin_correction_list/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="template">
+    <MenuPage only-key="/personal_workbench/pinyin_correction_list" />
     <div class="template-list">
       <div id="query-form">
         <el-form inline>
@@ -127,6 +128,7 @@
 
 <script>
 import PaginationPage from '@/components/PaginationPage.vue';
+import MenuPage from '../common/menu.vue';
 
 import { PageQueryPinyinCorrectionListPersonal } from '@/api/list.js';
 import {
@@ -140,6 +142,7 @@ export default {
   name: 'PersonalWorkbenchPinyinCorrectionList',
   components: {
     PaginationPage,
+    MenuPage,
   },
   data() {
     return {
@@ -423,36 +426,36 @@ export default {
       }
     },
     addTone(number, con) {
-      let _this = this;
+      let result = con;
       let zmList = ['a', 'o', 'e', 'i', 'u', 'v', 'A', 'O', 'E', 'I', 'U', 'n', 'm'];
       if (number) {
         for (let i = 0; i < zmList.length; i++) {
           let zm = zmList[i];
-          if (con.indexOf(zm) > -1) {
-            let zm2 = _this.tableData[i][number - 1];
-            if (con.indexOf('iu') > -1) {
-              zm2 = _this.tableData[4][number - 1];
-              con = con.replace('u', zm2);
-            } else if (con.indexOf('ui') > -1) {
-              zm2 = _this.tableData[3][number - 1];
-              con = con.replace('i', zm2);
+          if (result.indexOf(zm) > -1) {
+            let zm2 = this.tableData[i][number - 1];
+            if (result.indexOf('iu') > -1) {
+              zm2 = this.tableData[4][number - 1];
+              result = result.replace('u', zm2);
+            } else if (result.indexOf('ui') > -1) {
+              zm2 = this.tableData[3][number - 1];
+              result = result.replace('i', zm2);
             } else if (
-              con.indexOf('yv') > -1 ||
-              con.indexOf('jv') > -1 ||
-              con.indexOf('qv') > -1 ||
-              con.indexOf('xv') > -1
+              result.indexOf('yv') > -1 ||
+              result.indexOf('jv') > -1 ||
+              result.indexOf('qv') > -1 ||
+              result.indexOf('xv') > -1
             ) {
-              zm2 = _this.tableData[4][number - 1];
-              con = con.replace('v', zm2);
+              zm2 = this.tableData[4][number - 1];
+              result = result.replace('v', zm2);
             } else {
-              con = con.replace(zm, zm2);
+              result = result.replace(zm, zm2);
             }
 
             break;
           }
         }
       }
-      return con;
+      return result;
     },
   },
 };

+ 5 - 1
src/views/personal_workbench/project/ProductionEditorialManage.vue

@@ -17,7 +17,7 @@
         <div class="operator flex">
           <span class="link" @click="openBookUnifiedTitle()">教材标题设置</span>
           <span class="link" @click="openBookUnifiedAttrib()">教材样式设置</span>
-          <span class="link" @click="$router.push({ path: `/personal_workbench/project` })">返回项目列表</span>
+          <span class="link" @click="goBack"> 返回 </span>
         </div>
       </div>
     </div>
@@ -226,6 +226,7 @@ export default {
   data() {
     return {
       book_id: this.$route.params.id,
+      type: this.$route.query.type || '',
       isEnable,
       visible: false,
       curSelectId: '', // 当前选中的章节ID
@@ -691,6 +692,9 @@ export default {
         this.getProjectBaseInfo();
       });
     },
+    goBack() {
+      this.$router.push({ path: `/personal_workbench/courseware_detail/${this.book_id}?type=${this.type}` });
+    },
   },
 };
 </script>

+ 7 - 1
src/views/personal_workbench/project/ProductionResourceManage.vue

@@ -22,7 +22,12 @@
               <span class="link" @click="handleChangeFile">更换文件</span>
               <span class="link" @click="handleMoveFile">移动文件</span>
               <span class="link" @click="handlePersonal">设置项目成员资源使用权限</span>
-              <span class="link" @click="$router.push({ path: `/personal_workbench/project` })">返回项目列表</span>
+              <span
+                class="link"
+                @click="$router.push({ path: `/personal_workbench/courseware_detail/${book_id}?type=${type}` })"
+              >
+                返回
+              </span>
             </div>
           </div>
         </div>
@@ -318,6 +323,7 @@ export default {
     return {
       isEnable,
       book_id: this.$route.params.id,
+      type: this.$route.query.type || '',
       node_list: [],
       select_node: '',
       project_info: {}, // 项目基本信息

+ 6 - 1
src/views/personal_workbench/project/ProjectInfoManage.vue

@@ -14,7 +14,11 @@
       <div class="courseware">
         <span class="name-path"></span>
         <div class="operator">
-          <span class="link" @click="$router.push({ path: backPath })">返回项目列表</span>
+          <span
+            class="link"
+            @click="$router.push({ path: `/personal_workbench/courseware_detail/${id}?type=${projectType}` })"
+            >返回</span
+          >
         </div>
       </div>
     </div>
@@ -240,6 +244,7 @@ export default {
       id: this.$route.params.id,
       isManage: this.$route.query.isManage === 'true', // 是否为管理模式
       backPath: this.$route.query.backPath || '/personal_workbench/project',
+      projectType: this.$route.query.type || '',
       labelInput: '',
       selectMembersTitle: '',
       visibleMembers: false,

+ 1 - 0
src/views/personal_workbench/template_list/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="template">
+    <MenuPage only-key="/personal_workbench/template_list" />
     <div class="template-list">
       <div id="query-form">
         <el-form inline>

+ 5 - 8
src/views/project_manage/project/ProjectMindMap.vue

@@ -1,14 +1,12 @@
 <template>
   <div class="project-mind-map">
-    <MenuPage cur-key="/project_manage/project" />
-
     <div class="project-mind-map__header">
       <span class="name">{{ project_info.name }}</span>
       <div class="courseware">
         <div class="operator flex">
           <span class="link" @click="getMangerGenerateMindMapByBookContent">根据教材内容生成思维导图</span>
           <span class="link" @click="saveBookMindMap">保存</span>
-          <span class="link" @click="goBackBookList">返回项目列表</span>
+          <span class="link" @click="goBack">返回</span>
         </div>
       </div>
     </div>
@@ -24,7 +22,6 @@
 </template>
 
 <script>
-import MenuPage from '@/views/personal_workbench/common/menu.vue';
 import MindMap from '@/components/MindMap.vue';
 import { GetProjectBaseInfo } from '@/api/project';
 import { MangerGetBookMindMap, MangerGenerateMindMapByBookContent, MangerSaveBookMindMap } from '@/api/book';
@@ -32,12 +29,12 @@ import { MangerGetBookMindMap, MangerGenerateMindMapByBookContent, MangerSaveBoo
 export default {
   name: 'ProjectMindMap',
   components: {
-    MenuPage,
     MindMap,
   },
   data() {
     return {
       project_id: this.$route.params.projectId || '',
+      type: this.$route.query.type || '',
       book_id: '',
       project_info: {}, // 项目基本信息
       isWaiting: false,
@@ -49,8 +46,8 @@ export default {
     this.getProjectBaseInfo();
   },
   methods: {
-    goBackBookList() {
-      this.$router.push({ path: `/project_manage/project` });
+    goBack() {
+      this.$router.push({ path: `/personal_workbench/courseware_detail/${this.book_id}?type=${this.type}` });
     },
     /**
      * 获取项目基本信息
@@ -117,7 +114,7 @@ export default {
 @use '@/styles/mixin.scss' as *;
 
 .project-mind-map {
-  @include page-content(true);
+  @include page-content(false);
 
   &__header {
     .name {

+ 4 - 3
src/views/project_manage/project/ProjectPreview.vue

@@ -9,7 +9,7 @@
           申请退回
         </span>
         <span class="link" @click="createBookPreviewURL(projectId)">生成预览链接</span>
-        <span class="link" @click="goBackBookList">返回项目列表</span>
+        <span class="link" @click="goBack">返回</span>
       </template>
     </CommonPreview>
 
@@ -37,6 +37,7 @@ export default {
   data() {
     return {
       project_id: this.$route.params.projectId || '',
+      type: this.$route.query.type || '',
       isTrue,
       requestBookVisible: false,
       preview_url: '',
@@ -44,8 +45,8 @@ export default {
     };
   },
   methods: {
-    goBackBookList() {
-      this.$router.push({ path: `/personal_workbench/project` });
+    goBack() {
+      this.$router.push({ path: `/personal_workbench/courseware_detail/${this.project_id}?type=${this.type}` });
     },
     // 打开申请上架对话框
     openRequestBookDialog() {

+ 5 - 8
src/views/project_manage/project/ProjectVisNetwork.vue

@@ -1,14 +1,12 @@
 <template>
   <div class="project-mind-map">
-    <MenuPage cur-key="/project_manage/project" />
-
     <div class="project-mind-map__header">
       <span class="name">{{ project_info.name }}</span>
       <div class="courseware">
         <div class="operator flex">
           <span class="link" @click="getMangerGenerateVisNetworkByBook">根据教材内容生成知识图谱</span>
           <span class="link" @click="saveBookVisnetwork">保存</span>
-          <span class="link" @click="goBackBookList">返回项目列表</span>
+          <span class="link" @click="goBack">返回</span>
         </div>
       </div>
     </div>
@@ -18,7 +16,6 @@
 </template>
 
 <script>
-import MenuPage from '@/views/personal_workbench/common/menu.vue';
 import VisNetwork from '@/components/VisNetwork.vue';
 import { GetProjectBaseInfo } from '@/api/project';
 import { MangerGenerateKnowledgeGraphByBookContent, SaveBookKnowledgeGraph } from '@/api/book';
@@ -26,12 +23,12 @@ import { MangerGenerateKnowledgeGraphByBookContent, SaveBookKnowledgeGraph } fro
 export default {
   name: 'ProjectVisNetwork',
   components: {
-    MenuPage,
     VisNetwork,
   },
   data() {
     return {
       project_id: this.$route.params.projectId || '',
+      type: this.$route.query.type || '',
       book_id: '',
       project_info: {}, // 项目基本信息
       isWaiting: false,
@@ -43,8 +40,8 @@ export default {
     this.getProjectBaseInfo();
   },
   methods: {
-    goBackBookList() {
-      this.$router.push({ path: `/project_manage/project` });
+    goBack() {
+      this.$router.push({ path: `/personal_workbench/courseware_detail/${this.project_id}?type=${this.type}` });
     },
     /**
      * 获取项目基本信息
@@ -101,7 +98,7 @@ export default {
 @use '@/styles/mixin.scss' as *;
 
 .project-mind-map {
-  @include page-content(true);
+  @include page-content(false);
 
   &__header {
     .name {