Без опису
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

收支一覽表.cs 9.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.SceneManagement;
  5. using UnityEngine.UI;
  6. using UnityEngine.Networking;
  7. using UnityEngine.EventSystems;
  8. using System.Text.RegularExpressions;
  9. using System.Data.SqlClient;
  10. using System.Runtime.InteropServices;
  11. using System.Text;
  12. using TMPro;
  13. using System;
  14. using System.IO;
  15. using ZXing;
  16. using ZXing.QrCode;
  17. using System.Net;
  18. using System.Data;
  19. using SimpleJSON;
  20. using System.Linq;
  21. using System.ComponentModel;
  22. using System.Runtime.InteropServices;
  23. using System.Globalization;
  24. using XCharts.Runtime;
  25. public class 收支一覽表 : MonoBehaviour
  26. {
  27. [SerializeField] TextMeshProUGUI 結存;
  28. [SerializeField] TextMeshProUGUI 收入;
  29. [SerializeField] TextMeshProUGUI 支出;
  30. [SerializeField] TextMeshProUGUI 結餘;
  31. [SerializeField] TextMeshProUGUI 淨利;
  32. public TMP_Dropdown 年;
  33. public TMP_Dropdown 月;
  34. public TMP_Dropdown 帳本;
  35. [SerializeField] GameObject 帳本s;
  36. public CanvasScaler canvasScaler;
  37. [SerializeField] GameObject 讀取面板;
  38. [SerializeField] TextMeshProUGUI 讀取;
  39. [SerializeField] GameObject 彈跳面板;
  40. [SerializeField] TextMeshProUGUI 彈跳文字;
  41. private string loadingText = "";
  42. private int dotCount = 0;
  43. public GameObject buttonPrefab;
  44. public Transform buttonParent;
  45. public GameObject buttonceneter;
  46. private List<GameObject> copy = new List<GameObject>();
  47. private string start = "";
  48. private string end = "";
  49. // Start is called before the first frame update
  50. void Start()
  51. {
  52. Screen.autorotateToPortrait = false;
  53. Screen.orientation = ScreenOrientation.Portrait;
  54. float rate = 1000.0f / 1600.0f;
  55. if (canvasScaler == null)
  56. {
  57. canvasScaler = GetComponent<CanvasScaler>();
  58. }
  59. if (Main.Global.rate>rate)
  60. {
  61. canvasScaler.matchWidthOrHeight = 1f;
  62. }
  63. else
  64. {
  65. canvasScaler.matchWidthOrHeight = 0f;
  66. }
  67. StartCoroutine(AnimateText());
  68. //讀取面板.SetActive(true);
  69. //Main.Global.阿帕契路徑="http://106.1.48.106:8080/wp-content/themes/event-star/GF_main.php?";
  70. //Main.Global.預設伺服器路徑="GF01";
  71. //Main.Global.開啟帳本=false;
  72. if (Main.Global.開啟帳本 == true)
  73. {
  74. StartCoroutine(帳本清單());
  75. }
  76. else
  77. {
  78. 帳本.gameObject.SetActive(false);
  79. 帳本s.SetActive(false);
  80. StartCoroutine(年份清單());
  81. }
  82. }
  83. IEnumerator AnimateText()
  84. {
  85. string qqq = 讀取.text.ToString();
  86. while (true)
  87. {
  88. yield return new WaitForSeconds(0.5f);
  89. if (dotCount < 3)
  90. {
  91. loadingText += ".";
  92. dotCount++;
  93. }
  94. else
  95. {
  96. loadingText = "";
  97. dotCount = 0;
  98. }
  99. 讀取.text = qqq+loadingText;
  100. }
  101. }
  102. IEnumerator 年份清單()
  103. {
  104. 年.options.Clear();
  105. List<TMP_Dropdown.OptionData> options = new List<TMP_Dropdown.OptionData>();
  106. string strcon = "年份清單";
  107. string se = Main.Global.預設伺服器路徑;
  108. string strUrl = string.Format(Main.Global.阿帕契路徑+"comm={0}&se={1}", strcon, se);
  109. UnityWebRequest request = UnityWebRequest.Get(strUrl);
  110. yield return request.SendWebRequest();
  111. if (request.result == UnityWebRequest.Result.ConnectionError)
  112. {
  113. Debug.Log(request.error);
  114. yield break;
  115. }
  116. JSONNode json = JSON.Parse(request.downloadHandler.text);
  117. for (int i = 0; i < json.Count; i++)
  118. {
  119. string str = json[i].ToString().Trim('"');
  120. options.Add(new TMP_Dropdown.OptionData(str));
  121. }
  122. 年.AddOptions(options);
  123. DateTime currentDate = DateTime.Now;
  124. int index1 = 年.options.FindIndex(option => option.text == currentDate.Year.ToString());
  125. 年.value = index1;
  126. int index2 = 月.options.FindIndex(option => option.text == currentDate.Month.ToString());
  127. 月.value = index2;
  128. 年.onValueChanged.AddListener(delegate
  129. {
  130. 計算();
  131. });
  132. 月.onValueChanged.AddListener(delegate
  133. {
  134. 計算();
  135. });
  136. 計算();
  137. }
  138. IEnumerator 帳本清單()
  139. {
  140. 帳本.options.Clear();
  141. List<TMP_Dropdown.OptionData> options = new List<TMP_Dropdown.OptionData>();
  142. string strcon = "帳本清單";
  143. string se = Main.Global.預設伺服器路徑;
  144. string strUrl = string.Format(Main.Global.阿帕契路徑+"comm={0}&se={1}", strcon, se);
  145. UnityWebRequest request = UnityWebRequest.Get(strUrl);
  146. yield return request.SendWebRequest();
  147. if (request.result == UnityWebRequest.Result.ConnectionError)
  148. {
  149. Debug.Log(request.error);
  150. yield break;
  151. }
  152. JSONNode json = JSON.Parse(request.downloadHandler.text);
  153. options.Add(new TMP_Dropdown.OptionData("全部"));
  154. for (int i = 0; i < json.Count; i++)
  155. {
  156. string str = json[i].ToString().Trim('"');
  157. options.Add(new TMP_Dropdown.OptionData(str));
  158. }
  159. 帳本.AddOptions(options);
  160. 帳本.onValueChanged.AddListener(delegate
  161. {
  162. 計算();
  163. });
  164. yield return StartCoroutine(年份清單());
  165. }
  166. IEnumerator 一覽表明細()
  167. {
  168. 讀取面板.SetActive(true);
  169. if (copy != null)
  170. {
  171. DeletetextCopy();
  172. }
  173. string strcon = "一覽表明細";
  174. string pa3 = "";
  175. if (Main.Global.開啟帳本 == true)
  176. {
  177. if (帳本.options[帳本.value].text != "全部")
  178. {
  179. pa3=帳本.options[帳本.value].text;
  180. }
  181. }
  182. string se = Main.Global.預設伺服器路徑;
  183. string strUrl = string.Format(Main.Global.阿帕契路徑+"comm={0}&se={1}&PA1={2}&PA2={3}&PA3={4}", strcon, se, start,end,pa3);
  184. UnityWebRequest request = UnityWebRequest.Get(strUrl);
  185. yield return request.SendWebRequest();
  186. if (request.result == UnityWebRequest.Result.ConnectionError)
  187. {
  188. Debug.Log(request.error);
  189. yield break;
  190. }
  191. JSONNode json = JSON.Parse(request.downloadHandler.text);
  192. int sum = 2;
  193. double 上月結存 = 0;
  194. double 總收入 = 0;
  195. double 總支出 = 0;
  196. string asd = json[0][1].ToString().Trim('"');
  197. for (int i = 0; i < json.Count; i++)
  198. {
  199. GameObject buttonObj = Instantiate(buttonPrefab) as GameObject;
  200. buttonObj.GetComponent<RectTransform>().anchoredPosition = new Vector2(2, -sum);
  201. buttonObj.transform.SetParent(buttonParent, false);
  202. TextMeshProUGUI[] text = buttonObj.GetComponentsInChildren<TextMeshProUGUI>();
  203. Image[] childImages = buttonObj.GetComponentsInChildren<Image>();
  204. if (i < json.Count - 1 &&asd != json[i+1][1].ToString().Trim('"'))
  205. {
  206. asd = json[i+1][1].ToString().Trim('"');
  207. }
  208. else
  209. {
  210. childImages[6].gameObject.SetActive(false);
  211. }
  212. text[0].text =json[i][1].ToString().Trim('"');
  213. text[1].text =json[i][2].ToString().Trim('"');
  214. text[2].text =json[i][3].ToString().Trim('"');
  215. text[3].text = double.Parse(json[i][6]).ToString("#,##0");
  216. if (json[i][1].ToString().Trim('"') == "上月結存")
  217. {
  218. 上月結存 +=double.Parse(json[i][6]);
  219. 上月結存 -=double.Parse(json[i][7]);
  220. }
  221. else if (json[i][1].ToString().Trim('"') == "歲出合計")
  222. {
  223. 總支出 += double.Parse(json[i][7]);
  224. 總支出 -= double.Parse(json[i][6]);
  225. }
  226. else if (json[i][1].ToString().Trim('"') == "歲入合計")
  227. {
  228. 總收入 += double.Parse(json[i][6]);
  229. 總收入 -= double.Parse(json[i][7]);
  230. }
  231. text[4].text = double.Parse(json[i][7]).ToString("#,##0");
  232. sum+=75;
  233. copy.Add(buttonObj);
  234. }
  235. 結存.text = 上月結存.ToString("#,##0");
  236. 支出.text = 總支出.ToString("#,##0");
  237. 收入.text = 總收入.ToString("#,##0");
  238. 結餘.text = (上月結存+總收入-總支出).ToString("#,##0");
  239. 淨利.text = (總收入-總支出).ToString("#,##0");
  240. buttonceneter.GetComponent<RectTransform>().sizeDelta = new Vector2(buttonceneter.GetComponent<RectTransform>().sizeDelta.x, sum);
  241. 讀取面板.SetActive(false);
  242. }
  243. public void 計算()
  244. {
  245. int selectedYear = int.Parse(年.options[年.value].text);
  246. int selectedMonth = int.Parse(月.options[月.value].text);
  247. DateTime firstDayOfMonth = new DateTime(selectedYear, selectedMonth, 1);
  248. start = firstDayOfMonth.ToString("yyyy/MM/dd");
  249. DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);
  250. end = lastDayOfMonth.ToString("yyyy/MM/dd");
  251. StartCoroutine(一覽表明細());
  252. }
  253. public void DeletetextCopy()
  254. {
  255. foreach (GameObject i in copy)
  256. {
  257. Destroy(i);
  258. }
  259. copy.Clear();
  260. }
  261. public void exit()
  262. {
  263. change_Secen(1);
  264. }
  265. public void change_Secen(int _screenNum)
  266. {
  267. //Main.Global.判斷是否第一次=true;
  268. SceneManager.LoadScene(_screenNum);
  269. }
  270. }