UNPKG

k-collection

Version:

```js npm install --save k-collection ```

629 lines (568 loc) 24.3 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "fb15"); /******/ }) /************************************************************************/ /******/ ({ /***/ "9224": /***/ (function(module) { module.exports = JSON.parse("{\"name\":\"k-collection\",\"version\":\"0.0.6\",\"main\":\"lib/k-collection.umd.min.js\",\"files\":[\"lib\"],\"scripts\":{\"lib\":\"vue-cli-service build --target lib --name k-collection --dest lib packages/index.js\",\"start\":\"vue-cli-service serve\",\"serve\":\"vue-cli-service serve\",\"build\":\"vue-cli-service build\",\"lint\":\"vue-cli-service lint\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/karlkidd/k-collection.git\",\"giteeUrl\":\"https://gitee.com/karlkidd8080/k-collection.git\"},\"keywords\":[\"javascript\",\"node\",\"cookies\",\"compress\",\"compressImage\",\"copy\",\"copyText\",\"debounce\",\"throttle\",\"regExp\",\"k-collection\"],\"author\":\"karlkidd\",\"license\":\"MIT\",\"dependencies\":{\"babel-plugin-component\":\"^1.1.1\",\"babel-plugin-import\":\"^1.13.3\",\"core-js\":\"^3.6.5\",\"vue\":\"^2.6.11\"},\"devDependencies\":{\"@vue/cli-plugin-babel\":\"~4.5.0\",\"@vue/cli-plugin-eslint\":\"~4.5.0\",\"@vue/cli-service\":\"~4.5.0\",\"babel-eslint\":\"^10.1.0\",\"eslint\":\"^6.7.2\",\"eslint-plugin-vue\":\"^6.2.2\",\"lib-flexible\":\"^0.3.2\",\"vue-template-compiler\":\"^2.6.11\"},\"engines\":{\"node\":\"^12.13.0 || ^14.15.0 || >=9.0.0\"},\"eslintConfig\":{\"root\":true,\"env\":{\"node\":true},\"extends\":[\"plugin:vue/essential\",\"eslint:recommended\"],\"parserOptions\":{\"parser\":\"babel-eslint\"},\"rules\":{}},\"browserslist\":[\"> 1%\",\"last 2 versions\",\"not dead\"]}"); /***/ }), /***/ "fb15": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, "kRegExp", function() { return /* reexport */ kRegExp; }); __webpack_require__.d(__webpack_exports__, "kCompressImage", function() { return /* reexport */ kCompressImage; }); __webpack_require__.d(__webpack_exports__, "kUserAgent", function() { return /* reexport */ kUserAgent; }); __webpack_require__.d(__webpack_exports__, "kCookies", function() { return /* reexport */ kCookies; }); __webpack_require__.d(__webpack_exports__, "kCopyText", function() { return /* reexport */ kCopyText; }); __webpack_require__.d(__webpack_exports__, "kExportExcel", function() { return /* reexport */ packages_kExportExcel; }); __webpack_require__.d(__webpack_exports__, "kDateFormat", function() { return /* reexport */ packages_kDateFormat; }); __webpack_require__.d(__webpack_exports__, "kCloneDeep", function() { return /* reexport */ packages_kCloneDeep; }); __webpack_require__.d(__webpack_exports__, "kDebounce", function() { return /* reexport */ packages_kDebounce; }); __webpack_require__.d(__webpack_exports__, "kThrottle", function() { return /* reexport */ packages_kThrottle; }); __webpack_require__.d(__webpack_exports__, "version", function() { return /* reexport */ version; }); __webpack_require__.d(__webpack_exports__, "name", function() { return /* reexport */ packages_name; }); __webpack_require__.d(__webpack_exports__, "author", function() { return /* reexport */ author; }); __webpack_require__.d(__webpack_exports__, "license", function() { return /* reexport */ license; }); // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js // This file is imported into lib/wc client bundles. if (typeof window !== 'undefined') { var currentScript = window.document.currentScript if (false) { var getCurrentScript; } var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/) if (src) { __webpack_require__.p = src[1] // eslint-disable-line } } // Indicate to webpack that this file can be concatenated /* harmony default export */ var setPublicPath = (null); // CONCATENATED MODULE: ./packages/common-js/regExp.js /* harmony default export */ var regExp = ({ intReg:/^\d{1,}$/, floatReg:/^\d+\.\d+$/, numReg:/^[0-9.]+$/, IMEI:/^\d{15,17}$/, thunderx:/^thunderx?:\/\/[a-zA-Z\d]+=$/, ed2k:/^ed2k:\/\/\|file\|.+\|\/$/, magnet:/^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/, subnetmask:/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$/, AStockCode:/^(s[hz]|S[HZ])(000[\d]{3}|002[\d]{3}|300[\d]{3}|600[\d]{3}|60[\d]{4})$/, testScores:/^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:\.5)?$/, htmlComments:/<!--[\s\S]*?-->/g, UUID:/^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$/i, GUID:/^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$/i, version:/^\d+(?:\.\d+){2}$/, videoUrl:/^https?:\/\/(.+\/)+.+(\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i, imageUrl:/^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i, hoursFor12:/^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/, hoursFor24:/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/, amountOfMoney:/^-?\d+(,\d{3})*(\.\d{1,2})?$/, bankCard:/^[1-9]\d{9,29}$/, EnglishName:/(^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$)/, ChinaMObile:/^(?:(?:\+|00)86)?1[3-9]\d{9}$/, email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, emailCN:/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, numAndLetter:/^[A-Za-z0-9]+$/, EnglishLetter:/^[a-zA-Z]+$/, }); // CONCATENATED MODULE: ./packages/common-js/compressImg.js /** * * @param {*} file image file * @param {*} callBack callback function * @param {*} convertToBase64 file to base64 */ const compressImage = (file, callBack, convertToBase64 = false,ratio = 0.4) => { if(!regExp.numReg.test(ratio)){ ratio = 0.4 } if(file.type.indexOf('image') == -1){ return callBack(file) } let reader = new FileReader(); reader.readAsDataURL(file); // 读出 base64 reader.onloadend = ev => { let dataURL = ev.target.result; // 下面逻辑处理 let file_mb = dataURL.length / (1024.0 * 1024); console.log(2, file_mb); let img = new Image(); img.src = dataURL; if (file_mb <= 1) { return convertToBase64 ? callBack(ev.target.result) : callBack(file) } img.onload = () => { const canvas = document.createElement('canvas'); if (!canvas) { return convertToBase64 ? callBack(ev.target.result) : callBack(file) } const ctx = canvas.getContext('2d'); if (!ctx) { return convertToBase64 ? callBack(ev.target.result) : callBack(file) } const width = img.width; const height = img.height; canvas.width = width; canvas.height = height; ctx.fillStyle = '#fff'; ctx.fillRect(0, 0, width, height); ctx.drawImage(img, 0, 0, width, height); if (convertToBase64) { const base64 = canvas.toDataURL('image/jpeg', ratio) // 图片的质量默认是0.4,取值是 0 到 1,如果超出取值范围,将会使用默认值 0.92 console.log(base64) callBack(base64) return } canvas.toBlob(function (blob) { console.log(blob) callBack(blob) }, 'image/jpeg', ratio) }; }; }; /* harmony default export */ var compressImg = (compressImage); // CONCATENATED MODULE: ./packages/common-js/uaEnv.js let userAgent = ()=>{ return window.navigator.userAgent } let ua = userAgent().toLowerCase(); // 判断微信浏览器 // ua.match(/MicroMessenger/i) == "micromessenger" const isWx = ua.indexOf('micromessenger') > -1; // ios let uaType; if (ua.indexOf('iphone') > -1 || ua.indexOf('ipod') > -1 || ua.indexOf('ipad') > -1 || ua.indexOf('appleWebKit') > -1) { uaType = 'ios'; } else if (ua.indexOf('android') > -1 || ua.indexOf('adr') > -1) { uaType = 'android'; } else { uaType = 'other'; } const isIos = uaType === 'ios'; const isAdr = uaType === 'android'; /* harmony default export */ var uaEnv = ({ uaInfo: uaType, wx: isWx, ios: isIos, android: isAdr, wxIos: isWx && isIos, wxAdr: isWx && isAdr, userAgent:userAgent() }); // CONCATENATED MODULE: ./packages/common-js/cookie.js /** * Default 7 days * @param {*} time hours */ const expiresFun = (time)=>{ let times = '; max-age=' + (60 * 60 * 24 * 7 ); if(regExp.numReg.test(time)){ times = '; max-age=' + (60 * 60 * Number(time)) } // times = '; expires=' + expireTimes.toUTCString(); return times; } /** * Default location.host * @param {*} domains host */ const domainFun = (domains)=>{ let domainVal = domains || location.hostname; domainVal = '; domain=' + domainVal; return domainVal; } /** * Default path '/' * @param {*} domains host */ const pathFun = (paths)=>{ let pathVal = paths || '/'; pathVal = '; path=' + pathVal; return pathVal; } /** * harmony default export */ const handle_cookie = ({ install: function (Vue) { Vue.prototype.$cookies = this; }, setCookie(key,value,expires,domains,path) { if(key == null){ throw Error('You will use setCookie function, key must be Object or String, but you set key is null, Please check you code'); }else if(typeof key == 'undefined'){ throw Error('You will use setCookie function, key must be Object or String, but you set key is undefined, Please check you code'); }else if(typeof key == 'object'){ if(typeof key.key == 'string' && typeof key.value == 'string'){ doCookie(key.key, key.value, key.expires, key.domains, key.path,) }else{ throw Error('You will use setCookie function, key and value must be String, Please check you code'); } }else{ if(typeof key == 'string' && typeof value == 'string'){ doCookie(key, value, expires, domains, path,) }else{ throw Error('You will use setCookie function, key and value must be String, Please check you code'); } } }, setCookieObj(obj) { if(obj == null){ throw Error('You will use setCookie function, key must be Object, but you set key is null, Please check you code'); }else if(typeof obj == 'undefined'){ throw Error('You will use setCookie function, key must be Object, but you set key is undefined, Please check you code'); }else if(typeof obj == 'string'){ throw Error('You will use setCookie function, key must be Object, but you set key is string, Please check you code'); }else{ if(typeof obj.key == 'string' && typeof obj.value == 'string'){ doCookie(obj.key, obj.value, obj.expires, obj.domains, obj.path,) }else{ throw Error('You will use setCookie function, key and value must be String, Please check you code'); } } }, getCookie(name) { var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); var arr = document.cookie.match(reg); return arr ? unescape(arr[2]) : null; }, delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = this.getCookie(name); if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); }, isKey(key) { let res = this.keys().includes(key); return res; }, cookiesObj() { let _objs = [] let _string = document.cookie if (_string){ let oArr = _string.split('; ') for(let i in oArr){ let item = oArr[i].split('='); _objs[item[0]] = item[1] } } return _objs; }, getKeys() { let objs = this.cookiesObj(); let _keys = Object.keys(objs) return _keys; }, }); /** * * @param {*} obj */ const doCookie = (key,value,expires,domains,path)=>{ value = value || ''; expires = expiresFun(expires); domains = domainFun(domains); path = pathFun(path); document.cookie = key + '=' + value + '; ' + expires + domains + path; } /* harmony default export */ var cookie = (handle_cookie); // CONCATENATED MODULE: ./packages/common-js/copy.js /** * * @param {*} value text * @returns */ function copyText(value){ let oInput = document.createElement("input"); oInput.value = value; document.body.appendChild(oInput); oInput.select(); // 选择对象 if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//兼容ios oInput.setSelectionRange(0, oInput.value.length); } document.execCommand("Copy"); // 执行浏览器复制命令 document.body.removeChild(oInput); return new Promise((resolve)=>{ resolve(value); }) } /* harmony default export */ var copy = (copyText); // CONCATENATED MODULE: ./packages/common-js/exportExcel.js /** * 列表数据导出 * @param httpPrivate//接口类 * @param listParams 查询参数,页码等等 * @param ExcelName 导出文件名 * @param thData 表头 , 隔开 * @param interfaceUrl 轮询查询接口 * @param limit 最大查询条数 * @param callBackUfn 查询结束回调函数(下载)非必要参数,配合下文的_使用this * @param _this 调用的作用域,做导出回调用,例如导出成功关闭loading等,非必要参数 * @param thKeyList 表头定制,有的表头导出不需要,则自定义传入,然后匹配key值,非必要参数 * @param exportStr 分页轮巡查询的表头累加数据,这里需要从调用位置传空字符串即可 */ function kExportExcel(interfaceParameters) { let listParamsClone={}; listParamsClone={...interfaceParameters.listParams}//深拷贝,避免修改调用位置的分页数量 listParamsClone.limit = interfaceParameters.limit; let exportTotalPages=''; interfaceParameters.httpPrivate.post(interfaceParameters.interfaceUrl, listParamsClone).subscribe((res) => { if (res.errno == 0) { exportTotalPages = res.data.paging.totalPages; //要导出的数据 let dataStr = res.data.body if (listParamsClone.page == 1) { //列标题,逗号隔开,每一个逗号就是隔开一个单元格 interfaceParameters.exportStr = `${interfaceParameters.thData}`; } //增加\t为了不让表格显示科学计数法或者其他格式 for (let i = 0; i < dataStr.length; i++) { interfaceParameters.exportStr += `${(listParamsClone.page - 1) * listParamsClone.limit + i + 1 + '\t'},`; if(interfaceParameters.thKeyList&&interfaceParameters.thKeyList.length>0){ interfaceParameters.thKeyList.forEach(element => { interfaceParameters.exportStr += `${dataStr[i][element] + '\t'},` }); }else{ for (var key in dataStr[i]){ interfaceParameters.exportStr += `${dataStr[i][key] + '\t'},` } } interfaceParameters.exportStr += '\n'; } if (listParamsClone.page < exportTotalPages) { listParamsClone.page++; setTimeout(() => { kExportExcel(interfaceParameters) // 回调本身 }, 500); } else { if(interfaceParameters._this){ interfaceParameters._this.callBackUfn(interfaceParameters._this)//结束回调,例如loading结束加载 } //encodeURIComponent解决中文乱码 let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(interfaceParameters.exportStr); //通过创建a标签实现 var link = document.createElement("a"); link.href = uri; //对下载的文件命名 link.download = `${interfaceParameters.ExcelName}.csv`; document.body.appendChild(link); link.click(); document.body.removeChild(link); } } }); } /* harmony default export */ var exportExcel = (kExportExcel); // CONCATENATED MODULE: ./packages/common-js/dateFormat.js /** * * @param fmt 时间格式 yyyy-MM-dd hh:mm:ss 中间分隔符可自定义,例如:yyyy/MM/dd hh:mm:ss yyyy年MM月dd日 hh时mm分ss秒 * @param date 需要格式化的日期数据 * @returns {*} 格式化后的数据 */ function kDateFormat(fmt, date) { let ret; const opt = { "y+": date.getFullYear().toString(), // 年 "M+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "h+": date.getHours().toString(), // 时 "m+": date.getMinutes().toString(), // 分 "s+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) } } return fmt; } /* harmony default export */ var dateFormat = (kDateFormat); // CONCATENATED MODULE: ./packages/common-js/auth.js /** * 深克隆 * @param v//传入要操作的数组即可 */ const kCloneDeep = v => { // 不是对象则返回原来的值,过滤掉Date和Regexp if (v === null) return v; if (typeof v !== "object") return v; if (v instanceof Date) return new Date(v); if (v instanceof RegExp) return new RegExp(v); const retObj = new v.constructor(); // 获取当前对象的构造器,新建一个空对象,Array/Object for (const key in v) { retObj[key] = kCloneDeep(v[key]); } return retObj; }; /** * @desc 函数防抖,用于将多次执行变为最后一次执行 * @param {function} fn - 需要使用函数防抖的被执行的函数。必传 * @param {Number} wait - 多少毫秒之内触发,只执行第一次,默认1000ms。可以不传 */ function kDebounce (fn, wait=1000) { let timer // 缓存一个定时器对象 return function (...args) { // 当触发时定时器对象存在,则清除重新计时 timer && clearTimeout(timer) timer = setTimeout(() => { fn.apply(this, args) // 执行函数 timer = null }, wait) } } /** * 节流函数, 在一段的时间只执行一次 * @param fn 事件触发的操作 * @param delay 间隔多少毫秒需要触发一次事件 */ function kThrottle (fn, delay=1000) { let flag return function (...args) { if (flag) return flag = setTimeout(() => { fn.apply(this, args) // doSomething clearTimeout(flag) flag = null }, delay) } } /* harmony default export */ var auth = ({ kCloneDeep, kDebounce, kThrottle }); // CONCATENATED MODULE: ./packages/index.js const packageInfo = __webpack_require__("9224"); // console.log(packageInfo,'===pa') const getVersion = ()=>packageInfo.version; const getName = ()=> packageInfo.name; const getAuthor = ()=> packageInfo.author; const getLicense = ()=> packageInfo.license; const kRegExp = regExp;// 正则 const kCompressImage = compressImg; // 图片压缩 const kUserAgent = uaEnv;// 浏览器ua const kCookies = cookie;// 设置cookie const kCopyText = copy; // 浏览器点击复制 const packages_kExportExcel = exportExcel; // 前端导出表格 const packages_kDateFormat = dateFormat; //日期格式化 const packages_kCloneDeep = auth.kCloneDeep; // 数组深克隆 const packages_kDebounce = auth.kDebounce; //防抖 const packages_kThrottle = auth.kThrottle; //截流 const version = getVersion(); const packages_name = getName(); const author = getAuthor(); const license = getLicense(); const kCollection = { install: function (Vue) { Vue.prototype.$kCollectionJS = this; }, kRegExp, kCompressImage, kUserAgent, kCookies, kCopyText, kExportExcel: packages_kExportExcel, kDateFormat: packages_kDateFormat, kCloneDeep: packages_kCloneDeep, kDebounce: packages_kDebounce, kThrottle: packages_kThrottle, version, name: packages_name, author, license, }; /* harmony default export */ var packages_0 = (kCollection); // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js /* harmony default export */ var entry_lib = __webpack_exports__["default"] = (packages_0); /***/ }) /******/ }); //# sourceMappingURL=k-collection.common.js.map