import request from '@/utils/request'; import { setStorageWithExpiry, getStorageWithExpiry } from '@/utils/auth' export function getWXStatusHeight() { // #ifdef MP-WEIXIN // 获取距上 const barTop = wx.getSystemInfoSync().statusBarHeight // 获取胶囊按钮位置信息 const menuButtonInfo = wx.getMenuButtonBoundingClientRect() // 获取导航栏高度 const barHeight = menuButtonInfo.height + (menuButtonInfo.top - barTop) * 2 let barWidth = menuButtonInfo.width console.log('menuButtonInfo', menuButtonInfo) let barLeftPosition = 375 - menuButtonInfo.right + menuButtonInfo.width let menuButtonLeft = menuButtonInfo.left let menuButtonRight = menuButtonInfo.right return { barHeight, barTop, barWidth, barLeftPosition, menuButtonLeft, menuButtonRight } // #endif } /** * 根据订单的状态获取订单的文字展示状态 * @param ticketsStatus 订单状态 * @param workStatus 维修工作状态 */ export function getOrderStatusText(ticketsStatus,workStatus){ let str = ""; if("04"==ticketsStatus){ //待派工 str = "待派工" }else if("05"==ticketsStatus){ //维修中 str = "维修中" }else if("01"==ticketsStatus){ //待取车结算 str = "待取车结算" }else if("06"==ticketsStatus){ //挂单/记账 str = "已挂单/记账待交车" }else if("07"==ticketsStatus){ //待通知客户取车 str = "待通知客户取车" }else if("08"==ticketsStatus){ //已交车 str = "已交车" }else if("02"==ticketsStatus){ //已结账 str = "已结账待交车" }else if("03"==ticketsStatus){ //已作废 str = "已作废" } return str; } /** * 查询字典可选值 * @param dictCode */ export function getDictByCode(dictCode){ let dictArray = getStorageWithExpiry(dictCode); if(null==dictArray || undefined==dictArray){ request({ url: '/admin-api/system/dict-data/type', method: 'get', params:{type:dictCode} }).then((res) => { console.log(res) if (res.code == 200) { setStorageWithExpiry(dictCode,res.data,3600) return res.data } }) }else{ return dictArray } } /** * 工单记录操作日志 * @param id 工单主表id * @param ticketsWorkStatus 工单主表状态 * @param itemId 工单子表id * @param itemStatus 工单子表状态 * @param recordType 操作类型 对应后端枚举:RecordTypeEnum * @param remark 备注 * @param image 图片相对路径,多个英文逗号隔开 * @param finishType 完成类型 01:完成并移交下一班组、02:完成并移交总检、03:完成工单 * @param nextName 下一班组名称 */ export function saveTicketsRecords(id,ticketsWorkStatus,itemId,itemStatus,recordType,remark,image,finishType,nextName){ return new Promise((resolve, reject) => { let dataObj = { id: id, ticketsWorkStatus:ticketsWorkStatus, item: {id: itemId, itemStatus: itemStatus}, recordType: recordType, remark: remark, finishType:finishType, nextName:nextName, image: image } request({ url: '/admin-api/repair/tickets/updateStatus', method: 'POST', data:dataObj }).then((res) => { console.log(res) if (res.code == 200) { uni.showToast({ title: '操作成功', icon: 'none' }) resolve(1); }else{ uni.showToast({ title: '操作失败,请联系管理员', icon: 'none' }) reject(0); } }) }); } /** * 翻译字典 * @param dictCode */ export async function getDictTextByCodeAndValue(dictCode, value) { let dictArray = getStorageWithExpiry(dictCode); if (null == dictArray || undefined == dictArray) { let res = await request({ url: '/admin-api/system/dict-data/type', method: 'get', params: {type: dictCode} }) if (res.code == 200) { setStorageWithExpiry(dictCode, res.data, 3600) dictArray = res.data let dictObj = dictArray.find(item => item.value == value) if (dictObj) { return dictObj.label } else { return "未知数据" } } } else { let dictObj = dictArray.find(item => item.value == value) if (dictObj) { return dictObj.label } else { return "未知数据" } } } export function formatTimestamp(timestamp) { // 将时间戳转换为Date对象 const date = new Date(timestamp); // 获取年月日时分秒 const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); const hours = date.getHours().toString().padStart(2, '0'); const minutes = date.getMinutes().toString().padStart(2, '0'); const seconds = date.getSeconds().toString().padStart(2, '0'); // 组合成日期时间字符串 return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } /** * 将时间戳转换为指定格式的日期字符串 * @param {number} timestamp - 时间戳(毫秒) * @param {string} [format='YYYY-MM-DD'] - 日期格式,默认为 'YYYY-MM-DD' * @returns {string} - 格式化的日期字符串 */ export function formatTimestampCustom(timestamp, format = 'YYYY-MM-DD') { const date = new Date(timestamp); const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); const hour = date.getHours().toString().padStart(2, '0'); const minute = date.getMinutes().toString().padStart(2, '0'); const second = date.getSeconds().toString().padStart(2, '0'); const replaceMap = { 'YYYY': year, 'MM': month, 'DD': day, 'HH': hour, 'mm': minute, 'ss': second }; return format.replace(/YYYY|MM|DD|HH|mm|ss/g, match => replaceMap[match]); } /** * 组装订单对象 * @param order */ export function builderOrder(order) { return { id: order.id, orderNo: order.ticketNo, flag: 1, ticketsStatus: order.ticketsStatus, ticketsWorkStatus: order.ticketsWorkStatus, flagStr: getOrderStatusText(order.ticketsStatus, order.ticketsWorkStatus), carNum: order.carNo, nowRepairId: order.nowRepairId, carModel: order.carBrandName, userName: order.userName, userPhone: order.userMobile, counselorName: order.adviserName, canOperate:order.canOperate, } } export function formatDate(timestamp) { // 将时间戳转换为Date对象 const date = new Date(timestamp); // 获取年月日时分秒 const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); // 组合成日期时间字符串 return `${year}-${month}-${day}`; } //转换为double // utils.js export function convertToDouble(value, decimalPlaces = 1) { if (value !== undefined && value !== null) { const parsedValue = parseFloat(value); if (!isNaN(parsedValue)) { return parsedValue.toFixed(decimalPlaces); } else { console.error('转换失败,值不是有效的数字'); return '0.0'; // 可以设置一个默认值 } } else { console.error('值不存在'); return '0.0'; // 可以设置一个默认值 } } /** * 生成一个16位的纯数字的唯一ID * 生成策略 head + 当前时间戳 + 随机数 * @param head 前缀 */ export function createUniqueCodeByHead(head = '') { const min = 100; // 最小值 const max = 999; // 最大值 return head.toString() + Date.now().toString() + Math.floor(Math.random() * (max - min + 1)) + min; }