agv作业管理
This commit is contained in:
@@ -507,7 +507,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
,{
|
,{
|
||||||
"path" : "pages/zw/zygl",
|
"path" : "pages/zw/zygl-agv",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,{
|
||||||
|
"path" : "pages/zw/zygl-man",
|
||||||
"style" :
|
"style" :
|
||||||
{
|
{
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
{title: '解包管理', path: 'RF03', sonTree: [{title: '解包上料', path: '/pages/zw/jb-up-mater'}, {title: '解包出桶', path: '/pages/zw/jb-lower-mater'}, {title: '解包退料', path: '/pages/zw/jb-return-mater'}, {title: '人车安全', path: '/pages/zw/mancar-safe'}]},
|
{title: '解包管理', path: 'RF03', sonTree: [{title: '解包上料', path: '/pages/zw/jb-up-mater'}, {title: '解包出桶', path: '/pages/zw/jb-lower-mater'}, {title: '解包退料', path: '/pages/zw/jb-return-mater'}, {title: '人车安全', path: '/pages/zw/mancar-safe'}]},
|
||||||
{title: '缓存管理', path: 'RF06', sonTree: [{title: '料桶盘点', path: '/pages/zw/materbox-instore'}, {title: '物料入库', path: '/pages/zw/wlrk'}]},
|
{title: '缓存管理', path: 'RF06', sonTree: [{title: '料桶盘点', path: '/pages/zw/materbox-instore'}, {title: '物料入库', path: '/pages/zw/wlrk'}]},
|
||||||
{title: '产线管理', path: 'RF02', sonTree: [{title: '手工叫料', path: '/pages/zw/manual-callmater'}, {title: '手工退料', path: '/pages/zw/manual-returnmater'}]},
|
{title: '产线管理', path: 'RF02', sonTree: [{title: '手工叫料', path: '/pages/zw/manual-callmater'}, {title: '手工退料', path: '/pages/zw/manual-returnmater'}]},
|
||||||
{title: '作业管理', path: 'RF07', sonTree: [{title: '作业管理', path: '/pages/zw/zygl'}]},
|
{title: '作业管理', path: 'RF07', sonTree: [{title: 'AGV作业管理', path: '/pages/zw/zygl-agv'}, {title: '人工作业管理', path: '/pages/zw/zygl-man'}]},
|
||||||
// {title: '入库管理', path: 'RF01', sonTree: [{title: '物料组盘入库', path: '/pages/entry/mater-group-to-store'}, {title: '合格证入库', path: '/pages/entry/qualified-to-store'}, {title: '单据入库', path: '/pages/entry/bill-to-store'}, {title: '盘点入库', path: '/pages/entry/check-to-store'}, {title: '空托盘入库', path: '/pages/entry/empty-tray-to-store'}]},
|
// {title: '入库管理', path: 'RF01', sonTree: [{title: '物料组盘入库', path: '/pages/entry/mater-group-to-store'}, {title: '合格证入库', path: '/pages/entry/qualified-to-store'}, {title: '单据入库', path: '/pages/entry/bill-to-store'}, {title: '盘点入库', path: '/pages/entry/check-to-store'}, {title: '空托盘入库', path: '/pages/entry/empty-tray-to-store'}]},
|
||||||
// {title: '出库管理', path: 'RF02', sonTree: [{title: '空托盘出库', path: '/pages/outbound/tray-out-store'}, {title: '出库确认', path: '/pages/outbound/out-store-confirm'}, {title: '单据出库', path: '/pages/outbound/bill-list'}, {title: '盘点出库', path: '/pages/outbound/stock-out-store'}, {title: '物料出库', path: '/pages/outbound/mater-outstore'}, {title: '货架绑定', path: '/pages/outbound/shelf-bind'}, {title: '产线转运', path: '/pages/outbound/line-transfer'}, {title: '空载具出库', path: '/pages/outbound/empty-vehicle-outstore'}, {title: 'CTU载具出库', path: '/pages/outbound/ctu-vehicle-outstore'}]},
|
// {title: '出库管理', path: 'RF02', sonTree: [{title: '空托盘出库', path: '/pages/outbound/tray-out-store'}, {title: '出库确认', path: '/pages/outbound/out-store-confirm'}, {title: '单据出库', path: '/pages/outbound/bill-list'}, {title: '盘点出库', path: '/pages/outbound/stock-out-store'}, {title: '物料出库', path: '/pages/outbound/mater-outstore'}, {title: '货架绑定', path: '/pages/outbound/shelf-bind'}, {title: '产线转运', path: '/pages/outbound/line-transfer'}, {title: '空载具出库', path: '/pages/outbound/empty-vehicle-outstore'}, {title: 'CTU载具出库', path: '/pages/outbound/ctu-vehicle-outstore'}]},
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="zd_container" :class="{'en_class': applicationLocale === 'en'}">
|
<view class="zd_container" :class="{'en_class': applicationLocale === 'en'}">
|
||||||
<!-- 作业管理 -->
|
<!-- AGV作业管理 -->
|
||||||
<nav-bar :title="title"></nav-bar>
|
<nav-bar :title="title"></nav-bar>
|
||||||
<view class="zd_content">
|
<view class="zd_content">
|
||||||
<view class="zd_wrapper">
|
<view class="zd_wrapper">
|
||||||
@@ -20,30 +20,36 @@
|
|||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>载具号</th>
|
<th>任务号</th>
|
||||||
<th>载具号2</th>
|
<th>批次号</th>
|
||||||
<th>批次</th>
|
|
||||||
<th>物料编码</th>
|
|
||||||
<th>物料名称</th>
|
<th>物料名称</th>
|
||||||
<th>物料规格</th>
|
|
||||||
<th>物料类型</th>
|
|
||||||
<th>重量</th>
|
<th>重量</th>
|
||||||
|
<th>状态</th>
|
||||||
<th>起点1</th>
|
<th>起点1</th>
|
||||||
<th>终点1</th>
|
<th>终点1</th>
|
||||||
|
<th>载具号1</th>
|
||||||
|
<th>起点2</th>
|
||||||
|
<th>终点2</th>
|
||||||
|
<th>载具号2</th>
|
||||||
|
<th>创建人</th>
|
||||||
|
<th>创建时间</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="(e, i) in dataList" :key="i" @tap="toChek(e)" :class="{'checked': pkId === e.task_code}">
|
<tr v-for="(e, i) in dataList" :key="i" @tap="toChek(e)" :class="{'checked': pkId === e.task_code}">
|
||||||
<td>{{e.vehicle_code}}</td>
|
<td>{{e.task_code}}</td>
|
||||||
<td>{{e.vehicle_code2}}</td>
|
|
||||||
<td>{{e.pcsn}}</td>
|
<td>{{e.pcsn}}</td>
|
||||||
<td>{{e.material_code}}</td>
|
|
||||||
<td>{{e.material_name}}</td>
|
<td>{{e.material_name}}</td>
|
||||||
<td>{{e.material_spec}}</td>
|
|
||||||
<td>{{e.material_type}}</td>
|
|
||||||
<td>{{e.qty}}</td>
|
<td>{{e.qty}}</td>
|
||||||
|
<td>{{e.task_status}}</td>
|
||||||
<td>{{e.point_code1}}</td>
|
<td>{{e.point_code1}}</td>
|
||||||
<td>{{e.point_code2}}</td>
|
<td>{{e.point_code2}}</td>
|
||||||
|
<td>{{e.vehicle_code}}</td>
|
||||||
|
<td>{{e.point_code3}}</td>
|
||||||
|
<td>{{e.point_code4}}</td>
|
||||||
|
<td>{{e.vehicle_code2}}</td>
|
||||||
|
<td>{{e.create_name}}</td>
|
||||||
|
<td>{{e.create_time}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -51,10 +57,11 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="zd-row submit-bar">
|
<view class="zd-row submit-bar">
|
||||||
<button class="zd-col-5 button-default" @tap="toEmpty">清空</button>
|
<!-- <button class="zd-col-5 button-default" @tap="toEmpty">清空</button> -->
|
||||||
<button class="zd-col-5 button-primary" @tap="_schTaskQueryTask">查询</button>
|
<button class="zd-col-5 button-primary" @tap="_schTaskQueryTask">查询</button>
|
||||||
<button class="zd-col-6 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_schTaskAgainTask">重新下发</button>
|
<button class="zd-col-6 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_schTaskAgainTask">重新下发</button>
|
||||||
<button class="zd-col-6 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_forceConfirm">强制完成</button>
|
<button class="zd-col-6 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_forceConfirm">强制完成</button>
|
||||||
|
<button class="zd-col-6 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_forceCancel">强制取消</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -62,7 +69,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import NavBar from '@/components/NavBar.vue'
|
import NavBar from '@/components/NavBar.vue'
|
||||||
import SearchBox from '@/components/SearchBox.vue'
|
import SearchBox from '@/components/SearchBox.vue'
|
||||||
import {schTaskQueryTask, schTaskAgainTask, forceConfirm} from '@/utils/getData4.js'
|
import {schTaskQueryTask, schTaskAgainTask, forceConfirm, forceCancel} from '@/utils/getData4.js'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
NavBar,
|
NavBar,
|
||||||
@@ -141,6 +148,28 @@
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.disabled = false
|
this.disabled = false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
async _forceCancel () {
|
||||||
|
this.disabled = true
|
||||||
|
if (!this.pkId) {
|
||||||
|
this.disabled = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
let res = await forceCancel(this.pkId)
|
||||||
|
if (res.status === '200') {
|
||||||
|
this._schTaskQueryTask()
|
||||||
|
}
|
||||||
|
this.disabled = false
|
||||||
|
uni.showToast({
|
||||||
|
title: res.message,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
this.toEmpty()
|
||||||
|
this._schTaskQueryTask()
|
||||||
|
} catch (e) {
|
||||||
|
this.disabled = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
176
pages/zw/zygl-man.vue
Normal file
176
pages/zw/zygl-man.vue
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
<template>
|
||||||
|
<view class="zd_container" :class="{'en_class': applicationLocale === 'en'}">
|
||||||
|
<!-- 人工作业管理 -->
|
||||||
|
<nav-bar :title="title"></nav-bar>
|
||||||
|
<view class="zd_content">
|
||||||
|
<view class="zd_wrapper">
|
||||||
|
<view class="zd-row border-bottom">
|
||||||
|
<view class="zd-col-7">
|
||||||
|
<span class="filter_label">关键字</span>
|
||||||
|
</view>
|
||||||
|
<view class="zd-col-17">
|
||||||
|
<search-box
|
||||||
|
v-model="val1"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="zd_wrapper grid-wraper">
|
||||||
|
<view class="slide_new">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>任务号</th>
|
||||||
|
<th>批次号</th>
|
||||||
|
<th>物料名称</th>
|
||||||
|
<th>重量</th>
|
||||||
|
<th>状态</th>
|
||||||
|
<th>起点1</th>
|
||||||
|
<th>终点1</th>
|
||||||
|
<th>载具号1</th>
|
||||||
|
<th>起点2</th>
|
||||||
|
<th>终点2</th>
|
||||||
|
<th>载具号2</th>
|
||||||
|
<th>创建人</th>
|
||||||
|
<th>创建时间</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="(e, i) in dataList" :key="i" @tap="toChek(e)" :class="{'checked': pkId === e.task_code}">
|
||||||
|
<td>{{e.task_code}}</td>
|
||||||
|
<td>{{e.pcsn}}</td>
|
||||||
|
<td>{{e.material_name}}</td>
|
||||||
|
<td>{{e.qty}}</td>
|
||||||
|
<td>{{e.task_status}}</td>
|
||||||
|
<td>{{e.point_code1}}</td>
|
||||||
|
<td>{{e.point_code2}}</td>
|
||||||
|
<td>{{e.vehicle_code}}</td>
|
||||||
|
<td>{{e.point_code3}}</td>
|
||||||
|
<td>{{e.point_code4}}</td>
|
||||||
|
<td>{{e.vehicle_code2}}</td>
|
||||||
|
<td>{{e.create_name}}</td>
|
||||||
|
<td>{{e.create_time}}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="zd-row submit-bar">
|
||||||
|
<!-- <button class="zd-col-5 button-default" @tap="toEmpty">清空</button> -->
|
||||||
|
<button class="zd-col-6 button-primary" @tap="_schTaskQueryTask1">查询</button>
|
||||||
|
<!-- <button class="zd-col-6 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_schTaskAgainTask">重新下发</button> -->
|
||||||
|
<button class="zd-col-7 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_forceConfirm">强制完成</button>
|
||||||
|
<button class="zd-col-7 button-primary" :class="{'button-info': !pkId}" :disabled="disabled" @tap="_forceCancel">强制取消</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import NavBar from '@/components/NavBar.vue'
|
||||||
|
import SearchBox from '@/components/SearchBox.vue'
|
||||||
|
import {schTaskQueryTask1, schTaskAgainTask, forceConfirm, forceCancel} from '@/utils/getData4.js'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
NavBar,
|
||||||
|
SearchBox
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '',
|
||||||
|
val1: '',
|
||||||
|
dataList: [],
|
||||||
|
pkId: '',
|
||||||
|
pkObj: {},
|
||||||
|
disabled: false,
|
||||||
|
applicationLocale: ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad (options) {
|
||||||
|
this.title = options.title
|
||||||
|
this.applicationLocale = uni.getLocale()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toEmpty () {
|
||||||
|
this.val1 = ''
|
||||||
|
this.dataList = []
|
||||||
|
},
|
||||||
|
async _schTaskQueryTask1 () {
|
||||||
|
try {
|
||||||
|
let res = await schTaskQueryTask1(this.val1)
|
||||||
|
this.dataList = [...res.data]
|
||||||
|
} catch(e) {
|
||||||
|
this.dataList = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toChek (e) {
|
||||||
|
this.pkId = this.pkId === e.task_code ? '' : e.task_code
|
||||||
|
this.pkObj = this.pkId === e.task_code ? e : {}
|
||||||
|
},
|
||||||
|
async _schTaskAgainTask () {
|
||||||
|
this.disabled = true
|
||||||
|
if (!this.pkId) {
|
||||||
|
this.disabled = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
let res = await schTaskAgainTask(this.pkId)
|
||||||
|
if (res.status === '200') {
|
||||||
|
this._schTaskQueryTask1()
|
||||||
|
}
|
||||||
|
this.disabled = false
|
||||||
|
uni.showToast({
|
||||||
|
title: res.message,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
} catch (e) {
|
||||||
|
this.disabled = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async _forceConfirm () {
|
||||||
|
this.disabled = true
|
||||||
|
if (!this.pkId) {
|
||||||
|
this.disabled = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
let res = await forceConfirm(this.pkId)
|
||||||
|
if (res.status === '200') {
|
||||||
|
this._schTaskQueryTask1()
|
||||||
|
}
|
||||||
|
this.disabled = false
|
||||||
|
uni.showToast({
|
||||||
|
title: res.message,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
this.toEmpty()
|
||||||
|
this._schTaskQueryTask1()
|
||||||
|
} catch (e) {
|
||||||
|
this.disabled = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async _forceCancel () {
|
||||||
|
this.disabled = true
|
||||||
|
if (!this.pkId) {
|
||||||
|
this.disabled = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
let res = await forceCancel(this.pkId)
|
||||||
|
if (res.status === '200') {
|
||||||
|
this._schTaskQueryTask1()
|
||||||
|
}
|
||||||
|
this.disabled = false
|
||||||
|
uni.showToast({
|
||||||
|
title: res.message,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
this.toEmpty()
|
||||||
|
this._schTaskQueryTask1()
|
||||||
|
} catch (e) {
|
||||||
|
this.disabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -383,6 +383,10 @@ export const schTaskQueryTask = (code) => request({
|
|||||||
url:'api/pda/schTask/queryTask',
|
url:'api/pda/schTask/queryTask',
|
||||||
data: {task_code: code}
|
data: {task_code: code}
|
||||||
})
|
})
|
||||||
|
export const schTaskQueryTask1 = (code) => request({
|
||||||
|
url:'api/pda/schTask/queryTask1',
|
||||||
|
data: {task_code: code}
|
||||||
|
})
|
||||||
export const schTaskAgainTask = (code) => request({
|
export const schTaskAgainTask = (code) => request({
|
||||||
url:'api/pda/schTask/againTask',
|
url:'api/pda/schTask/againTask',
|
||||||
data: {task_code: code}
|
data: {task_code: code}
|
||||||
@@ -391,3 +395,7 @@ export const forceConfirm = (code) => request({
|
|||||||
url:'api/pda/schTask/forceConfirm',
|
url:'api/pda/schTask/forceConfirm',
|
||||||
data: {task_code: code}
|
data: {task_code: code}
|
||||||
})
|
})
|
||||||
|
export const forceCancel = (code) => request({
|
||||||
|
url:'api/pda/schTask/forceCancel',
|
||||||
|
data: {task_code: code}
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user