From d8d68a0aee93073b5ec3195368ca0ed1076f66a2 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期三, 25 六月 2025 17:58:08 +0800
Subject: [PATCH] 对接评定接口和中台待办事项

---
 laboratory/src/views/deliveryAssessment/assayTaskList/index.vue |  359 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 233 insertions(+), 126 deletions(-)

diff --git a/laboratory/src/views/deliveryAssessment/assayTaskList/index.vue b/laboratory/src/views/deliveryAssessment/assayTaskList/index.vue
index efe9000..e611712 100644
--- a/laboratory/src/views/deliveryAssessment/assayTaskList/index.vue
+++ b/laboratory/src/views/deliveryAssessment/assayTaskList/index.vue
@@ -1,154 +1,261 @@
 <template>
-    <div class="list">
-        <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
-            @sizeChange="handleSizeChange">
-            <template #search>
-                <el-form :model="form" label-width="140px" inline>
-                    <el-form-item label="项目组名称:">
-                        <el-input v-model="form.name" placeholder="请输入" />
-                    </el-form-item>
-                    <el-form-item label="课题类型:">
-                        <el-input v-model="form.name" placeholder="请输入" />
-                    </el-form-item>
-                    <el-form-item label="课题名称:">
-                        <el-input v-model="form.name" placeholder="请输入" />
-                    </el-form-item>
-                    <el-form-item label="提交人:">
-                        <el-input v-model="form.name" placeholder="请输入" />
-                    </el-form-item>
-                    <el-form-item label="状态:">
-                        <el-select v-model="form.name" placeholder="请选择" />
-                    </el-form-item>
-                    <el-form-item class="search-btn-box">
-                        <el-button>重置</el-button>
-                        <el-button type="primary">查询</el-button>
-                    </el-form-item>
-                </el-form>
-            </template>
-            <template #setting>
-                <div class="top-box-integral">
+  <div class="list">
+    <TableCustom
+      :queryForm="queryForm"
+      :tableData="tableData"
+      :total="total"
+      @currentChange="handleCurrentChange"
+      @sizeChange="handleSizeChange"
+    >
+      <template #search>
+        <el-form :model="form" label-width="140px" inline>
+          <el-form-item label="项目组名称:">
+            <el-input v-model="form.teamName" placeholder="请输入" />
+          </el-form-item>
+          <el-form-item label="课题类型:">
+            <el-select v-model="form.reportType" placeholder="请选择">
+              <el-option label="中试" :value="1" />
+              <el-option label="辅料" :value="2" />
+              <el-option label="产品报告" :value="3" />
+              <!-- <el-option label="验证与发布" :value="4" /> reportType	integer	报告类型 1=中试 2=辅料 3=产品报告-->
+            </el-select>
+          </el-form-item>
+          <el-form-item label="报告名称:">
+            <el-input v-model="form.reportTitle" placeholder="请输入" />
+          </el-form-item>
+          <el-form-item label="提交人:">
+            <el-input v-model="form.staffNames" placeholder="请输入" />
+          </el-form-item>
+          <el-form-item label="状态:">
+            <el-select v-model="form.status" placeholder="请选择">
+              <el-option label="草稿箱" :value="-1" />
+              <el-option label="待审核" :value="1" />
+              <el-option label="待评定" :value="2" />
+              <el-option label="已评定" :value="3" />
+              <el-option label="已驳回" :value="4" />
+              <el-option label="已撤回" :value="5" />
+            </el-select>
+          </el-form-item>
+          <el-form-item class="search-btn-box">
+            <el-button @click="handleReset">重置</el-button>
+            <el-button type="primary" @click="handleSearch">查询</el-button>
+          </el-form-item>
+        </el-form>
+      </template>
+      <template #setting>
+        <!-- <div class="top-box-integral">
                     <div style="background-color:rgba(232, 250, 246, 1)" v-for="item in 3" :key="item"
                         class="top-box-integral-card">
                         <div class="top-box-integral-card-title">{{ ['课题合计数量', '待评定', '已评定'][item - 1] }}</div>
                         <div style="color:rgba(4, 156, 154, 1)" class="top-box-integral-card-num">99.9</div>
                     </div>
