From 069677957e9654f294f5110a687417147a2ef648 Mon Sep 17 00:00:00 2001 From: ISFP_T <68358856@qq.com> Date: Sat, 28 Feb 2026 16:38:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 130 ++++++++++++++++++++++++++++++++++ components/OrderItemCard.vue | 2 + config/api/order.js | 7 ++ config/url.js | 4 +- locale/en-US.js | 9 ++- locale/id-ID.js | 9 ++- locale/zh-CN.js | 9 ++- manifest.json | 6 ++ package.json | 2 +- pages/order/detail.vue | 73 +++++++++++++++++-- subPackages/user/my/index.vue | 4 +- 11 files changed, 241 insertions(+), 14 deletions(-) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..2de6ad4 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,130 @@ +# AGENTS + + + +## Available Skills + + + +When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge. + +How to use skills: +- Invoke: `npx openskills read ` (run in your shell) + - For multiple: `npx openskills read skill-one,skill-two` +- The skill content will load with detailed instructions on how to complete the task +- Base directory provided in output for resolving bundled resources (references/, scripts/, assets/) + +Usage notes: +- Only use skills listed in below +- Do not invoke a skill that is already loaded in your context +- Each skill invocation is stateless + + + + + +algorithmic-art +Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations. +global + + + +brand-guidelines +Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply. +global + + + +canvas-design +Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations. +global + + + +doc-coauthoring +Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks. +global + + + +docx +"Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of \"Word doc\", \"word document\", \".docx\", or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a \"report\", \"memo\", \"letter\", \"template\", or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation." +global + + + +frontend-design +Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics. +global + + + +internal-comms +A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.). +global + + + +mcp-builder +Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK). +global + + + +pdf +Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill. +global + + + +pptx +"Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill." +global + + + +skill-creator +Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations. +global + + + +slack-gif-creator +Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack." +global + + + +template +Replace with description of the skill and when Claude should use it. +global + + + +theme-factory +Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly. +global + + + +web-artifacts-builder +Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts. +global + + + +webapp-testing +Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs. +global + + + +xlsx +"Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the xlsx in my downloads\") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved." +global + + + + + + diff --git a/components/OrderItemCard.vue b/components/OrderItemCard.vue index 63d3cae..3468a39 100644 --- a/components/OrderItemCard.vue +++ b/components/OrderItemCard.vue @@ -159,6 +159,8 @@ const hours = Math.floor(minutes / 60); const mins = minutes % 60; if (hours > 0) return `${hours}${t('time.hour')}${mins}${t('time.minute')}`; + // 如果小于1分钟,显示"小于1分钟" + if (minutes < 1) return `${t('time.lessThan')}1${t('time.minute')}`; return `${mins}${t('time.minute')}`; }); diff --git a/config/api/order.js b/config/api/order.js index b8883c7..1b2b027 100644 --- a/config/api/order.js +++ b/config/api/order.js @@ -221,3 +221,10 @@ export const cancelProductOrder = (OutOrderNo) => { }) } +// 解决丢包风扇未弹出,尝试重新弹出风扇 +export const deviceRentByOrderNo = (orderNo)=>{ + return request({ + url:`/app/order/tryRent/${orderNo}`, + method:'post' + }) +} \ No newline at end of file diff --git a/config/url.js b/config/url.js index 7c6b44d..542c40a 100644 --- a/config/url.js +++ b/config/url.js @@ -1,6 +1,6 @@ // export const URL = "https://my.gxfs123.com/api" //正式服务器-弃用 -export const URL = "https://manager.fdzpower.com/api" //正式服务器 -// export const URL = "https://fansdev.gxfs123.com/api" //测试服务器 +// export const URL = "https://manager.fdzpower.com/api" //正式服务器 +export const URL = "https://fansdev.gxfs123.com/api" //测试服务器 // export const URL = "http://192.168.5.123:8080" //本地调试 // export const URL = "http://127.0.0.1:8080" //本地调试 diff --git a/locale/en-US.js b/locale/en-US.js index e6f1764..b1e910b 100644 --- a/locale/en-US.js +++ b/locale/en-US.js @@ -280,6 +280,12 @@ export default { returnProblemTip: 'After returning, if the order is still active, please go to ', contactStaff: ' to contact staff.', returnLocationMap: 'Return Location Map', + deviceEjectWait: 'Please wait ', + deviceEjectRetry: ' seconds before trying again', + deviceEjectProcessing: 'Processing...', + deviceEjectSuccess: 'Device ejection retry initiated', + deviceEjectFailed: 'Operation failed', + deviceEjectError: 'Operation failed, please try again later', }, user: { @@ -647,7 +653,8 @@ export default { tomorrow: 'Tomorrow', hours: 'hour(s)', minutes: 'minute(s)', - halfHours: 'half hour(s)' + halfHours: 'half hour(s)', + lessThan: 'less than' }, unit: { diff --git a/locale/id-ID.js b/locale/id-ID.js index b242e31..d6b206c 100644 --- a/locale/id-ID.js +++ b/locale/id-ID.js @@ -280,6 +280,12 @@ export default { returnProblemTip: 'Setelah produk dikembalikan ke gudang, pesanan masih belum berakhir, harap pergi ke', contactStaff: 'Hubungi staf.', returnLocationMap: 'Peta Lokasi Pengembalian', + deviceEjectWait: 'Harap tunggu ', + deviceEjectRetry: ' detik sebelum mencoba lagi', + deviceEjectProcessing: 'Memproses...', + deviceEjectSuccess: 'Percobaan pengeluaran perangkat dimulai', + deviceEjectFailed: 'Operasi gagal', + deviceEjectError: 'Operasi gagal, harap coba lagi nanti', }, user: { @@ -647,7 +653,8 @@ export default { tomorrow: 'Besok', hours: 'jam', minutes: 'menit', - halfHours: 'setengah jam' + halfHours: 'setengah jam', + lessThan: 'kurang dari' }, unit: { diff --git a/locale/zh-CN.js b/locale/zh-CN.js index a88311f..663be47 100644 --- a/locale/zh-CN.js +++ b/locale/zh-CN.js @@ -279,6 +279,12 @@ export default { returnProblemTip: '产品归还入仓后,订单仍未结束,请前往', contactStaff: '联系工作人员。', returnLocationMap: '归还点地图', + deviceEjectWait: '请等待', + deviceEjectRetry: '秒后再试', + deviceEjectProcessing: '处理中...', + deviceEjectSuccess: '已重新尝试弹出设备', + deviceEjectFailed: '操作失败', + deviceEjectError: '操作失败,请稍后重试', }, user: { @@ -646,7 +652,8 @@ export default { tomorrow: '明天', hours: '小时', minutes: '分钟', - halfHours: '半小时' + halfHours: '半小时', + lessThan: '小于' }, unit: { diff --git a/manifest.json b/manifest.json index e7162b1..64ca6b5 100644 --- a/manifest.json +++ b/manifest.json @@ -69,6 +69,12 @@ "requiredPrivateInfos" : [ "getLocation", "chooseLocation" ] }, "mp-alipay" : { + "component2":true, + "transpile":[ + "uview-ui", + "vue-i18n" + ], + "skia":true, "usingComponents" : true, "appid" : "2021006117693332", "unipush" : { diff --git a/package.json b/package.json index ff62b4d..e9f8a4d 100644 --- a/package.json +++ b/package.json @@ -12,4 +12,4 @@ "sass": "^1.57.1", "sass-loader": "^13.2.0" } -} +} \ No newline at end of file diff --git a/pages/order/detail.vue b/pages/order/detail.vue index b489fcf..4634392 100644 --- a/pages/order/detail.vue +++ b/pages/order/detail.vue @@ -254,7 +254,8 @@ reportDeviceNoEject, convertToOwned, closeWithMaxFee, - getInUseOrder + getInUseOrder, + deviceRentByOrderNo } from '@/config/api/order.js' import { withdrawDeposit @@ -328,6 +329,7 @@ const convertToOwnPopup = ref(null) const showReturnMapPopup = ref(false) const returnMapImageUrl = ref('') + const lastDeviceEjectTime = ref(0) // 上次点击"宝未弹出"的时间戳 // 计算属性:是否显示优惠券/会员卡可用提示 const canUsePromotionTag = computed(() => { @@ -584,8 +586,13 @@ // 获取订单费用(不含单位) const getOrderFee = () => { + let fee; + if(orderInfo.value.originalFee){ + fee = orderInfo.value.originalFee || orderInfo.value.originalFee || '0' + }else{ + fee = orderInfo.value.currentFee; + } - const fee = orderInfo.value.originalFee || orderInfo.value.originalFee || '0' // 移除可能的"元"字符 return String(fee).replace(/[元¥]/g, '') } @@ -1139,10 +1146,64 @@ } // 处理"宝未弹出" - 跳转到反馈页面 - const handleDeviceNoEject = () => { - uni.navigateTo({ - url: '/subPackages/service/feedback/index?selectedType=0' - }) + const handleDeviceNoEject = async () => { + // 检查是否在30秒间隔内 + // const now = Date.now() + // const timeDiff = now - lastDeviceEjectTime.value + // const requiredInterval = 30000 // 30秒 + + // if (timeDiff < requiredInterval) { + // const remainingSeconds = Math.ceil((requiredInterval - timeDiff) / 1000) + // uni.showToast({ + // title: `${t('order.deviceEjectWait')}${remainingSeconds}${t('order.deviceEjectRetry')}`, + // icon: 'none', + // duration: 2000 + // }) + // return + // } + + // // 更新最后点击时间 + // lastDeviceEjectTime.value = now + + //原有逻辑跳转到投诉反馈页面 + // uni.navigateTo({ + // url: '/subPackages/service/feedback/index?selectedType=0' + // }) + + /* + 现逻辑使用最新接口二次尝试弹出设备 + */ + try { + uni.showLoading({ + title: t('order.deviceEjectProcessing') + }) + + const res = await deviceRentByOrderNo(orderInfo.value.orderNo) + + uni.hideLoading() + + if (res.code == 200) { + uni.showToast({ + title: t('order.deviceEjectSuccess'), + icon: 'success', + duration: 2000 + }) + } else { + uni.showToast({ + title: res.msg || t('order.deviceEjectFailed'), + icon: 'none', + duration: 2000 + }) + } + } catch (error) { + uni.hideLoading() + console.error('二次弹出设备失败:', error) + uni.showToast({ + title: t('order.deviceEjectError'), + icon: 'none', + duration: 2000 + }) + } } // 处理"归还提醒" - 授权微信通知 diff --git a/subPackages/user/my/index.vue b/subPackages/user/my/index.vue index 413e703..a30dcdd 100644 --- a/subPackages/user/my/index.vue +++ b/subPackages/user/my/index.vue @@ -62,14 +62,14 @@ - + {{ $t('user.myCards') }} - + {{ $t('user.myCoupons') }}