Procházet zdrojové kódy

提交月度财务公示表

Lijy před 3 týdny
rodič
revize
1f8214702c

+ 2 - 0
fhKeeper/formulahousekeeper/timesheet/src/permissions.js

@@ -113,6 +113,7 @@ const StringUtil = {
         reportProjectConsumptionFirst: false, // 分组耗用进度表 //
         reportProjectConsumptionTwo: false, // 项目耗用进度表 //
         reportStaffTaskAccomplished: false, // 员工任务完成表 //
+        reportMonthlyFinancialWorkSchedule: false, // 月度财务工时表 //
 
         // 请假模块
         leaveFil : false, // 请假填报 // 
@@ -287,6 +288,7 @@ const StringUtil = {
         arr[i] == '全部项目耗用进度表' || arr[i] == '负责部门项目耗用进度表' ? obj.reportProjectConsumptionTwo = true : ''
         arr[i] == '全部员工任务进度表' || arr[i] == '负责部门员工任务进度表' ? obj.reportStaffTaskAccomplished = true : ''
         arr[i] == '全部员工任务完成情况表' || arr[i] == '负责部门员工任务完成情况表' ? obj.takCompletedStatus = true : ''
+        arr[i] == '月度财务工时表' || arr[i] == '月度财务工时表' ? obj.reportMonthlyFinancialWorkSchedule = true : ''
 
         arr[i] == '新增立项申请'  ? obj.projectApprovalNew = true : ''
         arr[i] == '导入立项申请'  ? obj.projectApprovalImport = true : ''

+ 299 - 34
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -51,6 +51,7 @@
                   <el-menu-item index="1-29" v-if="permissions.takCompletedStatus" @click="ssl(28)"><p>{{ $t('yuanGongRenWuWanChengQingKuangBiao') }}</p></el-menu-item>
                   <el-menu-item index="1-30" v-if="permissions.taskPlanCost" @click="ssl(29)"><p>{{ $t('taskPlanCostReport') }}</p></el-menu-item>
                   <el-menu-item index="1-31" v-if="permissions.reportFTEPlanAll || permissions.reportFTEPlanPart" @click="ssl(30)"><p>FTE计划报表</p></el-menu-item>
+                  <el-menu-item index="1-32" v-if="permissions.reportMonthlyFinancialWorkSchedule" @click="ssl(31)"><p>月度财务工时表</p></el-menu-item>
                 </el-submenu>
               </el-menu>
           </el-col>
@@ -231,15 +232,56 @@
           <el-select v-if="ins == 5" multiple v-model="stageNames" @visible-change="visibleSelcts" @clear="visibleSelcts(false)" clearable size="small" filterable collapse-tags :placeholder="$t('pleaseselectstage')" style="margin-left:10px;">
             <el-option v-for="item in firstStages" :key="item" :label="item" :value="item"></el-option>
           </el-select>
+
+          <!-- 月度财务报表单独筛选条件 -->
+          <template v-if="ins == 31">
+            <div class="monthlyFinance">
+              <div class="monthlyFinance-item">
+                <el-date-picker v-model="obtainMonthlyFinancialStatementsYmonth" type="month" placeholder="选择月" :clearable="false" @change="selcts()" size="small" value-format="yyyy-MM" style="width: 160px"></el-date-picker>
+                <el-button size="small" style="margin-left: 15px;" @click="getObtainMonthlyFinancialStatements(1)">重置工时</el-button>
+                <el-tooltip class="item" effect="dark" placement="bottom">
+                  <div slot="content">
+                    以当月人工填报工时进行统计,公共工时自动分摊 <br/><br/>
+                    部门A填报的公共工时分摊算法: <br/>
+                    1.部门A有本部门工时(车间组装/维修工时)的情况下,以本部门的各个项目工单行号为一组,按照每组的工时占比进行分摊到该组上。 注意:本部门工时不含其他部门协作的工时。<br/>
+                    2.部门A没有本部门工时的情况下,部门A有协作其他部门的工时,将部门A的公共工时按其他协作部门(可能有多个)的占比分给其他部门,再按照其他部门的每组工时占比分到该部门的各个组上。<br/>
+                  </div>
+                  <el-link type="warning" :underline="false" style="margin-left: 15px;">查看说明</el-link>
+                </el-tooltip>
+              </div>
+              <div class="monthlyFinance-item">
+                工单结算日期{{ obtainMonthlyFinancialModificationDate ? '(修改日期)' : '' }}:
+                <template v-if="!obtainMonthlyFinancialModificationDate">
+                  {{ obtainMonthlyFinancialStatementsRows.timesheetDate }}
+                  <el-link type="primary" :underline="false" style="margin-left: 15px;" @click="modificationDate()">修改日期</el-link>
+                </template>
+                <template v-else>
+                  <el-date-picker v-model="obtainMonthlyFinancialsRowsDates" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" size="small" :clearable="false" style="margin-right: 15px;width: 160px"></el-date-picker>
+                  <el-button size="small" @click="obtainMonthlyFinancialModificationDate = false">取消</el-button>
+                  <el-button type="primary" size="small" @click="modificationDateClick()">确定</el-button>
+                </template>
+              </div>
+              <div style="width: 10%;"></div>
+            </div>
+          </template>
       </div>
       <!-- <p :style="ins == 9 ? 'float: right;margin-right: 25px;width:20%' : 'float: right;margin-right: 25px;width:10%'" > -->
-      <p :style="`${ins == 9 || ins == 14 || ins == 21 ? 'width: 20%' : 'width: 10%'}`" class="tableRightBtn">
+      <p :style="`${ins == 9 || ins == 14 || ins == 21 ? 'width: 20%' : 'width: 10%'}`" class="tableRightBtn" v-if="ins != 31">
         <el-button type="primary" :loading="exportReportLoading" @click="exportExcel" size="mini">{{ $t('reporderived') }}</el-button>
         <el-button type="primary" @click="fillAll" size="mini" v-if="ins == 14">{{ $t('quanBuBuZu') }}</el-button>
         <el-button type="primary" @click="exportExcelByQuarter" size="mini" v-if="ins == 9 && user.companyId == 876">{{ $t('an-ji-du-dao-chu') }}</el-button>
         <el-button type="primary" @click="setWarning" size="mini" v-if="ins == 21">{{ $t('sheZhiYuJing') }}</el-button>
       </p>
       
+      <div v-if="ins == 31" style="width: 15%" class="tableRightBtn">
+        <template v-if="!obtainMonthlyFinancialStatementsRows.lastSendTime">
+          <el-button type="success" size="small" @click="confirmTheFinalDraft()">确定定稿</el-button>
+          <el-button type="primary" size="small" @click="immediateVisableCli()" :disabled="!obtainMonthlyFinancialStatementsRows.timesheetDate">立即发送</el-button>
+        </template>
+        <el-link type="success" :underline="false" v-else>
+          {{ obtainMonthlyFinancialStatementsRows.lastSendTime }} 已发送
+        </el-link>
+      </div>
     </div>
     <div ref="staff" style="margin: 5px 0px 0px 10px; width: 98%">
         <div class="staff" ref="tabless" :style="'width:'+(windowWidth - 430)+'px'">
@@ -1528,8 +1570,43 @@
               <el-table-column align="center" prop="planHours" label="计划工时" min-width="150"></el-table-column>
               <el-table-column align="center" prop="FTE" :label="'计划FTE(计划工时/当月计划工时基数)'" min-width="250"></el-table-column>
           </el-table>
+
+          <!-- 月度财务工时表 -->
+          <el-table v-if="ins == 31"  key="31" border :data="obtainMonthlyFinancialStatementsRows.detailList" highlight-current-row v-loading="obtainMonthlyFinancialStatementsLoading" :height="+tableHeight + 50" show-summary :summary-method="monthlyFinancialStatistics" style="width: 100%;" :max-height="+tableHeight + 50">
+            <el-table-column prop="projectCode" align="center" label="项目号"></el-table-column>
+            <el-table-column prop="extraField4" align="center" label="工单号"></el-table-column>
+            <el-table-column prop="extraField5" align="center" label="行号"></el-table-column>
+            <el-table-column label="车间组装/维修工时(h)" align="center">
+              <el-table-column prop="maintanceTime" align="center" label="组装/维修工时(h)" width="130px">
+                <template slot-scope="scope">
+                  <el-link type="primary" :underline="false" @click="adjustWorkingHours(scope.row, '组装/维修工时',scope.row.maintanceTime,'maintanceTime')">{{ scope.row.maintanceTime }}</el-link>
+                </template>
+              </el-table-column>
+              <el-table-column prop="debugTime" align="center" label="调试工时(h)" width="120px">
+                <template slot-scope="scope">
+                  <el-link type="primary" :underline="false" @click="adjustWorkingHours(scope.row, '调试工时',scope.row.debugTime,'debugTime')">{{ scope.row.debugTime }}</el-link>
+                </template>
+              </el-table-column>
+              <el-table-column prop="waitingTime" align="center" label="等料工时(h)" width="120px">
+                <template slot-scope="scope">
+                  <el-link type="primary" :underline="false" @click="adjustWorkingHours(scope.row, '等料工时',scope.row.waitingTime,'waitingTime')">{{ scope.row.waitingTime }}</el-link>
+                </template>
+              </el-table-column>
+            </el-table-column>
+            <el-table-column prop="assistTime" align="center" label="协助工时(h)" width="120px">
+              <template slot-scope="scope">
+                <el-link type="primary" :underline="false" @click="adjustWorkingHours(scope.row, '协助工时',scope.row.assistTime,'assistTime')">{{ scope.row.assistTime }}</el-link>
+              </template>
+            </el-table-column>
+            <el-table-column prop="publicTime" align="center" label="公摊工时(h)" width="120px">
+              <template slot-scope="scope">
+                <el-link type="primary" :underline="false" @click="adjustWorkingHours(scope.row, '公摊工时',scope.row.publicTime,'publicTime')">{{ scope.row.publicTime }}</el-link>
+              </template>
+            </el-table-column>
+            <el-table-column prop="totalTime" align="center" label="工时合计(h)" width="120px"></el-table-column>
+          </el-table>
         <!--工具条-->
-        <el-col :span="24" class="toolbar" v-if="ins != 6 && ins != 20 && ins != 21 && tabPosition==0 && tabsType == 'all'">
+        <el-col :span="24" class="toolbar" v-if="ins != 6 && ins != 20 && ins != 21 && tabPosition==0 && tabsType == 'all' && ins != 31">
           <el-pagination
                 v-if="ins == 12"
                 @size-change="groupSizeChange"
@@ -1873,6 +1950,34 @@
             <el-button @click="otherExpensesVisable = false">关闭</el-button>
           </span>
         </el-dialog>
+
+        <!-- 修改工时 -->
+        <el-dialog :title="adjustWorkingHoursRow.titleValue" :visible.sync="adjustWorkingHoursVisable" width="680px" top="5.6vh" :before-close="handleClose">
+          <div>
+            <div class="adjustWorkingHours">
+              <div>项目号:{{ adjustWorkingHoursRow.projectCode }}</div>
+              <div>工单号: {{ adjustWorkingHoursRow.extraField4 }}</div>
+              <div>行号: {{ adjustWorkingHoursRow.extraField5 }}</div>
+            </div>
+            <el-input-number v-model="adjustWorkingHoursRow.timeValue" controls-position="right" :min="0" style="width: 100%;margin-top:20px;" size="small"></el-input-number>
+          </div>
+          <span slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="adjustWorkingHoursClick()">确定</el-button>
+          </span>
+        </el-dialog>
+
+        <!-- 立即发送 -->
+        <el-dialog title="立即发送" :visible.sync="immediateVisable" width="680px" top="5.6vh" :before-close="handleClose">
+          <div>
+            <div class="adjustWorkingHours">
+              <div>工单结算日期</div>
+              <el-date-picker v-model="immediateDateValue" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" size="small" :clearable="false" style="margin-left: 15px;"></el-date-picker>
+            </div>
+          </div>
+          <span slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="immediate()">确认发送</el-button>
+          </span>
+        </el-dialog>
   </section>
 </template>
 
@@ -1901,7 +2006,7 @@ export default {
     return {
       themeColor: getThemeColor(),
       screeningCondition: { // 筛选条件的判断
-        project: [4, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22, 28, 30], // 项目筛选条件 (不等于)
+        project: [4, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22, 28, 30, 31], // 项目筛选条件 (不等于)
         months: [14, 15], // 月份筛选条件 (等于)
         monthRange: [19, 30], // 月份区间筛选条件 (等于)
         staff: [6, 8, 9, 19, 11, 14, 18, 23, 25, 26,28, 30], // 人员筛选条件 (等于)
@@ -1965,14 +2070,14 @@ export default {
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('statisticsofstafffillingintimerate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
       this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), this.$t('ziXiangMuGongShiChengBenBiao'), this.$t('renWuZhongQiBiao'), this.$t('fteBaoBiao'), this.$t('youXiaoGongShiShuaiBiao'), this.$t('xiangMuFenLeiGongShiZhanBiBiao'), this.$t('fenLeiGongShiMingXiBiao'),
-      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表'],
+      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表', '月度财务工时表'],
 
       shuzArr: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
       this.$t('projectbalancesheet'),this.$t('customerprojectincomestatement'),this.$t('projectphasetimesheet'),
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('employeereporttimelinessrate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
       this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), this.$t('ziXiangMuGongShiChengBenBiao'), this.$t('renWuZhongQiBiao'), this.$t('fteBaoBiao'),this.$t('youXiaoGongShiShuaiBiao'), this.$t('xiangMuFenLeiGongShiZhanBiBiao'), this.$t('fenLeiGongShiMingXiBiao'),
-      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表'],
+      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表', '月度财务工时表'],
 
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
@@ -2145,7 +2250,17 @@ export default {
       otherExpensesRow: {
         projectExpenseFeeList: []
       },
-      otherExpensesVisable: false
+      otherExpensesVisable: false,
+
+      obtainMonthlyFinancialStatementsRows: {}, // 月度财务工时表
+      obtainMonthlyFinancialStatementsYmonth: this.dayjs(new Date()).format('YYYY-MM'),
+      obtainMonthlyFinancialStatementsLoading: false,
+      obtainMonthlyFinancialModificationDate: false,
+      obtainMonthlyFinancialsRowsDates: '',
+      adjustWorkingHoursRow: {},
+      adjustWorkingHoursVisable: false,
+      immediateVisable: false,
+      immediateDateValue: '',
     };
   },
   computed: {},
@@ -2315,6 +2430,8 @@ export default {
       if(this.permissions.reportProjectEstimated) {this.ssl(27);this.reportProjectEstimated = '1-28';return} else
       if(this.permissions.takCompletedStatus) {this.ssl(28);this.takCompletedStatus = '1-29';return} else
       if(this.permissions.taskPlanCost) {this.ssl(29);this.takCompletedStatus = '1-30';return} else
+      if(this.permissions.reportFTEPlanAll || this.permissions.reportFTEPlanPart) {this.ssl(30);this.takCompletedStatus = '1-31';return} else
+      if(this.permissions.reportMonthlyFinancialWorkSchedule) {this.ssl(31);this.takCompletedStatus = '1-32';return} else
       {this.allWrong = false}
     },
     rowspan(spanArr,position,spanName,dataItem = [],fields=false){
@@ -2619,7 +2736,7 @@ export default {
                 this.getGroupWorktimeAll()
             },
             getList(e) {
-              let noUserList = [16, 17, 18, 19, 20, 21, 22, 24, 25, 26,27,29,30]
+              let noUserList = [16, 17, 18, 19, 20, 21, 22, 24, 25, 26,27,29,30,31]
               if(this.ins == 24) {
                 if(this.tabsType == 'all') {
                   this.rangeDatas = []
@@ -2719,6 +2836,9 @@ export default {
                 if (this.ins == 29) {
                   this.getTaskPlanAndRealCost();
                 }
+                if (this.ins == 31) {
+                  this.getObtainMonthlyFinancialStatements();
+                }
             },
       exportExcel() {
         var url = "/project";
@@ -4439,32 +4559,6 @@ export default {
       this.setWarningModal = true
       this.getForewarningTableList()
     },
-    // 单独封装请求
-    async postData(urls, param) {
-      return new Promise((resolve, reject) => {
-        this.http.post(urls, { ...param },
-          res => {
-            if(res.code == 'ok') {
-              resolve(res)
-            } else {
-              this.$message({
-                message: res.msg,
-                type: 'error'
-              })
-              reject(res)
-            }
-            resolve(res)
-          },
-          error => {
-            this.$message({
-              message: error,
-              type: "error"
-            });
-            reject(error)
-          }
-        )
-      });
-    },
     // 获取项目分类工时占比表
     async getProjectWoekScale() {
       let params = {
@@ -4855,7 +4949,161 @@ export default {
       this.postData('/project/getAllMainProject', {}).then((res) => {
         this.projectMainIdList = res.data || []
       })
-    }
+    },
+    // 获取月度财务工时表
+    getObtainMonthlyFinancialStatements(reGenerate = '') {
+      this.obtainMonthlyFinancialStatementsLoading = true
+      this.postData(`/finance-monthly-worktime/getByMonth`, {
+        companyId: this.user.companyId,
+        ymonth: this.obtainMonthlyFinancialStatementsYmonth,
+        reGenerate: reGenerate
+      }).then(res => {
+        if(reGenerate) {
+          this.$message({
+            message: '重置成功',
+            type: 'success'
+          })
+        }
+        this.obtainMonthlyFinancialStatementsRows = {
+          ...res.data,
+          detailList: (res.data.detailList || []).map(item => {
+            const timeFields = ['maintanceTime', 'debugTime', 'waitingTime', 'assistTime', 'publicTime'];
+            const totalTime = timeFields.reduce((sum, key) => sum + (item[key] || 0), 0);
+            return { ...item, totalTime };
+          })
+        };
+      }).finally(() => {
+        this.obtainMonthlyFinancialStatementsLoading = false
+      })
+    },
+    modificationDate() {
+      const { timesheetDate = '' } = this.obtainMonthlyFinancialStatementsRows
+      this.obtainMonthlyFinancialsRowsDates = timesheetDate
+      this.obtainMonthlyFinancialModificationDate = true
+    },
+    modificationDateClick() {
+      this.postData(`/finance-monthly-worktime/setTimesheetDate`, {
+        id: this.obtainMonthlyFinancialStatementsRows.id,
+        timesheetDate: this.obtainMonthlyFinancialsRowsDates,
+      }).then(res => {
+        this.obtainMonthlyFinancialModificationDate = false
+        this.getObtainMonthlyFinancialStatements()
+        this.$message({
+          message: `修改成功`,
+          type: 'success'
+        })
+      })
+    },
+    confirmTheFinalDraft() {
+      this.$confirm('确定定稿吗?', '', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.postData(`/finance-monthly-worktime/setStatusFinal`, {
+          id: this.obtainMonthlyFinancialStatementsRows.id,
+        }).then(res => {
+          this.getObtainMonthlyFinancialStatements()
+          this.$message({
+            message: `操作成功`,
+            type: 'success'
+          })
+        })
+      })
+      
+    },
+    immediateVisableCli() {
+      this.immediateDateValue = JSON.parse(JSON.stringify(this.obtainMonthlyFinancialStatementsRows.timesheetDate))
+      console.log(this.immediateDateValue, '<==== 123321')
+      this.immediateVisable = true
+    },
+    immediate() {
+      this.postData(`/finance-monthly-worktime/send`, {
+        id: this.obtainMonthlyFinancialStatementsRows.id,
+        timesheetDate: this.immediateDateValue,
+      }).then(res => {
+        this.immediateVisable = false
+        this.getObtainMonthlyFinancialStatements()
+        this.$message({
+          message: `发送成功`,
+          type: 'success'
+        })
+      })
+    },
+    // 月度财务统计
+    monthlyFinancialStatistics({ columns, data }) {
+      const timeFields = ['maintanceTime', 'debugTime', 'waitingTime', 'assistTime', 'publicTime', 'totalTime'];
+      const sums = [];
+
+      columns.forEach((column, index) => {
+        const prop = column.property;
+
+        if (index === 0) {
+          sums[index] = '合计';
+          return;
+        }
+
+        if (timeFields.includes(prop)) {
+          const total = data.reduce((sum, row) => {
+            const value = Number(row[prop]);
+            return sum + (isNaN(value) ? 0 : value);
+          }, 0);
+          sums[index] = total.toFixed(2);
+        } else {
+          sums[index] = '';
+        }
+      });
+      console.log(sums)
+      return sums;
+    },
+    adjustWorkingHours(row, title = '', value, filed) {
+      this.adjustWorkingHoursRow = {
+        ...row,
+        filed,
+        titleValue: title + "(修改)",
+        timeValue: Number(value || 0)
+      }
+      this.adjustWorkingHoursVisable = true
+    },
+    adjustWorkingHoursClick() {
+      const { id, filed = '', timeValue = 0 } = this.adjustWorkingHoursRow
+      this.postData(`/finance-monthly-worktime/changeWorktime`, {
+        id, [filed]: timeValue,
+      }).then(res => {
+        this.adjustWorkingHoursVisable = false
+        this.getObtainMonthlyFinancialStatements()
+        this.$message({
+          message: `操作成功`,
+          type: 'success'
+        })
+      })
+    },
+    // 单独封装请求
+    async postData(urls, param) {
+      return new Promise((resolve, reject) => {
+        this.http.post(urls, { ...param },
+          res => {
+            if(res.code == 'ok') {
+              resolve(res)
+            } else {
+              this.$message({
+                message: res.msg,
+                type: 'error'
+              })
+              reject(res)
+            }
+            resolve(res)
+          },
+          error => {
+            this.$message({
+              message: error,
+              type: "error"
+            });
+            reject(error)
+          }
+        )
+      });
+    },
   },
 };
 </script>
@@ -4864,6 +5112,23 @@ export default {
 .themeFontColor {
   @include font_color("color");
 }
+.monthlyFinance {
+  display: flex;
+  justify-content: space-between;
+  width: 100%;
+  .monthlyFinance-item {
+    display: flex;
+    align-items: center;
+    color: #999999;
+  }
+}
+.adjustWorkingHours {
+  display: flex;
+  align-items: center;
+  div {
+    margin-right: 20px;
+  }
+}
 .pagingTable {
   flex: 1 1 0%;
   overflow: hidden;