浏览代码

2022.6.28 工时成本统计

ggooalice 2 年之前
父节点
当前提交
b7fd15dd5c

+ 4 - 8
fhKeeper/formulahousekeeper/timesheet/src/permissions.js

@@ -74,10 +74,8 @@ const StringUtil = {
         costAll : false, // 查看全部报销单 //
 
         // 工时成本统计
-        countAllWorkTime: false, // 查看全公司工时统计 //
-        countAllCost: false, // 查看全公司成本统计 //
-        countResWorkTime: false, // 查看负责部门工时统计 //
-        countResCost: false, // 查看负责部门成本统计 //
+        countHours: false, // 查看工时统计 //
+        countCost: false, // 查看成本统计 //
 
         // 项目报告审核
         projectReportReview: false, // 审核全员日报 //
@@ -145,10 +143,8 @@ const StringUtil = {
         arr[i] == '自定义配置' ? obj.structureCustomConfig = true : ''
         arr[i] == '查看人员填报及时率' ? obj.reportTimely = true : ''
         arr[i] == '查看日报待审核统计' ? obj.reportAuditRate = true : ''
-        arr[i] == '查看全公司工时统计' ? obj.countAllWorkTime = true : ''
-        arr[i] == '查看负责部门工时统计' ? obj.countResWorkTime = true : ''
-        arr[i] == '查看全公司成本统计' ? obj.countAllCost = true : ''
-        arr[i] == '查看负责部门成本统计' ? obj.countResCost = true : ''
+        arr[i] == '查看工时统计' ? obj.countHours = true : ''
+        arr[i] == '查看成本统计' ? obj.countCost = true : ''
     }
 
     return obj

+ 29 - 25
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -4,8 +4,8 @@
         <el-col :span="6" >
             <div ><span style="color:#999;">图表Y轴: </span>
             <el-radio-group v-model="yAxisValue" @change="onYAxisChange">
-            <el-radio-button label="0" v-if="permissions.countAllCost || permissions.countResCost">显示成本</el-radio-button>
-            <el-radio-button label="1" v-if="permissions.countAllWorkTime || permissions.countResWorkTime">显示工时</el-radio-button>
+            <el-radio-button label="0" v-if="permissions.countCost">显示成本</el-radio-button>
+            <el-radio-button label="1" v-if="permissions.countHours">显示工时</el-radio-button>
             </el-radio-group></div>
         </el-col>
         <el-col :span="14" style="display: flex;flex-wrap: wrap;">
@@ -273,6 +273,10 @@
                         param.projectCategoryId = this.exportParam.projectCategoryId
                     }
                 }
