全局开发

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; border-collapse: separate;
-webkit-border-horizontal-spacing: 0px; -webkit-border-horizontal-spacing: 0px;
-webkit-border-vertical-spacing: 10rpx; -webkit-border-vertical-spacing: 10rpx;
padding-bottom: 8rpx;
background-color: #f5f5f5; 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; box-sizing: border-box;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
padding: 0 20rpx; padding: 0 20rpx;
text-align: center; background: #d7d7d7;
} }
.slide_new table td:first-child, .slide_new table th:first-child{ .slide_new table th:first-child{
position: sticky;
left: 0; left: 0;
z-index: 101; z-index: 121;
box-shadow: inset -3px 0px 3px 0px rgba(160,160,160,0.20); color: #4e6ef2;
}
.slide_new table thead tr th {
position: sticky;
top: 0;
background: #d7d7d7;
font-size: 26rpx;
line-height: 98rpx;
color: #696969;
font-weight: bold; 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 { .slide_new table th.th_2 {
background: #d7d7d7; 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; font-size: 28rpx;
line-height: 98rpx; line-height: 98rpx;
color: #323232; 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; 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; color: #4e6ef2;
font-weight: bold; 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; color: #d7592f;
font-weight: bold; font-weight: bold;
} }
.slide_new table tbody tr.checked td { .slide_new table tr.checked {
background-color: #f0c560; // background-image: linear-gradient(to top,#c2cde3,#f6f7fb);
background-color: #6190e8;
}
.slide_new table tr.checked td {
background-color: transparent;
color: #fff; color: #fff;
} }
.slide_new table tbody tr.checked td:first-child { .slide_new table tr.checked td:first-child {
border-left: 6rpx solid #ff8227; // 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 { .item-wrapper {

View File

@@ -3,15 +3,15 @@
<input <input
type="text" type="text"
class="filter_input pdr120" class="filter_input pdr120"
confirm-type="go"
:value="value" :value="value"
:focus="focusState" :focus="focusState"
@blur="handleBlur($event)" @focus="handleFocus"
@input="handleChange($event)"> @blur="handleBlur"
@confirm="handleSend">
<view class="zd-row buttons_wraper"> <view class="zd-row buttons_wraper">
<!-- <uni-icons @tap="toDel" type="closeempty" 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 class="pdr10" @tap="toScan" type="scan" size="20" :color="focusState ? '#ff6a00' : '#4e6ef2'"></uni-icons> <uni-icons type="scan" size="22" :color="focusState ? '#ff6a00' : '#4e6ef2'" @tap="focusState=true"></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>
</view> </view>
</view> </view>
</template> </template>
@@ -21,7 +21,6 @@
export default { export default {
data() { data() {
return { return {
cur: '',
focusState: false focusState: false
}; };
}, },
@@ -30,97 +29,28 @@
event: 'input' event: 'input'
}, },
props: { props: {
value: String, 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
}
},
methods: { methods: {
handleChange ($event) { handleFocus () {
this.cur = $event.target.value this.focusState = true
this.$emit('input', this.cur)
this.$emit('handleChange', this.cur)
if (this.focusState) {
this.focusState = false
}
}, },
handleBlur () { handleBlur (e) {
this.focusState = false this.$emit('input', e.target.value)
}, // if (e.target.value.length) {
toSearch () { // this.$emit('handleChange', e.target.value)
this.$emit('toSearch', this.cur) // }
this.focusState = false
}, },
toDel () { toDel () {
this.cur = ''
this.$emit('input', '') this.$emit('input', '')
}, },
toScan () { handleSend (e) {
setTimeout(() => { this.$emit('input', e.target.value)
this.focusState = true if (e.target.value.length) {
},0) this.$emit('handleChange', e.target.value)
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();
}
}
})
}
return status;
}
// #endif
} }
} }
</script> </script>

View File

