GongDanXQManager.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using FantomLib;
  6. using LitJson;
  7. using Unity.VisualScripting;
  8. using UnityEngine;
  9. using UnityEngine.UI;
  10. using static BaoBiaoDetail;
  11. public class GongDanXQManager : MonoBehaviour
  12. {
  13. public GameObject buttongotobg;
  14. public BaoBiaoDetail XQData;
  15. public Text customerName;
  16. public Text contact;
  17. public Text mobilePhone;
  18. public Text phone;
  19. public Text email;
  20. public Text customerAddress;
  21. public Text demandNumber;
  22. public Text projectNumber;
  23. public Text projectManager;
  24. public Text deviceModel;
  25. public Text deviceNumber;
  26. public Text manufacturingTime;
  27. public Text number;
  28. public Text woKind;
  29. public Text taskName;
  30. public Text kind;
  31. public Text serviceType;
  32. public Text acceptedBy;
  33. public Text description;
  34. public Text planStartTime;
  35. public Text planEndTime;
  36. public Text dispatch;
  37. public Text dispatchTime;
  38. public Text numberF;
  39. public Text kindF;
  40. public Text customerNameF;
  41. public Text contactF;
  42. public Text mobilePhoneF;
  43. public Text customerAddressF;
  44. public Text deviceModelF;
  45. public Text serviceTypeF;
  46. public Text createTime;
  47. public Text descriptionF;
  48. public Text results;
  49. public Text unresolved;
  50. public Text followup;
  51. public Text suggestion;
  52. public Text isAdequatelyPrepared;
  53. public Text appraiselist;
  54. public Text isResolved;
  55. public Slider attitudeScores;
  56. public Text attitudeScoresT;
  57. public Slider responseScores;
  58. public Text responseScoresT;
  59. public Slider engineerSkillScores;
  60. public Text engineerSkillScoresT;
  61. public Text situation;
  62. public Text customerSuggestion;
  63. public QianZiItem customerSignature;
  64. public QianZiItem solverSignature;
  65. public ItemChooseView itemview;
  66. public List<ItemChooseView> itemviewList = new List<ItemChooseView>();
  67. public static GongDanXQManager Instance { get;set; }
  68. public Text cancelReason;
  69. public GameObject cancelgo;
  70. public GameObject zhizhigo;
  71. public GameObject dianzigo;
  72. public ImageLoadManager faultImage;
  73. public List<ImageLoadManager> faillist=new List<ImageLoadManager>();
  74. public ImageLoadManager PdfImage;
  75. public ImageLoadManager ZhizBG;
  76. void Awake()
  77. {
  78. Instance = this;
  79. }
  80. void OnEnable()
  81. {
  82. TopWindowManager.Instance.showTitle("需求单处理");
  83. for (int i=0;i<faillist.Count;i++)
  84. {
  85. Destroy(faillist[i].gameObject);
  86. }
  87. this.faillist.Clear();
  88. for (int i = 0;i<itemviewList.Count;i++)
  89. {
  90. Destroy(itemviewList[i].gameObject);
  91. }
  92. itemviewList.Clear();
  93. JsonData jsonData =new JsonData();
  94. jsonData["id"] = int.Parse(ChuLiItemManager.ChooseData["id"].ToString());
  95. if(ChuLiItemManager.ChooseData["status"].ToString()=="3")
  96. {
  97. buttongotobg.SetActive(true);
  98. }
  99. else
  100. {
  101. buttongotobg.SetActive(false);
  102. }
  103. DataManager.Instance.GetBaoGaoItem(jsonData,(str)=>{
  104. JsonData d = JsonMapper.ToObject(str);
  105. XQData= JsonMapper.ToObject<BaoBiaoDetail>(d["data"].ToJson());
  106. customerName.text = XQData.demand.customerName;
  107. contact.text = XQData.demand.contact;
  108. mobilePhone.text = XQData.demand.mobilePhone;
  109. phone.text = XQData.demand.phone;
  110. email.text = XQData.demand.email;
  111. customerAddress.text = XQData.demand.customerAddress;
  112. demandNumber.text = XQData.demand.demandNumber;
  113. projectNumber.text = XQData.demand.projectNumber;
  114. projectManager.text = XQData.demand.projectManager;
  115. deviceModel.text = XQData.demand.deviceModel;
  116. deviceNumber.text = XQData.demand.deviceNumber;
  117. // 假设你有一个秒级时间戳(例如:1738036920 对应 2025-1-28 12:02)
  118. long timestamp = XQData.demand.manufacturingTime;
  119. // 转换为 DateTime
  120. DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
  121. // 格式化为 "2025-1-28 12:02" 这样的格式
  122. manufacturingTime.text = dateTime.ToString("yyyy-M-d HH:mm");
  123. number.text = XQData.workOrder.number;
  124. woKind.text = XQData.workOrder.woKind==1?"内部":"第三方";
  125. taskName.text = XQData.workOrder.taskName;
  126. List<string> list= TianJiWindowManager.getConfigServerTypestr( XQData.demand.kind,XQData.workOrder.serviceType);
  127. kind.text = list[0];
  128. serviceType.text =list[1];
  129. acceptedBy.text = XQData.workOrder.acceptedBy;
  130. description.text = XQData.workOrder.description;
  131. // 假设你有一个秒级时间戳(例如:1738036920 对应 2025-1-28 12:02)
  132. timestamp = XQData.workOrder.planStartTime;
  133. // 转换为 DateTime
  134. dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
  135. planStartTime.text = dateTime.ToString("yyyy-M-d HH:mm");
  136. // 假设你有一个秒级时间戳(例如:1738036920 对应 2025-1-28 12:02)
  137. timestamp = XQData.workOrder.planEndTime;
  138. // 转换为 DateTime
  139. dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
  140. planEndTime.text = dateTime.ToString("yyyy-M-d HH:mm");
  141. // 假设你有一个秒级时间戳(例如:1738036920 对应 2025-1-28 12:02)
  142. timestamp = XQData.workOrder.dispatchTime;
  143. // 转换为 DateTime
  144. dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
  145. dispatchTime.text = dateTime.ToString("yyyy-M-d HH:mm");
  146. EReports ereports = new EReports();
  147. Reports reports = new Reports();
  148. if(XQData.workOrder.reports!=null)
  149. {
  150. reports =XQData.workOrder.reports;
  151. }
  152. if(ChuLiItemManager.ChooseData["status"].ToString()=="3")
  153. {
  154. cancelgo.SetActive(false);
  155. zhizhigo.SetActive(false);
  156. dianzigo.SetActive(false);
  157. return;
  158. }
  159. if(XQData.workOrder.status == 99)
  160. {
  161. cancelReason.text = XQData.workOrder.cancelReason;
  162. cancelgo.SetActive(true);
  163. zhizhigo.SetActive(false);
  164. dianzigo.SetActive(false);
  165. }
  166. else if(reports.reportsType==1)
  167. {
  168. if(reports.paperReports!=null)
  169. {
  170. for (int i = 0;i<reports.paperReports.Count;i++)
  171. {
  172. // 处理图片文件
  173. ImageLoadManager nitem = GameObject.Instantiate(ZhizBG,ZhizBG.transform.parent);
  174. nitem.loadimage(reports.paperReports[i]);
  175. nitem.gameObject.SetActive(true);
  176. this.faillist.Add(nitem);
  177. }
  178. }
  179. cancelgo.SetActive(false);
  180. zhizhigo.SetActive(true);
  181. dianzigo.SetActive(false);
  182. }
  183. else
  184. {
  185. cancelgo.SetActive(false);
  186. zhizhigo.SetActive(false);
  187. dianzigo.SetActive(true);
  188. numberF.text =XQData.workOrder.number;
  189. kindF.text = TianJiWindowManager.getConfigstr(XQData.demand.kind,0,0)[0].ToString();
  190. customerNameF.text = XQData.demand.customerName;
  191. contactF.text = XQData.demand.contact;
  192. mobilePhoneF.text = XQData.demand.mobilePhone;
  193. customerAddressF.text = XQData.demand.customerAddress;
  194. bool isnew=false;
  195. if(reports.reportsType==2)
  196. {
  197. ereports = XQData.workOrder.reports.eReports;
  198. }
  199. else
  200. {
  201. isnew=true;
  202. }
  203. deviceModelF.text = TianJiWindowManager.Instance.dtdlist.strings[ereports.deviceType];
  204. serviceType.text = TianJiWindowManager.getConfigServerTypestr(XQData.demand.kind,XQData.workOrder.serviceType)[1].ToString();
  205. // 假设你有一个秒级时间戳(例如:1738036920 对应 2025-1-28 12:02)
  206. timestamp = XQData.workOrder.createTime;
  207. // 转换为 DateTime
  208. dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
  209. // 格式化为 "2025-1-28 12:02" 这样的格式
  210. createTime.text = dateTime.ToString("yyyy-M-d HH:mm");
  211. description.text = XQData.workOrder.description;
  212. if(ereports.serviceTimeDetail!=null)
  213. {
  214. for (int i=0;i<ereports.serviceTimeDetail.Count;i++)
  215. {
  216. addItem(ereports.serviceTimeDetail[i].date,ereports.serviceTimeDetail[i].startTime,ereports.serviceTimeDetail[i].endTime,ereports.serviceTimeDetail[i].restDuration,ereports.serviceTimeDetail[i].waitingDuration);
  217. }
  218. }
  219. results.text = ereports.results;
  220. unresolved.text = ereports.unresolved;
  221. followup.text = ereports.followup;
  222. suggestion.text = ereports.suggestion;
  223. switch (ereports.appraise)
  224. {
  225. case 1:
  226. appraiselist.text= "满意";
  227. break;
  228. case 2:
  229. appraiselist.text= "一般";
  230. break;
  231. default:
  232. appraiselist.text= "不满意";
  233. break;
  234. }
  235. isAdequatelyPrepared.text = ereports.isAdequatelyPrepared?"是":"否";
  236. isResolved.text = ereports.isResolved?"是":"否";
  237. attitudeScores.value = ereports.attitudeScores;
  238. attitudeScoresT.text = ereports.attitudeScores+"分";
  239. responseScores.value = ereports.responseScores;
  240. responseScoresT.text = ereports.responseScores+"分";
  241. engineerSkillScores.value = ereports.engineerSkillScores;
  242. engineerSkillScoresT.text = ereports.engineerSkillScores+"分";
  243. situation.text = ereports.situation;
  244. customerSuggestion.text = ereports.customerSuggestion;
  245. if(ereports.customerSignature!="")
  246. {
  247. customerSignature.downloadimg(ereports.customerSignature);
  248. }
  249. if(ereports.solverSignature!="")
  250. {
  251. solverSignature.downloadimg(ereports.solverSignature);
  252. }
  253. customerSignature.GetComponent<RawImage>().texture = customerSignature.defaultTexture;
  254. solverSignature.GetComponent<RawImage>().texture = solverSignature.defaultTexture;
  255. for (int i = 0;i<XQData.workOrder.annex.Count;i++)
  256. {
  257. string extension = Path.GetExtension(XQData.workOrder.annex[i]);
  258. // 使用示例
  259. if(extension == ".png" || extension == ".jpg")
  260. {
  261. // 处理图片文件
  262. ImageLoadManager nitem = GameObject.Instantiate(faultImage,faultImage.transform.parent);
  263. nitem.loadimage(XQData.workOrder.annex[i]);
  264. nitem.gameObject.SetActive(true);
  265. this.faillist.Add(nitem);
  266. }
  267. else if(extension == ".pdf")
  268. {
  269. // 处理图片文件
  270. ImageLoadManager nitem = GameObject.Instantiate(PdfImage,PdfImage.transform.parent);
  271. nitem.loadPdf(XQData.workOrder.annex[i]);
  272. nitem.gameObject.SetActive(true);
  273. this.faillist.Add(nitem);
  274. // 处理预制体文件
  275. }
  276. }
  277. }
  278. });
  279. }
  280. public void GotoXQGD()
  281. {
  282. XQGongdanManager.id = XQData.demand.id;
  283. QuanJuBackManager.Instance.nowWindow = GongDanWindowManager.Instance.XQXQ;
  284. QuanJuBackManager.Instance.setStack(GongDanWindowManager.Instance.XQGo);
  285. TopWindowManager.Instance.showTitle(TianJiWindowManager.Instance.GetTextByKey("110009"));
  286. GongDanWindowManager.Instance.gotoXQXQ();
  287. }
  288. public void GotoShangchuanbaogao()
  289. {
  290. QuanJuBackManager.Instance.nowWindow = GongDanWindowManager.Instance.BaoGaogo;
  291. QuanJuBackManager.Instance.setStack(GongDanWindowManager.Instance.MainGo);
  292. TopWindowManager.Instance.showTitle(TianJiWindowManager.Instance.GetTextByKey("110009"));
  293. GongDanWindowManager.Instance.gotoBaoGao();
  294. }
  295. public void addItem(string a,string b, string c,string d,string e)
  296. {
  297. ItemChooseView newitem = GameObject.Instantiate(itemview,itemview.transform.parent);
  298. newitem.init(a,b,c,d,e);
  299. newitem.gameObject.SetActive(true);
  300. newitem.transform.SetSiblingIndex(1);
  301. itemviewList.Add(newitem);
  302. }
  303. }