middle-admin-ant/src/application/mk/libs/function/funs.js

230 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import XEUtils from 'xe-utils' // 加载xe-utils
import JSONbig from 'json-bigint'
import guid from './guid' // 加载modal
export default {
toBigInt(id) {
return JSONbig.parse(`{"v":${id}}`).v;
},
trim(str) {
return str.replace(/^\s+|\s+$/gm, '');
},
getGuid() {
return new guid().newGUID();
},
getDateString(cellValue) {
if (!cellValue) {
return '';
}
if (typeof (cellValue) == "number") {
cellValue = new Date(cellValue * 1000);
}
return XEUtils.toDateString(cellValue, 'yyyy-MM-dd HH:mm:ss')
},
getDateTime(cellValue) {
this.getDateString(cellValue);
},
getDate(cellValue) {
if (!cellValue) {
return '';
}
if (typeof (cellValue) == "number") {
cellValue = new Date(cellValue * 1000);
}
return XEUtils.toDateString(cellValue, 'yyyy-MM-dd')
},
formatEnum(cellValue, options) { // 格式化状态
if (cellValue == null) return '';
for (let i = 0; i < options.length; i++) {
if (options[i].value == cellValue) {
return '' + options[i].label + '';
}
}
return '';
},
formatDetailData({data, rules}) {
if (data.create_time) {
data.create_time = new Date(data.create_time * 1000);
}
if (data.update_time) {
data.update_time = new Date(data.update_time * 1000);
}
let feachRules = (rules) => {
rules.forEach(rule => { // 循环规则
if (rule.children && rule.children.length) {
feachRules(rule.children);
}
if (!rule.dataRule) {
return;
}
if (rule.dataRule.initType == "object" && data[rule.dataRule.idField]) {
data[rule.field] = {id: data[rule.dataRule.idField], name: data[rule.dataRule.textField]};
}
if (rule.field in data) { // 如果字段在数据中
let value = data[rule.field]; // 获取值
if (rule.dataRule.type == "timestamp" && value) { // 如果是时间戳
data[rule.field] = new Date(value * 1000);
}
if (rule.dataRule.isSelect) {
if (value == 0) {
data[rule.field] = null;
}
}
}
});
};
if (rules) {
feachRules(rules);
}
return data;
},
//格式化提交的明细类型 字段
//如果要提交的数据(value) 已经不存在 原有数据 (oldlistdata) 那么需要把id放到 value.deleteList
formatPostFieldValue({dataId, oldlistdata, value}) {
if (!dataId) {
return;
}
if (!oldlistdata) {
return;
}
if (!value) {
return;
}
if (!value.insertList) {
return;
}
oldlistdata.forEach(item => {
if (!item.id) {
return;
}
let exist1 = value.insertList.filter(a => a.id && a.id.toString() == item.id.toString()).length;
let exist2 = value.updateList.filter(a => a.id && a.id.toString() == item.id.toString()).length;
let exist3 = value.deleteList.filter(a => a == item.id.toString()).length;
if (!exist1 && !exist2 && !exist3) {
value.deleteList.push(item.id.toString());
}
})
return value;
},
getPostFieldValue({dataId, list, type, deletedList, fieldName, rowFilter, dataRule}) {
let d = {};
console.log(list)
if (rowFilter) {
list = list.filter(rowFilter);
}
if (dataRule) {
list.forEach(item => {
dataRule.forEach(rule => {
let value = item[rule.field];
if (rule.type == "integer") {
if (value == null) {
item[rule.field] = null;
} else {
if (!value) {
value = 0;
}
item[rule.field] = parseInt(value);
}
} else if (rule.type == "number" || rule.type == "float") {
if (value == null) {
item[rule.field] = null;
} else {
if (!value) {
value = 0;
}
item[rule.field] = parseFloat(value);
}
} else if (rule.type == "timestamp") {
if (value) {
if (typeof (value) == 'string') {
item[rule.field] = parseInt(new Date(value).getTime() / 1000);
}
} else {
item[rule.field] = null;
}
} else if (rule.type == "bigint") {
if (!item[rule.field]) {
item[rule.field] = null;
} else {
if (typeof (item[rule.field]) == 'string') {
item[rule.field] = JSONbig.parse(`{"v":${item[rule.field]}}`).v;
}
}
}
})
})
}
if (fieldName) {
list.forEach(item => {
item[fieldName] = dataId;
})
}
if (dataId && type !== 'array') {
d = {
insertList: [],
updateList: [],
deleteList: []
};
list.forEach(item => {
if (item.id) {
d.updateList.push(item);
} else {
d.insertList.push(item);
}
});
deletedList.forEach(item => {
d.deleteList.push(item);
})
} else {
d = list;
}
return d;
}
}