From 718a13554dbb2f99e27adeb7b95edfc3096dacc5 Mon Sep 17 00:00:00 2001 From: 董国庆 <364620639@qq.com> Date: 星期四, 26 六月 2025 14:24:27 +0800 Subject: [PATCH] 删除打印和路由返回 --- laboratory/src/views/dataManagement/dispatching/addDispatch.vue | 778 ++++++++++++++++++++++++++++++++++------------------------- 1 files changed, 446 insertions(+), 332 deletions(-) diff --git a/laboratory/src/views/dataManagement/dispatching/addDispatch.vue b/laboratory/src/views/dataManagement/dispatching/addDispatch.vue index 12a423f..f55e4db 100644 --- a/laboratory/src/views/dataManagement/dispatching/addDispatch.vue +++ b/laboratory/src/views/dataManagement/dispatching/addDispatch.vue @@ -56,7 +56,11 @@ </el-select> </el-form-item> <el-form-item prop="projectStage" label="项目阶段"> - <el-select v-model="form.projectStage" disabled placeholder="请选择"> + <el-select + v-model="form.projectStage" + disabled + placeholder="请选择" + > <el-option label="实验室开发阶段" :value="1" /> <el-option label="中式试验阶段" :value="2" /> <el-option label="生产验证试验阶段" :value="3" /> @@ -64,137 +68,163 @@ </el-form-item> </div> - <div class="header-title" style="margin-bottom: 38px"> - <div class="header-title-left"> - <img src="@/assets/public/headercard.png" /> - <span>二 、实验信息</span> + <div class="header-title" style="margin-bottom: 38px"> + <div class="header-title-left"> + <img src="@/assets/public/headercard.png" /> + <span>二 、实验信息</span> + </div> </div> - </div> - <div style="padding-left: 25px"> - <el-form-item prop="experimentDate" label="试验日期"> - <el-date-picker - name="data-test" - v-model="form.experimentDate" - type="date" - placeholder="选择日期" - @change="handleDateChange" - ></el-date-picker> - </el-form-item> - <el-form-item prop="experimentName" label="实验名称"> - <el-input v-model="form.experimentName" placeholder="请输入" /> - </el-form-item> - <el-form-item prop="experimentCode" label="实验编号"> - <el-input v-model="form.experimentCode" placeholder="请输入" disabled/> - </el-form-item> - </div> - - <div class="add-group"> - <span>实验分组</span> - <el-button type="primary" class="el-icon-plus" @click="handleAddGroup">添加组别</el-button> - </div> - <Table - :data="groupTableData" - :total="0" - :height="null" - class="groupTable" - > - <el-table-column type="index" label="序号" width="80"></el-table-column> - <el-table-column prop="groupName" label="组别"></el-table-column> - <el-table-column prop="remark" label="备注"></el-table-column> - <el-table-column label="操作" width="200"> - <template slot-scope="scope"> - <el-button type="text" @click="handleEditGroup(scope.row)">编辑</el-button> - <el-button type="text" @click="handleDeleteGroup(scope.row)">移除</el-button> - </template> - </el-table-column> - </Table> - - <div class="header-title" style="margin-bottom: 38px"> - <div class="header-title-left"> - <img src="@/assets/public/headercard.png" /> - <span>三 、计划时间及人员</span> + <div style="padding-left: 25px"> + <el-form-item prop="experimentDate" label="试验日期"> + <el-date-picker + name="data-test" + v-model="form.experimentDate" + type="date" + placeholder="选择日期" + @change="handleDateChange" + ></el-date-picker> + </el-form-item> + <el-form-item prop="experimentName" label="实验名称"> + <el-input v-model="form.experimentName" placeholder="请输入" /> + </el-form-item> + <el-form-item prop="experimentCode" label="实验编号"> + <el-input + v-model="form.experimentCode" + placeholder="请输入" + disabled + /> + </el-form-item> </div> - </div> - <div style="padding-left: 25px"> - <el-form-item prop="experimentTime" label="试验时间"> - <el-date-picker - style="width: 100%" - v-model="form.experimentTime" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - value-format="yyyy-MM-dd HH:mm:ss" - :default-time="['00:00:00', '23:59:59']" - @change="handleTimeRangeChange" - ></el-date-picker> - </el-form-item> - </div> - <div class="add-group"> - <div>*</div> - <span>参加人员</span> - <el-button type="primary" class="el-icon-plus" @click="addMember">选择参加人员</el-button> - </div> - <div class="member-list"> - <div v-for="item in [3,4,5]" :key="item" class="member-list-card"> - <div class="member-item"> - <div class="member-title"> - {{ ["工艺工程师", "化验师","实验员"][item - 3] }} - </div> - <div - :class="item == 3 ? 'member-name-box' : 'flex1'" - > - <div - :class=" - item == 3 - ? 'member-name-box' - : 'member-name-box-2' - " + + <div class="add-group"> + <span>实验分组</span> + <el-button type="primary" class="el-icon-plus" @click="handleAddGroup" + >添加组别</el-button + > + </div> + <Table + :data="groupTableData" + :total="0" + :height="null" + class="groupTable" + > + <el-table-column + type="index" + label="序号" + width="80" + ></el-table-column> + <el-table-column prop="groupName" label="组别"></el-table-column> + <el-table-column prop="remark" label="备注"></el-table-column> + <el-table-column label="操作" width="200"> + <template slot-scope="scope"> + <el-button type="text" @click="handleEditGroup(scope.row)" + >编辑</el-button > + <el-button type="text" @click="handleDeleteGroup(scope.row)" + >移除</el-button + > + </template> + </el-table-column> + </Table> + + <div class="header-title" style="margin-bottom: 38px"> + <div class="header-title-left"> + <img src="@/assets/public/headercard.png" /> + <span>三 、计划时间及人员</span> + </div> + </div> + <div style="padding-left: 25px"> + <el-form-item prop="experimentTime" label="试验时间"> + <el-date-picker + style="width: 100%" + v-model="form.experimentTime" + type="datetimerange" + range-separator="至" + start-placeholder="开始时间" + end-placeholder="结束时间" + value-format="yyyy-MM-dd HH:mm:ss" + :default-time="['00:00:00', '23:59:59']" + @change="handleTimeRangeChange" + ></el-date-picker> + </el-form-item> + </div> + <div class="add-group"> + <div>*</div> + <span>参加人员</span> + <el-button type="primary" class="el-icon-plus" @click="addMember" + >选择参加人员</el-button + > + </div> + <div class="member-list"> + <div v-for="item in [3, 4, 5]" :key="item" class="member-list-card"> + <div class="member-item"> + <div class="member-title"> + {{ ["工艺工程师", "化验师", "实验员"][item - 3] }} + </div> + <div :class="item == 3 ? 'member-name-box' : 'flex1'"> <div - v-for="i in memberList(item)" - :key="i.userId" - class="member-name" + :class="item == 3 ? 'member-name-box' : 'member-name-box-2'" > - {{ i.nickName }} + <div + v-for="i in memberList(item)" + :key="i.userId" + class="member-name" + > + {{ i.nickName }} + </div> + </div> + </div> + <div class="member-change"> + <div + class="member-change-btn" + @click="editUserList(item)" + v-if="item == 4 || item == 5" + > + 修改 </div> </div> </div> - <div class="member-change"> - <div class="member-change-btn" @click="editUserList(item)" v-if="item == 4 || item == 5">修改</div> - </div> </div> </div> - </div> - <div class="header-title" style="margin-bottom: 38px"> - <div class="header-title-left"> - <img src="@/assets/public/headercard.png" /> - <span>四 、任务分解</span> + <div class="header-title" style="margin-bottom: 38px"> + <div class="header-title-left"> + <img src="@/assets/public/headercard.png" /> + <span>四 、任务分解</span> + </div> + <el-button type="primary" class="el-icon-plus" @click="handleAddTask" + >新增任务</el-button + > </div> - <el-button type="primary" class="el-icon-plus" @click="handleAddTask">新增任务</el-button> - </div> - <Table - :data="taskTableData" - :total="allTaskTableData.length" - :height="null" - :queryForm="{ pageNum: taskPageNum, pageSize: taskPageSize }" - :disAblePagination="true" - @handleCurrentChange="handleCurrentChange" - class="rwuTable" - > - <el-table-column type="index" label="序号" width="80"></el-table-column> - <el-table-column prop="taskName" label="任务名称"></el-table-column> - <el-table-column prop="personCharge" label="负责人"></el-table-column> - <el-table-column prop="startTime" label="开始时间"></el-table-column> - <el-table-column label="操作" width="200"> - <template slot-scope="scope"> - <el-button type="text" @click="handleEditTask(scope.row)">编辑</el-button> - <el-button type="text" @click="handleDeleteTask(scope.row)">移除</el-button> - </template> - </el-table-column> - </Table> + <Table + :data="taskTableData" + :total="allTaskTableData.length" + :height="null" + :queryForm="{ pageNum: taskPageNum, pageSize: taskPageSize }" + :disAblePagination="true" + @handleCurrentChange="handleCurrentChange" + class="rwuTable" + > + <el-table-column + type="index" + label="序号" + width="80" + ></el-table-column> + <el-table-column prop="taskName" label="任务名称"></el-table-column> + <el-table-column prop="personCharge" label="负责人"></el-table-column> + <el-table-column prop="startTime" label="开始时间"></el-table-column> + <el-table-column label="操作" width="200"> + <template slot-scope="scope"> + <el-button type="text" @click="handleEditTask(scope.row)" + >编辑</el-button + > + <el-button type="text" @click="handleDeleteTask(scope.row)" + >移除</el-button + > + </template> + </el-table-column> + </Table> <div class="header-title"> <div class="header-title-left"> @@ -212,55 +242,70 @@ </div> <div class="add-project-footer"> - <el-button type="primary" class="save-btn" @click="sendDispatch">保存</el-button> + <el-button type="primary" class="save-btn" @click="sendDispatch" + >保存</el-button + > <el-button @click="saveDraft">存草稿</el-button> </div> </el-form> </template> - <SelectMember ref="selectMember" @submit="selectUser" /> + <SelectMember ref="selectMember" @submit="selectUser" /> <AddGroupDialog ref="addGroupDialog" @submit="handleGroupSubmit" /> <AddTaskDialog ref="addTaskDialog" @submit="handleTaskSubmit" /> </Card> </template> <script> -import SelectMember from '@/components/SelectMember/index.vue' -import AddGroupDialog from './components/AddGroupDialog' -import AddTaskDialog from './components/AddTaskDialog' -import AIEditor from '@/components/AiEditor' -import { getProposalList, addDispatch, updateDispatch,getDetailById } from './service' - +import SelectMember from "@/components/SelectMember/index.vue"; +import AddGroupDialog from "./components/AddGroupDialog"; +import AddTaskDialog from "./components/AddTaskDialog"; +import AIEditor from "@/components/AiEditor"; +import { + getProposalList, + addDispatch, + updateDispatch, + getDetailById, +} from "./service"; +import { mapState } from "vuex"; export default { name: "AddProject", components: { SelectMember, AddGroupDialog, AddTaskDialog, - AIEditor + AIEditor, }, data() { return { - id: '', // 用于编辑时存储id + id: "", // 用于编辑时存储id form: { - projectName: '', // 课题方案名称 - proposalId: '', // 项目课题方案id - projectStage: '', // 项目阶段 - experimentName: '', // 实验名称 - experimentCode: '', // 实验编号 - experimentDate: '', // 实验日期 + projectName: "", // 课题方案名称 + proposalId: "", // 项目课题方案id + projectStage: "", // 项目阶段 + experimentName: "", // 实验名称 + experimentCode: "", // 实验编号 + experimentDate: "", // 实验日期 experimentTime: [], // 实验时间范围 status: -1, // 状态 -1=草稿箱 1=待确认 2=已确认 3=已封存 experimentDispatchGroups: [], // 组别列表 experimentDispatchParticipants: [], // 参与人员 experimentDispatchTasks: [], // 任务列表 - keyNodes: '' // 关键节点 + keyNodes: "", // 关键节点 }, rules: { projectName: [ - { required: true, message: "请输入项目课题方案名称", trigger: "blur" }, + { + required: true, + message: "请输入项目课题方案名称", + trigger: "blur", + }, ], proposalId: [ - { required: true, message: "请输入项目课题方案编号", trigger: "blur" }, + { + required: true, + message: "请输入项目课题方案编号", + trigger: "blur", + }, ], experimentName: [ { required: true, message: "请输入实验名称", trigger: "blur" }, @@ -280,13 +325,13 @@ members: { processEngineer: [], // 工艺工程师 experimenter: [], // 实验员 - analyst: [] // 化验师 + analyst: [], // 化验师 }, selectMemberData: [], ROLE_CONFIG: { - "3": { label: "工艺工程师", limit: 1, default: true }, // 工艺工程师 - "5": { label: "实验员", limit: 8 }, // 实验员 - "4": { label: "化验师", limit: 8 } // 化验师 + 3: { label: "工艺工程师", limit: 1, default: true }, // 工艺工程师 + 5: { label: "实验员", limit: 8 }, // 实验员 + 4: { label: "化验师", limit: 8 }, // 化验师 }, currentEditRoleId: null, // 下拉框数据 @@ -296,16 +341,19 @@ projectDataMap: new Map(), // 缓存方案数据,key为方案ID }; }, + computed: { + ...mapState(["tagList", "isFold"]), + }, methods: { // 获取当前用户信息 getCurrentUser() { - const userInfo = sessionStorage.getItem('userInfo'); + const userInfo = sessionStorage.getItem("userInfo"); return userInfo ? JSON.parse(userInfo) : null; }, addMember() { // 判断是否选择了项目课题方案 if (!this.form.proposalId) { - this.$message.warning('请先选择项目课题方案'); + this.$message.warning("请先选择项目课题方案"); return; } @@ -313,20 +361,22 @@ const currentUser = this.getCurrentUser(); // 如果当前用户是工艺工程师,则自动添加到工艺工程师列表中 if (currentUser && !this.members.processEngineer.length) { - this.members.processEngineer = [{ - userId: currentUser.userId, - nickName: currentUser.nickName, - avatar: currentUser.avatar, - roleId: 3, - roleName: '工艺工程师' - }]; + this.members.processEngineer = [ + { + userId: currentUser.userId, + nickName: currentUser.nickName, + avatar: currentUser.avatar, + roleId: 3, + roleName: "工艺工程师", + }, + ]; // 同时更新selectMemberData this.selectMemberData = [...this.members.processEngineer]; } - + // 设置当前编辑角色为null,表示是新增操作 this.currentEditRoleId = null; - + // 打开选择弹窗,并传入项目ID this.$refs.selectMember.open(); // 设置项目ID @@ -336,7 +386,7 @@ const selectedMembers = [ ...this.members.processEngineer, ...this.members.experimenter, - ...this.members.analyst + ...this.members.analyst, ]; this.$refs.selectMember.setSelection(selectedMembers); }); @@ -344,13 +394,13 @@ editUserList(roleId) { // 判断是否选择了项目课题方案 if (!this.form.proposalId) { - this.$message.warning('请先选择项目课题方案'); + this.$message.warning("请先选择项目课题方案"); return; } // 如果是工艺工程师,不允许修改 if (roleId === 3) { - this.$message.warning('工艺工程师不可修改'); + this.$message.warning("工艺工程师不可修改"); return; } @@ -361,7 +411,7 @@ this.$refs.selectMember.open(); // 设置项目ID this.$refs.selectMember.projectId = this.form.proposalId; - + // 设置已选中的成员(只设置当前角色的成员) this.$nextTick(() => { let selectedMembers = []; @@ -379,7 +429,7 @@ selectUser(data) { // 检查每个角色的选择数量限制 for (const [roleId, config] of Object.entries(this.ROLE_CONFIG)) { - const members = data.filter(item => item.roleId === parseInt(roleId)); + const members = data.filter((item) => item.roleId === parseInt(roleId)); if (members.length > config.limit) { this.$message.error(`${config.label}最多只能选择${config.limit}个`); return; @@ -393,15 +443,17 @@ // 如果是新增操作,更新所有角色的数据 this.members = { processEngineer: this.members.processEngineer, // 保持工艺工程师不变 - experimenter: data.filter(item => item.roleId === 5), // 实验员 - analyst: data.filter(item => item.roleId === 4) // 化验师 + experimenter: data.filter((item) => item.roleId === 5), // 实验员 + analyst: data.filter((item) => item.roleId === 4), // 化验师 }; } else { // 如果是编辑操作,只更新当前编辑的角色数据 - if (currentRoleId === 5) { // 实验员 - this.members.experimenter = data.filter(item => item.roleId === 5); - } else if (currentRoleId === 4) { // 化验师 - this.members.analyst = data.filter(item => item.roleId === 4); + if (currentRoleId === 5) { + // 实验员 + this.members.experimenter = data.filter((item) => item.roleId === 5); + } else if (currentRoleId === 4) { + // 化验师 + this.members.analyst = data.filter((item) => item.roleId === 4); } } @@ -409,7 +461,7 @@ this.selectMemberData = [ ...this.members.processEngineer, ...this.members.experimenter, - ...this.members.analyst + ...this.members.analyst, ]; this.$refs.selectMember.close(); @@ -436,66 +488,70 @@ // 构建提交数据 const submitData = { ...this.form, - experimentDispatchGroups: this.groupTableData.map(item => ({ + experimentDispatchGroups: this.groupTableData.map((item) => ({ groupName: item.groupName, - remark: item.remark + remark: item.remark, })), - experimentDispatchTasks: this.taskTableData.map(item => ({ + experimentDispatchTasks: this.taskTableData.map((item) => ({ taskName: item.taskName, personCharge: item.leader, - startTime: item.startTime + startTime: item.startTime, })), experimentDispatchParticipants: [ - ...this.members.processEngineer.map(userId => ({ + ...this.members.processEngineer.map((userId) => ({ userId, roleType: 3, // 工艺工程师 - status: 1 // 待确认 + status: 1, // 待确认 })), - ...this.members.experimenter.map(userId => ({ + ...this.members.experimenter.map((userId) => ({ userId, roleType: 5, // 实验员 - status: 1 // 待确认 + status: 1, // 待确认 })), - ...this.members.analyst.map(userId => ({ + ...this.members.analyst.map((userId) => ({ userId, roleType: 4, // 化验师 - status: 1 // 待确认 - })) - ] + status: 1, // 待确认 + })), + ], }; - + // TODO: 调用接口提交数据 - console.log('提交数据:', submitData); + console.log("提交数据:", submitData); } }); }, handleAddGroup() { - this.$refs.addGroupDialog.open() + this.$refs.addGroupDialog.open(); }, handleEditGroup(row) { - this.$refs.addGroupDialog.open(row) + this.$refs.addGroupDialog.open(row); }, handleDeleteGroup(row) { - this.$confirm('确认删除该组别吗?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { - const index = this.groupTableData.findIndex(item => item === row) - if (index > -1) { - this.groupTableData.splice(index, 1) - this.$message.success('删除成功') - } - }).catch(() => {}) + this.$confirm("确认删除该组别吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }) + .then(() => { + const index = this.groupTableData.findIndex((item) => item === row); + if (index > -1) { + this.groupTableData.splice(index, 1); + this.$message.success("删除成功"); + } + }) + .catch(() => {}); }, handleGroupSubmit(form) { - console.log('11111111',form ,'2222222',this.groupTableData) - const index = this.groupTableData.findIndex(item => item.id === form.id) + console.log("11111111", form, "2222222", this.groupTableData); + const index = this.groupTableData.findIndex( + (item) => item.id === form.id + ); if (index > -1) { - this.groupTableData.splice(index, 1, form) + this.groupTableData.splice(index, 1, form); } else { - this.groupTableData.push(form) + this.groupTableData.push(form); } // 更新表单数据 this.form.experimentDispatchGroups = this.groupTableData; @@ -505,7 +561,7 @@ const allParticipants = [ ...this.members.processEngineer, ...this.members.experimenter, - ...this.members.analyst + ...this.members.analyst, ]; this.$refs.addTaskDialog.open(null, allParticipants); }, @@ -514,38 +570,43 @@ const allParticipants = [ ...this.members.processEngineer, ...this.members.experimenter, - ...this.members.analyst + ...this.members.analyst, ]; this.$refs.addTaskDialog.open(row, allParticipants); }, handleDeleteTask(row) { - this.$confirm('确认删除该任务吗?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { - const index = this.allTaskTableData.findIndex(item => item === row) - if (index > -1) { - this.allTaskTableData.splice(index, 1) - // 删除后判断是否需要跳页 - const maxPage = Math.ceil(this.allTaskTableData.length / this.taskPageSize) || 1; - if (this.taskPageNum > maxPage) { - this.taskPageNum = maxPage; + this.$confirm("确认删除该任务吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }) + .then(() => { + const index = this.allTaskTableData.findIndex((item) => item === row); + if (index > -1) { + this.allTaskTableData.splice(index, 1); + // 删除后判断是否需要跳页 + const maxPage = + Math.ceil(this.allTaskTableData.length / this.taskPageSize) || 1; + if (this.taskPageNum > maxPage) { + this.taskPageNum = maxPage; + } + this.updateTaskTableData(); + this.$message.success("删除成功"); } - this.updateTaskTableData(); - this.$message.success('删除成功') - } - }).catch(() => {}) + }) + .catch(() => {}); }, handleTaskSubmit(form) { - const index = this.allTaskTableData.findIndex(item => item.taskName === form.taskName); + const index = this.allTaskTableData.findIndex( + (item) => item.taskName === form.taskName + ); const taskData = { - id: form.id || '', + id: form.id || "", taskName: form.taskName, personCharge: form.leader, startTime: form.startTime, - dispatchId: this.id || '', - selectedUsers: form.selectedUsers + dispatchId: this.id || "", + selectedUsers: form.selectedUsers, }; if (index > -1) { this.allTaskTableData.splice(index, 1, taskData); @@ -560,24 +621,26 @@ // 获取所有编辑器的内容 getAllEditorContent() { return { - keyNodes: this.$refs.keyNodesEditor.getContent() - } + keyNodes: this.$refs.keyNodesEditor.getContent(), + }; }, // 统一处理方法 handleSubmit(type) { this.$refs.form.validate((valid) => { if (valid) { // 获取所有编辑器内容 - const editorContents = this.getAllEditorContent() - + const editorContents = this.getAllEditorContent(); + // 检查编辑器内容是否为空 const isEmptyContent = (content) => { - return !content || content === '<p></p>' || content.trim() === '<p></p>' - } + return ( + !content || content === "<p></p>" || content.trim() === "<p></p>" + ); + }; if (isEmptyContent(editorContents.keyNodes)) { - this.$message.warning('请填写关键节点') - return false + this.$message.warning("请填写关键节点"); + return false; } // 构建提交数据 @@ -586,51 +649,55 @@ keyNodes: editorContents.keyNodes, // 移除不需要传递给后端的字段 projectStage: undefined, - experimentDispatchGroups: this.groupTableData.map(item => ({ + experimentDispatchGroups: this.groupTableData.map((item) => ({ groupName: item.groupName, remark: item.remark, - dispatchId: this.id || '', - id: item.id || '' + dispatchId: this.id || "", + id: item.id || "", })), - experimentDispatchTasks: this.taskTableData.map(item => ({ + experimentDispatchTasks: this.taskTableData.map((item) => ({ taskName: item.taskName, personCharge: item.personCharge, startTime: item.startTime, - dispatchId: this.id || '', - id: item.id || '' + dispatchId: this.id || "", + id: item.id || "", })), experimentDispatchParticipants: [ - ...this.members.processEngineer.map(user => ({ + ...this.members.processEngineer.map((user) => ({ userId: user.userId, roleType: 3, // 工艺工程师 status: 1, // 待确认 - dispatchId: this.id || '', - id: user.id || '', + dispatchId: this.id || "", + id: user.id || "", nickName: user.nickName, - avatar: user.avatar + avatar: user.avatar, })), - ...this.members.experimenter.map(user => ({ + ...this.members.experimenter.map((user) => ({ userId: user.userId, roleType: 5, // 实验员 status: 1, // 待确认 - dispatchId: this.id || '', - id: user.id || '', + dispatchId: this.id || "", + id: user.id || "", nickName: user.nickName, - avatar: user.avatar + avatar: user.avatar, })), - ...this.members.analyst.map(user => ({ + ...this.members.analyst.map((user) => ({ userId: user.userId, roleType: 4, // 化验师 status: 1, // 待确认 - dispatchId: this.id || '', - id: user.id || '', + dispatchId: this.id || "", + id: user.id || "", nickName: user.nickName, - avatar: user.avatar - })) + avatar: user.avatar, + })), ], - status: type === 'draft' ? -1 : 1, // 草稿箱:-1, 待确认:1 - experimentStartTime: this.form.experimentTime ? this.form.experimentTime[0] : '', - experimentEndTime: this.form.experimentTime ? this.form.experimentTime[1] : '' + status: type === "draft" ? -1 : 1, // 草稿箱:-1, 待确认:1 + experimentStartTime: this.form.experimentTime + ? this.form.experimentTime[0] + : "", + experimentEndTime: this.form.experimentTime + ? this.form.experimentTime[1] + : "", }; if (this.id) { @@ -639,22 +706,43 @@ const request = this.id ? updateDispatch : addDispatch; - request(formData).then(res => { - if (res.code === 200) { - const successMsg = type === 'draft' ? '草稿保存成功' : (this.id ? '更新成功' : '保存成功'); - this.$message.success(successMsg); - this.$router.back(); - } else { - const errorMsg = type === 'draft' ? '草稿保存失败' : (this.id ? '更新失败' : '保存失败'); - this.$message.error(res.msg || errorMsg); - } - }).catch(err => { - console.error('接口错误:', err); - const errorMsg = type === 'draft' ? '草稿保存失败' : (this.id ? '更新失败' : '保存失败'); - this.$message.error(errorMsg); - }); + request(formData) + .then((res) => { + if (res.code === 200) { + const successMsg = + type === "draft" + ? "草稿保存成功" + : this.id + ? "更新成功" + : "保存成功"; + this.$message.success(successMsg); + this.$router.back(); + this.$store.commit( + "SET_TAGLIST", + this.tagList.filter((item) => item.path !== this.$route.path) + ); + } else { + const errorMsg = + type === "draft" + ? "草稿保存失败" + : this.id + ? "更新失败" + : "保存失败"; + this.$message.error(res.msg || errorMsg); + } + }) + .catch((err) => { + console.error("接口错误:", err); + const errorMsg = + type === "draft" + ? "草稿保存失败" + : this.id + ? "更新失败" + : "保存失败"; + this.$message.error(errorMsg); + }); } else { - this.$message.warning('请填写必填项'); + this.$message.warning("请填写必填项"); return false; } }); @@ -662,12 +750,12 @@ // 保存 sendDispatch() { - this.handleSubmit('save'); + this.handleSubmit("save"); }, // 保存草稿 saveDraft() { - this.handleSubmit('draft'); + this.handleSubmit("draft"); }, handleDateChange(value) { // 处理日期变化后的逻辑 @@ -677,8 +765,8 @@ this.form.experimentStartTime = value[0]; this.form.experimentEndTime = value[1]; } else { - this.form.experimentStartTime = ''; - this.form.experimentEndTime = ''; + this.form.experimentStartTime = ""; + this.form.experimentEndTime = ""; } }, // 统一的搜索方法 @@ -688,28 +776,34 @@ try { // 根据当前激活的输入框决定使用哪个参数 const params = {}; - if (this.$refs.projectNameSelect && this.$refs.projectNameSelect.$el.contains(document.activeElement)) { + if ( + this.$refs.projectNameSelect && + this.$refs.projectNameSelect.$el.contains(document.activeElement) + ) { params.projectName = query; - } else if (this.$refs.proposalIdSelect && this.$refs.proposalIdSelect.$el.contains(document.activeElement)) { + } else if ( + this.$refs.proposalIdSelect && + this.$refs.proposalIdSelect.$el.contains(document.activeElement) + ) { params.projectCode = query; } const res = await getProposalList(params); if (res) { - this.projectOptions = res.map(item => ({ + this.projectOptions = res.map((item) => ({ id: item.id, projectName: item.projectName, projectCode: item.projectCode, - projectStage: item.projectStage + projectStage: item.projectStage, })); // 更新缓存 - this.projectOptions.forEach(item => { + this.projectOptions.forEach((item) => { this.projectDataMap.set(item.id, item); }); } } catch (error) { - console.error('获取方案列表失败:', error); - this.$message.error('获取方案列表失败'); + console.error("获取方案列表失败:", error); + this.$message.error("获取方案列表失败"); } finally { this.projectLoading = false; } @@ -720,7 +814,9 @@ // 方案名称选择变化 handleProjectNameChange(value) { - const selectedProject = this.projectOptions.find(item => item.id === value); + const selectedProject = this.projectOptions.find( + (item) => item.id === value + ); if (selectedProject) { this.updateFormWithProject(selectedProject); } @@ -728,7 +824,9 @@ // 方案编号选择变化 handleProposalIdChange(value) { - const selectedProject = this.projectOptions.find(item => item.id === value); + const selectedProject = this.projectOptions.find( + (item) => item.id === value + ); if (selectedProject) { this.updateFormWithProject(selectedProject); } @@ -755,46 +853,61 @@ // 获取详情 getDetail() { if (this.id) { - getDetailById({ id: this.id }).then(res => { - if (res) { - const data = res - // 设置表单数据 - this.form = { - projectName: data.projectName, - proposalId: data.proposalId, - projectStage: data.projectStage, - experimentName: data.experimentName, - experimentCode: data.experimentCode, - experimentDate: data.experimentDate, - experimentTime: [data.experimentStartTime, data.experimentEndTime], - status: data.status, - experimentDispatchGroups: data.experimentDispatchGroups || [], - experimentDispatchParticipants: data.experimentDispatchParticipants || [], - experimentDispatchTasks: data.experimentDispatchTasks || [], - keyNodes: data.keyNodes || '' + getDetailById({ id: this.id }) + .then((res) => { + if (res) { + const data = res; + // 设置表单数据 + this.form = { + projectName: data.projectName, + proposalId: data.proposalId, + projectStage: data.projectStage, + experimentName: data.experimentName, + experimentCode: data.experimentCode, + experimentDate: data.experimentDate, + experimentTime: [ + data.experimentStartTime, + data.experimentEndTime, + ], + status: data.status, + experimentDispatchGroups: data.experimentDispatchGroups || [], + experimentDispatchParticipants: + data.experimentDispatchParticipants || [], + experimentDispatchTasks: data.experimentDispatchTasks || [], + keyNodes: data.keyNodes || "", + }; + // 设置表格数据 + this.groupTableData = data.experimentDispatchGroups || []; + this.allTaskTableData = data.experimentDispatchTasks || []; + this.updateTaskTableData(); + + // 处理参与人员数据 + this.members = { + processEngineer: + data.experimentDispatchParticipants.filter( + (p) => p.roleType === 3 + ) || [], + experimenter: + data.experimentDispatchParticipants.filter( + (p) => p.roleType === 5 + ) || [], + analyst: + data.experimentDispatchParticipants.filter( + (p) => p.roleType === 4 + ) || [], + }; + + // 更新selectMemberData + this.selectMemberData = [ + ...this.members.processEngineer, + ...this.members.experimenter, + ...this.members.analyst, + ]; } - // 设置表格数据 - this.groupTableData = data.experimentDispatchGroups || [] - this.allTaskTableData = data.experimentDispatchTasks || [] - this.updateTaskTableData(); - - // 处理参与人员数据 - this.members = { - processEngineer: data.experimentDispatchParticipants.filter(p => p.roleType === 3) || [], - experimenter: data.experimentDispatchParticipants.filter(p => p.roleType === 5) || [], - analyst: data.experimentDispatchParticipants.filter(p => p.roleType === 4) || [] - }; - - // 更新selectMemberData - this.selectMemberData = [ - ...this.members.processEngineer, - ...this.members.experimenter, - ...this.members.analyst - ]; - } - }).catch(err => { - console.error('获取详情失败:', err) - }) + }) + .catch((err) => { + console.error("获取详情失败:", err); + }); } }, @@ -808,20 +921,20 @@ try { const res = await getProposalList({}); if (res) { - this.projectOptions = res.map(item => ({ + this.projectOptions = res.map((item) => ({ id: item.id, projectName: item.projectName, projectCode: item.projectCode, - projectStage: item.projectStage + projectStage: item.projectStage, })); // 更新缓存 - this.projectOptions.forEach(item => { + this.projectOptions.forEach((item) => { this.projectDataMap.set(item.id, item); }); } } catch (error) { - console.error('获取方案列表失败:', error); - this.$message.error('获取方案列表失败'); + console.error("获取方案列表失败:", error); + this.$message.error("获取方案列表失败"); } finally { this.projectLoading = false; } @@ -835,7 +948,6 @@ this.taskPageNum = page; this.updateTaskTableData(); }, - }, created() { // 从路由参数中获取id @@ -849,25 +961,27 @@ // 初始化时自动添加当前用户为工艺工程师(如果是工艺工程师角色) const currentUser = this.getCurrentUser(); if (currentUser) { - this.members.processEngineer = [{ - userId: currentUser.userId, - nickName: currentUser.nickName, - avatar: currentUser.avatar, - roleId: 3, - roleName: '工艺工程师' - }]; + this.members.processEngineer = [ + { + userId: currentUser.userId, + nickName: currentUser.nickName, + avatar: currentUser.avatar, + roleId: 3, + roleName: "工艺工程师", + }, + ]; // 同时更新selectMemberData this.selectMemberData = [...this.members.processEngineer]; } this.updateTaskTableData(); // 初始化时同步一次 - } + }, }; </script> <style scoped lang="less"> -.data-test{ - .el-input__inner{ - background-color: #F5F7FA; +.data-test { + .el-input__inner { + background-color: #f5f7fa; padding-left: 20px !important; } } -- Gitblit v1.7.1