diff --git a/components/shopping/jingdong/shopping-card.vue b/components/shopping/jingdong/shopping-card.vue
index 113efae..1ff0168 100644
--- a/components/shopping/jingdong/shopping-card.vue
+++ b/components/shopping/jingdong/shopping-card.vue
@@ -97,7 +97,7 @@
(item.totalPrice ? Number(item.totalPrice).toFixed(2) : '0.00')
:
safeFormatPrice(item)
- }}
+ }}
共{{
@@ -131,7 +131,7 @@
本单可享 {{ item.promoHighlight
- }},快去支付吧~
+ }},快去支付吧~
当笔订单返现成功到账,点击领取
@@ -719,10 +719,11 @@ const getButtons = (shopType, status, item) => {
flex-wrap: wrap;
justify-content: flex-end;
position: relative;
+ z-index: 998;
.btn {
position: relative;
- z-index: 999;
+ // z-index: 998;
height: 56rpx;
line-height: 56rpx;
padding: 0 24rpx;
diff --git a/main.js b/main.js
index fddb2e3..5ba41b0 100644
--- a/main.js
+++ b/main.js
@@ -27,7 +27,7 @@ export function createApp() {
const systemInfo = uni.getStorageSync('systemInfo') || {}
app.config.globalProperties.$system = systemInfo.platform == 'ios' ? 'iOS' : 'Android'
app.config.globalProperties.$systemInfo = systemInfo
- uni.setStorageSync('version', '1.0.4.sp9')
+ uni.setStorageSync('version', '1.0.4.sp13')
app.config.globalProperties.$version = uni.getStorageSync('version')
app.use(globalMethods);
return {
diff --git a/pages.json b/pages.json
index d1da327..facdc31 100644
--- a/pages.json
+++ b/pages.json
@@ -80,6 +80,13 @@
"navigationBarTitleText": "外卖订单详情",
"navigationStyle": "custom"
}
+ },
+ {
+ "path": "taobao/list-index",
+ "style": {
+ "navigationBarTitleText": "淘宝购物外卖订单列表",
+ "navigationStyle": "custom"
+ }
}
]
},
@@ -289,10 +296,9 @@
}
},
{
- "path" : "certificate/graduate",
- "style" :
- {
- "navigationBarTitleText" : "证书",
+ "path": "certificate/graduate",
+ "style": {
+ "navigationBarTitleText": "证书",
"navigationStyle": "custom"
}
}
diff --git a/pages/bill/add-bill/add-bill.vue b/pages/bill/add-bill/add-bill.vue
index 9f44354..200ac09 100644
--- a/pages/bill/add-bill/add-bill.vue
+++ b/pages/bill/add-bill/add-bill.vue
@@ -27,8 +27,10 @@
{{ billData.name }}
-
-
+
+
+
@@ -39,8 +41,10 @@
{{ billData.money }}
-
+ :focus="data.focusState.money" v-model="billData.money"
+ @blur="data.focusState.money = false" />
+
@@ -69,7 +73,8 @@
+ :type="item.type" :focus="item.focus" v-model="item.value" @click.stop
+ @blur="item.focus = false" />
+ @blur="item.focus = false" @click.stop />
@@ -114,9 +119,11 @@
{{ billData.balance }}
-
+
-
+
@@ -175,6 +182,7 @@
+
@@ -190,8 +198,12 @@
billData.merchantOption.serviceDetailInfo.text }}
-
+ :focus="data.focusState.serviceDetail"
+ v-model="billData.merchantOption.serviceDetailInfo.text"
+ @blur="data.focusState.serviceDetail = false" />
+
+
-
+ :focus="data.focusState.recommendService"
+ v-model="billData.merchantOption.recommendServiceInfo.text"
+ @blur="data.focusState.recommendService = false" />
+
去看看
@@ -227,12 +242,34 @@
billData.merchantOption.serviceRecommendInfo.text }}
-
+ :focus="data.focusState.serviceRecommend"
+ v-model="billData.merchantOption.serviceRecommendInfo.text"
+ @blur="data.focusState.serviceRecommend = false" />
+
+
+
+
+
+
+ {{
+ billData.merchantOption.billAnalysisInfo.text }}
+
+
+
+
+
+
+
@@ -310,6 +347,41 @@ const timepopup = ref(null)
// 账单管理弹窗
const billManagementPopupRef = ref(null)
+// 输入框引用定义
+const nameInputRef = ref(null)
+const moneyInputRef = ref(null)
+const balanceInputRef = ref(null)
+const serviceDetailInputRef = ref(null)
+const recommendServiceInputRef = ref(null)
+const serviceRecommendInputRef = ref(null)
+const billAnalysisInputRef = ref(null)
+
+/**
+ * 通用聚焦函数
+ * @param {Object} inputRef 目标输入框的 ref
+ */
+const onFocusShortcut = (inputRef) => {
+ if (!inputRef) return
+ nextTick(() => {
+ // uni-app 中 input 组件聚焦通常需要通过设置 focus 属性,但直接调用 focus() 在部分平台更直接
+ // 我们主要通过 ref 操作或设置数据层状态实现
+ if (inputRef.value && typeof inputRef.value.focus === 'function') {
+ inputRef.value.focus()
+ }
+ })
+}
+
+/**
+ * 触发指定输入框聚焦(响应式变量方式)
+ * @param {String} key focusState 中的键名
+ */
+const triggerFocus = (key) => {
+ data.focusState[key] = false
+ nextTick(() => {
+ data.focusState[key] = true
+ })
+}
+
const {
addBill,
getBillList,
@@ -411,6 +483,13 @@ const switchOptions = [{
"isSwitch": true,
showTypeIds: [1, 2, 3],
key: 'isShowBarcode',
+},
+{
+ "id": 10,
+ "name": "账单分析",
+ "isSwitch": true,
+ showTypeIds: [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13],
+ key: 'isShowBillAnalysis',
}
]
@@ -484,6 +563,10 @@ const data = reactive({
note: {
isImage: false,
text: ''
+ },
+ isShowBillAnalysis: false,
+ billAnalysisInfo: {
+ text: '本笔登上月收入榜,看看分析吧'
}
}
},
@@ -495,7 +578,17 @@ const data = reactive({
tagInputValue: "",
showTagInput: false,
// switch选项
- switchOptions: switchOptions
+ switchOptions: switchOptions,
+ // 输入框聚焦状态
+ focusState: {
+ name: false,
+ money: false,
+ balance: false,
+ serviceDetail: false,
+ recommendService: false,
+ serviceRecommend: false,
+ billAnalysis: false
+ }
})
let {
@@ -967,7 +1060,7 @@ const uploadImage = () => {
*/
const saveAndDisplayImage = (file) => {
// #ifdef H5
- return Promise.resolve(file)
+ // return Promise.resolve(file)
// #endif
// #ifndef H5
@@ -1496,4 +1589,20 @@ page {
}
+
+.bill-analysis-box {
+ border-top: 0.5px solid #E4E4E4;
+ padding: 14rpx 22rpx;
+
+ .bill-analysis-text-box {
+ color: #B7971B;
+ font-size: 26rpx;
+ background-color: #FBF8F1;
+ height: 76rpx;
+ display: flex;
+ align-items: center;
+ border-radius: 16rpx;
+ padding: 0 24rpx;
+ }
+}
\ No newline at end of file
diff --git a/pages/bill/bill-detail/bill-detail.vue b/pages/bill/bill-detail/bill-detail.vue
index 05c6db2..6f15f68 100644
--- a/pages/bill/bill-detail/bill-detail.vue
+++ b/pages/bill/bill-detail/bill-detail.vue
@@ -172,8 +172,9 @@
账单管理
-
- 本笔登上月收入榜,看看分析吧
+
+ {{
+ billData.merchantOption.billAnalysisInfo.text || '本笔登上月收入榜,看看分析吧' }}
diff --git a/pages/bill/bill-list/bill-list.vue b/pages/bill/bill-list/bill-list.vue
index 1dcc103..6c2e44f 100644
--- a/pages/bill/bill-list/bill-list.vue
+++ b/pages/bill/bill-list/bill-list.vue
@@ -284,7 +284,7 @@ const getBillDataList = () => {
const createTimeItem = item.itemInfoList.find(info => info.key == 'createTime')
const createTime = createTimeItem ? createTimeItem.value : new Date()
- const date = new Date(createTime)
+ const date = dateUtil.parseSafe(createTime)
const year = date.getFullYear() + ''
const month = (date.getMonth() + 1) + ''
@@ -342,7 +342,7 @@ const getBillDataList = () => {
//每个月内的账单按时间倒序
groupList.forEach(group => {
- group.list.sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp))
+ group.list.sort((a, b) => dateUtil.parseSafe(b.timestamp) - dateUtil.parseSafe(a.timestamp))
})
data.billList = groupList
@@ -624,6 +624,13 @@ page {
overflow: hidden;
overflow-x: scroll;
+ &::-webkit-scrollbar {
+ display: none;
+ width: 0;
+ height: 0;
+ color: transparent;
+ }
+
.filter-item {
background-color: #ffffff;
color: var(--text-primary);
diff --git a/pages/common/recharge/index.vue b/pages/common/recharge/index.vue
index 290f58f..9a3e018 100644
--- a/pages/common/recharge/index.vue
+++ b/pages/common/recharge/index.vue
@@ -4,7 +4,7 @@
-
+
@@ -463,7 +463,8 @@ const data = reactive({
isProcessingClick: false,
banner: '/static/image/recharge/banner1.png',
isCombo: false,
- source: "uni_alipay_other"
+ source: "uni_alipay_other",
+ tradeCoupon: false
})
let {
@@ -493,6 +494,7 @@ onLoad(async (option) => {
}
const config = uni.getStorageSync('config').config
const themeConfig = config?.['client.uniapp.theme']
+ data.tradeCoupon = config?.['client.trade_coupon'] === true ? true : false
if (themeConfig?.enable) {
if (themeConfig?.theme == '0214') {
data.banner = '/static/image/recharge/214/bannar.png'
diff --git a/pages/shopping/index.vue b/pages/shopping/index.vue
index c8530d3..79806b2 100644
--- a/pages/shopping/index.vue
+++ b/pages/shopping/index.vue
@@ -16,10 +16,13 @@
\ No newline at end of file
diff --git a/static/image/shopping/jingdong/cainixihuan.png b/static/image/shopping/jingdong/cainixihuan.png
new file mode 100644
index 0000000..6e05085
Binary files /dev/null and b/static/image/shopping/jingdong/cainixihuan.png differ
diff --git a/static/image/shopping/jingdong/detail/kuaidiyuan.png b/static/image/shopping/jingdong/detail/kuaidiyuan.png
new file mode 100644
index 0000000..4b759e4
Binary files /dev/null and b/static/image/shopping/jingdong/detail/kuaidiyuan.png differ
diff --git a/static/image/shopping/jingdong/product/shopping/dyson_v12.png b/static/image/shopping/jingdong/product/shopping/dyson_v12.png
new file mode 100644
index 0000000..1531a87
Binary files /dev/null and b/static/image/shopping/jingdong/product/shopping/dyson_v12.png differ
diff --git a/static/image/shopping/jingdong/product/shopping/iphone.png b/static/image/shopping/jingdong/product/shopping/iphone.png
new file mode 100644
index 0000000..1cb39fe
Binary files /dev/null and b/static/image/shopping/jingdong/product/shopping/iphone.png differ
diff --git a/static/image/shopping/jingdong/product/shopping/lv.png b/static/image/shopping/jingdong/product/shopping/lv.png
new file mode 100644
index 0000000..aad81f6
Binary files /dev/null and b/static/image/shopping/jingdong/product/shopping/lv.png differ
diff --git a/static/image/shopping/jingdong/product/shopping/sony.png b/static/image/shopping/jingdong/product/shopping/sony.png
new file mode 100644
index 0000000..9c54530
Binary files /dev/null and b/static/image/shopping/jingdong/product/shopping/sony.png differ
diff --git a/static/image/shopping/jingdong/product/shopping/wuliangye.png b/static/image/shopping/jingdong/product/shopping/wuliangye.png
new file mode 100644
index 0000000..d40f815
Binary files /dev/null and b/static/image/shopping/jingdong/product/shopping/wuliangye.png differ
diff --git a/static/image/shopping/jingdong/product/shopping/xianka.png b/static/image/shopping/jingdong/product/shopping/xianka.png
new file mode 100644
index 0000000..a212131
Binary files /dev/null and b/static/image/shopping/jingdong/product/shopping/xianka.png differ
diff --git a/static/image/shopping/jingdong/product/waimai/haidilao.png b/static/image/shopping/jingdong/product/waimai/haidilao.png
new file mode 100644
index 0000000..3459fe3
Binary files /dev/null and b/static/image/shopping/jingdong/product/waimai/haidilao.png differ
diff --git a/static/image/shopping/jingdong/product/waimai/huajiaoji.png b/static/image/shopping/jingdong/product/waimai/huajiaoji.png
new file mode 100644
index 0000000..f7b9276
Binary files /dev/null and b/static/image/shopping/jingdong/product/waimai/huajiaoji.png differ
diff --git a/static/image/shopping/jingdong/product/waimai/kfc.png b/static/image/shopping/jingdong/product/waimai/kfc.png
new file mode 100644
index 0000000..40ac4b7
Binary files /dev/null and b/static/image/shopping/jingdong/product/waimai/kfc.png differ
diff --git a/static/image/shopping/jingdong/product/waimai/shala.png b/static/image/shopping/jingdong/product/waimai/shala.png
new file mode 100644
index 0000000..6b32fd8
Binary files /dev/null and b/static/image/shopping/jingdong/product/waimai/shala.png differ
diff --git a/static/image/shopping/jingdong/product/waimai/xicha1.png b/static/image/shopping/jingdong/product/waimai/xicha1.png
new file mode 100644
index 0000000..4969705
Binary files /dev/null and b/static/image/shopping/jingdong/product/waimai/xicha1.png differ
diff --git a/static/image/shopping/jingdong/product/waimai/xingbake.png b/static/image/shopping/jingdong/product/waimai/xingbake.png
new file mode 100644
index 0000000..b5bbcd0
Binary files /dev/null and b/static/image/shopping/jingdong/product/waimai/xingbake.png differ
diff --git a/static/image/shopping/taobao/back.png b/static/image/shopping/taobao/back.png
new file mode 100644
index 0000000..f1aa73e
Binary files /dev/null and b/static/image/shopping/taobao/back.png differ
diff --git a/static/image/shopping/taobao/guanli.png b/static/image/shopping/taobao/guanli.png
new file mode 100644
index 0000000..527039f
Binary files /dev/null and b/static/image/shopping/taobao/guanli.png differ
diff --git a/static/image/shopping/taobao/shaixuan.png b/static/image/shopping/taobao/shaixuan.png
new file mode 100644
index 0000000..7f453ac
Binary files /dev/null and b/static/image/shopping/taobao/shaixuan.png differ
diff --git a/static/image/shopping/taobao/xiaoxi.png b/static/image/shopping/taobao/xiaoxi.png
new file mode 100644
index 0000000..be4de11
Binary files /dev/null and b/static/image/shopping/taobao/xiaoxi.png differ
diff --git a/utils/common.js b/utils/common.js
index b91db10..7c94ad0 100644
--- a/utils/common.js
+++ b/utils/common.js
@@ -4,6 +4,22 @@
* 日期处理相关方法
*/
export const dateUtil = {
+ /**
+ * 安全解析日期,兼容 iOS
+ * @param {Date|string|number} date
+ * @returns {Date}
+ */
+ parseSafe(date) {
+ if (!date) return new Date();
+ if (date instanceof Date) return date;
+ if (typeof date === 'string') {
+ // 兼容 iOS 的 YYYY-MM-DD 解析,并处理可能的空格/T问题
+ const normalizedDate = date.replace(/-/g, '/');
+ return new Date(normalizedDate);
+ }
+ return new Date(date);
+ },
+
/**
* 格式化日期
* @param {Date|string|number} date - 日期对象或时间戳
@@ -13,9 +29,7 @@ export const dateUtil = {
format(date, format = 'YYYY-MM-DD HH:mm:ss') {
if (!date) return '';
- if (typeof date === 'string' || typeof date === 'number') {
- date = new Date(date);
- }
+ date = this.parseSafe(date);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
@@ -50,9 +64,7 @@ export const dateUtil = {
relative(date) {
if (!date) return '';
- if (typeof date === 'string' || typeof date === 'number') {
- date = new Date(date);
- }
+ date = this.parseSafe(date);
const now = new Date();
const diff = now - date;
@@ -80,9 +92,7 @@ export const dateUtil = {
smart(date) {
if (!date) return '';
- if (typeof date === 'string' || typeof date === 'number') {
- date = new Date(date);
- }
+ date = this.parseSafe(date);
const now = new Date();
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
@@ -120,13 +130,7 @@ export const dateUtil = {
formatMessageTime(date, hideCurrentYear = false, format = 'YYYY/M/D') {
if (!date) return '';
- if (typeof date === 'string' || typeof date === 'number') {
- // 兼容 iOS 的 YYYY-MM-DD 解析
- if (typeof date === 'string') {
- date = date.replace(/-/g, '/');
- }
- date = new Date(date);
- }
+ date = this.parseSafe(date);
const now = new Date();
// 将时分秒抹零,只取日期部分进行比对
@@ -464,7 +468,7 @@ export const util = {
* @param {string} backgroundColor - 颜色值
* @returns {void}
*/
- setAndroidSystemBarColor(backgroundColor, frontColor = "#000000") {
+ setAndroidSystemBarColor(backgroundColor) {
// 使用同步方式判断或直接通过编译宏/plus判断
const isAndroid = uni.getSystemInfoSync().platform === 'android';
if (isAndroid) {
@@ -555,14 +559,14 @@ export const randomUtil = {
randomTime(startTime, endTime, format = 'YYYY-MM-DD HH:mm:ss') {
let end;
if (endTime) {
- end = new Date(endTime).getTime();
+ end = dateUtil.parseSafe(endTime).getTime();
} else {
end = Date.now();
}
let start;
if (startTime) {
- start = new Date(startTime).getTime();
+ start = dateUtil.parseSafe(startTime).getTime();
} else {
// 默认为结束时间往前推3个月
const date = new Date(end);