util.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  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. }
  90. }
  91. });
  92. }
  93. /* 弹窗 */
  94. export const modalShow = (title='',content,confirm,callback = function() {}) => {
  95. uni.showModal({
  96. title: title,
  97. content: content,
  98. showCancel: false,
  99. confirmText:confirm==''?'确定':'知道了',
  100. confirmColor:'#3385FF',
  101. success: function (res) {
  102. if (res.confirm) {
  103. callback()
  104. } else if (res.cancel) {
  105. }
  106. }
  107. });
  108. }
  109. /* 处理时间格式 */
  110. export const dateFormatter = (str,bol=false,bol2=false) => { //默认返回yyyy-MM-dd HH-mm-ss
  111. var dateStr = String(str);
  112. if(!(dateStr.indexOf('-')>-1 && dateStr.indexOf('T')>-1)){
  113. dateStr = dateStr.replace(/\-/g,'/');
  114. }
  115. var d = new Date(dateStr);
  116. var year = d.getFullYear();
  117. var month = (d.getMonth() + 1) < 10 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1);
  118. var day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate();
  119. var hour = d.getHours() < 10 ? '0' + d.getHours() : d.getHours();
  120. var minute = d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes();
  121. var second = d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds();
  122. if(bol) {
  123. if(bol2){
  124. return `${month}月${day}日 ${hour}时${minute}分${second}秒`;
  125. }
  126. return [year, month, day].join('-') + " " + [hour, minute, second].join(':');
  127. } else {
  128. if(bol2){
  129. return `${month}月${day}日`;
  130. }
  131. return [year, month, day].join('-');
  132. }
  133. }
  134. //加载显示
  135. export const loading = (msg = '加载中')=> {
  136. uni.showToast({
  137. title: msg,
  138. icon: 'loading'
  139. })
  140. }
  141. //加载隐藏
  142. export const loadHide = ()=> {
  143. uni.hideToast();
  144. }
  145. /**
  146. * 函数防抖 (只执行最后一次点击)
  147. * @param fn
  148. * @param delay
  149. * @returns {Function}
  150. * @constructor
  151. */
  152. export const Debounce = (fn, t=300) => {
  153. let timer;
  154. return function () {
  155. let args = arguments;
  156. if(timer){
  157. clearTimeout(timer);
  158. }
  159. timer = setTimeout(() => {
  160. timer = null;
  161. fn.apply(this, args);
  162. }, t);
  163. }
  164. };
  165. /**
  166. * 函数节流
  167. * @param fn
  168. * @param interval
  169. * @returns {Function}
  170. * @constructor
  171. */
  172. export const Throttle = (fn, t=500) => {
  173. let last;
  174. let timer;
  175. return function () {
  176. let args = arguments;
  177. let now = +new Date();
  178. if (last && now - last < t) {
  179. clearTimeout(timer);
  180. timer = setTimeout(() => {
  181. last = now;
  182. fn.apply(this, args);
  183. }, t);
  184. } else {
  185. last = now;
  186. fn.apply(this, args);
  187. }
  188. }
  189. }
  190. // 上传图片封装
  191. export const upload = ({
  192. /* 单张上传 */
  193. Single: function (Funurl, fn) {
  194. // 获取用户token和用户信息
  195. let token = get("access_token");
  196. let authHeader = token || '';
  197. uni.chooseImage({
  198. count: 1, ///最多可以选择一张图片
  199. sizeType: ['original', 'compressed'],//原图或压缩图
  200. sourceType: ['album', 'camera'],//图片来源
  201. success: function (res) {
  202. const tempFilePaths = res.tempFilePaths;//相当于src路径
  203. uni.showToast({
  204. title: '正在上传...',
  205. icon: 'loading',
  206. mask: true,
  207. duration: 10000
  208. })
  209. uni.uploadFile({
  210. header: {
  211. "Content-Type": "multipart/form-data",
  212. 'Authorization':authHeader
  213. },
  214. name: 'file',
  215. url: Funurl,
  216. filePath: tempFilePaths[0],
  217. success(res) {
  218. fn(res);
  219. uni.hideToast();
  220. uni.showToast({
  221. title: '上传成功',
  222. icon: 'none',
  223. mark: true,
  224. })
  225. },
  226. fail(err) {
  227. uni.hideToast();
  228. uni.showModal({
  229. title: '错误提示',
  230. content: '上传图片失败'+err,
  231. showCancel: false,
  232. success: function (res) { }
  233. })
  234. }
  235. })
  236. },
  237. })
  238. },
  239. //上传多张图片
  240. Much: function (Funurl, fn, count) {
  241. // 获取用户token和用户信息
  242. let token = get("access_token");
  243. let authHeader = token || '';
  244. var list = new Array();
  245. uni.chooseImage({
  246. count: count,//最多可以选择3张图
  247. sizeType: ['original', 'compressed'],
  248. sourceType: ['album', 'camera'],
  249. success: function (res) {
  250. const tempFilePaths = res.tempFilePaths;
  251. let uploadImgCount = 0;
  252. uni.showToast({
  253. title: '正在上传...',
  254. icon: 'loading',
  255. mask: true,
  256. duration: 10000
  257. })
  258. for (var i = 0; i < tempFilePaths.length; i++) {
  259. uni.uploadFile({
  260. url: Funurl,
  261. name: 'file',
  262. filePath: tempFilePaths[i],//第几张图片
  263. header: {
  264. "Content-Type": "multipart/form-data",
  265. 'Authorization':authHeader
  266. },
  267. success(res) {
  268. uploadImgCount++;
  269. fn(res);
  270. //如果是最后一张,则隐藏等待中
  271. if (uploadImgCount === tempFilePaths.length) {
  272. uni.hideToast();
  273. // uni.showToast({
  274. // title: '上传图片成功',
  275. // icon: 'none',
  276. // mark: true,
  277. // })
  278. }else {
  279. that.upload(imgs)
  280. }
  281. },
  282. fail(res) {
  283. uni.hideToast();
  284. uni.showModal({
  285. title: '错误提示',
  286. content: '上传图片失败',
  287. showCancel: false,
  288. success: function (res) { }
  289. })
  290. }
  291. })
  292. }
  293. },
  294. })
  295. }
  296. })