This commit is contained in:
wangweidong 2026-01-26 13:18:39 +08:00
parent 828791091c
commit 804aa0623c
5 changed files with 485 additions and 72 deletions

View File

@ -2,8 +2,8 @@
"name" : "护理单元",
"appid" : "__UNI__FB2D473",
"description" : "护理单元",
"versionName" : "1.0.025",
"versionCode" : 10025,
"versionName" : "1.0.026",
"versionCode" : 10026,
"transformPx" : false,
/* 5+App */
"app-plus" : {

View File

@ -127,8 +127,8 @@
</view>
</view>
<view class="mengban" v-if="jszlshow" @click="jszlshow = false" ></view>
<!-- <serveswipe></serveswipe> -->
<view class="photo-father" >
<serveswipe></serveswipe>
<!-- <view class="photo-father" >
<view class="juzhong" style="margin-left: -30rpx;" :style="indexmessage?.startTime?{}:{filter: `grayscale(60%)`}">
<donghua :width="`1300rpx`" :height="`900rpx`" :links="blueArray" :playing="photoplay" :loop="true"
:interval="120" />
@ -248,8 +248,8 @@
</view>
<tanchuang :show="zxzd>0" :font="zdcont" @back="zxzd = 0" @right="tijiaozx()"> </tanchuang>
</view>
</view>
<view class="left-menu" v-show="indexmessage?.startTime">
</view> -->
<!-- <view class="left-menu" v-show="indexmessage?.startTime">
<view style="margin: 30rpx 0;" @click="errmsgclk(0,1)">
<view class="left-ball" :style="indexmessage?.serviceContent!=''?'background-color: #fff;':'background-color:RGBA(228, 229, 231, 1);'">
<image class="left-menu-img" :src="'/static/index/newindex/leftmenu/left'+0+'.png'" />
@ -301,7 +301,7 @@
</scroll-view>
<image class="top-img" :src="`/static/index/newindex/rightmenu/bottom.png`"
@click="scrollTop > (55* rightMenu.length) ? scrollTop = (55* rightMenu.length) : scrollTop += 115 " />
</view>
</view> -->
</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 File

@ -1,50 +1,56 @@
<template>
<view>
<view class="swipeservwe">
<swiper class="swiper" circular :indicator-dots="false" :autoplay="true" :interval="3000" :duration="500">
<swiper-item>
<view class="btn les" @click="swip(-1)">
<image class="pao-img" :src="`/static/index/newindex/states/ris.png`" style="transform: rotate(180deg);"/>
</view>
<view class="btn ris" @click="swip(1)">
<image class="pao-img" :src="`/static/index/newindex/states/ris.png`" />
</view>
<swiper class="swiper" :circular="true" :indicator-dots="false"
easing-function="easeInOutCubic"
:autoplay="autoplay" :interval="3000" :duration="500" :current="current" @change="change">
<swiper-item v-for="(indexmessage,i) in 5" :key="i" class="swper">
<view class="photo-father" >
<view class="juzhong" style="margin-left: -30rpx;" :style="indexmessage?.startTime?{}:{filter: `grayscale(60%)`}">
<donghua :width="`1300rpx`" :height="`900rpx`" :links="blueArray" :playing="photoplay" :loop="true"
:interval="120" />
</view>
<view class="timedjs">
<text>服务倒计时</text>
<timeing ></timeing>
</view>
<view class="weight-time">
<view class="" v-if="indexmessage?.startTime">
<view v-if="indexmessage?.startTime">
{{ indexmessage?.startTime.slice(11, 16) }}
-
{{ indexmessage?.endTime.slice(11, 16) }}
</view>
<view style="height: 5vw;" v-show="!indexmessage?.startTime">
<view style="height: 5vw;" >
</view>
<view class="pao-father" v-show="indexmessage?.startTime">
<view class="pao-father" >
<image class="pao-img" :src="`/static/index/newindex/states/pao.png`" />
<view style="z-index: 1;" v-if="topbuttontarget==0">
{{indexmessage?.izStart=='N'?'待执行':'执行中'}}
</view>
</view>
</view>
<tanchuang :show="open==3" font="是否结束服务指令?" @back="open = 0" @right="ends()"> </tanchuang>
<image class="big-img" v-if="topbuttontarget==0" :style="!indexmessage?.previewFile?'width: 450rpx':''"
:src="indexmessage?.previewFile? serverUrl + indexmessage?.previewFile: `/static/index/newindex/wendu/2.png`" mode="aspectFill"/>
<view style="display: flex;align-items: center; ">
<view style="display: flex;align-items: center; ">
<view class="server-name" v-if="indexmessage?.startTime">
{{ indexmessage?.directiveName }}
</view>
<view style="width: 6.5vw;height: 2vw;margin-left: 1vw;position: relative;" v-if="indexmessage?.categoryName">
<image src="/static/index/newindex/wendu/bgc.png" mode="aspectFill" style="width: 100%;height: 100%;position: relative;z-index: 0;margin-top: 0.9vw;"></image>
<view class="bgc-font" v-if="topbuttontarget==0" style="top: 0;left: 0;padding-left:0.65vw;width: 100%;height: 100%;z-index: 2;position: absolute;line-height:3.7vw;font-size: 1.1vw;">
{{indexmessage?.categoryName}}
</view>
</view>
</view>
<view style="display: flex;margin-top: 40rpx;" v-if="indexmessage?.startTime">
<view style="display: flex;margin-top: 40rpx;" >
<view style="width: 240rpx;height: 90rpx;margin-right: 40rpx;">
<view :class="indexmessage?.izStart=='N'?'start-button':'end-button'" v-show="indexmessage?.startTime" @click="start(indexmessage)">
<view :class="indexmessage?.izStart=='N'?'start-button':'end-button'" @click="start(indexmessage)">
开始服务
</view>
</view>
@ -55,68 +61,460 @@
</view>
</view>
<view class="mengban" v-if="zdxzdex>0" @click="zdxzdex=0"></view>
<view class="photowall" v-show="zdxzdex>0" :style="zdxzdex?{opacity:1}:{opacity:0}">
<view class="photowall-title">
<view class="photowall-name">
{{ zdxzdex==1?`转单执行`:`协助执行` }}
</view>
</view>
<scroll-view scroll-y="true" class="photowall-other" scroll-with-animation enable-flex v-if="zdxzdex>0">
<view class="photowall-other" >
<view class="bottom-title" v-for="(v,i) in zdxzarr" :key='i' @click="zdwu(v,i)"
style="border: 1px solid #f8f8f8;width: 16vw;margin: 0 0.8vw;;height: 17vw;border-radius: 1.1vw;background: #f8f8f8;display: flex;flex-direction: column;align-items: center;"
:style="v.flag?'border: 1px solid #0385FA;background: #fff !important;':''">
<image style="width: 9vw;height: 9vw;border-radius: 50%;margin: 1vw auto;"
:src="v.headPath?serverUrl+v.headPath:'/static/shouye/xd.png'" />
<view class="name-weight">
{{v.name }}
</view>
<view class="message-view" v-if="uni.getStorageSync('NUall').elderInfo?.name">
{{v.sex}}
<view class="message-shu"></view>
<view style="font-weight: 600;">
{{ v.height}}cm
</view>
<view class="message-shu"></view>
{{ v.weight}}Kg
</view>
</view>
</view>
</scroll-view>
<view style="position: absolute;right: 2vw;bottom: 0.8vw;height: 4vw;" >
<view v-if="flag" class="lanbt" @click="zhixingsub" >确定</view>
<view v-if="!flag" class="huibt">确定</view>
</view>
<tanchuang :show="zxzd>0" :font="zdcont" @back="zxzd = 0" @right="tijiaozx()"> </tanchuang>
</view>
<view class="left-menu" >
<view style="margin: 30rpx 0;" @click="errmsgclk(0,1)">
<view class="left-ball" :style="indexmessage?.serviceContent!=''?'background-color: #fff;':'background-color:RGBA(228, 229, 231, 1);'">
<image class="left-menu-img" :src="'/static/index/newindex/leftmenu/left'+0+'.png'" />
</view>
</view>
<view style="margin: 30rpx 0;" @click="errmsgclk(1,1)">
<view class="left-ball" :style="indexmessage?.mp3File!=''?'background-color: #fff;':'background-color:RGBA(228, 229, 231, 1);'">
<image class="left-menu-img" :src="'/static/index/newindex/leftmenu/left'+1+'.png'" />
</view>
</view>
<view style="margin: 30rpx 0;" @click="errmsgclk(2,1)">
<view class="left-ball" :style="indexmessage?.mp4File!=''?'background-color: #fff;':'background-color:RGBA(228, 229, 231, 1);'">
<image class="left-menu-img" :src="'/static/index/newindex/leftmenu/left'+2+'.png'" />
</view>
</view>
<view v-for="(item,index) in [3,4]" :key="index" style="margin: 30rpx 0;" @click="errmsgclk(item,2)">
<view class="left-ball" :style="indexmessage?.izStart=='Y'?'background-color: #fff;':'background-color:RGBA(228, 229, 231, 1);'">
<image class="left-menu-img" :src="'/static/index/newindex/leftmenu/left'+item+'.png'" />
</view>
</view>
</view>
<view class="right-menu" >
<view class="zhezhao-top" ></view>
<view class="zhezhao-bottom" ></view>
<image class="top-img" :src="`/static/index/newindex/rightmenu/top.png`" />
<view scroll-y="true" class="right-scroll" >
<view style="height: 20rpx;"> </view>
<view style="margin: 20rpx 0;width: 110rpx;margin-left: 20rpx;" @click="zhixing(1)">
<view class="white-circle" :style="indexmessage?.izStart=='Y'?'background-color:RGBA(228, 229, 231, 1)' : ''">
<image class="right-menu-img" :src="'/static/index/newindex/rightmenu/1.png'" />
<view class="right-menu-name">
转单执行
</view>
</view>
</view>
<view style="margin: 20rpx 0;width: 110rpx;margin-left: 20rpx;" @click="zhixing(2)">
<view class="white-circle">
<image class="right-menu-img" :src="'/static/index/newindex/rightmenu/2.png'" />
<view class="right-menu-name">
协助执行
</view>
</view>
</view>
<view style="height: 30rpx;">
</view>
</view>
<image class="top-img" :src="`/static/index/newindex/rightmenu/bottom.png`"
@click="scrollTop > (55* rightMenu.length) ? scrollTop = (55* rightMenu.length) : scrollTop += 115 " />
</view>
</view>
</swiper-item>
</swiper>
</view>
<!-- <tanchuang :show="zxzd>0" :font="zdcont" @back="zxzd = 0" @right="tijiaozx()"> </tanchuang> -->
<tanchuang :show="open==3" font="是否结束服务指令?" @back="open = 0" @right="ends()"> </tanchuang>
<view class="mengban" v-if="zdxzdex>0" @click="zdxzdex=0"></view>
<view class="photowall" v-show="zdxzdex>0" :style="zdxzdex?{opacity:1}:{opacity:0}" v-if="zdxzdex">
<view class="photowall-title">
<view class="photowall-name">
{{ zdxzdex==1?`转单执行`:`协助执行` }}
</view>
</view>
<scroll-view scroll-y="true" class="photowall-other" scroll-with-animation enable-flex v-if="zdxzdex>0">
<view class="photowall-other" >
<view class="bottom-title" v-for="(v,k) in zdxzarr" :key='k' @click="zdwu(v,k)"
style="border: 1px solid #f8f8f8;width: 16vw;margin: 0 0.8vw;;height: 17vw;border-radius: 1.1vw;background: #f8f8f8;display: flex;flex-direction: column;align-items: center;"
:style="v.flag?'border: 1px solid #0385FA;background: #fff !important;':''">
<image style="width: 9vw;height: 9vw;border-radius: 50%;margin: 1vw auto;"
:src="v.headPath?serverUrl+v.headPath:'/static/shouye/xd.png'" />
<view class="name-weight">
{{v.name }}
</view>
<view class="message-view" v-if="uni.getStorageSync('NUall').elderInfo?.name">
{{v.sex}}
<view class="message-shu"></view>
<view style="font-weight: 600;">
{{ v.height}}cm
</view>
<view class="message-shu"></view>
{{ v.weight}}Kg
</view>
</view>
</view>
</scroll-view>
<!-- <view style="position: absolute;right: 2vw;bottom: 0.8vw;height: 4vw;" >
<view v-if="flag" class="lanbt" @click="zhixingsub" >确定</view>
<view v-if="!flag" class="huibt">确定</view>
</view> -->
</view>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, computed, nextTick, watch ,reactive} from 'vue';
import { onBackPress, onShow, onHide } from "@dcloudio/uni-app"
import timeing from '@/component/public/newgame/sxy-Timeing.vue'
import {queryOrderList,queryOrderInfoList,startOrder,endOrder,editSubPicPath,editSubMp4,queryEmpList,transferOrder,assistOrder,generateInstant} from '../../component/doctorask/api/api.js'
const open = ref(0)
const donghuaopo = ref(false);
const topbuttontarget = ref(0);
const ilanarr = ref([]);
const listobj = ref({});
const indexmessage = ref({});
const photoplay = ref(false)
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 current = ref(0)
const autoplay = ref(true)
const change = (e)=>{
console.log(e.detail.current)
console.log(current.value)
current.value = e.detail.current
}
const swip = (e)=>{
if(current.value==0&&e==-1){
return
}
if(current.value==4&&e==1){
return
}
current.value+=e;
autoplay.value = false;
setTimeout(()=>{
autoplay.value = true;
},3000)
console.log(current.value)
}
const form = reactive({
pageNo: 1,
pageSize: 10,
employeeId:uni.getStorageSync('userInfo').employessId,
nuId:uni.getStorageSync('nuId'),
workType:5
})
onMounted(()=>{
setTimeout(()=>{
photoplay.value = true;
},200)
})
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 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 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 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 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 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{
}
})
}
const errmsg = ref('')
const openerror = ref(false);
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 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 fwzlindex = ref(0);
const fwzldex = ref(-1);
const fwzlarr = ref(0);
const zlarr = ref({});
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 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
])
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}`
})
}
</script>
<style scoped lang="less">
.swipeservwe{
width: 65vw;
height: 70vh;
background: yellow;
position: relative;
.btn{
width: 2.4vw;
height:2.4vw;
background: #E9EAED;
border-radius: 50%;
position: absolute;
top: 32vh;
display: flex;
justify-content: center;
align-items: center;
z-index: 99;
image{
width: 80%;
height: 80%;
}
}
.les{
left: 0;
}
.ris{
right: 0;
}
.swiper{
width: 100%;
height: 100%;
.swper{
width: 100%;
height: 100%;
position: relative;
}
}
}
.lanbt{
@ -161,6 +559,21 @@
align-items: center;
position: relative;
margin-top: 0rpx;
.timedjs{
position: absolute;
width: 7vw;
right: 4vw;
top: 2vw;
display: flex;
flex-direction: column;
align-items: center;
>text{
font-weight: 400;
font-size: 1.3vw;
color: #666666;
}
}
}
.juzhong {
position: absolute;
@ -268,7 +681,7 @@
.left-menu {
position: absolute;
top: 55%;
top: 45%;
left: 100rpx;
transform: translateY(-50%);
}
@ -296,7 +709,7 @@
.right-menu {
position: absolute;
top: 60%;
top: 45%;
right: 80rpx;
transform: translateY(-50%);
display: flex;

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B