Browse Source

fix 审核不良统计的不良率不乘以 100

ylong 2 tháng trước cách đây
mục cha
commit
6fbed4b905
1 tập tin đã thay đổi với 151 bổ sung166 xóa
  1. 151 166
      src/views/statistic/audit/index.vue

+ 151 - 166
src/views/statistic/audit/index.vue

@@ -1,32 +1,17 @@
 <template>
     <ele-page flex-table>
         <page-search @search="reload" v-if="historyData == '1'" />
-        <common-table
-            ref="pageRef"
-            :pageConfig="pageConfig"
-            :columns="columns"
-            :tools="false"
-            show-summary
-            :summary-method="getSummaries"
-            :flex-table="false"
-        >
+        <common-table ref="pageRef" :pageConfig="pageConfig" :columns="columns" :tools="false" show-summary
+            :summary-method="getSummaries" :flex-table="false">
             <template #toolbar="{ row }">
                 <div>
-                    <el-radio-group
-                        @change="handleStatusChange"
-                        v-model="historyData"
-                    >
+                    <el-radio-group @change="handleStatusChange" v-model="historyData">
                         <el-radio-button label="订单审核实时统计" value="0" />
                         <el-radio-button label="订单审核历史统计" value="1" />
                     </el-radio-group>
-                    <el-button
-                        style="margin-left: 40px"
-                        type="success"
-                        plain
-                        v-permission="'statistic:recycleOrder:export'"
-                        v-if="historyData == '1'"
-                        @click="handleExportExcel(row)"
-                    >
+                    <el-button style="margin-left: 40px" type="success" plain
+                        v-permission="'statistic:recycleOrder:export'" v-if="historyData == '1'"
+                        @click="handleExportExcel(row)">
                         导出EXCEL
                     </el-button>
                 </div>
@@ -36,158 +21,158 @@
 </template>
 
 <script setup>
