Browse Source

添加审核复审进度统计和按页面序号查询

fuyou 5 months ago
parent
commit
78ccb2c6ff

+ 1 - 1
check-admin/src/main/resources/application-druid.yml

@@ -6,7 +6,7 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/wlkg?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://192.168.31.68/wlkg?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
                 password: 12345
             # 从库数据源

+ 15 - 0
check-business/src/main/java/com/check/business/controller/TblPageController.java

@@ -111,4 +111,19 @@ public class TblPageController extends BaseController
         List<TblPage> list = tblPageService.getbybook(bookGuid);
         return getDataTable(list);
     }
+
+    /**
+     * 根据用户输入的pageNumber获取pageGuid
+     * @param pageNumber
+     * @return
+     */
+    @GetMapping("/getPageGuidByPageNumber/{pageNumber}")
+    public AjaxResult getPageGuidByPageNumber(@PathVariable String pageNumber) {
+        TblPage tblPage = tblPageService.selectTblPageByPageNumber(pageNumber);
+        if (tblPage != null) {
+            return AjaxResult.success("操作成功", tblPage.getPageGuid()); // 返回原始的 pageGuid
+        } else {
+            return AjaxResult.error("未找到对应的页面序号");
+        }
+    }
 }

+ 7 - 0
check-business/src/main/java/com/check/business/mapper/TblPageMapper.java

@@ -60,4 +60,11 @@ public interface TblPageMapper
     public int deleteTblPageByPageGuids(String[] pageGuids);
 
     public List<TblPage> getbybook(String bookGuid);
+
+    /**
+     * 根据用户输入的pageNumber获取页面
+     * @param pageNumber
+     * @return
+     */
+    public TblPage selectTblPageByPageNumber(String pageNumber);
 }

+ 7 - 0
check-business/src/main/java/com/check/business/service/ITblPageService.java

@@ -60,4 +60,11 @@ public interface ITblPageService
     public int deleteTblPageByPageGuid(String pageGuid);
 
     public List<TblPage> getbybook(String bookGuid);
+
+    /**
+     * 根据用户输入的pageNumber获取页面
+     * @param pageNumber
+     * @return
+     */
+    public TblPage selectTblPageByPageNumber(String pageNumber);
 }

+ 10 - 0
check-business/src/main/java/com/check/business/service/impl/TblPageServiceImpl.java

@@ -98,4 +98,14 @@ public class TblPageServiceImpl implements ITblPageService
     public List<TblPage> getbybook(String bookGuid) {
         return tblPageMapper.getbybook(bookGuid);
     }
+
+    /**
+     * 根据用户输入的pageNumber获取页面
+     * @param pageNumber
+     * @return
+     */
+    @Override
+    public TblPage selectTblPageByPageNumber(String pageNumber) {
+        return tblPageMapper.selectTblPageByPageNumber(pageNumber);
+    }
 }

+ 6 - 1
check-business/src/main/resources/mapper/business/TblPageMapper.xml

@@ -51,7 +51,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectTblPageVo"/>
         where book_guid = #{bookGuid}
     </select>
-        
+
+    <select id="selectTblPageByPageNumber" parameterType="String" resultMap="TblPageResult">
+        <include refid="selectTblPageVo"/>
+        where page_num = #{pageNumber}
+    </select>
+
     <insert id="insertTblPage" parameterType="TblPage">
         insert into tbl_page
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 8 - 0
check-ui/src/api/business/page.js

@@ -59,3 +59,11 @@ export function getByBookId(bookGuid) {
     method: 'get'
   })
 }
+
+// 根据页面序号查询pageGuid
+export function getPageGuidByPageNumber(pageNumber) {
+  return request({
+    url: '/business/page/getPageGuidByPageNumber/' + pageNumber,
+    method: 'get'
+  })
+}

+ 133 - 18
check-ui/src/views/business/item/index.vue

