let data = { /* 固定数据 */ store () { return { appid: 'wxa7b4864efbcff191', // localBaseImg: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/APP/", // app图片前缀 cdnBaseImg: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/", // cdn图片公共前缀路径 v3BaseImg: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/v3/", // cdn图片公共前缀路径 fadanBaseImg: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/", loginText: '请登录', coziID: '7537572244600471579', // #ifdef MP-WEIXIN version: uni.getAccountInfoSync().miniProgram.version || "1.0.16", // #endif // #ifdef H5 || APP-PLUS || MP-TOUTIAO || MP-KUAISHOU version: "1.0.16" // #endif } }, fullCopy (data) { return JSON.parse(JSON.stringify(data)) }, /* 清除登录信息存储 */ clearLocalStorage () { uni.removeStorageSync("apply-avatar"); uni.removeStorageSync("apply-username"); uni.removeStorageSync("apply-tel"); uni.removeStorageSync("apply-token"); uni.removeStorageSync("apply-userinfo"); uni.removeStorageSync("apply-userinfo-copy"); uni.removeStorageSync("apply-agencyId"); uni.removeStorageSync("apply-supplierAccount"); uni.removeStorageSync("apply-uid"); uni.removeStorageSync('agencyInfo') // 1是创建者 2是普通成员 }, /* 分享给好友 */ shareFun ( path = "/pages/home/index", image = "", title = "报名助手" ) { let params = { path: path, // imageUrl: this.store().localBaseImg + 'share.png', // image ? image : imageUrl: image, title: title }; console.log('分享数据:', params) return params; }, /* 交互反馈:取消确认弹窗 */ handleConfirm ( options ) { console.log(options); uni.showModal({ title: options.title || '', content: options.content || '', showCancel: options.showCancel === false ? false : true, confirmText: options.confirmText || "确定", confirmColor: options.confirmColor || "#576b95", cancelColor: options.cancelColor || "#000", cancelText: options.cancelText || "取消", success (res) { options.success(res); } }); }, /* 判断是否登录,未登录,强制跳转至登录页 */ isLogin () { let that = this; if (!uni.getStorageSync("apply-token")) { uni.reLaunch({ url: '/root/person/loginIndex?path=/' + that.getPath().path + '&level=' + that.getPath().level }); return false; } else { return true; } }, /* 获取当前path */ getPath () { const pages = getCurrentPages(); if (pages.length > 0) { let _path = pages[pages.length - 1].route; return { path: _path, level: _path.slice(0, 4) } } else { return { path: '', level: '' }; } }, /* 一键复制文案 */ copyText ($text = '默认文案', $toast = "复制成功") { uni.setClipboardData({ data: $text, success: function () { uni.showToast({ title: $toast }) } }); }, /* 上传图片 */ uploadImage ($num = 1, callback = () => { }, $sourceType = ['album', 'camera']) { uni.chooseImage({ crop: { width: 100, height: 100 }, count: $num, //默认9 sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 sourceType: $sourceType, //album 从相册选图,camera 使用相机 success: function (res) { console.log('选取文件数据:', res) callback(JSON.stringify(res.tempFilePaths)); } }); }, /* 上传视频和图片 */ uploadM ($num = 1, callback = () => { }) { uni.chooseMedia({ count: $num, //默认9 sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], //从相册选择 success: function (res) { console.log('选取文件数据:', res) callback(JSON.stringify(res.tempFilePaths)); } }); }, /* 格式转化 * 临时路径转base数据 */ temToBase ($path) { if ($path) { uni.getFileSystemManager().readFile({ filePath: $path, encoding: 'base64', success: res => { let base64 = 'data:image/jpeg;base64,' + res.data; //不加上这串字符,在页面无法显示 console.log('base64:', base64) return base64; } }) } }, /* 设置导航条 */ setNavStyle ($form = 'default') { console.log('into setNavStyle'); if ($form == 'home') { uni.setNavigationBarColor({ backgroundColor: "#fff", frontColor: "#000000" }) } }, /** * 时间格式转换 * @params str 时间戳或者标准时间 * @params type 类型 * @returns */ getPointTime (str = '', type = 'default') { let that = this; let year, month, date, hours, minute, second; let time; if (type == "pointDate") { // 近N天 time = new Date(new Date(new Date().getTime() - (str - 1) * 24 * 60 * 60 * 1000)) type = "YY--MM--DD" } else if (type == "yesterday") { // 昨日 time = new Date(new Date(new Date()).setDate(new Date(new Date()).getDate() - 1)) type = "YY--MM--DD" } else if (type == "thisweek") { // 本周 实际是上周日到当前周的周六。周日的截止时间需特殊处理 if (str == 'first') { let currentDate = new Date(); let currentDay = currentDate.getDay(); let daysToSunday = currentDay === 0 ? 7 : currentDay; let lastSunday = new Date(currentDate.getTime() - daysToSunday * 24 * 60 * 60 * 1000); let lastSundayYear = lastSunday.getFullYear(); let lastSundayMonth = lastSunday.getMonth() + 1; // 注意月份是从 0 开始的,需要加 1 let lastSundayDate = lastSunday.getDate(); let formattedDate = lastSundayYear + '-' + String(lastSundayMonth).padStart(2, '0') + '-' + String(lastSundayDate).padStart(2, '0'); time = formattedDate; type = "first-week" } else if (str == 'last') { const today = new Date(); if (today.getDay() === 0) { // 周日 time = new Date() } else { // 周一~周六 time = new Date() } type = "YY--MM--DD" } } else if (type == "lastweek") { // 上周 上上周日到上周六。周日需特殊处理 const isSun = new Date(); if (isSun.getDay() === 0) { // 周日。实际开始时间为上周日到这周六 if (str == 'first') { let currentDate = new Date(); let currentDay = currentDate.getDay(); let daysToSunday = currentDay === 0 ? 7 : currentDay; let lastSunday = new Date(currentDate.getTime() - daysToSunday * 24 * 60 * 60 * 1000); let lastSundayYear = lastSunday.getFullYear(); let lastSundayMonth = lastSunday.getMonth() + 1; // 注意月份是从 0 开始的,需要加 1 let lastSundayDate = lastSunday.getDate(); let formattedDate = lastSundayYear + '-' + String(lastSundayMonth).padStart(2, '0') + '-' + String(lastSundayDate).padStart(2, '0'); time = formattedDate; type = "first-week" } else if (str == 'last') { const today = new Date(); const dayOfWeek = today.getDay(); const diff = 6 - dayOfWeek; // 6 表示周六 const targetSaturday = new Date(today.getFullYear(), today.getMonth(), today.getDate() + diff); const year = targetSaturday.getFullYear(); const month = targetSaturday.getMonth() + 1; // 月份从 0 开始,需加 1 const date = targetSaturday.getDate(); const formattedDate = `${year}-${month < 10 ? '0' + month : month}-${date < 10 ? '0' + date : date}`; time = formattedDate; type = "end-week" } } else { // 周一~周六 if (str == 'first') { function getPreviousSundayDate () { const today = new Date(); const dayOfWeek = today.getDay(); const daysSinceLastSunday = (dayOfWeek + 6) % 7 + 8; const previousSunday = new Date(today); previousSunday.setDate(today.getDate() - daysSinceLastSunday); return previousSunday; } time = new Date(getPreviousSundayDate()); type = "YY--MM--DD" } else if (str == 'last') { function getPreviousSaturdayDate () { const today = new Date(); const dayOfWeek = today.getDay(); const daysSinceLastSaturday = (dayOfWeek + 6) % 7 + 2; const previousSaturday = new Date(today); previousSaturday.setDate(today.getDate() - daysSinceLastSaturday); return previousSaturday; } time = new Date(getPreviousSaturdayDate()); type = "YY--MM--DD" } } } else if (type == "thismonth") { // 本月 当前月份一号到当天 time = new Date(new Date().getFullYear(), new Date().getMonth(), 1) type = "YY--MM--DD" } else if (type == "lastmonth") { // 上月 上月的第一天到最后一天 if (str == 'first') { time = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1); } else if (str == 'last') { time = new Date(new Date().getFullYear(), new Date().getMonth() - 1 + 1, 0); } type = "YY--MM--DD" } else if (type == "first-week") { } else { // 时间戳 time = str ? new Date(str) : new Date(new Date().getTime()); } if (time && typeof time == 'object') { year = time.getFullYear() month = (time.getMonth() + 1).toString().padStart(2, '0') date = (time.getDate()).toString().padStart(2, '0') hours = (time.getHours()).toString().padStart(2, '0') minute = (time.getMinutes()).toString().padStart(2, '0') second = (time.getSeconds()).toString().padStart(2, '0') } let result; switch (type) { case 'default': // 2023-10-31 09:00:00 result = year + '-' + month + '-' + date + ' ' + hours + ':' + minute + ':' + second; break; case 'small': // 2023-10-31 09:00:00 result = year + month + date + hours + minute + second; break; case 'YY--MM--DD HH:MM': // 2023-10-31 09:00 result = year + '-' + month + '-' + date + ' ' + hours + ':' + minute; break; case 'MM--DD HH:MM': // 2023-10-31 09:00 result = month + '-' + date + ' ' + hours + ':' + minute; break; case 'YY--MM--DD': // 2023-10-31 result = year + '-' + month + '-' + date; break; case 'HH:MM:SS': // 09:00:00 result = hours + ':' + minute + ':' + second; break; case 'first-week': // 09:00:00 result = time; break; case 'end-week': // 09:00:00 result = time; break; default: break; } return result; }, /* 设置倒计时 * @params time 字符串 */ setDeadLine (time, type) { if (type) { // 交付助手的倒计时 let differenceTime = new Date().getTime() - new Date(time).getTime() let absTime = Math.abs(differenceTime) var D = Math.floor(absTime / (24 * 60 * 60 * 1000)); var leave1 = absTime % (24 * 3600 * 1000); var H = Math.floor(leave1 / (3600 * 1000)); var leave2 = leave1 % (3600 * 1000); var M = Math.floor(leave2 / (60 * 1000)); var leave3 = leave2 % (60 * 1000); var S = Math.floor(leave3 / 1000); // 时间正负的判断标识 let symbol = true if (differenceTime < 0) { symbol = false } if (type == 'jiaofu') { if (D > 0) { return D + (symbol ? "天前" : '天后'); } else if (H > 0) { return H + (symbol ? "小时前" : '小时后'); } else if (M > 0) { return M + (symbol ? "分钟前" : '分钟后'); } else { // return S + (symbol ? "秒前" : '秒后'); return '刚刚'; } } else if (type == '在职') { // 处理在职中的时间显示 if (D > 0) { return type + D + '天' } else if (H > 0) { return type + H + '小时' } else if (M > 0) { return type + M + '分钟' } else { return type + S + '秒' } } } else { let differenceTime = new Date(time).getTime() - new Date().getTime() let absTime = Math.abs(differenceTime) let D = Math.floor(absTime / (24 * 60 * 60 * 1000)) let leave1 = absTime % (24 * 3600 * 1000) let H = Math.floor(leave1 / (3600 * 1000)) > 9 ? Math.floor(leave1 / (3600 * 1000)) : '0' + Math.floor(leave1 / (3600 * 1000)) let leave2 = leave1 % (3600 * 1000) let M = Math.floor(leave2 / (60 * 1000)) > 9 ? Math.floor(leave2 / (60 * 1000)) : '0' + Math.floor(leave2 / (60 * 1000)) let leave3 = leave2 % (60 * 1000) let S = Math.floor(leave3 / 1000) > 9 ? Math.floor(leave3 / 1000) : '0' + Math.floor(leave3 / 1000) // 倒计时到期的判断 let symbol = '' // if (differenceTime < 0) { // symbol = '-' // } if (D > 0) { return symbol + D + '天' } else if (H > 0) { return symbol + H + ':' + M + ':' + S } else if (M > 0) { return symbol + M + ':' + S } else { return symbol + S + '秒' // return '刚刚' } } }, /* 省市区格式转化 * 转化前:河南省郑州市 * 转化后:河南省 | 郑州市 | * @params $list 数组 */ toGetAddress ($list) { if ($list && $list.length > 0) { $list.forEach(item => { var districtStr = ""; if (item.storeDistrict) { var districtArr = item.storeDistrict.split(","); var districtArr1 = []; // console.log(districtArr); districtArr.forEach((item1, index) => { if (item1.length != 0) { item1 = item1 + "丨"; if (index < 2) { districtArr1.push(item1); } } }); districtStr = districtArr1.join(""); if (item.storeDistrict.indexOf("undefined") > -1) { districtStr = "-丨"; } } item["district"] = districtStr; }); return $list; } else { return []; } }, /** * 新职位处理 */ toGetAddressv3 ($list) { if ($list && $list.length > 0) { $list.forEach(item => { let storeDistrict = item.storeAddr || item.storeDistrict; item["district"] = this.setJobInfoPositionv3(storeDistrict); }); return $list; } else { return []; } }, handleSetSex($obj={}){ if (Boolean($obj.minAgeWoman) === true && Boolean($obj.minAgeMan) === false) { $obj.gender = "女"; } else if (Boolean($obj.minAgeWoman) === false && Boolean($obj.minAgeMan) === true) { $obj.gender = "男"; } else { $obj.gender = "男女不限"; } return $obj; }, handleSetAge($obj={}){ if ($obj.minAge && $obj.maxAge) { $obj["age"] = $obj.minAge + '-' + $obj.maxAge + '岁'; } else if ($obj.minAge) { $obj["age"] = $obj.minAge + "岁以上"; } else if ($obj.maxAge) { $obj["age"] = $obj.maxAge + "岁以下"; } else if ($obj.minAge == "" && $obj.maxAge == "") { $obj["age"] = '-' } return $obj; }, setJobInfoPositionv3 (str) { str = str.replace(/;/g, ''); var reg = /.+?(省|市|自治区|自治州|县|区)/g; // 省市区的正则 let matches = str.match(reg); let result = ''; function getStr (str) { if (matches[0].includes('省') || matches[0].includes('自治区') || matches[0].includes('自治州')) { if (matches[1].includes('市') && matches[2].includes('市')) { result = `${matches[0]}丨${matches[2]}`; } else { if (matches[2].includes('县')) { result = `${matches[0]}丨${matches[2]}`; } else { result = `${matches[0]}丨${matches[1]}`; } } } else if (matches[1].includes('市')) { result = `${matches[0]}丨${matches[2]}`; } else { result = `${matches[1]}丨${matches[2]}`; } } if (matches && matches.length > 0) { switch (matches.length) { case 1: result = matches[0]; break; case 2: if (matches[0].includes('省') || matches[0].includes('自治区') || matches[0].includes('自治州')) { result = `${matches[0]}丨${matches[1]}`; } else { result = `${matches[0]}丨${matches[1]}`; } break; case 3: getStr() break; case 4: getStr() break; case 5: getStr() break; default: result = str; break; } } else { result = str; } return result; }, /* 年龄转化 * @params $list 数组 */ toGetAge ($list) { if ($list && $list.length > 0) { $list.forEach(item => { if (item.minAge && item.maxAge) { item["age"] = item.minAge + '-' + item.maxAge + '岁'; } else if (item.minAge) { item["age"] = item.minAge + "岁以上"; } else if (item.maxAge) { item["age"] = item.maxAge + "岁以下"; } else { let newArr = [item.minAgeMan, item.maxAgeMan, item.minAgeWoman, item.maxAgeWoman] newArr.sort() // console.log('newArr', newArr) let minAge = (newArr[0] == 0) ? newArr[2] : newArr[0] let maxAge = newArr[3] item["age"] = minAge + '-' + maxAge + '岁'; } }); return $list; } else { return ""; } }, /** * 根据薪资类型和薪资值获取薪资展示 */ getSalaryClassifyValue (salaryClassify, salaryClassifyValue, salaryClassifyValue1) { var salary = this.moneyToFixed(salaryClassifyValue); var salary1 = this.moneyToFixed(salaryClassifyValue1); if (salaryClassify == 0) { return `${salary}元/小时`; } else if (salaryClassify == 1) { return `${salary}元/天`; } else if (salaryClassify == 2) { return `补${salary}元`; } else if (salaryClassify == 3) { return `返${salary}元`; } else if (salaryClassify == 4) { return `计件`; } else if (salaryClassify == 5) { return `保底${salary}元`; } else if (salaryClassify == 6) { return `面议`; } else if (salaryClassify == 7) { return salary + '-' + salary1 + `元/月`; } else { return "-"; } }, /* 同步 */ moneyToFixed (money, fixed = 2, multiplicator = 100) { if (money != 0 && money != null && money != "" && money != undefined) { return this.cutZero(new Number(money / multiplicator).toFixed(fixed)); } else { return "0"; } }, /* 同步 */ cutZero (old) { //拷贝一份 返回去掉零的新串 let newstr = old; //循环变量 小数部分长度 var leng = old.length - old.indexOf(".") - 1; //判断是否有效数 if (old.indexOf(".") > -1) { //循环小数部分 for (var i = leng; i > 0; i--) { //如果newstr末尾有0 if (newstr.lastIndexOf("0") > -1 && newstr.substr(newstr.length - 1, 1) == 0) { var k = newstr.lastIndexOf("0"); //如果小数点后只有一个0 去掉小数点 if (newstr.charAt(k - 1) == ".") { return newstr.substring(0, k - 1); } else { //否则 去掉一个0 newstr = newstr.substring(0, k); } } else { //如果末尾没有0 return newstr; } } } return old; }, /* 处理职位列表的方法 */ disposeJobListData (jobList) { let that = this; if (jobList !== undefined) { if (Array.isArray(jobList)) { jobList.forEach((item) => { item["workType"] = that.getWorkTypeById(item.workTypeMulti); if (that.isNotEmptyCheck(item.distance)) { item["distanceKm"] = that.getDistanceName(item.distance); } if (that.isNotEmptyCheck(item.jobDesp)) { item["jobDesp"] = item["jobDesp"].replaceAll("*****", ""); } //年龄 // console.log(jobList); var ageStr = ""; if (that.isNotEmptyCheck(item.minAge) && that.isNotEmptyCheck(item.maxAge)) { ageStr = item.minAge + "-" + item.maxAge + "岁"; } else if (that.isNotEmptyCheck(item.minAge)) { ageStr = item.minAge + "岁以上"; } else if (that.isNotEmptyCheck(item.maxAge)) { ageStr = item.maxAge + "岁以下"; } item["age"] = ageStr; item.updateTime = that.getPointTime(item.updateTime, 'YY--MM--DD HH:MM'); // 更新时间距离现在的差距 let differenceTime = new Date().getTime() - new Date(item.updateTime || new Date()).getTime(); var D = Math.floor(differenceTime / (24 * 60 * 60 * 1000)); var leave1 = differenceTime % (24 * 3600 * 1000); var H = Math.floor(leave1 / (3600 * 1000)); var leave2 = leave1 % (3600 * 1000); var M = Math.floor(leave2 / (60 * 1000)); var leave3 = leave2 % (60 * 1000); var S = Math.floor(leave3 / 1000); item.diffTime = null; if (D > 0) { item.diffTime = D + "天前"; } else if (H > 0) { item.diffTime = H + "小时前"; } else if (M > 0) { item.diffTime = M + "分钟前"; } else { item.diffTime = S + "秒前"; } if (item.returnFeeType) { if (item.returnFeeType === 0) { item.servetype = `${item.returnFee || "--"}元/小时`; } else if (item.returnFeeType === 1) { item.servetype = `${item.returnFee || "--"}元/日`; } else if (item.returnFeeType === 2) { item.servetype = `${item.returnFee || "--"}元/月`; } else if (item.returnFeeType === 3) { item.servetype = `${item.returnFee || "--"}元/次`; } else if (item.returnFeeType === 4) { item.servetype = `${item.returnFee || "--"}元/件`; } else if (item.returnFeeType === 5) { item.servetype = `工人收入${item.returnFee || "--"}%`; } else if (item.returnFeeType === 6) { item.servetype = `共${item.returnFee || "--"}元`; } else if (item.returnFeeType === 7) { item.servetype = `费用待定`; } } else { item.servetype = `${item.returnFee || "--"}元/小时`; } //地址深圳丨龙岗区丨 var districtStr = ""; if (that.isNotEmptyCheck(item.district)) { var districtArr = item.district.split(","); var districtArr1 = []; districtArr.forEach((item1, index) => { // console.log('item1',item1) if (item1.length != 0 && index < 2) { item1 = item1 + "丨"; districtArr1.push(item1); } }); if (districtArr.length < 3) { districtStr = districtArr1[districtArr1.length - 1]; } else { districtStr = districtArr1.join(""); } if (item.district.indexOf("undefined") > -1) { districtStr = "-丨"; } } item["district"] = districtStr; //职位特色 item["jobRequestLabelNames"] = that.getjobRequestLabelNamesArray(item.jobRequestLabelNames); // 特色标签 const jobRequestLabelNames = []; if (that.isNotEmptyCheck(item.jobRequestLabelNames) && Array.isArray(item.jobRequestLabelNames)) { item.jobRequestLabelNames.forEach((item, index) => { if (index <= 2) { jobRequestLabelNames.push(item); } else { return; } }); item.jobRequestLabelNames = jobRequestLabelNames; } // 年龄限制 if (Boolean(item.minAgeWoman) === true && Boolean(item.minAgeMan) === false) { item.gender = "女丨"; } else if (Boolean(item.minAgeWoman) === false && Boolean(item.minAgeMan) === true) { item.gender = "男丨"; } else { item.gender = "男女不限丨"; } }); } else { jobList["workType"] = that.getWorkTypeById(jobList.workTypeMulti); if (that.isNotEmptyCheck(jobList.distance)) { jobList["distanceKm"] = that.getDistanceName(jobList.distance); } if (that.isNotEmptyCheck(jobList.jobDesp)) { jobList["jobDesp"] = jobList["jobDesp"].replaceAll("*****", ""); } // 性别限制 if (Boolean(jobList.minAgeWoman) === true && Boolean(jobList.minAgeMan) === false) { jobList.genderAge = "女" + '丨' + jobList.minAgeWoman + "-" + jobList.maxAgeWoman + "岁"; } else if (Boolean(jobList.minAgeWoman) === false && Boolean(jobList.minAgeMan) === true) { jobList.genderAge = "男" + '丨' + jobList.minAgeMan + "-" + jobList.maxAgeMan + "岁"; } else if ((jobList.minAgeWoman != jobList.minAgeMan) || (jobList.maxAgeWoman != jobList.maxAgeMan)) { jobList.genderAge = "男" + jobList.minAgeMan + "-" + jobList.maxAgeMan + "岁" + "丨" + "女" + jobList.minAgeWoman + "-" + jobList.maxAgeWoman + "岁" } else { jobList.genderAge = "男女不限" + '丨' + jobList.minAge + "-" + jobList.maxAge + "岁"; } //年龄 var ageStr = ""; if (that.isNotEmptyCheck(jobList.minAge) && that.isNotEmptyCheck(jobList.maxAge)) { ageStr = jobList.minAge + "-" + jobList.maxAge + "岁"; } else if (that.isNotEmptyCheck(jobList.minAge)) { ageStr = jobList.minAge + "岁以上"; } else if (that.isNotEmptyCheck(jobList.maxAge)) { ageStr = jobList.maxAge + "岁以下"; } jobList["age"] = ageStr; if (jobList.returnFeeType) { if (jobList.returnFeeType === 0) { jobList.servetype = `${jobList.returnFee || "--"}元/小时`; } else if (jobList.returnFeeType === 1) { jobList.servetype = `${jobList.returnFee || "--"}元/日`; } else if (jobList.returnFeeType === 2) { jobList.servetype = `${jobList.returnFee || "--"}元/月`; } else if (jobList.returnFeeType === 3) { jobList.servetype = `${jobList.returnFee || "--"}元/次`; } else if (jobList.returnFeeType === 4) { jobList.servetype = `${jobList.returnFee || "--"}元/件`; } else if (jobList.returnFeeType === 5) { jobList.servetype = `工人收入${jobList.returnFee || "--"}%`; } else if (jobList.returnFeeType === 6) { jobList.servetype = `共${jobList.returnFee || "--"}元`; } else if (jobList.returnFeeType === 7) { jobList.servetype = `费用待定`; } } else { jobList.servetype = `${jobList.returnFee || "--"}元/小时`; } //地址深圳丨龙岗区丨 var districtStr = ""; if (that.isNotEmptyCheck(jobList.district) || that.isNotEmptyCheck(jobList.storeDistrict)) { var districtArr districtArr = that.isNotEmptyCheck(jobList.district) ? jobList.district.split(",") : jobList.storeDistrict.split(",") // console.log(districtArr); var districtArr1 = []; // console.log(districtArr); districtArr.forEach((item1, index) => { if (item1.length != 0 && index < 2) { item1 = item1 + "丨"; districtArr1.push(item1); } }); // console.log(districtArr1); if (districtArr.length > 3) { districtStr = districtArr1[districtArr1.length - 1]; } else { districtStr = districtArr1.join(""); } // console.log(districtStr); // console.log(jobList.district); if (jobList.district == undefined && jobList.storeDistrict == undefined) { districtStr = "-丨"; } } // console.log(districtStr); jobList["district"] = districtStr; //职位特色 jobList["jobRequestLabelNames"] = that.getjobRequestLabelNamesArray(jobList.jobRequestLabelNames); const jobRequestLabelNames1 = []; if (that.isNotEmptyCheck(jobList.jobRequestLabelNames) && Array.isArray(jobList.jobRequestLabelNames)) { jobList.jobRequestLabelNames.forEach((item, index) => { // if (index <= 4) { jobRequestLabelNames1.push(item); // } else { // return; // } }); jobList.jobRequestLabelNames = jobRequestLabelNames1; } } } return jobList; }, /** * 根据工种类型ID获取名称 */ getWorkTypeById (id) { let str = ""; let array = this.workTypeArray(); array.forEach((item) => { if (item.id == id) { str = item.name; } }); return str; }, /** * 工种类型 */ workTypeArray () { let workTypeArray = [{ id: 0, name: "全职", value: "0", text: "全职", checked: false, }, { id: 1, name: "兼职", value: "1", text: "兼职", checked: false, }, { id: 2, name: "寒暑假工", value: "2", text: "寒暑假工", checked: false, }, { id: 3, name: "实习生", value: "3", text: "实习生", checked: false, }, { id: 4, name: "零工", value: "4", text: "零工", checked: false, }, ]; return workTypeArray; }, /** * 如果不是是null '' 'null' 'undefined' * @param item * @returns */ isNotEmptyCheck (value) { return !this.isEmptyCheck(value); }, /** * 如果是null '' 'null' 'undefined' * @param item * @returns */ isEmptyCheck (value) { if (value == null || value === "" || value == "null" || typeof value == "undefined") { return true; } return false; }, /** * 根据状态工单类型ID获取名称 */ getDistanceName (distance) { let str = ""; if (this.isNotEmptyCheck(distance)) { if (distance > 1000) { var dis = distance / 1000; dis = dis.toFixed(1); str = dis + "km"; } else { str = distance + "m"; } } return str; }, /* 综合月薪 正则规则 * 价格中间的特殊字符 */ specStrReg ($str) { let list = [ '~', '!', '@', '#', '%', '^', '&', '*', '(', ')', '!', '(', ')', '+', '`', '-', '=', '·', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '{', '}', '|', '|', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', ':', "'", '"', ':', '“', '”', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', '<', '>', '?', '《', '》', '?', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ' ', '——' ], obj = { min: 0, max: 0 } if ($str) { list.forEach((item, index) => { if ($str.indexOf(item) > -1 && $str.split(item)[1]) { let newlist = [$str.split(item)[0], $str.split(item)[1]] newlist.sort(function (a, b) { return a - b }) obj = { min: newlist[0], max: newlist[1], } } }) } return obj; }, getjobRequestLabelNamesArray (jobRequestLabelNames) { if (this.isNotEmptyCheck(jobRequestLabelNames)) { return jobRequestLabelNames.split(", "); } return []; }, /* 对象重组成字符串 */ objToStr (obj = {}, type = 'url') { let str = ''; if (type == 'url') { str = Object.keys(obj) .map(key => `${key}=${obj[key]}`) .join('&'); } else if (type == 'copy') { str = Object.keys(obj) .map(key => `${key}${obj[key]}`) .join(''); } return str; }, getUUID () { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { return (c === 'x' ? (Math.random() * 16) | 0 : 'r&0x3' | '0x8').toString(16) }) }, getOrderStatus () { return [{ id: '10', name: '待审核', value: 10, text: '待审核', num: 0 }, { id: '20', name: '待接待', value: 20, text: '待接待', num: 0 }, { id: '21', name: '审核未通过', value: 21, text: '审核未通过', num: 0 }, { id: '25', name: '待面试', value: 25, text: '待面试', num: 0 }, { id: '26', name: '未接到', value: 26, text: '未接到', num: 0 }, { id: '30', name: '待入职', value: 30, text: '待入职', num: 0 }, { id: '35', name: '面试未通过', value: 35, text: '面试未通过', num: 0 }, { id: '40', name: '已入职', value: 40, text: '已入职', num: 0 }, { id: '48', name: '约离职', value: 48, text: '约离职', num: 0 }, { id: '45', name: '通过未入职', value: 45, text: '通过未入职', num: 0 }, { id: '50', name: '已离职', value: 50, text: '已离职', num: 0 }, { id: "100", name: "待确认", value: "50", text: "待确认", num: 0 }, { id: "101", name: "已取消", value: "50", text: "已取消", num: 0 }, { id: "102", name: "官方审核中", value: "50", text: "官方审核中", num: 0 }, { id: "103", name: "审核不通过", value: "50", text: "审核不通过", num: 0 }, ] }, /* 预览图 */ viewBigImage ($url = "") { uni.previewImage({ urls: [$url], longPressActions: { itemList: ['保存图片'], success: function (data) { }, fail: function (err) { } } }); }, /* 正则 */ setReg ($str, $type = 'default') { if ($type == 'tel') { return /^[1][3,4,5,7,8,9][0-9]{9}$/.test($str); } if ($type == 'idcard') { return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test($str); } }, isValidIdCard (idCard) { const idCardRegex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}[\dXx]$/; if (!idCardRegex.test(idCard)) { return false; } const factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; const checkCodeList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; let sum = 0; for (let i = 0; i < 17; i++) { sum += parseInt(idCard[i]) * factors[i]; } const checkCode = checkCodeList[sum % 11]; return checkCode === idCard[17].toUpperCase(); }, /* 姓名/性别/年龄/民族 */ titleToStr ($obj) { let _sex = '', _age = '', _nation = ''; if ($obj.sex == 0) { _sex = '' } else if ($obj.sex == 1) { _sex = '/男' } else if ($obj.sex == 2) { _sex = '/女' } else { _sex = '' } if ($obj.age) { _age = '/' + $obj.age } else { _age = '' } if ($obj.nation) { _nation = '/' + $obj.nation } else { _nation = '' } return _sex + _age + _nation; }, /** * app端 获取手机自定义导航高度 */ getMobileInfo () { let info = { top: uni.getSystemInfoSync().statusBarHeight, height: 32, }; return info; }, /** * 获取头部nav高度 */ getNavInfo () { if (uni.getSystemInfoSync()) { var { statusBarHeight, platform, windowHeight } = uni.getSystemInfoSync(); } // #ifdef APP-PLUS || H5 || MP-TOUTIAO || MP-KUAISHOU var { top, height } = this.getMobileInfo; // #endif // #ifdef MP-WEIXIN if (uni.getMenuButtonBoundingClientRect()) { var { top, height } = uni.getMenuButtonBoundingClientRect(); } // #endif let info = {} info.statusBarHeight = statusBarHeight; info.menuButtonHeight = height ? height : 32; info.windowHeight = windowHeight; if (top && top !== 0 && height && height !== 0) { const navigationBarHeight = (top - statusBarHeight) * 2 + height; // 导航栏高度 info.navigationBarHeight = navigationBarHeight; } else { info.navigationBarHeight = platform === "android" ? 48 : 40; } return info }, // 身份证号获取年龄等信息 getInfoByIDcard (idCard) { let info = {} let birthday // 获取性别 if (idCard.length === 15) { info.sex = ['女', '男'][idCard.substr(14, 1) % 2] birthday = Y + [idCard.substr(6, 2), idCard.substr(8, 2), idCard.substr(10, 2)].join('-') } else if (idCard.length === 18) { info.sex = ['女', '男'][idCard.substr(16, 1) % 2] birthday = [idCard.substr(6, 4), idCard.substr(10, 2), idCard.substr(12, 2)].join('-') } // 获取年龄 let currentYear = new Date().getFullYear() //当前的年份 let calculationYear = new Date(birthday).getFullYear() //计算的年份 const wholeTime = currentYear + birthday.substring(4) //周岁时间 const calculationAge = currentYear - calculationYear //按照年份计算的年龄 //判断是否过了生日 if (new Date().getTime() > new Date(wholeTime).getTime()) { info.age = calculationAge } else { info.age = calculationAge - 1 } console.log('info', info); return info }, /** * 根据传递的scene参数,获取里面的内容 */ sceneToJson (sceneStr) { let json = {}; let array = sceneStr.split(","); array.forEach((item) => { let arr = item.split("="); let key = arr[0]; let value = arr[1]; json[key] = value; }); return json; }, /* 扫一扫 */ handleScanCode () { let that = this; function errorMsg () { that.handleConfirm('无法识别该二维码', () => { }, () => { }); } uni.scanCode({ success: function (res) { console.log('获取扫码结果:', res.result) if (res.result) { if (res.result.indexOf('=') > -1) { // 前往详情页 let params = { id: res.result.split('=')[1], isShowMore: false, isShowJob: false }; uni.navigateTo({ url: "/root/detail/user?" + that.objToStr(params), }); } else { errorMsg(); } } else { errorMsg(); } } }); }, /** * canvas绘图 start */ /** * 文字绘制 */ fillTextLineBreak (ctx, text, x, y, lw, lh, color = "#333", font = "32", weight = "500", align = "left") { var i = 0; var n = 0; var r = -1; // var initHeight = 0; ctx.font = weight + " " + font + "px Arial"; //字体大小 ctx.fillStyle = color; //字体颜色 // ctx.textBaseline = align; // ctx.textAlign = align; while (i < text.length) { while (ctx.measureText(text.substring(n, i)).width < lw && i < text.length) { i++; } r++; ctx.fillText(text.substring(n, i), x, y + lh * r); n = i; } }, // 计算总体宽度 calculateTotalWidth (ctx, segments) { let totalWidth = 0; segments.forEach((segment) => { console.log('segment',segment); if (segment) { ctx.font = `${segment.fontWeight} ${segment.fontSize}px Arial`; totalWidth += ((ctx.measureText(segment.content).width) + (segment.space || 0)); } }); return totalWidth; }, // 绘制单行居中的拼接文本 drawCenteredText (ctx, x, y, textSegments) { // 计算总宽度 const totalWidth = this.calculateTotalWidth(ctx, textSegments); console.log('totalWidth', totalWidth, textSegments); // 计算起始X坐标(居中位置) const centerX = x; const startX = (centerX - totalWidth) / 2; const centerY = y; // 绘制拼接文本 let currentX = startX; textSegments.forEach((segment) => { if (segment) { ctx.font = `${segment.fontWeight} ${segment.fontSize}px Arial`; ctx.fillStyle = segment.color; // 文本基线设为中间,使垂直方向也居中 // ctx.textBaseline = "middle"; // 绘制当前文本片段 ctx.fillText(segment.content, currentX, centerY); // 更新X坐标,为下一段文本做准备, 文本长度为1的时候,使用字体大小 currentX += ((ctx.measureText(segment.content).width) + (segment.space || 0)); } }); }, /** * 背景图绘制 */ roundRect (ctx, img, bg_x, bg_y, bg_w, bg_h, bg_r) { // 开始绘制 ctx.save(); ctx.beginPath(); ctx.arc(bg_x + bg_r, bg_y + bg_r, bg_r, Math.PI, Math.PI * 1.5); ctx.arc(bg_x + bg_w - bg_r, bg_y + bg_r, bg_r, Math.PI * 1.5, Math.PI * 2); ctx.arc(bg_x + bg_w - bg_r, bg_y + bg_h - bg_r, bg_r, 0, Math.PI * 0.5); ctx.arc(bg_x + bg_r, bg_y + bg_h - bg_r, bg_r, Math.PI * 0.5, Math.PI); ctx.clip(); ctx.drawImage(img, bg_x, bg_y, bg_w, bg_h); // 恢复之前保存的绘图上下文 ctx.restore(); }, roundRect_yuan (ctx, x, y, size, color) { // 开始绘制 ctx.save(); // 保存 ctx.beginPath(); // 开始绘制 // ctx.arc(100, 75, 50, 0, 2 * Math.PI) ctx.arc(size / 2 + x, size / 2 + y, size / 2, 0, Math.PI * 2, false); ctx.fillStyle = color; ctx.strokeStyle = color; ctx.fill(); ctx.clip(); // 恢复之前保存的绘图上下文 ctx.restore(); }, roundRect1 (ctx, x, y, w, h, r, color) { //绘制圆角矩形(无填充色)) ctx.save(); ctx.fillStyle = color; ctx.strokeStyle = color; ctx.lineJoin = "round"; //交点设置成圆角 ctx.lineWidth = r; ctx.strokeRect(x + r / 2, y + r / 2, w - r, h - r); ctx.fillRect(x + r, y + r, w - r * 2, h - r * 2); ctx.stroke(); ctx.closePath(); }, // 绘制折线 setZigzag (ctx) { // 定义折线的点坐标 (形成90度角) const points = [ { x: 100, y: 100 }, // 起点 { x: 200, y: 100 }, // 转折点 { x: 200, y: 200 } // 终点 ]; let cornerRadius = -10 // 设置线条样式 ctx.lineWidth = lineWidth; ctx.strokeStyle = strokeColor; ctx.lineCap = 'round'; // 开始绘制路径 ctx.beginPath(); // 从第一个点开始 ctx.moveTo(points[0].x, points[0].y); // 遍历所有点,处理转折点 for (let i = 1; i < points.length - 1; i++) { const prev = points[i - 1]; const curr = points[i]; const next = points[i + 1]; // 计算进入和离开转折点的方向向量 const inVector = { x: curr.x - prev.x, y: curr.y - prev.y }; const outVector = { x: next.x - curr.x, y: next.y - curr.y }; // 归一化向量 const inLength = Math.sqrt(inVector.x ** 2 + inVector.y ** 2); const outLength = Math.sqrt(outVector.x ** 2 + outVector.y ** 2); const normalizedIn = { x: inVector.x / inLength, y: inVector.y / inLength, }; const normalizedOut = { x: outVector.x / outLength, y: outVector.y / outLength, }; // 计算拐角的起点和终点(距离转折点cornerRadius的位置) const start = { x: curr.x - normalizedIn.x * cornerRadius, y: curr.y - normalizedIn.y * cornerRadius, }; const end = { x: curr.x + normalizedOut.x * cornerRadius, y: curr.y + normalizedOut.y * cornerRadius, }; // 绘制到拐角起点 ctx.lineTo(start.x, start.y); // 计算切线方向,绘制贝塞尔曲线作为圆角 const control1 = { x: start.x + normalizedOut.x * cornerRadius, y: start.y + normalizedOut.y * cornerRadius, }; const control2 = { x: end.x - normalizedIn.x * cornerRadius, y: end.y - normalizedIn.y * cornerRadius, }; ctx.bezierCurveTo(control1.x, control1.y, control2.x, control2.y, end.x, end.y); } // 绘制到最后一个点 ctx.lineTo(points[points.length - 1].x, points[points.length - 1].y); // 描边路径 ctx.stroke(); }, /** * canvas绘图 end */ policyNumToHanZi (i, type = 'other') { let pickerStr; if (i <= 9) { switch (i) { case 1: pickerStr = type == 'add' ? '一条政策' : "政策一"; break; case 2: pickerStr = type == 'add' ? '二条政策' : "政策二"; break; case 3: pickerStr = type == 'add' ? '三条政策' : "政策三"; break; case 4: pickerStr = type == 'add' ? '四条政策' : "政策四"; break; case 5: pickerStr = type == 'add' ? '五条政策' : "政策五"; break; case 6: pickerStr = type == 'add' ? '六条政策' : "政策六"; break; case 7: pickerStr = type == 'add' ? '七条政策' : "政策七"; break; case 8: pickerStr = type == 'add' ? '八条政策' : "政策八"; break; case 9: pickerStr = type == 'add' ? '九条政策' : "政策九"; break; case 10: pickerStr = type == 'add' ? '十条政策' : "政策十"; break; default: pickerStr = type == 'add' ? (i + 1) + '条政策' : "政策" + (i + 1); break; } } return pickerStr }, /** * 获取服务费类型 * @params returnFeeType 类型 * @params $type 1:共享 0 普通 */ setReturnFee (returnFee, returnFeeType, $type) { // console.log('here'); let servetype = '-', $num = 1; if ($type == 1) { $num = 1; } else { $num = 100; } if (returnFeeType === 0) { servetype = `${returnFee / $num || "--"}元/小时`; } else if (returnFeeType === 1) { servetype = `${returnFee / $num || "--"}元/日`; } else if (returnFeeType === 2) { servetype = `${returnFee / $num || "--"}元/月`; } else if (returnFeeType === 3) { servetype = `${returnFee / $num || "--"}元/次`; } else if (returnFeeType === 4) { servetype = `${returnFee / $num || "--"}元/件`; } else if (returnFeeType === 5) { servetype = `工人收入${returnFee / $num || "--"}%`; } else if (returnFeeType === 6) { servetype = `共${returnFee / $num || "--"}元`; } else if (returnFeeType === 7) { servetype = `费用待定`; } return servetype }, yijobCopy (recordList) { var that = this; console.log(recordList); if (recordList && recordList.length > 0) { recordList.forEach((item, index) => { //月薪 var monthlyPayStr = ""; if (that.isNotEmptyCheck(item.minMonthlyPay) && that.isNotEmptyCheck(item.maxMonthlyPay)) { if (item.minMonthlyPay == item.maxMonthlyPay) { monthlyPayStr = item.minMonthlyPay / 100; } else { monthlyPayStr = item.minMonthlyPay / 100 + "-" + item.maxMonthlyPay / 100; } } else if (that.isNotEmptyCheck(item.minMonthlyPay)) { monthlyPayStr = item.minMonthlyPay / 100; } else if (that.isNotEmptyCheck(item.maxMonthlyPay)) { monthlyPayStr = item.maxMonthlyPay / 100; } item["monthlyPay"] = monthlyPayStr; //职位特色 item.jobSpecialLabelNameArray = []; that.getjobRequestLabelNamesArray(item.jobRequestLabelNames).forEach((i, index) => { // if (index <= 3) { item["jobSpecialLabelNameArray"].push(i); // } }); if (item.distance) { if (item.distance < 1000) { item.distance = item.distance } else if (item.distance >= 1000 && item.distance <= 100000) { item.distance = (item.distance / 1000).toFixed(1) + "km" } else { item.distance = (item.distance / 1000).toFixed() + 'km' } } item.cus_price = item.salaryClassify != 7 ? that.getSalaryClassifyValueHtml(item.salaryClassify, item.salaryClassifyValue) : "月薪" }); } return recordList; }, /** * 根据薪资类型和薪资值获取薪资展示 */ getSalaryClassifyValueHtml (salaryClassify, salaryClassifyValue, salaryClassifyValue1) { var salary = this.moneyToFixed(salaryClassifyValue); var salary1 = this.moneyToFixed(salaryClassifyValue1); if (salaryClassify == 0) { return `${salary}元/小时`; } else if (salaryClassify == 1) { return `${salary}元/天`; } else if (salaryClassify == 2) { return `${salary}`; } else if (salaryClassify == 3) { return `${salary}`; } else if (salaryClassify == 4) { return `计件`; } else if (salaryClassify == 5) { return `保底${salary}`; } else if (salaryClassify == 6) { return `面议`; } else if (salaryClassify == 7) { // return salary + '-' + salary1 + `元/月`; return `月薪`; } else { return "-"; } }, /** * 最大最小年龄获取性别限制 */ getGenderByMinAge (res) { // console.log("==================", res); let str = ""; if (res.minAgeMan && res.minAgeWoman) { str = "男女不限"; } else if (res.minAgeMan && !res.minAgeWoman) { str = "仅限男性"; } else if (!res.minAgeMan && res.minAgeWoman) { str = "仅限女性"; } return str; }, } export default data;