You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

440 lines
15 KiB

let currentPage = 1;
const rowsPerPage = 10;
let currentEditingRow = null;
let areaData = [];
let areaData_bak = [];
//网络信息
let wired_type;
let wired_ip;
let wired_mask;
let wired_gateway;
let wired_dns;
let wireless_type;
let wireless_ip;
let wireless_mask;
let wireless_gateway;
let wireless_dns;
let wireless_ssid;
let wireless_passwd;
let wifi_list = [];
//页面加载初始化
document.addEventListener('DOMContentLoaded', function () {
fetchSystemData(); //初始化系统信息
fetchAreaData();//初始化区域信息
//升级按钮
document.getElementById('upsystem').addEventListener('click',function () {upgrade_system();});
//设备IP配置按钮--显示模态框
document.getElementById('showIPConfig').addEventListener('click',function () {show_IPConfigModel();});
//设备IP配置模态框--保存按钮
document.getElementById('saveIPConfig').addEventListener('click',function () {save_IPConfig();});
document.getElementById('connectWifi').addEventListener('click',function () {connect_wifi();});
//服务器IP配置
document.getElementById('showServerIP').addEventListener('click',function () {show_ServerIPConfig();});
document.getElementById('saveServerIP').addEventListener('click',function () {save_ServerIPConfig();});
//区域管理
document.getElementById('addAreaButton').addEventListener('click',function () {show_AreaManager();});
document.getElementById('addArea').addEventListener('click',function () {add_Area();});
//修改区域模态框
document.getElementById('modifArea').addEventListener('click',function () {modify_Area();});
});
//刷新系统信息
async function fetchSystemData() {
try{
let response = await fetch('/api/system/info');
if (!response.ok) {
throw new Error('Network response was not ok');
}
data = await response.json();
document.getElementById('system_version').textContent = data.version;
document.getElementById('dev_ID').textContent = data.ID;
document.getElementById('service_ip').value = data.service_ip;
document.getElementById('service_port').value = data.service_port;
//网络信息
wired_type = data.wired_type;
wired_ip = data.wired_ip;
wired_mask = data.wired_mask;
wired_gateway = data.wired_gateway;
wired_dns = data.wired_dns;
wireless_type = data.wireless_type;
wireless_ip = data.wireless_ip;
wireless_mask = data.wireless_mask;
wireless_gateway = data.wireless_gateway;
wireless_dns = data.wireless_dns;
wireless_ssid = data.ssid;
wireless_passwd = data.wifi_passwd;
//wifi -list
wifi_list = data.wifi_list;
wifi_list.unshift("请选择");
document.getElementById('dev_IP').textContent = `有线--${wired_ip} 无线--${wireless_ip}`;
}catch (error) {
console.error('Error fetching model data:', error);
}
}
//刷新区域信息--
async function fetchAreaData() {
try{
let response = await fetch('/api/system/area');
if (!response.ok) {
throw new Error('Network response was not ok');
}
areaData = await response.json();
areaData_bak = areaData;
currentPage = 1; // 重置当前页为第一页
renderTable(); //刷新表格
renderPagination();
}catch (error) {
console.error('Error fetching model data:', error);
}
}
//刷新表格
function renderTable(){
const tableBody = document.getElementById('table-body-area');
tableBody.innerHTML = '';
const start = (currentPage - 1) * rowsPerPage;
const end = start + rowsPerPage;
const pageData = areaData.slice(start, end);
const surplus_count = rowsPerPage - pageData.length;
pageData.forEach((area) => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${area.ID}</td>
<td>${area.area_name}</td>
<td>
<button class="btn btn-primary btn-sm modify-btn">修改</button>
<button class="btn btn-danger btn-sm delete-btn">删除</button>
</td>
`;
tableBody.appendChild(row);
row.querySelector('.modify-btn').addEventListener('click', () => show_modify_Area(row));
row.querySelector('.delete-btn').addEventListener('click', () => del_Area(row));
});
}
//刷新分页标签
function renderPagination() {
const pagination = document.getElementById('pagination-area');
pagination.innerHTML = '';
const totalPages = Math.ceil(areaData.length / rowsPerPage);
for (let i = 1; i <= totalPages; i++) {
const pageItem = document.createElement('li');
pageItem.className = 'page-item' + (i === currentPage ? ' active' : '');
pageItem.innerHTML = `<a class="page-link" href="#">${i}</a>`;
pageItem.addEventListener('click', (event) => {
event.preventDefault();
currentPage = i;
renderTable();
renderPagination();
});
pagination.appendChild(pageItem);
}
}
//系统升级
async function upgrade_system(){
alert("点击了系统升级按钮");
}
//设备IP地址配置 --- 显示模态框---------------------
function show_IPConfigModel(){
//wired页面
const el_wired_dhcp = document.getElementById('dhcp_lan');
const el_wired_static = document.getElementById('static_lan');
const el_wired_ip = document.getElementById('wiredIpAddress');
const el_wired_mask = document.getElementById('wiredSubnetMask');
const el_wired_gateway = document.getElementById('wiredGateway');
const el_wired_dns = document.getElementById('wiredDNS');
if(wired_type==0){ //dhcp
el_wired_dhcp.checked = true;
}else{
el_wired_static.checked = true;
}
el_wired_ip.value = wired_ip;
el_wired_mask.value = wired_mask;
el_wired_gateway.value = wired_gateway;
el_wired_dns.value = wired_dns;
//wireless页面
//document.getElementById('wirelessNetwork');
const el_wireless_passwd = document.getElementById('wifi_passwd');
const el_wireless_dhcp = document.getElementById('dhcp_wifi');
const el_wireless_static = document.getElementById('static_wifi');
const el_wireless_ip = document.getElementById('wirelessIpAddress');
const el_wireless_mask = document.getElementById('wirelessSubnetMask');
const el_wireless_gateway = document.getElementById('wirelessGateway');
const el_wireless_dns = document.getElementById('wirelessDNS');
//wireless_ssid = data.ssid;
//wireless_passwd = data.wifi_passwd;
if(wired_type==0){ //dhcp
el_wireless_dhcp.checked = true;
}else{
el_wireless_static.checked = true;
}
set_select_data("wirelessNetwork",wifi_list);
if(wireless_ssid == null || wireless_ssid == ""){
//控件不可操作
el_wireless_dhcp.disabled=true;
el_wireless_static.disabled=true;
el_wireless_ip.disabled=true;
el_wireless_mask.disabled=true;
el_wireless_gateway.disabled=true;
el_wireless_dns.disabled=true;
}else{
let bfind = set_select_selct("wirelessNetwork",wireless_ssid);
if(bfind== false){
el_wireless_dhcp.disabled=true;
el_wireless_static.disabled=true;
el_wireless_ip.disabled=true;
el_wireless_mask.disabled=true;
el_wireless_gateway.disabled=true;
el_wireless_dns.disabled=true;
}else{
el_wireless_passwd.value = wireless_passwd;
el_wireless_ip.value = wireless_ip;
el_wireless_mask.value = wireless_mask;
el_wireless_gateway.value = wireless_gateway;
el_wireless_dns.value = wireless_dns;
}
}
$('#ipConfigModal').modal('show');
}
//点击连接wifi 按钮
async function connect_wifi(){
alert("点击了连接wifi按钮");
}
//设备IP地址配置 --- 点击保存按钮
async function save_IPConfig(){
alert("点击了设备IP保存按钮");
}
//IP配置模态框,单选按钮点击
function handleRadioClick_lan(event){
const selectedRadio = event.target;
const el_ip = document.getElementById('wiredIpAddress');
const el_mask = document.getElementById('wiredSubnetMask');
const el_gateway = document.getElementById('wiredGateway');
const el_dns = document.getElementById('wiredDNS');
let net_type = 0; //0--dhcp,1--static
if (selectedRadio.id === 'dhcp_lan') {
net_type = 1;
el_ip.disabled = true;
el_mask.disabled = true;
el_gateway.disabled = true;
el_dns.disabled = true;
}
else if(selectedRadio.id === 'static_lan'){
net_type = 2;
el_ip.disabled = false;
el_mask.disabled = false;
el_gateway.disabled = false;
el_dns.disabled = false;
}
}
//IP配置模态框,单选按钮点击
function handleRadioClick_wifi(event){
const selectedRadio = event.target;
let wifi_type = 0; //0--dhcp,1--static
const el_ip = document.getElementById('wirelessIpAddress');
const el_mask = document.getElementById('wirelessSubnetMask');
const el_gateway = document.getElementById('wirelessGateway');
const el_dns = document.getElementById('wirelessDNS');
if (selectedRadio.id === 'dhcp_wifi') {
net_type = 1;
el_ip.disabled = true;
el_mask.disabled = true;
el_gateway.disabled = true;
el_dns.disabled = true;
}
else if(selectedRadio.id === 'static_wifi'){
net_type = 2;
el_ip.disabled = false;
el_mask.disabled = false;
el_gateway.disabled = false;
el_dns.disabled = false;
}
}
//服务器IP配置-----------------------------------------
function show_ServerIPConfig(){
const el_serviceIP = document.getElementById('serviceIP_model');
const el_servicePort = document.getElementById('servicePort_model');
el_serviceIP.value = document.getElementById('service_ip').value;
el_servicePort.value = document.getElementById('service_port').value;
$('#ServerIPModal').modal('show');
}
async function save_ServerIPConfig(){
const el_serverIP = document.getElementById('serviceIP_model');
const el_serverPort = document.getElementById('servicePort_model');
const btn = document.getElementById('saveServerIP');
serverIP = el_serverIP.value;
serverPort = el_serverPort.value;
if(serverIP==="" || serverPort===""){
alert("服务端IP和端口号不能为空!")
}
else{
if(isValidIP(serverIP)){
btn.disabled = true;
const formData = new FormData();
formData.append('ip', serverIP);
formData.append('port', serverPort);
fetch("/api/system/changeserver", {
method: 'POST',
body: formData,
})
.then(response => response.json())
.then(data => {
btn.disabled = false;
const istatus = data.status;
alert(data.msg);
if(istatus == 1){
fetchSystemData();
$('#ServerIPModal').modal('hide');
}
})
.catch(error => {
console.error('Error:', error);
alert('修改失败,请重试。');
btn.disabled = false;
});
}
else{
alert("请输入正确的IP地址!")
}
}
}
//区域管理-------------------------------------------
function show_AreaManager(){
$('#addAreaModal').modal('show');
}
async function add_Area(){
const el_ereaname = document.getElementById('area_name');
const btn = document.getElementById('addArea');
area_name = el_ereaname.value;
if(area_name===""){
alert("请输入区域名称");
}else{
btn.disabled = true;
//提交数据
const url = '/api/channel/area/add';
const data = {"name":area_name};
// 发送 POST 请求
fetch(url, {
method: 'POST', // 指定请求方法为 POST
headers: {
'Content-Type': 'application/json' // 设置请求头,告诉服务器请求体的数据类型为 JSON
},
body: JSON.stringify(data) // 将 JavaScript 对象转换为 JSON 字符串
})
.then(response => response.json()) // 将响应解析为 JSON
.then(data => {
btn.disabled = false;
const istatus = data.status;
alert(data.msg);
if(istatus == 1){
fetchAreaData();
$('#addAreaModal').modal('hide');
}
})
.catch((error) => {
alert(`Error: ${error.message}`);
btn.disabled = false;
});
}
}
//显示修改区域信息
function show_modify_Area(row){
currentEditingRow = row;
area_name = row.cells[1].innerText;
const el_areaname = document.getElementById('area_name_modif');
el_areaname.value = area_name;
$('#modifyAreaModal').modal('show');
}
//点击修改模态框的保存按钮
async function modify_Area(){
area_id = currentEditingRow.cells[0].innerText;
area_name = document.getElementById('area_name_modif').value;
const btn = document.getElementById('modifArea');
if(area_name===""){
alert("请输入区域名称!")
}else{
btn.disabled = true;
//提交数据
const url = '/api/channel/area/change';
const formData = new FormData();
formData.append('name', area_name);
formData.append('id', area_id);
//const data = {"name":area_name,"id":area_id};
// 发送 POST 请求
fetch(url, {
method: 'POST',
body: formData,
})
.then(response => response.json()) // 将响应解析为 JSON
.then(data => {
btn.disabled = false;
const istatus = data.status;
alert(data.msg);
if(istatus == 1){
fetchAreaData();
$('#modifyAreaModal').modal('hide');
}
})
.catch((error) => {
alert(`Error: ${error.message}`);
btn.disabled = false;
});
}
}
//删除区域信息
async function del_Area(row){
if (confirm('确定删除此区域吗?')){
currentEditingRow = row;
area_id =row.cells[0].innerText;
const url = '/api/channel/area/del';
const formData = new FormData();
formData.append('id', area_id);
//const data = {"name":area_name,"id":area_id};
// 发送 POST 请求
fetch(url, {
method: 'POST',
body: formData,
})
.then(response => response.json()) // 将响应解析为 JSON
.then(data => {
const istatus = data.status;
alert(data.msg);
if(istatus == 1){
//刷新列表
row.remove();
}
})
.catch((error) => {
alert(`Error: ${error.message}`);
btn.disabled = false;
});
}
}