commonFun.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
  1. // 公共函数
  2. import GoEasy from "./lib/goeasy-2.2.4.min.js";
  3. import IMService from "./lib/imservice"
  4. import commonData from './commonData.js'
  5. /*线上使用*/
  6. // 静态图片路径
  7. const serverUrl = 'https://api.kuailaiyou.top/prjcenter/prjKLY/fileroot/images/front/';
  8. // 请求URL路径
  9. const serverUrlReq = 'https://api.kuailaiyou.top/';
  10. //const serverUrlReq = 'https://zpwebapi.kaidekuai.com/';
  11. // 请求webviewURL路径
  12. const webviewServerUrlReq = 'https://admin.kuailaiyou.top/';
  13. // 静态图片路径
  14. //const serverUrl = 'https://app.tjzhxx.cn:4100/prjcenter/prjKLY/fileroot/images/front/';
  15. // 请求URL路径
  16. //const serverUrlReq = 'https://app.tjzhxx.cn:4100/';
  17. // 请求webviewURL路径
  18. //const webviewServerUrlReq = 'https://app.tjzhxx.cn:4100/';
  19. /*本地测试*/
  20. // 静态图片路径
  21. //const serverUrl = 'http://api.bizdbKLY.com/prjcenter/prjKLY/fileroot/images/front/';
  22. // 请求URL路径
  23. //const serverUrlReq = 'http://api.bizdbKLY.com/';
  24. // 请求webviewURL路径
  25. //const webviewServerUrlReq = 'http://admin.bizdbKLY.com/';
  26. // request数据
  27. const requestUrl = (url, data, callback, auto_change_params = true, Trader2 = false) => {
  28. // 改造URL
  29. let url_new = Trader2 ? url : (commonData.sys_role == 1 ? url.replace('Worker', 'Trader') : url.replace(
  30. 'Trader', 'Worker'))
  31. console.log('原请求路径:'+url+' 改造后请求路径:'+url_new);
  32. let data_new = {
  33. ...data,
  34. ...commonData.data_token,
  35. FOREND_TOKEN: uni.getStorageSync('FOREND_TOKEN'),
  36. phone: data.phone ? data.phone : uni.getStorageSync('PHONE'),
  37. // FOREND_TOKEN: '0_16415187935b9011bc8aa3ce44cb0cf40dac3d48b4', //用户
  38. // FOREND_TOKEN: '0_1641527485b098792a509f99b8c991030644125b2b', //商户
  39. // phone: '17640181459',
  40. }
  41. // 改造参数
  42. if (auto_change_params) {
  43. if (data_new.bizCatalog) {
  44. data_new.bizCatalog = commonData.sys_role == 1 ? data_new.bizCatalog.replace('Worker', 'Trader') :
  45. data_new
  46. .bizCatalog.replace('Trader', 'Worker')
  47. }
  48. if (data_new.handleMode) {
  49. data_new.handleMode = commonData.sys_role == 1 ? data_new.handleMode.replace('Worker', 'Trader') :
  50. data_new
  51. .handleMode.replace('Trader', 'Worker')
  52. }
  53. }
  54. const requestTask = uni.request({
  55. url: serverUrlReq + 'ajaxEntryCenter.php?WsAjaxPrj=KLY' + url_new,
  56. method: 'post',
  57. header: {
  58. 'content-type': 'application/json'
  59. },
  60. data: {
  61. ...data_new,
  62. },
  63. success: (res) => {
  64. // 异常处理
  65. if (res.data.ErrMsg) {
  66. uni.hideLoading();
  67. // res.data.ErrMsg为字符串时做一般处理
  68. if (typeof(res.data.ErrMsg) == 'string') {
  69. // FOREND_TOKEN异常处理
  70. if (res.data.ErrMsg.indexOf('FOREND_TOKEN') != -1 || res.data.ErrMsg.indexOf(
  71. 'phone') != -1) {
  72. uni.showModal({
  73. title: '当前未登录',
  74. confirmText: '去登陆',
  75. cancelText: '游客登录',
  76. showCancel: commonData.sys_role == 1 ? false : true,
  77. success: (res) => {
  78. if (res.confirm) {
  79. uni.navigateTo({
  80. url: '/pages/login/index?need_back=1'
  81. })
  82. } else {
  83. // 设定游客模式
  84. uni.setStorageSync('IS_TOURIST', '1')
  85. }
  86. callback({
  87. status: false,
  88. data: '未登录',
  89. })
  90. }
  91. })
  92. return
  93. }
  94. // 其他异常处理
  95. uni.showModal({
  96. title: '操作失败',
  97. content: JSON.stringify(res.data.ErrMsg),
  98. showCancel: false,
  99. success: function(res2) {
  100. callback({
  101. status: false,
  102. })
  103. }
  104. });
  105. } else {
  106. // res.data.ErrMsg为非字符串时做特殊回调处理
  107. callback({
  108. status: false,
  109. data: res.data
  110. });
  111. }
  112. } else {
  113. // 非异常处理
  114. callback({
  115. status: true,
  116. data: res.data
  117. });
  118. }
  119. },
  120. fail: result => {
  121. uni.hideLoading();
  122. uni.showModal({
  123. // title: '接口调用网路错误',
  124. content: JSON.stringify(result.errMsg),
  125. showCancel: false,
  126. success: function(res) {
  127. callback({
  128. status: false
  129. })
  130. }
  131. });
  132. }
  133. });
  134. }
  135. // 获取位置信息
  136. const getPositionLocal = callback => {
  137. uni.getLocation({
  138. type: 'wgs84',
  139. success: res => {
  140. // console.log('位置信息')
  141. // console.log(res)
  142. let latitude = res.latitude;
  143. let longitude = res.longitude;
  144. // callback({
  145. // status: true,
  146. // city: '天津市',
  147. // latitude,
  148. // longitude,
  149. // })
  150. // return
  151. requestUrl('&WsAjaxBiz=Public&WsAjaxAction=entityDataHandle', {
  152. bizCatalog: 'LbsEntity',
  153. handleMode: 'fetchAddressByLocation',
  154. lat: latitude,
  155. lng: longitude,
  156. }, res => {
  157. // console.log('根据经纬度返回城市名称')
  158. // console.log(res)
  159. if (res.status) {
  160. callback({
  161. status: true,
  162. city: res.data.Result.city,
  163. latitude,
  164. longitude,
  165. })
  166. } else {
  167. // uni.showModal({
  168. // title: '获取位置失败',
  169. // content: JSON.stringify(res),
  170. // showCancel: false
  171. // })
  172. callback({
  173. status: false,
  174. })
  175. }
  176. })
  177. },
  178. fail: e => {
  179. if (e.errMsg.indexOf('频繁调用') == -1) {
  180. uni.showModal({
  181. title: '获取位置信息失败',
  182. content: JSON.stringify(e),
  183. showCancel: false
  184. })
  185. }
  186. // console.log('获取位置信息失败')
  187. // console.log(e)
  188. callback({
  189. status: false,
  190. })
  191. },
  192. complete: () => {
  193. uni.hideLoading()
  194. }
  195. });
  196. }
  197. // 上传图片/视频到阿里云OSS
  198. const uploadFileApiOSS = (callback, fileType = 'image', allow_album = true) => {
  199. if (fileType == 'image') {
  200. uni.chooseImage({
  201. count: 1,
  202. sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
  203. sourceType: allow_album ? ['album', 'camera'] : ['camera'], //从相册选择
  204. success: res => {
  205. success_fun(res.tempFilePaths[0], callback)
  206. },
  207. fail: res => {
  208. fail_fun(res, callback)
  209. }
  210. });
  211. } else {
  212. uni.chooseVideo({
  213. count: 1,
  214. sourceType: ['camera', 'album'],
  215. success: res => {
  216. success_fun(res.tempFilePath, callback)
  217. },
  218. fail: res => {
  219. fail_fun(res, callback)
  220. }
  221. });
  222. }
  223. // 成功回调
  224. function success_fun(filePath, callback) {
  225. uni.showLoading({
  226. title: '上传中...',
  227. mask: true
  228. })
  229. let tiemr = new Date();
  230. let address = tiemr.getFullYear() + '' + (tiemr.getMonth() + 1) + '' + tiemr.getDate();
  231. address = 'zskp/userHead/' + address + '/';
  232. let str = filePath.substr(filePath.lastIndexOf('.'));
  233. let nameStr = address + tiemr.getTime() + str;
  234. let ossUrl = 'https://goeasy-kuailaiyou.oss-cn-beijing.aliyuncs.com/';
  235. uni.uploadFile({
  236. url: ossUrl,
  237. filePath,
  238. fileType,
  239. name: 'file',
  240. formData: {
  241. name: nameStr,
  242. key: nameStr,
  243. policy: 'eyJleHBpcmF0aW9uIjoiMjA1MC0wMS0wMVQxMjowMDowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF1dfQ==', // 输入你获取的的policy
  244. OSSAccessKeyId: 'LTAI5tSQRXPMmcJbE3TGDPCr', // 输入你的AccessKeyId
  245. success_action_status: '200', // 让服务端返回200,不然,默认会返回204
  246. signature: 'sjxOXt7eILxUdyE/0idSJaCGrc8=' // 输入你获取的的signature
  247. },
  248. success: res => {
  249. uni.hideLoading();
  250. if (res.statusCode == '200') {
  251. callback({
  252. status: true,
  253. data: ossUrl + nameStr
  254. });
  255. } else {
  256. uni.showModal({
  257. title: 'OSS文件上传失败',
  258. content: JSON.stringify(res),
  259. showCancel: false,
  260. success: function(res) {
  261. callback({
  262. status: false,
  263. })
  264. }
  265. });
  266. }
  267. }
  268. });
  269. }
  270. // 失败回调
  271. function fail_fun(res, callback) {
  272. // console.log(res.errMsg.indexOf('cancel'))
  273. if (res.errMsg.indexOf('cancel') == -1) {
  274. uni.showModal({
  275. title: '文件选择失败',
  276. content: JSON.stringify(res),
  277. showCancel: false,
  278. success: function(res) {
  279. callback({
  280. status: false,
  281. })
  282. }
  283. });
  284. }
  285. }
  286. }
  287. // 上传文件到服务器
  288. const uploadFileApi = callback => {
  289. uni.chooseImage({
  290. count: 1,
  291. sizeType: ['compressed'],
  292. success: (chooseImageRes) => {
  293. uni.showLoading({
  294. title: '上传中...',
  295. mask: true
  296. })
  297. const tempFilePaths = chooseImageRes.tempFilePaths;
  298. uni.uploadFile({
  299. url: serverUrlReq + 'ajaxEntryCenter.php?WsAjaxPrj=KLY' +
  300. "&WsAjaxBiz=PublicAPP&WsAjaxAction=fileUpload",
  301. filePath: tempFilePaths[0],
  302. name: 'file',
  303. formData: {
  304. 'uploadfile': 'file'
  305. },
  306. success: (uploadFileRes) => {
  307. console.log(uploadFileRes)
  308. let res = JSON.parse(uploadFileRes.data);
  309. uni.hideLoading();
  310. if (res.ErrMsg) {
  311. uni.showModal({
  312. title: '文件上传失败',
  313. content: res.ErrMsg,
  314. showCancel: false,
  315. success: function(res) {
  316. callback({
  317. status: false,
  318. })
  319. }
  320. });
  321. } else {
  322. callback({
  323. status: true,
  324. data: res.Result
  325. });
  326. }
  327. },
  328. fail(result) {
  329. uni.hideLoading();
  330. uni.showModal({
  331. title: '文件上传fail',
  332. content: JSON.stringify(result),
  333. showCancel: false,
  334. success: function(res) {
  335. callback({
  336. status: false
  337. })
  338. }
  339. });
  340. },
  341. });
  342. },
  343. fail: res => {
  344. uni.showModal({
  345. title: '文件选择失败',
  346. content: JSON.stringify(res),
  347. showCancel: false,
  348. success: function(res) {
  349. callback({
  350. status: false,
  351. })
  352. }
  353. });
  354. }
  355. });
  356. }
  357. // goEasy相关
  358. const goEasy = GoEasy.getInstance({
  359. host: "hangzhou.goeasy.io", //应用所在的区域地址: 【hangzhou.goeasy.io |singapore.goeasy.io】
  360. appkey: "BC-b1e650ef62484e08826652d48242b06b", // common key,
  361. modules: ["im"],
  362. // true表示支持通知栏提醒,false则表示不需要通知栏提醒
  363. allowNotification: true //仅有效于app,小程序和H5将会被自动忽略
  364. });
  365. goEasy.onClickNotification((message) => {
  366. let currentUrl;
  367. const routes = getCurrentPages();
  368. if (routes && routes.length) {
  369. const curRoute = routes[routes.length - 1].route;
  370. const curParam = routes[routes.length - 1].options;
  371. currentUrl = '/' + curRoute + `?to=${curParam.to}`;
  372. }
  373. let newUrl;
  374. switch (message.toType) {
  375. case GoEasy.IM_SCENE.PRIVATE:
  376. newUrl = '/pages/message/chat?to=' + message.senderId;
  377. break;
  378. // case GoEasy.IM_SCENE.GROUP:
  379. // newUrl = '/pages/chat/groupChat/groupChat?to=' + message.groupId;
  380. // break;
  381. }
  382. if (currentUrl !== newUrl) {
  383. uni.navigateTo({
  384. url: newUrl,
  385. });
  386. }
  387. });
  388. const init_go_easy = (user_info, type) => {
  389. let currentUser = {
  390. "uuid": type + user_info.id,
  391. "name": type == 'user_' ? (user_info.true_name ? user_info.true_name : user_info.nickname) : (user_info
  392. .company_name ? user_info.company_name : (user_info.nickname ? user_info.nickname :
  393. '商家名称')),
  394. "avatar": user_info.profile_photo != '' ? user_info.profile_photo : '/static/user.png'
  395. }
  396. // console.log('初始化init_go_easy')
  397. // console.log(currentUser)
  398. uni.setStorageSync('currentUser', currentUser);
  399. if (goEasy.getConnectionStatus() === 'disconnected') {
  400. getApp().globalData.imService = new IMService(goEasy, GoEasy);
  401. getApp().globalData.imService.connect(currentUser);
  402. }
  403. }
  404. // 获取会话最新数据
  405. const get_message_data = () => {
  406. //监听会话列表变化
  407. goEasy.im.on(GoEasy.IM_EVENT.CONVERSATIONS_UPDATED, (content) => {});
  408. goEasy.im.latestConversations({
  409. onSuccess: function(result) {
  410. let content = result.content;
  411. // console.log('加载会话列表成功')
  412. // console.log(content)
  413. let unreadTotal = content.unreadTotal;
  414. get_user_info(res => {
  415. let ss_notice_unreaded = res.data.Result.ss_notice_unreaded
  416. this.unreadTotal = Number(unreadTotal) + ss_notice_unreaded;
  417. if (this.unreadTotal > 0) {
  418. uni.setTabBarBadge({
  419. index: 1,
  420. text: this.unreadTotal.toString()
  421. });
  422. } else {
  423. uni.removeTabBarBadge({
  424. index: 1
  425. });
  426. }
  427. })
  428. },
  429. onFailed: function(error) {
  430. console.log("获取最新会话列表失败:, code:" + error.code + " content:" + error.content);
  431. }
  432. });
  433. }
  434. const formatDate = function(t) {
  435. t = t || Date.now();
  436. let time = new Date(t);
  437. let str = time.getMonth() < 9 ? ('0' + (time.getMonth() + 1)) : (time.getMonth() + 1);
  438. str += '-';
  439. str += time.getDate() < 10 ? ('0' + time.getDate()) : time.getDate();
  440. str += ' ';
  441. str += time.getHours();
  442. str += ':';
  443. str += time.getMinutes() < 10 ? ('0' + time.getMinutes()) : time.getMinutes();
  444. return str;
  445. }
  446. const formatDate2 = now => {
  447. let y = ''
  448. let m = ''
  449. let d = ''
  450. let h = ''
  451. let mi = ''
  452. let s = ''
  453. y = now.getFullYear();
  454. m = now.getMonth() + 1;
  455. d = now.getDate();
  456. h = now.getHours()
  457. mi = now.getMinutes()
  458. s = now.getSeconds()
  459. return y + '-' + (m < 10 ? "0" + m : m) + '-' + (d < 10 ? "0" + d : d);
  460. }
  461. function getNextDate(date, day) {
  462. var dd = new Date(date);
  463. dd.setDate(dd.getDate() + day);
  464. var y = dd.getFullYear();
  465. var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
  466. var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
  467. return y + "-" + m + "-" + d;
  468. }
  469. // 检测是否包括手机号码等敏感信息
  470. const is_contain_sensitive_words = str => {
  471. str = String(str)
  472. // 检测手机号码
  473. if (str.length >= 11) {
  474. for (let i = 0; i < str.length - 10; i++) {
  475. let str_new = Number(str.slice(i, i + 11))
  476. if (!isNaN(str_new)) {
  477. if (str_new >= 13000000000 && str_new < 20000000000) {
  478. return true
  479. }
  480. }
  481. }
  482. }
  483. // 检测是否包括敏感词汇
  484. const sensitive_words = [
  485. '共产党', '民进党', '民主进步党', '国民党', '中华民国', '蔡英文', '苏贞昌', '吴钊燮', '微信', '手机号', '电话号码',
  486. ]
  487. for (let i in sensitive_words) {
  488. if (str.indexOf(sensitive_words[i]) !== -1) {
  489. return true
  490. }
  491. }
  492. return false
  493. }
  494. // 从数组中多选数组
  495. const select_from_arr = (data, index) => {
  496. let district = data[0]
  497. let district_index_arr = data[1]
  498. let index_of = district_index_arr.indexOf(index)
  499. if (index_of === -1) {
  500. district_index_arr.push(index)
  501. return district_index_arr
  502. } else {
  503. let district_index_new = []
  504. district_index_arr.map((item, index2) => {
  505. if (index2 !== index_of) {
  506. district_index_new.push(item)
  507. }
  508. })
  509. return district_index_new
  510. }
  511. }
  512. // 获取最新用户信息
  513. const get_user_info = callback => {
  514. requestUrl('&WsAjaxBiz=Worker&WsAjaxAction=entityDataHandle', {
  515. handleMode: 'fetch',
  516. bizCatalog: 'WorkerEntity',
  517. }, res => {
  518. callback(res)
  519. })
  520. }
  521. // 从身份证中获取年龄
  522. const get_age_from_id_num = idcard => (idcard && idcard.length == 18 && !isNaN(idcard.slice(6, 10))) ? (new Date()
  523. .getFullYear() - Number(idcard.slice(6, 10))) : ''
  524. // 时间戳转换为时间
  525. function getLocalTime(nS) {
  526. return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/, ' ');
  527. }
  528. // 检测是否为身份证号码
  529. function IsIdCard(str) {
  530. var reg = /^[1-8][1-7]\d{4}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dX]$/;
  531. return reg.test(str);
  532. }
  533. // 核销/支付
  534. const paySettleMer = (workid, callback = () => {}, handleMode = 'paySettle') => {
  535. console.log(handleMode)
  536. uni.showLoading({
  537. title: '加载中...',
  538. mask: true
  539. })
  540. let params2 = {
  541. bizCatalog: 'TodoWorkEntity',
  542. handleMode: 'fetch',
  543. workid,
  544. }
  545. // 查询待支付金额
  546. requestUrl('&WsAjaxBiz=Worker&WsAjaxAction=entityDataHandle', params2, res => {
  547. if (res.status) {
  548. console.log('查询待支付金额')
  549. console.log(res.data)
  550. uni.hideLoading()
  551. uni.showModal({
  552. title: '确认支付' + res.data.Result.btr_feetotal + '元?',
  553. success: (res) => {
  554. if (res.confirm) {
  555. uni.showLoading({
  556. title: '加载中...',
  557. mask: true
  558. })
  559. uni.login({
  560. success: res => {
  561. let params = {
  562. bizCatalog: 'TodoWorkEntity',
  563. handleMode,
  564. workid,
  565. minaCode: res.code,
  566. todo: 'allow',
  567. }
  568. console.log('paySettle处理请求参数')
  569. console.log('支付参数', params)
  570. requestUrl(
  571. '&WsAjaxBiz=Trader&WsAjaxAction=entityDataHandle',
  572. params,
  573. res => {
  574. console.log('paySettle处理获取参数')
  575. console.log(res)
  576. if (res.status) {
  577. let prePayInfo = res.data.Result
  578. .prePayInfo
  579. // 走支付
  580. if (prePayInfo) {
  581. console.log('prePayInfo')
  582. console.log(prePayInfo)
  583. uni.hideLoading()
  584. uni.requestPayment({
  585. ...prePayInfo,
  586. success: (res2) => {
  587. uni.showModal({
  588. title: '支付成功',
  589. showCancel: false,
  590. success: res => {
  591. callback
  592. ()
  593. }
  594. })
  595. },
  596. fail: function(
  597. res2) {
  598. if (res2
  599. .errMsg
  600. .indexOf(
  601. 'cancel'
  602. ) == -1
  603. ) {
  604. uni.showModal({
  605. title: '支付失败',
  606. content: JSON
  607. .stringify(
  608. res2
  609. ),
  610. showCancel: false,
  611. })
  612. }
  613. }
  614. });
  615. } else {
  616. // 走余额
  617. uni.showModal({
  618. title: '支付成功',
  619. showCancel: false,
  620. success: res => {
  621. callback()
  622. }
  623. })
  624. uni.hideLoading()
  625. return
  626. }
  627. }
  628. uni.hideLoading()
  629. })
  630. }
  631. })
  632. }
  633. }
  634. })
  635. }
  636. })
  637. }
  638. // 处理报名者假头像
  639. const formate_enrolled_heads = (enrolled_heads, num) => {
  640. let res_arr = []
  641. if (num > 0) {
  642. num = num > 3 ? 3 : num
  643. let enrolled_heads_arr = enrolled_heads.split(',')
  644. if (enrolled_heads_arr.length > 1) {
  645. res_arr = enrolled_heads_arr.slice(0, num)
  646. }
  647. }
  648. return res_arr
  649. }
  650. // 计算时间
  651. const calc_hours = (start_time, end_time) => {
  652. let h1 = start_time.slice(0, 2)
  653. let min1 = start_time.slice(3, 5)
  654. let h2 = end_time.slice(0, 2)
  655. let min2 = end_time.slice(3, 5)
  656. let res = (Number(h2) - Number(h1)) + (Number(min2) - Number(min1)) / 60
  657. return res < 0 ? '--' : res.toFixed(1)
  658. }
  659. // 计算日期
  660. const calc_date = (begin_datetime, finish_datetime) => {
  661. if (begin_datetime && finish_datetime) {
  662. let total_date = (new Date(finish_datetime) - new Date(begin_datetime)) / (1000 * 3600 * 24) + 1
  663. if (total_date > 0) {
  664. return total_date
  665. } else {
  666. return '--'
  667. }
  668. } else {
  669. return '--'
  670. }
  671. }
  672. const formate_name_card = (data) => {
  673. let res = {
  674. ...data
  675. }
  676. let lawer_name = res.lawer_name
  677. let lawer_idcard = res.lawer_idcard
  678. let str = ''
  679. for (let i = 0; i < lawer_name.length - 1; i++) {
  680. str += '*'
  681. }
  682. res.lawer_name = str + lawer_name.slice(lawer_name.length - 1, lawer_name.length)
  683. str = ''
  684. for (let i = 0; i < 13; i++) {
  685. str += '*'
  686. }
  687. res.lawer_idcard = lawer_idcard.slice(0, 3) + str + lawer_idcard.slice(16, 18)
  688. return res
  689. }
  690. const formate_name_card_mem = (data) => {
  691. let res = {
  692. ...data
  693. }
  694. let true_name = res.true_name
  695. let idcard = res.idcard
  696. let str = ''
  697. for (let i = 0; i < true_name.length - 1; i++) {
  698. str += '*'
  699. }
  700. res.true_name = str + true_name.slice(true_name.length - 1, true_name.length)
  701. str = ''
  702. for (let i = 0; i < 13; i++) {
  703. str += '*'
  704. }
  705. res.idcard = idcard.slice(0, 3) + str + idcard.slice(16, 18)
  706. return res
  707. }
  708. export default {
  709. formate_name_card_mem,
  710. formate_name_card,
  711. formatDate,
  712. init_go_easy,
  713. GoEasy,
  714. goEasy,
  715. serverUrl,
  716. serverUrlReq,
  717. webviewServerUrlReq,
  718. requestUrl,
  719. select_from_arr,
  720. uploadFileApi,
  721. uploadFileApiOSS,
  722. getPositionLocal,
  723. get_user_info,
  724. is_contain_sensitive_words,
  725. get_age_from_id_num,
  726. getLocalTime,
  727. IsIdCard,
  728. formatDate2,
  729. paySettleMer,
  730. get_message_data,
  731. formate_enrolled_heads,
  732. calc_hours,
  733. calc_date,
  734. getNextDate,
  735. }