如何获取Vue JS中所有列的总和

时间:2020-09-29 05:27:16

标签: javascript laravel vue.js

我在控制器中的查询

 public function show($id)
    {
       $structural = DB::table('attendance')->where('payroll_daily_id',$id)
       ->where('assignment','STRUCTURAL')
       ->select('payroll_daily_attendance.*')
       ->get();

       $fetch = [];
       foreach($structural as $key){
            if(!isset($fetch[$key->wrk_id]['total_ot']) && !isset($fetch[$key->wrk_id]['total_days']) ){
               $fetch[$key->wrk_id]['total_ot'] = 0;
               $fetch[$key->wrk_id]['total_days'] = 0;
             }
             $fetch[$key->wrk_id]['wrk_id'] = $key->wrk_id;
             $fetch[$key->wrk_id]['daily_rate'] = $key->rate;
             $fetch[$key->wrk_id]['date'][$key->date]['work_hours'] = $key->reg_hour;
             $fetch[$key->wrk_id]['date'][$key->date]['adj_hour'] = $key->adj_hour;
             $fetch[$key->wrk_id]['total_ot'] += $key->ot_adj;
             $fetch[$key->wrk_id]['total_days'] += $key->reg_hour;
             
         }
         return $fetch;
     
    }

查询结果

1: {total_ot: 1, total_days: 24, wrk_id: 1, daily_rate: 575,…}
daily_rate: 575
date: {2020-09-24: {work_hours: 8, adj_hour: 0}, 2020-09-25: {work_hours: 8, adj_hour: 0},…}
total_days: 24
total_ot: 1
wrk_id: 1
2: {total_ot: 0, total_days: 48, wrk_id: 2, daily_rate: 450,…}
daily_rate: 450
date: {2020-09-24: {work_hours: 8, adj_hour: 0}, 2020-09-25: {work_hours: 8, adj_hour: 0},…}
total_days: 48
total_ot: 0
wrk_id: 2
3: {total_ot: 0, total_days: 8, wrk_id: 3, daily_rate: 560,…}
daily_rate: 560
date: {2020-09-24: {work_hours: 8, adj_hour: 0}}
total_days: 8
total_ot: 0
wrk_id: 3

在我的视线中...我的公式是work_hours的总和 total_daysdivide8multiplydaily_rate组成,其中 daily_rate取决于每个工人的比率。我想 总计

  <table class="table table-sm borderless">           
          <thead>
          <th></th>
          <th></th>
          </thead>
          <tbody>
          <tr  v-for="fetch in assignmentTotal">
          <td style="height:10px;">Structural</td>
          <td style="height:10px;">{{(fetch.total_days / 8) * fetch.daily_rate)}</td>
          </tr>

          </tbody>
          </table>

2 个答案:

答案 0 :(得分:0)

您可以在PHP端计算总和,而在Vue.js中,您仅输出结果。

$fetch = [];
$total_structural = 0;

foreach ($structural as $key) {
    // ...
    $total_structural += ($key->reg_hour / 8) * $key->rate;
}

$fetch['total_structural'] = $total_structural;

return $fetch;

答案 1 :(得分:0)

我建议您使用vuejs计算属性

致电returnTotal()而不是({{{fetch.total_days / 8)* fetch.daily_rate)})

computed:{
returnTotal:function(){
var sum = this.assignmentTotal.reduce((acc,item)=> acc+ (item.total_days / 8) * item.daily_rate), 0);
  return sum;
}
}

谢谢