From d35b2564780c4bda23781a72bb2908cee9a0bd53 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期三, 25 十二月 2024 10:10:13 +0800 Subject: [PATCH] add:花材销售统计 --- pages/statistics-analysis/flower-sale/index.vue | 301 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 301 insertions(+), 0 deletions(-) diff --git a/pages/statistics-analysis/flower-sale/index.vue b/pages/statistics-analysis/flower-sale/index.vue new file mode 100644 index 0000000..c4cbd86 --- /dev/null +++ b/pages/statistics-analysis/flower-sale/index.vue @@ -0,0 +1,301 @@ +<template> + <div> + <div v-loading="statisticLoading"> + + <el-row :gutter="20"> + <el-col :span="4" class="mb-10"> + <el-card> + <div class="statistic-title">销售金额</div> + <div class="statistic-num"> + <!-- {{ statistic.discountTotalFee || 0 }} --> + {{ statistic.saleAmount || 0 }} + </div> + </el-card> + </el-col> + <el-col :span="4" class="mb-10"> + <el-card> + <div class="statistic-title">销售扎数</div> + <div class="statistic-num"> + {{ statistic.saleNum || 0 }} + </div> + </el-card> + </el-col> + <el-col :span="4" class="mb-10"> + <el-card> + <div class="statistic-title">商品总数</div> + <div class="statistic-num"> + {{ statistic.goodsNum || 0 }} + </div> + </el-card> + </el-col> + <el-col :span="4" class="mb-10"> + <el-card> + <div class="statistic-title">缺货扎数</div> + <div class="statistic-num"> + {{ statistic.lackNum || 0 }} + </div> + </el-card> + </el-col> + <el-col :span="4" class="mb-10"> + <el-card> + <div class="statistic-title">补货扎数</div> + <div class="statistic-num"> + {{ statistic.replaceNum || 0 }} + </div> + </el-card> + </el-col> + <el-col :span="4" class="mb-10"> + <el-card> + <div class="statistic-title">降级扎数</div> + <div class="statistic-num"> + {{ statistic.reduceNum || 0 }} + </div> + </el-card> + </el-col> + </el-row> + + </div> + <el-bus-crud ref="crud" v-bind="tableConfig" + :extra-query="extraQuery" + > + <template #header> + <div style="float: right;"> + <el-select v-model="extraQuery.orderField" placeholder="排序字段" @change="changeQuery" size="mini" clearable > + <el-option v-for="item in dict.orderField" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + <el-select v-model="extraQuery.orderType" placeholder="排序方式" @change="changeQuery" size="mini" clearable> + <el-option v-for="item in dict.orderType" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </template> + </el-bus-crud> + </div> +</template> + +<script> +import dayjs from 'dayjs' +import 'dayjs/locale/zh-cn' +import {getStationListConfig} from '@/utils/form-item-config' + +dayjs.locale('zh-cn') +export default { + data() { + const currentDate = this.$elBusUtil.toDate(new Date()) + return { + extraQuery:{orderField:'', orderType: ''}, + dict:{ + orderFieldVal:'', + orderTypeVal:'', + orderField:[], + orderType:[], + }, + statistic: {}, + statisticLoading: false, + tableConfig: { + url: 'flower/v2/statistic-analysis/flower-sale/page', + hasNew: false, + hasEdit: false, + hasDelete: false, + hasOperation: false, + hasExport: true, + exportUrl: 'flower/v2/statistic-analysis/flower-sale/export', + exportText: '导出', + onResetView: (row) => { + + }, + // operationAttrs: { + // width: 80, + // fixed: 'right', + // }, + beforeRequest: async (params) => { + this.statisticLoading = true + // eslint-disable-next-line + let {code, data} = await this.$elBusHttp.request( + `flower/v2/statistic-analysis/flower-sale/statistics`, + {params} + ) + if (code === 0) { + data = data || {} + this.statistic = data || {} + } + this.statisticLoading = false + }, + columns: [ + {label: '供应商ID', prop: 'supplierId', minWidth: 120}, + {label: '供应商名称', prop: 'supplierName', minWidth: 120}, + {label: '注册手机号', prop: 'registerTel', minWidth: 120}, + {label: '联系方式', prop: 'registerTel', minWidth: 120}, + {label: '集货站', prop: 'stationName', minWidth: 120}, + {label: '品类', prop: 'flowerCategoryName', minWidth: 160}, + {label: '商品名称', prop: 'flowerName', minWidth: 150}, + {label: '等级', prop: 'flowerLevel', minWidth: 80}, + {label: '规格', prop: 'flowerUnit', minWidth: 80}, + {label: '底价', prop: 'supplierPrice', minWidth: 120}, + {label: '售价', prop: 'price', minWidth: 120}, + {label: '销售扎数', prop: 'num', minWidth: 120}, + {label: '销售地址', prop: 'address', minWidth: 220}, + {label: '支付时间', prop: 'paymentTime', minWidth: 160}, + { + label: '订单号', + prop: 'orderNo', + minWidth: 180, + formatter: (row) => ( + <el-link + type="primary" + onClick={() => this.handleOrderClick(row.orderId)} + > + {row.orderNo} + </el-link> + ), + }, + + {label: '缺货扎数', prop: 'lackNum', minWidth: 120}, + {label: '补货扎数', prop: 'replaceNum', minWidth: 120}, + {label: '降级扎数', prop: 'reduceNum', minWidth: 120}, + + ], + searchFormAttrs: { + labelWidth: 'auto', + }, + searchForm: [ + { + type: 'row', + items: [ + { + label: '供应商ID', id: 'supplierId', type: 'input', + rules: { + required: false, + pattern: /^\d*$/, + message: '请输入合法的供应商ID', + trigger: 'blur', + }, + }, + {label: '供应商名称', id: 'supplierName', type: 'input'}, + { + label: '注册手机号', id: 'registerTel', type: 'input', + }, + { + label: '联系方式', id: 'contactTel', type: 'input', + }, + { + ...getStationListConfig(), + label: '所属集货站', + }, + { + label: '商品分类', + id: 'flowerCategory', + type: 'bus-cascader', + el: { + otherInterfaceUri: 'flower/api/flower/category/tree', + props: { + label: 'name', + value: 'id', + emitPath: false, + checkStrictly: true, + }, + clearable: true, + filterable: true, + style: 'width:100%', + }, + }, + { + label: '等级:', + id: 'flowerLevel', + type: 'bus-select-dict', + el: { + code: 'FLOWER_LEVEL', + // multiple: true, + clearable: true, + filterable: true, + style: 'width:100%', + }, + + }, + {label: '订单号', id: 'orderNo', type: 'input'}, + { + label: '日期', + id: 'createDateBeginStr', + component: 'el-bus-date-range', + el: { + clearable: false, + }, + commonFormat: true, + commonFormatProps: ['createStartDateStr', 'createEndDateStr'], + customClass: 'in-bus-form', + default: [currentDate, currentDate], + }, + { + label: '地区:', + id: 'customerProvince', + component: 'el-bus-select-area', + span: 24, + commonFormat: true, + commonFormatProps: [ + 'customerProvince', + 'customerCity', + 'customerRegion', + ], + str: true, + strKey: 'districtStr', + rules: {required: false, message: '请选择地区'}, + }, + + + ], + }, + ], + }, + } + }, + async mounted() { + this.dict.orderField=await this.getDictByType('FLOWER_SALE_FIELD'); + this.dict.orderType=await this.getDictByType('ORDER_BY'); + }, + methods: { + + changeQuery(){ + this.$refs.crud.getList() + }, + async getDictByType(typename) { + const resp = await this.$elBusHttp.request('flower/api/code/value', { + params: {type:typename}, + }); + if (resp.code === 0) { + return resp.data + } + }, + handleOrderClick(orderId) { + if (orderId) { + this.$router.push(`/order/list/${orderId}`) + } + }, + + }, + head() { + return { + title: '花材销售统计', + } + }, +} +</script> + +<style lang="scss" scoped> +@import '@/assets/statistic/index.scss'; + +.statistic-title { + text-align: center; + font-size: 16px; + color: $main-title-color; + font-weight: bold; + margin-bottom: 6px; +} + +.statistic-num { + text-align: center; + font-size: 16px; + color: $primary-color; +} + +</style> -- Gitblit v1.9.3