作业查询

This commit is contained in:
2023-08-02 17:45:15 +08:00
parent 30d9bcffc6
commit 502305d0d8
2 changed files with 165 additions and 201 deletions

View File

@@ -2,260 +2,189 @@
<div class="order-wraper">
<div class="search-confirm-wrap">
<div class="search-wrap">
<div class="search-item_2">
<div class="search-label">工单日期</div>
<div class="search-item">
<div class="search-label">仓库</div>
<div class="filter_input_wraper">
<el-select v-model="value1" filterable clearable placeholder="请选择">
<el-option
v-for="item in options1"
:key="item.stor_id"
:label="item.stor_name"
:value="item.stor_id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-label search-label_1">日期</div>
<div class="filter_input_wraper filter_input_wraper_1">
<el-date-picker
v-model="value1"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
v-model="date"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-label">设备</div>
<div class="search-label">业务类型</div>
<div class="filter_input_wraper">
<el-select v-model="value" filterable placeholder="请选择">
<el-option
v-for="item in options"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code">
</el-option>
</el-select>
<el-select v-model="value2" filterable clearable placeholder="请选择">
<el-option
v-for="item in options2"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-label">关键字</div>
<div class="search-label">物料</div>
<div class="filter_input_wraper">
<input type="text" class="filter-input filter-input_1" v-model="keyValue" placeholder="工单号、物料编码">
<i v-show="closeIcon1" class="iconfont close_icon" @click="clearData(1)"></i>
<input type="text" class="filter-input" v-model="val1">
</div>
</div>
<div class="search-item_2">
<button class="button button--primary" @click="getDatas">查询</button>
<button class="button button--primary" :class="{'button--defalut': pkId === ''}" :disabled="disabled1" @click="showDialog">残次品报工</button>
</div>
<div class="search-item">
<div class="search-label">载具号</div>
<div class="filter_input_wraper">
<input type="text" class="filter-input" v-model="val2">
</div>
</div>
<div class="search-item flexend">
<button class="button button--primary" @click="_outgetAll">查询</button>
<button class="button button--primary" :disabled="disabled1" :class="{'button--defalut': !pkId}" @click="_inconfirm">强制确认</button>
</div>
</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="7%">设备</th>
<th width="5%">状态</th>
<th width="9%">物料名称</th>
<th width="8%">物料规格</th>
<th width="5%">工序</th>
<th width="8%">工单数量</th>
<th width="8%">实际数量</th>
<th width="8%">报废数量</th>
<th width="8%">报修数量</th>
<th width="9%">开始时间</th>
<th width="9%">结束时间</th>
</tr>
<tr v-for="e in dataList" :key="e.workorder_id" :class="{'selected_icon': pkId === e.workorder_id}" @click="toRadio(e)">
<!-- <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>{{e.device_code}}</td>
<td>{{e.workorder_status_name}}</td>
<td>{{ e.material_name }}</td>
<td>{{e.material_spec}}</td>
<td>{{e.workprocedure_name}}</td>
<td>{{e.plan_qty}}</td>
<td>{{ e.real_qty }}</td>
<td>{{e.nok_qty}}</td>
<td>{{e.repare_qty}}</td>
<td>{{ e.realproducestart_date }}</td>
<td>{{ e.realproduceend_date }}</td>
</tr>
<thead>
<tr>
<th>序号</th>
<th></th>
<th>状态</th>
<th>类型</th>
<th>物料编号</th>
<th>物料名称</th>
<th>数量()</th>
<th>单重(g)</th>
<th>载具号</th>
<th>入库点</th>
<th>货位</th>
<!-- <th>创建时间</th>
<th>创建人</th> -->
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i" :class="{'selected_icon': pkId === e.bill_code}" @click="toRadio(e)">
<td>{{i + 1}}</td>
<td>{{e.bill_code}}</td>
<td v-if="e.bill_status === '10'">生成</td>
<td v-if="e.bill_status === '20'">分配中</td>
<td v-if="e.bill_status === '30'">分配完</td>
<td v-if="e.bill_status === '99'">完成</td>
<td v-if="e.bill_type === '0001'">生产入库</td>
<td v-if="e.bill_type === '0009'">手工入库</td>
<td>{{e.material_code}}</td>
<td>{{e.material_name}}</td>
<td>{{e.total_qty | numeric(3)}}</td>
<td>{{e.unit_weight | numeric(3)}}</td>
<td>{{e.storagevehicle_code}}</td>
<td>{{e.point_code}}</td>
<td>{{e.struct_code}}</td>
<!-- <td>{{e.create_time}}</td>
<td>{{e.create_name}}</td> -->
</tr>
</tbody>
</table>
</div>
<jxDialog
ref="child"
title="请输入数量"
@toSure="toSureDialog"
>
<div class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label">报废数量</div>
<div class="form_item__content">
<input type="number" class="form_item__input" v-model="nokQty">
</div>
</div>
<div class="form_item">
<div class="form_item__label">报修数量</div>
<div class="form_item__content">
<input type="number" class="form_item__input" v-model="repareQty">
</div>
</div>
</div>
</div>
</jxDialog>
</div>
</template>
</template>
<script>
import {dateFtt} from '@config/utils.js'
import jxDialog from '@components/dialog.vue'
import { deviceList, getTable, unqualReport, orderStatus } from '../../../config/getData2.js'
import { getBcpStor, getBillType, outgetAll, inconfirm } from '../../../config/getData1.js'
import {dateTimeFtt} from '@config/utils.js'
export default {
components: {
jxDialog
},
data () {
return {
value1: [new Date((new Date().getTime() - 24 * 60 * 60 * 1000)), new Date((new Date().getTime() + 24 * 60 * 60 * 1000))],
options: [],
value: '',
keyValue: '',
disabled1: false,
val1: '',
val2: '',
options1: [],
value1: '',
date: [new Date((new Date().getTime() - 6 * 24 * 60 * 60 * 1000)), new Date((new Date().getTime()))],
options2: [],
value2: '',
dataList: [],
pkId: '',
pkObj: {},
nokQty: '',
repareQty: '',
status: []
}
},
computed: {
closeIcon1 () {
return this.keyValue !== ''
}
},
watch: {
keyValue () {
this.debouncedgetDatas()
disabled1: false
}
},
created () {
this._deviceList()
this.debouncedgetDatas = this.debounce(this.getDatas, 500)
this._orderStatus()
this._getBcpStor()
this._getBillType()
this._outgetAll()
},
methods: {
debounce (fn, delay = 500) {
let timer = null
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, delay)
}
// 仓库下拉框
async _getBcpStor () {
let res = await getBcpStor()
this.options1 = [...res.data]
},
async _deviceList () {
let res = await deviceList()
if (res.code === 200) {
this.options = [...res.content]
}
// 单据类型下拉框
async _getBillType () {
let res = await getBillType()
this.options2 = [...res.data]
},
async _orderStatus () {
let res = await orderStatus()
this.status = [...res]
this.getDatas()
},
async getDatas () {
let res = await getTable(this.value, this.keyValue, this.value1 !== null ? dateFtt(this.value1[0]) : '', this.value1 !== null ? dateFtt(this.value1[1]) : '')
if (res.code === 200) {
res.content.map(el => {
this.status.map(e => {
if (e.value === Number(el.workorder_status)) {
this.$set(el, 'workorder_status_name', e.label)
}
})
})
this.dataList = [...res.content]
}
this.dataList = [...res.content]
},
clearData (e) {
switch (e) {
case 1:
this.keyValue = ''
break
}
// 查询
async _outgetAll () {
let res = await outgetAll(this.value1, this.date !== null ? dateTimeFtt(this.date[0]) : '', this.date !== null ? dateTimeFtt(this.date[1]) : '', this.value2, this.val1, this.val2)
this.dataList = [...res.data]
},
toRadio (e) {
this.pkId = this.pkId === e.workorder_id ? '' : e.workorder_id
this.pkObj = this.pkId === e.workorder_id ? e : {}
this.pkId = this.pkId === e.bill_code ? '' : e.bill_code
this.pkObj = this.pkId === e.bill_code ? e : {}
},
showDialog () {
if (!this.pkId) {
this.toast('请选择一行')
return
}
this.nokQty = ''
this.repareQty = ''
this.$refs.child.active = true
toSure () {
this.$router.push('/finishedinstore')
},
toSureDialog () {
this._unqualReport()
clear () {
this.value1 = ''
this.value2 = ''
this.pkId = ''
this.pkObj = {}
},
// 残次品报工
async _unqualReport () {
this.$refs.child.disabled = true
close () {
this.$router.push('/finishedinstore')
},
async _inconfirm () {
this.disabled1 = true
if (!this.pkId) {
this.toast('请选择一行')
this.disabled1 = false
return
}
try {
let res = await unqualReport(this.pkId, this.nokQty, this.repareQty)
let res = await inconfirm(this.pkObj)
this.toast(res.message)
this.disabled1 = false
this.pkId = ''
this.pkObj = {}
this.$refs.child.active = false
this.$refs.child.disabled = false
this.getDatas()
this._outgetAll()
} catch (e) {
this.disabled1 = false
this.$refs.child.active = false
this.$refs.child.disabled = false
}
}
}
}
</script>
<style lang="stylus" scoped>
.filter_item
&:nth-child(1)
width 37%
&:nth-child(2)
width calc(30% - 10px)
&:nth-child(3)
width calc(33% - 10px)
.filter-input_1
padding-right 30px
.close_icon
width 20px
height 20px
font-size 15px
line-height 20px
top 5px
right 10px
.search-item_2
margin-left 0
&:nth-child(4)
margin-left 2%
margin-right 0
.search-item
&:nth-child(2)
margin-left 2%
margin-right 0
.grid_wraper
<style lang="stylus" scoped>
.grid_wraper
height calc(100% - 1.1rem)
</style>
.filter_input_wraper_1
width calc(100% - 45px)
.search-label_1
width 45px
</style>