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] === '' || params[domkey] === undefined)) { 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; };