UNPKG

logwire-wms-pda-ui

Version:

运匠科技wms-PDA基础组件库

151 lines (123 loc) 3.45 kB
/* * 解析扫描内容 * @author 张文 * @date 2022-02-11 * */ /** * 批量解析函数,项目无需使用 * @author 张文 * @date 2021-06-10 * @param {Object} obj val-输入框键入的值或扫描得到的值; * keyList-使用的解析规则的key的集合; * index - 当前解析到的数组角标; * rule - 解析规则; * @return {Object} 返回对象{success,val,key,data}, * success-是否成功解析; * val-解析前的val; * key-成功解析的规则; * data-解析后的对象,如果未传入keyList或解析失败则返回空对象 * */ function analysis({val, keyList, index, rule}) { try { const obj = rule[keyList[index]](val) return { success: true, val, key: keyList[index], data: obj } } catch (err) { if (index + 1 < keyList.length) { return analysis({val, keyList, index:index +1, rule}) } else { return { success: false, val, key: '', data: {} } } } } // 解析方法,暴露给项目使用 export const ScanRule = { /** * 设置规则 * @author 张文 * @param {Object} data 规则数据,必须为object * @return Boolean * */ set(data){ if (typeof data === "object" && Object.keys(data).length) { window.lwWindowGlobalData.set('scanRule', data) return true } console.warn('设置条码解析规则失败,请检查数据类型是否为object,且不为空') console.warn(data) return false }, // 获取扫描解析规则 get() { return window.lwWindowGlobalData.get('scanRule') }, /** * 解析条码数据 * @author 张文 * @date 2022-01-18 * @param {String} val 输入框键入的值或扫描得到的值 * @param {String} [key=''] 使用的解析规则的key,可选 * @return {Object} 返回对象{success,val,key,data}, * success-是否成功解析; * val-解析前的val; * key-成功解析的规则; * data-解析后的对象,如果未传入key或解析失败则返回空对象 * */ getData(val, key = '') { let rule = this.get() // 判断是否传入截取规则 if (key.length) { try { const obj = rule[key](val) return { success: true, val, key, data: obj } } catch (err) { console.warn('输入框解析错误:', err) } } return { success: false, val, key, data: {} } }, /** * 多规则解析数据 * @author 张文 * @date 2021-06-10 * @param {String} val 输入框键入的值或扫描得到的值 * @param {Array} keyList 使用的解析规则的key的集合 * @return {Object} 返回对象{success,val,key,data}, * success-是否成功解析; * val-解析前的val; * key-成功解析的规则; * data-解析后的对象,如果未传入keyList或解析失败则返回空对象 * */ getListData(val, keyList = []) { // 判断是否是手动输入数据,并且是否传入截取规则 if (keyList.length) { let rule = this.get() return analysis({val, keyList, index:0, rule}) } return { success: false, val, key: '', data: {} } }, }