Merge branch 'dev-scheduling' of http://42.192.7.176:3000/suojin/jonhon-mes-web into dev-scheduling

dev-scheduling
wangmeng 3 months ago
commit 741d7c8fa6
  1. 1
      index.html
  2. 2
      src/App.vue
  3. 56
      src/api/qualityManagement/productionTesting/productionDisposition.js
  4. 99
      src/api/qualityManagement/productionTesting/productionQuality.js
  5. 240
      src/views/productionDisposition/hearingDialog.vue
  6. 204
      src/views/productionDisposition/index.vue
  7. 30001
      src/views/productionTesting/components/sametankView.vue
  8. 30413
      src/views/productionTesting/productionQuality.vue
  9. 193
      src/views/qualityManagement/reviewFormMess/index.vue
  10. 238
      src/views/qualityManagement/reviewFormMess/options.js
  11. 3
      src/views/qualityManagement/tankSolutionSystem/components/addEditInfoDialog.vue
  12. 61
      src/views/qualityManagement/tankSolutionSystem/components/disposeDialog.vue
  13. 3
      src/views/qualityManagement/tankSolutionSystem/components/getMedicineDialog.vue
  14. 3
      src/views/qualityManagement/tankSolutionSystem/components/reportBasic.vue

@ -22,6 +22,7 @@
<!-- 导入需要的包 (一定要放到index.html中的head标签里) -->
<script src="/js/Sortable.min.js"></script>
<script src="/js/xlsx.full.min.js"></script>
<script src="/public/config.js"></script>
<title>电镀智能化生产管理系统</title>
</head>

@ -76,7 +76,7 @@ body,
box-sizing: border-box;
padding-top: var(--el-dialog-padding-primary);
text-align: right;
z-index: 2;
z-index: 200;
display: block;
padding: 10px 16px;
box-sizing: border-box;

@ -0,0 +1,56 @@
// 生产处置单
import request from '@/axios';
// 获取故障分类下拉
export const getFaultClassList = (params) => {
return request({
url: '/api/blade-desk/QA/Ng/listForSelectGZLB',
method: 'get',
params
});
};
// 获取问题大类下拉
export const getQuestionClassList = (params) => {
return request({
url: '/api/blade-desk/QA/Ng/listForSelectWTDL',
method: 'get',
params
});
};
// 获取问题小类下拉
export const getQuestionClassList2 = (params) => {
return request({
url: '/api/blade-desk/QA/Ng/listForSelectWTXL',
method: 'get',
params
});
};
// 生产处置单列表
export const getProductionDispositionList = (data) => {
return request({
url: '/api/blade-desk/QA/ReviewSheet/listInit',
method: 'post',
data
});
};
// 生产处置单详细
export const getProductionDispositionDetail = (params) => {
return request({
url: '/api/blade-desk/QA/ReviewSheet/detail',
method: 'get',
params
});
};
// 生产处置单提交
export const createProductionDisposition = (data) => {
return request({
url: '/api/blade-desk/QA/ReviewSheet/fill',
method: 'post',
data
});
};

@ -10,6 +10,15 @@ export const getSupplierList = (params) => {
});
};
// 手动生成质量检验
export const createInspection = (data) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/startNew',
method: 'post',
data
});
};
// 获取生产质量检验
export const getInspectionList = (data) => {
return request({
@ -17,4 +26,94 @@ export const getInspectionList = (data) => {
method: 'post',
data
});
};
// 生产质量检验详情
export const getInspectionDetail = (params) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/detail',
method: 'get',
params
});
};
// 生产质量检验结果填报
export const fillInspection = (data) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/fill',
method: 'post',
data
});
};
// 获取同炉同槽列表
export const getSameLotList = (params) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/getSameList',
method: 'get',
params
});
};
// 同槽同炉结果应用
export const applySameLot = (params) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/sameResultCopy',
method: 'get',
params
});
};
// 获取硬度数据列表
export const getHardnessList = (params) => {
return request({
url: '/api/blade-desk/QA/IotHardness/getDataFirst',
method: 'get',
params
});
};
// 刷新硬度数据
export const refreshHardness = (params) => {
return request({
url: '/api/blade-desk/QA/IotHardness/getDataRefresh',
method: 'get',
params
});
};
// 获取测厚数据
export const getThicknessList = (params) => {
return request({
url: '/api/blade-desk/QA/IotThickness/getData',
method: 'get',
params
});
};
// 质量记录跳转
export const goQualityRecord = (params) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/toQaRecord',
method: 'get',
params
});
};
// 合格证跳转
export const goCertificate = (params) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/toCertificate',
method: 'get',
params
});
};
// 烧结包装防护-子件
export const getSubPackageList = (params) => {
return request({
url: '/api/blade-desk/QA/InspectionTask/subPartList',
method: 'get',
params
});
};

