Эх сурвалжийг харах

feature<oms报表>: 1工单报表 2工作量报表

zhaosl 2 жил өмнө
parent
commit
d3b406dc5c

+ 4 - 0
src/api/report/index.js

@@ -22,4 +22,8 @@ export default {
   getSupportOrderStatisitc(query) {
     return micro_request.postRequest(basePath, 'WorkOrderReport', 'GetSupportWorkOrderReportList', query)
   },
+  // 工作量统计报表
+  getWorkLoadStatistic(query) {
+    return micro_request.postRequest(basePath, 'WorkOrderReport', 'GetSupportWorkLoadReportList', query)
+  },
 }

+ 5 - 8
src/views/report/workordereport/productWorkIndex.vue

@@ -19,13 +19,13 @@
           :span-method="ObjectSpanMethod"
           :summary-method="getSummaries"
           width="100%">
-          <el-table-column align="center" label="产品线" prop="productLineName" width="400px" />
-          <el-table-column align="center" label="工单类型" prop="orderTypeName" width="1200px" />
-          <el-table-column align="center" label="数量" prop="orderTypeNum" width="600px" />
+          <el-table-column align="center" label="产品线" prop="productLineName" />
+          <el-table-column align="center" label="工单类型" prop="orderTypeName" />
+          <el-table-column align="center" label="数量" prop="orderTypeNum" />
         </el-table>
       </div>
       <div ref="sum_heji" class="sum_footer">
-        <div class="sum_footer_unit left"></div>
+        <!-- <div class="sum_footer_unit left"></div> -->
         <div class="sum_footer_unit">总计</div>
         <div class="sum_footer_unit">{{ getTotal('orderTypeNum') }}</div>
       </div>
@@ -180,7 +180,7 @@
   }
   .sum_footer_unit {
     flex-shrink: 0;
-    font-size: 13px;
+    font-size: 16px;
     font-weight: 800;
     color: #606266;
     padding: 0 4px;
@@ -188,9 +188,6 @@
     align-items: center;
     justify-content: center;
     word-break: break-word;
-    border-bottom: 1px solid #ebeef5;
-    border-right: 1px solid #ebeef5;
-    border-top: 1px solid #ebeef5;
     text-align: center;
   }
 

+ 5 - 8
src/views/report/workordereport/saleWorkIndex.vue

@@ -19,13 +19,13 @@
           :span-method="ObjectSpanMethod"
           :summary-method="getSummaries"
           width="100%">
-          <el-table-column align="center" label="销售" prop="saleName" width="400px" />
-          <el-table-column align="center" label="工单类型" prop="orderTypeName" width="1200px" />
-          <el-table-column align="center" label="数量" prop="orderTypeNum" width="600px" />
+          <el-table-column align="center" label="销售" prop="saleName" />
+          <el-table-column align="center" label="工单类型" prop="orderTypeName" />
+          <el-table-column align="center" label="数量" prop="orderTypeNum" />
         </el-table>
       </div>
       <div ref="sum_heji" class="sum_footer">
-        <div class="sum_footer_unit left"></div>
+        <!-- <div class="sum_footer_unit left"></div> -->
         <div class="sum_footer_unit">总计</div>
         <div class="sum_footer_unit">{{ getTotal('orderTypeNum') }}</div>
       </div>
@@ -180,7 +180,7 @@
   }
   .sum_footer_unit {
     flex-shrink: 0;
-    font-size: 13px;
+    font-size: 16px;
     font-weight: 800;
     color: #606266;
     padding: 0 4px;
@@ -188,9 +188,6 @@
     align-items: center;
     justify-content: center;
     word-break: break-word;
-    border-bottom: 1px solid #ebeef5;
-    border-right: 1px solid #ebeef5;
-    border-top: 1px solid #ebeef5;
     text-align: center;
   }
 

+ 5 - 8
src/views/report/workordereport/supportWorkIndex.vue

@@ -19,13 +19,13 @@
           :span-method="ObjectSpanMethod"
           :summary-method="getSummaries"
           width="100%">
-          <el-table-column align="center" label="分派人员" prop="assignUserName" width="400px" />
-          <el-table-column align="center" label="工单类型" prop="orderTypeName" width="1200px" />
-          <el-table-column align="center" label="数量" prop="orderTypeNum" width="600px" />
+          <el-table-column align="center" label="分派人员" prop="assignUserName" />
+          <el-table-column align="center" label="工单类型" prop="orderTypeName" />
+          <el-table-column align="center" label="数量" prop="orderTypeNum" />
         </el-table>
       </div>
       <div ref="sum_heji" class="sum_footer">