+                if(this.radio == '部门'){
+                    fileName = '部门工时成本统计.xls'
+                    url = '/department/exportDeptStatistic'
+                }
                 
                 if (this.exportParam.projectId && this.radio != '人员' && this.radio != '项目分类') {
                     param.projectId = this.exportParam.projectId;
@@ -552,10 +556,10 @@
                                         let item = {
                                             "value": this.yAxisValue==0?project[k].money:project[k].time,
                                         }
-                                        if(this.permissions.countAllCost || this.permissions.countResCost){
+                                        if(this.permissions.countCost){
                                             item.money = project[k].money
                                         }
-                                        if(this.permissions.countAllWorkTime || this.permissions.countResWorkTime){
+                                        if(this.permissions.countHours){
                                             item.cost = project[k].time
                                             totalHours += parseFloat(project[k].time);
                                         }
@@ -604,8 +608,8 @@
                         title: {
                             // text: '工时成本总计' + totalMoneyCost.toFixed(2) + '元, 时长'+totalHours+'小时',
                             text: '工时成本总计:' + 
-                            ((this.permissions.countAllCost || this.permissions.countResCost) ? '成本' + totalMoneyCost.toFixed(2) + '元,' : '') + 
-                            ((this.permissions.countAllWorkTime || this.permissions.countResWorkTime) ? '时长' + totalHours + '小时' : ''),
+                            ((this.permissions.countCost) ? '成本' + totalMoneyCost.toFixed(2) + '元,' : '') + 
+                            ((this.permissions.countHours) ? '时长' + totalHours + '小时' : ''),
                             left:'left',
                         },
                         // 工具箱
@@ -653,15 +657,15 @@
                                     if (params[i].data.value > 0) {
                                         res += "<div style='margin-top:3px;font-size:12px;'><font color='#ddd'>项目名称:" + params[i].seriesName 
                                             + "</font><br/>" + 
-                                            ((_this.permissions.countAllCost || _this.permissions.countResCost) ? "工作成本 : " + params[i].data.money + "元<br/>" : '') + 
-                                            ((_this.permissions.countAllWorkTime || _this.permissions.countResWorkTime) ? "工作时长 : " + params[i].data.cost + "小时</br>" : '') + "</div>";
+                                            ((_this.permissions.countCost) ? "工作成本 : " + params[i].data.money + "元<br/>" : '') + 
+                                            ((_this.permissions.countHours) ? "工作时长 : " + params[i].data.cost + "小时</br>" : '') + "</div>";
                                         totalTime += Number(params[i].data.cost);
                                         totalCost += Number(params[i].data.money);
                                     }
                                 }
                                 res = res +'<br/>'+ params[0].name+ '<br/>总计: ' + 
-                                ((_this.permissions.countAllWorkTime || _this.permissions.countResWorkTime) ? totalTime.toFixed(1) + '小时 ' : '') + 
-                                ((_this.permissions.countAllCost || _this.permissions.countResCost) ? totalCost.toFixed(2) + "元" : '') + 
+                                ((_this.permissions.countHours) ? totalTime.toFixed(1) + '小时 ' : '') + 
+                                ((_this.permissions.countCost) ? totalCost.toFixed(2) + "元" : '') + 
                                 "<br/>";
                                 return res;
                             }
@@ -784,10 +788,10 @@
                                         "value": this.yAxisValue==0?list[i].costMoney.toFixed(2) || list[i].costMoney:list[i].cost.toFixed(1),
                                         "id": list[i].id || i,
                                     }
