金诚优选前端代码
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.

368 lines
9.9 KiB

  1. import {sandBox} from './sandBox';
  2. import config from './config';
  3. // #ifdef H5
  4. import wechat from './wechat';
  5. // #endif
  6. export const is = {
  7. env() {
  8. return process.env.NODE_ENV
  9. },
  10. has(val) {
  11. return !!val;
  12. },
  13. isNum(val){
  14. return val && /^[0-9]$/.test(val);
  15. },
  16. not(val) {
  17. return !val;
  18. },
  19. empty(val) {
  20. return val === '';
  21. },
  22. age(val){
  23. return val && /^[0-9]{1,2}$/.test(val);
  24. },
  25. equal(v1, v2) {
  26. return v1 === v2;
  27. },
  28. qq(val) {
  29. return val && /^[1-9]\d{4,12}$/.test(val);
  30. },
  31. name(val) {
  32. return val && /^[A-Za-z0-9\u4E00-\u9FA5_]{2,10}$/.test(val);
  33. },
  34. mobile(val) {
  35. return val && /^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[01356789]\d{2}|4(?:0\d|1[0-2]|9\d))|9[01356789]\d{2}|6[2567]\d{2}|4[579]\d{2})\d{6}$/.test(val);
  36. },
  37. fifteen(val) {
  38. return val && /^[\d\-_\+]{2,15}$/.test(val);
  39. },
  40. email(val) {
  41. return val && /^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(val);
  42. },
  43. password(val) {
  44. return val && val.length && val.length > 5 && !/^\d+$/.test(val);
  45. },
  46. bank(val) {
  47. if (!val) return false;
  48. val = String(val);
  49. var lastNum=val.substr(val.length-1,1); //取出最后一位(与luhm进行比较)
  50. var first15Num=val.substr(0,val.length-1); //前15或18位
  51. var newArr=[];
  52. for(var i=first15Num.length-1;i>-1;i--){ //前15或18位倒序存进数组
  53. newArr.push(first15Num.substr(i,1));
  54. }
  55. var arrJiShu=[]; //奇数位*2的积 <9
  56. var arrJiShu2=[]; //奇数位*2的积 >9
  57. var arrOuShu=[]; //偶数位数组
  58. for(var j=0;j<newArr.length;j++){
  59. if((j+1)%2==1){//奇数位
  60. if(parseInt(newArr[j])*2<9) {
  61. arrJiShu.push(parseInt(newArr[j])*2);
  62. } else {
  63. arrJiShu2.push(parseInt(newArr[j])*2);
  64. }
  65. } else {
  66. //偶数位
  67. arrOuShu.push(newArr[j]);
  68. }
  69. }
  70. var jishu_child1=[];//奇数位*2 >9 的分割之后的数组个位数
  71. var jishu_child2=[];//奇数位*2 >9 的分割之后的数组十位数
  72. for(var h=0;h<arrJiShu2.length;h++){
  73. jishu_child1.push(parseInt(arrJiShu2[h])%10);
  74. jishu_child2.push(parseInt(arrJiShu2[h])/10);
  75. }
  76. var sumJiShu=0; //奇数位*2 < 9 的数组之和
  77. var sumOuShu=0; //偶数位数组之和
  78. var sumJiShuChild1=0; //奇数位*2 >9 的分割之后的数组个位数之和
  79. var sumJiShuChild2=0; //奇数位*2 >9 的分割之后的数组十位数之和
  80. var sumTotal;
  81. for(var m=0;m<arrJiShu.length;m++){
  82. sumJiShu=sumJiShu+parseInt(arrJiShu[m]);
  83. }
  84. for(var n=0;n<arrOuShu.length;n++){
  85. sumOuShu=sumOuShu+parseInt(arrOuShu[n]);
  86. }
  87. for(var p=0;p<jishu_child1.length;p++){
  88. sumJiShuChild1=sumJiShuChild1+parseInt(jishu_child1[p]);
  89. sumJiShuChild2=sumJiShuChild2+parseInt(jishu_child2[p]);
  90. }
  91. //计算总和
  92. sumTotal=parseInt(sumJiShu)+parseInt(sumOuShu)+parseInt(sumJiShuChild1)+parseInt(sumJiShuChild2);
  93. //计算Luhm值
  94. var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;
  95. var luhm= 10-k;
  96. return lastNum == luhm;
  97. }
  98. };
  99. /*获取当前页带参数的url*/
  100. function getCurrentPageUrlWithArgs(){
  101. var pages = getCurrentPages() //获取加载的页面
  102. var currentPage = pages[pages.length-1] //获取当前页面的对象
  103. var url = currentPage.route //当前页面url
  104. var options = currentPage.options //如果要获取url中所带的参数可以查看options
  105. //拼接url的参数
  106. var urlWithArgs = url + '?'
  107. for(var key in options){
  108. var value = options[key]
  109. urlWithArgs += key + '=' + value + '&'
  110. }
  111. urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length-1)
  112. return encodeURIComponent(urlWithArgs)
  113. };
  114. // 解析Url
  115. function parseUrl(url) {
  116. var url = url.replace(/^\?/, '');
  117. url=getCaption('?');
  118. console.log(url);console.log(333);
  119. var params = {};
  120. if (url) {
  121. url.split('&').forEach(function (part) {
  122. var parts = part.split('=');
  123. var name = parts.shift();
  124. var value = parts.join('&');
  125. if (/\[]$/.test(name)) {
  126. name = name.replace(/\[]$/, '');
  127. params[name] = params[name] || [];
  128. params[name].push(value);
  129. } else {
  130. params[name] = value;
  131. }
  132. })
  133. }
  134. return params;
  135. };
  136. function GetUrl(url) {
  137. var jsons = {},
  138. jsond = {}
  139. var url =url?url:window.location.href;
  140. if(url.indexOf('?') > 0) {
  141. var url = url.split("?")[1];
  142. function countInstances(mainStr, subStr) {
  143. var count = 0;
  144. var offset = 0;
  145. do {
  146. offset = mainStr.indexOf(subStr, offset);
  147. if(offset != -1) {
  148. count++;
  149. offset += subStr.length;
  150. }
  151. } while (offset != -1)
  152. return count;
  153. }
  154. var num = countInstances(url, '&')
  155. if(num == 0) {
  156. var a = url.split('&')
  157. k = '', v = ''
  158. k = url.substr(0, url.indexOf('='))
  159. v = url.substr(url.indexOf('=') + 1)
  160. jsons[k] = v
  161. } else {
  162. var a = url.split('&')
  163. var jsons = {},
  164. jsond = {},
  165. k, v
  166. for(var i = 0; i < a.length; i++) {
  167. k = '', v = ''
  168. k = a[i].substr(0, a[i].indexOf('='))
  169. v = a[i].substr(a[i].indexOf('=') + 1)
  170. jsons[k] = v
  171. }
  172. }
  173. return jsons
  174. }
  175. }
  176. // Url赋值
  177. // 时间戳
  178. const timeMap={
  179. y: 31536000000,
  180. m: 2592000000,
  181. d: 86400000,
  182. h: 3600000,
  183. n: 60000,
  184. s: 1000
  185. };
  186. var version = config.VERSION || '1.0.1';
  187. //缓存模块 时间可以是1y 1m 1d.. 还有毫秒数
  188. export const cookieStorage={
  189. set:function(key,value,time){
  190. let data={};
  191. data.data=value;
  192. let timestamp="";
  193. time+="";
  194. // 缓存时间设置
  195. if(time){
  196. var last=time.charAt(time.length-1);
  197. if(!is.isNum(last)){
  198. timestamp=(time.slice(0,time.length-1))*(timeMap[last])+new Date().getTime();
  199. }
  200. else {
  201. timestamp=time*1+new Date().getTime();
  202. }
  203. }
  204. else{
  205. timestamp=null;
  206. }
  207. data.expire=timestamp;
  208. data.version = version;
  209. wx.setStorageSync(key,data);
  210. },
  211. get:function(key){
  212. if(!wx.getStorageSync(key)){
  213. return null;
  214. }
  215. let data=wx.getStorageSync(key),
  216. expireTime=data.expire;
  217. if (!data.version || data.version != version) {
  218. this.clear(key);
  219. return null
  220. } else if(expireTime){
  221. if(expireTime>new Date().getTime()){
  222. return data.data;
  223. }else{
  224. this.clear(key);
  225. return null;
  226. }
  227. } else{
  228. return data.data;
  229. }
  230. },
  231. clear:function(key){
  232. wx.removeStorageSync(key);
  233. }
  234. };
  235. // 页面登陆
  236. function pageLogin(url,callback){
  237. var token=cookieStorage.get('user_token');
  238. if(!token){
  239. wx.redirectTo({
  240. url: '/pages/user/register/register?url=' + url
  241. })
  242. } else {
  243. callback && callback(token);
  244. }
  245. }
  246. //判断生日有礼
  247. function isBirthday(){
  248. let isLogin =!!cookieStorage.get("user_token");
  249. let birthdayCache=cookieStorage.get("birthday_gift") || {};
  250. let app = getApp();
  251. return new Promise((reslove,reject)=>{
  252. if( isLogin && !birthdayCache.flag){
  253. let oauth=cookieStorage.get("user_token");
  254. sandBox.post({
  255. api:"api/home/gift_birthday",
  256. header:{
  257. Authorization:oauth
  258. },
  259. data:{}
  260. }).then(res =>{
  261. res=res.data;
  262. if(res.status && res.data){
  263. var data={};
  264. data.flag=false;
  265. data.data=res.data;
  266. cookieStorage.set("birthday_gift",data);
  267. reslove();
  268. }
  269. else{
  270. reject();
  271. }
  272. })
  273. }
  274. else{
  275. reject();
  276. }
  277. });
  278. }
  279. //自动登陆
  280. function autoLogin(code,agent_code) {
  281. return new Promise((resolve, reject) => {
  282. sandBox.post({
  283. api: 'api/oauth/miniprogram/login',
  284. data: {
  285. code: code,
  286. open_type:'miniprogram',
  287. shop_id: cookieStorage.get('shop_id') || '',
  288. agent_code: agent_code || '',
  289. clerk_id: cookieStorage.get('clerk_id') || '',
  290. agent_code_time: cookieStorage.get('agent_code_time') || '',
  291. shop_id_time: cookieStorage.get('shop_id_time') || '',
  292. },
  293. }).then(res => {
  294. res = res.data;
  295. if (res.status) {
  296. if (res.data.access_token) {
  297. var access_token = res.data.token_type + ' ' + res.data.access_token;
  298. var expires_in = res.data.expires_in || 315360000;
  299. cookieStorage.set("user_token", access_token, expires_in);
  300. }
  301. } else {
  302. wx.showModal({
  303. content: res.message || '请求失败',
  304. showCancel: false
  305. })
  306. }
  307. resolve(res)
  308. }).catch(rej => {
  309. reject()
  310. wx.showModal({
  311. content:'请求失败,请重试',
  312. showCancel: false,
  313. })
  314. })
  315. })
  316. }
  317. module.exports = {
  318. getUrl: getCurrentPageUrlWithArgs,
  319. pageLogin:pageLogin,
  320. isBirthday:isBirthday,
  321. is:is,
  322. config:config,
  323. cookieStorage:cookieStorage,
  324. // #ifdef H5
  325. wechat:wechat,
  326. // #endif
  327. GetUrl:GetUrl,
  328. // #ifdef MP-WEIXIN
  329. autoLogin:autoLogin
  330. // #endif
  331. }