-        <div class="sum_footer_unit left"></div>
+        <!-- <div class="sum_footer_unit left"></div> -->
         <div class="sum_footer_unit">总计</div>
         <div class="sum_footer_unit">{{ getTotal('orderTypeNum') }}</div>
       </div>
@@ -180,7 +180,7 @@
   }
   .sum_footer_unit {
     flex-shrink: 0;
-    font-size: 13px;
+    font-size: 16px;
     font-weight: 800;
     color: #606266;
     padding: 0 4px;
@@ -188,9 +188,6 @@
     align-items: center;
     justify-content: center;
     word-break: break-word;
-    border-bottom: 1px solid #ebeef5;
-    border-right: 1px solid #ebeef5;
-    border-top: 1px solid #ebeef5;
     text-align: center;
   }
 

+ 131 - 0
src/views/report/workordereport/workLoadIndex.vue

@@ -0,0 +1,131 @@
+<template>
+  <div class="detail">
+    <h2 style="text-align: center">工作量统计报表</h2>
+    <div style="float: right; margin-bottom: 10px">
+      <p>
+        <span slot="footer">
+          <el-button size="mini" type="primary" @click="selectDateDay">日</el-button>
+          <el-button size="mini" type="primary" @click="selectDateWeek">周</el-button>
+          <el-button size="mini" style="margin-right: 0.2rem" type="primary" @click="selectDateMonth">月</el-button>
+        </span>
+        <el-date-picker
+          v-if="dateSelectData == 'day'"
+          v-model="month"
+          type="date"
+          value-format="yyyy-MM-dd"
+          @change="initData" />
+        <el-date-picker
+          v-if="dateSelectData == 'week'"
+          v-model="month"
+          format="yyyy 第 WW 周"
+          type="week"
+          @change="selectDateWeek" />
+        <el-date-picker
+          v-if="dateSelectData == 'month'"
+          v-model="month"
+          type="month"
+          value-format="yyyy-MM-dd"
+          @change="initData" />
+      </p>
+    </div>
+
+    <el-table ref="table" border :data="tableData" width="100%">
+      <el-table-column align="center" label="销售" prop="createdName" />
+      <el-table-column align="center" label="拜访" prop="visitCount" />
+      <el-table-column align="center" label="邮件/微信/电话" prop="otherCount" />
+      <el-table-column align="center" label="合计" prop="totalCount" />
+    </el-table>
+    <div ref="sum_heji" class="sum_footer">
+      <div class="sum_footer_unit">总计</div>
+      <div class="sum_footer_unit">{{ total }}</div>
+    </div>
+  </div>
+</template>
+<script>
+  import reportApi from '@/api/report/index'
+  import { parseTime } from '@/utils'
+  export default {
+    name: 'WorkOrderReport',
+    components: {},
+    data() {
+      return {
+        month: parseTime(new Date()),
+        loading: false,
+        header: undefined,
+        tableData: [],
+        initDataList: [],
+        total: 0,
+        dateSelectData: 'day',
+      }
+    },
+    mounted() {
+      this.initData()
+    },
+    methods: {
+      async initData() {
+        this.total = 0
+        let dateVal = this.month
+        if (this.dateSelectData == 'week') {
+          var today = new Date(this.month)
+          var day = today.getDay()
+          let startDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() - day)
+          let endDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() - day + 6)
+          dateVal = parseTime(startDate) + ',' + parseTime(endDate)
+        }
+        const { data } = await reportApi.getWorkLoadStatistic({ month: dateVal, dateType: this.dateSelectData })
+        this.tableData = data
+        if (this.tableData != null && this.tableData.length > 0) {
+          this.tableData.forEach((n) => {
+            this.total += n['totalCount']
+          })
+        }
+      },
+      // 切換日期模式
+      selectDateDay() {
+        this.dateSelectData = 'day'
+        this.initData()
+      },
+      selectDateWeek() {
+        this.dateSelectData = 'week'
+
+        console.log('month is', this.month)
+
+        this.initData()
+      },
+      selectDateMonth() {
+        this.dateSelectData = 'month'
+        this.initData()
+      },
+    },
+  }
+</script>
+
+<style lang="scss" scoped>
+  .detail {
+    padding: 30px;
+  }
+  .sum_footer {
+    display: flex;
+    display: -webkit-flex;
+    height: 40px;
+    overflow: visible !important;
+    float: right;
+    margin-top: 2rem;
+  }
+  .sum_footer_unit {
+    flex-shrink: 0;
+    font-size: 16px;
+    font-weight: 800;
+    color: #606266;
+    padding: 0 4px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    word-break: break-word;
+    text-align: center;
+  }
+
+  .left {
+    border-left: 1px solid #ebeef5;
+  }
+</style>