| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604 |
- /**
- *
- * @author maxd
- * @date 2019.8.1
- */
- import configdata from './config'
- // #ifdef APP-PLUS
- import permision from "../js_sdk/wa-permission/permission.js"
- // #endif
- module.exports = {
- //微信的appId
- getWxAppid() {
- return 'wxd0bec3a917085e78'
- },
- //全局邀请码
- getInvitation() {
- return uni.getStorageSync("publicRelation")
- },
- //获取APP下载地址
- getAppDownUrl() {
- return uni.getStorageSync("appurl")
- },
- //全局域名 部分html中需要单独替换 需要修改config中的网络请求域名
- publicYuMing() {
- return configdata.h5Url
- },
- logout() {
- this.remove("token");
- this.remove("userId");
- this.remove("mobile");
- this.remove("openid");
- this.remove("nickName");
- this.remove("relation");
- this.remove("image_url");
- this.remove("relation_id");
- this.remove("isInvitation");
- this.remove("userType");
- this.remove("member");
- },
- loginClear() {
- this.remove("token");
- this.remove("userId");
- this.remove("mobile");
- this.remove("nickName");
- this.remove("image_url");
- this.remove("relation_id");
- this.remove("isInvitation");
- this.remove("member");
- },
- showLoading(title) {
- uni.showLoading({
- title: title
- });
- },
- showToast(title) {
- uni.showToast({
- title: title,
- mask: false,
- duration: 2000,
- icon: "none"
- });
- },
- getChatSearchKeys: function(key) {
- let list = uni.getStorageSync("chatSearchKeys");
- let keys = key.replace(/\s*/g, "")
- let over = false
- for (var i = 0; i < keys.length; i++) {
- // console.error(keys[i])
- if (list.indexOf(keys[i]) != -1) {
- over = true;
- // return over;
- }
- }
- return over;
- },
- setJson: function(key, value) {
- let jsonString = JSON.stringify(value);
- try {
- uni.setStorageSync(key, jsonString);
- } catch (e) {
- // error
- }
- },
- setData: function(key, value) {
- try {
- uni.setStorageSync(key, value);
- } catch (e) {
- // error
- }
- },
- getData: function(key) {
- try {
- const value = uni.getStorageSync(key);
- if (value) {
- return value;
- }
- } catch (e) {
- // error
- }
- },
- getJson: function(key) {
- try {
- const value = uni.getStorageSync(key);
- if (value) {
- return JSON.parse(value);
- }
- } catch (e) {
- // error
- }
- },
- clear: function() {
- uni.clearStorage();
- },
- get: function(key) { //获取队列里面全部的数据
- let data = this.getJson(key);
- if (data instanceof Array) {
- return data;
- }
- return [];
- },
- insert: function(param) { //队列插入数据
- param.capacityNum = param.capacityNum || 100; //队列容量 默认队列中超过100条数据,自动删除尾部
- let data = this.getJson(param.key);
- if (data instanceof Array) {
- if (data.length > param.capacityNum) {
- let total = data.length - param.capacityNum;
- for (let i = 0; i < total; i++) {
- data.pop();
- }
- }
- data.unshift(param.value);
- } else {
- data = [];
- data.push(param.value);
- }
- this.setJson(param.key, data);
- },
- removeItem: function(key, itemIds) { //提供itemIds数组 批量删除队列中的某项数据
- let data = this.getJson(key);
- if (data instanceof Array) {
- for (let i = 0; i < itemIds.length; i++) {
- for (let p = 0; p < data.length; p++) {
- if (itemIds[i] === data[p].itemid) {
- data.splice(p, 1);
- break;
- }
- }
- }
- this.setJson(key, data);
- }
- },
- isExist: function(key, itemId) { //检测某条数据在队列中是否存在
- let data = this.getJson(key);
- if (data instanceof Array) {
- for (let p = 0; p < data.length; p++) {
- if (itemId === data[p].itemid) {
- return true;
- }
- }
- }
- return false;
- },
- isExistPdd: function(key, itemId) { //检测某条数据在队列中是否存在
- let data = this.getJson(key);
- if (data instanceof Array) {
- for (let p = 0; p < data.length; p++) {
- if (itemId === data[p].goodsId) {
- return true;
- }
- }
- }
- return false;
- },
- isExistJd: function(key, itemId) { //检测某条数据在队列中是否存在
- let data = this.getJson(key);
- if (data instanceof Array) {
- for (let p = 0; p < data.length; p++) {
- if (itemId === data[p].skuId) {
- return true;
- }
- }
- }
- return false;
- },
- remove: function(key) { //删除某条队列
- try {
- uni.removeStorageSync(key);
- //localStorage.removeItem(key)
- } catch (e) {
- // error
- }
- },
- getCount: function(key) { //获取队列中全部数据数量
- let data = this.getJson(key);
- if (data instanceof Array) {
- return data.length;
- }
- return 0;
- },
- uploadFile: function(path, callback) {
- const uploadTask = uni.uploadFile({ // 上传接口
- url: configdata.APIHOST1 + '/alioss/upload', //真实的接口地址
- filePath: path,
- name: 'file',
- success: (uploadFileRes) => {
- let content = JSON.parse(uploadFileRes.data).data;
- uni.hideLoading();
- callback(content)
- },
- fail: (err) => {
- callback(false)
- console.log(err)
- }
- });
- uploadTask.onProgressUpdate((res) => {
- uni.showLoading({
- title: '上传进度' + res.progress + '%',
- })
- if (res.progress >= 100) {
- uni.hideLoading()
- }
- })
- },
- array_column: function(arr, column_key, index_key = null) {
- if (index_key === null) {
- return arr.map(item => item[column_key]);
- }
- return arr.reduce((result, item) => {
- result[item[index_key]] = item[column_key];
- return result;
- }, {});
- },
- isCurrentMonth: function(date) {
- const now = new Date();
- return now.getFullYear() === date.getFullYear() &&
- now.getMonth() === date.getMonth();
- },
- getHighestEducation: function(educations) {
- // 定义学历等级映射(从低到高)
- const educationLevels = {
- '小学': 1,
- '初中': 2,
- '高中': 3,
- '中专': 4,
- '大专': 5,
- '本科': 6,
- '硕士': 7,
- '博士': 8,
- '博士后': 9
- };
- let highestEducation = null;
- let highestLevel = -1;
- educations.forEach(edu => {
- const level = educationLevels[edu.degree] || 0;
- if (level > highestLevel) {
- highestLevel = level;
- highestEducation = edu.degree;
- }
- });
- return highestEducation;
- },
- //职业状态
- resumesStatus() {
- return [{
- value: '0',
- text: '离职-随时到岗',
- recommended: true
- },
- {
- value: '1',
- text: '在职-月内到岗',
- recommended: true
- },
- {
- value: '2',
- text: '在职-考虑机会',
- recommended: false
- },
- {
- value: '3',
- text: '在职-暂不考虑',
- recommended: false
- }
- ]
- },
- appConfirm: function(content = '请确认您的操作?', callback, title = '操作提示', button = ["继续", "取消"]) {
- // #ifndef APP-PLUS
- uni.showModal({
- title: title,
- content: content,
- success: function(res) {
- if (res.confirm) {
- callback(true)
- } else
- callback(false)
- }
- });
- return
- //#endif
- // #ifdef APP-PLUS
- plus.nativeUI.confirm(content, function(e) {
- if (e.index == 0)
- callback(true)
- else
- callback(false)
- }, title, button);
- //#endif
- },
- isDateExpired: function(targetDate) {
- const currentTimestamp = new Date().getTime();
- const targetTimestamp = new Date(targetDate).getTime();
- const rest = targetTimestamp < currentTimestamp
- if (rest)
- return [true, 0]
- // 计算毫秒差
- const diffInMs = targetTimestamp - currentTimestamp;
- // 转换为小时(向上取整确保显示完整小时)
- const hours = Math.ceil(diffInMs / (1000 * 60 * 60));
- return [rest, hours > 0 ? hours : 0]; // 返回非负值
- },
- convert12to24: function(time12h) {
- // 使用正则表达式匹配12小时制格式
- const regex = /^(0?[1-9]|1[0-2]):([0-5]\d)\s?(AM|PM)$/i;
- const match = time12h.match(regex);
- if (!match) {
- throw new Error('无效的时间格式,请使用如 "2:00 PM" 或 "02:00 PM" 的格式');
- }
- let hour = parseInt(match[1], 10);
- const minute = match[2];
- const period = match[3].toUpperCase();
- // 处理AM/PM转换逻辑
- if (period === 'PM' && hour !== 12) {
- hour += 12;
- } else if (period === 'AM' && hour === 12) {
- hour = 0;
- }
- // 格式化为两位数
- const hour24 = hour.toString().padStart(2, '0');
- return `${hour24}:${minute}`;
- },
- changeTabbar: function(res) {
- setTimeout(() => {
- if (res == 1) {
- uni.setTabBarItem({
- index: 0,
- text: '首页',
- iconPath: "/static/tabbar/Home.png",
- selectedIconPath: "/static/tabbar/Iconly_Bold_Home.png",
- })
- uni.setTabBarItem({
- index: 1,
- text: '急聘',
- "pagePath": "/pages/index/game/gameList",
- "iconPath": "/static/tabbar/jipin.png",
- "selectedIconPath": "/static/tabbar/ACjipin.png",
- })
- } else {
- uni.setTabBarItem({
- index: 0,
- text: '牛人',
- iconPath: "/static/tabbar/niu.png",
- selectedIconPath: "/static/tabbar/niu2.png",
- })
- uni.setTabBarItem({
- index: 1,
- "pagePath": "/pages/talentSearch/index",
- "iconPath": "/static/tabbar/Hrsearch.png",
- "selectedIconPath": "/static/tabbar/ACsearch.png",
- "text": "搜索"
- })
- }
- // 可以在这里添加 tabbar 更新后的后续操作
- console.log('tabbar 更新完成');
- }, 100);
- },
- // 核心年龄计算函数
- calculateAgeFromBirthday: function(birthday) {
- const birthDate = new Date(birthday);
- const currentDate = new Date();
- // 验证日期有效性
- if (isNaN(birthDate.getTime())) {
- throw new Error('无效的生日日期');
- }
- if (birthDate > currentDate) {
- throw new Error('生日日期不能晚于当前日期');
- }
- let years = currentDate.getFullYear() - birthDate.getFullYear();
- let months = currentDate.getMonth() - birthDate.getMonth();
- let days = currentDate.getDate() - birthDate.getDate();
- // 处理天数负数情况
- if (days < 0) {
- months--;
- // 获取上个月的天数
- const lastMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 0);
- days += lastMonth.getDate();
- }
- // 处理月份负数情况
- if (months < 0) {
- years--;
- months += 12;
- }
- return years;
- },
- // 筛选求职列表
- getFilterData: function() {
- const condition = {
- education: '', //学历
- experience: '', //经验
- industry: '', //行业
- salaryRange: '', //薪资
- companyPeople: '' //公司规模
- }
- //获取选中的筛选条件
- if (uni.getStorageSync('filter') && (uni.getStorageSync('filter')).length > 0) {
- let filter = uni.getStorageSync('filter')
- filter.map(item => {
- let arr = []
- item.list.map(ite => {
- if (ite.value != '不限') {
- arr.push(ite.value)
- }
- })
- switch (item.name) {
- case '学历要求':
- condition.education = arr.join(',')
- break;
- case '薪资范围(单选)':
- condition.salaryRange = arr.join(',')
- break;
- case '经验要求':
- condition.experience = arr.join(',')
- break;
- case '公司规模':
- condition.companyPeople = arr.join(',')
- break;
- case '行业':
- condition.industry = arr.join(',')
- break;
- }
- })
- // console.log(filter)
- }
- return condition
- },
- //APP获取手机权限鉴权
- // APP获取手机权限鉴权(优化版,兼容全权限+多系统)
-
- async checkPermission(permission, tip, that,perpop='permission') {
- // 权限映射配置
- let permisionID = '';
- let permisionIosID = '';
-
- return new Promise(async (resolve) => {
- // #ifdef H5
- resolve(true);
- return;
- // #endif
-
- const appAuthorizeSetting = uni.getAppAuthorizeSetting()
- if (permission == 'location') {
- permisionID = 'android.permission.ACCESS_FINE_LOCATION';
- permisionIosID = 'location';
- if(appAuthorizeSetting.locationAuthorized=='authorized'){
- resolve(true);
- return
- }
- }
- if (permission == 'camera') {
- permisionID = 'android.permission.CAMERA,android.permission.READ_EXTERNAL_STORAGE';
- permisionIosID = 'camera,photoLibrary';
- if(appAuthorizeSetting.cameraAuthorized=='authorized'){
- resolve(true);
- return
- }
- }
- if (permission == 'microphone') {
- permisionID = 'android.permission.RECORD_AUDIO';
- permisionIosID = 'record';
- if(appAuthorizeSetting.microphoneAuthorized=='authorized'){
- resolve(true);
- return
- }
- }
-
- // 特殊处理:相机权限在非iOS平台显示自定义弹窗
- if (uni.getSystemInfoSync().platform != 'ios') {
- switch(perpop){
- case 'permission':
- that.$refs.permission.open();
- break
- case 'microphonePermission':
- that.$refs.microphonePermission.open();
- break
- case 'locationPermission':
- that.$refs.locationPermission.open();
- break
- default:
- console.warn('未知权限类型:', perpop);
- }
-
- }
- // Android 平台处理
- if (uni.getSystemInfoSync().platform === 'android') {
- if (permisionID == '') {
- resolve(true);
- return;
- }
-
- try {
- const result = await permision.requestAndroidPermission(permisionID);
- console.log(result);
- switch(perpop){
- case 'permission':
- that.$refs.permission.close();
- break
- case 'microphonePermission':
- that.$refs.microphonePermission.close();
- break
- case 'locationPermission':
- that.$refs.locationPermission.close();
- break
- default:
- console.warn('未知权限类型:', perpop);
- }
- if (result == 1) {
- console.log("已获得授权");
- resolve(true);
- } else if (result == 0) {
- console.log("未获得授权");
- resolve(false);
- } else {
- console.log("权限被拒绝");
- // 显示确认对话框
- this.appConfirm("权限被拒绝," + tip, function(res) {
- if (res) {
- uni.openAppAuthorizeSetting();
- }
- resolve(false);
- });
- }
- } catch (error) {
- console.error("权限请求失败:", error);
- resolve(false);
- }
- }
- // iOS 平台处理
- else {
- if (permisionIosID == '') {
- resolve(true);
- return;
- }
-
- const iosPermissions = permisionIosID.split(',');
- let allGranted = 0;
-
- for (let i = 0; i < iosPermissions.length; i++) {
- const currentPermission = iosPermissions[i];
- allGranted = permision.judgeIosPermission(currentPermission);
- console.log('权限状态码:',allGranted)
- }
- if(allGranted==0){
- console.log('第一次授权')
- resolve(true);
- }else if(allGranted==3){
- console.log('已授权')
- resolve(true);
- }else{
- this.appConfirm("权限被拒绝," + tip, function(res) {
- if (res) {
- uni.openAppAuthorizeSetting();
- }
- resolve(false);
- });
- }
- }
- });
- }
- };
|