优化结构

This commit is contained in:
lixiao 2025-07-15 11:35:51 +08:00
parent 04aebbe02d
commit 1e18d932f8
9 changed files with 146 additions and 40 deletions

View File

@ -3,7 +3,7 @@ import hilog from '@ohos.hilog';
import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import window from '@ohos.window';
import { requestPermission } from '../utils/system';
import { requestPermission } from '../utils/SystemUtils';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {

View File

@ -68,12 +68,12 @@ struct Home {
// router.pushUrl({
// url: "pages/ProjectCheck"
// }, router.RouterMode.Single)
// router.pushUrl({
// url: "pages/Scan"
// }, router.RouterMode.Single)
router.pushUrl({
url: "pages/Sign"
url: "pages/Scan"
}, router.RouterMode.Single)
// router.pushUrl({
// url: "pages/Sign"
// }, router.RouterMode.Single)
})
}.width("100%")
}.layoutWeight(1).padding({ left: "36%", right: "36%", top: "10%" })

View File

@ -1,4 +1,4 @@
import { CameraUtils } from '../utils/cameraUtils';
import { CameraUtils } from '../utils/CameraUtils';
import Header from '../components/Header';
import Footer from '../components/Footer';
import common from '@ohos.app.ability.common';
@ -6,17 +6,17 @@ import common from '@ohos.app.ability.common';
@Entry
@Component
struct Scan {
@State showVideo: boolean = false
@State showVideo: boolean = true
private xComponentController: XComponentController = new XComponentController()
private cameraUtils: CameraUtils = new CameraUtils(getContext(this) as common.UIAbilityContext)
private cameraUtils?: CameraUtils
private surfaceId: string = ""
aboutToAppear(): void {
this.cameraUtils = new CameraUtils(getContext(this) as common.UIAbilityContext)
}
aboutToDisappear(): void {
this.cameraUtils.destroy()
this.cameraUtils?.destroy()
}
build() {
@ -31,8 +31,8 @@ struct Scan {
controller: this.xComponentController
}).onLoad(() => {
this.surfaceId = this.xComponentController.getXComponentSurfaceId()
this.cameraUtils.init(this.surfaceId).then(() => {
this.cameraUtils.startPreview()
this.cameraUtils?.init(this.surfaceId).then(() => {
this.cameraUtils?.startPreview()
})
}).width("100%").height("100%").renderFit(RenderFit.RESIZE_CONTAIN)
} else {

View File

@ -52,33 +52,38 @@ struct Sign {
Header()
Column() {
Text("车主签名").fontSize(32).fontColor(0x161B21).fontWeight(700).margin({ top: 36, bottom: 36 })
Canvas(this.context)
.backgroundColor(0xffffff)
.layoutWeight(1)
.width("100%")
.onReady(() => {
this.isReady = true
this.context.fillStyle = "#ffffff"
this.context.fillRect(0, 0, this.context.width, this.context.height)
})
.onTouch(event => {
switch (event.type) {
case TouchType.Down:
this.onStart(event)
break
case TouchType.Up:
this.onStop(event)
break
case TouchType.Move:
this.onMove(event)
break
case TouchType.Cancel:
this.onStop(event)
break
default:
return
}
})
if (this.base64) {
Image(this.base64).layoutWeight(1).width("100%")
} else {
Canvas(this.context)
.backgroundColor(0xffffff)
.layoutWeight(1)
.width("100%")
.onReady(() => {
this.isReady = true
this.context.fillStyle = "#ffffff"
this.context.fillRect(0, 0, this.context.width, this.context.height)
})
.onTouch(event => {
switch (event.type) {
case TouchType.Down:
this.onStart(event)
break
case TouchType.Up:
this.onStop(event)
break
case TouchType.Move:
this.onMove(event)
break
case TouchType.Cancel:
this.onStop(event)
break
default:
return
}
})
}
Row() {
CusButton({ label: "确认", buttonType: CusButtonType.Primary }).margin({ right: 12 }).onClick(() => {
this.submit()

View File

@ -1,4 +1,4 @@
import common from '@ohos.app.ability.common'
import common from '@ohos.app.ability.common';
import fs from '@ohos.file.fs';
import zlib from '@ohos.zlib';

View File

@ -0,0 +1,101 @@
import socket from '@ohos.net.socket'
import util from '@ohos.util'
import { BusinessError } from '@ohos.base'
interface TcpClientOption {
address: string
port: number
maxReconnectCount?: number
timeout?: number
}
type Callback<T = string | BusinessError | void> = (message: T) => void
type EventType = "message" | "error"
class TcpClient {
private socket: socket.TCPSocket
private address: string
private port: number
private maxReconnectCount: number
private timeout: number
private messageCallback: Map<EventType, Callback[]> = new Map()
constructor(option?: TcpClientOption) {
this.messageCallback.set("message", [])
this.messageCallback.set("error", [])
this.address = option.address
this.port = option.port
this.maxReconnectCount = option.maxReconnectCount || 5
this.timeout = option.timeout || 1000 * 6
this.socket = socket.constructTCPSocketInstance()
}
connect() {
return this.socket.connect({
address: {
address: this.address,
port: this.port
},
timeout: this.timeout
}).then(() => {
this.socket.on("message", (data) => {
let string = util.TextDecoder.create().decodeWithStream(new Uint8Array(data.message))
this.messageCallback.get("message").forEach(cb => {
cb(string)
})
})
this.socket.on("error", (error) => {
this.messageCallback.get("error").forEach(cb => {
cb(error)
})
})
})
}
reconnect() {
this.socket.close()
this.socket = socket.constructTCPSocketInstance()
this.connect()
}
on(event: EventType, cb: Callback) {
switch (event) {
case "message":
this.messageCallback.get("message")!.push(cb)
break;
case "error":
this.messageCallback.get("error")!.push(cb)
default:
break;
}
}
off(event: EventType, cb: Callback) {
let index: number
switch (event) {
case "message":
index = this.messageCallback.get("message")!.findIndex(item => item === cb)
this.messageCallback.get("message")!.splice(index, 1)
break;
case "error":
index = this.messageCallback.get("error")!.findIndex(item => item === cb)
this.messageCallback.get("error")!.splice(index, 1)
default:
break;
}
}
send(data: string | ArrayBuffer) {
return new Promise<void>((resolve, reject) => {
this.socket.send({ data }).then(resolve).catch((err: BusinessError) => {
})
})
}
destroy() {
this.socket.close()
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 274 KiB