選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

utils.ts 20KB

10ヶ月前
1年前
7ヶ月前
6ヶ月前
1年前
1年前
1年前
7ヶ月前
7ヶ月前
11ヶ月前
10ヶ月前
10ヶ月前
7ヶ月前
1年前
7ヶ月前
1年前
7ヶ月前
7ヶ月前
7ヶ月前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
10ヶ月前
1年前
10ヶ月前
1年前
10ヶ月前
1年前
10ヶ月前
10ヶ月前
10ヶ月前
10ヶ月前
7ヶ月前
6ヶ月前
7ヶ月前
6ヶ月前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761
  1. import { getItem, StorageKeys } from "./storage";
  2. import { OrderStatus, OrderTypes } from "@/datas/enum.ts";
  3. import { envs,interceptNDApi } from "@/utils/network/api.js";
  4. import {
  5. stringToJson
  6. } from "@/utils/network/encryption";
  7. import { agentId } from "@/utils/network/difference";
  8. import {
  9. request,requestNew
  10. } from "@/utils/network/request.js";
  11. export const msg = (title : string = "", param : any = {}) => {
  12. if (!title) return;
  13. uni.showToast({
  14. title,
  15. duration: param.duration || 1500,
  16. mask: param.mask || false,
  17. icon: param.icon || "none",
  18. });
  19. };
  20. //确认弹窗
  21. export const confirm = (content : string, callback : Function, title : string = "", showCancel ?: boolean, confimTxt = '确定') => {
  22. uni.showModal({
  23. title: title,
  24. content: content,
  25. showCancel: showCancel ? showCancel : true,
  26. confirmText: confimTxt,
  27. success: function (res) {
  28. if (res.confirm) {
  29. callback()
  30. } else if (res.cancel) {
  31. //console.log('用户点击取消');
  32. }
  33. }
  34. });
  35. };
  36. /**
  37. * 判断是否登录
  38. */
  39. export const hasLogin = () => {
  40. const token = getItem(StorageKeys.Token);
  41. const openId = getItem(StorageKeys.OpenId);
  42. return !isBlank(token) && !isBlank(openId);
  43. }
  44. /**
  45. * 跳转页面
  46. * url:页面路径
  47. * login:是否需要判断有没有登录
  48. */
  49. export const navTo = (url : string = "", login : boolean = false) => {
  50. if (!url) {
  51. return;
  52. }
  53. if (login && !hasLogin()) {
  54. confirm('您需要登录过后才能使用此功能', () => {
  55. uni.navigateTo({
  56. url: '/login/login',
  57. });
  58. }, '温馨提示', true, '去登录');
  59. } else {
  60. let pages = getCurrentPages();
  61. // 获取页面栈总页数
  62. // this.pagesCount = pages.length;
  63. // 如果页面栈总数大于10
  64. console.log("pages.length",pages.length)
  65. if(pages.length >= 10){
  66. // 使用重定向跳转页面
  67. uni.redirectTo({
  68. url
  69. })
  70. }else{
  71. // 如果页面栈总数小于10,则打开新页面
  72. uni.navigateTo({
  73. url,
  74. });
  75. }
  76. }
  77. };
  78. /**
  79. * 校验格式数据格式
  80. * @param 要校验的数据
  81. * @param 什么类型格式
  82. */
  83. export const checkStr = (str : string, type : string) => {
  84. switch (type) {
  85. case 'mobile': //手机号码
  86. return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
  87. case 'tel': //座机
  88. return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
  89. case 'card': //身份证
  90. return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
  91. case 'mobileCode': //6位数字验证码
  92. return /^[0-9]{6}$/.test(str)
  93. case 'pwd': //密码以字母开头,长度在8~99之间,只能包含字母、数字和下划线
  94. return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,99}$/.test(str)
  95. case 'payPwd': //支付密码 6位纯数字
  96. return /^[0-9]{6}$/.test(str)
  97. case 'postal': //邮政编码
  98. return /[1-9]\d{5}(?!\d)/.test(str);
  99. case 'QQ': //QQ号
  100. return /^[1-9][0-9]{4,9}$/.test(str);
  101. case 'weixin': //微信号
  102. return /^[a-zA-Z][a-zA-Z\d_-]{5,19}$/.test(str);
  103. case 'email': //邮箱
  104. return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
  105. case 'money': //金额(小数点2位)
  106. return /^\d*(?:\.\d{0,2})?$/.test(str);
  107. case 'URL': //网址
  108. return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
  109. case 'IP': //IP
  110. return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
  111. case 'date': //日期时间
  112. return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/
  113. .test(str)
  114. case 'number': //数字
  115. return /^[0-9]$/.test(str);
  116. case 'english': //英文
  117. return /^[a-zA-Z]+$/.test(str);
  118. case 'chinese': //中文
  119. return /^[\\u4E00-\\u9FA5]+$/.test(str);
  120. case 'lower': //小写
  121. return /^[a-z]+$/.test(str);
  122. case 'upper': //大写
  123. return /^[A-Z]+$/.test(str);
  124. case 'HTML': //HTML标记
  125. return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
  126. default:
  127. return true;
  128. }
  129. }
  130. /**
  131. * 检查是否为空
  132. * val 数组、对象、字符串
  133. */
  134. export function isBlank(val) {
  135. if (typeof val == 'boolean') {
  136. return false;
  137. }
  138. if (typeof val == 'number') {
  139. return false;
  140. }
  141. if (val instanceof Array) {
  142. if (val.length == 0) return true;
  143. } else if (val instanceof Object) {
  144. if (JSON.stringify(val) === '{}') return true;
  145. } else {
  146. if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true;
  147. return false;
  148. }
  149. return false;
  150. };
  151. //根据订单状态获取订单状态文字
  152. export const getOrderStatusName = (status) => {
  153. switch (Number(status)) {
  154. case Number(OrderStatus.完成填写基本信息):
  155. return '申请中';
  156. break;
  157. case Number(OrderStatus["完成个人/单位信息上传"]):
  158. return '申请中';
  159. break;
  160. case Number(OrderStatus.完成车辆信息上传):
  161. return '申请中';
  162. break;
  163. case Number(OrderStatus.待支付):
  164. return '待支付';
  165. break;
  166. case Number(OrderStatus.待支付3):
  167. return '申请中';
  168. break;
  169. case Number(OrderStatus.待支付2):
  170. return '待支付';
  171. break;
  172. case Number(OrderStatus.完成签约):
  173. return '完成签约';
  174. break;
  175. case Number(OrderStatus.待审核):
  176. return '待审核';
  177. break;
  178. case Number(OrderStatus.审核不通过):
  179. return '审核不通过';
  180. break;
  181. case Number(OrderStatus.待发货):
  182. return '待发货';
  183. break;
  184. case Number(OrderStatus.待收货):
  185. return '待收货';
  186. break;
  187. case Number(OrderStatus.待激活):
  188. return '待激活';
  189. break;
  190. case Number(OrderStatus.已完成):
  191. return '已完成';
  192. break;
  193. case Number(OrderStatus["已申请-换货"]):
  194. return '换货中';
  195. break;
  196. case Number(OrderStatus["已申请-退货"]):
  197. return '退货中';
  198. break;
  199. case Number(OrderStatus.已结束):
  200. return '已结束';
  201. break;
  202. case Number(OrderStatus.退款中):
  203. return '退款中';
  204. break;
  205. case Number(OrderStatus.退款成功):
  206. return '退款成功';
  207. break;
  208. case Number(OrderStatus.退货成功):
  209. return '退货成功';
  210. break;
  211. case Number(OrderStatus["换货-设备已回收"]):
  212. return '换货成功';
  213. break;
  214. case Number(OrderStatus.待加购权益):
  215. return '代加购权益';
  216. break;
  217. case Number(OrderStatus["完成车辆信息上传/待支付"]):
  218. return '待支付';
  219. break;
  220. case Number(OrderStatus["已支付/待签约"]):
  221. return '待签约';
  222. break;
  223. default:
  224. break;
  225. }
  226. }
  227. //根据订单状态获取订单状态文字
  228. export const getOrderStatusNameNew = (status) => {
  229. switch (Number(status)) {
  230. case Number(OrderStatus.完成填写基本信息):
  231. return 'shenqingzhong';
  232. break;
  233. case Number(OrderStatus["完成个人/单位信息上传"]):
  234. return 'shenqingzhong';
  235. break;
  236. case Number(OrderStatus.完成车辆信息上传):
  237. return 'shenqingzhong';
  238. break;
  239. case Number(OrderStatus.待支付):
  240. return 'daizhifu';
  241. break;
  242. case Number(OrderStatus.待支付3):
  243. return 'shenqingzhong';
  244. break;
  245. case Number(OrderStatus.待支付2):
  246. return 'daizhifu';
  247. break;
  248. case Number(OrderStatus.完成签约):
  249. return 'finishqianyue';
  250. break;
  251. case Number(OrderStatus.待审核):
  252. return 'daishenhe';
  253. break;
  254. case Number(OrderStatus.审核不通过):
  255. return 'nopass';
  256. break;
  257. case Number(OrderStatus.待发货):
  258. return 'daifanhuo';
  259. break;
  260. case Number(OrderStatus.待收货):
  261. return 'daishouhuo';
  262. break;
  263. case Number(OrderStatus.待激活):
  264. return 'dajihuo';
  265. break;
  266. case Number(OrderStatus.已完成):
  267. return 'yiwancheng';
  268. break;
  269. case Number(OrderStatus["已申请-换货"]):
  270. return 'huanhuozhong';
  271. break;
  272. case Number(OrderStatus["已申请-退货"]):
  273. return 'tuihuozhong';
  274. break;
  275. case Number(OrderStatus.已结束):
  276. return 'yijieshu';
  277. break;
  278. case Number(OrderStatus.退款中):
  279. return 'tuikuanzhong';
  280. break;
  281. case Number(OrderStatus.退款成功):
  282. return 'tuikuanchenggong';
  283. break;
  284. case Number(OrderStatus.退货成功):
  285. return 'tuihuosuccess';
  286. break;
  287. case Number(OrderStatus["换货-设备已回收"]):
  288. return 'huanhuochenggong';
  289. break;
  290. case Number(OrderStatus["完成车辆信息上传/待支付"]):
  291. return 'daizhifu';
  292. break;
  293. case Number(OrderStatus["已支付/待签约"]):
  294. return 'daiqianyue';
  295. break;
  296. default:
  297. break;
  298. }
  299. }
  300. //根据订单类型获取订单类型文字
  301. export const getOrderTypeName = (orderType) => {
  302. return OrderTypes[orderType];
  303. }
  304. //根据订单类型获取订单类型文字
  305. export const getOrderTypeNameNew = (orderType) => {
  306. return OrderTypesNew[orderType];
  307. }
  308. //根据车辆类型获取车辆名称
  309. export const getCarTypeName = (carType : any) => {
  310. switch (carType) {
  311. case 1:
  312. return '客车';
  313. break;
  314. case 2:
  315. return '货车';
  316. break;
  317. default:
  318. break;
  319. }
  320. }
  321. //根据ETC卡状态获取ETC卡状态文字
  322. export const getETCStatusName = (cardStatus) => {
  323. switch (cardStatus) {
  324. case 0:
  325. return '申请';
  326. break;
  327. case 1:
  328. return '正常';
  329. break;
  330. case 2:
  331. return '有卡挂起';
  332. break;
  333. case 3:
  334. return '无卡挂起';
  335. break;
  336. case 4:
  337. return '有卡注销';
  338. break;
  339. case 5:
  340. return '无卡注销';
  341. break;
  342. case 6:
  343. return '卡挂失';
  344. break;
  345. case 9:
  346. return '预注销';
  347. break;
  348. case 99:
  349. return '已删除';
  350. break;
  351. default:
  352. break;
  353. }
  354. }
  355. //根据OBU状态获取OBU状态文字
  356. export const getOBUStatusName = (obuStatus) => {
  357. switch (obuStatus) {
  358. case 0:
  359. return '未安装';
  360. break;
  361. case 1:
  362. return '正常';
  363. break;
  364. case 2:
  365. return '有签挂起';
  366. break;
  367. case 3:
  368. return '无签挂起';
  369. break;
  370. case 4:
  371. return '有签注销';
  372. break;
  373. case 5:
  374. return '无签注销';
  375. break;
  376. case 6:
  377. return '标签挂失';
  378. break;
  379. case 7:
  380. return '已过户';
  381. break;
  382. case 8:
  383. return '维修中';
  384. break;
  385. case 9:
  386. return '发行申请';
  387. break;
  388. case 10:
  389. return '车型不符';
  390. break;
  391. case 11:
  392. return '已发行';
  393. break;
  394. case 99:
  395. return '已删除';
  396. break;
  397. default:
  398. break;
  399. }
  400. }
  401. //获取订单时间
  402. export const getOrderTime = (time) => {
  403. if (!time) return '';
  404. return getFormatDate(new Date(time));
  405. }
  406. //替换图片路径
  407. export const strReplace = (str : string) => {
  408. let imgUrl = str.replace("http://192.168.101.145:9000", envs[process.env.NODE_ENV].baseUrl);
  409. imgUrl = imgUrl.replace("http://100.64.2.113:9000", envs[process.env.NODE_ENV].baseUrl);
  410. return imgUrl;
  411. }
  412. // 身份证号脱敏
  413. export const desensitization = (val) => {
  414. if(val){
  415. return val.replace(/^\d{14}/,'**************');
  416. }
  417. }
  418. //查看大图
  419. export const checkBigImg = (current, urls) => {
  420. uni.previewImage({
  421. current: current,
  422. urls: urls,
  423. });
  424. }
  425. //日期格式化
  426. export function getFormatDate(date, fmt ?: string) {
  427. if (date == undefined) {
  428. date = new Date()
  429. }
  430. date = typeof date == 'number' ? new Date(date) : date;
  431. fmt = fmt || 'yyyy-MM-dd HH:mm:ss';
  432. var obj = {
  433. 'y': date.getFullYear(), // 年份,注意必须用getFullYear
  434. 'M': date.getMonth() + 1, // 月份,注意是从0-11
  435. 'd': date.getDate(), // 日期
  436. 'q': Math.floor((date.getMonth() + 3) / 3), // 季度
  437. 'w': date.getDay(), // 星期,注意是0-6
  438. 'H': date.getHours(), // 24小时制
  439. 'h': date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 12小时制
  440. 'm': date.getMinutes(), // 分钟
  441. 's': date.getSeconds(), // 秒
  442. 'S': date.getMilliseconds() // 毫秒
  443. };
  444. var week = ['天', '一', '二', '三', '四', '五', '六'];
  445. for (var i in obj) {
  446. fmt = fmt.replace(new RegExp(i + '+', 'g'), function (m) {
  447. var val = obj[i] + '';
  448. if (i == 'w') return (m.length > 2 ? '星期' : '周') + week[val];
  449. for (var j = 0, len = val.length; j < m.length - len; j++) val = '0' + val;
  450. return m.length == 1 ? val : val.substring(val.length - m.length);
  451. });
  452. }
  453. return fmt;
  454. };
  455. //时间格式化
  456. export function formatTime(date : any) {
  457. const year = date.getFullYear()
  458. const month = date.getMonth() + 1
  459. const day = date.getDate()
  460. const hour = date.getHours()
  461. const minute = date.getMinutes()
  462. const second = date.getSeconds()
  463. return `${[year, month, day].map(formatNumber).join('-')}T${[hour, minute, second].map(formatNumber).join(':')}`
  464. }
  465. export function formatTime2(date : any) {
  466. const year = date.getFullYear() + 10
  467. const month = date.getMonth() + 1
  468. const day = date.getDate()
  469. const hour = date.getHours()
  470. const minute = date.getMinutes()
  471. const second = date.getSeconds()
  472. return `${[year, month, day].map(formatNumber).join('-')}T${[hour, minute, second].map(formatNumber).join(':')}`
  473. }
  474. //有效期时间格式化
  475. export function expireDate(date : any) {
  476. const year = date.getFullYear() + 10
  477. const month = date.getMonth() + 1
  478. const day = date.getDate()
  479. return `${[year, month, day].map(formatNumber).join('-')}`
  480. }
  481. export function expireDate2(date : any) {
  482. const year = date.getFullYear() + 10
  483. const month = date.getMonth() + 1
  484. const day = date.getDate()
  485. return `${[year, month, day].map(formatNumber).join('')}`
  486. }
  487. //当前时间时间格式化
  488. export function nowDate(date : any) {
  489. const year = date.getFullYear()
  490. const month = date.getMonth() + 1
  491. const day = date.getDate()
  492. return `${[year, month, day].map(formatNumber).join('-')}`
  493. }
  494. function formatNumber(n : any) {
  495. n = n.toString()
  496. return n[1] ? n : `0${n}`
  497. }
  498. export const uploadFile = (tempImagePath, imageType, code) => {
  499. console.log("tempImagePath",tempImagePath,tempImagePath.size)
  500. return new Promise((resolve, reject) => {
  501. uni.uploadFile({
  502. url: 'https://qtzl.etcjz.cn/minIo/upload', //仅为示例,非真实的接口地址
  503. filePath: tempImagePath,
  504. name: 'file',
  505. formData: {
  506. 'user': 'test',
  507. "bucket": 'default-bucket'
  508. },
  509. success: (uploadFileRes) => {
  510. let uploadFileImage = 'http://100.64.2.113:9000' + '/default-bucket/' + JSON.parse(uploadFileRes.data).data.ossFilePath
  511. console.log("111", JSON.parse(uploadFileRes.data).data.ossFilePath,JSON.parse(uploadFileRes.data));
  512. if (code == "/iaw/ocr/idCardOcr") { //身份证 imageType 1 2
  513. var data = {
  514. source: "1",
  515. agencyId: agentId,
  516. imageType: imageType,
  517. fileName: tempImagePath,
  518. url: uploadFileImage
  519. };
  520. } else if (code == "/iaw/ocr/vehicleLicenseOcr") { //行驶证 imageType 1正 2反
  521. var data = {
  522. source: "1",
  523. agencyId: agentId,
  524. imageType: imageType,
  525. fileName: tempImagePath,
  526. imageUrl: uploadFileImage
  527. };
  528. } else if (code == "") { //委托书 车头照 17
  529. let uploadFileImage = envs[process.env.NODE_ENV].baseUrl + '/default-bucket/' + JSON.parse(uploadFileRes.data).data.ossFilePath
  530. console.log("17", uploadFileImage)
  531. resolve(uploadFileImage)
  532. return;
  533. } else if (code == '/iaw/ocr/businessLicenseOcr') { //营业执照
  534. var data = {
  535. type: 'business_license',
  536. url: uploadFileImage
  537. };
  538. console.log("91", uploadFileImage)
  539. }
  540. const options = {
  541. type: 2,
  542. data: data,
  543. method: "POST",
  544. showLoading: true,
  545. };
  546. requestNew(code, options).then((res) => {
  547. console.log("res===",res)
  548. const data = res;
  549. console.log('输出内容=====123', data)
  550. resolve(data)
  551. });
  552. }
  553. });
  554. })
  555. }
  556. /**
  557. * 获取距离当前时间的 (天数/小时数/分钟数)
  558. * @param {*} timesData '2018-05-17 16:58:00'
  559. * @returns
  560. */
  561. export function timesDiff(timesData : any) {
  562. var dateBegin = new Date();//获取当前时间
  563. var dateEnd = new Date(timesData.replace(/-/g, "/"));//将-转化为/,使用new Date
  564. var dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
  565. var days = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
  566. var leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  567. var hours = Math.floor(leave1 / (3600 * 1000))//计算出小时数
  568. var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  569. var minutes = Math.floor(leave2 / (60 * 1000))//计算相差分钟数
  570. var diffObj = {
  571. days: 0,
  572. hours: 0,
  573. minutes: 0,
  574. };
  575. if (days != 0) {
  576. diffObj.days = Math.abs(days);
  577. } else if (days == 0 && hours != 0) {
  578. diffObj.hours = hours;
  579. } else if (days == 0 && hours == 0) {
  580. diffObj.minutes = minutes;
  581. }
  582. return diffObj
  583. }
  584. // 订阅消息
  585. export function subscribeMessages() {
  586. uni.requestSubscribeMessage({
  587. tmplIds: ['aNr4T2JEtaLtR9dihM2w3NAznz4bFMkutVZCbaSTjxg'],
  588. success(res) {
  589. console.log("订阅消息", res)
  590. }
  591. })
  592. }
  593. // 通知用户消息订阅
  594. export const noticeUser = (callback : Function) => {
  595. // #ifdef MP-WEIXIN
  596. uni.requestSubscribeMessage({
  597. tmplIds: ['u7u0yO2dkYBISpox815e1S_fcUyl9B9qyxAK7aBjuho'],
  598. complete(res) {
  599. console.log("通知用户消息订阅", res)
  600. callback()
  601. }
  602. })
  603. // #endif
  604. // #ifdef MP-ALIPAY
  605. my.requestSubscribeMessage({
  606. entityIds: [
  607. 'f1f2d14d608e48dca5c4f4775d3d2424'
  608. ],
  609. complete(res) {
  610. console.log("通知用户消息订阅", res)
  611. callback()
  612. }
  613. })
  614. // #endif
  615. }
  616. // 压缩图片
  617. export const compressImage = (tempFilePaths : any,scall, callback : Function) => {
  618. uni.compressImage({
  619. src: tempFilePaths, // 图片路径
  620. quality: 80, // 压缩质量,范围为0 - 100,100为不压缩
  621. success: function (res) {
  622. console.log('压缩后的图片路径:' + res.tempFilePath,res)
  623. callback(res)
  624. },
  625. fail: function (err) {
  626. console.error('压缩失败:' + err)
  627. }
  628. })
  629. }
  630. export const chooseImageCompress = ( callback : Function) => {
  631. uni.chooseImage({
  632. count: 1, //只能选取一张照片
  633. sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
  634. sourceType: ["album"], //从相册选择
  635. success: function (res) {
  636. let scall=res.tempFiles[0].size/1024/1024/2
  637. console.log("scall",scall)
  638. console.log("res.tempFiles[0].size", res.tempFilePaths[0], res.tempFiles[0].size/1024/1024)
  639. // if(scall>1){
  640. // console.log("压缩")
  641. // let quality=100
  642. // if(scall<2){
  643. // quality=80
  644. // }else if(scall>=3 && scall<4){
  645. // quality=75
  646. // }else if(scall>=4 && scall<5){
  647. // quality=60
  648. // }else if(scall>=5 && scall<6){
  649. // quality=1
  650. // }else{
  651. // quality=0
  652. // }
  653. // uni.compressImage({
  654. // src: res.tempFilePaths[0], // 图片路径
  655. // quality: quality, // 压缩质量,范围为0 - 100,100为不压缩
  656. // success: function (res) {
  657. // console.log('压缩后的图片路径:' + res.tempFilePath,res)
  658. // callback(res)
  659. // },
  660. // fail: function (err) {
  661. // console.error('压缩失败:' + err)
  662. // }
  663. // })
  664. // }else{
  665. callback(res)
  666. // }
  667. },
  668. })
  669. }
  670. export const interceptND = (vehicleId) => {
  671. var data = {
  672. vehicleId: vehicleId,
  673. source:"MINI_PROGRAM"
  674. };
  675. console.log("data==",data)
  676. const options = {
  677. type: 2,
  678. data: data,
  679. method: "POST",
  680. showLoading: true,
  681. };
  682. return new Promise(async (resolve, reject) => {
  683. const res = await request(interceptNDApi, options);
  684. const data = stringToJson(res.bizContent);
  685. if(data.pass=='on'){
  686. confirm('鉴于系统正在进行升级维护,请您前往贵州黔通智联九州ETC服务小程序,以便顺利办理相关业务。', () => {
  687. }, '温馨提示', true, '确定');
  688. }else{
  689. resolve(data);
  690. }
  691. }).catch((error) => {
  692. reject(error);
  693. });
  694. }
  695. // 身份证有效期是否过期
  696. export function compareDates(specifiedDateString) {
  697. const newTime=specifiedDateString.substring(0,4)+"-"+specifiedDateString.substring(4,6)+"-"+specifiedDateString.substring(6,8)
  698. console.log("newTime",newTime)
  699. const currentDate = new Date();
  700. const specifiedDate = new Date(newTime);
  701. if (currentDate > specifiedDate) {
  702. console.log("当前日期晚于指定日期")
  703. msg("身份证过期请重新上传", {
  704. 'duration': 2000
  705. })
  706. return "当前日期晚于指定日期";
  707. } else if (currentDate < specifiedDate) {
  708. console.log("当前日期早于指定日期")
  709. return "当前日期早于指定日期";
  710. } else {
  711. console.log("当前日期等于指定日期")
  712. return "当前日期等于指定日期";
  713. }
  714. }
  715. // 示例使用
  716. // const dateComparison = compareDates('2023-12-31');
  717. // console.log(dateComparison);
  718. // 跳转运维小程序
  719. export function jumpOldMini() {
  720. uni.navigateToMiniProgram({
  721. appId: "wx008c60533388527a",
  722. path: `pages/main/serve/serve`,
  723. envVersion: "release",
  724. success(res) {
  725. console.log('成功', res);
  726. },
  727. fail(res) {
  728. console.log('失败' + res);
  729. },
  730. });
  731. }