Commit 1efb1e24 authored by lwy's avatar lwy

feat(CQC控制计划管理):查看文件按钮操作,返回按钮操作,查看文件页

parent ed300dff
{
"search": "搜索",
"search": "查询",
"reset": "重置",
"pleaseChoose": "请选择",
"pleaseEnter": "请输入",
......
......@@ -14,7 +14,7 @@
</template>
<el-select
v-model="queryParams.businessUnitId"
:placeholder="`${cn.pleaseChoose}/${en.pleaseChoose}`"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
......@@ -38,7 +38,7 @@
</template>
<el-select
v-model="queryParams.vehicleModelCode"
:placeholder="`${cn.pleaseChooseOrEnter}/${en.pleaseChooseOrEnter}`"
:placeholder="`${cn.pleaseChooseOrEnter}${en.pleaseChooseOrEnter}`"
clearable
filterable
style="width: 200px"
......@@ -63,7 +63,7 @@
</template>
<el-select
v-model="queryParams.vehicleSeries"
:placeholder="`${cn.pleaseChoose}/${en.pleaseChoose}`"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
......@@ -90,7 +90,7 @@
</template>
<el-input
v-model="queryParams.productionAddress"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -108,7 +108,7 @@
</template>
<el-input
v-model="queryParams.versionNumber"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -126,7 +126,7 @@
</template>
<el-input
v-model="queryParams.createBy"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -144,7 +144,7 @@
</template>
<el-input
v-model="queryParams.productionFactory"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -164,7 +164,7 @@
</template>
<el-select
v-model="queryParams.controlPlanStatus"
:placeholder="`${cn.pleaseChoose}/${en.pleaseChoose}`"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
......@@ -180,8 +180,8 @@
<!-- 重置搜索按钮 -->
<el-col :span="18">
<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>
<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>
......@@ -300,6 +300,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>
......@@ -410,11 +419,107 @@ const { queryParams, form, rules } = toRefs(data);
/** 查询CQC控制计划列表 */
function getList() {
loading.value = true;
historyListPlan(queryParams.value).then(response => {
// 模拟数据 - 历史记录列表
const mockData = {
rows: [
{
id: 1,
controlPlanNumber: 'CP-2023-0001',
brand: '乘用车事业部',
vehicleTypeCode: 'A001',
vehicleSeries: 'sedan',
productionAddress: '上海市嘉定区安亭镇',
versionNumber: 'V1.0',
deadline: '2023-12-31',
createBy: '张三',
createTime: '2023-01-15 09:30:00',
updateTime: '2023-01-15 10:45:00',
productionStatus: '量产',
productionFactory: '上海工厂',
finalFileAddress: 'CP-2023-0001_V1.0.pdf',
controlPlanStatus: 'plan_draft_final_confirmed'
},
{
id: 2,
controlPlanNumber: 'CP-2023-0002',
brand: '新能源事业部',
vehicleTypeCode: 'E005',
vehicleSeries: 'new_energy',
productionAddress: '江苏省南京市江宁区',
versionNumber: 'V2.1',
deadline: '2024-06-30',
createBy: '李四',
createTime: '2023-03-20 14:15:00',
updateTime: '2023-05-10 16:20:00',
productionStatus: '试生产',
productionFactory: '南京工厂',
finalFileAddress: 'CP-2023-0002_V2.1.pdf',
controlPlanStatus: 'plan_draft_final_confirmed'
},
{
id: 3,
controlPlanNumber: 'CP-2023-0003',
brand: '商用车事业部',
vehicleTypeCode: 'C003',
vehicleSeries: 'mpv',
productionAddress: '山东省济南市高新区',
versionNumber: 'V1.2',
deadline: '2023-11-15',
createBy: '王五',
createTime: '2023-02-08 11:45:00',
updateTime: '2023-09-25 15:30:00',
productionStatus: '量产',
productionFactory: '济南工厂',
finalFileAddress: 'CP-2023-0003_V1.2.pdf',
controlPlanStatus: 'plan_draft_final_confirmed'
},
{
id: 4,
controlPlanNumber: 'CP-2023-0004',
brand: '乘用车事业部',
vehicleTypeCode: 'B002',
vehicleSeries: 'suv',
productionAddress: '广东省广州市黄埔区',
versionNumber: 'V3.0',
deadline: '2024-03-31',
createBy: '赵六',
createTime: '2023-04-30 16:20:00',
updateTime: '2023-10-15 14:00:00',
productionStatus: '量产',
productionFactory: '广州工厂',
finalFileAddress: 'CP-2023-0004_V3.0.pdf',
controlPlanStatus: 'plan_draft_final_confirmed'
},
{
id: 5,
controlPlanNumber: 'CP-2023-0005',
brand: '特种车事业部',
vehicleTypeCode: 'G007',
vehicleSeries: 'sports',
productionAddress: '北京市顺义区',
versionNumber: 'V1.1',
deadline: '2023-12-10',
createBy: '钱七',
createTime: '2023-01-28 10:10:00',
updateTime: '2023-07-05 11:50:00',
productionStatus: '试生产',
productionFactory: '北京工厂',
finalFileAddress: 'CP-2023-0005_V1.1.pdf',
controlPlanStatus: 'plan_draft_final_confirmed'
}
],
total: 5
}
// 使用假数据填充表格
historyList.value = mockData.rows;
total.value = mockData.total;
loading.value = false;
/* historyListPlan(queryParams.value).then(response => {
historyList.value = response.rows;
total.value = response.total;
loading.value = false;
});
});*/
}
// 取消按钮
......@@ -463,6 +568,26 @@ function resetQuery() {
handleQuery();
}
/** 查看文件按钮操作 */
function handleViewFile() {
proxy.$router.push({
path: '/control/CQCControlPlan/CQCViewFile',
query: {
source: 'history'
}
});
}
/** 查看按钮操作 */
function handleView(row) {
proxy.$router.push({
path: '/control/CQCControlPlan/CQCControlPlanView',
query: {
id: row.id,
source: 'history'
}});
}
/*查询所有事业部名称*/
function getAllBusinessUnit() {
getAllBusinessUnitName().then(res => {
......
......@@ -14,7 +14,7 @@
</template>
<el-input
v-model="queryParams.controlPlanNumber"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -32,7 +32,7 @@
</template>
<el-select
v-model="queryParams.businessUnitId"
:placeholder="`${cn.pleaseChoose}/${en.pleaseChoose}`"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
......@@ -56,7 +56,7 @@
</template>
<el-select
v-model="queryParams.vehicleModelCode"
:placeholder="`${cn.pleaseChooseOrEnter}/${en.pleaseChooseOrEnter}`"
:placeholder="`${cn.pleaseChooseOrEnter}${en.pleaseChooseOrEnter}`"
clearable
filterable
style="width: 200px"
......@@ -81,7 +81,7 @@
</template>
<el-select
v-model="queryParams.vehicleSeries"
:placeholder="`${cn.pleaseChoose}/${en.pleaseChoose}`"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
......@@ -108,7 +108,7 @@
</template>
<el-input
v-model="queryParams.versionNumber"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -126,7 +126,7 @@
</template>
<el-input
v-model="queryParams.productionAddress"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -144,7 +144,7 @@
</template>
<el-input
v-model="queryParams.createBy"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -162,7 +162,7 @@
</template>
<el-input
v-model="queryParams.productionFactory"
:placeholder="`${cn.pleaseEnter}/${en.pleaseEnter}`"
:placeholder="`${cn.pleaseEnter}${en.pleaseEnter}`"
clearable
style="width: 200px"
/>
......@@ -182,7 +182,7 @@
</template>
<el-select
v-model="queryParams.controlPlanStatus"
:placeholder="`${cn.pleaseChoose}/${en.pleaseChoose}`"
:placeholder="`${cn.pleaseChoose}${en.pleaseChoose}`"
clearable
style="width: 200px"
>
......@@ -198,15 +198,15 @@
<!-- 重置搜索按钮 -->
<el-col :span="18">
<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>
<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 class="button-container">
<el-button style="float: right" class="btn-C" @click="viewHistory">{{cn.viewHistoricalControlPlan}}/{{en.viewHistoricalControlPlan}}</el-button>
<el-button style="float: right" class="btn-C" @click="viewHistory">{{cn.viewHistoricalControlPlan}}{{en.viewHistoricalControlPlan}}</el-button>
</div>
<el-table v-loading="loading" :data="planList" @selection-change="handleSelectionChange">
......@@ -395,7 +395,7 @@
</div>
</el-button>
<!-- 撤销 -->
<el-button v-show="scope.row.controlPlanStatus === 'plan_drafting' || scope.row.controlPlanStatus === 'plan_draft_completed'" link type="danger" @click="handleUndo(scope.row)">
<el-button v-show="scope.row.controlPlanStatus !== 'plan_draft_revoked' && scope.row.controlPlanStatus !== 'plan_draft_deleted'" link type="danger" @click="handleUndo(scope.row)">
<div>
<div>{{cn.revoke}}</div>
<div>{{en.revoke}}</div>
......@@ -455,7 +455,7 @@
@pagination="getList"
/>
<!-- 撤销弹出框 -->
<!-- 撤销弹出框 -->
<DeleteDialog
:visible="undoDialogVisible"
:content="cn.confirmUndoControlPlan"
......@@ -884,6 +884,11 @@ function viewHistory() {
proxy.$router.push({ path: '/control/CQCControlPlan/CQCControlPlanHistory' });
}
/** 查看文件按钮操作 */
function handleViewFile() {
proxy.$router.push({ path: '/control/CQCControlPlan/CQCViewFile' });
}
/** 查看按钮操作 */
function handleView(row) {
proxy.$router.push({ path: '/control/CQCControlPlan/CQCControlPlanView',query: {id: row.id}});
......
......@@ -65,12 +65,21 @@ import criticalPartsControl from '@/views/controlPlan/CQCControlPlan/CQCControlP
import manufacturingProcessControl from '@/views/controlPlan/CQCControlPlan/CQCControlPlanManagement/manufacturingProcessControl.vue'
import wholeVehicleCopControl from '@/views/controlPlan/CQCControlPlan/CQCControlPlanManagement/wholeVehicleCopControl.vue'
import procurementQualityControl from '@/views/controlPlan/CQCControlPlan/CQCControlPlanManagement/procurementQualityControl.vue'
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
const { proxy } = getCurrentInstance();
const source = route.query.source
const activeName = ref("criticalPartsControl");
const handleBack = () => {
proxy.$router.push({ path: '/control/CQCControlPlan/CQCControlPlanIndex'});
if (source === 'history') {
proxy.$router.push({path: '/control/CQCControlPlan/CQCControlPlanHistory'})
} else {
proxy.$router.push({path: '/control/CQCControlPlan/CQCControlPlanIndex'});
}
}
......
<template>
<div class="app-container">
<div class="header-container">
<div class="left-content">
<el-button
link
@click="handleBack"
style="font-size: 16px; margin-right: 16px"
>
<el-icon>
<ArrowLeft />
</el-icon>
返回
</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"
>T28<!--{{ descriptionsList.vehicleModelCode }}--></span
>
</el-text>
<el-text style="margin-left: 20px; color: black">
车型系列:<span style="font-weight: 800; margin-left: 10px"
>CJ1A<!--{{ descriptionsList.vehicleSeries }}--></span
>
</el-text>
<el-text style="margin-left: 20px; color: black">
版本号:<span style="font-weight: 800; margin-left: 10px"
>A0<!--{{ descriptionsList.versionNo }}--></span
>
</el-text>
<el-text style="margin-left: 20px; color: black">
生产地址:<span style="font-weight: 800; margin-left: 10px"
>XXXXXXXXXXX<!--{{ descriptionsList.productionAddress }}--></span
>
</el-text>
</div>
<div class="right-buttons">
<el-button class="btn-A" style="float: right"> 重新生成 </el-button>
<el-button class="btn-A" style="float: right"> 查看变更履历 </el-button>
<el-button class="btn-A" style="float: right"> 下载 </el-button>
</div>
</div>
</div>
</template>
<script setup>
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
const { proxy } = getCurrentInstance()
const source = route.query.source
const handleBack = () => {
if (source === 'history'){
proxy.$router.push({ path: '/control/CQCControlPlan/CQCControlPlanHistory' })
}else {
proxy.$router.push({ path: '/control/CQCControlPlan/CQCControlPlanIndex' })
}
}
</script>
<style scoped lang="scss">
.header-container {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 0;
}
.button-container {
display: flex;
justify-content: flex-end;
margin-bottom: 20px;
}
:deep(.el-pagination) {
display: flex;
justify-content: center;
width: 100%;
margin-top: 24px;
}
:deep(.el-pagination.is-background .el-pager li.is-active) {
background-color: #0154fb;
}
:deep(.el-checkbox__input.is-checked + .el-checkbox__label) {
}
.tab-components {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20px;
.components-span {
border-left: 5px solid #409eff;
padding-left: 5px;
color: #409eff;
font-weight: bold;
}
}
.my-dialog-style {
--el-dialog-header-background-color: #f5f5f5;
--el-dialog-header-text-color: #333;
}
.section {
margin-bottom: 10px;
font-weight: 500;
}
.section-number {
color: #409eff;
margin-right: 5px;
}
.right-buttons {
display: flex;
gap: 16px; /* 按钮之间的间距 */
}
</style>
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