Ver código fonte

提交数据统计

Lijy 7 meses atrás
pai
commit
9eb45185b4

+ 74 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/project/summary.vue

@@ -67,11 +67,28 @@
                     <el-col :span="24">
                         <div class="individual-task">
                             <div class="individual-title">
-                                <div class="individual-title-layout">任务 计划工时 VS 实际工时</div>
+                                <div class="individual-title-layout">
+                                    <div style="margin-right: 20px;">任务 计划工时 VS 实际工时</div>
+                                    <el-cascader v-if="user.userNameNeedTranslate != 1" v-model="departmentOptionValue"
+                                        :placeholder="$t('defaultText.pleaseChoose')" style="width: 200px"
+                                        :options="departmentOption"
+                                        :props="{ checkStrictly: true, expandTrigger: 'hover' }"
+                                        :show-all-levels="false" clearable @change="getTaskTimeCompare()"
+                                        size="mini"></el-cascader>
+
+                                    <vueCascader :size="'mini'" :widthStr="'200'" :clearable="true"
+                                        :subject="departmentOption" :radios="true" :distinction="'1'"
+                                        @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
+                                </div>
+                                <div>
+                                    <el-link @click="exportTaskCompare"><i
+                                            class="iconfont firerock-iconexport"></i>导出</el-link>
+                                </div>
                             </div>
                             <el-divider></el-divider>
                             <div class="individual-content-big">
-                                <EchartsEchar :options="taskTimeChartData" :height="`${echartsTaskHeight}px`" updateChartSize>
+                                <EchartsEchar :options="taskTimeChartData" :height="`${echartsTaskHeight}px`"
+                                    updateChartSize>
                                 </EchartsEchar>
                             </div>
                             <div class="paging">
@@ -90,13 +107,17 @@
     </div>
 </template>
 <script>
+import vueCascader from "@/components/cascader.vue"
+import cascaderOption from "@/components/cascaderOption.vue"
 import EchartsEchar from "../../components/echartsEchar.vue"
 import { summaryOverviewList, barChartOptions } from './project.js'
 
 export default {
     name: "dataStatistics",
     components: {
-        EchartsEchar
+        EchartsEchar,
+        vueCascader,
+        cascaderOption
     },
     data() {
         return {
@@ -112,6 +133,8 @@ export default {
             taskTimeChartData: {},
             taskTimeListData: [],
             echartsTaskHeight: 500,
+            departmentOptionValue: '',
+            departmentOption: [], // 部门
 
             // 分页
             total: 0,
@@ -125,6 +148,11 @@ export default {
     },
 
     methods: {
+        exportTaskCompare() {
+            this.postData(`/task/exportTaskTimeCompare`, { projectId: this.curProjectId }).then(res => {
+                location.href = res.data;
+            })
+        },
         handleSizeChange(val) {
             this.pageIndex = 1
             this.pageSize = val
@@ -139,6 +167,30 @@ export default {
             const dataList = list.slice((this.pageIndex - 1) * this.pageSize, this.pageIndex * this.pageSize)
             this.processingTaskTimeCompare(dataList)
         },
+        getDepartment() { // 获取部门
+            this.postData(this.port.manage.depList, {}).then(res => {
+                var list1 = JSON.parse(JSON.stringify(res.data));
+                this.departmentOption = this.changeArr(list1);
+            })
+        },
+        // 修改数组
+        changeArr(arr) {
+            for (var i = 0; i < arr.length; i++) {
+                if (arr[i].id != -1 && arr[i].id != 0) {
+                    if (arr[i].children != null && arr[i].children.length > 0) {
+                        arr[i].children = this.changeArr(arr[i].children);
+                    }
+                    arr[i].id && (arr[i].value = arr[i].id);
+                    delete arr[i].id;
+                }
+            }
+            for (var i in arr) {
+                if (arr[i].id == -1 || arr[i].id == 0) {
+                    arr.splice(i, 1)
+                }
+            }
+            return arr;
+        },
         getTaskTimeCompare() { // 获取任务 计划工时 VS 实际工时
             const params = {
                 projectId: this.curProjectId
@@ -446,7 +498,19 @@ export default {
             }
             myFunOne()
         },
-
+        vueCasader() {
+            if (obj.distinction == '1') {
+                if (obj.id != '') {
+                    let arr = []
+                    arr.push(obj.id)
+                    this.departmentOptionValue = arr
+                    this.getTaskTimeCompare()
+                } else {
+                    this.departmentOptionValue = []
+                    this.getTaskTimeCompare()
+                }
+            }
+        },
         async postData(urls, param) { // 单独封装请求
             return new Promise((resolve, reject) => {
                 this.http.post(urls, { ...param },
@@ -475,6 +539,7 @@ export default {
     },
 
     mounted() {
+        this.getDepartment()
         this.refreshPage()
     },
 }
@@ -493,6 +558,11 @@ export default {
 
     .dataStatistics-layout {
         margin: 20px;
+
+        .individual-title-layout {
+            display: flex;
+            align-items: center;
+        }
     }
 
     .individual-task {