This commit is contained in:
wangweidong 2026-01-30 17:32:40 +08:00
parent a4e24d4993
commit 1252d9b212
13 changed files with 268 additions and 96 deletions

View File

@ -132,7 +132,7 @@ export default {
// clearInterval(this.timerTwo);
// clearInterval(this.timer);
}
if(flag == this.timeoutDuration){
if(flag >= this.timeoutDuration+2 && this.isDown == false){
clearInterval(this.timerTwo);
clearInterval(this.timer);
this.$emit('timeend')

View File

@ -1,24 +1,33 @@
<template>
<view v-if="flag">
<view class="fixed-card" :style="openleft?{}:{right:`-34vw`}">
<view class="btn les" @click="swip(-1)" v-if="plsbuy.length>1" >
<view class="cardbg">
<image src="/static/index/newindex/states/cardbg.png" class="caimg"></image>
<view class="left-open" @click="openleft = !openleft">
<image class="open-img" :src="openleft?'/static/index/newindex/states/lesd.png':'/static/index/newindex/states/risd.png'" />
</view>
</view>
<view class="btn les" @click="swip(-1)" v-if="plsbuy.length>1">
<image class="pao-img" :src="`/static/index/newindex/states/ris.png`"
style="transform: rotate(180deg);" />
</view>
<view class="btn ris" @click="swip(1)"v-if="plsbuy.length>1" >
<view class="btn ris" @click="swip(1)" v-if="plsbuy.length>1">
<image class="pao-img" :src="`/static/index/newindex/states/ris.png`" />
</view>
<view class="bots" v-if="plsbuy.length>1" >
<view v-for="(v,i) in plsbuy" :key='i' :class="current==i?'dot':''"></view>
<view class="bots" v-if="plsbuy.length>1">
<view v-for="(v,i) in plsbuy" :key='i' :class="current==i?'dot':''"
:style="v?.chaoshitime?'background:red':''" @click="change({detail:{current:i}})"></view>
</view>
<swiper class="swiper" :circular="true" :indicator-dots="false" easing-function="easeInOutCubic"
:autoplay="false" :interval="3000" :duration="500" :current="current" @change="change">
<swiper-item v-for="(qcobj,i) in plsbuy" :key="i" class="swper">
<view class="fixed-card-left">
<image class="card-left-img" v-if="qcobj.izPackage=='Y' "src="/static/zlb.png" mode="aspectFill" />
<image class="card-left-img" v-if="qcobj.izPackage=='N'" :src="qcobj?.previewFile? serverUrl + qcobj?.previewFile: `/static/index/newindex/wendu/2.png`"
<image class="card-left-img" v-if="qcobj.izPackage=='Y' " src="/static/zlb.png"
mode="aspectFill" />
<view >
<image class="card-left-img" v-if="qcobj.izPackage=='N'"
:src="qcobj?.previewFile? serverUrl + qcobj?.previewFile: `/static/index/newindex/wendu/2.png`"
mode="aspectFill" />
<view>
{{qcobj.directiveName}}
</view>
</view>
@ -29,7 +38,8 @@
<!-- - {{qcobj.endTime?.slice(11, 16) }} -->
</view>
<view>
<timeing v-if="current==i&&qcobj?.izStart=='Y'" :initTime="djstinme" :timeoutDuration="Number(qcobj.timeoutDuration)" @timeend="timeend"></timeing>
<timeing v-if="current==i&&qcobj?.izStart=='Y'" :initTime="djstinme"
:timeoutDuration="Number(qcobj.timeoutDuration)*60" @timeend="timeend"></timeing>
</view>
</view>
<view class="names">
@ -56,13 +66,10 @@
</view>
</view>
</view>
</swiper-item>
</swiper>
<view class="left-open" @click="openleft = !openleft">
<image :style="openleft?{}:{transform: `rotate(180deg)`}" class="open-img"
src="/static/index/newindex/leftmenu/openleft.png" />
</view>
</view>
<tanchuang :show="open>0" font="是否结束服务指令?" @back="open = 0" @right="ends()"> </tanchuang>
@ -114,8 +121,10 @@
timeacde()
}
}
const timeend = () =>{
const timeend = () => {
//
console.log('倒计时到了')
plsbuy.value.splice(current.value, 1)
firstgetqueryCgdList()
}
const djstinme = ref(0)
@ -129,18 +138,36 @@
console.log(times, '当前时间戳')
console.log(Math.round(djs / 1000), '倒计时时间戳')
djstinme.value = Math.round(djs / 1000)
if (djstinme.value < 0) {
plsbuy.value[current.value].chaoshitime = true
}
}
const plsbuy = ref([])
const firstgetqueryCgdList = () => {
form.nuId=uni.getStorageSync('nuId');
queryOrderlist(form).then(res => {
plsbuy.value = res.result.records
if(plsbuy.value.length==0){
flag.value = false;
}
plsbuy.value.forEach((item, i) => {
console.log(item)
if (item.izStart == 'Y'&&flag.value == false) {
if (item.izStart == 'Y' && flag.value == false) {
openleft.value = true;
flag.value = true;
current.value = i;
change({detail:{current:current.value}})
if (current.value > plsbuy.value.length - 1) {
current.value += -1
change({ detail: { current: current.value } })
} else {
change({ detail: { current: current.value } })
}
}
let timestampMs = new Date(item.endTime).getTime();
let times = new Date().getTime();
let djs = timestampMs - times;
if (djs < 0) {
item.chaoshitime = true
}
})
// clickLeftMenu(0,res.result.records[0])
@ -208,23 +235,20 @@
<style lang="less" scoped>
.left-open {
position: absolute;
left: -1.5vw;
left: 0.75vw;
top: 50%;
transform: translateY(-50%);
width: 3vw;
height: 5vw;
border: 1rpx solid #B8C4DA;
background-color: #F2F7FD;
width: 0.5vw;
height: 1.5vw;
z-index: 999;
border-radius: 3vw;
display: flex;
justify-content: center;
align-items: center;
transition: all 0.5s ease;
.open-img {
width: 3vw;
height: 3vw;
width: 0.5vw;
height: 1.5vw;
}
}
@ -234,21 +258,32 @@
top: 2vh;
width: 35vw;
height: 17.5vw;
background-color: rgba(239, 246, 255, 0.95);
border-radius: 1.5vw;
border: 1rpx solid #638DFF;
box-shadow: 0 2rpx 6rpx #A0B9FF;
transition: all 0.5s ease;
z-index: 999;
background:rgba(239, 246, 255, 0.6);
.cardbg {
width: 36.5vw;
height: 18.5vw;
position: absolute;
top: -0.5vw;
right: -0.5vw;
.caimg{
width: 100%;
height: 100%;
}
}
.bots {
width: 15vw;
position: absolute;
height: 30rpx;
bottom: 1.6vw;
bottom:2vw;
left: 0;
display: flex;
justify-content: center;
view {
width: 1.3vw;
height: 0.6vw;
@ -256,41 +291,43 @@
border-radius: 0.2vw;
margin: 0.7vw;
}
.dot {
background: #0193F4;
}
}
.btn {
width: 2.4vw;
height: 2.4vw;
background: #F8F8F8;
border-radius: 50%;
position: absolute;
top:6.4vw;
top: 50%;
transform: translateY(-50%);
display: flex;
justify-content: center;
align-items: center;
z-index: 99;
image {
width: 60%;
height: 60%;
}
}
.les {
left: 0.5vw;
}
.ris {
right: 0.5vw;
}
.swiper{
.swiper {
width: 100%;
height: 100%;
.swper{
.swper {
width: 100%;
height: 100%;
position: relative;
@ -304,6 +341,8 @@
flex-direction: column;
align-items: center;
margin: 0 2vw;
position: relative;
top: -1vw;
.card-left-img {
width: 9vw;

View File

@ -2,8 +2,8 @@
"name" : "护理单元",
"appid" : "__UNI__FB2D473",
"description" : "护理单元",
"versionName" : "1.0.027",
"versionCode" : 10027,
"versionName" : "1.0.028",
"versionCode" : 10028,
"transformPx" : false,
/* 5+App */
"app-plus" : {

View File

@ -279,7 +279,7 @@
<severcard ref="severcards"></severcard>
<!-- <severcard ref="severcards"></severcard> -->
</template>
<script setup lang="ts">
@ -638,7 +638,6 @@
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)

View File

@ -1,6 +1,15 @@
<template>
<view>
<view class="swipeservwe">
<view class="swper" v-if="plsbuy.length==0">
<view class="photo-father">
<image class="big-img" style="width: 550rpx;top:30%;" :src="`/static/index/newindex/wendu/2.png`" mode="aspectFill"/>
<view class="juzhong" style=" filter:grayscale(60%)" >
<donghua :width="`1300rpx`" :height="`900rpx`" :links="blueArray" :playing="true" :loop="true"
:interval="120" />
</view>
</view>
</view>
<view class="btn les" @click="swip(-1)" v-if="plsbuy.length>1">
<image class="pao-img" :src="`/static/index/newindex/states/ris.png`"
style="transform: rotate(180deg);" />
@ -9,7 +18,7 @@
<image class="pao-img" :src="`/static/index/newindex/states/ris.png`" />
</view>
<view class="bots" v-if="plsbuy.length>1">
<view v-for="(v,i) in plsbuy" :key='i' :class="current==i?'dot':''"></view>
<view v-for="(v,i) in plsbuy" :key='i' :class="current==i?'dot':''" :style="v?.chaoshitime?'background:red':''" @click="change({'detail':{'current':i}})"></view>
</view>
<swiper class="swiper" :circular="true" :indicator-dots="false" easing-function="easeInOutCubic"
:autoplay="autoplay" :interval="3000" :duration="500" :current="current" @change="change">
@ -20,9 +29,9 @@
<donghua :width="`1000rpx`" :height="`700rpx`" :links="blueArray" :playing="current==i"
:loop="true" :interval="120" />
</view>
<view class="timedjs">
<view class="timedjs" v-if="current==i&&indexmessage?.izStart=='Y'" >
<text>服务倒计时</text>
<timeing v-if="current==i&&indexmessage?.izStart=='Y'" :initTime="djstinme" :timeoutDuration="Number(indexmessage.timeoutDuration)" @timeend="timeend"></timeing>
<timeing :initTime="djstinme" :timeoutDuration="Number(indexmessage.timeoutDuration)*60" @timeend="timeend"></timeing>
</view>
<view class="weight-time">
<view>
@ -44,13 +53,15 @@
</view>
<view class="cardbox" v-if="indexmessage.izPackage=='Y'&&indexmessage?.izStart=='Y'||indexmessage.flag">
<scroll-view scroll-y="true" class="scrollcard" @touchmove.stop>
<view class="itemcard" v-for="(v,i) in zlarr" :key='i' :class="v.flag?'act':''" @click="zldex(v)">
<image :src="!v.flag?`/static/index/newindex/states/xs.png`:'/static/index/newindex/states/xsz.png'" />
<text>强直屈曲洗手</text>
<view v-if="i>2">(大体重)</view>
<!-- <image :src="fwzldex!=i?v.netImmediateFile:v.netPreviewFileSmall" mode="aspectFill"></image>
<text >{{v.directiveName?.substring(0,4)}}</text>
<view>{{v.directiveName?.substring(4,12)}}</view> -->
<view class="itemcard" v-for="(v,s) in indexmessage.servebao" :class="{'act':v.flag,'last':v.last}" :key='s' @click="zldex(v,indexmessage.servebao,s)">
<view class="brcard">
<view class="bgs" v-if="v.last">
<image src="/static/index/newtarget.png" mode=""></image>
</view>
</view>
<image :src="!v.flag? serverUrl + v.immediateFile: serverUrl + v.immediateFileFocus" />
<text>{{v.match[0]}}</text>
<view v-if="v.match[1]" style="position: relative;z-index: 2;">({{v.match[1]}})</view>
</view>
</scroll-view>
</view>
@ -107,14 +118,14 @@
</view>
<view @click="errmsgclk(1,1,indexmessage)">
<view class="left-ball"
:style="indexmessage?.mp3File!=''?' ':'opacity: 0.4'">
:style="indexmessage?.mp3File!=''&&indexmessage.izPackage!='Y'?' ':'opacity: 0.4'">
<image class="left-menu-img"
:src="'/static/index/newindex/leftmenu/left'+1+'.png'" />
</view>
</view>
<view @click="errmsgclk(2,1,indexmessage)" >
<view class="left-ball"
:style="indexmessage?.mp4File!=''?' ':'opacity: 0.4'">
:style="indexmessage?.mp4File!=''&&indexmessage.izPackage!='Y'?' ':'opacity: 0.4'">
<image class="left-menu-img"
:src="'/static/index/newindex/leftmenu/left'+2+'.png'" />
</view>
@ -141,7 +152,7 @@
</view>
</view>
<view style="margin:1.5vw 0;width:4vw;margin-left: 20rpx;" @click="zhixing(2,indexmessage)">
<view class="white-circle">
<view class="white-circle" :style="indexmessage?.izStart=='Y'?'opacity: 0.4' : ''">
<image class="right-menu-img" :src="'/static/index/newindex/rightmenu/2.png'" />
<view class="right-menu-name">
协助执行
@ -255,10 +266,10 @@
</view>
</view>
<tanchuang :show="open==1" font="是否删除此图片" @back="open = 0" @right="del1()"> </tanchuang>
<errorshow :show="openerror" :font="errmsg" @close="openerror=false" style="left: 44%;"/>
<severcard ref="severcards" style="display: none;"></severcard>
<severcard ref="severcards" ></severcard>
</view>
</template>
@ -278,8 +289,13 @@
const serverpicUrl = ref(uni.getStorageSync('serverUrl') + '/sys/common/static/')
const current = ref(0)
const autoplay = ref(false)
const severcards = ref<InstanceType<typeof ChildComponent>>()
const init = (e) => {
firstgetqueryCgdList(e)
firstgetqueryCgdList(e);
setTimeout(()=>{
console.log(111)
severcards.value.firstgetqueryCgdList()
},120)
}
defineExpose({
init
@ -305,10 +321,14 @@
console.log(timestampMs,'结束时间戳')
console.log(times,'当前时间戳')
console.log(Math.round(djs/1000),'倒计时时间戳')
djstinme.value = Math.round(djs/1000)
djstinme.value = Math.round(djs/1000);
if(djstinme.value<0){
plsbuy.value[current.value].chaoshitime = true
}
}
const timeend = () =>{
//
plsbuy.value.splice(current.value,1)
firstgetqueryCgdList(form.nuId)
}
const swip = (e) => {
@ -337,11 +357,13 @@
const zdxzdex = ref(0)
const zdxzarr = ref(0)
const zhixing = (e,indexmessage) => {
if (indexmessage.value?.izStart == 'Y' && e == 1) {
uni.showToast({
title: '服务中不能转单!',
icon: 'none'
})
if (indexmessage?.izStart == 'Y' ) {
errmsg.value = (e==1?"服务中不能转单执行!":'服务中不能协助执行!')
openerror.value = true
return
}else{
errmsg.value ='敬请期待~'
openerror.value = true
return
}
queryEmpList({ id: uni.getStorageSync('userInfo').id }).then(res => {
@ -446,6 +468,39 @@
}
})
}
}
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;
}
const clickLeftMenu = (index : any, item : object) => {
queryOrderInfoList({ mainId: item.id }).then(res => {
if (res.result.length > 0) {
res.result.forEach((item,i)=>{
item.flag = false;
item.match = splitString(item.directiveName)
})
plsbuy.value[index].servebao = res.result
}
})
}
// const indexmessage = ref({});
const firstgetqueryCgdList = (nuId) => {
@ -453,18 +508,27 @@
queryOrderList(form).then(res => {
console.log(res.result.records)
if (res.result.records.length > 0) {
res.result.records.forEach(item=>{
item.flag = false
res.result.records.forEach((item,l)=>{
item.flag = false ;
item.servebao = [];
let timestampMs = new Date(item.endTime).getTime();
let times = new Date().getTime();
let djs = timestampMs - times;
if(djs<0){
item.chaoshitime = true
}
if(item.izPackage=='Y'){
clickLeftMenu(l,item)
}
})
plsbuy.value = res.result.records;
change({detail:{current:current.value}})
// indexmessage.value = res.result.records[0]
// clickLeftMenu(0,res.result.records[0])
} else {
plsbuy.value = [];
}
})
}
const submit = () => {
let sub = "";
ilanarr.value.forEach(item => {
@ -584,7 +648,6 @@
});
}
}
const severcards = ref<InstanceType<typeof ChildComponent>>()
const start = (v) => {
if (v.izStart != 'N') { return }
startOrder({ id: v.id }).then(res => {
@ -592,6 +655,7 @@
if (res.success) {
v.izStart = "Y";
severcards.value.firstgetqueryCgdList()
timeacde()
} else {
@ -611,7 +675,7 @@
if (res.success) {
open.value = 0;
endobj.value = {};
// severcards.value.firstgetqueryCgdList()
severcards.value.firstgetqueryCgdList()
firstgetqueryCgdList(uni.getStorageSync('nuId'))
} else {
@ -622,8 +686,28 @@
const errmsg = ref('')
const openerror = ref(false);
const errmsgclk = (e, k, indexmessage) => {
console.log(e, k, indexmessage)
if (k == 1) {
if (indexmessage.value?.izStart == 'Y') {
if(indexmessage.izPackage=='Y'&&e==0){
if(indexmessage.flag||indexmessage.izStart == 'Y'){
let last = indexmessage.servebao.find(item => item.last === true);
console.log(last)
if(!!last){
errmsg.value = last?.serviceContent==''?'暂无数据':last?.serviceContent
openerror.value = true;
}else{
errmsg.value = indexmessage?.serviceContent
openerror.value = true;
}
}else{
errmsg.value = indexmessage?.serviceContent
openerror.value = true;
}
}
if (indexmessage?.izStart == 'Y'&&indexmessage.izPackage!='Y') {
switch (e) {
case 0:
if (indexmessage?.serviceContent == '') { return }
@ -685,9 +769,33 @@
const fwzlindex = ref(0);
const fwzldex = ref(-1);
const fwzlarr = ref(0);
const zlarr = ref([{ flag: false }, { flag: false }, { flag: false }, { flag: false }, { flag: false }, { flag: false }, { flag: false }, { flag: false }, { flag: false }]);
const zldex = (e) => {
const fwzlbobj = ref({})
const zldex = (e,f,k) => {
e.flag = !e.flag
if(e.flag){
e.last = true;
f.forEach((item,i)=>{
if(k!=i){
item.last = false;
}
})
}else{
if(e.last == false){return}
e.last = false;
let arr = []
f.forEach((item,i)=>{
if(item.flag){
arr.push(i)
}
})
if(arr.length==0){
}else{
f[arr[arr.length-1]].last = true;
fwzlbobj.value = f[arr.length-1]
}
}
}
const base = genPaths(
@ -839,16 +947,17 @@
right: 1.5vw;
}
.swiper {
width: 100%;
height: 100%;
.swper {
width: 100%;
height: 100%;
position: relative;
}
}
}
.swiper {
width: 100%;
height: 100%;
}
.swper {
width: 100%;
height: 100%;
position: relative;
}
.lanbt {
@ -917,7 +1026,7 @@
top: 15%;
left: 50%;
transform: translate(-50%, -25%);
z-index: -1;
z-index: 1;
}
.cardbox {
@ -948,17 +1057,18 @@
.itemcard {
width: 11.2vw;
height: 8vw;
background: rgba(255,255,255,0.5);
border-radius: 1.6vw;
margin: 1.2vw 1.5vw 0 0vw;
display: inline-block;
border: 2rpx solid #DCDCDC;
text-align: center;
position: relative;
overflow: hidden;
image {
width: 3.3vw;
height: 3.3vw;
margin: 0.8vw auto 0vw;
position: relative;
z-index: 2;
}
text {
@ -971,6 +1081,8 @@
width: 100%;
text-overflow: ellipsis;
overflow: hidden;
position: relative;
z-index: 2;
}
view {
@ -982,11 +1094,33 @@
}
}
.brcard{
width: 11.2vw;
height: 8vw;
border-radius: 1.6vw;
border: 2rpx solid #DCDCDC;
position: absolute;
top: 0vw;
bottom:0vw;
background: rgba(255,255,255,0.5);
z-index: 0;
}
.bgs{
width: 11.2vw;
height: 8vw;
position: absolute;
top: -1.05vw;
left:-0.15vw;
image{
width: 103%;
height: 105%;
}
}
.act {
background: rgba(255,255,255,0.6);
border: 2rpx dashed #0089FE;
.brcard{
background: rgba(255,255,255,0.6);
border: 2rpx dashed #0089FE;
}
text,
view {
color: #017DE9;

View File

@ -137,7 +137,7 @@ export default {
// clearInterval(this.timerTwo);
// clearInterval(this.timer);
}
if(flag == this.timeoutDuration&&this.isDown == false){
if(flag >= this.timeoutDuration+2 && this.isDown == false){
clearInterval(this.timerTwo);
clearInterval(this.timer);
this.$emit('timeend')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -570,7 +570,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
)
]);
}
const camera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/hldy_app_mini/pages/camera.nvue"]]);
const camera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/项目/hldy_app_mini/pages/camera.nvue"]]);
export {
camera as default
};

View File

@ -578,7 +578,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
)
]);
}
const fullcamera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/hldy_app_mini/pages/fullcamera.nvue"]]);
const fullcamera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/项目/hldy_app_mini/pages/fullcamera.nvue"]]);
export {
fullcamera as default
};