<template>
|
<div class="content">
|
<div :class="{ 'content_top': status }" class="content_search">
|
<v-Search
|
ref="Search"
|
@searchInput="searchInput"
|
@submit="submit"
|
@reset="reset"
|
:isShow="true"
|
placeholder="仓库名称/物料编码"
|
>
|
<template v-slot:content>
|
<div class="Search_item">
|
<div class="Search_item_label">汇总依据</div>
|
<div class="Search_item_content">
|
<div class="tag">
|
<div
|
class="tag_item"
|
:class="{ tag_active: item.isActive }"
|
v-for="(item, i) in groupTypes"
|
:key="item.id"
|
@click="changeGroup(i)"
|
>
|
{{ item.name }}
|
</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
</v-Search>
|
</div>
|
<div class="content_total">共{{ controlData.total }}条数据</div>
|
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
|
<van-list
|
v-model:loading="controlData.loading"
|
:finished="controlData.finished"
|
finished-text="没有更多了~"
|
@load="loadData"
|
>
|
<div class="content_list">
|
<div
|
class="content_list_item"
|
v-for="(item, i) in list"
|
:key="i"
|
>
|
<div class="content_list_item_top">
|
<div class="content_list_item_top_left">
|
<span>{{ item.materialName }} | {{ item.materialCode }}</span>
|
</div>
|
<div class="content_list_item_top_right">
|
<span class="created">{{ '库存:' + item.num + item.unitName }}</span>
|
</div>
|
</div>
|
<div class="content_list_item_sx">
|
<span v-if="item.qualityType==0" class="green">合格 | </span>
|
<span v-if="item.qualityType==1" class="yellow">不良 | </span>
|
<span v-if="item.qualityType==2" class="red">报废 | </span>
|
<span>{{ item.procedureName ? item.procedureName : '-' }} | </span>
|
<span>{{ item.batch ? item.batch : '-' }}</span>
|
</div>
|
<!-- item主题信息部分 -->
|
<div class="content_list_item_content">
|
<!-- <div class="content_list_item_content_item">
|
<div class="content_list_item_content_item_label">物料名称:</div>
|
<div class="content_list_item_content_item_nr">
|
{{ item.materialName }}
|
</div>
|
</div> -->
|
<!-- <div class="content_list_item_content_item">-->
|
<!-- <div class="content_list_item_content_item_label">属性:</div>-->
|
<!-- <div class="content_list_item_content_item_nr">-->
|
<!-- <span v-if="item.qualityType==0" style="color:green">合格</span>-->
|
<!-- <span v-else-if="item.qualityType==1" style="color:orange">不良</span>-->
|
<!-- <span v-else-if="item.qualityType==2" style="color:red">报废</span>-->
|
<!-- <span v-else>-</span>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<div class="content_list_item_content_item">
|
<div class="content_list_item_content_item_label">规格:</div>
|
<div class="content_list_item_content_item_nr">
|
{{ item.attr }}
|
</div>
|
</div>
|
<!-- data.groupType == '2' ||-->
|
<!-- <div class="content_list_item_content_item" v-if="data.groupType == '3'">-->
|
<!-- <div class="content_list_item_content_item_label">生产批次:</div>-->
|
<!-- <div class="content_list_item_content_item_nr">-->
|
<!-- {{ item.batch ? item.batch : '-' }}-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- <div class="content_list_item_content_item">-->
|
<!-- <div class="content_list_item_content_item_label">工序名称:</div>-->
|
<!-- <div class="content_list_item_content_item_nr">-->
|
<!-- {{ item.procedureName }}-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<div class="content_list_item_content_item" v-if="data.groupType == '3' || data.groupType == '2'">
|
<div class="content_list_item_content_item_label">仓库:</div>
|
<div class="content_list_item_content_item_nr">
|
{{ item.wareHouseName ? item.wareHouseName : '-' }}
|
</div>
|
</div>
|
<div class="content_list_item_content_item" v-if="data.groupType == '3' || data.groupType == '2'">
|
<div class="content_list_item_content_item_label">货位:</div>
|
<div class="content_list_item_content_item_nr">
|
{{ item.locationName }}
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</van-list>
|
</van-pull-refresh>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import vSearch from "@/components/common/Search.vue"
|
import { getwStockExtList } from "@/apis/materialStorage"
|
import { judgmentPlatform } from "@/utils/utils"
|
|
import { ref, reactive, onMounted } from 'vue'
|
|
const controlData = ref({
|
finished: false,
|
loading: false,
|
total: 0,
|
page: 0,
|
capacity: 10,
|
})
|
const data = ref({
|
materialName: '',
|
groupType: '3'
|
})
|
// 根据平台是否需要设置top
|
let status = ref<boolean>(false);
|
const refreshing = ref(false)
|
const list: any = ref([])
|
|
const groupTypes: Array<{name: string, id: string, isActive: boolean }> = reactive([
|
{ name: '默认', id: '3', isActive: true },
|
{ name: '物料', id: '1', isActive: false },
|
{ name: '物料+仓库', id: '2', isActive: false },
|
])
|
|
// 重置
|
const reset = () => {
|
controlData.value.page = 0;
|
data.value.groupType = '3'
|
controlData.value.finished = false;
|
groupTypes.forEach((item: {name: string, id: string, isActive: boolean }, index: number) => {
|
item.isActive = index === 0;
|
})
|
data.value.materialName = ''
|
list.value = [];
|
getLists();
|
}
|
|
onMounted(() => {
|
status.value = judgmentPlatform();
|
controlData.value.page = 0
|
})
|
|
const changeGroup = (i: any): void => {
|
groupTypes[i].isActive = !groupTypes[i].isActive;
|
data.value.groupType = groupTypes[i].id
|
for (const index in groupTypes) {
|
if (index != i) {
|
// console.log(index, i)
|
const item = groupTypes[index]
|
item.isActive = false
|
}
|
}
|
}
|
|
const loadData = (): void => {
|
getLists()
|
}
|
|
// 获取计划列表数据
|
const getLists = (): void => {
|
if (!controlData.value.finished) {
|
controlData.value.loading = true;
|
controlData.value.page = controlData.value.page + 1;
|
getwStockExtList({
|
capacity: controlData.value.capacity,
|
model: {
|
materialOrBatch: data.value.materialName,
|
groupType: data.value.groupType,
|
greaterZero: 1
|
},
|
page: controlData.value.page,
|
sorts: [
|
{
|
direction: "ASC",
|
property: "publishDate",
|
}
|
]
|
}).then((res: any) => {
|
if (refreshing.value) {
|
list.value = []
|
refreshing.value = false;
|
}
|
controlData.value.loading = false;
|
controlData.value.total = res.data.total;
|
if (res.code === 200) {
|
if (res.data.records.length < controlData.value.capacity) {
|
controlData.value.finished = true;
|
}
|
if (controlData.value.page === 1) {
|
list.value = res.data.records;
|
} else {
|
list.value.push(...res.data.records)
|
}
|
}
|
})
|
.catch((err: any) => {
|
controlData.value.loading = false;
|
controlData.value.finished = true;
|
if (refreshing.value) {
|
list.value = []
|
refreshing.value = false;
|
}
|
})
|
// .finally(() => {
|
// console.log('结束')
|
// controlData.value.loading = false;
|
// })
|
}
|
}
|
|
// 下拉刷新优化页面
|
const onRefresh = () => {
|
controlData.value.finished = false;
|
controlData.value.page = 0
|
controlData.value.loading = true;
|
getLists();
|
}
|
|
// 接收子组件传来的输入框值
|
const searchInput = (val: string): void => {
|
data.value.materialName = val;
|
submit()
|
}
|
|
// 搜索弹框提交
|
const submit = (): void => {
|
controlData.value.page = 0;
|
controlData.value.finished = false;
|
list.value = [];
|
getLists();
|
}
|
|
</script>
|
|
<style lang="scss">
|
.content {
|
.content_top {
|
top: 0 !important;
|
}
|
.content_search {
|
padding: 30px;
|
background: white;
|
position: sticky;
|
top: 88px;
|
z-index: 9;
|
.Search_item {
|
margin-bottom: 40px;
|
.Search_item_label {
|
font-size: 30px;
|
font-weight: 500;
|
color: #222222;
|
}
|
.Search_item_content {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
margin-top: 30px;
|
.tag {
|
display: flex;
|
flex-wrap: wrap;
|
align-items: center;
|
.tag_active {
|
background: $nav-color !important;
|
color: #ffffff !important;
|
}
|
.tag_item {
|
padding: 22px 26px;
|
box-sizing: border-box;
|
background: #f2f2f2;
|
border-radius: 8px;
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
margin-right: 22px;
|
margin-bottom: 22px;
|
}
|
}
|
span {
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
margin: 0 30px;
|
}
|
.Search_item_content_a {
|
padding: 20px 0;
|
flex: 1;
|
background: #f7f7f7;
|
border-radius: 8px;
|
border: 1px solid #eeeeee;
|
font-size: 26px;
|
font-weight: 400;
|
color: #b2b2b2;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
}
|
}
|
.content_search_x {
|
height: 24px;
|
}
|
}
|
.content_total {
|
padding: 24px 30px;
|
background: #f7f7f7;
|
font-size: 24px;
|
font-weight: 400;
|
color: #666666;
|
}
|
.content_list {
|
width: 100%;
|
height: 100%;
|
display: flex;
|
flex-direction: column;
|
.content_list_item {
|
background: #ffffff;
|
padding: 30px;
|
display: flex;
|
flex-direction: column;
|
border-bottom: 1px solid #ececec;
|
.content_list_item_sx {
|
margin-top: 20px;
|
}
|
.content_list_item_top {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
.content_list_item_top_left {
|
span {
|
font-size: 32px;
|
font-weight: 500;
|
color: #333333;
|
}
|
}
|
.content_list_item_top_right {
|
font-size: 26px;
|
font-weight: 400;
|
.created {
|
color: $nav-stateColor1 !important;
|
}
|
.warning {
|
color: $nav-stateColor5 !important;
|
}
|
.green {
|
color: $nav-stateColor6 !important;
|
}
|
.info {
|
color: $nav-stateColor3 !important;
|
}
|
}
|
}
|
.content_list_item_content {
|
padding: 24px 30px;
|
background: #f7f7f7;
|
border-radius: 16px;
|
display: flex;
|
flex-wrap: wrap;
|
justify-content: space-between;
|
margin-top: 32px;
|
.content_list_item_content_item {
|
width: 100%;
|
display: flex;
|
margin-top: 24px;
|
&:nth-child(1) {
|
margin-top: 0 !important;
|
}
|
.content_list_item_content_item_label {
|
font-size: 24px;
|
font-weight: 400;
|
color: #666666;
|
flex-shrink: 0;
|
}
|
.content_list_item_content_item_nr {
|
font-size: 24px;
|
font-weight: 400;
|
color: #222222;
|
margin-right: 10px;
|
}
|
}
|
}
|
}
|
}
|
}
|
|
</style>
|