188 lines
6.0 KiB
Vue
188 lines
6.0 KiB
Vue
<template>
|
||
<div class="order-wraper">
|
||
<div class="wrap-filter-buttons">
|
||
<div class="wrap-filters">
|
||
<div class="filter_item">
|
||
<div class="filter_label">设备</div>
|
||
<div class="filter-input-wrap">
|
||
<el-select v-model="value" placeholder="请选择">
|
||
<el-option
|
||
v-for="item in options"
|
||
:key="item.device_code"
|
||
:label="item.device_name"
|
||
:value="item.device_code">
|
||
</el-option>
|
||
</el-select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap-buttons">
|
||
<button class="button button--primary" @click="getDatas">查询</button>
|
||
<button class="button button--primary" :class="{'button--defalut': pkId === ''}" :disabled="disabled1" @click="_openStart">开工</button>
|
||
<button class="button button--primary" :class="{'button--defalut': pkId === ''}" :disabled="disabled2" @click="_saveReport">报工</button>
|
||
<button class="button button--primary" :class="{'button--defalut': pkId === ''}" :disabled="disabled3" @click="showDialog">强制完成</button>
|
||
</div>
|
||
</div>
|
||
<div class="grid_wraper">
|
||
<table class="filter-table">
|
||
<tr>
|
||
<th width="4%"></th>
|
||
<th width="8%">工单日期</th>
|
||
<th width="8%">工单号</th>
|
||
<th width="10%">状态</th>
|
||
<th width="8%">设备</th>
|
||
<th width="10%">物料规格</th>
|
||
<th width="10%">工序</th>
|
||
<th width="10%">计划生产</th>
|
||
<th width="9%">待生产</th>
|
||
<th width="9%">已生产</th>
|
||
<th width="13%">开工时间</th>
|
||
</tr>
|
||
<tr v-for="e in dataList" :key="e.workorder_id">
|
||
<td>
|
||
<button class="iconfont select_icon" :class="{'selected_icon': pkId === e.workorder_id}" @click="toRadio(e)"></button>
|
||
</td>
|
||
<td>{{e.create_time}}</td>
|
||
<td>{{e.workorder_code}}</td>
|
||
<td>{{['创建','下发','生产中','暂停', '完成'][Number(e.workorder_status) - 1]}}</td>
|
||
<td>{{e.device_code}}</td>
|
||
<td>{{e.material_spec}}</td>
|
||
<td>{{e.workprocedure_name}}</td>
|
||
<td>{{e.plan_qty}}</td>
|
||
<td>{{ e.report_qty }}</td>
|
||
<td>{{ e.real_qty }}</td>
|
||
<td>{{ e.realproducestart_date }}</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<jxDialog
|
||
ref="child"
|
||
title="提示"
|
||
@toSure="toSureDialog"
|
||
>
|
||
<div class="form_wraper">当前操作为强制确认,确定继续操作吗?</div>
|
||
</jxDialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { deviceList, getTable, openStart, tofinish, saveReport } from '../../../config/getData2.js'
|
||
import jxDialog from '@components/dialog.vue'
|
||
import {accSubtract} from '@config/utils.js'
|
||
export default {
|
||
components: {
|
||
jxDialog
|
||
},
|
||
data () {
|
||
return {
|
||
options: [],
|
||
value: '',
|
||
disabled1: false,
|
||
disabled2: false,
|
||
disabled3: false,
|
||
dataList: [],
|
||
pkId: '',
|
||
pkObj: {}
|
||
}
|
||
},
|
||
created () {
|
||
this._deviceList()
|
||
},
|
||
methods: {
|
||
async _deviceList () {
|
||
let res = await deviceList()
|
||
if (res.code === 200) {
|
||
this.options = [...res.content]
|
||
}
|
||
},
|
||
async getDatas () {
|
||
let res = await getTable(this.value)
|
||
res.content.map(el => {
|
||
let qty = '0'
|
||
if (Number(accSubtract(el.plan_qty, el.real_qty)) > 0) {
|
||
qty = accSubtract(el.plan_qty, el.real_qty)
|
||
}
|
||
this.$set(el, 'report_qty', qty)
|
||
})
|
||
this.dataList = [...res.content]
|
||
},
|
||
// 开工
|
||
async _openStart () {
|
||
this.disabled1 = true
|
||
if (!this.pkId) {
|
||
this.toast('请选择一行')
|
||
this.disabled1 = false
|
||
return
|
||
}
|
||
try {
|
||
let res = await openStart(this.pkId, this.value)
|
||
this.toast(res.message)
|
||
this.disabled1 = false
|
||
this.pkId = ''
|
||
this.pkObj = {}
|
||
this.getDatas()
|
||
} catch (e) {
|
||
this.disabled1 = false
|
||
}
|
||
},
|
||
// 报工
|
||
async _saveReport () {
|
||
this.disabled2 = true
|
||
if (!this.pkId) {
|
||
this.toast('请选择一行')
|
||
this.disabled2 = false
|
||
return
|
||
}
|
||
try {
|
||
let res = await saveReport(this.pkId, this.pkObj.report_qty, this.pkObj.nok_qty, this.pkObj.repare_qty)
|
||
this.toast(res.message)
|
||
this.disabled2 = false
|
||
this.pkId = ''
|
||
this.pkObj = {}
|
||
this.getDatas()
|
||
} catch (e) {
|
||
this.disabled2 = false
|
||
}
|
||
},
|
||
showDialog () {
|
||
if (!this.pkId) {
|
||
this.toast('请选择一行')
|
||
return
|
||
}
|
||
this.$refs.child.active = true
|
||
},
|
||
// 完工
|
||
async _tofinish () {
|
||
this.$refs.child.disabled = true
|
||
this.disabled3 = true
|
||
try {
|
||
let res = await tofinish(this.pkObj)
|
||
this.toast(res.message)
|
||
this.disabled3 = false
|
||
this.$refs.child.active = false
|
||
this.$refs.child.disabled = false
|
||
this.getDatas()
|
||
} catch (e) {
|
||
this.disabled3 = false
|
||
this.$refs.child.active = false
|
||
this.$refs.child.disabled = false
|
||
}
|
||
},
|
||
toSureDialog () {
|
||
this._tofinish()
|
||
},
|
||
toRadio (e) {
|
||
this.pkId = this.pkId === e.workorder_id ? '' : e.workorder_id
|
||
this.pkObj = this.pkId === e.workorder_id ? e : {}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="stylus" scoped>
|
||
.filter_label
|
||
width 32px
|
||
.filter-input-wrap
|
||
width calc(100% - 32px)
|
||
</style>
|