全局开发

This commit is contained in:
2024-08-02 17:26:50 +08:00
parent 1fa746d6cb
commit 03e0d44dd6
20 changed files with 931 additions and 1067 deletions

View File

@@ -126,56 +126,95 @@ uni-button:after {
border-collapse: separate;
-webkit-border-horizontal-spacing: 0px;
-webkit-border-vertical-spacing: 10rpx;
padding-bottom: 8rpx;
background-color: #f5f5f5;
}
.slide_new table td, .slide_new table th {
.slide_new table th {
position: sticky;
top: 0;
left: 0;
z-index: 120;
font-size: 26rpx;
line-height: 98rpx;
color: #696969;
font-weight: bold;
text-align: center;
box-sizing: border-box;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
white-space: nowrap;
padding: 0 20rpx;
text-align: center;
background: #d7d7d7;
}
.slide_new table td:first-child, .slide_new table th:first-child{
position: sticky;
.slide_new table th:first-child{
left: 0;
z-index: 101;
box-shadow: inset -3px 0px 3px 0px rgba(160,160,160,0.20);
}
.slide_new table thead tr th {
position: sticky;
top: 0;
background: #d7d7d7;
font-size: 26rpx;
line-height: 98rpx;
color: #696969;
z-index: 121;
color: #4e6ef2;
font-weight: bold;
z-index: 100;
box-shadow: 3px 0px 3px 0px rgba(160,160,160,0.20);
}
.slide_new table thead tr th:first-child {
background: #d7d7d7;
.slide_new table th.th_2 {
left: 86rpx;
z-index: 122;
box-shadow: 3px 0px 3px 0px rgba(160,160,160,0.20);
}
.slide_new table tbody tr td {
.slide_new table td {
font-size: 28rpx;
line-height: 98rpx;
color: #323232;
text-align: center;
box-sizing: border-box;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
white-space: nowrap;
padding: 0 20rpx;
background: #fff;
}
.slide_new table thead tr th.fontcol1,.slide_new table tbody tr td.fontcol1 {
.slide_new table td:first-child{
position: sticky;
left: 0;
z-index: 100;
color: #4e6ef2;
font-weight: bold;
box-shadow: 3px 0px 3px 0px rgba(160,160,160,0.20);
}
.slide_new table td.td_2 {
position: sticky;
left: 86rpx;
z-index: 101;
box-shadow: 3px 0px 3px 0px rgba(160,160,160,0.20);
}
.slide_new table th.fontcol1,.slide_new table td.fontcol1 {
color: #4e6ef2;
font-weight: bold;
}
.slide_new table thead tr th.fontcol2,.slide_new table tbody tr td.fontcol2 {
.slide_new table th.fontcol2,.slide_new table td.fontcol2 {
color: #d7592f;
font-weight: bold;
}
.slide_new table tbody tr.checked td {
background-color: #f0c560;
.slide_new table tr.checked {
// background-image: linear-gradient(to top,#c2cde3,#f6f7fb);
background-color: #6190e8;
}
.slide_new table tr.checked td {
background-color: transparent;
color: #fff;
}
.slide_new table tbody tr.checked td:first-child {
border-left: 6rpx solid #ff8227;
.slide_new table tr.checked td:first-child {
// background-image: linear-gradient(to top,#c2cde3,#f6f7fb);
background-color: #6190e8;
}
.slide_new table tr.checked td:nth-child(2) {
// background-image: linear-gradient(to top,#c2cde3,#f6f7fb);
background-color: #6190e8;
}
.slide_new table tr.checked td:first-child {
border-left: 1rpx solid #6798ef;
}
.slide_new table tr.checked td:last-child {
border-right: 1rpx solid #6798ef;
}
.item-wrapper {

View File

@@ -3,15 +3,15 @@
<input
type="text"
class="filter_input pdr120"
confirm-type="go"
:value="value"
:focus="focusState"
@blur="handleBlur($event)"
@input="handleChange($event)">
@focus="handleFocus"
@blur="handleBlur"
@confirm="handleSend">
<view class="zd-row buttons_wraper">
<!-- <uni-icons @tap="toDel" type="closeempty" size="20" color="#4e6ef2"></uni-icons> -->
<uni-icons class="pdr10" @tap="toScan" type="scan" size="20" :color="focusState ? '#ff6a00' : '#4e6ef2'"></uni-icons>
<uni-icons @tap="toPhone" type="camera" size="26" color="#4e6ef2"></uni-icons>
<uni-icons v-show="seaShow" @tap="toSearch" type="search" size="20" color="#4e6ef2"></uni-icons>
<uni-icons v-show="value.length" class="pdr10" type="clear" size="24" color="#666" @tap="toDel"></uni-icons>
<uni-icons type="scan" size="22" :color="focusState ? '#ff6a00' : '#4e6ef2'" @tap="focusState=true"></uni-icons>
</view>
</view>
</template>
@@ -21,7 +21,6 @@
export default {
data() {
return {
cur: '',
focusState: false
};
},
@@ -30,97 +29,28 @@
event: 'input'
},
props: {
value: String,
seaShow: {
type: Boolean,
default: false
},
focused: {
type: Boolean,
default: false
}
},
watch: {
focused() {
this.focusState = this.focused
},
},
mounted () {
if (this.focused) {
this.focusState = true
}
value: String
},
methods: {
handleChange ($event) {
this.cur = $event.target.value
this.$emit('input', this.cur)
this.$emit('handleChange', this.cur)
if (this.focusState) {
this.focusState = false
}
handleFocus () {
this.focusState = true
},
handleBlur () {
handleBlur (e) {
this.$emit('input', e.target.value)
// if (e.target.value.length) {
// this.$emit('handleChange', e.target.value)
// }
this.focusState = false
},
toSearch () {
this.$emit('toSearch', this.cur)
},
toDel () {
this.cur = ''
this.$emit('input', '')
},
toScan () {
setTimeout(() => {
this.focusState = true
},0)
setTimeout(() => {
uni.hideKeyboard()
}, 300)
this.cur = ''
this.$emit('input', '')
},
async toPhone() {
// #ifdef APP-PLUS
let status = await this.checkPermission();
if (status !== 1) {
return;
}
// #endif
uni.scanCode({
success: (res) => {
this.$emit('input', res.result)
this.$emit('handleChange', res.result)
},
fail: (err) => {
// uni.showToast({
// title: '出错',
// icon: 'none'
// })
}
});
}
// #ifdef APP-PLUS
,
async checkPermission(code) {
let status = permision.isIOS ? await permision.requestIOS('camera') :
await permision.requestAndroid('android.permission.CAMERA');
if (status === null || status === 1) {
status = 1;
} else {
uni.showModal({
content: "需要相机权限",
confirmText: "设置",
success: function(res) {
if (res.confirm) {
permision.gotoAppSetting();
handleSend (e) {
this.$emit('input', e.target.value)
if (e.target.value.length) {
this.$emit('handleChange', e.target.value)
}
}
})
}
return status;
}
// #endif
}
}
</script>

View File

@@ -113,7 +113,7 @@
}
,{
"path" : "pages/outbound/empty-tray-out-store",
"path" : "pages/outbound/tray-out-store",
"style" :
{
"navigationStyle": "custom"
@@ -152,6 +152,24 @@
}
}
,{
"path" : "pages/entry/document",
"style" :
{
"navigationStyle": "custom",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}
,{
"path" : "pages/pick/pick-list",
"style" :
{
"navigationStyle": "custom"
}
}
],
"globalStyle": {
// "pageOrientation": "landscape",

164
pages/entry/document.vue Normal file
View File

@@ -0,0 +1,164 @@
<template>
<view class="zd_container">
<!-- 关联单据 -->
<nav-bar :title="title" :inner="true"></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-24 filter_select">
<uni-data-select v-model="index" :localdata="options" @change="selectChange"></uni-data-select>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">单据编码</span>
</view>
<view class="zd-col-24 filter_select">
<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>物料批次</th>
<th>计划数量</th>
<th>未入库数量</th>
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i">
<td>{{i+1}}</td>
<td>{{e.source_form_type}}</td>
<td>{{e.source_form_date}}</td>
<td>{{e.material_code}}</td>
<td>{{e.material_spec}}</td>
<td>{{e.pcsn}}</td>
<td>{{e.assign_qty}}</td>
<td>{{e.qty}}</td>
</tr>
</tbody>
</table>
</view>
</view>
<uni-load-more color="#007AFF" iconType="circle" :status="status" :icon-size="14" :content-text="contentText" v-if="dataList.length > 0"/>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-5 button-default" @tap="toEmpty">清空</button>
<button class="zd-col-8 button-primary" @tap="searchList">查询</button>
<button class="zd-col-8 button-primary" @tap="toSure">组盘确认</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {FormTypes, pmFormData} from '@/utils/mork2.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
title: '',
options: [],
index: '',
val1: '',
dataList: [],
pkId: '',
reload: false,
status: 'more',
contentText: {
contentdown: '查看更多',
contentrefresh: '加载中',
contentnomore: '没有更多'
},
totalCount: 0,
pageNum: 1,
pageSize: 10
};
},
onLoad (options) {
this.title = options.title
this._FormTypes()
},
methods: {
async _FormTypes () {
let res = await FormTypes()
this.options = [...res]
this.options.map(el => {
this.$set(el, 'text', el.lable)
})
},
selectChange (e) {
this.index = e
},
searchList () {
this.dataList = []
this.pageNum = 1
this._pmFormData()
},
async _pmFormData () {
let res = await pmFormData(this.pageNum + '', this.pageSize + '', this.val1, this.index)
if (res.code === '200') {
this.totalCount = res.totalElements
if (res.totalElements > 0) {
const dataMap = res.content
this.dataList = this.reload ? dataMap : this.dataList.concat(dataMap)
this.reload = false
} else {
this.dataList = []
}
if (this.totalCount == this.dataList.length) {
this.reload = false
this.status = 'noMore'
}
}
},
onReachBottom () {
if (this.totalCount > this.dataList.length) {
this.status = 'loading'
setTimeout(() => {
this.pageNum++
this._pmFormData()
}, 1000)
} else { //停止加载
this.status = 'noMore'
}
},
toEmpty () {
this.index = ''
this.val1 = ''
this.dataList = []
this.pageNum = 1
},
toSure () {
if (this.dataList.length) {
this.$store.dispatch('setPublicArr', this.dataList)
uni.navigateBack()
}
}
}
}
</script>
<style lang="stylus">
@import '../../common/style/mixin.styl';
.msg_wrapper
height auto
min-height 30%
</style>

View File

@@ -1,49 +1,32 @@
<template>
<view class="zd_container">
<!-- 空托盘入库 -->
<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>
<span class="filter_label">载具</span>
</view>
<view class="zd-col-17 filter_select">
<view class="zd-col-17">
<search-box
v-model="val1"
/>
</view>
</view>
</view>
<view class="zd_wrapper">
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">重量</span>
<span class="filter_label">托盘类型</span>
</view>
<view class="zd-col-17 filter_select">
<input type="number" class="filter_input" v-model="obj.material_weight" disabled>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">数量</span>
</view>
<view class="zd-col-17 filter_select">
<input type="number" class="filter_input" v-model="obj.material_qty" disabled>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">牌号</span>
</view>
<view class="zd-col-17 filter_select">
<input type="text" class="filter_input" v-model="obj.material_code" disabled>
<view class="zd-col-24 filter_select">
<uni-data-select v-model="index" :localdata="options" @change="selectChange"></uni-data-select>
</view>
</view>
</view>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-6 button-default" @tap="clearUp">清空</button>
<button class="zd-col-15 button-primary" :class="{'button-info': !val1}" :disabled="disabled" @tap="_zpxxTask">确认</button>
<button class="zd-col-15 button-primary" :class="{'button-info': !val1 || !index}" :disabled="disabled" @tap="_pdaPalletIostorinvIn">确认</button>
</view>
</view>
</template>
@@ -51,7 +34,7 @@
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {zpxxTask} from '@/utils/getData2.js'
import {pdaPalletIostorinvIn} from '@/utils/getData2.js'
export default {
components: {
NavBar,
@@ -61,7 +44,8 @@
return {
title: '',
val1: '',
obj: {},
options: [{text:'堆叠托盘', value:'22222222'},{text:'料箱',value: '11111111'}],
index: '',
disabled: false
};
},
@@ -71,24 +55,31 @@
created () {
},
methods: {
selectChange (e) {
this.index = e
},
clearUp () {
this.val1 = ''
this.obj = {}
this.index = ''
this.disabled = false
},
async _zpxxTask () {
async _pdaPalletIostorinvIn () {
this.disabled = true
if (!this.val1) {
if (!this.val1 || !this.index) {
this.disabled = false
return
}
try {
let res = await zpxxTask(this.val1)
this.disabled = false
let res = await pdaPalletIostorinvIn(this.val1, this.index)
if (res.code === '200') {
uni.showToast({
title: res.message,
title: res.msg,
icon: 'none'
})
this.obj = res
this.clearUp()
} else {
this.disabled = false
}
} catch (e) {
this.disabled = false
}

View File

@@ -1,5 +1,6 @@
<template>
<view class="zd_container">
<!-- 组盘入库 -->
<nav-bar :title="title"></nav-bar>
<view class="zd_content">
<view class="zd_wrapper">
@@ -7,7 +8,7 @@
<view class="zd-col-7">
<span class="filter_label">载具编码</span>
</view>
<view class="zd-col-24 filter_select">
<view class="zd-col-24">
<search-box
v-model="val1"
/>
@@ -17,10 +18,8 @@
<view class="zd-col-7">
<span class="filter_label">关联单据</span>
</view>
<view class="zd-col-24 filter_select">
<search-box
v-model="val2"
/>
<view class="zd-col-24">
<input type="text" class="filter_input" @tap="toJump" v-model="val2">
</view>
</view>
</view>
@@ -29,7 +28,7 @@
<table>
<thead>
<tr>
<th class="fontcol1">物料编码</th>
<th>物料编码</th>
<th>物料名称</th>
<th>物料规格</th>
<th>批次</th>
@@ -37,8 +36,8 @@
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i" @tap="toCheck(e)">
<td class="fontcol1">{{e.material_id}}</td>
<tr v-for="(e, i) in dataList" :key="i">
<td>{{e.material_code}}</td>
<td>{{e.material_name}}</td>
<td>{{e.material_spec}}</td>
<td>{{e.pcsn}}</td>
@@ -48,10 +47,14 @@
</table>
</view>
</view>
</view>
<view class="compute_wraper">
</view>
<view class="zd-row submit-bar">
<button class="zd-col-6 button-default">清空</button>
<button class="zd-col-15 button-primary" :class="{'button-info': !pkId}" :disabled="disabled">组盘确认</button>
<view class="zd-col-10"></view>
<button class="zd-col-5 button-default" @tap="toEmpty">清空</button>
<button class="zd-col-7 button-primary" :class="{'button-info': !checkArr.length}" :disabled="disabled">组盘确认</button>
</view>
</view>
</template>
@@ -59,7 +62,7 @@
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {unpackShelfInfo, cbjqlTask} from '@/utils/getData2.js'
import {mdGruopDick} from '@/utils/getData2.js'
export default {
components: {
NavBar,
@@ -71,34 +74,42 @@
val1: '',
val2: '',
dataList: [],
pkId: '',
checkArr: '',
disabled: false
};
},
onLoad (options) {
this.title = options.title
},
onShow () {
if (this.$store.getters.publicArr.length) {
this.dataList = [...this.$store.getters.publicArr]
this.$store.dispatch('setPublicArr', '')
}
},
methods: {
async _unpackShelfInfo () {
let res = await unpackShelfInfo()
this.dataList = [...res]
toJump () {
uni.navigateTo({
url: '/pages/entry/document?title=关联单据'
})
},
toCheck (e) {
this.pkId = this.pkId === e.material_id ? '' : e.material_id
toEmpty () {
this.val1 = ''
this.dataList = []
},
async _cbjqlTask () {
async _mdGruopDick () {
this.disabled = true
if (!this.pkId) {
if (!this.checkArr.length) {
this.disabled = false
return
}
try {
let res = await cbjqlTask(this.pkId)
this.pkId = ''
let res = await mdGruopDick(this.dataList, this.val1, this.val2)
if (res.code === '200') {
}
this.disabled = false
this._unpackShelfInfo()
uni.showToast({
title: res.message,
title: res.msg,
icon: 'none'
})
} catch (e) {

View File

@@ -42,7 +42,7 @@
userName: '',
menuList: [
{title: '入库管理', path: 'RF01', sonTree: [{title: '组盘入库', path: '/pages/entry/group-to-store'}, {title: '空托盘入库', path: '/pages/entry/empty-tray-to-store'}]},
{title: '出库管理', path: 'RF02', sonTree: [{title: '托盘出库', path: '/pages/outbound/empty-tray-out-store'}, {title: '出库确认', path: '/pages/outbound/out-store-confirm'}]},
{title: '出库管理', path: 'RF02', sonTree: [{title: '托盘出库', path: '/pages/outbound/tray-out-store'}, {title: '出库确认', path: '/pages/outbound/out-store-confirm'}]},
{title: '在库管理', path: 'RF03', sonTree: [{title: '库存信息', path: '/pages/in/store-info'}]},
{title: '拣选管理', path: 'RF04', sonTree: [{title: '拣选作业', path: '/pages/pick/pick-task'}]},
{title: '盘点管理', path: 'RF05', sonTree: [{title: '盘点作业', path: '/pages/check/check-task'}]},

View File

@@ -89,16 +89,23 @@
}
try {
let res = await handLogin(this.user, RSAencrypt(this.password))
if (res.code === '200') {
if (this.saveUser) {
this.$store.dispatch('saveLoginName', this.user)
} else {
this.$store.dispatch('delLoginName', '')
}
this.$store.dispatch('saveUserInfo', JSON.stringify(res.user.user))
this.$store.dispatch('saveUserInfo', JSON.stringify(res.data.user))
this.$store.dispatch('saveToken', res.token)
uni.redirectTo({
url: '/pages/home/home'
})
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
this.disabled = false
} catch (e) {
this.disabled = false

View File

@@ -62,7 +62,7 @@
<table>
<thead>
<tr>
<th class="fontcol1">工单编号</th>
<th>工单编号</th>
<th>计划数量</th>
<th>实际数量</th>
<th>计划重量</th>
@@ -81,7 +81,7 @@
</thead>
<tbody>
<tr v-for="(e, i) in dataList2" :key="i" @click="toChose2(e)" :class="{'checked': e.workorder_code === pkId2}">
<td class="fontcol1">{{e.workorder_code}}</td>
<td>{{e.workorder_code}}</td>
<td>{{e.plan_qty}}</td>
<td>{{e.real_qty}}</td>
<td>{{e.plan_weight}}</td>

View File

@@ -1,90 +0,0 @@
<template>
<view class="zd_container">
<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 filter_select">
<search-box
v-model="val1"
/>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">托盘类型</span>
</view>
<view class="zd-col-17 filter_select">
<uni-data-select v-model="index1" :localdata="options1"></uni-data-select>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">出库点</span>
</view>
<view class="zd-col-17 filter_select">
<input type="text" class="filter_input">
</view>
</view>
</view>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-6 button-default" @tap="clearUp">清空</button>
<button class="zd-col-15 button-primary" :class="{'button-info': !val1}" :disabled="disabled">确认</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {zpxxTask} from '@/utils/getData2.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
title: '',
val1: '',
options1: [{value: 0, text: '困料区域', point: []}, {value: 1, text: '缓存货架区域', point: []}],
index1: '',
disabled: false
};
},
onLoad (options) {
this.title = options.title
},
methods: {
clearUp () {
this.val1 = ''
},
async _zpxxTask () {
this.disabled = true
if (!this.val1) {
this.disabled = false
return
}
try {
let res = await zpxxTask(this.val1)
this.disabled = false
uni.showToast({
title: res.message,
icon: 'none'
})
this.obj = res
} catch (e) {
this.disabled = false
}
}
}
}
</script>
<style lang="stylus">
</style>

View File

@@ -1,15 +1,74 @@
<template>
<view>
<view class="zd_container">
<!-- 出库确认 -->
<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-24">
<search-box
v-model="code"
/>
</view>
</view>
</view>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-6 button-default" @tap="clearUp">清空</button>
<button class="zd-col-15 button-primary" :class="{'button-info': !code}" :disabled="disabled" @tap="_ioStorageOut">扫码出库确认</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {ioStorageOut} from '@/utils/getData2.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
code: '',
disabled: false
};
},
onLoad (options) {
this.title = options.title
},
created () {
},
methods: {
clearUp () {
this.code = ''
this.disabled = false
},
async _ioStorageOut () {
this.disabled = true
if (!this.code) {
this.disabled = false
return
}
try {
let res = await ioStorageOut(this.code)
if (res.code === '200') {
uni.showToast({
title: res.msg,
icon: 'none'
})
this.clearUp()
} else {
this.disabled = false
}
} catch (e) {
this.disabled = false
}
}
}
}
</script>

View File

@@ -0,0 +1,105 @@
<template>
<view class="zd_container">
<!-- 托盘出库 -->
<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-24 filter_select">
<uni-data-select v-model="index1" :localdata="options1" @change="selectChange1"></uni-data-select>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">出库数量</span>
</view>
<view class="zd-col-17">
<input type="number" class="filter_input" v-model="qty">
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">出库点</span>
</view>
<view class="zd-col-24 filter_select">
<uni-data-select v-model="index2" :localdata="options2" @change="selectChange2"></uni-data-select>
</view>
</view>
</view>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-6 button-default" @tap="clearUp">清空</button>
<button class="zd-col-15 button-primary" :class="{'button-info': !qty || !index1 || !index2}" :disabled="disabled" @tap="_pdaPalletIostorinvOut">托盘库出库</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {pdaPalletIostorinvOut} from '@/utils/getData2.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
title: '',
options1: [{text:'堆叠托盘', value:'22222222'},{text:'料箱',value: '11111111'}],
index1: '',
qty: '',
options2: [{text:'1309', value:'1309'}],
index2: '',
disabled: false
};
},
onLoad (options) {
this.title = options.title
},
created () {
},
methods: {
selectChange1 (e) {
this.index1 = e
},
selectChange2 (e) {
this.index2 = e
},
clearUp () {
this.qty = ''
this.index1 = ''
this.index2 = ''
this.disabled = false
},
async _pdaPalletIostorinvOut () {
this.disabled = true
if (!this.qty || !this.index1 || !this.index2) {
this.disabled = false
return
}
try {
let res = await pdaPalletIostorinvOut(this.index1, this.qty, this.index2)
if (res.code === '200') {
uni.showToast({
title: res.msg,
icon: 'none'
})
this.clearUp()
} else {
this.disabled = false
}
} catch (e) {
this.disabled = false
}
}
}
}
</script>
<style lang="stylus">
</style>

163
pages/pick/pick-list.vue Normal file
View File

@@ -0,0 +1,163 @@
<template>
<view class="zd_container">
<!-- 拣选单列表 -->
<nav-bar :title="title" :inner="true"></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-24 filter_select">
<search-box
v-model="val1"
/>
</view>
</view>
</view>
<view class="zd_wrapper grid-wraper">
<view class="slide_new">
<table>
<thead>
<tr>
<th>序号</th>
<th class="th_2">拣选单编码</th>
<th>载具编码</th>
<th>状态</th>
<th>仓库</th>
<th>拣选站台</th>
<th>车间</th>
<th>创建时间</th>
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i" @tap="toChek(e)" :class="{'checked': pkId === code}">
<td>{{i+1}}</td>
<td class="td_2">{{e.code}}</td>
<td>{{e.vehicle_code}}</td>
<td>{{e.status}}</td>
<td>{{e.stor_code}}</td>
<td>{{e.point_code}}</td>
<td>{{e.product_area}}</td>
<td>{{e.create_time}}</td>
</tr>
</tbody>
</table>
</view>
</view>
<uni-load-more color="#007AFF" iconType="circle" :status="status" :icon-size="14" :content-text="contentText" v-if="dataList.length > 0"/>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-5 button-default" @tap="toEmpty">清空</button>
<button class="zd-col-8 button-primary" @tap="searchList">查询</button>
<button class="zd-col-8 button-primary" @tap="toSure">确认</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {FormTypes, pmFormData} from '@/utils/mork2.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
title: '',
options: [],
index: '',
val1: '',
dataList: [],
pkId: '',
pkObj: {},
reload: false,
status: 'more',
contentText: {
contentdown: '查看更多',
contentrefresh: '加载中',
contentnomore: '没有更多'
},
totalCount: 0,
pageNum: 1,
pageSize: 10
};
},
onLoad (options) {
this.title = options.title
this._FormTypes()
},
methods: {
async _FormTypes () {
let res = await FormTypes()
this.options = [...res]
this.options.map(el => {
this.$set(el, 'text', el.lable)
})
},
selectChange (e) {
this.index = e
},
searchList () {
this.dataList = []
this.pageNum = 1
this._pmFormData()
},
async _pmFormData () {
let res = await pmFormData(this.pageNum + '', this.pageSize + '', this.val1, this.index)
if (res.code === '200') {
this.totalCount = res.totalElements
if (res.totalElements > 0) {
const dataMap = res.content
this.dataList = this.reload ? dataMap : this.dataList.concat(dataMap)
this.reload = false
} else {
this.dataList = []
}
if (this.totalCount == this.dataList.length) {
this.reload = false
this.status = 'noMore'
}
}
},
onReachBottom () {
if (this.totalCount > this.dataList.length) {
this.status = 'loading'
setTimeout(() => {
this.pageNum++
this._pmFormData()
}, 1000)
} else { //停止加载
this.status = 'noMore'
}
},
toEmpty () {
this.index = ''
this.val1 = ''
this.dataList = []
this.pageNum = 1
this.pkId = ''
this.pkObj = {}
},
toChek (e) {
this.pkId = this.pkId === e.code ? '' : e.code
this.pkObj = this.pkId === e.code ? e : {}
},
toSure () {
if (this.pkId) {
this.$store.dispatch('setPublicArr', [this.pkObj])
uni.navigateBack()
}
}
}
}
</script>
<style lang="stylus">
@import '../../common/style/mixin.styl';
.msg_wrapper
height auto
min-height 30%
</style>

View File

@@ -1,15 +1,143 @@
<template>
<view>
<view class="zd_container">
<!-- 拣选作业 -->
<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-24">
<input type="text" class="filter_input" @click="toJump">
</view>
</view>
<view class="zd-row">
<view class="zd-col-12">
<view class="zd-row border-bottom">
<view class="zd-col-10">
<span class="filter_label">返回时间</span>
</view>
<view class="zd-col-14">
<input type="text" class="filter_input">
</view>
</view>
</view>
<view class="zd-col-12">
<view class="zd-row border-bottom">
<view class="zd-col-10">
<span class="filter_label">拣选仓库</span>
</view>
<view class="zd-col-14">
<input type="text" class="filter_input">
</view>
</view>
</view>
</view>
<view class="zd-row">
<view class="zd-col-12">
<view class="zd-row border-bottom">
<view class="zd-col-10">
<span class="filter_label">拣选载具</span>
</view>
<view class="zd-col-14">
<input type="text" class="filter_input">
</view>
</view>
</view>
<view class="zd-col-12">
<view class="zd-row border-bottom">
<view class="zd-col-10">
<span class="filter_label">车间</span>
</view>
<view class="zd-col-14">
<input type="text" class="filter_input">
</view>
</view>
</view>
</view>
<view class="zd-row">
<view class="zd-col-12">
<view class="zd-row border-bottom">
<view class="zd-col-10">
<span class="filter_label">拣选站台</span>
</view>
<view class="zd-col-14">
<input type="text" class="filter_input">
</view>
</view>
</view>
<view class="zd-col-12">
<view class="zd-row border-bottom">
<view class="zd-col-10">
<span class="filter_label">创建时间</span>
</view>
<view class="zd-col-14">
<input type="text" class="filter_input">
</view>
</view>
</view>
</view>
</view>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-6 button-default" @tap="clearUp">清空</button>
<button class="zd-col-15 button-primary" :class="{'button-info': !code}" :disabled="disabled" @tap="_ioStorageOut">扫码出库确认</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {ioStorageOut} from '@/utils/getData2.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
code: '',
disabled: false
};
},
onLoad (options) {
this.title = options.title
},
created () {
},
methods: {
toJump () {
uni.navigateTo({
url: '/pages/pick/pick-list?title=拣选单列表'
})
},
clearUp () {
this.code = ''
this.disabled = false
},
async _ioStorageOut () {
this.disabled = true
if (!this.code) {
this.disabled = false
return
}
try {
let res = await ioStorageOut(this.code)
if (res.code === '200') {
uni.showToast({
title: res.msg,
icon: 'none'
})
this.clearUp()
} else {
this.disabled = false
}
} catch (e) {
this.disabled = false
}
}
}
}
</script>

View File

@@ -14,181 +14,52 @@ export const pdaUpdate = () => request({
// 登录
export const handLogin = (user, password) => request({
url:'mobile/auth/login',
url:'api/bigScreenScreen/login',
data: {
username: user,
user: user,
password: password
}
})
/**
* 混碾搬运
* 组盘入库
*/
// 查询货架上未拆包料盅信息
export const unpackShelfInfo = () => request({
url:'api/pda/unpackShelfInfo',
data: {}
// 单据类型
export const FormTypes = () => request({
method: 'GET',
url:'api/bmFormStruc/getTypes?type=pda'
})
// 查询拆包机点位
export const getCbjPoint = () => request({
url:'api/pda/getCbjPoint',
data: {}
// 单据数据
export const pmFormData = (page, size, sort, form_type) => request({
method: 'GET',
url:'api/pmFormData?page=' + page + '&size=' + size + '&sort=' + sort + '&form_type=' + form_type
})
// 拆包机叫料
export const cbjqlTask = (sp, ep) => request({
url:'api/pda/cbjqlTask',
data: {
startPoint: sp,
endPoint: ep
}
// 组盘确认
export const mdGruopDick = (item, code, type) => request({
url:'api/mdGruopDick',
data: {item: item, stor_code: code, type: type}
})
// 查询混碾工单
export const hnWorkOrder = () => request({
url:'api/pda/hnWorkOrder',
data: {}
})
// 拆包机下料位满料入货架
export const cbjmlTask = (code, bcode, sp) => request({
url:'api/pda/cbjmlTask',
data: {orderCode: code,barCode: bcode,startPoint: sp}
})
// 拆包机下料位叫空蛊
export const cbjqkTask = (ep) => request({
url:'api/pda/cbjqkTask',
data: {endPoint: ep}
})
// 拆包机空料位送空蛊
export const cbjskTask = (type, sp) => request({
url:'api/pda/cbjskTask',
data: {nextType: type, startPoint: sp}
})
/**
* 压机搬运
* 空托盘入库
*/
// 压机上料位下拉框
export const yjslwPointList = () => request({
url:'api/pda/yjslwPointList',
data: {}
export const pdaPalletIostorinvIn = (code, id) => request({
url:'api/pdaPalletIostorinv/in',
data: {vehicle_code: code, material_id: id}
})
// 压机上料位强制回货架
export const qzhhjTask = (code) => request({
url:'api/pda/qzhhjTask',
data: {deviceCode: code}
})
// 查询货架上已拆包料盅信息
export const packShelfInfo = () => request({
url:'api/pda/packShelfInfo',
data: {}
})
// 困料货架点对点到布料机上料位
export const yzqlTask = (sp, ep) => request({
url:'api/pda/yzqlTask',
data: {startPoint: sp, endPoint: ep}
})
/**
* 物料报废
* 托盘出库
*/
// 物料报废
export const materialScrap = (code) => request({
url:'api/pda/materialScrap',
data: {
barCode: code
}
export const pdaPalletIostorinvOut = (id, qty, point) => request({
url:'api/pdaPalletIostorinv/out',
data: {material_id: id, qty: qty, pcsn: '1', target_point: point}
})
/**
* 人工分拣
* 出库确认
*/
// 查询人工分拣点位
export const rgfjPoint = () => request({
url:'api/pda/rgfjPoint',
data: {}
export const ioStorageOut = (code) => request({
url:'api/ioStorage/out',
data: {vehicle_code: code}
})
// 查询缓存货架点位
export const hchjPoint = () => request({
url:'api/pda/hchjPoint',
data: {}
})
// 人工分拣叫料
export const rgfjqlTask = (sp, code) => request({
url:'api/pda/rgfjqlTask',
data: {startPoint: sp, deviceCode: code}
})
// 人工分拣送空盘
export const rgfjskTask = (code) => request({
url:'api/pda/rgfjskTask',
data: {deviceCode: code}
})
/**
* 任务管理
* 拣选单列表
*/
// 1.1 1.1 查询无指令的任务(任务号为-开头)
export const handTasks = () => request({
url:'api/hand/tasks',
acsurl: true,
data: {}
})
// 1.2 任务操作
export const handTaskoperation = (type, id) => request({
url:'api/hand/taskoperation',
acsurl: true,
data: {
type: type,
task_uuid: id
}
})
/**
* 指令管理
*/
// 1.1 查询未完成指令(生成任务号为-开头)
export const handInsts = () => request({
url:'api/hand/insts',
acsurl: true,
data: {}
})
// 1.2 指令操作
export const handInst = (type, id) => request({
url:'api/hand/inst',
acsurl: true,
data: {
type: type,
inst_uuid: id
}
})
/**
* 压制混碾满料搬运
*/
export const mlTask = (code, vcode, weight, qty) => request({
url:'api/pda/mlTask',
data: {
deviceCode: code,
vehicle_code: vcode,
weight: weight,
qty: qty
}
})
/**
* 条码解绑
*/
export const vehicleUnbind = (code) => request({
url:'api/pda/vehicleUnbind',
data: {
point_code: code
}
})
/**
* 组盘查看
*/
export const zpxxTask = (code) => request({
url:'api/pda/zpxxTask',
data: {
vehicle_code: code
}
})

View File

@@ -1,632 +1,60 @@
// 查询货架上未拆包料盅信息
export const unpackShelfInfo = () => {
export const FormTypes = (code) => {
let res = [
{
"pointCode": "KLHW03",
"materialCode": "ML-60BT",
"instorageTime": "2024-01-11 16:26:55"
}
]
return res
}
// 查询拆包机点位
export const getCbjPoint = () => {
let res = [
{
"value": "CBJKLW",
"text": "拆包机空料位"
lable: '收料通知单明细',
id: '1778673956455321600',
value: 'MRN_DTL'
},
{
"value": "CBJMLW",
"text": "拆包机满料位"
lable: '收料通知单',
id: '1778676876466851840',
value: 'MRN_MST'
},
{
"value": "CBJXLW ",
"text": "拆包机下料位"
lable: '出入库单主表',
id: '1780517070820216832',
value: 'st_ivt_iostorinv'
}
]
]
return res
}
// 拆包机叫料
export const cbjqlTask = () => {
export const pmFormData = (code) => {
let res = {
"message": "拆包机缺料请求成功"
}
return res
}
// 查询混碾工单
export const hnWorkOrder = () => {
let res = [
{
"workorder_id": "1762660775601770496",
"workorder_code": "240228003",
"plan_qty": 0,
"real_qty": 66,
"plan_weight": 1000,
"real_weight": 33,
"real_new_weight": 0,
"real_old_weight": 0,
"material_ratio": 0,
"material_id": "1771048061557149696",
"raw_material_code": "111",
"produce_order": null,
"batch_no": null,
"team": null,
"produce_date": "20240307",
"vehicle_type": "LZ",
"planproducestart_date": "2024-02-28 10:07:28",
"planproduceend_date": "2024-02-29 00:00:00",
"realproducestart_date": "2024-03-22 17:10:37",
"realproduceend_date": "2024-03-22 17:40:58",
"standing_time": 1,
"point_code": "HNJ01",
"point_name": "混碾机01",
"region_code": "HN",
"region_name": "混碾区域",
"workorder_status": "5",
"is_needmove": true,
"workorder_type": "1",
"production_order": null,
"passback_status": null,
"workshop_code": null,
"ext_id": null,
"ext_data": "0",
"is_delete": false,
"is_new": true,
"create_id": "1",
"create_name": "管理员",
"create_time": "2024-02-28 10:07:32",
"update_id": "1",
"update_name": "管理员",
"update_time": "2024-03-28 10:09:43",
"is_urgent": false,
"operator": "管理员",
"customer": "",
"inspector": null,
"qualified_qty": 0,
"unqualified_qty": 0,
"material_name": null,
"material_code": null,
"material_spec": null,
"half_material_code": null,
"order_no": null,
"custer_no": null,
"order_subnum": 0,
"guadansum": 0,
"pack_method": null,
"order_number": null,
"product_code": null,
"material_model": null
},
{
"workorder_id": "1762660775601770496",
"workorder_code": "2402280031",
"plan_qty": 0,
"real_qty": 66,
"plan_weight": 1000,
"real_weight": 33,
"real_new_weight": 0,
"real_old_weight": 0,
"material_ratio": 0,
"material_id": "1771048061557149696",
"raw_material_code": "111",
"produce_order": null,
"batch_no": null,
"team": null,
"produce_date": "20240307",
"vehicle_type": "LZ",
"planproducestart_date": "2024-02-28 10:07:28",
"planproduceend_date": "2024-02-29 00:00:00",
"realproducestart_date": "2024-03-22 17:10:37",
"realproduceend_date": "2024-03-22 17:40:58",
"standing_time": 1,
"point_code": "HNJ01",
"point_name": "混碾机01",
"region_code": "HN",
"region_name": "混碾区域",
"workorder_status": "5",
"is_needmove": true,
"workorder_type": "1",
"production_order": null,
"passback_status": null,
"workshop_code": null,
"ext_id": null,
"ext_data": "0",
"is_delete": false,
"is_new": true,
"create_id": "1",
"create_name": "管理员",
"create_time": "2024-02-28 10:07:32",
"update_id": "1",
"update_name": "管理员",
"update_time": "2024-03-28 10:09:43",
"is_urgent": false,
"operator": "管理员",
"customer": "",
"inspector": null,
"qualified_qty": 0,
"unqualified_qty": 0,
"material_name": null,
"material_code": null,
"material_spec": null,
"half_material_code": null,
"order_no": null,
"custer_no": null,
"order_subnum": 0,
"guadansum": 0,
"pack_method": null,
"order_number": null,
"product_code": null,
"material_model": null
}
]
return res
}
// 拆包机下料位满料入货架
export const cbjmlTask = () => {
let res = {"message":"满料入库请求成功"}
return res
}
// 拆包机下料位叫空蛊
export const cbjqkTask = () => {
let res = {"message":"空蛊出库请求成功"}
return res
}
// 压机上料位下拉框
export const yjslwPointList = () => {
let res = [
{
"value": "YJ01SLW01",
"text": "压机01上料位01"
},
{
"value": "YJ01SLW02",
"text": "压机01上料位02"
},
{
"value": "YJ02SLW01",
"text": "压机02上料位01"
},
{
"value": "YJ02SLW02",
"text": "压机02上料位02"
},
{
"value": "YJ03SLW01",
"text": "压机03上料位01"
},
{
"value": "YJ03SLW02",
"text": "压机03上料位02"
},
{
"value": "YJ04SLW01",
"text": "压机04上料位01"
},
{
"value": "YJ04SLW02",
"text": "压机04上料位02"
},
{
"value": "YJ05SLW01",
"text": "压机05上料位01"
},
{
"value": "YJ05SLW02",
"text": "压机05上料位02"
},
{
"value": "YJ06SLW01",
"text": "压机06上料位01"
},
{
"value": "YJ06SLW02",
"text": "压机06上料位02"
},
{
"value": "YJ07SLW01",
"text": "压机07上料位01"
},
{
"value": "YJ07SLW02",
"text": "压机07上料位02"
},
{
"value": "YJ08SLW01",
"text": "压机08上料位01"
},
{
"value": "YJ08SLW02",
"text": "压机08上料位02"
},
{
"value": "YJ09SLW01",
"text": "压机09上料位01"
},
{
"value": "YJ09SLW02",
"text": "压机09上料位02"
}
]
return res
}
// 压机上料位强制回货架
export const qzhhjTask = (code) => {
let res = {"message":"压制上料位强制回库请求成功"}
return res
}
// 查询货架上已拆包料盅信息
export const packShelfInfo = () => {
let res = [
{
"pointCode": "KLHW10",
"materialCode": "MT-14AT",
"instorageTime": "2024-04-07 16:08:59"
}
]
return res
}
// 困料货架点对点到布料机上料位
export const yzqlTask = (sp, ep) => {
let res = {
"message": "布料机上料位请求成功"
}
return res
}
// 物料报废
export const materialScrap = () => {
let res = {"message":"物料作废成功"}
return res
}
// 查询人工分拣点位
export const rgfjPoint = () => {
let res = [
{
"value": "RGFJC01",
"text": "人工分拣拆01"
},
{
"value": "RGFJC02",
"text": "人工分拣拆02"
},
{
"value": "RGFJC03",
"text": "人工分拣拆03"
},
{
"value": "RGFJC04",
"text": "人工分拣拆04"
},
{
"value": "RGFJC05",
"text": "人工分拣拆05"
},
{
"value": "RGFJC06",
"text": "人工分拣拆06"
}
]
return res
}
// 查询缓存货架点位
export const hchjPoint = () => {
let res = [
{
"value": "HCHJ01",
"text": "缓存货架01"
},
{
"value": "HCHJ02",
"text": "缓存货架02"
},
{
"value": "HCHJ03",
"text": "缓存货架03"
},
{
"value": "HCHJ04",
"text": "缓存货架04"
},
{
"value": "HCHJ05",
"text": "缓存货架05"
},
{
"value": "HCHJ06",
"text": "缓存货架06"
},
{
"value": "HCHJ07",
"text": "缓存货架07"
},
{
"value": "HCHJ08",
"text": "缓存货架08"
},
{
"value": "HCHJ09",
"text": "缓存货架09"
},
{
"value": "HCHJ10",
"text": "缓存货架10"
},
{
"value": "HCHJ11",
"text": "缓存货架11"
},
{
"value": "HCHJ12",
"text": "缓存货架12"
},
{
"value": "HCHJ13",
"text": "缓存货架13"
},
{
"value": "HCHJ14",
"text": "缓存货架14"
},
{
"value": "HCHJ15",
"text": "缓存货架15"
},
{
"value": "HCHJ16",
"text": "缓存货架16"
},
{
"value": "HCHJ17",
"text": "缓存货架17"
},
{
"value": "HCHJ18",
"text": "缓存货架18"
},
{
"value": "HCHJ19",
"text": "缓存货架19"
},
{
"value": "HCHJ20",
"text": "缓存货架20"
},
{
"value": "HCHJ21",
"text": "缓存货架21"
},
{
"value": "HCHJ22",
"text": "缓存货架22"
},
{
"value": "HCHJ23",
"text": "缓存货架23"
},
{
"value": "HCHJ24",
"text": "缓存货架24"
},
{
"value": "HCHJ25",
"text": "缓存货架25"
},
{
"value": "HCHJ26",
"text": "缓存货架26"
},
{
"value": "HCHJ27",
"text": "缓存货架27"
},
{
"value": "HCHJ28",
"text": "缓存货架28"
},
{
"value": "HCHJ29",
"text": "缓存货架29"
},
{
"value": "HCHJ30",
"text": "缓存货架30"
},
{
"value": "HCHJ31",
"text": "缓存货架31"
},
{
"value": "HCHJ32",
"text": "缓存货架32"
},
{
"value": "HCHJ33",
"text": "缓存货架33"
},
{
"value": "HCHJ34",
"text": "缓存货架34"
},
{
"value": "HCHJ35",
"text": "缓存货架35"
},
{
"value": "HCHJ36",
"text": "缓存货架36"
},
{
"value": "HCHJ37",
"text": "缓存货架37"
},
{
"value": "HCHJ38",
"text": "缓存货架38"
},
{
"value": "HCHJ39",
"text": "缓存货架39"
},
{
"value": "HCHJ40",
"text": "缓存货架40"
},
{
"value": "HCHJ41",
"text": "缓存货架41"
},
{
"value": "HCHJ42",
"text": "缓存货架42"
},
{
"value": "HCHJ43",
"text": "缓存货架43"
},
{
"value": "HCHJ44",
"text": "缓存货架44"
}
]
return res
}
// 人工分拣叫料
export const rgfjqlTask = (sp, code) => {
let res = {"message":"人工分拣缺料请求成功"}
return res
}
// 人工分拣送空盘
export const rgfjskTask = (code) => {
let res = {"message":"人工分拣送空请求成功"}
return res
}
// 任务管理
export const handTasks = (key, scode, ncode) => {
let res = {
"result": [
{
"material_type": "",
"task_status": "1",
"carrier": "0033",
"task_no": "1800358896351711233",
"create_time": "2024-06-11 10:47:33",
"task_status_name": "执行中",
"next_devicecode": "HCHJ01",
"start_devicecode": "CYHCX39",
"material_type_name": "",
"task_uuid": "718e14a17b744a81bc51a51945355daa",
"task_type": "1",
"priority": "1"
},
{
"material_type": "",
"task_status": "1",
"carrier": "3010",
"task_no": "1800768187059539969",
"create_time": "2024-06-12 13:56:04",
"task_status_name": "执行中",
"next_devicecode": "HNJ03DJW",
"start_devicecode": "KLHW19",
"material_type_name": "",
"task_uuid": "f8e5ab3341f64bee887f4acaf403a4be",
"task_type": "1",
"priority": "1"
},
{
"material_type": "",
"task_status": "1",
"carrier": "3011",
"task_no": "1800771496990347265",
"create_time": "2024-06-12 14:06:44",
"task_status_name": "执行中",
"next_devicecode": "KLHW36",
"start_devicecode": "HNJ03DJW",
"material_type_name": "",
"task_uuid": "177eb5d976d245efbe3d5d56c8e93e22",
"task_type": "1",
"priority": "1"
},
{
"material_type": "",
"task_status": "1",
"carrier": "4011",
"task_no": "1800773119993057281",
"create_time": "2024-06-12 14:15:54",
"task_status_name": "执行中",
"next_devicecode": "HNJ04DJW",
"start_devicecode": "KLHW23",
"material_type_name": "",
"task_uuid": "29053a22a18b489eb0af483d897c0468",
"task_type": "1",
"priority": "1"
},
{
"material_type": "",
"task_status": "1",
"carrier": "0030",
"task_no": "1800819807675879425",
"create_time": "2024-06-12 17:18:44",
"task_status_name": "执行中",
"next_devicecode": "RYHCX01",
"start_devicecode": "YJ02XLW02",
"material_type_name": "",
"task_uuid": "6f8642c70ee14bfc8d2699477fa977c7",
"task_type": "1",
"priority": "1"
},
{
"material_type": "",
"task_status": "0",
"carrier": "",
"task_no": "1800820183942696961",
"create_time": "2024-06-12 17:20:14",
"task_status_name": "就绪",
"next_devicecode": "YJ02XLW02",
"start_devicecode": "CPJCK",
"material_type_name": "",
"task_uuid": "f41e5bfb7b32472fa940a8085c1e6d5e",
"task_type": "1",
"priority": "1"
totalElements: '2',
content: [
{
id: '1813491860891635712',
code: 'MV20240717001',
proc_inst_id: '1813491872891539456',
source_form_id: '',
source_form_type: '',
source_form_date: '',
form_type: 'st_ivt_move',
status: '80',
remark: '',
create_time: '2024-07-17 16:32:07',
create_name: '管理员',
material_id: null,
material_name: null,
material_code: '100',
material_spec: null,
single_weight: null,
qty: '0.000',
assign_qty: '0.000',
unit_id: null,
pcsn: null,
vehicle_code: null,
vehicle_id: null,
form_data: {
stor_code: 'FStockPallet'
},
parent_id: null,
hasChildren: true
}
],
"code": "1",
"desc": "查询成功"
}
return res
}
// 1.2 任务操作
export const handTaskoperation = (type, id) => {
let res = {
"message": "001"
}
return res
}
// 指令管理
export const handInsts = () => {
let res = {
"data": [
{
"task_no": "-087",
"inst_status": "2",
"create_time": "2024-03-28 10:54:39",
"carrier": '001',
"carno": '1号车',
"inst_uuid": "012bc5e653ce48949020f1147333aa7f",
"inst_step": "3",
"instruction_code": '11100',
"next_devicecode": "L1",
"start_devicecode": "RKSSX2",
"instruction_code": "163",
"priority": "1"
data: null,
code: '200',
msg: '查询成功'
}
],
"message": "操作成功"
}
return res
}
export const handInst = (code) => {
let res = {
"message": "001"
}
return res
}

View File

@@ -51,6 +51,7 @@ const request = (params) => {
dataType: 'json',
})
.then(res => { // 成功
uni.hideLoading();
if (res.length === 1) {
uni.showModal({
content: 'request:fail',
@@ -121,10 +122,11 @@ const request = (params) => {
}
})
.catch(err => { // 错误
uni.hideLoading();
reject(err)
})
.finally(() => {
uni.hideLoading();
// uni.hideLoading();
})
})
}

31
vuex/modules/data.js Normal file
View File

@@ -0,0 +1,31 @@
import * as types from '../types'
const state = {
publicObj: '',
publicArr: ''
}
const getters = {
publicObj: state => state.publicObj,
publicArr: state => state.publicArr
}
const actions = {
setPublicObj ({commit}, res) {
commit(types.PUBLIC_OBJ, res)
},
setPublicArr ({commit}, res) {
commit(types.PUBLIC_ARR, res)
}
}
const mutations = {
[types.PUBLIC_OBJ] (state, res) {
state.publicObj = res
},
[types.PUBLIC_ARR] (state, res) {
state.publicArr = res
}
}
export default {
state,
getters,
actions,
mutations
}

View File

@@ -2,11 +2,13 @@ import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import data from './modules/data'
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
user
user,
data
}
})

View File

@@ -7,3 +7,8 @@ export const COM_CONFIG = 'COM_CONFIG'
export const SAVE_USER_INFO = 'SAVE_USER_INFO'
export const DEL_USER_INFO = 'DEL_USER_INFO'
export const SAVE_TOKEN = 'SAVE_TOKEN'
/**
* data
*/
export const PUBLIC_OBJ = 'PUBLIC_OBJ'
export const PUBLIC_ARR = 'PUBLIC_ARR'