2025-11-05 15:59:48 +08:00
|
|
|
|
<template>
|
2026-01-26 13:19:11 +08:00
|
|
|
|
<view class="backgroundContainer" @touchmove.stop="getxy" @touchend.stop="cleanall">
|
|
|
|
|
|
<!-- 手指拖动 -->
|
2026-01-28 16:40:50 +08:00
|
|
|
|
<view class="box" :style="boxStyle" v-if="!whoisit">
|
2026-01-26 13:19:11 +08:00
|
|
|
|
<view class="title-time-blue">
|
|
|
|
|
|
<image class="blue-img" lazy-load src="/static/index/target.png" />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<image class="card-icon" :src="movelook.url" mode="aspectFill"></image>
|
2026-01-30 17:24:22 +08:00
|
|
|
|
<view class="card-text" style="margin-top: 0;" :style="movelook.title.length>6?{fontSize:`24rpx`}:{}">
|
2026-01-26 13:19:11 +08:00
|
|
|
|
{{ movelook.title }}
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
</view>
|
2026-01-28 16:40:50 +08:00
|
|
|
|
<view class="card-box" :style="boxStyle" v-if="whoisit">
|
|
|
|
|
|
<view class="title-time-blue-card">
|
|
|
|
|
|
<image class="blue-img" src="/static/index/bluetarget.png" />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="card-bao" v-if="simpleobj.izPackage==`Y`">
|
|
|
|
|
|
包
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="title-time-border-hisOk">
|
|
|
|
|
|
<view class="title-time">
|
|
|
|
|
|
<view class="title-time-font-rel">
|
|
|
|
|
|
{{ splitString(simpleobj.directiveName)[0]}}
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view v-if="splitString(simpleobj.directiveName)[1]" class="title-time-font-tags">
|
|
|
|
|
|
({{ splitString(simpleobj.directiveName)[1]}})
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="card-time">
|
|
|
|
|
|
|
|
|
|
|
|
<view class="weight-time">
|
|
|
|
|
|
{{ simpleobj.startTime }}
|
|
|
|
|
|
<text style="margin: 0 3rpx;">
|
|
|
|
|
|
-
|
|
|
|
|
|
</text>
|
|
|
|
|
|
{{ simpleobj.endTime }}
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
2026-01-29 17:31:38 +08:00
|
|
|
|
</view>
|
2026-02-02 14:42:43 +08:00
|
|
|
|
<view class="delete-view" :style="isblue==`3`?{backgroundColor: `rgba(255, 239, 239, 0.8)`}:{}" v-if="!startmoveit&&whoisit">
|
|
|
|
|
|
<image class="delete-img" :src="`/static/index/trash${isblue==`3`?`target`:``}.png`" />
|
2026-01-28 16:40:50 +08:00
|
|
|
|
</view>
|
2025-12-30 08:40:09 +08:00
|
|
|
|
<!-- 左侧菜单 -->
|
2026-01-09 16:25:02 +08:00
|
|
|
|
<leftcontent :list="arrlist" @navurl="navurl" :userInfo="userInfo"></leftcontent>
|
2025-11-05 15:59:48 +08:00
|
|
|
|
<!-- 主页 -->
|
2026-01-16 14:28:12 +08:00
|
|
|
|
<!-- <index :isShow="menuIndex==0" v-if="swipedex==0&&!specialPage" @swip="swip" @gospecial="gospecial" /> -->
|
2026-01-09 16:23:18 +08:00
|
|
|
|
<index :isShow="menuIndex==0" v-if="swipedex==0&&!specialPage" @swip="swip" @gospecial="gospecial" />
|
2026-01-16 14:28:12 +08:00
|
|
|
|
<!-- 新主页 -->
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2026-01-28 16:40:50 +08:00
|
|
|
|
<bignurse :isshow="menuIndex==0"
|
2026-01-26 13:19:11 +08:00
|
|
|
|
v-if="swipedex==0&&specialPage==1&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
|
2025-11-05 15:59:48 +08:00
|
|
|
|
<!-- 户嘱页 -->
|
2026-01-30 17:24:22 +08:00
|
|
|
|
<newnurse :isshow="menuIndex==1" v-if="swipedex==1" :canmove="startmoveit" :sendxy="targetrule" :isblue='isblue' :howtomove="howtomove"
|
2026-01-29 17:31:38 +08:00
|
|
|
|
:targetrule="targetrule" @handsend="handsend" @rulepush="rulepush" />
|
2025-12-16 16:54:29 +08:00
|
|
|
|
<!-- 医嘱 -->
|
2026-01-05 15:32:51 +08:00
|
|
|
|
<doctorask v-if="swipedex==2&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
|
2026-01-26 13:19:11 +08:00
|
|
|
|
<logistics :isshow="menuIndex==3"
|
|
|
|
|
|
v-if="swipedex==3&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
|
|
|
|
|
|
|
|
|
|
|
|
<invoicing :isshow="menuIndex==6"
|
|
|
|
|
|
v-if="swipedex==6&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
|
|
|
|
|
|
|
2026-01-05 09:29:43 +08:00
|
|
|
|
<!-- 医嘱页 -->
|
|
|
|
|
|
<!-- <logistics :isShow="menuIndexshowfourth" v-if="menuIndex==3" /> -->
|
2026-01-05 15:32:51 +08:00
|
|
|
|
<requestform :isShow="menuIndex==4" v-if="swipedex==4" />
|
2026-01-07 11:23:47 +08:00
|
|
|
|
<!-- 设备页 -->
|
|
|
|
|
|
<equipment :isShow="menuIndex==5" v-if="swipedex==5" />
|
2025-12-30 08:40:09 +08:00
|
|
|
|
<!-- 没有数据 -->
|
|
|
|
|
|
<view class="nomessageclass" :style="messageopit?{opacity: `1`}:{opacity: `0`}"
|
|
|
|
|
|
v-if="(menuIndex == 1 || menuIndex == 2) && (!uni.getStorageSync('elderId') ||!uni.getStorageSync('nuId'))">
|
|
|
|
|
|
<defaultr cont="暂无老人入住"></defaultr>
|
|
|
|
|
|
</view>
|
2025-11-05 15:59:48 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
|
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue';
|
2026-01-26 13:19:11 +08:00
|
|
|
|
import { queryPadPageList, getPermissionList } from '@/pages/watch/api/lunpan.js'
|
2025-11-05 15:59:48 +08:00
|
|
|
|
import index from "./component/index.vue"
|
2026-01-16 14:28:12 +08:00
|
|
|
|
import newnurse from "./component/nurse/newindex.vue"
|
2025-11-05 15:59:48 +08:00
|
|
|
|
import equipment from "./component/equipment.vue"
|
2026-01-07 16:06:12 +08:00
|
|
|
|
import logistics from "./component/logistics/index.vue"
|
|
|
|
|
|
import invoicing from "./component/invoicing/index.vue"
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2025-11-27 14:47:04 +08:00
|
|
|
|
import requestform from "./component/pleasetake/takehome.vue"
|
2025-12-16 16:54:29 +08:00
|
|
|
|
import doctorask from "./component/doctorask/doctorask.vue"
|
2026-01-16 14:28:12 +08:00
|
|
|
|
// import nurse from "./component/nurse/index.vue"
|
2026-01-09 16:23:18 +08:00
|
|
|
|
import bignurse from "./component/nurse/bigindex.vue"
|
2026-01-26 13:19:11 +08:00
|
|
|
|
import { onBackPress, onShow } from '@dcloudio/uni-app';
|
|
|
|
|
|
import { getNcPackagelist } from './component/nurse/api.js'
|
2025-12-25 13:27:31 +08:00
|
|
|
|
import leftcontent from "./component/leftcontent/leftcontent.vue"
|
2025-12-30 08:40:09 +08:00
|
|
|
|
import defaultr from '@/pages/procurement/components/default.vue';
|
|
|
|
|
|
|
2026-01-09 16:23:18 +08:00
|
|
|
|
onBackPress(() => {
|
2026-01-26 13:19:11 +08:00
|
|
|
|
if (specialPage.value) {
|
|
|
|
|
|
specialPage.value--
|
2026-01-09 16:23:18 +08:00
|
|
|
|
return true; // 禁止返回手势返回
|
2026-01-26 13:19:11 +08:00
|
|
|
|
} else {
|
2026-01-09 16:23:18 +08:00
|
|
|
|
return false; // 禁止返回手势返回
|
|
|
|
|
|
}
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2026-01-09 16:23:18 +08:00
|
|
|
|
})
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2026-01-05 09:29:43 +08:00
|
|
|
|
const listarr = ref([]);
|
2025-11-05 15:59:48 +08:00
|
|
|
|
onMounted(() => {
|
2026-01-06 14:15:35 +08:00
|
|
|
|
menuIndex.value = 0;
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 0;
|
|
|
|
|
|
|
2026-01-26 17:28:01 +08:00
|
|
|
|
getNcPackagelist().then((res : any) => {
|
|
|
|
|
|
//缓存指令包
|
2026-01-29 17:31:38 +08:00
|
|
|
|
// console.log("缓存指令包", res)
|
2026-01-26 17:28:01 +08:00
|
|
|
|
uni.setStorageSync("Packagelist", res.result)
|
|
|
|
|
|
})
|
2026-01-26 13:19:11 +08:00
|
|
|
|
getPermissionList({ employessId: uni.getStorageSync('userInfo').employessId }).then(res => {
|
|
|
|
|
|
listarr.value = res.result;
|
2026-01-29 17:31:38 +08:00
|
|
|
|
// console.log("这个是啥", listarr.value)
|
2026-01-05 09:29:43 +08:00
|
|
|
|
})
|
2025-11-05 15:59:48 +08:00
|
|
|
|
})
|
2026-01-26 13:19:11 +08:00
|
|
|
|
const gospecial = (index : number) => {
|
2026-01-09 16:23:18 +08:00
|
|
|
|
specialPage.value = index
|
|
|
|
|
|
}
|
2025-11-05 15:59:48 +08:00
|
|
|
|
// 通用的生成函数
|
|
|
|
|
|
function genPaths(base, prefix, count, ext = 'png', startIndex = 0, pad = false) {
|
|
|
|
|
|
return Array.from({ length: count }, (_, i) => {
|
|
|
|
|
|
const idx = pad
|
|
|
|
|
|
? String(i + startIndex).padStart(2, '0')
|
|
|
|
|
|
: i + startIndex
|
|
|
|
|
|
return `${base}/${prefix}${idx}.${ext}`
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-12-25 13:27:31 +08:00
|
|
|
|
const tabbrarr = ref([
|
2026-01-26 13:19:11 +08:00
|
|
|
|
{ name: '护理', url: '/static/shouye/sy/n0.png', urls: '/static/shouye/sy/n1.png', type: 'kzgn_hljz' },
|
|
|
|
|
|
{ name: '医疗', url: '/static/shouye/sy/y0.png', urls: '/static/shouye/sy/y1.png', type: 'kzgn_yljz' },
|
2026-01-28 16:43:33 +08:00
|
|
|
|
{ name: '后勤', url: '/static/shouye/sy/q0.png', urls: '/static/shouye/sy/q1.png', type: 'kzgn_hqjz' },
|
2026-01-26 13:19:11 +08:00
|
|
|
|
{ name: '库房', url: '/static/shouye/sy/l0.png', urls: '/static/shouye/sy/l1.png', type: 'kzgn_kfjz' },
|
2025-12-25 13:27:31 +08:00
|
|
|
|
])
|
2026-01-09 16:23:18 +08:00
|
|
|
|
const specialPage = ref(0)
|
2026-01-26 13:19:11 +08:00
|
|
|
|
const navurl = (e, v) => {
|
2026-01-05 15:32:51 +08:00
|
|
|
|
swipedex.value = -1;
|
2026-01-09 16:23:18 +08:00
|
|
|
|
specialPage.value = 0
|
2026-01-26 13:19:11 +08:00
|
|
|
|
switch (v.type) {
|
2026-01-05 09:29:43 +08:00
|
|
|
|
case 'hldy':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 0;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndex.value = 0;
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
// console.log('护理单元')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
2026-01-07 11:23:47 +08:00
|
|
|
|
case 'kzgn_hljz':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 1;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndex.value = 1;
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
// console.log('护理矩阵')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
2026-01-07 11:23:47 +08:00
|
|
|
|
case 'kzgn_yljz':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 2;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndex.value = 2;
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
// console.log('医疗矩阵')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
2026-01-07 11:23:47 +08:00
|
|
|
|
case 'kzgn_hqjz':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 3;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndex.value = 3;
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
// console.log('后勤矩阵')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
2026-01-07 11:23:47 +08:00
|
|
|
|
case 'kzgn_kfjz':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 6;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndex.value = 6;
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
//console.log('库房')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 'kf_cg':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
//console.log('采购')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 'kf_jh':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
//console.log('拣货')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 'kf_wj':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
//console.log('完结')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
2026-01-05 15:32:51 +08:00
|
|
|
|
case 'hldy_ql':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 4;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndex.value = 4;
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
//console.log('请领')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 'kf_th':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
//console.log('退货')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 'kf_pd':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
//console.log('盘点')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 'wl':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
swipedex.value = 5;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndex.value = 5;
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
//console.log('物联')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 'back':
|
2026-01-26 13:19:11 +08:00
|
|
|
|
uni.navigateBack()
|
|
|
|
|
|
//console.log('物联')
|
2026-01-05 09:29:43 +08:00
|
|
|
|
break;
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2026-01-05 09:29:43 +08:00
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
//
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2026-01-05 09:29:43 +08:00
|
|
|
|
}
|
2026-01-05 11:01:11 +08:00
|
|
|
|
const arrlist = ref([
|
2026-01-26 13:19:11 +08:00
|
|
|
|
{ name: '首页', url: '/static/shouye/sy/h0.png', urls: '/static/shouye/sy/h1.png', type: 'hldy' }
|
2026-01-05 11:01:11 +08:00
|
|
|
|
])
|
2026-01-26 13:19:11 +08:00
|
|
|
|
const swip = () => {
|
2026-01-07 11:23:47 +08:00
|
|
|
|
let nuId = uni.getStorageSync('nuId');
|
|
|
|
|
|
let arrs = [];
|
2026-01-26 13:19:11 +08:00
|
|
|
|
listarr.value.forEach(item => {
|
|
|
|
|
|
if (item.nuId == nuId) {
|
2026-01-07 11:23:47 +08:00
|
|
|
|
arrs = item.dataList
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2026-01-05 09:29:43 +08:00
|
|
|
|
let nuName = uni.getStorageSync('nuName')
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
|
|
|
|
|
queryPadPageList({ 'pageNo': -1, 'nuName': nuName }).then((res => {
|
2026-01-28 16:40:50 +08:00
|
|
|
|
|
2026-01-05 09:29:43 +08:00
|
|
|
|
let arr = res.result.records[0].permissionList;
|
2026-01-26 13:19:11 +08:00
|
|
|
|
arrlist.value = [{ name: '首页', url: '/static/shouye/sy/h0.png', urls: '/static/shouye/sy/h1.png', type: 'hldy' }];
|
2026-01-05 09:29:43 +08:00
|
|
|
|
let tbr = [];
|
2026-01-26 13:19:11 +08:00
|
|
|
|
// console.log("xxxx",arr)
|
|
|
|
|
|
if (arr) {
|
|
|
|
|
|
arr.forEach((v, i) => {
|
|
|
|
|
|
let obj = arrs.find(item =>
|
2026-01-05 11:01:11 +08:00
|
|
|
|
item.menuCode == v.menuCode
|
|
|
|
|
|
);
|
2026-01-26 13:19:11 +08:00
|
|
|
|
if (obj) {
|
2026-01-05 11:01:11 +08:00
|
|
|
|
tbr.push(v);
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2026-01-26 13:19:11 +08:00
|
|
|
|
tbr.forEach(item => {
|
|
|
|
|
|
let obj = tabbrarr.value.find(r =>
|
2026-01-05 11:01:11 +08:00
|
|
|
|
r.type == item.menuCode
|
|
|
|
|
|
);
|
2026-01-26 13:19:11 +08:00
|
|
|
|
if (obj) {
|
2026-01-05 11:01:11 +08:00
|
|
|
|
arrlist.value.push(obj);
|
|
|
|
|
|
}
|
2026-01-26 13:19:11 +08:00
|
|
|
|
})
|
2026-01-05 11:01:11 +08:00
|
|
|
|
}
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
|
|
|
|
|
let back = [
|
|
|
|
|
|
{ name: '请领', url: '/static/shouye/sy/l0.png', urls: '/static/shouye/sy/l1.png', type: 'hldy_ql' },
|
2026-01-27 17:23:04 +08:00
|
|
|
|
{ name: '物联', url: '/static/shouye/sy/g0.png', urls: '/static/shouye/sy/g1.png', type: 'wl' },
|
2026-01-26 13:19:11 +08:00
|
|
|
|
{ name: '返回', url: '/static/shouye/sy/f0.png', urls: '/static/shouye/sy/f1.png', type: 'back' }
|
2026-01-05 09:29:43 +08:00
|
|
|
|
]
|
|
|
|
|
|
arrlist.value.push(...back);
|
2026-01-06 16:37:04 +08:00
|
|
|
|
// navurl(0,arrlist.value[0])
|
2026-01-05 09:29:43 +08:00
|
|
|
|
}))
|
2025-12-25 13:27:31 +08:00
|
|
|
|
}
|
2025-11-05 15:59:48 +08:00
|
|
|
|
// 当前选中的菜单索引
|
|
|
|
|
|
const menuIndex = ref<number>(-1);
|
2026-01-05 15:32:51 +08:00
|
|
|
|
const swipedex = ref<number>(-1);
|
2025-11-05 15:59:48 +08:00
|
|
|
|
const menuIndexshow = ref<boolean>(false);
|
|
|
|
|
|
const menuIndexshowsecond = ref<boolean>(false);
|
2025-11-26 13:26:22 +08:00
|
|
|
|
const menuIndexshowfourth = ref<boolean>(false);
|
2025-11-05 15:59:48 +08:00
|
|
|
|
const menuIndexshowfifth = ref<boolean>(false);
|
2025-12-30 08:40:09 +08:00
|
|
|
|
const messageopit = ref<boolean>(false);
|
2025-11-05 15:59:48 +08:00
|
|
|
|
|
|
|
|
|
|
// 变更菜单
|
|
|
|
|
|
const changeMenu = (index : number) => {
|
2025-12-30 08:40:09 +08:00
|
|
|
|
if (index === menuIndex.value) {
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
2025-11-05 15:59:48 +08:00
|
|
|
|
menuIndex.value = index;
|
|
|
|
|
|
menuIndexshow.value = false
|
|
|
|
|
|
menuIndexshowsecond.value = false
|
2025-11-26 13:26:22 +08:00
|
|
|
|
menuIndexshowfourth.value = false;
|
2025-11-05 15:59:48 +08:00
|
|
|
|
menuIndexshowfifth.value = false
|
2026-01-26 13:19:11 +08:00
|
|
|
|
if (index === arrlist.value.length - 1) {
|
2025-11-05 15:59:48 +08:00
|
|
|
|
uni.navigateBack()
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
switch (index) {
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
menuIndexshow.value = true
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
menuIndexshowsecond.value = true
|
2025-12-30 08:40:09 +08:00
|
|
|
|
nomesssageshow()
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
2025-11-05 15:59:48 +08:00
|
|
|
|
|
2025-12-30 08:40:09 +08:00
|
|
|
|
nomesssageshow()
|
2025-11-26 13:26:22 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
menuIndexshowfourth.value = true
|
2025-11-05 15:59:48 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
menuIndexshowfifth.value = true;
|
|
|
|
|
|
break;
|
2026-01-05 09:29:43 +08:00
|
|
|
|
case 5:
|
|
|
|
|
|
menuIndexshowfourth.value = true
|
|
|
|
|
|
break;
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2025-11-05 15:59:48 +08:00
|
|
|
|
default:
|
|
|
|
|
|
}
|
|
|
|
|
|
}, 50)
|
|
|
|
|
|
};
|
|
|
|
|
|
const clientX = ref(0);
|
|
|
|
|
|
const clientY = ref(0);
|
|
|
|
|
|
const savename = ref("")
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
2025-11-05 15:59:48 +08:00
|
|
|
|
|
|
|
|
|
|
// 生命周期钩子
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
|
|
|
|
|
|
|
//首次加载和跳转回来需要重新做个动画
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
changeMenu(menuIndex.value)
|
|
|
|
|
|
}, 50)
|
|
|
|
|
|
|
|
|
|
|
|
menuIndexshow.value = false
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
menuIndexshow.value = true
|
|
|
|
|
|
}, 50)
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
2025-12-30 08:40:09 +08:00
|
|
|
|
const nomesssageshow = () => {
|
|
|
|
|
|
messageopit.value = false;
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
messageopit.value = true;
|
|
|
|
|
|
}, 200)
|
|
|
|
|
|
}
|
2026-01-09 16:25:02 +08:00
|
|
|
|
const userInfo = ref({})
|
2026-01-26 13:19:11 +08:00
|
|
|
|
onShow(() => {
|
2026-01-09 16:25:02 +08:00
|
|
|
|
userInfo.value = uni.getStorageSync('userInfo');
|
|
|
|
|
|
})
|
2026-01-26 13:19:11 +08:00
|
|
|
|
const box = ref(null);
|
|
|
|
|
|
const boxStyle = ref({
|
|
|
|
|
|
transform: 'translate3d(-500px, -500px, 0px)',
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
function handmove(wh : number[]) {
|
|
|
|
|
|
// 直接更新 transform(父组件可频繁调用)
|
|
|
|
|
|
const nx = Number(wh[0]) || 0;
|
|
|
|
|
|
const ny = Number(wh[1]) || 0;
|
|
|
|
|
|
// console.log("----", nx, ny)
|
2026-01-29 17:31:38 +08:00
|
|
|
|
if (whoisit.value) {
|
|
|
|
|
|
boxStyle.value = {
|
|
|
|
|
|
transform: `translate3d(${nx - 70}px, ${ny - 60}px, 0)`
|
|
|
|
|
|
};
|
|
|
|
|
|
} else {
|
|
|
|
|
|
boxStyle.value = {
|
|
|
|
|
|
transform: `translate3d(${nx - 100}px, ${ny - 70}px, 0)`
|
|
|
|
|
|
};
|
2026-01-30 17:24:22 +08:00
|
|
|
|
|
2026-01-29 17:31:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-26 13:19:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
const movelook = ref({
|
|
|
|
|
|
url: "",
|
2026-01-30 17:24:22 +08:00
|
|
|
|
title: "",
|
|
|
|
|
|
type:0
|
2026-01-26 13:19:11 +08:00
|
|
|
|
})
|
|
|
|
|
|
const startmoveit = ref(true)
|
2026-01-28 16:40:50 +08:00
|
|
|
|
const whoisit = ref(0);
|
|
|
|
|
|
const simpleobj = ref({
|
|
|
|
|
|
startTime: "",
|
|
|
|
|
|
endTime: "",
|
|
|
|
|
|
directiveName: "",
|
|
|
|
|
|
izPackage: '',
|
|
|
|
|
|
})
|
|
|
|
|
|
|
2026-01-26 13:19:11 +08:00
|
|
|
|
function handsend(look : any) {
|
2026-01-29 17:31:38 +08:00
|
|
|
|
isblue.value = 0;
|
2026-02-02 14:42:43 +08:00
|
|
|
|
// console.log("look",look)
|
2026-01-28 16:40:50 +08:00
|
|
|
|
if (look.levle) {
|
|
|
|
|
|
whoisit.value = 0;
|
|
|
|
|
|
movelook.value.url = uni.getStorageSync('imagebase') + look.immediateFileFocus;
|
|
|
|
|
|
if (!movelook.value.url) {
|
|
|
|
|
|
movelook.value.url = `/static/index/sharelogo.png`
|
|
|
|
|
|
}
|
|
|
|
|
|
movelook.value.title = look.title;
|
2026-01-30 17:24:22 +08:00
|
|
|
|
movelook.value.type = 0;
|
2026-01-28 16:40:50 +08:00
|
|
|
|
startmoveit.value = false
|
2026-01-30 17:24:22 +08:00
|
|
|
|
} else if(look.packageName){
|
|
|
|
|
|
whoisit.value = 0;
|
|
|
|
|
|
movelook.value.url = `/static/index/packtarget.png`
|
|
|
|
|
|
movelook.value.title = look.packageName;
|
|
|
|
|
|
movelook.value.type = 1;
|
|
|
|
|
|
startmoveit.value = false
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else {
|
2026-01-28 16:40:50 +08:00
|
|
|
|
whoisit.value = 1;
|
|
|
|
|
|
simpleobj.value.startTime = look.startTime;
|
|
|
|
|
|
simpleobj.value.endTime = look.endTime;
|
|
|
|
|
|
simpleobj.value.directiveName = look.directiveName;
|
|
|
|
|
|
simpleobj.value.izPackage = look.izPackage;
|
|
|
|
|
|
startmoveit.value = false
|
2026-01-26 13:19:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//节流函数
|
|
|
|
|
|
function throttle(fn, delay) {
|
|
|
|
|
|
let lastExecutionTime = 0;
|
|
|
|
|
|
return function (...args) {
|
|
|
|
|
|
const now = Date.now();
|
|
|
|
|
|
if (now - lastExecutionTime >= delay) {
|
|
|
|
|
|
lastExecutionTime = now;
|
|
|
|
|
|
fn.apply(this, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
const canTrigger = ref(true);
|
|
|
|
|
|
//全局获得x轴和y轴
|
|
|
|
|
|
const animation = uni.createAnimation({
|
|
|
|
|
|
duration: 0,
|
|
|
|
|
|
timingFunction: 'linear',
|
|
|
|
|
|
delay: 0
|
|
|
|
|
|
});
|
|
|
|
|
|
const animationData = ref({});
|
|
|
|
|
|
let ticking = false;
|
|
|
|
|
|
let handle = null;
|
2026-01-28 16:40:50 +08:00
|
|
|
|
const sendxy = ref([0, 0])
|
|
|
|
|
|
const isblue = ref(0)
|
2026-01-26 13:19:11 +08:00
|
|
|
|
const getxyrel = (event) => {
|
|
|
|
|
|
event.preventDefault()
|
2026-01-30 17:24:22 +08:00
|
|
|
|
// console.log("////",)
|
2026-01-28 16:40:50 +08:00
|
|
|
|
if (!startmoveit.value) {
|
2026-01-26 13:19:11 +08:00
|
|
|
|
const touch = event.touches[0];
|
|
|
|
|
|
const a = touch.clientX.toFixed(2);
|
|
|
|
|
|
const b = touch.clientY.toFixed(2);
|
2026-01-28 16:40:50 +08:00
|
|
|
|
|
|
|
|
|
|
isblue.value = inArea(a, b)
|
|
|
|
|
|
// console.log(a, b)
|
|
|
|
|
|
handmove([a, b])
|
2026-01-30 17:24:22 +08:00
|
|
|
|
if (whoisit.value) {
|
|
|
|
|
|
detectorMove(a, b); // ← 替换原来的 handmove([a,b])
|
|
|
|
|
|
}
|
2026-01-26 13:19:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-29 17:31:38 +08:00
|
|
|
|
const rules = ref([])
|
2026-01-28 16:40:50 +08:00
|
|
|
|
const rulepush = (array : any) => {
|
2026-01-29 17:31:38 +08:00
|
|
|
|
targetrule.value = [-1, -1]
|
2026-01-28 16:40:50 +08:00
|
|
|
|
rules.value = array
|
|
|
|
|
|
}
|
2026-01-29 17:31:38 +08:00
|
|
|
|
const targetrule = ref([-1, -1])
|
2026-01-26 13:19:11 +08:00
|
|
|
|
function inArea(x, y) {
|
2026-01-28 16:40:50 +08:00
|
|
|
|
if (!whoisit.value) {
|
|
|
|
|
|
if (x >= 790 &&
|
|
|
|
|
|
x <= 1062 &&
|
|
|
|
|
|
y >= 147 &&
|
|
|
|
|
|
y <= 255) {
|
|
|
|
|
|
return 1
|
|
|
|
|
|
} else {
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
2026-01-29 17:31:38 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
// console.log("000",x)
|
2026-01-30 17:24:22 +08:00
|
|
|
|
if (x > 1000) {
|
2026-01-29 17:31:38 +08:00
|
|
|
|
return 3
|
|
|
|
|
|
}
|
2026-01-30 17:24:22 +08:00
|
|
|
|
|
2026-01-28 16:40:50 +08:00
|
|
|
|
for (let i = rules.value.length - 1; i >= 0; i--) {
|
2026-01-29 17:31:38 +08:00
|
|
|
|
const it = rules.value[i]
|
|
|
|
|
|
if (x >= it.left && x <= it.right && y >= it.top && y <= it.bottom) {
|
|
|
|
|
|
const raw0 = it.dataset?.index0
|
|
|
|
|
|
const raw1 = it.dataset?.index1
|
|
|
|
|
|
const n0 = raw0 === undefined ? NaN : Number(raw0)
|
|
|
|
|
|
const n1 = raw1 === undefined ? NaN : Number(raw1)
|
|
|
|
|
|
if (!isNaN(n0) && !isNaN(n1)) {
|
|
|
|
|
|
if (n0 != targetrule.value[0] || n1 != targetrule.value[1]) {
|
|
|
|
|
|
targetrule.value = [n0, n1]
|
|
|
|
|
|
}
|
|
|
|
|
|
return 2
|
2026-01-28 16:40:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-29 17:31:38 +08:00
|
|
|
|
// 没找到匹配项,设为 [-1, -1] 并返回 0
|
|
|
|
|
|
if (targetrule.value[0] !== -1 || targetrule.value[1] !== -1) {
|
|
|
|
|
|
targetrule.value = [-1, -1]
|
|
|
|
|
|
}
|
|
|
|
|
|
return 2
|
2026-01-28 16:40:50 +08:00
|
|
|
|
}
|
2026-01-26 13:19:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
const getxy = throttle(getxyrel, 40);
|
|
|
|
|
|
const cleanall = (event) => {
|
2026-02-02 14:42:43 +08:00
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
|
if (whoisit.value) {
|
|
|
|
|
|
detectorEnd(); // ← 替换原来的 handmove([a,b])
|
|
|
|
|
|
}
|
|
|
|
|
|
handmove([-200, -200])
|
|
|
|
|
|
startmoveit.value = true;
|
|
|
|
|
|
},100)
|
2026-01-28 16:40:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
// 切割bigArray
|
|
|
|
|
|
function splitString(str) {
|
|
|
|
|
|
// 使用正则表达式找到所有括号的内容
|
|
|
|
|
|
let result = [];
|
|
|
|
|
|
let remainingStr = str;
|
|
|
|
|
|
// 正则匹配最外层括号(支持全角和半角)
|
|
|
|
|
|
let regex = /([^((]*)[((]([^))]+)[))]/;
|
|
|
|
|
|
while (regex.test(remainingStr)) {
|
|
|
|
|
|
let match = remainingStr.match(regex);
|
|
|
|
|
|
if (match) {
|
|
|
|
|
|
// 添加括号前的部分(去掉空白)
|
|
|
|
|
|
if (match[1].trim()) {
|
|
|
|
|
|
result.push(match[1].trim());
|
|
|
|
|
|
}
|
|
|
|
|
|
// 添加括号内的内容
|
|
|
|
|
|
if (match[2].trim()) {
|
|
|
|
|
|
result.push(match[2].trim());
|
|
|
|
|
|
}
|
|
|
|
|
|
// 更新剩余的字符串
|
|
|
|
|
|
remainingStr = remainingStr.replace(match[0], '').trim();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 如果最后还有剩余部分,也加入结果
|
|
|
|
|
|
if (remainingStr.trim()) {
|
|
|
|
|
|
result.push(remainingStr.trim());
|
|
|
|
|
|
}
|
|
|
|
|
|
return result;
|
2026-01-26 13:19:11 +08:00
|
|
|
|
}
|
2026-01-30 17:24:22 +08:00
|
|
|
|
// ---------- 配置 ----------
|
|
|
|
|
|
const HOLD_MS = 350; // 0.5s 窗口
|
|
|
|
|
|
const RESET_MS = 100; // 0.1s 占位
|
|
|
|
|
|
|
|
|
|
|
|
// 判断方向(返回 [-1/0/1, -1/0/1]:x方向, y方向)
|
|
|
|
|
|
function getDir(x, y) {
|
|
|
|
|
|
const dx = (x <= 150 ? -1 : (x >= 710 && x < 825? 1 : 0));
|
|
|
|
|
|
const dy = (y <= 80 ? -1 : (y >= 550 ? 1 : 0));
|
|
|
|
|
|
return [dx, dy];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const howtomove = ref([2,2])
|
|
|
|
|
|
|
|
|
|
|
|
// ---------- 状态 ----------
|
|
|
|
|
|
let windowTimer = null; // 500ms 的计时器 id
|
|
|
|
|
|
let windowStartDir = null; // 初始方向数组 [dx,dy]
|
|
|
|
|
|
let windowValid = false; // 在窗口期间是否一直保持初始方向
|
|
|
|
|
|
let inCooldown = false; // 触发后 0.1s 的占位期间,忽略新窗口
|
|
|
|
|
|
|
|
|
|
|
|
// 触发回调(你可以改成发事件或改成 setState)
|
|
|
|
|
|
function onDetected(arr) {
|
|
|
|
|
|
howtomove.value = arr
|
|
|
|
|
|
// console.log('DETECT ->', arr); // 例如 [1,1] 或 [-1,-1] 或 [2,2]
|
|
|
|
|
|
// 在这里把 arr 发给你的业务:比如更新某个 ref / 调用方法等
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 窗口到期时处理
|
|
|
|
|
|
function finishWindow() {
|
|
|
|
|
|
windowTimer = null;
|
|
|
|
|
|
// 如果窗口期间一直有效 且 方向不是 [0,0]
|
|
|
|
|
|
if (windowValid && windowStartDir && (windowStartDir[0] !== 0 || windowStartDir[1] !== 0)) {
|
|
|
|
|
|
onDetected(windowStartDir.slice()); // 立即返回方向
|
|
|
|
|
|
inCooldown = true;
|
|
|
|
|
|
// 0.1s 后返回占位 [2,2],并结束 cooldown
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
onDetected([2, 2]);
|
|
|
|
|
|
inCooldown = false;
|
|
|
|
|
|
}, RESET_MS);
|
|
|
|
|
|
}
|
|
|
|
|
|
// 清理窗口状态(等待下一次 move 启动新窗口)
|
|
|
|
|
|
windowStartDir = null;
|
|
|
|
|
|
windowValid = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 在 touchmove/getxyrel 中调用:传入数字 x,y
|
|
|
|
|
|
function detectorMove(x, y) {
|
|
|
|
|
|
if (inCooldown) return; // 占位期间忽略输入
|
|
|
|
|
|
|
|
|
|
|
|
const dir = getDir(x, y); // [dx,dy]
|
|
|
|
|
|
|
|
|
|
|
|
if (!windowTimer) {
|
|
|
|
|
|
// 没有在计时:开启一个新窗口
|
|
|
|
|
|
windowStartDir = dir.slice ? dir.slice() : [dir[0], dir[1]];
|
|
|
|
|
|
windowValid = true;
|
|
|
|
|
|
windowTimer = setTimeout(finishWindow, HOLD_MS);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 已在窗口中:只要方向与初始方向不同就把窗口标为无效
|
|
|
|
|
|
if (dir[0] !== windowStartDir[0] || dir[1] !== windowStartDir[1]) {
|
|
|
|
|
|
windowValid = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 在 touchend / touchcancel 时调用,清理所有状态
|
|
|
|
|
|
function detectorEnd() {
|
|
|
|
|
|
if (windowTimer) {
|
|
|
|
|
|
clearTimeout(windowTimer);
|
|
|
|
|
|
windowTimer = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
windowStartDir = null;
|
|
|
|
|
|
windowValid = false;
|
|
|
|
|
|
inCooldown = false;
|
|
|
|
|
|
}
|
2025-11-05 15:59:48 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
|
.backgroundContainer {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
position: relative;
|
2026-01-26 13:19:11 +08:00
|
|
|
|
width: 100vw;
|
2025-11-05 15:59:48 +08:00
|
|
|
|
height: 100vh;
|
|
|
|
|
|
overflow: hidden;
|
2026-01-30 17:24:22 +08:00
|
|
|
|
z-index: 9999;
|
2026-01-29 17:30:42 +08:00
|
|
|
|
background-color: #f4f4f4;
|
2025-11-05 15:59:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-30 08:40:09 +08:00
|
|
|
|
.nomessageclass {
|
|
|
|
|
|
width: 100vw;
|
|
|
|
|
|
transition: opacity 1s ease;
|
|
|
|
|
|
}
|
2026-01-26 13:19:11 +08:00
|
|
|
|
|
|
|
|
|
|
.box {
|
|
|
|
|
|
position: fixed;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
width: 190rpx;
|
|
|
|
|
|
height: 140rpx;
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
background: #fff;
|
|
|
|
|
|
will-change: transform;
|
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
|
z-index: 200;
|
|
|
|
|
|
border: 2rpx dashed #0089FE;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
|
|
|
|
.card-icon {
|
|
|
|
|
|
width: 55rpx;
|
|
|
|
|
|
height: 55rpx;
|
|
|
|
|
|
/* margin-bottom: 10rpx; */
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.card-text {
|
|
|
|
|
|
margin-top: -10rpx;
|
|
|
|
|
|
color: #0089FE;
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.title-time-blue {
|
|
|
|
|
|
/* 你的定位与尺寸保持不变 */
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 50%;
|
|
|
|
|
|
left: 50%;
|
|
|
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
|
|
width: 107%;
|
|
|
|
|
|
height: 105%;
|
|
|
|
|
|
z-index: 10;
|
|
|
|
|
|
|
|
|
|
|
|
.blue-img {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-28 16:40:50 +08:00
|
|
|
|
|
|
|
|
|
|
.card-box {
|
|
|
|
|
|
position: fixed;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
width: 259rpx;
|
|
|
|
|
|
height: 245rpx;
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
background: #fff;
|
|
|
|
|
|
will-change: transform;
|
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
|
z-index: 200;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
|
|
|
|
.title-time-blue-card {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 50%;
|
|
|
|
|
|
left: 50%;
|
|
|
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
|
|
width: 98%;
|
|
|
|
|
|
height: 98%;
|
|
|
|
|
|
z-index: 10;
|
|
|
|
|
|
|
|
|
|
|
|
.blue-img {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.card-bao {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
left: 35rpx;
|
|
|
|
|
|
top: 110rpx;
|
|
|
|
|
|
width: 32rpx;
|
|
|
|
|
|
height: 32rpx;
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
background-color: #4690FF;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
border-radius: 5rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.title-time-border-hisOk {
|
|
|
|
|
|
border: 2rpx solid #D4E4FE;
|
|
|
|
|
|
width: calc(100% - 15rpx);
|
|
|
|
|
|
height: calc(100% - 15rpx);
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
background-color: #F6F9FF;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
border: 2rpx solid #46B2F6;
|
|
|
|
|
|
|
|
|
|
|
|
.title-time {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
padding: 25rpx;
|
|
|
|
|
|
padding-top: 18rpx;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
|
|
|
|
.title-time-font-rel {
|
|
|
|
|
|
margin-top: 9rpx;
|
|
|
|
|
|
font-size: 33rpx;
|
|
|
|
|
|
font-weight: 800;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
|
color: black;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.title-time-font-tags {
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
/* margin-bottom: 5rpx; */
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
|
color: #999;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.card-time {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
bottom: 30rpx;
|
|
|
|
|
|
left: 30rpx;
|
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
|
|
|
|
|
|
|
.weight-time {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-30 17:24:22 +08:00
|
|
|
|
|
|
|
|
|
|
.delete-view {
|
2026-01-29 17:31:38 +08:00
|
|
|
|
position: fixed;
|
|
|
|
|
|
right: -950rpx;
|
|
|
|
|
|
top: 3%;
|
|
|
|
|
|
width: 1100rpx;
|
|
|
|
|
|
height: 1100rpx;
|
|
|
|
|
|
border-radius: 50%;
|
2026-01-30 17:24:22 +08:00
|
|
|
|
background-color: rgba(238, 240, 248, 0.4);
|
2026-02-02 14:42:43 +08:00
|
|
|
|
z-index: 150;
|
2026-01-30 17:24:22 +08:00
|
|
|
|
|
|
|
|
|
|
.delete-img {
|
2026-01-29 17:31:38 +08:00
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 50%;
|
|
|
|
|
|
transform: translateY(-50%);
|
|
|
|
|
|
left: 50rpx;
|
|
|
|
|
|
width: 60rpx;
|
|
|
|
|
|
height: 65rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-11-05 15:59:48 +08:00
|
|
|
|
</style>
|