Tools.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. export const pickerOptions = [{
  2. text: "今天",
  3. onClick(picker) {
  4. const end = new Date();
  5. const start = new Date();
  6. start.setTime(start.getTime());
  7. picker.$emit('pick', [start, end]);
  8. }
  9. },
  10. {
  11. text: "昨天",
  12. onClick(picker) {
  13. const end = new Date();
  14. const start = new Date();
  15. start.setDate(start.getDate() - 1);
  16. end.setDate(end.getDate() - 1);
  17. picker.$emit('pick', [start, end]);
  18. }
  19. },
  20. {
  21. text: "最近七天",
  22. onClick(picker) {
  23. const end = new Date();
  24. const start = new Date();
  25. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  26. picker.$emit('pick', [start, end]);
  27. }
  28. },
  29. {
  30. text: "最近30天",
  31. onClick(picker) {
  32. const end = new Date();
  33. const start = new Date();
  34. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  35. picker.$emit('pick', [start, end]);
  36. }
  37. },
  38. {
  39. text: "本月",
  40. onClick(picker) {
  41. const start = new Date();
  42. const end = new Date(start);
  43. end.setMonth(start.getMonth() + 1);
  44. end.setDate(0);
  45. start.setDate(1);
  46. picker.$emit('pick', [start, end]);
  47. }
  48. },
  49. {
  50. text: "上个月",
  51. onClick(picker) {
  52. const start = new Date();
  53. const end = new Date(start);
  54. end.setMonth(start.getMonth());
  55. start.setMonth(start.getMonth() - 1);
  56. end.setDate(0);
  57. start.setDate(1);
  58. picker.$emit('pick', [start, end]);
  59. }
  60. },
  61. {
  62. text: "去年",
  63. onClick(picker) {
  64. const endYear = new Date().getFullYear() - 1;
  65. const startYear = new Date().getFullYear() - 1;
  66. const start = new Date(startYear, 0, 1);
  67. const end = new Date(endYear, 11, 31);
  68. picker.$emit('pick', [start, end]);
  69. }
  70. },
  71. {
  72. text: "今年",
  73. onClick(picker) {
  74. const endYear = new Date().getFullYear();
  75. const startYear = new Date().getFullYear();
  76. const start = new Date(startYear, 0, 1);
  77. const end = new Date(endYear, 11, 31);
  78. picker.$emit('pick', [start, end]);
  79. }
  80. },
  81. {
  82. text: "最近一年",
  83. onClick(picker) {
  84. const end = new Date();
  85. const start = new Date();
  86. start.setFullYear(start.getFullYear() - 1);
  87. picker.$emit('pick', [start, end]);
  88. }
  89. },
  90. ];
  91. /**
  92. * tree 形结构格式化
  93. * @param {any} data
  94. */
  95. export const initTree = {
  96. }
  97. /**
  98. * 判断是否是数组
  99. * @param {Array} arr
  100. */
  101. export const isArray = (arr) => {
  102. return Object.prototype.toString.call(arr) == '[object Array]'
  103. }
  104. /**
  105. * 手机号屏蔽
  106. */
  107. export const hidePhone = (num) => {
  108. if (num) {
  109. let newNum = String(num);
  110. return newNum.replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2');
  111. }
  112. }
  113. /**
  114. * 时间格式转化
  115. * @param {Array} arr
  116. */
  117. export const dateReturn1 = (date1) => {
  118. date1.toLocaleString("en-US", {
  119. hour12: false
  120. }).replace(/\b\d\b/g, '0><').replace(new RegExp('/', 'gm'), '-');
  121. }
  122. /**
  123. * 十五分钟倒计时
  124. * @param {Array}string
  125. */
  126. export const fiftyDate = () => {
  127. let now = new Date();
  128. var hour = now.getHours();
  129. var minu = now.getMinutes();
  130. var sec = now.getSeconds();
  131. if (hour < 10) hour = "0" + hour;
  132. if (minu < 10) minu = "0" + minu;
  133. if (sec < 10) sec = "0" + sec;
  134. var time = "";
  135. time = hour + ":" + minu + ":" + sec
  136. console.info('倒计时--->', time);
  137. }
  138. /**
  139. * 输入框单字节计算
  140. * @param string
  141. */
  142. export const strSubleng = (str) => {
  143. var len = 0;
  144. for (var i = 0; i < str.length; i++) {
  145. var c = str.charCodeAt(i);
  146. if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) { //单字节加1
  147. len++;
  148. } else {
  149. len += 2;
  150. }
  151. }
  152. return len;
  153. }
  154. /**
  155. * 截取路由参数
  156. * @param string
  157. */
  158. export const subparams = (str) => {
  159. //let search = location.search;
  160. let params = {};
  161. if (str != "") {
  162. str.slice(1).split("&").forEach((v) => {
  163. let arr = v.split("=");
  164. params[arr[0]] = arr[1];
  165. })
  166. }
  167. return params;
  168. }
  169. /**
  170. * get url 对象序列化
  171. * @param string
  172. */
  173. export const http_builder_url = (url, data) => {
  174. if (typeof (url) == 'undefined' || url == null) {
  175. return '';
  176. }
  177. if (typeof (data) == 'undefined' || data == null || typeof (data) != 'object') {
  178. return '';
  179. }
  180. url += (url.indexOf("?") != -1) ? "" : "?";
  181. for (var k in data) {
  182. url += ((url.indexOf("=") != -1) ? "&" : "") + k + "=" + encodeURI(data[k]);
  183. console.log(url);
  184. }
  185. return url;
  186. }
  187. /**
  188. * 存储localStorage
  189. * @param {any} data
  190. */
  191. export const setStore = (name, content) => {
  192. if (!name) return
  193. if (typeof content !== 'string') {
  194. content = JSON.stringify(content);
  195. }
  196. window.localStorage.setItem(name, content);
  197. }
  198. /**
  199. * 获取localStorage
  200. * @param {any} data
  201. */
  202. export const getStore = name => {
  203. if (!name) return;
  204. return window.localStorage.getItem(name);
  205. }
  206. /**
  207. *删除localStorage
  208. * @param {any} data
  209. */
  210. export const removeStore = name => {
  211. if (!name) return;
  212. window.localStorage.removeItem(name);
  213. }
  214. /**
  215. *去除字符串中逗号
  216. * @param {any} data
  217. */
  218. export const clear = str => {
  219. str = str.replace(/,/g, '')
  220. return str;
  221. }
  222. /**
  223. * 全屏显示
  224. * @param {any} data
  225. */
  226. export const requestFullScreen = () => {
  227. let elem = document.documentElement;
  228. if (elem.requestFullscreen) {
  229. elem.requestFullscreen()
  230. } else if (elem.mozRequestFullScreen) {
  231. elem.mozRequestFullScreen()
  232. } else if (elem.webkitRequestFullScreen) {
  233. elem.webkitRequestFullScreen()
  234. } else if (elem.msRequestFullscreen) {
  235. document.body.msRequestFullscreen()
  236. }
  237. }
  238. /**
  239. * 退出全屏
  240. * @param {any} data
  241. */
  242. export const exitFullscreen = () => {
  243. let doc = document
  244. if (doc.exitFullscreen) {
  245. doc.exitFullscreen()
  246. } else if (doc.mozCancelFullScreen) {
  247. doc.mozCancelFullScreen()
  248. } else if (doc.webkitCancelFullScreen) {
  249. doc.webkitCancelFullScreen()
  250. } else if (doc.msExitFullscreen) {
  251. document.msExitFullscreen()
  252. }
  253. }
  254. /**
  255. * 将简单数据格式转换成嵌套的数据格式
  256. * @param {Object} setting
  257. * @param {Array} sNodes
  258. */
  259. export const transformTozTreeFormat = (sNodes, setting={}) => {
  260. var i, l,
  261. key = setting.idKey || 'id',
  262. parentKey = setting.parentKey || 'parentId',
  263. childKey = setting.childKey || 'children';
  264. if (!key || key == "" || !sNodes) return [];
  265. if (isArray(sNodes)) {
  266. var r = [];
  267. var tmpMap = {};
  268. for (i = 0, l = sNodes.length; i < l; i++) {
  269. tmpMap[sNodes[i][key]] = sNodes[i];
  270. }
  271. for (i = 0, l = sNodes.length; i < l; i++) {
  272. if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
  273. if (!tmpMap[sNodes[i][parentKey]][childKey])
  274. tmpMap[sNodes[i][parentKey]][childKey] = [];
  275. tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
  276. } else {
  277. r.push(sNodes[i]);
  278. }
  279. }
  280. return r;
  281. } else {
  282. return [sNodes];
  283. }
  284. }
  285. /**
  286. * 将嵌套的数据格式转换成简单数据格式
  287. * @param {Object} setting
  288. * @param {Array} nodes
  289. */
  290. export const transformToArrayFormat = (nodes, setting={}) => {
  291. if (!nodes) return [];
  292. var childKey = setting.childKey || 'children',
  293. r = [];
  294. if (isArray(nodes)) {
  295. for (var i = 0, l = nodes.length; i < l; i++) {
  296. r.push(nodes[i]);
  297. if (nodes[i][childKey])
  298. r = r.concat(transformToArrayFormat(nodes[i][childKey], setting));
  299. }
  300. } else {
  301. r.push(nodes);
  302. if (nodes[childKey])
  303. r = r.concat(transformToArrayFormat(nodes[childKey], setting));
  304. }
  305. return r;
  306. }
  307. /**将对象转换成url查询格式
  308. *
  309. * @param {} url
  310. * @param {*} data
  311. */
  312. export const changeParam = (url, data) => {
  313. if(typeof(url) == 'undefined' || url == null) {
  314. return '';
  315. }
  316. if(typeof(data) == 'undefined' || data == null || typeof(data) != 'object') {
  317. return '';
  318. }
  319. url += (url.indexOf("?") != -1) ? "" : "?";
  320. for(var k in data) {
  321. url += ((url.indexOf("=") != -1) ? "&" : "") + k + "=" + encodeURI(data[k]);
  322. }
  323. return url;
  324. }