using Newtonsoft.Json; using System; using System.Net.Http.Headers; using System.Net.Http; using UnityEngine; using UnityEngine.UI; using static System.Net.Mime.MediaTypeNames; using System.Threading.Tasks; using static PortQuery; using System.Collections.Generic; using Unity.VisualScripting; using System.Reflection; using static UnityEditor.Progress; /// /// 端口-编辑 /// public class RedactPort : MonoBehaviour { public Root myroot; public PortQuery.Root root; public Button save_bt; public Dropdown port;//端口 public InputField portCode;//编号 public InputField portName;//名称 public InputField portType;//端口类型 public InputField deviceId;//所属设备 public InputField portModel;//型号 public Dropdown status;//状态 public Dropdown conDevice;//对联设备 public Dropdown conPort;//对联端口 private async void OnEnable() { if (gameObject.activeSelf) { #region 正式 //await initAsync(""); //port.options[0].text = myroot.port; //portCode.text = myroot.portCode; //portType.text = myroot.portType; //deviceId.text = myroot.deviceId; //portModel.text = myroot.portModel; //status.value = myroot.status; //if (!string.IsNullOrEmpty(myroot.conDevice)) //{ // //自动识别对联设备 // for (int i = 0; i < conDevice.options.Count; i++) // { // if (conDevice.options[i].text == myroot.conDevice) // { // conDevice.value = i; // OnDropdownValueChanged_conDevice(i); // break; // } // } // //自动识别端口 // for (int i = 0; i < conPort.options.Count; i++) // { // if (conPort.options[i].text == myroot.conPort) // { // conPort.value = i; // break; // } // } //} #endregion } } /// /// 获取所有端口 /// /// /// public async Task initAsync(string token) { var jsonResult = await CombineJSON.GetJson_POST("https://jsonplaceholder.typicode.com/posts", token); root = JsonConvert.DeserializeObject(jsonResult); List port_list = new List();//端口 List conDevice_list = new List();//对联设备 foreach (var item in root.data) { port_list.Add(item.port); conDevice_list.Add(item.conDevice); } conDevice.options.Clear(); conDevice.AddOptions(conDevice_list); } private void Start() { save_bt.onClick.AddListener(async () => await saveJson("")); conDevice.onValueChanged.AddListener(OnDropdownValueChanged_conDevice); } /// /// 当 Dropdown 值发生改变时(根据对联设备添加该设备下所有端口) /// /// public void OnDropdownValueChanged_conDevice(int index) { List conPort_list = new List();//对联端口 //conDevice.options[index]//对联设备ID foreach (var item in root.data) { if (item.deviceId == conDevice.options[index].text) { conPort_list.Add(item.port); } } conPort.options.Clear(); conPort.AddOptions(conPort_list); } private void Update() { } /// /// 端口-编辑保存 /// /// public async Task saveJson(string token) { if (string.IsNullOrEmpty(myroot.id)) return; string json = JsonConvert.SerializeObject(myroot); Debug.Log(json); var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri("http://wu4ifs.natappfree.cc/machineRoom/port/updateById"), Headers = { { "X-Token", token }, }, Content = new StringContent(json) { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } } }; using (var response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Debug.Log(body); } } #region JSON [System.Serializable] public class Root { /// /// id /// public string id; /// /// 端口 /// public string port; /// /// 编号 /// public string portCode; /// /// 名称 /// public string portName; /// /// 类型 /// public string portType; /// /// 所属设备 /// public string deviceId; /// /// 型号 /// public string portModel; /// /// 是否启用:1-正常;0-禁用 /// public int status; /// /// 对联设备 /// public string conDevice; /// /// 对联端口 /// public string conPort; /// /// 备注 /// public string remark; } #endregion }