@ -2,89 +2,96 @@
<el-dialog title="新增" append-to-body :modelValue="openShow" width="70%" @close="closeDialog" fullscreen>
<div class="test_type">
<span>审理类型</span>
<el-radio-group v-model="testType" @change="changeType">
<el-radio-group v-model="testType" @change="changeType" :disabled="type == 'view'">
<el-radio :value="1">erp审理</el-radio>
<el-radio :value="2">内部审理</el-radio>
</el-radio-group>
</div>
<div class="test_type" v-if="testType == 1">
<span>历史订单</span>
<el-select v-model="value" placeholder="请选择" style="width: 400px;" :disabled="type == 'view'">
<el-option label="订单1" value="1" />
<el-option label="订单2" value="2" />
</el-select>
</div>
<el-descriptions title="订单信息" border :column="4" label-width="110">
<el-descriptions-item label="车间订单号:">WO-898789988WO</el-descriptions-item>
<el-descriptions-item label="发现工序:">镀后检验</el-descriptions-item>
<el-descriptions-item label="流程卡号:">9887898</el-descriptions-item>
<el-descriptions-item label="批次号:">9088909887</el-descriptions-item>
<el-descriptions-item label="总数量:">78</el-descriptions-item>
<el-descriptions-item label="物料号:">78765688</el-descriptions-item>
<el-descriptions-item label="物料名称:">物料1</el-descriptions-item>
<el-descriptions-item label="车间订单号:">{{detailInfo.woCode}}</el-descriptions-item>
<el-descriptions-item label="发现工序:">{{detailInfo.productionDisposition}}</el-descriptions-item>
<el-descriptions-item label="流程卡号:">{{detailInfo.cardNo}}</el-descriptions-item>
<el-descriptions-item label="批次号:">{{detailInfo.batchNo}}</el-descriptions-item>
<el-descriptions-item label="总数量:">{{detailInfo.totalNum}}</el-descriptions-item>
<el-descriptions-item label="物料号:">{{detailInfo.partCode}}</el-descriptions-item>
<el-descriptions-item label="物料名称:">{{detailInfo.materialName}}</el-descriptions-item>
<el-descriptions-item label="不良原因:">
<el-input v-model="input" placeholder="请输入" />
<el-input v-model="detailInfo.poorReason" placeholder="请输入" :disabled="type == 'view'" />
</el-descriptions-item>
<el-descriptions-item label="不良描述:">
<el-input v-model="input" type="textarea" :rows="3" placeholder="请输入" style="width: 40%;" />
<el-input v-model="detailInfo.poorDesc" type="textarea" :rows="3" placeholder="请输入" :disabled="type == 'view'" style="width: 40%;" />
</el-descriptions-item>
</el-descriptions>
<el-descriptions v-if="testType == 1" class="margin-top" title="质量信息" border :column="3" label-width="110" style="margin-bottom: 24px;">
<el-descriptions-item label="历史订单:">
<el-select v-model="value" placeholder="请选择" style="width: 400px;">
<!-- <el-descriptions-item label="历史订单:">
<el-select v-model="value" placeholder="请选择" style="width: 400px;" :disabled="type == 'view'">
<el-option label="订单1" value="1" />
<el-option label="订单2" value="2" />
</el-select>
</el-descriptions-item>
</el-descriptions-item> -->
<el-descriptions-item label="处置单类型:">
<el-select v-model="value" placeholder="请选择" style="width: 400px;">
<el-select v-model="detailInfo.reviewOrderMode" placeholder="请选择" style="width: 400px;" :disabled="type == 'view'">
<el-option label="零件模式" value="1" />
<el-option label="装配模式" value="2" />
<el-option label="售后模式" value="3" />
<!-- <el-option label="售后模式" value="3" /> -->
</el-select>
</el-descriptions-item>
<el-descriptions-item label="不合格数:">
<el-input v-model="input" placeholder="请输入" style="width: 400px;"/>
<el-input v-model="detailInfo.unqualifiedQty" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="比例:">
<el-input v-model="input" placeholder="请输入" style="width: 400px;"/>
<el-input v-model="detailInfo.scale" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="上级编码:">
<el-input v-model="input" placeholder="请输入" style="width: 400px;"/>
<el-input v-model="detailInfo.upCode" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="">
<el-checkbox-group v-model="checkList">
<el-checkbox label="批次性问题" value="Value A" />
<el-checkbox label="典型问题" value="Value B" />
<el-checkbox label="低级错误" value="Value C" />
<el-checkbox label="质量问题" value="Value disabled" />
<el-checkbox-group v-model="checkList" :disabled="type == 'view'">
<el-checkbox label="批次性问题" value="isBatProblem" />
<el-checkbox label="典型问题" value="isClassicProblem" />
<el-checkbox label="低级错误" value="isLowError" />
<el-checkbox label="质量问题" value="isQualityProblem" />
</el-checkbox-group>
</el-descriptions-item>
</el-descriptions>
<el-descriptions v-if="testType == 2" class="margin-top" title="质量信息" border :column="3" label-width="110" style="margin-bottom: 24px;">
<el-descriptions-item label="比例:">
<el-input v-model="input" placeholder="请输入" style="width: 400px;"/>
<el-input v-model="detailInfo.scale" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="不合格数:">
<el-input v-model="input" placeholder="请输入" style="width: 400px;"/>
<el-input v-model="detailInfo.unqualifiedQty" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="处置类型">
<el-radio-group v-model="disposalType">
<el-radio-group v-model="disposalType" :disabled="type == 'view'">
<el-radio :value="1">返修</el-radio>
<el-radio :value="2">报废</el-radio>
</el-radio-group>
</el-descriptions-item>
<el-descriptions-item label="返修数量:">
<el-input v-model="input" placeholder="请输入" style="width: 400px;"/>
<el-input v-model="detailInfo.reDoNum" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="报废数量:">
<el-input v-model="input" placeholder="请输入" style="width: 400px;"/>
<el-input v-model="detailInfo.scrapNum" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="">
<el-checkbox-group v-model="checkList">
<el-checkbox label="批次性问题" value="Value A" />
<el-checkbox label="典型问题" value="Value B" />
<el-checkbox label="低级错误" value="Value C" />
<el-checkbox label="质量问题" value="Value disabled" />
<el-checkbox-group v-model="checkList" :disabled="type == 'view'">
<el-checkbox label="批次性问题" value="isBatProblem" />
<el-checkbox label="典型问题" value="isClassicProblem" />
<el-checkbox label="低级错误" value="isLowError" />
<el-checkbox label="质量问题" value="isQualityProblem" />
</el-checkbox-group>
</el-descriptions-item>
</el-descriptions>
@ -146,62 +153,63 @@
<el-row :gutter="24" v-if="testType == 1" >
<el-col :span="24" style="margin-bottom: 24px;">
<div class="btn_box">
<el-button type="primary" plain @click="insertFaultEvent()">插入一行</el-button>
<el-button type="danger" plain @click="deleteFaultEvent()">删除选择行</el-button>
<el-button type="primary" :disabled="type == 'view'" plain @click="insertFaultEvent()">插入一行</el-button>
<el-button type="danger" :disabled="type == 'view'" plain @click="deleteFaultEvent()">删除选择行</el-button>
</div>
<div class="table_box">
<el-table ref="faultTable" height="240" :data="faultList" @selection-change="handleSelectionChange"
@select="selectChangeData" border>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="故障类别" prop="faultType.rstId" align="center">
<el-table-column label="故障类别" prop="ngType2Id" align="center">
<template #header>
<span><i style="color:red">*</i>故障类别</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.faultType.rstId">
<el-option v-for="item in errorTypeArr" :key="item.rstId" :value="item.rstId"
:label="item.rstName"></el-option>
<el-select v-model="scope.row.ngType2Id" :disabled="type == 'view'">
<el-option v-for="item in errorTypeArr" :key="item.id" :value="item.id"
:label="item.name"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="问题大类" prop="questClass.rstId" align="center">
<el-table-column label="问题大类" prop="ngType3Id" align="center">
<template #header>
<span><i style="color:red">*</i>问题大类</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.questClass.rstId" :disabled="!scope.row.faultType.rstId">
<el-option v-for="item in errorBigArr" :key="item.rstId" :value="item.rstId"
:label="item.rstName"></el-option>
<el-select v-model="scope.row.ngType3Id" :disabled="!scope.row.ngType2Id || type == 'view'"
@change="changeBigQuestion" >
<el-option v-for="item in errorBigArr" :key="item.id" :value="item.id"
:label="item.name"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="问题小类" prop="questSubClass.rstId" align="center">
<el-table-column label="问题小类" prop="ngType4Id" align="center">
<template #header>
<span><i style="color:red">*</i>问题小类</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.questSubClass.rstId"
:disabled="!scope.row.questClass.rstId">
<el-option v-for="item in errorSmallArr" :key="item.rstId" :value="item.rstId"
:label="item.rstName"></el-option>
<el-select v-model="scope.row.ngType4Id"
:disabled="!scope.row.ngType3Id || type == 'view'" >
<el-option v-for="item in errorSmallArr" :key="item.id" :value="item.id"
:label="item.name"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="比例" prop="proportion" align="center">
<el-table-column label="比例" prop="scale" align="center">
<template #default="scope">
<el-input v-model="scope.row.proportion"
<el-input v-model="scope.row.scale" :disabled="type == 'view'"
@input="(value) => changeProportion(value, scope.$index)"></el-input>
</template>
</el-table-column>
<el-table-column label="数量" prop="faultQty" align="center">
<el-table-column label="数量" prop="qty" align="center">
<template #default="scope">
<el-input v-model="scope.row.faultQty"
<el-input v-model="scope.row.qty" :disabled="type == 'view'"
@input="(value) => changeFaultQty(value, scope.$index)"></el-input>
</template>
</el-table-column>
<el-table-column label="备注" prop="memo" align="center">
<template #default="scope">
<el-input v-model="scope.row.memo"></el-input>
<el-input v-model="scope.row.memo" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
</el-table>
@ -209,8 +217,8 @@
</el-col>
<el-col :span="24">
<div class="btn_box">
<el-button type="primary" plain @click="insertDutyEvent()">插入一行</el-button>
<el-button type="danger" plain @click="deleteDutyEvent()">删除选择行</el-button>
<el-button type="primary" :disabled="type == 'view'" plain @click="insertDutyEvent()">插入一行</el-button>
<el-button type="danger" :disabled="type == 'view'" plain @click="deleteDutyEvent()">删除选择行</el-button>
</div>
<div class="table_box">
<el-table :data="dutyList" height="240" @selection-change="handleDutyChange"
@ -221,8 +229,8 @@
<span><i style="color:red">*</i>责任零件</span>
</template>
<template #default="scope">
<el-input v-model="scope.row.dutyPart" v-if="trialType == 1"></el-input>
<el-select v-model="scope.row.dutyPart" v-if="trialType == 2">
<el-input v-model="scope.row.dutyPart" v-if="detailInfo.reviewOrderMode == 1" :disabled="type == 'view'"></el-input>
<el-select v-model="scope.row.dutyPart" v-if="detailInfo.reviewOrderMode == 2" :disabled="type == 'view'">
<el-option v-for="item in dutyPartArr" :key="item.rstId" :value="item.rstId"
:label="item.rstName"></el-option>
</el-select>
@ -233,7 +241,7 @@
<span><i style="color:red">*</i>责任批号</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.dutyBatch">
<el-select v-model="scope.row.dutyBatch" :disabled="type == 'view'">
<el-option v-for="item in dutyBatchArr" :key="item.value" :value="item.value"
:label="item.label"></el-option>
<!-- <el-option v-for="item in dutyBatchArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option> -->
@ -242,7 +250,7 @@
</el-table-column>
<el-table-column label="相关零件" prop="relevantPart" align="center">
<template #default="scope">
<el-select v-model="scope.row.relevantPart">
<el-select v-model="scope.row.relevantPart" :disabled="type == 'view'">
<el-option v-for="item in relevantPartArr" :key="item.rstId" :value="item.rstId"
:label="item.rstName"></el-option>
</el-select>
@ -250,25 +258,25 @@
</el-table-column>
<el-table-column label="相关批号" prop="relevantBatch" align="center">
<template #default="scope">
<el-select v-model="scope.row.relevantBatch">
<el-select v-model="scope.row.relevantBatch" :disabled="type == 'view'">
<el-option v-for="item in relevantBatchArr" :key="item.rstId" :value="item.rstId"
:label="item.rstName"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="数量(件)" prop="dutyQty" align="center">
<el-table-column label="数量(件)" prop="qty" align="center">
<template #default="scope">
<el-input v-model="scope.row.dutyQty"></el-input>
<el-input v-model="scope.row.qty" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
<el-table-column label="单位" prop="unit">
<template #default="scope">
<el-input v-model="scope.row.unit"></el-input>
<el-input v-model="scope.row.unit" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
<el-table-column label="备注" prop="memo">
<template #default="scope">
<el-input v-model="scope.row.memo"></el-input>
<el-input v-model="scope.row.memo" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
</el-table>
@ -279,17 +287,19 @@
<template #footer>
<span class="dialog-footer">
<el-button plain @click="closeDialog">取消</el-button>
<el-button type="primary" v-if="testType == 1" @click="submit(-1)">保存</el-button>
<el-button type="primary" v-if="testType == 2" @click="submitInside">提交</el-button>
<el-button type="primary" v-if="testType == 1" plain @click="submit(1)">提交质保</el-button>
<el-button type="primary" v-if="testType == 1" plain @click="submit(2)">提交工艺</el-button>
<el-button type="primary" v-if="testType == 1" plain @click="submit(3)">提交设计</el-button>
<el-button type="primary" v-if="testType == 1" plain @click="submit(4)">提交设计变更</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" @click="submit(-1)">保存</el-button>
<el-button type="primary" v-if="testType == 2 && type != 'view'" @click="submitInside">提交</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(1)">提交质保</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(2)">提交工艺</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(3)">提交设计</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(4)">提交设计变更</el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import {getFaultClassList,getQuestionClassList,getQuestionClassList2,getProductionDispositionDetail,
createProductionDisposition} from "@/api/qualityManagement/productionTesting/productionDisposition"
export default {
props: {
showDialog: {
@ -299,6 +309,14 @@ export default {
moldAddMore: {
type: Boolean,
default: false
},
rsId:{
type: String,
default: ''
},
type:{
type: String,
default: ''
}
},
data() {
@ -310,12 +328,61 @@ export default {
disposalType:1, //
faultList:[],
dutyList:[],
errorTypeArr:[], //
errorBigArr:[], //
errorSmallArr:[], //
detailInfo:{},
checkList:[],
}
},
mounted() {
this.openShow = this.showDialog
this.getError()
this.getQuestionBig()
this.getDetail()
// this.getQuestionSmall()
},
methods: {
getDetail(){
getProductionDispositionDetail({
id:this.rsId
}).then(res =>{
console.log('res---------------',res)
this.detailInfo = res.data.data
this.testType = res.data.data.bizType == 3 ? 1 : 2
this.disposalType = res.data.data.bizType == 3 ? '' : res.data.data.bizType
this.checkList = []
this.checkList.push(
res.data.data.isBatProblem == 1 ? 'isBatProblem' : null,
res.data.data.isClassicProblem == 1 ? 'isClassicProblem' : null,
res.data.data.isLowError == 1 ? 'isLowError' : null,
res.data.data.isQualityProblem == 1 ? 'isQualityProblem' : null,
)
})
},
//
getError(){
getFaultClassList().then(res => {
this.errorTypeArr = res.data.data
})
},
//
getQuestionBig(){
getQuestionClassList().then(res => {
this.errorBigArr = res.data.data
})
},
changeBigQuestion(val){
this.getQuestionSmall(val)
},
//
getQuestionSmall(val){
getQuestionClassList2({
parentId:val
}).then(res => {
this.errorSmallArr = res.data.data
})
},
insertFaultEvent(){
this.faultList.push({_select:false})
},
@ -329,13 +396,40 @@ export default {
changeType(val){
console.log('val---------------------',val)
},
submit(val){
this.detailInfo.bizType = this.testType == 1 ? 3 : this.testType == 2 ? this.disposalType == 1 ? 1 : 2 : ''
this.detailInfo.isBatProblem = this.checkList.includes('isBatProblem') ? 1 : 0
this.detailInfo.isClassicProblem = this.checkList.includes('isClassicProblem') ? 1 : 0
this.detailInfo.isLowError = this.checkList.includes('isLowError') ? 1 : 0
this.detailInfo.isQualityProblem = this.checkList.includes('isQualityProblem') ? 1 : 0
this.detailInfo.faultList = this.faultList
this.detailInfo.dutyList = this.dutyList
console.log('detail---------------------',this.detailInfo)
},
//
submitInside(){
if(this.disposalType == 1){
let params = {
// if(this.disposalType == 1){
// let params = {
// }
// }
// this.detailInfo = {
// ...this.detailInfo,
// bizType:this.testType == 1 ? 3 : this.testType == 2 ? this.disposalType == 1 ? 1 : 2 : ''
// }
console.log('check===============',this.checkList.includes('isQualityProblem'))
this.detailInfo.bizType = this.testType == 1 ? 3 : this.testType == 2 ? this.disposalType == 1 ? 1 : 2 : ''
this.detailInfo.isBatProblem = this.checkList.includes('isBatProblem') ? 1 : 0
this.detailInfo.isClassicProblem = this.checkList.includes('isClassicProblem') ? 1 : 0
this.detailInfo.isLowError = this.checkList.includes('isLowError') ? 1 : 0
this.detailInfo.isQualityProblem = this.checkList.includes('isQualityProblem') ? 1 : 0
console.log('detailInfo-----------------',this.detailInfo)
createProductionDisposition(this.detailInfo).then(res =>{
if(res.data.code == 200){
this.$message.success('提交成功')
this.closeDialog(true)
}
}
})
},
}

@ -13,10 +13,10 @@
<el-button type="primary" plain @click="openZlSystem">质量系统 </el-button>
</template>
<template #menu="{ row }">
<el-button type="text" @click="addReview(row.trialType, row.rsId)">详情</el-button>
<el-button type="text" @click="hearingFn(row.trialType, row.rsId)">提交</el-button>
<el-button type="text" @click="addReview(row.trialType, row.id)">详情</el-button>
<el-button type="text" @click="hearingFn(row.trialType, row.id)">提交</el-button>
</template>
<template #proNo="{ row }">
<!-- <template #proNo="{ row }">
{{ row.prWorkCheck.prWorkPlan.prWorkOrder.pjYieldOrder.partCode }}
</template>
<template #proName="{ row }">
@ -39,7 +39,7 @@
</template>
<template #userName="{ row }">
{{ row.createMan.userName }}
</template>
</template> -->
<template #proNo-form="{ type }">
<span v-show="type == 'view'">
{{ form.prWorkCheck.prWorkPlan.prWorkOrder.pjYieldOrder.partCode }}
@ -85,11 +85,12 @@
:trial-type="trialType"></pattern-dialog>
<!-- 提交 -->
<hearingDialog v-if="hearingOpen" :show-dialog="hearingOpen" @closeDialog="closeDialog"></hearingDialog>
<hearingDialog v-if="hearingOpen" :type="dialogType" :rs-id="rsId" :show-dialog="hearingOpen" @closeDialog="closeDialog"></hearingDialog>
</basic-container>
</template>
<script>
import {getProductionDispositionList} from "@/api/qualityManagement/productionTesting/productionDisposition.js"
import patternDialog from './patternDialog.vue'
import hearingDialog from './hearingDialog.vue'
export default {
@ -109,6 +110,7 @@ export default {
trialType: null,
showDialog: false,
rsId: null,
dialogType:'',
form: {},
option: {
tip: false,
@ -152,7 +154,7 @@ export default {
column: [
{
label: '上级编号',
prop: 'supCode',
prop: 'upCode',
addDisplay: false,
editDisplay: false,
span: 24,
@ -168,7 +170,7 @@ export default {
},
{
label: '单据编号',
prop: 'rsCode',
prop: 'docCode',
addDisplay: false,
editDisplay: false,
span: 24,
@ -184,7 +186,7 @@ export default {
},
{
label: '车间订单号',
prop: 'rsCode',
prop: 'woCode',
addDisplay: false,
editDisplay: false,
span: 24,
@ -202,7 +204,8 @@ export default {
{
label: '产品号',
prop: 'proNo',
prop: 'prodCode',
// bind:"base.prodCode",
addDisplay: false,
editDisplay: false,
span: 24,
@ -218,7 +221,8 @@ export default {
},
{
label: '产品名称',
prop: 'proName',
prop: 'prodName',
// bind:"base.prodName",
addDisplay: false,
editDisplay: false,
span: 24,
@ -234,7 +238,8 @@ export default {
},
{
label: '产品型号',
prop: 'proClass',
prop: 'prodTypeName',
// bind:"base.prodTypeName",
addDisplay: false,
editDisplay: false,
span: 24,
@ -250,7 +255,7 @@ export default {
},
{
label: '生产标识',
prop: 'identification',
prop: 'prodIdent',
addDisplay: false,
editDisplay: false,
span: 24,
@ -282,7 +287,7 @@ export default {
},
{
label: '流程卡号',
prop: 'rsCode',
prop: 'cardNo',
addDisplay: false,
editDisplay: false,
span: 24,
@ -298,7 +303,7 @@ export default {
},
{
label: '生产数量',
prop: 'qualifiedQty',
prop: 'poQty',
addDisplay: false,
editDisplay: false,
span: 24,
@ -314,7 +319,7 @@ export default {
},
{
label: '不合格数量',
prop: 'unqualQty',
prop: 'unqualifiedQty',
addDisplay: false,
editDisplay: false,
span: 24,
@ -331,6 +336,7 @@ export default {
{
label: '申请人',
prop: 'userName',
bind:'base.createUserRealName',
addDisplay: false,
editDisplay: false,
span: 24,
@ -362,7 +368,7 @@ export default {
},
{
label: '处置单类型',
prop: 'trialTypeTitle',
prop: 'reviewOrderMode',
addDisplay: false,
editDisplay: false,
span: 24,
@ -392,7 +398,7 @@ export default {
},
{
label: '当前状态',
prop: 'curStatusTitle',
prop: 'status',
addDisplay: false,
editDisplay: false,
span: 24,
@ -424,7 +430,7 @@ export default {
},
{
label: '打回人',
prop: 'repulseMan',
prop: 'backUserRealName',
addDisplay: false,
editDisplay: false,
span: 24,
@ -439,7 +445,7 @@ export default {
},
{
label: '打回时间',
prop: 'repulseTime',
prop: 'backDate',
addDisplay: false,
editDisplay: false,
span: 24,
@ -454,7 +460,7 @@ export default {
},
{
label: '打回原因',
prop: 'repulseMemo',
prop: 'backReason',
addDisplay: false,
editDisplay: false,
span: 24,
@ -469,7 +475,7 @@ export default {
},
{
label: '审理状态',
prop: 'reviewStatusTitle',
prop: 'reviewStatus',
addDisplay: false,
editDisplay: false,
span: 24,
@ -484,7 +490,7 @@ export default {
},
{
label: '审理人',
prop: 'reviewMan',
prop: 'reviewUserRealName',
addDisplay: false,
editDisplay: false,
span: 24,
@ -499,7 +505,7 @@ export default {
},
{
label: '审理时间',
prop: 'reviewTime',
prop: 'reviewDate',
addDisplay: false,
editDisplay: false,
span: 24,
@ -538,7 +544,9 @@ export default {
},
methods: {
//
hearingFn() {
hearingFn(val,id) {
this.rsId = id
this.dialogType = 'submit'
this.hearingOpen = true
},
closeDialog() {
@ -552,8 +560,9 @@ export default {
},
addReview(type, id) {
this.rsId = id
this.dialogType = 'view'
this.trialType = type
this.showDialog = true
this.hearingOpen = true
},
rowSave(row, done, loading) {
@ -588,75 +597,82 @@ export default {
this.onLoad(this.page, this.query);
},
onLoad() {
this.data = [
{
rsId: 22,
supCode: 'WO-S23041025-R02', rsCode: 'DJ-S23041025-R02',
prWorkCheck: {
prWorkPlan: {
prWorkOrder: {
pjYieldOrder: {
partCode: 'CP-S23041025-R02',
partName: '产品名称',
productType: '产品型号',
prodIdent: '生产标识',
batchNo: '批次号'
}
},
qualifiedQty: 10,
unqualifiedQty: 5,
}
},
createMan: {
userName: '张三'
},
createTime: '2024-12-21 10:05:22',
trialTypeTitle: '零件模式',
trialType: 1,
curStatusTitle: '新建',
repulseMan: '李四',
repulseTime: '2024-12-24 11:02:23',
repulseMemo: '不合格',
reviewStatusTitle: '审理中',
reviewMan: '李四',
reviewTime: '2024-12-30 15:23:32',
memo: '通过'
},
{
rsId: 23,
supCode: 'WO-S23041025-R02', rsCode: 'DJ-S23041025-R02',
prWorkCheck: {
prWorkPlan: {
prWorkOrder: {
pjYieldOrder: {
partCode: 'CP-S23041025-R02',
partName: '产品名称',
productType: '产品型号',
prodIdent: '生产标识',
batchNo: '批次号'
}
},
qualifiedQty: 10,
unqualifiedQty: 5,
}
},
createMan: {
userName: '张三'
},
createTime: '2024-12-21 10:05:22',
trialTypeTitle: '零件模式',
trialType: 1,
curStatusTitle: '新建',
repulseMan: '李四',
repulseTime: '2024-12-24 11:02:23',
repulseMemo: '不合格',
reviewStatusTitle: '审理中',
reviewMan: '李四',
reviewTime: '2024-12-30 15:23:32',
memo: '通过'
}
]
this.page.total = this.data.length
getProductionDispositionList({
current:this.page.currentPage,
size:this.page.pageSize
}).then(res =>{
this.data = res.data.data.records
this.page.total = res.data.data.total
})
// this.data = [
// {
// rsId: 22,
// supCode: 'WO-S23041025-R02', rsCode: 'DJ-S23041025-R02',
// prWorkCheck: {
// prWorkPlan: {
// prWorkOrder: {
// pjYieldOrder: {
// partCode: 'CP-S23041025-R02',
// partName: '',
// productType: '',
// prodIdent: '',
// batchNo: ''
// }
// },
// qualifiedQty: 10,
// unqualifiedQty: 5,
// }
// },
// createMan: {
// userName: ''
// },
// createTime: '2024-12-21 10:05:22',
// trialTypeTitle: '',
// trialType: 1,
// curStatusTitle: '',
// repulseMan: '',
// repulseTime: '2024-12-24 11:02:23',
// repulseMemo: '',
// reviewStatusTitle: '',
// reviewMan: '',
// reviewTime: '2024-12-30 15:23:32',
// memo: ''
// },
// {
// rsId: 23,
// supCode: 'WO-S23041025-R02', rsCode: 'DJ-S23041025-R02',
// prWorkCheck: {
// prWorkPlan: {
// prWorkOrder: {
// pjYieldOrder: {
// partCode: 'CP-S23041025-R02',
// partName: '',
// productType: '',
// prodIdent: '',
// batchNo: ''
// }
// },
// qualifiedQty: 10,
// unqualifiedQty: 5,
// }
// },
// createMan: {
// userName: ''
// },
// createTime: '2024-12-21 10:05:22',
// trialTypeTitle: '',
// trialType: 1,
// curStatusTitle: '',
// repulseMan: '',
// repulseTime: '2024-12-24 11:02:23',
// repulseMemo: '',
// reviewStatusTitle: '',
// reviewMan: '',
// reviewTime: '2024-12-30 15:23:32',
// memo: ''
// }
// ]
// this.page.total = this.data.length
},
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -31,7 +31,7 @@
<template #menu-right>
</template>
<template #menu="{ row }">
<el-button type="text">审理</el-button>
</template>
</avue-crud>
@ -57,7 +57,7 @@ import {
} from '@/api/system/role';
import { mapGetters } from 'vuex';
import { validatenull } from '@/utils/validate';
import {insideOption} from './options'
import {insideOption,erpOption} from './options'
export default {
components: {
@ -92,193 +92,8 @@ export default {
currentPage: 1,
total: 0,
},
option: {
columnSort: true,
tip: false,
height: 'auto',
calcHeight: 32,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: false,
addBtn: false,
editBtn: false,
viewBtn: false,
delBtn: false,
editBtnText: '修改',
labelWidth: 120,
menuWidth: 80,
dialogWidth: 900,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: true,
searchShowBtn: false,
excelBtn: true,
showOverflowTooltip: true,
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
gridBtn: false,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
menu:false,
column: [
{
label: '审理单号',
prop: 'partCode',
bind: 'dsPart.partCode',
search: true,
sortable: true,
span: 12,
width:150
},
{
label: '责任零件',
prop: 'partCode',
bind: 'dsPart.partCode',
search: true,
sortable: true,
span: 12,
width:150
},
{
label: '责任批号',
prop: 'plate',
bind: 'dsPart.plate',
search: true,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '工序号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '工序名称',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '上级编号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '返修路线',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '发生单位',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '责任部门',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '审理人',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '零件号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '批次号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '备注',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '处理意见',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
],
},
insideOption,
option: erpOption,
insideOption:insideOption,
data: [],
isRushOpen: false,//

@ -33,13 +33,13 @@ export const insideOption = {
editBtnIcon: ' ',
gridBtn: false,
searchLabelPosition: 'left',
searchLabelWidth: 100,
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
menu: false,
column: [
{
label: '审理单号',
@ -53,7 +53,7 @@ export const insideOption = {
},
{
label: '车间订单号',
prop: 'partCode',
prop: 'woCode',
search: true,
sortable: true,
span: 12,
@ -61,7 +61,7 @@ export const insideOption = {
},
{
label: '物料号',
prop: 'partCode',
prop: 'productCode',
search: true,
sortable: true,
span: 12,
@ -69,7 +69,7 @@ export const insideOption = {
},
{
label: '物料名称',
prop: 'partCode',
prop: 'goodName',
search: false,
sortable: true,
span: 12,
@ -77,7 +77,7 @@ export const insideOption = {
},
{
label: '批次号',
prop: 'partCode',
prop: 'batchNo',
search: false,
sortable: true,
span: 12,
@ -85,7 +85,7 @@ export const insideOption = {
},
{
label: '生产标识',
prop: 'partCode',
prop: 'prodIdent',
search: false,
sortable: true,
span: 12,
@ -93,7 +93,7 @@ export const insideOption = {
},
{
label: '供应商代码',
prop: 'partCode',
prop: 'ocCode',
search: false,
sortable: true,
span: 12,
@ -101,7 +101,7 @@ export const insideOption = {
},
{
label: '供应商名称',
prop: 'partCode',
prop: 'ocName',
search: true,
sortable: true,
span: 12,
@ -109,15 +109,22 @@ export const insideOption = {
},
{
label: '审理类型',
prop: 'partCode',
prop: 'testType',
type:'select',
search: true,
sortable: true,
span: 12,
width: 150
width: 150,
dicUrl:'/api/blade-system/dict/dictionary?code=ReviewSheet-Self-Type',
props: { label: 'dictValue', value: 'dictKey' },
// props:{
// label:'dictValue',
// value:'dicKey'
// }
},
{
label: '比例',
prop: 'partCode',
prop: 'scale',
search: false,
sortable: true,
span: 12,
@ -125,7 +132,7 @@ export const insideOption = {
},
{
label: '需求数量',
prop: 'partCode',
prop: 'needValue',
search: false,
sortable: true,
span: 12,
@ -133,7 +140,7 @@ export const insideOption = {
},
{
label: '返修/报废数量',
prop: 'partCode',
prop: 'qty',
search: false,
sortable: true,
span: 12,
@ -141,7 +148,7 @@ export const insideOption = {
},
{
label: '故障原因',
prop: 'partCode',
prop: 'faultReason',
search: false,
sortable: true,
span: 12,
@ -149,7 +156,7 @@ export const insideOption = {
},
{
label: '审理状态',
prop: 'partCode',
prop: 'reviewStatus',
search: true,
sortable: true,
span: 12,
@ -157,7 +164,7 @@ export const insideOption = {
},
{
label: '审理结论',
prop: 'partCode',
prop: 'result',
search: false,
sortable: true,
span: 12,
@ -165,7 +172,7 @@ export const insideOption = {
},
{
label: '提请人员',
prop: 'partCode',
prop: 'crUserRealName',
search: false,
sortable: true,
span: 12,
@ -173,7 +180,7 @@ export const insideOption = {
},
{
label: '提请日期',
prop: 'partCode',
prop: 'crDate',
search: true,
sortable: true,
span: 12,
@ -181,7 +188,7 @@ export const insideOption = {
},
{
label: '审理时间',
prop: 'partCode',
prop: 'reviewDate',
search: true,
sortable: true,
span: 12,
@ -189,7 +196,7 @@ export const insideOption = {
},
{
label: '审理人',
prop: 'partCode',
prop: 'reviewUserRealName',
search: false,
sortable: true,
span: 12,
@ -197,7 +204,7 @@ export const insideOption = {
},
{
label: '打回原因',
prop: 'partCode',
prop: 'backReason',
search: false,
sortable: true,
span: 12,
@ -205,11 +212,198 @@ export const insideOption = {
},
{
label: '镀前价格',
prop: 'partCode',
prop: 'price',
search: false,
sortable: true,
span: 12,
width: 150
},
]
}
export const erpOption = {
columnSort: true,
tip: false,
height: 'auto',
calcHeight: 32,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: false,
addBtn: false,
editBtn: false,
viewBtn: false,
delBtn: false,
editBtnText: '修改',
labelWidth: 120,
menuWidth: 80,
dialogWidth: 900,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: true,
searchShowBtn: false,
excelBtn: true,
showOverflowTooltip: true,
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
gridBtn: false,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
menu:false,
column: [
{
label: '审理单号',
prop: 'partCode',
bind: 'dsPart.partCode',
search: true,
sortable: true,
span: 12,
width:150
},
{
label: '责任零件',
prop: 'partCode',
bind: 'dsPart.partCode',
search: true,
sortable: true,
span: 12,
width:150
},
{
label: '责任批号',
prop: 'plate',
bind: 'dsPart.plate',
search: true,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '工序号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '工序名称',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '上级编号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '返修路线',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '发生单位',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '责任部门',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '审理人',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '零件号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '批次号',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '备注',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
{
label: '处理意见',
prop: 'plate',
bind: 'dsPart.plate',
search: false,
sortable: true,
span: 12,
display: false,
width:150
},
],
}

@ -379,7 +379,8 @@ export default {
getDetail({id:this.rowId}).then(res =>{
this.form = {
...res.data.data,
isPutOff:res.data.data.isPutOff == 1 ? true : false
isPutOff:res.data.data.isPutOff == 1 ? true : false,
teamId:res.data.data.teamId + ''
}
if(this.form.jobType == 1){
this.form = {

@ -60,7 +60,7 @@
<el-col :span="6">
<span>任务结束时间</span><span>{{ detailForm.finishDate }}</span>
</el-col>
<el-col :span="6">
<el-col :span="6" v-show="detailForm.status == 10">
<span>任务结束原因</span><span>{{ detailForm.finishReason }}</span>
</el-col>
</el-row>
@ -469,35 +469,36 @@ export default {
//
submit() {
let fieldsToValidate = {}
if (this.detailForm.status == 1) {
this.$refs.initialInspectionForm.validate(valid => {
console.log('valid', valid)
if (valid) {
this.closeDialog()
}
})
} else if (this.detailForm.status == 2) {
this.$refs.auditForm.validate(valid => {
console.log('valid', valid)
if (valid) {
this.closeDialog()
}
})
} else if (this.detailForm.status == 3) {
this.$refs.drugForm.validate(valid => {
console.log('valid', valid)
if (valid) {
this.closeDialog()
}
})
} else if (this.detailForm.status == 4) {
this.$refs.recheckForm.validate(valid => {
console.log('valid', valid)
if (valid) {
this.closeDialog()
}
})
}
this.closeDialog()
// if (this.detailForm.status == 1) {
// this.$refs.initialInspectionForm.validate(valid => {
// console.log('valid', valid)
// if (valid) {
// this.closeDialog()
// }
// })
// } else if (this.detailForm.status == 2) {
// this.$refs.auditForm.validate(valid => {
// console.log('valid', valid)
// if (valid) {
// this.closeDialog()
// }
// })
// } else if (this.detailForm.status == 3) {
// this.$refs.drugForm.validate(valid => {
// console.log('valid', valid)
// if (valid) {
// this.closeDialog()
// }
// })
// } else if (this.detailForm.status == 4) {
// this.$refs.recheckForm.validate(valid => {
// console.log('valid', valid)
// if (valid) {
// this.closeDialog()
// }
// })
// }
},
}

@ -221,6 +221,9 @@ export default {
list: {
handler(newVal) {
// 使 lodash
newVal.map(item =>{
item.teamId = item.teamId + ''
})
this.data = JSON.parse(JSON.stringify(newVal));
// JSON
// this.localData = JSON.parse(JSON.stringify(newVal));

@ -162,6 +162,9 @@ export default {
this.onLoad()
done()
}
}).catch(err=>{
console.log('err----------------',err)
done()
})
},
rowUpdate(row, index, done, loading) {

Loading…
Cancel
Save