mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-13 23:20:12 +08:00
293 lines
7.8 KiB
JavaScript
293 lines
7.8 KiB
JavaScript
import { convertValueFromGRPC } from '@/api/ADempiere/data'
|
|
|
|
// Decode a HTML text
|
|
export function decodeHtml(text) {
|
|
var processMetadata = document.createElement('div')
|
|
processMetadata.innerHTML = text
|
|
return processMetadata.childNodes[0].nodeValue
|
|
}
|
|
|
|
/**
|
|
* Checks if value is empty. Deep-checks arrays and objects
|
|
* Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false
|
|
* @param {boolean|array|object|number|string} value
|
|
* @returns {boolean}
|
|
*/
|
|
export function isEmptyValue(value) {
|
|
if (value === undefined || value == null) {
|
|
return true
|
|
} else if (value === -1 || value === '-1') {
|
|
return true
|
|
} else if (typeof value === 'string') {
|
|
return Boolean(!value.trim().length)
|
|
} else if (typeof value === 'function' || typeof value === 'number' || typeof value === 'boolean' || Object.prototype.toString.call(value) === '[object Date]') {
|
|
return false
|
|
} else if (Object.prototype.toString.call(value) === '[object Map]' && value.size === 0) {
|
|
return true
|
|
} else if (Array.isArray(value)) {
|
|
return Boolean(!value.length)
|
|
} else if (typeof value === 'object') {
|
|
return Boolean(!Object.keys(value).length)
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
export function typeValue(value) {
|
|
if (typeof value === 'undefined' || value == null) {
|
|
return value
|
|
} else if (typeof value === 'string') {
|
|
return 'STRING'
|
|
} else if (typeof value === 'function') {
|
|
return 'FUNCTION'
|
|
} else if (typeof value === 'number') {
|
|
if (value.isInteger()) {
|
|
return 'INTEGER'
|
|
} else {
|
|
return 'NUMBER'
|
|
}
|
|
} else if (typeof value === 'boolean') {
|
|
return 'BOOLEAN'
|
|
} else if (Object.prototype.toString.call(value) === '[object Date]') {
|
|
return 'DATE'
|
|
} else if (Array.isArray(value)) {
|
|
return 'ARRAY'
|
|
} else if (typeof value === 'object') {
|
|
return 'OBJECT'
|
|
}
|
|
return value
|
|
}
|
|
|
|
/**
|
|
* zero pad
|
|
* @param {number} number
|
|
* @param {number} pad
|
|
* @returns {string}
|
|
*/
|
|
export function zeroPad(number, pad = 2) {
|
|
var zero = Number(pad) - number.toString().length + 1
|
|
return Array(+(zero > 0 && zero)).join('0') + number
|
|
}
|
|
|
|
/**
|
|
* Get date and time from client in a object value
|
|
* @param {string} type Type value of return
|
|
* @returns {object|string}
|
|
*/
|
|
export function clientDateTime(date = null, type = '') {
|
|
if (date == null || date === undefined || (typeof date === 'string' && date.trim() === '')) {
|
|
// instance the objet Data with current date from client
|
|
date = new Date()
|
|
} else {
|
|
// instance the objet Data with date or time send
|
|
date = new Date(date)
|
|
}
|
|
|
|
const currentDate = date.getFullYear() +
|
|
'-' + zeroPad(date.getMonth() + 1) +
|
|
'-' + zeroPad(date.getDate())
|
|
|
|
const currentTime = date.getHours() +
|
|
':' + date.getMinutes() +
|
|
':' + date.getSeconds()
|
|
|
|
const currentDateTime = {
|
|
date: currentDate,
|
|
time: currentTime
|
|
}
|
|
|
|
if (type.toLowerCase() === 't') {
|
|
// time format HH:II:SS
|
|
return currentDateTime.time
|
|
} else if (type.toLowerCase() === 'd') {
|
|
// date format YYYY-MM-DD
|
|
return currentDateTime.date
|
|
} else if (type.toLocaleLowerCase() === 'o') {
|
|
// object format
|
|
return currentDateTime
|
|
}
|
|
return currentDateTime.date + ' ' + currentDateTime.time
|
|
}
|
|
|
|
/**
|
|
* Convert a object to array pairs
|
|
* @param {object} objectToConvert, object to convert
|
|
* @param {string} nameKey, name from key in pairs
|
|
* @param {string} nameValue, name from value in pairs
|
|
* @returns {array} [ { nameKe: key, nameValue: value } ]
|
|
*/
|
|
export function convertObjectToArrayPairs(objectToConvert, nameKey = 'columnName', nameValue = 'value') {
|
|
var result = Object.keys(objectToConvert).map(key => {
|
|
var returnPairs = {}
|
|
returnPairs[nameKey] = key
|
|
returnPairs[nameValue] = objectToConvert[key]
|
|
return returnPairs
|
|
})
|
|
|
|
return result
|
|
}
|
|
|
|
/**
|
|
* Convert array pairs of object to simple object { key:value }
|
|
* @param {object} objectToConvert, object to convert
|
|
* @param {string} nameKey, name from key in pairs
|
|
* @param {string} nameValue, name from value in pairs
|
|
*/
|
|
export function convertArrayPairsToObject(arrayToConver, nameKey = 'columnName', nameValue = 'value') {
|
|
var result = {}
|
|
arrayToConver.forEach(element => {
|
|
result[element[nameKey]] = element[nameValue]
|
|
})
|
|
|
|
return result
|
|
}
|
|
|
|
export function convertValuesMapToObject(map) {
|
|
var objectConverted = {}
|
|
map.forEach((value, key) => {
|
|
var valueResult = map.get(key)
|
|
var tempValue
|
|
if (valueResult) {
|
|
tempValue = convertValueFromGRPC(value)
|
|
}
|
|
objectConverted[key] = tempValue
|
|
})
|
|
return objectConverted
|
|
}
|
|
|
|
export function convertMapToArrayPairs({
|
|
toConvert,
|
|
nameKey = 'columnName',
|
|
nameValue = 'value',
|
|
isGRPC = true
|
|
}) {
|
|
const result = []
|
|
if (toConvert) {
|
|
toConvert.forEach((value, key) => {
|
|
const element = {}
|
|
element[nameKey] = key
|
|
element[nameValue] = value
|
|
if (isGRPC) {
|
|
element[nameValue] = convertValueFromGRPC(value)
|
|
}
|
|
|
|
result.push(element)
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
export function convertHasMapToObject(hasMapToConvert) {
|
|
var result = {}
|
|
hasMapToConvert.forEach((value, key) => {
|
|
result[key] = value
|
|
})
|
|
return result
|
|
}
|
|
|
|
export function convertFieldListToShareLink(fieldList) {
|
|
var attributesListLink = ''
|
|
fieldList.map(fieldItem => {
|
|
// assign values
|
|
var value = fieldItem.value
|
|
var valueTo = fieldItem.valueTo
|
|
|
|
if (!isEmptyValue(value)) {
|
|
if (['FieldDate', 'FieldTime'].includes(fieldItem.componentPath) || typeof value === 'object') {
|
|
value = value.getTime()
|
|
}
|
|
attributesListLink += `${fieldItem.columnName}=${encodeURIComponent(value)}&`
|
|
}
|
|
|
|
if (fieldItem.isRange && !isEmptyValue(valueTo)) {
|
|
if (['FieldDate', 'FieldTime'].includes(fieldItem.componentPath) || typeof value === 'object') {
|
|
valueTo = valueTo.getTime()
|
|
}
|
|
attributesListLink += `${fieldItem.columnName}_To=${encodeURIComponent(valueTo)}&`
|
|
}
|
|
})
|
|
|
|
return attributesListLink.slice(0, -1)
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {*} param0
|
|
*/
|
|
export function parsedValueComponent({ fieldType, value, referenceType, isMandatory = false }) {
|
|
if (value === undefined || value === null) {
|
|
return undefined
|
|
}
|
|
var returnValue
|
|
|
|
switch (fieldType) {
|
|
// data type Number
|
|
case 'FieldNumber':
|
|
if (String(value).trim() === '') {
|
|
returnValue = undefined
|
|
if (isMandatory) {
|
|
returnValue = 0
|
|
}
|
|
} else if (typeof value === 'object' && value.hasOwnProperty('query')) {
|
|
returnValue = value
|
|
} else {
|
|
returnValue = Number(value)
|
|
}
|
|
break
|
|
|
|
// data type Boolean
|
|
case 'FieldYesNo':
|
|
if (value === 'false' || value === 'N') {
|
|
value = false
|
|
} else if (typeof value === 'object' && value.hasOwnProperty('query')) {
|
|
returnValue = value
|
|
}
|
|
returnValue = Boolean(value)
|
|
break
|
|
|
|
// data type String
|
|
case 'FieldText':
|
|
case 'FieldTextArea':
|
|
if (typeof value === 'object' && value.hasOwnProperty('query')) {
|
|
returnValue = value
|
|
}
|
|
returnValue = String(value)
|
|
break
|
|
|
|
// data type Date
|
|
case 'FieldDate':
|
|
case 'FieldTime ':
|
|
if (String(value).trim() === '') {
|
|
value = undefined
|
|
}
|
|
if (!isNaN(value)) {
|
|
value = Number(value)
|
|
}
|
|
if (typeof value === 'number') {
|
|
value = new Date(value)
|
|
}
|
|
if (typeof value === 'object' && value.hasOwnProperty('query')) {
|
|
returnValue = value
|
|
}
|
|
returnValue = value
|
|
break
|
|
|
|
case 'FieldSelect':
|
|
if (String(value).trim() === '') {
|
|
value = undefined
|
|
}
|
|
if (referenceType === 'TableDirect') {
|
|
if (value !== '' && value !== null && value !== undefined) {
|
|
value = Number(value)
|
|
}
|
|
} // Search or List
|
|
returnValue = value
|
|
break
|
|
|
|
default:
|
|
returnValue = value
|
|
break
|
|
}
|
|
return returnValue
|
|
}
|