From 4b97902e914455daf853a4834b039b4fe1927532 Mon Sep 17 00:00:00 2001
From: tangxinyue <524779910@qq.com>
Date: Tue, 13 Jan 2026 16:59:11 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B4=A6=E5=8D=95=E8=AF=A6=E6=83=85=E9=A1=B5?=
=?UTF-8?q?=E5=B1=95=E7=A4=BA=EF=BC=8C=E5=AE=8C=E6=88=90=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=92=8C=E5=A4=87=E6=B3=A8=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
App.vue | 6 +-
common/color.css | 33 +
common/main.css | 55 +-
common/specify-style.less | 8 +-
components/balance-list/balance-list.vue | 99 ++-
components/nav-bar/nav-bar.vue | 3 +
manifest.json | 9 +-
pages.json | 17 +-
.../fast-entrance-management.vue | 271 +++++++
pages/balance/index.vue | 338 ++++++--
pages/bill/add-bill/add-bill.vue | 750 +++++++++++++++---
pages/bill/bill-detail/bill-detail.vue | 730 +++++++++++++++++
pages/bill/bill-list/bill-list.vue | 358 +++++----
static/font/WeChatSansStd-Light.otf | Bin 0 -> 11136 bytes
static/image/balance/menu-icon/beiyongyue.png | Bin 0 -> 1895 bytes
static/image/balance/menu-icon/dadada.png | Bin 0 -> 1958 bytes
.../balance/menu-icon/dingshichongzhi.png | Bin 0 -> 1749 bytes
static/image/balance/menu-icon/hongbao.png | Bin 0 -> 1305 bytes
.../image/balance/menu-icon/linghuaqian.png | Bin 0 -> 2074 bytes
static/image/balance/menu-icon/mianfeiedu.png | Bin 0 -> 2233 bytes
static/image/balance/menu-icon/qinqingka.png | Bin 2207 -> 1939 bytes
static/image/balance/menu-icon/xiaohebao.png | Bin 2386 -> 2597 bytes
.../balance/menu-icon/xinyongkahuankuan.png | Bin 0 -> 788 bytes
static/image/balance/menu-icon/yinhangka.png | Bin 881 -> 788 bytes
.../image/balance/menu-icon/zhuanyongjin.png | Bin 1483 -> 1266 bytes
.../balance/menu-icon/zhuanyongzijin.png | Bin 0 -> 2101 bytes
static/image/balance/menu-icon/zhuanzhang.png | Bin 2152 -> 1842 bytes
static/image/bill/add-bill/payment-reward.png | Bin 0 -> 2346 bytes
.../bill/bill-detail/alipay-merchant-img.png | Bin 0 -> 4142 bytes
.../bill/bill-detail/bill-remark-img.png | Bin 0 -> 1009 bytes
static/image/common/down-grey.png | Bin 0 -> 287 bytes
static/image/common/hot-icon/default.png | Bin 0 -> 2209 bytes
static/image/common/hot-icon/dianfei.png | Bin 0 -> 2332 bytes
static/image/common/hot-icon/huabei.png | Bin 0 -> 3591 bytes
static/image/common/hot-icon/ranqifei.png | Bin 0 -> 2417 bytes
static/image/common/hot-icon/shangpin.png | Bin 0 -> 2471 bytes
static/image/common/hot-icon/shuifei.png | Bin 0 -> 2501 bytes
static/image/common/hot-icon/tuikuan.png | Bin 0 -> 2747 bytes
static/image/common/hot-icon/yuebao.png | Bin 0 -> 3343 bytes
static/image/common/right-blue.png | Bin 0 -> 286 bytes
.../add-bill => static/json}/add-bill.json | 298 ++-----
static/json/initial.json | 69 ++
store/index.js | 91 +--
utils/common.js | 9 +
utils/storage.js | 27 -
45 files changed, 2431 insertions(+), 740 deletions(-)
create mode 100644 common/color.css
create mode 100644 pages/balance/fast-entrance-management/fast-entrance-management.vue
create mode 100644 pages/bill/bill-detail/bill-detail.vue
create mode 100644 static/font/WeChatSansStd-Light.otf
create mode 100644 static/image/balance/menu-icon/beiyongyue.png
create mode 100644 static/image/balance/menu-icon/dadada.png
create mode 100644 static/image/balance/menu-icon/dingshichongzhi.png
create mode 100644 static/image/balance/menu-icon/hongbao.png
create mode 100644 static/image/balance/menu-icon/linghuaqian.png
create mode 100644 static/image/balance/menu-icon/mianfeiedu.png
create mode 100644 static/image/balance/menu-icon/xinyongkahuankuan.png
create mode 100644 static/image/balance/menu-icon/zhuanyongzijin.png
create mode 100644 static/image/bill/add-bill/payment-reward.png
create mode 100644 static/image/bill/bill-detail/alipay-merchant-img.png
create mode 100644 static/image/bill/bill-detail/bill-remark-img.png
create mode 100644 static/image/common/down-grey.png
create mode 100644 static/image/common/hot-icon/default.png
create mode 100644 static/image/common/hot-icon/dianfei.png
create mode 100644 static/image/common/hot-icon/huabei.png
create mode 100644 static/image/common/hot-icon/ranqifei.png
create mode 100644 static/image/common/hot-icon/shangpin.png
create mode 100644 static/image/common/hot-icon/shuifei.png
create mode 100644 static/image/common/hot-icon/tuikuan.png
create mode 100644 static/image/common/hot-icon/yuebao.png
create mode 100644 static/image/common/right-blue.png
rename {pages/bill/add-bill => static/json}/add-bill.json (77%)
create mode 100644 static/json/initial.json
diff --git a/App.vue b/App.vue
index b031520..8eb6334 100644
--- a/App.vue
+++ b/App.vue
@@ -12,6 +12,6 @@ export default {
}
-
+
\ No newline at end of file
diff --git a/common/color.css b/common/color.css
new file mode 100644
index 0000000..cd03891
--- /dev/null
+++ b/common/color.css
@@ -0,0 +1,33 @@
+/* 常用颜色变量 */
+:root {
+ --text-color: #1a1a1a;
+ --primary-color: #007aff;
+ --success-color: #4cd964;
+ --warning-color: #ff9500;
+ --error-color: #ff3b30;
+ --text-primary: #333;
+ --text-secondary: #969696;
+ --text-tertiary: #999;
+ --bg-primary: #ffffff;
+ --bg-secondary: #f5f5f5;
+ --border-color: #D8D8D8;
+ --page-bg-color: #f0f3f8;
+ --footer-text-color: #CBCED3;
+}
+
+/* 重置样式 */
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+/* 基础样式 */
+page {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ "Helvetica Neue", Arial, sans-serif;
+ font-size: 14px;
+ line-height: 1.5;
+ color: var(--text-color);
+ background-color: var(--page-bg-color);
+}
\ No newline at end of file
diff --git a/common/main.css b/common/main.css
index 955bdb1..dc7a312 100644
--- a/common/main.css
+++ b/common/main.css
@@ -1,22 +1,5 @@
/* 公共CSS文件 */
-
-/* 重置样式 */
-* {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- /* color: var(--text-color); */
-}
-
-/* 基础样式 */
-body {
- /* font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
- "Helvetica Neue", Arial, sans-serif; */
- font-size: 14px;
- line-height: 1.5;
- color: var(--text-color);
- background-color: var(--page-bg-color);
-}
+@import "./color.css";
.w100 {
width: 100%
@@ -26,23 +9,6 @@ body {
height: 100%;
}
-/* 常用颜色变量 */
-:root {
- --text-color: #1a1a1a;
- --primary-color: #007aff;
- --success-color: #4cd964;
- --warning-color: #ff9500;
- --error-color: #ff3b30;
- --text-primary: #333;
- --text-secondary: #969696;
- --text-tertiary: #999;
- --bg-primary: #ffffff;
- --bg-secondary: #f5f5f5;
- --border-color: #D8D8D8;
- --page-bg-color: #f0f3f8;
- --footer-text-color: #CBCED3;
-}
-
/* 文本样式 */
.text-center {
text-align: center;
@@ -371,6 +337,16 @@ body {
overflow: hidden;
}
+.over-scroll {
+ overflow: scroll;
+
+ &::-webkit-scrollbar {
+ display: none;
+ width: 0;
+ height: 0;
+ }
+}
+
/* 文本截断 */
.text-ellipsis {
overflow: hidden;
@@ -400,6 +376,11 @@ body {
src: url("/static/font/WeChatSansStd-Medium.otf");
}
+@font-face {
+ font-family: "wxNumberLight";
+ src: url("/static/font/WeChatSansStd-Light.otf");
+}
+
.alipay-font {
font-family: "alipayNumber";
}
@@ -410,4 +391,8 @@ body {
.wx-font-medium {
font-family: "wxNumberMedium";
+}
+
+.wx-font-light {
+ font-family: "wxNumberLight";
}
\ No newline at end of file
diff --git a/common/specify-style.less b/common/specify-style.less
index 2dcb29f..cd8ebf6 100644
--- a/common/specify-style.less
+++ b/common/specify-style.less
@@ -19,12 +19,18 @@
display: flex;
align-items: center;
justify-content: space-between;
- margin-bottom: 50rpx;
+ margin-bottom: 32rpx;
.title {
font-size: 32rpx;
font-weight: 500;
color: var(--font-color);
+
+ .text {
+ color: #AAAAAA;
+ font-size: 24rpx;
+ font-weight: 400;
+ }
}
.close-image {
diff --git a/components/balance-list/balance-list.vue b/components/balance-list/balance-list.vue
index fe410ec..26bb53d 100644
--- a/components/balance-list/balance-list.vue
+++ b/components/balance-list/balance-list.vue
@@ -2,30 +2,27 @@
+ :class="{ 'flex-align-center': isBalance }" @click="onClick(item)"
+ @touchstart="handleTouchStart($event, item)" @touchmove="handleTouchMove" @touchend="handleTouchEnd">
-
- {{ item.name }}
+
+ {{ item.name }}
-
- {{ item.classification }}
-
-
- {{ item.time }}
-
-
+ {{ item.classification }}
+ {{ item.time }}
+ :class="item.isAdd ? (isBalance ? 'add-color' : 'red-add-color') : 'minus-color', { 'line-height-51rpx': isBalance }">
{{ item.isAdd ? '+' : '-' }}{{ Number(item.money).toFixed(2) }}
已全额退款
- 余额 {{
- Number(item.balance).toFixed(2)
- }}元
+ 余额 {{
+ Number(item.balance).toFixed(2)
+ }}元
@@ -53,15 +50,59 @@ const props = defineProps({
})
// 定义事件
-const emit = defineEmits(['onBill'])
+const emit = defineEmits(['onBill', 'longPress'])
const data = reactive({})
+let timer = null
+let isLongPressTriggered = false
+let touchStartX = 0
+let touchStartY = 0
+
+
+const handleTouchStart = (e, item) => {
+ isLongPressTriggered = false
+ if (e.touches && e.touches.length > 0) {
+ touchStartX = e.touches[0].clientX
+ touchStartY = e.touches[0].clientY
+ }
+
+ timer = setTimeout(() => {
+ isLongPressTriggered = true
+ emit('longPress', {
+ event: e,
+ item
+ })
+ }, 1500)
+}
+
+const handleTouchMove = (e) => {
+ if (e.touches && e.touches.length > 0) {
+ const moveX = e.touches[0].clientX
+ const moveY = e.touches[0].clientY
+ // If moved significantly, cancel long press
+ if (Math.abs(moveX - touchStartX) > 10 || Math.abs(moveY - touchStartY) > 10) {
+ clearTimeout(timer)
+ }
+ } else {
+ clearTimeout(timer)
+ }
+}
+
+const handleTouchEnd = () => {
+ clearTimeout(timer)
+}
+
+const onClick = (item) => {
+ if (isLongPressTriggered) return
+ emit('onBill', item)
+}
+
onMounted(() => { })
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 76f4c8f..b3f860e 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,6 +1,6 @@
{
"name" : "alipay-emulator",
- "appid" : "__UNI__B05EDBF",
+ "appid" : "__UNI__D535736",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
@@ -17,7 +17,9 @@
"delay" : 0
},
/* 模块配置 */
- "modules" : {},
+ "modules" : {
+ "Camera" : {}
+ },
/* 应用发布信息 */
"distribute" : {
/* android打包配置 */
@@ -46,7 +48,8 @@
},
/* SDK配置 */
"sdkConfigs" : {}
- }
+ },
+ "nvueLaunchMode" : ""
},
/* 快应用特有相关 */
"quickapp" : {},
diff --git a/pages.json b/pages.json
index e6506d2..0e6bfeb 100644
--- a/pages.json
+++ b/pages.json
@@ -5,7 +5,8 @@
"path": "pages/balance/index",
"style": {
"navigationBarTitleText": "余额页面",
- "navigationStyle": "custom"
+ "navigationStyle": "custom",
+ "navigationBarTextStyle": "white"
}
},
{
@@ -35,6 +36,20 @@
"navigationBarTitleText": "热门图标",
"navigationStyle": "custom"
}
+ },
+ {
+ "path": "pages/balance/fast-entrance-management/fast-entrance-management",
+ "style": {
+ "navigationBarTitleText": "快速入口页面",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/bill/bill-detail/bill-detail",
+ "style": {
+ "navigationBarTitleText": "账单详情页",
+ "navigationStyle": "custom"
+ }
}
],
"globalStyle": {
diff --git a/pages/balance/fast-entrance-management/fast-entrance-management.vue b/pages/balance/fast-entrance-management/fast-entrance-management.vue
new file mode 100644
index 0000000..ddff63b
--- /dev/null
+++ b/pages/balance/fast-entrance-management/fast-entrance-management.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ draggingItem.name }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/balance/index.vue b/pages/balance/index.vue
index 361acf2..0acafea 100644
--- a/pages/balance/index.vue
+++ b/pages/balance/index.vue
@@ -30,7 +30,7 @@
可用余额(元)
-
+
{{ Number(balance).toFixed(2) }}
@@ -48,9 +48,8 @@
-
+
@@ -74,6 +73,15 @@
+
+
+
@@ -87,6 +95,7 @@
-
+@import '/common/main.css';
-
\ No newline at end of file
diff --git a/pages/bill/add-bill/add-bill.vue b/pages/bill/add-bill/add-bill.vue
index b318949..f3f1571 100644
--- a/pages/bill/add-bill/add-bill.vue
+++ b/pages/bill/add-bill/add-bill.vue
@@ -3,7 +3,7 @@
-
+
{{ item.type }}
@@ -12,7 +12,7 @@
-
+
@@ -52,26 +52,29 @@
-
+
{{ item.label }}
{{ item.value
+ :class="{ visibility: item.type == 'time' || item.type == 'select' || (data.type == 1 && item.key == 'payMethod') }">{{
+ item.value
}}
-
-
-
+
@@ -80,49 +83,110 @@
-
-
+
+
+
+
+ 余额
+
+
+
+ {{ billData.balance }}
+
+
+
+
+
-
+
{{ option.name }}
onSwitchChange(e, option)" />
+
+
+
+ {{ billData.merchantOption[option.key] }}
+
+
+
+
+
+
+
+ {{ index === 2 ? (tag.substring(0, 1) + (tag.length > 1 ? '...' : '')) :
+ tag }}
+
+
+
+ 添加
+
+
+
+
+
+
+
+
+ 添加
+
+
+
+
+
+
-
+ v-if="option.key == 'serviceDetail' && billData.merchantOption.serviceDetail && option.showTypeIds.includes(billData.selectId)">
+
{{
- billData.merchantOption.serverDetailInfo.text }}
+ billData.merchantOption.serviceDetailInfo.text }}
+ v-model="billData.merchantOption.serviceDetailInfo.text" />
+ v-if="option.key == 'recommendService' && billData.merchantOption.recommendService && option.showTypeIds.includes(billData.selectId)">
@@ -139,7 +203,7 @@
+ v-if="option.key == 'serviceRecommend' && billData.merchantOption.serviceRecommend && option.showTypeIds.includes(billData.selectId)">
@@ -159,15 +223,17 @@
-
-
-
-
- {{ option.name }}
+
+
+
+
+
+ {{ option.name }}
+
-
+
@@ -186,34 +252,88 @@
-
-
-
-
- 账单分类
-
-
-
-
-
-
-
-
- {{ item.name }}
+
+
+
+
+
+ 账单分类
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+ 确定
+
-
- 确定
+
+
+
+
+ 标签
+ (最多10个标签)
+
+
+
+
+
+
+
+ {{ tag }}
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ 备注
+
+
+
+
+
+
+
+ 备注图片
+
+ data.tempNote.isImage = e.detail.value">
+
+
+
+
+
+ 确定
+
-
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/bill/bill-list/bill-list.vue b/pages/bill/bill-list/bill-list.vue
index 986ec7d..e94597c 100644
--- a/pages/bill/bill-list/bill-list.vue
+++ b/pages/bill/bill-list/bill-list.vue
@@ -88,12 +88,20 @@
-
+
+
+
+
+
+