| | |
| | | <div |
| | | class="bodyTopStatus" |
| | | > |
| | | <div style="font-weight: bolder;">工单状态</div> |
| | | <div class="statusItem" :class="{statusItemLight:form.mesorderstus===''}" @click="statusChange('')">全部</div> |
| | | <div class="statusItem" :class="{statusItemLight:form.mesorderstus==='NEW'}" @click="statusChange('NEW')">新订单</div> |
| | | <div class="statusItem" :class="{statusItemLight:form.mesorderstus==='ALLO'}" @click="statusChange('ALLO')">已派发</div> |
| | | <div class="statusItem" :class="{statusItemLight:form.mesorderstus==='START'}" @click="statusChange('START')">开工</div> |
| | | <div class="statusItem" :class="{statusItemLight:form.mesorderstus==='CLOSED'}" @click="statusChange('CLOSED')">完工</div> |
| | | <div style="font-weight: bolder;">工单状态:</div> |
| | | <div class="statusItem" :class="{statusItemLight:true}" @click="statusChange('')">全部</div> |
| | | <div class="statusItem" :class="{statusItemLight1:true}" @click="statusChange('NEW')">新订单</div> |
| | | <div class="statusItem" :class="{statusItemLight2:true}" @click="statusChange('ALLO')">已派发</div> |
| | | <div class="statusItem" :class="{statusItemLight3:true}" @click="statusChange('START')">开工</div> |
| | | <div class="statusItem" :class="{statusItemLight4:true}" @click="statusChange('CLOSED')">完工</div> |
| | | </div> |
| | | |
| | | <div class="bodyTopButtonGroup" style="justify-content: space-between;margin-top: 5px;"> |
| | | <div style="display: flex"> |
| | | <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button> |
| | | <el-button v-waves type="success" icon="el-icon-connection" @click="send">派发</el-button> |
| | | <el-button v-waves type="success" icon="el-icon-connection" @click="send();tableDataDetail=[]">派发</el-button> |
| | | </div> |
| | | |
| | | <el-button v-waves type="primary" @click="batchUpdate"><i |
| | | <el-button v-waves type="primary" @click="batchUpdate();tableDataDetail=[]"><i |
| | | class="el-icon-edit" |
| | | style="margin-right: 0;" |
| | | /> 批量绑定 |
| | |
| | | <el-select |
| | | v-model="form.wkshopcode" |
| | | filterable |
| | | multiple |
| | | collapse-tags |
| | | :popper-append-to-body="false" |
| | | style="width: 200px" |
| | | placeholder="请选择" |
| | |
| | | class="bodySearchReset" |
| | | :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}" |
| | | > |
| | | <el-button v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button> |
| | | <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button> |
| | | <el-button v-waves type="primary" icon="el-icon-search" @click="search();tableDataDetail=[]">查询</el-button> |
| | | <el-button v-waves type="info" icon="el-icon-refresh" @click="reset();tableDataDetail=[]">重置</el-button> |
| | | </div> |
| | | |
| | | </el-form> |
| | |
| | | border |
| | | :summary-method="getSummaries" |
| | | show-summary |
| | | :row-class-name="tableRowClassName" |
| | | :row-class-name="tableRowClassName2" |
| | | :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px'}" |
| | | highlight-current-row |
| | | :header-cell-style="this.$headerCellStyle" |
| | |
| | | type="selection" |
| | | width="50" |
| | | :selectable="selected" |
| | | class-name="fixed-column" |
| | | /> |
| | | <el-table-column |
| | | prop="rowNum" |
| | | width="50" |
| | | width="80" |
| | | label="序号" |
| | | fixed |
| | | class-name="fixed-column" |
| | | /> |
| | | <el-table-column |
| | | prop="status" |
| | |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="销售订单" |
| | | label="销售订单/预测单" |
| | | sortable="custom" |
| | | show-tooltip-when-overflow |
| | | min-width="160" |
| | |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="TopInventoryCode" |
| | | label="顶级物料编码" |
| | | sortable="custom" |
| | | show-tooltip-when-overflow |
| | | min-width="130" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.TopInventoryCode">{{ row.TopInventoryCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="TopInventoryName" |
| | | label="顶级物料名称" |
| | | sortable="custom" |
| | | show-tooltip-when-overflow |
| | | min-width="130" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.TopInventoryName">{{ row.TopInventoryName }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="工单数" |
| | |
| | | label="操作" |
| | | width="160" |
| | | fixed="right" |
| | | class-name="fixed-column" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="operationClass"> |
| | |
| | | </el-tooltip> |
| | | |
| | | <el-tooltip v-del-tab-index class="item" effect="dark" content="删除" placement="top"> |
| | | <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @click="del(row)" /> |
| | | <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @click.stop="del(row)" /> |
| | | </el-tooltip> |
| | | |
| | | <el-tooltip class="item" effect="dark" content="打印工单" placement="top"> |
| | |
| | | align="right" |
| | | layout="total,prev, pager, next,sizes,jumper" |
| | | popper-class="select_bottom" |
| | | @pagination="getMesOrderSearch" |
| | | @pagination="getMesOrderSearch();tableDataDetail=[]" |
| | | /> |
| | | |
| | | <div class="elTableDiv"> |
| | | <el-table |
| | | ref="tableDataRef2" |
| | | :data="tableDataDetail" |
| | | border |
| | | height="210px" |
| | |
| | | v-model="dialogForm.mesqty" |
| | | oninput="value=value.replace(/[^\d]/g,'')" |
| | | style="width: 200px" |
| | | @input="mesqtyInputChange" |
| | | /> |
| | | <!-- oninput="value=value.replace(/[^0-9*.{1}0-9*]/g,'')"--> |
| | | </el-form-item> |
| | |
| | | <el-form-item label="产品规格" prop="partspec"> |
| | | <el-input v-model="dialogForm.partspec" disabled style="width: 200px" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item v-if="operation!=='add'" label="顶级物料编码" prop="TopInventoryCode"> |
| | | <el-input v-model="dialogForm.TopInventoryCode" disabled style="width: 200px" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item v-if="operation!=='add'" label="顶级物料名称" prop="TopInventoryName"> |
| | | <el-input v-model="dialogForm.TopInventoryName" disabled style="width: 200px" /> |
| | | </el-form-item> |
| | | <!-- :disabled="dialogForm.partcode===''"--> |
| | | |
| | | <el-form-item v-if="mesSetting.route&&sourceType" label="工艺路线"> |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="销售订单" prop=""> |
| | | <el-input |
| | | v-model="dialogForm.saleordercode" |
| | | style="width: 200px" |
| | | :disabled="!(dialogForm.mesorderstus==='NEW'&&dialogForm.data_sources==='MES')" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="预计交付日期" prop="deliverydate"> |
| | | <el-date-picker |
| | | v-model="dialogForm.deliverydate" |
| | |
| | | class="stepSelectedValueClass" |
| | | style="width: 930px;" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择相对应工序" |
| | | @change="stepSelectedValueChange" |
| | | > |
| | |
| | | <el-form-item label="产品规格:" class="formContent"> |
| | | {{ formApprove.partspec }} |
| | | </el-form-item> |
| | | <el-form-item label="顶级物料:" class="formContent"> |
| | | {{ formApprove.TopInventoryName }} |
| | | </el-form-item> |
| | | <el-form-item label="工单数量:" class="formContent"> |
| | | {{ formApprove.plan_qty }} |
| | | </el-form-item> |
| | |
| | | <el-table-column |
| | | id="column4" |
| | | prop="good_qty" |
| | | width="100" |
| | | width="60" |
| | | align="center" |
| | | label="合格数量" |
| | | label="合格" |
| | | /> |
| | | <el-table-column |
| | | id="column5" |
| | | width="100" |
| | | width="60" |
| | | prop="ng_qty" |
| | | align="center" |
| | | label="不良数量" |
| | | label="不良" |
| | | /> |
| | | <el-table-column |
| | | id="column6" |
| | | prop="desc" |
| | | align="center" |
| | | width="120" |
| | | width="100" |
| | | label="检验员" |
| | | /> |
| | | <el-table-column |
| | | id="column6" |
| | | prop="desc" |
| | | align="center" |
| | | width="100" |
| | | label="备注" |
| | | /> |
| | | </el-table> |
| | |
| | | <el-button v-waves @click="dialogVisibleBackPreview">返 回</el-button> |
| | | <!-- <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">确 定</el-button>--> |
| | | <!-- <el-button v-waves type="primary" @click="dialogVisibleConfirm">确 定/打 印</el-button>--> |
| | | <el-button v-waves v-print="printObj" type="primary">打 印</el-button> |
| | | <el-button v-waves v-print="printObj" type="primary" @click="sendMesOrderDistribution">打 印</el-button> |
| | | </div> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="销售订单" prop=""> |
| | | <el-input |
| | | v-model="i.saleordercode" |
| | | style="width: 200px" |
| | | :disabled="!(i.mesorderstus==='NEW'&&i.data_sources==='MES')" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="预计交付日期" prop="deliverydate"> |
| | | <el-date-picker |
| | | v-model="i.deliverydate" |
| | |
| | | class="stepSelectedValueClass" |
| | | style="width: 930px;" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择相对应工序" |
| | | @change="val=>stepSelectedValueChangeBatchUpdate(val,index)" |
| | | > |
| | |
| | | tableHeight: 0, |
| | | username: '', |
| | | form: { |
| | | wkshopcode: '', // 车间编码 |
| | | wkshopcode: [], // 车间编码 |
| | | mesorderstus: '', // 工单状态码 |
| | | mesordercode: '', // 工单编号 |
| | | partcode: '', // 产品编码 |
| | |
| | | // createdate: '', // 创建时间 |
| | | datatype: 'ED', // 日期类型(计划开工(PS)、计划完工(PE)、预计交付(ED)、创建日期(CT)) |
| | | timeValue: [], // 查询日期 |
| | | prop: 'lm_date', // 排序字段 |
| | | prop: 'partspec', // 排序字段 lm_date |
| | | order: 'desc', // 排序字段 |
| | | page: 1, // 第几页 |
| | | rows: 20 // 每页多少条 |
| | |
| | | sourceorderid: '', // 源单id |
| | | sourceorder: '', // 源单单号 |
| | | |
| | | saleordercode: '', // 销售订单号 |
| | | |
| | | partcode: '', // 产品编码 |
| | | partname: '', // 产品名称 |
| | | partspec: '', // 产品规格 |
| | |
| | | |
| | | deliverydate: '', // 交付时间 |
| | | data_sources: '', // 数据来源 |
| | | |
| | | idTopInventory: '', // 顶级物料id |
| | | TopInventoryCode: '', // 顶级物料编码 |
| | | TopInventoryName: '', // 顶级物料名称 |
| | | routecode: '', // 工艺路线 |
| | | |
| | | mesmaxqty: 0, // 工单的最大值 |
| | |
| | | console.log('执行了打印') |
| | | } |
| | | }, |
| | | |
| | | sendMesOrderWoCode: '', |
| | | formApprove: { |
| | | m_po: '', // 源单单号 |
| | | mesordercode: '', |
| | |
| | | partname: '', |
| | | partspec: '', |
| | | plan_qty: '', |
| | | TopInventoryName: '', |
| | | routename: '', |
| | | lm_date: '', |
| | | priuserdefnvc1: '', |
| | |
| | | |
| | | routecodeArr: [], // |
| | | |
| | | sourceType: false, // 工序的数据来源 |
| | | sourceType: true, // 工序的数据来源 |
| | | |
| | | mesSetting: JSON.parse(localStorage.getItem('mesSetting')), |
| | | |
| | |
| | | // }) |
| | | }, |
| | | methods: { |
| | | // 打印的时候执行派发事件 |
| | | sendMesOrderDistribution() { |
| | | MesOrderDistribution([this.sendMesOrderWoCode]).then(res => { |
| | | if (res.code === '200') { |
| | | this.$notify.success('派发成功!') |
| | | this.getMesOrderSearch() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | mesqtyInputChange(val) { |
| | | if (this.stepTableData && this.stepTableData.length > 0) { |
| | | this.stepTableData.forEach(i => { |
| | | i.sumqty = Math.floor(parseFloat(val) * (1 + (parseFloat(i.ratio) / 100))) |
| | | }) |
| | | } |
| | | }, |
| | | statusChange(val) { |
| | | this.tableDataDetail = [] |
| | | this.form.mesorderstus = val |
| | | this.getMesOrderSearch() |
| | | }, |
| | |
| | | ordertype: i.wotype, // 工单类型 |
| | | sourceorderid: i.sourceid, // 源单id |
| | | sourceorder: i.m_po, // 源单单号 |
| | | saleordercode: i.saleOrderCode, |
| | | partcode: i.partcode, // 产品编码 |
| | | partname: i.partname, // 产品名称 |
| | | partspec: i.partspec, // 产品规格 |
| | |
| | | sourceid: i.sourceorderid, // 源单id |
| | | sourcewo: i.sourceorder, // 源单单号 |
| | | partcode: i.partcode, // 产品编号 |
| | | saleordercode: i.saleordercode, // 销售单号 |
| | | wkshopcode: i.wkshopcode, |
| | | woqty: i.mesqty, // 工单数量 |
| | | deliverydate: i.deliverydate, // 交付时间 |
| | |
| | | tableRowClassName({ row, rowIndex }) { |
| | | return 'custom-row' |
| | | }, |
| | | tableRowClassName2({ row, rowIndex }) { |
| | | if (row.status === 'NEW') { |
| | | return 'custom-row1' |
| | | } |
| | | if (row.status === 'ALLO') { |
| | | return 'custom-row2' |
| | | } |
| | | if (row.status === 'START') { |
| | | return 'custom-row3' |
| | | } |
| | | if (row.status === 'CLOSED') { |
| | | return 'custom-row4' |
| | | } |
| | | }, |
| | | handleRequest() { |
| | | this.getMesOrderSearch().then(res => { |
| | | if (res.code === '200') { |
| | |
| | | // } |
| | | |
| | | const data = { |
| | | wkshopcode: this.form.wkshopcode, |
| | | wkshopcode: this.form.wkshopcode.join(','), |
| | | mesorderstus: this.form.mesorderstus, // 工单状态码 |
| | | mesordercode: this.form.mesordercode, // 工单编号 |
| | | partcode: this.form.partcode, // 产品编码 |
| | |
| | | |
| | | // 重置 |
| | | reset(val) { |
| | | this.form.wkshopcode = '' |
| | | this.form.wkshopcode = [] |
| | | this.form.mesorderstus = '' |
| | | this.form.mesordercode = '' |
| | | this.form.partcode = '' |
| | |
| | | this.form.sourceorder = '' |
| | | this.form.ordertype = '' |
| | | // this.form.createdate = '' |
| | | |
| | | this.form.saleordercode = '' |
| | | |
| | | this.form.timeValue = [] |
| | | this.cycleTime = null |
| | |
| | | if (this.form.page > 1 && this.tableData.length === 1) { |
| | | this.form.page-- |
| | | } |
| | | this.tableDataDetail = [] |
| | | this.getMesOrderSearch() |
| | | } |
| | | }) |
| | |
| | | this.dialogForm.ordertype = row.wotype |
| | | this.dialogForm.sourceorderid = row.sourceid |
| | | this.dialogForm.sourceorder = row.m_po |
| | | this.dialogForm.saleordercode = row.saleOrderCode |
| | | this.dialogForm.partcode = row.partcode |
| | | this.dialogForm.partname = row.partname |
| | | this.dialogForm.partspec = row.partspec |
| | |
| | | this.dialogForm.routecode = row.route_code |
| | | this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11) |
| | | this.dialogForm.mesqty = row.plan_qty |
| | | this.dialogForm.TopInventoryCode = row.TopInventoryCode |
| | | this.dialogForm.TopInventoryName = row.TopInventoryName |
| | | this.dialogForm.idTopInventory = row.idTopInventory |
| | | |
| | | this.dialogForm.mesqtyinit = row.plan_qty |
| | | |
| | |
| | | |
| | | this.stepSelectedValue = this.stepTableData.map(i => i.stepcode) |
| | | } else { |
| | | await this.getBasicProcessData() |
| | | // await this.getBasicProcessData() |
| | | console.log('执行') |
| | | this.sourceTypeChange(this.sourceType) |
| | | } |
| | | } |
| | | |
| | |
| | | ordertype: 'PO', // 工单类型 |
| | | sourceorderid: '', // 源单id |
| | | sourceorder: '', // 源单单号 |
| | | |
| | | saleordercode: '', // 销售订单号 |
| | | partcode: '', // 产品编码 |
| | | partname: '', // 产品名称 |
| | | partspec: '', // 产品规格 |
| | |
| | | mesqty: '', // 工单数量 |
| | | wkshopcode: '', // 生产车间编码 |
| | | wkshopname: '', // 生产车间名称 |
| | | |
| | | idTopInventory: '', // 顶级物料id |
| | | TopInventoryCode: '', // 顶级物料编码 |
| | | TopInventoryName: '', // 顶级物料名称 |
| | | deliverydate: '', // 交付时间 |
| | | data_sources: '' // 数据来源 |
| | | } |
| | | |
| | | this.dialogForm.routecode = '' |
| | | |
| | | this.sourceType = false |
| | | this.sourceType = true |
| | | |
| | | this.stepSelectedValue = [] |
| | | this.stepTableData = [] |
| | | this.$refs.dialogForm.clearValidate() |
| | | this.$refs.tableDataRef.doLayout() |
| | | this.$refs.tableDataRef2.doLayout() |
| | | }, |
| | | // 对话框取消 |
| | | dialogVisibleCancel() { |
| | |
| | | return this.$message.error('有序报工情况下,超报比例后道工序不能大于前道工序!') |
| | | } |
| | | } |
| | | console.log(isNaN(this.dialogForm.mesqty - this.dialogForm.mesqtyinit)) |
| | | // console.log(isNaN(this.dialogForm.mesqty - this.dialogForm.mesqtyinit)) |
| | | const data = { |
| | | wostatus: this.dialogForm.mesorderstus, // 工单状态 |
| | | wocode: this.dialogForm.mesordercode, // 工单号 |
| | | wotype: this.dialogForm.ordertype, // 工单类型 |
| | | sourceid: this.dialogForm.sourceorderid, // 源单id |
| | | sourcewo: this.dialogForm.sourceorder, // 源单单号 |
| | | saleordercode: this.dialogForm.saleordercode, // 销售订单号 |
| | | partcode: this.dialogForm.partcode, // 产品编号 |
| | | wkshopcode: this.dialogForm.wkshopcode, |
| | | woqty: this.dialogForm.mesqty, // 工单数量 |
| | |
| | | // this.handlePrint() |
| | | this.$message.success(this.operation === 'add' ? '添加成功!' : '保存成功!') |
| | | this.getMesOrderSearch() |
| | | this.tableDataDetail = [] |
| | | this.$store.state.app.buttonIsDisabled = false |
| | | } else { |
| | | this.$message.error(this.operation === 'add' ? '添加失败!' : '保存失败!') |
| | |
| | | this.formApprove.priuserdefnvc5 = row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' |
| | | this.formApprove.priuserdefnvc6 = row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' |
| | | |
| | | this.formApprove.TopInventoryName = row.TopInventoryName || '/' |
| | | |
| | | this.formApprove.saleOrderCode = this.formApprove.saleOrderCode !== '' ? this.formApprove.saleOrderCode : saleOrderCode |
| | | const data2 = { |
| | | mesordercode: wo_code || this.dialogForm.mesordercode |
| | | } |
| | | this.sendMesOrderWoCode = wo_code || this.dialogForm.mesordercode |
| | | MesOrderPrintSearch(data2).then(res2 => { |
| | | if (res2.code === '200') { |
| | | this.dialogVisibleApprove = true |
| | |
| | | this.formApprove.plan_qty = '' |
| | | this.formApprove.routename = '' |
| | | this.formApprove.lm_date = '' |
| | | |
| | | this.formApprove.TopInventoryName = '' |
| | | this.formApprove.priuserdefnvc1 = '' |
| | | this.formApprove.priuserdefnvc2 = '' |
| | | this.formApprove.priuserdefnvc3 = '' |
| | |
| | | getSummaries(param) { |
| | | const { columns, data } = param |
| | | const sums = [] |
| | | const i = 9 |
| | | const i = 13 |
| | | columns.forEach((column, index) => { |
| | | if (index === i) { |
| | | sums[index] = '总数' |
| | |
| | | |
| | | .statusItemLight{ |
| | | font-weight: bolder; |
| | | color: #42b983; |
| | | //color: #42b983; |
| | | color: #000; |
| | | } |
| | | |
| | | .statusItemLight1{ |
| | | font-weight: bolder; |
| | | color: rgba(245, 108, 108, 1); |
| | | } |
| | | .statusItemLight2{ |
| | | font-weight: bolder; |
| | | color: rgba(230, 162, 60, 1); |
| | | } |
| | | .statusItemLight3{ |
| | | font-weight: bolder; |
| | | color: rgba(144, 147, 153, 1); |
| | | } |
| | | .statusItemLight4{ |
| | | font-weight: bolder; |
| | | color: rgba(103, 194, 58, 1); |
| | | } |
| | | |
| | | </style> |
| | |
| | | .el-table .custom-row { |
| | | background: #f8f8fa; |
| | | } |
| | | |
| | | .el-table .custom-row1 { |
| | | background: rgba(245, 108, 108, 0.4); |
| | | } |
| | | |
| | | .el-table .custom-row2 { |
| | | background: rgba(230, 162, 60, 0.4); |
| | | } |
| | | |
| | | .el-table .custom-row3 { |
| | | background: rgba(144, 147, 153, 0.4); |
| | | } |
| | | |
| | | .el-table .custom-row4 { |
| | | background: rgba(103, 194, 58, 0.4); |
| | | } |
| | | |
| | | .el-table .fixed-column { |
| | | background: #f8f8fa; |
| | | } |
| | | |
| | | </style> |
| | | <style> |
| | | .sortable-ghost { |