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\\teachingLog\\organLog\\components\\reportedView.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachingLog\\organLog\\components\\reportedView.vue","mtime":1787640892028},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQC91dGlscy9pbmRleCcNCmltcG9ydCB7DQogIGdldFJlcG9ydGVkVGVhY2hpbmdMb2dMaXN0LA0KICBhcHByb3ZlVGVhY2hpbmdMb2csDQogIHJlamVjdFRlYWNoaW5nTG9nLA0KICBleHBvcnRUZWFjaGluZ0xvZywNCiAgZ2V0VGVhY2hpbmdMb2dCeUJoDQp9IGZyb20gJ0AvYXBpL2xvZycNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAnUmVwb3J0ZWRWaWV3JywNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5p+l6K+i6KGo5Y2VID09PT09PT09PT09PT09PT09PT09DQogICAgICBzZWFyY2hGb3JtOiB7DQogICAgICAgIHN0YXJ0RGF0ZTogJycsDQogICAgICAgIGVuZERhdGU6ICcnLA0KICAgICAgICBjb3Vyc2VOYW1lOiAnJywNCiAgICAgICAgdGVhY2hNZXRob2Q6ICcnLA0KICAgICAgICBjaGFuZ2U6ICcnLA0KICAgICAgICB0YXNrQ2F0ZWdvcnk6ICcnLA0KICAgICAgICBkZXB0OiAnJywNCiAgICAgICAgdGVhY2hlcjogJycsDQogICAgICAgIGNsYXNzTmFtZTogJycNCiAgICAgIH0sDQoNCiAgICAgIHRlYWNoTWV0aG9kT3B0aW9uczogWyfnkIborrrorrLmjognLCAn5a6e6Le15pWZ5a2mJywgJ+eglOiuqOaVmeWtpicsICfmoYjkvovmlZnlraYnLCAn5a6e5pON5ryU57uDJ10sDQogICAgICBjaGFuZ2VPcHRpb25zOiBbDQogICAgICAgICfkuI7mlZnlraborqHliJLkuIDoh7QnLA0KICAgICAgICAn5bey5pS55Yqo5pWZ5a2m6K6h5YiSJywNCiAgICAgICAgJ+aJi+WKqOaLn+WIticsDQogICAgICAgICfmlZnlkZjlj5jliqgnLA0KICAgICAgICAn5pe26Ze05Y+Y5YqoJywNCiAgICAgICAgJ+ivvueoi+WPmOWKqCcsDQogICAgICAgICfmjojor77mlrnlvI/lj5jliqgnLA0KICAgICAgICAn5Lu75Yqh57G75Yir5Y+Y5YqoJywNCiAgICAgICAgJ+acn+ePreWPmOWKqCcsDQogICAgICAgICflnLDngrnlj5jliqgnLA0KICAgICAgICAn6K++6aKY5Y+Y5YqoJw0KICAgICAgXSwNCiAgICAgIHRhc2tDYXRlZ29yeU9wdGlvbnM6IFsn5YWo5Yab6Zmi5qCh6K6t57uD6KeE5YiS5YaF5Lu75YqhJywgJ+WFtuS7luS7u+WKoe+8iOWQq+eglOeptueUn+WvvOW4iOaMh+WvvO+8iSddLA0KICAgICAgZGVwdE9wdGlvbnM6IFsn5pWZ5Yqh5aSEJywgJ+aMh+aMpeezuycsICfmlL/msrvlt6XkvZzmlZnnoJTlrqQnLCAn5Yab5LqL5Z+656GA5pWZ56CU5a6kJywgJ+ijheWkh+S/nemanOaVmeeglOWupCddLA0KICAgICAgdGVhY2hlck9wdGlvbnM6IFsn5pWZ5Yqh5aSEJywgJ+W8oOS4iScsICfmnY7lm5snLCAn546L5LqUJywgJ+i1teWFrScsICflrZnkuIMnXSwNCg0KICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5pWw5o2u6KGo5qC8ID09PT09PT09PT09PT09PT09PT09DQogICAgICBsb2FkaW5nOiBmYWxzZSwNCiAgICAgIHRhYmxlRGF0YTogW10sDQogICAgICBzZWxlY3RlZFJvd3M6IFtdLA0KICAgICAgcGFnZU51bTogMSwNCiAgICAgIHBhZ2VTaXplOiAyMCwNCiAgICAgIHRvdGFsOiAwLA0KDQogICAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDpgIDlm57mhI/op4EgPT09PT09PT09PT09PT09PT09PT0NCiAgICAgIHJlbWFyazogJycsDQoNCiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09IOivpuaDhSA9PT09PT09PT09PT09PT09PT09PQ0KICAgICAgZGV0YWlsVmlzaWJsZTogZmFsc2UsDQogICAgICBkZXRhaWxMb2FkaW5nOiBmYWxzZSwNCiAgICAgIGRldGFpbERhdGE6IHt9DQogICAgfQ0KICB9LA0KICBjcmVhdGVkKCkgew0KICAgIHRoaXMuZmV0Y2hMaXN0KCkNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGhhbmRsZVNlbGVjdGlvbkNoYW5nZShyb3dzKSB7DQogICAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHJvd3MNCiAgICB9LA0KDQogICAgLyoqIOagueaNruW3suWhq+WGmeeahOafpeivouWAvOaehOW7uuWunumZheafpeivouWPguaVsCAqLw0KICAgIGJ1aWxkU2VhcmNoUGFyYW1zKCkgew0KICAgICAgY29uc3QgZm9ybSA9IHRoaXMuc2VhcmNoRm9ybQ0KICAgICAgY29uc3QgcGFyYW1zID0geyBwYWdlTnVtOiB0aGlzLnBhZ2VOdW0sIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH0NCiAgICAgIGlmIChmb3JtLnN0YXJ0RGF0ZSkgcGFyYW1zLmtzcnEgPSBmb3JtLnN0YXJ0RGF0ZQ0KICAgICAgaWYgKGZvcm0uZW5kRGF0ZSkgcGFyYW1zLmpzcnEgPSBmb3JtLmVuZERhdGUNCiAgICAgIGlmIChmb3JtLmNvdXJzZU5hbWUpIHBhcmFtcy5rY21jID0gZm9ybS5jb3Vyc2VOYW1lDQogICAgICBpZiAoZm9ybS50ZWFjaE1ldGhvZCkgcGFyYW1zLmp4ZmYgPSBmb3JtLnRlYWNoTWV0aG9kDQogICAgICBpZiAoZm9ybS5jaGFuZ2UpIHBhcmFtcy5nZHFrID0gZm9ybS5jaGFuZ2UNCiAgICAgIGlmIChmb3JtLnRhc2tDYXRlZ29yeSkgcGFyYW1zLnJ3bGIgPSBmb3JtLnRhc2tDYXRlZ29yeQ0KICAgICAgaWYgKGZvcm0uZGVwdCkgcGFyYW1zLmp5cyA9IGZvcm0uZGVwdA0KICAgICAgaWYgKGZvcm0udGVhY2hlcikgcGFyYW1zLnNrankgPSBmb3JtLnRlYWNoZXINCiAgICAgIGlmIChmb3JtLmNsYXNzTmFtZSkgcGFyYW1zLnB4cWIgPSBmb3JtLmNsYXNzTmFtZQ0KICAgICAgcmV0dXJuIHBhcmFtcw0KICAgIH0sDQoNCiAgICBleHRyYWN0TGlzdERhdGEocmVzKSB7DQogICAgICBjb25zdCBkYXRhID0gcmVzLmRhdGEgfHwgcmVzDQogICAgICBjb25zdCBsaXN0ID0gZGF0YS5yZWNvcmRzIHx8IGRhdGEubGlzdCB8fCBkYXRhLnJvd3MgfHwgW10NCiAgICAgIGNvbnN0IHRvdGFsQ291bnQgPSBkYXRhLnRvdGFsID8/IGRhdGEudG90YWxDb3VudCA/PyBkYXRhLnRvdGFsUm93cyA/PyAwDQogICAgICByZXR1cm4geyBsaXN0LCB0b3RhbDogdG90YWxDb3VudCB9DQogICAgfSwNCg0KICAgIGZldGNoTGlzdCgpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWUNCiAgICAgIHJldHVybiBnZXRSZXBvcnRlZFRlYWNoaW5nTG9nTGlzdCh0aGlzLmJ1aWxkU2VhcmNoUGFyYW1zKCkpDQogICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBpZiAocmVzLmNvZGUgPT09IDIwMCB8fCByZXMuY29kZSA9PT0gMCkgew0KICAgICAgICAgICAgY29uc3QgeyBsaXN0LCB0b3RhbCB9ID0gdGhpcy5leHRyYWN0TGlzdERhdGEocmVzKQ0KICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBsaXN0DQogICAgICAgICAgICB0aGlzLnRvdGFsID0gdG90YWwNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgoKSA9PiB7fSkNCiAgICAgICAgLmZpbmFsbHkoKCkgPT4gew0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICAgIH0pDQogICAgfSwNCg0KICAgIGhhbmRsZVNlYXJjaCgpIHsNCiAgICAgIHRoaXMucGFnZU51bSA9IDENCiAgICAgIHRoaXMuZmV0Y2hMaXN0KCkNCiAgICB9LA0KDQogICAgaGFuZGxlUmVzZXQoKSB7DQogICAgICB0aGlzLnNlYXJjaEZvcm0gPSB7DQogICAgICAgIHN0YXJ0RGF0ZTogJycsDQogICAgICAgIGVuZERhdGU6ICcnLA0KICAgICAgICBjb3Vyc2VOYW1lOiAnJywNCiAgICAgICAgdGVhY2hNZXRob2Q6ICcnLA0KICAgICAgICBjaGFuZ2U6ICcnLA0KICAgICAgICB0YXNrQ2F0ZWdvcnk6ICcnLA0KICAgICAgICBkZXB0OiAnJywNCiAgICAgICAgdGVhY2hlcjogJycsDQogICAgICAgIGNsYXNzTmFtZTogJycNCiAgICAgIH0NCiAgICAgIHRoaXMucmVtYXJrID0gJycNCiAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCkNCiAgICB9LA0KDQogICAgaGFuZGxlUGFnZUNoYW5nZShwYWdlKSB7DQogICAgICB0aGlzLnBhZ2VOdW0gPSBwYWdlDQogICAgICB0aGlzLmZldGNoTGlzdCgpDQogICAgfSwNCg0KICAgIGhhbmRsZVNpemVDaGFuZ2Uoc2l6ZSkgew0KICAgICAgdGhpcy5wYWdlU2l6ZSA9IHNpemUNCiAgICAgIHRoaXMucGFnZU51bSA9IDENCiAgICAgIHRoaXMuZmV0Y2hMaXN0KCkNCiAgICB9LA0KDQogICAgZ2V0U2VsZWN0ZWRCaHMoKSB7DQogICAgICBjb25zdCBpZHMgPSB0aGlzLnNlbGVjdGVkUm93cy5tYXAoKHJvdykgPT4gcm93LmJoKS5maWx0ZXIoQm9vbGVhbikNCiAgICAgIGlmIChpZHMubGVuZ3RoID09PSAwKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI6YCJ5oup6K6w5b2VJykNCiAgICAgICAgcmV0dXJuIFtdDQogICAgICB9DQogICAgICByZXR1cm4gaWRzDQogICAgfSwNCg0KICAgIGhhbmRsZURlbGV0ZSgpIHsNCiAgICAgIC8vIOWQjuerr+aaguacquaPkOS+m+WIoOmZpOaOpeWPo++8jOS7heS9nOaPkOekug0KICAgICAgdGhpcy4kbWVzc2FnZS5pbmZvKCflkI7nq6/mmoLmnKrmj5Dkvpvor6XmjqXlj6MnKQ0KICAgIH0sDQoNCiAgICBoYW5kbGVBdWRpdCgpIHsNCiAgICAgIGNvbnN0IGlkcyA9IHRoaXMuZ2V0U2VsZWN0ZWRCaHMoKQ0KICAgICAgaWYgKGlkcy5sZW5ndGggPT09IDApIHJldHVybg0KICAgICAgdGhpcy4kY29uZmlybShg56Gu5a6a6KaB5a6h5qC46YCa6L+H6YCJ5Lit55qEICR7aWRzLmxlbmd0aH0g5p2h6K6w5b2V5ZCX77yfYCwgJ+WuoeaguOehruiupCcsIHsNCiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLA0KICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywNCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnDQogICAgICB9KQ0KICAgICAgICAudGhlbigoKSA9PiB7DQogICAgICAgICAgLy8g5a6h5qC46YCa6L+H5pWZ5a2m5pel5b+X77yM6YCQ5p2h5a6h5qC4DQogICAgICAgICAgbGV0IHNldHRsZWQgPSBQcm9taXNlLnJlc29sdmUoKQ0KICAgICAgICAgIGlkcy5mb3JFYWNoKChiaCkgPT4gew0KICAgICAgICAgICAgc2V0dGxlZCA9IHNldHRsZWQudGhlbigoKSA9PiBhcHByb3ZlVGVhY2hpbmdMb2coYmgsICcnKSkNCiAgICAgICAgICB9KQ0KICAgICAgICAgIHJldHVybiBzZXR0bGVkDQogICAgICAgIH0pDQogICAgICAgIC50aGVuKCgpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoYOW3suWuoeaguOmAmui/hyAke2lkcy5sZW5ndGh9IOadoeiusOW9lWApDQogICAgICAgICAgdGhpcy5mZXRjaExpc3QoKQ0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKCkgPT4ge30pDQogICAgfSwNCg0KICAgIGhhbmRsZVdpdGhkcmF3KCkgew0KICAgICAgY29uc3QgaWRzID0gdGhpcy5nZXRTZWxlY3RlZEJocygpDQogICAgICBpZiAoaWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuDQogICAgICBpZiAoIXRoaXMucmVtYXJrLnRyaW0oKSkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+Whq+WGmemAgOWbnuWOn+WboC/mhI/op4EnKQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGNvbnN0IG9waW5pb24gPSB0aGlzLnJlbWFyay50cmltKCkNCiAgICAgIGxldCBzZXR0bGVkID0gUHJvbWlzZS5yZXNvbHZlKCkNCiAgICAgIGlkcy5mb3JFYWNoKChiaCkgPT4gew0KICAgICAgICBzZXR0bGVkID0gc2V0dGxlZC50aGVuKCgpID0+IHJlamVjdFRlYWNoaW5nTG9nKGJoLCBvcGluaW9uKSkNCiAgICAgIH0pDQogICAgICB0aGlzLiRjb25maXJtKGDnoa7lrpropoHmkqTlm57ph43loavpgInkuK3nmoQgJHtpZHMubGVuZ3RofSDmnaHorrDlvZXlkJfvvJ9gLCAn5pKk5Zue56Gu6K6kJywgew0KICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsDQogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLA0KICAgICAgICB0eXBlOiAnd2FybmluZycNCiAgICAgIH0pDQogICAgICAgIC50aGVuKCgpID0+IHNldHRsZWQpDQogICAgICAgIC50aGVuKCgpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoYOW3suaSpOWbniAke2lkcy5sZW5ndGh9IOadoeiusOW9lWApDQogICAgICAgICAgdGhpcy5mZXRjaExpc3QoKQ0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKCkgPT4ge30pDQogICAgfSwNCg0KICAgIGhhbmRsZVJlY2hlY2soKSB7DQogICAgICAvLyDlkI7nq6/mmoLmnKrmj5Dkvpvph43mlrDmo4Dmn6XmjqXlj6PvvIzku4XkvZzmj5DnpLoNCiAgICAgIHRoaXMuJG1lc3NhZ2UuaW5mbygn5ZCO56uv5pqC5pyq5o+Q5L6b6K+l5o6l5Y+jJykNCiAgICB9LA0KDQogICAgZG93bmxvYWRCbG9iKGJsb2IsIGZpbGVOYW1lKSB7DQogICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKQ0KICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKQ0KICAgICAgbGluay5ocmVmID0gdXJsDQogICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWUNCiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaykNCiAgICAgIGxpbmsuY2xpY2soKQ0KICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKQ0KICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKQ0KICAgIH0sDQoNCiAgICBoYW5kbGVFeHBvcnQoKSB7DQogICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmJ1aWxkU2VhcmNoUGFyYW1zKCkNCiAgICAgIGRlbGV0ZSBwYXJhbXMucGFnZU51bQ0KICAgICAgZGVsZXRlIHBhcmFtcy5wYWdlU2l6ZQ0KICAgICAgZXhwb3J0VGVhY2hpbmdMb2cocGFyYW1zKQ0KICAgICAgICAudGhlbigoYmxvYikgPT4gew0KICAgICAgICAgIHRoaXMuZG93bmxvYWRCbG9iKGJsb2IsIGDlt7LkuIrmiqXmlZnlrabml6Xlv5dfJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTApfS54bHNgKQ0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5a+85Ye65oiQ5YqfJykNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKCgpID0+IHt9KQ0KICAgIH0sDQoNCiAgICBoYW5kbGVEZXRhaWwocm93KSB7DQogICAgICB0aGlzLmRldGFpbERhdGEgPSB7IC4uLnJvdyB9DQogICAgICB0aGlzLmRldGFpbFZpc2libGUgPSB0cnVlDQogICAgICBjb25zdCBiaCA9IHJvdy5iaA0KICAgICAgaWYgKCFiaCkgcmV0dXJuDQogICAgICB0aGlzLmRldGFpbExvYWRpbmcgPSB0cnVlDQogICAgICBnZXRUZWFjaGluZ0xvZ0J5QmgoU3RyaW5nKGJoKSkNCiAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIGlmICgocmVzLmNvZGUgPT09IDIwMCB8fCByZXMuY29kZSA9PT0gMCkgJiYgcmVzLmRhdGEpIHsNCiAgICAgICAgICAgIHRoaXMuZGV0YWlsRGF0YSA9IHJlcy5kYXRhDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKCkgPT4ge30pDQogICAgICAgIC5maW5hbGx5KCgpID0+IHsNCiAgICAgICAgICB0aGlzLmRldGFpbExvYWRpbmcgPSBmYWxzZQ0KICAgICAgICB9KQ0KICAgIH0NCiAgfQ0KfQ0K"},{"version":3,"sources":["reportedView.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"reportedView.vue","sourceRoot":"src/views/teachingLog/organLog/components","sourcesContent":["<template>\r\n <div class=\"page-container\">\r\n <!-- 查询条件 -->\r\n <el-card shadow=\"never\" class=\"search-card\">\r\n <el-form :model=\"searchForm\" label-width=\"110px\" class=\"search-form\">\r\n <el-row :gutter=\"0\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"开始日期\">\r\n <el-date-picker v-model=\"searchForm.startDate\" type=\"date\" value-format=\"yyyy-MM-dd\" placeholder=\"选择开始日期\"\r\n class=\"w-full\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"结束日期\">\r\n <el-date-picker v-model=\"searchForm.endDate\" type=\"date\" value-format=\"yyyy-MM-dd\" placeholder=\"选择结束日期\"\r\n class=\"w-full\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <el-row :gutter=\"0\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"课程名称\">\r\n <el-input v-model=\"searchForm.courseName\" placeholder=\"请输入课程名称\" clearable />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"教学方法\">\r\n <el-select v-model=\"searchForm.teachMethod\" placeholder=\"请选择教学方法\" clearable class=\"w-full\">\r\n <el-option v-for=\"item in teachMethodOptions\" :key=\"item\" :label=\"item\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <el-row :gutter=\"0\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"改动情况\">\r\n <el-select v-model=\"searchForm.change\" placeholder=\"请选择改动情况\" clearable class=\"w-full\">\r\n <el-option v-for=\"item in changeOptions\" :key=\"item\" :label=\"item\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"任务类别\">\r\n <el-select v-model=\"searchForm.taskCategory\" placeholder=\"请选择任务类别\" clearable class=\"w-full\">\r\n <el-option v-for=\"item in taskCategoryOptions\" :key=\"item\" :label=\"item\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <el-row :gutter=\"0\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"教研室\">\r\n <el-select v-model=\"searchForm.dept\" placeholder=\"请选择教研室\" clearable class=\"w-full\">\r\n <el-option v-for=\"item in deptOptions\" :key=\"item\" :label=\"item\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"授课教员\">\r\n <el-select v-model=\"searchForm.teacher\" placeholder=\"请选择授课教员\" clearable class=\"w-full\">\r\n <el-option v-for=\"item in teacherOptions\" :key=\"item\" :label=\"item\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <el-row :gutter=\"0\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"培训班\">\r\n <el-input v-model=\"searchForm.className\" placeholder=\"请输入培训班\" clearable />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n\r\n <div class=\"search-actions\">\r\n <div class=\"left-group\">\r\n <el-button type=\"danger\" plain @click=\"handleDelete\">删除所选</el-button>\r\n <el-button type=\"primary\" @click=\"handleAudit\">审核通过所选</el-button>\r\n <el-input v-model=\"remark\" placeholder=\"退回原因/意见\" clearable class=\"action-input\" />\r\n <el-button type=\"warning\" plain @click=\"handleWithdraw\">撤回重填所选</el-button>\r\n <el-button @click=\"handleRecheck\">重新检查所选变更情况</el-button>\r\n <el-button icon=\"el-icon-download\" @click=\"handleExport\">导出到 Word</el-button>\r\n </div>\r\n <div class=\"right-group\">\r\n <el-button @click=\"handleReset\">重置</el-button>\r\n <el-button type=\"primary\" @click=\"handleSearch\">查询</el-button>\r\n </div>\r\n </div>\r\n </el-card>\r\n\r\n <!-- 数据表格 -->\r\n <el-card shadow=\"never\" class=\"table-card\">\r\n <el-table v-loading=\"loading\" :data=\"tableData\" stripe border highlight-current-row\r\n @selection-change=\"handleSelectionChange\">\r\n <el-table-column type=\"selection\" width=\"50\" align=\"center\" />\r\n <el-table-column type=\"index\" label=\"序号\" width=\"60\" align=\"center\" />\r\n <el-table-column prop=\"rwlb\" label=\"任务类别\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"jyxm\" label=\"主讲教员\" width=\"100\" align=\"center\" />\r\n <el-table-column prop=\"rq\" label=\"日期\" width=\"150\" align=\"center\">\r\n <template slot-scope=\"scope\">{{ scope.row.rq ? formatDate(scope.row.rq) : '-' }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"节次\" width=\"80\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n {{ scope.row.qsjc && scope.row.jsjc ? `${scope.row.qsjc}-${scope.row.jsjc}节` : (scope.row.qsjc || '-') }}\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"kcmc\" label=\"课程名称\" min-width=\"150\" show-overflow-tooltip />\r\n <el-table-column prop=\"pxqbxx\" label=\"培训期班信息\" min-width=\"140\" show-overflow-tooltip />\r\n <el-table-column label=\"人数\" width=\"70\" align=\"center\">\r\n <template slot-scope=\"scope\">{{ scope.row.sdrs || scope.row.ydrs || '-' }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"分组指导教员\" width=\"120\" align=\"center\">\r\n <template slot-scope=\"scope\">{{ scope.row.fzyzdjy || '-' }}</template>\r\n </el-table-column>\r\n <el-table-column prop=\"jsfs\" label=\"教学方法\" width=\"100\" align=\"center\" />\r\n <el-table-column prop=\"zt\" label=\"日志状态\" width=\"100\" align=\"center\" />\r\n <el-table-column prop=\"gdqk\" label=\"变动汇总\" min-width=\"120\" show-overflow-tooltip />\r\n <el-table-column prop=\"jxrzcjfs\" label=\"创建方式\" width=\"100\" align=\"center\" />\r\n <el-table-column label=\"操作\" width=\"80\" align=\"center\" fixed=\"right\" class-name=\"table-action-column\">\r\n <template slot-scope=\"scope\">\r\n <el-button type=\"text\" @click=\"handleDetail(scope.row)\">详细</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <!-- 分页 -->\r\n <div class=\"pagination-wrapper\">\r\n <el-pagination :current-page=\"pageNum\" :page-size=\"pageSize\" :total=\"total\" :page-sizes=\"[10, 20, 50, 100]\"\r\n layout=\"total, sizes, prev, pager, next, jumper\" background @current-change=\"handlePageChange\"\r\n @size-change=\"handleSizeChange\" />\r\n </div>\r\n </el-card>\r\n\r\n <!-- 日志详情对话框 -->\r\n <el-dialog :visible.sync=\"detailVisible\" title=\"教学日志详情\" width=\"700px\" destroy-on-close>\r\n <div v-loading=\"detailLoading\">\r\n <el-descriptions v-if=\"!detailLoading\" :column=\"2\" border>\r\n <el-descriptions-item label=\"编号\">{{ detailData.bh || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"统一编号\">{{ detailData.tybh || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"教员编号\">{{ detailData.jybh || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"教员姓名\">{{ detailData.jyxm || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"课程名称\">{{ detailData.kcmc || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"任务类别\">{{ detailData.rwlb || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"日期\">{{ detailData.rq || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"节次\">\r\n {{ detailData.qsjc && detailData.jsjc ? `${detailData.qsjc}-${detailData.jsjc}节` : '-' }}\r\n </el-descriptions-item>\r\n <el-descriptions-item label=\"教学方法\">{{ detailData.jsfs || detailData.jxff || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"创建方式\">{{ detailData.jxrzcjfs || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"应到人数\">{{ detailData.ydrs || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"实到人数\">{{ detailData.sdrs || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"培训期班信息\" :span=\"2\">{{ detailData.pxqbxx || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"授课地点\" :span=\"2\">{{ detailData.skdd || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"状态\">{{ detailData.zt || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"教研室\">{{ detailData.jysmc || detailData.jys || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"变动汇总\" :span=\"2\">{{ detailData.gdqk || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"变动详细情况\" :span=\"2\">{{ detailData.gdxxqk || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"退回意见\" :span=\"2\">{{ detailData.thyj || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"创建时间\">{{ detailData.cjsj || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"修改时间\">{{ detailData.xgsj || '-' }}</el-descriptions-item>\r\n </el-descriptions>\r\n </div>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"detailVisible = false\">关 闭</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { formatDate } from '@/utils/index'\r\nimport {\r\n getReportedTeachingLogList,\r\n approveTeachingLog,\r\n rejectTeachingLog,\r\n exportTeachingLog,\r\n getTeachingLogByBh\r\n} from '@/api/log'\r\n\r\nexport default {\r\n name: 'ReportedView',\r\n data() {\r\n return {\r\n // ==================== 查询表单 ====================\r\n searchForm: {\r\n startDate: '',\r\n endDate: '',\r\n courseName: '',\r\n teachMethod: '',\r\n change: '',\r\n taskCategory: '',\r\n dept: '',\r\n teacher: '',\r\n className: ''\r\n },\r\n\r\n teachMethodOptions: ['理论讲授', '实践教学', '研讨教学', '案例教学', '实操演练'],\r\n changeOptions: [\r\n '与教学计划一致',\r\n '已改动教学计划',\r\n '手动拟制',\r\n '教员变动',\r\n '时间变动',\r\n '课程变动',\r\n '授课方式变动',\r\n '任务类别变动',\r\n '期班变动',\r\n '地点变动',\r\n '课题变动'\r\n ],\r\n taskCategoryOptions: ['全军院校训练规划内任务', '其他任务(含研究生导师指导)'],\r\n deptOptions: ['教务处', '指挥系', '政治工作教研室', '军事基础教研室', '装备保障教研室'],\r\n teacherOptions: ['教务处', '张三', '李四', '王五', '赵六', '孙七'],\r\n\r\n // ==================== 数据表格 ====================\r\n loading: false,\r\n tableData: [],\r\n selectedRows: [],\r\n pageNum: 1,\r\n pageSize: 20,\r\n total: 0,\r\n\r\n // ==================== 退回意见 ====================\r\n remark: '',\r\n\r\n // ==================== 详情 ====================\r\n detailVisible: false,\r\n detailLoading: false,\r\n detailData: {}\r\n }\r\n },\r\n created() {\r\n this.fetchList()\r\n },\r\n methods: {\r\n handleSelectionChange(rows) {\r\n this.selectedRows = rows\r\n },\r\n\r\n /** 根据已填写的查询值构建实际查询参数 */\r\n buildSearchParams() {\r\n const form = this.searchForm\r\n const params = { pageNum: this.pageNum, pageSize: this.pageSize }\r\n if (form.startDate) params.ksrq = form.startDate\r\n if (form.endDate) params.jsrq = form.endDate\r\n if (form.courseName) params.kcmc = form.courseName\r\n if (form.teachMethod) params.jxff = form.teachMethod\r\n if (form.change) params.gdqk = form.change\r\n if (form.taskCategory) params.rwlb = form.taskCategory\r\n if (form.dept) params.jys = form.dept\r\n if (form.teacher) params.skjy = form.teacher\r\n if (form.className) params.pxqb = form.className\r\n return params\r\n },\r\n\r\n extractListData(res) {\r\n const data = res.data || res\r\n const list = data.records || data.list || data.rows || []\r\n const totalCount = data.total ?? data.totalCount ?? data.totalRows ?? 0\r\n return { list, total: totalCount }\r\n },\r\n\r\n fetchList() {\r\n this.loading = true\r\n return getReportedTeachingLogList(this.buildSearchParams())\r\n .then((res) => {\r\n if (res.code === 200 || res.code === 0) {\r\n const { list, total } = this.extractListData(res)\r\n this.tableData = list\r\n this.total = total\r\n }\r\n })\r\n .catch(() => {})\r\n .finally(() => {\r\n this.loading = false\r\n })\r\n },\r\n\r\n handleSearch() {\r\n this.pageNum = 1\r\n this.fetchList()\r\n },\r\n\r\n handleReset() {\r\n this.searchForm = {\r\n startDate: '',\r\n endDate: '',\r\n courseName: '',\r\n teachMethod: '',\r\n change: '',\r\n taskCategory: '',\r\n dept: '',\r\n teacher: '',\r\n className: ''\r\n }\r\n this.remark = ''\r\n this.handleSearch()\r\n },\r\n\r\n handlePageChange(page) {\r\n this.pageNum = page\r\n this.fetchList()\r\n },\r\n\r\n handleSizeChange(size) {\r\n this.pageSize = size\r\n this.pageNum = 1\r\n this.fetchList()\r\n },\r\n\r\n getSelectedBhs() {\r\n const ids = this.selectedRows.map((row) => row.bh).filter(Boolean)\r\n if (ids.length === 0) {\r\n this.$message.warning('请先选择记录')\r\n return []\r\n }\r\n return ids\r\n },\r\n\r\n handleDelete() {\r\n // 后端暂未提供删除接口,仅作提示\r\n this.$message.info('后端暂未提供该接口')\r\n },\r\n\r\n handleAudit() {\r\n const ids = this.getSelectedBhs()\r\n if (ids.length === 0) return\r\n this.$confirm(`确定要审核通过选中的 ${ids.length} 条记录吗?`, '审核确认', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n // 审核通过教学日志,逐条审核\r\n let settled = Promise.resolve()\r\n ids.forEach((bh) => {\r\n settled = settled.then(() => approveTeachingLog(bh, ''))\r\n })\r\n return settled\r\n })\r\n .then(() => {\r\n this.$message.success(`已审核通过 ${ids.length} 条记录`)\r\n this.fetchList()\r\n })\r\n .catch(() => {})\r\n },\r\n\r\n handleWithdraw() {\r\n const ids = this.getSelectedBhs()\r\n if (ids.length === 0) return\r\n if (!this.remark.trim()) {\r\n this.$message.warning('请填写退回原因/意见')\r\n return\r\n }\r\n const opinion = this.remark.trim()\r\n let settled = Promise.resolve()\r\n ids.forEach((bh) => {\r\n settled = settled.then(() => rejectTeachingLog(bh, opinion))\r\n })\r\n this.$confirm(`确定要撤回重填选中的 ${ids.length} 条记录吗?`, '撤回确认', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => settled)\r\n .then(() => {\r\n this.$message.success(`已撤回 ${ids.length} 条记录`)\r\n this.fetchList()\r\n })\r\n .catch(() => {})\r\n },\r\n\r\n handleRecheck() {\r\n // 后端暂未提供重新检查接口,仅作提示\r\n this.$message.info('后端暂未提供该接口')\r\n },\r\n\r\n downloadBlob(blob, fileName) {\r\n const url = window.URL.createObjectURL(blob)\r\n const link = document.createElement('a')\r\n link.href = url\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(url)\r\n },\r\n\r\n handleExport() {\r\n const params = this.buildSearchParams()\r\n delete params.pageNum\r\n delete params.pageSize\r\n exportTeachingLog(params)\r\n .then((blob) => {\r\n this.downloadBlob(blob, `已上报教学日志_${new Date().toISOString().slice(0, 10)}.xls`)\r\n this.$message.success('导出成功')\r\n })\r\n .catch(() => {})\r\n },\r\n\r\n handleDetail(row) {\r\n this.detailData = { ...row }\r\n this.detailVisible = true\r\n const bh = row.bh\r\n if (!bh) return\r\n this.detailLoading = true\r\n getTeachingLogByBh(String(bh))\r\n .then((res) => {\r\n if ((res.code === 200 || res.code === 0) && res.data) {\r\n this.detailData = res.data\r\n }\r\n })\r\n .catch(() => {})\r\n .finally(() => {\r\n this.detailLoading = false\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.page-container {\r\n padding: 4px 8px;\r\n}\r\n\r\n.search-card {\r\n margin-bottom: 16px;\r\n\r\n .search-form {\r\n .w-full {\r\n width: 100%;\r\n }\r\n\r\n ::v-deep .el-row {\r\n border-bottom: 1px solid #ebeef5;\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n }\r\n\r\n ::v-deep .el-col {\r\n border-right: 1px solid #ebeef5;\r\n\r\n &:last-child {\r\n border-right: none;\r\n }\r\n }\r\n\r\n ::v-deep .el-form-item__label {\r\n white-space: normal;\r\n line-height: 1.4;\r\n text-align: left;\r\n justify-content: flex-start;\r\n }\r\n\r\n .el-form-item {\r\n margin-bottom: 0;\r\n padding: 10px 12px;\r\n }\r\n }\r\n\r\n .search-tip {\r\n padding: 6px 12px 0;\r\n font-size: 12px;\r\n color: #f56c6c;\r\n }\r\n\r\n .search-actions {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 12px;\r\n border-top: 1px solid #ebeef5;\r\n\r\n .left-group {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n flex-wrap: wrap;\r\n\r\n .action-input {\r\n width: 240px;\r\n }\r\n }\r\n\r\n .right-group {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n }\r\n}\r\n\r\n.table-card {\r\n .el-table {\r\n width: 100%;\r\n }\r\n\r\n .pagination-wrapper {\r\n display: flex;\r\n justify-content: flex-end;\r\n padding: 16px 0 0;\r\n }\r\n}\r\n</style>\r\n"]}]} |