forked from liweijie/education
1 line
30 KiB
JSON
1 line
30 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\\teachNotice\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachNotice\\index.vue","mtime":1787567993845},{"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:InVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5wYWQtc3RhcnQuanMiKTsKdmFyIF90ZWFjaE5vdGljZSA9IHJlcXVpcmUoIkAvYXBpL3RlYWNoTm90aWNlIik7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCnZhciBfZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdCA9IHsKICBuYW1lOiAiVGVhY2hOb3RpY2UiLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBsb2FkaW5nOiB0cnVlLAogICAgICB0YWJsZUhlaWdodDogd2luZG93LmlubmVySGVpZ2h0IC0gMzIwLAogICAgICB0b3RhbDogMCwKICAgICAgbm90aWNlTGlzdDogW10sCiAgICAgIGNhdGVnb3J5T3B0aW9uczogWyfmlZnlrablhazlkYonLCAn6ICD6K+V6YCa55+lJywgJ+iwg+ivvumAmuefpSddLAogICAgICBxdWVyeVBhcmFtczogewogICAgICAgIHBhZ2VOdW06IDEsCiAgICAgICAgcGFnZVNpemU6IDEwLAogICAgICAgIHRpdGxlOiB1bmRlZmluZWQsCiAgICAgICAgY2F0ZWdvcnk6IHVuZGVmaW5lZCwKICAgICAgICBwdWJsaXNoRGF0ZUZyb206IHVuZGVmaW5lZCwKICAgICAgICBwdWJsaXNoRGF0ZVRvOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAgLy8g5paw5aKeL+S/ruaUuSDlr7nor53moYYKICAgICAgZGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ1RpdGxlOiAnJywKICAgICAgZm9ybToge30sCiAgICAgIHJ1bGVzOiB7CiAgICAgICAgdGl0bGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLlhazlkYrmoIfpopjkuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgY29udGVudDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuWFrOWRiuato+aWh+S4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBjYXRlZ29yeTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuWFrOWRiuexu+WIq+S4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIC8vIOivpuaDhSDlr7nor53moYYKICAgICAgdmlld1Zpc2libGU6IGZhbHNlLAogICAgICB2aWV3Rm9ybToge30KICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5nZXRMaXN0KCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICAvKiog5p+l6K+i5YiX6KGoICovZ2V0TGlzdDogZnVuY3Rpb24gZ2V0TGlzdCgpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgKDAsIF90ZWFjaE5vdGljZS5saXN0VGVhY2hOb3RpY2UpKHRoaXMucXVlcnlQYXJhbXMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgdmFyIGRhdGEgPSByZXNwb25zZS5kYXRhIHx8IHt9OwogICAgICAgIF90aGlzLm5vdGljZUxpc3QgPSBkYXRhLnJlY29yZHMgfHwgW107CiAgICAgICAgX3RoaXMudG90YWwgPSBkYXRhLnRvdGFsIHx8IDA7CiAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMubm90aWNlTGlzdCA9IFtdOwogICAgICAgIF90aGlzLnRvdGFsID0gMDsKICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8qKiDml7bpl7TmoLzlvI/ljJbvvJp5eXl5LU1NLWRkIEhIOm1tOnNzICovZm9ybWF0VGltZTogZnVuY3Rpb24gZm9ybWF0VGltZSh0aW1lKSB7CiAgICAgIGlmICghdGltZSkgcmV0dXJuICcnOwogICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpOwogICAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gdGltZTsKICAgICAgdmFyIHBhZCA9IGZ1bmN0aW9uIHBhZChuKSB7CiAgICAgICAgcmV0dXJuIFN0cmluZyhuKS5wYWRTdGFydCgyLCAnMCcpOwogICAgICB9OwogICAgICByZXR1cm4gIiIuY29uY2F0KGRhdGUuZ2V0RnVsbFllYXIoKSwgIi0iKS5jb25jYXQocGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpLCAiLSIpLmNvbmNhdChwYWQoZGF0ZS5nZXREYXRlKCkpLCAiICIpLmNvbmNhdChwYWQoZGF0ZS5nZXRIb3VycygpKSwgIjoiKS5jb25jYXQocGFkKGRhdGUuZ2V0TWludXRlcygpKSwgIjoiKS5jb25jYXQocGFkKGRhdGUuZ2V0U2Vjb25kcygpKSk7CiAgICB9LAogICAgLyoqIOeKtuaAgeagh+etvuminOiJsiAqL3N0YXR1c1RhZ1R5cGU6IGZ1bmN0aW9uIHN0YXR1c1RhZ1R5cGUoc3RhdHVzKSB7CiAgICAgIGlmIChzdGF0dXMgPT09ICflt7Llj5HluIMnKSByZXR1cm4gJ3N1Y2Nlc3MnOwogICAgICBpZiAoc3RhdHVzID09PSAn5bey5LiL5p62JykgcmV0dXJuICdpbmZvJzsKICAgICAgcmV0dXJuICd3YXJuaW5nJzsKICAgIH0sCiAgICAvKiog5p+l6K+i5oyJ6ZKuICovaGFuZGxlUXVlcnk6IGZ1bmN0aW9uIGhhbmRsZVF1ZXJ5KCkgewogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvKiog6YeN572u5oyJ6ZKuICovcmVzZXRRdWVyeTogZnVuY3Rpb24gcmVzZXRRdWVyeSgpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHsKICAgICAgICBwYWdlTnVtOiAxLAogICAgICAgIHBhZ2VTaXplOiAxMCwKICAgICAgICB0aXRsZTogdW5kZWZpbmVkLAogICAgICAgIGNhdGVnb3J5OiB1bmRlZmluZWQsCiAgICAgICAgcHVibGlzaERhdGVGcm9tOiB1bmRlZmluZWQsCiAgICAgICAgcHVibGlzaERhdGVUbzogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIHRoaXMuaGFuZGxlUXVlcnkoKTsKICAgIH0sCiAgICAvKiog5paw5aKeICovaGFuZGxlQWRkOiBmdW5jdGlvbiBoYW5kbGVBZGQoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gJ+aWsOWinuWFrOWRiic7CiAgICAgIHRoaXMuZm9ybSA9IHsKICAgICAgICB0aXRsZTogdW5kZWZpbmVkLAogICAgICAgIGNvbnRlbnQ6IHVuZGVmaW5lZCwKICAgICAgICBjYXRlZ29yeTogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczIuJHJlZnMubm90aWNlRm9ybSAmJiBfdGhpczIuJHJlZnMubm90aWNlRm9ybS5jbGVhclZhbGlkYXRlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8qKiDkv67mlLkgKi9oYW5kbGVVcGRhdGU6IGZ1bmN0aW9uIGhhbmRsZVVwZGF0ZShyb3cpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgICgwLCBfdGVhY2hOb3RpY2UuZ2V0VGVhY2hOb3RpY2UpKHJvdy5pZCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICB2YXIgZGF0YSA9IHJlc3BvbnNlLmRhdGEgfHwge307CiAgICAgICAgX3RoaXMzLmZvcm0gPSB7CiAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLAogICAgICAgICAgY29udGVudDogZGF0YS5jb250ZW50LAogICAgICAgICAgY2F0ZWdvcnk6IGRhdGEuY2F0ZWdvcnkKICAgICAgICB9OwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSAn5L+u5pS55YWs5ZGKJzsKICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICAvKiog5o+Q5Lqk5paw5aKeL+S/ruaUuSAqL3N1Ym1pdEZvcm06IGZ1bmN0aW9uIHN1Ym1pdEZvcm0oKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLm5vdGljZUZvcm0udmFsaWRhdGUoZnVuY3Rpb24gKHZhbGlkKSB7CiAgICAgICAgaWYgKCF2YWxpZCkgcmV0dXJuOwogICAgICAgIHZhciBpc0FkZCA9ICFfdGhpczQuZm9ybS5pZDsKICAgICAgICBpZiAoaXNBZGQpIHsKICAgICAgICAgICgwLCBfdGVhY2hOb3RpY2UuYWRkVGVhY2hOb3RpY2UpKF90aGlzNC5mb3JtKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLnN1Y2Nlc3MoIuaWsOWinuaIkOWKnyIpOwogICAgICAgICAgICBfdGhpczQuZGlhbG9nVmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgICBfdGhpczQuZ2V0TGlzdCgpOwogICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAoMCwgX3RlYWNoTm90aWNlLnVwZGF0ZVRlYWNoTm90aWNlKShfdGhpczQuZm9ybSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCLkv67mlLnmiJDlip8iKTsKICAgICAgICAgICAgX3RoaXM0LmRpYWxvZ1Zpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgX3RoaXM0LmdldExpc3QoKTsKICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIC8qKiDkuIvmnrYgKi9oYW5kbGVPZmZsaW5lOiBmdW5jdGlvbiBoYW5kbGVPZmZsaW5lKHJvdykgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy4kY29uZmlybSgi56Gu6K6k5LiL5p626K+l5YWs5ZGK5ZCX77yfIiwgIuaPkOekuiIsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogIuWPlua2iCIsCiAgICAgICAgdHlwZTogIndhcm5pbmciCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICgwLCBfdGVhY2hOb3RpY2UudXBkYXRlVGVhY2hOb3RpY2UpKHsKICAgICAgICAgIGlkOiByb3cuaWQsCiAgICAgICAgICBzdGF0dXM6ICflt7LkuIvmnrYnCiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uuc3VjY2Vzcygi5LiL5p625oiQ5YqfIik7CiAgICAgICAgICBfdGhpczUuZ2V0TGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIC8qKiDliKDpmaTvvIjnuqfogZTliKDpmaTvvJrku4Xmi5/liLYv5bey5LiL5p625Y+v5Yig77yM5ZCO56uv5qCh6aqM77yJICovaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocm93KSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCLnoa7orqTliKDpmaTor6XlhazlkYrlkJfvvJ8iLCAi5o+Q56S6IiwgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAi56Gu5a6aIiwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICB0eXBlOiAid2FybmluZyIKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgKDAsIF90ZWFjaE5vdGljZS5kZWxUZWFjaE5vdGljZSkocm93LmlkKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKCLliKDpmaTmiJDlip8iKTsKICAgICAgICAgIF90aGlzNi5nZXRMaXN0KCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgLyoqIOivpuaDhSAqL2hhbmRsZVZpZXc6IGZ1bmN0aW9uIGhhbmRsZVZpZXcocm93KSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICAoMCwgX3RlYWNoTm90aWNlLmdldFRlYWNoTm90aWNlKShyb3cuaWQpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgX3RoaXM3LnZpZXdGb3JtID0gcmVzcG9uc2UuZGF0YSB8fCB7fTsKICAgICAgICBfdGhpczcudmlld1Zpc2libGUgPSB0cnVlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgLyoqIOWvueivneahhuWFs+mXreS6i+S7tu+8iFZ1ZTIg5YW85a6577yJICovaGFuZGxlRGlhbG9nVmlzaWJsZTogZnVuY3Rpb24gaGFuZGxlRGlhbG9nVmlzaWJsZSh2YWwpIHsKICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdmFsOwogICAgfSwKICAgIGhhbmRsZVZpZXdWaXNpYmxlOiBmdW5jdGlvbiBoYW5kbGVWaWV3VmlzaWJsZSh2YWwpIHsKICAgICAgdGhpcy52aWV3VmlzaWJsZSA9IHZhbDsKICAgIH0KICB9Cn07"},{"version":3,"names":["_teachNotice","require","name","data","loading","tableHeight","window","innerHeight","total","noticeList","categoryOptions","queryParams","pageNum","pageSize","title","undefined","category","publishDateFrom","publishDateTo","dialogVisible","dialogTitle","form","rules","required","message","trigger","content","viewVisible","viewForm","created","getList","methods","_this","listTeachNotice","then","response","records","catch","formatTime","time","date","Date","isNaN","getTime","pad","n","String","padStart","concat","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","statusTagType","status","handleQuery","resetQuery","handleAdd","_this2","$nextTick","$refs","noticeForm","clearValidate","handleUpdate","row","_this3","getTeachNotice","id","submitForm","_this4","validate","valid","isAdd","addTeachNotice","$message","success","updateTeachNotice","handleOffline","_this5","$confirm","confirmButtonText","cancelButtonText","type","handleDelete","_this6","delTeachNotice","handleView","_this7","handleDialogVisible","val","handleViewVisible"],"sources":["src/views/teachNotice/index.vue"],"sourcesContent":["<template>\r\n <div class=\"app-container teach-notice\">\r\n <!-- 查询条件区域 -->\r\n <el-form :model=\"queryParams\" ref=\"queryForm\" size=\"small\" :inline=\"true\" label-width=\"68px\">\r\n <el-form-item label=\"标题\" prop=\"title\">\r\n <el-input\r\n v-model=\"queryParams.title\"\r\n placeholder=\"请输入标题\"\r\n clearable\r\n @keyup.enter.native=\"handleQuery\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"公告类别\">\r\n <el-select\r\n v-model=\"queryParams.category\"\r\n placeholder=\"请选择\"\r\n clearable\r\n style=\"width: 160px\"\r\n >\r\n <el-option\r\n v-for=\"item in categoryOptions\"\r\n :key=\"item\"\r\n :label=\"item\"\r\n :value=\"item\"\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=\"queryParams.publishDateFrom\"\r\n type=\"date\"\r\n placeholder=\"从\"\r\n value-format=\"yyyy-MM-dd\"\r\n style=\"width: 140px\"\r\n />\r\n <span class=\"range-sep\">-</span>\r\n <el-date-picker\r\n v-model=\"queryParams.publishDateTo\"\r\n type=\"date\"\r\n placeholder=\"到\"\r\n value-format=\"yyyy-MM-dd\"\r\n style=\"width: 140px\"\r\n />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" icon=\"el-icon-search\" size=\"mini\" @click=\"handleQuery\">查询</el-button>\r\n <el-button icon=\"el-icon-refresh\" size=\"mini\" @click=\"resetQuery\">重置</el-button>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <!-- 数据列表区域 -->\r\n <div class=\"list-heading\">\r\n <div class=\"list-title\">公告列表</div>\r\n <el-button\r\n type=\"primary\"\r\n icon=\"el-icon-plus\"\r\n size=\"mini\"\r\n @click=\"handleAdd\"\r\n >新增</el-button>\r\n </div>\r\n <el-table v-loading=\"loading\" :data=\"noticeList\" border :height=\"tableHeight\">\r\n <el-table-column label=\"序号\" type=\"index\" align=\"center\" width=\"70\" />\r\n <el-table-column label=\"发布时间\" align=\"center\" width=\"165\">\r\n <template slot-scope=\"scope\">{{ formatTime(scope.row.publishTime) }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"标题\" align=\"left\" prop=\"title\" min-width=\"300\" :show-overflow-tooltip=\"true\" />\r\n <el-table-column label=\"公告状态\" align=\"center\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <el-tag :type=\"statusTagType(scope.row.status)\">{{ scope.row.status }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"公告类别\" align=\"center\" prop=\"category\" width=\"110\" />\r\n <el-table-column label=\"优先级\" align=\"center\" prop=\"priority\" width=\"80\" />\r\n <el-table-column label=\"阅读次数\" align=\"center\" prop=\"readCount\" width=\"90\" />\r\n <el-table-column label=\"接收/已读\" align=\"center\" width=\"110\">\r\n <template slot-scope=\"scope\">{{ scope.row.recipientCount }}/{{ scope.row.readerCount }}</template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"操作\"\r\n align=\"center\"\r\n width=\"300\"\r\n fixed=\"right\"\r\n class-name=\"small-padding fixed-width action-column\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n type=\"text\"\r\n size=\"mini\"\r\n icon=\"el-icon-view\"\r\n @click=\"handleView(scope.row)\"\r\n >详情</el-button>\r\n <el-button\r\n type=\"text\"\r\n size=\"mini\"\r\n icon=\"el-icon-edit\"\r\n @click=\"handleUpdate(scope.row)\"\r\n >修改</el-button>\r\n <el-button\r\n v-if=\"scope.row.status !== '已下架'\"\r\n type=\"text\"\r\n size=\"mini\"\r\n icon=\"el-icon-download\"\r\n @click=\"handleOffline(scope.row)\"\r\n >下架</el-button>\r\n <el-button\r\n type=\"text\"\r\n size=\"mini\"\r\n icon=\"el-icon-delete\"\r\n style=\"color: #f56c6c\"\r\n @click=\"handleDelete(scope.row)\"\r\n >删除</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <pagination\r\n v-show=\"total > 0\"\r\n :total=\"total\"\r\n :page.sync=\"queryParams.pageNum\"\r\n :limit.sync=\"queryParams.pageSize\"\r\n @pagination=\"getList\"\r\n />\r\n\r\n <!-- 新增/修改 对话框 -->\r\n <el-dialog\r\n :title=\"dialogTitle\"\r\n :visible=\"dialogVisible\"\r\n :close-on-click-modal=\"false\"\r\n width=\"600px\"\r\n @update:visible=\"handleDialogVisible\"\r\n >\r\n <el-form ref=\"noticeForm\" :model=\"form\" :rules=\"rules\" label-width=\"80px\">\r\n <el-form-item label=\"公告标题\" prop=\"title\">\r\n <el-input v-model=\"form.title\" placeholder=\"请输入公告标题\" />\r\n </el-form-item>\r\n <el-form-item label=\"公告类别\" prop=\"category\">\r\n <el-select v-model=\"form.category\" placeholder=\"请选择公告类别\" clearable>\r\n <el-option v-for=\"item in categoryOptions\" :key=\"item\" :label=\"item\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"公告正文\" prop=\"content\">\r\n <el-input type=\"textarea\" v-model=\"form.content\" rows=\"8\" placeholder=\"请输入公告正文\" />\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" size=\"mini\" @click=\"submitForm\">确 定</el-button>\r\n <el-button size=\"mini\" @click=\"handleDialogVisible(false)\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- 详情 对话框 -->\r\n <el-dialog\r\n title=\"公告详情\"\r\n :visible=\"viewVisible\"\r\n :close-on-click-modal=\"false\"\r\n width=\"600px\"\r\n @update:visible=\"handleViewVisible\"\r\n >\r\n <div class=\"detail-body\">\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">公告标题</span>\r\n <span class=\"detail-value\">{{ viewForm.title }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">公告类别</span>\r\n <span class=\"detail-value\">{{ viewForm.category }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">公告状态</span>\r\n <span class=\"detail-value\">{{ viewForm.status }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">优先级</span>\r\n <span class=\"detail-value\">{{ viewForm.priority }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">发布时间</span>\r\n <span class=\"detail-value\">{{ viewForm.publishTime }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">阅读次数</span>\r\n <span class=\"detail-value\">{{ viewForm.readCount }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">接收/已读</span>\r\n <span class=\"detail-value\">{{ viewForm.recipientCount }}/{{ viewForm.readerCount }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">发布范围</span>\r\n <span class=\"detail-value\">{{ viewForm.scopeName }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">公告正文</span>\r\n <span class=\"detail-value detail-content\">{{ viewForm.content }}</span>\r\n </div>\r\n <div class=\"detail-row\">\r\n <span class=\"detail-label\">备注</span>\r\n <span class=\"detail-value\">{{ viewForm.remark }}</span>\r\n </div>\r\n </div>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button size=\"mini\" @click=\"handleViewVisible(false)\">关 闭</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { listTeachNotice, getTeachNotice, addTeachNotice, updateTeachNotice, delTeachNotice } from \"@/api/teachNotice\"\r\n\r\nexport default {\r\n name: \"TeachNotice\",\r\n data() {\r\n return {\r\n loading: true,\r\n tableHeight: window.innerHeight - 320,\r\n total: 0,\r\n noticeList: [],\r\n categoryOptions: ['教学公告', '考试通知', '调课通知'],\r\n queryParams: {\r\n pageNum: 1,\r\n pageSize: 10,\r\n title: undefined,\r\n category: undefined,\r\n publishDateFrom: undefined,\r\n publishDateTo: undefined\r\n },\r\n // 新增/修改 对话框\r\n dialogVisible: false,\r\n dialogTitle: '',\r\n form: {},\r\n rules: {\r\n title: [{ required: true, message: \"公告标题不能为空\", trigger: \"blur\" }],\r\n content: [{ required: true, message: \"公告正文不能为空\", trigger: \"blur\" }],\r\n category: [{ required: true, message: \"公告类别不能为空\", trigger: \"change\" }]\r\n },\r\n // 详情 对话框\r\n viewVisible: false,\r\n viewForm: {}\r\n }\r\n },\r\n created() {\r\n this.getList()\r\n },\r\n methods: {\r\n /** 查询列表 */\r\n getList() {\r\n this.loading = true\r\n listTeachNotice(this.queryParams).then(response => {\r\n const data = response.data || {}\r\n this.noticeList = data.records || []\r\n this.total = data.total || 0\r\n this.loading = false\r\n }).catch(() => {\r\n this.noticeList = []\r\n this.total = 0\r\n this.loading = false\r\n })\r\n },\r\n /** 时间格式化:yyyy-MM-dd HH:mm:ss */\r\n formatTime(time) {\r\n if (!time) return ''\r\n const date = new Date(time)\r\n if (isNaN(date.getTime())) return time\r\n const pad = n => String(n).padStart(2, '0')\r\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`\r\n },\r\n /** 状态标签颜色 */\r\n statusTagType(status) {\r\n if (status === '已发布') return 'success'\r\n if (status === '已下架') return 'info'\r\n return 'warning'\r\n },\r\n /** 查询按钮 */\r\n handleQuery() {\r\n this.queryParams.pageNum = 1\r\n this.getList()\r\n },\r\n /** 重置按钮 */\r\n resetQuery() {\r\n this.queryParams = {\r\n pageNum: 1,\r\n pageSize: 10,\r\n title: undefined,\r\n category: undefined,\r\n publishDateFrom: undefined,\r\n publishDateTo: undefined\r\n }\r\n this.handleQuery()\r\n },\r\n /** 新增 */\r\n handleAdd() {\r\n this.dialogTitle = '新增公告'\r\n this.form = { title: undefined, content: undefined, category: undefined }\r\n this.dialogVisible = true\r\n this.$nextTick(() => {\r\n this.$refs.noticeForm && this.$refs.noticeForm.clearValidate()\r\n })\r\n },\r\n /** 修改 */\r\n handleUpdate(row) {\r\n getTeachNotice(row.id).then(response => {\r\n const data = response.data || {}\r\n this.form = {\r\n id: data.id,\r\n title: data.title,\r\n content: data.content,\r\n category: data.category\r\n }\r\n }).catch(() => {})\r\n this.dialogTitle = '修改公告'\r\n this.dialogVisible = true\r\n },\r\n /** 提交新增/修改 */\r\n submitForm() {\r\n this.$refs.noticeForm.validate(valid => {\r\n if (!valid) return\r\n const isAdd = !this.form.id\r\n if (isAdd) {\r\n addTeachNotice(this.form).then(() => {\r\n this.$message.success(\"新增成功\")\r\n this.dialogVisible = false\r\n this.getList()\r\n }).catch(() => {})\r\n } else {\r\n updateTeachNotice(this.form).then(() => {\r\n this.$message.success(\"修改成功\")\r\n this.dialogVisible = false\r\n this.getList()\r\n }).catch(() => {})\r\n }\r\n })\r\n },\r\n /** 下架 */\r\n handleOffline(row) {\r\n this.$confirm(\"确认下架该公告吗?\", \"提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\"\r\n }).then(() => {\r\n updateTeachNotice({ id: row.id, status: '已下架' }).then(() => {\r\n this.$message.success(\"下架成功\")\r\n this.getList()\r\n }).catch(() => {})\r\n }).catch(() => {})\r\n },\r\n /** 删除(级联删除:仅拟制/已下架可删,后端校验) */\r\n handleDelete(row) {\r\n this.$confirm(\"确认删除该公告吗?\", \"提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\"\r\n }).then(() => {\r\n delTeachNotice(row.id).then(() => {\r\n this.$message.success(\"删除成功\")\r\n this.getList()\r\n }).catch(() => {})\r\n }).catch(() => {})\r\n },\r\n /** 详情 */\r\n handleView(row) {\r\n getTeachNotice(row.id).then(response => {\r\n this.viewForm = response.data || {}\r\n this.viewVisible = true\r\n }).catch(() => {})\r\n },\r\n /** 对话框关闭事件(Vue2 兼容) */\r\n handleDialogVisible(val) {\r\n this.dialogVisible = val\r\n },\r\n handleViewVisible(val) {\r\n this.viewVisible = val\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.teach-notice {\r\n .range-sep {\r\n margin: 0 8px;\r\n color: #909399;\r\n }\r\n .list-heading {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 16px;\r\n margin-bottom: 12px;\r\n }\r\n .list-title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #303133;\r\n padding-left: 10px;\r\n border-left: 4px solid var(--edu-green-primary);\r\n }\r\n ::v-deep .action-column .cell {\r\n white-space: nowrap;\r\n }\r\n .detail-body {\r\n padding: 0 8px;\r\n .detail-row {\r\n display: flex;\r\n padding: 6px 0;\r\n font-size: 13px;\r\n line-height: 1.6;\r\n .detail-label {\r\n flex-shrink: 0;\r\n width: 90px;\r\n color: #909399;\r\n text-align: right;\r\n margin-right: 12px;\r\n }\r\n .detail-value {\r\n flex: 1;\r\n color: #303133;\r\n word-break: break-all;\r\n }\r\n .detail-content {\r\n white-space: pre-wrap;\r\n }\r\n }\r\n }\r\n\r\n @media (max-width: 768px) {\r\n .list-heading {\r\n align-items: stretch;\r\n flex-direction: column;\r\n }\r\n\r\n .list-heading .el-button {\r\n width: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n"],"mappings":"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","ignoreList":[]}]} |