Compare commits
No commits in common. "73b2b3cf25ee488fffb3bbad07ea50bb4f6e85f9" and "37cf237ff126503273fc1fb3a79ea3485000a727" have entirely different histories.
73b2b3cf25
...
37cf237ff1
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
2
main.js
2
main.js
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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> -->
|
|
||||||
<view class="rectangle_22292"
|
<view class="rectangle_22292"
|
||||||
:style="{background:(data.info.avatar?`rgba(0,0,0,0)`:'linear-gradient(180deg, #bdbec3 0%, #a0a2af 100%)')
|
: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(() => {
|
||||||
|
|
||||||
|
|
@ -781,19 +762,9 @@
|
||||||
|
|
||||||
})
|
})
|
||||||
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;
|
||||||
|
|
|
||||||
|
|
@ -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>
|
|
||||||
|
|
@ -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 |
Loading…
Reference in New Issue