1576 lines
63 KiB
Vue
1576 lines
63 KiB
Vue
<template>
|
||
<div class="app-container">
|
||
<el-card>
|
||
<div style="margin-top: -10px;">
|
||
<el-row>
|
||
<el-select v-model="toolNumValue" filterable clearable size="small" style="margin: 0px 10px;width: 150px" placeholder="机床号" @change="typeChange1()">
|
||
<el-option
|
||
v-for="item in toolNum"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value">
|
||
<div style="float: left">{{ item.label }}</div>
|
||
<div style="float: right; color: #8492a6; font-size: 13px">{{ item.value2 }}</div>
|
||
</el-option>
|
||
</el-select>
|
||
<el-select v-model="NumValue" size="small" style="margin: 0px 10px;width: 90px" filterable clearable placeholder="组号">
|
||
<el-option
|
||
v-for="item in Num"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"/>
|
||
</el-select>
|
||
<el-input v-model="partNumber" clearable size="small" placeholder="零件图号" style="width: 150px;margin: 0px 10px;"/>
|
||
<el-button v-if="是否扫描 === false" size="small" type="primary" icon="el-icon-search" plain style="margin: 10px 0 0 10px" @click="total = 0;pageList = 1;getTable()">查询</el-button>
|
||
<el-button v-if="是否扫描 === true" size="small" type="primary" icon="el-icon-search" plain style="margin: 10px 0 0 10px" @click="total5 = 0;pageList5 = 1;getTable5()">查询</el-button>
|
||
<el-checkbox v-if="false" v-model="是否扫描">是否扫描查询</el-checkbox>
|
||
<el-tooltip :open-delay="1200" effect="dark" content="变更零件加工开始和结束时间" style="margin-left:200px" placement="top">
|
||
<el-button size="small" type="warning" plain @click="PartPlan()">零件计划变更</el-button>
|
||
</el-tooltip>
|
||
<el-date-picker
|
||
v-model="startTime"
|
||
size="small"
|
||
type="date"
|
||
value-format="yyyy-MM-dd"
|
||
style="width: 140px;margin: 0px 10px"
|
||
placeholder="开始日期"/>
|
||
<el-date-picker
|
||
v-model="endTime"
|
||
size="small"
|
||
type="date"
|
||
value-format="yyyy-MM-dd"
|
||
style="width: 140px;margin: 0px 10px"
|
||
placeholder="结束日期"/>
|
||
<el-button v-if="false" size="small" type="primary" icon="el-icon-download" @click="Export()">导出Excel</el-button>
|
||
</el-row>
|
||
</div>
|
||
</el-card>
|
||
<el-card>
|
||
<el-table v-loading="listLoading" :data="tableData" :row-class-name="tableRowClassName" border stripe style="max-height: 400px;margin-top:10px" height="400" @selection-change="handleSelectionChange">
|
||
<el-table-column type="selection" align="center" width="50"/>
|
||
<el-table-column label="零件图号" prop="零件图号" align="center" width="200">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.零件图号 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="零件名称" prop="零件名称" align="center" width="300">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.零件名称 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="零件数量" align="center" width="100">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.投产数量 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="机加工开始时间" align="center">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.机加工开始时间 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="机加工结束时间" align="center">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.机加工结束时间 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="工序数量" align="center">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.工序数量 }}
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div v-if="是否扫描 === false" class="block" style="margin-top: 10px;">
|
||
<el-pagination
|
||
v-show="false"
|
||
:current-page="currentPage"
|
||
:page-sizes="[10, 20, 30, 100]"
|
||
:page-size="pageSize"
|
||
:total="total"
|
||
style="float:left"
|
||
layout="total, sizes, prev, pager, next, jumper"
|
||
@size-change="handleSizeChange"
|
||
@current-change="handleCurrentChange"/>
|
||
<el-tooltip :open-delay="1200" effect="dark" content="将选中零件自动排出加工工序" placement="top">
|
||
<el-button type="warning" size="small" icon="el-icon-download" plain @click="Selection">选入</el-button>
|
||
</el-tooltip>
|
||
<el-button type="warning" size="small" icon="el-icon-download" plain @click="SelectionAll">全部选入</el-button>
|
||
</div>
|
||
<div v-if="是否扫描 === true" class="block" style="margin-top: 10px;">
|
||
<el-pagination
|
||
:current-page="currentPage5"
|
||
:page-sizes="[10, 20, 30, 100]"
|
||
:page-size="pageSize5"
|
||
:total="total5"
|
||
style="float:left"
|
||
layout="total, sizes, prev, pager, next, jumper"
|
||
@size-change="handleSizeChange5"
|
||
@current-change="handleCurrentChange5"/>
|
||
<el-button type="warning" size="small" icon="el-icon-download" style="float:right;margin:5px 50px 10px 10px" @click="Selection">选入</el-button>
|
||
</div>
|
||
</el-card>
|
||
|
||
<el-card>
|
||
<div>
|
||
<el-table v-loading="listLoading1" :data="tableData1" class="table" borde stripe style="max-height: 500px" height="500">
|
||
<el-table-column label="零件图号" align="center" min-width="160">
|
||
<template slot-scope="scope">
|
||
{{ 零件图号[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="零件名称" align="center" width="140">
|
||
<template slot-scope="scope">
|
||
{{ 零件名称[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="零件数量" align="center" width="80">
|
||
<template slot-scope="scope">
|
||
{{ 投产数量[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="机加工开始时间" align="center" width="120">
|
||
<template slot-scope="scope">
|
||
{{ 机加工开始时间[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="机加工结束时间" align="center" width="120">
|
||
<template slot-scope="scope">
|
||
{{ 机加工结束时间[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="零件加工计划进度(工艺名称、计划日期、工序工时)" align="">
|
||
<el-table-column label="[1]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][0]">
|
||
<h4>{{ process[scope.$index][0] }}</h4><h4>{{ planDate[scope.$index][0] }} </h4><h4> {{ realDate[scope.$index][0] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[2]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][1]">
|
||
<h4>{{ process[scope.$index][1] }}</h4><h4>{{ planDate[scope.$index][1] }} </h4><h4> {{ realDate[scope.$index][1] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[3]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][2]">
|
||
<h4>{{ process[scope.$index][2] }}</h4><h4>{{ planDate[scope.$index][2] }} </h4><h4> {{ realDate[scope.$index][2] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[4]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][3]">
|
||
<h4>{{ process[scope.$index][3] }}</h4><h4>{{ planDate[scope.$index][3] }} </h4><h4> {{ realDate[scope.$index][3] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[5]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][4]">
|
||
<h4>{{ process[scope.$index][4] }}</h4><h4>{{ planDate[scope.$index][4] }} </h4><h4> {{ realDate[scope.$index][4] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[6]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][5]">
|
||
<h4>{{ process[scope.$index][5] }}</h4><h4>{{ planDate[scope.$index][5] }} </h4><h4> {{ realDate[scope.$index][5] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[7]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][6]">
|
||
<h4>{{ process[scope.$index][6] }}</h4><h4>{{ planDate[scope.$index][6] }} </h4><h4> {{ realDate[scope.$index][6] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[8]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][7]">
|
||
<h4>{{ process[scope.$index][7] }}</h4><h4>{{ planDate[scope.$index][7] }} </h4><h4> {{ realDate[scope.$index][7] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[9]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][8]">
|
||
<h4>{{ process[scope.$index][8] }}</h4><h4>{{ planDate[scope.$index][8] }} </h4><h4> {{ realDate[scope.$index][8] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[10]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][9]">
|
||
<h4>{{ process[scope.$index][9] }}</h4><h4>{{ planDate[scope.$index][9] }} </h4><h4> {{ realDate[scope.$index][9] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[11]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][10]">
|
||
<h4>{{ process[scope.$index][10] }}</h4><h4>{{ planDate[scope.$index][10] }} </h4><h4> {{ realDate[scope.$index][10] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[12]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][11]">
|
||
<h4>{{ process[scope.$index][11] }}</h4><h4>{{ planDate[scope.$index][11] }} </h4><h4> {{ realDate[scope.$index][11] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[13]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][12]">
|
||
<h4>{{ process[scope.$index][12] }}</h4><h4>{{ planDate[scope.$index][12] }} </h4><h4> {{ realDate[scope.$index][12] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[14]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][13]">
|
||
<h4>{{ process[scope.$index][13] }}</h4><h4>{{ planDate[scope.$index][13] }} </h4><h4> {{ realDate[scope.$index][13] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[15]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][14]">
|
||
<h4>{{ process[scope.$index][14] }}</h4><h4>{{ planDate[scope.$index][14] }} </h4><h4> {{ realDate[scope.$index][14] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[16]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][15]">
|
||
<h4>{{ process[scope.$index][15] }}</h4><h4>{{ planDate[scope.$index][15] }} </h4><h4> {{ realDate[scope.$index][15] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[17]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][16]">
|
||
<h4>{{ process[scope.$index][16] }}</h4><h4>{{ planDate[scope.$index][16] }} </h4><h4> {{ realDate[scope.$index][16] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[18]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][17]">
|
||
<h4>{{ process[scope.$index][17] }}</h4><h4>{{ planDate[scope.$index][17] }} </h4><h4> {{ realDate[scope.$index][17] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[19]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][18]">
|
||
<h4>{{ process[scope.$index][18] }}</h4><h4>{{ planDate[scope.$index][18] }} </h4><h4> {{ realDate[scope.$index][18] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[20]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][19]">
|
||
<h4>{{ process[scope.$index][19] }}</h4><h4>{{ planDate[scope.$index][19] }} </h4><h4> {{ realDate[scope.$index][19] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[21]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][20]">
|
||
<h4>{{ process[scope.$index][20] }}</h4><h4>{{ planDate[scope.$index][20] }} </h4><h4> {{ realDate[scope.$index][20] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[22]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][21]">
|
||
<h4>{{ process[scope.$index][21] }}</h4><h4>{{ planDate[scope.$index][21] }} </h4><h4> {{ realDate[scope.$index][21] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[23]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][22]">
|
||
<h4>{{ process[scope.$index][22] }}</h4><h4>{{ planDate[scope.$index][22] }} </h4><h4> {{ realDate[scope.$index][22] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[24]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][23]">
|
||
<h4>{{ process[scope.$index][23] }}</h4><h4>{{ planDate[scope.$index][23] }} </h4><h4> {{ realDate[scope.$index][23] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[25]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][24]">
|
||
<h4>{{ process[scope.$index][24] }}</h4><h4>{{ planDate[scope.$index][24] }} </h4><h4> {{ realDate[scope.$index][24] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[26]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][25]">
|
||
<h4>{{ process[scope.$index][25] }}</h4><h4>{{ planDate[scope.$index][25] }} </h4><h4> {{ realDate[scope.$index][25] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[27]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][26]">
|
||
<h4>{{ process[scope.$index][26] }}</h4><h4>{{ planDate[scope.$index][26] }} </h4><h4> {{ realDate[scope.$index][26] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[28]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][27]">
|
||
<h4>{{ process[scope.$index][27] }}</h4><h4>{{ planDate[scope.$index][27] }} </h4><h4> {{ realDate[scope.$index][27] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[29]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][28]">
|
||
<h4>{{ process[scope.$index][28] }}</h4><h4>{{ planDate[scope.$index][28] }} </h4><h4> {{ realDate[scope.$index][28] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="[30]" align="center" width="120px">
|
||
<template slot-scope="scope">
|
||
<div :class="colorCode[scope.$index][29]">
|
||
<h4>{{ process[scope.$index][29] }}</h4><h4>{{ planDate[scope.$index][29] }} </h4><h4> {{ realDate[scope.$index][29] }}</h4>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table-column>
|
||
<el-table-column label="操作" width="180px" align="center" fixed="right">
|
||
<template slot-scope="scope" align="center">
|
||
<el-button size="mini" type="primary" plain @click="adjustFunc(scope.$index)">调整</el-button>
|
||
<el-button size="mini" type="danger" plain icon="el-icon-upload2" @click="xuanChu(scope.$index)">选出</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div class="block" style="margin-top: 10px;">
|
||
<el-pagination
|
||
:current-page="currentPage1"
|
||
:page-sizes="[10, 20, 30, 40]"
|
||
:page-size="pageSize1"
|
||
:total="total1"
|
||
style="float:left"
|
||
layout="total, sizes, prev, pager, next, jumper"
|
||
@size-change="handleSizeChange1"
|
||
@current-change="handleCurrentChange1"/>
|
||
<div style="float:right">
|
||
<el-tooltip :open-delay="1200" effect="dark" content="自动计算工序加工时间" placement="top">
|
||
<el-button type="warning" size="small" style="margin:5px 10px 10px 10px" plain @click="Discharge">虚拟排产</el-button>
|
||
</el-tooltip>
|
||
<el-button v-if="可以确定零件计划" type="warning" size="small" style="margin:5px 10px 10px 10px" plain @click="Plan" >确定零件计划</el-button>
|
||
<el-tooltip :open-delay="1200" effect="dark" content="选出重新设置零件的加工时间" placement="top">
|
||
<el-button type="danger" size="small" icon="el-icon-upload2" style="float:right;margin:5px 50px 10px 10px" plain @click="allOut">全部选出</el-button>
|
||
</el-tooltip>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-card>
|
||
|
||
<el-dialog :visible.sync="dialogFormVisible1" title="板焊" center width="27%">
|
||
<el-form ref="form1" :model="form1" :rules="rules" label-position="left" label-width="110px">
|
||
<el-row>
|
||
<el-form-item label="是否焊接">
|
||
<el-radio v-model="form1.radio" label="1">是</el-radio>
|
||
<el-radio v-model="form1.radio" label="0">否</el-radio>
|
||
</el-form-item>
|
||
</el-row>
|
||
<el-row>
|
||
<el-form-item v-if="form1.radio === '1'" label="板焊结束时间" prop="enddate">
|
||
<el-date-picker
|
||
v-model="form1.enddate"
|
||
size="small"
|
||
type="date"
|
||
value-format="yyyy-MM-dd"
|
||
style="top: 1px;"
|
||
placeholder="选择开始日期"/>
|
||
</el-form-item>
|
||
</el-row>
|
||
</el-form>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button size="small" @click="callOff1('form1')">取消</el-button>
|
||
<el-button size="small" type="primary" @click="submit1('form1')">确 定</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
|
||
<el-dialog v-el-drag-dialog :visible.sync="dialogTableVisible520" title="调整工序计划" width="45%">
|
||
<div style="overflow: auto;max-height: 450px;">
|
||
<el-row v-if="false">
|
||
<span>开始时间:</span>
|
||
<el-date-picker
|
||
v-model="adjustStartTime"
|
||
size="mini"
|
||
format="yyyy-MM-dd"
|
||
value-format="yyyy-MM-dd"
|
||
type="date"
|
||
placeholder="选择日期"/>
|
||
<span>结束时间:</span>
|
||
<el-date-picker
|
||
v-model="adjustEndTime"
|
||
size="mini"
|
||
format="yyyy-MM-dd"
|
||
value-format="yyyy-MM-dd"
|
||
type="date"
|
||
placeholder="选择日期"/>
|
||
<el-button size="mini" type="success" icon="el-icon-search" style="margin: 10px 0 10px 10px" @click="searchChart1">查询</el-button>
|
||
</el-row>
|
||
<div v-if="false" id="myChart1" style="width: 58%;height: 300px;display: inline-block"/>
|
||
<el-table v-if="false" :data="tableData01" border style="max-height: 300px;width:40%;display: inline-block" height="300">
|
||
<el-table-column label="名称" align="center">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.设备名称 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="工作日期" align="center" width="100">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.工作日期 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="总剩余" align="center" width="80">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.总剩余加工能力 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="正常剩余" align="center" width="80">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.正常剩余加工能力 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="整改剩余" align="center" width="80">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.整改剩余加工能力 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="预留能力" align="center" width="80">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.预留能力 }}
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<el-row v-if="false">
|
||
<el-radio v-model="radio" label="1">月:</el-radio>
|
||
<el-select v-model="month1" size="mini" style="width:60px" placeholder="月">
|
||
<el-option
|
||
v-for="item in months"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"/>
|
||
</el-select>
|
||
~
|
||
<el-select v-model="month2" size="mini" style="width:60px" placeholder="月">
|
||
<el-option
|
||
v-for="item in months"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"/>
|
||
</el-select>
|
||
<el-radio v-model="radio" label="2">周:</el-radio>
|
||
<el-select v-model="week1" size="mini" style="width:60px" placeholder="周">
|
||
<el-option
|
||
v-for="item in weeks"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"/>
|
||
</el-select>
|
||
~
|
||
<el-select v-model="week2" size="mini" style="width:60px" placeholder="周">
|
||
<el-option
|
||
v-for="item in weeks"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"/>
|
||
</el-select>
|
||
<el-button size="mini" type="success" icon="el-icon-search" style="margin: 10px 0 10px 10px" @click="searchChart2">查询</el-button>
|
||
<el-button size="mini" type="primary" icon="el-icon-refresh" style="margin: 10px 20px;float:right" @click="refreshTable">刷新</el-button>
|
||
<span>零件类型:</span>{{ partType }}
|
||
</el-row>
|
||
<div v-if="false" id="myChart2" style="width: 58%;height: 300px;display: inline-block"/>
|
||
<el-table :data="tableData02" :row-class-name="rowClassName" border style="max-height: 300px;display: inline-block" height="300">
|
||
<el-table-column label="工序顺序" align="center" width="80" type="index">
|
||
<template slot-scope="scope">
|
||
{{ 工序顺序[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="工序名称" align="center">
|
||
<template slot-scope="scope">
|
||
{{ 工序名称[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="工时" align="center" width="80">
|
||
<template slot-scope="scope">
|
||
{{ 工时[scope.$index] }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="计划日期" align="center" width="200">
|
||
<template slot-scope="scope">
|
||
<el-date-picker
|
||
v-model="计划日期[scope.$index]"
|
||
style="width:150px"
|
||
size="mini"
|
||
type="date"
|
||
format="yyyy-MM-dd"
|
||
value-format="yyyy-MM-dd"
|
||
placeholder="选择日期"/>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="更新" size="mini" align="center" width="90">
|
||
<template slot-scope="scope">
|
||
<el-button size="mini" type="primary" plain style="" @click="updateDate(scope.$index)">更新</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</el-dialog>
|
||
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { selection10086, timeChange, table1Out, Export, han, allOut, updateDate, searchChart1, searchChartTable1, searchChart2, getEntryNameValue, getToolNum, getNum, getTable, getTable5, selection, selection1, discharge, plan, out, xuanchu, platewelding, partPlan, selection2, getTable12580 } from '@/api/ManufacturingCenter/ProductionCapacityBalance'
|
||
import elDragDialog from '@/directive/el-dragDialog' // 可移动对话框
|
||
import echarts from 'echarts'
|
||
import { mapGetters } from 'vuex'
|
||
|
||
export default {
|
||
directives: { elDragDialog },
|
||
data() {
|
||
return {
|
||
可以确定零件计划: false,
|
||
bianliang1: [],
|
||
count: 0,
|
||
是否扫描: false,
|
||
dataX1: [], // 图表1横坐标
|
||
Occupy: [], // 占用
|
||
Surplus: [], // 剩余
|
||
Beyond: [], // 超出
|
||
workSerialNumber: '', // 工序流水号
|
||
partType: '',
|
||
工序顺序: [],
|
||
工序流水号: [],
|
||
工序名称: [],
|
||
工时: [],
|
||
计划日期: [],
|
||
indexAdjust: '', // 被调整的那行索引
|
||
totalAblity: [],
|
||
totalTime: [],
|
||
tableData01: [],
|
||
tableData02: [],
|
||
radio: '1',
|
||
weeks: [],
|
||
week1: '',
|
||
week2: '',
|
||
months: [],
|
||
month1: '',
|
||
month2: '',
|
||
adjustStartTime: '',
|
||
adjustEndTime: '',
|
||
dialogTableVisible520: false,
|
||
q: 0,
|
||
listLoading1: false,
|
||
预计外协: [],
|
||
零件图号: [],
|
||
工艺计划流水号: [],
|
||
零件名称: [],
|
||
投产数量: [],
|
||
机加工开始时间: [],
|
||
机加工结束时间: [],
|
||
是否焊接: [],
|
||
平衡次数: [],
|
||
result: [],
|
||
process: [[]],
|
||
planDate: [[]],
|
||
colorCode: [[]],
|
||
realDate: [[]],
|
||
multipleSelection: [],
|
||
shijiancuo1: 0,
|
||
shijiancuo: 0,
|
||
jieguo: 0,
|
||
startTime: '',
|
||
endTime: '',
|
||
dialogFormVisible1: false,
|
||
liushui: '', // 工艺计划流水号 板焊修改里
|
||
form1: {
|
||
radio: '1',
|
||
enddate: ''
|
||
},
|
||
rules: { // 表单验证规则
|
||
enddate: [{ required: true, message: '请选择板焊结束时间', trigger: 'change' }]
|
||
},
|
||
listLoading: false,
|
||
result1: 0,
|
||
time: '',
|
||
entryNameValue: '',
|
||
entryName: [], // 项目名称
|
||
toolNumValue: '',
|
||
toolNum: [], // 机床号
|
||
NumValue: '',
|
||
Num: [], // 组号
|
||
partNumber: '',
|
||
checked_partNumber: false,
|
||
checked_entryName: false,
|
||
checked_toolNum: false,
|
||
checked_Num: false,
|
||
tableData: [],
|
||
tableData1: [],
|
||
tableData2: [], // 导出临时表
|
||
length: 0, // 记TABLEDATA1的长度
|
||
total: 0, // 总条数
|
||
pageSize: 100, // 每页显示条数
|
||
pageList: 1, // 后台获取页
|
||
currentPage: 1, // 显示当前页
|
||
total1: 0, // 总条数
|
||
pageSize1: 10, // 每页显示条数
|
||
pageList1: 1, // 后台获取页
|
||
currentPage1: 1, // 显示当前页
|
||
total5: 0, // 总条数
|
||
pageSize5: 100, // 每页显示条数
|
||
pageList5: 1, // 后台获取页
|
||
currentPage5: 1 // 显示当前页
|
||
}
|
||
},
|
||
computed: {
|
||
...mapGetters([
|
||
'sidebar',
|
||
'avatar',
|
||
'name',
|
||
'id'
|
||
])
|
||
},
|
||
created() {
|
||
this.typeChange()
|
||
this.Selection1()
|
||
this.getTable()
|
||
},
|
||
methods: {
|
||
// TABLE每行颜色
|
||
tableRowClassName({ row, rowIndex }) {
|
||
if (rowIndex === 1) {
|
||
return 'warning-row'
|
||
} else if (rowIndex === 3) {
|
||
return 'success-row'
|
||
}
|
||
return ''
|
||
},
|
||
// 修改加工件合格时间
|
||
timeChange(row) {
|
||
timeChange(row.工艺计划流水号, row.加工件合格时间).then(response => {
|
||
if (response.data[0].result === '1') {
|
||
this.$message.success('加工件合格时间修改成功')
|
||
} else {
|
||
this.$message.error('加工件合格时间修改失败')
|
||
}
|
||
})
|
||
},
|
||
// 修改外协状态
|
||
table1Out(row) {
|
||
if (row.是否预计外协 === true) {
|
||
table1Out(row.工艺计划流水号, 2).then(() => {
|
||
this.$message.success('修改外协成功')
|
||
})
|
||
} else {
|
||
table1Out(row.工艺计划流水号, 1).then(() => {
|
||
this.$message.success('修改外协成功')
|
||
})
|
||
}
|
||
},
|
||
// 外协跳转
|
||
inBatches() {
|
||
this.$confirm('是否跳转到生产中分批页面?', '提示', {
|
||
confirmButtonText: '确定',
|
||
cancelButtonText: '取消',
|
||
type: 'warning'
|
||
}).then(() => {
|
||
this.$message({
|
||
type: 'success',
|
||
message: '跳转成功!'
|
||
})
|
||
}).catch(() => {
|
||
this.$message({
|
||
type: 'info',
|
||
message: '取消跳转'
|
||
})
|
||
})
|
||
},
|
||
rowClassName({ rowIndex }) {
|
||
if (this.colorCode[this.indexAdjust][rowIndex] === 'red') {
|
||
return 'red'
|
||
} else if (this.colorCode[this.indexAdjust][rowIndex] === 'white') {
|
||
return 'white'
|
||
} else {
|
||
return ''
|
||
}
|
||
},
|
||
// rowClick(row) {
|
||
// this.workSerialNumber = row.工序流水号
|
||
// this.searchChart1()
|
||
// },
|
||
// 刷新
|
||
refreshTable() {
|
||
this.partType = ''
|
||
this.tableData02 = []
|
||
this.工序顺序 = []
|
||
this.工序流水号 = []
|
||
this.工序名称 = []
|
||
this.工时 = []
|
||
this.计划日期 = []
|
||
this.Selection2()
|
||
},
|
||
// 更新
|
||
updateDate(index) {
|
||
if (this.计划日期[index] === '' || this.计划日期[index] === null) {
|
||
this.$message.error('请选择日期')
|
||
} else {
|
||
updateDate(this.工序流水号[index], this.id, this.计划日期[index]).then(response => {
|
||
if (response.data[0].result === '1') {
|
||
this.$message.success('更新成功')
|
||
this.refreshTable()
|
||
} else {
|
||
this.$message.error('更新失败')
|
||
}
|
||
})
|
||
}
|
||
},
|
||
searchChart1() {
|
||
var myChart1 = echarts.init(document.getElementById('myChart1'))
|
||
myChart1.clear()
|
||
searchChart1(this.workSerialNumber, this.adjustStartTime, this.adjustEndTime).then(response => {
|
||
this.drawLine1(response.data)
|
||
})
|
||
searchChartTable1(this.workSerialNumber, this.adjustStartTime, this.adjustEndTime).then(response => {
|
||
this.tableData01 = response.data
|
||
})
|
||
},
|
||
// 查图表2的数据
|
||
searchChart2() {
|
||
var myChart2 = echarts.init(document.getElementById('myChart2'))
|
||
myChart2.clear()
|
||
if (this.radio === '1') {
|
||
searchChart2(this.month1, this.month2, 2).then(response => {
|
||
this.drawLine2(response.data)
|
||
})
|
||
} else {
|
||
searchChart2(this.week1, this.week2, 1).then(response => {
|
||
this.drawLine2(response.data)
|
||
})
|
||
}
|
||
},
|
||
drawLine1(data) {
|
||
this.dataX1 = []
|
||
this.Occupy = []
|
||
this.Surplus = []
|
||
this.Beyond = []
|
||
for (let i = 0; i < data.length; i++) {
|
||
this.dataX1.push(data[i].工作日期)
|
||
this.Occupy.push(data[i].余量)
|
||
this.Surplus.push(data[i].总剩余加工能力)
|
||
this.Beyond.push(data[i].超出工时)
|
||
}
|
||
var myChart1 = echarts.init(document.getElementById('myChart1'))
|
||
myChart1.setOption({
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'shadow'
|
||
}
|
||
},
|
||
legend: {
|
||
data: ['占用', '剩余', '超出']
|
||
},
|
||
xAxis: {
|
||
type: 'category',
|
||
name: '工作日期',
|
||
data: this.dataX1,
|
||
axisLabel: {
|
||
interval: 0,
|
||
rotate: 0,
|
||
margin: 10
|
||
}
|
||
},
|
||
yAxis: {
|
||
type: 'value',
|
||
name: '工时',
|
||
min: 0,
|
||
scale: 'true'
|
||
},
|
||
series: [
|
||
{
|
||
name: '占用',
|
||
type: 'bar',
|
||
data: this.Occupy
|
||
},
|
||
{
|
||
name: '剩余',
|
||
type: 'bar',
|
||
data: this.Surplus
|
||
},
|
||
{
|
||
name: '超出',
|
||
type: 'bar',
|
||
data: this.Beyond
|
||
}
|
||
]
|
||
})
|
||
},
|
||
drawLine2(data) {
|
||
this.dataX = []
|
||
this.totalAblity = []
|
||
this.totalTime = []
|
||
for (let i = 0; i < data.length; i++) {
|
||
this.dataX.push(data[i].日期)
|
||
this.totalAblity.push(data[i].设备总能力)
|
||
this.totalTime.push(data[i].总工时)
|
||
}
|
||
var myChart2 = echarts.init(document.getElementById('myChart2'))
|
||
myChart2.setOption({
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'shadow'
|
||
}
|
||
},
|
||
legend: {
|
||
data: ['设备总能力', '总工时']
|
||
},
|
||
// 实现缩放功能
|
||
dataZoom: {
|
||
show: true,
|
||
realtime: true,
|
||
start: 0,
|
||
end: 100
|
||
},
|
||
xAxis: {
|
||
type: 'category',
|
||
name: '日期',
|
||
data: this.dataX,
|
||
axisLabel: {
|
||
interval: 0,
|
||
rotate: 0,
|
||
margin: 10
|
||
}
|
||
},
|
||
yAxis: {
|
||
type: 'value',
|
||
name: '工时',
|
||
min: 0,
|
||
scale: 'true'
|
||
},
|
||
series: [
|
||
{
|
||
name: '设备总能力',
|
||
type: 'bar',
|
||
data: this.totalAblity
|
||
},
|
||
{
|
||
name: '总工时',
|
||
type: 'bar',
|
||
data: this.totalTime
|
||
}
|
||
]
|
||
})
|
||
},
|
||
// 初始化获取项目名称
|
||
fetchData() {
|
||
for (let i = 0; i < 12; i++) {
|
||
this.months.push({
|
||
label: i + 1,
|
||
value: i + 1
|
||
})
|
||
}
|
||
for (let i = 0; i < 52; i++) {
|
||
this.weeks.push({
|
||
label: i + 1,
|
||
value: i + 1
|
||
})
|
||
}
|
||
getEntryNameValue().then(response => {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
this.entryName.push({
|
||
label: response.data[i].项目名称,
|
||
value: response.data[i].项目流水号
|
||
})
|
||
}
|
||
})
|
||
},
|
||
typeChange() {
|
||
this.toolNumValue = ''
|
||
this.toolNum = []
|
||
this.NumValue = ''
|
||
this.Num = []
|
||
getToolNum(this.entryNameValue).then(response => {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
this.toolNum.push({
|
||
label: response.data[i].机床图号,
|
||
value: response.data[i].机床流水号,
|
||
value2: response.data[i].项目名称
|
||
})
|
||
}
|
||
})
|
||
},
|
||
typeChange1() {
|
||
this.NumValue = ''
|
||
this.Num = []
|
||
getNum(this.toolNumValue).then(response => {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
this.Num.push({
|
||
label: response.data[i].组号,
|
||
value: response.data[i].组件流水号
|
||
})
|
||
}
|
||
})
|
||
},
|
||
getTable() {
|
||
this.listLoading = true
|
||
this.tableData = []
|
||
if (this.entryNameValue === '') {
|
||
this.checked_entryName = false
|
||
} else {
|
||
this.checked_entryName = true
|
||
}
|
||
if (this.toolNumValue === '') {
|
||
this.checked_toolNum = false
|
||
} else {
|
||
this.checked_toolNum = true
|
||
}
|
||
if (this.NumValue === '') {
|
||
this.checked_Num = false
|
||
} else {
|
||
this.checked_Num = true
|
||
}
|
||
if (this.partNumber !== '' && this.partNumber !== null) {
|
||
this.checked_partNumber = true
|
||
} else {
|
||
this.checked_partNumber = false
|
||
}
|
||
getTable(this.checked_entryName, this.entryNameValue, this.checked_toolNum, this.toolNumValue, this.checked_Num, this.NumValue, this.checked_partNumber, this.partNumber, this.pageList, this.pageSize).then(response => {
|
||
for (let i = 0; i < response.data.rows.length; i++) {
|
||
response.data.rows[i].机加工开始时间_长日期 = response.data.rows[i].机加工开始时间_长日期.substring(0, response.data.rows[i].机加工开始时间_长日期.indexOf(' '))
|
||
response.data.rows[i].机加工结束时间_长日期 = response.data.rows[i].机加工结束时间_长日期.substring(0, response.data.rows[i].机加工结束时间_长日期.indexOf(' '))
|
||
}
|
||
this.total = parseInt(response.data.total)
|
||
for (let i = 0; i < response.data.rows.length; i++) {
|
||
if (response.data.rows[i].是否预计外协 === 'true') {
|
||
response.data.rows[i].是否预计外协 = true
|
||
} else {
|
||
response.data.rows[i].是否预计外协 = false
|
||
}
|
||
this.tableData.push({
|
||
零件图号: response.data.rows[i].零件图号,
|
||
零件名称: response.data.rows[i].零件名称,
|
||
投产数量: response.data.rows[i].投产数量,
|
||
机加工开始时间: response.data.rows[i].机加工开始时间_长日期,
|
||
机加工结束时间: response.data.rows[i].机加工结束时间_长日期,
|
||
加工件合格时间: response.data.rows[i].加工件合格时间,
|
||
工序数量: response.data.rows[i].工序数量,
|
||
是否超负荷: response.data.rows[i].是否超负荷,
|
||
板焊: response.data.rows[i].板焊工段计划完成时间,
|
||
工艺计划流水号: response.data.rows[i].工艺计划流水号,
|
||
时间差: response.data.rows[i].时间差,
|
||
是否是分件: response.data.rows[i].是否是分件,
|
||
是否临时件: response.data.rows[i].是否临时件,
|
||
是否预计外协: response.data.rows[i].是否预计外协,
|
||
checked_banhan1: response.data.rows[i].是否焊接,
|
||
排序顺序: parseFloat(response.data.rows[i].是否是分件) * 100 + parseFloat(response.data.rows[i].时间差) * 100 + parseFloat(response.data.rows[i].工序数量) * 5
|
||
})
|
||
}
|
||
this.listLoading = false
|
||
})
|
||
},
|
||
// 导出
|
||
getTable5() {
|
||
this.tableData = []
|
||
this.listLoading = true
|
||
getTable5(this.pageList5, this.pageSize5).then(response => {
|
||
for (let i = 0; i < response.data.rows.length; i++) {
|
||
this.tableData.push({
|
||
零件图号: response.data.rows[i].零件图号,
|
||
零件名称: response.data.rows[i].零件名称,
|
||
投产数量: response.data.rows[i].投产数量,
|
||
机加工开始时间: response.data.rows[i].机加工开始时间,
|
||
机加工结束时间: response.data.rows[i].机加工结束时间,
|
||
加工件合格时间: response.data.rows[i].加工件合格时间,
|
||
工序数量: response.data.rows[i].工序数量,
|
||
是否超负荷: response.data.rows[i].是否超负荷,
|
||
板焊: response.data.rows[i].板焊工段计划完成时间,
|
||
工艺计划流水号: response.data.rows[i].工艺计划流水号,
|
||
时间差: response.data.rows[i].时间差,
|
||
是否是分件: response.data.rows[i].是否是分件,
|
||
是否临时件: response.data.rows[i].是否临时件,
|
||
是否预计外协: response.data.rows[i].是否预计外协,
|
||
checked_banhan1: response.data.rows[i].是否焊接,
|
||
排序顺序: parseFloat(response.data.rows[i].是否是分件) * 100 + parseFloat(response.data.rows[i].时间差) * 100 + parseFloat(response.data.rows[i].工序数量) * 5
|
||
})
|
||
}
|
||
this.listLoading = false
|
||
})
|
||
},
|
||
handleSelectionChange(val) {
|
||
this.multipleSelection = val
|
||
},
|
||
// 选入
|
||
Selection() {
|
||
if (this.multipleSelection.length === 0) {
|
||
this.$message.error('请至少选择一个零件')
|
||
} else {
|
||
this.result1 = 0
|
||
for (let i = 0; i < this.multipleSelection.length; i++) {
|
||
selection(this.multipleSelection[i].工艺计划流水号, this.multipleSelection[i].工序数量, this.multipleSelection[i].排序顺序, this.id).then(response => {
|
||
this.result1 += parseInt(response.data[0].result)
|
||
if (this.result1 === this.multipleSelection.length) {
|
||
this.result1 = 0
|
||
this.total1 = 0
|
||
this.pageList1 = 1
|
||
this.Selection1()
|
||
this.total = 0
|
||
this.pageList = 1
|
||
this.getTable()
|
||
}
|
||
})
|
||
}
|
||
}
|
||
},
|
||
// 全部选入
|
||
SelectionAll() {
|
||
this.$confirm('是否将全部零件选入?', '提示', {
|
||
confirmButtonText: '确定',
|
||
cancelButtonText: '取消',
|
||
type: 'warning'
|
||
}).then(() => {
|
||
getTable12580(this.checked_entryName, this.entryNameValue, this.checked_toolNum, this.toolNumValue, this.checked_Num, this.NumValue, this.checked_partNumber, this.partNumber).then(response => {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
selection(response.data[i].工艺计划流水号, response.data[i].工序数量, response.data[i].排序顺序, this.id)
|
||
}
|
||
}).then(() => {
|
||
this.total = 0
|
||
this.pageList = 1
|
||
this.getTable()
|
||
this.total1 = 0
|
||
this.pageList1 = 1
|
||
this.Selection1()
|
||
})
|
||
}).catch(() => {
|
||
this.$message({
|
||
type: 'info',
|
||
message: '取消选入'
|
||
})
|
||
})
|
||
},
|
||
// 选出
|
||
xuanChu(index) {
|
||
xuanchu(this.工艺计划流水号[index]).then(response => {
|
||
}).then(() => {
|
||
this.pageList = 1
|
||
this.total = 0
|
||
this.getTable()
|
||
}).then(() => {
|
||
this.Selection1()
|
||
})
|
||
},
|
||
// 选入后查询
|
||
Selection1() {
|
||
this.listLoading1 = true
|
||
this.tableData1 = []
|
||
this.零件图号 = []
|
||
this.工艺计划流水号 = []
|
||
this.预计外协 = []
|
||
this.零件名称 = []
|
||
this.投产数量 = []
|
||
this.机加工开始时间 = []
|
||
this.机加工结束时间 = []
|
||
this.是否焊接 = []
|
||
this.平衡次数 = []
|
||
this.result = []
|
||
this.process = [[]]
|
||
this.planDate = [[]]
|
||
this.colorCode = [[]]
|
||
this.realDate = [[]]
|
||
selection1(this.id, this.pageList1, this.pageSize1).then(response => {
|
||
for (let i = 0; i < response.data.rows.length; i++) {
|
||
response.data.rows[i].机加工开始时间 = response.data.rows[i].机加工开始时间.substring(0, response.data.rows[i].机加工开始时间.indexOf(' '))
|
||
response.data.rows[i].机加工结束时间 = response.data.rows[i].机加工结束时间.substring(0, response.data.rows[i].机加工结束时间.indexOf(' '))
|
||
}
|
||
for (let i = 0; i < response.data.rows.length; i++) {
|
||
if (response.data.rows[i].是否预计外协 === '1') {
|
||
response.data.rows[i].是否预计外协 = '否'
|
||
} else {
|
||
response.data.rows[i].是否预计外协 = '是'
|
||
}
|
||
this.预计外协.push(response.data.rows[i].是否预计外协)
|
||
this.零件图号.push(response.data.rows[i].零件图号)
|
||
this.工艺计划流水号.push(response.data.rows[i].工艺计划流水号)
|
||
this.零件名称.push(response.data.rows[i].零件名称)
|
||
this.投产数量.push(response.data.rows[i].投产数量)
|
||
this.机加工开始时间.push(response.data.rows[i].机加工开始时间)
|
||
this.机加工结束时间.push(response.data.rows[i].机加工结束时间)
|
||
this.是否焊接.push(response.data.rows[i].是否焊接)
|
||
this.平衡次数.push(response.data.rows[i].平衡次数)
|
||
this.process[i] = []
|
||
this.planDate[i] = []
|
||
this.colorCode[i] = []
|
||
this.realDate[i] = []
|
||
this.result.push(response.data.rows[i])
|
||
this.total1 = parseInt(response.data.total)
|
||
}
|
||
if (this.零件图号.length !== 0) {
|
||
for (let i = 0; i < this.零件图号.length; i++) {
|
||
selection2(this.工艺计划流水号[i]).then(response => {
|
||
for (let k = 0; k < response.data.length; k++) {
|
||
this.process[i][k] = response.data[k].工艺名称简称
|
||
this.planDate[i][k] = response.data[k].计划日期_短
|
||
this.colorCode[i][k] = response.data[k].颜色代码
|
||
this.realDate[i][k] = response.data[k].工序工时
|
||
}
|
||
for (let m = 0; m < this.colorCode.length; m++) {
|
||
for (let j = 0; j < this.colorCode[i].length; j++) {
|
||
if (this.process[m][j] === null) {
|
||
this.colorCode[m][j] = 'blank'
|
||
}
|
||
if (this.colorCode[m][j] === '') {
|
||
this.colorCode[m][j] = 'white'
|
||
}
|
||
}
|
||
}
|
||
}).then(() => {
|
||
this.tableData1.push(this.result[i])
|
||
selection2(this.工艺计划流水号[this.indexAdjust]).then(response => { // 刷新对话框显示和颜色
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
this.partType = response.data[i].零件类型
|
||
this.tableData02 = response.data
|
||
this.工序顺序.push(response.data[i].工序顺序)
|
||
this.工序流水号.push(response.data[i].工序流水号)
|
||
this.工序名称.push(response.data[i].工艺名称简称)
|
||
this.工时.push(response.data[i].工序工时)
|
||
this.计划日期.push(response.data[i].计划日期)
|
||
}
|
||
})
|
||
this.可以确定零件计划 = true
|
||
for (let i = 0; i < this.planDate.length; i++) {
|
||
for (let j = 0; j < this.planDate[i].length; j++) {
|
||
this.可以确定零件计划 = this.可以确定零件计划 && !!this.planDate[i][j]
|
||
}
|
||
}
|
||
})
|
||
}
|
||
} else {
|
||
this.tableData1 = []
|
||
this.listLoading1 = false
|
||
this.total1 = 0
|
||
}
|
||
}).then(() => {
|
||
this.listLoading1 = false
|
||
})
|
||
},
|
||
// 调整
|
||
adjustFunc(index) {
|
||
this.indexAdjust = index
|
||
this.partType = ''
|
||
this.tableData02 = []
|
||
this.工序顺序 = []
|
||
this.工序流水号 = []
|
||
this.工序名称 = []
|
||
this.工时 = []
|
||
this.计划日期 = []
|
||
selection2(this.工艺计划流水号[index]).then(response => {
|
||
this.partType = response.data[0].零件类型
|
||
this.tableData02.push(response.data)
|
||
this.工序顺序.push(response.data[0].工序顺序)
|
||
this.工序流水号.push(response.data[0].工序流水号)
|
||
this.工序名称.push(response.data[0].工艺名称简称)
|
||
this.工时.push(response.data[0].工序工时)
|
||
this.计划日期.push(response.data[0].计划日期)
|
||
for (let i = 1; i < response.data.length; i++) {
|
||
// if (response.data[i].工序流水号 !== response.data[i - 1].工序流水号) {}
|
||
this.工序顺序.push(response.data[i].工序顺序)
|
||
this.工序流水号.push(response.data[i].工序流水号)
|
||
this.工序名称.push(response.data[i].工艺名称简称)
|
||
this.工时.push(response.data[i].工序工时)
|
||
this.计划日期.push(response.data[i].计划日期)
|
||
this.tableData02.push(response.data)
|
||
}
|
||
})
|
||
this.dialogTableVisible520 = true
|
||
},
|
||
// 全部选出
|
||
allOut() {
|
||
this.$confirm('是否将零件全部选出?', '提示', {
|
||
confirmButtonText: '确定',
|
||
cancelButtonText: '取消',
|
||
type: 'warning'
|
||
}).then(() => {
|
||
selection10086(this.id).then(response => {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
allOut(response.data[i].工艺计划流水号)
|
||
}
|
||
}).then(() => {
|
||
this.total = 0
|
||
this.pageList = 1
|
||
this.getTable()
|
||
this.total1 = 0
|
||
this.pageList1 = 1
|
||
this.Selection1()
|
||
})
|
||
}).catch(() => {
|
||
this.$message({
|
||
type: 'info',
|
||
message: '取消选出'
|
||
})
|
||
})
|
||
},
|
||
// 刷新里刷新
|
||
Selection2() {
|
||
this.listLoading1 = true
|
||
this.tableData1 = []
|
||
this.零件图号 = []
|
||
this.工艺计划流水号 = []
|
||
this.预计外协 = []
|
||
this.零件名称 = []
|
||
this.投产数量 = []
|
||
this.机加工开始时间 = []
|
||
this.机加工结束时间 = []
|
||
this.是否焊接 = []
|
||
this.平衡次数 = []
|
||
this.result = []
|
||
this.process = [[]]
|
||
this.planDate = [[]]
|
||
this.colorCode = [[]]
|
||
this.realDate = [[]]
|
||
selection1(this.id, this.pageList1, this.pageSize1).then(response => {
|
||
for (let i = 0; i < response.data.rows.length; i++) {
|
||
response.data.rows[i].机加工开始时间 = response.data.rows[i].机加工开始时间.substring(0, response.data.rows[i].机加工开始时间.indexOf(' '))
|
||
response.data.rows[i].机加工结束时间 = response.data.rows[i].机加工结束时间.substring(0, response.data.rows[i].机加工结束时间.indexOf(' '))
|
||
}
|
||
for (let i = 0; i < response.data.rows.length; i++) {
|
||
if (response.data.rows[i].是否预计外协 === '1') {
|
||
response.data.rows[i].是否预计外协 = '否'
|
||
} else {
|
||
response.data.rows[i].是否预计外协 = '是'
|
||
}
|
||
this.预计外协.push(response.data.rows[i].是否预计外协)
|
||
this.零件图号.push(response.data.rows[i].零件图号)
|
||
this.工艺计划流水号.push(response.data.rows[i].工艺计划流水号)
|
||
this.零件名称.push(response.data.rows[i].零件名称)
|
||
this.投产数量.push(response.data.rows[i].投产数量)
|
||
this.机加工开始时间.push(response.data.rows[i].机加工开始时间)
|
||
this.机加工结束时间.push(response.data.rows[i].机加工结束时间)
|
||
this.是否焊接.push(response.data.rows[i].是否焊接)
|
||
this.平衡次数.push(response.data.rows[i].平衡次数)
|
||
this.process[i] = []
|
||
this.planDate[i] = []
|
||
this.colorCode[i] = []
|
||
this.realDate[i] = []
|
||
this.result.push(response.data.rows[i])
|
||
this.total1 = parseInt(response.data.total)
|
||
}
|
||
if (this.零件图号.length !== 0) {
|
||
for (let i = 0; i < this.零件图号.length; i++) {
|
||
selection2(this.工艺计划流水号[i]).then(response => {
|
||
for (let k = 0; k < response.data.length; k++) {
|
||
this.process[i][k] = response.data[k].工艺名称简称
|
||
this.planDate[i][k] = response.data[k].计划日期_短
|
||
this.colorCode[i][k] = response.data[k].颜色代码
|
||
this.realDate[i][k] = response.data[k].工序工时
|
||
}
|
||
for (let m = 0; m < this.colorCode.length; m++) {
|
||
for (let j = 0; j < this.colorCode[i].length; j++) {
|
||
if (this.process[m][j] === null) {
|
||
this.colorCode[m][j] = 'blank'
|
||
}
|
||
if (this.colorCode[m][j] === '') {
|
||
this.colorCode[m][j] = 'white'
|
||
}
|
||
}
|
||
}
|
||
}).then(() => {
|
||
this.tableData1.push(this.result[i])
|
||
selection2(this.工艺计划流水号[this.indexAdjust]).then(response => { // 刷新对话框显示和颜色
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
this.partType = response.data[i].零件类型
|
||
this.tableData02 = response.data
|
||
this.工序顺序.push(response.data[i].工序顺序)
|
||
this.工序流水号.push(response.data[i].工序流水号)
|
||
this.工序名称.push(response.data[i].工艺名称简称)
|
||
this.工时.push(response.data[i].工序工时)
|
||
this.计划日期.push(response.data[i].计划日期)
|
||
}
|
||
})
|
||
this.listLoading1 = false
|
||
})
|
||
}
|
||
} else {
|
||
this.tableData1 = []
|
||
this.listLoading1 = false
|
||
this.total1 = 0
|
||
}
|
||
})
|
||
},
|
||
// 板焊表单
|
||
PlateWelding(index, row, formName) {
|
||
this.count = this.count + 1
|
||
if (this.count !== 1) {
|
||
this.$refs[formName].resetFields()
|
||
}
|
||
this.form1.enddate = ''
|
||
this.dialogFormVisible1 = true
|
||
this.liushui = row.工艺计划流水号
|
||
this.form1.enddate = row.板焊
|
||
},
|
||
// 板焊确定
|
||
plateWelding() {
|
||
platewelding(this.liushui, this.form1.enddate, this.form1.radio).then(response => {
|
||
if (response.data[0].result === '1') {
|
||
this.dialogFormVisible1 = false
|
||
this.$message({
|
||
type: 'success',
|
||
message: '板焊结束时间修改成功!'
|
||
})
|
||
this.pageList = 1
|
||
this.total = 0
|
||
this.getTable()
|
||
} else {
|
||
this.dialogFormVisible1 = false
|
||
this.$message.error('板焊结束时间修改失败')
|
||
}
|
||
})
|
||
},
|
||
submit1(formName) {
|
||
if (this.form1.radio === '1') {
|
||
this.$refs[formName].validate((valid) => {
|
||
if (valid) {
|
||
this.plateWelding()
|
||
this.$refs[formName].resetFields()
|
||
} else {
|
||
return false
|
||
}
|
||
})
|
||
} else {
|
||
this.plateWelding()
|
||
}
|
||
},
|
||
// 重置表单
|
||
callOff1(formName) {
|
||
this.dialogFormVisible1 = false
|
||
// this.$refs[formName].resetFields()
|
||
},
|
||
// 虚拟排产
|
||
Discharge() {
|
||
this.bianliang1 = []
|
||
for (let i = 0; i < this.tableData1.length; i++) {
|
||
this.bianliang1.push(this.tableData1[i].工艺计划流水号)
|
||
}
|
||
discharge(this.bianliang1).then(response => {
|
||
this.Selection1()
|
||
})
|
||
},
|
||
// 4.1 确定零件计划
|
||
Plan() {
|
||
if (this.tableData1.length === 0) {
|
||
this.$message.error('请至少选择一个零件')
|
||
} else {
|
||
this.result1 = 0
|
||
for (let i = 0; i < this.tableData1.length; i++) {
|
||
this.length = this.tableData1.length
|
||
out(this.tableData1[i].工艺计划流水号, 1).then(response => {
|
||
}).then(() => {
|
||
plan(this.tableData1[i].工艺计划流水号).then(response => {
|
||
if (this.tableData1[i].平衡次数 !== 0 || this.tableData1[i].是否焊接 !== 1) {
|
||
this.result1 += parseInt(response.data[0].result)
|
||
if (this.result1 === this.length) {
|
||
this.$message.success('零件计划制定成功')
|
||
this.total1 = 0
|
||
this.pageList1 = 1
|
||
this.Selection1()
|
||
} else if (response.data[0].result === '0') {
|
||
this.$message.error('第' + (i + 1) + '行制定失败')
|
||
}
|
||
}
|
||
}).then(() => {
|
||
if (this.tableData1[i].平衡次数 === 0 && this.tableData1[i].是否焊接 === 1) {
|
||
han(this.tableData1[i].工艺计划流水号)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
}
|
||
},
|
||
// 零件计划变更2.1
|
||
PartPlan() {
|
||
if (this.startTime !== '' && this.startTime !== null) {
|
||
if (this.endTime !== '' && this.endTime !== null) {
|
||
this.shijiancuo1 = Date.parse(this.startTime)
|
||
this.shijiancuo = Date.parse(this.endTime)
|
||
this.jieguo = this.shijiancuo1 - this.shijiancuo
|
||
if (this.jieguo >= 0) {
|
||
this.$message.error('加工结束时间应大于开始时间')
|
||
} else {
|
||
if (this.multipleSelection.length === 0) {
|
||
this.$message.error('请至少选择一个零件')
|
||
} else {
|
||
for (let i = 0; i < this.multipleSelection.length; i++) {
|
||
partPlan(this.multipleSelection[i].工艺计划流水号, this.startTime, this.endTime).then(response => {
|
||
if (response.data.output[0].state === '0') {
|
||
if (i === this.multipleSelection.length - 1) {
|
||
this.$message.success('零件计划制定成功')
|
||
this.pageList = 1
|
||
this.total = 0
|
||
this.getTable()
|
||
}
|
||
} else if (response.data.output[0].state === '1') {
|
||
this.$message.error('请选择有效时间')
|
||
}
|
||
})
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
this.$message.error('请输入结束日期')
|
||
}
|
||
} else {
|
||
this.$message.error('请输入开始日期')
|
||
}
|
||
},
|
||
// 导出
|
||
Export() {
|
||
if (this.entryNameValue === '' && this.partNumber === '') {
|
||
this.$message.error('请至少选择一个条件')
|
||
} else {
|
||
this.tableData2 = []
|
||
if (this.entryNameValue === '') {
|
||
this.checked_entryName = false
|
||
} else {
|
||
this.checked_entryName = true
|
||
}
|
||
if (this.toolNumValue === '') {
|
||
this.checked_toolNum = false
|
||
} else {
|
||
this.checked_toolNum = true
|
||
}
|
||
if (this.NumValue === '') {
|
||
this.checked_Num = false
|
||
} else {
|
||
this.checked_Num = true
|
||
}
|
||
if (this.partNumber !== '' && this.partNumber !== null) {
|
||
this.checked_partNumber = true
|
||
} else {
|
||
this.checked_partNumber = false
|
||
}
|
||
Export(this.checked_entryName, this.entryNameValue, this.checked_toolNum, this.toolNumValue, this.checked_Num, this.NumValue, this.checked_partNumber, this.partNumber).then(response => {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
this.tableData2.push({
|
||
零件图号: response.data[i].零件图号,
|
||
零件名称: response.data[i].零件名称,
|
||
投产数量: response.data[i].投产数量,
|
||
材质: response.data[i].材质,
|
||
单价: response.data[i].单价,
|
||
是否带料: response.data[i].是否带料,
|
||
项目: response.data[i].项目,
|
||
机加工结束时间: response.data[i].机加工结束时间,
|
||
关注度: response.data[i].关注度,
|
||
备注: response.data[i].备注
|
||
})
|
||
}
|
||
}).then(() => {
|
||
require.ensure([], () => {
|
||
const { export_json_to_excel } = require('@/vendor/Export2Excel')
|
||
const tHeader = ['零件图号', '零件名称', '投产数量', '材质', '单价', '是否带料', '项目', '机加工结束时间', '关注度', '备注']
|
||
const filterVal = ['零件图号', '零件名称', '投产数量', '材质', '单价', '是否带料', '项目', '机加工结束时间', '关注度', '备注']
|
||
const list = this.tableData2
|
||
const data = this.formatJson(filterVal, list)
|
||
export_json_to_excel(tHeader, data, 'OutPart')
|
||
}).then(() => {
|
||
this.total = 0
|
||
this.pageList = 1
|
||
this.getTable()
|
||
})
|
||
})
|
||
}
|
||
},
|
||
// 导出方法
|
||
formatJson(filterVal, jsonData) {
|
||
return jsonData.map(v => filterVal.map(j => v[j]))
|
||
},
|
||
// 分页
|
||
handleSizeChange(val) {
|
||
this.pageSize = val
|
||
this.getTable()
|
||
},
|
||
handleCurrentChange(val) {
|
||
this.pageList = val
|
||
this.getTable()
|
||
},
|
||
handleSizeChange1(val) {
|
||
this.pageSize1 = val
|
||
this.Selection1()
|
||
},
|
||
handleCurrentChange1(val) {
|
||
this.pageList1 = val
|
||
this.Selection1()
|
||
},
|
||
handleSizeChange5(val) {
|
||
this.pageSize5 = val
|
||
this.getTable5()
|
||
},
|
||
handleCurrentChange5(val) {
|
||
this.pageList5 = val
|
||
this.getTable5()
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.el-card{
|
||
margin: 0px;
|
||
}
|
||
.el-date-editor{
|
||
width: 200px;
|
||
}
|
||
span{
|
||
margin: 10px 0 10px 10px;
|
||
}
|
||
.table h4{
|
||
border: 1px solid transparent;
|
||
margin: 0;
|
||
font-weight: normal;
|
||
width: 100px;
|
||
height: 24px;
|
||
}
|
||
</style>
|
||
<style>
|
||
.white{
|
||
background-color: ghostwhite!important;
|
||
border: 1px solid #1f2d3d;
|
||
}
|
||
.red{
|
||
background-color: orangered!important;
|
||
border: 1px solid #1f2d3d;
|
||
}
|
||
.lightblue{
|
||
background-color: #00afff!important;
|
||
border: 1px solid #1f2d3d;
|
||
}
|
||
.yellow{
|
||
background-color: yellow!important;
|
||
border: 1px solid #1f2d3d;
|
||
}
|
||
.blank{
|
||
background-color: transparent!important;
|
||
border: 0px solid white;
|
||
}
|
||
.lightgreen{
|
||
background-color: lightgreen!important;
|
||
border: 1px solid #1f2d3d;
|
||
}
|
||
</style>
|