新版打包监控,不再用前端轮询
This commit is contained in:
		| @@ -57,7 +57,7 @@ export default { | ||||
|         {prop: "dist", label: "更新路径"}, | ||||
|         {slot: 'process'}, | ||||
|       ], | ||||
|       timer: {} | ||||
|       ws: {} | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
| @@ -107,34 +107,32 @@ export default { | ||||
|       }) | ||||
|     }, | ||||
|     handleUpdate(row) { | ||||
|       let {id} = row, {timer} = this | ||||
|       this.instance.post("/node/custom/getZip", null, { | ||||
|         params: {id} | ||||
|       }).then(res => { | ||||
|         if (res?.code == 0) { | ||||
|           row.count = 1 | ||||
|           timer[id] = setInterval(() => { | ||||
|             if (row.count >= 100) { | ||||
|               clearInterval(timer[id]) | ||||
|       let {id} = row | ||||
|       if (!this.ws[id]) { | ||||
|         this.ws[id] = new WebSocket(`ws://192.168.1.87:12525/custom/getZip?id=${id}`) | ||||
|         this.ws[id].onmessage = res => { | ||||
|           if (res?.data) { | ||||
|             const data = JSON.parse(res.data) | ||||
|             if (data.code == '0') { | ||||
|               row.count = data.progress | ||||
|               if (row.count == 100) { | ||||
|                 row.count = 0 | ||||
|                 this.$message.success("打包成功!") | ||||
|                 this.refreshRow(row, data.remark) | ||||
|               } | ||||
|             } else if (data.code == 1) { | ||||
|               row.count = 0 | ||||
|               this.$message.error("打包失败!") | ||||
|             } else if (row.count % 2 == 0 && row.target) { | ||||
|               row.count++ | ||||
|             } else this.getRowById(row.id).then(v => { | ||||
|               if (v.error) { | ||||
|                 clearInterval(timer[id]) | ||||
|                 this.$message.error("打包失败!") | ||||
|                 this.refreshRow(row, v) | ||||
|                 row.count = 0 | ||||
|               } else if (v.download) { | ||||
|                 clearInterval(timer[id]) | ||||
|                 this.refreshRow(row, v) | ||||
|                 row.count = 0 | ||||
|               } else row.count++ | ||||
|             }) | ||||
|           }, 6000) | ||||
|               this.refreshRow(row, data.row) | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       }) | ||||
|         this.ws[id].onclose = () => { | ||||
|           row.count = 0 | ||||
|           this.ws[id].close() | ||||
|           delete this.ws[id] | ||||
|         } | ||||
|       } else this.ws[id]?.send(JSON.stringify({id})) | ||||
|     }, | ||||
|     refreshRow(row, v) { | ||||
|       row.error = v.error | ||||
| @@ -148,15 +146,9 @@ export default { | ||||
|     }, | ||||
|     handleCancelUpdate(row) { | ||||
|       let {id} = row | ||||
|       return this.instance.post("/node/custom/cancelZip", null, { | ||||
|         params: {id} | ||||
|       }).then(res => { | ||||
|         if (res?.code == 0) { | ||||
|           clearInterval(this.timer[id]) | ||||
|           row.count = 0 | ||||
|           this.getRowById(row.id).then(v => this.refreshRow(row, v)) | ||||
|         } | ||||
|       }) | ||||
|       this.ws[id].send(JSON.stringify({ | ||||
|         cid: id | ||||
|       })) | ||||
|     }, | ||||
|     getRowById(id) { | ||||
|       return this.instance.post("/node/custom/detail", null, { | ||||
| @@ -179,7 +171,7 @@ export default { | ||||
|     this.getTableData() | ||||
|   }, | ||||
|   beforeDestroy() { | ||||
|     Object.values(this.timer).map(t => clearInterval(t)) | ||||
|     Object.values(this.ws).map(t => t.close()) | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user