import path from 'path'; const SIGN_REGEXP = /([yMdhsm])(\1*)/g; const DEFAULT_PATTERN = 'yyyy-MM-dd hh:mm:ss'; /** * 时间处理视图格式 * @param s * @param {number} len * @return {any} */ function padding(s: any, len: number) { len = len - (s + '').length; for (let i = 0; i < len; i++) { s = '0' + s; } return s; } /** * 处理数据格式 * @param filterField * @param jsonData * @return {any} */ function formatExportJson(filterField, jsonData) { return jsonData.map(function (dataObj) { return filterField.map(function (field) { let fieldObj = dataObj[field]; if (!fieldObj) fieldObj = "--"; return fieldObj; }); }); } const formatDate = { /** * 处理时间格式 * @param date 时间 * @param pattern 时间数据格式模板 * @return {any} */ format: function (date: any, pattern?: any) { pattern = pattern || DEFAULT_PATTERN; return pattern.replace(SIGN_REGEXP, function ($0) { switch ($0.charAt(0)) { case 'y': return padding(date.getFullYear(), $0.length); case 'M': return padding(date.getMonth() + 1, $0.length); case 'd': return padding(date.getDate(), $0.length); case 'w': return date.getDay() + 1; case 'h': return padding(date.getHours(), $0.length); case 'm': return padding(date.getMinutes(), $0.length); case 's': return padding(date.getSeconds(), $0.length); } }); }, /** * 处理时间为时间戳 * @param date 时间 * @param pattern 时间数据格式模板 * @return {any} */ parse: function (dateString: any, pattern?: any) { const matchs1 = pattern.match(SIGN_REGEXP); const matchs2 = dateString.match(/(\d)+/g); if (matchs1.length === matchs2.length) { const _date = new Date(1970, 0, 1); for (let i = 0; i < matchs1.length; i++) { const _int = parseInt(matchs2[i], 0); const sign = matchs1[i]; switch (sign.charAt(0)) { case 'y': _date.setFullYear(_int); break; case 'M': _date.setMonth(_int - 1); break; case 'd': _date.setDate(_int); break; case 'h': _date.setHours(_int); break; case 'm': _date.setMinutes(_int); break; case 's': _date.setSeconds(_int); break; } } return _date; } return null; } }; export default { formatDate: formatDate, getQueryStringByName: function (name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); let r = window.location.search.substr(1).match(reg); let context = ""; if (r != null) context = r[2]; reg = null; r = null; return context == null || context === "" || context === "undefined" ? "" : context; }, /** * 随机创建id * @param {string} params * @return {string} */ createRandomId: function (params: string) { return params + (Math.random() * 10000000).toString(16).substr(0, 4) + (new Date()).getTime().toString(16).substr(10, 4); }, /** * 构建动态函数 * @param params 参数 * @param {string} valueFunc 执行函数的逻辑操作代码 * @param {any} _self 当前this * @return {any} */ createFunction(params: any, valueFunc: string, _self: any) { const paras: any = [], result: any = []; Object.keys(params).forEach((key: string) => { paras.push(key); result.push(params[key]); }); let FunctionBody = ' const self = this.ctx;'; FunctionBody += valueFunc; return new Function(paras.join(','), FunctionBody).apply(_self, result); }, /** * 处理路径 * @param {string} routePath * @param {string} basePath * @return {any} */ resolvePath(routePath: string, basePath?: string) { return (path as any).resolve(basePath, routePath); }, generateUUID() { let d = new Date().getTime(); const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { const r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); }); return uuid; }, swapArray(arr, index1, index2) { arr[index1] = arr.splice(index2, 1, arr[index1])[0]; return arr; }, // 处理字符串html格式 formatHTML(content: string) { content = "" + content; return content.replace(/</g, "<") .replace(/>/g, ">") .replace(/&/g, "&") .replace(/"/g, '"') .replace(/'/g, "'"); }, /** * @param {string} url * @returns {Object} */ param2Obj(url: string) { const search = url.split('?')[1]; if (!search) return {}; return JSON.parse( '{"' + decodeURIComponent(search) .replace(/"/g, '\\"') .replace(/&/g, '","') .replace(/=/g, '":"') .replace(/\+/g, ' ') + '"}' ); } };