Commit cd7734b2 authored by lwy's avatar lwy

feat(CQC控制计划管理):主列表按钮

parent 6a86e284
......@@ -18,7 +18,7 @@ export function historyListPlan(query) {
})
}
// 查询所有事业部名称
// 查询所有事业部名称---改查询区的事业部和车型代码需要根据当前登录用户的事业部权限显示对应的数据
export function getAllBusinessUnitName() {
return request({
url: '/control/unit/list',
......@@ -26,7 +26,7 @@ export function getAllBusinessUnitName() {
})
}
// 查询所有车型代码
// 查询所有车型代码---改查询区的事业部和车型代码需要根据当前登录用户的事业部权限显示对应的数据
export function getAllvehicleModelCode() {
return request({
url: '/control/notificationManagement/getAllModelCode',
......@@ -34,6 +34,23 @@ export function getAllvehicleModelCode() {
})
}
// 撤销控制计划
export function undoPlan(data) {
return request({
url: '/control/cqcPlan/revoke/',
method: 'put',
data: data
})
}
// 获取所有人员列表
export function getALLUserList() {
return request({
url: '/system/dept/userDeptList',
method: 'get'
})
}
// 查询CQC控制计划详细
export function getPlan(id) {
return request({
......@@ -63,7 +80,7 @@ export function updatePlan(data) {
// 删除CQC控制计划
export function delPlan(id) {
return request({
url: '/system/plan/' + id,
url: '/control/cqcPlan/delete/' + id,
method: 'delete'
})
}
......@@ -19,7 +19,9 @@
"productionSituation": "生产情况",
"keyPartsTaskStatus": "关键零部件控制表单状态",
"manufacturingProcessControlTaskStatus": "制造过程控制表单状态",
"wholeVehicleCopTaskStatus": "COP试验和检查表表单状态",
"wholeVehicleCopTaskStatus": "整车COP控制表单状态",
"wholeVehicleCopControl": "整车COP控制",
"keyPartsControl": "关键零部件控制",
"finalFileAddress": "终版文件",
"operation": "操作",
"serialNumber": "序号",
......@@ -46,7 +48,7 @@
"controlPlanNumberPrefix": "(控制计划编号:",
"controlPlanNumberSuffix": ")",
"keyPartsList": "关键零部件清单",
"keyProcessAssemblyInspectionList": "关键工序、装配、检验清单",
"manufacturingProcessControl": "制造过程控制",
"copTestAndChecklist": "COP试验和检查表",
"compilationResponsiblePerson": "编制负责人",
"manufacturingCompilationResponsiblePerson": "制造编制负责人",
......
......@@ -18,9 +18,11 @@
"productionPlant": "Production Plant",
"productionSituation": "Production Situation",
"keyPartsTaskStatus": "Key Parts From Status",
"keyPartsControl": "Key Parts Control",
"finalFileAddress": "Final File",
"manufacturingProcessControlTaskStatus": "Manufacturing Process Control From Status",
"wholeVehicleCopTaskStatus": "Whole Vehicle Cop From Status",
"wholeVehicleCopControl": "Whole Vehicle Cop Control",
"operation": "Operation",
"serialNumber": "Ordinal",
"viewHistoricalControlPlan": "View Historical Control Plan",
......@@ -47,6 +49,7 @@
"controlPlanNumberSuffix": ")",
"keyPartsList": "Key Parts List",
"keyProcessAssemblyInspectionList": "Key Process, Assembly and Inspection List",
"manufacturingProcessControl": "Manufacturing Process Control",
"copTestAndChecklist": "COP Test and Checklist",
"compilationResponsiblePerson": "Compilation Responsible Person",
"manufacturingCompilationResponsiblePerson": "Manufacturing Compilation Responsible Person",
......
......@@ -345,12 +345,20 @@
</template>
<script setup>
import { historyListPlan, getPlan, delPlan, addPlan, updatePlan } from "@/api/CQCControlPlanManagement/CQCControlPlanManagement.js";
import {
historyListPlan,
getAllBusinessUnitName,
delPlan,
addPlan,
updatePlan,
getAllvehicleModelCode
} from "@/api/CQCControlPlanManagement/CQCControlPlanManagement.js";
import cn from "@/locales/controlPlan/CQCControlPlan/CQCControlPlanManagement/index/cn.json";
import en from "@/locales/controlPlan/CQCControlPlan/CQCControlPlanManagement/index/en.json";
import {ref} from "vue";
const { proxy } = getCurrentInstance();
const {vehicle_model_series, control_plan_status} = proxy.useDict('vehicle_model_series','control_plan_status');
const historyList = ref([]);
const businessList = ref([]);
......@@ -463,7 +471,7 @@ function getAllBusinessUnit() {
}
/*查询所有车型代码*/
function getAllVehicleModelCode() {
function getVehicleModelCode() {
getAllvehicleModelCode().then(res => {
vehicleModelCodeList.value = res.data
})
......@@ -530,7 +538,7 @@ function handleDelete(row) {
onMounted(()=>{
getList()
getAllBusinessUnit()
getAllVehicleModelCode()
getVehicleModelCode()
})
</script>
......
......@@ -357,6 +357,15 @@
<div>{{en.finalFileAddress}}</div>
</div>
</template>
<template #default="scope">
<el-button style="textDecoration: underline"
v-if="scope.row.finalFileAddress && scope.row.finalFileAddress.trim() !== ''"
link type="primary"
@click="handleViewFile(scope.row)">
查看文件
</el-button>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column label="控制计划状态" fixed="right" width="150" align="center" prop="controlPlanStatus" >
<template #header>
......@@ -446,6 +455,149 @@
@pagination="getList"
/>
<!-- 撤销弹出框 -->
<DeleteDialog
:visible="undoDialogVisible"
:content="cn.confirmUndoControlPlan"
:english-content="en.confirmUndoControlPlan"
@confirm="confirmUndo"
@cancel="undoDialogVisible = false"
/>
<!-- 删除提示框-->
<DeleteDialog
:visible="deleteDialogVisible"
:content="cn.confirmDeleteControlPlan"
:english-content="en.confirmDeleteControlPlan"
@confirm="confirmDelete"
@cancel="deleteDialogVisible = false"
/>
<!-- 调整编制负责人弹出框-->
<el-dialog
v-model="adjustCompilationResponsiblePersonDialogVisible"
title="调整编制负责人"
custom-class="my-dialog-style"
style="width: 950px;height: 500px;margin-top: 200px" :fullscreen="true"
>
<template #header>
<div style="color: #666666;font-size: 16px;font-weight: bold"><span>{{ cn.adjustCompilationResponsiblePerson }} </span><span>{{ cn.controlPlanNumberPrefix }} {{ currentRow.controlPlanNumber }} {{ cn.controlPlanNumberSuffix }}</span></div>
<div style="color: #666666;font-size: 16px;font-weight: bold"><span>{{ en.adjustCompilationResponsiblePerson }} </span><span>{{ en.controlPlanNumberPrefix }} {{ currentRow.controlPlanNumber }} {{ en.controlPlanNumberSuffix }}</span></div>
</template>
<template #default>
<!-- 01.关键零部件控制-->
<div>
<div class="tab-components" style="margin-bottom: 10px">
<span class="components-span">01.{{cn.keyPartsControl}}{{en.keyPartsControl}}</span>
</div>
<el-checkbox v-model="isChecked1">
{{cn.compilationResponsiblePerson}}{{en.compilationResponsiblePerson}}
<el-input v-model="personInCharge1" :disabled="!isChecked1" style="width: 200px;margin-right: 10px" />
<el-button type="primary" plain icon="user" :disabled="!isChecked1" @click="openSelectPersonnelDialog(1)">{{cn.selectPersonnel}}{{en.selectPersonnel}}</el-button>
</el-checkbox>
</div>
<!-- 02.制造过程控制-->
<div>
<div class="tab-components" style="margin-bottom: 10px">
<span class="components-span">02.{{cn.manufacturingProcessControl}}{{en.manufacturingProcessControl}}</span>
</div>
<el-checkbox v-model="isChecked2">
{{cn.compilationResponsiblePerson}}{{en.compilationResponsiblePerson}}
<el-input v-model="personInCharge2" :disabled="!isChecked2" style="width: 200px;margin-right: 10px" />
<el-button type="primary" plain icon="user" :disabled="!isChecked2" @click="openSelectPersonnelDialog(2)">{{cn.selectPersonnel}}{{en.selectPersonnel}}</el-button>
</el-checkbox>
</div>
<!-- 03.整车COP控制-->
<div>
<div class="tab-components" style="margin-bottom: 10px">
<span class="components-span">03.{{cn.wholeVehicleCopControl}}{{en.wholeVehicleCopControl}}</span>
</div>
<el-checkbox v-model="isChecked3">
{{cn.compilationResponsiblePerson}}{{en.compilationResponsiblePerson}}
<el-input v-model="personInCharge3" :disabled="!isChecked3" style="width: 200px;margin-right: 10px" />
<el-button type="primary" plain icon="user" :disabled="!isChecked3" @click="openSelectPersonnelDialog(3)">{{cn.selectPersonnel}}{{en.selectPersonnel}}</el-button>
</el-checkbox>
</div>
</template>
<template #footer>
<div style="margin-top: 30px;margin-right: 10px">
<el-button class="btn-B" @click="adjustCompilationResponsiblePersonDialogVisible = false">{{cn.cancel}}{{en.cancel}}</el-button>
<el-button class="btn-A" type="primary" @click="adjustCompilationResponsiblePersonSubmitForm(row)">{{cn.confirm}}{{en.confirm}}</el-button>
</div>
</template>
</el-dialog>
<!-- 选择用户 -->
<select-role
v-if="userList.length > 0"
v-model="selectRole"
:dept-list="userList"
name-key="nickName"
dept-key="dept"
name-list-key="nickName"
name-id-key="userId"
:selection-mode="selectType"
@submit="handleSelectionSubmit"
@close="() => selectRole = false"
/>
<!-- 提醒下载抽屉 -->
<el-drawer @close="closeDrawer" :title="title" v-model="remindDownloadDrawer" :size="!isDrawer?'40%':'32%'" >
<template #header>
{{cn.remindDownload}}/{{en.remindDownload}}
</template>
<template #default>
<el-form v-model="form" ref="planRef" :inline="true" >
<!-- 选择消息接收人 -->
<div class="tab-components" style="margin-bottom: 10px">
<span class="components-span">{{cn.selectMessageReceiver}}/{{en.selectMessageReceiver}}</span>
</div>
<!-- 接收人 -->
<el-form-item :label="`${cn.receiver}/${en.receiver}`" prop="">
<el-input
v-model="form.jieshouren"
:placeholder="`${cn.pleaseChoose}/${en.pleaseChoose}`"
clearable
style="width: 320px"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" plain @click="" icon="user">{{cn.selectPersonnel}}/{{en.selectPersonnel}}</el-button>
</el-form-item>
<!-- 编辑消息内容 -->
<div class="tab-components" style="margin-bottom: 10px">
<span class="components-span">{{cn.editMessageContent}}/{{en.editMessageContent}}</span>
</div>
<!-- 消息标题 -->
<el-form-item :label="`${cn.messageTitle}/${en.messageTitle}`" prop="">
<el-input
v-model="form.xiaxibiaoti"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
clearable
style="width: 520px"
/>
</el-form-item>
<!-- 消息内容 -->
<el-form-item :label="`${cn.messageContent}/${en.messageContent}`" prop="">
<el-input
v-model="form.xiaoxineirong"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
clearable
style="width: 500px"
:autosize="{ minRows: 2, maxRows: 24 }"
type="textarea"
/>
</el-form-item>
</el-form>
</template>
<template #footer>
<div style="flex: auto">
<el-button class="btn-B" @click="handleCloseDrawer">{{cn.cancel}}/{{en.cancel}}</el-button>
<el-button class="btn-A" type="primary" @click="confirmClick">{{cn.confirm}}/{{en.confirm}}</el-button>
</div>
</template>
</el-drawer>
<!-- 添加或修改CQC控制计划对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="planRef" :model="form" :rules="rules" label-width="80px">
......@@ -496,14 +648,17 @@
<script setup name="Plan">
import {
listPlan,
undoPlan,
delPlan,
getAllBusinessUnitName,
getAllvehicleModelCode
getAllvehicleModelCode,
getALLUserList
} from "@/api/CQCControlPlanManagement/CQCControlPlanManagement.js";
import cn from "@/locales/controlPlan/CQCControlPlan/CQCControlPlanManagement/index/cn.json";
import en from "@/locales/controlPlan/CQCControlPlan/CQCControlPlanManagement/index/en.json";
import {ref} from "vue";
import DeleteDialog from "@/components/DeleteDialog/index.vue";
import SelectRole from "@/components/SelectRole/index.vue"
const { proxy } = getCurrentInstance();
const {vehicle_model_series, control_plan_status} = proxy.useDict('vehicle_model_series','control_plan_status');
......@@ -519,6 +674,27 @@ const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref("");
const deletePlanId = ref(null);//删除控制Id
const undoDialogVisible = ref(false) //撤回提示框
const deleteDialogVisible = ref(false) //删除提示框
const adjustCompilationResponsiblePersonDialogVisible = ref(false)//调整编制负责人弹出框
const currentRow = ref(null);
const isChecked1 = ref(false);
const isChecked2 = ref(false);
const isChecked3 = ref(false);
const personInCharge1 = ref('');
const personInCharge2 = ref('');
const personInCharge3 = ref('');
// 控制人员选择组件的显示与隐藏,默认关闭,使用响应式引用
const selectRole = ref(false)
// 存储人员选择相关的数据,使用响应式引用
const userList = ref([])
// 控制人员选择组件的选择模式,默认是多选模式,使用响应式引用
const selectType = ref('multiple')
//当前选择的编制负责人框的索引
const currentSelectField = ref(null)
const remindDownloadDrawer = ref(false) //提醒下载抽屉
const data = reactive({
form: {},
......@@ -574,7 +750,7 @@ function getList() {
keyPartsTaskStatus: "plan_drafting",
manufacturingProcessControlTaskStatus: "plan_drafting",
wholeVehicleCopTaskStatus: "plan_drafting",
finalFileAddress: "/files/CP20231001_final.pdf",
finalFileAddress: "",
controlPlanStatus: "plan_drafting"
},
{
......@@ -590,7 +766,7 @@ function getList() {
keyPartsTaskStatus: "plan_drafting",
manufacturingProcessControlTaskStatus: "plan_drafting",
wholeVehicleCopTaskStatus: "plan_drafting",
finalFileAddress: "/files/CP20231002_final.pdf",
finalFileAddress: "",
controlPlanStatus: "plan_draft_completed"
},
{
......@@ -622,7 +798,7 @@ function getList() {
keyPartsTaskStatus: "plan_drafting",
manufacturingProcessControlTaskStatus: "plan_drafting",
wholeVehicleCopTaskStatus: "plan_drafting",
finalFileAddress: "/files/CP20231002_final.pdf",
finalFileAddress: "",
controlPlanStatus: "plan_draft_revoked"
},
{
......@@ -713,14 +889,108 @@ function handleView(row) {
proxy.$router.push({ path: '/control/CQCControlPlan/CQCControlPlanView',query: {id: row.id}});
}
/*查询所有事业部名称*/
/** 撤销按钮操作 */
function handleUndo(row) {
undoDialogVisible.value = true
undoData.value = row
}
function confirmUndo() {
if (undoData.value) {
/*改接口*/
undoPlan(undoData.value)
.then(() => {
ElMessage.success('撤销成功');
getList();
undoDialogVisible.value = false;
undoData.value = null;
})
.catch((error) => {
console.error('撤销失败:', error);
ElMessage.error('撤销失败');
});
}
}
/** 删除按钮操作 */
function handleDelete(planId) {
deletePlanId.value = planId;
deleteDialogVisible.value = true;
}
function confirmDelete() {
if (deletePlanId.value) {
delPlan(deletePlanId.value)
.then(() => {
ElMessage.success('删除成功');
getList();
deleteDialogVisible.value = false;
deletePlanId.value = null;
})
.catch((error) => {
console.error('删除失败:', error);
ElMessage.error('删除失败');
});
}
}
/** 调整编制负责人按钮操作 */
function adjustCompilationResponsiblePerson(row) {
adjustCompilationResponsiblePersonDialogVisible.value = true
currentRow.value = row;
}
/*选择用户按钮*/
function openSelectPersonnelDialog(field) {
selectRole.value = true;// 打开选择人员对话框
currentSelectField.value = field
}
/*选自用户框提交按钮*/
const handleSelectionSubmit = (selectedItems) => {
console.log('已选中的项:', selectedItems);
// 处理已选择的用户
switch (currentSelectField.value) {
case 1:
personInCharge1.value = selectedItems.map(item => item.nickName).join(',');
isChecked1.value = false;
break
case 2:
personInCharge2.value = selectedItems.map(item => item.nickName).join(',');
isChecked2.value = false;
break
case 3:
personInCharge3.value = selectedItems.map(item => item.nickName).join(',');
isChecked3.value = false;
break
}
selectRole.value = false;
};
//获取所有人员
function getALLUserDeptList(){
getALLUserList().then(res=>{
userList.value = res.data
})
}
/** 提醒下载按钮操作 */
function handleRemindDownload(row) {
remindDownloadDrawer.value = true
}
/** 提醒下载取消按钮操作 */
function handleCloseDrawer(){
remindDownloadDrawer.value = false
}
/*查询所有事业部名称 --改查询区的事业部和车型代码需要根据当前登录用户的事业部权限显示对应的数据*/
function getAllBusinessUnit() {
getAllBusinessUnitName().then(res => {
businessList.value = res.rows
})
}
/*查询所有车型代码*/
/*查询所有车型代码 --改查询区的事业部和车型代码需要根据当前登录用户的事业部权限显示对应的数据*/
function getAllVehicleModelCode() {
getAllvehicleModelCode().then(res => {
vehicleModelCodeList.value = res.data
......@@ -734,61 +1004,14 @@ function handleSelectionChange(selection) {
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = "添加CQC控制计划";
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
const _id = row.id || ids.value
getPlan(_id).then(response => {
form.value = response.data;
open.value = true;
title.value = "修改CQC控制计划";
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["planRef"].validate(valid => {
if (valid) {
if (form.value.id != null) {
updatePlan(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
addPlan(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal.confirm('是否确认删除CQC控制计划编号为"' + _ids + '"的数据项?').then(function() {
return delPlan(_ids);
}).then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
}).catch(() => {});
}
onMounted(()=>{
getList()
getAllBusinessUnit()
getAllVehicleModelCode()
getALLUserDeptList()
})
</script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment