Authored by 鲁尚清

今日申报/本月申报组件(80%) 及折线图,柱状图(50%)

Showing 22 changed files with 862 additions and 27 deletions
... ... @@ -26,4 +26,8 @@
@import "../css/datacenter.css";
@import "../css/assetsOverview.css";
\ No newline at end of file
@import "../css/assetsOverview.css";
@import "../css/declare.css";
@import "../css/digital.css";
\ No newline at end of file
... ...
... ... @@ -184,7 +184,7 @@
}
.yxqk .items li img {
opacity: .5;
/*opacity: .5;*/
position: absolute;
top: 8px;
left: 8px;
... ... @@ -261,7 +261,7 @@
.yxqk__pie--bad::before {
background-image: url('/vue3/src/assets/images/zjdp/highlights_bad.png');
}
.yxqk__pie span::before {
.yxqk__pie::before {
content: '';
display: block;
width: 278px;
... ...
... ... @@ -14,10 +14,10 @@
.sjzx .item h5 {
color: #fff;
font-size: .2rem;
font-size: 11px;
text-align: center;
position:absolute;
bottom:0;
bottom:-16px;
left:14px;
}
... ...
.declare-container{
background: url("/vue3/src/assets/images/zjdp/img-bg.png");
background-position: center;
height: 100%;
overflow: hidden;
max-width:323px;
}
.declare-total{
font-size: 16px;
color:#ffffff;
text-align: center;
/*padding: 5px;*/
display: flex;
justify-content: center;
align-items: center;
background-image: url("/vue3/src/assets/images/zjdp/declare-title.png");
background-position: center;
background-repeat: no-repeat;
margin-top:20px;
height: 53px;
}
.total-title{
margin-right: 10px;
}
.total-num{
font-size: 22px;
color:#4fc9fc;
}
.declaration-rate{
font-size:14px;
color:#d5e1f5;
display: flex;
justify-content: space-around;
}
.proportion-num{
font-size: 16px;
color:#4fc9fc;
}
.declare-today{
margin-top:20px;
}
.declare-title{
color: #fff;
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: flex-end;
padding: 0 5px;
margin-bottom: 8px;
}
.declare-bg{
width: 167px;
height: 27px;
background-repeat: no-repeat;
}
.icon-proportion{
width:6px;
height:20px;
background-color: #4fc9fc;
display: inline-block;
border-radius: 3px;
margin: 0 2px;
}
.porportion-opactiy{
opacity:.5 ;
}
.declare-con{
font-size: 12px;
}
.declare-bg-today{
background-image: url("/vue3/src/assets/images/zjdp/declare-today.png");
}
.declare-bg-month{
background-image: url("/vue3/src/assets/images/zjdp/declare-month.png");
}
.volume-today{
background-image: url("/vue3/src/assets/images/zjdp/volume-today.png");
}
.volume-today-container{
font-size: 14px;
color:#FFFFFF;
text-align: left;
padding:5px;
display: flex;
justify-content: flex-start;
align-items: center;
}
.volume-proportion{
margin:0 15px;
width:130px;
height:4px;
background: linear-gradient(to right ,#FFFFFF,#97d5f4);
border-radius: 3px;
display: inline-block;
}
.volume-proportion-doc{
background: linear-gradient(to right ,#FFFFFF,#efe0a7);
}
.volume-proportion-net{
background: linear-gradient(to right ,#FFFFFF,#e5abd1);
}
.num-doc{
color:#efe0a7;
}
.num-net{
color:#e5abd1;
}
\ No newline at end of file
... ...
/*大屏电子数字字体*/
@font-face {
font-family: 'DSDIG';
src: url('../../src/assets/font/DS-DIGI.ttf');
font-display: swap;
}
.digital {
margin-right: 8px;
}
.digital .box-item {
position: relative;
font-size: 44px;
line-height: 31px;
text-align: center;
list-style: none;
color: #2D7CFF;
writing-mode: vertical-lr;
text-orientation: upright;
/*文字禁止编辑*/
-moz-user-select: none; /*火狐*/
-webkit-user-select: none; /*webkit浏览器*/
-ms-user-select: none; /*IE10*/
-khtml-user-select: none; /*早期浏览器*/
user-select: none;
/* overflow: hidden; */
}
.digital .number-item {
width: 34px;
height: 58px;
color: #FFFFFF;
font-family: DSDIG;/*/使用自定义字体*/
list-style: none;
margin-right: 10px;
background: rgba(6,27,114,.7);
border-radius:4px;
box-shadow: 0px 0px 10px #0FDAFF inset;
-moz-box-shadow: 0px 0px 10px #0FDAFF inset;
-webkit-box-shadow: 0px 0px 10px #0FDAFF inset;
border: 2px solid #0FDAFF;
/*border-image: linear-gradient(#0FDAFF,#0D278E) 1 1;*/
position: relative;
}
.digital .number-item-comma:after{
content: ",";
position: absolute;
bottom: 0;
right: -22px;
}
.digital .number-item-color{
color:#8A9CAE;
}
.digital .number-item span {
position: relative;
display: inline-block;
margin-right: 10px;
width: 100%;
height: 100%;
writing-mode: vertical-rl;
text-orientation: upright;
overflow: hidden;
}
.digital .number-item i {
font-style: normal;
position: absolute;
top: 8px;
left: 50%;
transform: translate(-50%,0);
transition: transform 1s ease-in-out;
letter-spacing: 10px;
}
.number-item:last-child {
margin-right: 0;
}
\ No newline at end of file
... ...
... ... @@ -140,3 +140,7 @@ body{font-size: 15px;}
margin:12px 6px 0 6px;
border-bottom:2px solid #0C4493;
}
.lineChart,.barChart{
background-image: url("/vue3/src/assets/images/zjdp/img-bg.png");
background-position: center;
}
\ No newline at end of file
... ...
export default {
name: 'dataCenter',
name: 'assetOverview',
template: '',
components: {
// Swiper,SwiperSlide
},
data(){
return {
... ... @@ -24,20 +23,16 @@ export default {
if(data && data.healthStatus){
if(data.healthStatus == '2'){//问题
proxy.pieClass="yxqk__pie--worse";
// $("#all_resource_status").removeClass("yxqk__pie--good").removeClass("yxqk__pie--bad").addClass("yxqk__pie--worse");
} else if(data.healthStatus == '1'){//严重问题
proxy.pieClass="yxqk__pie--bad";
// $("#all_resource_status").removeClass("yxqk__pie--worse").removeClass("yxqk__pie--good").addClass("yxqk__pie--bad");
}else{
proxy.pieClass="yxqk__pie--good";
}
// $("#yxjk_resource_health_text").text(data.healthStatusName);
proxy.healthStatusName=data.healthStatusName;
}
//资源总量
if(data && data.total){
// $("#yxjk_total_resource").text(data.total);
proxy.totalData=data.total;
}
//分类总量
... ... @@ -64,18 +59,11 @@ export default {
showData.push({resTypeName:"存储",num:storage,code:'STORAGE'});
showData.push({resTypeName:"路由器",num:router,code:'NETHARDWARE_ROUTER'});
//类型统计
// var html = $("#yxjk_resource_type_count_id_tmpl").render(showData.slice(0,4));
// $("#yxjk_resource_type_count_id").html(html);
proxy.assetOverviewData=showData;
//悬浮提示
// var html = $("#yxjk_resource_type_count_tips_tmpl").render(showData);
// $("#yxjk_resource_type_count_tips").html(html);
/* $(".yxqk_tips_div").hover(function () {
$(".yxqk_tips_container").show();
},function () {
$(".yxqk_tips_container").hide();
});*/
}
});
... ...
<div class="barChart">
<div id="bar-echart" style="width:100%;height:700px;"></div>
</div>
\ No newline at end of file
... ...
export default {
name: 'barChart',
template: '',
components: {
},
data(){
return {
domainName:'http://192.168.0.159:8080/api-web',
}
},
setup(props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
// 挂载完
Vue.onMounted(() => {
const chartDom = document.getElementById('bar-echart');
const myChart = echarts.init(chartDom);
let option;
option = {
title: {
text: '近30天访问量',
x:'center',
y:'7px',
textStyle:{
color:"#ffffff",
fontSize:14
}
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLine:{
show:true,//是否显示坐标线
lineStyle: {
color:'#0a1b31'//坐标线颜色
}
},
axisTick: {
show: false //是否显示坐标刻度
},
axisLabel:{
color:'#ffffff',
fontSize: 12
},
},
yAxis: {
type: 'value',
splitLine:{
show:false,
},
axisLine:{
show:true,//是否显示坐标线
lineStyle: {
color:'#0a1b31'//坐标线颜色
}
},
axisLabel:{
color:'#ffffff',
fontSize:12
},
},
series: [
{
data: [120, 200, 150, 80, 70, 110, 130],
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
},
itemStyle:{
normal:{
barBorderRadius: [3,3,0,0],
color:new echarts.graphic.LinearGradient(
0,0,0,1,
[
{offset:0,color:'#3ac9fb'},
{offset:1,color:'#2a81f3'}
]
)
// color:"#ff0000"
}
}
}
]
};
option && myChart.setOption(option);
})
return{
}
}
}
\ No newline at end of file
... ...
<div class="declare-container" id="declare">
<!--今日申报-->
<div class="declare-left">
<div class="declare-total">
<span class="total-title">本月应申报</span>
<span class="total-num">{{reportable}}</span>
</div>
<div class="declaration-rate">
<span class="rate-title">本月申报率</span>
<span class="proportion-bar">
<i :class="['icon-proportion',{'porportion-opactiy':i>opactiyNum}]" v-for="i in opactiyNumTotal"></i>
</span>
<span class="proportion-num">{{declarationRate}}</span>
</div>
<div class="declare-today">
<div class="declare-title">
<div class="declare-bg declare-bg-today"></div>
<div class="declare-con">
<span class="declare-text">本日申报未导入:</span>
<span class="declare-num">{{reportableToday}}</span>
</div>
</div>
<div class="declare-today-num">
<Digital :numm="56631" :numLen="7"></Digital>
</div>
</div>
<div class="declare-today">
<div class="declare-title">
<div class="declare-bg declare-bg-month"></div>
<div class="declare-con">
<span class="declare-text">本月未申报:</span>
<span class="declare-num">{{reportableMonth}}</span>
</div>
</div>
<div class="declare-today-num">
<Digital :numm="5640397" :numLen="7"></Digital>
</div>
</div>
<div class="declare-today">
<div class="declare-title">
<div class="declare-bg volume-today"></div>
</div>
<div class="volume-today-container">
<span class="volume-text">网络发票</span>
<span class="volume-proportion" :style="styleVolume"></span>
<span class="volume-num">{{volumeNum}}</span>
</div>
<div class="volume-today-container">
<span class="volume-text">涉税文书</span>
<span class="volume-proportion volume-proportion-doc" :style="styleVolumeDoc"></span>
<span class="volume-num num-doc">{{volumeNumDoc}}</span>
</div>
<div class="volume-today-container">
<span class="volume-text">网上申报</span>
<span class="volume-proportion volume-proportion-net" :style="styleVolumeNet"></span>
<span class="volume-num num-net">{{volumeNumNet}}</span>
</div>
</div>
</div>
<div class="declare-right">
</div>
</div>
\ No newline at end of file
... ...
export default {
name: 'declare',
template: '',
components: {
'Digital': Vue.defineAsyncComponent(
() => myImport('views/zjdaping/components/digital/index')
)
},
data(){
return {
domainName:'http://192.168.0.245:8180/api-web',
declareData:'',
reportable:0,//本月应申报
reportableToday:0,//本日申报未导入
reportableMonth:0, //本月未申报数
declarationRate:0.94,//申报率
volumeNumDoc:0,//涉税文书业务量
volumeNumNet:0,//网上申报业务量
volumeNum:0, //业务量数
styleVolume:'',//业务量style样式
styleVolumeDoc:'',
styleVolumeNet:'',
opactiyNum:0, //不透明显示的个数
opactiyNumMath:0, //不透明显示的个数中间量
opactiyNumTotal:20//总透明数
}
},
setup(props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
// 挂载完
Vue.onMounted(() => {
proxy.reportable=proxy.numberFilter('1006105',-1);
proxy.reportableToday=proxy.numberFilter('1006506',-1);
proxy.reportableMonth=proxy.numberFilter('2848',-1);
proxy.volumeNum=proxy.numberFilter('5765404',-1);
proxy.volumeNumDoc=proxy.numberFilter('5458044',-1);
proxy.volumeNumNet=proxy.numberFilter('698423',-1);
proxy.opactiyNumMath=proxy.declarationRate*proxy.opactiyNumTotal
if(proxy.opactiyNumMath>proxy.opactiyNumTotal-1){
proxy.opactiyNum=Math.floor(proxy.opactiyNumMath);
}else{
proxy.opactiyNum=Math.ceil(proxy.opactiyNumMath);
}
console.log(proxy.opactiyNumMath)
proxy.declarationRate=proxy.declarationRate*100+'%';
let num1=5765404;
let num2=5458044;
let num3=698423;
proxy.styleVolume='width:'+proxy.eleWidthNum(num1,num1,num2,num3)+'px'
proxy.styleVolumeDoc='width:'+proxy.eleWidthNum(num2,num1,num2,num3)+'px'
proxy.styleVolumeNet='width:'+proxy.eleWidthNum(num3,num1,num2,num3)+'px'
})
const eleWidthNum=(num,num1,num2,num3)=>{
let maxNum = num1>num2?(num1>num3?num1:num3):(num2>num3?num2:num3);
let widthNum=Math.ceil((num*150)/maxNum)
console.log("aaa",num,widthNum)
let widthData=0;
if(widthNum!='' && widthNum!=null && widthNum!=undefined){
widthData=widthNum;
}
return widthData;
}
const numberFilter = function (val,places = 2) {
//value为传进来的数据 比如 12345.6789
//places 为需要保留的小数位数 -1为清空小数 0为保留全部位数的小数 传入多少即为多少 不传默认保留两位小数 传进来多少就截取多少
//数据校验
if (parseFloat(val).toString() == 'NaN') return '0.00'
// 将数值截取
let num = val.toString().split('.')
let zs = num[0]
let xs = num[1]
// 整数部分处理,增加,
const intPartFormat = zs.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
if (xs != null) {
if(places == 0){
return intPartFormat + '.' + xs
}else if(places == -1){
return intPartFormat
}else{
return intPartFormat +'.' + xs.substr(0,places)
}
} else {
return intPartFormat
}
}
return{
numberFilter,
eleWidthNum
}
}
}
... ...
<div class="digital">
<!-- 数字滚动显示-->
<div class="box-item">
<li :class="{'number-item': !isNaN(item), 'mark-item': isNaN(item),'number-item-color':item==0&&index<numDiff,'number-item-comma':index==0||index==3 }"
v-for="(item,index) in orderNum"
:key="index" :style="cStyle">
<span v-if="!isNaN(item)">
<i :id="`numberItem${index}`" :ref="`numberItem${index}`" :style='iStyle'>0123456789</i>
</span>
<span class="comma" v-else>{{item}}</span>
</li>
</div>
</div>
\ No newline at end of file
... ...
export default {
name: 'digital',
template: '',
components: {
},
data(){
return {
numDiff:0//补位0的个数
}
},
props:['numm','numLen'],
setup(props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
const {numm, numLen} = Vue.toRefs(props);
const orderNum = Vue.ref([]);
// 处理数字
// numm: 传入的数字 numLen: 默认显示几位数
let numVal=numm.value+'';
proxy.numDiff=parseInt(numLen.value)-parseInt(numVal.split("").length);
const toOrderNum = (num) => {
num = num.toString();
if (num.length < numLen.value) {
num = '0' + num // 如未满定义的位数,添加"0"补位
toOrderNum(num) // 递归添加"0"补位
} else if (num.length === numLen.value) {
orderNum.value = num.split('') // 将其便变成数据,渲染至滚动数组
} else {
// 数字超过八位显示异常
// this.$message('数字过大,显示异常')
}
}
toOrderNum(numm.value)
Vue.watch(numm, (newVal) => {
toOrderNum(newVal)
})
// 挂载完
Vue.onMounted(() => {
setTimeout(() => {
proxy.setNumberTransform()
},200)
})
const setNumberTransform=()=> {
// 结合CSS 对数字字符进行滚动,显示数量
console.log("test",proxy.orderNum.length)
console.log("aaa",proxy.$refs)
for (let index = 0; index < proxy.orderNum.length; index++) {
const ele = proxy.$refs[`numberItem${index}`];
ele.style.transform = `translate(-50%, -${proxy.orderNum[index] * 10}%)`
}
}
return{
orderNum,
toOrderNum,
setNumberTransform
}
},
// 如果中途数据有更新,重新执行动画
watch: {
numm() {
this.setNumberTransform()
}
}
}
\ No newline at end of file
... ...
<div class="lineChart">
<div id="line-echart" style="width:100%;height:700px;"></div>
</div>
\ No newline at end of file
... ...
export default {
name: 'lineChart',
template: '',
components: {
},
data(){
return {
domainName:'http://192.168.0.245:8180/api-web',
yAxisData:'',//y序列的数据
seriesData:[],//y轴数据
}
},
setup(props, {attrs, slots, emit}) {
//业务性能指标y序列
let performanceData=[
{
type: 'value',
axisLabel: {
formatter: '{value} %'//以百分比显示
},
}, {
name: '单位:万',
type: 'value',
axisLabel: {
show: true,
interval: 'right',//居中显示
},
},
]
//一般y序列
let yAxisCommon={
type: 'value',
splitLine:{
lineStyle: {
color:'#0a1b31'
}
},
axisLabel:{
color:'#ffffff',
},
}
//业务双y轴数据
let performanceYData=[
{
name:'可用性',
type: 'line',
smooth:true,
// stack: 'Total',
show:false,
data:[120, 132, 101, 134, 90, 230, 210],
yAxisIndex:1,
showSymbol:false,
itemStyle : {
normal : {
color:"#97d5f4",//tooltip里的小圆点颜色
lineStyle:{
color:'#97d5f4'
}
}
}
},
{
name:'成功率',
type: 'line',
smooth:true,
// stack: 'Total',
show:false,
data:[120, 132, 101, 134, 90, 230, 210],
yAxisIndex:0,
showSymbol:false,
itemStyle : {
normal : {
color:"#efe0a7",//tooltip里的小圆点颜色
lineStyle:{
color:'#efe0a7'
}
}
}
},
{
name:'响应率',
type: 'line',
smooth:true,
// stack: 'Total',
show:false,
data:[220, 182, 191, 234, 290, 330, 310],
yAxisIndex:0,
showSymbol:false,
itemStyle : {
normal : {
color:"#e5abd1",//tooltip里的小圆点颜色
lineStyle:{
color:'#e5abd1'
}
}
}
},
{
name:'交易量',
type: 'line',
smooth:true,
// stack: 'Total',
show:false,
data:[150,232,201,154,190,330,410],
yAxisIndex:1,
showSymbol:false,
itemStyle : {
normal : {
color:"#97aaff",//tooltip里的小圆点颜色
lineStyle:{
color:'#97aaff'
}
}
}
}
]
//一般y轴数据
let ySeriesCommon=[
{
name: '网络投票',
type: 'line',
smooth:true,
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210],
yAxisIndex:0,
showSymbol:false,
itemStyle : {
normal : {
color:"#97d5f4",//tooltip里的小圆点颜色
lineStyle:{
color:'#97d5f4'
}
}
},
},
{
name: '涉税文书',
type: 'line',
smooth:true,
stack: 'Total',
data: [220, 182, 191, 234, 290, 330, 310],
showSymbol:false,
yAxisIndex:0,
itemStyle : {
color:"#ffffff",
normal : {
color:'#efe0a7',
lineStyle:{
color:'#efe0a7'
}
}
},
},
{
name: '网上申报',
type: 'line',
smooth:true,
stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410],
yAxisIndex:0,
showSymbol:false,
itemStyle : {
normal : {
color:'#e5abd1',
lineStyle:{
color:'#e5abd1'
}
}
},
},
]
const {proxy} = Vue.getCurrentInstance();
// 挂载完
Vue.onMounted(() => {
/*$.get(proxy.domainName,function(res){
})*/
proxy.yAxisData=performanceData;
proxy.seriesData=performanceYData;
console.log('222',proxy.yAxisData)
const chartDom = document.getElementById('line-echart');
const myChart = echarts.init(chartDom);
let option;
option = {
title: {
text: ''
},
tooltip: {
trigger: 'axis',
backgroundColor:'rgba(50,50,50,0.7)',
borderColor:"#333",
textStyle:{
color:"#fff",
}
},
legend: {
data: ['网络投票', '涉税文书', '网上申报'],
itemHeight:0,//图例圆圈大小设置
y:'7px',
textStyle: {
color: '#ffffff',
fontsize:"12px"
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
show:true,//设置网格区域背景色
borderColor:"transparent",
backgroundColor:new echarts.graphic.LinearGradient(
0,0,0,1,
[
{offset:0,color:'#3ac9fb'},
{offset:1,color:'#2a81f3'}
]
)
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLine:{
show:false,//是否显示坐标线
},
axisTick: {
show: false //是否显示坐标刻度
},
axisLabel:{
color:'#ffffff',
},
},
yAxis: proxy.yAxisData,
series: proxy.seriesData,
itemStyle:{
showSymbol:false
}
};
option && myChart.setOption(option);
let xAxisData=proxy.getRangeData();
// console.log('111',xAxisData)
})
const getRangeData=()=> {
//获取当前月份的最后一天,当前日期
const date = new Date();
let currentMonth = date.getMonth();
const nextMonth = ++currentMonth;
const nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
const oneDay = 1000 * 60 * 60 * 24;
const lastTime = new Date(nextMonthFirstDay - oneDay);
const lastDay = lastTime.getDate();
const dd = date.getDate();
let rangeData=[];
if(dd+15>lastDay){
console.log("11",dd)
const start=lastDay-15;
const end=lastDay;
for(let i=start;i<end;i++){
rangeData.push(i+1)
}
}else{
const start=dd;
const end=dd+15;
for(let i=start;i<end;i++){
console.log("44",i)
rangeData.push(i)
}
}
return rangeData;
}
return{
getRangeData
}
}
}
\ No newline at end of file
... ...
... ... @@ -12,24 +12,24 @@
<div class="screen-body">
<section class="screen-left" >
<div class="left-top">
<!-- 省局网络拓扑-->
<!-- <NetworkTopology :></NetworkTopology>-->
<!--省局网络拓扑-->
<!-- <NetworkTopology ></NetworkTopology>-->
</div>
<div class="left-bottom">
<div class="left-bottom-left">
<div class="left-bottom-left-top">
<!-- 数据中心-->
<!--数据中心-->
<DataCenter></DataCenter>
</div>
<div class="left-bottom-left-bottom">
资产概览
<!--资产概览-->
<AssetOverview></AssetOverview>
</div>
</div>
<div class="left-bottom-right">
云平台
</div>
</div>
</section>
... ...
... ... @@ -7,6 +7,12 @@ export default {
),
'DataCenter': Vue.defineAsyncComponent(
() => myImport('views/zjdaping/components/dataCenter/index')
),
'AssetOverview': Vue.defineAsyncComponent(
() => myImport('views/zjdaping/components/assetOverview/index')
),
'Digital': Vue.defineAsyncComponent(
() => myImport('views/zjdaping/components/digital/index')
)
},
data() {
... ... @@ -26,10 +32,9 @@ export default {
// 挂载完
Vue.onMounted(() => {
let that = this
// 获取当前系统时间
let myDate = new Date();
that.dateTime = myDate.getFullYear() + '-' + that.timeFormat(myDate.getMonth() + 1 + '') + '-' + that.timeFormat(myDate.getDate() + '') // + ' ' + that.timeFormat(myDate.getHours() + '') + ':' + that.timeFormat(myDate.getMinutes() + '') + ':' + that.timeFormat(myDate.getSeconds() + '');
// proxy.dateTime = myDate.getFullYear() + '-' + proxy.timeFormat(myDate.getMonth() + 1 + '') + '-' + proxy.timeFormat(myDate.getDate() + '') // + ' ' + proxy.timeFormat(myDate.getHours() + '') + ':' + proxy.timeFormat(myDate.getMinutes() + '') + ':' + proxy.timeFormat(myDate.getSeconds() + '');
})
... ...