forked from liweijie/education
1 line
29 KiB
JSON
1 line
29 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\\schedule\\planImport\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\schedule\\planImport\\index.vue","mtime":1787640892009},{"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:InVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLnRvLWpzb24uanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZS5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLnNpemUuanMiKTsKdmFyIF90ZWFjaGluZ1BsYW4gPSByZXF1aXJlKCJAL2FwaS9zY2hlZHVsZS90ZWFjaGluZ1BsYW4iKTsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KdmFyIF9kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0ID0gewogIG5hbWU6ICdQbGFuSW1wb3J0SW5kZXgnLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDmn6Xor6LooajljZUgPT09PT09PT09PT09PT09PT09PT0KICAgICAgc2VhcmNoRm9ybTogewogICAgICAgIGtzc2o6ICcnLAogICAgICAgIGpzc2o6ICcnLAogICAgICAgIGpjenRZdGc6IGZhbHNlLAogICAgICAgIGpjenRXdGc6IHRydWUsCiAgICAgICAgaGx6dFljOiBmYWxzZSwKICAgICAgICBobHp0WWJsOiB0cnVlLAogICAgICAgIGp5eG06ICcnLAogICAgICAgIGJjbWM6ICcnLAogICAgICAgIGp4Y2RtYzogJycsCiAgICAgICAga21tYzogJycKICAgICAgfSwKICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5paH5Lu25LiK5Lyg5LiO5a+85YWlID09PT09PT09PT09PT09PT09PT09CiAgICAgIHNlbGVjdGVkRmlsZU5hbWU6ICfmnKrpgInmi6nku7vkvZXmlofku7YnLAogICAgICBzZWxlY3RlZEZpbGU6IG51bGwsCiAgICAgIGltcG9ydGluZzogZmFsc2UsCiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09IOihqOagvOaVsOaNriA9PT09PT09PT09PT09PT09PT09PQogICAgICB0YWJsZURhdGE6IFtdLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgcGFnZU51bTogMSwKICAgICAgcGFnZVNpemU6IDIwLAogICAgICB0b3RhbDogMAogICAgfTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB0aGlzLmZldGNoTGlzdCgpOwogIH0sCiAgbWV0aG9kczogewogICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5p+l6K+iID09PT09PT09PT09PT09PT09PT09CiAgICAvLyDku4XkvKDlkI7nq68gTWFwcGVyIOaUr+aMgeeahOWtl+aute+8mnNranko5o6I6K++5pWZ5ZGYKSBiYyjnj63mrKEpIGtjbWMo6K++56iL5ZCN56ewKSB5dGdqYyjlt7LpgJrov4fmo4Dmn6UpCiAgICAvLyDor77nqIvml7bpl7TjgIHlv73nlaXnirbmgIHjgIHmlZnlrablnLrlnLDlkI3np7DlkI7nq6/liJfooajmn6Xor6LkuI3mlK/mjIHvvIzkuI3kvKAKICAgIGJ1aWxkU2VhcmNoUGFyYW1zOiBmdW5jdGlvbiBidWlsZFNlYXJjaFBhcmFtcygpIHsKICAgICAgdmFyIGYgPSB0aGlzLnNlYXJjaEZvcm07CiAgICAgIHZhciBwYXJhbXMgPSB7CiAgICAgICAgcGFnZU51bTogdGhpcy5wYWdlTnVtLAogICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplCiAgICAgIH07CiAgICAgIGlmIChmLmp5eG0gJiYgZi5qeXhtLnRyaW0oKSkgcGFyYW1zLnNrankgPSBmLmp5eG0udHJpbSgpOwogICAgICBpZiAoZi5iY21jICYmIGYuYmNtYy50cmltKCkpIHBhcmFtcy5iYyA9IGYuYmNtYy50cmltKCk7CiAgICAgIGlmIChmLmttbWMgJiYgZi5rbW1jLnRyaW0oKSkgcGFyYW1zLmtjbWMgPSBmLmttbWMudHJpbSgpOwogICAgICAvLyDmo4Dmn6XnirbmgIHvvJrku4Xli77pgInjgIzlt7LpgJrov4fjgI3miJbjgIzmnKrpgJrov4fjgI3lhbbkuK3kuYvkuIDml7bmiY3mjInor6XmnaHku7bov4fmu6QKICAgICAgaWYgKGYuamN6dFl0ZyAmJiAhZi5qY3p0V3RnKSBwYXJhbXMueXRnamMgPSB0cnVlO2Vsc2UgaWYgKCFmLmpjenRZdGcgJiYgZi5qY3p0V3RnKSBwYXJhbXMueXRnamMgPSBmYWxzZTsKICAgICAgcmV0dXJuIHBhcmFtczsKICAgIH0sCiAgICBmZXRjaExpc3Q6IGZ1bmN0aW9uIGZldGNoTGlzdCgpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgKDAsIF90ZWFjaGluZ1BsYW4ubGlzdFRlYWNoaW5nUGxhbikodGhpcy5idWlsZFNlYXJjaFBhcmFtcygpKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHZhciBkYXRhID0gcmVzcG9uc2UuZGF0YSB8fCB7fTsKICAgICAgICBfdGhpcy50YWJsZURhdGEgPSBkYXRhLnJlY29yZHMgfHwgW107CiAgICAgICAgX3RoaXMudG90YWwgPSBkYXRhLnRvdGFsIHx8IDA7CiAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMudGFibGVEYXRhID0gW107CiAgICAgICAgX3RoaXMudG90YWwgPSAwOwogICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlU2VhcmNoOiBmdW5jdGlvbiBoYW5kbGVTZWFyY2goKSB7CiAgICAgIHRoaXMucGFnZU51bSA9IDE7CiAgICAgIHRoaXMuZmV0Y2hMaXN0KCk7CiAgICB9LAogICAgaGFuZGxlUGFnZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlUGFnZUNoYW5nZShjdXJyZW50KSB7CiAgICAgIHRoaXMucGFnZU51bSA9IGN1cnJlbnQ7CiAgICAgIHRoaXMuZmV0Y2hMaXN0KCk7CiAgICB9LAogICAgaGFuZGxlU2l6ZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2l6ZUNoYW5nZShzaXplKSB7CiAgICAgIHRoaXMucGFnZVNpemUgPSBzaXplOwogICAgICB0aGlzLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmZldGNoTGlzdCgpOwogICAgfSwKICAgIC8qKiDml6XmnJ/moLzlvI/ljJYgKi9mb3JtYXREYXRlOiBmdW5jdGlvbiBmb3JtYXREYXRlKHJvdywgY29sdW1uLCBjZWxsVmFsdWUpIHsKICAgICAgcmV0dXJuIGNlbGxWYWx1ZSA/IFN0cmluZyhjZWxsVmFsdWUpLnN1YnN0cmluZygwLCAxMCkgOiAnJzsKICAgIH0sCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDmlofku7bpgInmi6kgPT09PT09PT09PT09PT09PT09PT0KICAgIGhhbmRsZUNob29zZUZpbGU6IGZ1bmN0aW9uIGhhbmRsZUNob29zZUZpbGUoKSB7CiAgICAgIHRoaXMuJHJlZnMuZmlsZUlucHV0UmVmICYmIHRoaXMuJHJlZnMuZmlsZUlucHV0UmVmLmNsaWNrKCk7CiAgICB9LAogICAgaGFuZGxlRmlsZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlRmlsZUNoYW5nZShldmVudCkgewogICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0OwogICAgICB2YXIgZmlsZSA9IHRhcmdldC5maWxlcyAmJiB0YXJnZXQuZmlsZXNbMF07CiAgICAgIGlmIChmaWxlKSB7CiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlOwogICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZSA9IGZpbGUubmFtZTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7CiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lID0gJ+acqumAieaLqeS7u+S9leaWh+S7tic7CiAgICAgIH0KICAgIH0sCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDkuIvovb3mqKHmnb8gPT09PT09PT09PT09PT09PT09PT0KICAgIGhhbmRsZURvd25sb2FkVGVtcGxhdGU6IGZ1bmN0aW9uIGhhbmRsZURvd25sb2FkVGVtcGxhdGUoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICAoMCwgX3RlYWNoaW5nUGxhbi5kb3dubG9hZFRlYWNoaW5nUGxhblRlbXBsYXRlKSgpLnRoZW4oZnVuY3Rpb24gKGJsb2IpIHsKICAgICAgICBfdGhpczIuZG93bmxvYWRCbG9iKGJsb2IsICfmlZnlrablrp7mlr3orqHliJLlr7zlhaXmqKHmnb8ueGxzeCcpOwogICAgICAgIF90aGlzMi4kbWVzc2FnZS5zdWNjZXNzKCfmqKHmnb/kuIvovb3miJDlip8nKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIGRvd25sb2FkQmxvYjogZnVuY3Rpb24gZG93bmxvYWRCbG9iKGJsb2IsIGZpbGVOYW1lKSB7CiAgICAgIHZhciB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgIGxpbmsuaHJlZiA9IHVybDsKICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOwogICAgICBsaW5rLmNsaWNrKCk7CiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7CiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7CiAgICB9LAogICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5a+85YWl5Yiw57O757ufID09PT09PT09PT09PT09PT09PT09CiAgICBoYW5kbGVJbXBvcnRUb1N5c3RlbTogZnVuY3Rpb24gaGFuZGxlSW1wb3J0VG9TeXN0ZW0oKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaWxlKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7flhYjpgInmi6nmlofku7YnKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5pbXBvcnRpbmcgPSB0cnVlOwogICAgICAoMCwgX3RlYWNoaW5nUGxhbi5pbXBvcnRUZWFjaGluZ1BsYW4pKHRoaXMuc2VsZWN0ZWRGaWxlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICB2YXIgY291bnQgPSByZXMgJiYgcmVzLmRhdGE7CiAgICAgICAgaWYgKGNvdW50ICE9PSBudWxsICYmIGNvdW50ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCJcdTVCRkNcdTUxNjVcdTYyMTBcdTUyOUZcdUZGMENcdTUxNzEgIi5jb25jYXQoY291bnQsICIgXHU2NzYxXHU4QkIwXHU1RjU1IikpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMgJiYgcmVzLm1zZyB8fCAn5a+85YWl5oiQ5YqfJyk7CiAgICAgICAgfQogICAgICAgIF90aGlzMy5zZWxlY3RlZEZpbGUgPSBudWxsOwogICAgICAgIF90aGlzMy5zZWxlY3RlZEZpbGVOYW1lID0gJ+acqumAieaLqeS7u+S9leaWh+S7tic7CiAgICAgICAgX3RoaXMzLiRyZWZzLmZpbGVJbnB1dFJlZiAmJiAoX3RoaXMzLiRyZWZzLmZpbGVJbnB1dFJlZi52YWx1ZSA9ICcnKTsKICAgICAgICBfdGhpczMucGFnZU51bSA9IDE7CiAgICAgICAgX3RoaXMzLmZldGNoTGlzdCgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSkuZmluYWxseShmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMzLmltcG9ydGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDnvJPlrZjmk43kvZzvvIjlkI7nq6/mmoLmnKrmj5DkvpvvvIkgPT09PT09PT09PT09PT09PT09PT0KICAgIGhhbmRsZVVwbG9hZFRvQ2FjaGU6IGZ1bmN0aW9uIGhhbmRsZVVwbG9hZFRvQ2FjaGUoKSB7CiAgICAgIHRoaXMuJG1lc3NhZ2UuaW5mbygn5ZCO56uv5pqC5pyq5o+Q5L6b6K+l5o6l5Y+jJyk7CiAgICB9LAogICAgaGFuZGxlQ2hlY2tDYWNoZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tDYWNoZSgpIHsKICAgICAgdGhpcy4kbWVzc2FnZS5pbmZvKCflkI7nq6/mmoLmnKrmj5Dkvpvor6XmjqXlj6MnKTsKICAgIH0sCiAgICBoYW5kbGVEZWxldGVDYWNoZTogZnVuY3Rpb24gaGFuZGxlRGVsZXRlQ2FjaGUoKSB7CiAgICAgIHRoaXMuJG1lc3NhZ2UuaW5mbygn5ZCO56uv5pqC5pyq5o+Q5L6b6K+l5o6l5Y+jJyk7CiAgICB9CiAgfQp9Ow=="},{"version":3,"names":["_teachingPlan","require","name","data","searchForm","kssj","jssj","jcztYtg","jcztWtg","hlztYc","hlztYbl","jyxm","bcmc","jxcdmc","kmmc","selectedFileName","selectedFile","importing","tableData","loading","pageNum","pageSize","total","mounted","fetchList","methods","buildSearchParams","f","params","trim","skjy","bc","kcmc","ytgjc","_this","listTeachingPlan","then","response","records","catch","handleSearch","handlePageChange","current","handleSizeChange","size","formatDate","row","column","cellValue","String","substring","handleChooseFile","$refs","fileInputRef","click","handleFileChange","event","target","file","files","handleDownloadTemplate","_this2","downloadTeachingPlanTemplate","blob","downloadBlob","$message","success","fileName","url","window","URL","createObjectURL","link","document","createElement","href","download","body","appendChild","removeChild","revokeObjectURL","handleImportToSystem","_this3","warning","importTeachingPlan","res","count","undefined","concat","msg","value","finally","handleUploadToCache","info","handleCheckCache","handleDeleteCache"],"sources":["src/views/schedule/planImport/index.vue"],"sourcesContent":["<template>\r\n <div class=\"app-container plan-import-page\">\r\n <!-- ==================== 1. 查询条件 ==================== -->\r\n <el-card shadow=\"never\" class=\"search-card\">\r\n <el-form :model=\"searchForm\" label-width=\"100px\" class=\"search-form\">\r\n <!-- 第一行:课程时间独占整行 -->\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"课程时间\">\r\n <div class=\"date-range\">\r\n <span>从</span>\r\n <el-date-picker\r\n v-model=\"searchForm.kssj\"\r\n type=\"datetime\"\r\n value-format=\"yyyy-MM-dd HH:mm:ss\"\r\n placeholder=\"开始时间\"\r\n clearable\r\n class=\"date-input\"\r\n />\r\n <span>到</span>\r\n <el-date-picker\r\n v-model=\"searchForm.jssj\"\r\n type=\"datetime\"\r\n value-format=\"yyyy-MM-dd HH:mm:ss\"\r\n placeholder=\"结束时间\"\r\n clearable\r\n class=\"date-input\"\r\n />\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <!-- 下面分左右两栏 -->\r\n <el-row :gutter=\"24\">\r\n <el-col :xs=\"24\" :md=\"12\">\r\n <el-form-item label=\"检查状态\">\r\n <div class=\"checkbox-group\">\r\n <el-checkbox v-model=\"searchForm.jcztYtg\">已通过</el-checkbox>\r\n <el-checkbox v-model=\"searchForm.jcztWtg\">未通过</el-checkbox>\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"教员姓名\">\r\n <el-input v-model=\"searchForm.jyxm\" placeholder=\"请输入教员姓名\" clearable />\r\n </el-form-item>\r\n <el-form-item label=\"教学场地名称\">\r\n <el-input v-model=\"searchForm.jxcdmc\" placeholder=\"请输入教学场地名称\" clearable />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :xs=\"24\" :md=\"12\">\r\n <el-form-item label=\"忽略状态\">\r\n <div class=\"checkbox-group\">\r\n <el-checkbox v-model=\"searchForm.hlztYc\">有用</el-checkbox>\r\n <el-checkbox v-model=\"searchForm.hlztYbl\">已被忽略</el-checkbox>\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"班次名称\">\r\n <el-input v-model=\"searchForm.bcmc\" placeholder=\"请输入班次名称\" clearable />\r\n </el-form-item>\r\n <el-form-item label=\"科目名称\">\r\n <el-input v-model=\"searchForm.kmmc\" placeholder=\"请输入科目名称\" clearable />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <el-row>\r\n <el-col :span=\"24\" class=\"search-actions\">\r\n <el-button type=\"primary\" @click=\"handleSearch\">查询</el-button>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n </el-card>\r\n\r\n <!-- ==================== 2. 操作按钮区 ==================== -->\r\n <el-card shadow=\"never\" class=\"action-card\">\r\n <div class=\"action-bar\">\r\n <div class=\"bar-left\">\r\n <el-button icon=\"el-icon-download\" @click=\"handleDownloadTemplate\">\r\n 【课程表数据文件模板】下载\r\n </el-button>\r\n </div>\r\n\r\n <div class=\"bar-center\">\r\n <div class=\"file-area\">\r\n <input ref=\"fileInputRef\" type=\"file\" accept=\".xlsx,.xls\" style=\"display: none\" @change=\"handleFileChange\" />\r\n <el-button icon=\"el-icon-folder-opened\" @click=\"handleChooseFile\">选择文件</el-button>\r\n <span class=\"file-name\">{{ selectedFileName }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"bar-right\">\r\n <el-button type=\"primary\" @click=\"handleImportToSystem\" :loading=\"importing\">缓存数据导入到系统</el-button>\r\n <el-button type=\"primary\" icon=\"el-icon-upload2\" @click=\"handleUploadToCache\">上传数据至缓存</el-button>\r\n <el-button @click=\"handleCheckCache\">检查缓存数据</el-button>\r\n <el-button type=\"danger\" plain @click=\"handleDeleteCache\">删除缓存数据</el-button>\r\n </div>\r\n </div>\r\n </el-card>\r\n\r\n <!-- ==================== 3. 数据表格 ==================== -->\r\n <el-card shadow=\"never\" class=\"table-card\">\r\n <el-table v-loading=\"loading\" :data=\"tableData\" stripe border highlight-current-row class=\"import-table\">\r\n <el-table-column prop=\"nd\" label=\"年度\" width=\"60\" align=\"center\" />\r\n <el-table-column prop=\"xh\" label=\"序号\" width=\"53\" align=\"center\" />\r\n <el-table-column prop=\"yxh\" label=\"原序号\" width=\"67\" align=\"center\" />\r\n <el-table-column prop=\"rq\" label=\"日期\" width=\"120\" align=\"center\" :formatter=\"formatDate\" />\r\n <el-table-column prop=\"yjc\" label=\"原节次\" width=\"67\" align=\"center\" />\r\n <el-table-column prop=\"jc\" label=\"节次\" width=\"53\" align=\"center\" />\r\n <el-table-column prop=\"kcmc\" label=\"课程名称\" width=\"85\" show-overflow-tooltip />\r\n <el-table-column prop=\"bc\" label=\"班次\" width=\"53\" show-overflow-tooltip />\r\n <el-table-column prop=\"zrdw\" label=\"责任单位\" width=\"81\" show-overflow-tooltip />\r\n <el-table-column prop=\"skjy\" label=\"授课教员\" width=\"81\" align=\"center\" />\r\n <el-table-column prop=\"jxcd\" label=\"教学场地\" width=\"81\" align=\"center\" />\r\n <el-table-column prop=\"jxnr\" label=\"教学内容\" width=\"81\" show-overflow-tooltip />\r\n <el-table-column prop=\"jxff\" label=\"教学方法\" width=\"81\" align=\"center\" />\r\n <el-table-column prop=\"jybz\" label=\"教员备注\" width=\"81\" show-overflow-tooltip />\r\n <el-table-column prop=\"jwbz\" label=\"教务备注\" width=\"81\" show-overflow-tooltip />\r\n <el-table-column prop=\"jcjg\" label=\"检查结果\" width=\"81\" align=\"center\" />\r\n <el-table-column prop=\"ytgjc\" label=\"已通过检查\" width=\"95\" align=\"center\">\r\n <template slot-scope=\"{ row }\">\r\n <span>{{ row.ytgjc ? '是' : '否' }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"ybhl\" label=\"已被忽略\" width=\"81\" align=\"center\">\r\n <template slot-scope=\"{ row }\">\r\n <span>{{ row.ybhl ? '是' : '否' }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"ybcl\" label=\"已被处理\" width=\"81\" align=\"center\">\r\n <template slot-scope=\"{ row }\">\r\n <span>{{ row.ybcl ? '是' : '否' }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"ybdr\" label=\"已被导入\" align=\"center\">\r\n <template slot-scope=\"{ row }\">\r\n <span>{{ row.ybdr ? '是' : '否' }}</span>\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-wrapper\"\r\n @current-change=\"handlePageChange\"\r\n @size-change=\"handleSizeChange\"\r\n />\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { listTeachingPlan, importTeachingPlan, downloadTeachingPlanTemplate } from '@/api/schedule/teachingPlan'\r\n\r\nexport default {\r\n name: 'PlanImportIndex',\r\n data() {\r\n return {\r\n // ==================== 查询表单 ====================\r\n searchForm: {\r\n kssj: '',\r\n jssj: '',\r\n jcztYtg: false,\r\n jcztWtg: true,\r\n hlztYc: false,\r\n hlztYbl: true,\r\n jyxm: '',\r\n bcmc: '',\r\n jxcdmc: '',\r\n kmmc: ''\r\n },\r\n\r\n // ==================== 文件上传与导入 ====================\r\n selectedFileName: '未选择任何文件',\r\n selectedFile: null,\r\n importing: false,\r\n\r\n // ==================== 表格数据 ====================\r\n tableData: [],\r\n loading: false,\r\n pageNum: 1,\r\n pageSize: 20,\r\n total: 0\r\n }\r\n },\r\n mounted() {\r\n this.fetchList()\r\n },\r\n methods: {\r\n // ==================== 查询 ====================\r\n // 仅传后端 Mapper 支持的字段:skjy(授课教员) bc(班次) kcmc(课程名称) ytgjc(已通过检查)\r\n // 课程时间、忽略状态、教学场地名称后端列表查询不支持,不传\r\n buildSearchParams() {\r\n const f = this.searchForm\r\n const params = { pageNum: this.pageNum, pageSize: this.pageSize }\r\n if (f.jyxm && f.jyxm.trim()) params.skjy = f.jyxm.trim()\r\n if (f.bcmc && f.bcmc.trim()) params.bc = f.bcmc.trim()\r\n if (f.kmmc && f.kmmc.trim()) params.kcmc = f.kmmc.trim()\r\n // 检查状态:仅勾选「已通过」或「未通过」其中之一时才按该条件过滤\r\n if (f.jcztYtg && !f.jcztWtg) params.ytgjc = true\r\n else if (!f.jcztYtg && f.jcztWtg) params.ytgjc = false\r\n return params\r\n },\r\n\r\n fetchList() {\r\n this.loading = true\r\n listTeachingPlan(this.buildSearchParams()).then(response => {\r\n const data = response.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 handleSearch() {\r\n this.pageNum = 1\r\n this.fetchList()\r\n },\r\n\r\n handlePageChange(current) {\r\n this.pageNum = current\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 formatDate(row, column, cellValue) {\r\n return cellValue ? String(cellValue).substring(0, 10) : ''\r\n },\r\n\r\n // ==================== 文件选择 ====================\r\n handleChooseFile() {\r\n this.$refs.fileInputRef && this.$refs.fileInputRef.click()\r\n },\r\n\r\n handleFileChange(event) {\r\n const target = event.target\r\n const file = target.files && target.files[0]\r\n if (file) {\r\n this.selectedFile = file\r\n this.selectedFileName = file.name\r\n } else {\r\n this.selectedFile = null\r\n this.selectedFileName = '未选择任何文件'\r\n }\r\n },\r\n\r\n // ==================== 下载模板 ====================\r\n handleDownloadTemplate() {\r\n downloadTeachingPlanTemplate().then(blob => {\r\n this.downloadBlob(blob, '教学实施计划导入模板.xlsx')\r\n this.$message.success('模板下载成功')\r\n }).catch(() => {})\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 // ==================== 导入到系统 ====================\r\n handleImportToSystem() {\r\n if (!this.selectedFile) {\r\n this.$message.warning('请先选择文件')\r\n return\r\n }\r\n this.importing = true\r\n importTeachingPlan(this.selectedFile).then(res => {\r\n const count = res && res.data\r\n if (count !== null && count !== undefined) {\r\n this.$message.success(`导入成功,共 ${count} 条记录`)\r\n } else {\r\n this.$message.success((res && res.msg) || '导入成功')\r\n }\r\n this.selectedFile = null\r\n this.selectedFileName = '未选择任何文件'\r\n this.$refs.fileInputRef && (this.$refs.fileInputRef.value = '')\r\n this.pageNum = 1\r\n this.fetchList()\r\n }).catch(() => {}).finally(() => {\r\n this.importing = false\r\n })\r\n },\r\n\r\n // ==================== 缓存操作(后端暂未提供) ====================\r\n handleUploadToCache() {\r\n this.$message.info('后端暂未提供该接口')\r\n },\r\n\r\n handleCheckCache() {\r\n this.$message.info('后端暂未提供该接口')\r\n },\r\n\r\n handleDeleteCache() {\r\n this.$message.info('后端暂未提供该接口')\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.plan-import-page {\r\n .search-card {\r\n margin-bottom: 16px;\r\n\r\n .search-form {\r\n .date-range {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n .date-input {\r\n width: 180px;\r\n flex-shrink: 0;\r\n }\r\n }\r\n\r\n .checkbox-group {\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n }\r\n\r\n .form-tip {\r\n color: #f56c6c;\r\n font-size: 12px;\r\n margin-bottom: 12px;\r\n padding-left: 100px;\r\n }\r\n\r\n .search-actions {\r\n display: flex;\r\n justify-content: flex-end;\r\n padding-top: 8px;\r\n }\r\n }\r\n }\r\n\r\n .action-card {\r\n margin-bottom: 16px;\r\n\r\n .action-bar {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 16px;\r\n\r\n .bar-left,\r\n .bar-center,\r\n .bar-right {\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n gap: 10px;\r\n }\r\n\r\n .bar-right {\r\n margin-left: auto;\r\n }\r\n\r\n .file-area {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n .file-name {\r\n color: #606266;\r\n font-size: 14px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .table-card {\r\n .import-table {\r\n width: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n"],"mappings":"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","ignoreList":[]}]} |