| | |
| | | <div class="bodyTopButtonGroup" style="justify-content: space-between"> |
| | | <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('send')">æ´¾å</el-button> |
| | | <el-button v-waves type="success" icon="el-icon-connection" @click="send">æ´¾å</el-button> |
| | | </div> |
| | | |
| | | <el-button v-waves icon="el-icon-switch-button" @click="orderClose">å
³éå·¥å</el-button> |
| | |
| | | :cell-style="this.$cellStyle" |
| | | @sort-change="sortChange" |
| | | @row-click="rowClick" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <!-- <el-table-column--> |
| | | <!-- type="selection"--> |
| | | <!-- width="50"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | type="selection" |
| | | width="50" |
| | | fixed |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-radio |
| | | v-model="radioSelected" |
| | | :label="row.wo_code" |
| | | style="color: transparent;padding-left: 10px;" |
| | | /> |
| | | <!-- @change.native="getCurrentRow(row.wo_code)"--> |
| | | </template> |
| | | </el-table-column> |
| | | :selectable="selected" |
| | | /> |
| | | <el-table-column |
| | | prop="rowNum" |
| | | width="50" |
| | |
| | | width="130" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderDeliveryDate">{{ row.saleOrderDeliveryDate.substring(0,11) }}</div> |
| | | <div v-if="row.saleOrderDeliveryDate">{{ row.saleOrderDeliveryDate.substring(0, 11) }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <template slot-scope="{row}"> |
| | | <div class="operationClass"> |
| | | <el-tooltip class="item" effect="dark" content="ä¿®æ¹" placement="top"> |
| | | <i class="el-icon-edit-outline" :style="{color:$store.state.settings.theme}" @click="edit(row)" /> |
| | | <i |
| | | class="el-icon-edit-outline" |
| | | :style="{color:$store.state.settings.theme}" |
| | | @click="edit('edit',row)" |
| | | /> |
| | | </el-tooltip> |
| | | |
| | | <el-tooltip v-del-tab-index class="item" effect="dark" content="å é¤" placement="top"> |
| | |
| | | </el-tooltip> |
| | | |
| | | <el-tooltip class="item" effect="dark" content="详æ
" placement="top"> |
| | | <i class="el-icon-view" style="cursor: pointer;" :style="{color:$store.state.settings.theme}" @click="view(row)" /> |
| | | <i |
| | | class="el-icon-view" |
| | | style="cursor: pointer;" |
| | | :style="{color:$store.state.settings.theme}" |
| | | @click="edit('view',row)" |
| | | /> |
| | | </el-tooltip> |
| | | |
| | | </div> |
| | |
| | | width="160" |
| | | /> |
| | | |
| | | <el-table-column |
| | | prop="partcode" |
| | | label="产åç¼ç " |
| | | width="150" |
| | | show-tooltip-when-overflow |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产ååç§°" |
| | | width="200" |
| | | show-tooltip-when-overflow |
| | | /> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partcode"--> |
| | | <!-- label="产åç¼ç "--> |
| | | <!-- width="150"--> |
| | | <!-- show-tooltip-when-overflow--> |
| | | <!-- />--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partname"--> |
| | | <!-- label="产ååç§°"--> |
| | | <!-- width="200"--> |
| | | <!-- show-tooltip-when-overflow--> |
| | | <!-- />--> |
| | | |
| | | <el-table-column |
| | | label="å·¥åºç¼ç " |
| | | prop="stepcode" |
| | | prop="step_code" |
| | | show-tooltip-when-overflow |
| | | width="150" |
| | | /> |
| | |
| | | width="150" |
| | | /> |
| | | <el-table-column |
| | | label="任塿°é" |
| | | label="å·²ç产æ°é" |
| | | show-tooltip-when-overflow |
| | | prop="plan_qty" |
| | | prop="produceq_qty" |
| | | /> |
| | | <el-table-column |
| | | label="åæ ¼æ°é" |
| | |
| | | prop="ng_qty" |
| | | /> |
| | | <el-table-column |
| | | label="æä½" |
| | | width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="operationClass"> |
| | | <el-tooltip class="item" effect="dark" content="æå°å·¥åº" placement="top"> |
| | | <i |
| | | v-if="tableDataDetail.length!==row.seq" |
| | | class="el-icon-printer" |
| | | :style="{color:$store.state.settings.theme}" |
| | | style="cursor: pointer;margin-right: 15px" |
| | | @click="supplementSmallClick(row)" |
| | | /> |
| | | </el-tooltip> |
| | | <el-tooltip class="item" effect="dark" content="è¡¥æç产å
¥åºæ¡ç " placement="top"> |
| | | <i |
| | | v-if="tableDataDetail.length===row.seq" |
| | | class=" el-icon-camera" |
| | | :style="{color:$store.state.settings.theme}" |
| | | style="cursor: pointer;margin-right: 15px" |
| | | @click="getProductInHouseLabCode(row.wo_code)" |
| | | /> |
| | | </el-tooltip> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | label="å·¥åºæ°é" |
| | | show-tooltip-when-overflow |
| | | prop="laborbad_qty" |
| | | /> |
| | | <el-table-column |
| | | label="æåºæ°é" |
| | | show-tooltip-when-overflow |
| | | prop="materielbad_qty" |
| | | /> |
| | | <el-table-column |
| | | label="å¾
产æ°é" |
| | | show-tooltip-when-overflow |
| | | prop="delive_qty" |
| | | /> |
| | | <!-- <el-table-column--> |
| | | <!-- label="æä½"--> |
| | | <!-- width="120"--> |
| | | <!-- fixed="right"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div class="operationClass">--> |
| | | <!-- <el-tooltip class="item" effect="dark" content="æå°å·¥åº" placement="top">--> |
| | | <!-- <i--> |
| | | <!-- v-if="tableDataDetail.length!==row.seq"--> |
| | | <!-- class="el-icon-printer"--> |
| | | <!-- :style="{color:$store.state.settings.theme}"--> |
| | | <!-- style="cursor: pointer;margin-right: 15px"--> |
| | | <!-- @click="supplementSmallClick(row)"--> |
| | | <!-- />--> |
| | | <!-- </el-tooltip>--> |
| | | <!-- <el-tooltip class="item" effect="dark" content="è¡¥æç产å
¥åºæ¡ç " placement="top">--> |
| | | <!-- <i--> |
| | | <!-- v-if="tableDataDetail.length===row.seq"--> |
| | | <!-- class=" el-icon-camera"--> |
| | | <!-- :style="{color:$store.state.settings.theme}"--> |
| | | <!-- style="cursor: pointer;margin-right: 15px"--> |
| | | <!-- @click="getProductInHouseLabCode(row.wo_code)"--> |
| | | <!-- />--> |
| | | <!-- </el-tooltip>--> |
| | | <!-- </div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | |
| | | <el-form-item label="工忰é" prop="mesqty"> |
| | | <el-input |
| | | v-model="dialogForm.mesqty" |
| | | oninput="value=value.replace(/[^0-9.]/g,'')" |
| | | :disabled="operation!=='add'" |
| | | oninput="value=value.replace(/[^\d]/g,'')" |
| | | style="width: 200px" |
| | | /> |
| | | <!-- oninput="value=value.replace(/[^0-9*.{1}0-9*]/g,'')"--> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-if="operation==='add'" |
| | | label="产ååç§°/ç¼ç " |
| | | prop="partcode" |
| | | > |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="operation!=='add'" label="产ååç§°" prop="partname"> |
| | | <el-input v-model="dialogForm.partname" disabled style="width: 200px" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="operation!=='add'" label="产åç¼ç "> |
| | | <el-input v-model="dialogForm.partcode" disabled style="width: 200px" /> |
| | | </el-form-item> |
| | | <!-- <el-form-item v-if="operation!=='add'" label="产ååç§°" prop="partname">--> |
| | | <!-- <el-input v-model="dialogForm.partname" disabled style="width: 200px" />--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item v-if="operation!=='add'" label="产åç¼ç ">--> |
| | | <!-- <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" 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 |
| | | v-model="dialogForm.wkshopcode" |
| | |
| | | :popper-append-to-body="false" |
| | | style="width: 200px;" |
| | | placeholder="è¯·éæ©è½¦é´" |
| | | :disabled="dialogForm.partcode===''" |
| | | @change="val=>wkshopcodeChange(val,dialogForm.partcode)" |
| | | > |
| | | <el-option |
| | | v-for="item in wkshopArr" |
| | |
| | | class="dateMini" |
| | | :picker-options="pickerOptions" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | /> |
| | | <!-- :disabled="dialogForm.deliverydate"--> |
| | | </el-form-item> |
| | | |
| | | <el-divider content-position="left">å·¥åºä¿¡æ¯</el-divider> |
| | | <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="addStep">æ°å¢</el-button> |
| | | |
| | | <div style="display: flex;align-items: center"> |
| | | <div style="font-weight: bolder">å·¥åºéæ©ï¼</div> |
| | | <el-drag-select |
| | | v-model="stepSelectedValue" |
| | | style="width:930px;" |
| | | multiple |
| | | placeholder="è¯·éæ©ç¸å¯¹åºå·¥åº" |
| | | @change="stepSelectedValueChange" |
| | | > |
| | | <el-option |
| | | v-for="item in stepSelectArr" |
| | | :key="item.stepcode" |
| | | :label="item.stepname" |
| | | :value="item.stepcode" |
| | | /> |
| | | </el-drag-select> |
| | | </div> |
| | | |
| | | <el-table |
| | | ref="stepTableDataRef" |
| | |
| | | row-key="stepcode" |
| | | > |
| | | <el-table-column |
| | | prop="seq" |
| | | type="index" |
| | | label="åºå·" |
| | | width="50" |
| | | /> |
| | |
| | | show-tooltip-when-overflow |
| | | /> |
| | | <el-table-column |
| | | prop="stepname" |
| | | prop="stepprice" |
| | | label="ç产åä»·" |
| | | show-tooltip-when-overflow |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-input |
| | | v-model="row.stepprice" |
| | | placeholder="请è¾å
¥å·¥åºåä»·" |
| | | oninput="value=value.replace(/[^0-9.]/g,'')" |
| | | style="width: 100%" |
| | | @click.stop="" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | width="120" |
| | |
| | | /> |
| | | <!-- </el-tooltip>--> |
| | | <!-- @click="edit('edit',row)"--> |
| | | |
| | | <el-tooltip v-del-tab-index class="item" effect="dark" content="å é¤" placement="top"> |
| | | <i |
| | | class="el-icon-delete" |
| | | :style="{color:$store.state.settings.theme}" |
| | | style="margin-left: 15px;" |
| | | @click="stepDel(row)" |
| | | /> |
| | | </el-tooltip> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | </el-form> |
| | | <div style="display: flex;justify-content: flex-end"> |
| | | {{ routeStepArr }} |
| | | </div> |
| | | |
| | | <!-- å·¥èºè·¯çº¿æ¾å¤§éå¯¹è¯æ¡--> |
| | | <el-dialog |
| | | title="å·¥èºè·¯çº¿" |
| | | :visible.sync="dialogVisibleSearch" |
| | | width="840px" |
| | | top="20vh" |
| | | class="dialogVisibleSearch" |
| | | append-to-body |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-table |
| | | :data="searchTableData" |
| | | border |
| | | :row-class-name="tableRowClassName" |
| | | height="300" |
| | | style="width: 100%;" |
| | | highlight-current-row |
| | | :header-cell-style="this.$headerCellStyle" |
| | | :cell-style="this.$cellStyle" |
| | | > |
| | | <el-table-column |
| | | prop="seq" |
| | | label="åºå·" |
| | | width="50" |
| | | fixed |
| | | /> |
| | | <el-table-column |
| | | prop="stepcode" |
| | | show-tooltip-when-overflow |
| | | label="å·¥åºç¼ç " |
| | | /> |
| | | <el-table-column |
| | | prop="stepname" |
| | | label="å·¥åºåç§°" |
| | | show-tooltip-when-overflow |
| | | /> |
| | | <el-table-column |
| | | prop="flwtype" |
| | | label="å·¥åºç±»å" |
| | | show-tooltip-when-overflow |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.flwtype==='W'">å¤å</div> |
| | | <div v-if="row.flwtype==='Z'">èªå¶</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="descr" |
| | | label="å·¥åºæè¿°" |
| | | show-tooltip-when-overflow |
| | | fixed="right" |
| | | /> |
| | | </el-table> |
| | | </el-dialog> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <div class="footerButton"> |
| | | <el-button v-waves @click="dialogVisibleCancel">å æ¶</el-button> |
| | | <!-- <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirmPreview('add')">é¢è§</el-button>--> |
| | | |
| | | <el-button |
| | | v-if="!submitButtonIsDisabled" |
| | | v-if="operation!=='view'" |
| | | v-waves |
| | | type="primary" |
| | | :loading="$store.state.app.buttonIsDisabled" |
| | | :disabled="$store.state.app.buttonIsDisabled" |
| | | @click="dialogVisibleConfirm" |
| | | >ç¡® å®</el-button> |
| | | |
| | | <el-button |
| | | v-if="submitButtonIsDisabled" |
| | | v-waves |
| | | type="primary" |
| | | disabled |
| | | @click="dialogVisibleConfirm" |
| | | >ç¡® å®</el-button> |
| | | </div> |
| | |
| | | import $ from 'jquery' |
| | | import elDragDialog from '@/directive/el-drag-dialog' |
| | | import waves from '@/directive/waves' |
| | | import { AddMesOrderCodeSearch, MesBadOrderSearch, MesOrderSearch } from '@/api/WorkOrder' |
| | | import { |
| | | AddMesOrderCodeSearch, |
| | | AddUpdateMesOrder, DeleteMesOrder, |
| | | MesBadOrderSearch, MesOrderDistribution, |
| | | MesOrderSearch, |
| | | UpdateMesOrderStepSearch |
| | | } from '@/api/WorkOrder' |
| | | import { PartSelect } from '@/api/ProductModel' |
| | | import { PrentOrganization } from '@/api/GeneralBasicData' |
| | | import { PrentOrganization, StepData } from '@/api/GeneralBasicData' |
| | | import Sortable from 'sortablejs' |
| | | import ElDragSelect from '@/components/DragSelect' // base on element-ui |
| | | |
| | | export default { |
| | | name: 'GD', |
| | | name: 'WorkOrderList', |
| | | components: { |
| | | Pagination |
| | | Pagination, ElDragSelect |
| | | }, |
| | | directives: { elDragDialog, waves }, |
| | | data() { |
| | |
| | | { code: 'SCHED', name: 'å·²æç¨' } |
| | | ], |
| | | total: 10, |
| | | radioSelected: '', |
| | | tableData: [], |
| | | dialogVisible: false, |
| | | dialogForm: { |
| | |
| | | wkshopname: '', // ç产车é´åç§° |
| | | |
| | | deliverydate: '', // äº¤ä»æ¶é´ |
| | | data_sources: '', // æ°æ®æ¥æº |
| | | |
| | | OperType: '' // æä½ç±»å |
| | | data_sources: '' // æ°æ®æ¥æº |
| | | }, |
| | | bomIdArr: [], // ç©ææ¸
å䏿 |
| | | ordertypeArr: [// å·¥åç±»å |
| | | { code: 'PO', name: 'æ åå·¥å' }, |
| | | { code: 'FO', name: 'æ¥åºè¡¥å' } |
| | |
| | | dialogVisibleSource: false, |
| | | sourceTableData: [], |
| | | sourceForm: { |
| | | mesordercode: '', // 订åç¶æç |
| | | sourceorder: '', // å·¥åç¼å· |
| | | mesordercode: '', // å·¥åç¼å· |
| | | sourceorder: '', // 订åç¼å· |
| | | saleordercode: '', // éå®è®¢åå· |
| | | partcode: '', // 产åç¼ç |
| | | partname: '', // 产ååç§° |
| | | partspec: '', // 产åè§æ ¼ |
| | |
| | | return time.getTime() < Date.now() - 8.64e7 |
| | | } |
| | | }, |
| | | submitButtonIsDisabled: false, |
| | | |
| | | isLastPrint: false, // æ¯å¦æ¯æ«éæå° |
| | | lastPrintArr: [], // æ«éæå°çæ°ç»(ææ) |
| | |
| | | |
| | | routeStepArr: '', |
| | | |
| | | stepTableData: [ |
| | | { stepcode: '001' }, |
| | | { stepcode: '002' }, |
| | | { stepcode: '003' }, |
| | | { stepcode: '004' }, |
| | | { stepcode: '005' } |
| | | ], |
| | | sortable: null |
| | | stepTableData: [], |
| | | sortable: null, |
| | | stepSelectArr: [], // å·¥åºä¸ææ°æ® |
| | | stepSelectedValue: [], // 䏿éä¸å¼ |
| | | |
| | | multipleSelection: [] |
| | | } |
| | | }, |
| | | watch: { |
| | | 'stepSelectedValue': { |
| | | // deep: true, |
| | | 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 arrStepcode = arr.map(i => i.stepcode) |
| | | this.stepTableData = [] |
| | | val.forEach(i => { |
| | | this.stepTableData.push( |
| | | { |
| | | stepcode: i, |
| | | stepname: this.stepSelectArr.find(j => j.stepcode === i).stepname, |
| | | stepprice: arrStepcode.includes(i) ? arr.find(j => j.stepcode === i).stepprice : 0 |
| | | } |
| | | ) |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | const targetRow = this.stepTableData.splice(evt.oldIndex, 1)[0] |
| | | this.stepTableData.splice(evt.newIndex, 0, targetRow) |
| | | |
| | | this.stepSelectedValue = this.stepTableData.map(i => i.stepcode) |
| | | // for show the changes, you can delete in you code |
| | | // const tempIndex = this.newList.splice(evt.oldIndex, 1)[0] |
| | | // this.newList.splice(evt.newIndex, 0, tempIndex) |
| | |
| | | // è·åç»ç» |
| | | const { data: res2 } = await PrentOrganization() |
| | | this.wkshopArr = res2 |
| | | |
| | | // è·åå·¥åº |
| | | const { data: res3 } = await StepData() |
| | | this.stepSelectArr = res3 |
| | | }, |
| | | // 订åç¶ææ¹åæ¶ |
| | | erporderstusChange(val) { |
| | |
| | | this.form.createdate = '' |
| | | this.getMesOrderSearch() |
| | | }, |
| | | // åéæ¡éä¸è·åå½åè¡ä¿¡æ¯ |
| | | getCurrentRow(wo_code) { |
| | | this.radioSelected = wo_code |
| | | }, |
| | | // æ°å¢æé® |
| | | async add(operation) { |
| | | const { data: res } = await AddMesOrderCodeSearch() |
| | | this.dialogForm.mesordercode = res |
| | | this.operation = operation |
| | | this.dialogVisible = true |
| | | this.dialogForm.planstartdate = handleDatetime(new Date()) |
| | | this.dialogForm.planenddate = handleDatetime(new Date()) |
| | | this.dialogForm.orderlev = 3 |
| | | this.dialogForm.data_sources = 'MES' |
| | | |
| | | this.$nextTick(() => { |
| | | this.setSort() |
| | | }) |
| | | }, |
| | | // 产åä¿¡æ¯å¼æ¹å |
| | | async partcodeChange(val) { |
| | | const { data: res } = await RouteSelectWkshop({ partcode: val }) |
| | | this.wkshopArr = res |
| | | |
| | | // this.dialogForm.wkshopcode=res.length === 1?res[0].org_code:'' |
| | | if (res.length === 1) { |
| | | this.dialogForm.wkshopcode = res[0].org_code |
| | | await this.wkshopcodeChange(res[0].org_code, val) |
| | | } else { |
| | | this.dialogForm.wkshopcode = '' |
| | | } |
| | | |
| | | // this.routeArr = res |
| | | |
| | | // let flag = false |
| | | // this.routeArr.forEach(item => { |
| | | // if (item.code === item.default_route) { |
| | | // this.dialogForm.routecode = item.code |
| | | // // this.routecodeChange(this.dialogForm.routecode) |
| | | // this.wkshopcodeChange(this.dialogForm.routecode) |
| | | // flag = true |
| | | // } |
| | | // }) |
| | | // if (!flag) { |
| | | // this.dialogForm.routecode = '' |
| | | // } |
| | | // |
| | | // this.dialogForm.wkshopcode = '' |
| | | // |
| | | // this.submitButtonIsDisabled = false |
| | | }, |
| | | // å·¥èºè·¯çº¿å¼æ¹å |
| | | async routecodeChange() { |
| | | const data = { |
| | | partcode: this.dialogForm.partcode, |
| | | routecode: this.dialogForm.routecode, |
| | | wkshopcode: this.dialogForm.wkshopcode |
| | | } |
| | | await SelectRouteOrWkshop(data).then((res) => { |
| | | console.log(res, 1) |
| | | |
| | | SelectRouteStep({ routecode: this.dialogForm.routecode }).then(res2 => { |
| | | console.log(res2) |
| | | this.routeStepArr = res2.data.map(i => i.stepname).join('ï¼') |
| | | }) |
| | | |
| | | this.submitButtonIsDisabled = false |
| | | }).catch(err => { |
| | | // console.log(err, 2) |
| | | this.submitButtonIsDisabled = true |
| | | }) |
| | | }, |
| | | // ç产车é´å¼æ¹åæ¶ |
| | | async wkshopcodeChange(wkshopcode, partcode) { |
| | | const data = { |
| | | partcode, |
| | | wkshopcode |
| | | } |
| | | |
| | | const { data: res } = await PartSelectRoute(data) |
| | | this.routeArr = res |
| | | |
| | | if (res.length === 1) { |
| | | this.dialogForm.routecode = res[0].code |
| | | await this.routecodeChange() |
| | | } else { |
| | | this.dialogForm.routecode = '' |
| | | } |
| | | |
| | | // const data = { |
| | | // partcode: this.dialogForm.partcode, |
| | | // routecode: this.dialogForm.routecode, |
| | | // wkshopcode: val |
| | | // } |
| | | // SelectRouteOrWkshop(data).then((res) => { |
| | | // |
| | | // }).catch(err => { |
| | | // this.submitButtonIsDisabled = true |
| | | // }) |
| | | }, |
| | | |
| | | // æ¯å¦æç¨å¼æ¹åæ¶ |
| | | changeIsAps(val) { |
| | | if (val === 'N') { |
| | | this.dialogForm.bomId = '' |
| | | } |
| | | if (val === 'Y') { |
| | | JobCreationSonAddVison({ partnumber: this.dialogForm.partcode }).then(res => { |
| | | this.bomIdArr = res.data |
| | | this.dialogForm.bomId = this.bomIdArr[0].id |
| | | }) |
| | | } |
| | | }, |
| | | // å·¥åºä»»å¡ |
| | | async check(row) { |
| | |
| | | dialogVisibleBack() { |
| | | this.dialogVisibleTask = false |
| | | }, |
| | | handleSelectionChange(val) { |
| | | this.multipleSelection = val.map(i => i.wo_code) |
| | | }, |
| | | |
| | | selected(row, index) { |
| | | // && row.isstep === 'Y' |
| | | if (row.status === 'NEW') { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | // æ´¾å |
| | | send(operation) { |
| | | if (this.radioSelected.length < 1) { |
| | | return this.$message.info('请å
鿩工åï¼') |
| | | } |
| | | |
| | | const row = this.tableData.find(item => item.wo_code === this.radioSelected) |
| | | |
| | | if (row.status !== 'NEW') { |
| | | return this.$message.info('æ¤å·¥åä¸ºéæ°å·¥åç¶æï¼ä¸å¯æ´¾åï¼') |
| | | } |
| | | this.operation = operation |
| | | this.dialogVisible = true |
| | | this.$nextTick(() => { |
| | | this.dialogForm.mesorderstus = row.status |
| | | this.dialogForm.mesordercode = row.wo_code |
| | | this.dialogForm.partcode = row.partcode |
| | | this.partcodeChange(row.partcode) |
| | | this.dialogForm.partname = row.partname |
| | | this.dialogForm.mesqty = row.plan_qty |
| | | this.dialogForm.partspec = row.partspec |
| | | this.dialogForm.sourceorder = row.m_po |
| | | this.dialogForm.ordertype = row.wotype |
| | | |
| | | // this.routecodeChange(this.dialogForm.routecode) |
| | | |
| | | this.dialogForm.planstartdate = row.plan_startdate !== null ? row.plan_startdate : handleDatetime(new Date()) |
| | | this.dialogForm.planenddate = row.plan_enddate !== null ? row.plan_enddate : handleDatetime(new Date()) |
| | | this.dialogForm.orderlev = row.piroque !== null ? row.piroque : 3 // ç级 |
| | | send() { |
| | | this.$confirm('æ¯å¦ç¡®è®¤æ´¾å?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | MesOrderDistribution(this.multipleSelection).then(res => { |
| | | if (res.code === '200') { |
| | | this.$notify.success('æ´¾åæå!') |
| | | if (this.form.page > 1 && this.tableData.length === 1) { |
| | | this.form.page-- |
| | | } |
| | | this.getMesOrderSearch() |
| | | } |
| | | }) |
| | | }).catch(() => { |
| | | this.$notify.info('å·²åæ¶æ´¾å') |
| | | }) |
| | | }, |
| | | // å é¤æé® |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | console.log(row, 1) |
| | | const data = { |
| | | souceid: row.sourceid ? row.sourceid : '', |
| | | wocode: row.wo_code, |
| | |
| | | } |
| | | DeleteMesOrder(data).then(res => { |
| | | if (res.code === '200') { |
| | | this.$message.success('å 餿å!') |
| | | this.$notify.success('å 餿å!') |
| | | if (this.form.page > 1 && this.tableData.length === 1) { |
| | | this.form.page-- |
| | | } |
| | |
| | | } |
| | | }) |
| | | }).catch(() => { |
| | | this.$message.info('已忶å é¤') |
| | | this.$notify.info('已忶å é¤') |
| | | }) |
| | | }, |
| | | |
| | | // ä¿®æ¹æé® |
| | | edit() { |
| | | async edit(operation, row) { |
| | | this.operation = operation |
| | | |
| | | this.dialogForm.data_sources = row.data_sources |
| | | this.dialogForm.mesorderstus = row.status |
| | | this.dialogForm.mesordercode = row.wo_code |
| | | this.dialogForm.ordertype = row.wotype |
| | | this.dialogForm.sourceorderid = row.sourceid |
| | | this.dialogForm.sourceorder = row.m_po |
| | | this.dialogForm.partcode = row.partcode |
| | | this.dialogForm.partname = row.partname |
| | | this.dialogForm.partspec = row.partspec |
| | | this.dialogForm.wkshopcode = row.wkshp_code |
| | | this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11) |
| | | |
| | | const data = { |
| | | sourceid: this.dialogForm.sourceorderid, |
| | | sourcewo: this.dialogForm.sourceorder, |
| | | wocode: this.dialogForm.mesordercode, |
| | | data_sources: this.dialogForm.data_sources |
| | | } |
| | | const { data: res } = await UpdateMesOrderStepSearch(data) |
| | | this.dialogForm.mesqty = res.canupdate_qty |
| | | res.stepdata.forEach(i => { |
| | | this.stepTableData.push( |
| | | { |
| | | stepcode: i.step_code, |
| | | stepname: i.stepname, |
| | | stepprice: i.stepprice |
| | | } |
| | | ) |
| | | }) |
| | | this.stepSelectedValue = this.stepTableData.map(i => i.stepcode) |
| | | |
| | | this.dialogVisible = true |
| | | }, |
| | | // å·¥åå
³éäºä»¶ |
| | | orderClose() { |
| | | if (this.radioSelected.length < 1) { |
| | | return this.$message.info('请å
鿩工åï¼') |
| | | } |
| | | console.log('å·¥åå
³éäºä»¶') |
| | | this.tableData.forEach(item => { |
| | | if (item.wo_code === this.radioSelected) { |
| | | if (item.status === 'START') { |
| | | return this.$message.info('å½åå·¥åæªå®å·¥ï¼æ æ³å
³éï¼') |
| | | } else if (item.status === 'CLOSED') { |
| | | return this.$message.info('å·¥åå·²å
³éï¼æ éåå
³éï¼') |
| | | } else { |
| | | this.$confirm('æ¯å¦ç¡®è®¤å
³éå·¥å?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | const data = { |
| | | wocode: item.wo_code, |
| | | m_po: item.m_po |
| | | } |
| | | ClosedMesOrder(data).then(res => { |
| | | if (res.code === '200') { |
| | | this.$message.success('å·¥åå
³éæå!') |
| | | this.getMesOrderSearch() |
| | | // this.radioSelected = '' |
| | | } |
| | | }) |
| | | }).catch(() => { |
| | | this.$message.info('已忶å
³éï¼') |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // å¯¹è¯æ¡äº§åä¿¡æ¯å¼æ¹å |
| | | partcodeChangeDialog(val) { |
| | |
| | | this.dialogForm.partname = this.partArr.find(item => item.partcode === val).partname |
| | | this.dialogForm.partcode = this.partArr.find(item => item.partcode === val).partcode |
| | | this.dialogForm.partspec = this.partArr.find(item => item.partcode === val).partspec |
| | | |
| | | // this.partcodeChange(val) |
| | | }, |
| | | // å¯¹è¯æ¡å
³éäºä»¶ |
| | | handleClose() { |
| | | this.routeStepArr = '' |
| | | this.dialogForm.partname = '' // 产ååç§° |
| | | this.dialogForm.partspec = '' // 产åè§æ ¼ |
| | | this.dialogForm.wkshopname = '' // ç产车é´åç§° |
| | | this.dialogForm.routename = '' // å·¥èºè·¯çº¿åç§° |
| | | this.dialogForm = { |
| | | mesorderstus: 'NEW', // å·¥åç¶æç |
| | | mesordercode: '', // å·¥åç¼å· |
| | | ordertype: 'PO', // å·¥åç±»å |
| | | sourceorderid: '', // æºåid |
| | | sourceorder: '', // æºååå· |
| | | |
| | | this.dialogForm.mesorderstus = 'NEW' // å·¥åç¶æç |
| | | this.dialogForm.mesordercode = '' // å·¥åç¼å· |
| | | this.dialogForm.partcode = '' // 产åç¼ç |
| | | this.dialogForm.mesqty = '' // 工忰é |
| | | partcode: '', // 产åç¼ç |
| | | partname: '', // 产ååç§° |
| | | partspec: '', // 产åè§æ ¼ |
| | | |
| | | this.dialogForm.ordertype = 'PO' // å·¥åç±»å |
| | | this.dialogForm.sourceorder = '' // æºååå· |
| | | mesqty: '', // 工忰é |
| | | wkshopcode: '', // ç产车é´ç¼ç |
| | | wkshopname: '', // ç产车é´åç§° |
| | | |
| | | this.dialogForm.routecode = '' // å·¥èºè·¯çº¿ç¼ç |
| | | this.dialogForm.wkshopcode = '' // ç产车é´ç¼ç |
| | | this.dialogForm.planstartdate = '' // 计åå¼å§æ¶é´ |
| | | this.dialogForm.planenddate = '' // 计å宿æ¶é´ |
| | | this.dialogForm.orderlev = '' // å·¥åç级 |
| | | this.dialogForm.isAps = 'N' // æ¯å¦æç¨ |
| | | this.dialogForm.bomId = '' |
| | | |
| | | this.bomIdArr = [] |
| | | deliverydate: '', // äº¤ä»æ¶é´ |
| | | data_sources: '' // æ°æ®æ¥æº |
| | | } |
| | | this.stepSelectedValue = [] |
| | | this.stepTableData = [] |
| | | this.$refs.dialogForm.clearValidate() |
| | | this.submitButtonIsDisabled = false |
| | | }, |
| | | // å¯¹è¯æ¡åæ¶ |
| | | dialogVisibleCancel() { |
| | |
| | | return this.$message.info('æºååå·ä¸è½ä¸ºç©ºï¼') |
| | | } |
| | | |
| | | const data = { |
| | | // partname: this.dialogForm.partname, // 产ååç§° |
| | | // partspec: this.dialogForm.partspec, // 产åè§æ ¼ |
| | | // wkshopname: this.dialogForm.wkshopname, // ç产车é´åç§° |
| | | // routename: this.dialogForm.routename, // å·¥èºè·¯çº¿åç§° |
| | | const workListSub = [] |
| | | this.stepTableData.forEach((i, j) => { |
| | | workListSub.push( |
| | | { |
| | | stepseq: j + 1, |
| | | stepcode: i.stepcode, |
| | | stepprice: i.stepprice, |
| | | isbott: j === 0 ? 'Y' : 'N', |
| | | isend: j === this.stepTableData.length - 1 ? 'Y' : 'N' |
| | | } |
| | | ) |
| | | }) |
| | | |
| | | mesorderstus: this.dialogForm.mesorderstus, // å·¥åç¶æç |
| | | mesordercode: this.dialogForm.mesordercode, // å·¥åç¼å· |
| | | partcode: this.dialogForm.partcode, // 产åç¼ç |
| | | mesqty: this.dialogForm.mesqty, // 工忰é |
| | | ordertype: this.dialogForm.ordertype, // åæ®ç±»å |
| | | sourceorder: this.dialogForm.sourceorder, // æºååå· |
| | | routecode: this.dialogForm.routecode, // å·¥èºè·¯çº¿ç¼ç |
| | | wkshopcode: this.dialogForm.wkshopcode, // ç产车é´ç¼ç |
| | | planstartdate: this.dialogForm.planstartdate, // 计åå¼å§æ¶é´ |
| | | planenddate: this.dialogForm.planenddate, // 计å宿æ¶é´ |
| | | orderlev: this.dialogForm.orderlev, // å·¥åç级 |
| | | is_aps: this.dialogForm.isAps, // æ¯å¦æç¨ |
| | | bom_id: this.dialogForm.bomId, // ç©ææ¸
åid |
| | | OperType: this.operation === 'add' ? 'Add' : 'Update' |
| | | const data = { |
| | | wostatus: this.dialogForm.mesorderstus, // å·¥åç¶æ |
| | | wocode: this.dialogForm.mesordercode, // å·¥åå· |
| | | wotype: this.dialogForm.ordertype, // å·¥åç±»å |
| | | sourceid: this.dialogForm.sourceorderid, // æºåid |
| | | sourcewo: this.dialogForm.sourceorder, // æºååå· |
| | | partcode: this.dialogForm.partcode, // 产åç¼å· |
| | | wkshopcode: this.dialogForm.wkshopcode, |
| | | woqty: this.dialogForm.mesqty, // 工忰é |
| | | deliverydate: this.dialogForm.deliverydate, // äº¤ä»æ¶é´ |
| | | data_sources: this.dialogForm.data_sources, // æ°æ®æ¥æº |
| | | isstep: workListSub.length > 0 ? 'Y' : 'N', // |
| | | workListSub |
| | | } |
| | | |
| | | this.$store.state.app.buttonIsDisabled = true |
| | | AddUpdateMesOrder(data).then(res => { |
| | | AddUpdateMesOrder(data, this.operation === 'add' ? 'Add' : 'Update').then(res => { |
| | | if (res.code === '200') { |
| | | this.dialogVisible = false |
| | | |
| | | this.handlePrint() |
| | | |
| | | // this.handlePrint() |
| | | this.$message.success(this.operation === 'add' ? 'æ·»å æåï¼' : 'æ´¾åæåï¼') |
| | | // this.dialogVisible = false |
| | | this.getMesOrderSearch() |
| | | this.$store.state.app.buttonIsDisabled = false |
| | | } else { |
| | |
| | | } |
| | | |
| | | const data = { |
| | | mesordercode: this.sourceForm.mesordercode, // 订åç¶æç |
| | | sourceorder: this.sourceForm.sourceorder, // å·¥åç¼å· |
| | | mesordercode: this.sourceForm.mesordercode, // å·¥åç¼å· |
| | | sourceorder: this.sourceForm.sourceorder, // 订å订åå· |
| | | saleordercode: this.sourceForm.sourceorder, // 订å订åå· |
| | | partcode: this.sourceForm.partcode, // 产åç¼ç |
| | | partname: this.sourceForm.partname, // 产ååç§° |
| | | partspec: this.sourceForm.partspec, // 产åè§æ ¼ |
| | |
| | | } |
| | | }) |
| | | this.dialogVisibleSource = false |
| | | this.partcodeChange(this.dialogForm.partcode) |
| | | }, |
| | | mesordertypeChange(val) { |
| | | if (val === 'PO') { |
| | |
| | | }, |
| | | // è¡ç¹å»äºä»¶ |
| | | async rowClick(row, event, column) { |
| | | this.radioSelected = row.wo_code ? row.wo_code : this.radioSelected |
| | | const { data: res } = await SearchWorkStep({ wo_code: this.radioSelected, storg_code: this.$store.state.settings.orgType === 'W' ? (this.switchButton ? '' : getCookie('stu_torgcode')) : '' }) |
| | | this.tableDataDetail = res |
| | | const data = { |
| | | sourceid: row.sourceid, |
| | | sourcewo: row.m_po, |
| | | wocode: row.wo_code, |
| | | data_sources: row.data_sources |
| | | } |
| | | const { data: res } = await UpdateMesOrderStepSearch(data) |
| | | this.tableDataDetail = res.stepdata |
| | | }, |
| | | // å·¥åºå é¤ |
| | | stepDel(row) { |
| | | console.log(row) |
| | | const index = this.stepSelectedValue.findIndex(i => i === row.stepcode) |
| | | this.stepSelectedValue.splice(index, 1) |
| | | }, |
| | | // æå°å·¥å |
| | | printOrder() { |
| | |
| | | this.$forceUpdate() |
| | | }, 500) |
| | | }, |
| | | addStep() { |
| | | |
| | | stepSelectedValueChange(val) { |
| | | // console.log(val, 123) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | .sortable-ghost{ |
| | | .sortable-ghost { |
| | | opacity: .8; |
| | | color: #fff!important; |
| | | background: #42b983!important; |
| | | color: #fff !important; |
| | | background: #42b983 !important; |
| | | } |
| | | </style> |
| | | <style lang="scss" scoped> |