中航光电热表web
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

661 lines
19 KiB

<template>
<basic-container>
4 months ago
<!--部件车间订单 -->
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left>
<el-button type="primary" @click="handlePrintTags">过程记录打印</el-button>
<el-button type="primary" @click="handlePrintTags">打印标签</el-button>
<el-button type="primary" @click="handlePrint">配套单打印</el-button>
<el-button type="primary" @click="priorityFn">优先级调整</el-button>
</template>
<template #menu-right>
4 months ago
<el-button type="success" plain @click="processingHandle">在制品</el-button>
<el-button type="warning" plain>加工中</el-button>
<el-button type="danger" plain>检验中</el-button>
<el-button type="success" plain>已完工</el-button>
</template>
4 months ago
<template #menu="scope">
<el-button type="text" @click="clickProduction(scope.row)">生产监控</el-button>
<el-button type="text" @click="handleClose(scope.row)" v-show="scope.row.runStatus < 15"
>关闭</el-button
>
<el-button
type="text"
@click="handleBatches(scope.row)"
v-if="[2, 3, 4, 6].includes(scope.row.runStatus)"
>分批</el-button
>
<el-button type="text" @click="priorityFn(scope.row)" v-if="scope.row.runStatus === 2"
>优先级调整</el-button
>
<el-button
type="text"
@click="handleAbnormal(scope.row)"
v-if="scope.row.runStatus === 3 || scope.row.runStatus === 4"
>异常申报</el-button
>
4 months ago
</template>
<template #tsName="{ row }">{{ row.makeTeam && row.makeTeam.tsName }}</template>
<template #ppsName="{ row }">{{ row.procedureSet && row.procedureSet.ppsName }}</template>
4 months ago
<template #planTime1="{ row }">
{{ Array.isArray(row.planTime1) ? row.planTime1.join(' ~ ') : row.planTime1 || '-' }}
4 months ago
</template>
<template #planTime="{ row }">
{{ Array.isArray(row.planTime) ? row.planTime.join(' ~ ') : row.planTime || '-' }}
4 months ago
</template>
<template #putStoreTime="{ row }">
{{
Array.isArray(row.putStoreTime) ? row.putStoreTime.join(' ~ ') : row.putStoreTime || '-'
}}
</template>
<template #partCode="{ row }">{{ row.pjYieldOrder && row.pjYieldOrder.partCode }}</template>
<template #prodIdent="{ row }">{{ row.pjYieldOrder && row.pjYieldOrder.prodIdent }}</template>
<template #partName="{ row }">{{ row.pjYieldOrder && row.pjYieldOrder.partName }}</template>
<template #plate="{ row }">{{ row.pjYieldOrder && row.pjYieldOrder.plate }}</template>
4 months ago
<template #productType="{ row }">{{
row.pjYieldOrder && row.pjYieldOrder.productType
}}</template>
<template #useDept="{ row }">{{ row.pjYieldOrder && row.pjYieldOrder.useDept }}</template>
<template #poArea="{ row }">{{ row.pjYieldOrder && row.pjYieldOrder.poArea }}</template>
<template #userName="{ row }">{{ row.dispatcher && row.dispatcher.userName }}</template>
4 months ago
<template #nextPpsName="{ row }">{{
row.nextProcedureSet && row.nextProcedureSet.ppsName
}}</template>
<template #nextTeamName="{ row }">{{ row.nextMakeTeam && row.nextMakeTeam.tsName }}</template>
4 months ago
<template #failureMan="{ row }">{{
row.pjYieldOrder && row.pjYieldOrder.failureMan && row.pjYieldOrder.failureMan.userName
4 months ago
}}</template>
</avue-crud>
4 months ago
<el-dialog append-to-body v-model="printDialog" title="打印标签">
<el-form ref="printForm" :model="printForm" :rules="printRules">
<el-form-item label="数量" prop="quantity">
<el-input
v-model="printForm.quantity"
placeholder="请输入数量"
oninput="value=value.replace(/[^\d]/g,'')"
></el-input>
4 months ago
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="printDialog = false"> </el-button>
<el-button type="primary" @click="submitPrint"> </el-button>
</span>
</template>
</el-dialog>
<!-- 生产监控 -->
<production-dialog
:monitor-dialog="monitorDialog"
:row-item="rowItem"
@closeDialog="closeDialog"
></production-dialog>
4 months ago
<!-- 分批弹窗 -->
<batches-dialog :show-batches="showBatches" @closeDialog="closeDialog"></batches-dialog>
<!-- 关闭弹窗 -->
<closed-dialog :show-close="showClose" @closeDialog="closeDialog"></closed-dialog>
<!-- 异常处理 -->
<abnormalDialog :show-abnormal="showAbnormal" @closeDialog="closeDialog"></abnormalDialog>
<productionMonitoringDialog
:showDialog="isPriorityOpen"
v-if="isPriorityOpen"
@closeDialog="closeDialog"
@submitPriority="handlePrioritySubmit"
></productionMonitoringDialog>
</basic-container>
</template>
<script>
import productionDialog from '../components/productionDialog.vue';
import batchesDialog from '../components/batchesDialog.vue';
import closedDialog from '../components/closedDialog.vue';
import abnormalDialog from '../components/abnormalDialog.vue';
import productionMonitoringDialog from '../components/productionMonitoringDialog.vue';
import { getList } from '@/api/productionManagement/sinTerWorkOrder';
export default {
5 months ago
components: {
4 months ago
productionDialog,
batchesDialog,
closedDialog,
abnormalDialog,
productionMonitoringDialog,
5 months ago
},
data() {
return {
4 months ago
isPriorityOpen: false,
showAbnormal: false,
showRadio: true,
monitorDialog: false,
showBatches: false,
showClose: false,
data: [],
printForm: {},
printRules: {
quantity: [{ required: true, message: '请输入数量', trigger: 'blur' }],
},
4 months ago
rowItem: {},
selectionList: [],
4 months ago
form: {},
loading: false,
printDialog: false,
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
height: 'auto',
calcHeight: 32,
rowKey: 'cardNo',
4 months ago
tip: false,
simplePage: true,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
4 months ago
selection: true,
viewBtn: false,
delBtn: false,
4 months ago
addBtn: false,
editBtn: false,
editBtnText: '修改',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
4 months ago
searchLabelWidth: 120,
menuWidth: 260,
dialogWidth: 1200,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: true,
searchShowBtn: false,
4 months ago
columnSort: true,
excelBtn: true,
4 months ago
columnSort: true,
index: false,
showOverflowTooltip: true,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
column: [
4 months ago
{
label: '当前工序',
prop: 'ppsName',
fixed: 'left',
4 months ago
search: false,
sortable: true,
overHidden: true,
width: 200,
},
{
label: '下一工序',
prop: 'nextPpsName',
4 months ago
search: false,
sortable: true,
overHidden: true,
width: 200,
},
{
label: '订单状态',
prop: 'runStatusTitle',
type: 'select',
4 months ago
search: true,
sortable: true,
overHidden: true,
width: 200,
4 months ago
dicData: [
{
value: 2,
label: '待生产',
4 months ago
},
{
value: 3,
label: '生产中',
4 months ago
},
{
value: 4,
label: '检验中',
4 months ago
},
{
value: 6,
label: '审理中',
4 months ago
},
{
value: 5,
label: '工艺变更',
4 months ago
},
{
value: 19,
label: '已返工',
4 months ago
},
{
value: 15,
label: '已完成',
4 months ago
},
{
value: 21,
label: '已作废',
4 months ago
},
],
},
{
label: '车间订单号',
prop: 'woCode',
4 months ago
search: true,
sortable: true,
overHidden: true,
width: 200,
},
{
label: '加工班组',
prop: 'tsId',
4 months ago
search: true,
sortable: true,
overHidden: true,
width: 200,
hide: true,
},
{
label: '加工外协商',
prop: 'ocId',
search: true,
sortable: true,
4 months ago
overHidden: true,
width: 200,
hide: true,
},
{
label: '生产订单号',
prop: 'yoCode',
search: true,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '计划单号',
prop: 'poCode',
search: true,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '返工单号',
prop: 'qcReworkCode',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '零件号',
prop: 'partCode',
4 months ago
search: true,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '批次号',
prop: 'batchNo',
4 months ago
search: true,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '产品型号',
prop: 'productModel',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '产品名称',
prop: 'false',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
4 months ago
{
label: '流程卡号',
prop: 'cardNo',
4 months ago
search: true,
sortable: true,
4 months ago
overHidden: true,
4 months ago
hide: true,
4 months ago
width: 200,
},
4 months ago
{
label: 'MES流程卡号',
prop: 'false',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '生产标识',
prop: 'prodIdent',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '生产数量',
prop: 'makeQty',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '订单优先级',
prop: 'priorityTitle',
type: 'select',
4 months ago
search: true,
sortable: true,
overHidden: true,
width: 200,
4 months ago
dicData: [
{
value: 1,
label: '正常-白色',
4 months ago
},
{
value: 2,
label: '项目要求日期急件-橙色',
4 months ago
},
{
value: 3,
label: '合同急件-黄色',
4 months ago
},
{
value: 4,
label: '绩效零件-青色',
4 months ago
},
{
value: 5,
label: '调度标注急件-蓝色',
4 months ago
},
],
},
{
label: '需求部门',
prop: 'useDept',
4 months ago
search: true,
sortable: true,
overHidden: true,
width: 200,
},
{
label: '需求交期',
prop: 'demandDate',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '会议要求周期',
prop: 'meetCycle',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '调度员',
prop: 'userName',
4 months ago
search: true,
sortable: true,
overHidden: true,
width: 200,
},
4 months ago
{
label: '计划下达时间',
prop: 'planTime',
4 months ago
sortable: true,
4 months ago
filter: true,
selectWidth: 150,
span: 12,
search: true,
4 months ago
width: 200,
4 months ago
searchSpan: 8,
type: 'datetimerange',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
rangeSeparator: '-',
searchRange: true,
4 months ago
},
4 months ago
{
label: '计划完工时间',
prop: 'planTime1',
4 months ago
search: false,
4 months ago
sortable: true,
overHidden: true,
type: 'datetimerange',
4 months ago
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
startPlaceholder: '时间日期开始',
endPlaceholder: '时间日期结束',
width: 200,
},
{
label: '镀后入库时间',
prop: 'putStoreTime',
4 months ago
sortable: true,
4 months ago
filter: true,
span: 12,
search: true,
searchSpan: 8,
4 months ago
width: 200,
4 months ago
type: 'datetimerange',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
rangeSeparator: '-',
searchRange: true,
},
{
label: '生产数量',
prop: 'productionQuantity',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '入库数量',
prop: 'inventoryQty',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
{
label: '试验数量',
prop: 'testQuantity',
4 months ago
search: false,
sortable: true,
overHidden: true,
width: 200,
},
{
label: '报废数量',
prop: 'scrapQuantity',
4 months ago
search: false,
sortable: true,
overHidden: true,
width: 200,
},
{
label: '备注',
prop: 'memo',
search: false,
sortable: true,
4 months ago
overHidden: true,
width: 200,
},
],
},
};
},
mounted() {},
methods: {
4 months ago
// 优先级调整
priorityFn(row) {
this.rowItem = row;
console.log(row.runStatus, 123);
this.isPriorityOpen = true;
4 months ago
// console.log(runStatus,123)
5 months ago
},
4 months ago
handlePrioritySubmit(data) {
this.$message.success(
`优先级已调整为${data.priority === 1 ? '一级' : data.priority === 2 ? '二级' : '三级'}`
);
},
4 months ago
selectionChange(val) {
this.selectionList = val;
},
4 months ago
// 分批
handleBatches() {
this.showBatches = true;
},
4 months ago
// 关闭
handleClose() {
this.showClose = true;
},
4 months ago
// 生产监控
clickProduction(row) {
this.rowItem = row;
4 months ago
this.monitorDialog = true;
},
4 months ago
// 打印标签
handlePrintTags() {
if (this.selectionList.length == 0) {
this.$message.error('请先选择数据');
4 months ago
} else {
this.printForm = {
quantity: 1,
};
this.printDialog = true;
}
},
4 months ago
// 确定打印
submitPrint() {
this.$refs.printForm.validate(valid => {
4 months ago
if (valid) {
this.printDialog = false;
}
});
},
4 months ago
// 配套单打印
handlePrint() {
4 months ago
if (this.selectionList.length == 0) {
this.$message.error('请先选择数据');
4 months ago
} else {
this.printForm = {
quantity: 1,
};
this.printDialog = true;
}
},
4 months ago
processingHandle() {
const targetStatuses = [3, 5, 4, 6];
const filteredData = this.data.filter(item => targetStatuses.includes(item.runStatus));
const originalData = [...this.data];
this.data = filteredData;
this.$message.success(`已筛选出${filteredData.length}条符合条件的订单`);
},
4 months ago
// 异常申报
handleAbnormal() {
this.showAbnormal = true;
},
4 months ago
// 关闭弹窗
closeDialog() {
this.monitorDialog = false;
this.showBatches = false;
this.showClose = false;
this.showAbnormal = false;
this.isPriorityOpen = false;
},
4 months ago
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
4 months ago
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
searchReset() {
this.query = {};
this.treeDeptId = '';
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
onLoad(page, params = {}) {
// this.loading = true;
getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
this.data = res.data.data.records;
// this.loading = false;
this.page.total = res.data.data.total;
this.selectionClear();
});
},
},
};
</script>
4 months ago
<style></style>