2023-03-14 09:11:54 +08:00
|
|
|
import isEmpty from "lodash/isEmpty";
|
2023-09-22 14:01:42 +08:00
|
|
|
import {
|
|
|
|
|
message
|
|
|
|
|
} from "antd";
|
|
|
|
|
import {
|
|
|
|
|
indexOf
|
|
|
|
|
} from "lodash";
|
2023-03-14 09:11:54 +08:00
|
|
|
|
|
|
|
|
const dbKeys = [
|
|
|
|
|
"PERCENT",
|
|
|
|
|
"PLAN",
|
|
|
|
|
"PRECISION",
|
|
|
|
|
"PRIMARY",
|
|
|
|
|
"PRINT",
|
|
|
|
|
"PROC",
|
|
|
|
|
"PROCEDURE",
|
|
|
|
|
"PUBLIC",
|
|
|
|
|
"RAISERROR",
|
|
|
|
|
"READ",
|
|
|
|
|
"READTEXT",
|
|
|
|
|
"RECONFIGURE",
|
|
|
|
|
"REFERENCES",
|
|
|
|
|
"REPLICATION",
|
|
|
|
|
"RESTORE",
|
|
|
|
|
"RESTRICT",
|
|
|
|
|
"RETURN",
|
|
|
|
|
"REVOKE",
|
|
|
|
|
"RIGHT",
|
|
|
|
|
"ROLLBACK",
|
|
|
|
|
"ROWCOUNT",
|
|
|
|
|
"ROWGUIDCOL",
|
|
|
|
|
"RULE",
|
|
|
|
|
"SAVE",
|
|
|
|
|
"SCHEMA",
|
|
|
|
|
"SELECT",
|
|
|
|
|
"SESSION_USER",
|
|
|
|
|
"SET",
|
|
|
|
|
"SETUSER",
|
|
|
|
|
"SHUTDOWN",
|
|
|
|
|
"SOME",
|
|
|
|
|
"STATISTICS",
|
|
|
|
|
"SYSTEM_USER",
|
|
|
|
|
"TABLE",
|
|
|
|
|
"TEXTSIZE",
|
|
|
|
|
"THEN",
|
|
|
|
|
"TO",
|
|
|
|
|
"TOP",
|
|
|
|
|
"TRAN",
|
|
|
|
|
"TRANSACTION",
|
|
|
|
|
"TRIGGER",
|
|
|
|
|
"TRUNCATE",
|
|
|
|
|
"TSEQUAL",
|
|
|
|
|
"UNION",
|
|
|
|
|
"UNIQUE",
|
|
|
|
|
"UPDATE",
|
|
|
|
|
"UPDATETEXT",
|
|
|
|
|
"USE",
|
|
|
|
|
"USER",
|
|
|
|
|
"VALUES",
|
|
|
|
|
"VARYING",
|
|
|
|
|
"VIEW",
|
|
|
|
|
"WAITFOR",
|
|
|
|
|
"WHEN",
|
|
|
|
|
"WHERE",
|
|
|
|
|
"WHILE",
|
|
|
|
|
"WITH",
|
|
|
|
|
"WRITETEXT",
|
|
|
|
|
"EXCEPT",
|
|
|
|
|
"EXEC",
|
|
|
|
|
"EXECUTE",
|
|
|
|
|
"EXISTS",
|
|
|
|
|
"EXIT",
|
|
|
|
|
"FETCH",
|
|
|
|
|
"FILE",
|
|
|
|
|
"FILLFACTOR",
|
|
|
|
|
"FOR",
|
|
|
|
|
"FOREIGN",
|
|
|
|
|
"FREETEXT",
|
|
|
|
|
"FREETEXTTABLE",
|
|
|
|
|
"FROM",
|
|
|
|
|
"FULL",
|
|
|
|
|
"FUNCTION",
|
|
|
|
|
"GOTO",
|
|
|
|
|
"GRANT",
|
|
|
|
|
"GROUP",
|
|
|
|
|
"HAVING",
|
|
|
|
|
"HOLDLOCK",
|
|
|
|
|
"IDENTITY",
|
|
|
|
|
"IDENTITY_INSERT",
|
|
|
|
|
"IDENTITYCOL",
|
|
|
|
|
"IF",
|
|
|
|
|
"IN",
|
|
|
|
|
"INDEX",
|
|
|
|
|
"INNER",
|
|
|
|
|
"INSERT",
|
|
|
|
|
"INTERSECT",
|
|
|
|
|
"INTO",
|
|
|
|
|
"IS",
|
|
|
|
|
"JOIN",
|
|
|
|
|
"KEY",
|
|
|
|
|
"KILL",
|
|
|
|
|
"LEFT",
|
|
|
|
|
"LIKE",
|
|
|
|
|
"LINENO",
|
|
|
|
|
"LOAD",
|
|
|
|
|
"NATIONAL",
|
|
|
|
|
"NOCHECK",
|
|
|
|
|
"NONCLUSTERED",
|
|
|
|
|
"NOT",
|
|
|
|
|
"NULL",
|
|
|
|
|
"NULLIF",
|
|
|
|
|
"OF",
|
|
|
|
|
"OFF",
|
|
|
|
|
"OFFSETS",
|
|
|
|
|
"ON",
|
|
|
|
|
"OPEN",
|
|
|
|
|
"OPENDATASOURCE",
|
|
|
|
|
"OPENQUERY",
|
|
|
|
|
"OPENROWSET",
|
|
|
|
|
"OPENXML",
|
|
|
|
|
"OPTION",
|
|
|
|
|
"OR",
|
|
|
|
|
"ORDER",
|
|
|
|
|
"OUTER",
|
|
|
|
|
"OVER",
|
|
|
|
|
"ADD",
|
|
|
|
|
"ALL",
|
|
|
|
|
"ALTER",
|
|
|
|
|
"AND",
|
|
|
|
|
"ANY",
|
|
|
|
|
"AS",
|
|
|
|
|
"ASC",
|
|
|
|
|
"AUTHORIZATION",
|
|
|
|
|
"BACKUP",
|
|
|
|
|
"BEGIN",
|
|
|
|
|
"BETWEEN",
|
|
|
|
|
"BREAK",
|
|
|
|
|
"BROWSE",
|
|
|
|
|
"BULK",
|
|
|
|
|
"BY",
|
|
|
|
|
"CASCADE",
|
|
|
|
|
"CASE",
|
|
|
|
|
"CHECK",
|
|
|
|
|
"CHECKPOINT",
|
|
|
|
|
"CLOSE",
|
|
|
|
|
"CLUSTERED",
|
|
|
|
|
"COALESCE",
|
|
|
|
|
"COLLATE",
|
|
|
|
|
"COLUMN",
|
|
|
|
|
"COMMIT",
|
|
|
|
|
"COMPUTE",
|
|
|
|
|
"CONSTRAINT",
|
|
|
|
|
"CONTAINS",
|
|
|
|
|
"CONTAINSTABLE",
|
|
|
|
|
"CONTINUE",
|
|
|
|
|
"CONVERT",
|
|
|
|
|
"CREATE",
|
|
|
|
|
"CROSS",
|
|
|
|
|
"CURRENT",
|
|
|
|
|
"CURRENT_DATE",
|
|
|
|
|
"CURRENT_TIME",
|
|
|
|
|
"CURRENT_TIMESTAMP",
|
|
|
|
|
"CURRENT_USER",
|
|
|
|
|
"CURSOR",
|
|
|
|
|
"DATABASE",
|
|
|
|
|
"DBCC",
|
|
|
|
|
"DEALLOCATE",
|
|
|
|
|
"DECLARE",
|
|
|
|
|
"DEFAULT",
|
|
|
|
|
"DELETE",
|
|
|
|
|
"DENY",
|
|
|
|
|
"DESC",
|
|
|
|
|
"DISK",
|
|
|
|
|
"DISTINCT",
|
|
|
|
|
"DISTRIBUTED",
|
|
|
|
|
"DOUBLE",
|
|
|
|
|
"DROP",
|
|
|
|
|
"DUMMY",
|
|
|
|
|
"DUMP",
|
|
|
|
|
"ELSE",
|
|
|
|
|
"END",
|
|
|
|
|
"ERRLVL",
|
|
|
|
|
"ESCAPE",
|
|
|
|
|
"ACCESS",
|
|
|
|
|
"ADD",
|
|
|
|
|
"ALL",
|
|
|
|
|
"ALTER",
|
|
|
|
|
"AND",
|
|
|
|
|
"ANY",
|
|
|
|
|
"AS",
|
|
|
|
|
"ASC",
|
|
|
|
|
"AUDIT",
|
|
|
|
|
"BETWEEN",
|
|
|
|
|
"BY",
|
|
|
|
|
"CHAR",
|
|
|
|
|
"CHECK",
|
|
|
|
|
"CLUSTER",
|
|
|
|
|
"COLUMN",
|
|
|
|
|
"COMMENT",
|
|
|
|
|
"COMPRESS",
|
|
|
|
|
"CONNECT",
|
|
|
|
|
"CREATE",
|
|
|
|
|
"CURRENT",
|
|
|
|
|
"DATE",
|
|
|
|
|
"DECIMAL",
|
|
|
|
|
"DEFAULT",
|
|
|
|
|
"DELETE",
|
|
|
|
|
"DESC",
|
|
|
|
|
"DISTINCT",
|
|
|
|
|
"DROP",
|
|
|
|
|
"ELSE",
|
|
|
|
|
"EXCLUSIVE",
|
|
|
|
|
"EXISTS",
|
|
|
|
|
"FILE",
|
|
|
|
|
"FLOAT",
|
|
|
|
|
"FOR",
|
|
|
|
|
"FROM",
|
|
|
|
|
"GRANT",
|
|
|
|
|
"GROUP",
|
|
|
|
|
"HAVING",
|
|
|
|
|
"IDENTIFIED",
|
|
|
|
|
"IMMEDIATE",
|
|
|
|
|
"IN",
|
|
|
|
|
"INCREMENT",
|
|
|
|
|
"INDEX",
|
|
|
|
|
"INITIAL",
|
|
|
|
|
"INSERT",
|
|
|
|
|
"INTEGER",
|
|
|
|
|
"INTERSECT",
|
|
|
|
|
"INTO",
|
|
|
|
|
"IS",
|
|
|
|
|
"LEVEL",
|
|
|
|
|
"LIKE",
|
|
|
|
|
"LOCK",
|
|
|
|
|
"LONG",
|
|
|
|
|
"MAXEXTENTS",
|
|
|
|
|
"MINUS",
|
|
|
|
|
"MLSLABEL",
|
|
|
|
|
"MODE",
|
|
|
|
|
"MODIFY",
|
|
|
|
|
"NOAUDIT",
|
|
|
|
|
"NOCOMPRESS",
|
|
|
|
|
"NOT",
|
|
|
|
|
"NOWAIT",
|
|
|
|
|
"NULL",
|
|
|
|
|
"NUMBER",
|
|
|
|
|
"OF",
|
|
|
|
|
"OFFLINE",
|
|
|
|
|
"ON",
|
|
|
|
|
"ONLINE",
|
|
|
|
|
"OPTION",
|
|
|
|
|
"OR",
|
|
|
|
|
"ORDER",
|
|
|
|
|
"PCTFREE",
|
|
|
|
|
"PRIOR",
|
|
|
|
|
"PRIVILEGES",
|
|
|
|
|
"PUBLIC",
|
|
|
|
|
"RAW",
|
|
|
|
|
"RENAME",
|
|
|
|
|
"RESOURCE",
|
|
|
|
|
"REVOKE",
|
|
|
|
|
"ROW",
|
|
|
|
|
"ROWID",
|
|
|
|
|
"ROWNUM",
|
|
|
|
|
"ROWS",
|
|
|
|
|
"SELECT",
|
|
|
|
|
"SESSION",
|
|
|
|
|
"SET",
|
|
|
|
|
"SHARE",
|
|
|
|
|
"SIZE",
|
|
|
|
|
"SMALLINT",
|
|
|
|
|
"START",
|
|
|
|
|
"SUCCESSFUL",
|
|
|
|
|
"SYNONYM",
|
|
|
|
|
"SYSDATE",
|
|
|
|
|
"TABLE",
|
|
|
|
|
"THEN",
|
|
|
|
|
"TO",
|
|
|
|
|
"TRIGGER",
|
|
|
|
|
"UID",
|
|
|
|
|
"UNION",
|
|
|
|
|
"UNIQUE",
|
|
|
|
|
"UPDATE",
|
|
|
|
|
"USER",
|
|
|
|
|
"VALIDATE",
|
|
|
|
|
"VALUES",
|
|
|
|
|
"VARCHAR",
|
|
|
|
|
"VARCHAR2",
|
|
|
|
|
"VIEW",
|
|
|
|
|
"WHENEVER",
|
|
|
|
|
"WHERE",
|
|
|
|
|
"WITH"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
export const validate = (conditions, params = {}) => {
|
|
|
|
|
if (!isEmpty(conditions)) {
|
|
|
|
|
for (let i = 0, leg = conditions.length; i < leg; i++) {
|
|
|
|
|
let cd = conditions[i];
|
|
|
|
|
for (let j = 0, length = cd.items.length; j < length; j++) {
|
|
|
|
|
let c = cd.items[j];
|
|
|
|
|
if (c) {
|
|
|
|
|
let domkey = c.domkey[0];
|
|
|
|
|
let viewAttr = c.viewAttr;
|
|
|
|
|
if (c.conditionType == "BROWSER")
|
|
|
|
|
viewAttr = c.browserConditionParam.viewAttr;
|
|
|
|
|
if (viewAttr == "3" && !params[domkey]) {
|
|
|
|
|
if (domkey == "managerid" || domkey == "belongto") {
|
|
|
|
|
//直接上级 主账号不用校验
|
|
|
|
|
} else {
|
|
|
|
|
//message.warning(domkey+'必要信息不完整!');
|
|
|
|
|
message.warning("必要信息不完整!");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const getFormParamValue = (conditions = {}, fieldname) => {
|
|
|
|
|
let fieldvalue = "";
|
|
|
|
|
if (!isEmpty(conditions)) {
|
|
|
|
|
for (let i = 0, leg = conditions.length; i < leg; i++) {
|
|
|
|
|
let cd = conditions[i];
|
|
|
|
|
for (let j = 0, length = cd.items.length; j < length; j++) {
|
|
|
|
|
let c = cd.items[j];
|
|
|
|
|
if (c) {
|
|
|
|
|
let domkey = c.domkey[0];
|
|
|
|
|
if (domkey == fieldname) {
|
|
|
|
|
fieldvalue = c.value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return fieldvalue;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const transParams = formParams => {
|
|
|
|
|
let params = {};
|
|
|
|
|
for (let key in formParams) {
|
|
|
|
|
if (formParams[key] === !!formParams[key])
|
|
|
|
|
params[key] = !!formParams[key] ? "1" : "0";
|
|
|
|
|
else params[key] = formParams[key];
|
|
|
|
|
}
|
|
|
|
|
return params;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const findTabCount = str => {
|
|
|
|
|
const bIndex = str.lastIndexOf("(");
|
|
|
|
|
const eIndex = str.lastIndexOf(")");
|
|
|
|
|
let title = "",
|
|
|
|
|
count = "";
|
|
|
|
|
try {
|
|
|
|
|
title = str.substring(0, bIndex);
|
|
|
|
|
count = str.substring(bIndex + 1, eIndex);
|
|
|
|
|
} catch (err) {}
|
|
|
|
|
return {
|
|
|
|
|
title,
|
|
|
|
|
count
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const calFormHeight = (groupLength, children) => {
|
|
|
|
|
let childrenLength = 0;
|
|
|
|
|
children.map(c => {
|
|
|
|
|
if (c.colSpan != null) {
|
|
|
|
|
childrenLength += c.colSpan == 2 ? 1 : 2;
|
|
|
|
|
} else childrenLength += 1;
|
|
|
|
|
});
|
|
|
|
|
let height = (childrenLength / 2 + (childrenLength % 2)) * 52 + 10;
|
|
|
|
|
if (groupLength > 1) height += groupLength * 45;
|
|
|
|
|
if (height > 300) return 300;
|
|
|
|
|
return height;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const validDBKeys = value => {
|
|
|
|
|
if (indexOf(dbKeys, value.toUpperCase()) >= 0) {
|
|
|
|
|
message.error("不能使用数据库保留字作为字段名!");
|
|
|
|
|
return {
|
|
|
|
|
isValid: false,
|
|
|
|
|
value: ""
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
isValid: true,
|
|
|
|
|
value
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const validNumber = value => {
|
|
|
|
|
if (isNaN(parseInt(value))) return 0;
|
|
|
|
|
return parseInt(value);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const getColumIndex = num => {
|
|
|
|
|
const n = 64;
|
|
|
|
|
const loopIndex = num / 26;
|
|
|
|
|
if (loopIndex <= 1)
|
|
|
|
|
return String.fromCharCode(n + (num % 26 === 0 ? 26 : num));
|
|
|
|
|
else
|
|
|
|
|
return `${String.fromCharCode(
|
|
|
|
|
n + parseInt(loopIndex)
|
|
|
|
|
)}${String.fromCharCode(n + (num % 26))}`;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const calColumnIndex = val => {
|
|
|
|
|
const arr = Array.from(val);
|
|
|
|
|
let num = 0;
|
|
|
|
|
if (arr.length === 1) num = arr[0].charCodeAt() - 64;
|
|
|
|
|
else {
|
|
|
|
|
arr.map((c, i) => {
|
|
|
|
|
if (i === 0) num += (c.charCodeAt() - 64) * 26;
|
|
|
|
|
else num += c.charCodeAt() - 64;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return num;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const convertCalendarDate = date => {
|
|
|
|
|
const y = date.getYear();
|
|
|
|
|
let d = date.getDayOfMonth();
|
|
|
|
|
if (d < 10) d = "0" + d;
|
|
|
|
|
let m = date.getMonth() + 1;
|
|
|
|
|
if (m < 10) m = "0" + m;
|
|
|
|
|
return `${y}-${m}-${d}`;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const dateFormat = (date, format) => {
|
|
|
|
|
let o = {
|
|
|
|
|
"M+": date.getMonth() + 1, //month
|
|
|
|
|
"d+": date.getDate(), //day
|
|
|
|
|
"h+": date.getHours(), //hour
|
|
|
|
|
"m+": date.getMinutes(), //minute
|
|
|
|
|
"s+": date.getSeconds(), //second
|
|
|
|
|
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
|
|
|
|
|
S: date.getMilliseconds() //millisecond
|
|
|
|
|
};
|
|
|
|
|
if (/((y|Y)+)/.test(format))
|
|
|
|
|
format = format.replace(
|
|
|
|
|
RegExp.$1,
|
|
|
|
|
(date.getFullYear() + "").substr(4 - RegExp.$1.length)
|
|
|
|
|
);
|
|
|
|
|
for (var k in o)
|
|
|
|
|
if (new RegExp("(" + k + ")").test(format))
|
|
|
|
|
format = format.replace(
|
|
|
|
|
RegExp.$1,
|
|
|
|
|
RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
|
|
|
|
|
);
|
|
|
|
|
return format;
|
|
|
|
|
};
|
|
|
|
|
|
2023-09-22 14:01:42 +08:00
|
|
|
import {
|
|
|
|
|
WeaLocaleProvider
|
|
|
|
|
} from 'ecCom';
|
|
|
|
|
const getLabel = WeaLocaleProvider.getLabel;
|
|
|
|
|
/**
|
|
|
|
|
正常
|
|
|
|
|
迟到
|
|
|
|
|
早退
|
|
|
|
|
旷工
|
|
|
|
|
漏签
|
|
|
|
|
请假
|
|
|
|
|
出差
|
|
|
|
|
公出
|
|
|
|
|
加班
|
|
|
|
|
异常数据抵扣
|
|
|
|
|
*/
|
|
|
|
|
// NORMAL,BELATE,LEAVEEARLY,ABSENT,NOSIGN,LEAVE,EVECTION,OUTDAYS,OVERTIME,OTHER;
|
|
|
|
|
|
|
|
|
|
export const getIcon = type => {
|
|
|
|
|
let res = {};
|
|
|
|
|
if (type == 'LEAVE') {
|
|
|
|
|
res.color = '#2DB7F5';
|
|
|
|
|
res.icon = 'icon-Human-resources-leave';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'EVECTION') {
|
|
|
|
|
res.color = '#48C651';
|
|
|
|
|
res.icon = 'icon-Human-resources-business-travel';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'OUTDAYS') {
|
|
|
|
|
res.color = '#4F8CFF';
|
|
|
|
|
res.icon = 'icon-Human-resources-work';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'OVERTIME') {
|
|
|
|
|
res.color = '#8D6BF3';
|
|
|
|
|
res.icon = 'icon-Human-resources-overtime';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'OTHER') {
|
|
|
|
|
res.color = '#ABB4C1';
|
|
|
|
|
res.icon = 'icon-Human-resources-abnormal-small2';
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const getIconColor = type => {
|
|
|
|
|
let res = {};
|
|
|
|
|
if (type == 'ALL') {
|
|
|
|
|
res.color = '#2DB7F5';
|
2023-09-26 16:58:23 +08:00
|
|
|
res.name = (window.e9_locale.userLanguage == "8") ? "All type" : getLabel(82857, '全部');
|
2023-09-22 14:01:42 +08:00
|
|
|
res.icon = 'icon-Human-resources-all';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'NORMAL') {
|
|
|
|
|
res.color = '#2DB7F5';
|
|
|
|
|
res.name = getLabel('225', "正常");
|
|
|
|
|
res.icon = 'icon-Human-resources-normal';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'BELATE') {
|
|
|
|
|
res.color = '#FF8F00';
|
|
|
|
|
res.name = getLabel('20081', "迟到");
|
|
|
|
|
res.bcolor = '#FFF6EB';
|
|
|
|
|
res.icon = 'icon-Human-resources-late';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'LEAVEEARLY') {
|
|
|
|
|
res.color = '#7326FF';
|
|
|
|
|
res.name = getLabel('20082', "早退");
|
|
|
|
|
res.bcolor = '#F1E9FF';
|
|
|
|
|
res.icon = 'icon-Human-resources-Leave-early';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'ABSENT') {
|
|
|
|
|
res.color = '#FC4B6C';
|
2023-09-26 16:58:23 +08:00
|
|
|
res.name = (window.e9_locale.userLanguage == "8") ? "Truancy" : getLabel('20085', "旷工");
|
2023-09-22 14:01:42 +08:00
|
|
|
res.bcolor = '#FFE6EB';
|
|
|
|
|
res.icon = 'icon-Human-resources-Absenteeism';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'NOSIGN') {
|
|
|
|
|
res.color = '#BD10E0';
|
2023-09-26 16:58:23 +08:00
|
|
|
res.name = (window.e9_locale.userLanguage == "8") ? "Forget" :getLabel('20086', "漏签");
|
2023-09-22 14:01:42 +08:00
|
|
|
res.bcolor = '#FAECFD';
|
|
|
|
|
res.icon = 'icon-Human-resources-check';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'LEAVE') {
|
|
|
|
|
res.color = '#2DB7F5';
|
2023-09-26 16:58:23 +08:00
|
|
|
res.name = (window.e9_locale.userLanguage == "8") ? "Leave" : getLabel('670', "请假");
|
2023-09-22 14:01:42 +08:00
|
|
|
res.bcolor = '#EFFAFF';
|
|
|
|
|
res.icon = 'icon-Human-resources-leave';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'EVECTION') {
|
|
|
|
|
res.color = '#30BE3A';
|
2023-09-26 16:58:23 +08:00
|
|
|
res.name = (window.e9_locale.userLanguage == "8") ? "Business Trip" :getLabel('20084', "出差");
|
2023-09-22 14:01:42 +08:00
|
|
|
res.bcolor = '#EFFAF0';
|
|
|
|
|
res.icon = 'icon-Human-resources-business-travel';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'OUTDAYS') {
|
|
|
|
|
res.color = '#4F8CFF';
|
2023-09-26 16:58:23 +08:00
|
|
|
res.name =(window.e9_locale.userLanguage == "8") ? "Business Out" : getLabel('24058', "公出");
|
2023-09-22 14:01:42 +08:00
|
|
|
res.bcolor = '#DFEBFF';
|
|
|
|
|
res.icon = 'icon-Human-resources-work';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'OVERTIME') {
|
|
|
|
|
res.color = '#8D6BF3';
|
|
|
|
|
res.name = getLabel('6151', "加班");
|
|
|
|
|
res.bcolor = '#FAECFD';
|
|
|
|
|
res.icon = 'icon-Human-resources-overtime-small';
|
|
|
|
|
}
|
|
|
|
|
if (type == 'OTHER') {
|
|
|
|
|
res.color = '#ABB4C1';
|
|
|
|
|
res.name = getLabel('32104', "异常");
|
|
|
|
|
res.title = getLabel('132031', "异常数据抵扣");
|
|
|
|
|
res.bcolor = '#F0F6FF';
|
|
|
|
|
res.icon = 'icon-Human-resources-abnormal-small2';
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const createQRCode = data => {
|
|
|
|
|
//生成二维码
|
|
|
|
|
var txt = "BEGIN:VCARD \n" +
|
|
|
|
|
"VERSION:3.0 \n" +
|
|
|
|
|
"N:" + data.lastname + " \n" +
|
|
|
|
|
"TEL;CELL;VOICE:" + data.mobile + "\n" +
|
|
|
|
|
"TEL;WORK;VOICE:" + data.telephone + "\n" +
|
|
|
|
|
"EMAIL:" + data.email + " \n" +
|
|
|
|
|
"TITLE:" + data.jobtitle + " \n" +
|
|
|
|
|
"ROLE:" + data.department + "\n" +
|
|
|
|
|
"ADR;WORK:" + data.locationname + " \n" +
|
|
|
|
|
"END:VCARD";
|
|
|
|
|
return utf16to8(txt);
|
|
|
|
|
|
|
|
|
|
function utf16to8(str) {
|
|
|
|
|
var out, i, len, c;
|
|
|
|
|
out = "";
|
|
|
|
|
len = str.length;
|
|
|
|
|
for (i = 0; i < len; i++) {
|
|
|
|
|
c = str.charCodeAt(i);
|
|
|
|
|
if ((c >= 0x0001) && (c <= 0x007F)) {
|
|
|
|
|
out += str.charAt(i);
|
|
|
|
|
} else if (c > 0x07FF) {
|
|
|
|
|
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
|
|
|
|
|
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
|
|
|
|
|
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
|
|
|
|
|
} else {
|
|
|
|
|
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
|
|
|
|
|
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return out;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
|
|
|
|
|
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
|
|
|
|
|
// 例子:
|
|
|
|
|
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
|
|
|
|
|
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
|
|
|
|
|
export const DateFormat = (date, fmt) => {
|
|
|
|
|
if (date && fmt) {
|
|
|
|
|
let _this = date
|
|
|
|
|
const type = Object.prototype.toString.call(date)
|
|
|
|
|
if (type == "[object String]") {
|
|
|
|
|
let dateArray = date.split(" "),
|
|
|
|
|
d1 = dateArray[0].split("-"),
|
|
|
|
|
d2 = dateArray[1] ? dateArray[1].split(":") : [];
|
|
|
|
|
_this = new Date((d1[0] || 0) * 1, (d1[1] || 0) * 1 - 1, (d1[2] || 0) * 1, (d2[0] || 0) * 1, (d2[1] || 0) * 1, (d2[2] || 0) * 1)
|
|
|
|
|
} else if (type == "[object Date]") {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
let o = {
|
|
|
|
|
"M+": _this.getMonth() + 1, //月份
|
|
|
|
|
"d+": _this.getDate(), //日
|
|
|
|
|
"h+": _this.getHours() % 12 == 0 ? 12 : _this.getHours() % 12, //小时
|
|
|
|
|
"H+": _this.getHours(), //小时
|
|
|
|
|
"m+": _this.getMinutes(), //分
|
|
|
|
|
"s+": _this.getSeconds(), //秒
|
|
|
|
|
"q+": Math.floor((_this.getMonth() + 3) / 3), //季度
|
|
|
|
|
"S": _this.getMilliseconds() //毫秒
|
|
|
|
|
};
|
|
|
|
|
let week = {
|
|
|
|
|
"0": "\\u65e5",
|
|
|
|
|
"1": "\\u4e00",
|
|
|
|
|
"2": "\\u4e8c",
|
|
|
|
|
"3": "\\u4e09",
|
|
|
|
|
"4": "\\u56db",
|
|
|
|
|
"5": "\\u4e94",
|
|
|
|
|
"6": "\\u516d"
|
|
|
|
|
};
|
|
|
|
|
if (/(y+)/.test(fmt)) {
|
|
|
|
|
fmt = fmt.replace(RegExp.$1, (_this.getFullYear() + "").substr(4 - RegExp.$1.length));
|
|
|
|
|
}
|
|
|
|
|
if (/(E+)/.test(fmt)) {
|
|
|
|
|
let weekStr = ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\\u661f\\u671f" : "\\u5468") : "") + week[_this.getDay() + ""]
|
|
|
|
|
fmt = fmt.replace(RegExp.$1, Utils.GB2312UnicodeConverter.ToGB2312(weekStr));
|
|
|
|
|
}
|
|
|
|
|
for (let 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;
|
|
|
|
|
} else {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const IEVersion = () => {
|
|
|
|
|
let userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
|
|
|
|
|
let isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
|
|
|
|
|
let isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
|
|
|
|
|
let isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
|
|
|
|
|
if(isIE) {
|
|
|
|
|
let reIE = new RegExp("MSIE (\\d+\\.\\d+);");
|
|
|
|
|
reIE.test(userAgent);
|
|
|
|
|
let fIEVersion = parseFloat(RegExp["$1"]);
|
|
|
|
|
if(fIEVersion == 7) {
|
|
|
|
|
return 7;
|
|
|
|
|
} else if(fIEVersion == 8) {
|
|
|
|
|
return 8;
|
|
|
|
|
} else if(fIEVersion == 9) {
|
|
|
|
|
return 9;
|
|
|
|
|
} else if(fIEVersion == 10) {
|
|
|
|
|
return 10;
|
|
|
|
|
} else {
|
|
|
|
|
return 6;//IE版本<=7
|
|
|
|
|
}
|
|
|
|
|
} else if(isEdge) {
|
|
|
|
|
return 'edge';//edge
|
|
|
|
|
} else if(isIE11) {
|
|
|
|
|
return 11; //IE11
|
|
|
|
|
}else{
|
|
|
|
|
return -1;//不是ie浏览器
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-14 09:11:54 +08:00
|
|
|
/**
|
|
|
|
|
* 添加多级路径
|
|
|
|
|
*
|
|
|
|
|
* @param {*} url
|
|
|
|
|
*/
|
|
|
|
|
export const addContentPath = (url) => {
|
|
|
|
|
const ecologyContentPath = window.ecologyContentPath || '';
|
|
|
|
|
if (url && ecologyContentPath) {
|
|
|
|
|
//避免重复添加ecologyContentPath
|
|
|
|
|
//避免传入的参数不是链接
|
|
|
|
|
if (url.startsWith('/') && !url.startsWith(ecologyContentPath)) {
|
|
|
|
|
url = ecologyContentPath + url;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return url;
|
2023-09-22 14:01:42 +08:00
|
|
|
};
|
|
|
|
|
|