forked from liweijie/education
1 line
24 KiB
JSON
1 line
24 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\\teachBusiness\\teachingTask\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachBusiness\\teachingTask\\index.vue","mtime":1787648748773},{"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:InVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc29ydC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZpbmQuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5mb3ItZWFjaC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyIpOwp2YXIgX3RlYWNoaW5nVGFzayA9IHJlcXVpcmUoIkAvYXBpL3RlYWNoQnVzaW5lc3MvdGVhY2hpbmdUYXNrIik7CnZhciBfc2VtZXN0ZXIgPSByZXF1aXJlKCJAL2FwaS90ZWFjaEJ1c2luZXNzL3NlbWVzdGVyIik7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8qKg0KICog5pWZ5a2m5Lu75Yqh5YiX6KGo77yI5Y+q6K+75p+l6K+i6aG177yJDQogKiDlr7nlupToj5zljZXvvJp0ZWFjaEJ1c2luZXNzL3RlYWNoaW5nVGFza++8iOWOn+OAjOWIhue7hOivvuWIl+ihqOOAjemhte+8jOS4i+i9veexu+WKn+iDveWQjuerr+aXoOaOpeWPo+W3suenu+mZpO+8iQ0KICog5LuF5o+Q5L6bIOWIhumhteafpeivoiBsaXN0ICsg6K+m5oOFIGdldD9iaD3vvIzkuI3lgZrlop7liKDmlLnlj5HvvIjpgb/lhY3kuI7mlZnlrabku7vliqHorqHliJLnrqHnkIbpobXph43lpI3mk43kvZzlkIzkuIDlrp7kvZPvvIkNCiAqIOWinuWIoOaUueWPkee7n+S4gOWcqCBzcmMvdmlld3MvdGVhY2hPZmZpY2UvdGFza1BsYW4vaW5kZXgudnVl77yI5pWZ5a2m5Lu75Yqh6K6h5YiS566h55CG77yJ5a6M5oiQDQogKi8KdmFyIF9kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0ID0gewogIG5hbWU6ICdUZWFjaGluZ1Rhc2snLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICAvLyA9PT09PT09PT09PT09PT09PT09PSAxLiDmn6Xor6LmnaHku7YgPT09PT09PT09PT09PT09PT09PT0KICAgICAgc2VhcmNoRm9ybTogewogICAgICAgIHJ3bWM6ICcnLAogICAgICAgIG5kOiB1bmRlZmluZWQsCiAgICAgICAgenQ6ICcnCiAgICAgIH0sCiAgICAgIHllYXJPcHRpb25zOiBbXSwKICAgICAgc3RhdHVzT3B0aW9uczogW3sKICAgICAgICBsYWJlbDogJ+acquWPkeW4gycsCiAgICAgICAgdmFsdWU6ICfmnKrlj5HluIMnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+W3suWPkeW4gycsCiAgICAgICAgdmFsdWU6ICflt7Llj5HluIMnCiAgICAgIH1dLAogICAgICAvLyA9PT09PT09PT09PT09PT09PT09PSAyLiDooajmoLzmlbDmja4gPT09PT09PT09PT09PT09PT09PT0KICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIHBhZ2VOdW06IDEsCiAgICAgIHBhZ2VTaXplOiAxMCwKICAgICAgdG90YWw6IDAsCiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09IDMuIOivpuaDhSA9PT09PT09PT09PT09PT09PT09PQogICAgICBkZXRhaWxWaXNpYmxlOiBmYWxzZSwKICAgICAgZGV0YWlsTG9hZGluZzogZmFsc2UsCiAgICAgIGRldGFpbERhdGE6IHt9CiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB0aGlzLmxvYWRZZWFyT3B0aW9ucygpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gX3RoaXMuZmV0Y2hMaXN0KCk7CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8qIC0tLS0tLS0tLS0g5bm05bqm5LiL5ouJ77yI5pWw5o2u5p2l6IeqIC9zZW1lc3Rlci9hbGzvvIznpoHmraLnoaznvJbnoIHvvIkgLS0tLS0tLS0tLSAqL2xvYWRZZWFyT3B0aW9uczogZnVuY3Rpb24gbG9hZFllYXJPcHRpb25zKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuICgwLCBfc2VtZXN0ZXIubGlzdEFsbFNlbWVzdGVyKSgpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgdmFyIGxpc3QgPSByZXNwb25zZS5kYXRhIHx8IFtdOwogICAgICAgIHZhciBtYXAgPSB7fTsKICAgICAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGlmIChpdGVtLm5kICE9PSBudWxsICYmIGl0ZW0ubmQgIT09IHVuZGVmaW5lZCAmJiBpdGVtLm5kICE9PSAnJykgbWFwW2l0ZW0ubmRdID0gaXRlbTsKICAgICAgICB9KTsKICAgICAgICB2YXIgYXJyID0gT2JqZWN0LmtleXMobWFwKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgICByZXR1cm4gU3RyaW5nKGIpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGEpKTsKICAgICAgICB9KTsKICAgICAgICBfdGhpczIueWVhck9wdGlvbnMgPSBhcnI7CiAgICAgICAgLy8g6buY6K6k5bm05bqm77ya5LyY5YWI5b2T5YmN5a2m5pyfKGRxeHE9dHJ1ZSnvvIzlkKbliJnlj5bmnIDmlrDlubTluqYKICAgICAgICB2YXIgY3VycmVudCA9IGxpc3QuZmluZChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgcmV0dXJuIGl0ZW0uZHF4cSA9PT0gdHJ1ZTsKICAgICAgICB9KTsKICAgICAgICB2YXIgZGVmYXVsdE5kID0gY3VycmVudCAmJiBjdXJyZW50Lm5kIHx8IGFyclswXTsKICAgICAgICBpZiAoIV90aGlzMi5zZWFyY2hGb3JtLm5kKSBfdGhpczIuc2VhcmNoRm9ybS5uZCA9IGRlZmF1bHROZDsKICAgICAgICByZXR1cm4gYXJyOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMyLnllYXJPcHRpb25zID0gW107CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9KTsKICAgIH0sCiAgICAvKiAtLS0tLS0tLS0tIOmAmueUqOagvOW8j+WMliAtLS0tLS0tLS0tICovZm10RGF0ZVRpbWU6IGZ1bmN0aW9uIGZtdERhdGVUaW1lKHJvdywgY29sdW1uLCBjZWxsVmFsdWUpIHsKICAgICAgaWYgKGNlbGxWYWx1ZSA9PT0gbnVsbCB8fCBjZWxsVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBjZWxsVmFsdWUgPT09ICcnKSByZXR1cm4gJy0nOwogICAgICByZXR1cm4gU3RyaW5nKGNlbGxWYWx1ZSkucmVwbGFjZSgnVCcsICcgJykuc2xpY2UoMCwgMTYpOwogICAgfSwKICAgIGZtdFZhbDogZnVuY3Rpb24gZm10VmFsKHZhbCkgewogICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gJycpIHJldHVybiAnLSc7CiAgICAgIHJldHVybiBTdHJpbmcodmFsKS5yZXBsYWNlKCdUJywgJyAnKS5zbGljZSgwLCAxNik7CiAgICB9LAogICAgLyogLS0tLS0tLS0tLSDliJfooajliqDovb0gLS0tLS0tLS0tLSAqL2ZldGNoTGlzdDogZnVuY3Rpb24gZmV0Y2hMaXN0KCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgdmFyIHBhcmFtcyA9IHsKICAgICAgICBwYWdlTnVtOiB0aGlzLnBhZ2VOdW0sCiAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUKICAgICAgfTsKICAgICAgaWYgKHRoaXMuc2VhcmNoRm9ybS5yd21jICYmIHRoaXMuc2VhcmNoRm9ybS5yd21jLnRyaW0oKSkgcGFyYW1zLnJ3bWMgPSB0aGlzLnNlYXJjaEZvcm0ucndtYy50cmltKCk7CiAgICAgIGlmICh0aGlzLnNlYXJjaEZvcm0ubmQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlYXJjaEZvcm0ubmQgIT09IG51bGwgJiYgdGhpcy5zZWFyY2hGb3JtLm5kICE9PSAnJykgewogICAgICAgIHBhcmFtcy5uZCA9IHRoaXMuc2VhcmNoRm9ybS5uZDsKICAgICAgfQogICAgICBpZiAodGhpcy5zZWFyY2hGb3JtLnp0ICYmIHRoaXMuc2VhcmNoRm9ybS56dC50cmltKCkpIHBhcmFtcy56dCA9IHRoaXMuc2VhcmNoRm9ybS56dC50cmltKCk7CiAgICAgICgwLCBfdGVhY2hpbmdUYXNrLmxpc3RUZWFjaGluZ1Rhc2spKHBhcmFtcykudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdmFyIGRhdGEgPSByZXMgJiYgcmVzLmRhdGEgfHwge307CiAgICAgICAgX3RoaXMzLnRhYmxlRGF0YSA9IGRhdGEucmVjb3JkcyB8fCBbXTsKICAgICAgICBfdGhpczMudG90YWwgPSBkYXRhLnRvdGFsIHx8IDA7CiAgICAgICAgX3RoaXMzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMy50YWJsZURhdGEgPSBbXTsKICAgICAgICBfdGhpczMudG90YWwgPSAwOwogICAgICAgIF90aGlzMy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZVF1ZXJ5OiBmdW5jdGlvbiBoYW5kbGVRdWVyeSgpIHsKICAgICAgdGhpcy5wYWdlTnVtID0gMTsKICAgICAgdGhpcy5mZXRjaExpc3QoKTsKICAgIH0sCiAgICBoYW5kbGVQYWdlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVQYWdlQ2hhbmdlKHBhZ2UpIHsKICAgICAgdGhpcy5wYWdlTnVtID0gcGFnZTsKICAgICAgdGhpcy5mZXRjaExpc3QoKTsKICAgIH0sCiAgICBoYW5kbGVTaXplQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTaXplQ2hhbmdlKHNpemUpIHsKICAgICAgdGhpcy5wYWdlU2l6ZSA9IHNpemU7CiAgICAgIHRoaXMucGFnZU51bSA9IDE7CiAgICAgIHRoaXMuZmV0Y2hMaXN0KCk7CiAgICB9LAogICAgLyogLS0tLS0tLS0tLSDor6bmg4XvvIjlj6ror7vvvIzotbDnnJ/lrp4gZ2V0P2JoPSDmjqXlj6PvvIkgLS0tLS0tLS0tLSAqL2hhbmRsZURldGFpbDogZnVuY3Rpb24gaGFuZGxlRGV0YWlsKHJvdykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgdGhpcy5kZXRhaWxWaXNpYmxlID0gdHJ1ZTsKICAgICAgdGhpcy5kZXRhaWxMb2FkaW5nID0gdHJ1ZTsKICAgICAgdGhpcy5kZXRhaWxEYXRhID0ge307CiAgICAgICgwLCBfdGVhY2hpbmdUYXNrLmdldFRlYWNoaW5nVGFzaykocm93LmJoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczQuZGV0YWlsRGF0YSA9IHJlcyAmJiByZXMuZGF0YSB8fCB7fTsKICAgICAgICBfdGhpczQuZGV0YWlsTG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM0LmRldGFpbExvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9CiAgfQp9Ow=="},{"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","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","_this3","params","trim","listTeachingTask","res","records","handleQuery","handlePageChange","page","handleSizeChange","size","handleDetail","_this4","getTeachingTask","bh"],"sources":["src/views/teachBusiness/teachingTask/index.vue"],"sourcesContent":["<template>\r\n <div class=\"app-container teaching-task-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 :model=\"searchForm\" label-width=\"80px\" class=\"search-form\">\r\n <el-row :gutter=\"24\">\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"8\">\r\n <el-form-item label=\"任务名称\">\r\n <el-input\r\n v-model=\"searchForm.rwmc\"\r\n placeholder=\"请输入任务名称\"\r\n clearable\r\n @keyup.enter.native=\"handleQuery\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"8\">\r\n <el-form-item label=\"年度\">\r\n <el-select\r\n v-model=\"searchForm.nd\"\r\n placeholder=\"请选择年度\"\r\n clearable\r\n style=\"width: 100%\"\r\n >\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-col>\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"8\">\r\n <el-form-item label=\"状态\">\r\n <el-select\r\n v-model=\"searchForm.zt\"\r\n placeholder=\"请选择状态\"\r\n clearable\r\n style=\"width: 100%\"\r\n >\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-col>\r\n </el-row>\r\n <div class=\"search-actions\">\r\n <el-button type=\"primary\" icon=\"el-icon-search\" @click=\"handleQuery\">查询</el-button>\r\n </div>\r\n </el-form>\r\n </el-card>\r\n\r\n <!-- ==================== 2. 数据表格 ==================== -->\r\n <el-card shadow=\"never\" class=\"table-card\">\r\n <el-table v-loading=\"loading\" :data=\"tableData\" border stripe>\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=\"bh\" label=\"编号\" width=\"100\" align=\"center\" show-overflow-tooltip />\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=\"200\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column prop=\"jssj\" label=\"结束时间\" width=\"200\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column prop=\"cjsj\" label=\"创建时间\" width=\"200\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column prop=\"jcxqscsj\" label=\"教材需求生成时间\" width=\"200\" align=\"center\" :formatter=\"fmtDateTime\" />\r\n <el-table-column label=\"操作\" 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 </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 <!-- ==================== 3. 详情对话框 ==================== -->\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 * 对应菜单:teachBusiness/teachingTask(原「分组课列表」页,下载类功能后端无接口已移除)\r\n * 仅提供 分页查询 list + 详情 get?bh=,不做增删改发(避免与教学任务计划管理页重复操作同一实体)\r\n * 增删改发统一在 src/views/teachOffice/taskPlan/index.vue(教学任务计划管理)完成\r\n */\r\nimport { listTeachingTask, getTeachingTask } from '@/api/teachBusiness/teachingTask'\r\nimport { listAllSemester } from '@/api/teachBusiness/semester'\r\n\r\nexport default {\r\n name: 'TeachingTask',\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 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\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 /* ---------- 详情(只读,走真实 get?bh= 接口) ---------- */\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</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.app-container {\r\n padding: 20px;\r\n}\r\n\r\n.teaching-task-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 .search-actions {\r\n display: flex;\r\n justify-content: flex-end;\r\n padding-top: 12px;\r\n border-top: 1px solid #ebeef5;\r\n }\r\n }\r\n }\r\n\r\n // ==================== 2. 数据表格 ====================\r\n .table-card {\r\n .pagination {\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-top: 12px;\r\n }\r\n }\r\n\r\n // ==================== 3. 详情 ====================\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\r\n</style>\r\n"],"mappings":"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","ignoreList":[]}]} |