From a749b62894ec0dcda3bb055371bc75db75f17ce1 Mon Sep 17 00:00:00 2001 From: 13404089107 <puwei@sinata.cn> Date: 星期一, 12 五月 2025 17:46:57 +0800 Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory --- laboratory/src/views/dataManagement/dispatching/list.vue | 302 +++++++++++++++++++++++-------------------------- 1 files changed, 141 insertions(+), 161 deletions(-) diff --git a/laboratory/src/views/dataManagement/dispatching/list.vue b/laboratory/src/views/dataManagement/dispatching/list.vue index 02878da..ea67eba 100644 --- a/laboratory/src/views/dataManagement/dispatching/list.vue +++ b/laboratory/src/views/dataManagement/dispatching/list.vue @@ -1,10 +1,10 @@ <template> <div class="list"> - <TableCustom :queryForm="form" :tableData="tableData" :total="total"> + <TableCustom :queryForm="form" :tableData="tableData" :total="total" @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange"> <template #search> <el-form :model="form" labelWidth="auto" inline> <el-form-item label="所属项目课题方案:"> - <el-input v-model="form.planName" placeholder="请输入"></el-input> + <el-input v-model="form.projectName" placeholder="请输入"></el-input> </el-form-item> <el-form-item label="实验编号"> <el-input @@ -20,19 +20,21 @@ start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" + @change="handleDateChange" ></el-date-picker> </el-form-item> - <el-form-item label="状态"> + <el-form-item label="状态" > <el-select v-model="form.status" placeholder="请选择"> <el-option label="全部" value=""></el-option> - <el-option label="待确认" value="pending"></el-option> - <el-option label="已确认" value="confirmed"></el-option> - <el-option label="已取消" value="cancelled"></el-option> + <el-option label="草稿箱" value="-1"></el-option> + <el-option label="待确认" value="1"></el-option> + <el-option label="已确认" value="2"></el-option> + <el-option label="已封存" value="3"></el-option> </el-select> </el-form-item> <el-form-item label=""> <el-button type="default" @click="resetForm">重置</el-button> - <el-button type="primary" @click="handleSearch">查询</el-button> + <el-button type="primary" @click="handleSearch" style="margin-left: 10px;">查询</el-button> </el-form-item> </el-form> </template> @@ -44,7 +46,7 @@ :class="{ active: currentType === 'list' }" @click="handleTypeChange('list')" > - 实验调度列表 + 实验与调度列表 </div> <div class="drafts" @@ -61,25 +63,37 @@ </template> <template #table> <el-table-column - prop="experimentCode" + prop="projectName" label="所属项目课题方案" ></el-table-column> <el-table-column - prop="experimentName" + prop="experimentCode" label="实验编号" ></el-table-column> - <el-table-column prop="startTime" label="实验名称"></el-table-column> - <el-table-column prop="endTime" label="通知时间"></el-table-column> <el-table-column - prop="participants" + prop="experimentName" + label="实验名称" + ></el-table-column> + <el-table-column + prop="experimentDate" + label="通知时间" + ></el-table-column> + <el-table-column + prop="experimentStartTime" label="实验开始时间" ></el-table-column> <el-table-column - prop="createTime" + prop="experimentEndTime" label="实验结束时间" ></el-table-column> - <el-table-column prop="people" label="参加人员"></el-table-column> - <el-table-column prop="status" label="状态"> + <el-table-column + prop="participantsName" + label="参加人员" + ></el-table-column> + <el-table-column + prop="status" + label="状态" + > <template slot-scope="scope"> <el-tag :type="getStatusType(scope.row.status)"> {{ getStatusText(scope.row.status) }} @@ -88,164 +102,130 @@ </el-table-column> <el-table-column label="操作" width="200"> <template slot-scope="scope"> - <el-button - v-if="scope.row.status === 'pending'" - type="text" - @click="handleConfirm(scope.row)" - >确认</el-button - > - <el-button type="text" @click="handleDelete(scope.row)" - >删除</el-button - > - <el-button type="text" @click="handleDetail(scope.row)" - >详情</el-button - > + <!-- 工艺工程师(3) --> + <template v-if="userRole == '3'"> + <el-button type="text" @click="handleDetail(scope.row)">详情</el-button> + <el-button + v-if="scope.row.status === 1" + type="text" + @click="handleDelete(scope.row)" + >删除</el-button> + </template> + + <!-- 化验师(4)和实验员(5) --> + <template v-if="userRole == '4' || userRole == '5'"> + <el-button type="text" @click="handleDetail(scope.row)">详情</el-button> + <el-button + v-if="scope.row.status === 1" + type="text" + @click="handleConfirm(scope.row)" + >确认</el-button> + </template> + + <!-- 超级管理员(1)和审批人(2) --> + <template v-if="userRole =='1' || userRole == '2'"> + <el-button type="text" @click="handleDetail(scope.row)">详情</el-button> + </template> </template> </el-table-column> </template> </TableCustom> - <SignatureCanvas - :visible="signatureDialogVisible" - @confirm="handleSignatureConfirm" - /> + <edit-dispatch :visible.sync="approvalDialogVisible" :type="approvalDialogType" :data="currentApprovalData" + @close="approvalDialogVisible = false" + /> + <ShowDelConfirm + :title="changeStatusTitle" + :tip="changeStatusTip" + :show="changeStatus" + @close="changeStatus = false" + @confirm="handleChangeStatusConfirm" /> </div> </template> <script> -import SignatureCanvas from "@/components/SignatureCanvas.vue"; import EditDispatch from "./editDispatch.vue"; -import { getList } from './service' - +import ShowDelConfirm from "@/components/showDelConfirm/index.vue"; +import { getDispatchList, deleteById } from "./service"; export default { name: "dispatchingList", components: { - SignatureCanvas, EditDispatch, + ShowDelConfirm }, data() { return { currentType: "list", // 当前显示类型:list-列表,draft-草稿箱 + userRole: JSON.parse(sessionStorage.getItem('userInfo'))?.roleType || '', // 用户角色 form: { - experimentName: "", + projectName: "", experimentCode: "", - createTime: [], + startTime: "", + endTime: "", status: "", + pageNum: 1, + pageSize: 10 }, tableData: [], total: 0, - // 模拟数据 - mockListData: [ - { - experimentCode: "EXP-2024-001", - experimentName: "材料力学性能测试实验", - startTime: "2024-03-20 09:00", - endTime: "2024-03-20 17:00", - participants: "张三、李四、王五", - createTime: "2024-03-15", - status: "pending", - planName: "新材料研发项目", - planCode: "PLAN-2024-001", - stage: "实验阶段", - testDate: "2024-03-20", - testName: "材料力学性能测试", - testCode: "TEST-2024-001", - testTime: "2024-03-20 09:00", - groupTableData: [ - { - groupName: "对照组", - remark: "标准材料组" - }, - { - groupName: "实验组", - remark: "新材料组" - } - ], - taskTableData: [ - { - taskName: "材料准备", - leader: "张三", - startTime: "2024-03-20 09:00" - }, - { - taskName: "性能测试", - leader: "李四", - startTime: "2024-03-20 10:00" - } - ] - }, - { - experimentCode: "EXP-2024-002", - experimentName: "化学合成实验", - startTime: "2024-03-21 10:00", - endTime: "2024-03-21 16:00", - participants: "赵六、钱七、孙八", - createTime: "2024-03-16", - status: "confirmed", - }, - { - experimentCode: "EXP-2024-003", - experimentName: "生物培养实验", - startTime: "2024-03-22 08:00", - endTime: "2024-03-22 18:00", - participants: "周九、吴十、郑十一", - createTime: "2024-03-17", - status: "cancelled", - }, - ], - mockDraftData: [ - { - experimentCode: "EXP-2024-004", - experimentName: "物理光学实验(草稿)", - startTime: "2024-03-23 09:00", - endTime: "2024-03-23 17:00", - participants: "王十二、李十三", - createTime: "2024-03-18", - status: "draft", - }, - ], - signatureDialogVisible: false, - currentRow: null, approvalDialogVisible: false, approvalDialogType: "view", currentApprovalData: null, + // 确认弹窗相关数据 + changeStatus: false, + changeStatusTitle: "", + changeStatusTip: "", + currentOperationRow: null, // 当前操作的行数据 }; }, created() { this.getTableData(); }, methods: { + handleDateChange(val) { + if (val) { + this.form.startTime = val[0]; + this.form.endTime = val[1]; + } else { + this.form.startTime = ""; + this.form.endTime = ""; + } + }, resetForm() { this.form = { - experimentName: "", + projectName: "", experimentCode: "", - createTime: [], + startTime: "", + endTime: "", status: "", + pageNum: 1, + pageSize: 10 }; + this.getTableData(); }, handleSearch() { - // 实现查询逻辑 - console.log("查询条件:", this.form); + this.form.pageNum = 1; + this.getTableData(); }, getStatusType(status) { const statusMap = { - pending: "warning", - confirmed: "success", - cancelled: "danger", - draft: "info", + "-1": "info", + "1": "warning", + "2": "success", + "3": "info" }; return statusMap[status] || "info"; }, getStatusText(status) { const statusMap = { - pending: "待确认", - confirmed: "已确认", - cancelled: "已取消", - draft: "草稿", + "-1": "草稿箱", + "1": "待确认", + "2": "已确认", + "3": "已封存" }; return statusMap[status] || "未知"; }, @@ -255,42 +235,15 @@ }); }, handleConfirm(row) { - // this.currentRow = row; - // this.signatureDialogVisible = true; - this.currentApprovalData = row; this.approvalDialogType = "approve"; this.approvalDialogVisible = true; }, - handleSignatureConfirm(imageData) { - console.log("imageData imageData", imageData); - this.signatureDialogVisible = false; - - // 这里处理签名确认后的逻辑 - // this.$confirm('确认该实验调度吗?', '提示', { - // confirmButtonText: '确定', - // cancelButtonText: '取消', - // type: 'warning' - // }).then(() => { - // // 这里可以将签名图片数据(imageData)连同其他数据一起提交到后端 - // this.$message.success('确认成功'); - // this.signatureDialogVisible = false; - // this.getTableData(); - // }).catch(() => { - // this.signatureDialogVisible = false; - // }); - }, handleDelete(row) { - this.$confirm("确定要删除该实验调度吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - }) - .then(() => { - this.$message.success("删除成功"); - this.getTableData(); - }) - .catch(() => {}); + this.currentOperationRow = row; + this.changeStatusTitle = "确认要删除该实验调度吗?"; + this.changeStatusTip = "删除后信息无法找回"; + this.changeStatus = true; }, handleDetail(row) { this.currentApprovalData = row; @@ -299,17 +252,44 @@ }, handleTypeChange(type) { this.currentType = type; + this.form.status = type === 'draft' ? '-1' : ''; + this.form.pageNum = 1; this.getTableData(); }, getTableData() { - // 根据currentType请求不同的数据 - if (this.currentType === "list") { - this.tableData = this.mockListData; - this.total = this.mockListData.length; - } else { - this.tableData = this.mockDraftData; - this.total = this.mockDraftData.length; - } + const params = { + ...this.form, + status: this.currentType === 'draft' ? '-1' : this.form.status + }; + getDispatchList(params).then(res => { + if (res) { + this.tableData = res.records || []; + this.total = res.total || 0; + } + }); + }, + // 处理页码改变 + handleCurrentChange(val) { + this.form.pageNum = val; + this.getTableData(); + }, + // 处理每页条数改变 + handleSizeChange(val) { + this.form.pageSize = val; + this.form.pageNum = 1; + this.getTableData(); + }, + handleChangeStatusConfirm() { + // 处理删除逻辑 + deleteById({ + id: this.currentOperationRow.id + }).then(() => { + this.$message.success("删除成功"); + this.changeStatus = false; + this.getTableData(); + }).catch(error => { + this.$message.error("删除失败"); + }); }, }, }; -- Gitblit v1.7.1