wangxi 4 years ago
commit d3c0f0544e

@ -67,7 +67,7 @@ export const moduleData=[{
purview_code:"hbg_rcbg",menu_name:["newPlanConclusion","work_summary"],show_oneLevel:false},
{module_id:'planning_statistics', module_name:'计划统计', relative_crm:['daliyOffice','newPlanConclusion','plan_summary_statistics'],icon:"icon-jihuatongji",
module_url_small:'',module_url_large:'',
module_url_small:'oa/planRecord/planRecord.vue',module_url_large:'oa/planRecord/planRecordLarge.vue',
purview_code:"hbg_rcbg",menu_name:["newPlanConclusion","plan_summary_statistics"],show_oneLevel:false},
{module_id:'summary_statistics', module_name:'总结统计', relative_crm:['daliyOffice','newPlanConclusion','plan_summary_statistics'],icon:"icon-zongjietongji",

@ -41,7 +41,7 @@
</div>
</template>
<script>
import {Icon,Spin} from 'ant-design-vue';
import {Icon, Spin} from 'ant-design-vue';
import * as echarts from 'echarts';
import interConfig from './interConfig';
export default{
@ -140,7 +140,7 @@
//weekData
depArr = this.weekData.dept_list;
}
for(let i = 0,len = depArr.length;i < len;i ++){
for (let i = 0, len = depArr.length; i < len; i++) {
xData.push(depArr[i].dept_name);
yData.push(depArr[i].news_size);
}
@ -170,6 +170,22 @@
yAxis: {
type: 'value'
},
dataZoom: [//X
{
type: 'slider', //
show: true, //
xAxisIndex: [0],
//left: '93%', //
bottom: "0%",
start: 1, //
end: 50 //
}, //X
{
type: 'inside', //
xAxisIndex: [0],
start: 1,//
end: 50 //
}],
series: [
{
data: yData,
@ -214,7 +230,7 @@
//weekData
typeArr = this.weekData.category_list;
}
for(let i = 0,len = typeArr.length;i < len;i ++){
for (let i = 0, len = typeArr.length; i < len; i++) {
xData.push(typeArr[i].category_name);
yData.push(typeArr[i].news_size);
}
@ -245,6 +261,22 @@
yAxis: {
type: 'value'
},
dataZoom: [//X
{
type: 'slider', //
show: true, //
xAxisIndex: [0],
//left: '93%', //
bottom: "0%",
start: 1, //
end: 50 //
}, //X
{
type: 'inside', //
xAxisIndex: [0],
start: 1,//
end: 50 //
}],
series: [
{
data: yData,
@ -274,7 +306,7 @@
},
components: {
AIcon: Icon,
ASpin:Spin
ASpin: Spin
}
}
</script>

@ -249,12 +249,12 @@
if (result[0].status === 200) {
if (resData.code === 2000) {
this.$set(this.planList[index], "finish_flag", 1);
Modal.success({
title: "计划已完成",
content: "",
centered: true,
zIndex: 100000
})
// Modal.success({
// title: "",
// content: "",
// centered: true,
// zIndex: 100000
// })
//this.getListSuperfusionWorkPlan();
}
}

@ -24,12 +24,12 @@
<div v-if="tabIndex == 0 && (t_item.category_type == 2 || t_item.category_type == 3)"
:class="'from-dep-or-org ' + (t_item.category_type == 2?'from-dep':(t_item.category_type == 3?'from-org':''))">
{{t_item.category_type == 2 ? '部门下发' : (t_item.category_type == 3 ? '机构下发' : '')}}
<div :class="'category-type-flag '+ (t_item.category_type == 2?'from-dep-flag':(t_item.category_type == 3?'from-org-flag':''))"></div>
<!--<div :class="'category-type-flag '+ (t_item.category_type == 2?'from-dep-flag':(t_item.category_type == 3?'from-org-flag':''))"></div>-->
</div>
<div v-if="tabIndex == 0 && t_item.category_type != 2 && t_item.category_type != 3 && t_item.is_relation == 1"
class="from-dep-or-org is-relation">
关联我的
<div class="category-type-flag is-relation-flag"></div>
<!--<div class="category-type-flag is-relation-flag"></div>-->
</div>
<div v-if="t_item.finish_flag == 0 && t_item.showDoFinish" class="do-finish"
v-on:click="doFinish(index,t_item,t_index,'top')">完成
@ -50,12 +50,12 @@
<div v-if="tabIndex == 0 && (r_item.category_type == 2 || r_item.category_type == 3)"
:class="'from-dep-or-org ' + (r_item.category_type == 2?'from-dep':(r_item.category_type == 3?'from-org':''))">
{{r_item.category_type == 2 ? '部门下发' : (r_item.category_type == 3 ? '机构下发' : '')}}
<div :class="'category-type-flag '+ (r_item.category_type == 2?'from-dep-flag':(r_item.category_type == 3?'from-org-flag':''))"></div>
<!--<div :class="'category-type-flag '+ (r_item.category_type == 2?'from-dep-flag':(r_item.category_type == 3?'from-org-flag':''))"></div>-->
</div>
<div v-if="tabIndex == 0 && r_item.category_type != 2 && r_item.category_type != 3 && r_item.is_relation == 1"
class="from-dep-or-org is-relation">
关联我的
<div class="category-type-flag is-relation-flag"></div>
<!--<div class="category-type-flag is-relation-flag"></div>-->
</div>
<div v-if="r_item.finish_flag == 0 && r_item.showDoFinish" class="do-finish"
v-on:click="doFinish(index,r_item,r_index,'right')">完成
@ -85,12 +85,12 @@
<div v-if="tabIndex == 0 && (b_item.category_type == 2 || b_item.category_type == 3)"
:class="'from-dep-or-org ' + (b_item.category_type == 2?'from-dep':(b_item.category_type == 3?'from-org':''))">
{{b_item.category_type == 2 ? '部门下发' : (b_item.category_type == 3 ? '机构下发' : '')}}
<div :class="'category-type-flag '+ (b_item.category_type == 2?'from-dep-flag':(b_item.category_type == 3?'from-org-flag':''))"></div>
<!--<div :class="'category-type-flag '+ (b_item.category_type == 2?'from-dep-flag':(b_item.category_type == 3?'from-org-flag':''))"></div>-->
</div>
<div v-if="tabIndex == 0 && b_item.category_type != 2 && b_item.category_type != 3 && b_item.is_relation == 1"
class="from-dep-or-org is-relation">
关联我的
<div class="category-type-flag is-relation-flag"></div>
<!--<div class="category-type-flag is-relation-flag"></div>-->
</div>
<div v-if="b_item.finish_flag == 0 && b_item.showDoFinish" class="do-finish"
v-on:click="doFinish(index,b_item,b_index,'bottom')">完成
@ -117,12 +117,12 @@
<div v-if="tabIndex == 0 && (l_item.category_type == 2 || l_item.category_type == 3)"
:class="'from-dep-or-org ' + (l_item.category_type == 2?'from-dep':(l_item.category_type == 3?'from-org':''))">
{{l_item.category_type == 2 ? '部门下发' : (l_item.category_type == 3 ? '机构下发' : '')}}
<div :class="'category-type-flag '+ (l_item.category_type == 2?'from-dep-flag':(l_item.category_type == 3?'from-org-flag':''))"></div>
<!--<div :class="'category-type-flag '+ (l_item.category_type == 2?'from-dep-flag':(l_item.category_type == 3?'from-org-flag':''))"></div>-->
</div>
<div v-if="tabIndex == 0 && l_item.category_type != 2 && l_item.category_type != 3 && l_item.is_relation == 1"
class="from-dep-or-org is-relation">
关联我的
<div class="category-type-flag is-relation-flag"></div>
<!--<div class="category-type-flag is-relation-flag"></div>-->
</div>
<div v-if="l_item.finish_flag == 0 && l_item.showDoFinish" class="do-finish"
v-on:click="doFinish(index,l_item,l_index,'left')">完成

@ -7,4 +7,30 @@ export default {
method:'get',
isTestLogin:true
},
/*
* 个人工作计划统计饼图柱状图
* */
"listSuperfusionPersonalStatisticsWorkPlan":{
url:'/intellioa/workPlan/listSuperfusionPersonalStatisticsWorkPlan',
method:'get',
isTestLogin:true
},
/*
* 部门工作计划统计
* */
"listSuperfusionDeptStatisticsWorkPlan":{
url:'/intellioa/workPlan/listSuperfusionDeptStatisticsWorkPlan',
method:'get',
isTestLogin:true
},
/*
* 机构工作计划统计
* */
"listSuperfusionOrgStatisticsWorkPlan":{
url:'/intellioa/workPlan/listSuperfusionOrgStatisticsWorkPlan',
method:'get',
isTestLogin:true
},
}

@ -9,30 +9,28 @@
<div class="part-content">
<div class="part-content-item border-right">
<a-progress type="circle" :percent="all_complete_percent" :width="80"></a-progress>
<div><span style="margin-left: 14px"></span>{{this.all_num}}</div>
<div>已完成{{this.complete_num}}</div>
<div>未完成{{this.uncomplete_num}}</div>
<div><span style="margin-left: 14px"></span>{{all_num}}</div>
<div>已完成{{complete_num}}</div>
<div>未完成{{uncomplete_num}}</div>
</div>
<div class="part-content-item border-right">
<a-progress type="circle" :percent="person_complete_percent" :width="80"></a-progress>
<div>我创建{{this.all_personal_num}}</div>
<div>已完成{{this.complete_personal_num}}</div>
<div>未完成{{this.uncomplete_personal_num}}</div>
<div>我创建{{all_personal_num}}</div>
<div>已完成{{complete_personal_num}}</div>
<div>未完成{{uncomplete_personal_num}}</div>
</div>
<div class="part-content-item">
<a-progress type="circle" :percent="relation_complete_percent" :width="80"></a-progress>
<div>关联我{{this.all_relation_num}}</div>
<div>已完成{{this.complete_relation_num}}</div>
<div>未完成{{this.uncomplete_relation_num}}</div>
<div>关联我{{all_relation_num}}</div>
<div>已完成{{complete_relation_num}}</div>
<div>未完成{{uncomplete_relation_num}}</div>
</div>
</div>
</div>
<div class="part-record-div">
<div class="part-title">每日对比</div>
<div class="day-compare-div">
<vue-scroll :ops="listScroll" style="height:15rem">
<div id="dayCompareId"></div>
</vue-scroll>
<div id="dayCompareId" style="width: 100%;height: 100%"></div>
</div>
</div>
</div>
@ -65,9 +63,7 @@
<div class="part-record-div">
<div class="part-title">成员对比</div>
<div class="day-compare-div">
<vue-scroll :ops="listScroll" style="height:15rem">
<div id="personCompareId"></div>
</vue-scroll>
<div id="personCompareId" style="width: 100%;height: 100%"></div>
</div>
</div>
</div>
@ -83,7 +79,7 @@
import TabComp from '../common/tabComp.vue';
import DateChoose from '../common/dateChoose.vue';
import OfficeMenuConfig from '../../../../../../../../src/utils/officeMenuConfig';
import {Spin,Progress,Modal,Icon} from 'ant-design-vue';
import {Spin, Progress, Modal, Icon} from 'ant-design-vue';
import interConfig from './interConfig';
import moment from 'moment';
import _ from 'lodash';
@ -102,29 +98,29 @@
tabIndex: 0,
begin_date: null,
end_date: null,
start:"",
end:"",
currentDate:"",
all_num:0,//
complete_num:0,//
uncomplete_num:0,//
all_personal_num:0,//
complete_personal_num:0,//
uncomplete_personal_num:0,//
all_relation_num:0,//
complete_relation_num:0,//
uncomplete_relation_num:0,//
showPanel:false,
depId:this.BaseConfig.person_info_my.dep_id,
depName:this.BaseConfig.person_info_my.dep_name,
depAdmin:false,
start: "",
end: "",
currentDate: "",
all_num: 0,//
complete_num: 0,//
uncomplete_num: 0,//
all_personal_num: 0,//
complete_personal_num: 0,//
uncomplete_personal_num: 0,//
all_relation_num: 0,//
complete_relation_num: 0,//
uncomplete_relation_num: 0,//
showPanel: false,
depId: this.BaseConfig.person_info_my.dep_id,
depName: this.BaseConfig.person_info_my.dep_name,
depAdmin: false,
/*
* 部门统计使用
* */
dept_person_num:0,
all_dept_num:0,
all_dept_finish_num:0,
all_dept_un_finish_num:0,
* 部门统计使用
* */
dept_person_num: 0,
all_dept_num: 0,
all_dept_finish_num: 0,
all_dept_un_finish_num: 0,
}
},
created(){
@ -135,19 +131,19 @@
}
this.getNowTime();
},
computed:{
all_complete_percent:function () {
return Math.ceil(this.complete_num/this.all_num * 100) ;
computed: {
all_complete_percent: function () {
return Math.ceil(this.complete_num / this.all_num * 100);
},
person_complete_percent:function () {
return Math.ceil(this.complete_personal_num/this.all_personal_num * 100) ;
person_complete_percent: function () {
return Math.ceil(this.complete_personal_num / this.all_personal_num * 100);
},
relation_complete_percent:function () {
return Math.ceil(this.complete_relation_num/this.all_relation_num * 100) ;
relation_complete_percent: function () {
return Math.ceil(this.complete_relation_num / this.all_relation_num * 100);
}
},
methods: {
getNowTime:function () {
getNowTime: function () {
this.InterfaceConfig.callInterface([{
url: interConfig.getNowTime.url,
params: {},
@ -162,9 +158,9 @@
let day = resData.data.day;
this.begin_date = moment(year + "-" + month + "-01");
this.end_date = moment(year + "-" + month + "-" + day);
if(this.tabIndex == 0){
if (this.tabIndex == 0) {
this.workSchedulePersonStatistics();
}else {
} else {
this.workScheduleDeptStatistics();
}
@ -247,15 +243,15 @@
}
})
},
buildEchart:function (data) {
buildEchart: function (data) {
// domecharts
let myChart = echarts.init(document.getElementById('dayCompareId'));
//
let yData = [];//y
let completedArr = [];//
let unCompletedArr = [];//
if(data){
data.forEach(item=>{
if (data) {
data.forEach(item => {
yData.push(item.day)
completedArr.push(item.finish_num);
unCompletedArr.push(item.un_finish_num);
@ -278,21 +274,28 @@
bottom: '3%',
containLabel: true
},
// dataZoom : {//
// show : true,
// realtime : true,
// start : 0,
// end : 70
// },
xAxis: {
type: 'value'
},
yAxis: {
type: 'category',
data: yData
data: yData,
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
},
dataZoom: [
{
type: 'slider', //
show: true, //
yAxisIndex: [0],
left: '93%', //
start: 1, //
end: 50 //初始化时,滑动条宽度结束标度<br> },<br> //y轴内置滑动
}, {
type: 'inside', //
yAxisIndex: [0],
start: 1,//<br> end: 50 //
}],
series: [
{
name: '已完成',
@ -301,12 +304,12 @@
label: {
show: true
},
barWidth:'10',
barWidth: '10',
emphasis: {
focus: 'series'
},
//data: [320, 302, 301, 334, 390, 330, 320]
data:completedArr
data: completedArr
},
{
name: '未完成',
@ -315,30 +318,28 @@
label: {
show: false
},
barWidth:'10',
barWidth: '10',
emphasis: {
focus: 'series'
},
//data: [120, 132, 101, 134, 90, 230, 210]
data:unCompletedArr
data: unCompletedArr
},
]
}
);
let autoHeight = yData.length * 35 + 50; // counst.length3550x()
myChart.resize({height:autoHeight});
},
buildDeptEchart:function (data) {
buildDeptEchart: function (data) {
let chartData = [];
let compareData = [];
let compareCompletedArr = [];
let compareUnCompletedArr = [];
data.forEach(item=>{
data.forEach(item => {
let chart = {
value:parseInt(item.finish_num) + parseInt(item.un_finish_num),
name:item.person_name,
value: parseInt(item.finish_num) + parseInt(item.un_finish_num),
name: item.person_name,
}
if(chart.value > 0){
if (chart.value > 0) {
chartData.push(chart)
}
@ -419,7 +420,19 @@
data: compareData
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
dataZoom: [
{
type: 'slider', //
show: true, //
yAxisIndex: [0],
left: '93%', //
start: 1, //
end: 50 //初始化时,滑动条宽度结束标度<br> },<br> //y轴内置滑动
}, {
type: 'inside', //
yAxisIndex: [0],
start: 1,//<br> end: 50 //
}],
series: [
{
name: '已完成',
@ -428,12 +441,12 @@
label: {
show: true
},
barWidth:'10',
barWidth: '10',
emphasis: {
focus: 'series'
},
//data: [320, 302, 301, 334, 390, 330, 320]
data:compareCompletedArr
data: compareCompletedArr
},
{
name: '未完成',
@ -442,67 +455,67 @@
label: {
show: false
},
barWidth:'10',
barWidth: '10',
emphasis: {
focus: 'series'
},
//data: [120, 132, 101, 134, 90, 230, 210]
data:compareUnCompletedArr
data: compareUnCompletedArr
},
]
}
);
let autoHeight = compareData.length * 35 + 50; // counst.length3550x()
compareChart.resize({height:autoHeight});
//let autoHeight = compareData.length * 35 + 50; // counst.length3550x()
//compareChart.resize({height: autoHeight});
},
flushDate: function (param) {
this.begin_date = param.beginDate;
this.end_date = param.endDate;
if(this.tabIndex == 0){
if (this.tabIndex == 0) {
this.workSchedulePersonStatistics();
}else {
} else {
this.workScheduleDeptStatistics();
}
},
chooseDep:function () {
if(!this.showPanel){
this.showPanel = true;
}
chooseDep: function () {
if (!this.showPanel) {
this.showPanel = true;
}
},
cloneData:function () {
cloneData: function () {
return _.cloneDeep([{
id:this.depId,
name:this.depName
id: this.depId,
name: this.depName
}])
},
closePanel:function () {
closePanel: function () {
this.showPanel = false;
},
selectComplete:function (selectedData) {
if(selectedData.length > 0){
selectComplete: function (selectedData) {
if (selectedData.length > 0) {
this.depId = selectedData[0].id;
this.depName = selectedData[0].name;
this.showPanel = false;
}else {
} else {
Modal.warning({
title:"请选择一个部门",
content:"",
centered:true,
zIndex:100000
title: "请选择一个部门",
content: "",
centered: true,
zIndex: 100000
})
}
}
},
mounted(){
// this.workSchedulePersonStatistics();
// this.workSchedulePersonStatistics();
},
components: {
TabComp,
ASpin: Spin,
DateChoose,
AProgress:Progress,
AProgress: Progress,
SelectDepartment,
AIcon:Icon
AIcon: Icon
}
}
</script>
@ -511,15 +524,16 @@
width: 100%;
min-height: 20rem;
padding: 0.5rem;
.part-record-div{
.part-record-div {
min-height: 10rem;
border:2px solid rgba(144, 202, 249, 1);
border: 2px solid rgba(144, 202, 249, 1);
border-radius: 5px;
position: relative;
margin-top: 1.5rem;
display: flex;
justify-content: center;padding: 1rem 0;
.part-title{
justify-content: center;
padding: 1rem 0;
.part-title {
position: absolute;
top: -16px;
padding: 0.2rem 1rem;
@ -528,12 +542,12 @@
color: white;
font-size: 1rem;
}
.part-content{
.part-content {
display: flex;
width: 100%;
min-height: 10rem;
padding: 1rem 0.5rem 0.5rem 0.5rem;
.part-content-item{
.part-content-item {
font-size: 14px;
width: 33%;
height: 100%;
@ -542,49 +556,50 @@
justify-content: center;
align-items: center;
}
.border-right{
.border-right {
border-right: 1px solid rgba(144, 202, 249, 1);
}
.dep-schedule-record-echart{
.dep-schedule-record-echart {
width: 60%;
}
.dep-schedule-record-info{
.dep-schedule-record-info {
width: 40%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.info-row{
.info-row {
margin-top: 0.5rem;
}
}
}
.day-compare-div{
.day-compare-div {
width: 90%;
height: 15rem;
/*height: 10rem;*/
/*overflow: auto;*/
/*min-height: 15rem;*/
}
}
.param-query-div{
.param-query-div {
display: flex;
justify-content: center;
align-items: center;
.dep-choose-div{
.dep-choose-div {
width: 15%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
.change-dep-icon{
.change-dep-icon {
color: #31a8fa;
cursor: pointer;
}
span{
span {
color: #31a8fa;
cursor: pointer;
}
}
.dep-date-choose-div{
.dep-date-choose-div {
width: 85%;
}
}

@ -94,17 +94,13 @@
<div class="part-record-div">
<div class="part-title">成员对比</div>
<div class="day-compare-div">
<vue-scroll :ops="listScroll" style="height:15rem">
<div id="personCompareId"></div>
</vue-scroll>
<div id="personCompareId" style="width: 100%;height: 100%"></div>
</div>
</div>
<div class="part-record-div">
<div class="part-title">每日对比</div>
<div class="day-compare-div">
<vue-scroll :ops="listScroll" style="height:15rem">
<div id="dayCompareId"></div>
</vue-scroll>
<div id="dayCompareId" style="width: 100%;height: 100%"></div>
</div>
</div>
</div>
@ -626,7 +622,19 @@
data: compareData
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
dataZoom: [
{
type: 'slider', //
show: true, //
yAxisIndex: [0],
left: '93%', //
start: 1, //
end: 50 //初始化时,滑动条宽度结束标度<br> },<br> //y轴内置滑动
},{
type: 'inside', //
yAxisIndex: [0],
start: 1,//<br> end: 50 //
}],
series: [
{
name: '已完成',
@ -659,8 +667,8 @@
]
}
);
let autoHeight = compareData.length * 35 + 50; // counst.length3550x()
compareChart.resize({height: autoHeight});
// let autoHeight = compareData.length * 35 + 50; // counst.length3550x()
// compareChart.resize({height: autoHeight});
let day_list = data.day_list;
this.buildDayListEchart(day_list);
@ -711,7 +719,19 @@
data: yData
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
dataZoom: [
{
type: 'slider', //
show: true, //
yAxisIndex: [0],
left: '93%', //
start: 1, //
end: 50 //初始化时,滑动条宽度结束标度<br> },<br> //y轴内置滑动
},{
type: 'inside', //
yAxisIndex: [0],
start: 1,//<br> end: 50 //
}],
series: [
{
name: '已完成',
@ -744,8 +764,8 @@
]
}
);
let autoHeight = yData.length * 35 + 50; // counst.length3550x()
myChart.resize({height:autoHeight});
// let autoHeight = yData.length * 35 + 50; // counst.length3550x()
// myChart.resize({height:autoHeight});
},
chooseDep: function () {
if (!this.showPanel) {

Loading…
Cancel
Save