mt-ui-components-vue3
Version:
玛果添实UI组件库(Vue3)
229 lines • 7.02 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _extends from "@babel/runtime/helpers/esm/extends";
import { cloneDeep, isFunction, isString } from 'lodash-es';
import { termType } from './setting';
import './typing';
/**
* 处理like,nlike特殊值
* @param v
*/
export var handleLikeValue = function handleLikeValue(v) {
if (isString(v)) {
return v.split('').reduce(function (pre, next) {
var _next = next;
if (next === '\\') {
_next = '\\\\';
} else if (next === '%') {
_next = '\\%';
}
return pre + _next;
}, '');
}
return v;
};
var handleItemValue = function handleItemValue(item, columnOptionMap) {
var _item = columnOptionMap.get(item.column);
if (!_item) return item;
if (_item.rename) {
item.column = _item.rename;
}
if (_item.handleValue && isFunction(_item.handleValue)) {
item.value = _item.handleValue(item.value);
}
if (['like', 'nlike'].includes(item.termType) && !!item.value) {
item.value = "%".concat(handleLikeValue(item.value), "%");
}
return item;
};
/**
* 处理为外部使用
* @terms {Array} 表单数据
* @columnOptionMap {Map} column的Map对象
*/
export var termsParamsFormat = function termsParamsFormat(terms, columnOptionMap) {
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'adv';
var searchType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'terms';
// 过滤掉terms中value无效的item
var cloneParams = cloneDeep(terms);
if (searchType == 'terms') {
if (type === 'adv') {
return {
terms: cloneParams.terms.map(function (item) {
if (item.terms) {
item.terms = item.terms.filter(function (iItem) {
return iItem && iItem.value !== undefined && iItem.value !== '' && iItem.column !== undefined;
}).map(function (iItem) {
return handleItemValue(iItem, columnOptionMap);
});
}
return item;
}).filter(function (item) {
return item.terms.length;
})
};
} else {
console.log('cloneParams', cloneParams);
return cloneParams.filter(function (iItem) {
return iItem && iItem.value !== undefined && iItem.value !== '' && iItem.column !== undefined;
}).map(function (iItem) {
return handleItemValue(iItem, columnOptionMap);
});
}
} else if (searchType == 'object') {
var result = {};
cloneParams.filter(function (item) {
return item && item.value !== undefined && item.value !== '';
}).forEach(function (item) {
_extends(result, _defineProperty({}, item.column, item.value));
});
return result;
}
};
/**
* TreeSelect过滤
* @param value 过滤值
* @param treeNode
* @param key
*/
export var filterTreeSelectNode = function filterTreeSelectNode(value, treeNode) {
var _treeNode$key;
var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'name';
return (_treeNode$key = treeNode[key]) === null || _treeNode$key === void 0 ? void 0 : _treeNode$key.includes(value);
};
/**
* Select过滤
* @param value 过滤值
* @param option
* @param key
*/
export var filterSelectNode = function filterSelectNode(value, option) {
var _option$key;
var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'label';
return (_option$key = option[key]) === null || _option$key === void 0 ? void 0 : _option$key.includes(value);
};
export var handleQData = function handleQData(terms) {
// 排序, null 往后放
terms.terms.forEach(function (a) {
for (var i = 0; i < a.terms.length; i++) {
for (var j = 0; j < a.terms.length - i - 1; j++) {
if (!a.terms[j] && a.terms[j + 1]) {
var temp = a.terms[j];
a.terms[j] = a.terms[j + 1];
a.terms[j + 1] = temp;
}
}
}
});
return terms;
};
export var hasExpand = function hasExpand(terms) {
var itemCount = 0;
terms.forEach(function (a) {
a.terms.forEach(function (b) {
if (b) {
itemCount += 1;
}
});
});
return itemCount >= 2;
};
export var compatibleOldTerms = function compatibleOldTerms() {
var q = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '{"terms":[{"terms":[{"column":"name","termType":"like","value":"111","type":"and"}]}]}';
var _terms = [{
terms: [null, null, null]
}, {
terms: [null, null, null],
type: 'and'
}];
try {
var _terms$terms;
var terms = JSON.parse(q || '{}');
(_terms$terms = terms.terms) === null || _terms$terms === void 0 ? void 0 : _terms$terms.forEach(function (a, aIndex) {
var _a$terms;
a === null || a === void 0 ? void 0 : (_a$terms = a.terms) === null || _a$terms === void 0 ? void 0 : _a$terms.forEach(function (b, bIndex) {
_terms[aIndex].terms[bIndex] = b;
});
if (a.type) {
_terms[aIndex].type = a.type;
}
});
return {
terms: _terms
};
} catch (e) {
return {
terms: _terms
};
}
};
export var handleParamsToString = function handleParamsToString() {
var terms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'and';
var _terms = [{
terms: [null, null, null]
}, {
terms: [null, null, null],
type: type
}];
var termsIndex = 0;
var termsStar = 0;
terms.forEach(function (item, index) {
if (index > 2) {
termsIndex = 1;
termsStar = 4;
}
_terms[termsIndex].terms[index - termsStar] = item;
});
return JSON.stringify({
terms: _terms
});
};
export var getTermTypeFn = function getTermTypeFn(type, column) {
if (column !== null && column !== void 0 && column.includes('id') && type === 'string') {
// 默认id为 eq
return 'eq';
}
switch (type) {
case 'select':
case 'treeSelect':
case 'number':
return 'eq';
case 'date':
case 'time':
return 'gt';
case 'timeRange':
case 'rangePicker':
return 'btw';
default:
return 'like';
}
};
export var getTermTypes = function getTermTypes(types) {
return termType.filter(function (item) {
return types.includes(item.value);
});
};
export var getTermOptions = function getTermOptions(type, column) {
var keys = [];
switch (type) {
case 'select':
case 'treeSelect':
keys = column !== null && column !== void 0 && column.includes('state') ? ['not'] : ['eq'];
break;
case 'time':
case 'date':
keys = ['gt', 'lt'];
break;
case 'timeRange':
case 'rangePicker':
keys = ['btw', 'nbtw'];
break;
case 'number':
keys = ['eq'];
break;
default:
keys = column !== null && column !== void 0 && column.includes('id') && type === 'string' ? ['eq'] : ['like', 'nlike'];
break;
}
return keys.length ? getTermTypes(keys) : termType;
};