Commit 223be015 authored by qiyaxin's avatar qiyaxin

feat(COP试验和检查表-质管):处理页面绘制

parent 14720b51
import request from '@/utils/request.js'
// 查询CCAP控制计划审批和描述列表
export function getCCAPPlanDescriptions(id,taskType) {
return request({
url: '/control/compilationTask/getCompilationTaskInfo',
method: 'get',
params: {
controlPlanId: id,
taskType
}
})
}
{
"operation": "操作",
"serialNumber": "序号",
"project": "项目",
"measuringInstrumentsAndEquipment": "测量仪器和设备",
"capacity": "容量",
"frequency": "频次",
"testAndInspectionPlace": "试验和检查的场所",
"executedDocumentNameAndNumber": "所执行的文件名称及编号",
"responsibleDepartment": "责任部门",
"applicableModels": "适用车型",
"fillingStatus": "填写状态",
"fillingTime": "填写时间",
"filler": "填写人",
"search": "搜索",
"reset": "重置",
"pleaseChoose": "请选择",
"pleaseEnter": "请输入",
"pleaseChooseOrEnter": "请选择或输入",
"edit": "编辑",
"completeFilling": "完成填写",
"cancelCompletion": "取消完成"
}
{
"operation": "Operation",
"serialNumber": "Serial Number",
"project": "Project",
"measuringInstrumentsAndEquipment": "Measuring Instruments and Equipment",
"capacity": "Capacity",
"frequency": "Frequency",
"testAndInspectionPlace": "Test and Inspection Place",
"executedDocumentNameAndNumber": "Executed Document Name and Number",
"responsibleDepartment": "Responsible Department",
"applicableModels": "Applicable Models",
"fillingStatus": "Filling Status",
"fillingTime": "Filling Time",
"filler": "Filler",
"search": "Search",
"reset": "Reset",
"pleaseChoose": "Please Choose",
"pleaseEnter": "Please Enter",
"pleaseChooseOrEnter": "Please choose or enter",
"edit": "Edit",
"completeFilling": "Complete Filling",
"cancelCompletion": "Cancel Completion"
}
......@@ -56,6 +56,6 @@
"qualityControlCompilationResponsiblePerson": "Quality Control Compilation Responsible Person",
"taskName": "Task Name",
"myProcessingStatus": "My Processing Status",
"audit": "审核",
"approve": "批准"
"audit": "Audit",
"approve": "Approve"
}
<template>
<div class="app-container">
<!--返回按钮、描述列表-->
<div class="top-header">
<div>
<el-button class="back-button" @click="handleBack">
返回/Back
</el-button>
<el-text style="margin-left: 20px;color: black">
事业部:<span style="font-weight: 800;margin-left: 10px">奇瑞</span>
</el-text>
<el-text style="margin-left: 20px;color: black">
车型代码:<span style="font-weight: 800;margin-left: 10px">{{ descriptionsList.vehicleModelCode }}</span>
</el-text>
<el-text style="margin-left: 20px;color: black">
车型系列:<span style="font-weight: 800;margin-left: 10px">{{ descriptionsList.vehicleSeries }}</span>
</el-text>
<el-text style="margin-left: 20px;color: black">
版本号:<span style="font-weight: 800;margin-left: 10px">{{ descriptionsList.versionNo }}</span>
</el-text>
<el-text style="margin-left: 20px;color: black">
生产地址:<span style="font-weight: 800;margin-left: 10px">{{ descriptionsList.productionAddress }}</span>
</el-text>
<el-text style="margin-left: 20px;color: black">
<!-- 最多显示3个-->
车型公告号:<span style="font-weight: 800;margin-left: 10px">{{ descriptionsList.vehicleAnnouncementNo }}</span>
<el-button class="underline-button" link type="primary" @click="">
......共{{}}
</el-button>
</el-text>
</div>
</div>
<!--步骤条-->
<div style="margin-top: 20px">
<el-steps :active="2" align-center >
<el-step
v-for="(item,index) in stepList"
:key="index"
:title="item.nodeName"
:description="item.handleName+ ' ' + (item.handleTime ? item.handleTime : '处理中')"/>
</el-steps>
</div>
<!--编制详情-->
<div class="tab-components">
<span class="components-span">编制详情</span>
<div style="font-size: 14px">
<span>编制任务:</span>
<span style="color: #0154FB">XXXX【编制负责人】</span>
<span>|</span>
<el-button link type="primary" class="underline-button">(共1人)</el-button>
</div>
</div>
<!--消息提示、确认提交、引用预置数据、转交任务 按钮-->
<div style="margin-top: 20px;display: flex;justify-content: space-between;">
<div style="display: flex;justify-content: center; align-items: center; gap: 10px;">
<el-alert type="info" show-icon :closable="false" :class="'custom-blue-bg'">
<template #default>
<span class="custom-blue-text">xx条未完成填写</span>
</template>
</el-alert>
<el-button type="success">确认提交</el-button>
</div>
<div>
<el-button class="btn-C" @click="">引用预置数据</el-button>
<el-button class="btn-C" @click="">转交任务</el-button>
</div>
</div>
<!--查询表单-->
<div style="margin-top: 20px">
<el-form v-model="queryParams" ref="queryRef" :inline="true">
<el-row :gutter="20">
<!-- 项目 -->
<el-col :span="8">
<el-form-item :label="`${cn.controlPlanNumber}${cn.controlPlanNumber}`" prop="controlPlanNumber">
<template #label>
<div style="line-height: 15px;">
{{cn.project}}
<br/>
{{en.project}}
</div>
</template>
<el-input
v-model="queryParams.controlPlanNumber"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
</el-form-item>
</el-col>
<!-- 测量仪器和设备 -->
<el-col :span="8">
<el-form-item :label="`${cn.businessDivision}${en.businessDivision}`" prop="businessUnitId">
<template #label>
<div style="line-height: 15px;">
{{cn.measuringInstrumentsAndEquipment}}
<br/>
{{en.measuringInstrumentsAndEquipment}}
</div>
</template>
<el-select
v-model="queryParams.businessUnitId"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for="item in businessList"
:label="item.businessUnitName"
:value="item.businessUnitName"
/>
</el-select>
</el-form-item>
</el-col>
<!-- 容量 -->
<el-col :span="8">
<el-form-item :label="`${cn.vehicleTypeCode}${en.vehicleTypeCode}`" prop="vehicleModelCode">
<template #label>
<div style="line-height: 15px;">
{{cn.capacity}}
<br/>
{{en.capacity}}
</div>
</template>
<el-select
v-model="queryParams.vehicleModelCode"
:placeholder="`${cn.pleaseChooseOrEnter}${en.pleaseChooseOrEnter}`"
clearable
filterable
style="width: 200px"
>
<el-option
v-for="item in vehicleModelCodeList"
:label="item.vehicleModelCode"
:value="item.vehicleModelCode"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- 频次 -->
<el-col :span="8">
<el-form-item :label="`${cn.vehicleTypeSeries}${en.vehicleTypeSeries}`" prop="vehicleSeries">
<template #label>
<div style="line-height: 15px;">
{{cn.frequency}}
<br/>
{{en.frequency}}
</div>
</template>
<el-select
v-model="queryParams.vehicleSeries"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for="dict in vehicle_model_series"
:key="dict.key"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<!-- 试验和检查的场所 -->
<el-col :span="8">
<el-form-item :label="`${cn.versionNumber}${en.versionNumber}`" prop="versionNumber">
<template #label>
<div style="line-height: 15px;">
{{cn.testAndInspectionPlace}}
<br/>
{{en.testAndInspectionPlace}}
</div>
</template>
<el-select
v-model="queryParams.versionNumber"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for="option in versionNumberOptions"
:key="option"
:label="option"
:value="option"
/>
</el-select>
</el-form-item>
</el-col>
<!-- 所执行的文件名称及编号 -->
<el-col :span="8">
<el-form-item :label="`${cn.productionAddress}${en.productionAddress}`" prop="productionAddress">
<template #label>
<div style="line-height: 15px;">
{{cn.executedDocumentNameAndNumber}}
<br/>
{{en.executedDocumentNameAndNumber}}
</div>
</template>
<el-input
v-model="queryParams.productionAddress"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- 责任部门 -->
<el-col :span="8">
<el-form-item :label="`${cn.creator}${en.creator}`" prop="createBy">
<template #label>
<div style="line-height: 15px;">
{{cn.responsibleDepartment}}
<br/>
{{en.responsibleDepartment}}
</div>
</template>
<el-input
v-model="queryParams.createBy"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
</el-form-item>
</el-col>
<!-- 适用车型 -->
<el-col :span="8">
<el-form-item :label="`${cn.productionPlant}${en.productionPlant}`" prop="productionFactory">
<template #label>
<div style="line-height: 15px;">
{{cn.applicableModels}}
<br/>
{{en.applicableModels}}
</div>
</template>
<el-input
v-model="queryParams.productionFactory"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
</el-form-item>
</el-col>
<!-- 填写状态 -->
<el-col :span="8">
<el-form-item :label="`${cn.controlPlanStatus}${en.controlPlanStatus}`" prop="controlPlanStatus">
<template #label>
<div style="line-height: 15px;">
{{cn.fillingStatus}}
<br/>
{{en.fillingStatus}}
</div>
</template>
<el-select
v-model="queryParams.controlPlanStatus"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for="dict in control_plan_status"
:key="dict.key"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- 填写人 -->
<el-col :span="8">
<el-form-item :label="`${cn.controlPlanStatus}${en.controlPlanStatus}`" prop="controlPlanStatus">
<template #label>
<div style="line-height: 15px;">
{{cn.filler}}
<br/>
{{en.filler}}
</div>
</template>
<el-select
v-model="queryParams.controlPlanStatus"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for="dict in control_plan_status"
:key="dict.key"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<!-- 重置搜索按钮 -->
<el-col :span="16">
<div class="button-container">
<el-button style="width: 110px" class="btn-A" @click="handleQuery">{{ cn.search }}{{ en.search }}</el-button>
<el-button style="width: 110px" class="btn-B" @click="resetQuery">{{ cn.reset }}{{ en.reset }}</el-button>
</div>
</el-col>
</el-row>
</el-form>
</div>
<!--迁移编制条目、分配任务、批量完成填写 按钮-->
<div style="display: flex;justify-content: flex-end;">
<el-button class="btn-C" @click="">迁移编制条目</el-button>
<el-button class="btn-C" @click="">分配任务</el-button>
<el-button class="btn-C " @click="">批量完成填写</el-button>
</div>
<!--表格-->
<el-table :data="tableList">
<el-table-column type="selection" width="55" />
<el-table-column fixed type="index" width="80" align="center" label="序号">
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.serialNumber}}</div>
<div>{{en.serialNumber}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="项目" width="150" align="center" prop="project" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.project}}</div>
<div>{{en.project}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="测量仪器和设备" width="190" align="center" prop="measuringInstrumentsAndEquipment" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.measuringInstrumentsAndEquipment}}</div>
<div>{{en.measuringInstrumentsAndEquipment}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="容量" width="100" align="center" prop="capacity" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.capacity}}</div>
<div>{{en.capacity}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="频次" width="100" align="center" prop="frequency" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.frequency}}</div>
<div>{{en.frequency}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="试验和检查的场所" width="170" align="center" prop="testAndInspectionPlace" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.testAndInspectionPlace}}</div>
<div>{{en.testAndInspectionPlace}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="所执行的文件名称及编号" width="190" align="center" prop="executedDocumentNameAndNumber" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.executedDocumentNameAndNumber}}</div>
<div>{{en.executedDocumentNameAndNumber}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="责任部门" width="120" align="center" prop="responsibleDepartment" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.responsibleDepartment}}</div>
<div>{{en.responsibleDepartment}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="适用车型" width="120" align="center" prop="applicableModels" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.applicableModels}}</div>
<div>{{en.applicableModels}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="填写人" fixed="right" width="120" align="center" prop="filler" >
<template #header>
<div class="light-pink-header" style="display: flex;flex-direction: column">
<div>{{cn.filler}}</div>
<div>{{en.filler}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="填写时间" fixed="right" width="120" align="center" prop="fillingTime" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.fillingTime}}</div>
<div>{{en.fillingTime}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="填写状态" fixed="right" width="120" align="center" prop="fillingStatus" >
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.fillingStatus}}</div>
<div>{{en.fillingStatus}}</div>
</div>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" width="190">
<template #header>
<div style="display: flex;flex-direction: column">
<div>{{cn.operation}}</div>
<div>{{en.operation}}</div>
</div>
</template>
<template #default="scope">
<!-- 编辑 显示:填写状态!=已完成-->
<el-button link type="primary" style="color: #0154FB" @click="">
<div>
<div>{{cn.edit}}</div>
<div>{{en.edit}}</div>
</div>
</el-button>
<!-- 完成填写 显示:填写状态!=已完成-->
<el-button link type="primary" @click="">
<div>
<div>{{cn.completeFilling}}</div>
<div>{{en.completeFilling}}</div>
</div>
</el-button>
<!-- 取消完成 显示:填写状态===已完成-->
<el-button v-show="false" link type="warning" style="color: #EE9B3A" @click="">
<div>
<div>{{cn.cancelCompletion}}</div>
<div>{{en.cancelCompletion}}</div>
</div>
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script setup>
import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const { proxy } = getCurrentInstance();
import { ref, getCurrentInstance } from 'vue'
import cn from '@/locales/controlPlan/CCAPControlPlan/CCAPCompileTaskProcessing/COPqc/cn.json'
import en from '@/locales/controlPlan/CCAPControlPlan/CCAPCompileTaskProcessing/COPqc/en.json'
</script>
<template>
COP试验和检查表-质管
</template>
const descriptionsList = ref({
vehicleModelCode: 'ZYE03',
vehicleSeries: 'CJ1A',
versionNo: 'A0',
productionAddress: '中国安徽省芜湖市经济技术开发区长春路8号',
vehicleAnnouncementNo: 'SQR7000BEVE03、SQR7000BEVE033、SQR7000BEVE032',
})
const stepList = ref([
{
nodeName: '发起编制任务',
handleName: '(发起人:杨帆)',
handleTime: '2024-09-17 16:23:45',
},
{
nodeName: '填写',
handleName: '(编制负责人:赵亮)',
handleTime: '2024-09-17 16:23:45',
} ,
{
nodeName: '审核',
handleName: '(审核人:徐大山)',
handleTime: '2024-09-17 16:23:45',
} ,
{
nodeName: '批准',
handleName: '(批准人:马云剑)',
handleTime: '2024-09-17 16:23:45',
} ,
{
nodeName: '最终确认',
handleName: '(确认人:杨帆)',
handleTime: '2024-09-17 16:23:45',
}
])
const queryParams = ref({
controlPlanNumber: '',
businessUnitId: '',
vehicleModelCode: '',
vehicleSeries: '',
versionNumber: '',
productionAddress: '',
createBy: '',
productionFactory: '',
controlPlanStatus: '',
})
const tableList = ref([
{
project: '发动机性能测试',
measuringInstrumentsAndEquipment: '功率测试仪、转速表',
capacity: '5000 转/分钟',
frequency: '每生产 100 台测试 1 次',
testAndInspectionPlace: '生产车间测试区',
executedDocumentNameAndNumber: '《发动机测试规范》-2025001',
responsibleDepartment: '生产部',
applicableModels: 'ZYE03、CJ1A',
fillingStatus: '已完成',
filler: '张三',
fillingTime: '2025-05-10 09:00:00'
},
{
project: '刹车系统检测',
measuringInstrumentsAndEquipment: '制动力测试仪',
capacity: '8000 牛',
frequency: '每批次抽检 5 台',
testAndInspectionPlace: '质检车间',
executedDocumentNameAndNumber: '《刹车检测标准》-2025002',
responsibleDepartment: '质检部',
applicableModels: 'ZYE03',
fillingStatus: '进行中',
filler: '李四',
fillingTime: '2025-05-11 14:30:00'
},
{
project: '电池续航测试',
measuringInstrumentsAndEquipment: '电量检测仪、里程表',
capacity: '300 公里',
frequency: '每月全检',
testAndInspectionPlace: '户外测试场',
executedDocumentNameAndNumber: '《电池测试方案》-2025003',
responsibleDepartment: '研发部',
applicableModels: 'CJ1A',
fillingStatus: '待填写',
filler: '',
fillingTime: ''
},
{
project: '安全气囊检测',
measuringInstrumentsAndEquipment: '气囊引爆测试仪',
capacity: '100% 成功率',
frequency: '每 500 台抽检 10 台',
testAndInspectionPlace: '安全实验室',
executedDocumentNameAndNumber: '《气囊检测流程》-2025004',
responsibleDepartment: '安全部',
applicableModels: 'ZYE03、CJ1A',
fillingStatus: '已完成',
filler: '王五',
fillingTime: '2025-05-12 16:15:00'
}
])
function handleBack() {
proxy.$router.push({ path: '/control/CCAPControlPlan/CCAPCompileTaskProcessing'});
}
</script>
<style scoped lang="scss">
.top-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
}
.tab-components{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20px;
.components-span{
border-left: 5px solid #409eff;
padding-left: 5px;
font-weight: 800;
color: #409eff;
}
}
// 文字按钮添加下划线
.underline-button {
text-decoration: underline;
}
.custom-blue-bg {
background: #f4f4f5 !important;
color: #1890FF !important;
width: 300px;
}
.custom-blue-text {
color: #666666;
font-size: 15px;
font-weight: 400;
}
.button-container {
display: flex;
justify-content: flex-end;
margin-bottom: 20px;
}
</style>
......@@ -294,7 +294,8 @@
<!-- 编制负责人 处理 按钮显示田条件:
fillerLevel = '0' 为 编制负责人
entryStatus:UN_FINISH 为我的任务状态未成 -->
<el-button v-show="scope.row.fillerLevel === '0' && scope.row.entryStatus === 'UN_FINISH'"
<el-button
v-show="scope.row.fillerLevel === '0' && scope.row.entryStatus === 'UN_FINISH'"
link type="primary" @click="handleProcess(scope.row)">
<div>
<div>{{cn.process}}</div>
......@@ -305,7 +306,8 @@
entryType:NTRY_MAIN_DATA("填写主数据"),ENTRY_PART_NUMBER("填写零件号"),ENTRY_INSPECTION_DOCUMENT("填写检验文件编号"),ENTRY_PART_NUMBER_CONFIRM("零件号确认"),
entryStatus:UN_FINISH 我的任务状态未成
entryStatus:FINISH && taskStatus:plan_compilation_task_filling 我的任务状态已完成但任务状态为填写中 -->
<el-button v-show="
<el-button
v-show="
scope.row.fillerLevel !== '0' &&
['ENTRY_MAIN_DATA', 'ENTRY_PART_NUMBER', 'ENTRY_INSPECTION_DOCUMENT', 'ENTRY_PART_NUMBER_CONFIRM'].includes(scope.row.entryType) &&
(
......@@ -324,7 +326,8 @@
entryTypeL:AUDIT 为审核人,
entryStatus:UN_FINISH 为我的任务状态未完成
禁用:taskStatus != plan_compilation_pending_review 任务状态不是待审核时 -->
<el-button v-show="scope.row.fillerLevel !== '0' && scope.row.entryType === 'AUDIT' && scope.row.entryStatus === 'UN_FINISH' "
<el-button
v-show="scope.row.fillerLevel !== '0' && scope.row.entryType === 'AUDIT' && scope.row.entryStatus === 'UN_FINISH' "
:disabled="scope.row.taskStatus !== 'plan_compilation_pending_review'"
link type="primary" @click="handleAudit(scope.row)">
<div>
......@@ -336,7 +339,8 @@
entryTypeL:APPROVE 为批准人,
entryStatus:UN_FINISH 为我的任务状态未完成
禁用:taskStatus != plan_compilation_pending_approval 任务状态不是待批准时 -->
<el-button v-show="scope.row.fillerLevel !== '0' && scope.row.entryType === 'APPROVE' && scope.row.entryStatus === 'UN_FINISH' "
<el-button
v-show="scope.row.fillerLevel !== '0' && scope.row.entryType === 'APPROVE' && scope.row.entryStatus === 'UN_FINISH' "
:disabled="scope.row.taskStatus!== 'plan_compilation_pending_approval'"
link type="primary" @click="handleApprove(scope.row)">
<div>
......
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