goto.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. $(".popular").hide();
  2. $(document).on("click", ".likeSee__state__filter--item", function (event) {
  3. $(".CaseNews").toggle();
  4. $(".popular").toggle();
  5. $(".likeSee__state__filter--item").removeClass('active');
  6. $(this).addClass("active");
  7. });
  8. const urlParams = new URLSearchParams(window.location.search);
  9. let id = urlParams.get('cid');
  10. console.log(id);
  11. function get_data() {
  12. // var desid2=String(desid);
  13. // console.log(desid2);
  14. // $("#version").val(desid);
  15. // $("#version").html(desid);
  16. $.ajax({
  17. method: "GET",
  18. // url: `json/cases-${id}.json`,
  19. url: `json/cases-${id}.json`,
  20. dataType: "json",
  21. })
  22. .done(function (msg) {
  23. console.log(msg);
  24. let designersinfo = "";
  25. let CaseInfo = "";
  26. let CaseTag = "";
  27. let CaseData = "";
  28. let CaseNews = "";
  29. let CasePopular = "";
  30. let CaseDetail = "";
  31. let CasePageTitle = "";
  32. let CaseImgQuantity = "";
  33. for (let i = 0; i < msg.length; i++) {
  34. designersinfo = `
  35. <div class="container container-width-column px-md-0">
  36. <div class="article__wrapper">
  37. <h2 class="h4">${msg[i].Casetitle}</h2>
  38. <div class="d-flex justify-content-between">
  39. <div class="small">${msg[i].CaseTeamName} | 圖片提供:${msg[i].CaseCompany}</div>
  40. <div class="small">${msg[i].CaseDate}| 人氣:${msg[i].CaseViews}</div>
  41. </div>
  42. </div>
  43. </div>`
  44. CaseInfo = `
  45. <div class="row mx-0 justify-content-around align-items-center">
  46. <div class="col-md-3 px-mx-0">
  47. <div class="info__items border-end">
  48. <div>
  49. <div class="info__items__title">風格</div>
  50. <div class="info__items--ellipse">${msg[i].CaseStyle}</div>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="col-md-3 px-mx-0">
  55. <div class="info__items border-end">
  56. <div>
  57. <div class="info__items__title">格局</div>
  58. <div class="info__items--ellipse">${msg[i].CaseHouse}</div>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="col-md-3 px-mx-0">
  63. <div class="info__items border-end">
  64. <div>
  65. <div class="info__items__title">坪數</div>
  66. <div class="info__items--ellipse">${msg[i].CaseSize}</div>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="col-md-3 px-mx-0">
  71. <div class="info__items">
  72. <div>
  73. <div class="info__items__title">預算</div>
  74. <div class="info__items--ellipse">${msg[i].CaseProject}</div>
  75. </div>
  76. </div>
  77. </div>
  78. </div>`
  79. for (let j = 0; j < msg[i].CaseTag.length; j++) {
  80. // console.log(msg[i].CaseTag.length);
  81. // console.log(msg[i].CaseTag[j].Tag);
  82. CaseTag += ' \
  83. <a href="" class="btn btn-outline-custom rounded-0">'+ msg[i].CaseTag[j].Tag + '</a> \
  84. ';
  85. }
  86. CaseData = `
  87. <h4 class="d-none d-md-block">CASE DATA</h4>
  88. <div class="caseData__infoItems">
  89. <div class="caseData__infoItems__list">
  90. <div class="caseData__infoItems__list--lf">居住成員:</div>
  91. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataMember} </div>
  92. </div>
  93. <div class="caseData__infoItems__list">
  94. <div class="caseData__infoItems__list--lf">房屋坪數:</div>
  95. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataSize}</div>
  96. </div>
  97. <div class="caseData__infoItems__list">
  98. <div class="caseData__infoItems__list--lf">設計風格:</div>
  99. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataStyle}</div>
  100. </div>
  101. <div class="caseData__infoItems__list">
  102. <div class="caseData__infoItems__list--lf">房屋類型:</div>
  103. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataType}</div>
  104. </div>
  105. <div class="caseData__infoItems__list">
  106. <div class="caseData__infoItems__list--lf">房屋狀況:</div>
  107. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataSituation}</div>
  108. </div>
  109. <div class="caseData__infoItems__list">
  110. <div class="caseData__infoItems__list--lf">圖片提供:</div>
  111. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataImgProvide}</div>
  112. </div>
  113. <div class="caseData__infoItems__list">
  114. <div class="caseData__infoItems__list--lf">空間格局:</div>
  115. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataSpace}</div>
  116. </div>
  117. <div class="caseData__infoItems__list">
  118. <div class="caseData__infoItems__list--lf">主要建材:</div>
  119. <div class="caseData__infoItems__list--rt">${msg[i].CaseDataMaterial}</div>
  120. </div>
  121. </div> `
  122. CaseData2 = `
  123. <div class="caseData__designerBlock h-100">
  124. <div class="caseData__designerBlock__designer d-block d-md-none">
  125. <h4>聯絡設計師</h4>
  126. <ul>
  127. <li><a itemprop="item" href="/designer-index.php?designer_id=779"
  128. target="_blank">${msg[i].CaseCompany}</a></li>
  129. <li><a itemprop="item" href="/designer-index.php?designer_id=779"
  130. target="_blank">${msg[i].CaseTeamName} 設計師</a></li>
  131. <li>免付費諮詢專線</li>
  132. <li><a href="tel:${msg[i].ContactFreeTel}" class="tel">${msg[i].ContactFreeTel}</a></li>
  133. </ul>
  134. </div>
  135. <div class="caseData__designerBlock__designer--pc d-none d-md-block">
  136. <div class="caseData__designerBlock__designer--above">
  137. <h4>聯絡設計師</h4>
  138. <ul>
  139. <li><a href="" target="_blank">${msg[i].CaseCompany}</a></li>
  140. <li><a href="" target="_blank">${msg[i].CaseTeamName} 設計師</a></li>
  141. </ul>
  142. </div>
  143. <div class="caseData__designerBlock__designer--below">
  144. <ul>
  145. <li>
  146. 免付費諮詢專線
  147. </li>
  148. <li>
  149. <a href="tel:${msg[i].ContactFreeTel}" class="tel">${msg[i].ContactFreeTel}</a>
  150. </li>
  151. </ul>
  152. </div>
  153. </div>
  154. <div class="caseData__designerBlock__avatar">
  155. <a href="">
  156. <div class="caseData__designerBlock__avatar--img"
  157. style="background-image:url(${msg[i].ContactDesignerImg});">
  158. </div>
  159. </a>
  160. </div>
  161. </div>`
  162. for (var k = 0; k < msg[i].ProfileRecently.length; k++) {
  163. CaseNews +=
  164. '\<div class="col-md-4 ps-0"\
  165. <div class="vue-waterfall-slot">\
  166. <div class="card CaseNews-Card">\
  167. <a href="'+ msg[i].ProfileRecently[k].ProfileLink + '">\
  168. <img class="img-fluid"\
  169. src="'+ msg[i].ProfileRecently[k].ProfileImg + '"\
  170. alt="幸福空間個案圖" class="card-img-top">\
  171. </a>\
  172. </div>'
  173. CaseNews += '<div class="card-body">'
  174. for (var z = 0; z < msg[i].ProfileRecently[k].ProfileTag.length; z++) {
  175. // console.log(msg[i].ProfileRecently[k].ProfileTag.length)
  176. CaseNews += '\
  177. <a href="">\
  178. '+ msg[i].ProfileRecently[k].ProfileTag[z].Tag + '\
  179. </a>\
  180. ';
  181. }
  182. CaseNews += '</div></div></div></div>'
  183. };
  184. for (var x = 0; x < msg[i].ProfilePopularity.length; x++) {
  185. CasePopular +=
  186. '<div class="likeSee__rule"\
  187. <a href="'+ msg[i].ProfilePopularity[x].ProfileLink + '">\
  188. <div class="likeSee__bgImg">\
  189. <img class="img-fluid" src="'+ msg[i].ProfilePopularity[x].ProfileImg + '" alt="幸福空間個案圖" class="card-img-top">\
  190. </div>\
  191. </a>'
  192. CasePopular += '<div class="likeSee__tag">'
  193. for (var y = 0; y < msg[i].ProfilePopularity[x].ProfileTag.length; y++) {
  194. // console.log(msg[i].ProfileRecently[k].ProfileTag.length)
  195. CasePopular += '\
  196. <a href="'+ msg[i].ProfilePopularity[x].ProfileTag[y].TagLink + '" class="likeSee__tag--item">\
  197. '+ msg[i].ProfilePopularity[x].ProfileTag[y].Tag + '\
  198. </a>\
  199. ';
  200. }
  201. CasePopular += '</div></div>'
  202. };
  203. // 個案細節
  204. CaseDetail += '<div class="row px-0 mx-0">'
  205. CaseDetail += '<div class="col-md-8 case-slick-box" style="overflow-y: hidden;"><div class="img-wrapper-desktopp"><div class="CaseDetail-slick">'
  206. // 輪播圖
  207. for (let j = 0; j < msg[i].CaseDetail.length; j++) {
  208. CaseDetail +=
  209. '<div style="width: 960px;" class="CaseSlider" data-info="'+j+'"><div class="img-wrapper-desktop"><div class="swiper-zoom-container-desktop"><img src="'+ msg[i].CaseDetail[j].CaseDetailImg+ '" alt=""></div></div></div>'
  210. }
  211. CaseDetail += '</div></div></div>'
  212. CaseDetail +=
  213. '<div class="col-md-4" style="background-color:#fff;">\
  214. <div class="modal-header border-0">\
  215. <button type="button" class="btn-close close-window"></button>\
  216. </div>\
  217. <div class="d-flex justify-content-start align-items-center pt-5">\
  218. <a href="">\
  219. <div class="contact-section-avatar me-2">\
  220. <img class="img-fluid" src="'+ msg[i].ContactDesignerImg + '" alt="">\
  221. </div>\
  222. </a>\
  223. <div class="ms-2" style="width: 100%;">\
  224. <a href="" class="contact-section-company">\
  225. <div>\
  226. '+ msg[i].CaseCompany + '\
  227. </div>\
  228. </a>\
  229. <div style="display: flex;" class="contact-section-detail-box mt-3">\
  230. <div class="contact-section-detail-lf">\
  231. <div><i aria-hidden="true" class="fa fa-phone"></i></div>\
  232. </div>\
  233. <div class="contact-section-detail-rt">\
  234. <div><a href="tel:'+ msg[i].ContactFreeTel + '">免付費 ' + msg[i].ContactFreeTel + '</a></div>\
  235. </div>\
  236. </div>\
  237. </div>\
  238. </div>\
  239. '
  240. CaseDetail +=
  241. '<div class="info-area-title-desktop">\
  242. <a href="'+ msg[i].CasePageLink + '" target="_blank">\
  243. '+ msg[i].Casetitle + '\
  244. </a>\
  245. </div>\
  246. <div class="divider"></div>\
  247. '
  248. CaseDetail +=
  249. '<div class="info-area-other-case-desktop py-3">\
  250. <div class="ml-1">該個案的其他圖片(<span id="index" class="slickNumber">1</span>/'+ msg[i].CaseDetail.length + ')</div>\
  251. <div class="other-case-desktop-items d-flex flex-wrap">\
  252. '
  253. for (let j = 0; j < msg[i].CaseDetail.length; j++) {
  254. CaseDetail +=
  255. '<div id="img-0" data-thisid=('+j+') class="w-20 m-1 p-1 img_all CaseOtherImg" style="cursor: pointer;" onclick="slickGoTo('+j+')">\
  256. <img src=" '+ msg[i].CaseDetail[j].CaseDetailImg + '" width="70" height="70" alt="該個案的其他圖片">\
  257. </div>'
  258. };
  259. CaseDetail += '</div></div>';
  260. CaseDetail += '<div class="divider"></div>';
  261. CaseDetail +=
  262. '<div class="info-area-same-case-desktop py-3">\
  263. <div class="ml-1"><span>工業風</span> 其他作品</div>\
  264. <div class="same-case-desktop-items d-flex flex-wrap">\
  265. '
  266. for (let j = 0; j < msg[i].OtherStylePortfolio.length; j++) {
  267. CaseDetail +=
  268. '<div class="w-20 m-1 p-1 ">\
  269. <a href="'+ msg[i].OtherStylePortfolio[j].PortfoliolLink + '">\
  270. <img src="'+ msg[i].OtherStylePortfolio[j].PortfoliolImg + '" width="70" height="70" alt="' + msg[i].OtherStylePortfolio.PortfoliolImgAlt + '">\
  271. </a>\
  272. </div>'
  273. };
  274. CaseDetail += '</div></div>';
  275. CaseDetail += '<div class="divider"></div>';
  276. CaseDetail +=
  277. '<div class="info-area-data-desktop py-3">\
  278. <div class="ml-2">CASE DATA</div>\
  279. <div class="data-table-desktop ml-2">\
  280. <div class="data-table-items d-flex">\
  281. <div class="data-table-lf">\
  282. <div>裝潢費用:</div>\
  283. </div>\
  284. <div class="data-table-rt">\
  285. <div>'+ msg[i].CaseProject + '</div>\
  286. </div>\
  287. </div>\
  288. <div class="data-table-items d-flex">\
  289. <div class="data-table-lf">\
  290. <div>居住成員:</div>\
  291. </div>\
  292. <div class="data-table-rt">\
  293. <div>'+ msg[i].CaseDataMember + '</div>\
  294. </div>\
  295. </div>\
  296. <div class="data-table-items d-flex">\
  297. <div class="data-table-lf">\
  298. <div>設計風格:</div>\
  299. </div>\
  300. <div class="data-table-rt">\
  301. <div>'+ msg[i].CaseStyle + '</div>\
  302. </div>\
  303. </div>\
  304. <div class="data-table-items d-flex">\
  305. <div class="data-table-lf">\
  306. <div>房屋類型:</div>\
  307. </div>\
  308. <div class="data-table-rt">\
  309. <div>'+ msg[i].CaseDataType + '</div>\
  310. </div>\
  311. </div>\
  312. <div class="data-table-items d-flex">\
  313. <div class="data-table-lf">\
  314. <div>房屋坪數:</div>\
  315. </div>\
  316. <div class="data-table-rt">\
  317. <div>'+ msg[i].CaseSize + '</div>\
  318. </div>\
  319. </div>\
  320. <div class="data-table-items d-flex">\
  321. <div class="data-table-lf">\
  322. <div>房屋狀況:</div>\
  323. </div>\
  324. <div class="data-table-rt">\
  325. <div>'+ msg[i].CaseDataSituation + '</div>\
  326. </div>\
  327. </div>\
  328. <div class="data-table-items d-flex">\
  329. <div class="data-table-lf">\
  330. <div>圖片提供:</div>\
  331. </div>\
  332. <div class="data-table-rt">\
  333. <div>'+ msg[i].CaseCompany + '</div>\
  334. </div>\
  335. </div>\
  336. <div class="data-table-items d-flex">\
  337. <div class="data-table-lf">\
  338. <div>空間格局:</div>\
  339. </div>\
  340. <div class="data-table-rt">\
  341. <div>'+ msg[i].CaseDataSpace + '</div>\
  342. </div>\
  343. </div>\
  344. <div class="data-table-items d-flex">\
  345. <div class="data-table-lf">\
  346. <div>主要建材:</div>\
  347. </div>\
  348. <div class="data-table-rt">\
  349. <div>'+ msg[i].CaseDataMaterial + '</div>\
  350. </div>\
  351. </div>\
  352. </div>\
  353. </div>';
  354. CaseDetail += '<div class="divider"></div>';
  355. CaseDetail +=
  356. '<div class="info-area-contact-desktop py-3 mb-2">\
  357. <div class="ml-2">聯絡資訊 Info</div>\
  358. <div class="contact-section-desktop ml-2 mt-2">\
  359. <div class="contact-section-detail-desktop mt-3">\
  360. <div class="d-flex">\
  361. <div class="contact-section-detail-lf">\
  362. <div><i aria-hidden="true" class="fa fa-phone"></i></div>\
  363. </div>\
  364. <div class="contact-section-detail-rt">\
  365. <div>\
  366. <a href="tel:'+ msg[i].CaseCompanyTel + '">' + msg[i].CaseCompanyTel + '</a>\
  367. </div>\
  368. </div>\
  369. </div>\
  370. <div class="d-flex">\
  371. <div class="contact-section-detail-lf">\
  372. <div><i class="fas fa-map-marker-alt"></i></div>\
  373. </div>\
  374. <div class="contact-section-detail-rt">\
  375. <div><a href="'+ msg[i].CaseCompanyMap + '" target="_blank">' + msg[i].CaseCompanyAddress + '</a></div>\
  376. </div>\
  377. </div>\
  378. <div class="d-flex">\
  379. <div class="contact-section-detail-lf">\
  380. <div><i class="far fa-envelope"></i></div>\
  381. </div>\
  382. <div class="contact-section-detail-rt">\
  383. <div><a href="mailto:'+ msg[i].CaseCompanyEmail + '">' + msg[i].CaseCompanyEmail + '</a></div>\
  384. </div>\
  385. </div>\
  386. <div class="d-flex">\
  387. <div class="contact-section-detail-lf">\
  388. <div><i aria-hidden="true" class="fa fa-home"></i></div>\
  389. </div>\
  390. <div class="contact-section-detail-rt">\
  391. <div><a href="'+ msg[i].CaseCompanyWeb + '"\
  392. target="_blank">'+ msg[i].CaseCompanyWeb + '</a></div>\
  393. </div>\
  394. </div>\
  395. </div>\
  396. </div>\
  397. </div>'
  398. CaseDetail += '</div>'
  399. CasePageTitle += '' + msg[i].Casetitle + ''
  400. CaseImgQuantity += '<span class="ms-2 case-img-quantity">' + msg[i].CaseDetail.length + '</span>'
  401. }
  402. $('.article').html(designersinfo);
  403. $('.CaseInfo').html(CaseInfo);
  404. $('.CaseTag').html(CaseTag);
  405. $('.caseData-PC-left').html(CaseData);
  406. $('.caseData-PC-right').html(CaseData2);
  407. $('.CaseNews-Card').html(CaseNews);
  408. $('.Case-popular').html(CasePopular);
  409. $('.CaseModel').html(CaseDetail);
  410. $('#case-page-title').html(CasePageTitle);
  411. $('.case-img-quantity').html(CaseImgQuantity);
  412. $('.CaseDetail-slick').slick({
  413. slidesToShow: 1, //預設 1 幻燈片顯示幾張
  414. slidesToScroll: 1,//預設 1 幻灯片每次滑動幾張
  415. arrows: true, // 預設 true 左右箭頭是否顯示
  416. prevArrow: '<button type="button" class="slick-prev"><i class="fas fa-chevron-left" style="font-size: 32px;color: white; transform: translateY(-10px);"></i></button>',
  417. nextArrow: '<button type="button" class="slick-next"><i class="fas fa-chevron-right" style="font-size: 32px;color: white;transform: translateY(-10px);"></i></button>'
  418. });
  419. var activeimg = $(".slick-active img")[0];
  420. console.log(activeimg);
  421. var imgwidth = activeimg.width;
  422. var imgheight = activeimg.height;
  423. console.log(imgwidth);
  424. // if(imgwidth < 1000 && imgwidth >imgheight)
  425. // {
  426. // console.log(activeimg.parentNode)
  427. // activeimg.parentNode.classList.add('swiper-zoom-container-sm-desktop');
  428. // }
  429. if(imgwidth < imgheight){
  430. activeimg.style.width = 'auto';
  431. }
  432. });
  433. }
  434. get_data();
  435. $('.morePhotoTip > a').attr('href', `./casedetail.html?cid=${id}`);
  436. function slickGoTo(key) {
  437. let slickNumber="";
  438. $('.CaseDetail-slick').slick('slickGoTo', key);
  439. let slickNo=key+1;
  440. console.log(slickNo);
  441. slickNumber+=''+slickNo+''
  442. $('.slickNumber').html(slickNumber);
  443. }
  444. $(document).on("click", ".slick-prev", function (event) {
  445. let slickNumbertest='';
  446. console.log(desid-1);
  447. let slickNumber1=desid+1;
  448. slickNumbertest+=''+slickNumber1+''
  449. $('.slickNumber').html(slickNumbertest);
  450. });
  451. $(document).on("click", ".slick-next", function (event) {
  452. var desid =$(".slick-active").data("info");
  453. let slickNumbertest='';
  454. console.log(desid+1);
  455. let slickNumber1=desid+1;
  456. slickNumbertest+=''+slickNumber1+''
  457. $('.slickNumber').html(slickNumbertest);
  458. });
  459. $(document).on("click", ".close-window", function (event) {
  460. window.close();
  461. });