Commit 31279af9 authored by 沈翠玲's avatar 沈翠玲

接口对接

parent 7ef9ed11
......@@ -49,6 +49,8 @@ const install = (Vue, vm) => {
getforinvmbinfo: (params = {}) => vm.$u.postJson(config.adminPath + '/invmb/getforinvmbinfo', params),
// 入库单创建
createforstorage: (params = {}) => vm.$u.postJson(config.adminPath + '/sfctb/createforstorage', params),
stockSaleOutList: (params = {}) => vm.$u.postJson(config.adminPath + '/stockSaleOut/list', params),
stockList: (params = {}) => vm.$u.postJson(config.adminPath + '/stockSaleOut/stockList', params),
};
}
......
......@@ -140,5 +140,11 @@
"未连接到服务器": "未连接到服务器",
"失败": "失败",
"未知错误": "未知错误",
"获取用户语言失败": "获取用户语言失败"
"获取用户语言失败": "获取用户语言失败",
"录入到货单": "录入到货单",
"供应商代码": "供应商代码",
"到货供应商": "到货供应商",
"到货明细": "到货明细",
"一个到货单无法录入两个供应商订单": "一个到货单无法录入两个供应商订单",
"销售出库": "销售出库"
}
\ No newline at end of file
......@@ -204,6 +204,34 @@
"navigationBarTitleText": "录入入库单",
"enablePullDownRefresh": false
}
},
{
"path": "pages/dhd/Main",
"style": {
"navigationBarTitleText": "到货单",
"enablePullDownRefresh": false
}
},
{
"path": "pages/saleck/Main",
"style": {
"navigationBarTitleText": "销售出库",
"enablePullDownRefresh": false
}
},
{
"path": "pages/saleck/saleckList",
"style": {
"navigationBarTitleText": "销售出库",
"enablePullDownRefresh": false
}
},
{
"path": "pages/saleck/selectCK",
"style": {
"navigationBarTitleText": "销售出库",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
......
<template>
<view class="page">
<StickyNavBar>
<NavBar :title="$t('录入到货单')"></NavBar>
</StickyNavBar>
<view style="padding: 0 10px;">
<u-form ref="daohuoForm" :modelValue="daohuoForm" :rules="rules" labelWidth="200">
<u-form-item prop="cc001" class="under" :label="$t('到货供应商')">
<input
v-model="input"
type="text"
@confirm="inputCC"
:placeholder="$t('供应商代码')"
>
</input>
</u-form-item>
</u-form>
<view>{{$t('到货明细')}}</view>
</view>
<ContentLoadingMore class="cardbox" :list="goodsList">
<view class="cardContent" v-for="(item, index) in goodsList">
<scanningList
:item="item"
:idx="index"
@deleGonds="deleGonds"
:list="list"
/>
</view>
</ContentLoadingMore>
<BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn>
</view>
</template>
<script>
import i18n from '../../lang/index'
import scanningList from "./scanningList.vue";
import BottomBtn from "@/components/BottomBtn/index.vue";
import StickyNavBar from "@/components/StickyNavBar/index.vue";
import ContentLoadingMore from "@/components/ContentLoadingMore/index.vue";
export default {
components: {
StickyNavBar,
scanningList,
BottomBtn,
ContentLoadingMore,
},
data() {
return {
number: 0,
totalNum: 0,
show: true,
goodsList: [],
btnArr: [
{
style: "",
type: "warning",
text: "返回",
way: "goBack",
},
{
style: "",
type: "primary",
text: "到货确认",
way: "goSubmit",
},
],
wxparams: "",
input: '',
loading: false,
daohuoForm: {
cc001: "3701"
},
rules: {
cc001: { required: true,type: 'string', trigger: ['blur'], errorMessage: "11" },
cc002: { required: true, type: 'string',trigger: ['blur'], errorMessage: "11" }
},
}
},
created() {
},
methods: {
getBtnHandle(row) {
this[row.way]();
},
goBack() {
uni.navigateBack();
},
inputCC(e){
if(e && e.detail.value) {
// 2028-330-20250106001-0019-A1010004-5
if(e.detail.value.includes("-")){
const arr = e.detail.value.split("-")
if (arr.length === 6) {
if (arr[0] !== this.daohuoForm.cc001) return this.$u.toast(i18n.t('一个到货单无法录入两个供应商订单'))
const index = this.goodsList.findIndex(v => v.joinlabel = arr.slice(0, 5).join('-'))
if (index > -1) {
this.goodsList[index]['cc006'] = Number(this.goodsList[index]['cc006']) + Number(arr[5])
} else {
this.goodsList.push({
cc001: arr[0],
cc002: arr[1],
cc003: arr[2],
cc004: arr[3],
cc005: arr[4],
cc006: arr[5],
joinlabel: arr.slice(0, 5).join('-')
})
}
this.input = ''
this.daohuoForm.cc001 = arr[0]
}
} else {
}
}
},
deleGonds(idx) {
this.list = this.list.filter((item) => {
return item.qrcode !== this.goodsList[idx].qrcode;
})
this.goodsList.splice(idx, 1);
},
goSubmit(){
if (!this.goodsList.length) return;
if(!this.daohuoForm.cc001) return this.$u.toast(i18n.t('请输入到货单别'));
if(!this.daohuoForm.cc002) return this.$u.toast(i18n.t('请输入到货单号'));
this.loading = true;
this.$u.api.getforcreate({
cc001: this.daohuoForm.cc001,
cc002: this.daohuoForm.cc002
})
.then(res => {
this.loading = false;
if (res.success) {
if (res.data) {
if(!res.data.purths || res.data.purths.length === 0) return this.$u.toast(i18n.t('到货单已经完成入库'));
uni.navigateTo({
url: '/pages/forcreate/Info?info=' + encodeURIComponent(JSON.stringify(res.data))
});
} else {
this.$u.toast(i18n.t('到货单不存在或未检验'));
}
} else {
this.$u.toast(res.errorMessage);
}
});
}
},
};
</script>
<style lang="scss" scoped>
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.cardbox {
min-height: calc(100vh - 540rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
.cardContent {
border-radius: 8px;
background: #fff;
margin-bottom: 20rpx;
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
page {
position: relative;
width: 100%; height: 100%;
}
.cardbox {
min-height: calc(100vh - 480rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
</style>
\ No newline at end of file
<template>
<view>
<view class="listItemTitle">
<view>
<view class="item">入库条码:{{ item.qrcode }}</view>
<view class="item">工单编号:{{ item.workorderNo }}</view>
<view class="item">产品编号:{{ item.sapItemCode }}</view>
<view class="item">产品描述:{{ item.itemName }}</view>
<view class="item">入库仓位:{{ item.NLPLA }}</view>
<view class="item">入库数量:{{ filterQuantity() }} {{ item.unitOfMeasure }}</view>
<view class="item">loss数量:{{ filterLoss() }} {{ item.unitOfMeasure }}</view>
<view class="item">样品数量:{{ filterSampleNum() }} {{ item.unitOfMeasure }}</view>
</view>
<u-button size="mini" type="primary" plain @click="deleGonds(idx)">
<u-icon name="trash" size="28"></u-icon>
删除
</u-button>
</view>
<view class="listBottom">
<view class="bottomTitle" @click="show = !show">
<view class="desc">卷条码明细</view>
<view class="topIcons">
<view v-if="show">
<u-icon name="arrow-down" color="#aaa" size="32"></u-icon>
展开
</view>
<view v-else>
<u-icon name="arrow-up" color="#aaa" size="32"></u-icon>
收起
</view>
</view>
</view>
<view v-if="!show" class="bottomBox">
<view class="bottomItem" v-for="(ele, idx) in list" :key="ele.qrcode+idx" v-if="ele.qrcode === item.qrcode">
<view class="items">尺码:{{ ele.standardSize }}</view>
<view class="items">数量:{{ ele.quantity }} {{ ele.unitOfMeasure }}</view>
<view class="items">loss数量:{{ ele.lossNum }} {{ ele.unitOfMeasure }}</view>
<view class="items">样品数量:{{ ele.sampleNum }} {{ ele.unitOfMeasure }}</view>
</view>
</view>
</view>
<!-- <BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn> -->
</view>
</template>
<script>
import StickyNavBar from '@/components/StickyNavBar/index.vue';
import ContentLoadingMore from '@/components/ContentLoadingMore/index.vue';
import BottomBtn from '@/components/BottomBtn/index.vue';
export default {
components: {
StickyNavBar,
ContentLoadingMore,
BottomBtn
},
props: {
item: {
type: Object,
default: function () {
return {};
}
},
list: {
type: Array,
default: function () {
return [];
}
},
idx: {
type: Number,
default: 0
}
},
computed:{
},
data() {
return {
show: true
};
},
created() {
},
methods: {
deleGonds(idx) {
this.$emit('deleGonds',idx)
},
filterQuantity() {
return this.list.filter(v => v.qrcode == this.item.qrcode).reduce((acc, cur) => acc + cur.quantity, 0)
},
filterLoss() {
return this.list.filter(v => v.qrcode == this.item.qrcode).reduce((acc, cur) => acc + cur.lossNum, 0)
},
filterSampleNum() {
return this.list.filter(v => v.qrcode == this.item.qrcode).reduce((acc, cur) => acc + cur.sampleNum, 0)
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.headerTitle {
padding: 20rpx;
font-weight: 600;
.items {
line-height: 40rpx;
}
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #333;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
font-weight: 600;
}
}
.listBottom {
.bottomTitle {
height: 80rpx;
position: relative;
.desc {
color: #bbb;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #f8f8f8;
padding: 20rpx;
margin-bottom: 20rpx;
.items {
color: #333;
font-size: 24rpx;
line-height: 40rpx;
/deep/ .uni-easyinput{
width: 200rpx;
}
}
.inputItem{
display: inline-flex;
// line-height: 76rpx;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
</style>
......@@ -67,6 +67,16 @@ import i18n from '../../lang/index'
src: require('@/static/images/infor.png'),
text: i18n.t('品号信息'),
url: '/pages/invmbinfo/Main'
},
{
src: require('@/static/images/infor.png'),
text: i18n.t('到货单'),
url: '/pages/dhd/Main'
},
{
src: require('@/static/images/infor.png'),
text: i18n.t('销售出库'),
url: '/pages/saleck/Main'
}
]
};
......
<template>
<view>
<StickyNavBar>
<NavBar title="销售出库"></NavBar>
<view class="btn">
<uni-easyinput
prefixIcon="search"
:disabled="isDisabled"
v-model="wxparams"
:focus="isFocus"
placeholder="请扫描单号"
@confirm="handleConfirm"
></uni-easyinput>
</view>
</StickyNavBar>
<view class="cardBox">
<text class="cardBoxTip">
步骤一 扫描单号
</text>
<u-image class='cardBoxImg' :src="bgSrc" width="560rpx" height="400rpx"></u-image>
<view class="cardBoxTip2">
摄像头对准
</view>
<view class="cardBoxTip3">
出货通知单号二维码
</view>
<view class="cardBoxTip2">
<text class="tipLeft">
点击扫描或
</text>
<text class="tipRight">
点选单号
</text>
</view>
</view>
</view>
</template>
<script>
import StickyNavBar from '@/components/StickyNavBar/index.vue';
import ContentLoadingMore from '@/components/ContentLoadingMore/index.vue';
export default {
components: {
StickyNavBar,
ContentLoadingMore
},
data() {
return {
bgSrc: require('@/static/images/qrcode.png'),
wxparams: '',
isFocus: false,
isDisabled: false
};
},
created() {
},
methods: {
handleConfirm(e) {
this.isFocus = false;
e && this.getPlnr(e);
// uni.navigateTo({
// url: `/pages/saleck/saleckList?order=${e}`
// });
},
getPlnr(VBELN) {
this.$u.api
.stockSaleOutList({
saleOutNo: VBELN
})
.then(({data, errorMessage}) => {
setTimeout(() => {
this.isFocus = true;
}, 1000);
if (data && data.applyNo) {
uni.navigateTo({
url: `/pages/saleck/saleckList?order=${VBELN}`
});
} else {
// 删除本地缓存的单号
this.$u.toast(errorMessage);
}
this.loading = false;
});
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.cardBox {
min-height: calc(100vh - 400rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
.cardBoxTip{
color: #000;
font-size: 28rpx;
}
.cardBoxTip2{
color: #000;
font-size: 28rpx;
text-align: center;
}
.cardBoxTip3{
color: #3f9dcc;
font-size: 28rpx;
text-align: center;
}
.tipRight{
color: #ff9900;
}
</style>
\ No newline at end of file
<template>
<view>
<ContentLoadingMore class="cardbox" :loadmore='true' :status="status" :list='goodsList'>
<view class="cardContent" v-for="(item, index) in goodsList">
<view class="listItemTitle" @click="handleClick(item)">
<view>
<view class="item">产品编号:{{ item.applyNo }}</view>
<!-- <view class="item">物料编号:{{ item.sapItemCode }}</view> -->
<!-- <view class="item">物料描述:{{ item.itemName }}</view> -->
<view class="item">产品名称:{{ item.workunitName }}</view>
<view class="item">库房/储位:{{ item.materialType ? '补料': '领料' }}</view>
<view class="item">库存数:{{ item.grantNum? '配货中' : '未配货' }}</view>
</view>
</view>
</view>
</ContentLoadingMore>
<!-- <BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn> -->
</view>
</template>
<script>
import ContentLoadingMore from '@/components/ContentLoadingMore/index.vue';
export default {
components: {
ContentLoadingMore
},
props: {
order: {
type: String
},
},
data() {
return {
number: 0,
totalNum: 0,
show: true,
nlpla: '',
wxparams: '',
goodsList: [],
pagination: {
pageNum:1,
pageSize:10,
},
total: 0,
status: 'loadmore'
};
},
created() {
if(this.order) {
this.getPlnr(this.order);
}
},
methods: {
handleClick(item){
},
getPlnr(order) {
this.totalNum = 0;
this.isDisabled = true;
this.$u.api.mesApi
.stockList({
saleOutNo: order
})
.then((res) => {
setTimeout(() => {
this.isDisabled = false;
}, 1000);
if (res && res.code - 200 === 0) {
this.goodsList = this.goodsList.concat(res.rows);
this.total = res.total
} else {
this.$u.toast(res.msg);
}
});
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.cardbox {
min-height: calc(100vh - 540rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
.cardContent {
border-radius: 8px;
background: #fff;
margin-bottom: 20rpx;
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #000;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
}
}
.listBottom {
.bottomTitle {
height: 80rpx;
position: relative;
.desc {
color: #bbb;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #f8f8f8;
padding: 20rpx;
margin-bottom: 20rpx;
.items {
color: #333;
font-size: 24rpx;
height: 40rpx;
line-height: 40rpx;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
</style>
\ No newline at end of file
<template>
<view>
<view class="listItemTitle">
<view>
<view class="item">交货单:{{ applyNo }}</view>
</view>
</view>
<view class="listBottom">
<view class="bottomTitle">
<view class="desc">拣货明细</view>
</view>
<view class="bottomBox">
<view class="bottomItem" v-for="(ele, idx) in goodlist" :key="ele.materialNo+idx" >
<view class="box-top">
<view class="left">
<view class="items">{{ ele.materialNo }}|{{ ele.materialName }}</view>
<view class="items">计划出库日期:{{ ele.planOutDate }}</view>
</view>
<view class="right">
<u-icon name="plus" color="#000" size="32" @click.stop="addKC(ele)"></u-icon>
<view class="items">{{outQuantity(ele.materialNo)}}/{{deliverQuantity(ele.materialNo)}}</view>
</view>
</view>
<view class="detail-box">
<view v-for="(item, index) in list" :key="item.materialNo + '444' + index">
<view class="detail-line" v-if="item.materialNo === ele.materialNo && item.outQuantity">
<text>{{item.warehouse}}|{{item.location}}</text>
<text style="margin-left: auto">{{item.outQuantity}}/{{item.deliverQuantity}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
<u-modal :show="show" title="">
<uni-easyinput v-model="wxparams" placeholder="请扫描盘点条码">
</uni-easyinput>
</u-modal>
<!-- <BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn> -->
</view>
</template>
<script>
import StickyNavBar from '@/components/StickyNavBar/index.vue';
import ContentLoadingMore from '@/components/ContentLoadingMore/index.vue';
import BottomBtn from '@/components/BottomBtn/index.vue';
export default {
components: {
StickyNavBar,
ContentLoadingMore,
BottomBtn
},
props: {
order: {
type: String
},
},
data() {
return {
r1:'',
number: 0,
totalNum: 0,
show: false,
applyNo: '',
wxparams: '',
list: [{good: 1, list: [{name: 1}]}],
goodlist: [],
btnArr: [
{
style: '',
type: 'warning',
text: '返回',
way: 'goBack'
},
{
style: '',
type: 'primary',
text: '提交',
way: 'goSubmit'
}
],
isFocus: false,
show: true,
};
},
computed: {
},
created(){
if(this.order) {
this.$u.api
.stockSaleOutList({
saleOutNo: this.order
})
.then(({data}) => {
if (data && data.applyNo) {
this.applyNo = data.applyNo
this.list = data.data
data.data.forEach(v => {
const index = this.goodlist.findIndex(i => i.materialNo === v.materialNo)
if (index < 0){
this.goodlist.push({
"materialName": v.materialName,
"materialNo": v.materialNo,
"planOutDate": v.planOutDate,
"unit": v.unit
})
}
})
}
});
}
},
methods: {
addKC(ele) {
uni.navigateTo({
url: `/pages/saleck/selectCK?info=${encodeURIComponent(JSON.stringify(ele))}`
});
},
deliverQuantity(materialNo) {
const y = JSON.parse(JSON.stringify(this.list))
const arr = y.filter(i => i.materialNo = materialNo)
return arr.reduce((pre, cur) => pre + Number(cur.deliverQuantity), 0)
},
outQuantity(materialNo) {
const y = JSON.parse(JSON.stringify(this.list))
const arr = y.filter(i => i.materialNo = materialNo)
return isNaN(arr.reduce((pre, cur) => pre + Number(cur.outQuantity), 0)) ? 0 : arr.reduce((pre, cur) => pre + Number(cur.outQuantity), 0)
},
deleGonds(row, idx) {
this.$emit('deleGonds', row, idx);
},
handleNum(){
let num = 0
this.list.forEach(ele => {
if(ele.ZSIZE === this.item.ZSIZE && ele.MATNR === this.item.MATNR && ele.PLNR){
num += (ele.PACMG-0)
}
});
return num
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.headerTitle {
padding: 20rpx;
font-weight: 600;
.items {
line-height: 40rpx;
}
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #333;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
font-weight: 600;
}
}
.listBottom {
background: #f3f3f5;
.bottomTitle {
height: 80rpx;
position: relative;
background: #fff;
.desc {
color: #000;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #fff;
border: 1px solid #d4d7dc;
border-radius: 5px;
margin-bottom: 20rpx;
position: relative;
.items {
color: #333;
font-size: 24rpx;
line-height: 40rpx;
/deep/ .uni-easyinput{
width: 200rpx;
}
}
.box-top {
padding: 20rpx;
display: flex;
justify-content: space-between;
border-bottom: 1px solid #d4d7dc;
.right {
text-align: right;
}
}
.detail-box {
padding: 20rpx;
background: #fff;
}
.detail-line {
background: rgb(243, 243, 245);
display: flex;
border: 1px solid #d4d7dc;
height: 80rpx;
line-height: 80rpx;
border-radius: 5px;
margin-top: 10px;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
.boxBtn {
position: absolute;
bottom: 10rpx;
right: 10rpx;
}
.checkedBox{
text-align: right;
}
/deep/ .uni-checkbox-input-disabled:before{
color: #007aff !important;
}
</style>
<template>
<view class="page">
<StickyNavBar>
<u-tabs :list="tabList" :is-scroll="false" :current="current" @change="handleTabChange"></u-tabs>
<component :is="tabList[current].comName" :order="order"></component>
</StickyNavBar>
</view>
</template>
<script>
import StickyNavBar from '@/components/StickyNavBar/index.vue';
import lhmx from './components/lhmx.vue';
import kcmx from './components/kcmx.vue';
export default {
components: {
StickyNavBar,
lhmx,
kcmx
},
data() {
return {
current: 0,
order: '',
tabList: [{
name: '拣货明细',
comName: 'lhmx'
}, {
name: '库存明细',
comName: 'kcmx'
}],
};
},
computed: {},
onLoad(option) {
if (option && option.order) {
this.order = option.order
}
},
watch: {
},
created() {},
methods: {
handleTabChange(index) {
this.current = index;
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.headerTitle {
padding: 20rpx;
font-weight: 600;
.items {
line-height: 40rpx;
}
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.cardbox {
min-height: calc(100vh - 480rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
.cardContent {
border-radius: 8px;
background: #fff;
margin-bottom: 20rpx;
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #333;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
font-weight: 600;
}
}
.listBottom {
.bottomTitle {
height: 80rpx;
position: relative;
.desc {
color: #bbb;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #f8f8f8;
padding: 20rpx;
margin-bottom: 20rpx;
.items {
color: #333;
font-size: 24rpx;
height: 40rpx;
line-height: 40rpx;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
.checkedCase {
margin-top: 10rpx;
}
</style>
\ No newline at end of file
<template>
<view class="page">
<StickyNavBar>
<NavBar title="选择库存"></NavBar>
<view class="info">{{ info.materialNo }}|{{ info.materialName }}</view>
</StickyNavBar>
<ContentLoadingMore class="cardbox" :loadmore='true' :status="status" :list='goodsList'>
<view class="cardContent" v-for="(item, index) in goodsList">
<view class="listItemTitle" @click="handleClick(item)">
<view>
<view class="item">库房/储位:{{ item.applyNo }}</view>
<view class="item">库存数:{{ item.workunitName }}</view>
<view class="item">出货数:<uni-easyinput
prefixIcon="search"
v-model="item.workunitName"
placeholder=""
></uni-easyinput></view>
</view>
</view>
</view>
</ContentLoadingMore>
<BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn>
</view>
</template>
<script>
import StickyNavBar from '@/components/StickyNavBar/index.vue';
import lhmx from './components/lhmx.vue';
import kcmx from './components/kcmx.vue';
export default {
components: {
StickyNavBar,
lhmx,
kcmx
},
data() {
return {
current: 0,
info: {},
tabList: [{
name: '拣货明细',
comName: 'lhmx'
}, {
name: '库存明细',
comName: 'kcmx'
}],
btnArr: [
{
style: '',
type: 'warning',
text: '返回',
way: 'goBack'
},
{
style: '',
type: 'primary',
text: '提交',
way: 'goSubmit'
}
]
};
},
computed: {},
onLoad(option) {
if (option && option.info) {
this.info = JSON.parse(decodeURIComponent(option.info))
}
},
watch: {
},
created() {},
methods: {
getBtnHandle(row) {
this[row.way]();
},
goBack() {
uni.navigateBack();
},
goSubmit() {
if (this.goodsList.length === 0) {
return;
}
const data = JSON.parse(JSON.stringify(this.goodsList));
},
handleTabChange(index) {
this.current = index;
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.headerTitle {
padding: 20rpx;
font-weight: 600;
.items {
line-height: 40rpx;
}
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.cardbox {
min-height: calc(100vh - 480rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
.cardContent {
border-radius: 8px;
background: #fff;
margin-bottom: 20rpx;
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #333;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
font-weight: 600;
}
}
.listBottom {
.bottomTitle {
height: 80rpx;
position: relative;
.desc {
color: #bbb;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #f8f8f8;
padding: 20rpx;
margin-bottom: 20rpx;
.items {
color: #333;
font-size: 24rpx;
height: 40rpx;
line-height: 40rpx;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
.checkedCase {
margin-top: 10rpx;
}
</style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment