rrsUI更新

RS2507
wangsiyang 2025-09-05 15:22:43 +08:00
parent 6e523d701b
commit 0b6999151f
44 changed files with 1707 additions and 545 deletions

View File

@ -0,0 +1,242 @@
<!-- PageBottom.vue -->
<template>
<view class="pageBottom" :style="{ position: position, bottom: isSubmit ? '60rpx' : '0' }">
<!-- 三按钮 -->
<view class="thirdbuttons" v-if="isThird">
<view class="buttonLeft button" @click="onSubmit()">{{ texts[0] }}</view>
<view class="buttonMid button" @click="onCancel()">{{ texts[1] }}</view>
<view class="buttonRight button" @click="onCheck()">{{ texts[2] }}</view>
</view>
<!-- 双按钮 -->
<view class="buttons" v-else-if="isDouble">
<view class="buttonLeft button" @click="onCancel()">{{ texts[0] }}</view>
<view class="buttonRight button" @click="onSubmit()">{{ texts[1] }}</view>
</view>
<!-- 单按钮 -->
<view v-else class="buttons" @click="onSubmit()">
<view class="buttonOne button">{{ texts[0] }}</view>
</view>
</view>
</template>
<script>
export default {
name: 'PageBottom',
// props
props: {
backgroundWhite: {
type: Boolean,
default: false
},
isSubmit: {
type: Boolean,
default: false
},
isWhite: {
type: Boolean,
default: true
},
isThird: {
type: Boolean,
default: false
},
isDouble: {
type: Boolean,
default: false
},
disable: {
type: Boolean,
default: false
},
texts: {
type: Array,
default () {
return ['取消', '确定'];
}
},
text: {
type: String,
default: ''
},
position: {
type: String,
default: 'fixed'
}
},
//
methods: {
onSubmit() {
if (props.disable) return
this.$emit('onSubmit');
},
onCancel() {
if (props.disable) return
this.$emit('onCancel');
},
onCheck() {
if (props.disable) return
this.$emit('onCheck');
}
}
};
</script>
<style scoped lang="scss">
.pageBottom {
left: 0;
bottom: 0;
z-index: 30;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 100%;
padding: 20rpx 0 20rpx;
.button {
display: flex;
justify-content: center;
align-items: center;
width: 686rpx;
height: 72rpx;
font-weight: 400;
font-size: 32rpx;
color: #ffffff;
border-radius: 16rpx;
background: rgb(22, 93, 255);
}
.backgroundWhite {
background: #fff;
color: #165dff;
border: 2rpx solid rgb(22, 93, 255);
}
.buttons {
display: flex;
justify-content: center;
width: 100%;
position: fixed;
bottom: 0;
left: 0;
padding: 24rpx 0 60rpx;
background-color: #fff;
.buttonOne {
display: flex;
justify-content: center;
align-items: center;
height: 90rpx;
width: 664rpx;
box-sizing: border-box;
background: rgb(22, 93, 255);
border-radius: 16rpx;
color: #FFFFFF;
font-weight: 400;
font-size: 32rpx;
}
.buttonLeft {
display: flex;
justify-content: center;
align-items: center;
height: 90rpx;
width: 332rpx;
box-sizing: border-box;
background: rgb(22, 93, 255);
border-radius: 16rpx;
color: #FFFFFF;
font-weight: 400;
font-size: 32rpx;
}
.buttonRight {
display: flex;
justify-content: center;
align-items: center;
height: 90rpx;
width: 332rpx;
border-radius: 16rpx;
background: rgb(22, 93, 255);
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
margin-left: 22rpx;
}
}
.thirdbuttons {
display: flex;
justify-content: center;
width: 100%;
position: fixed;
bottom: 0;
left: 0;
padding: 10rpx 0 60rpx;
background-color: #fff;
.buttonLeft {
display: flex;
justify-content: center;
align-items: center;
height: 72rpx;
width: 232rpx;
box-sizing: border-box;
border: 2rpx solid rgb(22, 93, 255);
border-radius: 16rpx;
background: rgb(255, 255, 255);
color: #165DFF;
font-weight: 400;
font-size: 32rpx;
}
.buttonMid {
display: flex;
justify-content: center;
align-items: center;
height: 72rpx;
width: 232rpx;
box-sizing: border-box;
border: 2rpx solid rgb(22, 93, 255);
border-radius: 16rpx;
background: rgb(255, 255, 255);
color: #165DFF;
font-weight: 400;
font-size: 32rpx;
margin-left: 10rpx;
}
.buttonRight {
display: flex;
justify-content: center;
align-items: center;
height: 72rpx;
width: 232rpx;
border-radius: 16rpx;
background: rgb(22, 93, 255);
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
margin-left: 10rpx;
}
}
}
.contentWhite {
content: '';
position: fixed;
left: 0;
bottom: 0;
width: 100%;
height: 240rpx;
background: linear-gradient(to bottom,
#f3ece400 0%,
#F2F3F5 100%);
pointer-events: none;
}
</style>

View File

@ -1,7 +1,7 @@
<template>
<view>
<view class="cu-custom" :style="[{height:CustomBar + 'px'}]">
<view class="cu-bar fixed" :style="style" :class="[bgImage!=''?'none-bg text-white bg-img':'',bgColor]">
<view class="cu-bar fixed" :style="style" :class="[bgImage!=''?'none-bg text-white bg-img':'']">
<view class="action" @tap="BackPage" v-if="isBack">
<text class="cuIcon-back"></text>
<slot name="backText"></slot>
@ -61,5 +61,7 @@
</script>
<style>
.cu-bar{
background-color: #fff;
}
</style>

View File

@ -11,7 +11,7 @@
==================== */
body {
background-color: #f1f1f1;
background-color: #fff;
font-size: 28upx;
color: #333333;
font-family: Helvetica Neue, Helvetica, sans-serif;
@ -180,7 +180,7 @@ switch .uni-switch-input {
switch .wx-switch-input:not([class*="bg-"]),
switch .uni-switch-input:not([class*="bg-"]) {
background: #8799a3 !important;
background: #165DFF !important;
}
switch .wx-switch-input::after,
@ -1071,7 +1071,7 @@ button.cuIcon.lg {
flex-direction: column;
justify-content: center;
font-size: 28upx;
z-index: 9999;
z-index: 99;
line-height: 2.4em;
}
@ -1885,7 +1885,7 @@ button.cuIcon.lg {
padding-right: 150upx;
/* #endif */
box-shadow: 0upx 0upx 0upx;
z-index: 9999;
z-index: 99;
}
.cu-custom .cu-bar .border-custom {

6
package-lock.json generated 100644
View File

@ -0,0 +1,6 @@
{
"name": "pda_uniapp",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}

View File

@ -199,24 +199,24 @@
}
],
"tabBar": {
"color": "#000000",
"selectedColor": "#000000",
"selectedColor":"#165DFF",
"color":"#4E5969",
"borderStyle": "white",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/index",
"iconPath": "static/images/tabbar/home.png",
"selectedIconPath": "static/images/tabbar/home_.png",
"selectedIconPath": "static/images/tabbar/homeS.png",
"text": "首页"
}, {
"pagePath": "pages/work/index",
"iconPath": "static/images/tabbar/work.png",
"selectedIconPath": "static/images/tabbar/work_.png",
"selectedIconPath": "static/images/tabbar/workS.png",
"text": "工作台"
}, {
"pagePath": "pages/mine/index",
"iconPath": "static/images/tabbar/mine.png",
"selectedIconPath": "static/images/tabbar/mine_.png",
"selectedIconPath": "static/images/tabbar/mineS.png",
"text": "我的"
}]
},

View File

