/* * @Descripttion: * @Author: lip * @Date: 2023-07-27 15:56:06 * @LastEditors: shirlwang */ import { getPersonBase } from '@/apiRc/person'; import store from '@/utilsRc/store'; import tab from '@/utilsRc/plugins/tab.js' /** * 显示消息提示框 * @param content 提示的标题 */ export function toast(content) { uni.showToast({ icon: 'none', title: content }) } /** * 显示模态弹窗 * @param content 提示的标题 */ export function showConfirm(content, cancelText, confirmText, showCancel) { return new Promise((resolve, reject) => { uni.showModal({ title: '提示', content: content, cancelText: cancelText || '取消', confirmText: confirmText || '确定', showCancel: showCancel === false ? false : true, success: function(res) { resolve(res) } }) }) } // 修改后的 checkPersonBase 方法 export function checkPersonBase() { return new Promise((resolve) => { const roles = store.getters.roles; const userId = store.getters.userId; const isRole = (role) => roles.includes(role); if (isRole('qunzhong')) { getPersonBase(userId).then(resp => { const shouldGoToPersonInfo = resp.data.auditStatus === '0'; if (shouldGoToPersonInfo) { uni.showModal({ title: '提示', content: '您的个人信息尚未维护,请前往维护个人信息。', confirmText: '去维护', cancelText: '取消', success: function(res) { if (res.confirm) { tab.navigateTo('/pages/personInfo/index'); } resolve(false); // 需要维护,返回 false } }); } else { resolve(true); // 不需要维护,返回 true } }); } else { resolve(true); // 非群众角色直接放行 } }); } /** * 参数处理 * @param params 参数 */ export function tansParams(params) { let result = '' for (const propName of Object.keys(params)) { const value = params[propName] var part = encodeURIComponent(propName) + "=" if (value !== null && value !== "" && typeof(value) !== "undefined") { if (typeof value === 'object') { for (const key of Object.keys(value)) { if (value[key] !== null && value[key] !== "" && typeof(value[key]) !== 'undefined') { let params = propName + '[' + key + ']' var subPart = encodeURIComponent(params) + "=" result += subPart + encodeURIComponent(value[key]) + "&" } } } else { result += part + encodeURIComponent(value) + "&" } } } return result } /** * 姓名、手机、邮箱、身份证脱敏 * @param str 姓名或手机或邮箱或身份证 * @param type 数据类型 */ export function publicEncrypt(str, type) { if (!str) { return '' } else if (type == 'name') { return str.substr(0, 1) + '*' } else if (type == 'idCard') { return str.replace(/^(.{6})(?:\d+)(.{4})$/, '$1********$2') } else if (type == 'phone') { return str.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') } else if (type == 'email') { let count, emailArr, emailFront, emailBack; emailArr = str.split('@'); emailFront = emailArr[0]; count = emailFront.length / 2; emailFront = emailFront.substring(0, emailFront.length - count); emailBack = emailArr[1]; return emailFront + '***@' + emailBack; } } /** * 根据value值筛选对应的label * @param {Array} options - 原数组 * @param {string | Number} value - 表示 * @returns {string} - 返回后的汉字 */ export function getLabelByValue(options = [], value, valueKey = 'value', labelKey = 'label') { for (let i = 0; i < options.length; i++) { // 动态使用传入的 valueKey 和 labelKey if (options[i][valueKey] === value) { return options[i][labelKey]; } } return null; } /** * 将数组转换为字符串 * @param {Array} arr - 要转换的数组 * @param {string} delimiter - 用于连接数组元素的分隔符,默认为逗号 * @returns {string} - 转换后的字符串 */ export function arrayToString(arr, delimiter = ',') { return arr.join(delimiter); } /* 延时函数 */ export function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } /* 获取当前年月日 时分秒 */ export function getCurrentDate() { const date = new Date(); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1 const day = String(date.getDate()).padStart(2, '0'); // 使用padStart补零 const hours = String(date.getHours()).padStart(2, '0'); // 补零 const minutes = String(date.getMinutes()).padStart(2, '0'); // 补零 const seconds = String(date.getSeconds()).padStart(2, '0'); // 补零 return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } export function processFileUrl(fileUrl) { let fileList = []; if (typeof fileUrl === 'string' && fileUrl) { // 如果 fileUrl 是一个字符串,则按照逗号分割成数组 const urls = fileUrl.split(',').map(url => url.trim()); // 去除每个 URL 前后的空白字符 fileList = urls.map(url => ({ url, success: 'success', name: 'fileUrl' })); } return fileList; } // 密码强校验 export function isPasswordComplex(password) { // 长度在8位以上,并且包含大小写字母、数字和特殊符号 return /^(?=.*[A-Za-z])(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&*!])[A-Za-z\d@#$%^&*!]{8,}$/.test(password); } // 手机号码校验 export function isPhoneNumberValid(phoneNumber) { // 匹配国内常见的手机号格式 return /^1[3-9]\d{9}$/.test(phoneNumber); } // 身份证校验函数 export function isValidIdCard (idCard) { if (typeof idCard !== 'string') { return false; } // 定义省份代码 const provinceCodes = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" }; // 检查长度 if (!/^\d{17}(\d|X|x)$/.test(idCard)) { return false; } // 验证省份代码 const provinceCode = idCard.substring(0, 2); if (!provinceCodes[provinceCode]) { return false; } // 验证出生日期 const birthDate = idCard.substring(6, 14); const birthYear = parseInt(birthDate.substring(0, 4), 10); const birthMonth = parseInt(birthDate.substring(4, 6), 10); const birthDay = parseInt(birthDate.substring(6, 8), 10); const birthDateObject = new Date(birthYear, birthMonth - 1, birthDay); if ( birthDateObject.getFullYear() !== birthYear || birthDateObject.getMonth() + 1 !== birthMonth || birthDateObject.getDate() !== birthDay ) { return false; } // 验证校验码 const weightFactors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; const sum = idCard .substring(0, 17) .split('') .reduce((acc, num, index) => acc + parseInt(num, 10) * weightFactors[index], 0); const checkCode = checkCodes[sum % 11]; return checkCode === idCard[17].toUpperCase(); };