GongDanXQManager.cs 14 KB

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