| | |
| | | <el-select |
| | | v-model="form.wkshopcode" |
| | | filterable |
| | | multiple |
| | | collapse-tags |
| | | :popper-append-to-body="false" |
| | | style="width: 200px" |
| | | placeholder="请选择" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="工单编号" style=" display: flex;"> |
| | | <el-input v-model="form.mesordercode" placeholder="请输入" style="width: 200px"/> |
| | | <el-input v-model="form.mesordercode" placeholder="请输入" style="width: 200px" /> |
| | | </el-form-item> |
| | | <el-form-item label="源单单号" style="display: flex;"> |
| | | <el-input v-model="form.sourceorder" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="form.sourceorder" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandForm" label="销售订单" style="display: flex;"> |
| | | <el-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandForm" label="单据类型" style=" display: flex;"> |
| | | <el-select |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandForm" label="产品编码" style=" display: flex;"> |
| | | <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandForm" label="产品名称" style=" display: flex;"> |
| | | <el-input v-model="form.partname" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="form.partname" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandForm" label="产品规格" style=" display: flex;"> |
| | | <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandForm" label="创建人员" style=" display: flex;"> |
| | | <el-input v-model="form.creatuser" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="form.creatuser" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandForm" label="创建时间" style=" display: flex;"> |
| | | <!-- <el-date-picker--> |
| | |
| | | type="selection" |
| | | width="50" |
| | | /> |
| | | <!-- :selectable="selected"--> |
| | | <!-- :selectable="selected"--> |
| | | <el-table-column |
| | | prop="rowNum" |
| | | width="50" |
| | |
| | | |
| | | <el-form-item label="工单编号" prop="mesordercode"> |
| | | <!-- <el-input v-model="dialogForm.mesordercode" :disabled="operation!=='add'" style="width: 200px" />--> |
| | | <el-input v-model="dialogForm.mesordercode" disabled style="width: 200px"/> |
| | | <el-input v-model="dialogForm.mesordercode" disabled style="width: 200px" /> |
| | | </el-form-item> |
| | | <!-- <div style="display: flex">--> |
| | | <el-form-item label="工单类型" prop="mesorderstus"> |
| | |
| | | <!-- <el-input v-model="dialogForm.partcode" disabled style="width: 200px" />--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="产品规格" prop="partspec"> |
| | | <el-input v-model="dialogForm.partspec" disabled style="width: 200px"/> |
| | | <el-input v-model="dialogForm.partspec" disabled style="width: 200px" /> |
| | | </el-form-item> |
| | | <!-- :disabled="dialogForm.partcode===''"--> |
| | | <el-form-item label="所属车间" prop="wkshopcode"> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="工单编号" style=" display: flex;"> |
| | | <el-input v-model="sourceForm.sourceorder" placeholder="请输入" style="width: 200px"/> |
| | | <el-input v-model="sourceForm.sourceorder" placeholder="请输入" style="width: 200px" /> |
| | | </el-form-item> |
| | | <el-form-item label="产品编码" style=" display: flex;"> |
| | | <el-input v-model="sourceForm.partcode" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="sourceForm.partcode" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item v-show="isExpandDialog" label="产品名称" style=" display: flex;"> |
| | | <el-input v-model="sourceForm.partname" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="sourceForm.partname" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandDialog" label="产品规格" style=" display: flex;"> |
| | | <el-input v-model="sourceForm.partspec" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="sourceForm.partspec" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item v-show="isExpandDialog" label="创建人员" style=" display: flex;"> |
| | | <el-input v-model="sourceForm.creatuser" style="width: 200px" placeholder="请输入"/> |
| | | <el-input v-model="sourceForm.creatuser" style="width: 200px" placeholder="请输入" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item |
| | |
| | | justify-content: center; |
| | | position: relative;" |
| | | > |
| | | <div id="qrCode0" ref="qrCodeDiv0"/> |
| | | <div id="qrCode0" ref="qrCodeDiv0" /> |
| | | </div> |
| | | <div style="background-color: #fff;width: 20px;height:120px; position: absolute;right: 0"/> |
| | | <div style="background-color: #fff;width: 20px;height:120px; position: absolute;right: 0" /> |
| | | <div |
| | | style="z-index: 10;background-color:transparent;width: 120px;height:120px; position: absolute;right: 21px" |
| | | /> |
| | |
| | | align="center" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div :id="'qrCode'+row.seq" :ref="'qrCodeDiv'+row.seq" class="tableColumn"/> |
| | | <div :id="'qrCode'+row.seq" :ref="'qrCodeDiv'+row.seq" class="tableColumn" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | @close="handleCloseRoute" |
| | | > |
| | | <div> |
| | | <i class="el-icon-s-comment" style="color:#42b983;"/> 产品名称:{{ dialogFormRoute.projectName }} |
| | | <i class="el-icon-s-comment" style="color:#42b983;" /> 产品名称:{{ dialogFormRoute.projectName }} |
| | | </div> |
| | | <el-divider/> |
| | | <el-divider /> |
| | | <div style="margin-bottom: 10px"> |
| | | <i class="el-icon-s-operation" style="color:#42b983;"/> 工艺路线集合 |
| | | <i class="el-icon-s-operation" style="color:#42b983;" /> 工艺路线集合 |
| | | </div> |
| | | |
| | | <div class="myCheckboxGroup"> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <el-divider/> |
| | | <el-divider /> |
| | | <div> |
| | | <i class="el-icon-s-operation" style="color:#42b983;"/> 默认工艺路线 |
| | | <i class="el-icon-s-operation" style="color:#42b983;" /> 默认工艺路线 |
| | | </div> |
| | | <div style="margin-top: 20px"> |
| | | <el-select |
| | |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | <el-divider/> |
| | | <el-divider /> |
| | | <div style="margin-bottom: 10px"> |
| | | <i class="el-icon-s-operation" style="color:#42b983;"/> 工序列表 |
| | | <i class="el-icon-s-operation" style="color:#42b983;" /> 工序列表 |
| | | </div> |
| | | <div style="overflow-y: scroll"> |
| | | <el-table |
| | |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.enable==='Y'"> |
| | | <svg-icon icon-class="circleYes" style="margin-right: 2px"/> |
| | | <svg-icon icon-class="circleYes" style="margin-right: 2px" /> |
| | | 是 |
| | | </div> |
| | | <div v-if="row.enable==='N'"> |
| | | <svg-icon icon-class="circleNo" style="margin-right: 2px"/> |
| | | <svg-icon icon-class="circleNo" style="margin-right: 2px" /> |
| | | 否 |
| | | </div> |
| | | </template> |
| | |
| | | |
| | | <script> |
| | | import Pagination from '@/components/Pagination' |
| | | import {handleDatetime, handleDatetime2, validateCode} from '@/utils/global' |
| | | import {getCookie} from '@/utils/auth' |
| | | import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global' |
| | | import { getCookie } from '@/utils/auth' |
| | | import QRCode from 'qrcodejs2' |
| | | import $ from 'jquery' |
| | | import elDragDialog from '@/directive/el-drag-dialog' |
| | |
| | | MesOrderClosedSearch, |
| | | UpdateMesOrderStepSearch, MesOrderBitchClosedSeave, MesOrderBitchReverseClosedSeave |
| | | } from '@/api/WorkOrder' |
| | | import {PartSelect} from '@/api/ProductModel' |
| | | import {PrentOrganization, PrentOrganizationNoCompany, StepData} from '@/api/GeneralBasicData' |
| | | import { PartSelect } from '@/api/ProductModel' |
| | | import { PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData' |
| | | import Sortable from 'sortablejs' |
| | | import ElDragSelect from '@/components/DragSelect' |
| | | import {MesOrderPrintSearch} from '@/api/GridReport' // base on element-ui |
| | | import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui |
| | | |
| | | export default { |
| | | name: 'WorkOrderClose', |
| | | components: { |
| | | Pagination, ElDragSelect |
| | | }, |
| | | directives: {elDragDialog, waves}, |
| | | directives: { elDragDialog, waves }, |
| | | data() { |
| | | return { |
| | | mouseHoverType: 'mouseout', |
| | |
| | | tableHeight: 0, |
| | | username: '', |
| | | form: { |
| | | wkshopcode: '', |
| | | wkshopcode: [], |
| | | mesorderstus: '', // 工单状态码 |
| | | mesordercode: '', // 工单编号 |
| | | partcode: '', // 产品编码 |
| | |
| | | // { code: 'CREATED', name: '已关闭' } |
| | | // { code: 'ALLO', name: '已派发' } |
| | | // 已关闭:CLOSED 未关闭:NOCLOSED |
| | | {code: 'NOCLOSED', name: '未关闭'}, |
| | | {code: 'CLOSED', name: '已关闭'} |
| | | { code: 'NOCLOSED', name: '未关闭' }, |
| | | { code: 'CLOSED', name: '已关闭' } |
| | | // { code: 'NOSCHED', name: '待排程' }, |
| | | // { code: 'SCHED', name: '已排程' } |
| | | ], |
| | |
| | | mesmaxqty: 0// 工单的最大值 |
| | | }, |
| | | ordertypeArr: [// 工单类型 |
| | | {code: 'PO', name: '标准工单'}, |
| | | {code: 'FO', name: '报废补单'} |
| | | { code: 'PO', name: '标准工单' }, |
| | | { code: 'FO', name: '报废补单' } |
| | | ], |
| | | partArr: [], // 产品信息 |
| | | wkshopArr: [], // 生产车间数组 |
| | | routeArr: [], // 工艺路线数组 |
| | | orderlevArr: [ |
| | | {code: 1, name: '特级'}, |
| | | {code: 2, name: '紧急'}, |
| | | {code: 3, name: '正常'} |
| | | { code: 1, name: '特级' }, |
| | | { code: 2, name: '紧急' }, |
| | | { code: 3, name: '正常' } |
| | | ], // 工单等级数组 |
| | | operation: '', |
| | | dialogFormRules: { |
| | | mesorderstus: [ |
| | | {required: true, message: '请选择订单状态', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择订单状态', trigger: ['blur', 'change'] } |
| | | ], |
| | | partcode: [ |
| | | {required: true, message: '请选择产品信息', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择产品信息', trigger: ['blur', 'change'] } |
| | | ], |
| | | mesordercode: [ |
| | | {required: true, validator: validateCode, trigger: ['blur', 'change']} |
| | | { required: true, validator: validateCode, trigger: ['blur', 'change'] } |
| | | ], |
| | | mesqty: [ |
| | | {required: true, message: '请输入工单数量', trigger: ['blur', 'change']} |
| | | { required: true, message: '请输入工单数量', trigger: ['blur', 'change'] } |
| | | ], |
| | | wkshopcode: [ |
| | | {required: true, message: '请选择生产车间', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择生产车间', trigger: ['blur', 'change'] } |
| | | ], |
| | | deliverydate: [ |
| | | {required: true, message: '请选择预计交付日期', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择预计交付日期', trigger: ['blur', 'change'] } |
| | | ], |
| | | planstartdate: [ |
| | | {required: true, message: '请选择开始时间', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择开始时间', trigger: ['blur', 'change'] } |
| | | ], |
| | | planenddate: [ |
| | | {required: true, message: '请选择结束时间', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择结束时间', trigger: ['blur', 'change'] } |
| | | ], |
| | | orderlev: [ |
| | | {required: true, message: '请选择工单等级', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择工单等级', trigger: ['blur', 'change'] } |
| | | ], |
| | | isAps: [ |
| | | {required: true, message: '请选择是否排程', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择是否排程', trigger: ['blur', 'change'] } |
| | | ], |
| | | bomId: [ |
| | | {required: true, message: '请选择物料清单', trigger: ['blur', 'change']} |
| | | { required: true, message: '请选择物料清单', trigger: ['blur', 'change'] } |
| | | ] |
| | | |
| | | }, |
| | |
| | | tableDataDetail: [], // 点击工单表的行 显示详细信息 |
| | | printSize: 0, |
| | | printSizeSelectArr: [// 宽*高 |
| | | {code: 0, name: '80*50'}, |
| | | {code: 1, name: '78*60'}, |
| | | {code: 2, name: '60*40'} |
| | | { code: 0, name: '80*50' }, |
| | | { code: 1, name: '78*60' }, |
| | | { code: 2, name: '60*40' } |
| | | // { code: 2, name: '50*60' }, |
| | | // { code: 3, name: '50*40' }, |
| | | // { code: 4, name: '50*80' }, |
| | |
| | | watch: { |
| | | 'stepSelectedValue': { |
| | | // deep: true, |
| | | handler: function (val) { |
| | | handler: function(val) { |
| | | // do something with the new and old value of stepSelectedValue |
| | | console.log(val, 1) |
| | | const arr = JSON.parse(JSON.stringify(this.stepTableData)) |
| | |
| | | const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0] |
| | | this.sortable = Sortable.create(el, { |
| | | ghostClass: 'sortable-ghost', // Class name for the drop placeholder, |
| | | setData: function (dataTransfer) { |
| | | setData: function(dataTransfer) { |
| | | // to avoid Firefox bug |
| | | // Detail see : https://github.com/RubaXa/Sortable/issues/1012 |
| | | dataTransfer.setData('Text', '') |
| | |
| | | } |
| | | }) |
| | | }, |
| | | tableRowClassName({row, rowIndex}) { |
| | | tableRowClassName({ row, rowIndex }) { |
| | | return 'custom-row' |
| | | }, |
| | | handleRequest() { |
| | |
| | | }) |
| | | }, |
| | | async getPrentOrganizationNoCompany() { |
| | | const {data: res} = await PrentOrganizationNoCompany() |
| | | const { data: res } = await PrentOrganizationNoCompany() |
| | | this.wkshopcodeArr = res |
| | | }, |
| | | async getMesOrderClosedSearch() { |
| | |
| | | // } |
| | | |
| | | const data = { |
| | | wkshopcode: this.form.wkshopcode, |
| | | wkshopcode: this.form.wkshopcode.join(','), |
| | | mesorderstus: this.form.mesorderstus, // 工单状态码 |
| | | mesordercode: this.form.mesordercode, // 工单编号 |
| | | partcode: this.form.partcode, // 产品编码 |
| | |
| | | this.total = res.count |
| | | |
| | | // this.form.createdate = tempDate |
| | | return {code: res.code} |
| | | return { code: res.code } |
| | | }, |
| | | async getSelect() { |
| | | // 获取产品信息 |
| | | const {data: res1} = await PartSelect() |
| | | const { data: res1 } = await PartSelect() |
| | | this.partArr = res1 |
| | | |
| | | // 获取组织 |
| | | const {data: res2} = await PrentOrganization() |
| | | const { data: res2 } = await PrentOrganization() |
| | | this.wkshopArr = res2 |
| | | |
| | | // 获取工序 |
| | | const {data: res3} = await StepData() |
| | | const { data: res3 } = await StepData() |
| | | this.stepSelectArr = res3 |
| | | }, |
| | | // 订单状态改变时 |
| | |
| | | this.form.mesorderstus = val |
| | | }, |
| | | // 排序改变时 |
| | | sortChange({column, prop, order}) { |
| | | sortChange({ column, prop, order }) { |
| | | if (order === 'descending') { |
| | | order = 'desc' |
| | | } else if (order === 'ascending') { |
| | |
| | | this.form.prop = prop |
| | | this.getMesOrderClosedSearch() |
| | | }, |
| | | sourceSortChange({column, prop, order}) { |
| | | sourceSortChange({ column, prop, order }) { |
| | | if (order === 'descending') { |
| | | order = 'desc' |
| | | } else if (order === 'ascending') { |
| | |
| | | |
| | | // 重置 |
| | | reset(val) { |
| | | this.form.wkshopcode = '' |
| | | this.form.wkshopcode = [] |
| | | this.form.mesorderstus = '' |
| | | this.form.mesordercode = '' |
| | | this.form.partcode = '' |
| | |
| | | }, |
| | | // 新增按钮 |
| | | async add(operation) { |
| | | const {data: res} = await AddMesOrderCodeSearch() |
| | | const { data: res } = await AddMesOrderCodeSearch() |
| | | this.dialogForm.mesordercode = res |
| | | this.operation = operation |
| | | this.dialogVisible = true |
| | |
| | | wocode: this.dialogForm.mesordercode, |
| | | data_sources: this.dialogForm.data_sources |
| | | } |
| | | const {data: res} = await UpdateMesOrderStepSearch(data) |
| | | const { data: res } = await UpdateMesOrderStepSearch(data) |
| | | this.dialogForm.mesmaxqty = res.canupdate_qty |
| | | this.stepTableData = res.stepdata |
| | | // res.stepdata.forEach(i => { |
| | |
| | | return this.$message.info('请先选择工艺路线!') |
| | | } |
| | | this.dialogVisibleSearch = true |
| | | const {data: res} = await SelectRouteStep({routecode: this.dialogForm.routecode}) |
| | | const { data: res } = await SelectRouteStep({ routecode: this.dialogForm.routecode }) |
| | | this.searchTableData = res |
| | | }, |
| | | dialogVisibleSearchBack() { |
| | |
| | | }, |
| | | // 补打生产入库条码 |
| | | async getProductInHouseLabCode(ordercode) { |
| | | const res = await ProductInHouseLabCode({ordercode}) |
| | | const res = await ProductInHouseLabCode({ ordercode }) |
| | | console.log(res) |
| | | this.isLastPrint = true |
| | | |
| | |
| | | this.dialogFormRoute.projectCode = row.partcode |
| | | this.dialogFormRoute.projectName = row.partname |
| | | this.dialogVisibleRoute = true |
| | | const {data: res} = await InventoryFileAssociationRoute({partcode: this.dialogFormRoute.projectCode}) |
| | | const { data: res } = await InventoryFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode }) |
| | | this.dialogFormRoute.routeOperationArr = res |
| | | |
| | | this.dialogFormRoute.routeOperationArr.forEach((item, index) => { |
| | |
| | | const data = [] |
| | | this.dialogFormRoute.routeOperationArr.forEach(item => { |
| | | if (item.isSelected2) { |
| | | data.push({code: item.code, name: item.name}) |
| | | data.push({ code: item.code, name: item.name }) |
| | | } |
| | | }) |
| | | |
| | |
| | | wocode: row.wo_code, |
| | | data_sources: row.data_sources |
| | | } |
| | | const {data: res} = await UpdateMesOrderStepSearch(data) |
| | | const { data: res } = await UpdateMesOrderStepSearch(data) |
| | | this.tableDataDetail = res.stepdata |
| | | }, |
| | | // 工序删除 |
| | |
| | | }, |
| | | printMe2StylePadding(val) { |
| | | if (val === 0) { |
| | | return {paddingLeft: '10px', paddingTop: '5px'} |
| | | return { paddingLeft: '10px', paddingTop: '5px' } |
| | | } |
| | | if (val === 5) { |
| | | return {paddingLeft: '15px', paddingTop: '7px'} |
| | | return { paddingLeft: '15px', paddingTop: '7px' } |
| | | } |
| | | }, |
| | | |