-    import { ref, reactive } from 'vue';
-    import CommonTable from '@/components/CommonPage/CommonTable.vue';
-    import pageSearch from './components/page-search.vue';
-
-    defineOptions({ name: 'AuditOrder' });
-
-    const historyData = ref('0');
-    function handleStatusChange(val) {
-        historyData.value = val;
-        pageConfig.params = { historyData: val };
-        pageRef.value?.reload();
-    }
-
-    /** 表格列配置 */
-    const columns = ref([
-        { type: 'index', label: '#', align: 'center', width: 80 },
-        { label: '审核员', prop: 'nickName', align: 'center' },
-        { label: '录入审核订单', prop: 'orderNum', align: 'center' },
-        { label: '录入书籍数量', prop: 'bookNum', align: 'center' },
-        { label: '实际回收数量', prop: 'recycleBookNum', align: 'center' },
-        { label: '品相良好', prop: 'goodNum', align: 'center' },
-        { label: '品相一般', prop: 'generalNum', align: 'center' },
-        { label: '品相极差', prop: 'canRefundNum', align: 'center' },
-        {
-            label: '不良率',
-            prop: 'badRate',
-            align: 'center',
-            formatter: (row) => {
-                const rate = Number(row.badRate) || 0;
-                return (rate * 100).toFixed(2) + '%';
-            }
-        },
-        { label: '预估金额', prop: 'expectMoney', align: 'center' },
-        { label: '审核金额', prop: 'finalMoney', align: 'center' },
-        { label: '审核日期', prop: 'statDate', align: 'center' }
-    ]);
-
-    /** 页面组件实例 */
-    const pageRef = ref(null);
-
-    const pageConfig = reactive({
-        pageUrl: '/order/ordercheck/stat/pagelist', // 默认使用实时统计接口
-        params: { historyData: 0 }, // 默认查询实时数据
-        exportUrl: '/order/ordercheck/stat/export',
-        fileName: '审核统计',
-        cacheKey: 'auditOrderTable'
-    });
+import { ref, reactive } from 'vue';
+import CommonTable from '@/components/CommonPage/CommonTable.vue';
+import pageSearch from './components/page-search.vue';
+
+defineOptions({ name: 'AuditOrder' });
+
+const historyData = ref('0');
+function handleStatusChange(val) {
+    historyData.value = val;
+    pageConfig.params = { historyData: val };
+    pageRef.value?.reload();
+}
+
+/** 表格列配置 */
+const columns = ref([
+    { type: 'index', label: '#', align: 'center', width: 80 },
+    { label: '审核员', prop: 'nickName', align: 'center' },
+    { label: '录入审核订单', prop: 'orderNum', align: 'center' },
+    { label: '录入书籍数量', prop: 'bookNum', align: 'center' },
+    { label: '实际回收数量', prop: 'recycleBookNum', align: 'center' },
+    { label: '品相良好', prop: 'goodNum', align: 'center' },
+    { label: '品相一般', prop: 'generalNum', align: 'center' },
+    { label: '品相极差', prop: 'canRefundNum', align: 'center' },
+    {
+        label: '不良率',
+        prop: 'badRate',
+        align: 'center',
+        formatter: (row) => {
+            const rate = Number(row.badRate) || 0;
+            return rate.toFixed(2) + '%';
+        }
+    },
+    { label: '预估金额', prop: 'expectMoney', align: 'center' },
+    { label: '审核金额', prop: 'finalMoney', align: 'center' },
+    { label: '审核日期', prop: 'statDate', align: 'center' }
+]);
+
+/** 页面组件实例 */
+const pageRef = ref(null);
+
+const pageConfig = reactive({
+    pageUrl: '/order/ordercheck/stat/pagelist', // 默认使用实时统计接口
+    params: { historyData: 0 }, // 默认查询实时数据
+    exportUrl: '/order/ordercheck/stat/export',
+    fileName: '审核统计',
+    cacheKey: 'auditOrderTable'
+});
+
+/**
+ * 自定义表格汇总计算方法
+ * @param {Object} param0 - 表格数据和列信息
+ * @returns {Array} - 汇总行显示的数据
+ */
+function getSummaries({ columns, data }) {
+    const sums = [];
+    columns.forEach((column, index) => {
+        if (index === 0) {
+            sums[index] = '合计';
+            return;
+        }
+
+        const values = data.map((item) => Number(item[column.property]));
+
+        if (!values.length) {
+            sums[index] = 'N/A';
+            return;
+        }
+
+        switch (column.property) {
+            case 'badRate': {
+                // 不良率 = 品相极差总数 / 录入书籍总数
+                const totalBadValues = data.map((item) =>
+                    Number(item.canRefundNum || 0)
+                );
+                const totalNumValues = data.map((item) =>
+                    Number(item.bookNum || 0)
+                );
+
+                const totalBadSum = totalBadValues.reduce((prev, curr) => {
+                    const value = Number(curr);
+                    if (!isNaN(value)) {
+                        return prev + value;
+                    } else {
+                        return prev;
+                    }
+                }, 0);
 
-    /**
-     * 自定义表格汇总计算方法
-     * @param {Object} param0 - 表格数据和列信息
-     * @returns {Array} - 汇总行显示的数据
-     */
-    function getSummaries({ columns, data }) {
-        const sums = [];
-        columns.forEach((column, index) => {
-            if (index === 0) {
-                sums[index] = '合计';
-                return;
+                const totalNumSum = totalNumValues.reduce((prev, curr) => {
+                    const value = Number(curr);
+                    if (!isNaN(value)) {
+                        return prev + value;
+                    } else {
+                        return prev;
+                    }
+                }, 0);
+
+                if (totalNumSum > 0) {
+                    sums[index] =
+                        (totalBadSum / totalNumSum).toFixed(2) +
+                        '%';
+                } else {
+                    sums[index] = '0.00%';
+                }
+                break;
             }
-
-            const values = data.map((item) => Number(item[column.property]));
-
-            if (!values.length) {
-                sums[index] = 'N/A';
-                return;
+            case 'orderNum':
+            case 'bookNum':
+            case 'recycleBookNum':
+            case 'goodNum':
+            case 'generalNum':
+            case 'canRefundNum': {
+                // 数量类字段求和
+                const sum = values.reduce((prev, curr) => {
+                    const value = Number(curr);
+                    if (!isNaN(value)) {
+                        return prev + value;
+                    } else {
+                        return prev;
+                    }
+                }, 0);
+                sums[index] = sum;
+                break;
             }
-
-            switch (column.property) {
-                case 'badRate': {
-                    // 不良率 = 品相极差总数 / 录入书籍总数
-                    const totalBadValues = data.map((item) =>
-                        Number(item.canRefundNum || 0)
-                    );
-                    const totalNumValues = data.map((item) =>
-                        Number(item.bookNum || 0)
-                    );
-
-                    const totalBadSum = totalBadValues.reduce((prev, curr) => {
-                        const value = Number(curr);
-                        if (!isNaN(value)) {
-                            return prev + value;
-                        } else {
-                            return prev;
-                        }
-                    }, 0);
-
-                    const totalNumSum = totalNumValues.reduce((prev, curr) => {
-                        const value = Number(curr);
-                        if (!isNaN(value)) {
-                            return prev + value;
-                        } else {
-                            return prev;
-                        }
-                    }, 0);
-
-                    if (totalNumSum > 0) {
-                        sums[index] =
-                            ((totalBadSum / totalNumSum) * 100).toFixed(2) +
-                            '%';
+            case 'expectMoney':
+            case 'finalMoney': {
+                // 金额类字段求和,保留两位小数
+                const sum = values.reduce((prev, curr) => {
+                    const value = Number(curr);
+                    if (!isNaN(value)) {
+                        return prev + value;
                     } else {
-                        sums[index] = '0.00%';
+                        return prev;
                     }
-                    break;
-                }
-                case 'orderNum':
-                case 'bookNum':
-                case 'recycleBookNum':
-                case 'goodNum':
-                case 'generalNum':
-                case 'canRefundNum': {
-                    // 数量类字段求和
-                    const sum = values.reduce((prev, curr) => {
-                        const value = Number(curr);
-                        if (!isNaN(value)) {
-                            return prev + value;
-                        } else {
-                            return prev;
-                        }
-                    }, 0);
-                    sums[index] = sum;
-                    break;
-                }
-                case 'expectMoney':
-                case 'finalMoney': {
-                    // 金额类字段求和,保留两位小数
-                    const sum = values.reduce((prev, curr) => {
-                        const value = Number(curr);
-                        if (!isNaN(value)) {
-                            return prev + value;
-                        } else {
-                            return prev;
-                        }
-                    }, 0);
-                    sums[index] = sum.toFixed(2);
-                    break;
-                }
-                default:
-                    sums[index] = '';
+                }, 0);
+                sums[index] = sum.toFixed(2);
+                break;
             }
-        });
+            default:
+                sums[index] = '';
+        }
+    });
 
-        return sums;
-    }
+    return sums;
+}
 
-    //刷新表格
-    function reload(where) {
-        pageRef.value?.reload(where);
-    }
+//刷新表格
+function reload(where) {
+    pageRef.value?.reload(where);
+}
 
-    //导出excel
-    function handleExportExcel() {
-        pageRef.value?.exportData('审核统计');
-    }
+//导出excel
+function handleExportExcel() {
+    pageRef.value?.exportData('审核统计');
+}
 </script>