@@ -113,7 +113,7 @@
} }
,{ ,{
"path" : "pages/outbound/empty-tray-out-store", "path" : "pages/outbound/tray-out-store",
"style" : "style" :
{ {
"navigationStyle": "custom" "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": { "globalStyle": {
// "pageOrientation": "landscape", // "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> <template>
<view class="zd_container"> <view class="zd_container">
<!-- 空托盘入库 -->
<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">
<view class="zd-row border-bottom"> <view class="zd-row border-bottom">
<view class="zd-col-7"> <view class="zd-col-7">
<span class="filter_label"></span> <span class="filter_label">载具</span>
</view> </view>
<view class="zd-col-17 filter_select"> <view class="zd-col-17">
<search-box <search-box
v-model="val1" v-model="val1"
/> />
</view> </view>
</view> </view>
</view>
<view class="zd_wrapper">
<view class="zd-row border-bottom"> <view class="zd-row border-bottom">
<view class="zd-col-7"> <view class="zd-col-7">
<span class="filter_label">重量</span> <span class="filter_label">托盘类型</span>
</view> </view>
<view class="zd-col-17 filter_select"> <view class="zd-col-24 filter_select">
<input type="number" class="filter_input" v-model="obj.material_weight" disabled> <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-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> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="zd-row submit-bar"> <view class="zd-row submit-bar">
<button class="zd-col-6 button-default" @tap="clearUp">清空</button> <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>
</view> </view>
</template> </template>
@@ -51,7 +34,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 {zpxxTask} from '@/utils/getData2.js' import {pdaPalletIostorinvIn} from '@/utils/getData2.js'
export default { export default {
components: { components: {
NavBar, NavBar,
@@ -61,7 +44,8 @@
return { return {
title: '', title: '',
val1: '', val1: '',
obj: {}, options: [{text:'堆叠托盘', value:'22222222'},{text:'料箱',value: '11111111'}],
index: '',
disabled: false disabled: false
}; };
}, },
@@ -71,24 +55,31 @@
created () { created () {
}, },
methods: { methods: {
selectChange (e) {
this.index = e
},
clearUp () { clearUp () {
this.val1 = '' this.val1 = ''
this.obj = {} this.index = ''
this.disabled = false
}, },
async _zpxxTask () { async _pdaPalletIostorinvIn () {
this.disabled = true this.disabled = true
if (!this.val1) { if (!this.val1 || !this.index) {
this.disabled = false this.disabled = false
return return
} }
try { try {
let res = await zpxxTask(this.val1) let res = await pdaPalletIostorinvIn(this.val1, this.index)
this.disabled = false if (res.code === '200') {
uni.showToast({ uni.showToast({
title: res.message, title: res.msg,
icon: 'none' icon: 'none'
}) })
this.obj = res this.clearUp()
} else {
this.disabled = false
}
} catch (e) { } catch (e) {
this.disabled = false this.disabled = false
} }

View File

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

View File

@@ -42,7 +42,7 @@
userName: '', userName: '',
menuList: [ menuList: [
{title: '入库管理', path: 'RF01', sonTree: [{title: '组盘入库', path: '/pages/entry/group-to-store'}, {title: '空托盘入库', path: '/pages/entry/empty-tray-to-store'}]}, {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: 'RF03', sonTree: [{title: '库存信息', path: '/pages/in/store-info'}]},
{title: '拣选管理', path: 'RF04', sonTree: [{title: '拣选作业', path: '/pages/pick/pick-task'}]}, {title: '拣选管理', path: 'RF04', sonTree: [{title: '拣选作业', path: '/pages/pick/pick-task'}]},
{title: '盘点管理', path: 'RF05', sonTree: [{title: '盘点作业', path: '/pages/check/check-task'}]}, {title: '盘点管理', path: 'RF05', sonTree: [{title: '盘点作业', path: '/pages/check/check-task'}]},

View File

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

View File

@@ -62,7 +62,7 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th class="fontcol1">工单编号</th> <th>工单编号</th>
<th>计划数量</th> <th>计划数量</th>
<th>实际数量</th> <th>实际数量</th>
<th>计划重量</th> <th>计划重量</th>
@@ -81,7 +81,7 @@
</thead> </thead>
<tbody> <tbody>
<tr v-for="(e, i) in dataList2" :key="i" @click="toChose2(e)" :class="{'checked': e.workorder_code === pkId2}"> <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.plan_qty}}</td>
<td>{{e.real_qty}}</td> <td>{{e.real_qty}}</td>
<td>{{e.plan_weight}}</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> <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> </view>
</template> </template>
<script> <script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {ioStorageOut} from '@/utils/getData2.js'
export default { export default {
components: {
NavBar,
SearchBox
},
data() { data() {
return { 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> </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> <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> </view>
</template> </template>
<script> <script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {ioStorageOut} from '@/utils/getData2.js'
export default { export default {
components: {
NavBar,
SearchBox
},
data() { data() {
return { 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> </script>

View File

@@ -14,181 +14,52 @@ export const pdaUpdate = () => request({
// 登录 // 登录
export const handLogin = (user, password) => request({ export const handLogin = (user, password) => request({
url:'mobile/auth/login', url:'api/bigScreenScreen/login',
data: { data: {
username: user, user: user,
password: password password: password
} }
}) })
/** /**
* 混碾搬运 * 组盘入库
*/ */
// 查询货架上未拆包料盅信息 // 单据类型
export const unpackShelfInfo = () => request({ export const FormTypes = () => request({
url:'api/pda/unpackShelfInfo', method: 'GET',
data: {} url:'api/bmFormStruc/getTypes?type=pda'
}) })
// 查询拆包机点位 // 单据数据
export const getCbjPoint = () => request({ export const pmFormData = (page, size, sort, form_type) => request({
url:'api/pda/getCbjPoint', method: 'GET',
data: {} url:'api/pmFormData?page=' + page + '&size=' + size + '&sort=' + sort + '&form_type=' + form_type
}) })
// 拆包机叫料 // 组盘确认
export const cbjqlTask = (sp, ep) => request({ export const mdGruopDick = (item, code, type) => request({
url:'api/pda/cbjqlTask', url:'api/mdGruopDick',
data: { data: {item: item, stor_code: code, type: type}
startPoint: sp,
endPoint: ep
}
}) })
// 查询混碾工单
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 pdaPalletIostorinvIn = (code, id) => request({
export const yjslwPointList = () => request({ url:'api/pdaPalletIostorinv/in',
url:'api/pda/yjslwPointList', data: {vehicle_code: code, material_id: id}
data: {}
}) })
// 压机上料位强制回货架
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 pdaPalletIostorinvOut = (id, qty, point) => request({
export const materialScrap = (code) => request({ url:'api/pdaPalletIostorinv/out',
url:'api/pda/materialScrap', data: {material_id: id, qty: qty, pcsn: '1', target_point: point}
data: {
barCode: code
}
}) })
/** /**
* 人工分拣 * 出库确认
*/ */
// 查询人工分拣点位 export const ioStorageOut = (code) => request({
export const rgfjPoint = () => request({ url:'api/ioStorage/out',
url:'api/pda/rgfjPoint', data: {vehicle_code: code}
data: {}
}) })
// 查询缓存货架点位
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 FormTypes = (code) => {
export const unpackShelfInfo = () => { let res = [
let res = [ {
{ lable: '收料通知单明细',
"pointCode": "KLHW03", id: '1778673956455321600',
"materialCode": "ML-60BT", value: 'MRN_DTL'
"instorageTime": "2024-01-11 16:26:55" },
} {
] lable: '收料通知单',
id: '1778676876466851840',
value: 'MRN_MST'
},
{
lable: '出入库单主表',
id: '1780517070820216832',
value: 'st_ivt_iostorinv'
}
]
return res return res
} }
// 查询拆包机点位 export const pmFormData = (code) => {
export const getCbjPoint = () => {
let res = [
{
"value": "CBJKLW",
"text": "拆包机空料位"
},
{
"value": "CBJMLW",
"text": "拆包机满料位"
},
{
"value": "CBJXLW ",
"text": "拆包机下料位"
}
]
return res
}
// 拆包机叫料
export const cbjqlTask = () => {
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 = { let res = {
"result": [ totalElements: '2',
{ content: [
"material_type": "", {
"task_status": "1", id: '1813491860891635712',
"carrier": "0033", code: 'MV20240717001',
"task_no": "1800358896351711233", proc_inst_id: '1813491872891539456',
"create_time": "2024-06-11 10:47:33", source_form_id: '',
"task_status_name": "执行中", source_form_type: '',
"next_devicecode": "HCHJ01", source_form_date: '',
"start_devicecode": "CYHCX39", form_type: 'st_ivt_move',
"material_type_name": "", status: '80',
"task_uuid": "718e14a17b744a81bc51a51945355daa", remark: '',
"task_type": "1", create_time: '2024-07-17 16:32:07',
"priority": "1" create_name: '管理员',
}, material_id: null,
{ material_name: null,
"material_type": "", material_code: '100',
"task_status": "1", material_spec: null,
"carrier": "3010", single_weight: null,
"task_no": "1800768187059539969", qty: '0.000',
"create_time": "2024-06-12 13:56:04", assign_qty: '0.000',
"task_status_name": "执行中", unit_id: null,
"next_devicecode": "HNJ03DJW", pcsn: null,
"start_devicecode": "KLHW19", vehicle_code: null,
"material_type_name": "", vehicle_id: null,
"task_uuid": "f8e5ab3341f64bee887f4acaf403a4be", form_data: {
"task_type": "1", stor_code: 'FStockPallet'
"priority": "1" },
}, parent_id: null,
{ hasChildren: true
"material_type": "", }
"task_status": "1", ],
"carrier": "3011", data: null,
"task_no": "1800771496990347265", code: '200',
"create_time": "2024-06-12 14:06:44", msg: '查询成功'
"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"
}
],
"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"
}
],
"message": "操作成功"
}
return res
}
export const handInst = (code) => {
let res = {
"message": "001"
}
return res return res
} }

View File

@@ -51,6 +51,7 @@ const request = (params) => {
dataType: 'json', dataType: 'json',
}) })
.then(res => { // 成功 .then(res => { // 成功
uni.hideLoading();
if (res.length === 1) { if (res.length === 1) {
uni.showModal({ uni.showModal({
content: 'request:fail', content: 'request:fail',
@@ -121,10 +122,11 @@ const request = (params) => {
} }
}) })
.catch(err => { // 错误 .catch(err => { // 错误
uni.hideLoading();
reject(err) reject(err)
}) })
.finally(() => { .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 Vuex from 'vuex'
import user from './modules/user' import user from './modules/user'
import data from './modules/data'
Vue.use(Vuex) Vue.use(Vuex)
export default new Vuex.Store({ export default new Vuex.Store({
modules: { modules: {
user user,
data
} }
}) })

View File

@@ -6,4 +6,9 @@ export const DEL_LOGIN_NAME = 'DEL_LOGIN_NAME'
export const COM_CONFIG = 'COM_CONFIG' export const COM_CONFIG = 'COM_CONFIG'
export const SAVE_USER_INFO = 'SAVE_USER_INFO' export const SAVE_USER_INFO = 'SAVE_USER_INFO'
export const DEL_USER_INFO = 'DEL_USER_INFO' export const DEL_USER_INFO = 'DEL_USER_INFO'
export const SAVE_TOKEN = 'SAVE_TOKEN' export const SAVE_TOKEN = 'SAVE_TOKEN'
/**
* data
*/
export const PUBLIC_OBJ = 'PUBLIC_OBJ'
export const PUBLIC_ARR = 'PUBLIC_ARR'