Files
education/frontend/node_modules/.cache/babel-loader/8b8136d61bead0680bc1f5fee829ffcf.json
T

1 line
43 KiB
JSON

{"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\\taskPlan\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachOffice\\taskPlan\\index.vue","mtime":1787648748791},{"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:InVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc29ydC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmNvbnN0cnVjdG9yLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZmluZC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZvci1lYWNoLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIik7CnZhciBfdGVhY2hpbmdUYXNrID0gcmVxdWlyZSgiQC9hcGkvdGVhY2hCdXNpbmVzcy90ZWFjaGluZ1Rhc2siKTsKdmFyIF9zZW1lc3RlciA9IHJlcXVpcmUoIkAvYXBpL3RlYWNoQnVzaW5lc3Mvc2VtZXN0ZXIiKTsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLyoqDQogKiDmlZnlrabku7vliqHorqHliJLnrqHnkIbvvIjlrozmlbTnrqHnkIbpobXvvIkNCiAqIOWvueW6lOiPnOWNle+8mnRlYWNoT2ZmaWNlL3Rhc2tQbGFuDQogKiDmj5DkvpsgdGVhY2hpbmdUYXNrIOWFqOWll+ecn+WunuaOpeWPo+aTjeS9nO+8muWIhumhteafpeivoiBsaXN044CB6K+m5oOFIGdldD9iaD3jgIHmlrDlop4gYWRk44CB57yW6L6RIHVwZGF0ZeOAgQ0KICog5Y+R5biDIGJhdGNoUHVibGlzaD9iaD3vvIjpnIDlhYjloavlhpnmlZnnoJTlrqTku7vliqHkuabvvInjgIHliKDpmaQgZGVsZXRlP2JoPe+8iOe6p+iBlOWIoOmZpOaVmeeglOWupOS7u+WKoeS5pu+8iQ0KICog5Y+q6K+75p+l6K+i6KeG5Zu+5ZyoIHNyYy92aWV3cy90ZWFjaEJ1c2luZXNzL3RlYWNoaW5nVGFzay9pbmRleC52dWXvvIjmlZnlrabku7vliqHliJfooajvvInmj5DkvpvvvIzpgb/lhY3ph43lpI3mk43kvZzlkIzkuIDlrp7kvZMNCiAqLwp2YXIgX2RlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQgPSB7CiAgbmFtZTogJ1Rhc2tQbGFuJywKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0gMS4g5p+l6K+i5p2h5Lu2ID09PT09PT09PT09PT09PT09PT09CiAgICAgIHNlYXJjaEZvcm06IHsKICAgICAgICByd21jOiAnJywKICAgICAgICBuZDogdW5kZWZpbmVkLAogICAgICAgIHp0OiAnJwogICAgICB9LAogICAgICB5ZWFyT3B0aW9uczogW10sCiAgICAgIHN0YXR1c09wdGlvbnM6IFt7CiAgICAgICAgbGFiZWw6ICfmnKrlj5HluIMnLAogICAgICAgIHZhbHVlOiAn5pyq5Y+R5biDJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICflj5HluIMnLAogICAgICAgIHZhbHVlOiAn5Y+R5biDJwogICAgICB9XSwKICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0gMi4g6KGo5qC85pWw5o2uID09PT09PT09PT09PT09PT09PT09CiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICB0YWJsZURhdGE6IFtdLAogICAgICBwYWdlTnVtOiAxLAogICAgICBwYWdlU2l6ZTogMTAsCiAgICAgIHRvdGFsOiAwLAogICAgICAvLyA9PT09PT09PT09PT09PT09PT09PSAzLiDmlrDlop4v5L+u5pS56KGo5Y2VID09PT09PT09PT09PT09PT09PT09CiAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlLAogICAgICBkaWFsb2dUaXRsZTogJ+aWsOW7uuaVmeWtpuS7u+WKoScsCiAgICAgIGlzRWRpdDogZmFsc2UsCiAgICAgIHNhdmluZzogZmFsc2UsCiAgICAgIGZvcm06IHRoaXMuY3JlYXRlRW1wdHlGb3JtKCksCiAgICAgIHJ1bGVzOiB7CiAgICAgICAgcndtYzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeS7u+WKoeWQjeensCcsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBuZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeW5tOW6picsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgIHp0OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup54q25oCBJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0gNC4g6K+m5oOFID09PT09PT09PT09PT09PT09PT09CiAgICAgIGRldGFpbFZpc2libGU6IGZhbHNlLAogICAgICBkZXRhaWxMb2FkaW5nOiBmYWxzZSwKICAgICAgZGV0YWlsRGF0YToge30KICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHRoaXMubG9hZFllYXJPcHRpb25zKCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiBfdGhpcy5mZXRjaExpc3QoKTsKICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgLyogLS0tLS0tLS0tLSDlubTluqbkuIvmi4nvvIjmlbDmja7mnaXoh6ogL3NlbWVzdGVyL2FsbO+8jOemgeatouehrOe8luegge+8iSAtLS0tLS0tLS0tICovbG9hZFllYXJPcHRpb25zOiBmdW5jdGlvbiBsb2FkWWVhck9wdGlvbnMoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gKDAsIF9zZW1lc3Rlci5saXN0QWxsU2VtZXN0ZXIpKCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICB2YXIgbGlzdCA9IHJlc3BvbnNlLmRhdGEgfHwgW107CiAgICAgICAgdmFyIG1hcCA9IHt9OwogICAgICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaWYgKGl0ZW0ubmQgIT09IG51bGwgJiYgaXRlbS5uZCAhPT0gdW5kZWZpbmVkICYmIGl0ZW0ubmQgIT09ICcnKSBtYXBbaXRlbS5uZF0gPSBpdGVtOwogICAgICAgIH0pOwogICAgICAgIHZhciBhcnIgPSBPYmplY3Qua2V5cyhtYXApLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgICAgIHJldHVybiBTdHJpbmcoYikubG9jYWxlQ29tcGFyZShTdHJpbmcoYSkpOwogICAgICAgIH0pOwogICAgICAgIF90aGlzMi55ZWFyT3B0aW9ucyA9IGFycjsKICAgICAgICAvLyDpu5jorqTlubTluqbvvJrkvJjlhYjlvZPliY3lrabmnJ8oZHF4cT10cnVlKe+8jOWQpuWImeWPluacgOaWsOW5tOW6pgogICAgICAgIHZhciBjdXJyZW50ID0gbGlzdC5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5kcXhxID09PSB0cnVlOwogICAgICAgIH0pOwogICAgICAgIHZhciBkZWZhdWx0TmQgPSBjdXJyZW50ICYmIGN1cnJlbnQubmQgfHwgYXJyWzBdOwogICAgICAgIGlmICghX3RoaXMyLnNlYXJjaEZvcm0ubmQpIF90aGlzMi5zZWFyY2hGb3JtLm5kID0gZGVmYXVsdE5kOwogICAgICAgIHJldHVybiBhcnI7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczIueWVhck9wdGlvbnMgPSBbXTsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0pOwogICAgfSwKICAgIC8qIC0tLS0tLS0tLS0g6YCa55So5qC85byP5YyWIC0tLS0tLS0tLS0gKi9mbXREYXRlVGltZTogZnVuY3Rpb24gZm10RGF0ZVRpbWUocm93LCBjb2x1bW4sIGNlbGxWYWx1ZSkgewogICAgICBpZiAoY2VsbFZhbHVlID09PSBudWxsIHx8IGNlbGxWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGNlbGxWYWx1ZSA9PT0gJycpIHJldHVybiAnLSc7CiAgICAgIHJldHVybiBTdHJpbmcoY2VsbFZhbHVlKS5yZXBsYWNlKCdUJywgJyAnKS5zbGljZSgwLCAxNik7CiAgICB9LAogICAgZm10VmFsOiBmdW5jdGlvbiBmbXRWYWwodmFsKSB7CiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykgcmV0dXJuICctJzsKICAgICAgcmV0dXJuIFN0cmluZyh2YWwpLnJlcGxhY2UoJ1QnLCAnICcpLnNsaWNlKDAsIDE2KTsKICAgIH0sCiAgICAvKiog56e76Zmk56m65YC877yIJycvbnVsbC91bmRlZmluZWTvvInvvIzkv53nlZkgMCDnrYnmnInmlYjlgLwgKi9jbGVhblBheWxvYWQ6IGZ1bmN0aW9uIGNsZWFuUGF5bG9hZChvYmopIHsKICAgICAgdmFyIHBheWxvYWQgPSB7fTsKICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTsKICAgICAgICBpZiAodmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIHBheWxvYWRba2V5XSA9IHZhbHVlOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHJldHVybiBwYXlsb2FkOwogICAgfSwKICAgIC8qIC0tLS0tLS0tLS0g5YiX6KGo5Yqg6L29IC0tLS0tLS0tLS0gKi9mZXRjaExpc3Q6IGZ1bmN0aW9uIGZldGNoTGlzdCgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIHZhciBwYXJhbXMgPSB7CiAgICAgICAgcGFnZU51bTogdGhpcy5wYWdlTnVtLAogICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplCiAgICAgIH07CiAgICAgIGlmICh0aGlzLnNlYXJjaEZvcm0ucndtYyAmJiB0aGlzLnNlYXJjaEZvcm0ucndtYy50cmltKCkpIHBhcmFtcy5yd21jID0gdGhpcy5zZWFyY2hGb3JtLnJ3bWMudHJpbSgpOwogICAgICBpZiAodGhpcy5zZWFyY2hGb3JtLm5kICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZWFyY2hGb3JtLm5kICE9PSBudWxsICYmIHRoaXMuc2VhcmNoRm9ybS5uZCAhPT0gJycpIHsKICAgICAgICBwYXJhbXMubmQgPSB0aGlzLnNlYXJjaEZvcm0ubmQ7CiAgICAgIH0KICAgICAgaWYgKHRoaXMuc2VhcmNoRm9ybS56dCAmJiB0aGlzLnNlYXJjaEZvcm0uenQudHJpbSgpKSBwYXJhbXMuenQgPSB0aGlzLnNlYXJjaEZvcm0uenQudHJpbSgpOwogICAgICAoMCwgX3RlYWNoaW5nVGFzay5saXN0VGVhY2hpbmdUYXNrKShwYXJhbXMpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIHZhciBkYXRhID0gcmVzICYmIHJlcy5kYXRhIHx8IHt9OwogICAgICAgIF90aGlzMy50YWJsZURhdGEgPSBkYXRhLnJlY29yZHMgfHwgW107CiAgICAgICAgX3RoaXMzLnRvdGFsID0gZGF0YS50b3RhbCB8fCAwOwogICAgICAgIF90aGlzMy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczMudGFibGVEYXRhID0gW107CiAgICAgICAgX3RoaXMzLnRvdGFsID0gMDsKICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVRdWVyeTogZnVuY3Rpb24gaGFuZGxlUXVlcnkoKSB7CiAgICAgIHRoaXMucGFnZU51bSA9IDE7CiAgICAgIHRoaXMuZmV0Y2hMaXN0KCk7CiAgICB9LAogICAgaGFuZGxlUGFnZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlUGFnZUNoYW5nZShwYWdlKSB7CiAgICAgIHRoaXMucGFnZU51bSA9IHBhZ2U7CiAgICAgIHRoaXMuZmV0Y2hMaXN0KCk7CiAgICB9LAogICAgaGFuZGxlU2l6ZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2l6ZUNoYW5nZShzaXplKSB7CiAgICAgIHRoaXMucGFnZVNpemUgPSBzaXplOwogICAgICB0aGlzLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmZldGNoTGlzdCgpOwogICAgfSwKICAgIC8qIC0tLS0tLS0tLS0g5paw5aKeIC8g5L+u5pS5IC0tLS0tLS0tLS0gKi9jcmVhdGVFbXB0eUZvcm06IGZ1bmN0aW9uIGNyZWF0ZUVtcHR5Rm9ybSgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBiaDogJycsCiAgICAgICAgcndtYzogJycsCiAgICAgICAgbmQ6IHVuZGVmaW5lZCwKICAgICAgICB6dDogJ+acquWPkeW4gycsCiAgICAgICAgZmJzajogJycsCiAgICAgICAganNzajogJycsCiAgICAgICAgamN4cXNjc2o6ICcnCiAgICAgIH07CiAgICB9LAogICAgaGFuZGxlQWRkOiBmdW5jdGlvbiBoYW5kbGVBZGQoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB0aGlzLmZvcm0gPSB0aGlzLmNyZWF0ZUVtcHR5Rm9ybSgpOwogICAgICBpZiAoIXRoaXMuZm9ybS5uZCAmJiB0aGlzLnNlYXJjaEZvcm0ubmQpIHRoaXMuZm9ybS5uZCA9IHRoaXMuc2VhcmNoRm9ybS5uZDsKICAgICAgdGhpcy5pc0VkaXQgPSBmYWxzZTsKICAgICAgdGhpcy5kaWFsb2dUaXRsZSA9ICfmlrDlu7rmlZnlrabku7vliqEnOwogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM0LiRyZWZzLmZvcm1SZWYgJiYgX3RoaXM0LiRyZWZzLmZvcm1SZWYuY2xlYXJWYWxpZGF0ZSgpOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVFZGl0OiBmdW5jdGlvbiBoYW5kbGVFZGl0KHJvdykgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy5mb3JtID0gewogICAgICAgIGJoOiByb3cuYmggfHwgJycsCiAgICAgICAgcndtYzogcm93LnJ3bWMgfHwgJycsCiAgICAgICAgbmQ6IHJvdy5uZCwKICAgICAgICB6dDogcm93Lnp0IHx8ICfmnKrlj5HluIMnLAogICAgICAgIGZic2o6IHJvdy5mYnNqIHx8ICcnLAogICAgICAgIGpzc2o6IHJvdy5qc3NqIHx8ICcnLAogICAgICAgIGpjeHFzY3NqOiByb3cuamN4cXNjc2ogfHwgJycKICAgICAgfTsKICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlOwogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gJ+S/ruaUueaVmeWtpuS7u+WKoSc7CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczUuJHJlZnMuZm9ybVJlZiAmJiBfdGhpczUuJHJlZnMuZm9ybVJlZi5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZVN1Ym1pdDogZnVuY3Rpb24gaGFuZGxlU3VibWl0KCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5mb3JtUmVmLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKCfor7flrozlloTlv4XloavpobnlkI7lho3mj5DkuqQnKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIHBheWxvYWQgPSBfdGhpczYuY2xlYW5QYXlsb2FkKF90aGlzNi5idWlsZFBheWxvYWQoKSk7CiAgICAgICAgX3RoaXM2LnNhdmluZyA9IHRydWU7CiAgICAgICAgdmFyIHJlcSA9IF90aGlzNi5pc0VkaXQgPyAoMCwgX3RlYWNoaW5nVGFzay51cGRhdGVUZWFjaGluZ1Rhc2spKHBheWxvYWQpIDogKDAsIF90ZWFjaGluZ1Rhc2suYWRkVGVhY2hpbmdUYXNrKShwYXlsb2FkKTsKICAgICAgICByZXEudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2VzcyhfdGhpczYuaXNFZGl0ID8gJ+S/ruaUueaIkOWKnycgOiAn5paw5bu65oiQ5YqfJyk7CiAgICAgICAgICBfdGhpczYuZGlhbG9nVmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgX3RoaXM2LmZldGNoTGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KS5maW5hbGx5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzNi5zYXZpbmcgPSBmYWxzZTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqIOaehOW7uuivt+axguS9k++8muW5tOW6pui9rOaVsOWtl+S7peWMuemFjeWQjuerryBJbnRlZ2Vy77yM5pe26Ze05a2X5q615pyJ5YC85omN5LygICovYnVpbGRQYXlsb2FkOiBmdW5jdGlvbiBidWlsZFBheWxvYWQoKSB7CiAgICAgIHZhciBmID0gdGhpcy5mb3JtOwogICAgICB2YXIgcGF5bG9hZCA9IHt9OwogICAgICBpZiAodGhpcy5pc0VkaXQgJiYgZi5iaCAmJiBTdHJpbmcoZi5iaCkudHJpbSgpKSBwYXlsb2FkLmJoID0gU3RyaW5nKGYuYmgpLnRyaW0oKTsKICAgICAgaWYgKGYucndtYyAmJiBTdHJpbmcoZi5yd21jKS50cmltKCkpIHBheWxvYWQucndtYyA9IFN0cmluZyhmLnJ3bWMpLnRyaW0oKTsKICAgICAgaWYgKGYubmQgIT09IHVuZGVmaW5lZCAmJiBmLm5kICE9PSBudWxsICYmIGYubmQgIT09ICcnKSBwYXlsb2FkLm5kID0gTnVtYmVyKGYubmQpOwogICAgICBpZiAoZi56dCAmJiBTdHJpbmcoZi56dCkudHJpbSgpKSBwYXlsb2FkLnp0ID0gU3RyaW5nKGYuenQpLnRyaW0oKTsKICAgICAgaWYgKGYuZmJzaikgcGF5bG9hZC5mYnNqID0gZi5mYnNqOwogICAgICBpZiAoZi5qc3NqKSBwYXlsb2FkLmpzc2ogPSBmLmpzc2o7CiAgICAgIGlmIChmLmpjeHFzY3NqKSBwYXlsb2FkLmpjeHFzY3NqID0gZi5qY3hxc2NzajsKICAgICAgcmV0dXJuIHBheWxvYWQ7CiAgICB9LAogICAgLyogLS0tLS0tLS0tLSDor6bmg4UgLS0tLS0tLS0tLSAqL2hhbmRsZURldGFpbDogZnVuY3Rpb24gaGFuZGxlRGV0YWlsKHJvdykgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgdGhpcy5kZXRhaWxWaXNpYmxlID0gdHJ1ZTsKICAgICAgdGhpcy5kZXRhaWxMb2FkaW5nID0gdHJ1ZTsKICAgICAgdGhpcy5kZXRhaWxEYXRhID0ge307CiAgICAgICgwLCBfdGVhY2hpbmdUYXNrLmdldFRlYWNoaW5nVGFzaykocm93LmJoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczcuZGV0YWlsRGF0YSA9IHJlcyAmJiByZXMuZGF0YSB8fCB7fTsKICAgICAgICBfdGhpczcuZGV0YWlsTG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM3LmRldGFpbExvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLyogLS0tLS0tLS0tLSDliKDpmaQgLS0tLS0tLS0tLSAqL2hhbmRsZURlbGV0ZTogZnVuY3Rpb24gaGFuZGxlRGVsZXRlKHJvdykgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdGhpcy4kY29uZmlybSgiXHU3ODZFXHU1QjlBXHU4OTgxXHU1MjIwXHU5NjY0XHUzMDBDIi5jb25jYXQocm93LnJ3bWMgfHwgcm93LmJoIHx8ICfor6XorrDlvZUnLCAiXHUzMDBEXHU1NDE3XHVGRjFGXHU1MjIwXHU5NjY0XHU1QzA2XHU3RUE3XHU4MDU0XHU1MjIwXHU5NjY0XHU1MTczXHU4MDU0XHU3Njg0XHU2NTU5XHU3ODE0XHU1QkE0XHU0RUZCXHU1MkExXHU0RTY2XHUzMDAyIiksICfns7vnu5/mj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gKDAsIF90ZWFjaGluZ1Rhc2suZGVsZXRlVGVhY2hpbmdUYXNrKShyb3cuYmgpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJyk7CiAgICAgICAgX3RoaXM4LmZldGNoTGlzdCgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgLyogLS0tLS0tLS0tLSDlj5HluIMgLS0tLS0tLS0tLSAqL2hhbmRsZVB1Ymxpc2g6IGZ1bmN0aW9uIGhhbmRsZVB1Ymxpc2gocm93KSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCJcdTc4NkVcdTVCOUFcdTg5ODFcdTUzRDFcdTVFMDNcdTY1NTlcdTVCNjZcdTRFRkJcdTUyQTFcdTMwMEMiLmNvbmNhdChyb3cucndtYyB8fCByb3cuYmggfHwgJ+ivpeiusOW9lScsICJcdTMwMERcdTU0MTdcdUZGMUZcdTUzRDFcdTVFMDNcdTUyNERcdThCRjdcdTUxNDhcdTU4NkJcdTUxOTlcdTUxNzNcdTgwNTRcdTc2ODRcdTY1NTlcdTc4MTRcdTVCQTRcdTRFRkJcdTUyQTFcdTRFNjZcdTMwMDIiKSwgJ+ezu+e7n+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAoMCwgX3RlYWNoaW5nVGFzay5wdWJsaXNoVGVhY2hpbmdUYXNrKShyb3cuYmgpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczkuJG1lc3NhZ2Uuc3VjY2Vzcygn5Y+R5biD5oiQ5YqfJyk7CiAgICAgICAgX3RoaXM5LmZldGNoTGlzdCgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9CiAgfQp9Ow=="},{"version":3,"names":["_teachingTask","require","_semester","_default","exports","default","name","data","searchForm","rwmc","nd","undefined","zt","yearOptions","statusOptions","label","value","loading","tableData","pageNum","pageSize","total","dialogVisible","dialogTitle","isEdit","saving","form","createEmptyForm","rules","required","message","trigger","detailVisible","detailLoading","detailData","created","_this","loadYearOptions","then","fetchList","methods","_this2","listAllSemester","response","list","map","forEach","item","arr","Object","keys","sort","a","b","String","localeCompare","current","find","dqxq","defaultNd","catch","fmtDateTime","row","column","cellValue","replace","slice","fmtVal","val","cleanPayload","obj","payload","key","_this3","params","trim","listTeachingTask","res","records","handleQuery","handlePageChange","page","handleSizeChange","size","bh","fbsj","jssj","jcxqscsj","handleAdd","_this4","$nextTick","$refs","formRef","clearValidate","handleEdit","_this5","handleSubmit","_this6","validate","valid","$message","warning","buildPayload","req","updateTeachingTask","addTeachingTask","success","finally","f","Number","handleDetail","_this7","getTeachingTask","handleDelete","_this8","$confirm","concat","confirmButtonText","cancelButtonText","type","deleteTeachingTask","handlePublish","_this9","publishTeachingTask"],"sources":["src/views/teachOffice/taskPlan/index.vue"],"sourcesContent":["<template>\r\n <div class=\"app-container task-plan-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.rwmc\"\r\n placeholder=\"请输入任务名称\"\r\n clearable\r\n style=\"width: 180px\"\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=\"searchForm.nd\" placeholder=\"请选择年度\" clearable style=\"width: 140px\">\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=\"状态\">\r\n <el-select v-model=\"searchForm.zt\" placeholder=\"请选择状态\" clearable style=\"width: 140px\">\r\n <el-option\r\n v-for=\"opt in statusOptions\"\r\n :key=\"opt.value\"\r\n :label=\"opt.label\"\r\n :value=\"opt.value\"\r\n />\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-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=\"handleAdd\">新建教学任务</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 v-loading=\"loading\" :data=\"tableData\" border stripe class=\"task-table\">\r\n <template slot=\"empty\">\r\n <span>无数据!</span>\r\n </template>\r\n <el-table-column type=\"index\" label=\"序号\" width=\"70\" align=\"center\" />\r\n <el-table-column prop=\"rwmc\" label=\"任务名称\" width=\"250\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"nd\" label=\"年度\" width=\"150\" align=\"center\" />\r\n <el-table-column label=\"状态\" width=\"100\" align=\"center\">\r\n <template slot-scope=\"{ row }\">\r\n <el-tag :type=\"row.zt === '发布' ? 'success' : 'info'\" size=\"small\">\r\n {{ row.zt || '-' }}\r\n </el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"fbsj\" label=\"发布时间\" width=\"180\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column prop=\"jssj\" label=\"结束时间\" width=\"180\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column prop=\"cjsj\" label=\"创建时间\" width=\"180\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column prop=\"jcxqscsj\" label=\"教材需求生成时间\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column label=\"操作\" width=\"300\" align=\"center\" fixed=\"right\">\r\n <template slot-scope=\"{ row }\">\r\n <el-button type=\"text\" size=\"small\" @click=\"handleDetail(row)\">详情</el-button>\r\n <el-button type=\"text\" size=\"small\" @click=\"handleEdit(row)\">编辑</el-button>\r\n <el-button\r\n type=\"text\"\r\n size=\"small\"\r\n :disabled=\"row.zt === '发布'\"\r\n @click=\"handlePublish(row)\"\r\n >发布</el-button>\r\n <el-button type=\"text\" size=\"small\" class=\"text-danger\" @click=\"handleDelete(row)\">删除</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-pagination\r\n :current-page=\"pageNum\"\r\n :page-size=\"pageSize\"\r\n :total=\"total\"\r\n :page-sizes=\"[10, 20, 50, 100]\"\r\n layout=\"total, sizes, prev, pager, next, jumper\"\r\n class=\"pagination\"\r\n @current-change=\"handlePageChange\"\r\n @size-change=\"handleSizeChange\"\r\n />\r\n </el-card>\r\n\r\n <!-- ==================== 4. 新增/修改对话框 ==================== -->\r\n <el-dialog\r\n :visible=\"dialogVisible\"\r\n :title=\"dialogTitle\"\r\n width=\"560px\"\r\n :close-on-click-modal=\"false\"\r\n @update:visible=\"val => dialogVisible = val\"\r\n >\r\n <el-form ref=\"formRef\" :model=\"form\" :rules=\"rules\" label-width=\"140px\" class=\"add-form\">\r\n <el-form-item v-if=\"isEdit\" label=\"编号\" prop=\"bh\">\r\n <el-input v-model=\"form.bh\" disabled placeholder=\"编号不可修改\" />\r\n </el-form-item>\r\n <el-form-item v-else label=\"编号\">\r\n <el-input disabled placeholder=\"新增后由系统自动生成\" />\r\n </el-form-item>\r\n <el-form-item label=\"任务名称\" prop=\"rwmc\">\r\n <el-input v-model=\"form.rwmc\" placeholder=\"请输入任务名称\" clearable />\r\n </el-form-item>\r\n <el-form-item label=\"年度\" prop=\"nd\">\r\n <el-select v-model=\"form.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=\"zt\">\r\n <el-select v-model=\"form.zt\" placeholder=\"请选择状态\" style=\"width: 100%\">\r\n <el-option\r\n v-for=\"opt in statusOptions\"\r\n :key=\"opt.value\"\r\n :label=\"opt.label\"\r\n :value=\"opt.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"发布时间\">\r\n <el-date-picker\r\n v-model=\"form.fbsj\"\r\n type=\"datetime\"\r\n value-format=\"yyyy-MM-ddTHH:mm:ss\"\r\n placeholder=\"请选择发布时间\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"结束时间\">\r\n <el-date-picker\r\n v-model=\"form.jssj\"\r\n type=\"datetime\"\r\n value-format=\"yyyy-MM-ddTHH:mm:ss\"\r\n placeholder=\"请选择结束时间\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"教材需求生成时间\">\r\n <el-date-picker\r\n v-model=\"form.jcxqscsj\"\r\n type=\"datetime\"\r\n value-format=\"yyyy-MM-ddTHH:mm:ss\"\r\n placeholder=\"请选择教材需求生成时间\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\">\r\n <el-button @click=\"dialogVisible = false\">取消</el-button>\r\n <el-button type=\"primary\" :loading=\"saving\" @click=\"handleSubmit\">确定</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- ==================== 5. 详情对话框 ==================== -->\r\n <el-dialog\r\n :visible=\"detailVisible\"\r\n title=\"教学任务详情\"\r\n width=\"620px\"\r\n :close-on-click-modal=\"false\"\r\n @update:visible=\"val => detailVisible = val\"\r\n >\r\n <el-descriptions v-if=\"detailData.bh\" :column=\"2\" border>\r\n <el-descriptions-item label=\"编号\">{{ detailData.bh || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"任务名称\">{{ detailData.rwmc || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"年度\">{{ fmtVal(detailData.nd) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"状态\">{{ detailData.zt || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"发布时间\">{{ fmtVal(detailData.fbsj) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"结束时间\">{{ fmtVal(detailData.jssj) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"创建时间\">{{ fmtVal(detailData.cjsj) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"教材需求生成时间\">{{ fmtVal(detailData.jcxqscsj) }}</el-descriptions-item>\r\n </el-descriptions>\r\n <div v-else v-loading=\"detailLoading\" class=\"detail-empty\">加载中...</div>\r\n <div slot=\"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\n/**\r\n * 教学任务计划管理(完整管理页)\r\n * 对应菜单:teachOffice/taskPlan\r\n * 提供 teachingTask 全套真实接口操作:分页查询 list、详情 get?bh=、新增 add、编辑 update、\r\n * 发布 batchPublish?bh=(需先填写教研室任务书)、删除 delete?bh=(级联删除教研室任务书)\r\n * 只读查询视图在 src/views/teachBusiness/teachingTask/index.vue(教学任务列表)提供,避免重复操作同一实体\r\n */\r\nimport {\r\n listTeachingTask,\r\n getTeachingTask,\r\n addTeachingTask,\r\n updateTeachingTask,\r\n deleteTeachingTask,\r\n publishTeachingTask\r\n} from '@/api/teachBusiness/teachingTask'\r\nimport { listAllSemester } from '@/api/teachBusiness/semester'\r\n\r\nexport default {\r\n name: 'TaskPlan',\r\n data() {\r\n return {\r\n // ==================== 1. 查询条件 ====================\r\n searchForm: {\r\n rwmc: '',\r\n nd: undefined,\r\n zt: ''\r\n },\r\n yearOptions: [],\r\n statusOptions: [\r\n { label: '未发布', value: '未发布' },\r\n { label: '发布', value: '发布' }\r\n ],\r\n\r\n // ==================== 2. 表格数据 ====================\r\n loading: false,\r\n tableData: [],\r\n pageNum: 1,\r\n pageSize: 10,\r\n total: 0,\r\n\r\n // ==================== 3. 新增/修改表单 ====================\r\n dialogVisible: false,\r\n dialogTitle: '新建教学任务',\r\n isEdit: false,\r\n saving: false,\r\n form: this.createEmptyForm(),\r\n rules: {\r\n rwmc: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],\r\n nd: [{ required: true, message: '请选择年度', trigger: 'change' }],\r\n zt: [{ required: true, message: '请选择状态', trigger: 'change' }]\r\n },\r\n\r\n // ==================== 4. 详情 ====================\r\n detailVisible: false,\r\n detailLoading: false,\r\n detailData: {}\r\n }\r\n },\r\n created() {\r\n this.loadYearOptions().then(() => this.fetchList())\r\n },\r\n methods: {\r\n /* ---------- 年度下拉(数据来自 /semester/all,禁止硬编码) ---------- */\r\n loadYearOptions() {\r\n return listAllSemester().then(response => {\r\n const list = response.data || []\r\n const map = {}\r\n list.forEach(item => {\r\n if (item.nd !== null && item.nd !== undefined && item.nd !== '') map[item.nd] = item\r\n })\r\n const arr = Object.keys(map).sort((a, b) => String(b).localeCompare(String(a)))\r\n this.yearOptions = arr\r\n // 默认年度:优先当前学期(dqxq=true),否则取最新年度\r\n const current = list.find(item => item.dqxq === true)\r\n const defaultNd = (current && current.nd) || arr[0]\r\n if (!this.searchForm.nd) this.searchForm.nd = defaultNd\r\n return arr\r\n }).catch(() => {\r\n this.yearOptions = []\r\n return []\r\n })\r\n },\r\n\r\n /* ---------- 通用格式化 ---------- */\r\n fmtDateTime(row, column, cellValue) {\r\n if (cellValue === null || cellValue === undefined || cellValue === '') return '-'\r\n return String(cellValue).replace('T', ' ').slice(0, 16)\r\n },\r\n fmtVal(val) {\r\n if (val === null || val === undefined || val === '') return '-'\r\n return String(val).replace('T', ' ').slice(0, 16)\r\n },\r\n /** 移除空值(''/null/undefined),保留 0 等有效值 */\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 fetchList() {\r\n this.loading = true\r\n const params = { pageNum: this.pageNum, pageSize: this.pageSize }\r\n if (this.searchForm.rwmc && this.searchForm.rwmc.trim()) params.rwmc = this.searchForm.rwmc.trim()\r\n if (this.searchForm.nd !== undefined && this.searchForm.nd !== null && this.searchForm.nd !== '') {\r\n params.nd = this.searchForm.nd\r\n }\r\n if (this.searchForm.zt && this.searchForm.zt.trim()) params.zt = this.searchForm.zt.trim()\r\n listTeachingTask(params).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.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 handleQuery() {\r\n this.pageNum = 1\r\n this.fetchList()\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 /* ---------- 新增 / 修改 ---------- */\r\n createEmptyForm() {\r\n return {\r\n bh: '',\r\n rwmc: '',\r\n nd: undefined,\r\n zt: '未发布',\r\n fbsj: '',\r\n jssj: '',\r\n jcxqscsj: ''\r\n }\r\n },\r\n\r\n handleAdd() {\r\n this.form = this.createEmptyForm()\r\n if (!this.form.nd && this.searchForm.nd) this.form.nd = this.searchForm.nd\r\n this.isEdit = false\r\n this.dialogTitle = '新建教学任务'\r\n this.dialogVisible = true\r\n this.$nextTick(() => {\r\n this.$refs.formRef && this.$refs.formRef.clearValidate()\r\n })\r\n },\r\n\r\n handleEdit(row) {\r\n this.form = {\r\n bh: row.bh || '',\r\n rwmc: row.rwmc || '',\r\n nd: row.nd,\r\n zt: row.zt || '未发布',\r\n fbsj: row.fbsj || '',\r\n jssj: row.jssj || '',\r\n jcxqscsj: row.jcxqscsj || ''\r\n }\r\n this.isEdit = true\r\n this.dialogTitle = '修改教学任务'\r\n this.dialogVisible = true\r\n this.$nextTick(() => {\r\n this.$refs.formRef && this.$refs.formRef.clearValidate()\r\n })\r\n },\r\n\r\n handleSubmit() {\r\n this.$refs.formRef.validate(valid => {\r\n if (!valid) {\r\n this.$message.warning('请完善必填项后再提交')\r\n return\r\n }\r\n const payload = this.cleanPayload(this.buildPayload())\r\n this.saving = true\r\n const req = this.isEdit ? updateTeachingTask(payload) : addTeachingTask(payload)\r\n req.then(() => {\r\n this.$message.success(this.isEdit ? '修改成功' : '新建成功')\r\n this.dialogVisible = false\r\n this.fetchList()\r\n }).catch(() => {}).finally(() => {\r\n this.saving = false\r\n })\r\n })\r\n },\r\n\r\n /** 构建请求体:年度转数字以匹配后端 Integer,时间字段有值才传 */\r\n buildPayload() {\r\n const f = this.form\r\n const payload = {}\r\n if (this.isEdit && f.bh && String(f.bh).trim()) payload.bh = String(f.bh).trim()\r\n if (f.rwmc && String(f.rwmc).trim()) payload.rwmc = String(f.rwmc).trim()\r\n if (f.nd !== undefined && f.nd !== null && f.nd !== '') payload.nd = Number(f.nd)\r\n if (f.zt && String(f.zt).trim()) payload.zt = String(f.zt).trim()\r\n if (f.fbsj) payload.fbsj = f.fbsj\r\n if (f.jssj) payload.jssj = f.jssj\r\n if (f.jcxqscsj) payload.jcxqscsj = f.jcxqscsj\r\n return payload\r\n },\r\n\r\n /* ---------- 详情 ---------- */\r\n handleDetail(row) {\r\n this.detailVisible = true\r\n this.detailLoading = true\r\n this.detailData = {}\r\n getTeachingTask(row.bh).then(res => {\r\n this.detailData = (res && res.data) || {}\r\n this.detailLoading = false\r\n }).catch(() => {\r\n this.detailLoading = false\r\n })\r\n },\r\n\r\n /* ---------- 删除 ---------- */\r\n handleDelete(row) {\r\n this.$confirm(`确定要删除「${row.rwmc || row.bh || '该记录'}」吗?删除将级联删除关联的教研室任务书。`, '系统提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => deleteTeachingTask(row.bh)).then(() => {\r\n this.$message.success('删除成功')\r\n this.fetchList()\r\n }).catch(() => {})\r\n },\r\n\r\n /* ---------- 发布 ---------- */\r\n handlePublish(row) {\r\n this.$confirm(`确定要发布教学任务「${row.rwmc || row.bh || '该记录'}」吗?发布前请先填写关联的教研室任务书。`, '系统提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => publishTeachingTask(row.bh)).then(() => {\r\n this.$message.success('发布成功')\r\n this.fetchList()\r\n }).catch(() => {})\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.task-plan-page {\r\n .page-title {\r\n text-align: center;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: #303133;\r\n margin-bottom: 20px;\r\n }\r\n\r\n // ========== 1. 查询条件区域 ==========\r\n .search-card {\r\n margin-bottom: 16px;\r\n\r\n .search-form {\r\n .el-form-item {\r\n margin-bottom: 0;\r\n margin-right: 24px;\r\n }\r\n }\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: 10px;\r\n }\r\n }\r\n\r\n // ========== 3. 数据表格区域 ==========\r\n .table-card {\r\n .task-table {\r\n width: 100%;\r\n }\r\n\r\n .pagination {\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-top: 12px;\r\n }\r\n\r\n .text-danger {\r\n color: #f56c6c;\r\n }\r\n }\r\n\r\n // ========== 4. 详情 ==========\r\n .detail-empty {\r\n min-height: 120px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #909399;\r\n }\r\n}\r\n</style>\r\n"],"mappings":"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","ignoreList":[]}]}