Merge branch 'Branch_1' of https://git.u8t.cn/tangxinyue/alipay-emulator into Branch_1

This commit is contained in:
小李 2026-06-26 11:00:13 +08:00
commit 76a25d329b
13 changed files with 116 additions and 63 deletions

View File

@ -73,7 +73,7 @@
auto-blur :placeholder="showInfo.placeholder" v-model="content" @input="onInput"
@focus="onFocus" @blur="onBlur"></textarea> -->
<editor id="chat-layout-editor" class="input flex-1" :placeholder="showInfo.placeholder"
@input="onInput"></editor>
@input="onInput" style="word-break: break-all; word-wrap: break-word;"></editor>
<image v-if="phone == 'iphone' && !isSend" class="right-icon"
src="/static/image/phone-message/iphone/mic.png"></image>
<image v-if="phone == 'iphone' && isSend" class="right-send-icon"

View File

@ -29,7 +29,7 @@ export function createApp() {
app.config.globalProperties.$system = plus.os.name;
// #endif
app.config.globalProperties.$systemInfo = systemInfo
uni.setStorageSync('version', '1.0.6.sp13')
uni.setStorageSync('version', '1.0.6.sp15')
app.config.globalProperties.$version = uni.getStorageSync('version')
app.use(globalMethods);
return {

View File

@ -27,7 +27,7 @@
<!-- 转账状态信息 -->
<view class="success-info">
<view class="amount-box">
<view class="amount-box" @click="openEditPopup()">
<text class="symbol">¥</text>
<text class="amount alipay-font">{{ Number(transferData.amount).toFixed(2) }}</text>
</view>
@ -55,16 +55,16 @@
</view>
<view class="card-item-bg">
<view class="user-info">
<view class="avatar-box">
<view class="avatar-box" @click="openEditPopup()">
<image v-if="transferData.avatar" class="avatar" :src="transferData.avatar"
mode="aspectFill">
</image>
<image v-else class="avatar" src="/static/image/balance/transfer/add-img.png"
mode="aspectFill" @click="openEditPopup">
mode="aspectFill">
</image>
</view>
<view class="user-details">
<view class="name-box">
<view class="name-box" @click="openEditPopup()">
<text class="name">{{ transferData.recipient }}</text>
<text class="remark-link">备注</text>
</view>
@ -83,7 +83,7 @@
mode="aspectFill"></image>
</view>
<view class="promo-right">
<view class="promo-content">
<view class="promo-content" >
<text class="promo-title">{{ transferData.promoTitle }}</text>
<view class="promo-tags">
<text class="tag">{{ transferData.promoTag }}</text>

View File

@ -115,7 +115,7 @@
<image class="title-img" src="/static/image/index/qita.png"></image>
<view class="video-help-box">
<template v-for="item in otherList" :key="item.id">
<view class="video-help-item" :style="{ width: (windowWidth - 32) / 4 + 'px' }"
<view class="video-help-item" :style="{ width: (windowWidth - 36) / 4 + 'px' }"
@click="clickMenu(item)" v-if="isShowBankIdCard(item)">
<image class="video-help-img" :src="item.icon"></image>
<text class="video-help-title">{{ item.name }}</text>
@ -277,7 +277,7 @@ const otherList = [{
},
{
icon: "/static/image/index/qita/danliao.png",
name: "视频聊",
name: "视频聊",
path: "/pages/other/video-chat/video-chat"
},
{
@ -416,19 +416,19 @@ onShow(() => {
// #endif
})
function isShowBankIdCard(item) {
if (item.name != '银行卡' && item.name != '身份证' && item.name != '工资条' && item.name != '高考') {
return true
} else if (item.name == '银行卡' && data.bank) {
return true
} else if (item.name == '身份证' && data.idcard) {
return true
} else if (item.name == '工资条' && data.payslip) {
return true
} else if (item.name == '高考' && data.score) {
return true
} else {
return false
}
if (item.name != '银行卡' && item.name != '身份证' && item.name != '工资条' && item.name != '高考') {
return true
} else if (item.name == '银行卡' && data.bank) {
return true
} else if (item.name == '身份证' && data.idcard) {
return true
} else if (item.name == '工资条' && data.payslip) {
return true
} else if (item.name == '高考' && data.score) {
return true
} else {
return false
}
}
/**
* 获取用户数据(从服务器)

View File

@ -1,4 +1,6 @@
<template>
<view class="shadow-up"></view>
<view class="shadow-down"></view>
<!-- 水印 -->
<view v-if="$isVip()">
<watermark dark="light" source="uni_alipay_other_videoChat" />
@ -22,8 +24,8 @@
</view>
<view class="top-view">
<image style="height: 136rpx;width:136rpx;object-fit: cover;" :src="videoData.chat.other.avatar"
mode="aspectFill">
<image style="height: 136rpx;width:136rpx;object-fit: cover;border-radius: 12rpx;"
:src="videoData.chat.other.avatar" mode="aspectFill">
</image>
<text class="nickname">{{ videoData.chat.other.name }}</text>
<view class="dot-view">
@ -72,35 +74,27 @@
<!-- 麦克风 -->
<view class="control-item">
<image class="control-btn" :class="{ active: videoData.micOn }" @click="changeInfo('micOn')"
:src="videoData.micOn ? '/static/image/other/video-call/mic-on.png' : '/static/image/other/video-call/mic-off.png'">
:src="videoData.micOn ? '/static/image/other/video-call/mic-on.png' : '/static/image/other/video-call/unMic.png'">
</image>
<!-- <view class="" :class="{ active: videoData.micOn }" >
</view> -->
<text class="control-label">{{ videoData.micOn ? '麦克风已开' : '麦克风已关' }}</text>
</view>
<!-- 摄像头 -->
<view class="control-item">
<image class="control-btn" :class="{ active: videoData.cameraOn }" @click="changeInfo('cameraOn')"
:src="videoData.cameraOn ? '/static/image/other/video-call/camera-on.png' : '/static/image/other/video-call/camera-off.png'">
:src="videoData.cameraOn ? '/static/image/other/video-call/camera-on.png' : '/static/image/other/video-call/unCamera.png'">
</image>
<!-- <view class="control-btn" :class="{ active: videoData.cameraOn }" @click="changeInfo('cameraOn')">
</view> -->
<text class="control-label">{{ videoData.cameraOn ? '摄像头已开' : '摄像头已关' }}</text>
</view>
<!-- 背景模糊 -->
<view class="control-item">
<image class="control-btn" style="background: #00000080;"
src="/static/image/other/video-call/xvnibeijing.png">
<image class="control-btn" src="/static/image/other/video-call/xvnibeijing.png">
</image>
<text class="control-label">背景模糊</text>
</view>
<!-- 旋转摄像头 -->
<view class="control-item">
<image class="control-btn" style="background: #00000080;"
src="/static/image/other/video-call/xuanzhuan.png">
<image class="control-btn" src="/static/image/other/video-call/xuanzhuan.png">
</image>
<text class="control-label">翻转</text>
</view>
@ -112,8 +106,8 @@
src="/static/image/other/video-call/hangup.png">
</image>
<image class="hangup-btn" style="margin: 0; background: #00000080;"
src="/static/image/other/video-call/jieting.png" @click="answerCall">
<image class="hangup-btn" style="margin: 0;" src="/static/image/other/video-call/jieting.png"
@click="answerCall">
</image>
</view>
</view>
@ -224,7 +218,7 @@
<!-- 麦克风 -->
<view class="control-item">
<image class="control-btn" :class="{ active: videoData.micOn }" @click="changeInfo('micOn')"
:src="videoData.micOn ? '/static/image/other/video-call/mic-on.png' : '/static/image/other/video-call/mic-off.png'">
:src="videoData.micOn ? '/static/image/other/video-call/mic-on.png' : '/static/image/other/video-call/unMic.png'">
</image>
<!-- <view class="" :class="{ active: videoData.micOn }" >
@ -235,35 +229,27 @@
<!-- 扬声器 -->
<view class="control-item">
<image class="control-btn" :class="{ active: videoData.speakerOn }" @click="changeInfo('speakerOn')"
:src="videoData.speakerOn ? '/static/image/other/video-call/speaker-on.png' : '/static/image/other/video-call/speaker-off.png'">
:src="videoData.speakerOn ? '/static/image/other/video-call/speaker-on.png' : '/static/image/other/video-call/unSpeaker.png'">
</image>
<!-- <view class="" :class="{ active: videoData.speakerOn }" @click="changeInfo('speakerOn')">
</view> -->
<text class="control-label">{{ videoData.speakerOn ? '扬声器已开' : '扬声器已关' }}</text>
</view>
<!-- 摄像头 -->
<view class="control-item">
<image class="control-btn" :class="{ active: videoData.cameraOn }" @click="changeInfo('cameraOn')"
:src="videoData.cameraOn ? '/static/image/other/video-call/camera-on.png' : '/static/image/other/video-call/camera-off.png'">
:src="videoData.cameraOn ? '/static/image/other/video-call/camera-on.png' : '/static/image/other/video-call/unCamera.png'">
</image>
<!-- <view class="control-btn" :class="{ active: videoData.cameraOn }" @click="changeInfo('cameraOn')">
</view> -->
<text class="control-label">{{ videoData.cameraOn ? '摄像头已开' : '摄像头已关' }}</text>
</view>
</view>
<view class="control-buttons" style="margin-bottom: 0;">
<image class="hangup-btn" style="background: #00000080;"
src="/static/image/other/video-call/xvnibeijing.png">
<image class="hangup-btn" src="/static/image/other/video-call/xvnibeijing.png">
</image>
<!-- 挂断按钮 -->
<image class="hangup-btn" @click="hangup" src="/static/image/other/video-call/hangup.png"></image>
<image class="hangup-btn" style="background: #00000080;"
src="/static/image/other/video-call/xuanzhuan.png">
<image class="hangup-btn" src="/static/image/other/video-call/xuanzhuan.png">
</image>
</view>
</view>
@ -333,7 +319,7 @@
<view style="display: flex; align-items: center; justify-content: space-between;">
<text
style="font-size: 24rpx; color: #999; flex: 1; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; margin-right: 20rpx;">{{
videoData.chat.me.videoUrl }}</text>
getFileName(videoData.chat.me.videoUrl) }}</text>
<button size="mini" style="margin: 0; background: #187AFF; color: #fff;"
@click="uploadMedia('me', 'video')">上传</button>
</view>
@ -344,7 +330,7 @@
<view style="display: flex; align-items: center; justify-content: space-between;">
<text
style="font-size: 24rpx; color: #999; flex: 1; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; margin-right: 20rpx;">{{
videoData.chat.other.videoUrl }}</text>
getFileName(videoData.chat.other.videoUrl) }}</text>
<button size="mini" style="margin: 0; background: #187AFF; color: #fff;"
@click="uploadMedia('other', 'video')">上传</button>
</view>
@ -404,6 +390,13 @@ const getVideoUrl = (url) => {
return url
}
//
const getFileName = (path) => {
if (!path) return ''
//
return path.split('/').pop().split('\\').pop()
}
const buttonGroup = computed(() => [
{
name: "编辑时间",
@ -629,6 +622,12 @@ onShow(() => {
// #ifdef APP-PLUS
util.setAndroidSystemBarColor('#FFFFFF')
//
// if (plus.navigator.hideSystemNavigation) {
// plus.navigator.hideSystemNavigation()
// }
// 便
statusBarTimer = setTimeout(() => {
plus.navigator.setStatusBarStyle("light");
@ -636,6 +635,31 @@ onShow(() => {
// #endif
})
// #ifdef APP-PLUS
// const restoreSystemNavigation = () => {
// if (plus.os.name === 'Android') {
// try {
// const main = plus.android.runtimeMainActivity();
// if (main) {
// const window = main.getWindow();
// const decorView = window.getDecorView();
// const View = plus.android.importClass("android.view.View");
// const uiOptions = decorView.getSystemUiVisibility();
// // flag
// const newUiOptions = uiOptions & ~View.SYSTEM_UI_FLAG_HIDE_NAVIGATION & ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
// decorView.setSystemUiVisibility(newUiOptions);
// // pages.json
// const Color = plus.android.importClass("android.graphics.Color");
// window.setNavigationBarColor(Color.TRANSPARENT);
// }
// } catch (e) {
// console.log(':', e);
// }
// }
// }
// #endif
//
onHide(() => {
//
@ -656,6 +680,11 @@ onHide(() => {
stopTimer() //
// #ifdef APP-PLUS
// restoreSystemNavigation()
// #endif
console.log('🚪 页面隐藏,已清理定时器和状态')
})
@ -674,6 +703,10 @@ onUnmounted(() => {
data.dragState.longPressTimer = null
}
// #ifdef APP-PLUS
// restoreSystemNavigation()
// #endif
console.log('🧹 页面卸载,已清理所有定时器')
})
@ -1390,7 +1423,6 @@ const stopTimer = () => {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
background-color: #4a4a4a;
display: flex;
align-items: center;
justify-content: center;
@ -1604,6 +1636,7 @@ const stopTimer = () => {
width: 92rpx;
height: 92rpx;
position: absolute;
border-radius: 12rpx;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
@ -1673,4 +1706,26 @@ const stopTimer = () => {
height: 410rpx;
border-radius: 20rpx;
}
.shadow-up {
position: fixed;
top: 0;
left: 0;
width: 750rpx;
height: 240rpx;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 100%);
border-radius: 0rpx 0rpx 0rpx 0rpx;
z-index: 2;
}
.shadow-down {
position: fixed;
bottom: 0;
left: 0;
width: 750rpx;
height: 240rpx;
background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.5) 100%);
border-radius: 0rpx 0rpx 0rpx 0rpx;
z-index: 2;
}
</style>

View File

@ -1027,7 +1027,6 @@ const stopTimer = () => {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
background-color: #4a4a4a;
display: flex;
align-items: center;
justify-content: center;

View File

@ -9,7 +9,7 @@
</template>
</nav-bar>
<view class="content-box flex-column flex-cneter" @click="editPaymentInfo">
<image v-if="paymetInfo.userImg" class="user-img" :src="paymetInfo.userImg"></image>
<image v-if="paymetInfo.userImg" class="user-img" :src="paymetInfo.userImg" mode="aspectFill"></image>
<text class="product-name">{{ paymetInfo.productName }}</text>
<view class="money flex wx-font-medium" :style="{ 'margin-top': paymetInfo.userImg ? '78rpx' : '46rpx' }">
<image class="symbol" src="/static/image/other/payment-success/symbol-yuan.png"></image>{{
@ -140,13 +140,6 @@ const paymetInfo = ref({
});
onShow(() => {
const cachedInfo = storage.get('wx_payment_success_info');
if (cachedInfo) {
paymetInfo.value = cachedInfo;
} else {
paymetInfo.value = { productName: '王者荣耀', money: 168 };
}
// #ifdef APP-PLUS&&!APP-HARMONY
util.setAndroidSystemBarColor('#FFFFFF')
setTimeout(() => {
@ -156,6 +149,12 @@ onShow(() => {
})
onLoad(async () => {
const cachedInfo = storage.get('wx_payment_success_info');
if (cachedInfo) {
paymetInfo.value = cachedInfo;
} else {
paymetInfo.value = { productName: '王者荣耀', money: 168 };
}
//
proxy.$apiUserEvent('all', {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 871 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB