weixin_46253891 2024-07-16 20:33 采纳率: 58.3%
浏览 6

vue3 自动按月求和

const datas = reactive({
    monthlyDatas: [] as Array<{ id: number, date: string, category: string, amount: number }>
});

const getConsumeLists = () => {
    let params = {};

    Api.consumedetails.getAll(params)
        .then(response => {
            if (response.status === 200) {
                datas.monthlyDatas = response.data.results;// 提取出来的数据在 response.data.results
            }
        })
        .catch(error => {
            console.error("Error fetching consume lists:", error);
        });
};

返回格式是

0: {id: 1, consumepurpose: {}, consumetype: {}, date: '2024-04-01', category: '쇼핑', }
1: {id: 2, consumepurpose: {}, consumetype: {}, date: '2024-04-01', category: '식비', }
2: {id: 3, consumepurpose: {}, consumetype: {}, date: '2024-04-02', category: '주거', }
3: {id: 4, consumepurpose: {}, consumetype: {}, date: '2024-04-02', category: '간식', }
4: {id: 5, consumepurpose: {}, consumetype: {}, date: '2024-04-02', category: '식비', }
5: {id: 6, consumepurpose: {}, consumetype: {}, date: '2024-04-02', category: '소송', }
6: {id: 7, consumepurpose: {}, consumetype: {}, date: '2024-04-03', category: 'X', }
7: {id: 8, consumepurpose: {}, consumetype: {}, date: '2024-04-03', category: '간식', }
8: {id: 9, consumepurpose: {}, consumetype: {}, date: '2024-04-03', category: '식비', }
9: {id: 10, consumepurpose: {}, consumetype: {}, date: '2024-04-03', category: '식비', }
10: {id: 11, consumepurpose: {}, consumetype: {}, date: '2024-04-03', category: '간식', }
11: {id: 12, consumepurpose: {}, consumetype: {}, date: '2024-04-04', category: '소송', }
12: {id: 13, consumepurpose: {}, consumetype: {}, date: '2024-04-04', category: '식비', }
13: {id: 14, consumepurpose: {}, consumetype: {}, date: '2024-04-04', category: '간식', }
14: {id: 15, consumepurpose: {}, consumetype: {}, date: '2024-04-04', category: '생활', }
15: {id: 16, consumepurpose: {}, consumetype: {}, date: '2024-04-05', category: '교통', }

我要按照date进行月份对price求和,且显示当前月份的price的总和

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2024-07-16 20:33
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要实现在Vue 3应用程序中按月对金额进行自动求和并显示当前月份的总金额,你可以按照以下步骤进行:

    1. 定义响应式数据结构: 使用Vue 3的reactive API来定义monthlyDatas

    2. 获取数据: 实现getConsumeLists函数,通过调用API获取数据并更新monthlyDatas

    3. 解析数据: 确保获取的数据中包含dateamount属性,并且数据格式正确。

    4. 按月分组求和: 使用JavaScript的日期方法或日期处理库来提取月份,并使用reduce方法进行分组求和。

    5. 确定当前月份并显示总和: 获取当前日期的月份,并使用之前编写的求和函数来找到当前月份的总和。

    6. 前端展示: 在Vue模板中使用计算属性来展示当前月份的总金额。

    下面是具体的实现代码示例:

    <template>
      <div>
        <h1>当前月份总消费金额: {{ currentMonthTotal }}</h1>
      </div>
    </template>
    
    <script>
    import { reactive, computed, onMounted } from 'vue';
    import { format } from 'date-fns'; // 使用date-fns库来处理日期
    
    export default {
      setup() {
        const datas = reactive({
          monthlyDatas: []
        });
    
        const getConsumeLists = async () => {
          let params = {};
          try {
            const response = await Api.consumedetails.getAll(params);
            if (response.status === 200) {
              datas.monthlyDatas = response.data.results;
            }
          } catch (error) {
            console.error("Error fetching consume lists:", error);
          }
        };
    
        // 计算每个月的总金额
        const monthlyTotals = computed(() => {
          return datas.monthlyDatas.reduce((acc, item) => {
            const month = format(new Date(item.date), 'yyyy-MM');
            acc[month] = (acc[month] || 0) + item.amount;
            return acc;
          }, {});
        });
    
        // 获取当前月份的总金额
        const currentMonth = format(new Date(), 'yyyy-MM');
        const currentMonthTotal = computed(() => monthlyTotals.value[currentMonth] || 0);
    
        onMounted(() => {
          getConsumeLists();
        });
    
        return {
          datas,
          currentMonthTotal
        };
      }
    };
    </script>
    

    请注意,这里使用了date-fns库来格式化日期并提取月份,你需要安装这个库(如果还没有安装的话):

    npm install date-fns
    

    然后,确保在你的Vue组件中导入并使用它。这个示例代码提供了一个基本的实现框架,你可以根据你的具体需求进行调整和扩展。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月16日

悬赏问题

  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了
  • ¥15 如何使用micpyhon解析Modbus RTU返回指定站号的湿度值,并确保正确?
  • ¥15 C++ 句柄后台鼠标拖动如何实现