fix: 重构轨迹查看
This commit is contained in:
parent
d938aa41ac
commit
084efe2e74
@ -1,4 +1,4 @@
|
|||||||
import { AmplifyItem } from '../model'
|
import { AmplifyItem, PerLane } from '../model';
|
||||||
|
|
||||||
export const AmplifyArr: AmplifyItem[] = [
|
export const AmplifyArr: AmplifyItem[] = [
|
||||||
{ name: '直线', projectCode: '3', projectCodeCenter: '40300' },
|
{ name: '直线', projectCode: '3', projectCodeCenter: '40300' },
|
||||||
@ -16,4 +16,33 @@ export const AmplifyImages = [
|
|||||||
'km_ccB.png',
|
'km_ccB.png',
|
||||||
'km_dtB.png',
|
'km_dtB.png',
|
||||||
'km_tcB.png',
|
'km_tcB.png',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
export const InitialPerLane: PerLane = {
|
||||||
|
MapRoad_Code_No: "",
|
||||||
|
MapRoad_Name: "",
|
||||||
|
TouchLineType: 0,
|
||||||
|
TouchDir: 0,
|
||||||
|
TouchLineTypeCS: 0,
|
||||||
|
TouchLineDirCS: 0,
|
||||||
|
BasePointInLaneNo: 0,
|
||||||
|
BaseLaneCount: 0,
|
||||||
|
FrontPointLaneNo: 0,
|
||||||
|
FrontPointLaneCount: 0,
|
||||||
|
Body_LF_ToLeftEdge: 0,
|
||||||
|
Body_LB_ToLeftEdge: 0,
|
||||||
|
Body_RF_ToRightEdge: 0,
|
||||||
|
Body_RB_ToRightEdge: 0,
|
||||||
|
Wheel_RF_ToRightEdge: 0,
|
||||||
|
Wheel_RB_ToRightEdge: 0,
|
||||||
|
Wheel_RF_ToBaseLine: 0,
|
||||||
|
Wheel_LF_ToRightEdge: 0,
|
||||||
|
Wheel_LB_ToRightEdge: 0,
|
||||||
|
Wheel_LF_ToBaseLine: 0,
|
||||||
|
Wheel_LB_ToBaseLine: 0,
|
||||||
|
BasePointInLaneDir: "",
|
||||||
|
CrossLineAttr: 0,
|
||||||
|
InShapeAttr: 0,
|
||||||
|
ShapeNo: 0,
|
||||||
|
CrossPointNo: 0
|
||||||
|
};
|
||||||
@ -742,7 +742,7 @@ export interface JudgePerformInfo {
|
|||||||
lane: PerLane
|
lane: PerLane
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PerLane {
|
export interface PerLane {
|
||||||
MapRoad_Code_No: string
|
MapRoad_Code_No: string
|
||||||
MapRoad_Name: string
|
MapRoad_Name: string
|
||||||
TouchLineType: number
|
TouchLineType: number
|
||||||
|
|||||||
@ -1,19 +1,36 @@
|
|||||||
import router from '@ohos.router'
|
import router from '@ohos.router'
|
||||||
import { GPSData, SignalData } from '../../mock'
|
import { GPSData, InitialPerLane, SignalData } from '../../mock'
|
||||||
import { EnvironmentConfigurationType, SignalDataType, WorkerBackMessage } from '../../model'
|
import { EnvironmentConfigurationType, PerLane, RoadDataType, SignalDataType, WorkerBackMessage } from '../../model'
|
||||||
import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignal'
|
import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignal'
|
||||||
|
import apiJudgeSdk from 'libJudgeSdk.so'
|
||||||
|
import { examJudgeMapSetScaling } from '../judgeSDK/api'
|
||||||
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
export default struct SignalDisplayComponent {
|
export default struct SignalDisplayComponent {
|
||||||
@State sjxhColum: Array<SignalDataType> = SignalData
|
// 车载信号
|
||||||
|
@State vehicleSignal: Array<SignalDataType> = SignalData
|
||||||
|
// 信号数组
|
||||||
@State signArr: Array<string> = []
|
@State signArr: Array<string> = []
|
||||||
|
// GPS信号
|
||||||
@State GPSColum: Array<SignalDataType> = GPSData
|
@State GPSColum: Array<SignalDataType> = GPSData
|
||||||
|
// tab选中
|
||||||
|
@State active: number = 0
|
||||||
|
// 原始数据
|
||||||
|
@State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
|
||||||
|
// 车道信息
|
||||||
|
@State laneSignal: PerLane = InitialPerLane
|
||||||
|
// 是否显示返回
|
||||||
|
@State isShowBack: boolean = true
|
||||||
|
onBackPress: () => void = () => {
|
||||||
|
}
|
||||||
|
|
||||||
aboutToAppear(): void {
|
aboutToAppear(): void {
|
||||||
DifferentialAndSignal.onMsg((data: string) => {
|
DifferentialAndSignal.onMsg((data: string) => {
|
||||||
const result: WorkerBackMessage = JSON.parse(data)
|
const result: WorkerBackMessage = JSON.parse(data)
|
||||||
if (result.type === "centerUdpData") {
|
if (result.type === "centerUdpData") {
|
||||||
this.getSignal(result.data as string)
|
this.getSignal(result.data as string)
|
||||||
|
this.rawData = result.data as string
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -26,32 +43,32 @@ export default struct SignalDisplayComponent {
|
|||||||
this.signArr = strachArr
|
this.signArr = strachArr
|
||||||
|
|
||||||
for (let i = 0; i <= 12; i++) {
|
for (let i = 0; i <= 12; i++) {
|
||||||
this.sjxhColum[i].value = this.signArr[i+2]
|
this.vehicleSignal[i].value = this.signArr[i+2]
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sjxhColum[13].value = this.signArr[17]
|
this.vehicleSignal[13].value = this.signArr[17]
|
||||||
this.sjxhColum[14].value = this.signArr[18]
|
this.vehicleSignal[14].value = this.signArr[18]
|
||||||
this.sjxhColum[15].value = this.signArr[19]
|
this.vehicleSignal[15].value = this.signArr[19]
|
||||||
this.sjxhColum[16].value = this.signArr[20]
|
this.vehicleSignal[16].value = this.signArr[20]
|
||||||
this.sjxhColum[17].value = this.signArr[23] //车速
|
this.vehicleSignal[17].value = this.signArr[23] //车速
|
||||||
this.sjxhColum[18].value = this.signArr[28]
|
this.vehicleSignal[18].value = this.signArr[28]
|
||||||
this.sjxhColum[19].value = this.signArr[29]
|
this.vehicleSignal[19].value = this.signArr[29]
|
||||||
this.sjxhColum[20].value = this.signArr[30]
|
this.vehicleSignal[20].value = this.signArr[30]
|
||||||
this.sjxhColum[21].value = this.signArr[15] //NC
|
this.vehicleSignal[21].value = this.signArr[15] //NC
|
||||||
this.sjxhColum[22].value = this.signArr[16] //SA15
|
this.vehicleSignal[22].value = this.signArr[16] //SA15
|
||||||
this.sjxhColum[23].value = this.signArr[21]
|
this.vehicleSignal[23].value = this.signArr[21]
|
||||||
this.sjxhColum[24].value = this.signArr[22]
|
this.vehicleSignal[24].value = this.signArr[22]
|
||||||
this.sjxhColum[25].value = this.signArr[24]
|
this.vehicleSignal[25].value = this.signArr[24]
|
||||||
this.sjxhColum[26].value = this.signArr[26]
|
this.vehicleSignal[26].value = this.signArr[26]
|
||||||
this.sjxhColum[27].value = this.signArr[25]
|
this.vehicleSignal[27].value = this.signArr[25]
|
||||||
this.sjxhColum[28].value = this.signArr[27]
|
this.vehicleSignal[28].value = this.signArr[27]
|
||||||
this.sjxhColum[29].value = this.signArr[31]
|
this.vehicleSignal[29].value = this.signArr[31]
|
||||||
this.sjxhColum[30].value = this.signArr[32]
|
this.vehicleSignal[30].value = this.signArr[32]
|
||||||
this.sjxhColum[31].value = this.signArr[33]
|
this.vehicleSignal[31].value = this.signArr[33]
|
||||||
this.sjxhColum[32].value = this.signArr[34]
|
this.vehicleSignal[32].value = this.signArr[34]
|
||||||
this.sjxhColum[33].value = this.signArr[35]
|
this.vehicleSignal[33].value = this.signArr[35]
|
||||||
for (let i = 34; i <= 46; i++) {
|
for (let i = 34; i <= 46; i++) {
|
||||||
this.sjxhColum[i].value = this.signArr[i+2]
|
this.vehicleSignal[i].value = this.signArr[i+2]
|
||||||
}
|
}
|
||||||
let t = 0
|
let t = 0
|
||||||
for (let i = 83; i <= 97; i++) {
|
for (let i = 83; i <= 97; i++) {
|
||||||
@ -66,7 +83,7 @@ export default struct SignalDisplayComponent {
|
|||||||
this.GPSColum[10].value = this.signArr[93]
|
this.GPSColum[10].value = this.signArr[93]
|
||||||
|
|
||||||
// this.signArr[53]=192.168.7.170'
|
// this.signArr[53]=192.168.7.170'
|
||||||
this.sjxhColum = JSON.parse(JSON.stringify((this.sjxhColum)))
|
this.vehicleSignal = JSON.parse(JSON.stringify((this.vehicleSignal)))
|
||||||
this.signArr = JSON.parse(JSON.stringify((this.signArr)))
|
this.signArr = JSON.parse(JSON.stringify((this.signArr)))
|
||||||
this.GPSColum = JSON.parse(JSON.stringify((this.GPSColum)))
|
this.GPSColum = JSON.parse(JSON.stringify((this.GPSColum)))
|
||||||
}
|
}
|
||||||
@ -81,46 +98,261 @@ export default struct SignalDisplayComponent {
|
|||||||
Row() {
|
Row() {
|
||||||
// 短logo
|
// 短logo
|
||||||
Image($r('app.media.shortLogo')).height(100).width(150).objectFit(ImageFit.Contain).margin({
|
Image($r('app.media.shortLogo')).height(100).width(150).objectFit(ImageFit.Contain).margin({
|
||||||
left: 10
|
left: 10,
|
||||||
|
right: 10
|
||||||
|
})
|
||||||
|
TabComponent({
|
||||||
|
activeIndex: this.active,
|
||||||
|
onchange: (index: number) => {
|
||||||
|
this.active = index
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
Row() {
|
Row() {
|
||||||
// 返回按钮
|
if (this.isShowBack) {
|
||||||
Image($r('app.media.topB_back')).height(100).onClick(() => {
|
// 返回按钮
|
||||||
router.back()
|
Image($r('app.media.topB_back')).height(100).onClick(() => {
|
||||||
})
|
router.back()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Image($rawfile('judge/close.png')).height(100).onClick(() => {
|
||||||
|
this.onBackPress()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}.width("100%").height(100)
|
}.width("100%").height(100)
|
||||||
|
|
||||||
Column() {
|
Column() {
|
||||||
// GPS信号展示
|
// 信号查看
|
||||||
GPSComponent({
|
if (this.active === 0) {
|
||||||
data: this.signArr
|
// GPS信号展示
|
||||||
})
|
GPSComponent({
|
||||||
// 车载信号以及车载坐标
|
data: this.signArr
|
||||||
Column() {
|
|
||||||
CarComponent({
|
|
||||||
data: this.sjxhColum
|
|
||||||
})
|
})
|
||||||
CoordinateComponent({
|
// 车载信号以及车载坐标
|
||||||
data: this.GPSColum
|
Column() {
|
||||||
})
|
CarComponent({
|
||||||
}.margin({
|
data: this.vehicleSignal
|
||||||
top: 5
|
})
|
||||||
}).backgroundColor("#282828")
|
CoordinateComponent({
|
||||||
|
data: this.GPSColum
|
||||||
|
})
|
||||||
|
}.margin({
|
||||||
|
top: 5
|
||||||
|
}).backgroundColor("#282828")
|
||||||
|
} else if (this.active === 1) {
|
||||||
|
// 原始数据
|
||||||
|
Column() {
|
||||||
|
Text(this.rawData).fontSize(20).fontColor("#fff")
|
||||||
|
}.backgroundColor("#282828").width("100%").height("100%")
|
||||||
|
} else {
|
||||||
|
// 轨迹查看
|
||||||
|
Flex() {
|
||||||
|
Column() {
|
||||||
|
CoordinateComponent({
|
||||||
|
isItHorizontal: false,
|
||||||
|
heightNum: 40,
|
||||||
|
})
|
||||||
|
}.width("20%")
|
||||||
|
|
||||||
|
Column() {
|
||||||
|
LaneComponent({
|
||||||
|
laneSignal: this.laneSignal
|
||||||
|
})
|
||||||
|
}.width("20%")
|
||||||
|
|
||||||
|
Column() {
|
||||||
|
trajectoryComponent()
|
||||||
|
}.height("100%").width("60%")
|
||||||
|
|
||||||
|
}.backgroundColor("#282828").width("100%").height("100%")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.width("100%")
|
.width("100%")
|
||||||
.height("100%")
|
.height("100%")
|
||||||
.backgroundColor("#fff")
|
.backgroundColor("#fff")
|
||||||
.borderRadius(20)
|
.borderRadius(20)
|
||||||
.padding(20)
|
.padding(20)
|
||||||
.margin(20)
|
|
||||||
}.width("100%").height("100%").backgroundColor("#222222")
|
}.width("100%").height("100%").backgroundColor("#222222")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Component
|
||||||
|
struct trajectoryComponent {
|
||||||
|
@State scaleNum: number = 100
|
||||||
|
scaleFn = async (num: number) => {
|
||||||
|
const scaleNum = this.scaleNum
|
||||||
|
if (scaleNum > 0 && scaleNum < 5000) {
|
||||||
|
this.scaleNum += num;
|
||||||
|
}
|
||||||
|
if (scaleNum === 0 && num > 0) {
|
||||||
|
this.scaleNum += num;
|
||||||
|
}
|
||||||
|
if (scaleNum > 5000 && num < 0) {
|
||||||
|
this.scaleNum += num;
|
||||||
|
}
|
||||||
|
await examJudgeMapSetScaling(this.scaleNum);
|
||||||
|
}
|
||||||
|
getScaleNum = (): number => {
|
||||||
|
const scaleNum = this.scaleNum;
|
||||||
|
if (scaleNum < 200) return 10;
|
||||||
|
if (scaleNum < 400) return 30;
|
||||||
|
if (scaleNum < 600) return 50;
|
||||||
|
if (scaleNum < 800) return 70;
|
||||||
|
if (scaleNum < 1000) return 100;
|
||||||
|
if (scaleNum < 2000) return 500;
|
||||||
|
return 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
Stack({
|
||||||
|
alignContent: Alignment.TopStart
|
||||||
|
}) {
|
||||||
|
XComponent({
|
||||||
|
id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变
|
||||||
|
type: 'surface',
|
||||||
|
libraryname: 'JudgeSdk'
|
||||||
|
// libraryname: 'judgesdk'
|
||||||
|
})
|
||||||
|
.width("100%")
|
||||||
|
.height("100%")
|
||||||
|
.onLoad(() => {
|
||||||
|
apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制
|
||||||
|
})
|
||||||
|
.onDestroy(() => {
|
||||||
|
apiJudgeSdk.examJudgeMapSetDrawing(false); //停止绘制地图轨迹,false:表示结束绘制
|
||||||
|
// clearInterval(globalThis.realTimer)
|
||||||
|
})
|
||||||
|
Row() {
|
||||||
|
Image($rawfile('judge/big.png')).width(60).onClick(() => {
|
||||||
|
this.scaleFn(this.getScaleNum() - 1)
|
||||||
|
})
|
||||||
|
Image($rawfile('judge/small.png')).width(60).onClick(() => {
|
||||||
|
this.scaleFn(this.getScaleNum())
|
||||||
|
}).margin({ left: 20 })
|
||||||
|
}.align(Alignment.TopEnd)
|
||||||
|
}.width("100%").height("100%")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component
|
||||||
|
struct TabComponent {
|
||||||
|
@State activeIndex: number = 0
|
||||||
|
onchange: (index: number) => void = () => {
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
Row() {
|
||||||
|
TabItemComponent({
|
||||||
|
active: this.activeIndex === 0,
|
||||||
|
}).onClick(() => {
|
||||||
|
this.activeIndex = 0
|
||||||
|
this.onchange(0)
|
||||||
|
})
|
||||||
|
TabItemComponent({
|
||||||
|
label: "原始数据",
|
||||||
|
active: this.activeIndex === 1,
|
||||||
|
}).onClick(() => {
|
||||||
|
this.activeIndex = 1
|
||||||
|
this.onchange(1)
|
||||||
|
})
|
||||||
|
TabItemComponent({
|
||||||
|
label: "轨迹查看",
|
||||||
|
active: this.activeIndex === 2,
|
||||||
|
}).onClick(() => {
|
||||||
|
console.log("轨迹查看")
|
||||||
|
this.activeIndex = 2
|
||||||
|
this.onchange(2)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component
|
||||||
|
struct LaneComponent {
|
||||||
|
@Prop laneSignal: PerLane
|
||||||
|
private RoadData: Array<RoadDataType> = [
|
||||||
|
{ name: '路段组号', key: 'MapRoad_Code_No' },
|
||||||
|
{ name: '路段编码', key: 'MapRoad_Name' },
|
||||||
|
{ name: '车轮压线', key: ['TouchLineType', 'TouchDir'] },
|
||||||
|
{ name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] },
|
||||||
|
{ name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] },
|
||||||
|
{ name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] },
|
||||||
|
{ name: '后车点道', key: ['BackPointLaneNo', 'BackPointLaneCount'] },
|
||||||
|
{ name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] },
|
||||||
|
{ name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] },
|
||||||
|
{ name: '右前/后车身边线', key: ['Body_RF_ToBaseLine', 'Body_RB_ToBaseLine'] },
|
||||||
|
{ name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] },
|
||||||
|
{ name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] },
|
||||||
|
{ name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] },
|
||||||
|
{ name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] },
|
||||||
|
{ name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr', 'DirInverse'] },
|
||||||
|
{ name: '形状', key: ['InShapeAttr', 'ShapeNo', 'ShapeNoWheel'] },
|
||||||
|
{ name: '路段点', key: ['CrossPointNo'] },
|
||||||
|
]
|
||||||
|
|
||||||
|
getValues(roadColumn: RoadDataType) {
|
||||||
|
let key = roadColumn.key;
|
||||||
|
let str = ''
|
||||||
|
if (Array.isArray(key)) {
|
||||||
|
key.forEach((k, index) => {
|
||||||
|
str += (Reflect.get(this.laneSignal, k) === undefined ? '' : Reflect.get(this.laneSignal, k)) + (index == key.length - 1 ? '' : '/')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
str = Reflect.get(this.laneSignal, key) === undefined ? '' : Reflect.get(this.laneSignal, key)
|
||||||
|
}
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
Column() {
|
||||||
|
Text("车道信息").fontSize(20).fontColor("#FFB433").margin({
|
||||||
|
top: 20
|
||||||
|
})
|
||||||
|
ForEach(this.RoadData, (item: RoadDataType) => {
|
||||||
|
blockComponent({
|
||||||
|
color: "#FFB433",
|
||||||
|
heightNum: 40,
|
||||||
|
label: item.name,
|
||||||
|
value: this.getValues(item)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}.width("100%")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component
|
||||||
|
struct TabItemComponent {
|
||||||
|
@State label: string = "信号查看"
|
||||||
|
@Prop active: boolean = false
|
||||||
|
|
||||||
|
build() {
|
||||||
|
Row() {
|
||||||
|
Text(this.label).fontColor(this.active ? "#ECAD5C" : "#DDCBAC").fontSize(20).fontWeight(FontWeight.Bold)
|
||||||
|
}
|
||||||
|
.width(180)
|
||||||
|
.height(80)
|
||||||
|
.borderRadius({
|
||||||
|
topLeft: 20,
|
||||||
|
topRight: 20,
|
||||||
|
})
|
||||||
|
.border({
|
||||||
|
width: { top: 1, left: 1, right: 1 },
|
||||||
|
color: this.active ? "#ECAD5C" : "#DDCBAC"
|
||||||
|
})
|
||||||
|
.justifyContent(FlexAlign.Center)
|
||||||
|
.alignItems(VerticalAlign.Center)
|
||||||
|
.margin({
|
||||||
|
left: 10
|
||||||
|
})
|
||||||
|
.shadow({
|
||||||
|
radius: 10,
|
||||||
|
color: this.active ? "#ECAD5C" : "",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
struct GPSComponent {
|
struct GPSComponent {
|
||||||
@ -136,7 +368,7 @@ struct GPSComponent {
|
|||||||
tcpOppositeIp: "",
|
tcpOppositeIp: "",
|
||||||
tcpOppositePort: ""
|
tcpOppositePort: ""
|
||||||
}
|
}
|
||||||
this.ip = config.tcplocalIp
|
this.ip = config.tcplocalIp || ""
|
||||||
}
|
}
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
@ -224,6 +456,8 @@ struct CarComponent {
|
|||||||
@Component
|
@Component
|
||||||
struct CoordinateComponent {
|
struct CoordinateComponent {
|
||||||
@State data: Array<SignalDataType> = GPSData
|
@State data: Array<SignalDataType> = GPSData
|
||||||
|
@State isItHorizontal: boolean = true
|
||||||
|
@State heightNum: number = 65
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
Column() {
|
Column() {
|
||||||
@ -231,17 +465,23 @@ struct CoordinateComponent {
|
|||||||
top: 20
|
top: 20
|
||||||
})
|
})
|
||||||
Flex({
|
Flex({
|
||||||
wrap: FlexWrap.Wrap
|
wrap: FlexWrap.Wrap,
|
||||||
|
direction: this.isItHorizontal ? FlexDirection.Row : FlexDirection.Column
|
||||||
}) {
|
}) {
|
||||||
ForEach(this.data, (item: SignalDataType) => {
|
ForEach(this.data, (item: SignalDataType) => {
|
||||||
blockComponent({
|
blockComponent({
|
||||||
|
heightNum: this.heightNum,
|
||||||
color: "#FFB433",
|
color: "#FFB433",
|
||||||
label: item.key,
|
label: item.key,
|
||||||
value: item.value
|
value: item.value
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}.height("100%").width("100%")
|
||||||
}.width("100%").backgroundColor("#1A1A1A").justifyContent(FlexAlign.Center)
|
}
|
||||||
|
.width("100%")
|
||||||
|
.height("100%")
|
||||||
|
.backgroundColor("#1A1A1A")
|
||||||
|
.justifyContent(FlexAlign.Center)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,6 +490,7 @@ struct blockComponent {
|
|||||||
@State label: string = "发送次数"
|
@State label: string = "发送次数"
|
||||||
@State value: string = "1"
|
@State value: string = "1"
|
||||||
@State widthNum: number = 130
|
@State widthNum: number = 130
|
||||||
|
@State heightNum: number = 65
|
||||||
@State color: string = "#FDF5E7"
|
@State color: string = "#FDF5E7"
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
@ -263,6 +504,6 @@ struct blockComponent {
|
|||||||
}.width(80).justifyContent(FlexAlign.Start).margin({
|
}.width(80).justifyContent(FlexAlign.Start).margin({
|
||||||
left: 20
|
left: 20
|
||||||
})
|
})
|
||||||
}.height(65).justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center)
|
}.height(this.heightNum).justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,207 +1,161 @@
|
|||||||
// import apiJudgeSdk from 'libJudgeSdk.so';
|
import apiJudgeSdk from 'libJudgeSdk.so';
|
||||||
// import Judge from '../../judgeSDK/utils/judgeReal';
|
import { examJudgeMapSetScaling } from '../../judgeSDK/api';
|
||||||
// import { MarkRule, Project, ProjectObj } from '../../judgeSDK/api/judgeSDK.d';
|
import { PerLane } from '../../../model';
|
||||||
// import common from '@ohos.app.ability.common';
|
import { InitialPerLane } from '../../../mock';
|
||||||
// import {
|
|
||||||
// examJudgeMapSetScaling
|
interface RoadDataType {
|
||||||
// } from '../../judgeSDK/api'
|
name: string,
|
||||||
//
|
key: string | string[]
|
||||||
// interface RoadDataType {
|
}
|
||||||
// name: string,
|
|
||||||
// key: string | string[]
|
|
||||||
// }
|
|
||||||
@Component
|
@Component
|
||||||
export default struct RealTime {
|
export default struct RealTime {
|
||||||
|
@State message: string = '开始绘制'
|
||||||
|
// 控制XComponent组件的创建和销毁
|
||||||
|
@State draw: boolean = false
|
||||||
|
//模拟考试项目
|
||||||
|
@State scaleNum: number = 100
|
||||||
|
@State gpsActive: number = 1
|
||||||
|
@State ratio: number = 1
|
||||||
|
@State lane: PerLane = InitialPerLane
|
||||||
|
scaleFn = async (num: number) => {
|
||||||
|
const scaleNum = this.scaleNum
|
||||||
|
if (scaleNum > 0 && scaleNum < 5000) {
|
||||||
|
this.scaleNum += num;
|
||||||
|
}
|
||||||
|
if (scaleNum === 0 && num > 0) {
|
||||||
|
this.scaleNum += num;
|
||||||
|
}
|
||||||
|
if (scaleNum > 5000 && num < 0) {
|
||||||
|
this.scaleNum += num;
|
||||||
|
}
|
||||||
|
await examJudgeMapSetScaling(this.scaleNum);
|
||||||
|
}
|
||||||
private widthNumber: string | number | Resource = 0
|
private widthNumber: string | number | Resource = 0
|
||||||
private heightNumber: string | number | Resource = 0
|
private heightNumber: string | number | Resource = 0
|
||||||
|
private RoadData: Array<RoadDataType> = [
|
||||||
|
{ name: '路段组号', key: 'MapRoad_Code_No' },
|
||||||
|
{ name: '路段编码', key: 'MapRoad_Name' },
|
||||||
|
{ name: '车轮压线', key: ['TouchLineType', 'TouchDir'] },
|
||||||
|
{ name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] },
|
||||||
|
{ name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] },
|
||||||
|
{ name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] },
|
||||||
|
{ name: '后车点道', key: ['BackPointLaneNo', 'BackPointLaneCount'] },
|
||||||
|
{ name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] },
|
||||||
|
{ name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] },
|
||||||
|
{ name: '右前/后车身边线', key: ['Body_RF_ToBaseLine', 'Body_RB_ToBaseLine'] },
|
||||||
|
{ name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] },
|
||||||
|
{ name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] },
|
||||||
|
{ name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] },
|
||||||
|
{ name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] },
|
||||||
|
{ name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr', 'DirInverse'] },
|
||||||
|
{ name: '形状', key: ['InShapeAttr', 'ShapeNo', 'ShapeNoWheel'] },
|
||||||
|
{ name: '路段点', key: ['CrossPointNo'] },
|
||||||
|
]
|
||||||
|
|
||||||
|
async aboutToDisappear() {
|
||||||
|
// clearInterval(this.timer)
|
||||||
|
}
|
||||||
|
|
||||||
|
async aboutToAppear() {
|
||||||
|
// const judge = new Judge(this)
|
||||||
|
// let timer = setInterval(() => {
|
||||||
|
// this.lane = globalThis.laneData;
|
||||||
|
// }, 1000)
|
||||||
|
// this.timer = timer
|
||||||
|
}
|
||||||
|
|
||||||
|
getScaleNum = (): number => {
|
||||||
|
const scaleNum = this.scaleNum;
|
||||||
|
if (scaleNum < 200) return 10;
|
||||||
|
if (scaleNum < 400) return 30;
|
||||||
|
if (scaleNum < 600) return 50;
|
||||||
|
if (scaleNum < 800) return 70;
|
||||||
|
if (scaleNum < 1000) return 100;
|
||||||
|
if (scaleNum < 2000) return 500;
|
||||||
|
return 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
getValues(roadColumn: RoadDataType) {
|
||||||
|
const lane = this.lane;
|
||||||
|
let key = roadColumn.key;
|
||||||
|
let str = ''
|
||||||
|
if (Array.isArray(key)) {
|
||||||
|
key.forEach((k, index) => {
|
||||||
|
str += (Reflect.get(lane, k) === undefined ? '' : Reflect.get(lane, k)) + (index == key.length - 1 ? '' : '/')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
str = Reflect.get(lane, key) === undefined ? '' : Reflect.get(lane, key)
|
||||||
|
}
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
|
Row() {
|
||||||
|
Column() {
|
||||||
|
Row() {
|
||||||
|
Text('车道信息').fontColor(this.gpsActive == 0 ? '#2D3C5A' : '#fff').fontSize(20)
|
||||||
|
}
|
||||||
|
.width('100%')
|
||||||
|
.height(37)
|
||||||
|
.backgroundColor(this.gpsActive == 0 ? '#fff' : '#1A1A1A')
|
||||||
|
.margin({ top: 10 * this.ratio, right: 10 })
|
||||||
|
.justifyContent(FlexAlign.Center)
|
||||||
|
|
||||||
|
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start }) {
|
||||||
|
ForEach(this.RoadData, (item: RoadDataType) => {
|
||||||
|
Column() {
|
||||||
|
Text(`${item.name}:${this.getValues(item)}`)
|
||||||
|
.fontSize(20)
|
||||||
|
.lineHeight(30)
|
||||||
|
.fontColor('#fff')
|
||||||
|
}.height(30).justifyContent(FlexAlign.Start).width('100%')
|
||||||
|
})
|
||||||
|
}.margin({ top: 5 })
|
||||||
|
|
||||||
|
}.width(168 * 1.5)
|
||||||
|
.height(this.heightNumber)
|
||||||
|
.backgroundColor('#282828')
|
||||||
|
.margin({ top: 6 * this.ratio, })
|
||||||
|
|
||||||
|
Column() {
|
||||||
|
if (this.draw) {
|
||||||
|
XComponent({
|
||||||
|
id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变
|
||||||
|
type: 'surface',
|
||||||
|
libraryname: 'JudgeSdk'
|
||||||
|
// libraryname: 'judgesdk'
|
||||||
|
})
|
||||||
|
.width(this.widthNumber)
|
||||||
|
.height(this.heightNumber)
|
||||||
|
.onLoad(() => {
|
||||||
|
apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制
|
||||||
|
})
|
||||||
|
.onDestroy(() => {
|
||||||
|
apiJudgeSdk.examJudgeMapSetDrawing(false); //停止绘制地图轨迹,false:表示结束绘制
|
||||||
|
this.draw = false;
|
||||||
|
// clearInterval(globalThis.realTimer)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Column() {
|
||||||
|
}
|
||||||
|
.width(this.widthNumber)
|
||||||
|
.height(this.heightNumber)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.width('100%')
|
||||||
|
.backgroundColor('#fff')
|
||||||
|
|
||||||
|
Row() {
|
||||||
|
Image($rawfile('judge/big.png')).width(60).onClick(() => {
|
||||||
|
this.scaleFn(this.getScaleNum() - 1)
|
||||||
|
})
|
||||||
|
Image($rawfile('judge/small.png')).width(60).onClick(() => {
|
||||||
|
this.scaleFn(this.getScaleNum())
|
||||||
|
}).margin({ left: 20 })
|
||||||
|
}.position({ x: '32%', y: 60 })
|
||||||
|
}
|
||||||
|
.height('100%')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// @Component
|
|
||||||
// export default struct RealTime {
|
|
||||||
// @State message: string = '开始绘制'
|
|
||||||
// // 控制XComponent组件的创建和销毁
|
|
||||||
// @State draw: boolean = false
|
|
||||||
// //监管接口序列号
|
|
||||||
// @State serialNumber: number = 0
|
|
||||||
// //模拟考试项目
|
|
||||||
// @State projects: Project[] = []
|
|
||||||
// @State projectsObj: ProjectObj = {}
|
|
||||||
// @State markRuleListObj: MarkRule = {}
|
|
||||||
// @State scaleNum: number = 100
|
|
||||||
// @State gpsActive: number = 1
|
|
||||||
// private widthNumber: string | number | Resource = 0
|
|
||||||
// private heightNumber: string | number | Resource = 0
|
|
||||||
// private context = getContext(this) as common.UIAbilityContext;
|
|
||||||
// @State ratio: number = 1
|
|
||||||
// @State lane: Object = {}
|
|
||||||
// @State timer:number = 0
|
|
||||||
//
|
|
||||||
// constructor() {
|
|
||||||
// super()
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // xcomponentController: XComponentController = new XComponentController()
|
|
||||||
//
|
|
||||||
// build() {
|
|
||||||
// Row() {
|
|
||||||
// Column() {
|
|
||||||
// Row() {
|
|
||||||
// Text('车道信息').fontColor(this.gpsActive == 0 ? '#2D3C5A' : '#fff').fontSize(20)
|
|
||||||
// }
|
|
||||||
// .width('100%')
|
|
||||||
// .height(37)
|
|
||||||
// .backgroundColor(this.gpsActive == 0 ? '#fff' : '#1A1A1A')
|
|
||||||
// .margin({ top: 10 * this.ratio, right: 10 })
|
|
||||||
// .justifyContent(FlexAlign.Center)
|
|
||||||
//
|
|
||||||
// Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start }) {
|
|
||||||
// ForEach(this.RoadData, (item) => {
|
|
||||||
// Column() {
|
|
||||||
// Text(`${item.name}:${this.getValues(item)}`)
|
|
||||||
// .fontSize(20)
|
|
||||||
// .lineHeight(30)
|
|
||||||
// .fontColor('#fff')
|
|
||||||
// }.height(30).justifyContent(FlexAlign.Start).width('100%')
|
|
||||||
// })
|
|
||||||
// }.margin({top:5})
|
|
||||||
//
|
|
||||||
// }.width(168 * 1.5)
|
|
||||||
// .height(this.heightNumber)
|
|
||||||
// .backgroundColor('#282828')
|
|
||||||
// .margin({ top: 6 * this.ratio, })
|
|
||||||
//
|
|
||||||
// Column() {
|
|
||||||
// if (this.draw) {
|
|
||||||
// XComponent({
|
|
||||||
// id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变
|
|
||||||
// type: 'surface',
|
|
||||||
// libraryname: 'JudgeSdk'
|
|
||||||
// // libraryname: 'judgesdk'
|
|
||||||
// })
|
|
||||||
// .width(this.widthNumber)
|
|
||||||
// .height(this.heightNumber)
|
|
||||||
// .onLoad(() => {
|
|
||||||
// apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制
|
|
||||||
// })
|
|
||||||
// .onDestroy(() => {
|
|
||||||
// apiJudgeSdk.examJudgeMapSetDrawing(false); //停止绘制地图轨迹,false:表示结束绘制
|
|
||||||
// this.draw = false;
|
|
||||||
// })
|
|
||||||
// } else {
|
|
||||||
// Column() {
|
|
||||||
// }
|
|
||||||
// .width(this.widthNumber)
|
|
||||||
// .height(this.heightNumber)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .width('100%')
|
|
||||||
// .backgroundColor('#fff')
|
|
||||||
//
|
|
||||||
// Row(){
|
|
||||||
// Image($rawfile('judge/big.png')).width(60).onClick(()=>{
|
|
||||||
// this.scaleFn( -this.getScaleNum() )
|
|
||||||
// })
|
|
||||||
// Image($rawfile('judge/small.png')).width(60).onClick(()=>{
|
|
||||||
// this.scaleFn( this.getScaleNum() )
|
|
||||||
// }).margin({left:20})
|
|
||||||
// }.position({x:'32%',y:60})
|
|
||||||
// }
|
|
||||||
// .height('100%')
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// async aboutToDisappear() {
|
|
||||||
// clearInterval(this.timer)
|
|
||||||
// }
|
|
||||||
// async aboutToAppear() {
|
|
||||||
// const judge = new Judge(this)
|
|
||||||
// let timer = setInterval(()=>{
|
|
||||||
// this.lane = AppStorage.get('laneData');
|
|
||||||
// },1000)
|
|
||||||
// this.timer = timer
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// getScaleNum = ()=>{
|
|
||||||
// const scaleNum = this.scaleNum;
|
|
||||||
// if(scaleNum < 200){
|
|
||||||
// return 10
|
|
||||||
// }
|
|
||||||
// if(scaleNum >= 200 && scaleNum < 400){
|
|
||||||
// return 30
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if(scaleNum >= 400 && scaleNum < 600){
|
|
||||||
// return 50
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if(scaleNum >= 600 && scaleNum < 800){
|
|
||||||
// return 70
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if(scaleNum >= 800 && scaleNum < 1000){
|
|
||||||
// return 100
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if(scaleNum >= 1000 && scaleNum < 2000){
|
|
||||||
// return 500
|
|
||||||
// }
|
|
||||||
// if(scaleNum >= 2000 && scaleNum <= 5000){
|
|
||||||
// return 1000
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return 1000
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// getValues(roadColumn) {
|
|
||||||
// const lane = this.lane || {};
|
|
||||||
// let key = roadColumn.key;
|
|
||||||
// let str = ''
|
|
||||||
// if (Array.isArray(key)) {
|
|
||||||
// key.forEach((k, index) => {
|
|
||||||
// str += (lane[k] === undefined ? '' : lane[k]) + (index == key.length - 1 ? '' : '/')
|
|
||||||
// })
|
|
||||||
// } else {
|
|
||||||
// str = lane[key] === undefined ? '' : lane[key]
|
|
||||||
// }
|
|
||||||
// return str
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private RoadData: Array<RoadDataType> = [
|
|
||||||
// { name: '路段组号', key: 'MapRoad_Code_No' },
|
|
||||||
// { name: '路段编码', key: 'MapRoad_Name' },
|
|
||||||
// { name: '车轮压线', key: ['TouchLineType', 'TouchDir'] },
|
|
||||||
// { name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] },
|
|
||||||
// { name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] },
|
|
||||||
// { name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] },
|
|
||||||
// { name: '后车点道', key: ['BackPointLaneNo','BackPointLaneCount'] },
|
|
||||||
// { name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] },
|
|
||||||
// { name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] },
|
|
||||||
// { name: '右前/后车身边线', key: ['Body_RF_ToBaseLine','Body_RB_ToBaseLine'] },
|
|
||||||
// { name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] },
|
|
||||||
// { name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] },
|
|
||||||
// { name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] },
|
|
||||||
// { name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] },
|
|
||||||
// { name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr','DirInverse'] },
|
|
||||||
// { name: '形状', key: ['InShapeAttr', 'ShapeNo','ShapeNoWheel'] },
|
|
||||||
// { name: '路段点', key: ['CrossPointNo'] },
|
|
||||||
// ]
|
|
||||||
//
|
|
||||||
// scaleFn = async (num)=>{
|
|
||||||
// const scaleNum = this.scaleNum
|
|
||||||
// if(scaleNum >0 && scaleNum < 5000){
|
|
||||||
// this.scaleNum += num;
|
|
||||||
// }
|
|
||||||
// if(scaleNum === 0 && num > 0){
|
|
||||||
// this.scaleNum += num;
|
|
||||||
// }
|
|
||||||
// if(scaleNum > 5000 && num < 0){
|
|
||||||
// this.scaleNum += num;
|
|
||||||
// }
|
|
||||||
// await examJudgeMapSetScaling(this.scaleNum);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
|
|||||||
@ -10,44 +10,46 @@ export interface Project {
|
|||||||
//项目状态:未做 正在做 及格 不及格 有扣分
|
//项目状态:未做 正在做 及格 不及格 有扣分
|
||||||
type?: '1' | '2' | '3' | '4' | '5'
|
type?: '1' | '2' | '3' | '4' | '5'
|
||||||
//
|
//
|
||||||
isEnd:boolean,
|
isEnd: boolean,
|
||||||
isUpload:boolean
|
isUpload: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MarkRule {
|
export interface MarkRule {
|
||||||
itemno: number
|
itemno?: number
|
||||||
markcatalog: string
|
markcatalog?: string
|
||||||
markshow: string
|
markshow?: string
|
||||||
markserial: string
|
markserial?: string
|
||||||
markstandard: number,
|
markstandard?: number,
|
||||||
markreal: number
|
markreal?: number
|
||||||
kfxh: string
|
kfxh?: string
|
||||||
onlyoneid: number
|
onlyoneid?: number
|
||||||
OnlyOneKind: number
|
OnlyOneKind?: number
|
||||||
nocancelid: number
|
nocancelid?: number
|
||||||
NoCancelId: number
|
NoCancelId?: number
|
||||||
gps_sid: number,
|
gps_sid?: number,
|
||||||
GPS_SID:boolean
|
GPS_SID?: boolean
|
||||||
score:number
|
score?: number
|
||||||
xmmcStr: string
|
xmmcStr?: string
|
||||||
desc: string
|
desc?: string
|
||||||
xmdm?: number
|
xmdm?: number
|
||||||
type?: 0 | 1 | 2
|
type?: 0 | 1 | 2
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface KF{
|
export interface KF {
|
||||||
//项目名称
|
//项目名称
|
||||||
xmmcStr: string,
|
xmmcStr: string,
|
||||||
xmdm: string | number,
|
xmdm: string | number,
|
||||||
|
|
||||||
//扣分描述
|
//扣分描述
|
||||||
desc: string,
|
desc: string,
|
||||||
|
|
||||||
//扣分
|
//扣分
|
||||||
score: string
|
score: string
|
||||||
//无锡所扣分代码
|
//无锡所扣分代码
|
||||||
markcatalog: string
|
markcatalog: string
|
||||||
markserial: string
|
markserial: string
|
||||||
kfxh: string
|
kfxh: string
|
||||||
type: 0| 1 | 2
|
type: 0 | 1 | 2
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SYSTEMPARMARR {
|
export interface SYSTEMPARMARR {
|
||||||
@ -123,6 +125,7 @@ export interface EXAMDATA {
|
|||||||
xmxh: string,
|
xmxh: string,
|
||||||
xmhg: 1 | 0
|
xmhg: 1 | 0
|
||||||
},
|
},
|
||||||
|
|
||||||
//扣分
|
//扣分
|
||||||
kf: {
|
kf: {
|
||||||
//项目代码
|
//项目代码
|
||||||
@ -161,18 +164,18 @@ export interface EXAMDATA {
|
|||||||
code: string,
|
code: string,
|
||||||
type: number
|
type: number
|
||||||
},
|
},
|
||||||
|
|
||||||
//模拟灯光
|
//模拟灯光
|
||||||
mndg: string,
|
mndg: string,
|
||||||
lane: LANE,
|
lane: LANE,
|
||||||
type: number
|
type: number
|
||||||
|
|
||||||
//预进项目
|
//预进项目
|
||||||
precast:{
|
precast: {
|
||||||
xmdm:number,
|
xmdm: number,
|
||||||
xmxh:string
|
xmxh: string
|
||||||
}
|
}
|
||||||
nongps:{
|
nongps: {
|
||||||
type:0|1|2|3|4
|
type: 0 | 1 | 2 | 3 | 4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user