一、日期格式輸入框裏面日期的限定
現象: 在laydate.render裏面添加max與min,沒有反應
頁面;
<input type="text" id="sTime" name="sTime" model="datetime" format="yyyy-MM-dd" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input test-item" />
js:
laydate.render({ elem : '#sTime' });
方案一:
var start = {
min: laydate.now()
,max: '2099-06-16 23:59:59'
,istoday: false
,choose: function(datas){
end.min = datas; //開始日選好後,重置結束日的最小日期
end.start = datas //將結束日的初始值設定爲開始日
}
};
var end = {
min: laydate.now()
,max: '2099-06-16 23:59:59'
,istoday: false
,choose: function(datas){
start.max = datas; //結束日選好後,重置開始日的最大日期
}
};
document.getElementById('LAY_demorange_s').onclick = function(){
start.elem = this;
laydate(start);
}
document.getElementById('LAY_demorange_e').onclick = function(){
end.elem = this
laydate(end);
}
方案二:
var startDate= laydate.render({//渲染開始時間選擇
elem: '#start'//通過id綁定html中插入的start
, type: 'date'
,max:"2099-12-31"//設置一個默認最大值
,
done: function (value, dates) {
endDate.config.min ={
year:dates.year,
month:dates.month-1, //關鍵
date: dates.date,
hours: 0,
minutes: 0,
seconds : 0
};
}
});
var endDate= laydate.render({//渲染結束時間選擇
elem: '#end',//通過id綁定html中插入的end
type: 'date',
min:"1970-1-1",//設置min默認最小值
done: function (value, dates) {
startDate.config.max={
year:dates.year,
month:dates.month-1,//關鍵
date: dates.date,
hours: 0,
minutes: 0,
seconds : 0
}
}
});
二、echar插件裏面數據的邏輯
全部逾期的條件:
SQL條件
AND 予定結束時間 <=當前時間
AND 實際結束時間 <=當前時間
AND(
予定結束時間 < 實際結束時間
OR 實際結束時間 = 19000101
)
DATE_FORMAT(NOW(),'%Y%m%d')
實際結束時間 != 19000101
逾期: 予定結束時間 < 實際結束時間 < 予定結束時間 +3
嚴重逾期: 予定結束時間 +3 <=實際結束時間
實際結束時間 = 19000101
逾期: 當前時間< 予定結束時間+3
嚴重逾期: 予定結束時間+3 <= 當前時間
如果當前時間: | 20181018 | |||
予定結束時間 | 實際結束時間 | 20181018 | 20181017 | 20181016 |
20181015 | 19000101 | 嚴重逾期 | 嚴重逾期 | 嚴重逾期 |
20181016 | 19000101 | 嚴重逾期 | 嚴重逾期 | 嚴重逾期 |
20181017 | 19000101 | 嚴重逾期 | 嚴重逾期 | -- |
20181018 | 19000101 | 嚴重逾期 | -- | -- |
20181015 | 20181018 | 嚴重逾期 | 逾期 | 逾期 |
20181016 | 20181018 | 逾期 | 逾期 | 逾期 |
20181017 | 20181018 | 逾期 | 逾期 | -- |
20181018 | 20181018 | -- | -- | -- |
20181015 | 20181017 | 逾期 | 逾期 | 逾期 |
20181016 | 20181017 | 逾期 | 逾期 | 逾期 |
20181017 | 20181017 | -- | -- | -- |
20181018 | 20181017 | -- | -- | -- |
20181014 | 20181017 | 嚴重逾期 | 嚴重逾期 | 逾期 |
20181015 | 20181018 | 嚴重逾期 | 逾期 | 逾期 |
20181018:
逾期 上面查出的總量Acount 4
嚴重逾期 上面查出的總量Bcount 7
20181017:
逾期 C:Acount+實際時間爲20181018且予定結束時間等於20181015 6
嚴重逾期 D:Bcount-實際時間爲20181018且予定結束時間等於20181015-予定結束時間爲20181018且實際結束時間等於19000101 4
20181016:
逾期 E:C+實際時間爲20181017且予定結束時間等於20181014-予定時間爲20181017且實際結束時間>予定時間 6
嚴重逾期 F:D-實際結束時間爲20181017且予定結束時間爲20181014-予定結束時間爲20181017且實際結束時間等於19000101 2
嚴重逾期 以此類推。。。。。。
三、layui.open裏面end函數,獲得後臺數據
現象:採用layui.open打開一個彈窗之後,進行數據的更新或增加,關閉彈窗之後需要刷新父頁面,將剛剛增加或修改的數據體現上去。現在是關閉彈窗之後,父頁面刷新太快不能體現新增或者修改的數據。添加一個alert就可以了。但是alert內容不太好確定,是成功還是失敗。如果js代碼寫在頁面中可以使用EL表達式,但是外部導入的不太可以。
方案一:將js寫入到jsp頁面中;
四、select控件的回顯問題
現象:一個項目有一個負責人負責,在更改時查詢出所有的用戶,使用select下拉控件進行顯示,問題是:這樣操作不能顯示其原有的負責人。
思路:在跳轉到更改頁面時,項目的負責人是知道的。在返回數據時將負責人返回。頁面加載時,運行函數,對select下拉控件進行掃描判斷,如果值等於後臺傳進來的值就setAttribute("selected",'true');//設置選中狀態。
頁面加載運行:
window.onload=function (){ var userName=”xiaoming”; alert(userName); }
<select id="pid">
<option value="a">選項一</a>
<option value="b">選項二</a>
</select>
<script type="text/JavaScript">
window.onload=function (){
var objS = document.getElementById("pid");
var a = “${requestScope.xxxxForm.recordNumPerPage}”
if(a == undefined || a == null || a ==""){
return false;
}
for(var i=0;i<obj.length;i++){
if(obj[i].value==a){
obj[i].selected=true; //相等則選中
}
}
}
</script>
五、分頁的問題
現象:之前代碼寫的時候沒有去考慮分頁,現在數據比較多了,需要進行分頁控制,但是不想對原有的代碼進行大修改。需要的數據時一次性傳到前臺的。
網上有很多思路,但是因爲這是一個練習,所以我自己想一個思路:頁面上的所有數據都是用Table來展示的,那麼我可以通過使用對<tr>標籤的顯示與隱藏來呈現分頁的效果;
首先我們需要畫一個分頁的控件:
《《 1 2 3 4 5 》》
如果超過5頁
《《 1 2 。。。。。 9 10 》》 第【】頁 按鈕 這一種情況先不考慮
分頁的設置:
每頁顯示:10條數據
總數據:後臺傳入數據
總頁數:後臺傳入數據+1/10
function paging(showCount,dataCount){
// 計算總頁數
var pageCount = dataCount/showCount + 1
// 對按鈕進行控制 顯示不顯示
// 對<tr>進行控制
if(dataCount >10){
var table = document.getElementById("table1");
var tr = table.getElementsByTagName("tr");
var len = tr.length;
for(i=len;i>10;i--){
tr[i].style.display = 'none'; // 隱藏
}
}
}
function onClickPaging(pages){ // 傳入的頁碼
}