try {
|
if (!config) {
|
config = window.top.config
|
}
|
} catch(e) {
|
if (window.top.config) {
|
config = window.top.config
|
}
|
}
|
|
baseUrl = config.url_root;
|
worderUrl = config.url_worder;
|
|
|
uploadAxios = axios.create(
|
{
|
timeout: 60000,
|
headers:{
|
|
}
|
|
});
|
|
commonAxios = axios.create({
|
timeout: 60000,
|
// withCredentials: true,
|
|
headers: {
|
'Content-Type': 'application/json',
|
},
|
transformRequest: [function (data) {
|
function dateFormat(date, fmt) {
|
if (null == date || undefined == date) return '';
|
var o = {
|
"M+": date.getMonth() + 1, //月份
|
"d+": date.getDate(), //日
|
"h+": date.getHours(), //小时
|
"m+": date.getMinutes(), //分
|
"s+": date.getSeconds(), //秒
|
"S": date.getMilliseconds() //毫秒
|
};
|
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
for (var k in o)
|
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
return fmt;
|
}
|
|
Date.prototype.toJSON = function () {
|
return dateFormat(this, 'yyyy-MM-dd')
|
}
|
data = JSON.stringify(data)
|
return data
|
}]
|
|
});
|
|
Array.prototype.remove = function(val) {
|
var index = this.indexOf(val);
|
if (index > -1) {
|
this.splice(index, 1);
|
}
|
};
|
|
//简易编码生成器
|
function createCode (code) {
|
var code_ = "";
|
var date = new Date();
|
code_ = date.getTime();
|
|
if (code) {
|
code_ = code + "_" + code_;
|
}
|
return code_;
|
};
|
|
function createBaseCode (code) {
|
var code_ = "";
|
var date = new Date();
|
code_ = date.getTime();
|
|
if (code) {
|
code_ = code + code_;
|
}
|
return code_;
|
};
|
|
function createDateCode (code) {
|
var code_ = "";
|
//日期转为单号
|
var day = new Date();
|
var Year = 0;
|
var Month = 0;
|
var Day = 0;
|
Year = day.getFullYear();
|
Month = day.getMonth() + 1;
|
Day = day.getDate();
|
code_ += Year;
|
if (Month >= 10) {
|
code_ += Month;
|
}
|
else {
|
code_ += "0" + Month;
|
}
|
if (Day >= 10) {
|
code_ += Day;
|
}
|
else {
|
code_ += "0" + Day;
|
}
|
var random = 0;
|
do
|
random = Math.floor(Math.random()*10000);
|
while( random < 1000 );
|
|
if (code) {
|
code_ = code + code_+ random;
|
}
|
return code_;
|
}
|
|
function uniq(array){
|
var temp = []; //一个新的临时数组
|
for(var i = 0; i < array.length; i++){
|
if(temp.indexOf(array[i]) == -1){
|
temp.push(array[i]);
|
}
|
}
|
return temp;
|
};
|
|
function dateFormat(date, fmt) {
|
if (null == date || undefined == date) return '';
|
var o = {
|
"M+": date.getMonth() + 1, //月份
|
"d+": date.getDate(), //日
|
"h+": date.getHours(), //小时
|
"m+": date.getMinutes(), //分
|
"s+": date.getSeconds(), //秒
|
"S": date.getMilliseconds() //毫秒
|
};
|
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
for (var k in o)
|
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
return fmt;
|
};
|
|
function getUrl(vue, url, params, callback, error_callback) {
|
url = baseUrl + url;
|
let lastUrl = url.substring(url.lastIndexOf("/") + 1);
|
let user = localStorage.getItem('user');
|
let userInfo = JSON.parse(user);
|
if (!params) {
|
params = {
|
user_name: userInfo.name
|
}
|
}
|
else if(!params.user_name && userInfo) {
|
params.user_name = userInfo.name
|
}
|
|
commonAxios.get(url, {
|
params: params
|
}).then(data_ => {
|
if(typeof(data_.data) == "string"){
|
data_.data = JSON.parse(data_.data);
|
}
|
|
if (!data_.data.success) {
|
vue.$message({
|
showClose: true,
|
message: data_.data.errormessage,
|
type: 'error'
|
});
|
return;
|
}
|
var result = data_.data;
|
if (!isEncoded) {
|
var dataStr = JSON.stringify(data_.data);
|
// dataStr = percent2percent25(dataStr);
|
dataStr = decodeURI(dataStr);
|
var result = eval('(' + dataStr + ')');
|
}
|
|
if (callback) {
|
if (lastUrl && lastUrl.startsWith("get")) {
|
lastUrl = lastUrl.substring(3).toLowerCase();
|
if (result[lastUrl]) {
|
callback(result[lastUrl]);
|
} else {
|
callback(result);
|
}
|
} else {
|
callback(result);
|
}
|
}
|
})
|
.catch(error => {
|
vue.$message({
|
showClose: true,
|
message: url + ':请求出现错误:' + error,
|
type: 'error'
|
});
|
console.error(error);
|
if (error_callback) {
|
error_callback(error);
|
}
|
})
|
};
|
|
function uploadFile(vue, formData, callback, error_callback, ocrtype) {
|
if (ocrtype == "toDB") {
|
uploadFileToDB(vue, formData, callback, error_callback);
|
}
|
else if (ocrtype && ocrtype != "toDB") {//识别类型
|
uploadFileOCR(ocrtype, vue, formData, callback, error_callback);
|
}
|
else {//普通附件上传
|
var url_ = baseUrl +'root/file/uploadOneFile?token='+ Root.getToken();
|
|
uploadAxios.post(url_, formData).then(data_ => {
|
vue.$message({
|
showClose: true,
|
message: '上传成功!',
|
type: 'success'
|
});
|
if (callback) {
|
callback(data_);
|
}
|
}).catch(error => {
|
vue.$message({
|
showClose: true,
|
message: ':请求出现错误:' + error,
|
type: 'error'
|
});
|
console.error(error);
|
if (error_callback) {
|
error_callback(error);
|
}
|
});
|
}
|
}
|
|
function uploadFileOCR(ocrtype, vue, formData, callback, error_callback) {
|
if (ocrtype == "bizLicense") {//营业执照
|
|
}
|
var url_ = baseUrl +'root/ocr/' + ocrtype + "?token=" + Root.getToken();
|
|
uploadAxios.post(url_, formData).then(data_ => {
|
// vue.$message({
|
// showClose: true,
|
// message: '上传成功!',
|
// type: 'success'
|
// });
|
if (callback) {
|
callback(util.decode(data_));
|
}
|
}).catch(error => {
|
vue.$message({
|
showClose: true,
|
message: ':请求出现错误:' + error,
|
type: 'error'
|
});
|
console.error(error);
|
if (error_callback) {
|
error_callback(error);
|
}
|
});
|
}
|
|
function uploadFileToDB(vue, formData, callback, error_callback) {
|
// uploadType=so_sales_report&tempTable=temp_sales_report&operate_type=salesReport&token=admin&userid=11111&oneFile
|
|
var url_ = baseUrl + "root/upLoad/upLoadFile?token=" + Root.getToken() + "&uploadType=" + formData.uploadType + "&tempTable=" + formData.tempTable + "&operate_type=" + formData.operate_type + "&userid=" + formData.userid;
|
if (formData.position_id) {
|
url_ += "&position_id=" + formData.position_id;
|
}
|
uploadAxios.post(url_, formData.oneFile).then(data_ => {
|
// vue.$message({
|
// showClose: true,
|
// message: '上传成功!',
|
// type: 'success'
|
// });
|
if (callback) {
|
callback(util.decode(data_));
|
}
|
}).catch(error => {
|
vue.$message({
|
showClose: true,
|
message: ':请求出现错误:' + error,
|
type: 'error'
|
});
|
console.error(error);
|
if (error_callback) {
|
error_callback(error);
|
}
|
});
|
}
|
|
|
function uploadFileAnalysis(type, vue, formData, callback, error_callback) {
|
/* formData.type="textCommon"; */
|
if(type == "BizLicense") {
|
parse_ = "parseLicense";//"parseLicense";
|
}
|
else if(type == "BizYPLicence") {
|
parse_ = "parseInvoice";
|
}
|
else if(type == "BizGSP") {
|
parse_ = "parseGSP";
|
}
|
uploadAxios.post(worderUrl +'api/' + parse_, formData).then(data_ => {
|
// vue.$message({
|
// showClose: true,
|
// message: '上传成功!',
|
// type: 'success'
|
// });
|
if (callback) {
|
callback(data_);
|
}
|
}).catch(error => {
|
vue.$message({
|
showClose: true,
|
message: ':请求出现错误:' + error,
|
type: 'error'
|
});
|
console.error(error);
|
if (error_callback) {
|
error_callback(error);
|
}
|
});
|
}
|
|
function checkInvoice(row, callback) {
|
let formData = new FormData()
|
|
// var params = {
|
// "invoice_code": row.InvoiceCode, //发票代码。
|
// "invoice_num": row.InvoiceNum, // 发票号码
|
// "invoice_date": row.InvoiceDate, //开票日期。格式YYYYMMDD,例:20210101
|
// "invoice_type": row.InvoiceType, //发票种类 增值税专用发票:special_vat_invoice; 增值税电子专用发票:elec_special_vat_invoice;增值税普通发票:normal_invoice;增值税普通发票(电子):elec_normal_invoice
|
// "check_code": row.CheckCode, //校验码。填写发票校验码后6位
|
// "total_amount": row.TotalTax //发票金额。增值税专票、电子专票、货运专票、机动车销售发票填写不含税金额;
|
// }
|
// Server.call("worder/api/checkInvoice", params, function(result) {
|
// console.log(result);
|
// callback(result);
|
// });
|
|
|
formData.append("invoice_code", row.InvoiceCode);
|
formData.append("invoice_num", row.InvoiceNum);
|
formData.append("invoice_date", dateFormat(new Date(row.InvoiceDate), "yyyyMMdd"));
|
formData.append("invoice_type", row.InvoiceType);
|
formData.append("check_code", row.CheckCode.substring(row.CheckCode.length - 6, row.CheckCode.length));
|
formData.append("total_amount", row.TotalTax);
|
|
uploadAxios.post(worderUrl +'api/checkInvoice', formData).then(data_ => {
|
console.log(data_);
|
callback(data_);
|
|
}).catch(error => {
|
console.error(error);
|
});
|
}
|
|
function getDataList(me, dataName, params, callback, error_callback) {
|
params.dataName = dataName;
|
getUrl(me, "data/getEntitySet", params, callback, error_callback);
|
};
|
|
function getOneData(me, dataName, params, callback, error_callback) {
|
params.dataName = dataName;
|
getUrl(me, "data/getEntity", params, callback, error_callback);
|
};
|
|
function saveData(me, dataName, params, callback, error_callback) {
|
for(let one in params) {
|
let val = params[one];
|
if(val === "") {
|
params[one] = undefined;
|
}
|
}
|
params.dataName = dataName;
|
params.entity = clone(params);
|
getUrl(me, "data/saveEntity", params, callback, error_callback);
|
};
|
|
function delData(me, dataName, id, callback, error_callback) {
|
let params = {
|
id:id,
|
dataName: dataName
|
};
|
|
getUrl(me, "data/deleteEntity", params, callback, error_callback);
|
};
|
|
function percent2percent25(URI) {
|
if (URI.indexOf('%') > -1) {
|
return URI.replace(/%/g, '%25')
|
} else {
|
return URI;
|
}
|
}
|
|
function postUrl(vue, url, params, callback, error_callback) {
|
url = baseUrl + url;
|
let lastUrl = url.substring(url.lastIndexOf("/") + 1);
|
let formData = new FormData();
|
for(let name in params) {
|
let val = params[name];
|
formData.append(name, val);
|
}
|
axios.post(url, formData)
|
.then(data_ => {
|
if (!data_.data.success) {
|
vue.$message({
|
showClose: true,
|
message: data_.data.errormessage,
|
type: 'error'
|
});
|
return;
|
}
|
if (callback) {
|
if (lastUrl && lastUrl.startsWith("get")) {
|
lastUrl = lastUrl.substring(3).toLowerCase();
|
if (data_.data[lastUrl]) {
|
callback(data_.data[lastUrl]);
|
} else {
|
callback(data_.data.data);
|
}
|
} else {
|
callback(data_.data.data);
|
}
|
}
|
})
|
.catch(error => {
|
vue.$message({
|
showClose: true,
|
message: url + ':请求出现错误:' + error,
|
type: 'error'
|
});
|
console.info(error);
|
if (error_callback) {
|
error_callback(error);
|
}
|
})
|
};
|
|
|
function postCommonUrl(vue, url, params, callback, error_callback) {
|
url = baseUrl + url;
|
let lastUrl = url.substring(url.lastIndexOf("/") + 1);
|
|
commonAxios.post(url, params)
|
.then(data_ => {
|
if (!data_.data.success) {
|
vue.$message({
|
showClose: true,
|
message: data_.data.errormessage,
|
type: 'error'
|
});
|
return;
|
}
|
if (callback) {
|
if (lastUrl && lastUrl.startsWith("get")) {
|
lastUrl = lastUrl.substring(3).toLowerCase();
|
if (data_.data[lastUrl]) {
|
callback(data_.data[lastUrl]);
|
} else {
|
callback(data_.data.data);
|
}
|
} else {
|
callback(data_.data.data);
|
}
|
}
|
})
|
.catch(error => {
|
vue.$message({
|
showClose: true,
|
message: url + ':请求出现错误:' + error,
|
type: 'error'
|
});
|
console.info(error);
|
if (error_callback) {
|
error_callback(error);
|
}
|
})
|
};
|
|
function objectToURI(object) {
|
if (!object) {
|
return null;
|
}
|
|
if (typeof object == "String") {
|
return encodeURI(object);
|
}
|
|
var param = null;
|
for (var prop in object) {
|
if (object[prop]) {
|
if (param) {
|
param = param + "&" + prop + "=" + encodeURI(object[prop]);
|
} else {
|
param = prop + "=" + encodeURI(object[prop]);
|
}
|
}
|
}
|
|
return param;
|
}
|
|
function getGetParams(url) {
|
// var url = window.location.href;
|
const search = url.split('?')[1]
|
if (!search) {
|
return {}
|
}
|
return JSON.parse(
|
'{"' +
|
decodeURIComponent(search)
|
.replace(/"/g, '\\"')
|
.replace(/&/g, '","')
|
.replace(/=/g, '":"') +
|
'"}'
|
)
|
}
|
|
function getGetParamsByUrl(url) {
|
const search = url.split('?')[1]
|
var JSON_ = {};
|
|
if (!search) {
|
return {}
|
}
|
var search_list = search.split("&");
|
search_list.map(s=>{
|
var s_list = s.split("=");
|
if (s_list.length == 2) {
|
var s_list_k = s_list[0];//.replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"')
|
var s_list_val = s_list[1];//.replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"')
|
|
JSON_[s_list_k] = s_list_val;
|
}
|
});
|
|
return JSON_
|
}
|
|
function ArrayToTreeByNotParent(array_, name, parentId, parId, disabled_field, isencode, parentobj) {
|
if(!parentId) {
|
parentId = "parent_id";
|
}
|
|
if(!name) {
|
name = "label";
|
}
|
|
if(!parId) {
|
parId = "";
|
}
|
|
let obj = {};
|
let result = [];
|
let list = JSON.parse(JSON.stringify(array_));
|
list.map(el => {
|
obj[el.id] = el;
|
})
|
let openId = "";
|
for (let i = 0, len = list.length; i < len; i++) {
|
let parentId_ = list[i][parentId];
|
//如果存在判断只读字段,并且该字段有值则设置该节点为只读
|
if (disabled_field) {
|
if(list[i][disabled_field]) {
|
list[i].disabled = true;
|
}
|
}
|
|
//设置显示字段
|
if (isencode) {
|
list[i].label = decodeURI(encodeURI( list[i][name]));//数据如果带“%”的需要编码再解码,否则会存在格式错误
|
list[i].name = decodeURI(encodeURI( list[i][name]));
|
}
|
else {
|
list[i].label = decodeURI(list[i][name]);
|
list[i].name = decodeURI(list[i][name]);
|
}
|
if (parentId_ == parId || !parentId_ || parentId_ == "null") {
|
if(!obj[list[i].id].children) {
|
obj[list[i].id].children = null;
|
}
|
result.push(list[i]);
|
continue;
|
} else if (obj[parentId_]) {
|
if (!obj[parentId_].children) {
|
obj[parentId_].children = [];
|
}
|
obj[parentId_].children.push(list[i]);
|
}
|
else if(!obj[parentId_]) {
|
var item = {
|
children: []
|
};
|
for (var k in parentobj) {
|
item[k] = list[i][parentobj[k]];
|
}
|
obj[parentId_] = item;
|
result.push(obj[parentId_]);
|
obj[parentId_].children.push(list[i]);
|
}
|
}
|
return result;
|
}
|
|
|
function ArrayToTree(array_, name, parentId, parId, disabled_field, isencode) {
|
if(!parentId) {
|
parentId = "parent_id";
|
}
|
|
if(!name) {
|
name = "label";
|
}
|
|
if(!parId) {
|
parId = "";
|
}
|
|
let obj = {};
|
let result = [];
|
let list = JSON.parse(JSON.stringify(array_));
|
list.map(el => {
|
obj[el.id] = el;
|
})
|
let openId = "";
|
for (let i = 0, len = list.length; i < len; i++) {
|
let parentId_ = list[i][parentId];
|
//如果存在判断只读字段,并且该字段有值则设置该节点为只读
|
if (disabled_field) {
|
if(list[i][disabled_field]) {
|
list[i].disabled = true;
|
}
|
}
|
|
//设置显示字段
|
var node_r_ = "";
|
var names_ = name.split("|");
|
names_.map(n=>{
|
if (list[i][n] && !node_r_) {
|
node_r_ = list[i][n];
|
}
|
});
|
|
if (isencode) {
|
list[i].label = decodeURI(encodeURI( node_r_));//数据如果带“%”的需要编码再解码,否则会存在格式错误
|
list[i].name = decodeURI(encodeURI( node_r_));
|
}
|
else {
|
list[i].label = decodeURI(node_r_);
|
list[i].name = decodeURI(node_r_);
|
}
|
if (parentId_ == parId || !parentId_ || parentId_ == "null") {
|
if(!obj[list[i].id].children) {
|
obj[list[i].id].children = null;
|
}
|
result.push(list[i]);
|
continue;
|
} else if (obj[parentId_]) {
|
if (!obj[parentId_].children) {
|
obj[parentId_].children = [];
|
}
|
obj[parentId_].children.push(list[i]);
|
}
|
}
|
return result;
|
}
|
|
function ArrayToTree2(array_, name, parentId, parId, disabled_field, isencode) {
|
if(!parentId) {
|
parentId = "parent_id";
|
}
|
|
if(!name) {
|
name = "label";
|
}
|
|
if(!parId) {
|
parId = "";
|
}
|
|
let obj = {};
|
let result = [];
|
let list = JSON.parse(JSON.stringify(array_));
|
list.map(el => {
|
obj[el.id] = el;
|
})
|
let openId = "";
|
for (let i = 0, len = list.length; i < len; i++) {
|
let parentId_ = list[i][parentId];
|
//如果存在判断只读字段,并且该字段有值则设置该节点为只读
|
if (disabled_field) {
|
if(list[i][disabled_field]) {
|
list[i].disabled = true;
|
}
|
}
|
|
if (parentId_ == parId || !parentId_ || parentId_ == "null") {
|
if(!obj[list[i].id].children2) {
|
obj[list[i].id].children2 = null;
|
}
|
result.push(list[i]);
|
continue;
|
} else if (obj[parentId_]) {
|
if (!obj[parentId_].children2) {
|
obj[parentId_].children2 = [];
|
}
|
obj[parentId_].children2.push(list[i]);
|
}
|
}
|
return result;
|
}
|
|
|
function listTOGroup(array_, id, parentId, label) {
|
let parId = "";
|
let obj = {};
|
let result = [];
|
let list = JSON.parse(JSON.stringify(array_));
|
list.map(el => {
|
obj[el.id] = el;
|
})
|
let openId = "";
|
for (let i = 0, len = list.length; i < len; i++) {
|
let parentId_ = list[i][parentId];
|
//设置显示字段
|
list[i].value = list[i][id];
|
list[i].label = list[i][label];
|
|
if (parentId_ == parId || !parentId_) {
|
obj[list[i].id].children = [];
|
result.push(list[i]);
|
continue;
|
} else if (obj[parentId_]) {
|
if (!obj[parentId_].children) {
|
obj[parentId_].children = [];
|
}
|
obj[parentId_].children.push(list[i]);
|
}
|
}
|
return result;
|
|
}
|
|
|
function list2Options(array_, value, label) {
|
var result = array_.map(function(one) {
|
return {
|
value: one[value],
|
label: one[label]
|
}
|
});
|
return result;
|
}
|
|
function clone(obj) {
|
var result, oClass = isClass(obj);
|
//确定result的类型
|
if (oClass === "Object") {
|
result = {};
|
} else if (oClass === "Array") {
|
result = [];
|
} else {
|
return obj;
|
}
|
for (var key in obj) {
|
var copy = obj[key];
|
if (isClass(copy) == "Object") {
|
result[key] = arguments.callee(copy); //递归调用
|
} else if (isClass(copy) == "Array") {
|
result[key] = arguments.callee(copy);
|
} else {
|
result[key] = obj[key];
|
}
|
}
|
return result;
|
};
|
|
function isClass(o) {
|
if (o === null) return "Null";
|
if (o === undefined) return "Undefined";
|
return Object.prototype.toString.call(o).slice(8, -1);
|
}
|
|
function ocrDateFormatter(txt) {
|
var txtList = txt.split("至");
|
if(txtList[0] == "年月日"){
|
txt = "2099-12-31";
|
}
|
else {
|
if (txtList.length > 1) {
|
if(txtList[1].indexOf("长期") != -1 || txtList[1].indexOf("永久") != -1 || txtList[1].indexOf("不约定期限") != -1){//不约定期限
|
txt = "2099-12-31";
|
}
|
else {
|
txt = txtList[1];
|
|
txt = txt.replace("年", "-");
|
txt = txt.replace("月", "-");
|
txt = txt.replace("日", "");
|
var datas_ = txt.split("-");
|
var txt_ = "";
|
datas_.map(d=>{
|
d = d * 1;
|
if (txt_ == "") {
|
txt_ = d;
|
}
|
else {
|
txt_ += "-" + d;
|
}
|
})
|
txt = txt_.toString();
|
if(txt && txt.search && txt.search(/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/) == -1) {
|
txt = ""
|
}
|
//licenceObj_[k] = txt;
|
}
|
}
|
else if (txtList.length == 1) {
|
txt = txtList[0];
|
if(txt.indexOf("长期") != -1 || txt.indexOf("永久") != -1 || txt.indexOf("不约定期限") != -1){
|
txt = "2099-12-31";
|
}
|
txt = txt.replace("年", "-");
|
txt = txt.replace("月", "-");
|
txt = txt.replace("日", "");
|
var datas_ = txt.split("-");
|
var txt_ = "";
|
datas_.map(d=>{
|
d = d * 1;
|
if (txt_ == "") {
|
txt_ = d;
|
}
|
else {
|
txt_ += "-" + d;
|
}
|
})
|
txt = txt_.toString();
|
if(txt && txt.search && txt.search(/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/) == -1) {
|
txt = ""
|
}
|
}
|
}
|
return txt;
|
}
|
|
function formatterRate(rate, fixed) {
|
if (!fixed) {
|
fixed = 1;
|
}
|
if (rate == "") {
|
return "";
|
}
|
|
if (rate == 0) {
|
return 0;
|
}
|
|
if (isNaN(rate)) {
|
return 0;
|
}
|
return (rate * 10000 / 100).toFixed(fixed);
|
}
|
|
function formatters(rate, fixed) {
|
|
if (!fixed) {
|
fixed = 1;
|
}
|
|
|
if (rate == "") {
|
return "";
|
}
|
|
if (isNaN(rate)) {
|
return rate;
|
}
|
if (parseInt(rate) == rate) {
|
return rate;
|
}
|
return (rate * 100 / 100).toFixed(fixed);
|
}
|
|
function sortNumber(a, b) {
|
return a - b
|
}
|
|
function groupArr(list, field) {
|
var obj = {};
|
for (var i = 0; i < list.length; i++) {
|
|
var keys = Object.keys(list[i]);
|
for (var j = 0; j < keys.length; j++) {
|
var item = keys[j]
|
if (item == field) {
|
obj[list[i][item]] = {
|
list: obj[list[i][field]] ? obj[list[i][field]].list : [],
|
type: list[i][field]
|
};
|
}
|
}
|
|
obj[list[i][field]].list.push(list[i])
|
}
|
var att = [];
|
for (item in obj) {
|
att.push({
|
list: obj[item].list,
|
type: obj[item].type,
|
})
|
}
|
return att;
|
}
|
|
function dealExportByBlob(res) {
|
let fileName = decodeURI(res.headers['content-disposition'].split('filename=')[1])
|
// let fileName = decodeURI(res.headers['content-disposition'].match(/filename=(\S*)(?=(.xls|.xlsx))/)[1])
|
let blob = new Blob([res.data], {
|
type: 'application/vnd.ms-excel;charset=UTF-8'
|
})
|
if (window.navigator.msSaveBlob) { // 没有此判断的话,ie11下的导出没有效果
|
window.navigator.msSaveBlob(blob, fileName)
|
} else {
|
let downloadElement = document.createElement('a')
|
let href = window.URL.createObjectURL(blob) // 创建下载的链接
|
downloadElement.href = href
|
downloadElement.download = fileName // 下载后文件名
|
document.body.appendChild(downloadElement)
|
downloadElement.click() // 点击下载
|
document.body.removeChild(downloadElement) // 下载完成移除元素
|
window.URL.revokeObjectURL(href) // 释放掉blob对象
|
}
|
}
|
|
function dealExportByPath(fileurl, fileName) {
|
let downloadElement = document.createElement('a');
|
downloadElement.href = fileurl;
|
downloadElement.download = fileName; // 下载后文件名
|
document.body.appendChild(downloadElement);
|
downloadElement.click(); // 点击下载
|
document.body.removeChild(downloadElement); // 下载完成移除元素
|
}
|
|
|
function randomData(length, multiple, fixed) {
|
if (!length) {
|
length = 1;
|
}
|
if (!multiple) {
|
multiple = 1;
|
}
|
if (!fixed) {
|
fixed = 0;
|
}
|
if (length == 1) {
|
return getOneRandom(multiple, fixed);
|
}
|
var data = [];
|
for (var i = 0; i < length; i++) {
|
data[i] = getOneRandom(multiple, fixed);
|
}
|
return data;
|
}
|
|
function getOneRandom(multiple, fixed) {
|
return parseFloat((Math.random() * multiple).toFixed(fixed));
|
}
|
|
|
function uuid(len, radix) {
|
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
|
var uuid = [],
|
i;
|
radix = radix || chars.length;
|
|
if (len) {
|
// Compact form
|
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
|
} else {
|
// rfc4122, version 4 form
|
var r;
|
|
// rfc4122 requires these characters
|
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
|
uuid[14] = '4';
|
|
// Fill in random data. At i==19 set the high bits of clock sequence as
|
// per rfc4122, sec. 4.1.5
|
for (i = 0; i < 36; i++) {
|
if (!uuid[i]) {
|
r = 0 | Math.random() * 16;
|
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
|
}
|
}
|
}
|
|
return uuid.join('');
|
}
|
|
function uuid_short() {
|
return uuid(32);
|
}
|
function isObject(obj) {
|
return Object.prototype.toString.call(obj) === '[object Object]';
|
}
|
|
function str2JSON(str) {
|
if(str == ""|| str == undefined) {
|
return null;
|
}
|
return JSON.parse(str);
|
}
|
|
|
function getArrDifference(array1, array2) {
|
|
var result = [];
|
for(var i = 0; i < array2.length; i++){
|
var obj = array2[i];
|
var num = obj.id;
|
var isExist = false;
|
for(var j = 0; j < array1.length; j++){
|
var aj = array1[j];
|
var n = aj.field_id;
|
if(n == num){
|
isExist = true;
|
break;
|
}
|
}
|
if(!isExist){
|
result.push(obj);
|
}
|
}
|
return result;
|
|
}
|
|
|
function groupBy( array , f ) {
|
let groups = {};
|
array.forEach( function( o ) {
|
let group = JSON.stringify( f(o) );
|
groups[group] = groups[group] || [];
|
groups[group].push( o );
|
});
|
return Object.keys(groups).map( function( group ) {
|
return groups[group];
|
});
|
}
|
Array.prototype.contains = function (obj) {
|
var i = this.length;
|
while (i--) {
|
if (this[i] === obj) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
function dateformatter(date, type){
|
if(!type) {
|
type = 0;
|
}
|
if(0 == type) {
|
return dateFormatCommon(date);
|
}
|
|
if(1 == type) {
|
return dateFormatEn(date);
|
}
|
|
if(2 == type) {
|
return dateFormatCn(date);
|
}
|
if(-1 == type) {
|
return new Date(Date.parse(date.replace(/-/g, "/")));
|
}
|
}
|
|
|
function dateFormatCommon(date) {
|
var nowdate = new Date(date).toLocaleDateString().replace(/\//g, '-')
|
return nowdate
|
}
|
|
function dateFormatEn(date) {
|
var nowdate = new Date(date).toLocaleDateString()
|
return nowdate
|
}
|
|
function dateFormatCn(now) {
|
y = now.getFullYear(),
|
m = ("0" + (now.getMonth() + 1)).slice(-2),
|
d = ("0" + now.getDate()).slice(-2);
|
return y + "-" + m + "-" + d + " " + now.toTimeString().substr(0, 8);
|
}
|
|
function isAssetTypeAnImage(ext) {
|
return [
|
'png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'psd', 'svg', 'tiff'].
|
indexOf(ext.toLowerCase()) !== -1;
|
}
|
|
function logOut() {
|
window.top.location.href = "login.html";
|
localStorage.removeItem('user');
|
localStorage.removeItem('emp');
|
localStorage.removeItem('menu');
|
}
|
function quotedStr(val) {
|
|
return "'" + val + "'";
|
}
|
|
function handleDownload(fileId) {
|
var elemIF = document.createElement('iframe')
|
getDownloadFileUrl(fileId, function(url) {
|
elemIF.src = url;
|
});
|
elemIF.style.display = 'none'
|
document.body.appendChild(elemIF)
|
}
|
|
function getFileByHttp(fileId) {
|
var url = baseUrl + "root/file/getFile?category=org&id=" + fileId;
|
var xhr = new XMLHttpRequest();
|
xhr.open('GET', url, true);
|
xhr.setRequestHeader("Authorization", Root.getToken());
|
xhr.responseType = 'blob';
|
xhr.onload = function (e) {
|
//如果请求执行成功
|
if (this.status == 200) {
|
var blob = this.response;
|
var filename = file.alias;
|
var a = document.createElement('a');
|
// blob.type = "application/octet-stream";
|
//创键临时url对象
|
var url = URL.createObjectURL(blob);
|
a.href = url;
|
a.download=filename;
|
a.click();
|
//释放之前创建的URL对象
|
window.URL.revokeObjectURL(url);
|
}
|
};
|
//发送请求
|
xhr.send();
|
}
|
|
function getFileUrl_v2(fileId, callback) {
|
let that = this;
|
let urlsrc = ""; //通过一个参数 从下面接收
|
var url = baseUrl + "root/file/getFile?category=org&id=" + fileId;
|
// 通过图片地址获取图片,从新获取图片
|
var config = {
|
method: "get",
|
responseType: "arraybuffer",
|
url: url,
|
headers: {
|
Authorization: Root.getToken(),
|
},
|
};
|
// 重新获取请求,获取的是base64位的图片
|
axios(config).then((response) => {
|
//因为从这里return老是报错
|
urlsrc =
|
"data:image/png;base64," +
|
btoa(
|
new Uint8Array(response.data).reduce(
|
(data, byte) => data + String.fromCharCode(byte) + "",
|
""
|
)
|
);
|
|
callback(urlsrc)
|
});
|
// return urlsrc;
|
}
|
|
function getFileUrl(fileId, callback) {
|
var url = baseUrl + "root/file/getFile?category=org&token=" + Root.getToken() + "&id=" + fileId;
|
callback(url)
|
}
|
|
function getDownloadFileUrl(fileId, callback) {
|
getFileUrl(fileId, callback);
|
}
|
|
|
function getFileUrlPath(fileId, callback) {
|
var url = baseUrl + "root/file/getFileUrl?category=org&token=" + Root.getToken() + "&id=" + fileId;
|
////
|
var params = {
|
category: "org",
|
id: fileId
|
}
|
Server.call(url, params, function(result_) {
|
console.log(result_);
|
callback(result_)
|
})
|
|
////
|
//callback(url)
|
}
|
|
function getDownloadFileUrlPath(fileId, callback) {
|
getFileUrlPath(fileId, callback);
|
}
|
|
//去除首端的特殊字符
|
function delInvalidCharacter(str, invalidcharacter) {//invalidcharacter特殊字符的数组["@",":"]等
|
var invalid_character = [":",":"];//去除首段的特殊字符
|
if (invalidcharacter) {
|
invalid_character = invalidcharacter;
|
}
|
//获取需要截取的索引
|
var index_ = 0;
|
for (var s of str) {
|
if (invalid_character.indexOf(s) != -1) {
|
index_ ++;
|
}
|
else {
|
break
|
}
|
}
|
|
if (index_) {
|
str = str.substring(index_);
|
}
|
return str;
|
}
|
|
Array.prototype.remove = function(val) {
|
var index = this.indexOf(val);
|
if (index > -1) {
|
this.splice(index, 1);
|
}
|
};
|
/// 项目使用
|
|
function addNotice(me, to_id, content, callback) {
|
let params = {
|
to_id: to_id,
|
content: content
|
};
|
|
let url = "work/push2Msg";
|
getUrl(me, url, params, result => {
|
if(callback) {
|
callback(result);
|
}
|
})
|
}
|