<template>
|
<u-popup :show="show" :round="10" closeable @close="show = false">
|
<view class="material-content bbox p30 rp">
|
<view class="tc b f24 c2 mb20">选择物料</view>
|
<v-Search @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="搜索物料名称/编码" />
|
<div class="content_total">共{{form.total}}条数据</div>
|
<view class="scroll-content">
|
<!-- refresher-enabled="true"
|
:refresher-triggered="refreshing"
|
@refresherrefresh="onRefresh" -->
|
<scroll-view
|
scroll-y="true"
|
@scrolltolower="loadMore">
|
<view v-for="(item1, index) in list" :key="index" class="flex mb20" @click="jump(index)">
|
<view class="img36 mr20 pt10">
|
<u-checkbox-group style="display: block;" name="" @change="jump(index)">
|
<u-checkbox :checked="item1.isActive"></u-checkbox>
|
</u-checkbox-group>
|
</view>
|
<view class="fx1">
|
<div class="page_content_title_top">
|
<span>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
|
</div>
|
<div class="page_content_title_bottom">
|
<span class="green" v-if="item1.qualityType == 0">
|
合格
|
<text class="c1" decode>{{ splite }}</text>
|
</span>
|
<span class="orange" v-else-if="item1.qualityType == 1">
|
不良
|
<text class="c1" decode>{{ splite }}</text>
|
</span>
|
<span class="red" v-else-if="item1.qualityType == 2">
|
报废
|
<text class="c1" decode>{{ splite }}</text>
|
</span>
|
<span v-else>
|
-
|
<text class="c1" decode>{{ splite }}</text>
|
</span>
|
<span>
|
{{item1.procedureName ? item1.procedureName : '-'}}
|
<text class="c1" decode>{{ splite }}</text>
|
</span>
|
<span>{{item1.batch ? item1.batch : '-'}}</span>
|
</div>
|
<div class="mt20 plr25 ptb20 bg_f7 f26">
|
<div class="c2 mb10"><span class="c6">货位:</span>{{ item1.locationName }}</div>
|
<div class="c2"><span class="c6">数量:</span>{{ item1.num }}{{ item1.unitName }}</div>
|
</div>
|
</view>
|
</view>
|
</scroll-view>
|
<!-- <u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
|
<u-list-item v-for="(item1, index) in list" :key="index">
|
|
</u-list-item>
|
</u-list> -->
|
</view>
|
<view style="height: 98rpx;"></view>
|
<!-- <view class="">
|
<u-safe-bottom></u-safe-bottom>
|
</view> -->
|
<view class="fixedBottom bottom cY">
|
<view class="fx1 bbox plr30">
|
<u-checkbox-group v-model="isAll" style="display: block;" @change="selectAll()">
|
<u-checkbox label="全选" name="all"></u-checkbox>
|
</u-checkbox-group>
|
</view>
|
<view class="submit sbtn_green bbox tc" @click="submitAction">{{ `提交(${totalNum})`}}</view>
|
</view>
|
</view>
|
</u-popup>
|
</template>
|
|
<script>
|
import vSearch from '@/components/Search.vue'
|
import { choiceStockListPage } from '@/util/api/agencyAPI'
|
|
export default {
|
name: "selectMaterial",
|
components: {
|
vSearch
|
},
|
data() {
|
return {
|
show: false,
|
splite: ' | ',
|
form: {
|
capacity: 50,
|
page: 0,
|
total: 0,
|
smodelLabel: '',
|
categoryId: ''
|
},
|
list: [],
|
loading: false,
|
finished: false,
|
refreshing: false,
|
isAll: false,
|
total: 0
|
};
|
},
|
props: {
|
warehouseId: {
|
type: String,
|
default: ''
|
},
|
warehouseQualityType: {
|
type: String,
|
default: ''
|
},
|
selected: {
|
type: Array,
|
default: []
|
}
|
},
|
computed: {
|
all() {
|
for (let i = 0; i < this.list.length; i++) {
|
if (!this.list[i].isActive) {
|
return false
|
}
|
}
|
return true
|
},
|
totalNum() {
|
let num = 0;
|
this.list.forEach(item => {
|
if (item.isActive) {
|
num += 1
|
}
|
})
|
return num;
|
}
|
},
|
methods: {
|
open() {
|
this.isAll = false
|
this.show = true
|
this.refreshing = false
|
this.finished = false
|
this.list = []
|
this.form.page = 0
|
this.form.total = 0
|
this.loadData()
|
},
|
jump(index) {
|
this.list.forEach((item, i) => {
|
if (index === i) {
|
item.isActive = !item.isActive
|
}
|
})
|
},
|
// 搜索提交
|
submit() {
|
this.form.page = 0
|
this.finished = false
|
this.list = []
|
this.loadData()
|
},
|
// 搜索框
|
searchInput(data) {
|
this.form.page = 0
|
this.finished = false
|
this.list = []
|
this.form.smodelLabel = data
|
this.loadData()
|
},
|
loadData() {
|
if (!this.finished) {
|
this.loading = true;
|
this.form.page = this.form.page += 1
|
choiceStockListPage({
|
capacity: this.form.capacity,
|
page: this.form.page,
|
model: {
|
warehouseId: this.warehouseId,
|
warehouseQualityType: this.warehouseQualityType,
|
ids: this.selected.length > 0 ? this.selected.join(',') : '',
|
materialName: this.form.smodelLabel
|
}
|
}).then(res => {
|
if (this.refreshing) {
|
this.list = []
|
this.refreshing = false;
|
}
|
this.loading = false;
|
if (res.code === 200 && res.data.records && res.data.records.length !== 0) {
|
this.form.total = res.data.total
|
res.data.records.forEach(element => {
|
element.isActive = false
|
})
|
this.list.push(...res.data.records)
|
} else {
|
this.finished = true;
|
}
|
}).catch(err => {
|
this.loading = false;
|
this.finished = true;
|
if (this.refreshing) {
|
this.list = []
|
this.refreshing = false;
|
}
|
})
|
}
|
},
|
loadMore() {
|
this.pages.page += 1
|
this.loadData()
|
},
|
onRefresh() {
|
if (this.refreshing) return
|
this.refreshing = true;
|
this.pages.page = 1
|
this.loadData()
|
},
|
selectAll(e) {
|
console.log(e)
|
console.log(this.isAll)
|
this.list.forEach(element => {
|
element.isActive = e.length > 0 ? true : false
|
})
|
},
|
submitAction () {
|
this.show = false
|
let arr = []
|
this.list.forEach(element => {
|
if (element.isActive) {
|
arr.push(element)
|
}
|
})
|
this.$emit('value', arr)
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.material-content {
|
display: flex;
|
flex-direction: column;
|
height: 1200rpx;
|
box-sizing: border-box;
|
|
.scroll-content {
|
height: calc(1100rpx - env(safe-area-inset-bottom));
|
overflow: scroll;
|
}
|
}
|
|
.content_total {
|
margin-top: 20rpx;
|
margin-bottom: 20rpx;
|
// padding: 24rpx 30rpx;
|
// background: #F7F7F7;
|
font-size: 24rpx;
|
font-weight: 400;
|
color: #666666;
|
}
|
|
.page_content_title_top {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
|
span {
|
&:nth-child(1) {
|
font-size: 30rpx;
|
font-weight: 500;
|
color: #222222;
|
}
|
|
&:nth-child(2) {
|
flex-shrink: 0;
|
font-size: 24rpx;
|
font-weight: 400;
|
color: #333333;
|
|
// span {
|
// font-size: 24rpx;
|
// color: $nav-color;
|
// }
|
}
|
}
|
}
|
|
.page_content_title_bottom {
|
margin-top: 24rpx;
|
|
span {
|
font-size: 24rpx;
|
font-weight: 400;
|
color: #666666;
|
}
|
}
|
|
.page_content_title {
|
display: flex;
|
flex-direction: column;
|
margin-bottom: 10rpx;
|
|
|
|
|
}
|
|
.bottom {
|
height: 98rpx;
|
|
.submit {
|
width: 272rpx;
|
height: 98rpx;
|
line-height: 98rpx;
|
}
|
}
|
</style>
|