-                </div>
-            </template>
-            <template #table>
-                <el-table-column prop="name" label="所属项目组" />
-                <el-table-column prop="age" label="课题类型" />
-                <el-table-column prop="age" label="报告编号" />
-                <el-table-column prop="age" label="报告名称" />
-                <el-table-column prop="age" label="提交人" />
-                <el-table-column prop="age" label="评定结果" />
-                <el-table-column prop="age" label="累积分值" />
-                <el-table-column prop="age" label="评定时间" />
-                <el-table-column prop="age" label="状态">
-                    <template #default="{ row }">
-                        <el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
-                        <el-tag v-else type="success">待评定</el-tag>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="age" label="操作">
-                    <template #default="{ row }">
-                        <el-button type="text">详情</el-button>
-                    </template>
-                </el-table-column>
-            </template>
-        </TableCustom>
+                </div> -->
+        <div class="top-box-integral">
+          <div
+            style="background-color: rgba(232, 250, 246, 1)"
+            class="top-box-integral-card"
+          >
+            <div class="top-box-integral-card-title">课题合计数量</div>
+            <div
+              style="color: rgba(4, 156, 154, 1)"
+              class="top-box-integral-card-num"
+            >
+              {{ statistics.totalCount || 0 }}
+            </div>
+          </div>
+          <div
+            style="background-color: rgba(232, 250, 246, 1)"
+            class="top-box-integral-card"
+          >
+            <div class="top-box-integral-card-title">待评定</div>
+            <div
+              style="color: rgba(4, 156, 154, 1)"
+              class="top-box-integral-card-num"
+            >
+              {{ statistics.toEvaluatedCount || 0 }}
+            </div>
+          </div>
+          <div
+            style="background-color: rgba(232, 250, 246, 1)"
+            class="top-box-integral-card"
+          >
+            <div class="top-box-integral-card-title">已评定</div>
+            <div
+              style="color: rgba(4, 156, 154, 1)"
+              class="top-box-integral-card-num"
+            >
+              {{ statistics.evaluatedCount || 0 }}
+            </div>
+          </div>
+        </div>
+      </template>
+      <template #table>
+        <el-table-column prop="teamName" label="所属项目组" />
+        <el-table-column prop="reportType" label="课题类型">
+          <template #default="{ row }">
+            <span v-if="row.reportType == 1">中试</span>
+            <span v-else-if="row.reportType == 2">辅料</span>
+            <span v-else-if="row.reportType == 3">产品报告</span>
+            <span v-else>--</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="reportCode" label="报告编号" />
+        <el-table-column prop="reportTitle" label="报告名称" />
+        <el-table-column prop="createBy" label="提交人" />
+        <!-- <el-table-column prop="evaluatePersonName" label="评定人员" /> -->
+        <el-table-column prop="evaluateScore" label="评定结果" />
+        <el-table-column prop="totalScore" label="累积分值" />
+        <el-table-column prop="evaluateTime" label="评定时间" />
+        <el-table-column prop="status" label="状态">
+          <template #default="{ row }">
+            <el-tag v-if="row.status == 3" type="info" color="#fff"
+              >已评定</el-tag
+            >
+            <el-tag v-else-if="row.status == 2" type="success">待评定</el-tag>
+            <el-tag v-else-if="row.status == 1" type="warning">待审核</el-tag>
+            <el-tag v-else-if="row.status == 4" type="danger">已驳回</el-tag>
+            <el-tag v-else-if="row.status == 5" type="info">已撤回</el-tag>
+            <el-tag v-else type="default">草稿箱</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作">
+          <template #default="{ row }">
+            <el-button type="text" @click="handleDetail(row)">详情</el-button>
+            <!-- <el-button
+              type="text"
+              @click="handleAssessment(row)"
+              v-if="row.status == 2"
+              >评定</el-button
+            > -->
+          </template>
+        </el-table-column>
+      </template>
+    </TableCustom>
 
-        <!-- 化验师 审批人 -->
-        <AssessmentDialog :modelValue="assessmentVisible" :reportData="currentReport" />
+    <!-- 化验师 审批人 -->
+    <AssessmentDialog
+      :modelValue="assessmentVisible"
+      :id="currentReport.id"
+      @close="closeAssessmentDialog"
+    />
 
-        <!-- 工艺工程师 -->
-        <CraftDialog :modelValue="craftVisible" :reportData="currentReport" />
-    </div>
+    <!-- 工艺工程师 -->
+    <!-- <CraftDialog :modelValue="craftVisible" :reportData="currentReport" /> -->
+  </div>
 </template>
 
 <script>
