Files
zgty-mas-m/pages/material/recycle/index.vue
2026-03-05 16:54:47 +08:00

99 lines
2.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<navbar-back title="试剂瓶回收"></navbar-back>
<view class="p8">
<u-sticky>
<view class="x-bc bg-w" v-if="listData.length > 0">
<checkbox-switch v-model="allChecked">全选</checkbox-switch>
<view class="pl16">
<up-button size="small" style="width: 60px" type="primary" text="回收" @click="handleSubmit"></up-button>
</view>
</view>
</u-sticky>
<scroll-view style="height: 90vh" scroll-y scroll-with-animation @scrolltolower="handleScrolltolower">
<u-checkbox-group placement="column" v-model="detailIds">
<view class="x-f border-b" v-for="(item, index) in listData">
<u-checkbox :name="item.id"></u-checkbox>
<view class="data-item">
<view
>试剂瓶名称<text>{{ item.materialName }}</text></view
>
<view
>类型<text>{{ item.materialType }}</text></view
>
<view
>数量<text>{{ item.quantity }}</text></view
>
<view
>清洗人<text>{{ item.operator }}</text></view
>
<view
>清洗日期<text>{{ nx.$dayjs(item.operatorDate).format('YYYY-MM-DD') }}</text></view
>
</view>
</view>
</u-checkbox-group>
<up-loadmore v-if="listData.length > 0" :status="loadStatus" />
<up-empty v-else mode="data" text="暂无数据" marginTop="50"> </up-empty>
</scroll-view>
</view>
</template>
<script setup>
import { ref, computed, watch } from 'vue'
import { useListData } from '@/nx/hooks/usePageListData'
import { onShow } from '@dcloudio/uni-app'
import nx from '@/nx'
const allChecked = ref(false)
const detailIds = ref([])
watch(allChecked, value => {
if (value) {
detailIds.value = listData.value.map(item => item.id)
} else {
detailIds.value = []
}
})
const searchParams = computed(() => {
return {
treatmentStatus: '0',
pageSize: 999
}
})
const { listData, scrollToLower, loadStatus, getInitData } = useListData({
searchParams,
api: nx.$api.material.getMaterialUseEndReuseDetailPage
})
onShow(() => {
getInitData()
})
function handleScrolltolower() {
scrollToLower()
}
function handleSubmit() {
if (detailIds.value.length === 0) {
return uni.showToast({
title: '请选择要回收的试剂瓶',
icon: 'none'
})
}
nx.$api.material.reuse(detailIds.value).then(res => {
uni.showToast({
title: '回收成功',
icon: 'none'
})
getInitData()
})
}
</script>
<style lang="scss" scoped>
.data-item {
padding: 8px;
color: #909399;
text {
color: #000;
}
}
</style>