@@ -1,10 +1,19 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="所属页码guid" prop="pageGuid">
+      <!--      <el-form-item label="所属页码guid" prop="pageGuid">-->
+      <!--        <el-input-->
+      <!--          v-model="queryParams.pageGuid"-->
+      <!--          placeholder="请输入所属页码guid"-->
+      <!--          clearable-->
+      <!--          size="small"-->
+      <!--          @keyup.enter.native="handleQuery"-->
+      <!--        />-->
+      <!--      </el-form-item>-->
+      <el-form-item label="页面序号" prop="pageNumber">
         <el-input
-          v-model="queryParams.pageGuid"
-          placeholder="请输入所属页码guid"
+          v-model="queryParams.pageNumber"
+          placeholder="请输入页面序号"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -88,14 +97,15 @@
     <el-table v-loading="loading" :data="itemList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="条目guid" align="center" prop="itemGuid" />
-      <el-table-column label="所属页码guid" align="center" prop="pageGuid" />
+      <!--      <el-table-column label="所属页码guid" align="center" prop="pageGuid" />-->
+      <el-table-column label="页面序号" align="center" prop="pageGuid" />
       <el-table-column label="条目的位置序号" align="center" prop="itemLine" />
-<!--      <el-table-column label="条目图片编码" align="center" prop="itemImgCode" />-->
-<!--      <el-table-column label="条目图片编码" align="center">-->
-<!--        <template #default="{ row }">-->
-<!--          <img :src="'data:image/png;base64,' + row.itemImgCode" alt="图片" style="width: 100px; height: auto;" />-->
-<!--        </template>-->
-<!--      </el-table-column>-->
+      <!--      <el-table-column label="条目图片编码" align="center" prop="itemImgCode" />-->
+      <!--      <el-table-column label="条目图片编码" align="center">-->
+      <!--        <template #default="{ row }">-->
+      <!--          <img :src="'data:image/png;base64,' + row.itemImgCode" alt="图片" style="width: 100px; height: auto;" />-->
+      <!--        </template>-->
+      <!--      </el-table-column>-->
       <el-table-column label="条目图片编码" align="center">
         <template #default="{ row }">
           <img
@@ -130,12 +140,20 @@
       </el-table-column>
     </el-table>
 
+    <!--    <pagination-->
+    <!--      v-show="total>0"-->
+    <!--      :total="total"-->
+    <!--      :page.sync="queryParams.pageNum"-->
+    <!--      :limit.sync="queryParams.pageSize"-->
+    <!--      @pagination="getList"-->
+    <!--    />-->
+
     <pagination
       v-show="total>0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
-      @pagination="getList"
+      @pagination="handlePagination"
     />
 
     <!-- 添加或修改条目管理对话框 -->
@@ -180,6 +198,8 @@
 
 <script>
 import { listItem, getItem, delItem, addItem, updateItem } from "@/api/business/item";
