diff --git a/kitchen/index/index.vue b/kitchen/index/index.vue index 1d5cc61c..97805758 100644 --- a/kitchen/index/index.vue +++ b/kitchen/index/index.vue @@ -1,18 +1,36 @@ + diff --git a/unpackage/dist/dev/mp-weixin/kitchen/index/index.wxml b/unpackage/dist/dev/mp-weixin/kitchen/index/index.wxml index 5a955a70..25246294 100644 --- a/unpackage/dist/dev/mp-weixin/kitchen/index/index.wxml +++ b/unpackage/dist/dev/mp-weixin/kitchen/index/index.wxml @@ -1 +1 @@ -123 \ No newline at end of file +123456 \ No newline at end of file diff --git a/utils/index.js b/utils/index.js new file mode 100644 index 00000000..45cbb0d1 --- /dev/null +++ b/utils/index.js @@ -0,0 +1,191 @@ +const RequsetUrl = 'https://huishang.magicany.cc/api/v1'; // 请求地址前缀 +export const picUrl = 'https://huishang.magicany.cc'; // 图片地址前缀 + +/** + * @description 小程序跳转方法二次封装 + * @method NavgateTo + * @param {String} path - 跳转的目标页面路径 + * @param {Object} options - 配置选项对象 + * @param {Boolean} options.isLogin - 是否需要校验登录态,默认为 true +*/ +export const NavgateTo = (path, options = {}) => { + const { isLogin = true, } = options; + const userId = uni.getStorageSync('userId'); // 假设这个方法存在并返回用户信息 + + if (isLogin) { + if (!userId) { + uni.navigateTo({ url: '/pages/login/login' }) + return + } else { + uni.navigateTo({ + url: path + }); + return; + } + } + uni.navigateTo({ url: path }) +} + +/** + * 封装请求方法 + * @param {string} url 请求地址 + * @param {string} method 请求方法 + * @param {Object} data 请求参数 + * @param {Object} options 配置选项对象 + * @returns {Promise} 返回一个Promise对象 +*/ +export const request = (url, method = 'POST', data = {}, options = {}) => { + const { silent = true } = options; + let ctoken; + + if (options.token) { + ctoken = options.token; + } else { + ctoken = uni.getStorageSync('ctoken'); // 后续接口强依赖强校验该字段 + } + + if (silent) { + uni.showLoading({ + title: '加载中', + mask: true + }) + }; + let params = { + user_id: uni.getStorageSync('userId'), + ...data, + } + return new Promise((resolve, reject) => { + uni.request({ + url: RequsetUrl + url, + method: method, + data: params, + header: { + 'Content-Type': 'application/json', + 'Authorization': ctoken, + // ...header, + }, + success: (res) => { + console.log('请求成功,接口返参', res); + if (res.statusCode >= 200 && res.statusCode < 300) { + if (silent) { + uni.hideLoading(); + } + resolve(res.data); // 请求成功 + } else { + if (silent) { + uni.hideLoading(); + } + reject({ + code: res.statusCode, + message: res.data.message || '请求失败', + data: res.data, + }); + } + }, + fail: (err) => { + if (silent) { + uni.hideLoading(); + } + reject({ + code: -1, + message: '接口异常,请稍后重试', + error: err, + }); + }, + }); + }); +} + + +/** + * 校验手机号是否合法 + * @param {string} option 请求方法 + * @returns {Boolean} 手机号是否正确 +*/ +export const isPhone = (option) => { + if(option.length != 11){ + return false + } + if (!(/^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/.test(option))) { + return false + } else { + return true + } +} + +/** + * 精确的浮点数运算 + * @param {number} num1 - 第一个数字 + * @param {number} num2 - 第二个数字 + * @param {string} operator - 运算符,支持 '+', '-', '*', '/', '+=' + * @returns {number} - 运算结果 +*/ +export const floatCalculate = (num1, num2, operator) => { + // 获取小数位数 + function getPrecision(num) { + const str = num.toString(); + const decimalIndex = str.indexOf('.'); + return decimalIndex === -1 ? 0 : str.length - decimalIndex - 1; + } + + // 计算放大倍数 + const precision1 = getPrecision(num1); + const precision2 = getPrecision(num2); + const maxPrecision = Math.max(precision1, precision2); + const factor = Math.pow(10, maxPrecision); + + // 将数字转换为整数 + const intNum1 = Math.round(num1 * factor); + const intNum2 = Math.round(num2 * factor); + + // 根据运算符进行计算 + let result; + switch (operator) { + case '+': + result = (intNum1 + intNum2) / factor; + break; + case '-': + result = (intNum1 - intNum2) / factor; + break; + case '*': + result = (intNum1 * intNum2) / (factor * factor); + break; + case '/': + result = intNum1 / intNum2; + break; + case '+=': + result = (intNum1 + intNum2) / factor; + break; + default: + throw new Error('不支持的运算符'); + } + + return result; +} + +/** + * 图片上传 + * @param {string} filename - 图片上传地址 + * @param {Function} fn - 接口回调函数 +*/ +export const upload = (filename, fn) => { + uni.uploadFile({ + url: RequsetUrl + '/public/upload-image', + filePath: filename, + name: 'image', + formData: { + 'uid': uni.getStorageSync('uid'), + }, + success: (f) => { + fn(f.data); + }, + fail: (res) => { + console.log(res); + uni.showToast({ + title: '上传文件失败', + icon: 'none' + }) + }, + complete: () => {} + }); +} \ No newline at end of file