hldy_app_mini/pages/NursingNew/component/index.vue

1694 lines
39 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="index-content-other" :style="transition?{opacity: `1`}:{opacity: `0`}">
<view class="right-container-title-nav">
<view class="title-card" @click="nusing">
<view class="card-top">
<view class="card-top-right">
<image class="right-img" src="/static/index/card/arrow.png" />
</view>
</view>
<view class="card-bottom">
<image class="bottom-img" src="/static/index/card/help.png" />
<view class="bottom-font">
护理
</view>
</view>
<view class="mesu">
<view>
<text>33</text>
<text>已执行</text>
</view>
<view>
<text>44</text>
<text>待执行</text>
</view>
<view>
<text>1</text>
<text>异常</text>
</view>
</view>
</view>
<view class="title-card"
@click="uni.navigateTo({
url:'/pages/NursingNew/component/doctorask/medical/medical'
})">
<view class="card-top">
<view class="card-top-right">
<image class="right-img" src="/static/index/card/arrow.png" />
</view>
</view>
<view class="card-bottom">
<image class="bottom-img" src="/static/index/card/doctor.png" />
<view class="bottom-font">
医疗
</view>
</view>
<view class="mesu">
<view>
<text>33</text>
<text>已执行</text>
</view>
<view>
<text>44</text>
<text>待执行</text>
</view>
<view>
<text>1</text>
<text>异常</text>
</view>
</view>
</view>
<view class="title-card"
@click="uni.navigateTo({
url:'/pages/NursingNew/component/doctorask/medical/medical'
})">
<view class="card-top" >
<view class="card-top-right">
<image class="right-img" src="/static/index/card/arrow.png" />
</view>
</view>
<view class="card-bottom">
<image class="bottom-img" src="/static/index/card/work.png" />
<view class="bottom-font">
后勤
</view>
</view>
<view class="mesu">
<view>
<text>33</text>
<text>已执行</text>
</view>
<view>
<text>44</text>
<text>待执行</text>
</view>
<view>
<text>1</text>
<text>异常</text>
</view>
</view>
</view>
<view class="title-card-right" @click="jszlshow = true">
<view class="card-top" style="justify-content: space-between;">
<view class="card-top-left">
11
</view>
<view class="card-top-right">
<image class="right-img" src="/static/index/card/arrow.png" />
</view>
</view>
<view class="card-bottom" style=" top: 8vw;">
<image class="bottom-img" src="/static/index/card/alarm.png" />
<view class="bottom-font">
即时指令
</view>
</view>
<view class="bianj" v-if="jszlshow">
<image src="/static/index/card/bj.png" mode="aspectFill"></image>
</view>
<view class="jszl guodu" :class="jszlshow?'':'jsh0'" @click.stop>
<view class="tittop">
<view></view>
即时服务指令
</view>
<view class="spiw">
<view v-for="(v,i) in ['护理','医疗','后勤']" :key="i" :class="i==fwzlindex?'act':''" @click="shtab(i)">{{v}}</view>
</view>
<scroll-view class="scrol" scroll-y="true">
<view v-for="(v,i) in fwzlarr" :key='i' :class="i==fwzldex?'act':''" class="cdk" @click="zldex(i)">
<image :src="fwzldex!=i?v.netImmediateFile:v.netPreviewFileSmall" mode="aspectFill"></image>
<text style="white-space: nowrap;width: 100%;text-overflow: ellipsis;overflow: hidden;">{{v.directiveName?.substring(0,4)}}</text>
<view>{{v.directiveName?.substring(4,12)}}</view>
</view>
<view style="width: 13vw;height: 13vw;margin: 7vw 0 0 23.5vw;display: block;background: none;" v-if="fwzlarr?.length==0||!fwzlarr">
<image src="/static/index/card/zw.png" mode="aspectFill" style="width:13vw;height: 13vw"></image>
<view style="width: 100%;text-align: center; font-weight: 400; font-size: 1.2vw;color: #555555;margin-top: -3vw;text-align: center;white-space: nowrap;">
暂无服务指令
</view>
</view>
</scroll-view>
<view class="submit" >
<view @click.stop="jszlshow = false">取消</view>
<view @click="subitshowing" v-if="fwzldex>0">确定</view>
</view>
</view>
</view>
</view>
<view class="mengban" v-if="jszlshow" @click="jszlshow = false" ></view>
<serveswipe ref="serves"></serveswipe>
</view>
<errorshow :show="openerror" :font="errmsg" @close="openerror=false" :icons="false" style="left: 44%;"/>
<errorshow :show="error" :font="msg" @close="error=false" style="left: 44%;"/>
<view class="index-content-right" :style="transition?{opacity: `1`}:{opacity: `0`}">
<view class="right-time">
<view class="time-top">
<view class="time-big">
{{ currentTime }}
</view>
<view class="">
<view class="time-week">
{{ weekDay }}
</view>
<view class="">
{{ fullDate }}
</view>
</view>
</view>
<view class="right-container-tem">
<view class="">
<image class="right-container-tem-img" src="/static/index/newindex/wendu/0.png" />
<text
class="right-container-tem-text">{{ (uni.getStorageSync('NUall').humidDeviceList && uni.getStorageSync('NUall').humidDeviceList[0])? uni.getStorageSync('NUall').humidDeviceList[0].temperature: '-' }}°C</text>
</view>
<view class="">
<image class="right-container-tem-img" src="/static/index/newindex/wendu/1.png" />
<text
class="right-container-tem-text">{{ (uni.getStorageSync('NUall').humidDeviceList && uni.getStorageSync('NUall').humidDeviceList[0])? uni.getStorageSync('NUall').humidDeviceList[0].humidity: '-' }}%</text>
</view>
</view>
</view>
<view class="right-top">
<view class="top-title">
护理单元
</view>
<scroll-view class="top-list" scroll-y>
<view class="list-view" :style="menutarget===index?{borderColor:`#8DD6FF`,backgroundColor:`#F7F7F9`}:{}"
v-for="(item,index) in filteredMenu(0)" :key="index" @click="clickmenu(index)">
<view class="list-img">
<image :src="`/static/index/newindex/leftmenu/NU${item.elderInfo?.name?`blue`:`white`}.png`" />
<view v-if="item.readList!=null&&item.readList.length>0"></view>
</view>
<view class="">
<view class="first-line">
<view style="font-size: 1.2vw;">
{{ item.nuName.length>6?item.nuName.substring(0,6)+'.':item.nuName }}
</view>
<view class="first-line-second">
{{ item.elderInfo?.name?`入住`:`空闲` }}
</view>
</view>
<view class="second-line">
NUID{{ item.nuId }}
</view>
</view>
</view>
</scroll-view>
</view>
<view class="mengban" v-if="zzbqshow" @click="zzbqshow = false;tagtarget=-1"></view>
<view class="right-bottom">
<view class="bottom-title">
<image class="bottom-carmera" src="/static/index/newindex/leftmenu/carmera.png" @click="gotolook" />
<view class="blue-button" @click="geteverything()">
长者标签
<view class="jb" v-show="zzbqshow">
<image src="/static/index/card/bj.png" mode="aspectFill"></image>
</view>
<view class="zzbq guodu" @click.stop :class="zzbqshow?'':'zzh0'">
<view class="carfd" v-if="zzbqshow">
<view class="tittop">
<view></view>
体重标签
</view>
<view class="tg" style="border-right: 1px solid rgba(238, 238, 238, 1);">
<view v-for="(v,i) in emotionTagList" :key='i' @click="clicktag(v,i)">
<image :src="uni.getStorageSync('imagebase') + v.pic" mode="aspectFill"></image>
<text>{{v.tagName}}</text>
</view>
<image src="/static/index/card/zanw.png" mode="aspectFill"
v-if="emotionTagList.length==0"
style="width: 5.4vw;height: 5.4vw;margin-top: -0.7vw;margin-left: -1vw;"></image>
</view>
</view>
<view class="carfd" v-if="zzbqshow">
<view class="tittop">
<view style="margin-left: 1vw;"></view>
情绪标签
</view>
<view class="tg">
<view v-for="(v,i) in bodyTagList" :key='i' @click="clicktag(v,i+2)">
<image :src="uni.getStorageSync('imagebase') + v.pic" mode="aspectFill"></image>
<text>{{v.tagName}}</text>
</view>
<image src="/static/index/card/zanw.png" mode="aspectFill" v-if="bodyTagList.length==0"
style="width: 5.4vw;height: 5.4vw;margin-top: -0.7vw;margin-left: 1.2vw;"></image>
</view>
</view>
</view>
<view class="zzbqsmall guodu" @click.stop :class="zzbqshow&&tagtarget!=-1?'':'zzh0'">
<view class="jbsmall" v-show="tagtarget!=-1" :style="{left:`${leftnumber}vw`}">
<image src="/static/index/card/bj.png" mode="aspectFill"></image>
</view>
{{ tagtarget==-1?'':detail }}
</view>
</view>
</view>
<image class="big-older"
:src="`/static/index/newindex/leftmenu/${uni.getStorageSync('NUall').elderInfo?.name?`older`:`nopeople`}.png`" />
<view class="name-weight">
{{ uni.getStorageSync('NUall').elderInfo?.name ? uni.getStorageSync('NUall').elderInfo?.name:`暂无长者` }}
</view>
<view class="message-view" v-if="uni.getStorageSync('NUall').elderInfo?.name">
{{ uni.getStorageSync('NUall').elderInfo?.sex }}
<view class="message-shu"></view>
<view style="font-weight: 600;">
{{ calcAge(uni.getStorageSync('NUall').elderInfo?.dateOfBirth) }}
</view>
<view class="message-shu"></view>
<image class="message-img" :src="`/static/index/newindex/leftmenu/time.png`" />
{{ uni.getStorageSync('NUall').elderInfo?.checkinTime.replace(/-/g, '.') }}
</view>
<view class="message-bottom" v-if="uni.getStorageSync('NUall').elderInfo?.name">
<view class="bottom-tags">
{{ uni.getStorageSync('NUall').elderInfo?.yblxName }}
</view>
<view class="bottom-tags" v-show="uni.getStorageSync('NUall').elderInfo?.sndjName" >
{{ uni.getStorageSync('NUall').elderInfo?.sndjName }}
</view>
<view class="bottom-tags" >
{{ uni.getStorageSync('NUall').elderInfo?.jfztName }}
</view>
</view>
</view>
</view>
<severcard ref="severcards"></severcard>
</template>
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, computed, nextTick, watch ,reactive} from 'vue';
import { onBackPress, onShow, onHide } from "@dcloudio/uni-app"
import { queryPadPageList } from '@/pages/watch/api/lunpan.js'
import { queryWorkOrderList,queryCountByType,queryAll } from './api.js'
// import {startOrder,endOrder} from './doctorask/api/api.js'
import {queryOrderList,queryOrderInfoList,startOrder,endOrder,editSubPicPath,editSubMp4,queryEmpList,transferOrder,assistOrder,generateInstant} from '../component/doctorask/api/api.js'
import { getNclist } from "./nurse/api.js";
import serveswipe from './leftcontent/serveswipe.vue';
const serverUrl = ref(uni.getStorageSync('imagebase') )
const servervideoUrl = ref(uni.getStorageSync('serverUrl') + '/sys/commonVideo/staticVideo/')
const serverpicUrl = ref(uni.getStorageSync('serverUrl') + '/sys/common/static/')
const form = reactive({
pageNo: 1,
pageSize: 10,
employeeId:uni.getStorageSync('userInfo').employessId,
nuId:uni.getStorageSync('nuId'),
workType:5
})
const zdxzdex = ref(0)
const zdxzarr = ref(0)
const zhixing = (e)=>{
if(indexmessage.value?.izStart=='Y' && e ==1){
uni.showToast({
title:'服务中不能转单!',
icon:'none'
})
return
}
queryEmpList({id:uni.getStorageSync('userInfo').id}).then(res=>{
zdxzarr.value = res.result;
zdxzarr.value.forEach(item=>{
item.flag = false
})
zdxzdex.value = e;
})
}
const flag = ref(false)
const zdwu = (e,k)=>{
if(zdxzdex.value==1){
e.flag = !e.flag;
zdxzarr.value.forEach((item,i)=>{
if(i!=k){
item.flag = false
}
})
flag.value = e.flag
}
if(zdxzdex.value==2){
e.flag = !e.flag;
let arr = [];
zdxzarr.value.forEach((item,i)=>{
if(item.flag){
arr.push(1)
}
})
if(arr.length==0){
flag.value = false;
}else{
flag.value = true;
}
}
}
const zhixingsub = ()=>{
zxzd.value = zdxzdex.value
if(zdxzdex.value==1){
zdcont.value = "确认转单执行?"
}
if(zdxzdex.value==2){
zdcont.value = "确认协助执行?"
}
}
const zxzd = ref(0);
const zdcont = ref('');
const tijiaozx = ()=>{
if(zxzd.value == 1){
let s = {}
zdxzarr.value.forEach((item,i)=>{
if(item.flag){
s = item;
}
})
let obj = {
mainId:indexmessage.value.mainId,
employeeId:s.id,
employeeName:s.name,
beforeBy:indexmessage.value.employeeId,
beforeByName:indexmessage.value.employeeName
}
let nuId = uni.getStorageSync('nuId');
transferOrder(obj).then(res=>{
if(res.success){
firstgetqueryCgdList(nuId);
flag.value = false;
zxzd.value = 0;
zdxzdex.value = 0;
}
})
}
if(zxzd.value == 2){
let userinfo = uni.getStorageSync('userInfo')
let id = userinfo.id+',';
let name = userinfo.realname+',';
zdxzarr.value.forEach((item,i)=>{
if(item.flag){
id+=item.id+','
name+=item.name+','
}
})
id = id.slice(0, -1);
name = name.slice(0, -1);
let obj = {
mainId:indexmessage.value.mainId,
optIds:id,
optNames:name,
beforeBy:indexmessage.value.employeeId,
beforeByName:indexmessage.value.employeeName
}
assistOrder(obj).then(res=>{
if(res.success){
firstgetqueryCgdList(form.nuId)
// clickLeftMenu(0,{id:indexmessage.value.mainId})
flag.value = false;
zxzd.value = 0;
zdxzdex.value = 0;
}
})
}
}
const plsbuy = ref([])
const firstgetqueryCgdList = (nuId) => {
form.nuId = nuId;
queryOrderList(form).then(res => {
console.log(form)
if(res.result.records.length>0){
indexmessage.value = res.result.records[0]
// clickLeftMenu(0,res.result.records[0])
}else{
indexmessage.value = {};
}
})
}
const clickLeftMenu = (index : any, item : object) => {
queryOrderInfoList({ mainId: item.id }).then(res => {
if(res.result.length>0){
indexmessage.value = res.result[0]
}else{
indexmessage.value = {};
}
})
}
const open = ref(0)
const donghuaopo = ref(false);
const topbuttontarget = ref(0);
const ilanarr = ref([]);
const listobj = ref({});
const ysptp = (v,i,r) =>{
// v.manuallyPicPath
if(r == 1&&v.manuallyPicPath){
ilanarr.value = v.manuallyPicPath.split(",");
ilanarr.value = ilanarr.value.filter(item => item !== '');
}else if(r == 2&&v.manuallyMp4Path){
ilanarr.value = v.manuallyMp4Path.split(",");
ilanarr.value = ilanarr.value.filter(item => item !== '');
}else if(r == 3&&v.tplinkPath){
ilanarr.value = v.tplinkPath.split(",");
ilanarr.value = ilanarr.value.filter(item => item !== '');
}
else{
ilanarr.value = [];
}
listobj.value = v;
topbuttontarget.value = r;
donghuaopo.value = true;
}
const uplod = (v) => {
if(topbuttontarget.value==1){
uni.chooseImage({
count: 1, //默认9
sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera'], //从相册选择
success: (e) => {
let ar = JSON.stringify(e.tempFilePaths)
uni.compressImage({
src: JSON.parse(ar)[0],
quality: 60,
success: res => {
sxdupld(res.tempFilePath)
// v.picPatharr.push(res.tempFilePath);
}
})
}
});
}else{
uni.chooseVideo({
sourceType: ['camera' ],
success: (e)=> {
uni.showLoading({
title:'正在上传...'
})
uni.compressVideo({
src: e.tempFilePath,
quality: 'medium',
success: res => {
sxdupld(res.tempFilePath)
// v.picPatharr.push(res.tempFilePath);
}
})
// sxdupld(res.tempFilePath )
}
});
}
}
const sxdupld = (e) => {
let now = new Date();
let year = now.getFullYear();
let month = now.getMonth() + 1;
uni.uploadFile({
url: uni.getStorageSync('serverUrl') + '/sys/common/upload',
filePath: e,
name: 'file',
fileType:topbuttontarget.value==2?'video':'image',
formData: {
biz: year + '/' + month + (topbuttontarget.value==1?'/fwxm/manuallyPicPath':'/fwxm/manuallyMp4Path')
},
header: {
'X-Access-Token': uni.getStorageSync('token')
},
success: res => {
const data = JSON.parse(res.data);
ilanarr.value.push(data.message)
uni.hideLoading()
},
fail: () => {
uni.hideLoading()
uni.showToast({ title: '上传失败', icon: 'none' })
}
})
}
const submit = ()=>{
let sub = "";
ilanarr.value.forEach(item=>{
sub+=item+','
})
if(topbuttontarget.value == 1){
editSubPicPath({id:listobj.value.id,manuallyPicPath:sub}).then(res=>{
if(res.success){
topbuttontarget.value = 0;
donghuaopo.value = false;
firstgetqueryCgdList(form.nuId)
// clickLeftMenu(0,{id:indexmessage.value.mainId})
}
})
}else{
editSubMp4({id:listobj.value.id,manuallyMp4Path:sub}).then(res=>{
console.log({id:listobj.value.id,manuallyMp4Path:sub},res)
if(res.success){
topbuttontarget.value = 0;
donghuaopo.value = false;
firstgetqueryCgdList(form.nuId)
// clickLeftMenu(0,{id:indexmessage.value.mainId})
}
})
}
}
const previewImage = (v, i, arr) => {
if(topbuttontarget.value == 1){
let u = []
arr.forEach(e => {
u.push(serverpicUrl.value + e)
})
uni.previewImage({
current: i,
urls: u,
showmenu: false,
longPressActions: {
itemList: [],
}
})
}
}
const videoContext = ref(null)
const play = (e,i)=>{
videoContext.value = uni.createVideoContext('myVideo'+i);
videoContext.value.play()
}
const pici = ref(0);
const del = (v,i) =>{
pici.value = i;
}
const del1=()=>{
ilanarr.value.splice(pici.value,1);
open.value = 0
}
//
const openerror = ref(false);
const errmsg = ref('')
const props = defineProps({
isShow: {
type: Boolean,
required: true,
},
});
const errmsgclk = (e,k)=>{
if(k==1){
if(indexmessage.value?.izStart=='Y'){
switch (e){
case 0:
if(indexmessage.value?.serviceContent==''){return}
errmsg.value = indexmessage.value?.serviceContent
break;
case 1:
if(indexmessage.value?.mp3File==''){return}
errmsg.value = indexmessage.value?.mp3File
break;
case 2:
if(indexmessage.value?.mp4File==''){return}
errmsg.value = indexmessage.value?.mp4File
break;
default:
break;
}
openerror.value = true;
}
}else{
if(indexmessage.value?.izStart=='Y'){
switch (e){
case 3:
ysptp(indexmessage.value,0,1)
break;
case 4:
ysptp(indexmessage.value,0,2)
break;
default:
break;
}
}
}
}
const leftMenuArray = ref([]);
const menutarget = ref(0)
const emit = defineEmits(['swip',"gospecial"])
const clickmenu = (index : number) => {
menutarget.value = index
let data = filteredMenu(0)[index]
uni.setStorageSync('nuId', data.nuId);
uni.setStorageSync('nuName', data.nuName);
uni.setStorageSync('elderId', data.elderInfo ? data.elderInfo?.id : null);
uni.setStorageSync('NUall', data);
severcards.value.firstgetqueryCgdList()
inits(data.nuId)
hlylhq(data.nuId,data.elderInfo?.id)
zlfunc(data.nuId,data.elderInfo?.id)
emit('swip')
}
const hldyobj = ref({})
const hlylhq = (nuId,elderId)=>{
let data = {
nuId:nuId,
elderId:elderId
}
queryCountByType(data).then(res=>{
hldyobj.value = res.result
})
}
const fwzlindex = ref(0);
const fwzldex = ref(-1);
const fwzlarr = ref(0);
const zlarr = ref({});
const zlfunc = (nuId,elderId)=>{
let data = {
nuId:nuId,
elderId:elderId
}
queryAll(data).then(res=>{
zlarr.value = res.result;
shtab(fwzlindex.value)
})
}
const shtab = (e)=>{
fwzlindex.value = e;
if(e==0){
fwzlarr.value = zlarr.value?.care
}
if(e==1){
fwzlarr.value = [];
}
if(e==2){
fwzlarr.value = zlarr.value?.logistics
}
}
const zldex = (e) =>{
if(e>-1&&e==fwzldex.value){
fwzldex.value = -1
}else{
fwzldex.value = e
}
}
const error = ref(false)
const msg = ref('')
const subitshowing = () =>{
if(fwzldex.value<0){
return
}
let code = fwzlindex.value==0?1:fwzlindex.value==1?2:4
let obj = {
id:fwzlarr.value[fwzldex.value].id,
triggerMode:1,
orderType:code
}
generateInstant(obj).then(res=>{
if(res.success){
jszlshow.value = false
}else{
error.value = true;
msg.value = res.message
}
})
}
function calcAge(dateOfBirth : string) {
const birthYear = parseInt(dateOfBirth?.slice(0, 4), 10);
const currentYear = new Date().getFullYear();
return currentYear - birthYear;
}
const typeNow = ref(-1);
const photoplay = ref(false)
const downArray = ref()
const scrollTop = ref(0);
function onScroll(e) {
// e.detail.scrollTop 就是当前滚动距离
scrollTop.value = e.detail.scrollTop
}
const severcards = ref<InstanceType<typeof ChildComponent>>()
const start = (v) =>{
if(v.izStart!='N'){return}
startOrder({id:v.id}).then(res=>{
if(res.success){
v.izStart = "Y";
severcards.value.firstgetqueryCgdList()
}else{
}
})
}
const end = (v)=>{
if(indexmessage.value.izStart=='Y'&& indexmessage.value.izFinish=='N'){
open.value=3;
}
}
const ends = ()=>{
endOrder({id:indexmessage.value.id}).then(res=>{
if(res.success){
open.value=0;
severcards.value.firstgetqueryCgdList()
firstgetqueryCgdList(uni.getStorageSync('nuId'))
}else{
}
})
}
// 通用的生成函数
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}`
})
}
const rightMenu = ref([
// {
// url: "/static/index/newindex/rightmenu/0.png",
// name: '重点追踪'
// },
{
url: "/static/index/newindex/rightmenu/1.png",
name: '转单执行'
},
{
url: "/static/index/newindex/rightmenu/2.png",
name: '协助执行'
},
])
const leftArray = ref(genPaths(
'/static/index/newindex/leftmenu',
'left',
5,
'png',
0, // 起始索引
false // 不补零
))
const huliArray = ref(genPaths(
'/static/index/newindex/huli',
'care',
9, // 张数
'png',
0, // 起始索引
false // 不补零
))
const base = genPaths(
'/static/index/newindex/curve',
'curve_',
9,
'png',
1,
false
)
const blueArray = ref([
...base,
...[...base].reverse() // 先拷贝一份再反转,避免修改原 base
])
const basesmall = genPaths(
'/static/index/newindex/curve',
'breathe_',
9,
'png',
1,
false
)
const bluesmallArray = ref([
...basesmall,
...[...basesmall].reverse() // 先拷贝一份再反转,避免修改原 base
])
// 使用watch监听isShow变化
const transition = ref(false);
const name = ref("");
// 定义响应式数据现在时间
const currentTime = ref('');
const fullDate = ref('');
const weekDay = ref('');
let timerId = null;
// 更新时间、日期和星期的方法
const updateTime = () => {
const now = new Date();
// 获取当前时间的时分
const hours = now.getHours().toString().padStart(2, '0');
const minutes = now.getMinutes().toString().padStart(2, '0');
currentTime.value = `${hours}:${minutes}`;
// 获取星期几
const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
const week = weekDays[now.getDay()];
weekDay.value = week;
// 获取完整的日期(年/月/日)
const year = now.getFullYear();
const month = (now.getMonth() + 1).toString().padStart(2, '0');
const day = now.getDate().toString().padStart(2, '0');
fullDate.value = `${year}.${month}.${day}`;
};
onMounted(() => {
transition.value = false;
setTimeout(() => {
transition.value = true;
}, 50)
name.value = uni.getStorageSync('realname')
typeNow.value = 0;
timerId = updateTime();
// 每秒更新一次时间
setInterval(updateTime, 1000);
getmenu();
})
onShow(()=>{
setTimeout(()=>{
photoplay.value = true;
},200)
})
onHide(() => {
photoplay.value = false;
})
const filteredMenu = (index : number) => {
return leftMenuArray.value.filter(item => Number(item.areaFlag) - 1 == index);
}
const getmenu = () => {
queryPadPageList().then((res => {
leftMenuArray.value = res.result.records;
filteredMenu(0).forEach((element : any, index : number) => {
if (element.nuId === uni.getStorageSync('NUall').nuId) {
menutarget.value = index;
clickmenu(menutarget.value)
}
})
}))
}
const indexmessage = ref({});
const getgif = () => {
// let data = {
// nuId: uni.getStorageSync('NUall').nuId,
// employeeId: uni.getStorageSync('userInfo').employessId,
// workType: 5
// }
// queryWorkOrderList(data).then((res : any) => {
// indexmessage.value = res.result.records[0];
// })
}
const lanjie = ref(false);
const gotolook = () => {
uni.navigateTo({
url: "/pages/watch/full"
})
}
const minuteArr = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55']
const timearr = ref(
Array.from({ length: 24 }, (_, hour) => ({
positioning: hour.toString(),
children: minuteArr.map(time => ({
tagName: time, // 表示分钟,如 '00', '05' 等
directiveName: '' // 默认的 directiveName
}))
}))
)
const nusing = ()=>{
emit('gospecial',1)
}
const jszlshow = ref(false)
const emotionTagList = ref([]);
const bodyTagList = ref([]);
const zzbqshow = ref(false)
const geteverything = () => {
if (uni.getStorageSync('nuId') && uni.getStorageSync('elderId')) {
emotionTagList.value = [];
bodyTagList.value = [];
zzbqshow.value = true;
getNclist(uni.getStorageSync('nuId'), uni.getStorageSync('elderId')).then((res : any) => {
console.log("东西呢",res)
res.result.emotionTagList.forEach(item=>{
if(item.izSelected == 'Y'){
emotionTagList.value.push(item)
}
})
res.result.bodyTagList.forEach(item=>{
if(item.izSelected == 'Y'){
bodyTagList.value.push(item)
}
})
// emotionTagList.value = res.result.emotionTagList;
// bodyTagList.value = res.result.bodyTagList;
})
}
}
function getStatusDesc(type) {
switch (type) {
case '稳定':
return '标准情绪';
case '标准':
return '标准体重女100-120120-150';
case '焦虑':
return '无法控制情绪(哭泣/大笑)';
case '超重':
return '女超过120男超过150';
case '抑郁':
return '有自杀倾向';
case '强直':
return '四肢承伸直且僵硬无法弯曲状(标识要区分为左右和手脚)';
case '暴力':
return '有攻击他人倾向';
case '偏瘫':
return '四肢无知觉且无法支配但是并无僵硬,可弯曲(标识要区分为左右和手脚)';
case '恐惧':
return '被害妄想';
case '佝偻':
return '四肢承弯曲且僵硬无法伸直状(标识要区分为左右和手脚)';
case '烦躁':
return '对服务和对话都不耐烦';
case '易怒':
return '骂人';
case '臆想':
return '骗人/说谎,胡言乱语';
default:
return '';
}
}
function getleft(index) {
switch (index) {
case 0:
return 2.2;
case 1:
return 6;
case 2:
return 9.8;
case 3:
return 13.4;
}
}
const serves = ref<InstanceType<typeof ChildComponent>>();
const inits = (e) =>{
serves.value.init(e);
}
const tagtarget = ref(-1);
const detail = ref("")
const leftnumber = ref(2.2)
const clicktag = (item, index) => {
tagtarget.value = index;
detail.value = getStatusDesc(item.tagName)
leftnumber.value = getleft(index);
bodyTagList.value = [];
emotionTagList.value = [];
}
</script>
<style scoped lang="less">
.jbsmall {
position: absolute;
width: 2.2vw;
height: 1.1vw;
top: -1vw;
left: 2.2vw;
z-index: 220;
transition: left 0.3s;
image {
width: 100%;
height: 100%;
}
}
.zzbqsmall {
width: 18vw;
// height: 6vw;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 0.5vw 0rpx rgba(136, 148, 167, 0.19);
border-radius: 1.2vw;
right: -0.8vw;
top: 15vw;
position: absolute;
z-index: 200;
display: flex;
// padding: 1.6vw 1.6vw 0;
padding: 1vw 2vw;
color: black;
font-size: 1vw;
}
.index-content-right {
width: 22vw;
height: 100%;
transition: opacity 1s ease;
position: relative;
left: -0.5vw;
.right-time{
margin-top:1.2vw;
width: 100%;
height: 12vw;
background-color: #fff;
border-radius: 1.6vw;
display: flex;
flex-direction: column;
justify-content: center;
padding-left: 30rpx;
padding: 0 2.2vw;
.time-top{
display: flex;
align-items: center;
font-size: 1.1vw;
.time-big{
font-size: 3.5vw;
font-weight: 600;
margin-right: 10rpx;
}
.time-week{
font-weight: 600;
}
}
}
.right-top {
margin-top: 1vw;
width: 100%;
height:22vw;
background-color: #fff;
border-radius: 1.6vw;
.top-title {
width: 80%;
height: 6vh;
display: flex;
align-items: center;
margin-left: 2vw;
font-size: 1.4vw;
font-weight: 600;
border-bottom: 1px solid #F2F2F2;
}
.top-list {
width: 100%;
height: 26vh;
margin-top: 1vw;
.list-view {
width: 86%;
margin-left: 7%;
height: 8vh;
border: 2rpx solid transparent;
border-radius: 7vw;
margin-bottom: 0.6vh;
display: flex;
align-items: center;
.list-img {
width: 4vw;
height: 4vw;
margin-left: 0.5vw;
margin-right: 0.5vw;
position: relative;
view{
width: 0.8vw;
height: 0.8vw;
background: #EE2C35;
border-radius: 50%;
position: absolute;
top: 0.3vw;
right: 0.5vw;
}
image{
width: 4vw;
height: 4vw;
}
}
.first-line {
display: flex;
.first-line-second {
background-color: #E5E5E5;
color: #555555;
width: 3.2vw;
height: 1.5vw;
display: flex;
justify-content: center;
align-items: center;
font-size: 0.9vw;
border-radius: 0.5vw;
margin-left: 0.5vw;
}
}
.second-line {
color: #999999;
margin-top: 0.2vw;
font-size: 1vw;
}
}
}
}
}
.right-bottom {
margin-top: 2vh;
width: 100%;
height: 23.4vw;
background-color: #fff;
border-radius: 3vh;
padding-top: 1vh;
display: flex;
flex-direction: column;
align-items: center;
.bottom-title {
width: 100%;
padding: 0 8%;
display: flex;
justify-content: space-between;
.bottom-carmera {
margin-top: 0.5vw;
width: 3vw;
height: 3vw;
}
}
.big-older {
margin-top: 0.5vw;
width: 9vw;
height: 9vw;
border: 1rpx solid #DCDCDC;
border-radius: 50%;
}
}
.index-content-other {
width: 67vw;
height: 100%;
transition: opacity 0.4s ease;
position: relative;
margin-left: -1.5vw;
}
.right-container-title-nav {
margin-top: 1.2vw;
display: flex;
height: 20vh;
position: relative;
font-size: 28rpx;
}
.date {
display: flex;
justify-content: space-around;
margin-top: 0.8vw;
}
.right-container-tem {
display: flex;
justify-content: space-between;
align-items: center;
width: 90%;
margin-top: 1vw;
.right-container-tem-text {
font-size: 30rpx;
}
.right-container-tem-img {
width: 38rpx;
height: 38rpx;
margin-right: 5rpx;
transform: translateY(6rpx)
}
}
.title-card-right {
width: 12.6vw;
height: 12vw;
border-radius: 1.6vw;
background-color: #FFFFFF;
margin-right: 1.6vw;
border: 2rpx solid #FFFFFF;
padding: 1.6vw;
position: relative;
}
.title-card {
width: 17.2vw;
height: 12vw;
border-radius: 1.6vw;
background-color: #FFFFFF;
padding: 1.6vw;
position: relative;
margin-right: 1vw;
.mesu{
width: 100%;
height: 2.5vw;
position: absolute;
bottom: 2vw;
left: 0;
padding: 0 1.5vw;
display: flex;
justify-content: space-between;
>view{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
width: 33%;
height: 100%;
&:nth-child(1),&:nth-child(2){
border-right: 1px solid #DCDCDC;
}
>text{
&:nth-child(1){
font-weight: bold;
font-size: 1.8vw;
color: #333333;
margin-top: -1vw;
}
&:nth-child(2){
font-weight: 400;
font-size: 1vw;
color: #333333;
}
}
}
}
}
.card-bottom {
position: absolute;
left: 0;
top: 1.9vw;
width: 100%;
height: 3vw;
display: flex;
.bottom-img {
width: 1.6vw;
height: 1.6vw;
margin-left: 1.8vw;
}
.bottom-font {
color: #555555;
font-size: 1.5vw;
margin-left: 0.5vw;
}
}
.card-top {
width: 100%;
display: flex;
justify-content: flex-end;
.card-top-left {
font-size: 1.8vw;
font-weight: 600;
}
.card-top-right {
width: 2.3vw;
height: 2.3vw;
border-radius: 50%;
background-color: #F1F2F3;
display: flex;
justify-content: center;
align-items: center;
.right-img {
width:1vw;
height:1vw;
}
}
.card-spec {
position: absolute;
top: 1.1vw;
left: 1.6vw;
width: 1.5vw;
height: 2vw;
// background-color: #0076FF;
.line {
position: absolute;
inset: 0;
background: linear-gradient(to bottom right,
transparent calc(50% - 1px),
#d5d5d5 50%,
transparent calc(50% + 1px))
}
.line-gray {
position: absolute;
right: -1.1vw;
bottom: -0.6vw;
color: #888888;
font-size: 1.3vw;
}
}
}
.blue-button {
margin-top: 0.5vw;
width: 7vw;
height: 2.5vw;
background: linear-gradient(to bottom, #009DEF, #0076FF);
display: flex;
justify-content: center;
align-items: center;
border-radius: 40rpx;
color: #fff;
font-size: 28rpx;
position: relative;
}
.name-weight {
font-size: 2vw;
font-weight: 600;
margin: 0.2vw 0;
}
.message-view {
display: flex;
.message-shu {
width: 3rpx;
height: 1.5vw;
background-color: #bcc1c7;
margin: 0 0.4vw;
margin-top: 0.1vw;
}
.message-img {
width: 1.5vw;
height: 1.5vw;
margin-top: 0.1vw;
}
}
.message-bottom {
margin-top: 1.7vh;
width: 100%;
height: 4vh;
display: flex;
justify-content: center;
.bottom-tags {
background-color: #E7F1FF;
color: #0084FA;
height: 100%;
display: flex;
align-items: center;
padding: 0 0.4vw;
border-radius: 0.8vw;
font-size: 1.2vw;
margin: 0 0.2vw;
white-space: nowrap;
flex-wrap: nowrap;
}
}
.noarray {
width: 90%;
height: 100%;
// background-color: red;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.noarray-img {
margin-top: -200rpx;
width: 350rpx;
height: 350rpx;
}
}
.noarray-font {
margin-top: -60rpx;
color: #888888;
font-size: 25rpx;
}
.mengban {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 100;
background: RGBA(239, 240, 244, 0.55);
}
.guodu {
transition: .4s;
-webkit-transform-style: preserve-3d;
-webkit-overflow-scrolling: touch;
}
.jsh0{
height: 0vw !important;
padding: 0 2vw !important;
top: 9.4vw !important;
}
.jszl{
width: 64.5vw;
height: 44vw;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 0.5vw 0rpx rgba(136,148,167,0.19);
border-radius: 2.2vw;
position: absolute;
top: 11vw;
right: 0;
z-index: 200;
padding: 2vw;
overflow: hidden;
.submit{
width: 100%;
height: 3.2vw;
margin-top: 0.4vw;
padding-right: 2vw;
display: flex;
justify-content: flex-end;
view{
display: flex;
justify-content: center;
align-items: center;
&:nth-child(1){
width: 7.1vw;
height: 3.2vw;
background: #F8F8F8;
border-radius: 1.6vw;
border: 1px solid #E5E5E5;
font-weight: 400;
font-size: 1.4vw;
color: #555555;
}
&:nth-child(2){
width: 7.1vw;
height: 3.2vw;
background: linear-gradient(0deg, #CAE0F9, #E9F4FF);
border-radius: 1.6vw;
border: 1px solid rgba(3,133,250,0.34);
font-weight: 400;
font-size: 1.4vw;
color: #1083F8;
margin-left: 0.7vw;
}
}
}
.scrol{
width: 110%;
height: 29.5vw;
display: flex;
flex-wrap: wrap;
.cdk{
width: 6.1vw;
height: 6.1vw;
background: #F8F8F8;
border-radius: 1.6vw;
margin: 1.5vw 1.5vw 0 0vw;
display: inline-block;
border: 1px solid #F8F8F8;
text-align: center;
image{
width: 2vw;
height: 2vw;
margin: 1.4vw auto 0vw;
}
text{
display: block;
text-align: center;
font-weight: 400;
font-size: 1.1vw;
color: #333333;
width: 100%;
}
view{
text-align: center;
font-weight: 400;
font-size: 0.7vw;
color: #555;
width: 100%;
}
}
.act{
background: #F2F8FF;
border: 1px solid rgba(1,125,233,0.43);
text{
color: #017DE9;
}
}
}
.spiw{
width: 14vw;
height: 2vw;
display: flex;
justify-content: space-around;
margin-top: 2.5vw;
view{
font-weight: 400;
font-size: 1.3vw;
color: #555555;
position: relative;
line-height: 1.5vw;
}
.act{
color: #222222 !important;
font-weight: 500;
}
.act::after{
width: 50%;
height: 0.2vw;
background: #0089FE;
border-radius: 0.1vw;
content: '';
position: absolute;
bottom: 0;
left: 25%;
}
}
.tittop{
height: 2vw;
font-weight: 400;
font-size: 1.4vw;
color: #333333;
display: flex;
align-items: center;
view{
width: 0.4vw;
height: 1.2vw;
background: #017DE9;
border-radius: 0.2vw;
margin-right: 0.8vw;
}
}
}
.bianj{
position: absolute;
width: 2.2vw;
height: 1.1vw;
top: 9.68vw;
right: 2.5vw;
z-index: 220;
image{
width: 100%;
height: 100%;
}
}
.jb{
position: absolute;
width: 2.2vw;
height: 1.1vw;
top: 2.7vw;
right: 1.5vw;
z-index: 201;
image{
width: 100%;
height: 100%;
}
}
.zzh0{
height: 0vw !important;
padding: 0 1.6vw !important;
// top: 2.7vw !important;
}
.zzbq{
width: 18vw;
height: 10vw;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 0.5vw 0rpx rgba(136,148,167,0.19);
border-radius: 1.6vw;
right: -0.8vw;
top: 4vw;
position: absolute;
z-index: 200;
display: flex;
padding: 1.6vw 1.6vw 0;
.carfd{
width: 7.4vw;
height: 100%;
.tg{
width: 100%;
display: flex;
justify-content: space-around;
margin-top: 1vw;
view{
width: 1.8vw;
image{
width: 1.8vw;
height: 1.8vw;
}
text{
font-weight: 400;
font-size: 0.8vw;
color: #666666;
margin-top: 0.2vw;
}
}
}
.tittop{
height: 2vw;
font-weight: 400;
font-size: 1.1vw;
color: #333333;
display: flex;
align-items: center;
view{
width: 0.4vw;
height: 1.2vw;
background: #017DE9;
border-radius: 0.2vw;
margin-right: 0.8vw;
}
}
}
}
</style>