工单作业
This commit is contained in:
130
src/pages/index.vue
Normal file
130
src/pages/index.vue
Normal file
@@ -0,0 +1,130 @@
|
||||
<template>
|
||||
<div class="contianer">
|
||||
<jxHeader title="工单明细"></jxHeader>
|
||||
<div class="contianer content">
|
||||
<div class="contianer content_wraper">
|
||||
<div class="zd-row filter_wraper">
|
||||
<div class="zd-col-6 zd-row">
|
||||
<div class="zd-col-6 filter-label">设备号</div>
|
||||
<div class="zd-col-17 filter-select">
|
||||
<el-select v-model="value" placeholder="请选择" @change="selectChange">
|
||||
<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 class="zd-col-18 zd-row jcflexend">
|
||||
<button class="button btn-primary" :class="{'btn-info': !pkId}" :disabled="disabled" @click="_startOrder">开始</button>
|
||||
<button class="button btn-primary mgl2" :class="{'btn-info': !pkId}" :disabled="disabled" @click="_forceFinish">强制完成</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contianer mgt2 grid_wraper">
|
||||
<table>
|
||||
<tr>
|
||||
<th>工单编码</th>
|
||||
<th>产品编号</th>
|
||||
<th>产品名称</th>
|
||||
<th>计划重量</th>
|
||||
<th>产线</th>
|
||||
<th>开工时间</th>
|
||||
<th>站点编码</th>
|
||||
<th>工单状态</th>
|
||||
</tr>
|
||||
<tr v-for="(e, i) in dataList" :key="i" :class="{'tr_selected': pkId === e.mfg_order_name}" @click="toCheck(e)">
|
||||
<td>{{ e.mfg_order_name }}</td>
|
||||
<td>{{ e.product_name }}</td>
|
||||
<td>{{ e.description }}</td>
|
||||
<td>{{ e.total_qty }}</td>
|
||||
<td>{{ e.resource_name }}</td>
|
||||
<td>{{ e.StartTime }}</td>
|
||||
<td>{{ e.point_code }}</td>
|
||||
<td>{{ e.status }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import jxHeader from '@components/header.vue'
|
||||
import {queryDevices, queryOrders, startOrder} from '@config/mork.js'
|
||||
import {forceFinish} from '@config/getData.js'
|
||||
export default {
|
||||
components: {
|
||||
jxHeader
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
timer: null,
|
||||
value: '',
|
||||
options: [],
|
||||
dataList: [],
|
||||
pkId: '',
|
||||
disabled: false
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this._queryDevices()
|
||||
},
|
||||
methods: {
|
||||
async _queryDevices () {
|
||||
let res = await queryDevices()
|
||||
this.options = [...res]
|
||||
},
|
||||
async _queryOrders (e) {
|
||||
let res = await queryOrders(e)
|
||||
this.dataList = [...res]
|
||||
},
|
||||
selectChange (e) {
|
||||
if (e) {
|
||||
this._queryOrders(e)
|
||||
}
|
||||
},
|
||||
toCheck (e) {
|
||||
this.pkId = this.pkId === e.mfg_order_name ? '' : e.mfg_order_name
|
||||
},
|
||||
async _startOrder () {
|
||||
this.disabled = true
|
||||
if (!this.pkId) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await startOrder(this.value, this.pkId)
|
||||
if (res.message) {
|
||||
this.$router.push('/task')
|
||||
}
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
async _forceFinish () {
|
||||
this.disabled = true
|
||||
if (!this.pkId) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await forceFinish(this.pkId)
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'success'
|
||||
})
|
||||
this.disabled = false
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
// @import '~@style/mixin'
|
||||
</style>
|
||||
70
src/pages/setup.vue
Normal file
70
src/pages/setup.vue
Normal file
@@ -0,0 +1,70 @@
|
||||
<template>
|
||||
<div class="zd-row jccenter contianer">
|
||||
<div class="header-wrap"><h1>ACS</h1></div>
|
||||
<div class="setup-wrap">
|
||||
<div class="zd-row filter-item">
|
||||
<div class="zd-col-6 filter-label">域名地址</div>
|
||||
<input type="text" class="zd-col-18 filter-value" v-model="baseUrl">
|
||||
</div>
|
||||
<div class="zd-row filter-item">
|
||||
<div class="zd-col-6 filter-label">刷新时间(秒)</div>
|
||||
<input type="number" class="zd-col-18 filter-value" v-model="setTime">
|
||||
</div>
|
||||
<div class="zd-row jccenter button-wrap">
|
||||
<button class="button btn-primary" @click="_config">配置</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
baseUrl: this.$store.getters.baseUrl,
|
||||
setTime: this.$store.getters.setTime / 1000
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
_viewport () {
|
||||
this.viewportWidth = window.screen.width
|
||||
this.viewportHeight = window.screen.height
|
||||
},
|
||||
_config () {
|
||||
if (this.setTime < 0) {
|
||||
this.$message({
|
||||
message: '刷新时间设置过短',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (this.setTime > 10800) {
|
||||
this.$message({
|
||||
message: '刷新时间设置过长',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
let obj = {
|
||||
baseUrl: this.baseUrl,
|
||||
setTime: this.setTime * 1000
|
||||
}
|
||||
this.$store.dispatch('setConfig', obj)
|
||||
this.$router.push('/index')
|
||||
let element = document.documentElement
|
||||
if (!(document.fullscreenElement || document.mozFullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement)) {
|
||||
if (element.requestFullscreen) {
|
||||
element.requestFullscreen()
|
||||
} else if (element.webkitRequestFullScreen) {
|
||||
element.webkitRequestFullScreen()
|
||||
} else if (element.mozRequestFullScreen) {
|
||||
element.mozRequestFullScreen()
|
||||
} else if (element.msRequestFullscreen) {
|
||||
// IE11
|
||||
element.msRequestFullscreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
121
src/pages/task.vue
Normal file
121
src/pages/task.vue
Normal file
@@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<div class="contianer">
|
||||
<jxHeader type="false" title="配料作业"></jxHeader>
|
||||
<div class="contianer content">
|
||||
<div class="contianer content_wraper">
|
||||
<div class="contianer mgt2 grid_wraper">
|
||||
<table>
|
||||
<tr>
|
||||
<th>工单编码</th>
|
||||
<th>序号</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>产线</th>
|
||||
<th>站点编码</th>
|
||||
<th>配料桶数</th>
|
||||
<th>剩余桶数</th>
|
||||
<th>物料重量</th>
|
||||
<th>状态</th>
|
||||
<th style="text-align: center">操作</th>
|
||||
</tr>
|
||||
<tr v-for="(e, i) in dataList" :key="i">
|
||||
<td>{{ e.mfg_order_name }}</td>
|
||||
<td>{{ e.seq_no }}</td>
|
||||
<td>{{ e.material_code }}</td>
|
||||
<td>{{ e.material_name }}</td>
|
||||
<td>{{ e.resource_name }}</td>
|
||||
<td>{{ e.point_code }}</td>
|
||||
<td>{{ e.require_num }}</td>
|
||||
<td>{{ e.remain_num }}</td>
|
||||
<td>{{ e.qty }}</td>
|
||||
<td>{{ e.status }}</td>
|
||||
<td>
|
||||
<div class="zd-row btn_wraper">
|
||||
<button class="grid_button" :disabled="disabled" @click="_sendWork(e)">下发</button>
|
||||
<!-- <button class="grid_button" :disabled="disabled">执行中</button> -->
|
||||
<button class="grid_button" :disabled="disabled" @click="_reSendWork(e)">补发</button>
|
||||
<button class="grid_button" :disabled="disabled" @click="_finishWork(e)">完成</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import jxHeader from '@components/header.vue'
|
||||
import {queryWorks} from '@config/mork.js'
|
||||
import {sendWork, reSendWork, finishWork} from '@config/getData.js'
|
||||
export default {
|
||||
components: {
|
||||
jxHeader
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
timer: null,
|
||||
dataList: [],
|
||||
pkId: '',
|
||||
disabled: false
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this._queryWorks()
|
||||
},
|
||||
methods: {
|
||||
async _queryWorks () {
|
||||
let res = await queryWorks()
|
||||
this.dataList = [...res]
|
||||
},
|
||||
async _sendWork (e) {
|
||||
this.disabled = true
|
||||
try {
|
||||
let res = await sendWork(e.work_code)
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'success'
|
||||
})
|
||||
this.disabled = false
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
async _reSendWork (e) {
|
||||
this.disabled = true
|
||||
try {
|
||||
let res = await reSendWork(e.work_code)
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'success'
|
||||
})
|
||||
this.disabled = false
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
async _finishWork (e) {
|
||||
this.disabled = true
|
||||
try {
|
||||
let res = await finishWork(e.work_code)
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'success'
|
||||
})
|
||||
this.disabled = false
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
// @import '~@style/mixin'
|
||||
.grid_wraper
|
||||
height 100%
|
||||
.btn_wraper
|
||||
width 3.1rem
|
||||
</style>
|
||||
Reference in New Issue
Block a user