/**
* 弹出加载层
*/
function pageload() {
$("
").css({ display: "block", width: "100%", height: $(window).height() }).appendTo("body");
$("
").html("正在操作,请稍候。。。").appendTo("body").css({ display: "block", left: ($(document.body).outerWidth(true) - 190) / 2, top: ($(window).height() - 45) / 2 });
}
/**
* 弹出加载层
*/
function pageloadms(ms) {
$("
").css({ display: "block", width: "100%","z-index":"10000", height: $(window).height() }).appendTo("body");
$("
").html(ms).appendTo("body").css({ display: "block", "z-index": "10000", left: ($(document.body).outerWidth(true) - 190) / 2, top: ($(window).height() - 45) / 2 });
}
/**
* 取消加载层
*/
function dispageload() {
$(".datagrid-mask").remove();
$(".datagrid-mask-msg").remove();
$(".easyui-progressbar").remove();
}
/**
* 进度条圆形...
*/
function pageLoadDown() {
var html = "下载中....";
$("
").css({ display: "block", width: "100%", "z-index": "10000", height: $(window).height() }).appendTo("body");
$("
").html(html).appendTo("body").css({ display: "block", "z-index": "10000", left: ($(document.body).outerWidth(true) - 190) / 2, top: ($(window).height() - 45) / 2 });
}
/**
* 进度条长条...
*/
function pageLoadBarDownFile(progressBarId) {
progressBarId = progressBarId || _progressBarIdInfo;
var _width = $(window).width() / 2;
var html = "
";
$("
").css({ display: "block", width: "100%", height: $(window).height() }).appendTo("body");
$(html).appendTo("body").css({ display: "block", height: '10%', background: 'white', width: '50%', position: 'fixed', top: 0, right: 0, bottom: 0, left: 0, margin: 'auto', left: 0 });
$('#' + progressBarId).progressbar({ value: 0, height: 20 });
}
/**
* 圆环进度
*/
var _changeProcess = function (value) {
$('.mask span').html(value);
var num = value * 3.6;
if (num < 180) {
$('.rightcompress').css('transform', 'rotate(' + num + 'deg)');
} else {
$('.rightcompress').css('transform', 'rotate(180deg)');
$('.leftcompress').css('transform', 'rotate(' + (num - 180) + 'deg)');
};
};
/**
* 阻止函数
*/
function prevent_reloading() {
var pendingRequests = {};
jQuery.ajaxPrefilter(function (options, originalOptions, jqXHR) {
var key = options.url;
if (!pendingRequests[key]) {
pendingRequests[key] = jqXHR;
} else {
//jqXHR.abort(); //放弃后触发的提交
pendingRequests[key].abort(); // 放弃先触发的提交
}
var complete = options.complete;
options.complete = function (jqXHR, textStatus) {
pendingRequests[key] = null;
if (jQuery.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});
}
/**
* 有阻止函数弹出层
*/
function pageLoading(ms) {
prevent_reloading();
if (ms) {
pageloadms(ms);
} else {
pageload();
}
}
/**
* 文件下载中...
*/
function pageLoadDownFile() {
var html = "";
$("
").css({ display: "block", width: "100%", "z-index": "10000", height: $(window).height() }).appendTo("body");
$("
").html(html).appendTo("body").css({ display: "block", "z-index": "10000", left: ($(document.body).outerWidth(true) - 190) / 2, top: ($(window).height() - 45) / 2 });
}
/**
* 圆环进度(小)
*/
var _changeFileProcess = function (value) {
$('.maskfile span').html(value);
var num = value * 3.6;
if (num < 180) {
$('.rightfile').css('transform', 'rotate(' + num + 'deg)');
} else {
$('.rightfile').css('transform', 'rotate(180deg)');
$('.leftfile').css('transform', 'rotate(' + (num - 180) + 'deg)');
};
};
axios.interceptors.request.use(function (config) {
config.headers['X-Requested-With'] = 'XMLHttpRequest';
return config;
});
axios.interceptors.response.use(function (response) {
return response;
}, function (error) {
if (error.response) {
if (error.response.status === 800) {
var _resData = error.response.data;
if (_resData.ErrAjaxState && _resData.ErrAjaxState === "0") {
return Promise.reject(_resData.ErrAjaxMessage);
}
return Promise.reject(error);
}
return Promise.reject(error);
}
return Promise.reject(error);
});
function dgpageInit(id) {
var _data = $('#' + id).data('datagrid');
$('#' + id).datagrid('resize', { width: '100%' });
var firsetPageSize = _data.options.pageSize;
var arryPageList = [firsetPageSize, 20, 30, 50, 100, 200, 500, 1000];
$.unique(arryPageList.sort(function (a, b) {
return a - b;
}));
var p = $('#' + id).datagrid('getPager');
$(p).pagination({
beforePageText: '第',
afterPageText: '页 共 {pages} 页',
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录',
pageSize: firsetPageSize,
pageList: arryPageList,
onBeforeRefresh: function () {
$(this).pagination('loading');
$(this).pagination('loaded');
}
});
}
function mergeCells(dg, data, cellnames) {
for (var i = 0; i < cellnames.length; i++) {
var cellname = cellnames[i];
var merges = [];
for (var r = 0; r < data.rows.length; r++) {
var row = data.rows[r];
var mergeinfo = new Object();
var nr = row[cellname];
var rowspan = 1;
for (var r1 = r + 1; r1 < data.rows.length; r1++) {
var row1 = data.rows[r1];
var nr1 = row1[cellname];
if (nr1 && nr1 == nr && nr1 != "") {
mergeinfo.index = r;
rowspan++;
mergeinfo.rowspan = rowspan;
}
else {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
break;
}
if (r1 == data.rows.length - 1) {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
}
}
}
for (var j = 0; j < merges.length; j++) {
$('#' + dg).datagrid('mergeCells', {
index: merges[j].index,
field: cellname,
rowspan: merges[j].rowspan
});
}
}
}
function mergeCells_table(dg, data, cellnames) {
var table = document.getElementById(dg);
for (var i = 0; i < cellnames.length; i++) {
var cellname = cellnames[i];
var merges = [];
for (var r = 0; r < data.rows.length; r++) {
var row = data.rows[r];
var mergeinfo = new Object();
var nr = row[cellname];
var rowspan = 1;
for (var r1 = r + 1; r1 < data.rows.length; r1++) {
var row1 = data.rows[r1];
var nr1 = row1[cellname];
if (nr1 && nr1 == nr && nr1 != "") {
mergeinfo.index = r;
rowspan++;
mergeinfo.rowspan = rowspan;
table.rows[r + 1].cells[i].rowSpan = rowspan;
table.rows[r1 + 1].cells[i].style.display = "none";
}
else {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
break;
}
if (r1 == data.rows.length - 1) {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
}
}
}
}
}
function mergeCells_table1(dg, data, cellnames,cellindexs) {
var table = document.getElementById(dg);
for (var i = 0; i < cellnames.length; i++) {
var cellname = cellnames[i];
var merges = [];
for (var r = 0; r < data.rows.length; r++) {
var row = data.rows[r];
var mergeinfo = new Object();
var nr = row[cellname];
var rowspan = 1;
for (var r1 = r + 1; r1 < data.rows.length; r1++) {
var row1 = data.rows[r1];
var nr1 = row1[cellname];
if (nr1 && nr1 == nr && nr1 != "") {
mergeinfo.index = r;
rowspan++;
var cellindex = cellindexs[i];
mergeinfo.rowspan = rowspan;
table.rows[r + 1].cells[cellindex].rowSpan = rowspan;
table.rows[r1 + 1].cells[cellindex].style.display = "none";
}
else {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
break;
}
if (r1 == data.rows.length - 1) {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
}
}
}
}
}
//cellcomp列相同,cellnames合并
function mergeCells_one(dg, data, cellcomp, cellnames) {
var merges = [];
for (var r = 0; r < data.rows.length; r++) {
var row = data.rows[r];
var mergeinfo = new Object();
var nr = row[cellcomp];
var rowspan = 1;
for (var r1 = r + 1; r1 < data.rows.length; r1++) {
var row1 = data.rows[r1];
var nr1 = row1[cellcomp];
if (nr1 && nr1 == nr && nr1 != "") {
mergeinfo.index = r;
rowspan++;
mergeinfo.rowspan = rowspan;
}
else {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
break;
}
if (r1 == data.rows.length - 1) {
if (rowspan > 1) {
merges.push(mergeinfo);
r = r1 - 1;
}
}
}
}
for (var i = 0; i < cellnames.length; i++) {
var cellname = cellnames[i];
for (var j = 0; j < merges.length; j++) {
$('#' + dg).datagrid('mergeCells', {
index: merges[j].index,
field: cellname,
rowspan: merges[j].rowspan
});
}
}
}
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
/**
* 设置未来(全局)的AJAX请求默认选项
* 主要设置了AJAX请求遇到Session过期的情况
*/
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded;charset=utf-8",
complete: function (XMLHttpRequest, textStatus) {
//通过XMLHttpRequest取得响应头,sessionstatus,
var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
var loginurl = XMLHttpRequest.getResponseHeader("loginurl");
if (sessionstatus == "timeout") {
// alert("由于您长时间没有操作, session已过期, 请重新登录.");
var top = getTopWinow();
top.location.href = loginurl;
}
}
});
/**
* 在页面中任何嵌套层次的窗口中获取顶层窗口
* @return 当前页面的顶层窗口对象
*/
function getTopWinow() {
var p = window;
while (p != p.parent) {
p = p.parent;
}
return p;
}
function isNumber(str) {
var reg = /^[0-9]*[1-9][0-9]*$/;
return reg.test(str);
}
function isEmail(str) {
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
return reg.test(str);
}
//护照
function isPassport(str) {
var reg = /^[a-zA-Z0-9]{3,21}$/;
return reg.test(str);
}
//港澳回归证和台胞证
function isZjGat(str) {
var reg = /^[a-zA-Z0-9]{5,21}$/;
return reg.test(str);
}
//外国人居留许可证
function isPermit(str) {
var reg = /^[a-zA-Z]{3}\d{12}$/;
return reg.test(str);
}
//全选与反选共用
function check_all(inputcheck, strid) {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].type == "checkbox") {
if (inputs[i].id.indexOf(strid) != -1)
inputs[i].checked = document.getElementById(inputcheck).checked;
}
}
}
function txtNumKeyPress(txt) {
var code = (event.keyCode ? event.keyCode : event.which);
if (typeof ($.browser) != "undefined" && !$.browser.msie && (event.keyCode == 0x8)) // if firefox
{
return;
}
event.returnValue = code >= 48 && code <= 57 || event.keyCode == 46; // number or dot
}
function txtNumblur(txt) {
if (isNaN(txt.value)) {
txt.value = "";
}
if (txt.value.lastIndexOf(".") == (txt.value.length - 1)) {
txt.value = txt.value.substr(0, txt.value.length - 1);
}
if (txt.value.indexOf(".") > 0) {
txt.value = txt.value.substr(0, txt.value.indexOf(".") + 2);
}
if (parseFloat(txt.value) > 100) {
txt.value = "100";
}
}
//文本框禁止粘贴操作 onkeydown="fncKeyStop(event)" onpaste="return false"
function fncKeyStop(evt) {
if (!window.event) {
var keyhh = window.event ? event.keyCode : event.which;
var keycode = keyhh;
var key = String.fromCharCode(keycode).toLowerCase();
if (evt.ctrlKey && key == "v") {
evt.preventDefault();
evt.stopPropagation();
}
}
}
//Javascript正则控制文本框只能输入整数或浮点数onkeyup="CheckInputIntFloat(this)"
function CheckInputIntFloat(oInput) {
if ('' != oInput.value.replace(/\d{1,}\.{0,1}\d{0,}/, '')) {
oInput.value = oInput.value.match(/\d{1,}\.{0,1}\d{0,}/) == null ? '' : oInput.value.match(/\d{1,}\.{0,1}\d{0,}/);
}
if ("" != oInput.value) {
if (oInput.value.indexOf('.') <= -1) {
if (oInput.value.length > 3) {
oInput.value = '';
}
} else {
var strs = new Array(); //定义一数组
strs = oInput.value.split('.'); //字符分割
if (strs[0].toString().length > 2) {
oInput.value = '';
}
if (oInput.value.length > 5) {
oInput.value = '';
}
}
}
}
/**
* 扩展combox验证,easyui原始只验证select text的值,不支持value验证
*/
$.extend($.fn.validatebox.defaults.rules, {
comboxValidate: {
validator: function (value, param, missingMessage) {
try {
if ($('#' + param).combobox('getValue') != '' && $('#' + param).combobox('getValue') != null) {
return true;
}
return false;
}
catch (ex) {
//$('#' + param).val("");
return false;
}
},
message: "{1}"
}
});
function responseTextTitle(responseText)
{
var index1 = responseText.indexOf("");
var index11 = responseText.indexOf("");
index1 = index1 > index11 ? index1 : index11;
var index2 = responseText.indexOf(" ");
var index22 = responseText.indexOf(" ");
index2 = index2 > index22 ? index2 : index22;
if (index1 > 0 && index2>0) {
return responseText.substring(index1 + 7, index2);
}
else {
return responseText;
}
}
//aes加密
String.prototype.AESEncrypt = function () {
var key = CryptoJS.enc.Utf8.parse("8NONwyJtHesysWpM"); //8NONwyJtHesysWpM
var realcontent = this.toString();
var encontent = CryptoJS.AES.encrypt(realcontent, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var encryptedData = encontent.ciphertext.toString()
return encryptedData;
}
String.prototype.trim = function () {
var restr = this.replace(/(^[\s\n\t]+|[\s\n\t]+$)/g, "");
return restr;
}
String.prototype.getParamvalueBykey = function (key) {
var reg = new RegExp("" + key + "=([^&]*)")
var urlstr = this.toString();
var mathresult = reg.exec(this.toString());
if (mathresult != null)
return mathresult[1];
else
return "";
}
/**
* 获取字符串长度
*/
String.prototype.pointLength = function () {
var len = 0;
for (var i = 0; i < this.length;) {
var codePoint = this.codePointAt(i);
i += codePoint > 0xffff ? 2 : 1;
len++;
}
return len;
}
/**
* 获取字符串某个位置字符
*/
String.prototype.pointAt = function (index) {
var curIndex = 0;//码点的下标
for (var i = 0; i < this.length;) {
var codePoint = this.codePointAt(i);
if (curIndex === index) {
return String.fromCodePoint(codePoint);
}
i += codePoint > 0xffff ? 2 : 1;
curIndex++;
}
}
/**
* 获取字符串截取
*/
String.prototype.sliceByPoint = function (start, end) {
if (start === undefined) start = 0;
if (end === undefined) end = this.pointLength();
var result = '';
for (var i = start; i < end; i++) {
result += this.pointAt(i);
}
return result;
}
/**
*是否Object对象
*@param val 值
*@return boolean
*/
jQuery.isObject = function (val) {
if (typeof val === 'object' && val !== null) {
return true;
}
return false;
}
/**
*是否相同
*@param val1 第一个值
*@param val2 第二个值
*@return boolean
*/
jQuery.isEquals = function (val1, val2) {
if ($.isObject(val1) && $.isObject(val2)) {
var keys1 = Object.keys(val1);
var keys2 = Object.keys(val2);
if (keys1.length !== keys2.length) {
return false;
}
for (var i = 0; i < keys1.length; i++) {
if (keys2.indexOf(keys1[i]) < 0) {
return false;
}
if (!$.isEquals(val1[keys1[i]], val2[keys1[i]])) {
return false;
}
}
return true;
} else {
return val1 === val2;
}
}
/**
*数组去重
*@param {Array} arr
*@return {Array}
*/
jQuery.uniqueArray = function (arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
var isFind = false;
for (var j = 0; j < result.length; j++) {
if ($.isEquals(result[j], arr[i])) {
isFind = true;
break;
}
}
if (!isFind) {
result.push(arr[i]);
}
}
return result;
}
/**
*深度克隆
*@param value
*@return value
*/
jQuery.deepClone = function (value) {
var cache = new WeakMap();
function _deepClone(value) {
if (typeof value !== 'object' || value === null) {
return value;
}
if (cache.has(value)) {
return cache.get(value);
}
var result = Array.isArray(value) ? [] : {};
Object.setPrototypeOf(result, Object.getPrototypeOf(value));
cache.set(value, result);
for (key in value) {
if (value.hasOwnProperty(key)) {
result[key] = _deepClone(value[key]);
}
}
return result;
}
return _deepClone(value);
}
/**
*深度克隆(拷贝)为与源码的下标对应上,我们把第一个参数称为`第0个参数`,依次类推
*@param 待克隆的对象
*@return 克隆的对象
*@example $.deepCopyClone(columnsxx, columns);
*/
jQuery.deepCopyClone = jQuery.fn.extend = function () {
var options,
name,
src,
copy,
copyIsArray,
clone,
target = arguments[0] || {}, // 默认第0个参数为目标参数
i = 1, // i表示从第几个参数开始将目标参数与其进行合并,默认从第1个参数开始向第0个参数进行合并
length = arguments.length,
deep = false; // 默认为浅拷贝
// 判断第0个参数的类型,若第0个参数是boolean类型,则获取其为true还是false
// 同时将第1个参数作为目标参数,i从当前目标参数的下一个
// Handle a deep copy situation
if (typeof target === "boolean") {
deep = target;
// Skip the boolean and the target
// 如果第一个参数是Boolean类型
target = arguments[i] || {};
i++;
}
// 判断目标参数的类型,若目标参数既不是object类型,也不是function类型,则为目标参数重新赋值空对象
// Handle case when target is a string or something (possible in deep copy)
if (typeof target !== "object" && !jQuery.isFunction(target)) {
target = {};
}
// 若目标参数后面没有参数了,如$.extend({_name:'wenzi'}), $.extend(true, {_name:'wenzi'})
// 则目标参数即为jQuery本身,而target表示的参数不再为目标参数
// Extend jQuery itself if only one argument is passed
if (i === length) {
target = this;
i--;
}
// 从第i个参数开始遍历
for (; i < length; i++) {
// 获取第i个参数,且该参数不为null和undefind,在js中null和undefined,如果不区分类型,是相等的,null==undefined为true,
// 因此可以用null来同时过滤掉null和undefind
// 比如$.extend(target, {}, null);中的第2个参数null是不参与合并的
// Only deal with non-null/undefined values
if ((options = arguments[i]) != null) {
// 使用for~in获取该参数中所有可枚举的属性
// Extend the base object
for (name in options) {
src = target[name]; // 目标参数中name字段的值
copy = options[name]; // 当前参数中name字段的值,有可能是值,Object,Array
// 若参数中属性的值就是目标参数,停止赋值,进行下一个字段的赋值
// 这是为了防止无限的循环嵌套,我们把这个称为,在下面进行比较详细的讲解
// Prevent never-ending loop
if (target === copy) {
continue;
}
// 若deep为true,且当前参数中name字段的值存在且为object类型或Array类型,则进行深度赋值
// Recurse if we're merging plain objects or arrays
// jQuery.isPlainObject()返回值为Boolean类型,如果指定的参数是纯粹的对象,则返回true,否则返回false
if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) {
// 若当前参数中name字段的值为Array类型
// 判断目标参数中name字段的值是否存在,若存在则使用原来的,否则进行初始化
if (copyIsArray) {
//被复制的属性的值类型为Array
copyIsArray = false;
//判断该字段在target对象是否存在,存在且为Array,则直接使用原对象,否则创建空的Array
clone = src && jQuery.isArray(src) ? src : [];
} else {
// 被复制的属性的值得类型为Object
//判断该字段在target对象是否存在,若存在且为Object则直接使用,否则创建空的Object
clone = src && jQuery.isPlainObject(src) ? src : {};
}
// 递归处理,此处为2.2
// Never move original objects, clone them
target[name] = jQuery.extend(deep, clone, copy);
// deep为false,则表示浅度拷贝,直接进行赋值
// Don't bring in undefined values
} else if (copy !== undefined) {
// 若copy是简单的类型且存在值,则直接进行赋值
// 若原对象存在name属性,则直接覆盖掉;若不存在,则创建新的属性
target[name] = copy;
}
}
}
}
// 返回修改后的目标参数
// Return the modified object
return target;
};
/**
*审核流程展示条
*/
jQuery.getShlInfoxx = function (shjl) {
var html = "";
var shz = true;
$.each(shjl, function (i, o) {
html += '';
if (o.shljb == "0") {
if (o.shsj != "") {
html += '' + o.shlmc + ' ' + o.shsj + ' ';
}
else {
shz = false;
html += '
' + o.shlmc + ' 等待提交… ';
}
}
else {
if (o.shsj != "" && o.shlzt > 0) {
html += '
' + o.shlmc + ' ' + o.shsj + ' ';
}
else if (o.shsj != "" && o.shlzt < 0) {
html += '
' + o.shlmc + ' ' + o.shsj + ' ';
}
else {
if (shz) {
html += '
' + o.shlmc + ' 审核中… ';
shz = false;
} else {
html += '
' + o.shlmc + ' 等待审核… ';
}
}
}
html += '
';
});
$("#step_sm").html(html);
}
/**
*审核流程展示条(带驳回理由&&不通过理由)
*/
jQuery.getShlReasonInfoxx = function (shjl) {
var html = "";
var shz = true;
var sfjs = false;
$.each(shjl, function (i, o) {
html += '
';
if (o.shljb == "0") {
var bhyjxx = "";
if (o.shyj && o.shyj != "") {
bhyjxx = "(驳回理由:" + o.shyj + ") ";
}
if (o.shsj != "") {
html += '' + o.shlmc + bhyjxx + ' ' + o.shsj + ' ';
}
else {
shz = false;
html += '
' + o.shlmc + bhyjxx + ' 等待提交… ';
}
} else {
if (o.shsj != "" && o.shlzt > 0) {
html += '
' + o.shlmc + ' ' + o.shsj + ' ';
}
else if (o.shsj != "" && o.shlzt < 0) {
sfjs = false;
var fkli = "";
if (o.shyj && o.shyj != "") {
fkli = " (理由:" + o.shyj + ")";
}
html += '
' + o.shlmc + fkli + ' ' + o.shsj + ' ';
} else {
if (shz && sfjs) {
html += '
' + o.shlmc + ' 审核中… ';
shz = false;
} else {
html += '
' + o.shlmc + ' 等待审核… ';
}
}
}
html += '
';
});
$("#step_sm").html(html);
}
/**
*审核流程展示条
*/
jQuery.getShlProcess = function (shjl, isrea) {
if (isrea) {
$.getShlReasonInfoxx(shjl);
} else {
$.getShlInfoxx(shjl);
}
}
/**
* 时间控件格式化
* @param { String } target 控件ID
* @param { String } datefromt 时间格式
* @return { String } date 时间
* @example inputEvents:$.myPluginWdatePickerDateFromt('wcnd','yyyy-MM-dd')"
*/
jQuery.myPluginWdatePickerDateFromt = function (target, datefromt) {
if (!datefromt) datefromt = "yyyy-MM-dd HH:mm:ss";
var handle = $.extend({}, $.fn.textbox.defaults.inputEvents, { click: function () {
WdatePicker({
onpicking: function (dp) {
$("#" + target).textbox('setValue', dp.cal.getNewDateStr());
},
dateFmt: datefromt,
onclearing: function (dp) {
$("#" + target).textbox('setValue', '');
}
});
WdatePicker({
onpicking: function (dp) {
$("#" + target).textbox('setValue', dp.cal.getNewDateStr());
},
dateFmt: datefromt,
onclearing: function (dp) {
$("#" + target).textbox('setValue', '');
}
});
}
});
return handle;
}
/**
* 函数管道,管道是将一个函数的输出直接发送到另一个函数
*/
jQuery.myPluginPipeLine = function () {
var args = Array.from(arguments);
return function (val) {
return args.reduce(function (result, func) {
return func(result);
}, val);
}
}
/**
* 柯里化函数,把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术
*/
jQuery.myPluginCurrying = function (func) {
var args = Array.prototype.slice.call(arguments, 1); //得到从下标1开始的参数
var that = this;
return function () {
var curArgs = Array.from(arguments); //当前调用的参数
var totalArgs = args.concat(curArgs);
if (totalArgs.length >= func.length) {
return func.apply(null, totalArgs); //参数数量够了
} else {
//参数数量不够
totalArgs.unshift(func);
return $.myPluginCurrying.apply(that, totalArgs);
}
}
}
var _layerWidth = ($(window).width() + 100) + "px";
var _layerHeight = ($(window).height() + 80) + "px";
/**
* 获取datagrid的索引
*/
jQuery.myPluginRowIndex = function (target) {
var tr = $(target).closest('tr.datagrid-row');
return parseInt(tr.attr('datagrid-row-index'));
}
/**
*弹出框信息,传入最少3个参数
*@param { String } _target this获取的元素
*@param { String } _dg
*@param { String } _url
*@param { String } _title
*@param { Function } _fn
*@param { Object } _objdata
*@example $.myPluginOpenLayer(target, 'dg', url, '查看', info, research);$.myPluginOpenLayer(target, 'dg', url, '查看');$.myPluginOpenLayer('dg', url, '查看');
*/
jQuery.myPluginOpenLayer = function () {
var args = Array.from(arguments);
var _argsLength = args.length;
if (_argsLength < 3) {
throw new Error("At least three input parameters");
}
var _target = args[0];
var _dg = args[1];
var _url = args[2];
var _title = args[3];
var _fn = args[_argsLength - 1];
var _objdata = args[_argsLength - 2];
if (typeof _target !== 'object') {
_target = null;
_dg = args[0];
_url = args[1];
_title = args[2];
}
var _parameter = "";
if (typeof _objdata === 'object' && _objdata !== null) {
if (_target) {
var _thisindex = $.myPluginRowIndex(_target);
var _row = $("#" + _dg).datagrid('getRows')[_thisindex];
$.each(_objdata, function (kk, vv) {
_parameter += ((vv == "" ? (kk + "=" + _row[kk]) : (kk + "=" + vv))) + "&";
});
} else {
$.each(_objdata, function (kk, vv) {
_parameter += (kk + "=" + vv + "&");
});
}
}
if (_parameter != "") {
_parameter = _parameter.slice(0, -1);
_url = _url + "?" + _parameter;
}
parent.layer.open({
type: 2,
title: _title,
area: [_layerWidth, _layerHeight],
content: [_url],
resize: true,
maxmin: true,
shadeClose: false,
closeBtn: 1,
end: function () {
if (typeof _fn === "function") {
_fn();
}
}
});
}
/**
*函数重载
*@example var getuser = $.createOverload();
*getuser.addImpl('number', function (number) { console.log('number'); });
*getuser.addImpl('string', 'string', function (naem, sex) { console.log('two'); });
*/
jQuery.createOverload = function () {
var callmap = new Map();
function overload() {
var args = Array.from(arguments);
var key = args.map(function (arg) {
return typeof arg;
}).join(',');
var fn = callmap.get(key);
if (fn) {
return fn.apply(this, args);
} else {
throw new Error("no matching function");
}
}
overload.addImpl = function () {
var args = Array.from(arguments);
var fn = args.pop();
if (typeof fn !== 'function') {
return;
}
var types = args;
callmap.set(types.join(','), fn);
}
return overload;
}
/**
*是否JSON字符
*@param { String } str
*@example $.isJsonCharacter(str)
*/
jQuery.isJsonCharacter = function (str) {
if (typeof str === 'string') {
try {
var obj = JSON.parse(str);
if (typeof obj === 'object' && obj) {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
}
/**
*Bind函数
*@param { String,Number,Object } this指向
@return { Function } function
*@example fn.myPluginBind('ctx',1,2);
*/
Function.prototype.myPluginBind = function (ctx) {
var args = Array.prototype.slice.call(arguments, 1);
var fn = this;
return function _fnBind() {
var restArgs = Array.prototype.slice.call(arguments);
var allArgs = args.concat(restArgs);
if (Object.getPrototypeOf(this) === _fnBind.prototype) {
var obj = {};
Object.setPrototypeOf(obj, fn.prototype);
fn.apply(obj, allArgs);
return obj;
} else {
return fn.apply(ctx, allArgs);
}
}
}
/**
*Call函数
*@param { String,Number,Object } this指向
@return { String,Number,Object } String,Number,Object
*@example fn.myPluginCall('ctx',1,2);
*/
Function.prototype.myPluginCall = function (ctx) {
var args = Array.prototype.slice.call(arguments, 1);
ctx = (ctx === undefined || ctx === null ? globalThis : Object(ctx));
var fn = this;
var key = Symbol('temp');
Object.defineProperty(ctx, key, {
enumerable: false,
value: fn
});
var list = [];
for (var i = 0; i < args.length; i++) {
list[i] = 'args[' + i + ']';
}
var ret = eval('ctx[key](' + list.join(',') + ')');
delete ctx[key];
return ret;
}
/**
*生成[min,max]范围内的随机整数(大于等于min,小于等于max)
*@param { Number } min随机数区间最小值
*@param { Number } max随机数区间最大值
@return { Number } Number随机整数
*@example $.getRandomNumber(1, 3);
*/
jQuery.getRandomNumber = function (min, max) {
return Math.floor(Math.random() * (max + 1 - min) + min);
}
var _progressNumInfo = 0;
var _progressBarIdInfo = "_progressBarBulletbox";
var _timeOutProgress = null;
/**
*加载进度条显示
*@param { String } barpageload 是否长条进度条
*@param { String } progressBarId 长条进度条对应的id
*/
jQuery.ajaxDownFakeProgress = function (barpageload, progressBarId) {
_progressNumInfo = parseInt(_progressNumInfo) + $.getRandomNumber(1, 5);
_progressNumInfo = _progressNumInfo >= 99 ? 99 : _progressNumInfo;
barpageload = barpageload || false;
progressBarId = progressBarId || _progressBarIdInfo;
if (barpageload === true) {
$('#' + progressBarId).progressbar('setValue', _progressNumInfo);
} else {
_changeFileProcess(_progressNumInfo);
}
if (_progressNumInfo >= 99) {
window.clearTimeout(_timeOutProgress);
_progressNumInfo = 0;
_timeOutProgress = null;
return false;
}
_timeOutProgress = window.setTimeout("$.ajaxDownFakeProgress(" + barpageload + ")", 100);
}
/**
*加载进度条显示
*@param { Number } proNum 进度
*@param { String } barpageload 是否长条进度条
*@param { String } progressBarId 长条进度条对应的id
*/
jQuery.changeFileBarOrCirProcess = function (proNum, barpageload, progressBarId) {
proNum = proNum || 100;
barpageload = barpageload || false;
progressBarId = progressBarId || _progressBarIdInfo;
if (barpageload === true) {
$('#' + progressBarId).progressbar('setValue', proNum);
} else {
_changeFileProcess(proNum);
}
}
/**
*下载文件
*@param { Boolean } barpageload 是否长条进度
*@param { Boolean } fakeprogress 是否加进度条
*@param { String } progressBarId 长条进度条对应的id
*@param { String } url 下载地址
*@param { String } filename 附件名称
*@param { Object } data 参数 仅支持Object对象
*@param { Function } success 成功后处理事件,非必填
*@example $.ajaxDownFile({ url: 'xxxx', data: { gndm: 'gndm' }, filename: "xx.zip", success: function () { xx(); } });
*/
jQuery.ajaxDownFile = function (option) {
if (typeof option === 'undefined') throw new Error("Please pass parameters");
if (typeof option.url === 'undefined') throw new Error("Please pass parameters url");
if (typeof option.fakeprogress === 'undefined') { option.fakeprogress = false; }
option.barpageload = option.barpageload || false;
option.progressBarId = option.progressBarId || _progressBarIdInfo;
if (option.barpageload === true) { pageLoadBarDownFile(); } else { pageLoadDownFile(); }
if (option.fakeprogress === true) { $.ajaxDownFakeProgress(option.barpageload); }
var xhr = new XMLHttpRequest();
xhr.addEventListener('progress', getDownProgressHandler, false);
xhr.open('POST', option.url, true);
xhr.responseType = "blob";
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var filename = '';
if (typeof option.filename === 'undefined') {
var reqHeader = xhr.getResponseHeader('Content-Disposition');
if (reqHeader) {
var reqHeaderFileName = decodeURI(reqHeader);
option.filename = reqHeaderFileName.split(';')[1].split('filename=')[1];
}
}
filename = option.filename;
if (typeof window.chrome !== 'undefined') {
var a_link = document.createElement('a');
var url = window.URL.createObjectURL(xhr.response);
a_link.href = url;
a_link.download = filename;
a_link.click();
window.URL.revokeObjectURL(url);
a_link = null;
}
else if (typeof window.navigator.msSaveBlob !== 'undefined') {
var blob = new Blob([xhr.response], { type: 'application/force-download' });
window.navigator.msSaveBlob(blob, filename);
} else {
var file = new File([xhr.response], filename, { type: 'application/force-download' });
window.open(URL.createObjectURL(file));
}
} else {
option.error && option.error(xhr, xhr.statusText);
}
dispageload();
}
}
xhr.onerror = function (event) {
option.error && option.error(xhr, xhr.statusText, event.message);
};
function getDownProgressHandler(event, position, total, percentComplete) {
if (event.lengthComputable) {
var _proNum = Math.round((event.loaded / event.total) * 100);
if (option.fakeprogress === false) {
$.changeFileBarOrCirProcess(_proNum, option.barpageload, option.progressBarId);
}
if (_proNum >= 100) {
$.changeFileBarOrCirProcess(_proNum, option.barpageload, option.progressBarId);
if (option.fakeprogress === true) {
window.clearTimeout(_timeOutProgress);
_progressNumInfo = 0;
_timeOutProgress = null;
}
if (typeof option.success === 'function') {
option.success();
}
}
} else {
dispageload();
}
}
var datastr = '';
if (typeof option.data !== 'undefined') {
datastr = JSON.stringify(option.data);
}
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(datastr);
}
/**
*批量下载文件
*@param { Array } array 待下载数据
*@param { String } data 参数,需包含属性gndm
*@param { String } dg datagrid的id
*@param { String } zipfileurl 请求压缩文件url
*@param { String } downfileurl 请求下载zip文件url
*@param { String } delfileurl 请求删除临时文件url
*@param { String } zipname 下载文件名称
*@param { String } field 失败显示字段名称
*@example $.ajaxRecursionDownFile({ array: infolist, data: { "gndm": gndm }, datagrid: "dg", zipfileurl: "url1", downfileurl: "url2", delfileurl: "url3", zipname: "附件.zip", field: "xh" });
*/
jQuery.ajaxRecursionDownFile = function (option) {
if (typeof option === 'undefined') throw new Error("Please pass parameters");
if (typeof option.field === 'undefined' || option.field === null) option.field = "xh";
if (typeof option.array === 'undefined') throw new Error("Please pass parameters array");
if (typeof option.data === 'undefined') throw new Error("Please pass parameters data");
if (option.data.hasOwnProperty('gndm') === false) throw new Error("Please pass parameters data->gndm");
if (typeof option.zipfileurl === 'undefined') throw new Error("Please pass parameters zipfileurl");
if (typeof option.downfileurl === 'undefined') throw new Error("Please pass parameters downfileurl");
if (typeof option.delfileurl === 'undefined') throw new Error("Please pass parameters delfileurl");
pageLoadDown();
var _currentIndex = 0;
var _successIndex = 0;
var _faileXhInfo = null;
var _thisdata = $.deepClone(option.data);
function _recursionDownFiles() {
if (_currentIndex >= option.array.length) {
var msgxx = _faileXhInfo || "无。";
var msg = "压缩成功:" + _successIndex.toString() + "个。失败数据:" + msgxx + "
点击【确定】按钮下载压缩文件。";
$.messager.alert('提示', msg, 'infoxx', function () {
$.ajaxDownFile({ url: option.downfileurl, data: _thisdata, filename: option.zipname, success: function () {
var xhr = new XMLHttpRequest();
xhr.open('POST', option.delfileurl, true);
xhr.send();
}
});
});
$('.panel-tool-close').hide();
if (option.datagrid) {
$('#' + option.datagrid).datagrid('clearChecked');
}
dispageload();
return false;
}
var jsonObject = JSON.stringify(option.array[_currentIndex]);
var _objdata = option.data;
_objdata.json = jsonObject;
_objdata.currentIndex = _currentIndex;
$.ajax({
type: 'post',
url: option.zipfileurl,
dataType: "json",
data: _objdata,
async: true,
cache: true,
success: function (data) {
if (data.zt == "1") {
_successIndex++;
} else {
_faileXhInfo += option.array[_currentIndex][option.field] + ";";
}
_currentIndex++;
_changeProcess(Math.round((_currentIndex / option.array.length) * 100));
_recursionDownFiles(option.array, option.data.gndm);
},
error: function (xhr) {
_currentIndex++;
_faileXhInfo += option.array[_currentIndex][option.field] + ";";
_changeProcess(Math.round((_currentIndex / option.array.length) * 100));
_recursionDownFiles(option.array, option.data.gndm);
}
});
}
_recursionDownFiles();
}
你可能感兴趣的:(javascript,前端,html)
Long类型前后端数据不一致
igotyback
前端
响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问
swagger访问路径
igotyback
swagger
Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip
html 中如何使用 uniapp 的部分方法
某公司摸鱼前端
html uni-app 前端
示例代码:Documentconsole.log(window);效果展示:好了,现在就可以uni.使用相关的方法了
四章-32-点要素的聚合
彩云飘过
本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers5.3.xapi。源码见1032.html,对应的官网示例https://openlayers.org/en/latest/examples/cluster.htmlhttps://openlayers.org/en/latest/examples/earthquake-clusters.
DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理
STU学生网页设计
网页设计 期末网页作业 html静态网页 html5期末大作业 网页设计 web大作业
️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程
【加密社】Solidity 中的事件机制及其应用
加密社
闲侃 区块链 智能合约 区块链
加密社引言在Solidity合约开发过程中,事件(Events)是一种非常重要的机制。它们不仅能够让开发者记录智能合约的重要状态变更,还能够让外部系统(如前端应用)监听这些状态的变化。本文将详细介绍Solidity中的事件机制以及如何利用不同的手段来触发、监听和获取这些事件。事件存储的地方当我们在Solidity合约中使用emit关键字触发事件时,该事件会被记录在区块链的交易收据中。具体而言,事件
关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript
二挡起步
web前端期末大作业 javascript html css 旅游 风景
⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip
HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动
二挡起步
web前端期末大作业 web设计网页规划与设计 html css javascript dreamweaver 前端
Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线
node.js学习
小猿L
node.js node.js 学习 vim
node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行
springboot+vue项目实战一-创建SpringBoot简单项目
苹果酱0567
面试题汇总与解析 spring boot 后端 java 中间件 开发语言
这段时间抽空给女朋友搭建一个个人博客,想着记录一下建站的过程,就当做笔记吧。虽然复制zjblog只要一个小时就可以搞定一个网站,或者用cms系统,三四个小时就可以做出一个前后台都有的网站,而且想做成啥样也都行。但是就是要从新做,自己做的意义不一样,更何况,俺就是专门干这个的,嘿嘿嘿要做一个网站,而且从零开始,首先呢就是技术选型了,经过一番思量决定选择-SpringBoot做后端,前端使用Vue做一
JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
跳房子的前端
前端面试 javascript 开发语言 ecmascript
在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是用于复制对象或数组的两种不同方法。了解它们的区别和应用场景对于避免潜在的bugs和高效地处理数据非常重要。以下是对深拷贝和浅拷贝的详细解释,包括它们的概念、用途、优缺点以及实现方式。1.浅拷贝(ShallowCopy)概念定义:浅拷贝是指创建一个新的对象或数组,其中包含了原对象或数组的基本数据类型的值和对引用数
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
00. 这里整理了最全的爬虫框架(Java + Python)
有一只柴犬
爬虫系列 爬虫 java python
目录1、前言2、什么是网络爬虫3、常见的爬虫框架3.1、java框架3.1.1、WebMagic3.1.2、Jsoup3.1.3、HttpClient3.1.4、Crawler4j3.1.5、HtmlUnit3.1.6、Selenium3.2、Python框架3.2.1、Scrapy3.2.2、BeautifulSoup+Requests3.2.3、Selenium3.2.4、PyQuery3.2
详解:如何设计出健壮的秒杀系统?
夜空_2cd3
作者:Yrion博客园:cnblogs.com/wyq178/p/11261711.html前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:image目录一:****秒杀系统应该考虑的问题二:****秒杀系统的设计和技术方案三:*
JavaScript `Map` 和 `WeakMap`详细解释
跳房子的前端
JavaScript 原生方法 javascript 前端 开发语言
在JavaScript中,Map和WeakMap都是用于存储键值对的数据结构,但它们有一些关键的不同之处。MapMap是一种可以存储任意类型的键值对的集合。它保持了键值对的插入顺序,并且可以通过键快速查找对应的值。Map提供了一些非常有用的方法和属性来操作这些数据对:set(key,value):将一个键值对添加到Map中。如果键已经存在,则更新其对应的值。get(key):获取指定键的值。如果键
最简单将静态网页挂载到服务器上(不用nginx)
全能全知者
服务器 nginx 运维 前端 html 笔记
最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl
补充元象二面
Redstone Monstrosity
前端 面试
1.请尽可能详细地说明,防抖和节流的区别,应用场景?你的回答中不要写出示例代码。防抖(Debounce)和节流(Throttle)是两种常用的前端性能优化技术,它们的主要区别在于如何处理高频事件的触发。以下是防抖和节流的区别和应用场景的详细说明:防抖和节流的定义防抖:在一段时间内,多次执行变为只执行最后一次。防抖的原理是,当事件被触发后,设置一个延迟定时器。如果在这个延迟时间内事件再次被触发,则重
微信小程序开发注意事项
jun778895
微信小程序 小程序
微信小程序开发是一个融合了前端开发、用户体验设计、后端服务(可选)以及微信小程序平台特性的综合性项目。这里,我将详细介绍一个典型的小程序开发项目的全过程,包括项目规划、设计、开发、测试及部署上线等各个环节,并尽量使内容达到或超过2000字的要求。一、项目规划1.1项目背景与目标假设我们要开发一个名为“智慧校园助手”的微信小程序,旨在为学生提供一站式校园生活服务,包括课程表查询、图书馆座位预约、食堂
切换淘宝最新npm镜像源是
hai40587
npm 前端 node.js
切换淘宝最新npm镜像源是一个相对简单的过程,但首先需要明确当前淘宝npm镜像源的状态和最新的镜像地址。由于网络环境和服务更新,镜像源的具体地址可能会发生变化,因此,我将基于当前可获取的信息,提供一个通用的切换步骤,并附上最新的镜像地址(截至回答时)。一、了解npm镜像源npm(NodePackageManager)是JavaScript的包管理器,用于安装、更新和管理项目依赖。由于npm官方仓库
字节二面
Redstone Monstrosity
前端 面试
1.假设你是正在面试前端开发工程师的候选人,面试官让你详细说出你上一段实习过程的收获和感悟。在上一段实习过程中,我获得了宝贵的实践经验和深刻的行业洞察,以下是我的主要收获和感悟:一、专业技能提升框架应用熟练度:通过实际项目,我深入掌握了React、Vue等前端框架的使用,不仅提升了编码效率,还学会了如何根据项目需求选择合适的框架。问题解决能力:在实习期间,我遇到了许多预料之外的技术难题。通过查阅文
斟一小组鸡血视频
和自己一起成长
http://m.v.qq.com/play/play.html?coverid=&vid=c0518henl2a&ptag=2_6.0.0.14297_copy有一种努力叫做靠自己http://m.v.qq.com/play/play.html?coverid=&vid=i0547o426g4&ptag=2_6.0.0.14297_copy世界最励志短片https://v.qq.com/x/pa
前端代码上传文件
余生逆风飞翔
前端 javascript 开发语言
点击上传文件import{ElNotification}from'element-plus'import{API_CONFIG}from'../config/index.js'import{UploadFilled}from'@element-plus/icons-vue'import{reactive}from'vue'import{BASE_URL}from'../config/index'i
Dockerfile命令详解之 FROM
清风怎不知意
容器化 java 前端 javascript
许多同学不知道Dockerfile应该如何写,不清楚Dockerfile中的指令分别有什么意义,能达到什么样的目的,接下来我将在容器化专栏中详细的为大家解释每一个指令的含义以及用法。专栏订阅传送门https://blog.csdn.net/qq_38220908/category_11989778.html指令不区分大小写。但是,按照惯例,它们应该是大写的,以便更容易地将它们与参数区分开来。(引用
《HTML 与 CSS—— 响应式设计》
陈在天box
html css 前端
一、引言在当今数字化时代,人们使用各种不同的设备访问互联网,包括智能手机、平板电脑、笔记本电脑和台式机等。为了确保网站在不同设备上都能提供良好的用户体验,响应式设计成为了网页开发的关键。HTML和CSS作为网页开发的基础技术,在实现响应式设计方面发挥着重要作用。本文将深入探讨HTML与CSS中的响应式设计原理、方法和最佳实践。二、响应式设计的概念与重要性(一)概念响应式设计是一种网页设计方法,旨在
【C语言】- 自定义类型:结构体、枚举、联合
Cavalier_01
C语言
【C语言】:操作符(https://mp.csdn.net/editor/html/115218055)数据类型(https://mp.csdn.net/editor/html/115219664)自定义类型:结构体、枚举、联合(https://mp.csdn.net/editor/html/115373785)变量、常量(https://mp.csdn.net/editor/html/11523
uniapp实现动态标记效果详细步骤【前端开发】
2401_85123349
uni-app
第二个点在于实现将已经被用户标记的内容在下一次获取后刷新它的状态为已标记。这是什么意思呢?比如说上面gif图中的这些人物对象,有一些已被该用户添加为关心,那么当用户下一次进入该页面时,这些已经被添加关心的对象需要以“红心”状态显现出来。这个点的难度还不算大,只需要在每一次获取后端的内容后对标记对象进行状态更新即可。II.动态标记效果实现思路和步骤首先,整体的思路是利用动态类名对不同的元素进行选择。
高性能javascript--算法和流程控制
海淀萌狗
-for,while和do-while性能相当-避免使用for-in循环,==除非遍历一个属性量未知的对象==es5:for-in遍历的对象便不局限于数组,还可以遍历对象。原因:for-in每次迭代操作会同时搜索实例或者原型属性,for-in循环的每次迭代都会产生更多开销,因此要比其他循环类型慢,一般速度为其他类型循环的1/7。因此,除非明确需要迭代一个属性数量未知的对象,否则应避免使用for-i
html+css网页设计 旅游网站首页1个页面
html+css+js网页设计
html css 旅游
html+css网页设计旅游网站首页1个页面网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等任意html编辑软件进行运行及修改编辑等操作)。获取源码1,访问该网站https://download.csdn.net/download/qq_42431718/897527112,点击
spring mvc @RequestBody String类型参数
zoyation
spring-mvc spring mvc
通过如下配置:text/html;charset=UTF-8application/json;charset=UTF-8在springmvc的Controller层使用@RequestBody接收Content-Type为application/json的数据时,默认支持Map方式和对象方式参数@RequestMapping(value="/{code}/saveUser",method=Requ
ubuntu安装opencv最快的方法
Derek重名了
最快方法,当然不能太多文字$sudoapt-getinstallpython-opencv借助python就可以把ubuntu的opencv环境搞起来,非常快非常容易参考:https://docs.opencv.org/trunk/d2/de6/tutorial_py_setup_in_ubuntu.html
Java开发中,spring mvc 的线程怎么调用?
小麦麦子
spring mvc
今天逛知乎,看到最近很多人都在问spring mvc 的线程http://www.maiziedu.com/course/java/ 的启动问题,觉得挺有意思的,那哥们儿问的也听仔细,下面的回答也很详尽,分享出来,希望遇对遇到类似问题的Java开发程序猿有所帮助。
问题:
在用spring mvc架构的网站上,设一线程在虚拟机启动时运行,线程里有一全局
maven依赖范围
bitcarter
maven
1.test 测试的时候才会依赖,编译和打包不依赖,如junit不被打包
2.compile 只有编译和打包时才会依赖
3.provided 编译和测试的时候依赖,打包不依赖,如:tomcat的一些公用jar包
4.runtime 运行时依赖,编译不依赖
5.默认compile
依赖范围compile是支持传递的,test不支持传递
1.传递的意思是项目A,引用
Jaxb org.xml.sax.saxparseexception : premature end of file
darrenzhu
xml premature JAXB
如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误:
org.xml.sax.saxparseexception : premature end of file
很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new In
CSS Specificity
周凡杨
html 权重 Specificity css
有时候对于页面元素设置了样式,可为什么页面的显示没有匹配上呢? because specificity
CSS 的选择符是有权重的,当不同的选择符的样式设置有冲突时,浏览器会采用权重高的选择符设置的样式。
规则:
HTML标签的权重是1
Class 的权重是10
Id 的权重是100
java与servlet
g21121
servlet
servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。
下面是java官方网站上对servlet的介绍: java官网对于servlet的解释 写道
Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending and enha
eclipse中安装maven插件
510888780
eclipse maven
1.首先去官网下载 Maven:
http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.2.3-bin.tar.gz
下载完成之后将其解压,
我将解压后的文件夹:apache-maven-3.2.3,
并将它放在 D:\tools目录下,
即 maven 最终的路径是:D:\tools\apache-mave
jpa@OneToOne关联关系
布衣凌宇
jpa
Nruser里的pruserid关联到Pruser的主键id,实现对一个表的增删改,另一个表的数据随之增删改。
Nruser实体类
//*****************************************************************
@Entity
@Table(name="nruser")
@DynamicInsert @Dynam
我的spring学习笔记11-Spring中关于声明式事务的配置
aijuans
spring 事务 配置
这两天学到事务管理这一块,结合到之前的terasoluna框架,觉得书本上讲的还是简单阿。我就把我从书本上学到的再结合实际的项目以及网上看到的一些内容,对声明式事务管理做个整理吧。我看得Spring in Action第二版中只提到了用TransactionProxyFactoryBean和<tx:advice/>,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中
java 动态代理简单实现
antlove
java handler proxy dynamic service
dynamicproxy.service.HelloService
package dynamicproxy.service;
public interface HelloService {
public void sayHello();
}
dynamicproxy.service.impl.HelloServiceImpl
package dynamicp
JDBC连接数据库
百合不是茶
JDBC编程 JAVA操作oracle数据库
如果我们要想连接oracle公司的数据库,就要首先下载oralce公司的驱动程序,将这个驱动程序的jar包导入到我们工程中;
JDBC链接数据库的代码和固定写法;
1,加载oracle数据库的驱动;
&nb
单例模式中的多线程分析
bijian1013
java thread 多线程 java多线程
谈到单例模式,我们立马会想到饿汉式和懒汉式加载,所谓饿汉式就是在创建类时就创建好了实例,懒汉式在获取实例时才去创建实例,即延迟加载。
饿汉式:
package com.bijian.study;
public class Singleton {
private Singleton() {
}
// 注意这是private 只供内部调用
private static
javascript读取和修改原型特别需要注意原型的读写不具有对等性
bijian1013
JavaScript prototype
对于从原型对象继承而来的成员,其读和写具有内在的不对等性。比如有一个对象A,假设它的原型对象是B,B的原型对象是null。如果我们需要读取A对象的name属性值,那么JS会优先在A中查找,如果找到了name属性那么就返回;如果A中没有name属性,那么就到原型B中查找name,如果找到了就返回;如果原型B中也没有
【持久化框架MyBatis3六】MyBatis3集成第三方DataSource
bit1129
dataSource
MyBatis内置了数据源的支持,如:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<data
我程序中用到的urldecode和base64decode,MD5
bitcarter
c MD5 base64decode urldecode
这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码:
string Base64Decode(const char* Data,int DataByte,int& OutByte)
{
//解码表
const char DecodeTable[] =
{
0, 0, 0, 0, 0, 0
腾讯资深运维专家周小军:QQ与微信架构的惊天秘密
ronin47
社交领域一直是互联网创业的大热门,从PC到移动端,从OICQ、MSN到QQ。到了移动互联网时代,社交领域应用开始彻底爆发,直奔黄金期。腾讯在过去几年里,社交平台更是火到爆,QQ和微信坐拥几亿的粉丝,QQ空间和朋友圈各种刷屏,写心得,晒照片,秀视频,那么谁来为企鹅保驾护航呢?支撑QQ和微信海量数据背后的架构又有哪些惊天内幕呢?本期大讲堂的内容来自今年2月份ChinaUnix对腾讯社交网络运营服务中心
java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素
bylijinnan
java
public class MinOfShiftedArray {
/**
* Q69 旋转数组的最小元素
* 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
* 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
*/
publ
看博客,应该是有方向的
Cb123456
反省 看博客
看博客,应该是有方向的:
我现在就复习以前的,在补补以前不会的,现在还不会的,同时完善完善项目,也看看别人的博客.
我刚突然想到的:
1.应该看计算机组成原理,数据结构,一些算法,还有关于android,java的。
2.对于我,也快大四了,看一些职业规划的,以及一些学习的经验,看看别人的工作总结的.
为什么要写
[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖
comsci
开源项目
为什么这样说呢? 因为科学和技术的发展有时候需要一个平缓和长期的积累过程,但是行政和商业体系本身充满各种不稳定性和不确定性,如果你希望长期从事某个科研项目,但是却又必须依赖于某种行政和商业体系,那其中的过程必定充满各种风险。。。
所以,为避免这种不确定性风险,我
一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )
cwqcwqmax9
sql
见 http://www.itpub.net/forum.php?mod=viewthread&tid=239011
Web翻页优化实例
提交时间: 2004-6-18 15:37:49 回复 发消息
环境:
Linux ve
Hibernat and Ibatis
dashuaifu
Hibernate ibatis
Hibernate VS iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05。它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS 是另外一种优秀的O/R mapping框架,当前版本是2.0。目前属于apache的一个子项目了。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mappi
备份MYSQL脚本
dcj3sjt126com
mysql
#!/bin/sh
# this shell to backup mysql
#
[email protected] (QQ:1413161683 DuChengJiu)
_dbDir=/var/lib/mysql/
_today=`date +%w`
_bakDir=/usr/backup/$_today
[ ! -d $_bakDir ] && mkdir -p
iOS第三方开源库的吐槽和备忘
dcj3sjt126com
ios
转自
ibireme的博客 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。 首先整理了一份
Github上排名靠
html wlwmanifest.xml
eoems
html xml
所谓优化wp_head()就是把从wp_head中移除不需要元素,同时也可以加快速度。
步骤:
加入到function.php
remove_action('wp_head', 'wp_generator');
//wp-generator移除wordpress的版本号,本身blog的版本号没什么意义,但是如果让恶意玩家看到,可能会用官网公布的漏洞攻击blog
remov
浅谈Java定时器发展
hacksin
java 并发 timer 定时器
java在jdk1.3中推出了定时器类Timer,而后在jdk1.5后由Dou Lea从新开发出了支持多线程的ScheduleThreadPoolExecutor,从后者的表现来看,可以考虑完全替代Timer了。
Timer与ScheduleThreadPoolExecutor对比:
1.
Timer始于jdk1.3,其原理是利用一个TimerTask数组当作队列
移动端页面侧边导航滑入效果
ini
jquery Web html5 css javascirpt
效果体验:http://hovertree.com/texiao/mobile/2.htm可以使用移动设备浏览器查看效果。效果使用到jquery-2.1.4.min.js,该版本的jQuery库是用于支持HTML5的浏览器上,不再兼容IE8以前的浏览器,现在移动端浏览器一般都支持HTML5,所以使用该jQuery没问题。HTML文件代码:
<!DOCTYPE html>
<h
AspectJ+Javasist记录日志
kane_xie
aspectj javasist
在项目中碰到这样一个需求,对一个服务类的每一个方法,在方法开始和结束的时候分别记录一条日志,内容包括方法名,参数名+参数值以及方法执行的时间。
@Override
public String get(String key) {
// long start = System.currentTimeMillis();
// System.out.println("Be
redis学习笔记
MJC410621
redis NoSQL
1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。
1,处理超大量的数据
2,运行在便宜的PC服务器集群上,
3,击碎了性能瓶颈。
1)对数据高并发读写。
2)对海量数据的高效率存储和访问。
3)对数据的高扩展性和高可用性。
redis支持的类型:
Sring 类型
set name lijie
get name lijie
set na
使用redis实现分布式锁
qifeifei
在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:
public Long setnx(final byte[] key, final byte[] value) {
checkIsInMulti();
client.setnx(key, value);
ret
BI并非万能,中层业务管理报表要另辟蹊径
张老师的菜
大数据 BI 商业智能 信息化
BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP、CRM、SCM、进销存、HER、OA等。
BI系统不同于传统的管理信息系统,他号称是一个整体应用的解决方案,是融入管理思想的强大系统:有着系统整体的设计思想,支持对所有
安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题
wudixiaotie
function
1.在~/.bashrc最后加入
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
2.重新启动terminal输入:
rvm use ruby-2.2.1 --default
把当前安装的ruby版本设为默