-                                    if(this.permissions.countAllCost || this.permissions.countResCost){
+                                    if(this.permissions.countCost){
                                         item.money = list[i].costMoney.toFixed(2)
                                     }
-                                    if(this.permissions.countAllWorkTime || this.permissions.countResWorkTime){
+                                    if(this.permissions.countHours){
                                         item.cost = list[i].cost
                                         totalHours += parseFloat(list[i].cost);
                                     }
@@ -800,10 +804,10 @@
                                         "id": list[i].departmentId,
                                         "hasSubDept": list[i].hasSubDept
                                     }
-                                    if(this.permissions.countAllCost || this.permissions.countResCost){
+                                    if(this.permissions.countCost){
                                         item.money = list[i].costMoney.toFixed(2)
                                     }
-                                    if(this.permissions.countAllWorkTime || this.permissions.countResWorkTime){
+                                    if(this.permissions.countHours){
                                         item.cost = list[i].costTime
                                         totalHours += parseFloat(list[i].costTime);
                                     }
@@ -815,10 +819,10 @@
                                         "value": this.yAxisValue==0?list[i].costMoney.toFixed(2) || list[i].costMoney:list[i].cost.toFixed(1),
                                         "id": list[i].id || i,
                                     }
-                                    if(this.permissions.countAllCost || this.permissions.countResCost){
+                                    if(this.permissions.countCost){
                                         item.money = list[i].costMoney.toFixed(2)
                                     }
-                                    if(this.permissions.countAllWorkTime || this.permissions.countResWorkTime){
+                                    if(this.permissions.countHours){
                                         item.cost = list[i].cost
                                         totalHours += parseFloat(list[i].cost);
                                     }
@@ -835,11 +839,11 @@
                                     "value": this.yAxisValue==0?list[i].costMoney:list[i].cost,
                                     "id": list[i].id || i,
                                 }
-                                if(this.permissions.countAllCost || this.permissions.countResCost){
+                                if(this.permissions.countCost){
                                     item.money = list[i].costMoney.toFixed(2)
                                     totalMoneyCost += parseFloat(list[i].costMoney);
                                 }
-                                if(this.permissions.countAllWorkTime || this.permissions.countResWorkTime){
+                                if(this.permissions.countHours){
                                     item.cost = list[i].cost
                                     totalHours += parseFloat(list[i].cost);
                                 }
@@ -864,7 +868,7 @@
                         if(this.radio == '项目' || this.radio == '人员' || this.radio == '项目分类' || this.radio=='部门') {
                             var option = {
                                 title: {
-                                    text: '工时成本总计:' + ((this.permissions.countAllCost || this.permissions.countResCost) ? '成本' + this.zhishin + '元,' : '') + ((this.permissions.countAllWorkTime || this.permissions.countResWorkTime) ? '时长' + totalHours + '小时' : ''),
+                                    text: '工时成本总计:' + ((this.permissions.countCost) ? '成本' + this.zhishin + '元,' : '') + ((this.permissions.countHours) ? '时长' + totalHours + '小时' : ''),
                                     left:'left',
                                 },
                                 // 工具箱
@@ -881,9 +885,9 @@
                                         // + "元 <br/>工作时长"+" : " + params[0].data.cost + "小时";
                                         // _this.params = params;
                                         var res = params[0].name + "<br/>" + 
-                                        ((_this.permissions.countAllCost || _this.permissions.countResCost) ? "工作成本"+" : " + params[0].data.money 
+                                        ((_this.permissions.countCost) ? "工作成本"+" : " + params[0].data.money 
                                         + "元 <br/>" : '') + 
-                                        ((_this.permissions.countAllWorkTime || _this.permissions.countResWorkTime) ? "工作时长"+" : " + params[0].data.cost + "小时" : '');
+                                        ((_this.permissions.countHours) ? "工作时长"+" : " + params[0].data.cost + "小时" : '');
                                         return res;
                                     }
                                 },
@@ -910,7 +914,7 @@
                             var option = {
                                 title: {
                                     // text: '工时成本总计' + this.zhishin + '元, 时长'+totalHours+'小时',
-                                    text: '工时成本总计:' + ((this.permissions.countAllCost || this.permissions.countResCost) ? '成本' + this.zhishin + '元,' : '') + ((this.permissions.countAllWorkTime || this.permissions.countResWorkTime) ? '时长' + totalHours + '小时' : ''),
+                                    text: '工时成本总计:' + ((this.permissions.countCost) ? '成本' + this.zhishin + '元,' : '') + ((this.permissions.countHours) ? '时长' + totalHours + '小时' : ''),
                                     left:'left',
                                 },
                                 // 工具箱
@@ -924,9 +928,9 @@
                                     trigger:'axis',
                                     formatter: function (params,ticket,callback) {
                                         var res = params[0].name + "<br/>" + 
-                                        ((_this.permissions.countAllCost || _this.permissions.countResCost) ? "工作成本"+" : " + params[0].data.money 
+                                        ((_this.permissions.countCost) ? "工作成本"+" : " + params[0].data.money 
                                         + "元 <br/>" : '') + 
-                                        ((_this.permissions.countAllWorkTime || _this.permissions.countResWorkTime) ? "工作时长"+" : " + params[0].data.cost + "小时" : '');
+                                        ((_this.permissions.countHours) ? "工作时长"+" : " + params[0].data.cost + "小时" : '');
                                         _this.params = params;
                                         return res;
                                     }
@@ -1033,7 +1037,7 @@
                 this.containerHeight = window.innerHeight - 130
                 // this.containerHeight = window.innerHeight - 200
             };
-            if(this.permissions.countAllCost || this.permissions.countResCost){
+            if(this.permissions.countCost){
                 this.yAxisValue = '0'
             }else{
                 this.yAxisValue = '1'

+ 49 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -188,7 +188,6 @@
                     {{scope.row.progress==null?"-":scope.row.progress}}%
                 </template>
             </el-table-column>
-            <!-- 000000 -->
             <el-table-column label="操作" :width="showColumnWidth" align="left" fixed="right" v-if="showColumnWidth != '0' || permissions.projectManagement">
                 <template slot-scope="scope">
                     <el-button v-if="permissions.projectManagement || user.id==scope.row.creatorId" size="mini"  @click="subProject(scope.row)">子项目</el-button>
@@ -214,6 +213,7 @@
             </template>
             <template v-if="user.company.packageProject">
                 <el-button size="small" type="primary" @click="addGroupPerson()" :loading="addGroupPersonBtnLoading">批量添加分组参与人</el-button>
+                <el-button size="small" type="primary" @click="addProPreson()">批量添加项目参与人</el-button>
             </template>
             <el-pagination
                 @size-change="handleSizeChange"
@@ -398,7 +398,6 @@
             
             </el-form>  
             <div slot="footer" class="dialog-footer;">
-                <!-- 000000 -->
                 <el-button @click.native="deletePro(1, addForm)" v-if="(permissions.projectManagement || user.id==deleteVif) && addForm.id" style="float:left">删除</el-button>
                 <el-button @click.native="addFormVisible = false">取消</el-button>
                 <el-button type="primary" @click="submitInsert" :loading="addLoading">提交</el-button>
@@ -620,7 +619,7 @@
         </el-dialog>
 
         <!-- 批量添加参与人 -->
-        <el-dialog title="批量添加参与人" v-if="addGroupPersonDialog" :visible.sync="addGroupPersonDialog" width="40%">
+        <el-dialog :title="isAddGroupPerson ? '批量添加分组参与人' : '批量添加项目参与人'" v-if="addGroupPersonDialog" :visible.sync="addGroupPersonDialog" width="40%">
             <el-form label-width="20%">
                 <el-form-item label="选择人员">
                     <el-tooltip placement="top" effect="light">
@@ -628,7 +627,7 @@
                         <el-input  @focus="addGroupPersonP" v-model="addGroupPersonData.personNames"></el-input>
                     </el-tooltip>
                 </el-form-item>
-                <el-form-item label="选择分组">
+                <el-form-item label="选择分组" v-if="isAddGroupPerson">
                     <el-select v-model="addGroupPersonData.group" multiple placeholder="请选择分组" style="width:100%">
                         <el-option v-for="item in addGroupList" 
                         :key="item.groupIds"
@@ -639,7 +638,8 @@
             </el-form>
             <div slot="footer" class="dialog-footer">
                 <el-button  @click="addGroupPersonDialog = false" >取消</el-button>
-                <el-button type="primary" @click="addGroupPersonSure()" >确定</el-button>
+                <el-button type="primary" @click="addGroupPersonSure()" v-if="isAddGroupPerson">确定</el-button>
+                <el-button type="primary" @click="addProPersonSure()" v-else>确定</el-button>
             </div>
 
             <el-dialog append-to-body title="选择人员" v-if="addGroupPersonPdialog" :visible.sync="addGroupPersonPdialog" width="40%">
@@ -661,6 +661,7 @@
                 </div>
             </el-dialog>
         </el-dialog>
+
         <el-dialog append-to-body title="项目导入结果" v-if="showImportResult" :visible.sync="showImportResult" width="40%">
                 <div >
                     {{importResultMsg}}
@@ -807,7 +808,9 @@ a {
                 },
                 addGroupPersonPdialog: false,
                 showColumnWidth: '300',
-                deleteVif: null
+                deleteVif: null,
+                isAddGroupPerson: true
+                
             };
         },
         // 过滤器
@@ -955,7 +958,7 @@ a {
             test(row){
                 console.log(row);
             },
-            // 批量添加参与人员
+            // 批量添加分组参与人员
             addGroupPerson(){
                 let proArr = []
                 if(this.checkedProjectArr.length == 0){
@@ -1049,6 +1052,45 @@ a {
                 })
             },
 
+            // 批量添加项目参与人
+            addProPreson(){
+                this.addGroupPersonDialog = true
+                this.isAddGroupPerson = false
+            },
+            addProPersonSure(){
+                if(this.addGroupPersonData.person == null){
+                    this.$message({
+                        message: '请选择人员',
+                        type: 'warning'
+                    })
+                    return
+                }
+                this.http.post('/project/batchAddMembToGroup',{
+                    membIdArray: JSON.stringify(this.addGroupPersonData.person),
+                    groupIds: JSON.stringify(groupList)
+                },res => {
+                    if(res.code == 'ok'){
+                        this.addGroupPersonDialog = false,
+                        
+                        this.batchSetWudulistBtn1()
+                        this.$message({
+                            message: '添加成功',
+                            type: 'success'
+                        })
+                    }else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        })
+                    }
+                },err => {
+                    this.$message({
+                        message: err,
+                        type: 'error'
+                    })
+                })
+            },
+
 
             filterNode(value, data) {
                 if (!value) return true;