util.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. import { get } from './db.js'
  2. // 检验手机号格式
  3. export const checkPhone = (mobile)=> {
  4. // return /^1[345678]\d{9}$/.test(mobile);
  5. if (mobile.length == 0) {
  6. return false;
  7. }
  8. if (mobile.length != 11) {
  9. return false;
  10. }
  11. // var myreg = /^0?(13[0-9]|15[0-9]|17[013678]|18[0-9]|14[57]|19[0-9]|18[0-9])[0-9]{8}$/;
  12. var myreg = /^1(3|4|5|6|7|8|9)\d{9}$/ ;
  13. if (!myreg.test(mobile)) {
  14. return false;
  15. }
  16. return true;
  17. }
  18. // 密码验证格式
  19. export const checkPwd = (pwd)=> {
  20. if (pwd.length == 0) {
  21. return false;
  22. }
  23. var reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/
  24. var re = new RegExp(reg)
  25. if (re.test(pwd)) {
  26. return true;
  27. } else {
  28. return false;
  29. }
  30. }
  31. //不足位数前面补0
  32. export const PrefixInteger = (num, length)=> {
  33. return (Array(length).join('0') + num).slice(-length)
  34. }
  35. /**
  36. *
  37. * 判断是否在微信浏览器 true是
  38. */
  39. export const isWeiXinBrowser = ()=> {
  40. // #ifdef H5
  41. // window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型
  42. let ua = window.navigator.userAgent.toLowerCase()
  43. // 通过正则表达式匹配ua中是否含有MicroMessenger字符串
  44. if (ua.match(/MicroMessenger/i) == 'micromessenger') {
  45. return true
  46. } else {
  47. return false
  48. }
  49. // #endif
  50. return false
  51. }
  52. //深拷贝
  53. export const deepCopy = (newobj, obj)=> {
  54. if (typeof obj != 'object') {
  55. return obj
  56. }
  57. for (var attr in obj) {
  58. var a = {}
  59. if (newobj[attr]) {
  60. a = newobj[attr]
  61. }
  62. newobj[attr] = deepCopy(a, obj[attr])
  63. }
  64. return newobj
  65. }
  66. //轻提示
  67. export const toast = (msg = '', callback = function() {})=> {
  68. uni.showToast({
  69. title: msg,
  70. icon: 'none',
  71. duration: 1000,
  72. success() {
  73. setTimeout(function() {
  74. callback()
  75. }, 1500)
  76. }
  77. })
  78. }
  79. /* 弹窗 */
  80. export const modal = (title='',content,callback = function() {}) => {
  81. uni.showModal({
  82. title: title,
  83. content: content,
  84. confirmColor:'#3385FF',
  85. success: function (res) {
  86. if (res.confirm) {
  87. callback()
  88. } else if (res.cancel) {
  89. // console.log('用户点击取消');
  90. }
  91. }
  92. });
  93. }
  94. /* 弹窗 */
  95. export const modalShow = (title='',content,confirm,callback = function() {}) => {
  96. uni.showModal({
  97. title: title,
  98. content: content,
  99. showCancel: false,
  100. confirmText:confirm==''?'确定':'知道了',
  101. confirmColor:'#3385FF',
  102. success: function (res) {
  103. if (res.confirm) {
  104. callback()
  105. } else if (res.cancel) {
  106. // console.log('用户点击取消');
  107. }
  108. }
  109. });
  110. }
  111. /* 处理时间格式 */
  112. export const dateFormatter = (str,bol=false,bol2=false) => { //默认返回yyyy-MM-dd HH-mm-ss
  113. var dateStr = String(str);
  114. if(!(dateStr.indexOf('-')>-1 && dateStr.indexOf('T')>-1)){
  115. dateStr = dateStr.replace(/\-/g,'/');
  116. }
  117. var d = new Date(dateStr);
  118. var year = d.getFullYear();
  119. var month = (d.getMonth() + 1) < 10 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1);
  120. var day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate();
  121. var hour = d.getHours() < 10 ? '0' + d.getHours() : d.getHours();
  122. var minute = d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes();
  123. var second = d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds();
  124. if(bol) {
  125. if(bol2){
  126. return `${month}月${day}日 ${hour}时${minute}分${second}秒`;
  127. }
  128. return [year, month, day].join('-') + " " + [hour, minute, second].join(':');
  129. } else {
  130. if(bol2){
  131. return `${month}月${day}日`;
  132. }
  133. return [year, month, day].join('-');
  134. }
  135. }
  136. //加载显示
  137. export const loading = (msg = '加载中')=> {
  138. uni.showToast({
  139. title: msg,
  140. icon: 'loading'
  141. })
  142. }
  143. //加载隐藏
  144. export const loadHide = ()=> {
  145. uni.hideToast();
  146. }
  147. /**
  148. * 函数防抖 (只执行最后一次点击)
  149. * @param fn
  150. * @param delay
  151. * @returns {Function}
  152. * @constructor
  153. */
  154. export const Debounce = (fn, t=300) => {
  155. let timer;
  156. return function () {
  157. let args = arguments;
  158. if(timer){
  159. clearTimeout(timer);
  160. }
  161. timer = setTimeout(() => {
  162. timer = null;
  163. fn.apply(this, args);
  164. }, t);
  165. }
  166. };
  167. /**
  168. * 函数节流
  169. * @param fn
  170. * @param interval
  171. * @returns {Function}
  172. * @constructor
  173. */
  174. export const Throttle = (fn, t=500) => {
  175. let last;
  176. let timer;
  177. return function () {
  178. let args = arguments;
  179. let now = +new Date();
  180. if (last && now - last < t) {
  181. clearTimeout(timer);
  182. timer = setTimeout(() => {
  183. last = now;
  184. fn.apply(this, args);
  185. }, t);
  186. } else {
  187. last = now;
  188. fn.apply(this, args);
  189. }
  190. }
  191. }
  192. // 上传图片封装
  193. export const upload = ({
  194. /* 单张上传 */
  195. Single: function (Funurl, fn) {
  196. // 获取用户token和用户信息
  197. let token = get("access_token");
  198. let authHeader = token || '';
  199. uni.chooseImage({
  200. count: 1, ///最多可以选择一张图片
  201. sizeType: ['original', 'compressed'],//原图或压缩图
  202. sourceType: ['album', 'camera'],//图片来源
  203. success: function (res) {
  204. const tempFilePaths = res.tempFilePaths;//相当于src路径
  205. //console.log(tempFilePaths);
  206. uni.showToast({
  207. title: '正在上传...',
  208. icon: 'loading',
  209. mask: true,
  210. duration: 10000
  211. })
  212. uni.uploadFile({
  213. header: {
  214. "Content-Type": "multipart/form-data",
  215. 'Authorization':authHeader
  216. },
  217. name: 'file',
  218. url: Funurl,
  219. filePath: tempFilePaths[0],
  220. success(res) {
  221. fn(res);
  222. uni.hideToast();
  223. uni.showToast({
  224. title: '上传成功',
  225. icon: 'none',
  226. mark: true,
  227. })
  228. },
  229. fail(err) {
  230. uni.hideToast();
  231. uni.showModal({
  232. title: '错误提示',
  233. content: '上传图片失败'+err,
  234. showCancel: false,
  235. success: function (res) { }
  236. })
  237. }
  238. })
  239. },
  240. })
  241. },
  242. //上传多张图片
  243. Much: function (Funurl, fn, count) {
  244. // 获取用户token和用户信息
  245. let token = get("access_token");
  246. let authHeader = token || '';
  247. var list = new Array();
  248. uni.chooseImage({
  249. count: count,//最多可以选择3张图
  250. sizeType: ['original', 'compressed'],
  251. sourceType: ['album', 'camera'],
  252. success: function (res) {
  253. const tempFilePaths = res.tempFilePaths;
  254. console.log(tempFilePaths)
  255. let uploadImgCount = 0;
  256. uni.showToast({
  257. title: '正在上传...',
  258. icon: 'loading',
  259. mask: true,
  260. duration: 10000
  261. })
  262. for (var i = 0; i < tempFilePaths.length; i++) {
  263. uni.uploadFile({
  264. url: Funurl,
  265. name: 'file',
  266. filePath: tempFilePaths[i],//第几张图片
  267. header: {
  268. "Content-Type": "multipart/form-data",
  269. 'Authorization':authHeader
  270. },
  271. success(res) {
  272. uploadImgCount++;
  273. fn(res);
  274. //如果是最后一张,则隐藏等待中
  275. if (uploadImgCount === tempFilePaths.length) {
  276. uni.hideToast();
  277. // uni.showToast({
  278. // title: '上传图片成功',
  279. // icon: 'none',
  280. // mark: true,
  281. // })
  282. }else {
  283. that.upload(imgs)
  284. }
  285. },
  286. fail(res) {
  287. uni.hideToast();
  288. uni.showModal({
  289. title: '错误提示',
  290. content: '上传图片失败',
  291. showCancel: false,
  292. success: function (res) { }
  293. })
  294. }
  295. })
  296. }
  297. },
  298. })
  299. }
  300. })