增加新模块

This commit is contained in:
何江明
2025-03-20 08:46:07 +08:00
parent 15014e22aa
commit 2ae62b59ed
1729 changed files with 94700 additions and 4232 deletions
+91
View File
@@ -0,0 +1,91 @@
// 检查是否登录,未登录跳转登录页,抛出异常中断后续操作
export function isLogin() {
return new Promise((resolve, reject) => {
let token = uni.getStorageSync('token');
if (!token) {
uni.reLaunch({
url: '/pages/login/login'
})
return reject('未登录');
}
return resolve('已登录');
});
}
export const TOKEN_NAME = 'fcc-token';// 用户对象
export const USER_KEY = 'fcc-user-key';// 用来无感登录
export const USER_DATA = 'fcc-user-data';// 当前登录的对象
export const USER_LOGIN_TIME = 'fcc-login-time';// 当前登录的时间
export const SYS_LANGUAGE_TIME = 'fcc-sys-language';// 当前系统语言
/**
* 设置token
* @param {Object} token
*/
export function setStorageFun(key, value, sync = true){
try {
if (sync) {
return uni.setStorageSync(key, value);
} else {
uni.setStorage({
key: key,
data: value
});
}
} catch (e) {
}
};
/**
* 获取token
*/
export function getStorageFun(key,sync = true){
try {
if(sync){
return uni.getStorageSync(key);
}else{
let data = '';
uni.getStorage({
key:key,
success: function (res) {
data = res.data;
}
});
return data;
}
} catch (e) {
return false;
}
}
//移除
export function del(key, sync = true){
try {
if (sync) {
return uni.removeStorageSync(key);
} else {
uni.removeStorage({
key: key
});
}
} catch (e) {
return false;
}
}
//清空
export function clear(sync = true){
try {
if (sync) {
return uni.clearStorageSync();
} else {
uni.clearStorage();
}
uni.removeStorage({
key: 'isForcedLogin',
});
} catch (e) {
return false;
}
}
+9
View File
@@ -0,0 +1,9 @@
// export const BASE_URL="https://api.finecc.net"; // 正式环境
export const BASE_URL="http://192.168.0.108:8087"; // 超哥本地
export const PRIVACY_EN="https://www.finecc.net/?Privacy-Agreement/";//隐私协议地址(英文版)
export const PRIVACY_CN="https://www.finecc.net/?Privacy/";//隐私协议地址(中文版)
export const USER_EN="https://www.finecc.net/?FAQ/3421.html";//用户协议(英文版)
export const USER_CN="https://www.finecc.net/?wenti/3422.html";//用户协议(中文版)
+12
View File
@@ -0,0 +1,12 @@
/**
* 订单的状态 状态:1-待支付,2-支付处理中,3-已支付,4-服务中,5-已结束,6-已作废
*/
export const ORDER_STATUS_CSS={
1:"#5486FF",//待支付,不管
2:"#FF0050",//待发货
3:"#FF0050",//待收货
4:"#999999",//已完成
5:"#999999",//退款中
6:"#999999",//已取消
}
+108
View File
@@ -0,0 +1,108 @@
/**
* 根据key获取value
* @param optionArr
* @param key
*/
export function getValue(optionArr, key) {
let resultVal = "";
if (!optionArr || optionArr.length === 0) {
return resultVal;
}
optionArr.map(item => {
if (item.key === key) {
resultVal = item.value || item.name;
}
});
return resultVal;
}
// 短信类型:passwd-设置密码,login-登录,changepassword-修改密码
export const SMS_TYPE = {
"PASSWD":"passwd",
"LOGIN":"login",
}
// 图片类型 common-公共,device-设备,ad-广告
export const IMG_TYPE = {
"COMMON":"common",
"DEVICE":"device",
"AD":"ad",
}
// 订单的 状态:1-待付款,2-待发货,3-待收货,4-退款售后,5-已取消,6-已完成
export const ORDER_TYPE = {
"ALL":0,
"UNPAID":1,
"UNSHIPPED":2,
"NOT_RECEIVE":3,
"AFTER_SALE":4,
"CANCELED":5,
"COMPLETED":6,
}
/**
* 订单的状态 状态:1-待付款,2-待发货,3-待收货,4-退款售后,5-已取消
*/
export const ORDER_STATUS=[
{
key:0,
name:"全部"
},{
key:1,
name:"待付款"
},{
key:2,
name:"待发货"
},{
key:3,
name:"待收货"
},{
key:4,
name:"退款售后"
},{
key:5,
name:"已取消"
},{
key:6,
name:"已完成"
}
]
/**
* 支付方式 1-微信支付,2-支付宝
*/
export const PAYMENT_WAY = {
"WECHAT":1,
"ALIPAY":2,
}
export const PAYMENT_WAY_ = [
{
key: 1,
value: "微信支付"
},
{
key: 2,
value: "支付宝支付"
}
];
/**
* 发货时效:1-24小时内发货,2-48小时内发货,3-大于48小时发货
* @type {[{value: string, key: number},{value: string, key: number}]}
*/
export const PRODUCT_DELIVERY_TIME = [
{
key: 1,
value: "24小时内发货"
},
{
key: 2,
value: "48小时内发货"
},{
key: 3,
value: "大于48小时发货"
}
];
+278
View File
@@ -0,0 +1,278 @@
import dayjs from 'dayjs';
import { PRIVACY_EN,PRIVACY_CN,USER_EN,USER_CN } from './config.js';
/**
* 创建随机字符串
* @param num
* @returns {string}
*/
export function randomString(num) {
const chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
let res = ''
for (let i = 0; i < num; i++) {
var id = Math.ceil(Math.random() * 35)
res += chars[id]
}
return res
}
export const tencentMapKey="S2DBZ-W6S6B-KRXUN-NHF2N-DE2U6-7UBBD";// 腾讯地图key
/**
* 转换时间格式
* @param date 时间格式
* @returns {string} HH:mm
*/
export function formatDate(date){
if(!date){
return "";
}
return dayjs(date).format("YYYY-MM-DD HH:mm:ss");
}
/**
* 转换时间格式
* @param date 时间格式
* @returns {string} HH:mm
*/
export function formatDate1(date){
if(!date){
return "";
}
const newDate = dayjs(date).format("HH:mm:ss");
return dayjs(date).format("HH:mm:ss");
}
/**
* 千米转换
* @param {Object} distanceInMeters
*/
export function formatDistance(distanceInMeters) {
if (distanceInMeters >= 1000) {
// 将距离从米转换为千米,并保留两位小数
const distanceInKilometers = (distanceInMeters / 1000).toFixed(2);
return `${distanceInKilometers}km`;
} else {
return `${distanceInMeters.toFixed(2)}m`;
}
}
export function findItemByCode(items, value) {
return items.find(item => item.value === value);
}
export function timestampToTime(timestamp) {
var date = new Date(timestamp); // 时间戳为毫秒级别
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
// 补零操作
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
export function getParameter(path,name) {
var url = path;
var params = new Object();
if (url.indexOf("?") != -1) {
const str = url.substr(1);
const pathUrl = str.split("?")[1];
const strs = pathUrl.split("&");
for (var i = 0; i < strs.length; i++) {
params[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
if(name){
return params[name];
}else{
return params;
}
}
export function addAmount(amount){
if(amount && amount > 0){
return "+"+amount;
}
return amount;
}
/**
* @param {Object} url
*/
export function GetWxMiniProgramUrlParam(url) {
let theRequest = {};
if (url.indexOf("#") != -1) {
const str = url.split("#")[1];
const strs = str.split("&");
for (let i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
}
} else if (url.indexOf("?") != -1) {
const str = url.split("?")[1];
const strs = str.split("&");
for (let i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
}
}
return theRequest;
};
export function zhScenePath(scene){
const options = [];
for (var i = 0; i < scene.split('&').length;i++){
var arr = scene.split('&')[i].split('=');
options[arr[0]] = arr[1];
}
return options;
}
export function isNull(val){
if(val){
return val;
}
return "--";
}
// 保留四位小数
export function reservedDecimal(val,digit=4){
let result = val;
if(val){
result = parseInt(val,10).toFixed(digit)
}
return result;
}
/**
* 验证正负数
* @param {Object} str
*/
export function isPositiveNegativeOrZero(str) {
if(str){
const currentStr = parseInt(str);
return currentStr>0;
}
return str;
}
/**
* 获取当前语言
*/
export function getCurrentLanguage() {
let sysLanguage = uni.getLocale();
if(sysLanguage === "zh-Hans" || sysLanguage === "zh-Hant"){
sysLanguage = "zh_HK";
}
return sysLanguage;
}
/**
* 获取当前系统时间
*/
export function getCurrentSysLanguage(){
const systemLanguage = uni.getSystemInfoSync().language;
// 设置默认语言
let currentLanguage = 'zh_HK'; // 默认繁体
if (systemLanguage === 'en_US' || systemLanguage === 'en' || systemLanguage === 'ja') {
currentLanguage = 'en'; // 如果是英文系统,则设置默认英文
}else if (systemLanguage === 'zh_TW' || systemLanguage === 'zh_HK' || systemLanguage === 'zh_CN') {
currentLanguage = 'zh_HK'; // 繁体
}
return currentLanguage;
}
export function getBrowserUrl(type){
const locale = uni.getLocale();
let url = '';
if(type === "privacy" && (locale==="zh-Hans" || locale==="zh-Hant" || locale==="zh_CN" || locale==="zh_TW" || locale==="zh_HK")){
url= PRIVACY_CN;
}else if(type === "privacy" && (locale==="en" || locale==="ja")){
url= PRIVACY_EN;
}else if(type === "user" && (locale==="zh-Hans" || locale==="zh-Hant" || locale==="zh_CN" || locale==="zh_TW" || locale==="zh_HK")){
url= USER_CN;
}else if(type === "user" && (locale==="en" || locale==="ja")){
url= USER_EN;
}
return url;
}
/**
* 获取当前系统
*/
export function getCurrentSysPlatform(){
return uni.getSystemInfoSync().platform;
// return "ios";
}
/**
* 拷贝
* @param {Object} val
*/
export function copyData(val){
const then = this;
uni.setClipboardData({
data: val,
});
};
export function addChildNode(parentId, subNodes, treeOption) {
for (let i = 0; i < treeOption.length; i++) {
if (treeOption[i].parentId === parentId) {
// 将子节点插入到父节点的children数组中
treeOption[i].children = subNodes;
return; // 找到后直接返回,避免重复插入(假设树中不会有重复的parentId和value)
}
// 如果当前节点有children,则递归查找(但在这个特定情况下,我们不需要递归,因为parentId是直接的)
// 不过,为了通用性,这里还是保留递归的逻辑(虽然在这个例子中不会用到)
if (treeOption[i].children) {
addChildNode(parentId, subNodes, treeOption[i].children);
}
}
// 注意:在这个特定例子中,我们不需要上面的递归调用,因为parentId直接指向了树的一层节点
// 但如果你有一个更复杂的树结构,并且子节点可能需要插入到更深层次的节点中,那么递归调用就是必要的
}
/**
* 从新组装地址
* @param addressObj 需要组装的地址
*/
export function assembleAddress(addressObj){
const resutlObj={};
if(!addressObj || Object.keys(addressObj).length === 0){
return resutlObj;
}
const ids=[];
if(addressObj.countryId){
ids.push(addressObj.countryId)
}
if(addressObj.provinceId){
ids.push(addressObj.provinceId)
}
if(addressObj.cityId){
ids.push(addressObj.cityId)
}
if(addressObj.areaId){
ids.push(addressObj.areaId)
}
const names=[];
if(addressObj.countryName){
names.push(addressObj.countryName);
}
if(addressObj.provinceName){
names.push(addressObj.provinceName);
}
if(addressObj.cityName){
names.push(addressObj.cityName);
}
if(addressObj.areaName){
names.push(addressObj.areaName);
}
resutlObj.ids=ids.join(",");
resutlObj.names=names.join(" ");
return resutlObj;
}
+50
View File
@@ -0,0 +1,50 @@
import {getStorageFun,TOKEN_NAME} from './auth.js';
import qs from "qs";
// utils/http.js (修改后的版本)
const baseUrl = 'http://192.168.0.108:8087';
function request(options) {
const { url, method = 'GET', data = {}, headers = {} } = options;
// const token = uni.getStorageSync(tokenKey); // 获取token, 根据实际情况调整获取方式
const token = getStorageFun(TOKEN_NAME); // 获取token, 根据实际情况调整获取方式
const defaultHeaders = {
'HSM-AUTH': token ? token : '', // 如果存在token, 则添加到请求头中
'content-type': ['post','POST'].includes(method) ? 'application/x-www-form-urlencoded' : 'application/json',
};
return new Promise((resolve, reject) => {
// 请求之前做一些事
uni.showLoading({
title: "加载中...",
})
uni.request({
url: baseUrl + url,
method,
data,
header: {
...defaultHeaders,
...headers, // 使用展开运算符合并默认头和自定义头
},
success: (res) => {
uni.hideLoading();
if (res.statusCode === 200) {
resolve(res.data); // 成功时返回数据
} else if (res.statusCode === 201) {
// 例如, 处理401未授权错误, 可能需要重新登录等操作
// 可以根据实际情况处理, 例如跳转到登录页面等
reject(new Error('Unauthorized')); // 或者其他错误处理逻辑
} else {
reject(res); // 其他错误情况返回错误信息
}
},
fail: (error) => {
uni.hideLoading();
reject(error); // 请求失败时返回错误信息
},
});
});
}
export default request;