subject-two/entry/src/main/ets/pages/TerminalInfos.ets
2025-10-09 09:25:37 +08:00

409 lines
16 KiB
Plaintext

import TopLogo from './compontents/TopLogo';
import Prompt from '@system.prompt';
import FileUtil from '../common/utils/File';
import common from '@ohos.app.ability.common';
import { GlobalConfig } from '../config';
import ethernet from '@ohos.net.ethernet'
@Entry
@Component
struct Index {
@State textList1: string[] = ['差分服务器Ip', '响应端口', '中心服务器IP', '响应端口', '子网掩码', '默认网关', 'dns', '后置机IP ', '响应端口', '前置机IP', '本地端口']
// @State textList2: string[] = []
@State ratio: number = 1700 / 960
@State inputFontSize: number = 12 //12
//
// @State inputTextList1: string[] = ['192.168.7.170','8084','192.168.7.170','20122','255.255.255.0','192.168.7.1','','','114.114.114.114','112.80.35.83','11055' +
// '',]
// @State inputTextList2: string[] = ['192.168.7.124','20022']
// @State inputTextList1: string[] = ['172.37.55.191','18782','192.168.7.1','8082','255.255.255.0','192.168.7.170','114.114.114.114','192.168.7.124','20022','172.37.55.59','20122']
@State inputTextList1: string[] = ['172.37.55.191', '18782', '172.37.55.191', '8082', '255.255.255.0', '192.168.7.1', '114.114.114.114', '192.168.7.124', '20022', '192.168.7.170', '20122']
@State terTextList: string[] = ['一型机', '二型机', '三型机', '一体机']
@State cardTextList: string[] = ['北云', '天宝MB2']
@State netTextList: string[] = ['否', '是']
@State deviceTypeSelect: string[] = ['正常', '安全员','新科目三']
@State selectedTerType: number = 0
@State selectedCardType: number = 0
//是否启用网络差分
@State netOpen: number = 0
//设备应用类型
@State deviceType: number = 0
@State deviceIpArr: string[] = ['192.168.7.173', '192.168.7.173']
@State devicePortArr: string[] = ['8052', '8053']
// @State inputTextList2: string[] = []
// 112.80.35.83 11052
// @State inputTextList1: string[] = ['192.168.36.2','8084','192.168.36.200','20122','255.255.255.0','192.168.36.1','','','114.114.114.114','192.168.36.139','8000']
@State @Watch('outClick') outFlag: boolean = false;
scroller: Scroller = new Scroller()
// @State inputTextList2: string[] = ['192.168.36.139','20022']
private fileUtil: FileUtil
private context = getContext(this) as common.UIAbilityContext;
private vocObj = null;
build() {
Column() {
TopLogo({ outFlag: $outFlag })
Column() {
Column() {
Scroll(this.scroller) {
Flex({ 'wrap': FlexWrap.Wrap }) {
ForEach(this.textList1, (item: string, index: number) => {
Row() {
Text(item)
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
TextInput({ 'text': this.inputTextList1[index] ? this.inputTextList1[index] : '' })
.width('50%')
.height('50%')
.fontColor('#fff')
.borderColor('#E6E0D8')
.borderRadius('10px')
.borderWidth('2px')
.fontSize(this.inputFontSize * this.ratio)
.padding({ top: 0, bottom: 0 })
.linearGradient({
angle: 0,
colors: [[0x403C36, 0.0], [0x4D473D, 0.34], [0x3D3A34, 1.0]]
})
.onChange((value: string) => {
this.inputTextList1[index] = value
})
}.width('50%').height('14%')
})
Row() {}.width('50%').height('14%')
Row() {
Text('后置机类型')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
ForEach(this.terTextList, (terText, index) => {
Radio({ value: terText, group: 'terRadioGroup' })
.borderColor('#E5CBA1')
.checked(index === this.selectedTerType)
.onChange((value: boolean) => {
if(value){
this.selectedTerType = index
}
})
Text(terText).fontSize(20).fontColor('#FFF')
})
}.width('50%').height('14%')
Row() {
Text('是否启用网络差分')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
ForEach(this.netTextList, (netText, index) => {
Radio({ value: netText, group: 'netRadioGroup' })
.borderColor('#E5CBA1')
.checked(index === this.netOpen)
.onChange((value: boolean) => {
if(value){
this.netOpen = index
}
})
Text(netText).fontSize(20).fontColor('#FFF')
})
}.width('51%').height('14%')
Row(){
Text('板卡类型')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
ForEach(this.cardTextList, (cardText, index) => {
Radio({ value: cardText, group: 'cardRadioGroup' })
.borderColor('#E5CBA1')
.checked(index === this.selectedCardType)
.onChange((value: boolean) => {
if(value){
this.selectedCardType = index
}
})
Text(cardText).fontSize(20).fontColor('#FFF')
})
}.width('49%').height('14%')
Row() {
Text('设备应用场景')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
ForEach(this.deviceTypeSelect, (netText, index) => {
Radio({ value: netText, group: 'deviceRadioGroup' })
.borderColor('#E5CBA1')
.checked(index === this.deviceType)
.onChange((value: boolean) => {
if(value){
this.deviceType = index
}
})
Text(netText).fontSize(20).fontColor('#FFF')
})
}.width('52%').height('14%')
// 新科目三设备
if(this.deviceType == 1 || this.deviceType == 2){
Row() {
Text('雷达设备IP')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
TextInput({ 'text':this.deviceIpArr[0] })
.width('50%')
.height('50%')
.fontColor('#fff')
.borderColor('#E6E0D8')
.borderRadius('10px')
.borderWidth('2px')
.fontSize(this.inputFontSize * this.ratio)
.padding({ top: 0, bottom: 0 })
.linearGradient({angle: 0,colors: [[0x403C36, 0.0], [0x4D473D, 0.34], [0x3D3A34, 1.0]] })
.onChange((value: string) => {
this.deviceIpArr[0] = value
})
}.width('50%').height('14%')
Row() {
Text('响应端口')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
TextInput({ 'text':this.devicePortArr[0] })
.width('50%')
.height('50%')
.fontColor('#fff')
.borderColor('#E6E0D8')
.borderRadius('10px')
.borderWidth('2px')
.fontSize(this.inputFontSize * this.ratio)
.padding({ top: 0, bottom: 0 })
.linearGradient({
angle: 0,
colors: [[0x403C36, 0.0], [0x4D473D, 0.34], [0x3D3A34, 1.0]]
})
.onChange((value: string) => {
this.devicePortArr[0] = value
})
}.width('50%').height('14%')
}
// 安全员设备
if(this.deviceType == 2){
Row() {
Text('视觉设备IP')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
TextInput({ 'text': this.deviceIpArr[1] })
.width('50%')
.height('50%')
.fontColor('#fff')
.borderColor('#E6E0D8')
.borderRadius('10px')
.borderWidth('2px')
.fontSize(this.inputFontSize * this.ratio)
.padding({ top: 0, bottom: 0 })
.linearGradient({
angle: 0,
colors: [[0x403C36, 0.0], [0x4D473D, 0.34], [0x3D3A34, 1.0]]
})
.onChange((value: string) => {
this.deviceIpArr[1] = value
})
}.width('50%').height('14%')
Row() {
Text('响应端口')
.width('40%')
.height('100%')
.fontColor('#E5CBA1')
.padding({ 'left': '35px' })
.fontSize(this.inputFontSize * this.ratio)
TextInput({ 'text': this.devicePortArr[1] })
.width('50%')
.height('50%')
.fontColor('#fff')
.borderColor('#E6E0D8')
.borderRadius('10px')
.borderWidth('2px')
.fontSize(this.inputFontSize * this.ratio)
.padding({ top: 0, bottom: 0 })
.linearGradient({
angle: 0,
colors: [[0x403C36, 0.0], [0x4D473D, 0.34], [0x3D3A34, 1.0]]
})
.onChange((value: string) => {
this.devicePortArr[1] = value;
})
}.width('50%').height('14%')
}
}
}
.width('95%')
.height('95%')
.margin({ 'top': '1%' })
.backgroundColor('#282828')
.borderRadius('15px')
}
.width('100%')
.height('85%')
.borderRadius('25px')
Column() {
Image($r('app.media.terminal_save')).width('18%').onClick(async () => {
const fileUtil = new FileUtil(this.context)
const folderPath = await fileUtil.initFolder(`/config`);
const param = {
udplocalIp: this.inputTextList1[9],
udplocalIpPort: this.inputTextList1[10],
udpOppositeIp: this.inputTextList1[7],
udpOppositeIpPort: this.inputTextList1[8],
tcplocalIp: this.inputTextList1[9],
tcplocalIpPort: '8088',
tcpOppositeIp: this.inputTextList1[0],
tcpOppositePort: this.inputTextList1[1],
netMask: this.inputTextList1[4],
gateway: this.inputTextList1[5],
dnsServers: this.inputTextList1[6],
centerIp: this.inputTextList1[2],
centerPort: this.inputTextList1[3],
terType: this.selectedTerType,
cardType: this.selectedCardType,
netOpen: this.netOpen,
deviceType: this.deviceType,
deviceIpArr: this.deviceIpArr,
devicePortArr: this.devicePortArr,
}
fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param), '')
// upDateTableByArray('IpConfigTable',[])
// @ts-ignore
ethernet.setIfaceConfig("eth0", {
mode: 0,
ipAddr: this.inputTextList1[9],
route: "0.0.0.0",
gateway: this.inputTextList1[5], //value.gateway网关
netMask: this.inputTextList1[4], //value.netMask网络掩码
dnsServers: this.inputTextList1[6],
// @ts-ignore
domain: ""
}, (error) => {
if (error) {
Prompt.showToast({
message: '设置失败' + JSON.stringify(error),
duration: 3000
});
} else {
Prompt.showToast({
message: '设置成功',
duration: 3000
});
}
});
})
}
.backgroundColor('#CCC4B8')
.width('100%')
.height('15%')
.borderRadius({ 'bottomLeft': '25px', 'bottomRight': '25px' })
.justifyContent(FlexAlign.SpaceAround)
}
.width('75%')
.height('80%')
.backgroundColor('#E6E3DF')
.borderRadius('25px')
.margin({ 'top': '2%' })
.justifyContent(FlexAlign.SpaceAround)
}
.width('100%')
.height('100%')
.backgroundImagePosition({ x: 0, y: 0 })
.backgroundImage($r('app.media.index_bg'))
.backgroundImageSize({ width: '100%', height: '100%' })
}
async aboutToAppear() {
const fileUtil = new FileUtil(this.context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
if (data === '' || data === undefined) {
} else {
const result = JSON.parse(data)
console.log('tagtag', JSON.stringify(result))
this.inputTextList1[9] = result.udplocalIp
this.inputTextList1[10] = result.udplocalIpPort
this.inputTextList1[7] = result.udpOppositeIp
this.inputTextList1[8] = result.udpOppositeIpPort
// this.inputTextList1[0]=result[0].tcplocalIp
// this.inputTextList1[13]=result[0].tcplocalIpPort
this.inputTextList1[0] = result.tcpOppositeIp
this.inputTextList1[1] = result.tcpOppositePort
this.inputTextList1[5] = result.gateway
this.inputTextList1[4] = result.netMask
this.inputTextList1[6] = result.dnsServers
this.inputTextList1[2] = result.centerIp
this.inputTextList1[3] = result.centerPort
this.selectedTerType = result.terType
this.selectedCardType = result.cardType
this.netOpen= result.netOpen
this.deviceType= result.deviceType || 0
this.deviceIpArr= result.deviceIpArr || ['','']
this.devicePortArr= result.devicePortArr || ['','']
console.log('surenjun', this.selectedTerType + '');
}
//@ts-ignore
ethernet.getIfaceConfig("eth0", (error, value) => {
if (error) {
// that.errorMsg='error'
console.log("boot_up getIp_new callback error = " + JSON.stringify(error));
} else {
console.log("boot_up getIp_new callback ipAddr = " + JSON.stringify(value.ipAddr)); //
console.log(" boot_up getIp_new callback mode = " + JSON.stringify(value.mode));
console.log("boot_up getIp_new callback route = " + JSON.stringify(value.route));
console.log("boot_up getIp_new callback gateway = " + JSON.stringify(value.gateway));
console.log("boot_up getIp_new callback netMask = " + JSON.stringify(value.netMask));
console.log("boot_up getIp_new callback dnsServers = " + JSON.stringify(value.dnsServers));
}
})
}
onPageShow() {
console.info('Index onPageShow');
}
outClick() {
}
}