- SampleTime.prototype.getSampleStateBySampleNo 是数据解析模块;
SampleTime是JS交互逻辑模块;
SampleTime.prototype._setSampleNo是关联模块; - 关联模块传输数据到解析模块是正常的,但是传输到交互模块就没数据了,本来调用存储过程是正
常的,代码量有些大,不便之处多多海涵,同事说this的指向有问题,但不知道怎么修改 - 所有代码:
// JScript 文件
function SampleTime() {
var times = this._rowsData;
console.log(times);
//计算宽度,总和:
var totals = 0;
for (var total= 0;total < times.length;total++){
totals += times[total];
}
var firstTimes = [];
for (var f=0;f < times.length;f++){
if (times[f] != 0) {
firstTimes.push(Math.round(100/totals*times[f]) + '%');
}else{
firstTimes.push('0%');
}
}
var list = [
['采样', times[0]],
['送检', times[1]],
['签收', times[2]],
['已登记', times[3]],
['IOM', times[4]],
['离心', times[5]],
['去盖', times[6]],
['测试中', times[7]],
['已上传', times[8]],
['已发送', times[9]]
];
var container = document.querySelector('.container');
var timeBox = document.querySelector('.timeBox');
//横向:
var _htmlLine = '<p>耗时</p>';
//纵向
var _htmlParallel = '<p>耗时明细</p>'
for (var j = 0;j < list.length; j++) {
//横向:
_htmlLine +=
'<div class="lineBox" style="width:'+ firstTimes[j] +'" > ' +
'<div class="top"><b>●</b><p>' ;
if(firstTimes[j]!=='0%') {
_htmlLine += list[j][1];
}
_htmlLine+= '</p></div>' +
'<div class="bottom"><p>';
if(firstTimes[j]!=='0%') {
_htmlLine += list[j][0];
}
_htmlLine+= '</p></div></div>';
//纵向:
_htmlParallel +=
'<div class="time" style="height:'+ firstTimes[j] +'">' +
'<div class="left"><b>●</b><P>';
if(firstTimes[j]!=='0%'){
_htmlParallel += list[j][0];
}
_htmlParallel += '</P></div>' +
'<div class="right"><p>';
if(firstTimes[j]!=='0%') {
_htmlParallel += '时间: ' + this.Gos[0];
}
_htmlParallel += '</p><span>';
if(firstTimes[j]!=='0%') {
_htmlParallel += '描述: ' + this.Gos[1];
}
_htmlParallel += '</span></div></div>'
}
container.innerHTML = _htmlLine;
timeBox.innerHTML = _htmlParallel;
//TAT
var rounds = document.querySelector('div.round');
var _watchHtml = '';
this._valueDatas.forEach(function (value,index,array) {
value = eval('('+ value +')');
//console.log(value)
var maxTat = value.c3text;
var fwcTat = value.c4text;
var difTat = (maxTat - fwcTat);
var colors = difTat/maxTat;
var _valueLengths = value.c3text.length;
_watchHtml += '<div class="watchBox"><div class="watch w'+index+'"></div></div>'
var wat=document.createElement('div');
wat.setAttribute('class','watchBox');
wat.innerHTML='<div class="watch w'+index+'"></div>';
// rounds.innerHTML = _watchHtml;
rounds.appendChild(wat)
//仪表盘配置参数
var watch = echarts.init(document.querySelector('.w'+index));
var option = {
toolbox: {
show: false
},
tooltip: {
formatter: "{a} <br/>{b} : {c}%"
},
textStyle: {
fontSize: 8,
},
series: [
{
type: 'gauge',
radius: '100%',
clockwise: true,
splitNumber: _valueLengths,
center: [110, 90],
min: 0,
max: Math.round(value.c3text),
detail: {
formatter: '{value}min',
fontSize: 10,
offsetCenter: ['0%','60%']
},
data: [{value: difTat}],
axisLine: {
show: true,
lineStyle: {
color: [
[colors,'#29b6f6'],
[fwcTat/maxTat,'#ffa726'],
[1,'#f44336'],
]
}
},
splitLine: {
show: false
},
axisLabel: {
distance: 5,
fontSize: 10,
formatter: function(v){
return v.toFixed(0);
},
},
pointer: {
show: true,
length: '60%',
width: 5,
}
}
]
}
watch.setOption(option);
})
//console.log(this._datas)
//条形图
var line = echarts.init(document.getElementById('line'));
line.showLoading(); //加载数据时动画显示
line.setOption({
title: {
text: '测试项所花时间',
top: '10%',
textStyle: {
color: '#9c27b0',
fontSize: 18
}
},
tooltip: {
//trigger: 'axis', //放大镜
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '0%',
right: '0%',
bottom: '0%',
containLabel: true
},
xAxis: {
type: 'value',
boundaryGap: [0, 0.5],
minInterval: 1,
},
yAxis: {
type: 'category',
data: this._values,
axisTick: {
alignWithLabel: true,
}
},
series: [
{
name: '选项之间所花时间',
type: 'bar',
data: this._datas,
}
]
})
line.hideLoading(); //加载完毕后隐藏
}
//調用標本信息
SampleTime.prototype._setSampleNo = function( nSampleNo ) {
//清除表数据
this._tableLogInfo = null;
//alert(nSampleNo);
SampleTime.prototype.getSampleStateBySampleNo(nSampleNo);
SampleTime();
}
// 交互模塊,柱状图 横向 纵向时间轴
SampleTime.prototype.getSampleStateBySampleNo = function (p) {
//console.log(p);
//横向存储过程
var Request = Global.NewMessage();
Request.ProcedureName = "[proc_datalink_getsample_module]";
Request.ParameterNames = ["SampleNo"];
Request.ParameterDataTypes = ["int"];
Request.ParameterValues = [p||1]
//PostMessage 异步需回调
var Return = Global.SendMessage("DB_CallProcedure", Request);
var Returns = Return.Table0;
//console.log(Returns)
this.rowsData = [];
this._rowsData = [];
this._rowsData = Returns._rowsData[0];
var datas = [];
var times = [];
for (var data = 0; data < this._rowsData.length; data++) {
times.push(this._rowsData[data]);
datas.push(new Date(this._rowsData[data]).getMinutes());
}
//分钟,柱状图 横向时间轴
this._rowsData = datas;
console.log(this._rowsData)
//完整时间,纵向时间轴
this.rowsData = times;
this.rowsTime = []
for (var w = 0;w < this.rowsData.length;w++){
if (this.rowsData[w] != null){
this.rowsTime.push(this.rowsData[w]);
}
}
//混合数组
this.dataValues = [
["采样", this._rowsData[0]],
["送检", this._rowsData[1]],
["签收", this._rowsData[2]],
["已登记", this._rowsData[3]],
["IOM", this._rowsData[4]],
["离心", this._rowsData[5]],
["去盖", this._rowsData[6]],
["测试中", this._rowsData[7]],
["已上传", this._rowsData[8]],
["已发送", this._rowsData[9]]
]
this.dataValues.sort(function (a, b) {
return a[1] - b[1];
});
this._values = [];
this._datas = [];
for (var i = 0; i < this.dataValues.length; i++) {
this._values.push(this.dataValues[i][0]);
this._datas.push(this.dataValues[i][1]);
}
//console.log(this._datas)
//纵向调用:
var Requests = Global.NewMessage();
Requests.ProcedureName = "[proc_datalink_getsample_moduleinfo]";
Requests.ParameterNames = ["SampleNo","SampleState"];
Requests.ParameterDataTypes = ["int","int"];
Requests.ParameterValues = [400,420];
var Go = Global.SendMessage("DB_CallProcedure", Requests);
this.Gos = Go.Table0._rowsData[0];
//TAT仪表盘数据调用
var configType = "machine";
var moduleName = "TATWarningCFG";
var configName = "data";
var value = top.UniformConfig.readValue(configType, moduleName, configName, "");
if (value == "") {
return false;
}
this._valueDatas = JSON.parse(value).SearchCondition;
}
SampleTime.prototype.getSampleStateBySampleNo(1);
谢邀先!
不过先提醒你稍微学一下markdown的语法,把语句标示出来,否则直接插入的语句可能会被系统处理而不能表达完整的意思了。请先处理这点。