230 lines
6.3 KiB
JavaScript
230 lines
6.3 KiB
JavaScript
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;
|
||
}
|
||
} |