CampusInfo.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. Namespace.register('CampusInfo');
  2. const {ipcRenderer} = require('electron');
  3. CampusInfo.LoadAdvert = function () {
  4. for (var i = 0; i < CampusInfo.Advert.length; i++) {
  5. var a=$$("img", {
  6. "draggable":false,
  7. "src": CampusInfo.AdvertData[i].img
  8. }, CampusInfo.Advert[i]);
  9. a.href=CampusInfo.AdvertData[i].script;
  10. a.onclick=function () {
  11. CampusInfo.OpenWeb(this.href)
  12. }
  13. }
  14. };//加载广告
  15. CampusInfo.OpenWeb=function(url){
  16. ipcRenderer.send('open-browers',url);
  17. };//打开网页
  18. CampusInfo.LoadData = function (navMain) {
  19. var data = navMain.resource;//取出数组里定义好的传参
  20. var Tag = navMain.tag;//查看是什么标签
  21. var LeftArea = navMain.Left;//左侧内容容器
  22. var CenterArea = navMain.Center;//中间内容容器
  23. var ContentLength = navMain.dataLength;//中间内容有多少个
  24. var LeftContentArr = [];//记录左侧数据
  25. var CenterTitleArr = [];//记录特殊的蓝色标题数据
  26. var CenterContentArr = [];//记录输出内容
  27. CenterContentArr[0] = [];//三个数组分别用来记录三块内容,内容长度为8或者4
  28. CenterContentArr[1] = [];
  29. CenterContentArr[2] = [];
  30. if (typeof data === 'string') {
  31. CampusInfo.NewsData = [];
  32. CampusInfo.LoadNews = function () {
  33. var url = data + "iid=" + CampusInfo.randomNum(10) + "&device_id=" + CampusInfo.randomNum(11);
  34. U.A.Request(url, null, function (rs) {
  35. rs = rs.value.data;
  36. for (var i = 0; i < rs.length; i++) {
  37. var list = JSON.parse(rs[i].content);
  38. var arr = [];
  39. var falg = true;
  40. CampusInfo.NewsData.forEach(function (value) {
  41. if (value.UserFilesName === list.title) {
  42. falg = false;
  43. return false;
  44. }
  45. });
  46. if (falg && list.image_list&&list.title.length>15) {
  47. arr.UserFilesName = list.title;
  48. arr.UserFilesServerName = list.image_list[0].url;
  49. arr.Action_url = list.url;
  50. CampusInfo.NewsData.push(arr);
  51. }
  52. }
  53. if (CampusInfo.NewsData.length < 19) {
  54. CampusInfo.LoadNews();
  55. } else {
  56. CampusInfo.DealData(ContentLength, LeftContentArr, CenterTitleArr, CenterContentArr, CampusInfo.NewsData);//处理数据
  57. CampusInfo.PrintDataLocal(LeftContentArr, CenterTitleArr, CenterContentArr, LeftArea, CenterArea, Tag);//打印数据(本地数据)
  58. CampusInfo.Loading.remove();//移除loading
  59. CampusInfo.AutoSlider();//开始自动切换
  60. CampusInfo.Bind();//绑定事件
  61. }
  62. });
  63. };
  64. CampusInfo.LoadNews();
  65. }else if(typeof data === 'object'&&CampusInfo.Fliter(data)) {
  66. U.A.Request(US.ADMINAUTH, (data), function (rs) {
  67. rs = rs.value;
  68. CampusInfo.DealData(ContentLength,LeftContentArr,CenterTitleArr,CenterContentArr,rs);//处理数据
  69. CampusInfo.PrintData(LeftContentArr,CenterTitleArr,CenterContentArr,LeftArea,CenterArea,Tag)//打印数据(获取的数据)
  70. });
  71. //注释的这里是有用的 是请求返回数据的操作
  72. }else{
  73. CampusInfo.DealData(ContentLength,LeftContentArr,CenterTitleArr,CenterContentArr,data);
  74. CampusInfo.PrintDataLocal(LeftContentArr,CenterTitleArr,CenterContentArr,LeftArea,CenterArea,Tag)
  75. }
  76. };//加载数据
  77. CampusInfo.Fliter=function (data) {
  78. for(var i=0;i<CampusInfo.FliterData.length;i++){
  79. if(CampusInfo.FliterData[i]===data){
  80. return false;
  81. }
  82. }
  83. return true;
  84. };//用于辨别本地数据
  85. CampusInfo.DealData=function (ContentLength,LeftContentArr,CenterTitleArr,CenterContentArr,rs) {/*中间内容多少条,左侧内容数组,中间标题数组,中间内容数组,获取的所有数据*/
  86. for (var i = 0; i < rs.length; i++) {
  87. if (i < 3) {
  88. LeftContentArr.push(rs[i]);
  89. } else {
  90. if (ContentLength === 4) {
  91. if (i === 3 || i === 8 || i === 13) {
  92. CenterTitleArr.push(rs[i]);
  93. }
  94. if (i > 3 && i < 8) {
  95. CenterContentArr[0].push(rs[i]);
  96. }
  97. if (i > 8 && i < 13) {
  98. CenterContentArr[1].push(rs[i]);
  99. }
  100. if (i > 13 && i < 18) {
  101. CenterContentArr[2].push(rs[i]);
  102. }
  103. } else {
  104. if (i === 3 || i === 12 || i === 21) {
  105. CenterTitleArr.push(rs[i]);
  106. }
  107. if (i > 3 && i < 12) {
  108. CenterContentArr[0].push(rs[i]);
  109. }
  110. if (i > 12 && i < 21) {
  111. CenterContentArr[1].push(rs[i]);
  112. }
  113. if (i > 21 && i < 30) {
  114. CenterContentArr[2].push(rs[i]);
  115. }
  116. }
  117. }
  118. }
  119. };
  120. CampusInfo.PrintDataLocal=function (LeftContentArr,CenterTitleArr,CenterContentArr,LeftArea,CenterArea,Tag) {/*左侧内容数组,中间标题数组,中间内容数组,左侧内容区域,中间内容区域,在CampusInfo.NavData定义的标签名*/
  121. for (var j = 0; j < CenterTitleArr.length; j++) {
  122. CenterArea[j].TitleArea.innerHTML = CenterTitleArr[j].UserFilesName;
  123. CenterArea[j].TitleArea.href = CenterTitleArr[j].Action_url;
  124. CenterArea[j].TitleArea.onclick = function () {
  125. CampusInfo.OpenWeb(this.href)
  126. };
  127. for (var k = 0; k < CenterContentArr[j].length; k++) {
  128. CenterArea[j].ContentArea[k].innerHTML = CenterContentArr[j][k].UserFilesName;
  129. CenterArea[j].ContentArea[k].href = CenterContentArr[j][k].Action_url;
  130. CenterArea[j].ContentArea[k].onclick = function () {
  131. CampusInfo.OpenWeb(this.href)
  132. };
  133. }
  134. }
  135. for (var kk = 0; kk < LeftContentArr.length; kk++) {
  136. LeftArea[kk].ImgArea.src = LeftContentArr[kk].UserFilesServerName;
  137. LeftArea[kk].TitleArea.innerHTML = LeftContentArr[kk].UserFilesName;
  138. LeftArea[kk].ImgArea.href = LeftContentArr[kk].Action_url;
  139. LeftArea[kk].ImgArea.onclick = function () {
  140. CampusInfo.OpenWeb(this.href)
  141. }
  142. }
  143. };//打印本地数据
  144. CampusInfo.PrintData=function (LeftContentArr,CenterTitleArr,CenterContentArr,LeftArea,CenterArea,Tag) {/*左侧内容数组,中间标题数组,中间内容数组,左侧内容区域,中间内容区域,在CampusInfo.NavData定义的标签名*/
  145. for (var j = 0; j < CenterTitleArr.length; j++) {
  146. CenterArea[j].TitleArea.innerHTML = CenterTitleArr[j].UserFilesName;
  147. if (Tag === 'graduation') {
  148. CenterArea[j].TitleArea.href = CampusInfo.ResourceUrl + CenterTitleArr[j].UserFilesServerName;
  149. } else {
  150. CenterArea[j].TitleArea.href = CenterTitleArr[j].Action_url;
  151. }
  152. CenterArea[j].TitleArea.onclick = function () {
  153. CampusInfo.OpenWeb(this.href)
  154. };
  155. for (var k = 0; k < CenterContentArr[j].length; k++) {
  156. CenterArea[j].ContentArea[k].innerHTML = CenterContentArr[j][k].UserFilesName;
  157. if (Tag === 'graduation') {
  158. CenterArea[j].ContentArea[k].href = CampusInfo.ResourceUrl + CenterContentArr[j][k].UserFilesServerName;
  159. } else {
  160. CenterArea[j].ContentArea[k].href = CenterContentArr[j][k].Action_url;
  161. }
  162. CenterArea[j].ContentArea[k].onclick = function () {
  163. CampusInfo.OpenWeb(this.href)
  164. };
  165. }
  166. }
  167. for (var kk = 0; kk < LeftContentArr.length; kk++) {
  168. LeftArea[kk].ImgArea.src = CampusInfo.ResourceUrl + LeftContentArr[kk].UserFilesServerName;//将图片地址添加进img标签
  169. LeftArea[kk].TitleArea.innerHTML = LeftContentArr[kk].UserFilesName;//将数据标题写入标题容器
  170. if (Tag === 'graduation') {//如果是毕业季数据
  171. LeftArea[kk].ImgArea.href = CampusInfo.ResourceUrl + LeftContentArr[kk].UserFilesServerName;//在图片前加上资源地址
  172. } else {
  173. LeftArea[kk].ImgArea.href = LeftContentArr[kk].Action_url;//否则直接放图片地址,这个href是用来点开链接的
  174. }
  175. LeftArea[kk].ImgArea.onclick = function () {
  176. CampusInfo.OpenWeb(this.href)//打开广告链接
  177. }
  178. }
  179. };//打印网络数据
  180. CampusInfo.randomNum = function (n) {
  181. var t = '';
  182. for (var i = 0; i < n; i++) {
  183. t += Math.floor(Math.random() * 10);
  184. }
  185. return t;//返回一个n长度的随机数
  186. };//随机数传参为随机数的长度
  187. CampusInfo.Bind = function () {
  188. CampusInfo.Nav[0].className = 'CampusInfoHeadNavActive';//默认第一个选中
  189. CampusInfo.Main[0].style.display = 'block';//默认第一个内容显示
  190. CampusInfo.Head.onclick=function () {
  191. CampusInfo.OpenWeb('http://seo.1473.cn')
  192. };//校内版点击跳转
  193. for (var i = 0; i < CampusInfo.Nav.length; i++) {//循环所有导航元素添加绑定事件
  194. (function (i) {
  195. CampusInfo.Nav[i].onclick = function () {//添加点击事件
  196. CampusInfo.AutoState=false;//如果点击了就取消自动切换,将自动切换禁用
  197. for (var j = 0; j < CampusInfo.Nav.length; j++) {//循环改变所有导航为未选中状态,所有内容为隐藏
  198. CampusInfo.Nav[j].className = '';
  199. CampusInfo.Main[j].style.display = 'none';
  200. }
  201. CampusInfo.Nav[i].className = 'CampusInfoHeadNavActive';//给指定的导航添加选中
  202. CampusInfo.Main[i].style.display = 'block';//给指定的内容添加显示
  203. }
  204. })(i)
  205. }
  206. };//绑定事件
  207. CampusInfo.AutoSlider = function () {
  208. if (CampusInfo.AutoState) {//如果自动切换模式打开
  209. CampusInfo.NowShow++;//默认为-1,切换对应CampusInfo.Main显示
  210. if (CampusInfo.NowShow === CampusInfo.Nav.length) {//如果是最后一个则返回第一个
  211. CampusInfo.NowShow = 0;
  212. }
  213. for (var i = 0; i < CampusInfo.Nav.length; i++) {//循环改变所有导航为未选中状态,所有内容为隐藏
  214. CampusInfo.Nav[i].className = '';
  215. CampusInfo.Main[i].style.display = 'none';
  216. }
  217. CampusInfo.Nav[CampusInfo.NowShow].className = 'CampusInfoHeadNavActive';//给指定的导航添加选中
  218. CampusInfo.Main[CampusInfo.NowShow].style.display = 'block';//给指定的内容添加显示
  219. setTimeout(function () {
  220. CampusInfo.AutoSlider();//开始自动切换
  221. }, 5000);//5秒切换一次
  222. }
  223. };//自动切换
  224. CampusInfo.LoadWeather=function (location) {
  225. if(!location){//如果没有传地址就默认为深圳
  226. location='深圳'
  227. }
  228. U.A.Request("http://api.map.baidu.com/telematics/v3/weather?location="+location+"&output=json&ak=v4Wf3i6LQtNU0CvL3fScxzIx", null, function (rs) {
  229. rs = rs.value.results[0].weather_data[0];
  230. var temperature=rs.temperature;
  231. var weather=rs.weather;
  232. CampusInfo.WeatherPanel.innerHTML=location+' '+weather+' '+temperature;//将返回信息输出到对应元素内
  233. });
  234. };//获取天气
  235. CampusInfo.Init = function () {
  236. CampusInfo.AutoState=true;//默认为true自动切换,false不切换
  237. CampusInfo.NowShow=-1;//默认显示第几个-1是为了加载完成不会直接跳过第一个
  238. CampusInfo.ResourceUrl = 'http://fs.1473.cn/';//资源地址
  239. CampusInfo.Loading=$(".CampusInfoLoading")[0];
  240. CampusInfo.WeatherPanel=$(".CampusInfoHeadWeather")[0];
  241. CampusInfo.NavContainer = $(".CampusInfoHeadNav")[0];//导航元素主容器
  242. CampusInfo.MainContainer = $(".CampusInfoMain")[0];//内容元素住容器
  243. CampusInfo.Nav = [];//记录导航元素
  244. CampusInfo.Main = [];//记录内容元素
  245. CampusInfo.Advert = [];//记录广告区域
  246. CampusInfo.Head=$(".CampusInfoHeadTitle span")[0];//获取头部的校内版元素
  247. for (var i = 0; i < CampusInfo.NavData.length; i++) {//循环导航数组创建元素
  248. var area = [];//初始化area数组
  249. var leftContent = [];//初始化左侧内容数组
  250. var li = $$("li", {
  251. "innerHTML": CampusInfo.NavData[i].name
  252. }, CampusInfo.NavContainer);//创建一个导航元素在导航容器内
  253. var container = $$("div", {
  254. "className": "CampusInfoContainer",
  255. }, CampusInfo.MainContainer);//创建一个主内容容器在内容容器内
  256. var left_container = $$("div", {
  257. "className": "CampusInfoContLeft",
  258. }, container);//创建一个左侧内容区域在主容器里
  259. var center_container = $$("div", {
  260. "className": "CampusInfoContCenter",
  261. }, container);//创建一个中心内容区域在主容器里
  262. var right_container = $$("div", {
  263. "className": "CampusInfoContRight",
  264. }, container);//传建一个右侧内容容器在数组里
  265. CampusInfo.Nav[i] = li;//将导航元素丢进数组里
  266. CampusInfo.Main[i] = container;//将页面元素丢进数组里
  267. CampusInfo.Main[i].tag = CampusInfo.NavData[i].tag;//获取导航数组的内容标签
  268. CampusInfo.Main[i].dataLength = CampusInfo.NavData[i].dataLength;//获取导航数组规定的下方内容数据个数4或者8
  269. CampusInfo.Main[i].resource = CampusInfo.NavData[i].resource;//获取导航数组中的数据来源
  270. for (var j = 0; j < 3; j++) {
  271. area[j] = $$("div", {
  272. "className": "CampusInfoContCenterContent",
  273. }, center_container);//创建一个用来放置内容的元素,因为有三栏内容 所以创建三个并记录到ara数组
  274. area[j].TitleArea = $$("p", {
  275. "className": "CampusInfoContCenterTitle",
  276. }, area[j]);//创建放置标题的元素,同样三个 丢进area下的TitleArr数组
  277. for (var k = 0; k < CampusInfo.NavData[i].dataLength; k++) {
  278. $$("span", {
  279. "className": "CampusInfoContCenterCArea" + CampusInfo.NavData[i].dataLength
  280. }, area[j]);//这里根据之前取出的数据长度创建元素,丢进area里的ContentArea
  281. area[j].ContentArea = area[j].getElementsByTagName('span');//记录创建的span数组
  282. }
  283. CampusInfo.Main[i].Center = area;//将area丢回内容元素下的中间部分
  284. leftContent[j] = $$("div", {
  285. "className": "CampusInfoContLeftContent"
  286. }, left_container);//创建三个放置左侧内容的元素
  287. leftContent[j].ImgArea = $$("img", {"draggable":false}, leftContent[j]);//对应三个内容的img标签 丢回leftContent下的ImgArea数组
  288. leftContent[j].TitleArea = $$("p", {}, leftContent[j]);//对应三个内容的标题,丢回leftContent下的TitleArea数组
  289. CampusInfo.Main[i].Left = leftContent//将leftContent丢进主容器下的左侧数组
  290. }
  291. for (var k = 0; k < 2; k++) {
  292. var advert = $$("div", {
  293. "className": "CampusInfoContRightContent",
  294. }, right_container);//在每个右侧版块创建两个放置广告的元素
  295. CampusInfo.Advert.push(advert)//将创建的广告容器元素丢进数组里
  296. }
  297. }
  298. for(var i=0;i<CampusInfo.Main.length;i++){
  299. CampusInfo.LoadData(CampusInfo.Main[i]);//加载数据,传入要加载的主容器
  300. }
  301. CampusInfo.LoadAdvert();//加载广告
  302. CampusInfo.LoadWeather();//加载天气
  303. }();//初始化