2025-04-14 18:13:34 +08:00

185 lines
7.2 KiB
Plaintext

import TopLogo from './compontents/TopLogo';
import ethernet from '@ohos.net.ethernet';
import common from '@ohos.app.ability.common';
import { GlobalConfig } from '../config';
import Prompt from '@system.prompt';
import FileUtils from '../utils/FileUtils';
import { EnvironmentConfigurationType } from '../model/Common';
import { BusinessError } from '@ohos.base';
@Entry
@Component
struct Index {
@State textList1: string[] =
['差分服务器Ip', '响应端口', '中心服务器IP', '响应端口', '子网掩码', '默认网关', 'dns', '后置机IP ', '响应端口',
'前置机IP', '本地端口']
@State ratio: number = 1700 / 960
@State inputFontSize: number = 12
@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 @Watch('outClick') outFlag: boolean = false;
scroller: Scroller = new Scroller()
private fileUtil!: FileUtils
private context = getContext(this) as common.UIAbilityContext;
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('60%')
.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('16.7%')
})
}
}
.width('95%')
.height('90%')
.margin({ 'top': '2%' })
.backgroundColor('#282828')
.borderRadius('15px')
}
.width('100%')
.height('80%')
.borderRadius('25px')
Column() {
Image($r('app.media.terminal_save')).width('20.5%').height('74%').onClick(async () => {
const folderPath = await this.fileUtil.initFolder(`/config`);
const param: EnvironmentConfigurationType = {
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]
}
console.log("保存参数", JSON.stringify(param))
this.fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param))
AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", param)
const host = `http://${param.centerIp}:${param.centerPort}`
console.log("中心host",host)
AppStorage.setOrCreate<string>("host", host)
ethernet.setIfaceConfig("eth0", {
mode: ethernet.IPSetMode.STATIC,
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],
domain: ""
}, (error: BusinessError) => {
if (error) {
Prompt.showToast({
message: '设置失败' + JSON.stringify(error),
duration: 3000
});
} else {
Prompt.showToast({
message: '设置成功',
duration: 3000
});
}
});
})
}
.backgroundColor('#CCC4B8')
.width('100%')
.height('20%')
.borderRadius({ 'bottomLeft': '25px', 'bottomRight': '25px' })
.justifyContent(FlexAlign.SpaceAround)
}
.width('75%')
.height('69.4%')
.backgroundColor('#E6E3DF')
.borderRadius('25px')
.margin({ 'top': '7%' })
.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() {
this.fileUtil = new FileUtils(this.context)
const data = await this.fileUtil.readFile(GlobalConfig.commonFileWriteAddress + '/config/ipConfig.txt');
if (data === '' || data === undefined) {
} else {
const result: EnvironmentConfigurationType = JSON.parse(data)
AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", 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.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 ?? ''
}
ethernet.getIfaceConfig("eth0").then(value => {
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));
}).catch((error: BusinessError) => {
console.log("boot_up getIp_new callback error = " + JSON.stringify(error));
})
}
onPageShow() {
console.info('Index onPageShow');
}
outClick() {
}
}