Files
education/frontend/node_modules/.cache/babel-loader/76b55afdfca733995785ddc2f0a6d832.json
T

1 line
61 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachOffice\\shiftSemester\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachOffice\\shiftSemester\\index.vue","mtime":1787648748789},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\babel.config.js","mtime":1787567871334},{"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:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJDOi9Vc2Vycy9BZG1pbi9EZXNrdG9wL2VkdWNhdGlvbi9mcm9udGVuZC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiKS5kZWZhdWx0OwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CiAgdmFsdWU6IHRydWUKfSk7CmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDsKdmFyIF90b0NvbnN1bWFibGVBcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIkM6L1VzZXJzL0FkbWluL0Rlc2t0b3AvZWR1Y2F0aW9uL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIikpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5kaWZmZXJlbmNlLnYyLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaW50ZXJzZWN0aW9uLnYyLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtZGlzam9pbnQtZnJvbS52Mi5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LmlzLXN1YnNldC1vZi52Mi5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LmlzLXN1cGVyc2V0LW9mLnYyLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjIuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnNldC51bmlvbi52Mi5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maWx0ZXIuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maW5kLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5tYXAuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiKTsKdmFyIF9DbGFzc1NlbWVzdGVyRGV0YWlsRGlhbG9nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCIuL0NsYXNzU2VtZXN0ZXJEZXRhaWxEaWFsb2cudnVlIikpOwp2YXIgX0NsYXNzQ2FsZW5kYXJEaWFsb2cgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIi4vQ2xhc3NDYWxlbmRhckRpYWxvZy52dWUiKSk7CnZhciBfc2VtZXN0ZXIgPSByZXF1aXJlKCJAL2FwaS9zdHVkZW50UmVjb3Jkcy9zZW1lc3RlciIpOwp2YXIgX3NlbWVzdGVyMiA9IHJlcXVpcmUoIkAvYXBpL3RlYWNoQnVzaW5lc3Mvc2VtZXN0ZXIiKTsKdmFyIF90ZWFjaGluZ1Rhc2sgPSByZXF1aXJlKCJAL2FwaS90ZWFjaEJ1c2luZXNzL3RlYWNoaW5nVGFzayIpOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwp2YXIgX2RlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQgPSB7CiAgbmFtZTogJ1NoaWZ0U2VtZXN0ZXInLAogIGNvbXBvbmVudHM6IHsKICAgIENsYXNzU2VtZXN0ZXJEZXRhaWxEaWFsb2c6IF9DbGFzc1NlbWVzdGVyRGV0YWlsRGlhbG9nLmRlZmF1bHQsCiAgICBDbGFzc0NhbGVuZGFyRGlhbG9nOiBfQ2xhc3NDYWxlbmRhckRpYWxvZy5kZWZhdWx0CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIHNhdmluZzogZmFsc2UsCiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09IOafpeivouadoeS7tiA9PT09PT09PT09PT09PT09PT09PQogICAgICBzZWFyY2hGb3JtOiB7CiAgICAgICAgeHlkYmg6ICcnCiAgICAgIH0sCiAgICAgIGZpbHRlclllYXI6IHVuZGVmaW5lZCwKICAgICAgeWVhckZpbHRlck9wdGlvbnM6IFtdLAogICAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDliJfooajkuI7liIbpobUgPT09PT09PT09PT09PT09PT09PT0KICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgc2VsZWN0aW9uOiBbXSwKICAgICAgY3VycmVudFJvdzogbnVsbCwKICAgICAgcGFnZU51bTogMSwKICAgICAgcGFnZVNpemU6IDEwLAogICAgICB0b3RhbDogMCwKICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5LiL5ouJ5pWw5o2uID09PT09PT09PT09PT09PT09PT09CiAgICAgIC8qKiDlubTluqbkuIvmi4nvvIjmnaXoh6ogL3NlbWVzdGVyL2FsbO+8iSAqLwogICAgICB5ZWFyT3B0aW9uczogW10sCiAgICAgIC8qKiDmlZnlrabku7vliqHkuIvmi4nvvIh7IGJoLCByd21jIH3vvIkgKi8KICAgICAgdGFza09wdGlvbnM6IFtdLAogICAgICAvKiog5YWo6YOo54+t5qyh5a2m5pyf77yI55So5LqO54+t5Y6G5aSN5Yi255uu5qCH6YCJ5oup77yJICovCiAgICAgIHNlbWVzdGVyT3B0aW9uczogW10sCiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09IOePreasoeWtpuacn+aWsOWini/nvJbovpEgPT09PT09PT09PT09PT09PT09PT0KICAgICAgZGV0YWlsVmlzaWJsZTogZmFsc2UsCiAgICAgIGRldGFpbE1vZGU6ICdhZGQnLAogICAgICBkZXRhaWxTZW1lc3RlcjogbnVsbCwKICAgICAgZGV0YWlsVGVhbUluZm86IG51bGwsCiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09IOePreWOhueuoeeQhiA9PT09PT09PT09PT09PT09PT09PQogICAgICBjYWxlbmRhclZpc2libGU6IGZhbHNlLAogICAgICBjYWxlbmRhclNlbWVzdGVyOiBudWxsLAogICAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDmibnph4/liJvlu7rnj63mrKHlrabmnJ8gPT09PT09PT09PT09PT09PT09PT0KICAgICAgYmF0Y2hBZGRWaXNpYmxlOiBmYWxzZSwKICAgICAgYmF0Y2hBZGRGb3JtOiB7CiAgICAgICAgbmQ6IHVuZGVmaW5lZCwKICAgICAgICB4cWRjOiAnJywKICAgICAgICBzdGFydFRpbWU6ICcnLAogICAgICAgIGVuZFRpbWU6ICcnCiAgICAgIH0sCiAgICAgIGJhdGNoQWRkUnVsZXM6IHsKICAgICAgICBuZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeW5tOW6picsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgIHhxZGM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nlrabmnJ8nLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICBzdGFydFRpbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nlvIDlp4vml6XmnJ8nLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICBlbmRUaW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup57uT5p2f5pel5pyfJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5b+r6YCf6K6+5a6a5a2m5pyf5pel5pyfID09PT09PT09PT09PT09PT09PT09CiAgICAgIGRhdGVSYW5nZVZpc2libGU6IGZhbHNlLAogICAgICBkYXRlUmFuZ2VGb3JtOiB7CiAgICAgICAga3hycTogJycsCiAgICAgICAganNycTogJycKICAgICAgfSwKICAgICAgZGF0ZVJhbmdlUnVsZXM6IHsKICAgICAgICBreHJxOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5byA5a2m5pel5pyfJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAganNycTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqee7k+adn+aXpeacnycsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09IOaJuemHj+iuvue9ruaVmeWtpuS7u+WKoSA9PT09PT09PT09PT09PT09PT09PQogICAgICBqeHJ3VmlzaWJsZTogZmFsc2UsCiAgICAgIGp4cndGb3JtOiB7CiAgICAgICAganhyd2JoOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAganhyd1J1bGVzOiB7CiAgICAgICAganhyd2JoOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5pWZ5a2m5Lu75YqhJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0KICAgICAgfQogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICAvKiog5pys5Zyw5oyJ5bm05bqm6L+H5ruk77yI5ZCO56uvIC9zZW1lc3Rlci9saXN0IOS7heaUr+aMgSB4eWRiaCDmqKHns4rnrZvpgInvvIkgKi9kaXNwbGF5RGF0YTogZnVuY3Rpb24gZGlzcGxheURhdGEoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIGlmICghdGhpcy5maWx0ZXJZZWFyKSByZXR1cm4gdGhpcy50YWJsZURhdGE7CiAgICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gU3RyaW5nKGl0ZW0ubmQpID09PSBTdHJpbmcoX3RoaXMuZmlsdGVyWWVhcik7CiAgICAgIH0pOwogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHRoaXMubG9hZFllYXJPcHRpb25zKCk7CiAgICB0aGlzLmxvYWRUYXNrT3B0aW9ucygpOwogICAgdGhpcy5sb2FkU2VtZXN0ZXJPcHRpb25zKCk7CiAgICB0aGlzLmxvYWRMaXN0KCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICAvKiA9PT09PT09PT09PT09PT09PT09PSDmoLzlvI/ljJYgPT09PT09PT09PT09PT09PT09PT0gKi9mbXREYXRlOiBmdW5jdGlvbiBmbXREYXRlKHZhbCkgewogICAgICBpZiAoIXZhbCkgcmV0dXJuICctJzsKICAgICAgcmV0dXJuIFN0cmluZyh2YWwpLnNsaWNlKDAsIDEwKTsKICAgIH0sCiAgICB4cWRjTGFiZWw6IGZ1bmN0aW9uIHhxZGNMYWJlbCh2YWwpIHsKICAgICAgaWYgKHZhbCA9PT0gMSB8fCB2YWwgPT09ICcxJykgcmV0dXJuICfnrKwx5a2m5pyfJzsKICAgICAgaWYgKHZhbCA9PT0gMiB8fCB2YWwgPT09ICcyJykgcmV0dXJuICfnrKwy5a2m5pyfJzsKICAgICAgaWYgKHZhbCA9PT0gMyB8fCB2YWwgPT09ICczJykgcmV0dXJuICfnrKwz5a2m5pyfJzsKICAgICAgcmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09ICcnID8gIlx1N0IyQyIuY29uY2F0KHZhbCwgIlx1NUI2Nlx1NjcxRiIpIDogJy0nOwogICAgfSwKICAgIC8qKiDmlZnlrabku7vliqHnvJblj7cg4oaSIOWQjeensCAqL3Rhc2tOYW1lOiBmdW5jdGlvbiB0YXNrTmFtZShiaCkgewogICAgICBpZiAoIWJoKSByZXR1cm4gJy0nOwogICAgICB2YXIgb3B0ID0gdGhpcy50YXNrT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChvKSB7CiAgICAgICAgcmV0dXJuIG8uYmggPT09IGJoOwogICAgICB9KTsKICAgICAgcmV0dXJuIG9wdCA/IG9wdC5yd21jIDogYmg7CiAgICB9LAogICAgY2xlYW5QYXlsb2FkOiBmdW5jdGlvbiBjbGVhblBheWxvYWQob2JqKSB7CiAgICAgIHZhciBwYXlsb2FkID0ge307CiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07CiAgICAgICAgaWYgKHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBwYXlsb2FkW2tleV0gPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0pOwogICAgICByZXR1cm4gcGF5bG9hZDsKICAgIH0sCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PSDkuIvmi4nmlbDmja7liqDovb0gPT09PT09PT09PT09PT09PT09PT0gKi9sb2FkWWVhck9wdGlvbnM6IGZ1bmN0aW9uIGxvYWRZZWFyT3B0aW9ucygpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgICgwLCBfc2VtZXN0ZXIyLmxpc3RBbGxTZW1lc3RlcikoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICB2YXIgbGlzdCA9IHJlcyAmJiByZXMuZGF0YSB8fCBbXTsKICAgICAgICB2YXIgeWVhcnMgPSBsaXN0Lm1hcChmdW5jdGlvbiAoeCkgewogICAgICAgICAgcmV0dXJuIHgubmQ7CiAgICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9uICh2KSB7CiAgICAgICAgICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwgJiYgdiAhPT0gJyc7CiAgICAgICAgfSk7CiAgICAgICAgX3RoaXMyLnllYXJPcHRpb25zID0gKDAsIF90b0NvbnN1bWFibGVBcnJheTIuZGVmYXVsdCkobmV3IFNldCh5ZWFycykpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgICAgIHJldHVybiBOdW1iZXIoYSkgLSBOdW1iZXIoYik7CiAgICAgICAgfSk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczIueWVhck9wdGlvbnMgPSBbXTsKICAgICAgfSk7CiAgICB9LAogICAgbG9hZFRhc2tPcHRpb25zOiBmdW5jdGlvbiBsb2FkVGFza09wdGlvbnMoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICAoMCwgX3RlYWNoaW5nVGFzay5saXN0VGVhY2hpbmdUYXNrKSh7CiAgICAgICAgcGFnZU51bTogMSwKICAgICAgICBwYWdlU2l6ZTogMTAwMAogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICB2YXIgbGlzdCA9IHJlcyAmJiByZXMuZGF0YSAmJiByZXMuZGF0YS5yZWNvcmRzIHx8IFtdOwogICAgICAgIF90aGlzMy50YXNrT3B0aW9ucyA9IGxpc3QuZmlsdGVyKGZ1bmN0aW9uIChvKSB7CiAgICAgICAgICByZXR1cm4gby5iaDsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMy50YXNrT3B0aW9ucyA9IFtdOwogICAgICB9KTsKICAgIH0sCiAgICBsb2FkU2VtZXN0ZXJPcHRpb25zOiBmdW5jdGlvbiBsb2FkU2VtZXN0ZXJPcHRpb25zKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgKDAsIF9zZW1lc3Rlci5hbGxTZW1lc3RlcikoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczQuc2VtZXN0ZXJPcHRpb25zID0gcmVzICYmIHJlcy5kYXRhIHx8IFtdOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM0LnNlbWVzdGVyT3B0aW9ucyA9IFtdOwogICAgICB9KTsKICAgIH0sCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PSDliJfooajliqDovb0gPT09PT09PT09PT09PT09PT09PT0gKi9sb2FkTGlzdDogZnVuY3Rpb24gbG9hZExpc3QoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB2YXIgcXVlcnkgPSB0aGlzLmNsZWFuUGF5bG9hZCh7CiAgICAgICAgcGFnZU51bTogdGhpcy5wYWdlTnVtLAogICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLAogICAgICAgIHh5ZGJoOiB0aGlzLnNlYXJjaEZvcm0ueHlkYmgKICAgICAgfSk7CiAgICAgICgwLCBfc2VtZXN0ZXIubGlzdFNlbWVzdGVyKShxdWVyeSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdmFyIGRhdGEgPSByZXMgJiYgcmVzLmRhdGEgfHwge307CiAgICAgICAgX3RoaXM1LnRhYmxlRGF0YSA9IGRhdGEucmVjb3JkcyB8fCBbXTsKICAgICAgICBfdGhpczUudG90YWwgPSBkYXRhLnRvdGFsIHx8IDA7CiAgICAgICAgX3RoaXM1LmJ1aWxkWWVhckZpbHRlck9wdGlvbnMoKTsKICAgICAgICBfdGhpczUubG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM1LnRhYmxlRGF0YSA9IFtdOwogICAgICAgIF90aGlzNS50b3RhbCA9IDA7CiAgICAgICAgX3RoaXM1LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqIOacrOWcsOW5tOW6pui/h+a7pOS4i+aLie+8iOS7juW9k+WJjeaVsOaNruWKqOaAgeeUn+aIkO+8jOmBv+WFjeehrOe8luegge+8iSAqL2J1aWxkWWVhckZpbHRlck9wdGlvbnM6IGZ1bmN0aW9uIGJ1aWxkWWVhckZpbHRlck9wdGlvbnMoKSB7CiAgICAgIHZhciB5ZWFycyA9IHRoaXMudGFibGVEYXRhLm1hcChmdW5jdGlvbiAocikgewogICAgICAgIHJldHVybiByLm5kOwogICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKHYpIHsKICAgICAgICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwgJiYgdiAhPT0gJyc7CiAgICAgIH0pOwogICAgICB0aGlzLnllYXJGaWx0ZXJPcHRpb25zID0gKDAsIF90b0NvbnN1bWFibGVBcnJheTIuZGVmYXVsdCkobmV3IFNldCh5ZWFycykpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgICByZXR1cm4gTnVtYmVyKGEpIC0gTnVtYmVyKGIpOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVZZWFyQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVZZWFyQ2hhbmdlKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChfdGhpczYuJHJlZnMudGFibGVSZWYpIF90aGlzNi4kcmVmcy50YWJsZVJlZi5zZXRDdXJyZW50Um93KG51bGwpOwogICAgICAgIF90aGlzNi5jdXJyZW50Um93ID0gbnVsbDsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlU2l6ZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2l6ZUNoYW5nZShzaXplKSB7CiAgICAgIHRoaXMucGFnZVNpemUgPSBzaXplOwogICAgICB0aGlzLmxvYWRMaXN0KCk7CiAgICB9LAogICAgaGFuZGxlUGFnZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlUGFnZUNoYW5nZShwYWdlKSB7CiAgICAgIHRoaXMucGFnZU51bSA9IHBhZ2U7CiAgICAgIHRoaXMubG9hZExpc3QoKTsKICAgIH0sCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbkNoYW5nZShyb3dzKSB7CiAgICAgIHRoaXMuc2VsZWN0aW9uID0gcm93czsKICAgIH0sCiAgICBoYW5kbGVDdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDdXJyZW50Q2hhbmdlKHJvdykgewogICAgICB0aGlzLmN1cnJlbnRSb3cgPSByb3c7CiAgICB9LAogICAgLyogPT09PT09PT09PT09PT09PT09PT0g5p+l6K+iIC8g6YeN572uID09PT09PT09PT09PT09PT09PT09ICovaGFuZGxlUXVlcnk6IGZ1bmN0aW9uIGhhbmRsZVF1ZXJ5KCkgewogICAgICB0aGlzLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmxvYWRMaXN0KCk7CiAgICB9LAogICAgaGFuZGxlUmVzZXQ6IGZ1bmN0aW9uIGhhbmRsZVJlc2V0KCkgewogICAgICB0aGlzLnNlYXJjaEZvcm0ueHlkYmggPSAnJzsKICAgICAgdGhpcy5maWx0ZXJZZWFyID0gdW5kZWZpbmVkOwogICAgICB0aGlzLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmxvYWRMaXN0KCk7CiAgICB9LAogICAgLyogPT09PT09PT09PT09PT09PT09PT0g5paw5aKeIC8g57yW6L6RID09PT09PT09PT09PT09PT09PT09ICovaGFuZGxlQWRkOiBmdW5jdGlvbiBoYW5kbGVBZGQoKSB7CiAgICAgIHRoaXMuZGV0YWlsTW9kZSA9ICdhZGQnOwogICAgICB0aGlzLmRldGFpbFNlbWVzdGVyID0gbnVsbDsKICAgICAgdGhpcy5kZXRhaWxUZWFtSW5mbyA9IG51bGw7CiAgICAgIHRoaXMuZGV0YWlsVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgaGFuZGxlRWRpdDogZnVuY3Rpb24gaGFuZGxlRWRpdChyb3cpIHsKICAgICAgdmFyIHRhcmdldCA9IHJvdyB8fCB0aGlzLmN1cnJlbnRSb3c7CiAgICAgIGlmICghdGFyZ2V0KSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7flhYjpgInmi6nkuIDmnaHnj63mrKHlrabmnJ/kv6Hmga8nKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5kZXRhaWxNb2RlID0gJ2VkaXQnOwogICAgICB0aGlzLmRldGFpbFNlbWVzdGVyID0gdGFyZ2V0OwogICAgICB0aGlzLmRldGFpbFRlYW1JbmZvID0gbnVsbDsKICAgICAgdGhpcy5kZXRhaWxWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBoYW5kbGVEZXRhaWxTdWJtaXQ6IGZ1bmN0aW9uIGhhbmRsZURldGFpbFN1Ym1pdChwYXlsb2FkKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB0aGlzLnNhdmluZyA9IHRydWU7CiAgICAgIHZhciByZXEgPSB0aGlzLmRldGFpbE1vZGUgPT09ICdlZGl0JyA/ICgwLCBfc2VtZXN0ZXIudXBkYXRlU2VtZXN0ZXIpKHBheWxvYWQpIDogKDAsIF9zZW1lc3Rlci5hZGRTZW1lc3RlcikocGF5bG9hZCk7CiAgICAgIHJlcS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczcuc2F2aW5nID0gZmFsc2U7CiAgICAgICAgX3RoaXM3LmRldGFpbFZpc2libGUgPSBmYWxzZTsKICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2VzcyhfdGhpczcuZGV0YWlsTW9kZSA9PT0gJ2VkaXQnID8gJ+ePreasoeWtpuacn+W3suabtOaWsCcgOiAn54+t5qyh5a2m5pyf5bey5paw5aKeJyk7CiAgICAgICAgX3RoaXM3LmxvYWRMaXN0KCk7CiAgICAgICAgX3RoaXM3LmxvYWRTZW1lc3Rlck9wdGlvbnMoKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzNy5zYXZpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLyogPT09PT09PT09PT09PT09PT09PT0g5Yig6ZmkID09PT09PT09PT09PT09PT09PT09ICovaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI5Yu+6YCJ6KaB5Yig6Zmk55qE54+t5qyh5a2m5pyfJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuJGNvbmZpcm0oIlx1Nzg2RVx1NUI5QVx1NTIyMFx1OTY2NFx1OTAwOVx1NEUyRFx1NzY4NCAiLmNvbmNhdCh0aGlzLnNlbGVjdGlvbi5sZW5ndGgsICIgXHU2NzYxXHU3M0VEXHU2QjIxXHU1QjY2XHU2NzFGXHU1NDE3XHVGRjFGXHU1MjIwXHU5NjY0XHU1NDBFXHU1MTc2XHU0RTBCXHU3M0VEXHU1Mzg2XHU4QkIwXHU1RjU1XHU1QzA2XHU0RTAwXHU1RTc2XHU1MjIwXHU5NjY0XHUzMDAyIiksICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgYmhMaXN0ID0gX3RoaXM4LnNlbGVjdGlvbi5tYXAoZnVuY3Rpb24gKHIpIHsKICAgICAgICAgIHJldHVybiByLmJoOwogICAgICAgIH0pOwogICAgICAgICgwLCBfc2VtZXN0ZXIuYmF0Y2hEZWxldGVTZW1lc3RlcikoYmhMaXN0KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS5zdWNjZXNzKCflt7LliKDpmaQnKTsKICAgICAgICAgIF90aGlzOC5sb2FkTGlzdCgpOwogICAgICAgICAgX3RoaXM4LmxvYWRTZW1lc3Rlck9wdGlvbnMoKTsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIGhhbmRsZURlbGV0ZVJvdzogZnVuY3Rpb24gaGFuZGxlRGVsZXRlUm93KHJvdykgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgdGhpcy4kY29uZmlybSgiXHU3ODZFXHU1QjlBXHU1MjIwXHU5NjY0XHU3M0VEXHU2QjIxXHU1QjY2XHU2NzFGXHUzMDBDIi5jb25jYXQocm93Lnh5ZGJoIHx8IHJvdy5iaCwgIlx1MzAwRFx1NTQxN1x1RkYxRlx1NTIyMFx1OTY2NFx1NTQwRVx1NTE3Nlx1NEUwQlx1NzNFRFx1NTM4Nlx1OEJCMFx1NUY1NVx1NUMwNlx1NEUwMFx1NUU3Nlx1NTIyMFx1OTY2NFx1MzAwMiIpLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgKDAsIF9zZW1lc3Rlci5kZWxTZW1lc3Rlcikocm93LmJoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS5zdWNjZXNzKCflt7LliKDpmaQnKTsKICAgICAgICAgIF90aGlzOS5sb2FkTGlzdCgpOwogICAgICAgICAgX3RoaXM5LmxvYWRTZW1lc3Rlck9wdGlvbnMoKTsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIC8qID09PT09PT09PT09PT09PT09PT09IOe8lui+keePreWOhiA9PT09PT09PT09PT09PT09PT09PSAqL2hhbmRsZUVkaXRDYWxlbmRhcjogZnVuY3Rpb24gaGFuZGxlRWRpdENhbGVuZGFyKHJvdykgewogICAgICB2YXIgdGFyZ2V0ID0gcm93IHx8IHRoaXMuY3VycmVudFJvdzsKICAgICAgaWYgKCF0YXJnZXQpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+WFiOWcqOWIl+ihqOS4remAieaLqeS4gOadoeePreasoeWtpuacn+S/oeaBrycpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmNhbGVuZGFyU2VtZXN0ZXIgPSB0YXJnZXQ7CiAgICAgIHRoaXMuY2FsZW5kYXJWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PSDmibnph4/liJvlu7rnj63mrKHlrabmnJ8gPT09PT09PT09PT09PT09PT09PT0gKi9oYW5kbGVCYXRjaEFkZDogZnVuY3Rpb24gaGFuZGxlQmF0Y2hBZGQoKSB7CiAgICAgIHZhciBfdGhpczAgPSB0aGlzOwogICAgICB0aGlzLmJhdGNoQWRkRm9ybSA9IHsKICAgICAgICBuZDogdGhpcy55ZWFyT3B0aW9uc1swXSB8fCB1bmRlZmluZWQsCiAgICAgICAgeHFkYzogJycsCiAgICAgICAgc3RhcnRUaW1lOiAnJywKICAgICAgICBlbmRUaW1lOiAnJwogICAgICB9OwogICAgICB0aGlzLmJhdGNoQWRkVmlzaWJsZSA9IHRydWU7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAoX3RoaXMwLiRyZWZzLmJhdGNoQWRkRm9ybVJlZikgX3RoaXMwLiRyZWZzLmJhdGNoQWRkRm9ybVJlZi5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZUJhdGNoQWRkU3VibWl0OiBmdW5jdGlvbiBoYW5kbGVCYXRjaEFkZFN1Ym1pdCgpIHsKICAgICAgdmFyIF90aGlzMSA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnMuYmF0Y2hBZGRGb3JtUmVmLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICghdmFsaWQpIHJldHVybjsKICAgICAgICB2YXIgZiA9IF90aGlzMS5iYXRjaEFkZEZvcm07CiAgICAgICAgX3RoaXMxLnNhdmluZyA9IHRydWU7CiAgICAgICAgKDAsIF9zZW1lc3Rlci5iYXRjaEFkZEZyb21FbGVjdGl2ZSkoewogICAgICAgICAgbmQ6IGYubmQsCiAgICAgICAgICB4cWRjOiBmLnhxZGMsCiAgICAgICAgICBzdGFydFRpbWU6IGYuc3RhcnRUaW1lLAogICAgICAgICAgZW5kVGltZTogZi5lbmRUaW1lCiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICBfdGhpczEuc2F2aW5nID0gZmFsc2U7CiAgICAgICAgICBfdGhpczEuYmF0Y2hBZGRWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgICB2YXIgY291bnQgPSByZXMgJiYgcmVzLmRhdGEgfHwgMDsKICAgICAgICAgIF90aGlzMS4kbWVzc2FnZS5zdWNjZXNzKCJcdTVERjJcdTUyMUJcdTVFRkEgIi5jb25jYXQoY291bnQsICIgXHU0RTJBXHU3M0VEXHU2QjIxXHU1QjY2XHU2NzFGIikpOwogICAgICAgICAgX3RoaXMxLmxvYWRMaXN0KCk7CiAgICAgICAgICBfdGhpczEubG9hZFNlbWVzdGVyT3B0aW9ucygpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzMS5zYXZpbmcgPSBmYWxzZTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLyogPT09PT09PT09PT09PT09PT09PT0g5b+r6YCf6K6+5a6a5a2m5pyf5pel5pyfID09PT09PT09PT09PT09PT09PT09ICovaGFuZGxlUXVpY2tTZXREYXRlczogZnVuY3Rpb24gaGFuZGxlUXVpY2tTZXREYXRlcygpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI5Yu+6YCJ6KaB6K6+5a6a5pel5pyf55qE54+t5qyh5a2m5pyfJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZGF0ZVJhbmdlRm9ybSA9IHsKICAgICAgICBreHJxOiAnJywKICAgICAgICBqc3JxOiAnJwogICAgICB9OwogICAgICB0aGlzLmRhdGVSYW5nZVZpc2libGUgPSB0cnVlOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKF90aGlzMTAuJHJlZnMuZGF0ZVJhbmdlRm9ybVJlZikgX3RoaXMxMC4kcmVmcy5kYXRlUmFuZ2VGb3JtUmVmLmNsZWFyVmFsaWRhdGUoKTsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlRGF0ZVJhbmdlU3VibWl0OiBmdW5jdGlvbiBoYW5kbGVEYXRlUmFuZ2VTdWJtaXQoKSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5kYXRlUmFuZ2VGb3JtUmVmLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICghdmFsaWQpIHJldHVybjsKICAgICAgICB2YXIgZiA9IF90aGlzMTEuZGF0ZVJhbmdlRm9ybTsKICAgICAgICBfdGhpczExLnNhdmluZyA9IHRydWU7CiAgICAgICAgKDAsIF9zZW1lc3Rlci5iYXRjaFVwZGF0ZURhdGVSYW5nZSkoewogICAgICAgICAgYmhMaXN0OiBfdGhpczExLnNlbGVjdGlvbi5tYXAoZnVuY3Rpb24gKHIpIHsKICAgICAgICAgICAgcmV0dXJuIHIuYmg7CiAgICAgICAgICB9KSwKICAgICAgICAgIHhxa3NzajogZi5reHJxLAogICAgICAgICAgeHFqc3NqOiBmLmpzcnEKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzMTEuc2F2aW5nID0gZmFsc2U7CiAgICAgICAgICBfdGhpczExLmRhdGVSYW5nZVZpc2libGUgPSBmYWxzZTsKICAgICAgICAgIHZhciBjb3VudCA9IHJlcyAmJiByZXMuZGF0YSB8fCAwOwogICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS5zdWNjZXNzKCJcdTVERjJcdTY2RjRcdTY1QjAgIi5jb25jYXQoY291bnQsICIgXHU2NzYxXHU3M0VEXHU2QjIxXHU1QjY2XHU2NzFGXHU3Njg0XHU2NUU1XHU2NzFGIikpOwogICAgICAgICAgX3RoaXMxMS5sb2FkTGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzMTEuc2F2aW5nID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8qID09PT09PT09PT09PT09PT09PT09IOaJuemHj+iuvue9ruaVmeWtpuS7u+WKoSA9PT09PT09PT09PT09PT09PT09PSAqL2hhbmRsZVNldEp4cnc6IGZ1bmN0aW9uIGhhbmRsZVNldEp4cncoKSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbi5sZW5ndGgpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+WFiOWLvumAieimgeiuvue9ruaVmeWtpuS7u+WKoeeahOePreasoeWtpuacnycpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmp4cndGb3JtID0gewogICAgICAgIGp4cndiaDogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIHRoaXMuanhyd1Zpc2libGUgPSB0cnVlOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKF90aGlzMTIuJHJlZnMuanhyd0Zvcm1SZWYpIF90aGlzMTIuJHJlZnMuanhyd0Zvcm1SZWYuY2xlYXJWYWxpZGF0ZSgpOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVKeHJ3U3VibWl0OiBmdW5jdGlvbiBoYW5kbGVKeHJ3U3VibWl0KCkgewogICAgICB2YXIgX3RoaXMxMyA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnMuanhyd0Zvcm1SZWYudmFsaWRhdGUoZnVuY3Rpb24gKHZhbGlkKSB7CiAgICAgICAgaWYgKCF2YWxpZCkgcmV0dXJuOwogICAgICAgIF90aGlzMTMuc2F2aW5nID0gdHJ1ZTsKICAgICAgICAoMCwgX3NlbWVzdGVyLmJhdGNoVXBkYXRlSnhyd2JoKSh7CiAgICAgICAgICBiaExpc3Q6IF90aGlzMTMuc2VsZWN0aW9uLm1hcChmdW5jdGlvbiAocikgewogICAgICAgICAgICByZXR1cm4gci5iaDsKICAgICAgICAgIH0pLAogICAgICAgICAganhyd2JoOiBfdGhpczEzLmp4cndGb3JtLmp4cndiaAogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXMxMy5zYXZpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzMTMuanhyd1Zpc2libGUgPSBmYWxzZTsKICAgICAgICAgIHZhciBjb3VudCA9IHJlcyAmJiByZXMuZGF0YSB8fCAwOwogICAgICAgICAgX3RoaXMxMy4kbWVzc2FnZS5zdWNjZXNzKCJcdTVERjJcdTY2RjRcdTY1QjAgIi5jb25jYXQoY291bnQsICIgXHU2NzYxXHU3M0VEXHU2QjIxXHU1QjY2XHU2NzFGXHU3Njg0XHU2NTU5XHU1QjY2XHU0RUZCXHU1MkExIikpOwogICAgICAgICAgX3RoaXMxMy5sb2FkTGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzMTMuc2F2aW5nID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfQogIH0KfTs="},{"version":3,"names":["_ClassSemesterDetailDialog","_interopRequireDefault","require","_ClassCalendarDialog","_semester","_semester2","_teachingTask","name","components","ClassSemesterDetailDialog","ClassCalendarDialog","data","loading","saving","searchForm","xydbh","filterYear","undefined","yearFilterOptions","tableData","selection","currentRow","pageNum","pageSize","total","yearOptions","taskOptions","semesterOptions","detailVisible","detailMode","detailSemester","detailTeamInfo","calendarVisible","calendarSemester","batchAddVisible","batchAddForm","nd","xqdc","startTime","endTime","batchAddRules","required","message","trigger","dateRangeVisible","dateRangeForm","kxrq","jsrq","dateRangeRules","jxrwVisible","jxrwForm","jxrwbh","jxrwRules","computed","displayData","_this","filter","item","String","mounted","loadYearOptions","loadTaskOptions","loadSemesterOptions","loadList","methods","fmtDate","val","slice","xqdcLabel","concat","taskName","bh","opt","find","o","rwmc","cleanPayload","obj","payload","Object","keys","forEach","key","value","_this2","listAllSemester","then","res","list","years","map","x","v","_toConsumableArray2","default","Set","sort","a","b","Number","catch","_this3","listTeachingTask","records","_this4","allSemester","_this5","query","listSemester","buildYearFilterOptions","r","handleYearChange","_this6","$nextTick","$refs","tableRef","setCurrentRow","handleSizeChange","size","handlePageChange","page","handleSelectionChange","rows","handleCurrentChange","row","handleQuery","handleReset","handleAdd","handleEdit","target","$message","warning","handleDetailSubmit","_this7","req","updateSemester","addSemester","success","handleDelete","_this8","length","$confirm","confirmButtonText","cancelButtonText","type","bhList","batchDeleteSemester","handleDeleteRow","_this9","delSemester","handleEditCalendar","handleBatchAdd","_this0","batchAddFormRef","clearValidate","handleBatchAddSubmit","_this1","validate","valid","f","batchAddFromElective","count","handleQuickSetDates","_this10","dateRangeFormRef","handleDateRangeSubmit","_this11","batchUpdateDateRange","xqkssj","xqjssj","handleSetJxrw","_this12","jxrwFormRef","handleJxrwSubmit","_this13","batchUpdateJxrwbh"],"sources":["src/views/teachOffice/shiftSemester/index.vue"],"sourcesContent":["<template>\r\n <div class=\"app-container shift-semester-page\">\r\n <!-- ==================== 页面标题 ==================== -->\r\n <div class=\"page-title\">班次学期信息管理</div>\r\n\r\n <!-- ==================== 1. 查询条件区域 ==================== -->\r\n <el-card shadow=\"never\" class=\"search-card\">\r\n <el-form :inline=\"true\" :model=\"searchForm\" class=\"search-form\">\r\n <el-form-item label=\"班次编号\">\r\n <el-input\r\n v-model=\"searchForm.xydbh\"\r\n placeholder=\"请输入班次编号(模糊)\"\r\n clearable\r\n style=\"width: 220px\"\r\n @keyup.enter.native=\"handleQuery\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"年度\">\r\n <el-select v-model=\"filterYear\" placeholder=\"全部年度\" clearable style=\"width: 140px\" @change=\"handleYearChange\">\r\n <el-option v-for=\"y in yearFilterOptions\" :key=\"y\" :label=\"`${y}年`\" :value=\"y\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" icon=\"el-icon-search\" @click=\"handleQuery\">查询</el-button>\r\n <el-button icon=\"el-icon-refresh\" @click=\"handleReset\">重置</el-button>\r\n </el-form-item>\r\n </el-form>\r\n </el-card>\r\n\r\n <!-- ==================== 2. 工具栏按钮区 ==================== -->\r\n <div class=\"list-toolbar\">\r\n <div class=\"left-group\">\r\n <el-button type=\"primary\" icon=\"el-icon-plus\" @click=\"handleBatchAdd\">批量创建班次学期</el-button>\r\n <el-button type=\"primary\" plain icon=\"el-icon-document-add\" @click=\"handleAdd\">新增</el-button>\r\n <el-button type=\"primary\" plain icon=\"el-icon-edit\" :disabled=\"!currentRow\" @click=\"handleEdit\">编辑</el-button>\r\n <el-button type=\"danger\" plain icon=\"el-icon-delete\" :disabled=\"!selection.length\" @click=\"handleDelete\">删除所选</el-button>\r\n <el-button type=\"primary\" plain icon=\"el-icon-date\" :disabled=\"!selection.length\" @click=\"handleQuickSetDates\">快速设定学期日期</el-button>\r\n <el-button type=\"primary\" plain icon=\"el-icon-notebook-2\" :disabled=\"!selection.length\" @click=\"handleSetJxrw\">批量设置教学任务</el-button>\r\n </div>\r\n <div class=\"right-group\">\r\n <el-button type=\"success\" plain icon=\"el-icon-calendar\" :disabled=\"!currentRow\" @click=\"handleEditCalendar\">编辑班历</el-button>\r\n </div>\r\n </div>\r\n\r\n <!-- ==================== 3. 班次学期信息列表 ==================== -->\r\n <el-card shadow=\"never\" class=\"table-card\">\r\n <el-table\r\n ref=\"tableRef\"\r\n v-loading=\"loading\"\r\n :data=\"displayData\"\r\n border\r\n stripe\r\n highlight-current-row\r\n size=\"small\"\r\n max-height=\"480\"\r\n class=\"class-table\"\r\n @selection-change=\"handleSelectionChange\"\r\n @current-change=\"handleCurrentChange\"\r\n >\r\n <template slot=\"empty\">\r\n <span>无数据!</span>\r\n </template>\r\n <el-table-column type=\"selection\" width=\"44\" align=\"center\" />\r\n <el-table-column type=\"index\" label=\"序号\" width=\"55\" align=\"center\" />\r\n <el-table-column prop=\"xydbh\" label=\"班次编号\" min-width=\"150\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"nd\" label=\"年度\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column label=\"学期第次\" width=\"90\" align=\"center\">\r\n <template slot-scope=\"{ row }\">{{ xqdcLabel(row.xqdc) }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"kxrq\" label=\"开学日期\" width=\"110\" align=\"center\" :formatter=\"fmtDate\" />\r\n <el-table-column prop=\"jsrq\" label=\"结束日期\" width=\"110\" align=\"center\" :formatter=\"fmtDate\" />\r\n <el-table-column prop=\"zyjsbh\" label=\"专用教室\" width=\"100\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column label=\"教学任务\" min-width=\"160\" align=\"center\" show-overflow-tooltip>\r\n <template slot-scope=\"{ row }\">{{ taskName(row.jxrwbh) }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"开放教员排课\" width=\"110\" align=\"center\">\r\n <template slot-scope=\"{ row }\">\r\n <el-tag v-if=\"Number(row.kfjypk) === 1\" type=\"success\" size=\"small\">开放</el-tag>\r\n <el-tag v-else type=\"info\" size=\"small\">关闭</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"bz\" label=\"备注\" min-width=\"120\" align=\"left\" header-align=\"center\" show-overflow-tooltip />\r\n <el-table-column label=\"操作\" width=\"200\" align=\"center\" fixed=\"right\">\r\n <template slot-scope=\"{ row }\">\r\n <el-button type=\"text\" size=\"small\" @click=\"handleEdit(row)\">编辑</el-button>\r\n <el-button type=\"text\" size=\"small\" @click=\"handleEditCalendar(row)\">班历</el-button>\r\n <el-button type=\"text\" size=\"small\" class=\"text-danger\" @click=\"handleDeleteRow(row)\">删除</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-pagination\r\n class=\"list-pagination\"\r\n :current-page=\"pageNum\"\r\n :page-size=\"pageSize\"\r\n :page-sizes=\"[10, 20, 50, 100]\"\r\n :total=\"total\"\r\n layout=\"total, sizes, prev, pager, next, jumper\"\r\n @size-change=\"handleSizeChange\"\r\n @current-change=\"handlePageChange\"\r\n />\r\n </el-card>\r\n\r\n <!-- ==================== 班次学期新增/编辑弹窗 ==================== -->\r\n <ClassSemesterDetailDialog\r\n :visible=\"detailVisible\"\r\n :mode=\"detailMode\"\r\n :semester=\"detailSemester\"\r\n :team-info=\"detailTeamInfo\"\r\n :year-options=\"yearOptions\"\r\n :task-options=\"taskOptions\"\r\n @update:visible=\"val => detailVisible = val\"\r\n @submit=\"handleDetailSubmit\"\r\n />\r\n\r\n <!-- ==================== 班历管理弹窗 ==================== -->\r\n <ClassCalendarDialog\r\n :visible=\"calendarVisible\"\r\n :semester=\"calendarSemester\"\r\n :semester-options=\"semesterOptions\"\r\n @update:visible=\"val => calendarVisible = val\"\r\n />\r\n\r\n <!-- ==================== 批量创建班次学期弹窗 ==================== -->\r\n <el-dialog\r\n :visible=\"batchAddVisible\"\r\n title=\"批量创建班次学期\"\r\n width=\"520px\"\r\n :close-on-click-modal=\"false\"\r\n @update:visible=\"val => batchAddVisible = val\"\r\n >\r\n <el-form ref=\"batchAddFormRef\" :model=\"batchAddForm\" :rules=\"batchAddRules\" label-width=\"100px\">\r\n <el-form-item label=\"年度\" prop=\"nd\">\r\n <el-select v-model=\"batchAddForm.nd\" placeholder=\"请选择年度\" style=\"width: 100%\">\r\n <el-option v-for=\"y in yearOptions\" :key=\"y\" :label=\"`${y}年`\" :value=\"y\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"学期\" prop=\"xqdc\">\r\n <el-select v-model=\"batchAddForm.xqdc\" placeholder=\"请选择学期\" style=\"width: 100%\">\r\n <el-option label=\"春季学期\" value=\"春季学期\" />\r\n <el-option label=\"夏季学期\" value=\"夏季学期\" />\r\n <el-option label=\"秋季学期\" value=\"秋季学期\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"开始日期\" prop=\"startTime\">\r\n <el-date-picker v-model=\"batchAddForm.startTime\" type=\"date\" value-format=\"yyyy-MM-dd\" placeholder=\"请选择开始日期\" style=\"width: 100%\" />\r\n </el-form-item>\r\n <el-form-item label=\"结束日期\" prop=\"endTime\">\r\n <el-date-picker v-model=\"batchAddForm.endTime\" type=\"date\" value-format=\"yyyy-MM-dd\" placeholder=\"请选择结束日期\" style=\"width: 100%\" />\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\">\r\n <el-button @click=\"batchAddVisible = false\">取消</el-button>\r\n <el-button type=\"primary\" :loading=\"saving\" @click=\"handleBatchAddSubmit\">确定</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- ==================== 快速设定学期日期弹窗 ==================== -->\r\n <el-dialog\r\n :visible=\"dateRangeVisible\"\r\n title=\"快速设定学期日期\"\r\n width=\"480px\"\r\n :close-on-click-modal=\"false\"\r\n @update:visible=\"val => dateRangeVisible = val\"\r\n >\r\n <el-alert\r\n type=\"info\"\r\n :closable=\"false\"\r\n show-icon\r\n :title=\"`将对选中的 ${selection.length} 条班次学期统一设定开学/结束日期`\"\r\n style=\"margin-bottom: 16px\"\r\n />\r\n <el-form ref=\"dateRangeFormRef\" :model=\"dateRangeForm\" :rules=\"dateRangeRules\" label-width=\"100px\">\r\n <el-form-item label=\"开学日期\" prop=\"kxrq\">\r\n <el-date-picker v-model=\"dateRangeForm.kxrq\" type=\"date\" value-format=\"yyyy-MM-dd\" placeholder=\"请选择开学日期\" style=\"width: 100%\" />\r\n </el-form-item>\r\n <el-form-item label=\"结束日期\" prop=\"jsrq\">\r\n <el-date-picker v-model=\"dateRangeForm.jsrq\" type=\"date\" value-format=\"yyyy-MM-dd\" placeholder=\"请选择结束日期\" style=\"width: 100%\" />\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\">\r\n <el-button @click=\"dateRangeVisible = false\">取消</el-button>\r\n <el-button type=\"primary\" :loading=\"saving\" @click=\"handleDateRangeSubmit\">确定</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- ==================== 批量设置教学任务弹窗 ==================== -->\r\n <el-dialog\r\n :visible=\"jxrwVisible\"\r\n title=\"批量设置教学任务\"\r\n width=\"480px\"\r\n :close-on-click-modal=\"false\"\r\n @update:visible=\"val => jxrwVisible = val\"\r\n >\r\n <el-alert\r\n type=\"info\"\r\n :closable=\"false\"\r\n show-icon\r\n :title=\"`将对选中的 ${selection.length} 条班次学期统一设置教学任务`\"\r\n style=\"margin-bottom: 16px\"\r\n />\r\n <el-form ref=\"jxrwFormRef\" :model=\"jxrwForm\" :rules=\"jxrwRules\" label-width=\"100px\">\r\n <el-form-item label=\"教学任务\" prop=\"jxrwbh\">\r\n <el-select v-model=\"jxrwForm.jxrwbh\" placeholder=\"请选择教学任务\" filterable style=\"width: 100%\">\r\n <el-option v-for=\"opt in taskOptions\" :key=\"opt.bh\" :label=\"opt.rwmc\" :value=\"opt.bh\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\">\r\n <el-button @click=\"jxrwVisible = false\">取消</el-button>\r\n <el-button type=\"primary\" :loading=\"saving\" @click=\"handleJxrwSubmit\">确定</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport ClassSemesterDetailDialog from './ClassSemesterDetailDialog.vue'\r\nimport ClassCalendarDialog from './ClassCalendarDialog.vue'\r\nimport { listSemester, allSemester, addSemester, updateSemester, delSemester, batchDeleteSemester, batchUpdateDateRange, batchUpdateJxrwbh, batchAddFromElective } from '@/api/studentRecords/semester'\r\nimport { listAllSemester } from '@/api/teachBusiness/semester'\r\nimport { listTeachingTask } from '@/api/teachBusiness/teachingTask'\r\n\r\nexport default {\r\n name: 'ShiftSemester',\r\n components: {\r\n ClassSemesterDetailDialog,\r\n ClassCalendarDialog\r\n },\r\n data() {\r\n return {\r\n loading: false,\r\n saving: false,\r\n\r\n // ==================== 查询条件 ====================\r\n searchForm: { xydbh: '' },\r\n filterYear: undefined,\r\n yearFilterOptions: [],\r\n\r\n // ==================== 列表与分页 ====================\r\n tableData: [],\r\n selection: [],\r\n currentRow: null,\r\n pageNum: 1,\r\n pageSize: 10,\r\n total: 0,\r\n\r\n // ==================== 下拉数据 ====================\r\n /** 年度下拉(来自 /semester/all */\r\n yearOptions: [],\r\n /** 教学任务下拉({ bh, rwmc } */\r\n taskOptions: [],\r\n /** 全部班次学期(用于班历复制目标选择) */\r\n semesterOptions: [],\r\n\r\n // ==================== 班次学期新增/编辑 ====================\r\n detailVisible: false,\r\n detailMode: 'add',\r\n detailSemester: null,\r\n detailTeamInfo: null,\r\n\r\n // ==================== 班历管理 ====================\r\n calendarVisible: false,\r\n calendarSemester: null,\r\n\r\n // ==================== 批量创建班次学期 ====================\r\n batchAddVisible: false,\r\n batchAddForm: { nd: undefined, xqdc: '', startTime: '', endTime: '' },\r\n batchAddRules: {\r\n nd: [{ required: true, message: '请选择年度', trigger: 'change' }],\r\n xqdc: [{ required: true, message: '请选择学期', trigger: 'change' }],\r\n startTime: [{ required: true, message: '请选择开始日期', trigger: 'change' }],\r\n endTime: [{ required: true, message: '请选择结束日期', trigger: 'change' }]\r\n },\r\n\r\n // ==================== 快速设定学期日期 ====================\r\n dateRangeVisible: false,\r\n dateRangeForm: { kxrq: '', jsrq: '' },\r\n dateRangeRules: {\r\n kxrq: [{ required: true, message: '请选择开学日期', trigger: 'change' }],\r\n jsrq: [{ required: true, message: '请选择结束日期', trigger: 'change' }]\r\n },\r\n\r\n // ==================== 批量设置教学任务 ====================\r\n jxrwVisible: false,\r\n jxrwForm: { jxrwbh: undefined },\r\n jxrwRules: {\r\n jxrwbh: [{ required: true, message: '请选择教学任务', trigger: 'change' }]\r\n }\r\n }\r\n },\r\n computed: {\r\n /** 本地按年度过滤(后端 /semester/list 仅支持 xydbh 模糊筛选) */\r\n displayData() {\r\n if (!this.filterYear) return this.tableData\r\n return this.tableData.filter(item => String(item.nd) === String(this.filterYear))\r\n }\r\n },\r\n mounted() {\r\n this.loadYearOptions()\r\n this.loadTaskOptions()\r\n this.loadSemesterOptions()\r\n this.loadList()\r\n },\r\n methods: {\r\n /* ==================== 格式化 ==================== */\r\n fmtDate(val) {\r\n if (!val) return '-'\r\n return String(val).slice(0, 10)\r\n },\r\n xqdcLabel(val) {\r\n if (val === 1 || val === '1') return '第1学期'\r\n if (val === 2 || val === '2') return '第2学期'\r\n if (val === 3 || val === '3') return '第3学期'\r\n return val !== undefined && val !== null && val !== '' ? `第${val}学期` : '-'\r\n },\r\n /** 教学任务编号 → 名称 */\r\n taskName(bh) {\r\n if (!bh) return '-'\r\n const opt = this.taskOptions.find(o => o.bh === bh)\r\n return opt ? opt.rwmc : bh\r\n },\r\n cleanPayload(obj) {\r\n const payload = {}\r\n Object.keys(obj).forEach(key => {\r\n const value = obj[key]\r\n if (value !== '' && value !== null && value !== undefined) {\r\n payload[key] = value\r\n }\r\n })\r\n return payload\r\n },\r\n\r\n /* ==================== 下拉数据加载 ==================== */\r\n loadYearOptions() {\r\n listAllSemester().then(res => {\r\n const list = (res && res.data) || []\r\n const years = list.map(x => x.nd).filter(v => v !== undefined && v !== null && v !== '')\r\n this.yearOptions = [...new Set(years)].sort((a, b) => Number(a) - Number(b))\r\n }).catch(() => {\r\n this.yearOptions = []\r\n })\r\n },\r\n loadTaskOptions() {\r\n listTeachingTask({ pageNum: 1, pageSize: 1000 }).then(res => {\r\n const list = (res && res.data && res.data.records) || []\r\n this.taskOptions = list.filter(o => o.bh)\r\n }).catch(() => {\r\n this.taskOptions = []\r\n })\r\n },\r\n loadSemesterOptions() {\r\n allSemester().then(res => {\r\n this.semesterOptions = (res && res.data) || []\r\n }).catch(() => {\r\n this.semesterOptions = []\r\n })\r\n },\r\n\r\n /* ==================== 列表加载 ==================== */\r\n loadList() {\r\n this.loading = true\r\n const query = this.cleanPayload({\r\n pageNum: this.pageNum,\r\n pageSize: this.pageSize,\r\n xydbh: this.searchForm.xydbh\r\n })\r\n listSemester(query).then(res => {\r\n const data = (res && res.data) || {}\r\n this.tableData = data.records || []\r\n this.total = data.total || 0\r\n this.buildYearFilterOptions()\r\n this.loading = false\r\n }).catch(() => {\r\n this.tableData = []\r\n this.total = 0\r\n this.loading = false\r\n })\r\n },\r\n /** 本地年度过滤下拉(从当前数据动态生成,避免硬编码) */\r\n buildYearFilterOptions() {\r\n const years = this.tableData.map(r => r.nd).filter(v => v !== undefined && v !== null && v !== '')\r\n this.yearFilterOptions = [...new Set(years)].sort((a, b) => Number(a) - Number(b))\r\n },\r\n handleYearChange() {\r\n this.$nextTick(() => {\r\n if (this.$refs.tableRef) this.$refs.tableRef.setCurrentRow(null)\r\n this.currentRow = null\r\n })\r\n },\r\n handleSizeChange(size) {\r\n this.pageSize = size\r\n this.loadList()\r\n },\r\n handlePageChange(page) {\r\n this.pageNum = page\r\n this.loadList()\r\n },\r\n handleSelectionChange(rows) {\r\n this.selection = rows\r\n },\r\n handleCurrentChange(row) {\r\n this.currentRow = row\r\n },\r\n\r\n /* ==================== 查询 / 重置 ==================== */\r\n handleQuery() {\r\n this.pageNum = 1\r\n this.loadList()\r\n },\r\n handleReset() {\r\n this.searchForm.xydbh = ''\r\n this.filterYear = undefined\r\n this.pageNum = 1\r\n this.loadList()\r\n },\r\n\r\n /* ==================== 新增 / 编辑 ==================== */\r\n handleAdd() {\r\n this.detailMode = 'add'\r\n this.detailSemester = null\r\n this.detailTeamInfo = null\r\n this.detailVisible = true\r\n },\r\n handleEdit(row) {\r\n const target = row || this.currentRow\r\n if (!target) {\r\n this.$message.warning('请先选择一条班次学期信息')\r\n return\r\n }\r\n this.detailMode = 'edit'\r\n this.detailSemester = target\r\n this.detailTeamInfo = null\r\n this.detailVisible = true\r\n },\r\n handleDetailSubmit(payload) {\r\n this.saving = true\r\n const req = this.detailMode === 'edit'\r\n ? updateSemester(payload)\r\n : addSemester(payload)\r\n req.then(() => {\r\n this.saving = false\r\n this.detailVisible = false\r\n this.$message.success(this.detailMode === 'edit' ? '班次学期已更新' : '班次学期已新增')\r\n this.loadList()\r\n this.loadSemesterOptions()\r\n }).catch(() => {\r\n this.saving = false\r\n })\r\n },\r\n\r\n /* ==================== 删除 ==================== */\r\n handleDelete() {\r\n if (!this.selection.length) {\r\n this.$message.warning('请先勾选要删除的班次学期')\r\n return\r\n }\r\n this.$confirm(`确定删除选中的 ${this.selection.length} 条班次学期吗?删除后其下班历记录将一并删除。`, '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n const bhList = this.selection.map(r => r.bh)\r\n batchDeleteSemester(bhList).then(() => {\r\n this.$message.success('已删除')\r\n this.loadList()\r\n this.loadSemesterOptions()\r\n })\r\n }).catch(() => {})\r\n },\r\n handleDeleteRow(row) {\r\n this.$confirm(`确定删除班次学期「${row.xydbh || row.bh}」吗?删除后其下班历记录将一并删除。`, '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n delSemester(row.bh).then(() => {\r\n this.$message.success('已删除')\r\n this.loadList()\r\n this.loadSemesterOptions()\r\n })\r\n }).catch(() => {})\r\n },\r\n\r\n /* ==================== 编辑班历 ==================== */\r\n handleEditCalendar(row) {\r\n const target = row || this.currentRow\r\n if (!target) {\r\n this.$message.warning('请先在列表中选择一条班次学期信息')\r\n return\r\n }\r\n this.calendarSemester = target\r\n this.calendarVisible = true\r\n },\r\n\r\n /* ==================== 批量创建班次学期 ==================== */\r\n handleBatchAdd() {\r\n this.batchAddForm = { nd: this.yearOptions[0] || undefined, xqdc: '', startTime: '', endTime: '' }\r\n this.batchAddVisible = true\r\n this.$nextTick(() => {\r\n if (this.$refs.batchAddFormRef) this.$refs.batchAddFormRef.clearValidate()\r\n })\r\n },\r\n handleBatchAddSubmit() {\r\n this.$refs.batchAddFormRef.validate(valid => {\r\n if (!valid) return\r\n const f = this.batchAddForm\r\n this.saving = true\r\n batchAddFromElective({\r\n nd: f.nd,\r\n xqdc: f.xqdc,\r\n startTime: f.startTime,\r\n endTime: f.endTime\r\n }).then(res => {\r\n this.saving = false\r\n this.batchAddVisible = false\r\n const count = (res && res.data) || 0\r\n this.$message.success(`已创建 ${count} 个班次学期`)\r\n this.loadList()\r\n this.loadSemesterOptions()\r\n }).catch(() => {\r\n this.saving = false\r\n })\r\n })\r\n },\r\n\r\n /* ==================== 快速设定学期日期 ==================== */\r\n handleQuickSetDates() {\r\n if (!this.selection.length) {\r\n this.$message.warning('请先勾选要设定日期的班次学期')\r\n return\r\n }\r\n this.dateRangeForm = { kxrq: '', jsrq: '' }\r\n this.dateRangeVisible = true\r\n this.$nextTick(() => {\r\n if (this.$refs.dateRangeFormRef) this.$refs.dateRangeFormRef.clearValidate()\r\n })\r\n },\r\n handleDateRangeSubmit() {\r\n this.$refs.dateRangeFormRef.validate(valid => {\r\n if (!valid) return\r\n const f = this.dateRangeForm\r\n this.saving = true\r\n batchUpdateDateRange({\r\n bhList: this.selection.map(r => r.bh),\r\n xqkssj: f.kxrq,\r\n xqjssj: f.jsrq\r\n }).then(res => {\r\n this.saving = false\r\n this.dateRangeVisible = false\r\n const count = (res && res.data) || 0\r\n this.$message.success(`已更新 ${count} 条班次学期的日期`)\r\n this.loadList()\r\n }).catch(() => {\r\n this.saving = false\r\n })\r\n })\r\n },\r\n\r\n /* ==================== 批量设置教学任务 ==================== */\r\n handleSetJxrw() {\r\n if (!this.selection.length) {\r\n this.$message.warning('请先勾选要设置教学任务的班次学期')\r\n return\r\n }\r\n this.jxrwForm = { jxrwbh: undefined }\r\n this.jxrwVisible = true\r\n this.$nextTick(() => {\r\n if (this.$refs.jxrwFormRef) this.$refs.jxrwFormRef.clearValidate()\r\n })\r\n },\r\n handleJxrwSubmit() {\r\n this.$refs.jxrwFormRef.validate(valid => {\r\n if (!valid) return\r\n this.saving = true\r\n batchUpdateJxrwbh({\r\n bhList: this.selection.map(r => r.bh),\r\n jxrwbh: this.jxrwForm.jxrwbh\r\n }).then(res => {\r\n this.saving = false\r\n this.jxrwVisible = false\r\n const count = (res && res.data) || 0\r\n this.$message.success(`已更新 ${count} 条班次学期的教学任务`)\r\n this.loadList()\r\n }).catch(() => {\r\n this.saving = false\r\n })\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.app-container {\r\n padding: 20px;\r\n}\r\n\r\n.shift-semester-page {\r\n // ========== 页面标题 ==========\r\n .page-title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #303133;\r\n margin-bottom: 12px;\r\n padding-left: 10px;\r\n border-left: 4px solid var(--edu-green-primary);\r\n }\r\n\r\n // ========== 1. 查询条件区域 ==========\r\n .search-card {\r\n margin-bottom: 16px;\r\n }\r\n\r\n // ========== 2. 工具栏按钮区 ==========\r\n .list-toolbar {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n flex-wrap: wrap;\r\n gap: 12px;\r\n margin-bottom: 16px;\r\n\r\n .left-group,\r\n .right-group {\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n }\r\n }\r\n\r\n // ========== 3. 数据表格区 ==========\r\n .table-card {\r\n .class-table {\r\n width: 100%;\r\n }\r\n\r\n .text-danger {\r\n color: #f56c6c;\r\n }\r\n\r\n .list-pagination {\r\n margin-top: 12px;\r\n text-align: right;\r\n }\r\n }\r\n}\r\n</style>\r\n"],"mappings":"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","ignoreList":[]}]}