This commit is contained in:
shilixia 2019-11-05 15:10:00 +08:00
parent 0fcd4a65b0
commit b0ce0da639
4 changed files with 297 additions and 10 deletions

View File

@ -0,0 +1,268 @@
<script>
var now = new Date();
$(function () {
year = now.getFullYear();
month = now.getMonth() + 1;
for (var i = 0; i < 5; i++) {
$('#year').append('<option value="' + (year - i) + '">' + (year - i) + '</option>');
$('#years').append('<option value="' + (year - i) + '">' + (year - i) + '</option>');
}
$.get('api/tool?a=servertime', function (res) {
$('#year').combobox().combobox('setValue', res.year);
$('#years').combobox().combobox('setValue', res.year);
$('#month').combobox().combobox('setValue', res.month);
behaviorDate();
trainstatistical();
})
});
function gcpmsearch() {
var querydata = $('#fxrpms').serializeJSON();
$('#fxrpmtable').datagrid('load', querydata);
}
//培训分析柱形图
function behaviorDate() {
var y = $("#year").val();
var gcChart = echarts.init(document.getElementById("piecontainer"));
gcChart.setOption(option = {
title: {
text: '培训数量趋势图',
x: 'left'
},
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
legend: {
data: []
},
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月','8月','9月','10月','11月','12月']
},
yAxis: {
type: 'value'
},
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
restore: { show: true },
saveAsImage: { show: true }
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
});
gcChart.showLoading();
$.ajax({
type: "get",
async: true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
url: "api/trainfg?a=trainfig&year=" + y, //请求发送
dataType: "json", //返回数据形式为json
success: function (data) {
//请求成功时执行该函数内容data即为服务器返回的json对象
console.log(data);
if (data) {
gcChart.hideLoading(); //隐藏加载动画
gcChart.setOption({
legend: { data: data.key },
series: [{
name: '公司级',
type: 'bar',
stack: '总量',
label: {
normal: {
show: true,
position: 'insideRight'
}
},
data: data.companylevel
},
{
name: '车间/工段级',
type: 'bar',
stack: '总量',
label: {
normal: {
show: true,
position: 'insideRight'
}
},
data: data.workshoplevel
},
{
name: '班组级',
type: 'bar',
stack: '总量',
label: {
normal: {
show: true,
position: 'insideRight'
}
},
data: data.teamlevel
},
{
name: '部门分厂级',
type: 'bar',
stack: '总量',
label: {
normal: {
show: true,
position: 'insideRight'
}
},
data: data.departmentlevel
}]
}
);
}
},
error: function (errorMsg) {
gcChart.hideLoading();
}
});
}
//培训分析扇形图
function trainstatistical() {
var y = $("#year").val();
var m = $("#month").val();
var gcChart = echarts.init(document.getElementById("piecontainer2"));
gcChart.setOption(option = {
title: {
text: '培训类型分布',
x: 'left'
},
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient: 'vertical',
x: 'left',
y: 'bottom',
data: []
},
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
restore: { show: true },
saveAsImage: { show: true }
}
},
calculable: true,
});
gcChart.showLoading();
$.ajax({
type: "get",
async: true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
url: "api/trainfg?a=traintype&year=" + y + "&month=" + m, //请求发送
dataType: "json", //返回数据形式为json
success: function (data) {
//请求成功时执行该函数内容data即为服务器返回的json对象
console.log(data)
if (data) {
gcChart.hideLoading(); //隐藏加载动画
gcChart.setOption({
legend: {
orient: 'vertical',
left: 'left',
data: ['日常培训', '相关方培训', '在岗人员培训'] },
series: [{
name: '培训类型',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: [
{ value: data.daily, name: '日常培训' },
{ value: data.related, name: '相关方培训' },
{ value: data.jobuser, name: '在岗人员培训' }
],
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}]
}
);
}
},
error: function (errorMsg) {
gcChart.hideLoading();
}
});
}
function funTypeChange() {
behaviorDate();//
}
function funTypeChange2() {
trainstatistical();//
}
</script>
<div class="border" id="desktop" style="margin: 10px 10px 0 10px; background: #fff; overflow: auto;">
<div style="width:100%">
<div style="width:80%;margin:auto">
<select class="txtInput select3" id="year" name="year" style="width:100px;"></select><label></label>
<button class="btn btn-info" onclick="funTypeChange()">&nbsp;查询</button>
<div id="piecontainer" style="height:400px;width:100%">
</div>
</div>
<div style="width:80%;margin:auto">
<select class="txtInput select3" id="month" name="month" style="width:100px;">
<option value="1">1月</option>
<option value="2">2月</option>
<option value="3">3月</option>
<option value="4">4月</option>
<option value="5">5月</option>
<option value="6">6月</option>
<option value="7">7月</option>
<option value="8">8月</option>
<option value="9">9月</option>
<option value="10">10月</option>
<option value="11">11月</option>
<option value="12">12月</option>
</select>
<button class="btn btn-info" onclick="funTypeChange2()">&nbsp;查询</button>
<div id="piecontainer2" style="height:400px;width:100%">
</div>
</div>
</div>
</div>

View File

@ -229,19 +229,19 @@
<div class="border" id="desktop" style="margin: 10px 10px 0 10px; background: #fff; overflow: auto;">
<div style="width:100%">
<div style="width:80%;margin:auto">
<div style="width:80%;margin:auto;margin-bottom:100px;">
<select class="txtInput select3" id="year" name="year" style="width:100px;"></select><label></label>
<button class="btn btn-info" onclick="funTypeChange()">&nbsp;查询</button>
<div id="piecontainer" style="height:400px;width:100%">
</div>
</div>
<div style="width:80%;margin:auto">
<div style="width:80%;margin:auto;margin-bottom:100px;">
<select class="txtInput select3" id="month" name="month" style="width:100px;">
<option value="1">1月</option>
<option value="2">2月</option>
@ -262,7 +262,19 @@
</div>
</div>
<div style="width: 80%; margin:auto;margin-bottom:100px; ">
<table name="" id="fxrpmtable" class='easyui-datagrid' title="培训次数" data-options="rownumbers:true,singleSelect:true,striped: true,method:'get',url: 'api/trainfg?a=trainuser',toolbar:'#fxrpmbar'" style="height:400px">
<thead>
<tr>
<th data-options="field:'participant__username',align:'right'" width="30%">姓名</th>
<th data-options="field:'count',align:'right'" width="35%">培训次数</th>
</tr>
</thead>
</table>
</div>
</div>
</div>

View File

@ -89,6 +89,7 @@ urlpatterns = [
path('riskas',views.riskas),
path('html/examhistory/<int:id>/',views.examhistory),
path('html/trainfig',views.trainfigure),
path('html/examfig',views.examfigure),
#html页面

View File

@ -243,6 +243,10 @@ def bhrhtml(req):
return render(req,'behavior.html')
def trainfigure(req):
return render(req,'trainfigure.html')
def examfigure(req):
return render(req,'examfigure.html')
def check_login(func):
def warpper(request,*args,**kwargs):
is_login = request.session.get('userid', None)
@ -6079,6 +6083,8 @@ def trainfg(req):
related.append(a.filter(traintype__dickeyid=108).count())
jobuser.append(a.filter(traintype__dickeyid=107).count())
return JsonResponse({'code':1,'daily':daily,'related':related,'jobuser':jobuser})
elif a=='trainuser':
a = Trainuser.objects.filter(participant__userid=userid)
total = a.count()
objs = a.annotate(count=Count('participant')).values('participant__username','count')
return HttpResponse(transjson(total,objs),content_type="application/json")