+import {getPage, getPageGuidByPageNumber} from "../../../api/business/page";
+import { getByPageId} from "../../../api/business/item";
 
 export default {
   name: "Item",
@@ -208,6 +228,7 @@ export default {
         pageNum: 1,
         pageSize: 10,
         pageGuid: null,
+        pageNumber: null,
         itemLine: null,
         itemImgCode: null,
         itemImgUrl: null,
@@ -228,15 +249,57 @@ export default {
     this.getList();
   },
   methods: {
+    // /** 查询条目管理列表 */
+    // getList() {
+    //   this.loading = true;
+    //   listItem(this.queryParams).then(response => {
+    //     //console.log(response)
+    //     this.itemList = response.rows;
+    //     this.total = response.total;
+    //     this.loading = false;
+    //   });
+    // },
+
     /** 查询条目管理列表 */
-    getList() {
+    async getList() {
       this.loading = true;
-      listItem(this.queryParams).then(response => {
-        //console.log(response)
+      try {
+        let response;
+        if (this.queryParams.pageNumber) {
+          // 如果有页面序号,先查询对应的 pageGuid
+          const pageGuidResponse = await getPageGuidByPageNumber(this.queryParams.pageNumber);
+          if (pageGuidResponse && pageGuidResponse.code === 200) {
+            const pageGuid = pageGuidResponse.data; // 获取 pageGuid
+            // 根据 pageGuid 查询条目
+            response = await getByPageId(pageGuid);
+          } else {
+            this.$modal.msgError("未找到对应的页面序号");
+            return;
+          }
+        } else {
+          // 如果没有页面序号,查询所有条目
+          response = await listItem(this.queryParams);
+        }
+
         this.itemList = response.rows;
         this.total = response.total;
+
+        // 遍历 itemList,将 pageGuid 替换为 pageNum
+        for (let item of this.itemList) {
+          try {
+            const pageResponse = await getPage(item.pageGuid);
+            if (pageResponse.data) {
+              item.pageGuid = pageResponse.data.pageNum; // 将 pageGuid 替换为 pageNum
+            }
+          } catch (error) {
+            console.error("获取页面信息失败:", error);
+          }
+        }
+      } catch (error) {
+        console.error("获取条目列表失败:", error);
+      } finally {
         this.loading = false;
-      });
+      }
     },
     // 取消按钮
     cancel() {
@@ -270,10 +333,62 @@ export default {
       };
       this.resetForm("form");
     },
+    // /** 搜索按钮操作 */
+    // handleQuery() {
+    //   this.queryParams.pageNum = 1;
+    //   this.getList();
+    // },
+    /** 分页事件处理 */
+    handlePagination(pagination) {
+      this.queryParams.pageNum = pagination.page; // 更新当前页码
+      this.queryParams.pageSize = pagination.limit; // 更新每页条数
+      this.getList(); // 重新查询条目
+    },
     /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
+    async handleQuery() {
+      this.queryParams.pageNum = 1; // 重置分页参数为1,确保每次搜索都从第一页开始
+      if (this.queryParams.pageNumber) { // 使用 pageNumber 作为用户输入的页面序号
+        try {
+          // 将 pageNumber 转换为字符串
+          const pageNumber = String(this.queryParams.pageNumber);
+          console.log("输入的页面序号:", pageNumber);
+          // 根据页面序号查询 pageGuid
+          const pageGuidResponse = await getPageGuidByPageNumber(pageNumber);
+          console.log("完整的 pageGuidResponse:", pageGuidResponse);
+          if (pageGuidResponse && pageGuidResponse.code === 200) {
+            const pageGuid = pageGuidResponse.data; // 从 data 字段中获取 pageGuid
+            console.log("获取到的 pageGuid:", pageGuid);
+            // 调用现有的 getByPageId 方法查询条目
+            const itemResponse = await getByPageId(pageGuid);
+            console.log("完整的 itemResponse:", itemResponse);
+            if (itemResponse && itemResponse.rows) {
+              this.itemList = itemResponse.rows;
+              this.total = itemResponse.total;
+
+              // 遍历 itemList,将 pageGuid 替换为 pageNum
+              for (let item of this.itemList) {
+                try {
+                  const pageResponse = await getPage(item.pageGuid);
+                  if (pageResponse.data) {
+                    item.pageGuid = pageResponse.data.pageNum; // 将 pageGuid 替换为 pageNum
+                  }
+                } catch (error) {
+                  console.error("获取页面信息失败:", error);
+                }
+              }
+            } else {
+              this.$modal.msgError("未找到对应的条目");
+            }
+          } else {
+            this.$modal.msgError("未找到对应的页面序号");
+          }
+        } catch (error) {
+          console.error("获取页面信息失败:", error);
+        }
+      } else {
+        // 如果没有输入页面序号,直接查询所有条目
+        this.getList();
+      }
     },
     /** 重置按钮操作 */
     resetQuery() {

+ 109 - 11
check-ui/src/views/business/proofread/index.vue

@@ -22,6 +22,26 @@
             <div class="text-line">
               {{ item.text2 }}
             </div>
+            <!-- 条目总数 -->
+            <div class="text-line">
+              总条目数:3444
+            </div>
+            <!-- 已审核条目 -->
+            <div class="text-line">
+              已审核条目数:{{item.backup1}}
+            </div>
+            <!-- 已审核进度 -->
+            <div class="text-line">
+              审核进度:{{item.reviewProgress}}%
+            </div>
+            <!-- 已复审条目 -->
+            <div class="text-line">
+              已复审条目数:{{item.backup2}}
+            </div>
+            <!-- 已复审进度 -->
+            <div class="text-line">
+              复审进度:{{item.recheckProgress}}%
+            </div>
           </el-card>
         </el-col>
       </el-row>
@@ -48,20 +68,98 @@ export default {
     this.getList()
   },
   methods: {
+    // // 获取数据列表
+    // getList() {
+    //   listBook().then(response => {
+    //     // 将接口返回的数据赋值给 photoList
+    //     console.log(response)
+    //     //console.log(response.total)
+    //     this.photoList = response.rows
+    //     //console.log(this.photoList)
+    //   }).catch(error => {
+    //     console.error('获取数据失败', error)
+    //   })
+    // },
+
+    // // 获取数据列表
+    // async getList() {
+    //   try {
+    //     const response = await listBook();
+    //     console.log(response);
+    //     this.photoList = response.rows;
+    //
+    //     // 获取每本书的总条目数、已审核条目数和已复审条目数
+    //     for (const book of this.photoList) {
+    //       // const totalItems = await this.getTotalItems(book.bookGuid);
+    //       const reviewedItems = await this.getReviewedItems(book.bookGuid);
+    //       const recheckedItems = await this.getRecheckedItems(book.bookGuid);
+    //
+    //       // 使用Vue.set确保属性是响应式的
+    //       // this.$set(book, 'totalItems', totalItems);
+    //       this.$set(book, 'reviewedItems', reviewedItems);
+    //       this.$set(book, 'recheckedItems', recheckedItems);
+    //       // 计算审核进度和复审进度
+    //       // this.$set(book, 'reviewProgress', totalItems > 0 ?((reviewedItems / 3444) * 100).toFixed(2) : 0);
+    //       // this.$set(book, 'recheckProgress', totalItems > 0 ? ((recheckedItems / 3444) * 100).toFixed(2) : 0);
+    //       this.$set(book, 'reviewProgress', ((reviewedItems / 3444.0) * 100).toFixed(2));
+    //       this.$set(book, 'recheckProgress', ((recheckedItems / 3444.0) * 100).toFixed(2));
+    //     }
+    //   } catch (error) {
+    //     console.error("获取数据失败", error);
+    //   }
+    // },
+
     // 获取数据列表
-    getList() {
-      listBook().then(response => {
-        // 将接口返回的数据赋值给 photoList
-        console.log(response)
-        //console.log(response.total)
-        this.photoList = response.rows
-        //console.log(this.photoList)
-      }).catch(error => {
-        console.error('获取数据失败', error)
-      })
+    async getList() {
+      try {
+        const response = await listBook();
+        console.log(response);
+        this.photoList = response.rows;
+
+        // 计算审核进度和复审进度
+        for (const book of this.photoList) {
+          this.$set(book, 'reviewProgress', ((book.backup1 / 3444.0) * 100).toFixed(2));// backup1保存的是已审核条目数
+          this.$set(book, 'recheckProgress', ((book.backup2 / 3444.0) * 100).toFixed(2));// backup2保存的是已复审条目数
+        }
+      } catch (error) {
+        console.error("获取数据失败", error);
+      }
     },
+    // // 根据bookGuid获取条目总数
+    // async getTotalItems(bookGuid) {
+    //   try {
+    //     const response = await getTotalItemsByBookGuid(bookGuid);
+    //     // console.log(response.data.totalItems)
+    //     return response.data.totalItems; // 返回条目总数
+    //   } catch (error) {
+    //     console.error("获取条目总数失败", error);
+    //     return 0; // 如果失败,返回0
+    //   }
+    // },
+    // // 根据bookGuid获取已审核条目数
+    // async getReviewedItems(bookGuid) {
+    //   try {
+    //     const response = await getReviewedItemsByBookGuid(bookGuid);
+    //     console.log(response.data); // 打印后端返回的数据
+    //     return response.data.reviewedItems; // 返回已审核条目数
+    //   } catch (error) {
+    //     console.error("获取已审核条目数失败", error);
+    //     return 0; // 如果失败,返回0
+    //   }
+    // },
+    // // 根据bookGuid获取已复审条目数
+    // async getRecheckedItems(bookGuid) {
+    //   try {
+    //     const response = await getRecheckedItemsByBookGuid(bookGuid);
+    //     console.log(response.data); // 打印后端返回的数据
+    //     return response.data.recheckedItems; // 返回已复审条目数
+    //   } catch (error) {
+    //     console.error("获取已复审条目数失败", error);
+    //     return 0; // 如果失败,返回0
+    //   }
+    // },
     goToPage(id) {
-    this.$router.push({
+      this.$router.push({
         path: '/business/proofread/topage',
         query: {
           id: id

+ 56 - 0
check-ui/src/views/business/proofread/topage.vue

@@ -176,6 +176,7 @@ import { listTask, getTask, delTask, addTask, updateTask ,getByItemId} from "@/a
 import dayjs from "dayjs";
 import {addResult} from "@/api/business/result";
 import current from "element-ui/packages/table/src/store/current";
+import {getBook, updateBook} from "../../../api/business/book";
 export default {
   name: 'Topage',
   data() {
@@ -208,6 +209,26 @@ export default {
         // A01 表示check
         code: null,
       },
+      // 书form
+      BookForm:{
+        bookGuid: null,
+        title: null,
+        author: null,
+        pubHouse: null,
+        briefinfo: null,
+        version: null,
+        pubTime: null,
+        isbnNum: null,
+        totalPage: null,
+        translator: null,
+        booktitle: null,
+        coverImg: null,
+        coverImgurl: null,
+        pdfUrl: null,
+        status: null,
+        backup1: null, // 保存已审核条目数
+        backup2: null // 保存已复审条目数
+      },
       // 任务form
       TaskForm:{
         taskGuid: null,
@@ -253,6 +274,7 @@ export default {
   created() {
     // 初始化时获取第一页的数据
     this.fetchBooks();
+    this.fetchBookData(); // 获取书目数据
     // 获取总条目数
   },
   methods: {
@@ -352,6 +374,18 @@ export default {
         this.loading = false;
       }
     },
+    async fetchBookData() {
+      try {
+        const response = await getBook(this.bookId);
+        this.BookForm = response.data;
+
+        // 将backup1和backup2转换为数字类型
+        this.BookForm.backup1 = Number(this.BookForm.backup1) || 0;
+        this.BookForm.backup2 = Number(this.BookForm.backup2) || 0;
+      } catch (error) {
+        console.error("获取book数据失败", error);
+      }
+    },
     // 根据状态返回不同的背景颜色
     getStatusColor(status) {
       switch(status) {
@@ -409,6 +443,17 @@ export default {
         this.TaskForm.status = "待复审";
         this.TaskForm.itemText = text;
 
+        //更新book表中的backup1(已审核条目数)
+        console.log("更新前的backup1:", this.BookForm.backup1)
+        this.BookForm.backup1 += 1;
+        updateBook(this.BookForm);
+        console.log("更新后的backup1:", this.BookForm.backup1)
+
+        //检查是否完成审核
+        if (this.BookForm.backup1 === 3444) {
+          this.$message.success("所有条目已审核完毕!")
+        }
+
         // 更新任务状态
         await updateTask(this.TaskForm);
         this.$message.success("审核成功");
@@ -616,6 +661,17 @@ export default {
         this.TaskForm.itemText = this.checkText;
         await updateTask(this.TaskForm);
 
+        // 更新book表中的backup2(已复审条目数)
+        console.log("更新前的backup2:", this.BookForm.backup2)
+        this.BookForm.backup2 += 1;
+        updateBook(this.BookForm);
+        console.log("更新后的backup2:", this.BookForm.backup2)
+
+        // 检查是否完成复审
+        if (this.BookForm.backup2 === 3444) {
+          this.$message.success("所有条目已复审完毕!");
+        }
+
         // 插入核对结果
         this.ResultForm.taskGuid = this.taskGuid;
         this.ResultForm.checkContent = this.RecheckForm.text[this.RecheckIndex];