359 lines
10 KiB
JavaScript
359 lines
10 KiB
JavaScript
import isEmpty from 'lodash/isEmpty';
|
|
import {
|
|
message
|
|
} from 'antd';
|
|
import {
|
|
WeaLocaleProvider
|
|
} from 'ecCom';
|
|
import loadjs from 'loadjs';
|
|
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';
|
|
res.name = getLabel(82857, '全部');
|
|
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';
|
|
res.name = getLabel('20085', "旷工");
|
|
res.bcolor = '#FFE6EB';
|
|
res.icon = 'icon-Human-resources-Absenteeism';
|
|
}
|
|
if (type == 'NOSIGN') {
|
|
res.color = '#BD10E0';
|
|
res.name = getLabel('20086', "漏签");
|
|
res.bcolor = '#FAECFD';
|
|
res.icon = 'icon-Human-resources-check';
|
|
}
|
|
if (type == 'LEAVE') {
|
|
res.color = '#2DB7F5';
|
|
res.name = getLabel('670', "请假");
|
|
res.bcolor = '#EFFAFF';
|
|
res.icon = 'icon-Human-resources-leave';
|
|
}
|
|
if (type == 'EVECTION') {
|
|
res.color = '#30BE3A';
|
|
res.name = getLabel('20084', "出差");
|
|
res.bcolor = '#EFFAF0';
|
|
res.icon = 'icon-Human-resources-business-travel';
|
|
}
|
|
if (type == 'OUTDAYS') {
|
|
res.color = '#4F8CFF';
|
|
res.name = getLabel('24058', "公出");
|
|
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 validate = (conditions, params = {}) => {
|
|
if (!isEmpty(conditions)) {
|
|
for (let i = 0, leg = conditions.length; i < leg; i++) {
|
|
let cd = conditions[i];
|
|
if (cd.hide) continue;
|
|
for (let j = 0, length = cd.items.length; j < length; j++) {
|
|
let c = cd.items[j];
|
|
if (c) {
|
|
if (c.otherParams && c.otherParams.hide) continue;
|
|
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(getLabel('15859', "必要信息不完整!"));
|
|
message.warning(`"${c.label}"${getLabel(508517, "未填写")}`);
|
|
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 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 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 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 GetUrlParam = (url, paraName) => {
|
|
let arrObj = url.split("?");
|
|
if (arrObj.length > 1) {
|
|
let arrPara = arrObj[1].split("&");
|
|
let arr;
|
|
for (let i = 0; i < arrPara.length; i++) {
|
|
arr = arrPara[i].split("=");
|
|
if (arr !== null && arr[0] === paraName) {
|
|
return arr[1];
|
|
}
|
|
}
|
|
return "";
|
|
} else {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
export const carousel = (pic, index, parent) => {
|
|
const imgPool = [];
|
|
let indexNum = 0;
|
|
|
|
let clickImgUrl = pic;
|
|
let clickImgId = GetUrlParam(clickImgUrl, "fileid");
|
|
|
|
const dom = `.${parent}:eq(${index}) img`;
|
|
|
|
$(dom).each((index, img) => {
|
|
imgPool.push(img.currentSrc ? img.currentSrc : img.src);
|
|
});
|
|
|
|
for (let i = 0; i < imgPool.length; i++) {
|
|
let imgid = GetUrlParam(imgPool[i], "fileid");
|
|
if (clickImgId === imgid) {
|
|
break;
|
|
} else {
|
|
indexNum++;
|
|
}
|
|
}
|
|
|
|
let isShowPicture = true;
|
|
if (clickImgId === "") {
|
|
isShowPicture = false;
|
|
}
|
|
|
|
if (isShowPicture) {
|
|
if (window.IMCarousel) {
|
|
window.IMCarousel.showImgScanner4Pool(true, imgPool, indexNum, null, window.top);
|
|
} else {
|
|
loadjs([
|
|
addContentPath("/social/js/drageasy/drageasy.js"),
|
|
addContentPath("/social/js/bootstrap/js/bootstrap.js?v=20171218"),
|
|
addContentPath("/social/im/js/IMUtil_wev8.js"),
|
|
addContentPath("/social/js/imcarousel/imcarousel.js")
|
|
], () => {
|
|
window.IMCarousel.showImgScanner4Pool(true, imgPool, indexNum, null, window.top);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 添加多级路径
|
|
*
|
|
* @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;
|
|
}; |