weaver_trunk_cli/pc4mobx/hrm/util/index.js

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;
};