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/QA/index.vue | 343 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 201 insertions(+), 142 deletions(-) diff --git a/laboratory/src/views/deliveryAssessment/QA/index.vue b/laboratory/src/views/deliveryAssessment/QA/index.vue index 49dd85d..7406056 100644 --- a/laboratory/src/views/deliveryAssessment/QA/index.vue +++ b/laboratory/src/views/deliveryAssessment/QA/index.vue @@ -1,168 +1,227 @@ <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="tableTitle"> - <div class="title active"> - 化验师QA专题报告列表</div> - </div> - </template> - <template #table> - <el-table-column prop="name" label="报告类型" /> - <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="状态"> - <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 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-input v-model="form.reportTitle" placeholder="请输入" /> + </el-form-item> + <el-form-item label="报告编号:"> + <el-input v-model="form.reportCode" 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-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="tableTitle"> + <div class="title active">化验师QA专题报告列表</div> + </div> + </template> + <template #table> + <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="teamName" label="所属项目组" /> + <el-table-column prop="reportTitle" label="报告名称" /> + <el-table-column prop="reportCode" label="报告编号" /> + <el-table-column prop="developPerson" label="制定人" /> + <el-table-column prop="developDate" label="制定日期" /> + <el-table-column prop="evaluatePersonName" 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 prop="age" label="操作"> + <template #default="{ row }"> + <el-button type="text" v-if="row.status == 3" @click="handleDetail(row)">详情</el-button> + <el-button v-if="row.status == 2" type="text" @click="handleAssessment(row)">评定</el-button> + </template> + </el-table-column> + </template> + </TableCustom> - <!-- 工艺工程师 --> - <AssessmentDialog :modelValue="assessmentVisible" :reportData="currentReport" /> - </div> + <!-- 工艺工程师 --> + <AssessmentDialog + :modelValue="assessmentVisible" + :id="currentReport.id" + :type="currentType" + @close="closeAssessmentDialog" + /> + </div> </template> <script> -import AssessmentDialog from './components/AssessmentDialog.vue' +import AssessmentDialog from "./components/AssessmentDialog.vue"; +import { evaluateList } from "./service.js"; export default { - name: 'QAList', - components: { - AssessmentDialog, + name: "QAList", + components: { + AssessmentDialog, + }, + data() { + return { + form: {}, + tableData: [], + queryForm: { + pageSize: 10, + pageNum: 1, + }, + total: 0, + assessmentVisible: false, + currentType: "", + currentReport: {}, + }; + }, + methods: { + handleCurrentChange(page) { + this.queryForm.pageNum = page; + this.getList(); }, - data() { - return { - form: { - }, - tableData: [], - queryForm: { - pageSize: 10, - pageNum: 1 - }, - total: 0, - assessmentVisible: true, - currentReport: {}, - } + 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; + } + }, + handleSearch() { + this.queryForm.pageNum = 1; + this.getList(); + }, + handleReset() { + this.form = {}; + this.queryForm = { pageSize: 10, pageNum: 1 }; + this.getList(); + }, + handleDetail(row) { + // 处理详情 + this.currentReport = row; + this.currentType = "detail"; + this.assessmentVisible = true; + }, + handleAssessment(row) { + this.currentReport = row; + this.currentType = "approve"; + this.assessmentVisible = true; + }, + closeAssessmentDialog() { + this.assessmentVisible = false; + this.currentReport = {}; + this.currentType = ""; + this.getList(); + }, + }, + mounted() { + this.getList(); + }, +}; </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; + } + } } .tableTitle { - display: flex; + display: flex; - .title { - background: #fafafc; - border-radius: 8px 8px 0px 0px; - border: 1px solid #dcdfe6; - padding: 16px 29px; - font-weight: bold; - font-size: 18px; - color: #606266; - width: unset; - cursor: pointer; - } + .title { + background: #fafafc; + border-radius: 8px 8px 0px 0px; + border: 1px solid #dcdfe6; + padding: 16px 29px; + font-weight: bold; + font-size: 18px; + color: #606266; + width: unset; + cursor: pointer; + } - .active { - color: #049c9a; - background: #ffffff; - border-radius: 8px 8px 0px 0px; - border: 1px solid #049c9a; - } + .active { + color: #049c9a; + background: #ffffff; + border-radius: 8px 8px 0px 0px; + border: 1px solid #049c9a; + } } </style> \ No newline at end of file -- Gitblit v1.7.1