export default { goodTime (str) { let now = new Date().getTime() let oldTime = new Date(str).getTime() let difference = now - oldTime let result = '' let minute = 1000 * 60 let hour = minute * 60 let day = hour * 24 let month = day * 30 let year = month * 12 let _year = difference / year let _month = difference / month let _week = difference / (7 * day) let _day = difference / day let _hour = difference / hour let _min = difference / minute if (_year >= 1) { result = '发表于 ' + ~~(_year) + ' 年前' } else if (_month >= 1) { result = '发表于 ' + ~~(_month) + ' 个月前' } else if (_week >= 1) { result = '发表于 ' + ~~(_week) + ' 周前' } else if (_day >= 1) { result = '发表于 ' + ~~(_day) + ' 天前' } else if (_hour >= 1) { result = '发表于 ' + ~~(_hour) + ' 个小时前' } else if (_min >= 1) { result = '发表于 ' + ~~(_min) + ' 分钟前' } else { result = '刚刚' } return result }, /** * iView2 Tree 公用方法:选中指定ID节点,自动展开所有父节点 * @param {Array} treeData 树形原始数据 * @param {Number|String} targetId 要选中的节点id * @param {Object} vueThis 当前Vue组件this实例 */ selectTreeNodeById(treeData, targetId, vueThis) { const loop = function (nodes, parentNode) { for (let node of nodes) { // 清空所有节点选中状态 vueThis.$set(node, 'selected', false) if (node.id === targetId) { // 目标节点设为选中 vueThis.$set(node, 'selected', true) let p = parentNode // 逐层向上展开父节点 while (p) { vueThis.$set(p, 'expand', true) p = p._parent } return true } if (node.children && node.children.length) { // 绑定父节点引用 node.children.forEach(child => child._parent = node) const res = loop(node.children, node) if (res) return true } } return false } loop(treeData, null) }, strToHexCharCode(_str) { if (_str === "") return ""; var hexCharCode = []; for (var i = 0; i < _str.length; i++) { var str = _str.charCodeAt(i).toString(16); if (_str.length == 1) str += "0" + _str; hexCharCode.push(str); } return hexCharCode.join(""); }, dateFormat(_date,fmt){ var date=new Date(_date); var o = { "M+": date.getMonth() + 1, //月份 "d+": date.getDate(), //日 "H+": date.getHours(), //小时 "m+": date.getMinutes(), //分 "s+": date.getSeconds(), //秒 "q+": Math.floor((date.getMonth() + 3) / 3), //季度 "S": date.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; }, dataFilter(_key,arry) { for (var key in arry) { if (arry.hasOwnProperty(key)) { var element = arry[key]; if(element.k==_key) return element.v; } } return ''; }, myUpload(url,fileObj,data,callback){ var FileController ="/api"+ url; // 接收上传文件的后台地址 if (!fileObj ||fileObj.length==0) { console.error('请选择上传文件'); return; } // FormData 对象 var form = new FormData(); //表单数据 for (let key in data) { const element = data[key]; form.append(key,element); } form.append("file", fileObj);// 文件对象 // XMLHttpRequest 对象 var xhr = new XMLHttpRequest(); xhr.open("post", FileController, true); xhr.onload = function (resp) { var obj = JSON.parse(resp.currentTarget.response); if(callback) callback(obj); }; xhr.send(form); }, comSetting(){//公共插件基础配置,如有需要,覆盖即可 const tree={ view: { dblClickExpand: false, showIcon: false, }, check: { enable: false, }, callback:{} } return { tree:tree, } }, comSetting1(){//公共插件基础配置,如有需要,覆盖即可 const tree={ view: { dblClickExpand: false, showIcon: false, }, edit: { enable: true, showRemoveBtn: false, showRenameBtn: false, drag: { prev: true, next: true,inner: false} }, check: { enable: false }, data: { simpleData: { enable: true } }, callback: { } } return { tree:tree, } }, openFistNode(_zNodes){//展开一级节点 if(_zNodes&&_zNodes.length>0){ for (var key in _zNodes) { if (_zNodes.hasOwnProperty(key)) { var element = _zNodes[key]; element.open=true; } } } else{ _zNodes.open=true; } return _zNodes; }, editorFormat(val){//富文本提取文字 return val.replace(/<[^>]+>/g, ""); }, mathFormat(val,number=2){//小数点截取,默认取2位 if(isNaN(val))return 0; var num=Math.pow(10,number); return Math.floor(val*num)/num; }, fileSize(size){//返回文件大小 if(!size) return ''; if(size/1024<1024){ size=Math.ceil(size/1024); return size+'KB'; }else if(size/(1024*1024)<1024){ size=Math.ceil(size/(1024*1024)*100)/100; return size+'MB'; }else if(size/(1024*1024*1024)<1024){ size=Math.ceil(size/(1024*1024*1024)*100)/100; return size+'GB'; } }, handleValidate(_this,name){//表单验证 let isValid = false; _this.$refs[name].validate(function (valid) { if (valid) { isValid = true; } else { // _this.$Message.info('表单验证失败!'); _this.$Message.info('请填写红色星号内容!'); } }) return isValid; }, handleReset(_this,resetName,name) {//表单重置 if(name&&_this.isModal&&_this.isModal[name]) _this.isModal[name] = false; if (resetName) { _this.$refs[resetName].resetFields(); } }, downFile(id) {//下载文件 location.href = APIConfig.Base.FileDown + '?id=' + id; }, localStorage:{ get(key){ return localStorage.getItem(key); }, set(key,val){ localStorage.setItem(key,val); } } }