-import AssessmentDialog from './components/AssessmentDialog.vue'
-import CraftDialog from './components/CraftDialog.vue'
+import AssessmentDialog from "./components/AssessmentDialog.vue";
+// import CraftDialog from "./components/CraftDialog.vue";
+import { evaluateList, evaluateCount } from "./service.js";
 
 export default {
-    name: 'AssayTaskList',
-    components: {
-        AssessmentDialog,
-        CraftDialog
+  name: "AssayTaskList",
+  components: {
+    AssessmentDialog,
+    // CraftDialog,
+  },
+  data() {
+    return {
+      form: {},
+      tableData: [],
+      queryForm: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      total: 0,
+      assessmentVisible: false,
+      currentReport: {},
+      craftVisible: false,
+      statistics: {
+        totalCount: 0,
+        toEvaluatedCount: 0,
+        evaluatedCount: 0,
+      },
+    };
+  },
+  methods: {
+    handleCurrentChange(page) {
+      this.queryForm.pageNum = page;
+      this.getList();
     },
-    data() {
-        return {
-            form: {
-            },
-            tableData: [],
-            queryForm: {
-                pageSize: 10,
-                pageNum: 1
-            },
-            total: 0,
-            assessmentVisible: false,
-            currentReport: {},
-            craftVisible: false,
-        }
+    handleSizeChange(size) {
+      this.queryForm.pageSize = size;
+      this.getList();
     },
-    methods: {
-        handleCurrentChange(page) {
-            this.queryForm.pageNum = page
-            this.getList()
-        },
-        handleSizeChange(size) {
-            this.queryForm.pageSize = size
-            this.getList()
-        },
-        getList() {
-
-        },
-        handleDetail(row) {
-            // 处理详情
-        },
-        handleAssessment(row) {
-            this.currentReport = row;
-            this.assessmentVisible = true;
-        },
-        handleAssessmentSubmit(data) {
-            console.log('评定提交数据:', data);
-            // 处理评定提交
-        }
+    async getList() {
+      const params = { ...this.queryForm, ...this.form };
+      const res = await evaluateList(params);
+      if (res && res.data) {
+        this.tableData = res.data.records || [];
+        this.total = res.data.total || 0;
+      }
+    },
+    async getStatistics() {
+      const params = { ...this.queryForm, ...this.form };
+      const res = await evaluateCount(params);
+      if (res && res.data) {
+        this.statistics = res.data;
+      }
+    },
+    handleSearch() {
+      this.queryForm.pageNum = 1;
+      this.getList();
+      this.getStatistics();
+    },
+    handleReset() {
+      this.form = {};
+      this.queryForm = { pageSize: 10, pageNum: 1 };
+      this.getList();
+      this.getStatistics();
+    },
+    handleDetail(row) {
+      this.currentReport = row;
+      this.assessmentVisible = true;
+    },
+    closeAssessmentDialog(){
+      this.assessmentVisible = false;
     }
-}
+  },
+  mounted() {
+    this.getList();
+    this.getStatistics();
+  },
+};
 </script>
 
 <style scoped lang="less">
 .list {
-    height: 100%;
+  height: 100%;
 }
 
 .top-box-integral {
-    display: flex;
-    justify-content: space-between;
-    flex-wrap: wrap;
-    gap: 28px;
+  display: flex;
+  justify-content: space-between;
+  flex-wrap: wrap;
+  gap: 28px;
 
-    &-card {
-        flex: 1;
-        background: #E8FAF6;
-        box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
-        border-radius: 10px;
-        padding: 21px 20px;
+  &-card {
+    flex: 1;
+    background: #e8faf6;
+    box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
+    border-radius: 10px;
+    padding: 21px 20px;
 
-        &-title {
-            font-family: 'SourceHanSansCN-Medium';
-            font-size: 14px;
-            color: rgba(0, 0, 0, 0.8);
-        }
-
-        &-num {
-            font-family: 'SF Compact Display Black';
-            text-align: center;
-            font-weight: 900;
-            font-size: 50px;
-            color: #049C9A;
-            line-height: 60px;
-        }
+    &-title {
+      font-family: "SourceHanSansCN-Medium";
+      font-size: 14px;
+      color: rgba(0, 0, 0, 0.8);
     }
+
+    &-num {
+      font-family: "SF Compact Display Black";
+      text-align: center;
+      font-weight: 900;
+      font-size: 50px;
+      color: #049c9a;
+      line-height: 60px;
+    }
+  }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.7.1