damon227 9 mēneši atpakaļ
vecāks
revīzija
5ac1729f14

+ 18 - 0
src/api/task.js

@@ -140,3 +140,21 @@ export function submitTask (data) {
     data
   })
 }
+
+// 工单统计
+export function getWorkStatList (params) {
+  return request({
+    url: request.adornUrl(`/biz-service/WorkController/count`),
+    method: 'get',
+    params: params
+  })
+}
+
+// 工单统计详情
+export function getWorkStatDetail (params) {
+  return request({
+    url: request.adornUrl(`/biz-service/WorkController/count/info`),
+    method: 'get',
+    params: params
+  })
+}

+ 149 - 0
src/views/modules/works/work-stat-detail.vue

@@ -0,0 +1,149 @@
+<template>
+  <div>
+    <div class="my-title">查看</div>
+    <div>
+      <e-desc title="个人工时绩效汇总" column="3">
+        <e-desc-item label="姓名">{{ dataForm.receiverName }}</e-desc-item>
+        <e-desc-item label="开始时间">{{ params.dateStart}}</e-desc-item>
+        <e-desc-item label="截止时间">{{ params.dateEnd}}</e-desc-item>
+
+        <e-desc-item label="报工总数">{{ dataForm.taskNum }}</e-desc-item>
+        <e-desc-item label="报工总工时">{{ dataForm.taskTime}}</e-desc-item>
+        <e-desc-item label="绩效分">{{ dataForm.performance}}</e-desc-item>
+
+        <e-desc-item label="报损数量">{{ dataForm.damageNum}}</e-desc-item>
+        <e-desc-item label="报损总工时">{{ dataForm.damageTime}}</e-desc-item>
+      </e-desc>
+      <e-desc title="个人工时绩效汇总">
+        <el-table :data="dataForm.workCountDetailInfoList" border style="width:100%">
+            <el-table-column label="序号" type="index" width="50" align="center">
+            </el-table-column>
+            <el-table-column
+                prop="nodeName"
+                header-align="center"
+                align="center"
+                min-width="180"
+                :show-tooltip-when-overflow="true"
+                label="操作名称"
+            >
+            </el-table-column>
+            <el-table-column
+                prop="taskName"
+                header-align="center"
+                align="center"
+                min-width="180"
+                :show-tooltip-when-overflow="true"
+                label="工单名称"
+            >
+            </el-table-column>
+            <el-table-column
+                prop="startTime"
+                header-align="center"
+                align="center"
+                min-width="180"
+                :show-tooltip-when-overflow="true"
+                label="报工时间"
+            >
+            </el-table-column>
+            <el-table-column
+                prop="taskNum"
+                header-align="center"
+                align="center"
+                min-width="80"
+                :show-tooltip-when-overflow="true"
+                label="报工总数"
+            >
+            </el-table-column>
+            <el-table-column
+                prop="taskTime"
+                header-align="center"
+                align="center"
+                min-width="120"
+                :show-tooltip-when-overflow="true"
+                label="报工总工时"
+            >
+            </el-table-column>
+            <el-table-column
+                prop="damageNum"
+                header-align="center"
+                align="center"
+                min-width="80"
+                :show-tooltip-when-overflow="true"
+                label="报损数"
+                >
+            </el-table-column>
+            <el-table-column
+                prop="damageTime"
+                header-align="center"
+                align="center"
+                min-width="120"
+                :show-tooltip-when-overflow="true"
+                label="报损总工时"
+            >
+            </el-table-column>
+            <el-table-column
+                prop="performance"
+                header-align="center"
+                align="center"
+                width="80"
+                label="绩效分"
+            >
+            </el-table-column>
+        </el-table>
+      </e-desc>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="handleClose">返回</el-button>
+    </span>
+  </div>
+</template>
+
+<script>
+import { getWorkStatDetail } from '@/api/task'
+import EDesc from '../common/e-desc'
+import EDescItem from '../common/e-desc-item'
+export default {
+  name: 'work-stat-detail',
+  components: {
+    EDesc,
+    EDescItem
+  },
+  data () {
+    return {
+      params: {},
+      dataForm: {}
+    }
+  },
+  methods: {
+    async init (val) {
+      this.params = {
+        userId: val.receiver,
+        dateStart: val.dateStart,
+        dateEnd: val.dateEnd
+      }
+      this.getWorkStatDetail()
+    },
+    getWorkStatDetail () {
+      getWorkStatDetail(this.params).then(({ data }) => {
+        if (data && data.code === '200' && data.data) {
+          this.dataForm = data.data
+        }
+      })
+    },
+    handleClose () {
+      this.$emit('onChose')
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+.my-line {
+  border-bottom: 1px solid #c0c4cc;
+  margin-bottom: 10px;
+}
+.title {
+  padding: 10px 0;
+}
+</style>

+ 212 - 0
src/views/modules/works/work-stat.vue

@@ -0,0 +1,212 @@
+<!-- 工单中心 -->
+<template>
+  <div class="stock">
+    <template v-if="!detailVisible">
+        <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
+        <el-form-item label="时间">
+          <el-date-picker
+            v-model="date"
+            value-format="yyyy-MM-dd"
+            @change="dateChangeHandle"
+            type="daterange"
+            align="right"
+            :clearable="false"
+            unlink-panels
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="截止日期">
+            </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="getDataList()">查询</el-button>
+          <el-button type="primary" @click="exportHandle('', {})">导出汇总表</el-button>
+        </el-form-item>
+      </el-form>
+      <el-table :data="dataList" border v-loading="dataListLoading" style="width:100%">
+        <el-table-column label="序号" type="index" width="50" align="center">
+        </el-table-column>
+        <el-table-column
+            prop="receiverName"
+            header-align="center"
+            align="center"
+            min-width="140"
+            :show-tooltip-when-overflow="true"
+            label="姓名"
+        >
+        </el-table-column>
+        <el-table-column
+            prop="taskNum"
+            header-align="center"
+            align="center"
+            min-width="140"
+            :show-tooltip-when-overflow="true"
+            label="报工总数"
+        >
+        </el-table-column>
+        <el-table-column
+            prop="taskTime"
+            header-align="center"
+            align="center"
+            min-width="180"
+            :show-tooltip-when-overflow="true"
+            label="报工总工时"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="damageNum"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="报损数"
+        >
+        </el-table-column>
+        <el-table-column
+            prop="damageTime"
+            header-align="center"
+            align="center"
+            min-width="180"
+            :show-tooltip-when-overflow="true"
+            label="报损总工时"
+        >
+        </el-table-column>
+        <el-table-column
+            prop="performance"
+            header-align="center"
+            align="center"
+            width="80"
+            label="绩效分"
+        >
+        </el-table-column>
+        <el-table-column
+            fixed="right"
+            header-align="center"
+            align="center"
+            width="180"
+            label="操作"
+        >
+            <template slot-scope="scope">
+                <el-button
+                    type="text"
+                    size="small"
+                    @click="showDetail(scope.row)"
+                    >查看</el-button>
+                <el-button
+                    type="text"
+                    size="small"
+                    @click="exportDetailHandle(scope.row)"
+                    >导出</el-button>
+            </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="sizeChangeHandle"
+        @current-change="currentChangeHandle"
+        :current-page="pageIndex"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="pageSize"
+        :total="totalPage"
+        layout="total, sizes, prev, pager, next, jumper"
+        >
+        </el-pagination>
+    </template>
+    
+    <work-stat-detail ref="detail" v-if="detailVisible" @onChose="onChose"></work-stat-detail>
+  </div>
+</template>
+
+<script>
+import Vue from 'vue'
+import {
+  getWorkStatList
+} from '@/api/task'
+import WorkStatDetail from './work-stat-detail'
+export default {
+  name: 'works-work-stat',
+  components: {WorkStatDetail},
+  data () {
+    return {
+      detailVisible: false,
+      pageIndex: 1,
+      pageSize: 10,
+      totalPage: 0,
+      dataForm: {},
+      dataList: [],
+      date: []
+    }
+  },
+  created () {
+    const currentDate = new Date()
+    const year = currentDate.getFullYear()
+    const month = currentDate.getMonth() + 1 // 月份是从 0 开始计数的,因此要加1
+    const day = currentDate.getDate()
+    this.date = [`${year}-${month}-01`, `${year}-${month}-${day}`]
+    this.getDataList()
+  },
+  methods: {
+    onChose () {
+      this.detailVisible = false
+    },
+    // 每页数
+    sizeChangeHandle (val) {
+      this.pageSize = val
+      this.pageIndex = 1
+      this.getDataList()
+    },
+    // 当前页
+    currentChangeHandle (val) {
+      this.pageIndex = val
+      this.getDataList()
+    },
+    dateChangeHandle (val) {
+    //   this.dataForm.dateStart = val[0]
+    //   this.dataForm.dateEnd = val[1]
+    },
+    getDataList () {
+      this.dataListLoading = true
+      this.dataForm.dateStart = this.date[0]
+      this.dataForm.dateEnd = this.date[1]
+      let params = {
+        current: this.pageIndex,
+        size: this.pageSize,
+        ...this.dataForm
+      }
+      getWorkStatList(params).then(({ data }) => {
+        if (data && data.code === '200') {
+          this.dataList = data.data.records
+          this.totalPage = Number(data.data.total)
+        } else {
+          this.dataList = []
+          this.totalPage = 0
+        }
+        this.dataListLoading = false
+      })
+    },
+    // 查看详情
+    showDetail (val) {
+      val.dateStart = this.dataForm.dateStart
+      val.dateEnd = this.dataForm.dateEnd
+      this.detailVisible = true
+      this.$nextTick(() => {
+        this.$refs.detail.init(val)
+      })
+    },
+    // 导出详情
+    exportDetailHandle (val) {
+      val.dateStart = this.dataForm.dateStart
+      val.dateEnd = this.dataForm.dateEnd
+      location.href = this.$http.adornUrl(`/biz-service/WorkController/count/info/exportExcel?_token=${Vue.cookie.get('token')}&userId=${val.receiver}&dateStart=${val.dateStart}&dateEnd=${val.dateEnd}`)
+    },
+     // 导出
+    exportHandle () {
+      let dateStart = this.dataForm.dateStart
+      let dateEnd = this.dataForm.dateEnd
+      location.href = this.$http.adornUrl(`/biz-service/WorkController/count/exportExcel?_token=${Vue.cookie.get('token')}&dateStart=${dateStart}&dateEnd=${dateEnd}`)
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>