租房小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

184 lines
3.5 KiB

10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
  1. function toArray(data) {
  2. if (!data) return []
  3. if (data instanceof Array){
  4. return data
  5. } else {
  6. return [data]
  7. }
  8. }
  9. function generateUUID() {
  10. return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  11. var r = Math.random() * 16 | 0,
  12. v = c == 'x' ? r : (r & 0x3 | 0x8);
  13. return v.toString(16);
  14. });
  15. }
  16. function generateRandomColor() {
  17. const letters = '0123456789ABCDEF';
  18. let color = '#';
  19. for (let i = 0; i < 6; i++) {
  20. color += letters[Math.floor(Math.random() * 16)];
  21. }
  22. return color;
  23. }
  24. function generateLightRandomColor() {
  25. const min = 150;
  26. const range = 105;
  27. const r = Math.floor(Math.random() * range + min);
  28. const g = Math.floor(Math.random() * range + min);
  29. const b = Math.floor(Math.random() * range + min);
  30. const color = 'rgb(' + r + ',' + g + ',' + b + ')';
  31. return color;
  32. }
  33. /**
  34. * 表单数据验证
  35. * @param {Object} data - 需要验证的表单数据
  36. * @param {Object} msg - 验证失败时的提示信息
  37. * @returns {boolean} 验证结果true表示验证失败false表示验证通过
  38. */
  39. function verificationAll(data, msg){
  40. if (!msg){
  41. console.log(msg);
  42. return false
  43. }
  44. if (!data){
  45. uni.showToast({
  46. title: '表单数据未填写',
  47. icon: "none"
  48. })
  49. }
  50. for (let key in msg) {
  51. if (!data[key]) {
  52. uni.showToast({
  53. title: msg[key],
  54. icon: "none"
  55. })
  56. return true
  57. }
  58. }
  59. return false
  60. }
  61. //验证手机号是否合法
  62. function verificationPhone(phone){
  63. if(!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(phone)){
  64. return false
  65. }
  66. return true
  67. }
  68. //获取url中参数的方法
  69. export function getHrefParams(name) {
  70. var url = window.location.href;
  71. try {
  72. var cs = url.split('?')[1]; //获取?之后的参数字符串
  73. var cs_arr = cs.split('&'); //参数字符串分割为数组
  74. for (var i = 0; i < cs_arr.length; i++) { //遍历数组,拿到json对象
  75. if (cs_arr[i].split('=')[0] == name) {
  76. return cs_arr[i].split('=')[1];
  77. }
  78. }
  79. return "";
  80. } catch {
  81. return "";
  82. }
  83. }
  84. // 将字符串中的文本格式化html
  85. export function stringFormatHtml(str){
  86. return str && str.replace(/\n/gi, '<br>')
  87. .replace(/ /gi, ' ')
  88. }
  89. //深度对比合并两个对象,相同属性b会覆盖a
  90. export function deepMergeObject(a, b){
  91. let data = JSON.parse(JSON.stringify(a))
  92. function mergeObject(obj1, obj2){
  93. for(let key in obj2){
  94. if(typeof obj1[key] == 'object'){
  95. obj1[key] = mergeObject(obj1[key], obj2[key])
  96. }else{
  97. obj1[key] = obj2[key]
  98. }
  99. }
  100. return obj1
  101. }
  102. return mergeObject(data, b)
  103. }
  104. //复制内容
  105. export function copyText(content) {
  106. uni.setClipboardData({
  107. data: content,
  108. success: () => {
  109. uni.showToast({
  110. title: '复制成功',
  111. icon: 'none'
  112. })
  113. }
  114. })
  115. }
  116. function params(url){
  117. if(typeof url == 'object'){
  118. return url
  119. }
  120. let data = {
  121. url
  122. }
  123. if(!data.url.includes('/pages')){
  124. data.url = '/pages' + data.url
  125. }
  126. return data
  127. }
  128. export function navigateTo(...args){
  129. uni.navigateTo(params(...args))
  130. }
  131. export function navigateBack(num = -1){
  132. uni.navigateBack(num)
  133. }
  134. export function redirectTo(...args){
  135. uni.redirectTo(params(...args))
  136. }
  137. export function getkeyContent(key){
  138. if(!key){
  139. return ""
  140. }
  141. let configList = uni.getStorageSync('configList')
  142. let index = configList.findIndex(items => items.keyName === key);
  143. return configList[index];
  144. }
  145. export default {
  146. toArray,
  147. generateUUID,
  148. verificationAll,
  149. generateRandomColor,
  150. generateLightRandomColor,
  151. verificationPhone,
  152. getHrefParams,
  153. deepMergeObject,
  154. navigateTo,
  155. navigateBack,
  156. redirectTo,
  157. copyText,
  158. stringFormatHtml,
  159. getkeyContent
  160. }