@ -1,5 +1,5 @@
<template>
<view>
<view class="home-container">
<!-- <image class="logo" src="@/static/images/superMan.png"></image>
<view class="text-area">
<text class="title">这里是主页放几个统计图</text>
@ -13,7 +13,7 @@
v-if="item.type=='video'"></video>
</swiper-item>
</swiper>
<uni-section title="系统功能" type="line"></uni-section>
<!-- <uni-section title="系统功能" type="line"></uni-section> -->
</view>
</template>
@ -126,6 +126,12 @@
</script>
<style>
.home-container {
background: linear-gradient(180.00deg, rgb(181, 202, 245) 0%, rgb(184, 204, 245) 40.449%, rgba(213, 227, 249, 0) 87.96%);
width: 100%;
height: 90vh;
overflow: hidden;
}
.content {
display: flex;
flex-direction: column;

View File

@ -1,17 +1,20 @@
<!--登录界面-->
<template>
<view class="normal-login-container">
<view class=" margin-top ">
<img class="logo" src="/static/logo200.png" mode="widthFix">
<div class="head">RRS APP</div>
<view class="loginBg">
<img class="logo" src="/static/images/loginBg.png" mode="widthFix">
</view>
<view class="login-form-content">
<view class="input-item flex align-center">
<view class="iconfont icon-user icon"></view>
<view class="login-icon">
<img src="/static/images/user.png" alt="" srcset="" />
</view>
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
</view>
<view class="input-item flex align-center">
<view class="iconfont icon-password icon"></view>
<view class="login-icon">
<img src="/static/images/pass.png" alt="" srcset="" />
</view>
<input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
</view>
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
@ -147,14 +150,16 @@
page {
background-color: #ffffff;
}
.loginBg{
position: absolute;
top: 0;
left: 0;
width: 100%;
}
.logo {
width: 60px !important;
margin-top: 10px !important;
margin-bottom: 10px !important;
margin-left: 20px !important;
border: none;
background-color: transparent;
width: 100%;
height:700rpx;
opacity: 0.66;
}
.head {
@ -172,7 +177,8 @@
.normal-login-container {
width: 100%;
height: 100vh;
overflow: hidden;
.logo-content {
width: 100%;
font-size: 21px;
@ -191,15 +197,26 @@
.login-form-content {
text-align: center;
margin: 20px auto;
margin-top: 15%;
margin-top: 400px;
width: 80%;
.input-item {
margin: 20px auto;
background-color: #f5f6f7;
height: 45px;
border-radius: 20px;
width: 606rpx;
height: 100rpx;
margin: 36rpx auto;
border-radius: 24rpx;
box-shadow: 0px 1rpx 5rpx 0px rgba(4, 8, 43, 0.04);
/* #F7F8FA_禁用浅色1 */
background: rgb(247, 248, 250);
padding-left: 42rpx;
.login-icon{
width: 52rpx;
height: 52rpx;
img{
width: 52rpx;
height: 52rpx;
}
}
.icon {
font-size: 38rpx;
margin-left: 10px;
@ -219,6 +236,11 @@
.login-btn {
margin-top: 40px;
height: 45px;
border-radius: 24rpx;
box-shadow: 0px 1rpx 5rpx 0px rgba(4, 8, 43, 0.04);
/* #165DFF_主色 */
background: rgb(22, 93, 255);
}
.reg {

View File

@ -7,11 +7,11 @@
</view>
<view class="login-form-content">
<view class="input-item flex align-center">
<view class="iconfont icon-user icon"></view>
<view class="login-user"></view>
<input v-model="registerForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
</view>
<view class="input-item flex align-center">
<view class="iconfont icon-password icon"></view>
<view class="login-password"></view>
<input v-model="registerForm.password" type="password" class="input" placeholder="请输入密码"
maxlength="20" />
</view>
@ -157,17 +157,23 @@
width: 80%;
.input-item {
margin: 20px auto;
background-color: #f5f6f7;
height: 45px;
border-radius: 20px;
width: 606px;
height: 100px;
margin: 18px auto;
border-radius: 24px;
box-shadow: 0px 1px 5px 0px rgba(4, 8, 43, 0.04);
/* #F7F8FA_禁用浅色1 */
background: rgb(247, 248, 250);
.icon {
font-size: 38rpx;
margin-left: 10px;
color: #999;
}
.login-password{
width: 52px;
height: 52px;
background-image: url('');
}
.input {
width: 100%;
font-size: 14px;

View File

@ -1,50 +1,79 @@
<template>
<view class="work-container">
<!--顶部个人信息栏-->
<view class="header-section ">
<view class="flex justify-between">
<view class="flex align-center">
<view v-if="!avatar" class="cu-avatar xl round bg-white">
<view class="iconfont icon-people text-gray icon"></view>
</view>
<image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round"
mode="widthFix">
</image>
<view v-if="!name" @click="handleToLogin" class="login-tip">
点击登录
</view>
<view v-if="name" @click="handleToInfo" class="user-info">
<view class="u_title">
Hi.{{ name }}
</view>
<view class="s_text">
欢迎使用RF
</view>
</view>
</view>
<!-- <view @click="handleToInfo" class="flex align-center">
<text>个人信息</text>
<view class="iconfont icon-right"></view>
</view> -->
</view>
</view>
<!-- 轮播图 -->
<swiper class="screen-swiper" :class="dotStyle?'square-dot':'round-dot'" :indicator-dots="true" :circular="true"
<swiper class="work-swiper" :class="dotStyle?'square-dot':'round-dot'" :indicator-dots="true" :circular="true"
:autoplay="true" interval="5000" duration="500">
<swiper-item v-for="(item,index) in swiperList" :key="index">
<image :src="item.url" mode="aspectFill" v-if="item.type=='image'"></image>
<image :src="item.url" v-if="item.type=='image'"></image>
<video :src="item.url" autoplay loop muted :show-play-btn="false" :controls="false" objectFit="cover"
v-if="item.type=='video'"></video>
</swiper-item>
</swiper>
<uni-section title="请选择业务操作 >>>" type="line"></uni-section>
<view>
<scroll-view scroll-y class="page">
<view class="grid-body">
<uni-grid :column="4" :showBorder="true">
<uni-grid-item v-for="(item,index) in wmsRouter" :key="index">
<view class="grid-item-box" @click="navChange(item)">
<uni-icons :class='item.icon' size="30"></uni-icons>
<text class="text">{{item.title}}</text>
</view>
</uni-grid-item>
</uni-grid>
<view class="grid-body">
<view class="bodytitle">
业务操作
</view>
<view class="bodybox">
<view v-for="(item,index) in wmsRouter" class="bodyboxitem" :key="index">
<view class="grid-item-box" @click="navChange(item)">
<!-- <uni-icons :class='item.icon' size="30"></uni-icons> -->
<image :src="item.icon" ></image>
<text class="text">{{item.title}}</text>
</view>
</view>
</scroll-view>
<view style="width: 140rpx;"></view>
<view style="width: 140rpx;"></view>
<view style="width: 140rpx;"></view>
</view>
</view>
<template v-if="userRoutes.length>0">
<view class="grid-body" v-if="userRoutes.length>0">
<template v-for="oneMenuList in userRoutes">
<uni-section :title='oneMenuList.title' type="line"></uni-section>
<view>
<scroll-view scroll-y class="page">
<view class="grid-body">
<uni-grid :column="4" :showBorder="true">
<uni-grid-item v-for="(item,index) in oneMenuList.children" :key="index">
<view class="grid-item-box" @click="navChange(item)">
<uni-icons :class='item.icon' size="30" :color='item.color'></uni-icons>
<text class="text">{{item.title}}</text>
</view>
</uni-grid-item>
</uni-grid>
<view class="bodytitle">
{{oneMenuList.title}}
</view>
<view class="bodybox">
<view v-for="(item,index) in oneMenuList.children" class="bodyboxitem" :key="index">
<view class="grid-item-box" @click="navChange(item)">
<uni-icons :class='item.icon' size="30"></uni-icons>
<text class="text">{{item.title}}</text>
</view>
</scroll-view>
</view>
<view style="width: 140rpx;"></view>
<view style="width: 140rpx;"></view>
<view style="width: 140rpx;"></view>
</view>
</template>
</template>
</view>
</view>
</view>
</template>
@ -57,44 +86,58 @@
data() {
return {
wmsRouter,
name: this.$store.state.user.name,
swiperList: [
// {
// id: 0,
// type: 'image',
// url: '/static/images/banner/banner01.jpg'
// }, {
// id: 1,
// type: 'image',
// url: '/static/images/banner/banner02.jpg',
// }, {
// id: 2,
// type: 'image',
// url: '/static/images/banner/banner03.jpg'
// },
{
id: 3,
type: 'image',
url: '/static/images/banner/banner04.jpg'
}, {
id: 4,
type: 'image',
url: '/static/images/banner/banner05.jpg'
}, {
id: 5,
type: 'image',
url: '/static/images/banner/banner06.jpg'
}, {
id: 6,
type: 'image',
url: '/static/images/banner/banner07.jpg'
}, ],
// {
// id: 0,
// type: 'image',
// url: '/static/images/banner/banner01.jpg'
// }, {
// id: 1,
// type: 'image',
// url: '/static/images/banner/banner02.jpg',
// }, {
// id: 2,
// type: 'image',
// url: '/static/images/banner/banner03.jpg'
// },
{
id: 3,
type: 'image',
url: '/static/images/banner/banner04.jpg'
}, {
id: 4,
type: 'image',
url: '/static/images/banner/banner05.jpg'
}, {
id: 5,
type: 'image',
url: '/static/images/banner/banner06.jpg'
}, {
id: 6,
type: 'image',
url: '/static/images/banner/banner07.jpg'
},
],
towerStart: 0,
direction: '',
dotStyle: true,
userRoutes: []
}
},
computed: {
avatar() {
return this.$store.state.user.avatar
},
windowHeight() {
return uni.getSystemInfoSync().windowHeight - 50
},
warehouseinfo() {
if (Array.isArray(this.warehouse) && this.warehouse.length > 0) {
return '【' + this.warehouse[0].warehouseCode + '】' + this.warehouse[0].warehouseName
}
}
},
onLoad() {
this.TowerSwiper('swiperList');
this.direction = 'left';
@ -167,7 +210,7 @@
}
</script>
<style lang="scss">
<style scoped lang="scss">
@import url("../../components/colorui/main.css");
@import url("../../components/colorui/icon.css");
@ -186,11 +229,84 @@
line-height: inherit;
}
.work-swiper {
width: 686rpx;
height: 180rpx;
margin: 0 auto;
border-radius: 24rpx;
image {
width: 686rpx;
height: 180rpx;
border-radius: 24rpx;
}
video {
width: 686rpx;
height: 180rpx;
border-radius: 24rpx;
}
}
.header-section {
padding: 40rpx 32rpx;
color: white;
.login-tip {
font-size: 18px;
margin-left: 10px;
}
.cu-avatar {
width: 80rpx;
height: 80rpx;
border: 2px solid #eaeaea;
border-radius: 24rpx;
.icon {
font-size: 40px;
}
}
.user-info {
margin-left: 36rpx;
.u_title {
color: rgb(255, 255, 255);
font-family: 苹方-;
font-size: 42rpx;
font-weight: 500;
line-height: 59rpx;
letter-spacing: 0%;
text-align: left;
}
.s_text {
color: rgb(255, 255, 255);
font-family: 苹方-;
font-size: 24rpx;
font-weight: 400;
line-height: 34rpx;
letter-spacing: 0%;
text-align: left;
margin-top: 10rpx;
}
}
}
/* #endif */
.work-container {
background: linear-gradient(180.00deg, rgb(181, 202, 245) 0%, rgb(184, 204, 245) 40.449%, rgba(213, 227, 249, 0) 87.96%);
width: 100%;
height: 90vh;
overflow: hidden;
}
.text {
text-align: center;
font-size: 26rpx;
font-size: 28rpx;
font-weight: 400;
margin-top: 10rpx;
}
@ -203,6 +319,10 @@
align-items: center;
justify-content: center;
padding: 15px 0;
image{
width: 100rpx;
height: 100rpx;
}
}
.uni-margin-wrap {
@ -219,6 +339,38 @@
height: 150px;
}
.grid-body {
width: 686rpx;
border-radius: 24rpx;
padding: 32rpx;
margin: 32rpx auto;
box-shadow: 0px 4rpx 11rpx 0px rgba(111, 150, 198, 0.09), 0px 4px 84px 0px rgba(130, 154, 190, 0.11);
background: rgb(255, 255, 255);
.bodytitle {
color: rgb(29, 33, 41);
font-family: 苹方-;
font-size: 32rpx;
font-weight: 500;
line-height: 45rpx;
letter-spacing: 0px;
text-align: left;
margin-bottom: 10rpx;
}
.bodybox {
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: space-evenly;
}
.bodyboxitem {
width: 140rpx;
height: 195rpx;
}
}
.swiper-item {
/* #ifndef APP-NVUE */
display: flex;

View File

@ -1,19 +1,22 @@
<!--托盘信息查询-->
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content"> 整巷道清空</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" labelWidth="80px">
<uni-forms-item label="货位编号" name="locCode">
<view class="flex-twice padding-0 radius">
<uni-easyinput v-model="locCode" placeholder="请扫描货位编号" @blur="queryLocInfo" />
<view class="fromItem">
<view class="flex-twice padding-0 radius">
<uni-easyinput v-model="locCode" placeholder="请扫描货位编号" @blur="queryLocInfo" />
</view>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
</uni-forms>
<button type="primary" @click="handleClear"></button>
<!-- <button type="primary" @click="handleClear"></button> -->
<!-- 货位信息表格 -->
<view v-if='locList.length>0'>
@ -31,12 +34,16 @@
</view>
</view>
</view>
<bottomBtn :isSubmit="true" :isWhite="false" position="fixed" :texts="['一键清空']"
@onSubmit="handleClear"></bottomBtn>
</view>
</template>
<script>
import { queryEmptyLoc, clearEmptyLoc } from "@/api/wms/agvRf.js"
import {
bottomBtn
} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
@ -54,6 +61,9 @@
}
};
},
component: {
bottomBtn
},
onReady() {
this.$refs.form.setRules(this.rules)
},
@ -130,6 +140,82 @@
</script>
<style lang="scss">
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea {
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea {
width: 100% !important;
border: unset !important;
}
::v-deep .is-input-border {
border: unset;
}
::v-deep .uni-easyinput__placeholder-class {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input {
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom {
display: none;
}
::v-deep .uniui-top {
display: none;
}
.fromItem {
display: flex;
align-items: center;
}
.example {
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
/* 原有样式保留 */
.cu-form-group .title {
min-width: calc(4em + 15px);

View File

@ -1,51 +1,64 @@
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content">空容器出库</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
<uni-forms-item label="空容器" name="palletCode">
<uni-easyinput v-model="ktpCode" disabled />
</uni-forms-item>
<uni-forms-item label="货位编号" name="locCode">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput"/>
</uni-forms-item>
<uni-forms-item label="容器数量" name="skuQty" >
<uni-easyinput v-model="formData.skuQty" disabled type="number" placeholder="请输入物料数量"/>
</uni-forms-item>
</uni-forms>
<uni-forms-item label="空容器" name="palletCode">
<view class="fromItem">
<uni-easyinput v-model="ktpCode" disabled />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="货位编号" name="locCode">
<view class="fromItem">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="容器数量" name="skuQty">
<view class="fromItem">
<uni-easyinput v-model="formData.skuQty" disabled type="number" placeholder="请输入物料数量" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<view class="button-group">
<button type="primary" style="width: 200px;" :disabled="isButtonDisabled" @click="submitPallet"></button>
</view>
</uni-forms>
</view>
<view class="cu-modal" :class="msgModalName=='Modal'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<view class="content">{{msgTitleName}}</view>
<view class="action" @tap="hideMsgModal">
<text class="cuIcon-close text-red"></text>
<!-- <view class="button-group">
<button type="primary" style="width: 200px;" :disabled="isButtonDisabled"
@click="submitPallet">呼叫出库</button>
</view> -->
</view>
<bottomBtn :isSubmit="true" :isWhite="false" position="fixed" :disable="isButtonDisabled"
:texts="['确认叫料']" @onSubmit="submitPallet"></bottomBtn>
<view class="cu-modal" :class="msgModalName=='Modal'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<view class="content">{{msgTitleName}}</view>
<view class="action" @tap="hideMsgModal">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<view class="padding-xl">
{{msg}}
</view>
</view>
<view class="padding-xl">
{{msg}}
</view>
</view>
</view>
</view>
</template>
<script>
import {
getSkuDictionary,getSkuTypes
getSkuDictionary,
getSkuTypes
} from "@/api/wms/sku.js"
import {
callEmptyOut
@ -56,15 +69,16 @@
import {
formatDate
} from 'tough-cookie';
import {bottomBtn} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
isButtonDisabled:false,
autoCall:true,
ktpCode:"KTP0001",
msgTitleName:'标题',
msg:'消息',
msgModalName:"",
isButtonDisabled: false,
autoCall: true,
ktpCode: "KTP0001",
msgTitleName: '标题',
msg: '消息',
msgModalName: "",
//
formData: {
locCode: "",
@ -88,53 +102,121 @@
};
},
onLoad() {
},
onReady() {
this.$refs.form.setRules(this.rules)
},
component:{
bottomBtn
},
watch: {
},
methods: {
//
trimLocInput(event) {
this.formData.locCode = event.target.value.trim();
this.formData.locCode = event.target.value.trim();
},
//AGV
submitPallet: function() {
//this.msgModalName='Modal'
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
if(!this.formData.locCode){
this.$modal.closeLoading()
}
const whcode=this.$store.state.user.warehouse[0]?.warehouseCode;
var data={
locCode:this.formData.locCode,
userCode:this.$store.state.user.name,
warehouseCode:whcode
}
callEmptyOut(data).then(response => {
console.log("response", response)
this.$modal.msgSuccess("呼叫入库成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
if (!this.formData.locCode) {
this.$modal.closeLoading()
}
const whcode = this.$store.state.user.warehouse[0]?.warehouseCode;
var data = {
locCode: this.formData.locCode,
userCode: this.$store.state.user.name,
warehouseCode: whcode
}
callEmptyOut(data).then(response => {
console.log("response", response)
this.$modal.msgSuccess("呼叫入库成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
},
hideMsgModal(e) {
//
this.msgModalName = null;
},
}
}
</script>
<style lang="scss">
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea{
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea{
width: 100%!important;
border: unset!important;
}
::v-deep .is-input-border{
border: unset;
}
::v-deep .uni-easyinput__placeholder-class{
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input{
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder{
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom{
display: none;
}
::v-deep .uniui-top{
display: none;
}
.fromItem{
display: flex;
align-items: center;
}
.example {
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
.cu-form-group .title {
min-width: calc(4em + 15px);
}
@ -143,10 +225,7 @@
background-color: #ffffff;
}
.example {
padding: 15px;
background-color: #fff;
}
.segmented-control {
margin-bottom: 15px;
@ -171,11 +250,12 @@
line-height: 35px;
margin-left: 10px;
}
.switch-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #eee;
}
.switch-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #eee;
}
</style>

View File

@ -1,42 +1,59 @@
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content">人工叫料</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
<uni-forms-item label="工位" name="locCode">
<uni-data-select v-model="formData.locCode" :localdata="stations" placeholder="请选择货位">
</uni-data-select>
</uni-forms-item>
<uni-forms-item label="物料类型" name="skuType">
<uni-data-select v-model="skuType" :localdata="skuTypeList" @change="changeSkuType" placeholder="请选择物料类型">
</uni-data-select>
</uni-forms-item>
<uni-forms-item label="物料" name="skuCode">
<uni-easyinput v-model="skuInput" placeholder="输入物料码" @input="onSkuInput"
@focus="showSkuDropdown = true" @blur="handleSkuBlur" />
<view class="sku-dropdown" v-if="showSkuDropdown && filteredSkuList.length > 0">
<view v-for="item in filteredSkuList" :key="item.value" class="dropdown-item"
@mousedown.prevent="selectSku(item)">
{{ item.text }}
</view>
<view class="fromItem">
<uni-data-select v-model="formData.locCode" :localdata="stations" placeholder="请选择货位">
</uni-data-select>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="" name="">
<textarea class="full-width-textarea" v-model="skuInfo"></textarea>
<uni-forms-item label="物料类型" name="skuType">
<view class="fromItem">
<uni-data-select v-model="skuType" :localdata="skuTypeList" @change="changeSkuType"
placeholder="请选择物料类型">
</uni-data-select>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料" name="skuCode">
<view class="fromItem">
<uni-easyinput v-model="skuInput" placeholder="输入物料码" @input="onSkuInput"
@focus="showSkuDropdown = true" @blur="handleSkuBlur" />
<view class="sku-dropdown" v-if="showSkuDropdown && filteredSkuList.length > 0">
<view v-for="item in filteredSkuList" :key="item.value" class="dropdown-item"
@mousedown.prevent="selectSku(item)">
{{ item.text }}
</view>
</view>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<view class="textarea">
<textarea class="full-width-textarea" v-model="skuInfo">
</textarea>
</view>
<uni-forms-item label="库存数量" name="countQty">
<uni-easyinput v-model="countQty" disabled="true" />
<view class="fromItem">
<uni-easyinput v-model="countQty" disabled="true" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
</uni-forms>
<!--
<view class="button-group">
<button type="primary" :disabled="isButtonDisabled" style="width: 100px;" @click="callAgv"></button>
</view>
</view> -->
</view>
<bottomBtn :isSubmit="true" :isWhite="false" position="fixed" :disable="isButtonDisabled" :texts="['确认叫料']"
@onSubmit="callAgv"></bottomBtn>
<view class="cu-modal" :class="msgModalName=='Modal'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
@ -74,6 +91,9 @@
import {
formatDate
} from 'tough-cookie';
import {
bottomBtn
} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
@ -86,7 +106,7 @@
isButtonDisabled: false,
autoCall: true,
skuInfo: "",
countQty:"",
countQty: "",
callStatus: "已开启自动呼叫空容器",
//
formData: {
@ -225,7 +245,9 @@
onReady() {
this.$refs.form.setRules(this.rules)
},
component: {
bottomBtn
},
watch: {
async skuType(newVal) {
@ -239,7 +261,7 @@
this.filteredSkuList = data.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`,
qtyDesc:`托数:${item.ext1} 总数量:${item.ext2}`
qtyDesc: `托数:${item.ext1} 总数量:${item.ext2}`
}));
}
},
@ -252,7 +274,7 @@
.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`,
qtyDesc:`托数:${item.ext1} 总数量:${item.ext2}`
qtyDesc: `托数:${item.ext1} 总数量:${item.ext2}`
}));
this.showSkuDropdown = true;
},
@ -298,10 +320,10 @@
this.skuTypeList = await getSkuTypes();
console.log("this.skutypeList", this.skuTypeList)
},
changeSkuType(){
this.skuInput='';
this.skuInfo='';
this.countQty='';
changeSkuType() {
this.skuInput = '';
this.skuInfo = '';
this.countQty = '';
},
//
// async getSkus() {
@ -501,6 +523,83 @@
</script>
<style lang="scss">
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea {
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea {
width: 100% !important;
border: unset !important;
}
::v-deep .is-input-border {
border: unset;
}
::v-deep .uni-easyinput__placeholder-class {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input {
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom {
display: none;
}
::v-deep .uniui-top {
display: none;
}
.fromItem {
display: flex;
align-items: center;
}
.example {
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
.sku-dropdown {
position: absolute;
z-index: 1000;
@ -536,10 +635,7 @@
background-color: #ffffff;
}
.example {
padding: 15px;
background-color: #fff;
}
.segmented-control {
margin-bottom: 15px;

View File

@ -1,16 +1,20 @@
<!--托盘信息查询-->
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content">托盘信息查询</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
<uni-forms-item label="托盘编号" name="palletCode">
<view class="flex-twice padding-0 radius">
<uni-easyinput v-model="formData.palletCode" placeholder="请输入托盘编号" @blur="queryPalletInfo" />
<view class="fromItem">
<view class="flex-twice padding-0 radius">
<uni-easyinput v-model="formData.palletCode" placeholder="请输入托盘编号" @blur="queryPalletInfo" />
</view>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
<!-- <view class="flex-sub padding-0 margin-xs radius">
<view class="cu-capsule radius" v-if="palletInfo.needPickQty>0">
<view class='cu-tag bg-blue '>
@ -20,7 +24,9 @@
</view> -->
</uni-forms-item>
</uni-forms>
<button type="primary" @click="formSubmit"></button>
<!-- <button type="primary" @click="formSubmit"></button> -->
<bottomBtn :isSubmit="true" :isWhite="false" position="fixed" :texts="['托盘解绑']"
@onSubmit="formSubmit"></bottomBtn>
<!--明细-->
<view v-if='palletInfo.details.length>0'>
<view class="uni-container">
@ -100,6 +106,9 @@
import {
formateDate
} from 'tough-cookie'
import {
bottomBtn
} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
@ -151,6 +160,9 @@
onReady() {
this.$refs.form.setRules(this.rules)
},
component: {
bottomBtn
},
methods: {
btnModify(e) {
console.log("修改按钮", e);
@ -342,9 +354,81 @@
background-color: #ffffff;
}
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea {
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea {
width: 100% !important;
border: unset !important;
}
::v-deep .is-input-border {
border: unset;
}
::v-deep .uni-easyinput__placeholder-class {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input {
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom {
display: none;
}
::v-deep .uniui-top {
display: none;
}
.fromItem {
display: flex;
align-items: center;
}
.example {
padding: 15px;
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
.segmented-control {

View File

@ -1,7 +1,7 @@
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content">空工装返回</block>
</cu-custom>
<view class="example">
@ -14,14 +14,15 @@
</view>
</view>
</uni-section>
<!--
<view class="button-container">
<button class="action-button" type="primary" @click="showEditDialog">
<text>修改工位</text>
</button>
</view>
</view> -->
</view>
<bottomBtn :isSubmit="true" :isWhite="false" position="fixed" :disable="isButtonDisabled"
:texts="['修改工位']" @onSubmit="showEditDialog"></bottomBtn>
<!-- 工位编辑弹窗 -->
<uni-popup ref="editDialog" type="dialog">
<uni-popup-dialog mode="input" title="工位管理"
@ -36,7 +37,7 @@
<script>
import { getStation, setStation } from '@/utils/station'
import { returnEmptyRack } from "@/api/wms/bill.js"
import {bottomBtn} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
@ -49,6 +50,9 @@ export default {
mounted() {
this.loadStations();
},
component:{
bottomBtn
},
methods: {
//
loadStations() {
@ -122,9 +126,10 @@ export default {
</script>
<style lang="scss">
.container {
padding: 20rpx;
}
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.station-container {
display: flex;
@ -132,7 +137,14 @@ export default {
gap: 20rpx;
padding: 20rpx;
}
.example {
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
.station-item {
position: relative;
background-color: #f0f0f0;

View File

@ -1,66 +1,80 @@
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="content">物料组盘 AGV入库</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
<uni-forms-item label="生产线" name="lineCode">
<uni-data-select v-model="formData.lineCode" :localdata="lineCodeList"
placeholder="请选择收货线体">
</uni-data-select>
<view class="fromItem">
<uni-data-select v-model="formData.lineCode" :localdata="lineCodeList" placeholder="请选择收货线体">
</uni-data-select>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料类型" name="skuType">
<uni-data-select v-model="skuType" :localdata="skuTypeList" @change="changeSkuType"
placeholder="请选择物料类型">
</uni-data-select>
<view class="fromItem">
<uni-data-select v-model="skuType" :localdata="skuTypeList" @change="changeSkuType"
placeholder="请选择物料类型">
</uni-data-select>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料" name="skuCode">
<uni-easyinput
v-model="skuInput"
placeholder="输入物料码"
@input="onSkuInput"
@focus="showSkuDropdown = true"
@blur="handleSkuBlur"
/>
<view class="sku-dropdown" v-if="showSkuDropdown && filteredSkuList.length > 0">
<view
v-for="item in filteredSkuList"
:key="item.value"
class="dropdown-item"
@mousedown.prevent="selectSku(item)"
>
{{ item.text }}
</view>
</view>
</uni-forms-item>
<uni-forms-item label="" name="">
<textarea class="full-width-textarea" v-model="skuInfo" >
</textarea >
</uni-forms-item>
<view class="fromItem">
<uni-easyinput v-model="skuInput" placeholder="输入物料码" @input="onSkuInput"
@focus="showSkuDropdown = true" @blur="handleSkuBlur" />
<view class="sku-dropdown" v-if="showSkuDropdown && filteredSkuList.length > 0">
<view v-for="item in filteredSkuList" :key="item.value" class="dropdown-item"
@mousedown.prevent="selectSku(item)">
{{ item.text }}
</view>
</view>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<view class="textarea">
<textarea class="full-width-textarea" v-model="skuInfo">
</textarea>
</view>
<uni-forms-item label="托盘编号" name="palletCode">
<uni-easyinput v-model="formData.palletCode" placeholder="请扫描托盘号" @blur="trimPalletInput"/>
<view class="fromItem">
<uni-easyinput v-model="formData.palletCode" placeholder="请扫描托盘号" @blur="trimPalletInput" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="货位编号" name="locCode">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput"/>
<view class="fromItem">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料数量" name="skuQty">
<uni-easyinput v-model="formData.skuQty" type="number" placeholder="请输入物料数量"/>
<view class="fromItem">
<uni-easyinput v-model="formData.skuQty" type="number" placeholder="请输入物料数量" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
</uni-forms>
<view class="switch-item">
<view class="uni-list-cell-db">{{callStatus}}</view>
<switch :checked="autoCall" color="#0055ff" @change="switchChange" />
</view>
<view class="button-group">
<button type="primary" style="width: 100px;" :disabled="isButtonDisabled" @click="submitPallet"></button>
<button :disabled="isButtonDisabled" style="width: 100px;" @click="callAgv"></button>
</view>
<view class="uni-list-cell-db">{{callStatus}}</view>
<switch :checked="autoCall" @change="switchChange" />
</view>
<!-- <view class="button-group">
<button type="primary" style="width: 100px;" :disabled="isButtonDisabled"
@click="submitPallet">组盘</button>
<button :disabled="isButtonDisabled" style="width: 100px;" @click="callAgv"></button>
</view> -->
</view>
<bottomBtn :isDouble="true" :isSubmit="true" :isWhite="false" position="fixed" :disable="isButtonDisabled"
:texts="['组盘', '确认入库']" @onCancel="submitPallet" @onSubmit="callAgv"></bottomBtn>
<view class="cu-modal" :class="msgModalName=='Modal'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
@ -80,10 +94,13 @@
<script>
import {
getSkuDictionary,getSkuTypes,getLineCodes
getSkuDictionary,
getSkuTypes,
getLineCodes
} from "@/api/wms/sku.js"
import {
createPalletBySku, callAgvIn
createPalletBySku,
callAgvIn
} from "@/api/wms/bill.js"
import {
getDictionary
@ -91,22 +108,23 @@
import {
formatDate
} from 'tough-cookie';
import {bottomBtn} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
skuInput: '',
showSkuDropdown: false,
filteredSkuList: [],
originalSkuList: [],
showSkuDropdown: false,
filteredSkuList: [],
originalSkuList: [],
whCode: this.$store.state.user.warehouse[0]?.warehouseCode,
userCode:this.$store.state.user.name,
isButtonDisabled:false,
autoCall:true,
skuInfo:"",
callStatus:"已开启自动呼叫空容器",
userCode: this.$store.state.user.name,
isButtonDisabled: false,
autoCall: true,
skuInfo: "",
callStatus: "已开启自动呼叫空容器",
//
formData: {
lineCode:'',
lineCode: '',
palletCode: "",
skuCode: "",
locCode: "",
@ -144,7 +162,7 @@
}]
}
},
//
billInfo: {
totalPlanQty: 0,
@ -200,12 +218,12 @@
title: "组盘数量"
},
],
warehouseList: [],
skuList: [],
skuType:'',
skuTypeList: [],
lineCodeList:[],
skuType: '',
skuTypeList: [],
lineCodeList: [],
skuArray: [],
skushow: false,
invoiceCode: null,
@ -230,56 +248,60 @@
//
// this.getWarehouses()
//this.getInvoicesByBusinessType()
},
onReady() {
this.$refs.form.setRules(this.rules)
},
component:{
bottomBtn
},
watch: {
async skuType(newVal) {
const param = { categoryCode: this.skuType };
const data = await getSkuDictionary(param);
//this.skuList =data;
this.originalSkuList = data; //
this.filteredSkuList = data.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`
}));
}
async skuType(newVal) {
const param = {
categoryCode: this.skuType
};
const data = await getSkuDictionary(param);
//this.skuList =data;
this.originalSkuList = data; //
this.filteredSkuList = data.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`
}));
}
},
methods: {
onSkuInput(value) {
this.skuInput = value;
this.skuInput = value;
this.filteredSkuList = this.originalSkuList
.filter(item => item.skuCode.includes(value))
.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`
}));
this.showSkuDropdown = true;
},
selectSku(item) {
this.formData.skuCode = item.value;
this.skuInput = item.value; //
this.showSkuDropdown = false;
this.skuInfo= item.text
},
handleSkuBlur() {
setTimeout(() => {
this.showSkuDropdown = false;
}, 200);
},
this.filteredSkuList = this.originalSkuList
.filter(item => item.skuCode.includes(value))
.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`
}));
this.showSkuDropdown = true;
},
selectSku(item) {
this.formData.skuCode = item.value;
this.skuInput = item.value; //
this.showSkuDropdown = false;
this.skuInfo = item.text
},
handleSkuBlur() {
setTimeout(() => {
this.showSkuDropdown = false;
}, 200);
},
//
trimPalletInput(event) {
this.formData.palletCode = event.target.value.trim();
this.formData.palletCode = event.target.value.trim();
},
//
trimLocInput(event) {
this.formData.locCode = event.target.value.trim();
this.formData.locCode = event.target.value.trim();
},
/// []
async fetch(param) {
@ -289,12 +311,12 @@
data: response.data.record,
};
},
switchChange(e){
switchChange(e) {
this.autoCall = e.detail.value;
if(this.autoCall){
this.callStatus="已开启自动呼叫空容器"
}else{
this.callStatus="已停止自动呼叫空容器"
if (this.autoCall) {
this.callStatus = "已开启自动呼叫空容器"
} else {
this.callStatus = "已停止自动呼叫空容器"
}
},
//
@ -304,23 +326,23 @@
//线
async getLineCodes() {
this.lineCodeList = await getLineCodes();
console.log("this.lineCodeList",this.lineCodeList)
console.log("this.lineCodeList", this.lineCodeList)
},
changeSkuType(){
this.skuInput='';
this.skuInfo='';
changeSkuType() {
this.skuInput = '';
this.skuInfo = '';
},
//
// async getSkus() {
// console.log("this.skuType",this.skuType)
// if(this.skuType){
// this.skuList = await getSkuDictionary(this.skuType);
// }
// if(this.skuType){
// this.skuList = await getSkuDictionary(this.skuType);
// }
// },
//
async getWarehouses() {
this.warehouseList = await getDictionary('warehouseList');
console.log("this.warehouseList",this.warehouseList)
console.log("this.warehouseList", this.warehouseList)
},
//
selectedItems() {
@ -425,51 +447,51 @@
// }
//
submitPallet: function(ref) {
this.isButtonDisabled = true;
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
this.$refs.form.validate().then(res => {
let requestData={
let requestData = {
...this.formData,
userCode:this.userCode,
warehouseCode:this.whCode
userCode: this.userCode,
warehouseCode: this.whCode
}
createPalletBySku(requestData).then(response => {
console.log("response", response)
this.$modal.msgSuccess("组盘成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
}).catch(()=>{
this.isButtonDisabled = false; //
this.$modal.closeLoading()
}).catch(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
})
},
//AGV
callAgv: function() {
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
if(!this.formData.locCode){
this.$modal.closeLoading()
}
if(!this.formData.palletCode){
this.$modal.closeLoading()
}
var data={
locCode:this.formData.locCode,
palletCode:this.formData.palletCode,
autoCall:this.autoCall,
userCode:this.userCode,
warehouseCode:this.whCode
}
callAgvIn(data).then(response => {
console.log("response", response)
this.$modal.msgSuccess("呼叫入库成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
if (!this.formData.locCode) {
this.$modal.closeLoading()
}
if (!this.formData.palletCode) {
this.$modal.closeLoading()
}
var data = {
locCode: this.formData.locCode,
palletCode: this.formData.palletCode,
autoCall: this.autoCall,
userCode: this.userCode,
warehouseCode: this.whCode
}
callAgvIn(data).then(response => {
console.log("response", response)
this.$modal.msgSuccess("呼叫入库成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
},
hideMsgModal(e) {
//
@ -508,7 +530,74 @@
}
</script>
<style lang="scss">
<style scoped lang="scss">
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea{
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea{
width: 100%!important;
border: unset!important;
}
::v-deep .is-input-border{
border: unset;
}
::v-deep .uni-easyinput__placeholder-class{
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input{
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder{
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom{
display: none;
}
::v-deep .uniui-top{
display: none;
}
.fromItem{
display: flex;
align-items: center;
}
.example {
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
// /-#86909C
.sku-dropdown {
position: absolute;
z-index: 1000;
@ -518,22 +607,24 @@
max-height: 200px;
overflow-y: auto;
width: 100%;
box-shadow: 0 2px 12px rgba(0,0,0,0.1);
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
}
.dropdown-item {
padding: 8px 12px;
font-size: 14px;
color: #333;
border-bottom: 1px solid #eee;
}
.dropdown-item:last-child {
border-bottom: none;
}
.dropdown-item:hover {
background-color: #f5f5f5;
}
.cu-form-group .title {
min-width: calc(4em + 15px);
}
@ -542,10 +633,7 @@
background-color: #ffffff;
}
.example {
padding: 15px;
background-color: #fff;
}
.segmented-control {
margin-bottom: 15px;
@ -570,25 +658,26 @@
line-height: 35px;
margin-left: 10px;
}
.switch-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #eee;
}
/* 输入框样式 */
.full-width-textarea {
width: calc(100vw - 260rpx); /* 直接扣除边距 */
padding: 20rpx;
box-sizing: border-box;
border: 2rpx solid #e5e5e5;
border-radius: 8rpx;
min-height: 200rpx;
font-size: 28rpx;
line-height: 1.5;
}
.switch-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #eee;
}
/* 输入框样式 */
.full-width-textarea {
width: calc(100vw - 260rpx);
/* 直接扣除边距 */
padding: 20rpx;
box-sizing: border-box;
border: 2rpx solid #e5e5e5;
border-radius: 8rpx;
min-height: 200rpx;
font-size: 28rpx;
line-height: 1.5;
}
</style>

View File

@ -1,41 +1,60 @@
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content">一码通组盘 AGV入库</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
<uni-forms-item label="一码通" >
<uni-easyinput v-model="barCode" placeholder="请扫描一码通"
@blur="trimbarCode" @confirm="handleEnter"/>
<uni-forms-item label="一码通">
<view class="fromItem">
<uni-easyinput v-model="barCode" placeholder="请扫描一码通" @blur="trimbarCode"
@confirm="handleEnter" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料">
<uni-easyinput v-model="formData.palletCode" disabled/>
</uni-data-select>
<view class="fromItem">
<uni-easyinput v-model="formData.palletCode" disabled />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-data-select>
</uni-forms-item>
<uni-forms-item label="托盘编号">
<uni-easyinput v-model="formData.palletCode" disabled />
<view class="fromItem">
<uni-easyinput v-model="formData.palletCode" disabled />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="货位编号">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput" />
<view class="fromItem">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料数量">
<uni-easyinput v-model="formData.skuQty" type="number" disabled />
<view class="fromItem">
<uni-easyinput v-model="formData.skuQty" type="number" disabled />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
</uni-forms>
<view class="switch-item">
<view class="uni-list-cell-db">{{callStatus}}</view>
<switch :checked="autoCall" color="#0055ff" @change="switchChange" />
</view>
<view class="button-group">
<button type="primary" style="width: 100px;" :disabled="isButtonDisabled" @click="submitPallet"></button>
<button :disabled="isButtonDisabled" style="width: 100px;" @click="callAgv"></button>
</view>
<view class="uni-list-cell-db">{{callStatus}}</view>
<switch :checked="autoCall" @change="switchChange" />
</view>
<!-- <view class="button-group">
<button type="primary" style="width: 100px;" :disabled="isButtonDisabled"
@click="submitPallet">组盘</button>
<button :disabled="isButtonDisabled" style="width: 100px;" @click="callAgv"></button>
</view> -->
</view>
<bottomBtn :isDouble="true" :isSubmit="true" :isWhite="false" position="fixed" :disable="isButtonDisabled"
:texts="['组盘', '确认入库']" @onCancel="submitPallet" @onSubmit="callAgv"></bottomBtn>
<view class="cu-modal" :class="msgModalName=='Modal'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
@ -55,10 +74,12 @@
<script>
import {
getSkuDictionary,getSkuTypes
getSkuDictionary,
getSkuTypes
} from "@/api/wms/sku.js"
import {
createPalletBySku, callAgvIn
createPalletBySku,
callAgvIn
} from "@/api/wms/bill.js"
import {
getDictionary
@ -66,14 +87,17 @@
import {
formatDate
} from 'tough-cookie';
import { debounce } from 'lodash';
import {
debounce
} from 'lodash';
import {bottomBtn} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
barCode:'',
isButtonDisabled:false,
autoCall:true,
callStatus:"已开启自动呼叫空容器",
barCode: '',
isButtonDisabled: false,
autoCall: true,
callStatus: "已开启自动呼叫空容器",
//
formData: {
palletCode: "",
@ -107,7 +131,7 @@
}]
}
},
//
billInfo: {
totalPlanQty: 0,
@ -163,11 +187,11 @@
title: "组盘数量"
},
],
warehouseList: [],
skuList: [],
skuType:'',
skuTypeList: [],
skuType: '',
skuTypeList: [],
skuArray: [],
skushow: false,
invoiceCode: null,
@ -191,31 +215,35 @@
//
// this.getWarehouses()
//this.getInvoicesByBusinessType()
},
onReady() {
this.$refs.form.setRules(this.rules)
},
component:{
bottomBtn
},
watch: {
async skuType(newVal) {
var param={categoryCode:this.skuType}
async skuType(newVal) {
var param = {
categoryCode: this.skuType
}
this.skuList = await getSkuDictionary(param);
}
},
methods: {
handleEnter:_.debounce(function() {
console.log('回车键被按下,当前输入值:', this.barCode);
handleEnter: _.debounce(function() {
console.log('回车键被按下,当前输入值:', this.barCode);
}, 500),
//
trimLocInput(event) {
this.formData.locCode = event.target.value.trim();
this.formData.locCode = event.target.value.trim();
},
//
trimbarCode(event) {
this.barCode = event.target.value.trim();
this.barCode = event.target.value.trim();
},
/// []
async fetch(param) {
@ -225,30 +253,30 @@
data: response.data.record,
};
},
switchChange(e){
switchChange(e) {
this.autoCall = e.detail.value;
if(this.autoCall){
this.callStatus="已开启自动呼叫空容器"
}else{
this.callStatus="已停止自动呼叫空容器"
if (this.autoCall) {
this.callStatus = "已开启自动呼叫空容器"
} else {
this.callStatus = "已停止自动呼叫空容器"
}
},
//
async getSkuTypes() {
this.skuTypeList = await getSkuTypes();
console.log("this.skutypeList",this.skuTypeList)
console.log("this.skutypeList", this.skuTypeList)
},
//
// async getSkus() {
// console.log("this.skuType",this.skuType)
// if(this.skuType){
// this.skuList = await getSkuDictionary(this.skuType);
// }
// if(this.skuType){
// this.skuList = await getSkuDictionary(this.skuType);
// }
// },
//
async getWarehouses() {
this.warehouseList = await getDictionary('warehouseList');
console.log("this.warehouseList",this.warehouseList)
console.log("this.warehouseList", this.warehouseList)
},
//
selectedItems() {
@ -353,7 +381,7 @@
// }
//
submitPallet: function(ref) {
this.isButtonDisabled = true;
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
this.$refs.form.validate().then(res => {
console.log("数据校验通过", res)
@ -361,36 +389,36 @@
console.log("response", response)
this.$modal.msgSuccess("组盘成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
}).catch(()=>{
this.isButtonDisabled = false; //
this.$modal.closeLoading()
}).catch(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
})
},
//AGV
callAgv: function() {
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
if(!this.formData.locCode){
this.$modal.closeLoading()
}
if(!this.formData.palletCode){
this.$modal.closeLoading()
}
var data={
locCode:this.formData.locCode,
palletCode:this.formData.palletCode,
autoCall:this.autoCall
}
callAgvIn(data).then(response => {
console.log("response", response)
this.$modal.msgSuccess("呼叫入库成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
this.isButtonDisabled = true;
this.$modal.loading("请等待...")
if (!this.formData.locCode) {
this.$modal.closeLoading()
}
if (!this.formData.palletCode) {
this.$modal.closeLoading()
}
var data = {
locCode: this.formData.locCode,
palletCode: this.formData.palletCode,
autoCall: this.autoCall
}
callAgvIn(data).then(response => {
console.log("response", response)
this.$modal.msgSuccess("呼叫入库成功")
}).finally(() => {
this.isButtonDisabled = false; //
this.$modal.closeLoading()
});
},
hideMsgModal(e) {
//
@ -429,7 +457,65 @@
}
</script>
<style lang="scss">
<style scoped lang="scss">
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea{
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea{
width: 100%!important;
border: unset!important;
}
::v-deep .is-input-border{
border: unset;
}
::v-deep .uni-easyinput__placeholder-class{
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input{
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder{
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom{
display: none;
}
::v-deep .uniui-top{
display: none;
}
.fromItem{
display: flex;
align-items: center;
}
.cu-form-group .title {
min-width: calc(4em + 15px);
}
@ -439,8 +525,12 @@
}
.example {
padding: 15px;
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
.segmented-control {
@ -466,11 +556,12 @@
line-height: 35px;
margin-left: 10px;
}
.switch-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #eee;
}
.switch-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #eee;
}
</style>

View File

@ -1,43 +1,60 @@
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content">余料出库</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
<uni-card>注意余料出库后请人工拉走系统会自动清除托盘信息</uni-card>
<uni-forms-item label="货位编号" name="locCode">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput"/>
</uni-forms-item>
<uni-forms-item label="物料类型" name="skuType">
<uni-data-select v-model="skuType" :localdata="skuTypeList" @change="changeSkuType" placeholder="请选择物料类型">
</uni-data-select>
</uni-forms-item>
<uni-forms-item label="物料" name="skuCode">
<uni-easyinput v-model="skuInput" placeholder="输入物料码" @input="onSkuInput"
@focus="showSkuDropdown = true" @blur="handleSkuBlur" />
<view class="sku-dropdown" v-if="showSkuDropdown && filteredSkuList.length > 0">
<view v-for="item in filteredSkuList" :key="item.value" class="dropdown-item"
@mousedown.prevent="selectSku(item)">
{{ item.text }}
</view>
<view class="fromItem">
<uni-easyinput v-model="formData.locCode" placeholder="请扫描货位编号" @blur="trimLocInput" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="" name="">
<textarea class="full-width-textarea" v-model="skuInfo"></textarea>
<uni-forms-item label="物料类型" name="skuType">
<view class="fromItem">
<uni-data-select v-model="skuType" :localdata="skuTypeList" @change="changeSkuType"
placeholder="请选择物料类型">
</uni-data-select>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料" name="skuCode">
<view class="fromItem">
<uni-easyinput v-model="skuInput" placeholder="输入物料码" @input="onSkuInput"
@focus="showSkuDropdown = true" @blur="handleSkuBlur" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<view class="sku-dropdown" v-if="showSkuDropdown && filteredSkuList.length > 0">
<view v-for="item in filteredSkuList" :key="item.value" class="dropdown-item"
@mousedown.prevent="selectSku(item)">
{{ item.text }}
</view>
</view>
<view class="textarea">
<textarea class="full-width-textarea" v-model="skuInfo">
</textarea>
</view>
<uni-forms-item label="库存数量" name="countQty">
<uni-easyinput v-model="countQty" disabled="true" />
<view class="fromItem">
<uni-easyinput v-model="countQty" disabled="true" />
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
</uni-forms>
<view class="button-group">
<!-- <view class="button-group">
<button type="primary" :disabled="isButtonDisabled" style="width: 100px;" @click="callAgv"></button>
</view>
</view> -->
</view>
<bottomBtn :isSubmit="true" :isWhite="false" position="fixed" :disable="isButtonDisabled" :texts="['确认叫料']"
@onSubmit="callAgv"></bottomBtn>
<view class="cu-modal" :class="msgModalName=='Modal'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
@ -76,6 +93,9 @@
import {
formatDate
} from 'tough-cookie';
import {
bottomBtn
} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
@ -88,7 +108,7 @@
isButtonDisabled: false,
autoCall: true,
skuInfo: "",
countQty:"",
countQty: "",
callStatus: "已开启自动呼叫空容器",
//
formData: {
@ -202,6 +222,9 @@
msg: null
};
},
component: {
bottomBtn
},
onLoad() {
//
this.getSkuTypes()
@ -241,7 +264,7 @@
this.filteredSkuList = data.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`,
qtyDesc:`托数:${item.ext1} 总数量:${item.ext2}`
qtyDesc: `托数:${item.ext1} 总数量:${item.ext2}`
}));
}
},
@ -254,7 +277,7 @@
.map(item => ({
value: item.skuCode,
text: `${item.skuCode} - ${item.skuName}`,
qtyDesc:`托数:${item.ext1} 总数量:${item.ext2}`
qtyDesc: `托数:${item.ext1} 总数量:${item.ext2}`
}));
this.showSkuDropdown = true;
},
@ -300,10 +323,10 @@
this.skuTypeList = await getSkuTypes();
console.log("this.skutypeList", this.skuTypeList)
},
changeSkuType(){
this.skuInput='';
this.skuInfo='';
this.countQty='';
changeSkuType() {
this.skuInput = '';
this.skuInfo = '';
this.countQty = '';
},
//
// async getSkus() {
@ -443,7 +466,7 @@
},
//
trimLocInput(event) {
this.formData.locCode = event.target.value.trim();
this.formData.locCode = event.target.value.trim();
},
//AGV
callAgv: function() {
@ -542,9 +565,81 @@
background-color: #ffffff;
}
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea {
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea {
width: 100% !important;
border: unset !important;
}
::v-deep .is-input-border {
border: unset;
}
::v-deep .uni-easyinput__placeholder-class {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input {
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom {
display: none;
}
::v-deep .uniui-top {
display: none;
}
.fromItem {
display: flex;
align-items: center;
}
.example {
padding: 15px;
padding: 12rpx 24rpx 0;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
.segmented-control {

View File

@ -1,34 +1,48 @@
<template>
<view class="container">
<cu-custom bgColor="bg-gradual-pink" :isBack="true">
<block slot="backText">返回</block>
<cu-custom :isBack="true">
<block slot="backText"></block>
<block slot="content">余料回库</block>
</cu-custom>
<view class="example">
<uni-forms ref="form" :model="formData" labelWidth="80px">
<uni-forms-item label="托盘编号" name="palletCode">
<uni-easyinput v-model="formData.palletCode" placeholder="请扫描托盘号" @blur="trimPalletInput"/>
<view class="fromItem">
<uni-easyinput v-model="formData.palletCode" placeholder="请扫描托盘号" @blur="trimPalletInput"/>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料编号" name="skuCode">
<uni-easyinput v-model="this.skuCode" disabled/>
<view class="fromItem">
<uni-easyinput v-model="this.skuCode" disabled/>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="物料描述" name="skuName">
<textarea class="full-width-textarea" v-model="this.skuName" disabled/>
</uni-forms-item>
<uni-forms-item label="余料数量" name="surplusQty">
<uni-easyinput v-model="formData.surplusQty" type="number" placeholder="请输入余料数量"/>
<view class="fromItem">
<uni-easyinput v-model="formData.surplusQty" type="number" placeholder="请输入余料数量"/>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
<uni-forms-item label="工位" name="locCode">
<uni-data-select v-model="formData.locCode" :localdata="stations"
placeholder="请选择货位">
</uni-data-select>
<view class="fromItem">
<uni-data-select v-model="formData.locCode" :localdata="stations"
placeholder="请选择货位">
</uni-data-select>
<image style="width: 28rpx;" src="/static/images/right.png" mode="widthFix"></image>
</view>
</uni-forms-item>
</uni-forms>
<view class="button-group">
<!-- <view class="button-group">
<button :disabled="isButtonDisabled" style="width: 100px;" @click="callAgv"></button>
</view>
</view> -->
</view>
<bottomBtn :isSubmit="true" :isWhite="false" position="fixed" :disable="isButtonDisabled" :texts="['确认回库']"
@onSubmit="callAgv"></bottomBtn>
<view class="cu-modal" :class="msgModalName=='Modal'?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
@ -61,6 +75,9 @@
import {
formatDate
} from 'tough-cookie';
import {
bottomBtn
} from '@/components/bottomBtn/bottomBtn.vue'
export default {
data() {
return {
@ -181,6 +198,9 @@
msg: null
};
},
component: {
bottomBtn
},
onLoad() {
//
this.getSkuTypes()
@ -465,7 +485,83 @@
}
</script>
<style lang="scss">
<style scoped lang="scss">
.container {
background: rgb(242, 243, 245);
height: 100vh;
}
.uni-forms-item {
border-bottom: 1px solid #E5E6EB;
margin-bottom: 0;
padding: 24rpx 0;
}
::v-deep .uni-forms-item__label {
color: #1D2129;
font-size: 28rpx;
font-weight: 400;
}
::v-deep .uni-select {
border: 0px;
}
::v-deep.uni-select__input-placeholder {
font-size: 28rpx;
font-weight: 400;
color: #86909C;
}
.textarea {
background-color: #F2F3F5;
width: 100%;
}
::v-deep.full-width-textarea {
width: 100% !important;
border: unset !important;
}
::v-deep .is-input-border {
border: unset;
}
::v-deep .uni-easyinput__placeholder-class {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uni-input-input {
font-size: 28rpx;
}
::v-deep .uni-select__input-placeholder {
font-size: 28rpx;
color: #86909C;
}
::v-deep .uniui-bottom {
display: none;
}
::v-deep .uniui-top {
display: none;
}
.fromItem {
display: flex;
align-items: center;
}
.example {
padding: 0 24rpx;
background-color: #fff;
width: 702rpx;
border-radius: 24rpx;
margin: 24rpx auto;
}
.cu-form-group .title {
min-width: calc(4em + 15px);
}
@ -474,10 +570,7 @@
background-color: #ffffff;
}
.example {
padding: 15px;
background-color: #fff;
}
.segmented-control {
margin-bottom: 15px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -7,61 +7,61 @@
"name": "skuCreatePallet",
"title": "组盘入库",
"color": "red",
"icon": "cuIcon-forwardfill"
"icon": "/static/images/work/组合 1747.png"
},
{
"path": "/pages/work/wms/skuCreatePalletByCode",
"name": "skuCreatePalletByCode",
"title": "一码通入库",
"color": "red",
"icon": "cuIcon-qr_code"
"icon": "/static/images/work/组合 1749.png"
},
{
"path": "/pages/work/wms/manualCall",
"name": "manualCall",
"title": "人工叫料",
"color": "red",
"icon": "cuIcon-forward"
"icon": "/static/images/work/组合 1753.png"
},
{
"path": "/pages/work/wms/emptyPalletOut",
"name": "emptyPalletOut",
"title": "空容器出库",
"color": "red",
"icon": "cuIcon-upload"
"icon": "/static/images/work/组合 1756.png"
},
{
"path": "/pages/work/wms/returnEmptyRack",
"name": "returnEmptyRack",
"title": "空工装回库",
"color": "red",
"icon": "cuIcon-forward"
"icon": "/static/images/work/组合 1758.png"
},
{
"path": "/pages/work/wms/surplusReturn",
"name": "surplusReturn",
"title": "余料回库",
"color": "red",
"icon": "cuIcon-forward"
"icon": "/static/images/work/组合 1759.png"
},
{
"path": "/pages/work/wms/clearEmptyLoc",
"name": "clearEmptyLoc",
"title": "工装货位腾空",
"icon": "cuIcon-exit"
"icon": "/static/images/work/组合 1763.png"
},
{
"path": "/pages/work/wms/palletInfoQuery",
"name": "palletInfoQuery",
"title": "托盘信息查询",
"icon": "cuIcon-search"
"icon": "/static/images/work/组合 1764.png"
},
{
"path": "/pages/work/wms/surplusOut",
"name": "surplusOut",
"title": "余料出库",
"color": "red",
"icon": "cuIcon-forward"
"icon": "/static/images/work/组合 1762.png"
}
],
"msg": "成功"

View File

@ -11,7 +11,7 @@
main
==================== */
body {
background-color: #f1f1f1;
background-color: #ffff;
font-size: 28upx;
color: #333333;
font-family: Helvetica Neue, Helvetica, sans-serif;
@ -1071,7 +1071,7 @@ button.cuIcon.lg {
flex-direction: column;
justify-content: center;
font-size: 28upx;
z-index: 9999;
z-index: 99;
line-height: 2.4em;
}
@ -1885,7 +1885,7 @@ button.cuIcon.lg {
padding-right: 150upx;
/* #endif */
box-shadow: 0upx 0upx 0upx;
z-index: 9999;
z-index: 99;
}
.cu-custom .cu-bar .border-custom {