329 lines
11 KiB
JavaScript
329 lines
11 KiB
JavaScript
import { Modal } from 'antd';
|
||
import { WeaTools } from "ecCom";
|
||
const getKey = WeaTools.getKey;
|
||
import isEmpty from 'lodash/isEmpty';
|
||
import isArray from 'lodash/isArray';
|
||
import {WeaLocaleProvider} from 'ecCom';
|
||
const getLabel = WeaLocaleProvider.getLabel;
|
||
|
||
export const transfStr = (name = '', ids = '', list = [], type = '') => {
|
||
let str = '';
|
||
const mirror = {
|
||
37: "doc",
|
||
prjtsk: "task",
|
||
18: "crm",
|
||
152: "workflow",
|
||
135: "project",
|
||
}
|
||
list.map(item => {
|
||
if (name === 'Upload' && type === 'image') {
|
||
str += '<img class="formImgPlay" src="' + item.filelink + '" data-imgsrc="' + (item.loadlink || item.filelink) + '" />'
|
||
}
|
||
if (name === 'Upload' && type === 'file') {
|
||
str += (`<a href='javascript:void(0)' style='cursor:pointer;text-decoration:underline !important;margin-right:8px'>${item.filename}</a><br>`)
|
||
}
|
||
if (name === 'Browser') {
|
||
str += (`<a href='javascript:void(0)' style='cursor:pointer;text-decoration:underline !important;margin-right:8px'>${item.name || item.showname}</a><br>`)
|
||
}
|
||
})
|
||
return str
|
||
}
|
||
|
||
export const getFormInitDatas = (condition = []) => {
|
||
let initdatas = {};
|
||
condition.map(c => {
|
||
let items = [];
|
||
c.items.map((field, index) => {
|
||
const key = getKey(field);
|
||
if (field.conditionType == "BROWSER") {
|
||
if (!isEmpty(field.browserConditionParam)) {
|
||
const replacesDatas = field.browserConditionParam.replaceDatas || field.browserConditionParam.valueObj;
|
||
if (!isEmpty(replacesDatas)) {
|
||
let values = [], names = [];
|
||
replacesDatas.forEach((d) => {
|
||
values.push(d.id);
|
||
names.push(d.lastname || d.name); // 人力按钮特殊处理
|
||
});
|
||
initdatas[key] = {
|
||
value: values.join(','),
|
||
valueSpan: names.join(','),
|
||
valueObj: replacesDatas
|
||
}
|
||
}
|
||
}
|
||
} else if (field.conditionType == 'DATE') {
|
||
let selectValue = '0', startValue = null, endValue = null;
|
||
if (!isEmpty(field.options)) selectValue = WeaTools.getSelectDefaultValue(field.options) || selectValue;
|
||
if (!isEmpty(field.value)) {
|
||
selectValue = field.value[field.domkey[0]];
|
||
startValue = field.value[field.domkey[1]];
|
||
endValue = field.value[field.domkey[2]];
|
||
}
|
||
initdatas[key] = {
|
||
value: [selectValue, startValue, endValue]
|
||
}
|
||
} else if (field.conditionType == 'SELECT') {
|
||
let value = WeaTools.getSelectDefaultValue(field.options);
|
||
if (field.value !== undefined) value = field.value;
|
||
if (value !== undefined) {
|
||
initdatas[key] = {
|
||
value: value
|
||
}
|
||
}
|
||
} else if (field.conditionType == 'SELECT_LINKAGE') {
|
||
let selectValue = WeaTools.getSelectDefaultValue(field.options) || '0';
|
||
initdatas[key] = {
|
||
value: [selectValue]
|
||
}
|
||
} else if (field.conditionType == "SCOPE") {
|
||
let sValue = field.startValue || '', eValue = field.endValue || '';
|
||
initdatas[key] = {
|
||
value: [sValue, eValue]
|
||
}
|
||
} else if (field.conditionType == 'RANGEPICKER') {
|
||
let sValue = field.startDate || field[field.domkey[0]] || '', eValue = field.endDate || field[field.domkey[1]] || '';
|
||
initdatas[key] = {
|
||
value: [sValue, eValue]
|
||
}
|
||
} else {
|
||
|
||
initdatas[key] = { value: field.value || "" };
|
||
}
|
||
|
||
});
|
||
});
|
||
return initdatas;
|
||
}
|
||
|
||
export const endDateDiff = (date,value) => {
|
||
let endDate = "2023-07-10";
|
||
$.ajax({
|
||
type: "get",
|
||
url: "api/proj/count/getTaskEndDate",
|
||
data: "begindate=" + date + "&value=" + value,
|
||
dataType: "text",
|
||
async: false,
|
||
success: function (data) {
|
||
endDate = data.endDate;
|
||
}
|
||
});
|
||
return endDate;
|
||
}
|
||
|
||
export const datediff = (sDate1, sDate2, sDate3, sDate4, manager, passnoworktime) => {
|
||
var aDate, oDate1, oDate2, iDays, odate3, odate4, tdate, otime1, otime2, oDatetime1, oDatetime2;
|
||
|
||
if (passnoworktime != 1) {
|
||
|
||
oDate1 = new Date(sDate1);
|
||
oDate2 = new Date(sDate2);
|
||
odate3 = new Date(sDate3);
|
||
odate4 = new Date(sDate4);
|
||
|
||
if (true || "" + oDate1.getFullYear() == "NaN") {
|
||
aDate = sDate1.split("-")
|
||
tdate = sDate3.split(":")
|
||
oDate1 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0]) //转换为12-18-2002格式
|
||
oDatetime1 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0] + " " + tdate[0] + ":" + tdate[1])
|
||
|
||
aDate = sDate2.split("-")
|
||
tdate = sDate4.split(":")
|
||
oDate2 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0])
|
||
oDatetime2 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0] + " " + tdate[0] + ":" + tdate[1])
|
||
|
||
}
|
||
if (oDate2 - oDate1 < 0) {
|
||
iDays = -1 //日期
|
||
} else if (oDate2 - oDate1 == 0) {
|
||
if (sDate4 < sDate3) {
|
||
iDays = -2 //时间
|
||
} else {
|
||
iDays = (Math.abs(oDatetime1 - oDatetime2) / 1000 / 60 / 60 / 24).toFixed(2)
|
||
}
|
||
} else {
|
||
iDays = (Math.abs(oDatetime1 - oDatetime2) / 1000 / 60 / 60 / 24).toFixed(2)
|
||
}
|
||
} else { //计算去掉不包含非工作日
|
||
|
||
$.ajax({
|
||
type: "post",
|
||
url: "/proj/process/GetWorkDays.jsp",
|
||
data: "begindate=" + sDate1 + "&begintime=" + sDate3 + "&enddate=" + sDate2 + "&endtime=" + sDate4 + "&manager=" + manager,
|
||
dataType: "text",
|
||
async: false,
|
||
success: function (data) {
|
||
iDays = data.trim();
|
||
}
|
||
});
|
||
}
|
||
|
||
return iDays;
|
||
|
||
}
|
||
|
||
export const openWindow = url => {
|
||
const width = screen.availWidth - 10;
|
||
const height = screen.availHeight - 50;
|
||
let szFeatures = 'top=0,';
|
||
szFeatures += 'left=0,';
|
||
szFeatures += `width=${width},`;
|
||
szFeatures += `height=${height},`;
|
||
szFeatures += 'directories=no,';
|
||
szFeatures += 'status=yes,toolbar=no,location=no,';
|
||
szFeatures += 'menubar=no,';
|
||
szFeatures += 'scrollbars=yes,';
|
||
szFeatures += 'resizable=yes';
|
||
window.open(url, '', szFeatures);
|
||
};
|
||
|
||
window.openFullWindowHaveBar = openWindow;
|
||
window.openFullWindowForXtable = openWindow;
|
||
|
||
window.prjOpenPage = function (routeUrl) {
|
||
window.open((window.ecologyContentPath || '')+"/spa/prj/index.html#" + routeUrl, "_blank");
|
||
}
|
||
|
||
//打开附件
|
||
window.openProjectDiscussDoc = (t, showid, prjid,auth_url) => {
|
||
openFullWindowHaveBar(`${window.ecologyContentPath || ''}/spa/document/index2file.jsp?id=${showid}&isOpenFirstAss=1&prjid=${prjid}${auth_url}`)
|
||
}
|
||
//打开附件
|
||
window.openProjectDiscussDownload = (t, showid, prjid,auth_url) => {
|
||
window.open(`${window.ecologyContentPath || ''}/weaver/weaver.file.FileDownload?fileid=${showid}&download=1&prjid=${prjid}${auth_url}`)
|
||
}
|
||
|
||
window.openProjectAppLink = (linkType, linkid, prjid,auth_url) => {
|
||
if (linkType == 'doc')
|
||
window.open(`${window.ecologyContentPath || ''}/spa/document/index.jsp?id=${linkid}&prjid=${prjid}${auth_url}`)
|
||
else if (linkType == 'task')
|
||
window.open(`${window.ecologyContentPath || ''}/spa/prj/index.html#/main/prj/taskCard?taskid=${linkid}`)
|
||
else if (linkType == 'crm')
|
||
window.open(`${window.ecologyContentPath || ''}/spa/crm/static/index.html#/main/crm/customerView?customerId=${linkid}`)
|
||
else if (linkType == 'workflow')
|
||
window.open(`${window.ecologyContentPath || ''}/spa/workflow/static4form/index.html#/main/workflow/req?fromModul=meeting&modulResourceId=${prjid}&requestid=${linkid}${auth_url}`)
|
||
else if (linkType == 'project')
|
||
window.open(`${window.ecologyContentPath || ''}/spa/prj/index.html#/main/prj/projectCard?prjid=${linkid}`)
|
||
else
|
||
return false
|
||
}
|
||
|
||
// openFullWindowForXtable("/spa/proj/index.html#/main/proj/taskCard?taskid="+1) //标签页打开
|
||
// prjOpenPage("/main/proj/taskCard?taskid="+1) //新窗口打开
|
||
|
||
export const cptAddFormRules = (condition = []) => {
|
||
condition.map(c => {
|
||
let items = [];
|
||
c.items.map((field, index) => {
|
||
if (field.conditionType == "BROWSER") {
|
||
if (field.browserConditionParam.viewAttr == "3") {
|
||
field.rules = 'required|string'// 校验规则
|
||
}
|
||
} else {
|
||
if (field.viewAttr == "3") {
|
||
field.rules = 'required|string'// 校验规则
|
||
}
|
||
}
|
||
})
|
||
});
|
||
return condition;
|
||
}
|
||
|
||
export const changeToThousand = (s) => {//千分位显示
|
||
if (s && s.toString().indexOf('-') == 0) {
|
||
if (isNaN(s)) {//js自己的方法检验数字
|
||
return s;
|
||
} else {
|
||
s = parseFloat(s);//去除首位输入的0,如002,小数不影响parseFloat字符串转数字
|
||
s = s.toString().replace('-', "");
|
||
s = s.replace(/^(\d*)$/, "$1.");
|
||
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
|
||
s = s.replace(".", ",");
|
||
var re = /(\d)(\d{3},)/;
|
||
while (re.test(s))
|
||
s = s.replace(re, "$1,$2");
|
||
s = s.replace(/,(\d\d)$/, ".$1");
|
||
return '-' + s.replace(/^\./, "0.");
|
||
}
|
||
} else {
|
||
if (isNaN(s)) {//js自己的方法检验数字
|
||
return s;
|
||
} else {
|
||
s = parseFloat(s);//去除首位输入的0,如002,小数不影响parseFloat字符串转数字
|
||
s = s.toString();
|
||
s = s.replace(/^(\d*)$/, "$1.");
|
||
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
|
||
s = s.replace(".", ",");
|
||
var re = /(\d)(\d{3},)/;
|
||
while (re.test(s))
|
||
s = s.replace(re, "$1,$2");
|
||
s = s.replace(/,(\d\d)$/, ".$1");
|
||
return s.replace(/^\./, "0.");
|
||
}
|
||
}
|
||
}
|
||
|
||
export function judgeIsNumber(val) {
|
||
if (val === null || typeof val === "undefined")
|
||
return false;
|
||
const reg = /^(-?\d+)(\.\d+)?$/;
|
||
return reg.test(val.toString());
|
||
}
|
||
|
||
export const convertFloatValue = (realval, decimals, transQfw, transAbs) => { //值 位数 是否转换千分位 绝对值
|
||
if (!judgeIsNumber(realval)) //非数值直接返回原始值
|
||
return realval;
|
||
realval = realval.toString();
|
||
var formatval = "";
|
||
if (decimals === 0) { //需取整
|
||
formatval = Math.round(parseFloat(realval)).toString();
|
||
} else {
|
||
var n = Math.pow(10, decimals);
|
||
formatval = (Math.round(parseFloat(realval) * n) / n).toString();
|
||
var pindex = formatval.indexOf(".");
|
||
var pointLength = pindex > -1 ? formatval.substr(pindex + 1).length : 0; //当前小数位数
|
||
if (decimals > pointLength) { //需补零
|
||
if (pindex == -1)
|
||
formatval += ".";
|
||
for (var i = 0; i < decimals - pointLength; i++) {
|
||
formatval += "0";
|
||
}
|
||
}
|
||
}
|
||
var index = formatval.indexOf(".");
|
||
var intPar = index > -1 ? formatval.substring(0, index) : formatval;
|
||
var pointPar = index > -1 ? formatval.substring(index) : "";
|
||
//取绝对值
|
||
if (transAbs === true) { //取绝对值
|
||
intPar = Math.abs(intPar).toString();
|
||
}
|
||
if (transQfw === true) { //整数位format成千分位
|
||
var reg1 = /(-?\d+)(\d{3})/;
|
||
while (reg1.test(intPar)) {
|
||
intPar = intPar.replace(reg1, "$1,$2");
|
||
}
|
||
}
|
||
formatval = intPar + pointPar;
|
||
return formatval;
|
||
}
|
||
|
||
export const imgZoom = (dom, parentSelector) => {
|
||
let imgList = jQuery(parentSelector + " img",dom);
|
||
imgList.each((index,img) => {
|
||
let $img = $(img);
|
||
if ($img.attr("resize")) {
|
||
return;
|
||
}
|
||
if ($img.parents(".ui-coomixPic").length > 0) {
|
||
return;
|
||
}
|
||
$img.css({"max-width": "400px", "max-height" : "400px"}).attr("resize", 1).coomixPic({
|
||
path:'/blog/js/weaverImgZoom/images',
|
||
preload:true,
|
||
blur: true,
|
||
left: getLabel(26921, '向左转'),
|
||
right: getLabel(26922, '向右转'),
|
||
source: getLabel(26923, '查看原图'),
|
||
hide: getLabel(26985, '收起')
|
||
});
|
||
});
|
||
}; |