2025-01-02 12:15:45 +08:00
|
|
|
|
using CG.Framework;
|
|
|
|
|
|
using CG.UTility;
|
2025-04-21 16:04:59 +08:00
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
using System;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
2025-04-21 16:04:59 +08:00
|
|
|
|
using UnityEngine.Networking;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
*Create By CG
|
|
|
|
|
|
*Function
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
namespace ZXK.LouDiXvMuNiu
|
|
|
|
|
|
{
|
2025-04-11 15:22:47 +08:00
|
|
|
|
public class ScoreDataPanel : UIBase
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
private InputField _studentNameInF = null;
|
|
|
|
|
|
private InputField _studentNumberInF = null;
|
|
|
|
|
|
private Text _studentTotalTxt = null;
|
2025-04-11 15:22:47 +08:00
|
|
|
|
private Text _studentActualTxt = null;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
private Text _errorTipTxt = null;
|
|
|
|
|
|
private Transform _scoreItemContent = null;
|
2025-04-11 15:22:47 +08:00
|
|
|
|
private GameObject _scoreItemPrefab = null;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
private Button _closeBtn = null;
|
|
|
|
|
|
|
|
|
|
|
|
private string _nameTemp = null;
|
|
|
|
|
|
|
|
|
|
|
|
protected override void Awake()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Awake();
|
|
|
|
|
|
_studentNameInF = GetWedage("NameTxt_N").GetComponent<InputField>();
|
|
|
|
|
|
_studentNumberInF = GetWedage("NumberTxt_N").GetComponent<InputField>();
|
|
|
|
|
|
_studentTotalTxt = GetWedage("TotalScoreText_N").GetComponent<Text>();
|
2025-04-11 15:22:47 +08:00
|
|
|
|
_studentActualTxt = GetWedage("ActualScoreTxt_N").GetComponent<Text>();
|
2025-01-02 12:15:45 +08:00
|
|
|
|
_errorTipTxt = GetWedage("ErroTipTxt_N").GetComponent<Text>();
|
|
|
|
|
|
_scoreItemContent = GetWedage("ScoreItemContent_N").transform;
|
2025-04-11 15:22:47 +08:00
|
|
|
|
_scoreItemPrefab = GetWedage("ScoreItemPrefab_N");
|
2025-01-02 12:15:45 +08:00
|
|
|
|
_closeBtn = GetWedage("CloseBtn_N").GetComponent<Button>();
|
|
|
|
|
|
|
|
|
|
|
|
_closeBtn.onClick.AddListener(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
UI_Manage.Instance.ClosePanel("ScoreDataPanel");
|
|
|
|
|
|
CG.UTility.PopUpMng._TriAble = true;
|
|
|
|
|
|
});
|
|
|
|
|
|
_studentNameInF.onValueChanged.AddListener((vul) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (UtilitiesMng.GetTransCharNum(vul) > 24)
|
|
|
|
|
|
{
|
|
|
|
|
|
_studentNameInF.text = _nameTemp;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
_studentNameInF.text = _nameTemp = vul;
|
|
|
|
|
|
}
|
|
|
|
|
|
GameManager.Instance._StudentName = _studentNameInF.text;
|
|
|
|
|
|
});
|
|
|
|
|
|
_studentNumberInF.onValueChanged.AddListener((vul) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
GameManager.Instance._StudentNumber = _studentNumberInF.text;
|
|
|
|
|
|
_errorTipTxt.gameObject.SetActive(false);
|
|
|
|
|
|
});
|
|
|
|
|
|
AddEventListener("PDFLoadBtn_N", UIEventType.OnButtonClick, () =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!CheckInfo()) return;
|
|
|
|
|
|
Queue<string[]> scoreQueue = GameManager.Instance._DataNiuHandler.GetExamScore();
|
2025-04-21 16:04:59 +08:00
|
|
|
|
string json = string.Empty;
|
|
|
|
|
|
|
2025-01-10 09:01:46 +08:00
|
|
|
|
|
2025-04-21 16:04:59 +08:00
|
|
|
|
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3>ܳɼ<DCB3><C9BC><EFBFBD>ʵ<EFBFBD>ʳɼ<CAB3>
|
|
|
|
|
|
Dictionary<string, object> data = new Dictionary<string, object>();
|
|
|
|
|
|
data.Add("name", _studentNameInF.text);
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var item in scoreQueue)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-04-21 16:04:59 +08:00
|
|
|
|
data.Add(item[0] + item[1], item[3]);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
2025-04-21 16:04:59 +08:00
|
|
|
|
|
|
|
|
|
|
foreach (var item in GameManager.Instance._DataNiuHandler.scoreTime)
|
|
|
|
|
|
{
|
|
|
|
|
|
data.Add(item.Key + "Time", item.Value);
|
|
|
|
|
|
}
|
|
|
|
|
|
json = JsonConvert.SerializeObject(data);
|
|
|
|
|
|
|
|
|
|
|
|
#if UNITY_EDITOR || UNITY_STANDALONE
|
|
|
|
|
|
AsposeHelper.Writer(json, filePath =>
|
|
|
|
|
|
{
|
|
|
|
|
|
PopUpMng.PopConBox("<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>", $"<22>ļ<EFBFBD><C4BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"{filePath}\"<22><><EFBFBD>Ƿ<EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>", "<22><><EFBFBD><EFBFBD>", "ȡ<><C8A1>",
|
|
|
|
|
|
() => { FolderBrowserHelper.OpenFolder(filePath); });
|
|
|
|
|
|
});
|
|
|
|
|
|
|
2025-04-21 17:39:52 +08:00
|
|
|
|
#elif UNITY_WEBGL
|
2025-04-21 16:04:59 +08:00
|
|
|
|
|
|
|
|
|
|
StartCoroutine(DownLoadReport(bytes =>
|
|
|
|
|
|
{
|
|
|
|
|
|
WebGLDownLoadFile.instance.DownloadDocx(bytes, json);
|
|
|
|
|
|
}));
|
2025-01-02 12:15:45 +08:00
|
|
|
|
#endif
|
2025-04-21 16:04:59 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#if UNITY_EDITOR || UNITY_STANDALONE
|
|
|
|
|
|
|
|
|
|
|
|
// string savePath = CG.UTility.FolderBrowserHelper.GetPathFromWindowsExplorer();
|
|
|
|
|
|
// if (!string.IsNullOrEmpty(savePath))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// string systemTypeName = GameManager.Instance._CurModelType;
|
|
|
|
|
|
// string fileName = "ʵѵ<CAB5>ɼ<EFBFBD><C9BC><EFBFBD>_ţ<5F><C5A3><EFBFBD><EFBFBD>̥<EFBFBD><CCA5>ֲ.pdf";
|
|
|
|
|
|
// string filePath = System.IO.Path.Combine(savePath, fileName);
|
|
|
|
|
|
// PDFGreadeManager.Instance.GreatePDFPC(filePath
|
|
|
|
|
|
// , systemTypeName
|
|
|
|
|
|
// , scoreQueue
|
|
|
|
|
|
// , GameManager.Instance._StudentName
|
|
|
|
|
|
// , GameManager.Instance._StudentNumber
|
|
|
|
|
|
// , () =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// PopUpMng.PopConBox("<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>", $"<22>ļ<EFBFBD><C4BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"{filePath}\"<22><><EFBFBD>Ƿ<EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>", "<22><><EFBFBD><EFBFBD>", "ȡ<><C8A1>",
|
|
|
|
|
|
// () => { FolderBrowserHelper.OpenFolder(filePath); });
|
|
|
|
|
|
// });
|
|
|
|
|
|
// }
|
|
|
|
|
|
//#elif UNITY_WEBGL
|
|
|
|
|
|
// string systemTypeName = GameManager.Instance._CurModelType;
|
|
|
|
|
|
// string fileName = "ʵѵ<CAB5>ɼ<EFBFBD><C9BC><EFBFBD>_ţ<5F><C5A3><EFBFBD><EFBFBD>̥<EFBFBD><CCA5>ֲ.pdf";
|
|
|
|
|
|
// PDFGreadeManager.Instance.GreatePDFWeb(fileName
|
|
|
|
|
|
// , systemTypeName
|
|
|
|
|
|
// , scoreQueue
|
|
|
|
|
|
// , GameManager.Instance._StudentName
|
|
|
|
|
|
// , GameManager.Instance._StudentNumber);
|
|
|
|
|
|
//#endif
|
2025-01-02 12:15:45 +08:00
|
|
|
|
});
|
|
|
|
|
|
ShowScore(GameManager.Instance._DataNiuHandler.GetExamScore());
|
|
|
|
|
|
CG.UTility.PopUpMng._TriAble = false;
|
|
|
|
|
|
}
|
2025-04-21 16:04:59 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>鱨<EFBFBD><E9B1A8>ģ<EFBFBD><C4A3>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
IEnumerator DownLoadReport(Action<byte[]> callback)
|
|
|
|
|
|
{
|
|
|
|
|
|
UnityWebRequest request = new UnityWebRequest(Global.reportDemoPath);
|
|
|
|
|
|
request.downloadHandler = new DownloadHandlerBuffer();
|
|
|
|
|
|
yield return request.SendWebRequest();
|
|
|
|
|
|
if (string.IsNullOrEmpty(request.error))
|
|
|
|
|
|
{
|
|
|
|
|
|
callback?.Invoke(request.downloadHandler.data);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.LogError(request.error);
|
|
|
|
|
|
}
|
|
|
|
|
|
yield return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="scoreQueue"></param>
|
|
|
|
|
|
private void ShowScore(Queue<string[]> scoreQueue)
|
|
|
|
|
|
{
|
|
|
|
|
|
float totalScore = 0.0f;//<2F>ܵ÷<DCB5>
|
|
|
|
|
|
float actualScore = 0.0f;//ʵ<>ʵ÷<CAB5>
|
2025-04-11 15:22:47 +08:00
|
|
|
|
List<string> stepNames = new List<string>();
|
|
|
|
|
|
List<int> maxScore = new List<int>();
|
|
|
|
|
|
List<int> scores = new List<int>();
|
2025-01-02 12:15:45 +08:00
|
|
|
|
foreach (string[] item in scoreQueue)
|
|
|
|
|
|
{
|
|
|
|
|
|
//WDebug.Log(item[0] + "@@@" + item[1] + "$$$" + item[2] + "%%%" + item[3]);
|
|
|
|
|
|
Transform scoreItem = _scoreItemContent.Find((item[0] + "_" + item[1]).Replace("/", ""));
|
|
|
|
|
|
if (scoreItem == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
scoreItem = Instantiate(_scoreItemPrefab, _scoreItemContent).transform;
|
|
|
|
|
|
scoreItem.name = (item[0] + "_" + item[1]).Replace("/", "");
|
|
|
|
|
|
}
|
|
|
|
|
|
scoreItem.gameObject.SetActive(true);
|
|
|
|
|
|
scoreItem.Find("StepTxt").GetComponent<Text>().text = item[0];
|
|
|
|
|
|
scoreItem.Find("CaoZuoTxt").GetComponent<Text>().text = item[1];
|
|
|
|
|
|
scoreItem.Find("TotalScoreTxt").GetComponent<Text>().text = item[2];
|
|
|
|
|
|
scoreItem.Find("ActualScoreTxt").GetComponent<Text>().text = item[3];
|
|
|
|
|
|
float _totalScore = float.Parse(item[2]);
|
|
|
|
|
|
float _actualScore = float.Parse(item[3]);
|
|
|
|
|
|
actualScore += _actualScore;
|
|
|
|
|
|
totalScore += _totalScore;
|
2025-04-11 15:22:47 +08:00
|
|
|
|
stepNames.Add(item[0] + item[1]);
|
|
|
|
|
|
maxScore.Add((int)float.Parse(item[2]));
|
|
|
|
|
|
scores.Add((int)float.Parse(item[3]));
|
|
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_studentNameInF.placeholder.GetComponent<Text>().text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...";
|
|
|
|
|
|
_studentNameInF.placeholder.GetComponent<Text>().color = new Color(1, 1, 1, 0.5f);
|
|
|
|
|
|
_studentNameInF.placeholder.GetComponent<Text>().text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7>...";
|
|
|
|
|
|
_studentNameInF.placeholder.GetComponent<Text>().color = new Color(1, 1, 1, 0.5f);
|
|
|
|
|
|
|
|
|
|
|
|
_studentNameInF.text = GameManager.Instance._StudentName;
|
|
|
|
|
|
_studentNumberInF.text = GameManager.Instance._StudentNumber;
|
|
|
|
|
|
_studentTotalTxt.text = totalScore.ToString();
|
|
|
|
|
|
_studentActualTxt.text = actualScore.ToString();
|
2025-04-11 15:22:47 +08:00
|
|
|
|
|
|
|
|
|
|
#if !UNITY_EDITOR && UNITY_WEBGL
|
|
|
|
|
|
LYTWebGLHelper.Instance.UpLoadData((int)totalScore, stepNames, maxScore, scores);
|
|
|
|
|
|
#endif
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>Ϣ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private bool CheckInfo()
|
|
|
|
|
|
{
|
|
|
|
|
|
#if UNITY_EDITOR
|
|
|
|
|
|
GameManager.Instance._StudentName = "<22><><EFBFBD><EFBFBD>";
|
|
|
|
|
|
GameManager.Instance._StudentNumber = "1234567890";
|
|
|
|
|
|
_studentNameInF.text = "<22><><EFBFBD><EFBFBD>";
|
|
|
|
|
|
_studentNameInF.text = "1234567890";
|
|
|
|
|
|
return true;
|
|
|
|
|
|
#else
|
|
|
|
|
|
bool isPass = true;
|
|
|
|
|
|
string studentName = _studentNameInF.text;
|
|
|
|
|
|
string studentNumber = _studentNumberInF.text;
|
|
|
|
|
|
if (string.IsNullOrEmpty(studentName))
|
|
|
|
|
|
{
|
|
|
|
|
|
_studentNameInF.placeholder.GetComponent<Text>().text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|
|
|
|
|
_studentNameInF.placeholder.GetComponent<Text>().color = Color.red;
|
|
|
|
|
|
isPass = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(studentNumber))
|
|
|
|
|
|
{
|
|
|
|
|
|
_studentNumberInF.placeholder.GetComponent<Text>().text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7>";
|
|
|
|
|
|
_studentNumberInF.placeholder.GetComponent<Text>().color = Color.red;
|
|
|
|
|
|
isPass = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (studentNumber.Length < 9)
|
|
|
|
|
|
{
|
|
|
|
|
|
_errorTipTxt.gameObject.SetActive(true);
|
|
|
|
|
|
//_studentNumberInF.placeholder.GetComponent<Text>().text = "ѧ<><D1A7>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|
|
|
|
|
//_studentNumberInF.placeholder.GetComponent<Text>().color = Color.red;
|
|
|
|
|
|
isPass = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return isPass;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|