|
|
@@ -1,101 +1,95 @@
|
|
|
<template>
|
|
|
<div class="personView">
|
|
|
- <div class="topView" style="width: 100%; height: 11%">
|
|
|
- <!-- <div class="jbd-title"> 人员管理看板 </div> -->
|
|
|
- <div class="jbd-title">
|
|
|
- <dv-decoration-8
|
|
|
- style="
|
|
|
+ <dv-full-screen-container>
|
|
|
+ <div class="topView"
|
|
|
+ style="width: 100%; height: 11%">
|
|
|
+ <!-- <div class="jbd-title"> 人员管理看板 </div> -->
|
|
|
+ <div class="jbd-title">
|
|
|
+ <dv-decoration-8 style="
|
|
|
width: 20%;
|
|
|
height: 50px;
|
|
|
position: absolute;
|
|
|
left: 0px;
|
|
|
top: 0px;
|
|
|
- "
|
|
|
- />
|
|
|
- <div style="width: 100%">
|
|
|
- <div style="height: 40%; font-size: 22px; margin-top: 10px">
|
|
|
- 人员管理看板
|
|
|
+ " />
|
|
|
+ <div style="width: 100%">
|
|
|
+ <div style="height: 40%; font-size: 22px; margin-top: 10px">
|
|
|
+ 人员管理看板
|
|
|
+ </div>
|
|
|
+ <dv-decoration-5 style="width: 30%; height: 50%; margin: 0 auto" />
|
|
|
</div>
|
|
|
- <dv-decoration-5 style="width: 30%; height: 50%; margin: 0 auto" />
|
|
|
- </div>
|
|
|
- <dv-decoration-8
|
|
|
- :reverse="true"
|
|
|
- style="
|
|
|
+ <dv-decoration-8 :reverse="true"
|
|
|
+ style="
|
|
|
width: 20%;
|
|
|
height: 50px;
|
|
|
position: absolute;
|
|
|
right: 0px;
|
|
|
top: 0px;
|
|
|
- "
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="contain">
|
|
|
- <dv-decoration-11 class="personNum" style="margin-left: 10%"
|
|
|
- ><i
|
|
|
- class="el-icon-user"
|
|
|
- style="color: #4ea5d6; margin-right: 3px"
|
|
|
- ></i>
|
|
|
- 员工数量:{{ employeeNum }}人</dv-decoration-11
|
|
|
- >
|
|
|
- <dv-border-box-8
|
|
|
- class="date"
|
|
|
- style="margin-right: 10%; display: flex; align-items: center"
|
|
|
- >
|
|
|
- <!-- 部门选择 -->
|
|
|
- <SelectPositions @handleFunc="handleFunc" />
|
|
|
- <div style="width: 30%; display: inline-block; margin-right: 3px">
|
|
|
- 统计时间:
|
|
|
- </div>
|
|
|
- <el-date-picker
|
|
|
- style="width: 75%"
|
|
|
- v-model="monthValues"
|
|
|
- type="monthrange"
|
|
|
- align="right"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始月份"
|
|
|
- end-placeholder="结束月份"
|
|
|
- :picker-options="pickerOptions"
|
|
|
- @change="changeDate"
|
|
|
- >
|
|
|
- </el-date-picker>
|
|
|
- </dv-border-box-8>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <dv-border-box-1
|
|
|
- style="width: 100%; height: 89%; box-sizing: border-box; overflow: hidden"
|
|
|
- >
|
|
|
- <div style="height: 3%"></div>
|
|
|
- <div class="middleView">
|
|
|
- <div class="viewLeft">
|
|
|
- <pieView :info="degreePieData" />
|
|
|
+ " />
|
|
|
</div>
|
|
|
- <dv-decoration-2 :reverse="true" style="width: 2%; height: 100%" />
|
|
|
- <div class="viewCenter">
|
|
|
- <RingChart :info="ranksPieData" />
|
|
|
- </div>
|
|
|
- <dv-decoration-2 :reverse="true" style="width: 2%; height: 100%" />
|
|
|
- <div class="viewRight">
|
|
|
- <CarouselTabl :info="personInfoData" title="员工基本信息列表" />
|
|
|
+ <div class="contain">
|
|
|
+ <dv-decoration-11 class="personNum"
|
|
|
+ style="margin-left: 10%"><i class="el-icon-user"
|
|
|
+ style="color: #4ea5d6; margin-right: 3px"></i>
|
|
|
+ 员工数量:{{ employeeNum }}人</dv-decoration-11>
|
|
|
+ <dv-border-box-8 class="date"
|
|
|
+ style="margin-right: 10%; display: flex; align-items: center">
|
|
|
+ <!-- 部门选择 -->
|
|
|
+ <SelectPositions @handleFunc="handleFunc" />
|
|
|
+ <div style="width: 30%; display: inline-block; margin-right: 3px">
|
|
|
+ 统计时间:
|
|
|
+ </div>
|
|
|
+ <el-date-picker style="width: 75%"
|
|
|
+ v-model="monthValues"
|
|
|
+ type="monthrange"
|
|
|
+ align="right"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始月份"
|
|
|
+ end-placeholder="结束月份"
|
|
|
+ :picker-options="pickerOptions"
|
|
|
+ @change="changeDate">
|
|
|
+ </el-date-picker>
|
|
|
+ <div class="back"
|
|
|
+ @click.prevent="goBack()">
|
|
|
+ <dv-border-box-8>返回</dv-border-box-8>
|
|
|
+ </div>
|
|
|
+ </dv-border-box-8>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <dv-decoration-10 style="height: 2%; width: 96%; margin: 0 auto" />
|
|
|
- <div class="bottomView">
|
|
|
- <div class="detectionTask">
|
|
|
- <BarChart
|
|
|
- :info="PositionsOption"
|
|
|
- :config="{ title: '部门信息统计', id: 'positionsId' }"
|
|
|
- />
|
|
|
+ <dv-border-box-1 style="width: 100%; height: 89%; box-sizing: border-box; overflow: hidden">
|
|
|
+ <div style="height: 3%"></div>
|
|
|
+ <div class="middleView">
|
|
|
+ <div class="viewLeft">
|
|
|
+ <pieView :info="degreePieData" />
|
|
|
+ </div>
|
|
|
+ <dv-decoration-2 :reverse="true"
|
|
|
+ style="width: 2%; height: 100%" />
|
|
|
+ <div class="viewCenter">
|
|
|
+ <RingChart :info="ranksPieData" />
|
|
|
+ </div>
|
|
|
+ <dv-decoration-2 :reverse="true"
|
|
|
+ style="width: 2%; height: 100%" />
|
|
|
+ <div class="viewRight">
|
|
|
+ <CarouselTabl :info="personInfoData"
|
|
|
+ title="员工基本信息列表" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <dv-decoration-2 :reverse="true" style="width: 2%; height: 100%" />
|
|
|
- <div class="taskMatters">
|
|
|
- <BarChart
|
|
|
- :info="optionPerson"
|
|
|
- :config="{ title: '任务事宜统计', id: 'taskMatters' }"
|
|
|
- />
|
|
|
+ <dv-decoration-10 style="height: 2%; width: 96%; margin: 0 auto" />
|
|
|
+ <div class="bottomView">
|
|
|
+ <div class="detectionTask">
|
|
|
+ <BarChart :info="PositionsOption"
|
|
|
+ :config="{ title: '部门信息统计', id: 'positionsId' }" />
|
|
|
+ </div>
|
|
|
+ <dv-decoration-2 :reverse="true"
|
|
|
+ style="width: 2%; height: 100%" />
|
|
|
+ <div class="taskMatters">
|
|
|
+ <BarChart :info="optionPerson"
|
|
|
+ :config="{ title: '任务事宜统计', id: 'taskMatters' }" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </dv-border-box-1>
|
|
|
+ </dv-border-box-1>
|
|
|
+ </dv-full-screen-container>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -104,6 +98,7 @@ import curdPost from "@/business/platform/form/utils/custom/joinCURD.js";
|
|
|
import pieView from "@/views/system/jbdHome/board/component/getPieView";
|
|
|
import CarouselTabl from "@/views/system/jbdHome/board/component/CarouselTabl";
|
|
|
import SelectPositions from "@/views/component/selectPositions";
|
|
|
+import screenfull from 'screenfull'
|
|
|
|
|
|
export default {
|
|
|
name: "checkBoard1",
|
|
|
@@ -197,7 +192,7 @@ export default {
|
|
|
value: 0,
|
|
|
},
|
|
|
],
|
|
|
- color: ["#FFFF00", "#99CC00", "#6666FF"],
|
|
|
+ color: ["#eacd76", "#896c39", "#9b4400"],
|
|
|
config: { title: "职称统计", idSelector: "ranksid" },
|
|
|
},
|
|
|
// 员工基本信息图配置表
|
|
|
@@ -222,8 +217,9 @@ export default {
|
|
|
legend: {
|
|
|
textStyle: {
|
|
|
color: "rgba(251, 251, 251, 1)",
|
|
|
- },
|
|
|
+ }
|
|
|
},
|
|
|
+ color: ['#c91f37', '#6666FF', "#99CC00", "#FFFF00", "#9b4400", "#896c39", "#eacd76"],
|
|
|
grid: {
|
|
|
left: "3%",
|
|
|
right: "4%",
|
|
|
@@ -301,13 +297,7 @@ export default {
|
|
|
data: [],
|
|
|
emphasis: {
|
|
|
focus: "series",
|
|
|
- },
|
|
|
- markLine: {
|
|
|
- lineStyle: {
|
|
|
- type: "dashed",
|
|
|
- },
|
|
|
- data: [[{ type: "min" }, { type: "max" }]],
|
|
|
- },
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
name: "中级职称",
|
|
|
@@ -504,8 +494,8 @@ export default {
|
|
|
sum(a.zhi_cheng_deng_ji = '高级') as senior,
|
|
|
sum(a.zhi_cheng_deng_ji = '' || a.zhi_cheng_deng_ji is null) as other
|
|
|
from t_ryjbqk as a join ibps_party_employee as ee on a.parent_id_= ee.id_ where ee.id_ != '702117247933480960' and (${this.otherPositions.join(
|
|
|
- " or "
|
|
|
- )} )`;
|
|
|
+ " or "
|
|
|
+ )} )`;
|
|
|
await curdPost("sql", sql).then((res) => {
|
|
|
data = res.variables.data;
|
|
|
});
|
|
|
@@ -538,8 +528,8 @@ export default {
|
|
|
ee.id_ AS eeID,ee.name_ AS eeName,ee.positions_,ry.zui_gao_xue_li_x_,ry.zhi_cheng_deng_ji
|
|
|
FROM t_ryjbqk AS ry JOIN ibps_party_employee AS ee ON ry.parent_id_= ee.id_ WHERE ee.id_ != '702117247933480960'
|
|
|
)gy LEFT JOIN ibps_party_entity en ON FIND_IN_SET(en.id_,gy.positions_) where (${this.positions.join(
|
|
|
- " or "
|
|
|
- )}) GROUP BY enName) jh`;
|
|
|
+ " or "
|
|
|
+ )}) GROUP BY enName) jh`;
|
|
|
curdPost("sql", sql).then((res) => {
|
|
|
const data = res.variables.data;
|
|
|
// 组装数据集,以学历职称为列,以部门为行:{"高中":['1','2','3']}
|
|
|
@@ -595,10 +585,9 @@ export default {
|
|
|
let sql = `select executor_,count(executor_) as num ,ee.name_ FROM IBPS_BPM_TASKS as a join IBPS_BPM_TASK_ASSIGN as b
|
|
|
on a.task_id_ = b.task_id_ join ibps_party_employee as ee on b.executor_ = ee.id_ and
|
|
|
ee.STATUS_= 'actived' and ee.ID_ != '1' and ee.ID_ != '-1' and ee.ID_ != '702117247933480960' and (${this.otherPositions.join(
|
|
|
- " or "
|
|
|
- )} ) and a.CREATE_TIME_ between '${this.startDate}' and '${
|
|
|
- this.endDate
|
|
|
- }'
|
|
|
+ " or "
|
|
|
+ )} ) and a.CREATE_TIME_ between '${this.startDate}' and '${this.endDate
|
|
|
+ }'
|
|
|
and ee.GROUP_ID_ not like '%1041786072788369408%' GROUP BY executor_ order by ee.CREATE_TIME_ asc `;
|
|
|
await curdPost("sql", sql).then((res) => {
|
|
|
data = res.variables.data;
|
|
|
@@ -611,8 +600,8 @@ export default {
|
|
|
let cssql = `select executor_ ,count(executor_) as num ,ee.name_,a.create_time_ FROM IBPS_BPM_TASKS as a join IBPS_BPM_TASK_ASSIGN as b
|
|
|
on a.task_id_ = b.task_id_ join ibps_party_employee as ee on b.executor_ = ee.id_
|
|
|
where now()> SUBDATE(a.create_time_,interval - 3 day) and ee.STATUS_= 'actived' and (${this.otherPositions.join(
|
|
|
- " or "
|
|
|
- )} )
|
|
|
+ " or "
|
|
|
+ )} )
|
|
|
and ee.ID_ != '1' and ee.ID_ != '-1' and ee.ID_ != '702117247933480960' and ee.GROUP_ID_ not like '%1041786072788369408%'
|
|
|
GROUP BY executor_ order by ee.CREATE_TIME_ asc `;
|
|
|
await curdPost("sql", cssql).then((res) => {
|
|
|
@@ -624,20 +613,17 @@ export default {
|
|
|
personIds = personIds.slice(0, personIds.length - 1);
|
|
|
let yibansql1 = `select count(AUDITOR_) as num,AUDITOR_,name_,STATUS_,CREATE_TIME_ from (select a.AUDITOR_,ee.name_,
|
|
|
a.STATUS_,ee.CREATE_TIME_ from IBPS_BPM_APPROVAL as a join ibps_party_employee as ee on a.AUDITOR_ = ee.id_
|
|
|
- where a.CREATE_TIME_ between '${this.startDate}' and '${
|
|
|
- this.endDate
|
|
|
- }' and (${this.otherPositions.join(" or ")} ) and
|
|
|
+ where a.CREATE_TIME_ between '${this.startDate}' and '${this.endDate
|
|
|
+ }' and (${this.otherPositions.join(" or ")} ) and
|
|
|
ee.id_ in(${personIds}) group by a.PROC_inst_ID_) as zz group by AUDITOR_ order by CREATE_TIME_ asc `;
|
|
|
await curdPost("sql", yibansql1).then((res) => {
|
|
|
yibanData1 = res.variables.data;
|
|
|
});
|
|
|
let yibansql2 = `select count(AUDITOR_) as num,AUDITOR_,name_,STATUS_,CREATE_TIME_ from (select a.PROC_inst_ID_,
|
|
|
ee.name_,a.AUDITOR_,a.STATUS_,ee.CREATE_TIME_ from IBPS_BPM_APPROVAL_HIS as a join ibps_party_employee as ee on a.AUDITOR_ = ee.id_
|
|
|
- where a.CREATE_TIME_ between '${
|
|
|
- this.startDate
|
|
|
- }' and '${
|
|
|
- this.endDate
|
|
|
- }' and ee.id_ and (${this.otherPositions.join(" or ")} )
|
|
|
+ where a.CREATE_TIME_ between '${this.startDate
|
|
|
+ }' and '${this.endDate
|
|
|
+ }' and ee.id_ and (${this.otherPositions.join(" or ")} )
|
|
|
in(${personIds}) group by a.PROC_inst_ID_) as bb group by AUDITOR_ order by CREATE_TIME_ asc `;
|
|
|
await curdPost("sql", yibansql2).then((res) => {
|
|
|
yibanData2 = res.variables.data;
|
|
|
@@ -706,6 +692,14 @@ export default {
|
|
|
this.handleAllGetFunc();
|
|
|
}, 180000);
|
|
|
},
|
|
|
+ allView() {
|
|
|
+ // 默认显示全屏
|
|
|
+ screenfull.request()
|
|
|
+ },
|
|
|
+ // 返回
|
|
|
+ goBack() {
|
|
|
+ this.$router.back(-1)
|
|
|
+ },
|
|
|
},
|
|
|
created() {
|
|
|
const initendDate = new Date();
|
|
|
@@ -724,12 +718,15 @@ export default {
|
|
|
new Date(this.startDate),
|
|
|
new Date(
|
|
|
initendDate.getFullYear() +
|
|
|
- "-" +
|
|
|
- (initendDate.getMonth() + 1) +
|
|
|
- "-" +
|
|
|
- initendDate.getDate()
|
|
|
+ "-" +
|
|
|
+ (initendDate.getMonth() + 1) +
|
|
|
+ "-" +
|
|
|
+ initendDate.getDate()
|
|
|
),
|
|
|
];
|
|
|
+ if (screenfull.isEnabled && !screenfull.isFullscreen) {
|
|
|
+ this.allView()
|
|
|
+ }
|
|
|
},
|
|
|
mounted() {
|
|
|
this.intervalHandle();
|
|
|
@@ -738,7 +735,11 @@ export default {
|
|
|
if (this.interval) {
|
|
|
clearInterval(this.interval);
|
|
|
}
|
|
|
+ if (screenfull.isFullscreen) {
|
|
|
+ screenfull.toggle()
|
|
|
+ }
|
|
|
},
|
|
|
+
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="less" scoped>
|