From fb026e6052b4d843d327312db398cf791ac57ab9 Mon Sep 17 00:00:00 2001
From: cyy <cuiqian2004@163.com>
Date: 星期日, 28 九月 2025 22:43:29 +0800
Subject: [PATCH] test
---
pages/task/list.vue | 184 +++++++++++++++++++++++++++++-----------------
1 files changed, 116 insertions(+), 68 deletions(-)
diff --git a/pages/task/list.vue b/pages/task/list.vue
index 0f2d992..e7d9573 100644
--- a/pages/task/list.vue
+++ b/pages/task/list.vue
@@ -3,11 +3,12 @@
<view class="list-content" v-if="list.length > 0">
<view class="list-header" v-if="fixedList.length > 0">鍥哄畾浠诲姟</view>
<uni-swipe-action class="list">
- <uni-swipe-action-item :class="index== 0 ?'':'list-item'" v-for="(item,index) in fixedList" :key="index"
+ <uni-swipe-action-item class="list-item" v-for="(item,index) in fixedList" :key="index"
:auto-close="true" :disabled="taskStatus.taskGroupID == item.taskGroupID">
- <TaskItemView :taskData="item" :taskStatus="taskStatus" @click-item="clickEditTask"
- @click-play="clickPlayTask" @click-pause="clickPauseTask" @click-stop="clickStopTask"
- @click-skip="clickSkipTask" @click-repeat="clickRepeatTask">
+ <TaskItemView :taskData="item" :taskStatus="taskStatus" :showTaskRunning="showTaskRunning"
+ @click-btn="clickTaskBtn" @click-item="clickEditTask" @click-play="clickPlayTask"
+ @click-pause="clickPauseTask" @click-stop="clickStopTask" @click-skip="clickSkipTask"
+ @click-repeat="clickRepeatTask">
</TaskItemView>
<template v-slot:right>
<view class="btn-del" @click="clickDelSetTask(item)">鍒犻櫎</view>
@@ -16,12 +17,12 @@
</uni-swipe-action>
<view class="list-header" v-if="tempList.length > 0">涓存椂浠诲姟</view>
<uni-swipe-action class="list">
- <uni-swipe-action-item :class="index== 0 ?'':'list-item'" v-for="(item,index) in tempList" :key="index"
+ <uni-swipe-action-item class="list-item" v-for="(item,index) in tempList" :key="index"
:auto-close="true" :disabled="taskStatus.taskGroupID == item.taskGroupID">
- <TaskItemView :taskData="item" :taskStatus="taskStatus" @click-item="clickEditTask"
- @click-play="clickPlayTask" @click-pause="clickPauseTask" @click-stop="clickStopTask"
- @click-skip="clickSkipTask" @click-repeat="clickRepeatTask">
- </TaskItemView>
+ <TaskItemView :taskData="item" :taskStatus="taskStatus" :showTaskRunning="showTaskRunning"
+ @click-btn="clickTaskBtn" @click-item="clickEditTask" @click-play="clickPlayTask"
+ @click-pause="clickPauseTask" @click-stop="clickStopTask" @click-skip="clickSkipTask"
+ @click-repeat="clickRepeatTask"></TaskItemView>
<template v-slot:right>
<view class="btn-del" @click="clickDelSetTask(item)">鍒犻櫎</view>
</template>
@@ -32,7 +33,7 @@
<uni-icons color="#ccc" type="info" size="128"></uni-icons>
<view class="space">娌℃湁鎵惧埌绗﹀悎鏉′欢鐨勪换鍔�/view>
</view>
- <view class="position-add" @click="clickAddTask()" @touchstart='btnAddTouchStart' @touchmove='btnAddTouchMove'
+ <view class="position-add" @click="clickAddTask" @touchstart='btnAddTouchStart' @touchmove='btnAddTouchMove'
:style="{transform:`translate(${btnAddInfo.x}px,${btnAddInfo.y}px) scale(1)`}">
<uni-icons class="img" type="plus-filled" size="80" color="#1890FF"></uni-icons>
</view>
@@ -44,6 +45,8 @@
showToast,
showModal,
session,
+ showError,
+ showInfo
} from "@/comm/utils.js"
import TaskItemView from "./infos/task-item.vue"
import {
@@ -57,6 +60,9 @@
import {
v4 as uuidv4
} from 'uuid';
+ import {
+ filter
+ } from "rxjs";
export default {
name: "PagesTasklist",
components: {
@@ -64,6 +70,7 @@
},
data() {
return {
+ loading:false,
ip: "",
sceneId: "",
list: [],
@@ -85,6 +92,7 @@
x: 0,
y: 0
},
+ showTaskRunning: false,
}
},
computed: {
@@ -98,7 +106,23 @@
onLoad(option) {
this.ip = option.ip || ""
this.sceneId = option.sceneId || ""
- this.loadData()
+ this.isPageVisible = true
+ this.$nextTick(()=>{
+ this.loadData()
+ })
+
+ },
+ onShow() {
+ this.isPageVisible = true
+
+
+ },
+ onHide() {
+ this.isPageVisible = false
+
+ },
+ onUnload() {
+ this.isPageVisible = false
},
methods: {
setData(obj) {
@@ -135,56 +159,69 @@
}
this.btnAddInfo = btninfo
}
+ this.loadTaskList()
+ this.timerCheckTaskGroupStatus()
+
+ } catch (ex) {
+
+ showError(ex)
+ }
+ },
+ async loadTaskList() {
+ try {
const res = await tasks(this.ip)
const list = res?.data || []
this.list = list
- if (this.list.length > 0) {
- this.timerCheckTaskGroupStatus()
- }
+ showToast(`瑁呰浇浜�{list.length}浠诲姟`)
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
+
},
+
async timerCheckTaskGroupStatus() {
- if (this.timerCheckStatusId) {
- return
+ try {
+ if (this.isPageVisible)
+ await this.checkTaskGroupStatus()
+ // setTimeout(this.timerCheckTaskGroupStatus, 1000);
+ } catch (ex) {
+ showToast(ex)
+ // showError(ex).then((res)=>{
+ // setTimeout(this.timerCheckTaskGroupStatus, 1000);
+ // })
+ } finally {
+ setTimeout(this.timerCheckTaskGroupStatus, 1000);
}
- if (this.list.length == 0) {
- return
- }
- await this.checkTaskGroupStatus()
- this.timerCheckStatusId = setTimeout(() => {
- this.timerCheckStatusId = 0
- this.timerCheckTaskGroupStatus()
- }, 1000)
},
async checkTaskGroupStatus() {
try {
- const key = `task_cmd_id_${this.ip.replace(".","_")}`
- const cmdID = session.getValue(key)
- if (cmdID) {
- const info = await taskGroupStatus(this.ip) || {}
- if (info.taskGroupCmdID == cmdID) {
-
- const list = info.taskStatusList || []
+ const info = await taskGroupStatus(this.ip) || {}
+ if (info.taskGroupID) {
+ if (this.list.length == 0) {
+ await this.loadTaskList()
+ }
+ const curIndex = this.list.findIndex((a) => a.taskGroupID == info.taskGroupID)
+ if (curIndex > -1) {
+ let list = info.taskStatusList || []
+ list = list.filter((a) => a.cycleNumber == info.curCycleNumber)
for (let i in list) {
- if (list[i].status != 1 && list[i].status != 0) {
- this.taskStatus = {}
+ if (list[i].status == 1 || list[i].status == 0) {
+ this.taskStatus = info
return
}
}
- this.taskStatus = info
+ this.taskStatus = {}
return
}
-
}
+
this.taskStatus = {}
} catch (ex) {
this.taskStatus = {}
- this.showError(ex)
+ showToast(ex)
}
},
setTaskGroupStatus(cmdID) {
@@ -194,12 +231,13 @@
},
clickAddTask() {
const _this = this
+
uni.navigateTo({
url: `/pages/task/add?ip=${this.ip}&title=鏂板浠诲姟`,
events: {
// 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁
add_task: function(data) {
- _this.loadData()
+ _this.loadTaskList()
},
}
})
@@ -244,8 +282,9 @@
session.setValue('task_btn_add', this.btnAddInfo)
},
-
-
+ clickTaskBtn(item) {
+ this.showTaskRunning = !this.showTaskRunning
+ },
clickEditTask(item) {
const _this = this
if (this.taskStatus.taskGroupID == item.taskGroupID) {
@@ -278,15 +317,16 @@
this.setTaskGroupStatus(cmdID)
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
async clickStopTask(item) {
try {
await addTaskGroupCmd(this.ip, item.taskGroupID, this.taskStatus.taskGroupCmdID, 2)
+ showToast("缁堟浠诲姟鎴愬姛")
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
@@ -294,7 +334,8 @@
try {
- const taskStatusList = this.taskStatus.taskStatusList || []
+ let taskStatusList = this.taskStatus.taskStatusList || []
+ taskStatusList = taskStatusList.filter((a) => a.cycleNumber == this.taskStatus.curCycleNumber)
let curIdx = taskStatusList.findIndex((a) => a.status == 1)
if (curIdx < 0)
curIdx = taskStatusList.findIndex((a) => a.status == 0)
@@ -306,7 +347,7 @@
})
await cancelTask(this.ip,
item.taskGroupID,
- this.taskStatus.taskGroupCmdID,
+ this.taskStatus.taskGroupCmdID,
taskList
)
@@ -316,7 +357,7 @@
showToast("鏈壘鍒版湭寮�鎴栨鍦ㄦ墽琛岀殑瀛愪换鍔�)
}
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
@@ -327,7 +368,7 @@
async clickPauseTask(item) {},
clickDelSetTask(item) {
- showModal("纭鍒犻櫎浠诲姟璁剧疆", "璀﹀憡").then((res) => {
+ showModal("纭鍒犻櫎浠诲姟璁剧疆", "璀﹀憡", true, "纭畾", "鍙栨秷").then((res) => {
if (res) {
this.deleteTask(item)
@@ -343,26 +384,19 @@
const index = list.findIndex((a) =>
a.taskGroupID == item.taskGroupID
)
- console.log(index, item, list)
+ showToast("鍒犻櫎浠诲姟鎴愬姛")
if (index < 0)
return
list.splice(index, 1)
this.list = [...list]
} catch (ex) {
- this.showError(ex)
+ showError(ex)
}
},
- showError(ex) {
- let exStr = JSON.stringify(ex)
- if (exStr == "{}")
- exStr = ex
- let tip = typeof ex.msg == "string" ? ex.msg : exStr
- showModal(tip, "閿欒", false)
- },
}
}
</script>
@@ -378,15 +412,26 @@
.list-content {
display: flex;
width: 100%;
- padding: 0 10px;
+ padding: 10rpx 10px;
flex: 1;
flex-direction: column;
overflow-y: auto;
overflow-x: hidden;
.list-header {
- margin: 10px;
+ margin: 10rpx 10px;
// border-bottom: 1px solid #ddd;
+ }
+
+ .btn-del {
+ // margin: 10rpx;
+ display: flex;
+ padding: 0 10rpx;
+ background-color: #FF4D4F;
+ font-weight: 700;
+ color: #fff;
+ justify-content: center;
+ align-items: center;
}
.list {
@@ -397,20 +442,23 @@
.list-item {
- border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
}
+
+ .list-item:first-child {
+ border-top-right-radius: 10px;
+ /* 鍙充笅瑙�*/
+ }
+
+ .list-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 10px;
+ /* 鍙充笅瑙�*/
+ }
+
}
- .btn-del {
- margin: 10rpx;
- display: flex;
- padding: 0 10rpx;
- background-color: #FF4D4F;
- font-weight: 700;
- color: #fff;
- justify-content: center;
- align-items: center;
- }
+
}
--
Gitblit v1.9.1