forked from liweijie/education
1 line
32 KiB
JSON
1 line
32 KiB
JSON
{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachBusiness\\timetable\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachBusiness\\timetable\\index.vue","mtime":1787648748775},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBsaXN0VG9kYXksIGxpc3RXZWVrLCBsaXN0Q2xhc3MsIGV4cG9ydENsYXNzUGxhbiwgZXhwb3J0Q2xhc3NHcmFkZXMsIGV4cG9ydENsYXNzQ291cnNlcyB9IGZyb20gJ0AvYXBpL3RlYWNoQnVzaW5lc3MvdGltZXRhYmxlJw0KaW1wb3J0IHsgbGlzdFRlYW0gfSBmcm9tICdAL2FwaS9zdHVkZW50UmVjb3Jkcy90ZWFtJw0KDQpjb25zdCBKQ19TRUNUSU9OID0gew0KICAxOiAnMS0y6IqCJywgMjogJzMtNOiKgicsIDM6ICc1LTboioInLCA0OiAnNy046IqCJywgNTogJzktMTDoioInLCA2OiAnMTEtMTLoioInDQp9DQoNCmNvbnN0IFdFRUtfREFZX05BTUVTID0gWyfml6UnLCAn5LiAJywgJ+S6jCcsICfkuIknLCAn5ZubJywgJ+S6lCcsICflha0nXQ0KDQpmdW5jdGlvbiBwYWQyKG4pIHsNCiAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiAnJyArIG4NCn0NCg0KZnVuY3Rpb24gZm9ybWF0RGF0ZShkKSB7DQogIHJldHVybiBkLmdldEZ1bGxZZWFyKCkgKyAnLScgKyBwYWQyKGQuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgcGFkMihkLmdldERhdGUoKSkNCn0NCg0KZnVuY3Rpb24gZ2V0TW9uZGF5KGQpIHsNCiAgY29uc3QgZGF5ID0gZC5nZXREYXkoKSB8fCA3DQogIGNvbnN0IG1vbmRheSA9IG5ldyBEYXRlKGQpDQogIG1vbmRheS5zZXREYXRlKGQuZ2V0RGF0ZSgpIC0gZGF5ICsgMSkNCiAgcmV0dXJuIG1vbmRheQ0KfQ0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdUaW1ldGFibGUnLA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBhY3RpdmVUYWI6ICd0b2RheScsDQogICAgICBsb2FkaW5nOiBmYWxzZSwNCiAgICAgIC8vIOS7iuaXpQ0KICAgICAgdG9kYXlEYXRlOiBuZXcgRGF0ZSgpLA0KICAgICAgdG9kYXlEYXRhOiBbXSwNCiAgICAgIC8vIOacrOWRqA0KICAgICAgd2Vla1N0YXJ0OiBnZXRNb25kYXkobmV3IERhdGUoKSksDQogICAgICB3ZWVrRGF0YTogW10sDQogICAgICAvLyDnj63mrKENCiAgICAgIHNlYXJjaEZvcm06IHsgdGVhbUNsYXNzOiAnJyB9LA0KICAgICAgdGVhbUNsYXNzT3B0aW9uczogW10sDQogICAgICB0ZWFtTWFwOiB7fSwNCiAgICAgIHNoaWZ0RGF0YTogW10NCiAgICB9DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgZGF0ZVRpdGxlKCkgew0KICAgICAgcmV0dXJuIGZvcm1hdERhdGUodGhpcy50b2RheURhdGUpICsgJyDku4rml6XmlZnlrablrp7mlr3orqHliJInDQogICAgfSwNCiAgICB3ZWVrUmFuZ2VUZXh0KCkgew0KICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUodGhpcy53ZWVrU3RhcnQpDQogICAgICBlbmQuc2V0RGF0ZShlbmQuZ2V0RGF0ZSgpICsgNikNCiAgICAgIHJldHVybiBmb3JtYXREYXRlKHRoaXMud2Vla1N0YXJ0KSArICcoJyArIHRoaXMud2Vla0RheU5hbWUodGhpcy53ZWVrU3RhcnQpICsgJykg6IezICcgKw0KICAgICAgICBmb3JtYXREYXRlKGVuZCkgKyAnKCcgKyB0aGlzLndlZWtEYXlOYW1lKGVuZCkgKyAnKSDmnKzlkajmlZnlrablrp7mlr3orqHliJInDQogICAgfSwNCiAgICBwYWdlVGl0bGUoKSB7DQogICAgICBjb25zdCBuYW1lID0gdGhpcy5zZWFyY2hGb3JtLnRlYW1DbGFzcyB8fCAnJw0KICAgICAgcmV0dXJuIChuYW1lID8gbmFtZSArICcgJyA6ICcnKSArICfmlZnlrabnj63mrKHmlZnlrablrp7mlr3orqHliJInDQogICAgfQ0KICB9LA0KICBjcmVhdGVkKCkgew0KICAgIHRoaXMubG9hZFRlYW1PcHRpb25zKCkNCiAgICB0aGlzLmdldFRvZGF5TGlzdCgpDQogICAgdGhpcy5nZXRXZWVrTGlzdCgpDQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICB3ZWVrRGF5TmFtZShkKSB7DQogICAgICByZXR1cm4gV0VFS19EQVlfTkFNRVNbZC5nZXREYXkoKV0NCiAgICB9LA0KICAgIGZvcm1hdEpjKGpjKSB7DQogICAgICBpZiAoamMgPT09IG51bGwgfHwgamMgPT09IHVuZGVmaW5lZCB8fCBqYyA9PT0gJycpIHJldHVybiAn56ysP+iKgicNCiAgICAgIHJldHVybiBKQ19TRUNUSU9OW2pjXSB8fCAoJ+esrCcgKyBqYyArICfoioInKQ0KICAgIH0sDQogICAgLyogLS0tLS0tLS0tLSDku4rml6XvvJrml6XmnJ/lr7zoiKogLS0tLS0tLS0tLSAqLw0KICAgIGhhbmRsZVByZXZEYXkoKSB7DQogICAgICBjb25zdCBkID0gbmV3IERhdGUodGhpcy50b2RheURhdGUpDQogICAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgLSAxKQ0KICAgICAgdGhpcy50b2RheURhdGUgPSBkDQogICAgICB0aGlzLmdldFRvZGF5TGlzdCgpDQogICAgfSwNCiAgICBoYW5kbGVOZXh0RGF5KCkgew0KICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHRoaXMudG9kYXlEYXRlKQ0KICAgICAgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgMSkNCiAgICAgIHRoaXMudG9kYXlEYXRlID0gZA0KICAgICAgdGhpcy5nZXRUb2RheUxpc3QoKQ0KICAgIH0sDQogICAgLyogLS0tLS0tLS0tLSDmnKzlkajvvJrlkajmrKHlr7zoiKogLS0tLS0tLS0tLSAqLw0KICAgIGhhbmRsZVByZXZXZWVrKCkgew0KICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHRoaXMud2Vla1N0YXJ0KQ0KICAgICAgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpIC0gNykNCiAgICAgIHRoaXMud2Vla1N0YXJ0ID0gZA0KICAgICAgdGhpcy5nZXRXZWVrTGlzdCgpDQogICAgfSwNCiAgICBoYW5kbGVOZXh0V2VlaygpIHsNCiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh0aGlzLndlZWtTdGFydCkNCiAgICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDcpDQogICAgICB0aGlzLndlZWtTdGFydCA9IGQNCiAgICAgIHRoaXMuZ2V0V2Vla0xpc3QoKQ0KICAgIH0sDQogICAgLyogLS0tLS0tLS0tLSDpmJ/liKvnj63mrKHkuIvmi4nvvIjnnJ/lrp7mjqXlj6PvvIkgLS0tLS0tLS0tLSAqLw0KICAgIGxvYWRUZWFtT3B0aW9ucygpIHsNCiAgICAgIGxpc3RUZWFtKHsgcGFnZU51bTogMSwgcGFnZVNpemU6IDEwMDAgfSkudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhIHx8IHt9DQogICAgICAgIGNvbnN0IGxpc3QgPSBkYXRhLnJlY29yZHMgfHwgW10NCiAgICAgICAgY29uc3QgbWFwID0ge30NCiAgICAgICAgOyhsaXN0IHx8IFtdKS5mb3JFYWNoKGl0ZW0gPT4gew0KICAgICAgICAgIGlmIChpdGVtLnh5ZG1jKSBtYXBbaXRlbS54eWRtY10gPSBpdGVtLnh5ZGJoDQogICAgICAgIH0pDQogICAgICAgIHRoaXMudGVhbU1hcCA9IG1hcA0KICAgICAgICB0aGlzLnRlYW1DbGFzc09wdGlvbnMgPSBsaXN0Lm1hcChpdGVtID0+IGl0ZW0ueHlkbWMpLmZpbHRlcihCb29sZWFuKQ0KICAgICAgfSkuY2F0Y2goKCkgPT4gew0KICAgICAgICB0aGlzLnRlYW1NYXAgPSB7fQ0KICAgICAgICB0aGlzLnRlYW1DbGFzc09wdGlvbnMgPSBbXQ0KICAgICAgfSkNCiAgICB9LA0KICAgIC8qIC0tLS0tLS0tLS0g5pWw5o2u5a2X5q615pig5bCE77yI5o6l5Y+j5a2X5q61IC0+IOmhtemdouWtl+aute+8iSAtLS0tLS0tLS0tICovDQogICAgcGFyc2VTZWN0aW9uKHNrc2opIHsNCiAgICAgIGNvbnN0IG0gPSBTdHJpbmcoc2tzaiB8fCAnJykubWF0Y2goL+esrChcZCsp6IqCLykNCiAgICAgIHJldHVybiBtID8gTnVtYmVyKG1bMV0pIDogdW5kZWZpbmVkDQogICAgfSwNCiAgICBtYXBMZXNzb25Sb3coYXBpUm93KSB7DQogICAgICAvLyDmjqXlj6Pku4rml6Uv5pys5ZGo5a6e5L2T77yaYmggc2tzaiBrYyB6cmR3IGJjIGp5IGNkIGp4bnJ4ZmYgYnoNCiAgICAgIGNvbnN0IHJvdyA9IE9iamVjdC5hc3NpZ24oe30sIGFwaVJvdykNCiAgICAgIHJvdy5rY21jID0gYXBpUm93LmtjDQogICAgICByb3cuc2tqeSA9IGFwaVJvdy5qeQ0KICAgICAgcm93Lmp4Y2QgPSBhcGlSb3cuY2QNCiAgICAgIHJvdy5qeG5yZmYgPSBhcGlSb3cuanhucnhmZg0KICAgICAgcm93Lmp5YnogPSBhcGlSb3cuYnoNCiAgICAgIHJvdy5zanNqID0gYXBpUm93LnNrc2oNCiAgICAgIHJvdy5qYyA9IHRoaXMucGFyc2VTZWN0aW9uKGFwaVJvdy5za3NqKQ0KICAgICAgcmV0dXJuIHJvdw0KICAgIH0sDQogICAgbWFwQ2xhc3NSb3coYXBpUm93KSB7DQogICAgICAvLyDmjqXlj6Pnj63mrKHlrp7kvZPvvJpzc2tjYmgga2NtY2tzeHMgenJqeWtjIGpoeHMgeXh4cyBraGx4ZnMgc3NqeSByc2NkIHNzamhiZw0KICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LmFzc2lnbih7fSwgYXBpUm93KQ0KICAgICAgY29uc3QgcGFydHMgPSBTdHJpbmcoYXBpUm93LmtjbWNrc3hzIHx8ICcnKS5zcGxpdCgnIC8gJykNCiAgICAgIHJvdy5rY21jID0gcGFydHNbMF0gfHwgJy0nDQogICAgICByb3cua3NzayA9IHBhcnRzWzFdIHx8ICctJw0KICAgICAgcm93LnpyanMgPSBhcGlSb3cuenJqeWtjDQogICAgICByb3cuc3NqcyA9IGFwaVJvdy5zc2p5DQogICAgICByZXR1cm4gcm93DQogICAgfSwNCiAgICAvKiAtLS0tLS0tLS0tIOS7iuaXpe+8muaLieWPluaVsOaNriAtLS0tLS0tLS0tICovDQogICAgZ2V0VG9kYXlMaXN0KCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZQ0KICAgICAgbGlzdFRvZGF5KHt9KS50aGVuKHJlc3BvbnNlID0+IHsNCiAgICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmRhdGENCiAgICAgICAgdGhpcy50b2RheURhdGEgPSBBcnJheS5pc0FycmF5KGRhdGEpDQogICAgICAgICAgPyAoZGF0YSB8fCBbXSkubWFwKGl0ZW0gPT4gdGhpcy5tYXBMZXNzb25Sb3coaXRlbSkpDQogICAgICAgICAgOiAoKGRhdGEgJiYgZGF0YS5yZWNvcmRzKSB8fCBbXSkubWFwKGl0ZW0gPT4gdGhpcy5tYXBMZXNzb25Sb3coaXRlbSkpDQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICB9KS5jYXRjaCgoKSA9PiB7DQogICAgICAgIHRoaXMudG9kYXlEYXRhID0gW10NCiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgIH0pDQogICAgfSwNCiAgICAvKiAtLS0tLS0tLS0tIOacrOWRqO+8muaLieWPluaVsOaNriAtLS0tLS0tLS0tICovDQogICAgZ2V0V2Vla0xpc3QoKSB7DQogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlDQogICAgICBsaXN0V2Vlayh7fSkudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhDQogICAgICAgIHRoaXMud2Vla0RhdGEgPSBBcnJheS5pc0FycmF5KGRhdGEpDQogICAgICAgICAgPyAoZGF0YSB8fCBbXSkubWFwKGl0ZW0gPT4gdGhpcy5tYXBMZXNzb25Sb3coaXRlbSkpDQogICAgICAgICAgOiAoKGRhdGEgJiYgZGF0YS5yZWNvcmRzKSB8fCBbXSkubWFwKGl0ZW0gPT4gdGhpcy5tYXBMZXNzb25Sb3coaXRlbSkpDQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICB9KS5jYXRjaCgoKSA9PiB7DQogICAgICAgIHRoaXMud2Vla0RhdGEgPSBbXQ0KICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgfSkNCiAgICB9LA0KICAgIC8qIC0tLS0tLS0tLS0g54+t5qyh77ya5ouJ5Y+W5pWw5o2uIC0tLS0tLS0tLS0gKi8NCiAgICBnZXRTaGlmdExpc3QoKSB7DQogICAgICBpZiAoIXRoaXMuc2VhcmNoRm9ybS50ZWFtQ2xhc3MpIHJldHVybg0KICAgICAgY29uc3QgeHlkYmggPSB0aGlzLnRlYW1NYXBbdGhpcy5zZWFyY2hGb3JtLnRlYW1DbGFzc10gfHwgdGhpcy5zZWFyY2hGb3JtLnRlYW1DbGFzcw0KICAgICAgY29uc3QgcGFyYW1zID0geyB4eWRiaDogeHlkYmgsIHBhZ2VOdW06IDEsIHBhZ2VTaXplOiAxMDAwIH0NCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWUNCiAgICAgIGxpc3RDbGFzcyhwYXJhbXMpLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YSB8fCB7fQ0KICAgICAgICB0aGlzLnNoaWZ0RGF0YSA9IChkYXRhLnJlY29yZHMgfHwgW10pLm1hcChpdGVtID0+IHRoaXMubWFwQ2xhc3NSb3coaXRlbSkpDQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICB9KS5jYXRjaCgoKSA9PiB7DQogICAgICAgIHRoaXMuc2hpZnREYXRhID0gW10NCiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgIH0pDQogICAgfSwNCiAgICAvKiAtLS0tLS0tLS0tIOePreasoe+8muafpeivoiAtLS0tLS0tLS0tICovDQogICAgaGFuZGxlUXVlcnkoKSB7DQogICAgICBpZiAoIXRoaXMuc2VhcmNoRm9ybS50ZWFtQ2xhc3MpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7flhYjpgInmi6npmJ/liKvnj63mrKEnKQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIHRoaXMuZ2V0U2hpZnRMaXN0KCkNCiAgICB9LA0KICAgIC8qIC0tLS0tLS0tLS0g5LiL6L29IC0tLS0tLS0tLS0gKi8NCiAgICBkb3dubG9hZEJsb2IoYmxvYiwgZmlsZW5hbWUpIHsNCiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykNCiAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpDQogICAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWUNCiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaykNCiAgICAgIGxpbmsuY2xpY2soKQ0KICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKQ0KICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwobGluay5ocmVmKQ0KICAgIH0sDQogICAgc2hpZnRRdWVyeVBhcmFtcygpIHsNCiAgICAgIGlmICghdGhpcy5zZWFyY2hGb3JtLnRlYW1DbGFzcykgcmV0dXJuIG51bGwNCiAgICAgIGNvbnN0IHh5ZGJoID0gdGhpcy50ZWFtTWFwW3RoaXMuc2VhcmNoRm9ybS50ZWFtQ2xhc3NdIHx8IHRoaXMuc2VhcmNoRm9ybS50ZWFtQ2xhc3MNCiAgICAgIHJldHVybiB7IHh5ZGJoOiB4eWRiaCB9DQogICAgfSwNCiAgICAvKiog5LiL6L295a2m5pyf5pWZ5a2m5a6e5pa96K6h5YiSIEV4Y2Vs77yIR0VUIC9rY2IvY2xhc3MvZXhwb3J0LXBsYW7vvIkgKi8NCiAgICBoYW5kbGVFeHBvcnRQbGFuKCkgew0KICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5zaGlmdFF1ZXJ5UGFyYW1zKCkNCiAgICAgIGlmICghcGFyYW1zKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI6YCJ5oup6Zif5Yir54+t5qyhJykNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBleHBvcnRDbGFzc1BsYW4ocGFyYW1zKS50aGVuKGJsb2IgPT4gew0KICAgICAgICB0aGlzLmRvd25sb2FkQmxvYihibG9iLCAn5a2m5pyf5pWZ5a2m5a6e5pa96K6h5YiSLnhsc3gnKQ0KICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+Wtpuacn+aVmeWtpuWunuaWveiuoeWIkuWvvOWHuuaIkOWKnycpDQogICAgICB9KS5jYXRjaCgoKSA9PiB7fSkNCiAgICB9LA0KICAgIC8qKiDkuIvovb3lrabmnJ/miJDnu6nooaggRXhjZWzvvIhHRVQgL2tjYi9jbGFzcy9leHBvcnQtZ3JhZGVz77yJICovDQogICAgaGFuZGxlRXhwb3J0R3JhZGVzKCkgew0KICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5zaGlmdFF1ZXJ5UGFyYW1zKCkNCiAgICAgIGlmICghcGFyYW1zKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI6YCJ5oup6Zif5Yir54+t5qyhJykNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBleHBvcnRDbGFzc0dyYWRlcyhwYXJhbXMpLnRoZW4oYmxvYiA9PiB7DQogICAgICAgIHRoaXMuZG93bmxvYWRCbG9iKGJsb2IsICflrabmnJ/miJDnu6nooagueGxzeCcpDQogICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5a2m5pyf5oiQ57up6KGo5a+85Ye65oiQ5YqfJykNCiAgICAgIH0pLmNhdGNoKCgpID0+IHt9KQ0KICAgIH0sDQogICAgLyoqIOePreasoeivvueoi+WIl+ihqOWPpuWtmCBFeGNlbO+8iEdFVCAva2NiL2NsYXNzL2V4cG9ydC1jb3Vyc2Vz77yJICovDQogICAgaGFuZGxlRXhwb3J0Q291cnNlcygpIHsNCiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuc2hpZnRRdWVyeVBhcmFtcygpDQogICAgICBpZiAoIXBhcmFtcykgew0KICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+WFiOmAieaLqemYn+WIq+ePreasoScpDQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgZXhwb3J0Q2xhc3NDb3Vyc2VzKHBhcmFtcykudGhlbihibG9iID0+IHsNCiAgICAgICAgdGhpcy5kb3dubG9hZEJsb2IoYmxvYiwgJ+ePreasoeivvueoi+WIl+ihqC54bHN4JykNCiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfnj63mrKHor77nqIvliJfooajlr7zlh7rmiJDlip8nKQ0KICAgICAgfSkuY2F0Y2goKCkgPT4ge30pDQogICAgfQ0KICB9DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/teachBusiness/timetable","sourcesContent":["<template>\r\n <div class=\"app-container timetable-page\">\r\n <el-tabs v-model=\"activeTab\" class=\"timetable-tabs\">\r\n <!-- ==================== 今日教学实施计划 ==================== -->\r\n <el-tab-pane label=\"今日教学实施计划\" name=\"today\">\r\n <div class=\"tab-body\">\r\n <div class=\"date-header\">\r\n <el-link type=\"primary\" :underline=\"false\" class=\"nav-link\" @click=\"handlePrevDay\">前一天</el-link>\r\n <div class=\"date-title\">{{ dateTitle }}</div>\r\n <el-link type=\"primary\" :underline=\"false\" class=\"nav-link\" @click=\"handleNextDay\">后一天</el-link>\r\n </div>\r\n\r\n <div class=\"table-card\">\r\n <el-table :data=\"todayData\" v-loading=\"loading\" stripe border>\r\n <el-table-column type=\"index\" label=\"序号\" width=\"55\" align=\"center\" />\r\n <el-table-column label=\"上课时间\" width=\"130\" align=\"center\">\r\n <template #default=\"{ row }\">{{ formatJc(row.jc) }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"kcmc\" label=\"课程\" min-width=\"140\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"zrdw\" label=\"责任单位\" width=\"110\" align=\"center\" />\r\n <el-table-column prop=\"bc\" label=\"班次\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"skjy\" label=\"教员\" width=\"90\" align=\"center\" />\r\n <el-table-column label=\"场地\" width=\"140\" align=\"center\" show-overflow-tooltip>\r\n <template #default=\"{ row }\">{{ row.jxcd || '-' }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"教学内容方法\" min-width=\"160\" show-overflow-tooltip header-align=\"center\">\r\n <template #default=\"{ row }\">{{ row.jxnrff || '-' }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"jybz\" label=\"备注\" width=\"100\" show-overflow-tooltip header-align=\"center\">\r\n <template #default=\"{ row }\">{{ row.jybz || '-' }}</template>\r\n </el-table-column>\r\n </el-table>\r\n <el-empty v-show=\"!loading && !todayData.length\" description=\"暂无教学计划数据\" />\r\n </div>\r\n </div>\r\n </el-tab-pane>\r\n\r\n <!-- ==================== 本周教学实施计划 ==================== -->\r\n <el-tab-pane label=\"本周教学实施计划\" name=\"week\">\r\n <div class=\"tab-body\">\r\n <div class=\"week-header\">\r\n <el-link type=\"primary\" :underline=\"false\" class=\"nav-link\" @click=\"handlePrevWeek\">上一周</el-link>\r\n <div class=\"week-title\">{{ weekRangeText }}</div>\r\n <el-link type=\"primary\" :underline=\"false\" class=\"nav-link\" @click=\"handleNextWeek\">下一周</el-link>\r\n </div>\r\n\r\n <div class=\"table-card\">\r\n <el-table :data=\"weekData\" v-loading=\"loading\" stripe border>\r\n <el-table-column type=\"index\" label=\"序号\" width=\"55\" align=\"center\" />\r\n <el-table-column label=\"上课时间\" width=\"170\" align=\"center\" show-overflow-tooltip>\r\n <template #default=\"{ row }\">{{ row.sjsj || '-' }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"kcmc\" label=\"课程\" min-width=\"130\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"zrdw\" label=\"责任单位\" width=\"100\" align=\"center\" />\r\n <el-table-column prop=\"bc\" label=\"班次\" width=\"130\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"skjy\" label=\"教员\" width=\"90\" align=\"center\" />\r\n <el-table-column label=\"场地\" width=\"140\" align=\"center\" show-overflow-tooltip>\r\n <template #default=\"{ row }\">{{ row.jxcd || '-' }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"教学内容方法\" min-width=\"150\" show-overflow-tooltip header-align=\"center\">\r\n <template #default=\"{ row }\">{{ row.jxnrff || '-' }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"jybz\" label=\"备注\" width=\"100\" show-overflow-tooltip header-align=\"center\">\r\n <template #default=\"{ row }\">{{ row.jybz || '-' }}</template>\r\n </el-table-column>\r\n </el-table>\r\n <el-empty v-show=\"!loading && !weekData.length\" description=\"本周暂无教学计划数据\" />\r\n </div>\r\n </div>\r\n </el-tab-pane>\r\n\r\n <!-- ==================== 教学班次教学实施计划 ==================== -->\r\n <el-tab-pane label=\"教学班次教学实施计划\" name=\"shift\">\r\n <div class=\"tab-body\">\r\n <!-- 选择条件 -->\r\n <div class=\"search-card\">\r\n <el-form :model=\"searchForm\" inline class=\"search-form\">\r\n <el-form-item label=\"队别班次\">\r\n <el-select v-model=\"searchForm.teamClass\" placeholder=\"请选择队别班次\" clearable filterable class=\"shift-select\">\r\n <el-option v-for=\"item in teamClassOptions\" :key=\"item\" :label=\"item\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" icon=\"el-icon-search\" size=\"mini\" @click=\"handleQuery\">查询</el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n\r\n <!-- 标题 -->\r\n <div class=\"page-title\">{{ pageTitle }}</div>\r\n\r\n <!-- 下载操作按钮 -->\r\n <el-card shadow=\"never\" class=\"action-card\">\r\n <div class=\"button-row\">\r\n <el-button type=\"primary\" plain size=\"mini\" @click=\"handleExportPlan\">学期教学实施计划</el-button>\r\n <el-button type=\"primary\" plain size=\"mini\" @click=\"handleExportGrades\">学期成绩表</el-button>\r\n <el-button type=\"primary\" plain size=\"mini\" @click=\"handleExportCourses\">课程列表另存Excel</el-button>\r\n </div>\r\n </el-card>\r\n\r\n <!-- 数据表格 -->\r\n <div class=\"table-card\">\r\n <el-table :data=\"shiftData\" v-loading=\"loading\" border stripe style=\"width: 100%\">\r\n <el-table-column type=\"index\" label=\"序号\" width=\"60\" align=\"center\" />\r\n <el-table-column label=\"课程名称/课时系数\" min-width=\"220\" align=\"center\">\r\n <template #default=\"{ row }\">\r\n <div>{{ row.kcmc || '-' }}</div>\r\n <div class=\"sub-text\">{{ row.kssk || '-' }}</div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"zrjs\" label=\"责任教员/课次\" min-width=\"150\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"bc\" label=\"班次\" min-width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"nj\" label=\"年级\" width=\"80\" align=\"center\" />\r\n <el-table-column prop=\"zy\" label=\"专业\" min-width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"jhxs\" label=\"计划学时\" width=\"90\" align=\"center\" />\r\n <el-table-column prop=\"yxxs\" label=\"运行学时\" width=\"90\" align=\"center\" />\r\n <el-table-column prop=\"khlxfs\" label=\"考核类型方式\" min-width=\"140\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"ssjs\" label=\"实施教员\" min-width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"rscd\" label=\"人数/场地\" min-width=\"140\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"kcjd\" label=\"课程进度\" width=\"120\" align=\"center\" />\r\n <el-table-column prop=\"ssjhbg\" label=\"实施计划变更\" min-width=\"120\" align=\"center\" show-overflow-tooltip />\r\n </el-table>\r\n <el-empty v-show=\"!loading && !shiftData.length\" description=\"请选择队别班次后查询\" />\r\n </div>\r\n </div>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { listToday, listWeek, listClass, exportClassPlan, exportClassGrades, exportClassCourses } from '@/api/teachBusiness/timetable'\r\nimport { listTeam } from '@/api/studentRecords/team'\r\n\r\nconst JC_SECTION = {\r\n 1: '1-2节', 2: '3-4节', 3: '5-6节', 4: '7-8节', 5: '9-10节', 6: '11-12节'\r\n}\r\n\r\nconst WEEK_DAY_NAMES = ['日', '一', '二', '三', '四', '五', '六']\r\n\r\nfunction pad2(n) {\r\n return n < 10 ? '0' + n : '' + n\r\n}\r\n\r\nfunction formatDate(d) {\r\n return d.getFullYear() + '-' + pad2(d.getMonth() + 1) + '-' + pad2(d.getDate())\r\n}\r\n\r\nfunction getMonday(d) {\r\n const day = d.getDay() || 7\r\n const monday = new Date(d)\r\n monday.setDate(d.getDate() - day + 1)\r\n return monday\r\n}\r\n\r\nexport default {\r\n name: 'Timetable',\r\n data() {\r\n return {\r\n activeTab: 'today',\r\n loading: false,\r\n // 今日\r\n todayDate: new Date(),\r\n todayData: [],\r\n // 本周\r\n weekStart: getMonday(new Date()),\r\n weekData: [],\r\n // 班次\r\n searchForm: { teamClass: '' },\r\n teamClassOptions: [],\r\n teamMap: {},\r\n shiftData: []\r\n }\r\n },\r\n computed: {\r\n dateTitle() {\r\n return formatDate(this.todayDate) + ' 今日教学实施计划'\r\n },\r\n weekRangeText() {\r\n const end = new Date(this.weekStart)\r\n end.setDate(end.getDate() + 6)\r\n return formatDate(this.weekStart) + '(' + this.weekDayName(this.weekStart) + ') 至 ' +\r\n formatDate(end) + '(' + this.weekDayName(end) + ') 本周教学实施计划'\r\n },\r\n pageTitle() {\r\n const name = this.searchForm.teamClass || ''\r\n return (name ? name + ' ' : '') + '教学班次教学实施计划'\r\n }\r\n },\r\n created() {\r\n this.loadTeamOptions()\r\n this.getTodayList()\r\n this.getWeekList()\r\n },\r\n methods: {\r\n weekDayName(d) {\r\n return WEEK_DAY_NAMES[d.getDay()]\r\n },\r\n formatJc(jc) {\r\n if (jc === null || jc === undefined || jc === '') return '第?节'\r\n return JC_SECTION[jc] || ('第' + jc + '节')\r\n },\r\n /* ---------- 今日:日期导航 ---------- */\r\n handlePrevDay() {\r\n const d = new Date(this.todayDate)\r\n d.setDate(d.getDate() - 1)\r\n this.todayDate = d\r\n this.getTodayList()\r\n },\r\n handleNextDay() {\r\n const d = new Date(this.todayDate)\r\n d.setDate(d.getDate() + 1)\r\n this.todayDate = d\r\n this.getTodayList()\r\n },\r\n /* ---------- 本周:周次导航 ---------- */\r\n handlePrevWeek() {\r\n const d = new Date(this.weekStart)\r\n d.setDate(d.getDate() - 7)\r\n this.weekStart = d\r\n this.getWeekList()\r\n },\r\n handleNextWeek() {\r\n const d = new Date(this.weekStart)\r\n d.setDate(d.getDate() + 7)\r\n this.weekStart = d\r\n this.getWeekList()\r\n },\r\n /* ---------- 队别班次下拉(真实接口) ---------- */\r\n loadTeamOptions() {\r\n listTeam({ pageNum: 1, pageSize: 1000 }).then(response => {\r\n const data = response.data || {}\r\n const list = data.records || []\r\n const map = {}\r\n ;(list || []).forEach(item => {\r\n if (item.xydmc) map[item.xydmc] = item.xydbh\r\n })\r\n this.teamMap = map\r\n this.teamClassOptions = list.map(item => item.xydmc).filter(Boolean)\r\n }).catch(() => {\r\n this.teamMap = {}\r\n this.teamClassOptions = []\r\n })\r\n },\r\n /* ---------- 数据字段映射(接口字段 -> 页面字段) ---------- */\r\n parseSection(sksj) {\r\n const m = String(sksj || '').match(/第(\\d+)节/)\r\n return m ? Number(m[1]) : undefined\r\n },\r\n mapLessonRow(apiRow) {\r\n // 接口今日/本周实体:bh sksj kc zrdw bc jy cd jxnrxff bz\r\n const row = Object.assign({}, apiRow)\r\n row.kcmc = apiRow.kc\r\n row.skjy = apiRow.jy\r\n row.jxcd = apiRow.cd\r\n row.jxnrff = apiRow.jxnrxff\r\n row.jybz = apiRow.bz\r\n row.sjsj = apiRow.sksj\r\n row.jc = this.parseSection(apiRow.sksj)\r\n return row\r\n },\r\n mapClassRow(apiRow) {\r\n // 接口班次实体:sskcbh kcmcksxs zrjykc jhxs yxxs khlxfs ssjy rscd ssjhbg\r\n const row = Object.assign({}, apiRow)\r\n const parts = String(apiRow.kcmcksxs || '').split(' / ')\r\n row.kcmc = parts[0] || '-'\r\n row.kssk = parts[1] || '-'\r\n row.zrjs = apiRow.zrjykc\r\n row.ssjs = apiRow.ssjy\r\n return row\r\n },\r\n /* ---------- 今日:拉取数据 ---------- */\r\n getTodayList() {\r\n this.loading = true\r\n listToday({}).then(response => {\r\n const data = response.data\r\n this.todayData = Array.isArray(data)\r\n ? (data || []).map(item => this.mapLessonRow(item))\r\n : ((data && data.records) || []).map(item => this.mapLessonRow(item))\r\n this.loading = false\r\n }).catch(() => {\r\n this.todayData = []\r\n this.loading = false\r\n })\r\n },\r\n /* ---------- 本周:拉取数据 ---------- */\r\n getWeekList() {\r\n this.loading = true\r\n listWeek({}).then(response => {\r\n const data = response.data\r\n this.weekData = Array.isArray(data)\r\n ? (data || []).map(item => this.mapLessonRow(item))\r\n : ((data && data.records) || []).map(item => this.mapLessonRow(item))\r\n this.loading = false\r\n }).catch(() => {\r\n this.weekData = []\r\n this.loading = false\r\n })\r\n },\r\n /* ---------- 班次:拉取数据 ---------- */\r\n getShiftList() {\r\n if (!this.searchForm.teamClass) return\r\n const xydbh = this.teamMap[this.searchForm.teamClass] || this.searchForm.teamClass\r\n const params = { xydbh: xydbh, pageNum: 1, pageSize: 1000 }\r\n this.loading = true\r\n listClass(params).then(response => {\r\n const data = response.data || {}\r\n this.shiftData = (data.records || []).map(item => this.mapClassRow(item))\r\n this.loading = false\r\n }).catch(() => {\r\n this.shiftData = []\r\n this.loading = false\r\n })\r\n },\r\n /* ---------- 班次:查询 ---------- */\r\n handleQuery() {\r\n if (!this.searchForm.teamClass) {\r\n this.$message.warning('请先选择队别班次')\r\n return\r\n }\r\n this.getShiftList()\r\n },\r\n /* ---------- 下载 ---------- */\r\n downloadBlob(blob, filename) {\r\n const link = document.createElement('a')\r\n link.href = window.URL.createObjectURL(blob)\r\n link.download = filename\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)\r\n window.URL.revokeObjectURL(link.href)\r\n },\r\n shiftQueryParams() {\r\n if (!this.searchForm.teamClass) return null\r\n const xydbh = this.teamMap[this.searchForm.teamClass] || this.searchForm.teamClass\r\n return { xydbh: xydbh }\r\n },\r\n /** 下载学期教学实施计划 Excel(GET /kcb/class/export-plan) */\r\n handleExportPlan() {\r\n const params = this.shiftQueryParams()\r\n if (!params) {\r\n this.$message.warning('请先选择队别班次')\r\n return\r\n }\r\n exportClassPlan(params).then(blob => {\r\n this.downloadBlob(blob, '学期教学实施计划.xlsx')\r\n this.$message.success('学期教学实施计划导出成功')\r\n }).catch(() => {})\r\n },\r\n /** 下载学期成绩表 Excel(GET /kcb/class/export-grades) */\r\n handleExportGrades() {\r\n const params = this.shiftQueryParams()\r\n if (!params) {\r\n this.$message.warning('请先选择队别班次')\r\n return\r\n }\r\n exportClassGrades(params).then(blob => {\r\n this.downloadBlob(blob, '学期成绩表.xlsx')\r\n this.$message.success('学期成绩表导出成功')\r\n }).catch(() => {})\r\n },\r\n /** 班次课程列表另存 Excel(GET /kcb/class/export-courses) */\r\n handleExportCourses() {\r\n const params = this.shiftQueryParams()\r\n if (!params) {\r\n this.$message.warning('请先选择队别班次')\r\n return\r\n }\r\n exportClassCourses(params).then(blob => {\r\n this.downloadBlob(blob, '班次课程列表.xlsx')\r\n this.$message.success('班次课程列表导出成功')\r\n }).catch(() => {})\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.timetable-page {\r\n .timetable-tabs {\r\n background: #fff;\r\n padding: 0 16px;\r\n border: 1px solid #ebeef5;\r\n border-radius: 6px;\r\n }\r\n\r\n .tab-body {\r\n padding-bottom: 16px;\r\n }\r\n\r\n .sub-text {\r\n font-size: 12px;\r\n color: #909399;\r\n margin-top: 2px;\r\n }\r\n\r\n /* 日期/周次导航 */\r\n .date-header,\r\n .week-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 24px;\r\n margin-bottom: 12px;\r\n padding: 14px 16px;\r\n background: #fafafa;\r\n border: 1px solid #ebeef5;\r\n border-radius: 4px;\r\n\r\n .nav-link {\r\n font-size: 14px;\r\n }\r\n\r\n .date-title,\r\n .week-title {\r\n font-size: 16px;\r\n font-weight: 700;\r\n color: #303133;\r\n }\r\n }\r\n\r\n /* 班次 */\r\n .search-card {\r\n margin-bottom: 12px;\r\n\r\n .search-form {\r\n margin-bottom: 0;\r\n }\r\n\r\n .shift-select {\r\n width: 240px;\r\n }\r\n }\r\n\r\n .page-title {\r\n font-size: 17px;\r\n font-weight: 700;\r\n color: #303133;\r\n text-align: center;\r\n margin-bottom: 12px;\r\n }\r\n\r\n .action-card {\r\n margin-bottom: 12px;\r\n\r\n .button-row {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n }\r\n }\r\n}\r\n</style>\r\n"]}]} |