using System; using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine; public class ChemicalStorageController : MonoBehaviour,HttpController { private Transform dataView; // 显示对象 private HttpRequestHandler httpRequestHandler; private int index = 0; // 数据下标 private List chemicalStorageDatas; private List lastDatas; // 上一次的数据源 private string httpUrl=HttpRequestHandler.httpIp+"/chemical/chemicalOperation/listAll"; private string encryptText; // 加密文本 private bool firstLoad = true; void OnEnable() { firstLoad = true; dataView = transform; httpRequestHandler = gameObject.AddComponent(); encryptText = AESHelper.Encrypt("/chemical/chemicalOperation/listAll"); 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> returnInfo = JsonUtility.FromJson>>(response); chemicalStorageDatas = returnInfo.data; if (firstLoad) { firstLoad = false; UpdateDataView(); } } // 请求失败的回调 private void OnError(string error) { Debug.LogError("Request Error: " + error); } // 更新填充数据 private void UpdateDataView() { chemicalStorageDatas = chemicalStorageDatas.Where(obj => obj.operationType == "1" || obj.operationType == "2").ToList(); int count = chemicalStorageDatas.Count; print("危化品领用归还数量:"+count); for (int i=0;i < dataView.childCount; i++) { // (index+i)%userDatas.Count() // 当轮播图轮动多少次时,列表的第一个数据就应该是数据源里的第多少个,用i递增过去,当超出数据源数量时使用%将多余的拿出去以获得正确的下标 // 试剂名称 dataView.GetChild(i).GetChild(0).GetChild(0).GetComponent().text = chemicalStorageDatas[(index+i)%count].chemicalName == "" ? "无":chemicalStorageDatas[(index+i)%count].chemicalName; // 时间年月日 dataView.GetChild(i).GetChild(0).GetChild(1).GetComponent().text = TextFormat.DateTimeFormat(chemicalStorageDatas[(index+i)%count].createTime); // 时分 dataView.GetChild(i).GetChild(0).GetChild(2).GetComponent().text = TextFormat.DateTimeFormat2(chemicalStorageDatas[(index+i)%count].createTime); // 操作人 dataView.GetChild(i).GetChild(0).GetChild(3).GetComponent().text = chemicalStorageDatas[(index+i)%count].nickName == ""? "无":chemicalStorageDatas[(index+i)%count].nickName; // 重量 dataView.GetChild(i).GetChild(0).GetChild(4).GetComponent().text = chemicalStorageDatas[(index+i)%count].weight == ""? "无":chemicalStorageDatas[(index+i)%count].weight; // 操作类型 switch (chemicalStorageDatas[(index+i)%count].operationType) { case "1" : dataView.GetChild(i).GetChild(0).GetChild(5).GetComponent().text = "领取"; dataView.GetChild(i).GetChild(0).GetChild(5).GetComponent().color = new Color(0, 1, 0); break; case "2" : dataView.GetChild(i).GetChild(0).GetChild(5).GetComponent().text = "归还"; dataView.GetChild(i).GetChild(0).GetChild(5).GetComponent().color = new Color(0, 0.7f, 1); break; } } } // 更新下标 public void UpdateIndex() { // 轮播图每次轮动下标增加,下标达到数据源数量最大值时清零 if (chemicalStorageDatas == null) { return; } if (index