Browse Source

提交工时管家代办任务的 项目 任务分组 人员的筛选条件

Lijy 1 year ago
parent
commit
bca0ab1e93
1 changed files with 112 additions and 43 deletions
  1. 112 43
      fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

+ 112 - 43
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -3,10 +3,6 @@
         <!--工具条-->
         <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
             <el-form :inline="true">
-                <!-- <div style="margin-left: 20px;display: inline-block">
-                <el-form-item label="任务列表">
-                </el-form-item>
-                </div> -->
                 <el-form-item :label="$t('tasklist')">
                     <div style="margin-left: 8px">
                     <!-- <el-input style="float:left;" v-model="keyword" class="input-with-select" placeholder="请输入项目名称关键字" clearable="true"> -->
@@ -18,65 +14,70 @@
                     <!-- </el-input> -->
                     </div>
                 </el-form-item>
-                <!-- <el-form-item label="项目分组" v-if="user.companyId == '428'">
-                    <div style="margin-left: 8px">
-                        <el-select v-model="groupName" style="width:200px;" placeholder="请选择" clearable @change="hiddens()">
-                            <el-option v-for="(item, index) in groupNameList" :key="index" :label="item" :value="item"></el-option>
-                        </el-select>
-                    </div>
-                </el-form-item> -->
 
                 <el-form-item :label="$t('subordinatedepartments')" v-if="user.timeType.projectWithDept">
-                    <!-- <span style="margin-left:5px;margin-right:5px;color:#606266;">部门</span> -->
                     <el-cascader v-model="deptId" :options="departmentList" size="small" :placeholder="$t('qing-xuan-ze-bu-men')"
                         :props="{ checkStrictly: true, expandTrigger: 'hover' }" :show-all-levels="false" clearable filterable @change="hiddens"
                     ></el-cascader>
                 </el-form-item>
 
-                <!-- <el-form-item style="float:right;">
-                    <el-link type="primary" :underline="false" @click="handleAdd(-1,null)">新增任务</el-link>
-                </el-form-item> -->
-
-                <!-- <div style="margin-left: 40px;display: inline-block">
-                <el-form-item label="类型">
-                </el-form-item>
-                </div> -->
                 <el-form-item :label="$t('types')">
                     <div style="margin-left: 8px">
-                    <!-- <el-input style="float:left;" v-model="keyword" class="input-with-select" placeholder="请输入项目名称关键字" clearable="true"> -->
                         <el-select v-model="typeField" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="hiddens()">
-                            <!-- <el-option label="任务" value="0" @click.native="hiddens()"></el-option>
-                            <el-option label="里程碑" value="1" @click.native="hiddens()"></el-option>
-                            <el-option label="风险" value="2" @click.native="hiddens()"></el-option> -->
                             <el-option :label="$t('other.task')" value="0"></el-option>
                             <el-option :label="$t('other.milestone')" value="1"></el-option>
                             <el-option :label="$t('risk')" value="2"></el-option>
                         </el-select>
-                        <!-- <el-button slot="append" @click="searchList" icon="el-icon-search"></el-button> -->
-                    <!-- </el-input> -->
                     </div>
                 </el-form-item>
-                <el-form-item >
-                    <div style="margin-left: 20px">
-                        <el-select v-model="dateType" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')">
-                            <el-option :label="$t('starttimes')" :value="0" @click.native="hiddens(1)"></el-option>
-                            <el-option :label="$t('deadline')" :value="1" @click.native="hiddens(1)"></el-option>
+
+                <el-form-item :label="'项目'">
+                    <div style="margin-left: 8px">
+                        <el-select v-model="screenProjectId" style="width:150px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="screenProjectChange">
+                            <el-option v-for="item in allProjectList" :key="item.id"  :label="item.projectName" :value="item.id"></el-option>
                         </el-select>
                     </div>
                 </el-form-item>
-                <el-form-item >
+
+                <el-form-item :label="'任务分组'">
                     <div style="margin-left: 8px">
