You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
287 lines
6.6 KiB
287 lines
6.6 KiB
import { listDictionaryData } from '@/api/system/dictionary-data';
|
|
import { ref } from 'vue';
|
|
import { pageProject } from '@/api/oa/project';
|
|
// import { getJson } from '@/api/json';
|
|
import { APP_SECRET, FILE_SERVER } from '@/config/setting';
|
|
import { useUserStore } from '@/store/modules/user';
|
|
import CryptoJS from 'crypto-js';
|
|
|
|
// 生成编号
|
|
export function createCode() : string {
|
|
const data = new Date();
|
|
const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}`;
|
|
return code.slice(0);
|
|
}
|
|
|
|
// 生成商户编号
|
|
export function createMerchantCode() : string {
|
|
const data = new Date();
|
|
const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getSeconds()}`;
|
|
return code.slice(3);
|
|
}
|
|
|
|
// 生成订单编号
|
|
export function createOrderNo() : string {
|
|
const data = new Date();
|
|
const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}${random(
|
|
8000,
|
|
12000
|
|
)}`;
|
|
return code.slice(0);
|
|
}
|
|
|
|
/**
|
|
* @description 取一个区间数
|
|
* @param {Number} min 最小值
|
|
* @param {Number} max 最大值
|
|
*/
|
|
export function random(min : number, max : number) {
|
|
if (min >= 0 && max > 0 && max >= min) {
|
|
const gab = max - min + 1
|
|
return Math.floor(Math.random() * gab + min)
|
|
}
|
|
return 0
|
|
}
|
|
|
|
export const getTabBarLinks = () => {
|
|
const tabBarLinks = [
|
|
'pages/index/index',
|
|
'pages/zone/zone',
|
|
'pages/love/love',
|
|
'pages/notice/notice',
|
|
'pages/user/user'
|
|
]
|
|
return tabBarLinks
|
|
}
|
|
|
|
/**
|
|
* 跳转到指定页面url
|
|
* 支持tabBar页面
|
|
* @param {string} url 页面路径
|
|
* @param {object} query 页面参数
|
|
* @param {string} modo 跳转类型(默认navigateTo)
|
|
*/
|
|
export const navTo = (url : string, query = {}, modo = 'navigateTo') => {
|
|
if (!url || url.length == 0) {
|
|
return false
|
|
}
|
|
// 原生导航条
|
|
getTabBarLinks().map(d => {
|
|
if (d == 'url') {
|
|
uni.switchTab({
|
|
url: `/${url}`
|
|
})
|
|
return true
|
|
}
|
|
})
|
|
// 生成query参数
|
|
const queryStr = !util.isEmpty(query) ? '?' + util.urlEncode(query) : ''
|
|
// 普通页面, 使用navigateTo
|
|
modo === 'navigateTo' && uni.navigateTo({
|
|
url: `/${url}${queryStr}`
|
|
})
|
|
// 特殊指定, 使用redirectTo
|
|
modo === 'redirectTo' && uni.redirectTo({
|
|
url: `/${url}${queryStr}`
|
|
})
|
|
return true
|
|
}
|
|
|
|
/**
|
|
* 打开链接
|
|
*/
|
|
export const openUrl = (item : any) => {
|
|
if (item.target == 'uni.navigateTo') {
|
|
return uni.navigateTo({
|
|
url: item.path
|
|
})
|
|
}
|
|
if (item.target == 'uni.switchTab') {
|
|
return uni.switchTab({
|
|
url: item.path
|
|
})
|
|
}
|
|
if (item.target == 'uni.redirectTo') {
|
|
return uni.redirectTo({
|
|
url: item.path
|
|
})
|
|
}
|
|
if (item.target == 'uni.reLaunch') {
|
|
return uni.reLaunch({
|
|
url: item.path
|
|
})
|
|
}
|
|
}
|
|
|
|
// 手机号脱敏
|
|
export function getMobile(tel : string) {
|
|
const reg = /^(\d{3})\d{4}(\d{4})$/;
|
|
return tel.replace(reg, '$1****$2');
|
|
}
|
|
|
|
// 复制文本
|
|
export const copyText = (text : string) => {
|
|
// 模拟 输入框
|
|
const cInput = document.createElement('input');
|
|
cInput.value = text;
|
|
document.body.appendChild(cInput);
|
|
cInput.select(); // 选取文本框内容
|
|
|
|
// 执行浏览器复制命令
|
|
// 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签)
|
|
// Input要在正常的编辑状态下原生复制方法才会生效
|
|
document.execCommand('copy');
|
|
|
|
// 复制成功后再将构造的标签 移除
|
|
document.body.removeChild(cInput);
|
|
};
|
|
|
|
/**
|
|
* 获取字典数据作为下拉选项数据
|
|
* @param dictCode
|
|
*/
|
|
// export const getDictionaryOptions = (dictCode : any) => {
|
|
// const dictOptions = ref<any>([]);
|
|
// // const storageData = localStorage.getItem('__' + dictCode + '__');
|
|
// listDictionaryData({
|
|
// dictCode
|
|
// })
|
|
// .then((list) => {
|
|
// // 获取远程字典数据
|
|
// if (list.length > 0) {
|
|
// dictOptions.value = list.map((d) => {
|
|
// return {
|
|
// value: d.dictDataCode,
|
|
// label: d.dictDataName,
|
|
// text: d.dictDataName,
|
|
// comments: d.comments
|
|
// };
|
|
// });
|
|
// } else {
|
|
// // 未定义则取默认的json数据
|
|
// dictOptions.value = getJson(dictCode);
|
|
// }
|
|
// })
|
|
// .catch((e) => {
|
|
// // message.error(e.message);
|
|
// });
|
|
// return <any>dictOptions;
|
|
// };
|
|
|
|
// 下拉选择项目
|
|
export const selectProject = (text : any) => {
|
|
const data = ref<any>([]);
|
|
pageProject({ projectName: text }).then((result) => {
|
|
data.value = result?.list.map((d) => {
|
|
return {
|
|
value: d.projectId,
|
|
label: d.projectName,
|
|
text: d.projectName
|
|
};
|
|
});
|
|
});
|
|
return data;
|
|
};
|
|
|
|
// 判断是否为图片
|
|
/*
|
|
* @param: fileName - 文件名称
|
|
*/
|
|
export const isImage = (fileName : string) => {
|
|
// 后缀获取
|
|
let suffix = '';
|
|
try {
|
|
const flieArr = fileName.split('.');
|
|
suffix = flieArr[flieArr.length - 1];
|
|
} catch (err) {
|
|
suffix = '';
|
|
}
|
|
const imgList = ['png', 'jpg', 'jpeg', 'bmp', 'gif'];
|
|
return imgList.some((item) => {
|
|
return item == suffix;
|
|
});
|
|
};
|
|
|
|
export const getWeek = (text : string | number) => {
|
|
const week = [
|
|
'星期日',
|
|
'星期一',
|
|
'星期二',
|
|
'星期三',
|
|
'星期四',
|
|
'星期五',
|
|
'星期六'
|
|
];
|
|
return week[text];
|
|
};
|
|
|
|
/**
|
|
* 获取场地预定的key
|
|
* 组合数据:日期+时间段+场馆id+场地id
|
|
*/
|
|
export const getKey = (text: string) => {
|
|
text = text.replaceAll('-', '');
|
|
text = text.replaceAll(':', '');
|
|
text = text.replaceAll(' ', '');
|
|
return text;
|
|
}
|
|
|
|
/**
|
|
* 文件大小转换
|
|
* @param text
|
|
*/
|
|
export const getFileSize = (text : any) => {
|
|
if (text < 1024) {
|
|
return text + 'B';
|
|
} else if (text < 1024 * 1024) {
|
|
return (text / 1024).toFixed(1) + 'KB';
|
|
} else if (text < 1024 * 1024 * 1024) {
|
|
return (text / 1024 / 1024).toFixed(1) + 'M';
|
|
} else {
|
|
return (text / 1024 / 1024 / 1024).toFixed(1) + 'G';
|
|
}
|
|
};
|
|
|
|
/* 原图转缩列图 */
|
|
export const thumbnail = (url : string) => {
|
|
if (url.indexOf('/thumbnail') < 0) {
|
|
return url.replace(FILE_SERVER, FILE_SERVER + '/thumbnail');
|
|
}
|
|
return url;
|
|
};
|
|
|
|
/* 缩列转图原图 */
|
|
export const original = (url : string) => {
|
|
if (url.indexOf('/thumbnail') == 0) {
|
|
return url.replace('/thumbnail', '');
|
|
}
|
|
return url;
|
|
};
|
|
|
|
export const getCompanyInfo = () => {
|
|
const user = useUserStore();
|
|
if (user.info?.companyInfo) {
|
|
return user.info?.companyInfo;
|
|
}
|
|
return null;
|
|
};
|
|
|
|
export const getVersion = () => {
|
|
const companyInfo = getCompanyInfo();
|
|
if (companyInfo?.version) {
|
|
return companyInfo?.version;
|
|
}
|
|
return null;
|
|
};
|
|
|
|
// AES加密
|
|
export const encrypt = (text : any) => {
|
|
return CryptoJS.AES.encrypt(text, APP_SECRET).toString();
|
|
};
|
|
|
|
// AES解密
|
|
export const decrypt = (encrypt : any) => {
|
|
CryptoJS.AES.decrypt(encrypt, APP_SECRET);
|
|
const bytes = CryptoJS.AES.decrypt(encrypt, APP_SECRET);
|
|
return bytes.toString(CryptoJS.enc.Utf8);
|
|
};
|