137 lines
5.5 KiB
C#
137 lines
5.5 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.ComponentModel.Design;
|
|||
|
|
using System.Linq;
|
|||
|
|
using TMPro;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
// 设备列表控制器
|
|||
|
|
public class DeviceListController : MonoBehaviour,HttpController
|
|||
|
|
{
|
|||
|
|
public Transform dataView; // 显示对象
|
|||
|
|
|
|||
|
|
private HttpRequestHandler httpRequestHandler;
|
|||
|
|
private int index = 0; // 数据下标
|
|||
|
|
private List<DeviceData> deviceDatas;
|
|||
|
|
private List<DeviceData> lastDatas; // 上一次的数据源
|
|||
|
|
private bool firstLoad = true;
|
|||
|
|
private string httpUrl=HttpRequestHandler.httpIp+"/device/ledger/listAllApi";
|
|||
|
|
private string encryptText; // 加密文本
|
|||
|
|
|
|||
|
|
void OnEnable()
|
|||
|
|
{
|
|||
|
|
firstLoad = true;
|
|||
|
|
httpRequestHandler = gameObject.AddComponent<HttpRequestHandler>();
|
|||
|
|
|
|||
|
|
encryptText = AESHelper.Encrypt("/device/ledger/listAllApi");
|
|||
|
|
|
|||
|
|
StartCoroutine(UpdateDataSource());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public IEnumerator UpdateDataSource()
|
|||
|
|
{
|
|||
|
|
while (true)
|
|||
|
|
{
|
|||
|
|
// 发起一个 POST 请求
|
|||
|
|
string jsonData = "{\"encryptText\":\"" + encryptText + "\"}";
|
|||
|
|
StartCoroutine(httpRequestHandler.PostRequest(httpUrl, jsonData, OnPostSuccess, OnError));
|
|||
|
|
yield return new WaitForSeconds(4f);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// POST 请求成功回调
|
|||
|
|
private void OnPostSuccess(string response)
|
|||
|
|
{
|
|||
|
|
Debug.Log("设备POST Success: "+DateTime.Now);
|
|||
|
|
ReturnInfo<List<DeviceData>> returnInfo = JsonUtility.FromJson<ReturnInfo<List<DeviceData>>>(response);
|
|||
|
|
deviceDatas = returnInfo.data;
|
|||
|
|
if (firstLoad)
|
|||
|
|
{
|
|||
|
|
firstLoad = false;
|
|||
|
|
UpdateDataView();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 请求失败的回调
|
|||
|
|
private void OnError(string error)
|
|||
|
|
{
|
|||
|
|
Debug.LogError("Request Error: " + error);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 更新填充数据
|
|||
|
|
private void UpdateDataView()
|
|||
|
|
{
|
|||
|
|
int count = deviceDatas.Count;
|
|||
|
|
print("资产数量:"+count);
|
|||
|
|
|
|||
|
|
for (int i=0;i < dataView.childCount; i++)
|
|||
|
|
{
|
|||
|
|
// (index+i)%userDatas.Count()
|
|||
|
|
// 当轮播图轮动多少次时,列表的第一个数据就应该是数据源里的第多少个,用i递增过去,当超出数据源数量时使用%将多余的拿出去以获得正确的下标
|
|||
|
|
|
|||
|
|
// 序号
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(0).GetChild(0).GetComponent<TextMeshProUGUI>().text =
|
|||
|
|
((index+i)%count+1).ToString();
|
|||
|
|
// 设备类型
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(1).GetComponent<TextMeshProUGUI>().text =
|
|||
|
|
deviceDatas[(index+i)%count].deviceType == "" ? "无":deviceDatas[(index+i)%count].deviceType;
|
|||
|
|
// 设备名称
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(2).GetComponent<TextMeshProUGUI>().text =
|
|||
|
|
deviceDatas[(index+i)%count].deviceName == "" ? "无":deviceDatas[(index+i)%count].deviceName;
|
|||
|
|
// 设备型号
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(3).GetComponent<TextMeshProUGUI>().text =
|
|||
|
|
deviceDatas[(index+i)%count].deviceModel == "" ? "无":deviceDatas[(index+i)%count].deviceModel;
|
|||
|
|
|
|||
|
|
// 设备状态
|
|||
|
|
switch (deviceDatas[(index+i)%count].deviceStatus)
|
|||
|
|
{
|
|||
|
|
case "1": dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().text = "正常";
|
|||
|
|
// 设备状态为正常时,显示浅蓝色
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().color = new Color(0f, 0.8f, 1f);
|
|||
|
|
break;
|
|||
|
|
case "2": dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().text = "故障";
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().color = new Color(1f, 0.7f, 0.2f);
|
|||
|
|
break;
|
|||
|
|
case "3": dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().text = "维修中";
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().color = new Color(0.1f, 1f, 0f);
|
|||
|
|
break;
|
|||
|
|
case "4": dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().text = "报废";
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().color = new Color(1f, 0.2f, 0.2f);
|
|||
|
|
break;
|
|||
|
|
case "5": dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().text = "未启用";
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().color = new Color(0.4f, 0.5f, 0.5f);
|
|||
|
|
break;
|
|||
|
|
default: dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().text = "无";
|
|||
|
|
dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent<TextMeshProUGUI>().color = new Color(1f, 1f, 1f);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*if (index == deviceDatas.Count-1)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}*/
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 更新下标
|
|||
|
|
public void UpdateIndex()
|
|||
|
|
{
|
|||
|
|
// 轮播图每次轮动下标增加,下标达到数据源数量最大值时清零
|
|||
|
|
if (deviceDatas == null)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (index<deviceDatas.Count-1)
|
|||
|
|
{
|
|||
|
|
index++;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
index = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
UpdateDataView();
|
|||
|
|
}
|
|||
|
|
}
|