guoyujie
2025-12-04 03627defbc56d0498e7778523da255eb972db6a4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<template>
    <view >
        <uni-datetime-picker
         @change='changeTime'
        v-model="datetimerange" 
        type="datetimerange" 
        rangeSeparator="/" />
    </view>
    <view>
        <uni-table  border stripe  style='width:100%;max-height: 100%;overflow-y: auto;'>
            <uni-tr>
                    <uni-th v-for='(item,keys,index) in list' :width='index==0?70:45' align="center">{{item}}</uni-th>
            </uni-tr>
            <uni-tr>
                    <uni-th v-for='(item,keys,index) in filterList' :width='index==0?70:45' align="center">
                        <input @blur="filterInfo" type="text" size='mini' v-model.trim="filterList[keys]" />
                    </uni-th>
            </uni-tr>
            <uni-tr v-for="items in reportingWorkList">
                <uni-td style="text-align: center;" v-for='(item,keys) in list'>{{items[keys]}}</uni-td>
            </uni-tr>
            <uni-tr>
                <uni-td style="text-align: center;"  v-for='(item,keys,index) in list'>{{sum(keys,index)}}</uni-td>
            </uni-tr>
        </uni-table>
    </view>
</template>
 
<script setup>
import { computed, onMounted,ref, watch } from 'vue'
import userInfo from '@/stores/userInfo'
import request from '../../utils/request'
    const store=userInfo()
    const list = ref({
        'order_id':'订/序/片',
        'child_width':'宽',
        'child_height':'高',
        'completed_quantity':'完工',
        'breakage_quantity':'破损',
        'finish_area':'完工面积',
        'breakage_area':"次破面积"
    })
    const filterList = ref({
        'order_id':null,
        'child_width':null,
        'child_height':null,
        'completed_quantity':null,
        'breakage_quantity':null
    })
    const datetimerange = ref([null,null])
    const reportingWorkList = ref([])
    const reportingWorkListAll = ref([])
    const getReportingWorkList = async () => {
        const obj = {
            userId:store.user.userId,
            process:store.user.address,
            searchDate:datetimerange.value
        }
        await request.post(`/reportingWork/selectShiftQuantity`,obj).then(res => {
            if(res.code ==='200'){
                reportingWorkList.value = res.data.data
                reportingWorkListAll.value = res.data.data
                datetimerange.value = res.data.date
            }
        }).catch(err => {
            uni.showModal({
                title: '提示',
                content: err,
                showCancel:false
            });
        })
    }
    onMounted( async ()=>{
        await getReportingWorkList()
    })
    const changeTime = () => {
        getReportingWorkList()
    }
    const sum = (val,index)=>{
        if(index===0){
            return '合计:'
        }
        const arr = ['completed_quantity','breakage_quantity','finish_area','breakage_area']
        if(arr.includes(val)){
            let sum = 0
            reportingWorkList.value.forEach(item => {
                sum=Number(item[val]) +Number(sum)
            })
            return sum.toFixed(2).toString().replace(/\.?0+$/, '')
        }else{
            return null
        }
    }
    const filterInfo = () => {
        let filter = Object.fromEntries(
            Object.entries(filterList.value).filter(([_, value]) => value !== null && value !== '')
        )
        if(JSON.stringify(filter) === '{}'){
            reportingWorkList.value  = reportingWorkListAll.value
            
        }else{
            reportingWorkList.value = reportingWorkListAll.value.filter(item => {
                return Object.keys(filter).every(key => {
                    return item[key].toString().includes( filter[key])
                })
            })
        }
        
        
    }
</script>
 
<style>
 
</style>