特易招,招聘小程序
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.

207 lines
3.8 KiB

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