|
@@ -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 {
|