-                        <el-date-picker
-                        v-model="dateSelect"
-                        type="daterange"
-                        size="small"
-                        range-separator="-"
-                        :start-placeholder="$t('interval')"
-                        :end-placeholder="$t('interval')"
-                        value-format="yyyy-MM-dd"
-                        clearable
-                        @change="hiddens()">
-                        </el-date-picker>
+                        <el-select v-model="screenTaskGroupingId" style="width:150px;" size="small" :disabled="!screenProjectId" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="hiddens()">
+                            <el-option v-for="item in taskGroupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                    </div>
+                </el-form-item>
+
+                <el-form-item :label="'人员'">
+                    <div style="margin-left: 8px">
+                        <el-select v-model="screenPersonnelId" filterable style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="hiddens()" v-if="user.userNameNeedTranslate != '1'">
+                            <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+
+                        <selectCat :subject="users" :subjectId="screenPersonnelId" :filterable="true" :clearable="true"  @selectCal="selectCal" :size="'small'" :distinction="'10'" v-if="user.userNameNeedTranslate == '1'"></selectCat>
+                    </div>
+                </el-form-item>
+
+                <el-form-item>
+                    <div style="display: flex;">
+                        <div style="margin-left: 20px">
+                            <el-select v-model="dateType" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')">
+                                <el-option :label="$t('starttimes')" :value="0" @click.native="hiddens(1)"></el-option>
+                                <el-option :label="$t('deadline')" :value="1" @click.native="hiddens(1)"></el-option>
+                            </el-select>
+                        </div>
+                        <div style="margin-left: 8px">
+                            <el-date-picker
+                            v-model="dateSelect"
+                            type="daterange"
+                            size="small"
+                            range-separator="-"
+                            :start-placeholder="$t('interval')"
+                            :end-placeholder="$t('interval')"
+                            value-format="yyyy-MM-dd"
+                            clearable
+                            @change="hiddens()">
+                            </el-date-picker>
+                        </div>
                     </div>
                 </el-form-item>
                 <el-form-item style="float: right;" v-if="user.companyId != '3092'">
@@ -503,6 +504,7 @@ import { error } from 'dingtalk-jsapi';
                 isDeleting: true,
                 showOrNot: false,
                 typeField: null,
+
                 searchField: '0',
                 keyword:null,
                 user: JSON.parse(sessionStorage.getItem("user")),
@@ -632,6 +634,12 @@ import { error } from 'dingtalk-jsapi';
                 meetingStartValue: '',
                 meetingEndValue: '',
                 toMeetTaskId:'',
+
+                // 筛选条件
+                screenProjectId: '',
+                screenTaskGroupingId: '',
+                screenPersonnelId: '',
+                allProjectList: []
             };
         },
         methods: {
@@ -894,6 +902,7 @@ import { error } from 'dingtalk-jsapi';
 
             //获取项目列表
             getList() {
+                console.log('执行函数')
                 this.listLoading = true;
                 let parameter = {
                     status: this.searchField,
@@ -901,6 +910,9 @@ import { error } from 'dingtalk-jsapi';
                     pageIndex: this.page,
                     pageSize: this.size,
                     // type: this.typeField
+                    projectId: this.screenProjectId,
+                    groupId: this.screenTaskGroupingId,
+                    targetUserId: this.screenPersonnelId
                 }
                 if(this.typeField != 'null' && this.typeField != null && this.typeField != '') {
                     parameter.type = this.typeField
@@ -1800,7 +1812,63 @@ import { error } from 'dingtalk-jsapi';
                         arr.push(obj.arrUserList[i].id) 
                     }
                     this.causeRejectionForm.responsible = arr
+                } else if(obj.distinction == '10') {
+                    this.screenPersonnelId = obj.id
+                    this.hiddens()
                 }
+            },
+
+            screenProjectChange() {
+                if(!this.screenProjectId) {
+                    this.screenTaskGroupingId = ''
+                } else {
+                    this.getTaskGroupList()
+                }   
+                this.hiddens()
+
+            },
+
+            // 获取项目列表
+            getAllProjectlist() {
+                this.http.post('/project/getProjectList',{},
+                res => {
+                    if (res.code == "ok") {
+                        this.allProjectList = res.data;
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
+            // 获取任务分组列表
+            getTaskGroupList() {
+                this.http.post('/task-group/list',{
+                    projectId: this.screenProjectId
+                },
+                res => {
+                    if (res.code == "ok") {
+                        this.taskGroupList = res.data;
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
             }
         },
         created() {
@@ -1818,6 +1886,7 @@ import { error } from 'dingtalk-jsapi';
             if(this.user.timeType.projectWithDept) {
                 this.getDepartmentList()
             }
+            this.getAllProjectlist()
             // if(this.user.companyId == '428') {
             //     this.getSthForSb()
             // }