添加项目文件。
This commit is contained in:
BIN
Epost.TestToolsWeb/Content/js/bak.png
Normal file
BIN
Epost.TestToolsWeb/Content/js/bak.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 981 B |
797
Epost.TestToolsWeb/Content/js/calendar.js
Normal file
797
Epost.TestToolsWeb/Content/js/calendar.js
Normal file
@ -0,0 +1,797 @@
|
||||
/**
|
||||
*
|
||||
* @authors yusen
|
||||
* @date 2016-01-08 11:17:59
|
||||
* https://github.com/yscoder/Calendar
|
||||
* download by www.sucaijiayuan.com
|
||||
*/
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define('calendar', ['jquery'], factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
factory(root.jQuery);
|
||||
}
|
||||
}(this, function ($) {
|
||||
|
||||
// default config
|
||||
|
||||
var defaults = {
|
||||
|
||||
// 宽度
|
||||
width: 280,
|
||||
// 高度, 不包含头部,头部固定高度
|
||||
height: 280,
|
||||
|
||||
zIndex: 1,
|
||||
|
||||
// selector or element
|
||||
// 设置触发显示的元素,为null时默认显示
|
||||
trigger: null,
|
||||
|
||||
// 偏移位置,可设正负值
|
||||
// trigger 设置时生效
|
||||
offset: [0, 1],
|
||||
|
||||
// 自定义类,用于重写样式
|
||||
customClass: '',
|
||||
|
||||
// 显示视图
|
||||
// 可选:date, month
|
||||
view: 'date',
|
||||
|
||||
// 默认日期为当前日期
|
||||
date: new Date(),
|
||||
format: 'yyyy/mm/dd',
|
||||
|
||||
// 一周的第一天
|
||||
// 0表示周日,依次类推
|
||||
startWeek: 0,
|
||||
|
||||
// 星期格式
|
||||
weekArray: ['日', '一', '二', '三', '四', '五', '六'],
|
||||
|
||||
// 设置选择范围
|
||||
// 格式:[开始日期, 结束日期]
|
||||
// 开始日期为空,则无上限;结束日期为空,则无下限
|
||||
// 如设置2015年11月23日以前不可选:[new Date(), null] or ['2015/11/23']
|
||||
selectedRang: null,
|
||||
|
||||
// 日期关联数据 [{ date: string, value: object }, ... ]
|
||||
// 日期格式与 format 一致
|
||||
// 如 [ {date: '2015/11/23', value: '面试'} ]
|
||||
data: null,
|
||||
|
||||
// 展示关联数据
|
||||
// 格式化参数:{m}视图,{d}日期,{v}value
|
||||
// 设置 false 表示不显示
|
||||
label: '{d}\n{v}',
|
||||
|
||||
// 切换字符
|
||||
prev: '<',
|
||||
next: '>',
|
||||
|
||||
// 切换视图
|
||||
// 参数:view, y, m
|
||||
viewChange: $.noop,
|
||||
|
||||
// view: 视图
|
||||
// date: 不同视图返回不同的值
|
||||
// value: 日期关联数据
|
||||
onSelected: function (view, date, value) {
|
||||
// body...
|
||||
},
|
||||
|
||||
// 参数同上
|
||||
onMouseenter: $.noop,
|
||||
|
||||
onClose: $.noop
|
||||
},
|
||||
|
||||
// static variable
|
||||
|
||||
ACTION_NAMESPACE = 'data-calendar-',
|
||||
|
||||
DISPLAY_VD = '[' + ACTION_NAMESPACE + 'display-date]',
|
||||
DISPLAY_VM = '[' + ACTION_NAMESPACE + 'display-month]',
|
||||
|
||||
ARROW_DATE = '[' + ACTION_NAMESPACE + 'arrow-date]',
|
||||
ARROW_MONTH = '[' + ACTION_NAMESPACE + 'arrow-month]',
|
||||
|
||||
ITEM_DAY = ACTION_NAMESPACE + 'day',
|
||||
ITEM_MONTH = ACTION_NAMESPACE + 'month',
|
||||
|
||||
DISABLED = 'disabled',
|
||||
MARK_DATA = 'markData',
|
||||
|
||||
VIEW_CLASS = {
|
||||
date: 'calendar-d',
|
||||
month: 'calendar-m'
|
||||
},
|
||||
|
||||
OLD_DAY_CLASS = 'old',
|
||||
NEW_DAY_CLASS = 'new',
|
||||
TODAY_CLASS = 'now',
|
||||
SELECT_CLASS = 'selected',
|
||||
MARK_DAY_HTML = '<i class="dot"></i>',
|
||||
DATE_DIS_TPL = '{year}/<span class="m">{month}</span>',
|
||||
|
||||
ITEM_STYLE = 'style="width:{w}px;height:{h}px;line-height:{h}px"',
|
||||
WEEK_ITEM_TPL = '<li ' + ITEM_STYLE + '>{wk}</li>',
|
||||
DAY_ITEM_TPL = '<li ' + ITEM_STYLE + ' class="{class}" {action}>{value}</li>',
|
||||
MONTH_ITEM_TPL = '<li ' + ITEM_STYLE + ' ' + ITEM_MONTH + '>{m}月</li>',
|
||||
|
||||
TEMPLATE = [
|
||||
'<div class="calendar-inner">',
|
||||
'<div class="calendar-views">',
|
||||
'<div class="view view-date">',
|
||||
'<div class="calendar-hd">',
|
||||
'<a href="javascript:;" data-calendar-display-date class="calendar-display">',
|
||||
'{yyyy}/<span class="m">{mm}</span>',
|
||||
'</a>',
|
||||
'<div class="calendar-arrow">',
|
||||
'<span class="prev" title="上一月" data-calendar-arrow-date>{prev}</span>',
|
||||
'<span class="next" title="下一月" data-calendar-arrow-date>{next}</span>',
|
||||
'</div>',
|
||||
'</div>',
|
||||
'<div class="calendar-ct">',
|
||||
'<ol class="week">{week}</ol>',
|
||||
'<ul class="date-items"></ul>',
|
||||
'</div>',
|
||||
'</div>',
|
||||
'<div class="view view-month">',
|
||||
'<div class="calendar-hd">',
|
||||
'<a href="javascript:;" data-calendar-display-month class="calendar-display">{yyyy}</a>',
|
||||
'<div class="calendar-arrow">',
|
||||
'<span class="prev" title="上一年" data-calendar-arrow-month>{prev}</span>',
|
||||
'<span class="next" title="下一年" data-calendar-arrow-month>{next}</span>',
|
||||
'</div>',
|
||||
'</div>',
|
||||
'<ol class="calendar-ct month-items">{month}</ol>',
|
||||
'</div>',
|
||||
'</div>',
|
||||
'</div>',
|
||||
'<div class="calendar-label"><p>HelloWorld</p><i></i></div>'
|
||||
],
|
||||
OS = Object.prototype.toString;
|
||||
|
||||
// utils
|
||||
|
||||
function isDate(obj) {
|
||||
return OS.call(obj) === '[object Date]';
|
||||
}
|
||||
|
||||
function isString(obj) {
|
||||
return OS.call(obj) === '[object String]';
|
||||
}
|
||||
|
||||
|
||||
function getClass(el) {
|
||||
return el.getAttribute('class') || el.getAttribute('className');
|
||||
}
|
||||
|
||||
// extension methods
|
||||
|
||||
String.prototype.repeat = function (data) {
|
||||
return this.replace(/\{\w+\}/g, function (str) {
|
||||
var prop = str.replace(/\{|\}/g, '');
|
||||
return data[prop] || '';
|
||||
});
|
||||
}
|
||||
|
||||
String.prototype.toDate = function () {
|
||||
var dt = new Date(),
|
||||
dot = this.replace(/\d/g, '').charAt(0),
|
||||
arr = this.split(dot);
|
||||
|
||||
dt.setFullYear(arr[0]);
|
||||
dt.setMonth(arr[1] - 1);
|
||||
dt.setDate(arr[2]);
|
||||
return dt;
|
||||
}
|
||||
|
||||
Date.prototype.format = function (exp) {
|
||||
var y = this.getFullYear(),
|
||||
m = this.getMonth() + 1,
|
||||
d = this.getDate();
|
||||
|
||||
return exp.replace('yyyy', y).replace('mm', m).replace('dd', d);
|
||||
}
|
||||
|
||||
Date.prototype.isSame = function (y, m, d) {
|
||||
if (isDate(y)) {
|
||||
var dt = y;
|
||||
y = dt.getFullYear();
|
||||
m = dt.getMonth() + 1;
|
||||
d = dt.getDate();
|
||||
}
|
||||
return this.getFullYear() === y && this.getMonth() + 1 === m && this.getDate() === d;
|
||||
}
|
||||
|
||||
Date.prototype.add = function (n) {
|
||||
this.setDate(this.getDate() + n);
|
||||
}
|
||||
|
||||
Date.prototype.minus = function (n) {
|
||||
this.setDate(this.getDate() - n);
|
||||
}
|
||||
|
||||
Date.prototype.clearTime = function (n) {
|
||||
this.setHours(0);
|
||||
this.setSeconds(0);
|
||||
this.setMinutes(0);
|
||||
this.setMilliseconds(0);
|
||||
return this;
|
||||
}
|
||||
|
||||
Date.isLeap = function (y) {
|
||||
return (y % 100 !== 0 && y % 4 === 0) || (y % 400 === 0);
|
||||
}
|
||||
|
||||
Date.getDaysNum = function (y, m) {
|
||||
var num = 31;
|
||||
|
||||
switch (m) {
|
||||
case 2:
|
||||
num = this.isLeap(y) ? 29 : 28;
|
||||
break;
|
||||
case 4:
|
||||
case 6:
|
||||
case 9:
|
||||
case 11:
|
||||
num = 30;
|
||||
break;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
Date.getSiblingsMonth = function (y, m, n) {
|
||||
var d = new Date(y, m - 1);
|
||||
d.setMonth(m - 1 + n);
|
||||
return {
|
||||
y: d.getFullYear(),
|
||||
m: d.getMonth() + 1
|
||||
};
|
||||
}
|
||||
|
||||
Date.getPrevMonth = function (y, m, n) {
|
||||
return this.getSiblingsMonth(y, m, 0 - (n || 1));
|
||||
}
|
||||
|
||||
Date.getNextMonth = function (y, m, n) {
|
||||
return this.getSiblingsMonth(y, m, n || 1);
|
||||
}
|
||||
|
||||
Date.tryParse = function (obj) {
|
||||
if (!obj) {
|
||||
return obj;
|
||||
}
|
||||
return isDate(obj) ? obj : obj.toDate();
|
||||
}
|
||||
|
||||
|
||||
// Calendar class
|
||||
|
||||
function Calendar(element, options) {
|
||||
this.$element = $(element);
|
||||
this.options = $.extend({}, $.fn.calendar.defaults, options);
|
||||
this.$element.addClass('calendar ' + this.options.customClass);
|
||||
this.width = this.options.width;
|
||||
this.height = this.options.height;
|
||||
this.date = this.options.date;
|
||||
this.selectedRang = this.options.selectedRang;
|
||||
this.data = this.options.data;
|
||||
this.init();
|
||||
}
|
||||
|
||||
Calendar.prototype = {
|
||||
constructor: Calendar,
|
||||
getDayAction: function (day) {
|
||||
var action = ITEM_DAY;
|
||||
if (this.selectedRang) {
|
||||
var start = Date.tryParse(this.selectedRang[0]),
|
||||
end = Date.tryParse(this.selectedRang[1]);
|
||||
|
||||
if ((start && day < start.clearTime()) || (end && day > end.clearTime())) {
|
||||
action = DISABLED;
|
||||
}
|
||||
}
|
||||
|
||||
return action;
|
||||
},
|
||||
getDayData: function (day) {
|
||||
var ret, data = this.data;
|
||||
|
||||
if (data) {
|
||||
|
||||
for (var i = 0, len = data.length; i < len; i++) {
|
||||
var item = data[i];
|
||||
|
||||
if (day.isSame(item.date.toDate())) {
|
||||
ret = item.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
},
|
||||
getDayItem: function (y, m, d, f) {
|
||||
var dt = this.date,
|
||||
idt = new Date(y, m - 1, d),
|
||||
data = {
|
||||
w: this.width / 7,
|
||||
h: this.height / 7,
|
||||
value: d
|
||||
},
|
||||
markData,
|
||||
$item;
|
||||
|
||||
var selected = dt.isSame(y, m, d) ? SELECT_CLASS : '';
|
||||
if (f === 1) {
|
||||
data['class'] = OLD_DAY_CLASS;
|
||||
} else if (f === 3) {
|
||||
data['class'] = NEW_DAY_CLASS;
|
||||
} else {
|
||||
data['class'] = '';
|
||||
}
|
||||
|
||||
if (dt.isSame(y, m, d)) {
|
||||
data['class'] += ' ' + TODAY_CLASS;
|
||||
}
|
||||
|
||||
data.action = this.getDayAction(idt);
|
||||
markData = this.getDayData(idt);
|
||||
|
||||
$item = $(DAY_ITEM_TPL.repeat(data));
|
||||
|
||||
if (markData) {
|
||||
$item.data(MARK_DATA, markData);
|
||||
$item.html(d + MARK_DAY_HTML);
|
||||
}
|
||||
|
||||
return $item;
|
||||
},
|
||||
getDaysHtml: function (y, m) {
|
||||
var year, month, firstWeek, daysNum, prevM, prevDiff,
|
||||
dt = this.date,
|
||||
$days = $('<ol class="days"></ol>');
|
||||
|
||||
if (isDate(y)) {
|
||||
year = y.getFullYear();
|
||||
month = y.getMonth() + 1;
|
||||
} else {
|
||||
year = Number(y);
|
||||
month = Number(m);
|
||||
}
|
||||
|
||||
firstWeek = new Date(year, month - 1, 1).getDay() || 7;
|
||||
prevDiff = firstWeek - this.options.startWeek;
|
||||
daysNum = Date.getDaysNum(year, month);
|
||||
prevM = Date.getPrevMonth(year, month);
|
||||
prevDaysNum = Date.getDaysNum(year, prevM.m);
|
||||
nextM = Date.getNextMonth(year, month);
|
||||
// month flag
|
||||
var PREV_FLAG = 1,
|
||||
CURR_FLAG = 2,
|
||||
NEXT_FLAG = 3,
|
||||
count = 0;
|
||||
|
||||
for (var p = prevDaysNum - prevDiff + 1; p <= prevDaysNum; p++ , count++) {
|
||||
|
||||
$days.append(this.getDayItem(prevM.y, prevM.m, p, PREV_FLAG));
|
||||
}
|
||||
|
||||
for (var c = 1; c <= daysNum; c++ , count++) {
|
||||
$days.append(this.getDayItem(year, month, c, CURR_FLAG));
|
||||
}
|
||||
|
||||
for (var n = 1, nl = 42 - count; n <= nl; n++) {
|
||||
|
||||
$days.append(this.getDayItem(nextM.y, nextM.m, n, NEXT_FLAG));
|
||||
}
|
||||
|
||||
return $('<li></li>').width(this.options.width).append($days);
|
||||
},
|
||||
getWeekHtml: function () {
|
||||
var week = [],
|
||||
weekArray = this.options.weekArray,
|
||||
start = this.options.startWeek,
|
||||
len = weekArray.length,
|
||||
w = this.width / 7,
|
||||
h = this.height / 7;
|
||||
|
||||
for (var i = start; i < len; i++) {
|
||||
week.push(WEEK_ITEM_TPL.repeat({
|
||||
w: w,
|
||||
h: h,
|
||||
wk: weekArray[i]
|
||||
}));
|
||||
}
|
||||
|
||||
for (var j = 0; j < start; j++) {
|
||||
week.push(WEEK_ITEM_TPL.repeat({
|
||||
w: w,
|
||||
h: h,
|
||||
wk: weekArray[j]
|
||||
}));
|
||||
}
|
||||
|
||||
return week.join('');
|
||||
},
|
||||
getMonthHtml: function () {
|
||||
var month = [],
|
||||
w = this.width / 4,
|
||||
h = this.height / 4,
|
||||
i = 1;
|
||||
|
||||
for (; i < 13; i++) {
|
||||
month.push(MONTH_ITEM_TPL.repeat({
|
||||
w: w,
|
||||
h: h,
|
||||
m: i
|
||||
}));
|
||||
}
|
||||
|
||||
return month.join('');
|
||||
},
|
||||
setMonthAction: function (y) {
|
||||
var m = this.date.getMonth() + 1;
|
||||
|
||||
this.$monthItems.children().removeClass(TODAY_CLASS);
|
||||
if (y === this.date.getFullYear()) {
|
||||
this.$monthItems.children().eq(m - 1).addClass(TODAY_CLASS);
|
||||
}
|
||||
},
|
||||
fillStatic: function () {
|
||||
var staticData = {
|
||||
prev: this.options.prev,
|
||||
next: this.options.next,
|
||||
week: this.getWeekHtml(),
|
||||
month: this.getMonthHtml()
|
||||
};
|
||||
|
||||
this.$element.html(TEMPLATE.join('').repeat(staticData));
|
||||
},
|
||||
updateDisDate: function (y, m) {
|
||||
this.$disDate.html(DATE_DIS_TPL.repeat({
|
||||
year: y,
|
||||
month: m
|
||||
}));
|
||||
},
|
||||
updateDisMonth: function (y) {
|
||||
this.$disMonth.html(y);
|
||||
},
|
||||
fillDateItems: function (y, m) {
|
||||
var ma = [
|
||||
Date.getPrevMonth(y, m), {
|
||||
y: y,
|
||||
m: m
|
||||
},
|
||||
Date.getNextMonth(y, m)
|
||||
];
|
||||
|
||||
this.$dateItems.html('');
|
||||
for (var i = 0; i < 3; i++) {
|
||||
var $item = this.getDaysHtml(ma[i].y, ma[i].m);
|
||||
this.$dateItems.append($item);
|
||||
}
|
||||
|
||||
},
|
||||
hide: function (view, date, data) {
|
||||
this.$trigger.val(date.format(this.options.format));
|
||||
this.options.onClose.call(this, view, date, data);
|
||||
this.$element.hide();
|
||||
},
|
||||
trigger: function () {
|
||||
|
||||
this.$trigger = this.options.trigger instanceof $ ? this.options.trigger : $(this.options.trigger);
|
||||
|
||||
var _this = this,
|
||||
$this = _this.$element,
|
||||
post = _this.$trigger.offset(),
|
||||
offs = _this.options.offset;
|
||||
// alert(post.top)
|
||||
// alert(_this.$trigger.outerHeight())
|
||||
// alert(offs[1])
|
||||
//alert(post.left)
|
||||
|
||||
$this.addClass('calendar-modal').css({
|
||||
//left: (post.left + offs[0]) + 'px',
|
||||
// top: (post.top + _this.$trigger.outerHeight() + offs[1]) + 'px',
|
||||
left: (offs[0] + 60) + 'px',
|
||||
top: (_this.$trigger.outerHeight() + offs[1]) + 'px',
|
||||
zIndex: _this.options.zIndex
|
||||
});
|
||||
|
||||
_this.$trigger.click(function () {
|
||||
$this.show();
|
||||
});
|
||||
|
||||
$(document).click(function (e) {
|
||||
if (_this.$trigger[0] != e.target && !$.contains($this[0], e.target)) {
|
||||
$this.hide();
|
||||
}
|
||||
});
|
||||
},
|
||||
render: function () {
|
||||
this.$week = this.$element.find('.week');
|
||||
this.$dateItems = this.$element.find('.date-items');
|
||||
this.$monthItems = this.$element.find('.month-items');
|
||||
this.$label = this.$element.find('.calendar-label');
|
||||
this.$disDate = this.$element.find(DISPLAY_VD);
|
||||
this.$disMonth = this.$element.find(DISPLAY_VM);
|
||||
|
||||
var y = this.date.getFullYear(),
|
||||
m = this.date.getMonth() + 1;
|
||||
|
||||
this.updateDisDate(y, m);
|
||||
this.updateMonthView(y);
|
||||
|
||||
this.fillDateItems(y, m);
|
||||
|
||||
this.options.trigger && this.trigger();
|
||||
|
||||
},
|
||||
setView: function (view) {
|
||||
this.$element.removeClass(VIEW_CLASS.date + ' ' + VIEW_CLASS.month)
|
||||
.addClass(VIEW_CLASS[view]);
|
||||
this.view = view;
|
||||
},
|
||||
updateDateView: function (y, m, dirc, cb) {
|
||||
m = m || this.date.getMonth() + 1;
|
||||
|
||||
var _this = this,
|
||||
$dis = this.$dateItems,
|
||||
exec = {
|
||||
prev: function () {
|
||||
var pm = Date.getPrevMonth(y, m),
|
||||
ppm = Date.getPrevMonth(y, m, 2),
|
||||
$prevItem = _this.getDaysHtml(ppm.y, ppm.m);
|
||||
|
||||
m = pm.m;
|
||||
y = pm.y;
|
||||
|
||||
$dis.animate({
|
||||
marginLeft: 0
|
||||
}, 300, 'swing', function () {
|
||||
$dis.children(':last').remove();
|
||||
$dis.prepend($prevItem).css('margin-left', '-100%');
|
||||
|
||||
$.isFunction(cb) && cb.call(_this);
|
||||
});
|
||||
},
|
||||
next: function () {
|
||||
var nm = Date.getNextMonth(y, m),
|
||||
nnm = Date.getNextMonth(y, m, 2),
|
||||
$nextItem = _this.getDaysHtml(nnm.y, nnm.m);
|
||||
|
||||
m = nm.m;
|
||||
y = nm.y;
|
||||
|
||||
$dis.animate({
|
||||
marginLeft: '-200%'
|
||||
}, 300, 'swing', function () {
|
||||
$dis.children(':first').remove();
|
||||
$dis.append($nextItem).css('margin-left', '-100%');
|
||||
|
||||
$.isFunction(cb) && cb.call(_this);
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
if (dirc) {
|
||||
exec[dirc]();
|
||||
} else {
|
||||
this.fillDateItems(y, m);
|
||||
}
|
||||
|
||||
this.updateDisDate(y, m);
|
||||
|
||||
this.setView('date');
|
||||
|
||||
return {
|
||||
y: y,
|
||||
m: m
|
||||
};
|
||||
},
|
||||
updateMonthView: function (y) {
|
||||
this.updateDisMonth(y);
|
||||
this.setMonthAction(y);
|
||||
this.setView('month');
|
||||
},
|
||||
getDisDateValue: function () {
|
||||
var arr = this.$disDate.html().split('/'),
|
||||
y = Number(arr[0]),
|
||||
m = Number(arr[1].match(/\d{1,2}/)[0]);
|
||||
|
||||
return [y, m];
|
||||
},
|
||||
selectedDay: function (d, type) {
|
||||
var arr = this.getDisDateValue(),
|
||||
y = arr[0],
|
||||
m = arr[1],
|
||||
toggleClass = function () {
|
||||
this.$dateItems.children(':eq(1)')
|
||||
.find('[' + ITEM_DAY + ']:not(.' + NEW_DAY_CLASS + ', .' + OLD_DAY_CLASS + ')')
|
||||
.removeClass(SELECT_CLASS)
|
||||
.filter(function (index) {
|
||||
return parseInt(this.innerHTML) === d;
|
||||
}).addClass(SELECT_CLASS);
|
||||
};
|
||||
|
||||
if (type) {
|
||||
var ret = this.updateDateView(y, m, {
|
||||
'old': 'prev',
|
||||
'new': 'next'
|
||||
}[type], toggleClass);
|
||||
y = ret.y;
|
||||
m = ret.m;
|
||||
this.options.viewChange('date', y, m);
|
||||
} else {
|
||||
toggleClass.call(this);
|
||||
}
|
||||
|
||||
return new Date(y, m - 1, d);
|
||||
},
|
||||
showLabel: function (event, view, date, data) {
|
||||
var $lbl = this.$label;
|
||||
|
||||
$lbl.find('p').html(this.options.label.repeat({
|
||||
m: view,
|
||||
d: date.format(this.options.format),
|
||||
v: data
|
||||
}).replace(/\n/g, '<br>'));
|
||||
|
||||
var w = $lbl.outerWidth(),
|
||||
h = $lbl.outerHeight();
|
||||
|
||||
$lbl.css({
|
||||
left: (event.pageX - w / 2) + 'px',
|
||||
top: (event.pageY - h - 20) + 'px'
|
||||
}).show();
|
||||
},
|
||||
hasLabel: function () {
|
||||
if (this.options.label) {
|
||||
$('body').append(this.$label);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
event: function () {
|
||||
var _this = this,
|
||||
vc = _this.options.viewChange;
|
||||
|
||||
// view change
|
||||
_this.$element.on('click', DISPLAY_VD, function () {
|
||||
var arr = _this.getDisDateValue();
|
||||
_this.updateMonthView(arr[0], arr[1]);
|
||||
|
||||
vc('month', arr[0], arr[1]);
|
||||
|
||||
}).on('click', DISPLAY_VM, function () {
|
||||
var y = this.innerHTML;
|
||||
|
||||
_this.updateDateView(y);
|
||||
vc('date', y);
|
||||
});
|
||||
|
||||
// arrow
|
||||
_this.$element.on('click', ARROW_DATE, function () {
|
||||
var arr = _this.getDisDateValue(),
|
||||
type = getClass(this),
|
||||
y = arr[0],
|
||||
m = arr[1];
|
||||
|
||||
var d = _this.updateDateView(y, m, type, function () {
|
||||
vc('date', d.y, d.m);
|
||||
});
|
||||
|
||||
}).on('click', ARROW_MONTH, function () {
|
||||
|
||||
var y = Number(_this.$disMonth.html()),
|
||||
type = getClass(this);
|
||||
|
||||
y = type === 'prev' ? y - 1 : y + 1;
|
||||
_this.updateMonthView(y);
|
||||
vc('month', y);
|
||||
});
|
||||
|
||||
// selected
|
||||
_this.$element.on('click', '[' + ITEM_DAY + ']', function () {
|
||||
var d = parseInt(this.innerHTML),
|
||||
cls = getClass(this),
|
||||
type = /new|old/.test(cls) ? cls.match(/new|old/)[0] : '';
|
||||
|
||||
var day = _this.selectedDay(d, type);
|
||||
|
||||
_this.options.onSelected.call(this, 'date', day, $(this).data(MARK_DATA));
|
||||
|
||||
_this.$trigger && _this.hide('date', day, $(this).data(MARK_DATA));
|
||||
|
||||
}).on('click', '[' + ITEM_MONTH + ']', function () {
|
||||
var y = Number(_this.$disMonth.html()),
|
||||
m = parseInt(this.innerHTML);
|
||||
|
||||
_this.updateDateView(y, m);
|
||||
vc('date', y, m);
|
||||
_this.options.onSelected.call(this, 'month', new Date(y, m - 1));
|
||||
});
|
||||
|
||||
// hover
|
||||
_this.$element.on('mouseenter', '[' + ITEM_DAY + ']', function (e) {
|
||||
var arr = _this.getDisDateValue(),
|
||||
day = new Date(arr[0], arr[1] - 1, parseInt(this.innerHTML));
|
||||
|
||||
if (_this.hasLabel && $(this).data(MARK_DATA)) {
|
||||
$('body').append(_this.$label);
|
||||
_this.showLabel(e, 'date', day, $(this).data(MARK_DATA));
|
||||
}
|
||||
|
||||
_this.options.onMouseenter.call(this, 'date', day, $(this).data(MARK_DATA));
|
||||
}).on('mouseleave', '[' + ITEM_DAY + ']', function () {
|
||||
_this.$label.hide();
|
||||
});
|
||||
},
|
||||
resize: function () {
|
||||
var w = this.width,
|
||||
h = this.height,
|
||||
hdH = this.$element.find('.calendar-hd').outerHeight();
|
||||
|
||||
this.$element.width(w).height(h + hdH)
|
||||
.find('.calendar-inner, .view')
|
||||
.css('width', w + 'px');
|
||||
|
||||
this.$element.find('.calendar-ct').width(w).height(h);
|
||||
|
||||
},
|
||||
init: function () {
|
||||
|
||||
this.fillStatic();
|
||||
this.resize();
|
||||
this.render();
|
||||
this.view = this.options.view;
|
||||
this.setView(this.view);
|
||||
this.event();
|
||||
},
|
||||
setData: function (data) {
|
||||
this.data = data;
|
||||
|
||||
if (this.view === 'date') {
|
||||
var d = this.getDisDateValue();
|
||||
this.fillDateItems(d[0], d[1]);
|
||||
} else if (this.view === 'month') {
|
||||
this.updateMonthView(this.$disMonth.html());
|
||||
}
|
||||
},
|
||||
methods: function (name, args) {
|
||||
if (OS.call(this[name]) === '[object Function]') {
|
||||
return this[name].apply(this, args);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.calendar = function (options) {
|
||||
var calendar = this.data('calendar'),
|
||||
fn,
|
||||
args = [].slice.call(arguments);
|
||||
|
||||
if (!calendar) {
|
||||
return this.each(function () {
|
||||
return $(this).data('calendar', new Calendar(this, options));
|
||||
});
|
||||
}
|
||||
if (isString(options)) {
|
||||
fn = options;
|
||||
args.shift();
|
||||
return calendar.methods(fn, args);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
$.fn.calendar.defaults = defaults;
|
||||
|
||||
}));
|
51
Epost.TestToolsWeb/Content/js/jquery-1.11.3.min.js
vendored
Normal file
51
Epost.TestToolsWeb/Content/js/jquery-1.11.3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
16
Epost.TestToolsWeb/Content/js/jquery-1.js
vendored
Normal file
16
Epost.TestToolsWeb/Content/js/jquery-1.js
vendored
Normal file
File diff suppressed because one or more lines are too long
16
Epost.TestToolsWeb/Content/js/jquery.js
vendored
Normal file
16
Epost.TestToolsWeb/Content/js/jquery.js
vendored
Normal file
File diff suppressed because one or more lines are too long
16
Epost.TestToolsWeb/Content/js/jquery44.js
vendored
Normal file
16
Epost.TestToolsWeb/Content/js/jquery44.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5
Epost.TestToolsWeb/Content/js/newprogress.js
Normal file
5
Epost.TestToolsWeb/Content/js/newprogress.js
Normal file
@ -0,0 +1,5 @@
|
||||
$(document).ready(function () {
|
||||
var widthTemp = 18 + '%';
|
||||
$('#progressBar').css('width', widthTemp);
|
||||
$('#progressBar').text(widthTemp);
|
||||
});
|
89
Epost.TestToolsWeb/Content/js/payment.js
Normal file
89
Epost.TestToolsWeb/Content/js/payment.js
Normal file
@ -0,0 +1,89 @@
|
||||
function show(value) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/Home/GetLocationInfo",
|
||||
data: { shelves: value },
|
||||
success: function (data) {
|
||||
if (data.result == "1") {
|
||||
// $(".bgcolor1").html("");
|
||||
// $("#location1").html("");
|
||||
// $("#gdname1").html("");
|
||||
var uls = $(".bgcolor1 span");
|
||||
if (uls.size() > 0) {
|
||||
$.each(uls, function (i) {
|
||||
|
||||
$(this).html("");
|
||||
|
||||
});
|
||||
}
|
||||
var loclist = jQuery.parseJSON(data.msg);
|
||||
for (var i = 0; i < loclist.length; i++) {
|
||||
if (i > 2) {
|
||||
break;
|
||||
}
|
||||
var x = i + 1;
|
||||
var gsname = loclist[i].Goodsname;
|
||||
if (gsname.length > 15) {
|
||||
gsname = gsname.substring(0,15)+"...";
|
||||
|
||||
}
|
||||
$("#location" + x).html(loclist[i].Location);
|
||||
$("#gdname" + x).html(gsname);
|
||||
|
||||
$("#locationcount").html(value +"<22>Ż<EFBFBD><C5BB>ܹ<EFBFBD>" + loclist[i].Count+"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
var $box = $('.payment_time_mask');
|
||||
$box.css({
|
||||
display: "block",
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>رհ<D8B1>ť<EFBFBD><C5A5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2>ر<EFBFBD>
|
||||
$(".payment_time_mask li").on('click', function () {
|
||||
$("#bg,.payment_time_mask").css("display", "none");
|
||||
|
||||
});
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>رհ<D8B1>ť<EFBFBD><C5A5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2>ر<EFBFBD>
|
||||
$(".payment_time_mask_show li").on('click', function () {
|
||||
$("#bg,.payment_time_mask_show").css("display", "none");
|
||||
|
||||
});
|
||||
function clickSKU(value) {
|
||||
|
||||
var sku = $("#showsku" + value).html();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/Home/DisplayJobBySKU",
|
||||
data: { sku: sku },
|
||||
success: function (data) {
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
function clickLocation(value) {
|
||||
|
||||
var loc = $("#location" + value).html();
|
||||
if (loc != "") {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/Home/DisplayJobByLoc",
|
||||
data: { location: loc },
|
||||
success: function (data) {
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
89
Epost.TestToolsWeb/Content/js/payment_Gc.js
Normal file
89
Epost.TestToolsWeb/Content/js/payment_Gc.js
Normal file
@ -0,0 +1,89 @@
|
||||
function show(value) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/Home/GetLocationInfo",
|
||||
data: { shelves: value },
|
||||
success: function (data) {
|
||||
if (data.result == "1") {
|
||||
// $(".bgcolor1").html("");
|
||||
//$("#location1").html("");
|
||||
//$("#gdname1").html("");
|
||||
var uls = $(".bgcolor1 span");
|
||||
if (uls.size() > 0) {
|
||||
$.each(uls, function (i) {
|
||||
|
||||
$(this).html("");
|
||||
|
||||
});
|
||||
}
|
||||
var loclist = jQuery.parseJSON(data.msg);
|
||||
for (var i = 0; i < loclist.length; i++) {
|
||||
if (i > 2) {
|
||||
break;
|
||||
}
|
||||
var x = i + 1;
|
||||
var gsname = loclist[i].Goodsname;
|
||||
if (gsname.length > 15) {
|
||||
gsname = gsname.substring(0, 15) + "...";
|
||||
|
||||
}
|
||||
$("#location" + x).html(loclist[i].Location);
|
||||
$("#gdname" + x).html(gsname);
|
||||
|
||||
$("#locationcount").html(value + "号货架共" + loclist[i].Count + "个待拣货位");
|
||||
var $box = $('.payment_time_mask');
|
||||
$box.css({
|
||||
display: "block",
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
//点击关闭按钮的时候,遮罩层关闭
|
||||
$(".payment_time_mask li").on('click', function () {
|
||||
$("#bg,.payment_time_mask").css("display", "none");
|
||||
|
||||
});
|
||||
|
||||
//点击关闭按钮的时候,遮罩层关闭
|
||||
$(".payment_time_mask_show li").on('click', function () {
|
||||
$("#bg,.payment_time_mask_show").css("display", "none");
|
||||
|
||||
});
|
||||
function clickSKU(value) {
|
||||
|
||||
var sku = $("#showsku" + value).html();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/Home/DisplayJobBySKU",
|
||||
data: { sku: sku },
|
||||
success: function (data) {
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
function clickLocation(value) {
|
||||
|
||||
var loc = $("#location" + value).html();
|
||||
if (loc != "") {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/Home/DisplayJobByLoc",
|
||||
data: { location: loc },
|
||||
success: function (data) {
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
BIN
Epost.TestToolsWeb/Content/js/pro.png
Normal file
BIN
Epost.TestToolsWeb/Content/js/pro.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
147
Epost.TestToolsWeb/Content/js/progress.js
Normal file
147
Epost.TestToolsWeb/Content/js/progress.js
Normal file
@ -0,0 +1,147 @@
|
||||
/**
|
||||
* 纯js进度条
|
||||
* Created by kiner on 15/3/22.
|
||||
*/
|
||||
|
||||
function progress(options){
|
||||
|
||||
this.w = (options && options.width)?parseFloat(options.width) : parseFloat(this.options.width);
|
||||
this.h = (options && options.height)?parseFloat(options.height) : parseFloat(this.options.height);
|
||||
this.bgColor = (options && options.bgColor)?options.bgColor : this.options.bgColor;
|
||||
this.proColor = (options && options.proColor)?options.proColor : this.options.proColor;
|
||||
this.fontColor = (options && options.fontColor)?options.fontColor : this.options.fontColor;
|
||||
this.showPresent = (options && options.showPresent != undefined)?options.showPresent : this.options.showPresent;
|
||||
this.completeCallback = (options && options.completeCallback)?options.completeCallback : this.options.completeCallback;
|
||||
this.changeCallback = (options && options.changeCallback)?options.changeCallback : this.options.changeCallback;
|
||||
this.text = (options && options.text)?options.text : this.options.text;
|
||||
this.val = (options && options.val)?options.val : this.options.val;
|
||||
|
||||
this.strTemp = this.text.substring(0,this.text.indexOf('#*'))+"{{pro}}"+this.text.substring(this.text.indexOf('*#')+2);
|
||||
|
||||
this.init();
|
||||
|
||||
}
|
||||
/**
|
||||
* 默认选项
|
||||
* @type {{width: number, height: number, bgColor: string, proColor: string, fontColor: string, val: number, text: string, showPresent: boolean, completeCallback: Function, changeCallback: Function}}
|
||||
*/
|
||||
progress.prototype.options = {
|
||||
|
||||
width : 200,
|
||||
height: 30,
|
||||
bgColor : "#005538",
|
||||
proColor : "#009988",
|
||||
fontColor : "#FFFFFF",
|
||||
val : 0,
|
||||
text:"当前进度为#*val*#%",
|
||||
showPresent : true,
|
||||
completeCallback:function(){},
|
||||
changeCallback:function(){}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
*/
|
||||
progress.prototype.init = function(){
|
||||
|
||||
this.proBox = document.createElement('div');
|
||||
this.proBg = document.createElement('div');
|
||||
this.proPre = document.createElement('div');
|
||||
this.proFont = document.createElement('div');
|
||||
|
||||
addClass(this.proBox,'proBox');
|
||||
addClass(this.proBg,'proBg');
|
||||
addClass(this.proPre,'proPre');
|
||||
addClass(this.proFont,'proFont');
|
||||
|
||||
this.proBox.setAttribute("style","width:"+this.w+"px; height:"+this.h+"px; position:relative; overflow:hidden; box-shadow:0 0 5px #FFFFFF; -moz-box-shadow:0 0 5px #FFFFFF; -webkit-box-shadow:0 0 5px #FFFFFF; -o-box-shadow:0 0 5px #FFFFFF;");
|
||||
this.proBg.setAttribute("style","background-color:"+this.bgColor+"; position:absolute; z-index:1; width:100%; height:100%; top:0; left:0;");
|
||||
this.proPre.setAttribute("style","transition:all 300ms; -moz-transition:all 300ms; -webkit-transition:all 300ms; -o-transition:all 300ms; width:"+this.val+"%; height:100%; background-color:"+this.proColor+"; position:absolute; z-index:2; top:0; left:0;");
|
||||
if(this.showPresent){
|
||||
|
||||
this.proFont.setAttribute("style","overflow:hidden;text-overflow:ellipsis; white-space:nowrap; *white-space:nowrap; width:100%; height:100%; color:"+this.fontColor+"; text-align:center; line-height:"+this.h+"px; z-index:3; position:absolute; font-size:12px;");
|
||||
|
||||
var text = this.parseText();
|
||||
this.proFont.innerHTML = text;
|
||||
this.proFont.setAttribute("title",text);
|
||||
this.proBox.appendChild(this.proFont);
|
||||
}
|
||||
|
||||
|
||||
this.proBox.appendChild(this.proBg);
|
||||
this.proBox.appendChild(this.proPre);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
progress.prototype.refresh = function(){
|
||||
this.proPre.style.width = this.val+"%";
|
||||
|
||||
this.proFont.innerHTML = this.parseText();
|
||||
};
|
||||
|
||||
/**
|
||||
* 转换文字
|
||||
* @returns {options.text|*}
|
||||
*/
|
||||
progress.prototype.parseText = function(){
|
||||
this.text = this.strTemp.replace("{{pro}}",this.val);
|
||||
return this.text;
|
||||
};
|
||||
|
||||
/**
|
||||
* 更新进度条进度
|
||||
* @param val
|
||||
*/
|
||||
progress.prototype.update = function(val){
|
||||
|
||||
this.val = val;
|
||||
this.refresh();
|
||||
|
||||
this.changeCallback.call(this,val);
|
||||
if(val==100){
|
||||
|
||||
this.completeCallback.call(this,val);
|
||||
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 获取进度条本身的html对象,可直接将其塞入容器中
|
||||
* @returns {HTMLElement|*}
|
||||
*/
|
||||
progress.prototype.getBody = function(){
|
||||
return this.proBox;
|
||||
};
|
||||
/**
|
||||
* 获取当前进度条的值
|
||||
* @returns {*}
|
||||
*/
|
||||
progress.prototype.getVal = function(){
|
||||
return this.val;
|
||||
};
|
||||
|
||||
function hasClass(obj, cls) {
|
||||
return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
|
||||
}
|
||||
|
||||
function addClass(obj, cls) {
|
||||
if (!this.hasClass(obj, cls)) obj.className += " " + cls;
|
||||
}
|
||||
|
||||
function removeClass(obj, cls) {
|
||||
if (hasClass(obj, cls)) {
|
||||
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
|
||||
obj.className = obj.className.replace(reg, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
function toggleClass(obj,cls){
|
||||
if(hasClass(obj,cls)){
|
||||
removeClass(obj, cls);
|
||||
}else{
|
||||
addClass(obj, cls);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user