Compare commits

..

No commits in common. "73b2b3cf25ee488fffb3bbad07ea50bb4f6e85f9" and "37cf237ff126503273fc1fb3a79ea3485000a727" have entirely different histories.

7 changed files with 26 additions and 241 deletions

View File

@ -213,7 +213,7 @@
border-radius: 21px 21px 21px 21px !important; border-radius: 21px 21px 21px 21px !important;
.left{ .left{
font-size: 16px !important; font-size: 16px !important;
color: #A9A9A9 !important; color: #AAAAAA !important;
} }
image{ image{
width: 16px; width: 16px;

View File

@ -323,8 +323,7 @@
}); });
const data = reactive({ const data = reactive({
startDate: '', startDate: '',
timeIndex: -1, timeIndex: -1
isWj:false
}) })
const emit = defineEmits(['update:list']); const emit = defineEmits(['update:list']);
@ -698,14 +697,6 @@
]); ]);
const goDetail = (value,index) => { const goDetail = (value,index) => {
let listArr = uni.getStorageSync('callLog')
if(data.isWj){
listArr.forEach((item,indexs)=>{
if(JSON.stringify(item)==JSON.stringify(value)){
index=indexs
}
})
}
setCallDetail(value) setCallDetail(value)
uni.navigateTo({ uni.navigateTo({
url:'/pages/call-log/detail/callDetail?type='+props.type+'&index='+index url:'/pages/call-log/detail/callDetail?type='+props.type+'&index='+index
@ -733,9 +724,7 @@
uni.$on('setActive', (status) => { uni.$on('setActive', (status) => {
let listArr2 = uni.getStorageSync('callLog') || list.value let listArr2 = uni.getStorageSync('callLog') || list.value
data.isWj=false
if (!status) { if (!status) {
data.isWj=true
listArr2 = listArr2.filter(item => item.status == 3) listArr2 = listArr2.filter(item => item.status == 3)
} }
if (Array.isArray(listArr2) && listArr2.length > 0) { if (Array.isArray(listArr2) && listArr2.length > 0) {
@ -1854,7 +1843,7 @@
align-items: center; align-items: center;
color: white; color: white;
font-size: 40rpx; font-size: 40rpx;
// font-weight: bold; font-weight: bold;
background: linear-gradient(180deg, #A1A8B8 0%, #878B94 100%); background: linear-gradient(180deg, #A1A8B8 0%, #878B94 100%);
} }

View File

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

View File

@ -8,18 +8,11 @@
</liu-drag-button> </liu-drag-button>
</view> </view>
<view class="ios" v-if="data.type=='ios'"> <view class="ios" v-if="data.type=='ios'">
<!-- <view :style="{height:(data.info.avatar?519:325)+'px' }"> <view class="rectangle_22292"
:style="{background:(data.info.avatar?`rgba(0,0,0,0)`:'linear-gradient(180deg, #bdbec3 0%, #a0a2af 100%)')}">
</view> -->
<view class="rectangle_22292"
:style="{background:(data.info.avatar?`rgba(0,0,0,0)`:'linear-gradient(180deg, #bdbec3 0%, #a0a2af 100%)')
}">
<!-- style="position: fixed;left:0;top:0;overflow: hidden;" -->
<!-- , height:data.headerHeight+'px' -->
<view v-if="data.info.avatar" style="height:400rpx;"></view> <view v-if="data.info.avatar" style="height:400rpx;"></view>
<image v-if="data.info.avatar" :src="data.info.avatar" mode="aspectFill" <image v-if="data.info.avatar" :src="data.info.avatar" mode="aspectFill" :style="{height:1400+'rpx'}"
style="width:100%;position: absolute;bottom: 0;left: 0;z-index:0;"></image> style="width:100%;position: absolute;top: 0;left: 0;z-index:0;"></image>
<!-- :style="{height:data.headerHeight+'px'}" -->
<view class="status" :style="{height:$systemInfo.statusBarHeight+'px'}"> </view> <view class="status" :style="{height:$systemInfo.statusBarHeight+'px'}"> </view>
<view class="flexcontainer" @click="openEditModalDetail()"> <view class="flexcontainer" @click="openEditModalDetail()">
<image @click.stop="back()" class="group_48089" src="/static/image/call/detail/iosBack.png" :style="{position: 'fixed', <image @click.stop="back()" class="group_48089" src="/static/image/call/detail/iosBack.png" :style="{position: 'fixed',
@ -28,16 +21,12 @@
:style="{opacity:data.info.avatar?0:1}"> :style="{opacity:data.info.avatar?0:1}">
{{data.info.name.substring(0,1)}} {{data.info.name.substring(0,1)}}
</view> </view>
<!-- ,transform: `scale(${data.avatarScale}) translateY(${data.contentY}px)` -->
<image v-else class="group_47577" :src="data.info.avatar||'/static/image/call/iosAvatar.png'" <image v-else class="group_47577" :src="data.info.avatar||'/static/image/call/iosAvatar.png'"
:style="{opacity:data.info.avatar?0:1}" /> :style="{opacity:data.info.avatar?0:1}" />
<!-- ,transform: `scale(${data.avatarScale}) translateY(${data.contentY}px)` -->
</view> </view>
<text class="text_1" v-if="!data.info.avatar" :style="{opacity:data.scale}"> {{data.info.address}} </text> <text class="text_1" :style="{opacity:data.info.avatar?0:1}"> {{data.info.address}} </text>
<text class="text_2" >{{data.info.name||formatString(data.info.phone)}} </text> <text class="text_2">{{data.info.name||formatString(data.info.phone)}} </text>
<!-- :style="{transform: `scale(${data.avatarScale}) translateY(${data.contentY}px)`}" --> <view class="flexcontainer_1">
<view class="flexcontainer_1" >
<!-- :style="{transform: `translateY(${data.contentY}px)`}" -->
<view class="group_48123" :style="{'background-color': `rgba(128,131,146,${data.info.avatar?0.5:1})`}"> <view class="group_48123" :style="{'background-color': `rgba(128,131,146,${data.info.avatar?0.5:1})`}">
<image class="group_13792" src="/static/image/call/detail/iosIcon1.png" /> <image class="group_13792" src="/static/image/call/detail/iosIcon1.png" />
<text class="text_3"> 信息 </text> <text class="text_3"> 信息 </text>
@ -63,7 +52,7 @@
<template v-for="(item,index) in data.list" :key="index"> <template v-for="(item,index) in data.list" :key="index">
<text class="text_8"> {{formatTime(item.start_time)[1]}} <text class="text_8"> {{formatTime(item.start_time)[1]}}
{{['去电','去电','去电','未接来电','来电','来电'][item.status]}} </text> {{['去电','去电','去电','未接来电','来电','来电'][item.status]}} </text>
<text class="text_9" v-if="item.start_number||Number(item.start_number)"> {{item.start_number}}秒钟 </text> <text class="text_9" v-if="item.start_number"> {{item.start_number}}秒钟 </text>
</template> </template>
<br /> <br />
</view> </view>
@ -110,7 +99,7 @@
</view> </view>
<tabbar type2='ios'/> <tabbar type2='ios'/>
</view> </view>
<view class="xiaomi" v-else-if="data.type=='xiaomi'" style="padding-bottom: 30px;"> <view class="xiaomi" v-else-if="data.type=='xiaomi'">
<view class="container" > <view class="container" >
<view class="status" :style="{height:$systemInfo.statusBarHeight+'px'}"> </view> <view class="status" :style="{height:$systemInfo.statusBarHeight+'px'}"> </view>
<view class="header" @click="openEditModalDetail()"> <view class="header" @click="openEditModalDetail()">
@ -303,7 +292,7 @@
<text class="text_7">{{formatChatTime(item.start_time)}}</text> <text class="text_7">{{formatChatTime(item.start_time)}}</text>
</view> </view>
</view> </view>
<view class="huawei" v-else style="padding-bottom: 30px;"> <view class="huawei" v-else>
<view class="status" :style="{width:'100%',height:$systemInfo.statusBarHeight+70+'px'}"> </view> <view class="status" :style="{width:'100%',height:$systemInfo.statusBarHeight+70+'px'}"> </view>
<view class="flexcontainer" :style="{position: 'fixed', <view class="flexcontainer" :style="{position: 'fixed',
'top': '0', left: '0','padding-top':$systemInfo.statusBarHeight+'px'}" @click="openEditModalDetail()"> 'top': '0', left: '0','padding-top':$systemInfo.statusBarHeight+'px'}" @click="openEditModalDetail()">
@ -719,10 +708,6 @@
startDate: '' startDate: ''
}) })
const data = reactive({ const data = reactive({
scale:1,
avatarScale:1,
contentY:0,
headerHeight:0,
type: 'ios', type: 'ios',
index: 0, index: 0,
list: [{ list: [{
@ -759,9 +744,6 @@
status: 4, status: 4,
time: "2026-03-05 18:30:00", time: "2026-03-05 18:30:00",
yys: "", yys: "",
},
header:{
} }
}) })
onLoad((option) => { onLoad((option) => {
@ -772,7 +754,6 @@
data.info = listArr[data.index] data.info = listArr[data.index]
data.list = data.info.list || data.list data.list = data.info.list || data.list
console.log(data.info) console.log(data.info)
data.headerHeight=data.info.avatar?519:325
}) })
onReady(() => { onReady(() => {
@ -780,20 +761,10 @@
onShow(() => { onShow(() => {
}) })
onPageScroll((e) => { onPageScroll((e) => {
if(data.type=='ios'){
const y = e.scrollTop;
const max = 200; })
let p = Math.min(y / max, 1);
data.contentY = -p * 100;
data.avatarScale = 1 - p * 0.5; // 1 0.6
data.scale = 1 - p * 1; // 1 0.6
console.log(data.avatarScale )
data.headerHeight=Math.max(206,(data.info.avatar?519:325) - y);
}else{
}
})
onReachBottom(() => { onReachBottom(() => {
}) })
@ -1507,9 +1478,7 @@
} }
.flexcontainer_1 { .flexcontainer_1 {
// position: relative; position: relative;
position: sticky;
top: 0;
display: flex; display: flex;
width: 720rpx; width: 720rpx;
height: 112rpx; height: 112rpx;
@ -2524,7 +2493,7 @@
/* 直线 393 */ /* 直线 393 */
.div_393_2 { .div_393_2 {
width: 532rpx; width: 572rpx;
height: 0; height: 0;
position: relative; position: relative;
border: 0.5rpx solid #dfdfdf; border: 0.5rpx solid #dfdfdf;

View File

@ -1,177 +0,0 @@
<template>
<view class="page">
<!-- 顶部折叠头部 -->
<view
class="header"
:style="{ height: headerHeight + 'px' }"
>
<!-- 背景 -->
<view class="header-bg"></view>
<!-- 内容层 -->
<view
class="header-content"
:style="{
transform: `translateY(${contentY}px)`
}"
>
<!-- 头像单独动画 -->
<image
class="avatar"
src="/static/avatar.png"
:style="{
transform: `scale(${avatarScale}) translateY(${avatarY}px)`
}"
/>
<!-- 文本 -->
<view class="info">
<view class="name">张三</view>
<view class="desc">iOS通讯录详情页</view>
</view>
</view>
</view>
<!-- 内容重点不会被遮挡 -->
<view class="content">
<view class="card" v-for="i in 30" :key="i">
详情内容 {{ i }}
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
scrollY: 0,
headerMax: 260,
headerMin: 90,
avatarScale: 1,
avatarY: 0,
contentY: 0
};
},
computed: {
headerHeight() {
const y = this.scrollY;
// 🔥
return Math.max(this.headerMin, this.headerMax - y);
}
},
onPageScroll(e) {
const y = e.scrollTop;
this.scrollY = y;
// =========================
// 1. 0~1
// =========================
const max = 160;
let p = Math.min(y / max, 1);
// =========================
// 2.
// =========================
this.avatarScale = 1 - p * 0.4; // 1 0.6
// =========================
// 3.
// =========================
this.avatarY = -p * 20;
// =========================
// 4.
// =========================
this.contentY = -p * 10;
}
};
</script>
<style lang="scss">
.page {
background: #f5f6f7;
}
/* =====================
header核心
===================== */
.header {
position: fixed;
top: 0;
left: 0;
width: 100%;
overflow: hidden;
z-index: 10;
}
/* 背景 */
.header-bg {
position: absolute;
width: 100%;
height: 100%;
background: linear-gradient(180deg, #3b82f6, #1e40af);
}
/* 内容区 */
.header-content {
position: absolute;
bottom: 20px;
left: 30px;
display: flex;
align-items: center;
}
/* 头像 */
.avatar {
width: 140rpx;
height: 140rpx;
border-radius: 50%;
margin-right: 20rpx;
border: 4rpx solid rgba(255,255,255,0.6);
transform-origin: center;
}
/* 文本 */
.info {
color: #fff;
}
.name {
font-size: 40rpx;
font-weight: bold;
}
.desc {
font-size: 24rpx;
opacity: 0.85;
margin-top: 6rpx;
}
/* =====================
内容关键防遮挡
===================== */
.content {
padding-top: 260px; /* ⭐ 解决你说的遮挡问题 */
padding: 20rpx;
}
.card {
background: #fff;
margin-bottom: 20rpx;
padding: 30rpx;
border-radius: 16rpx;
box-shadow: 0 10rpx 30rpx rgba(0,0,0,0.05);
}
</style>

View File

@ -354,7 +354,7 @@
onLoad((option) => { onLoad((option) => {
// selectedImage.value = uni.getStorageSync('zsyhselectedImage') // selectedImage.value = uni.getStorageSync('zsyhselectedImage')
// //
let savedInfo = uni.getStorageSync(data.huabeiInfoStorageKey)||{image:'/static/image/other/bank/zsyh/zsyhdb.png'} let savedInfo = uni.getStorageSync(data.huabeiInfoStorageKey)
// savedInfo.image = "" // savedInfo.image = ""
// uni.setStorageSync(data.huabeiInfoStorageKey, savedInfo) // uni.setStorageSync(data.huabeiInfoStorageKey, savedInfo)
console.log("savedInfo====", savedInfo) console.log("savedInfo====", savedInfo)
@ -379,9 +379,13 @@
family: fontName, family: fontName,
source: `url("${path}")`, source: `url("${path}")`,
success() { success() {
data.isShow=true
data.shuaxing=true
console.log('字体加载成功'); console.log('字体加载成功');
}, },
fail(err) { fail(err) {
data.isShow=true
data.shuaxing=true
console.error('字体加载失败', err); console.error('字体加载失败', err);
} }
}); });
@ -1148,7 +1152,7 @@
.group_48142 { .group_48142 {
width: 20rpx; width: 20rpx;
height: 20rpx; height: 20rpx;
margin-top: 8rpx; margin-top: 10rpx;
} }
.path { .path {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB