1 line
19 KiB
JSON
1 line
19 KiB
JSON
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/race/Record.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/race/Record.vue","mtime":1742646402777},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CmltcG9ydCB7IGV4cG9ydERhdGEgfSBmcm9tICdAL3V0aWxzL2V4Y2VsJzsKaW1wb3J0IHsgQWxsQ29tcGV0aXRpb24gfSBmcm9tICdAL2FwaSc7CmltcG9ydCBSZWNvcmRBY3Rpb24gZnJvbSAnQC9jb21wb25lbnRzL3JlY29yZC9SZWNvcmRBY3Rpb24nOwoKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdSZWNvcmQnLAogIGNvbXBvbmVudHM6IHsgUmVjb3JkQWN0aW9uIH0sCiAgbWV0YUluZm86IHsKICAgIHRpdGxlOiAn5Y+C6LWb6K6w5b2VJywKICB9LAogIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBzZWxlY3RlZEtleXM6IFtdLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgZXhwb3J0aW5nOiBmYWxzZSwKICAgICAgcmVjb3JkczogW10sCgkJCW9yaWdpbmFsUmFjZXM6IFtdLAoJCQlxdWVyeTp7fSwKICAgICAgY3VycmVudDogMSwKICAgICAgcGFnZVNpemU6IDEwLAogICAgICB0b3RhbDogMCwKICAgICAgdGFibGVDb2x1bW5zOiBjcmVhdGVUYWJsZUNvbHVtbnMuY2FsbCh0aGlzLCB0aGlzLiRjcmVhdGVFbGVtZW50KSwKICAgICAgc2VhcmNoT3B0aW9uczogY3JlYXRlU2VhcmNoT3B0aW9ucy5jYWxsKHRoaXMpLAogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICBwYWdpbmF0aW9uKCkgewogICAgICByZXR1cm4gewogICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudCwKICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwKICAgICAgICB0b3RhbDogdGhpcy50b3RhbCwKICAgICAgfTsKICAgIH0sCiAgfSwKICBtb3VudGVkKCkgewogICAgdGhpcy4kd2F0Y2goKCkgPT4gW3RoaXMucGFnZVNpemUsIHRoaXMuY3VycmVudF0sIHRoaXMuZ2V0RGF0YSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBjaGFuZ2VQYWdlKHsgcGFnZVNpemUsIGN1cnJlbnQgfSkgewogICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHsgcGFnZVNpemUsIGN1cnJlbnQgfSk7CiAgICB9LAogICAgc2VhcmNoKCkgewogICAgICB0aGlzLmN1cnJlbnQgPSAxOwogICAgICB0aGlzLmdldERhdGEoKTsKICAgIH0sCgkJZ2V0RGF0YSgpIHsKCXRoaXMucXVlcnkgPSB0aGlzLiRyZWZzLnNlYXJjaEZvcm0uZ2V0UmVzdWx0KCk7Cgljb25zb2xlLmxvZyh0aGlzLnF1ZXJ5KQogIHRoaXMubG9hZGluZyA9IHRydWU7CiAgdGhpcy4kYXBpLlJlZ2lzdHJhdGlvbkFsbCh7CiAgfSkudGhlbihkYXRhID0+IHsKCQkvLyDlpoLmnpznrZvpgInlh7rmnaXnlKjmiLfouqvku73kuLrlrabnlJ8KICAgIGlmKHRoaXMuJHN0b3JlLnN0YXRlLnVzZXIudXNlclByaXZpbGVnZXMgPT0gMil7CgkJCS8vIOetm+mAieWtpueUn+eUqOaIt+iHquW3seeahOavlOi1mwogICAgICB0aGlzLnJlY29yZHMgPSBkYXRhLmRhdGEuZmlsdGVyKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLnN0dWRlbnRJZCA9PSB0aGlzLiRzdG9yZS5zdGF0ZS51c2VyLnVzZXJJZDsgLy8g5re75YqgIHJldHVybiDor63lj6UKICAgICAgfSk7CiAgICAgIHRoaXMudG90YWwgPSB0aGlzLnJlY29yZHMubGVuZ3RoOyAvLyDmm7TmlrAgdG90YWwg55qE6K6h566X5pa55byPCiAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVjb3Jkcyk7CiAgICB9IGVsc2UgewogICAgICB0aGlzLm9yaWdpbmFsUmFjZXMgPSBkYXRhLmRhdGE7CgkJCXRoaXMuZmlsdGVyUmFjZXMoKTsgLy8g6LCD55So6L+H5ruk5pa55rOVCiAgICAgIHRoaXMudG90YWwgPSBkYXRhLmRhdGEubGVuZ3RoOwogICAgfQogIH0pLmNhdGNoKGUgPT4gewogICAgY29uc29sZS5lcnJvcihlKTsKICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZS5tc2cgfHwgJ+iOt+WPluaVsOaNruWksei0pScpOwogIH0pLmZpbmFsbHkoKCkgPT4gewogICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgfSk7Cn0sCi8vIOi/h+a7pAovLyDov4fmu6Tmr5TotZsKZmlsdGVyUmFjZXMoKSB7CiAgCQlsZXQgZmlsdGVyZWRSYWNlcyA9IHRoaXMub3JpZ2luYWxSYWNlcy5zbGljZSgpOyAvLyDlpI3liLbljp/lp4vnlKjmiLfmlbDmja4KCQkJY29uc29sZS5sb2coZmlsdGVyZWRSYWNlcykKCQkJCS8vIOeKtuaAgQogIGlmICh0aGlzLnF1ZXJ5LnN0YXR1cykgewogICAgZmlsdGVyZWRSYWNlcyA9IGZpbHRlcmVkUmFjZXMuZmlsdGVyKHVzZXIgPT4gdXNlci5jb21wZXRpdGlvblN0YXR1cyA9PSB0aGlzLnF1ZXJ5LnN0YXR1cyk7CiAgfQovLyDlkI3np7AKICBpZiAodGhpcy5xdWVyeS50aXRsZSkgewogICAgZmlsdGVyZWRSYWNlcyA9IGZpbHRlcmVkUmFjZXMuZmlsdGVyKHVzZXIgPT4gdXNlci5jb21wZXRpdGlvbk5hbWUuaW5jbHVkZXModGhpcy5xdWVyeS50aXRsZSkpOwogIH0KLy8g6LSf6LSj5Lq6CiAgaWYgKHRoaXMucXVlcnkuc25hbWUpIHsKCQlmaWx0ZXJlZFJhY2VzID0gZmlsdGVyZWRSYWNlcy5maWx0ZXIodXNlciA9PiB1c2VyLnN0dWRlbnROYW1lLmluY2x1ZGVzKHRoaXMucXVlcnkuc25hbWUpKTsKICB9Ci8vIOaIkOe7qQppZiAodGhpcy5xdWVyeS5zY29yZSE9bnVsbCkgewoJCWZpbHRlcmVkUmFjZXMgPSBmaWx0ZXJlZFJhY2VzLmZpbHRlcih1c2VyID0+IHVzZXIuYXdhcmRMZXZlbC5pbmNsdWRlcyh0aGlzLnF1ZXJ5LnNuYW1lKSk7CiAgfQogIHRoaXMucmVjb3JkcyA9IGZpbHRlcmVkUmFjZXM7Cn0sCiAgICBiYXRjaERlbGV0ZSgpIHsKICAgICAgdGhpcy4kbW9kYWwuY29uZmlybSh7CiAgICAgICAgdGl0bGU6IGDnoa7orqTliKDpmaTpgInkuK3nmoQke3RoaXMuc2VsZWN0ZWRLZXlzLmxlbmd0aH3pobnmlbDmja4/YCwKICAgICAgICBvbk9rOiAoKSA9PiB0aGlzLiRhcGkuZGVsZXRlUmVjb3JkKHRoaXMuc2VsZWN0ZWRLZXlzKQogICAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOaIkOWKnyEnKTsKICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEtleXMuc3BsaWNlKDApOwogICAgICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgICAgIH0pLmNhdGNoKGUgPT4gewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGUubXNnIHx8ICfliKDpmaTlpLHotKUhJyk7CiAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgICB9KSwKICAgICAgfSk7CiAgICB9LAogICAgZXhwb3J0QWxsKCkgewogICAgICB0aGlzLmV4cG9ydGluZyA9IHRydWU7CiAgICAgIHRoaXMuJGFwaS5nZXRSZWNvcmRMaXN0KHRoaXMucXVlcnkpLnRoZW4oZGF0YSA9PiB7CiAgICAgICAgcmV0dXJuIGV4cG9ydEV4Y2VsKGRhdGEuZGF0YSk7CiAgICAgIH0pLmNhdGNoKGUgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlLm1zZyB8fCAn5a+85Ye65aSx6LSlJyk7CiAgICAgIH0pLmZpbmFsbHkoKCkgPT4gewogICAgICAgIHRoaXMuZXhwb3J0aW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICB9LAp9OwoKY29uc3Qgc3RhdHVzTWFwID0gewogIDA6IHsgc3R5bGU6ICdjb2xvcjogbGlnaHRncmV5JywgdHlwZTogJ3F1ZXN0aW9uLWNpcmNsZScsIHRleHQ6ICflvoXlrqHmoLgnIH0sCiAgMTogeyBzdHlsZTogJ2NvbG9yOiBsaW1lZ3JlZW4nLCB0eXBlOiAnY2hlY2stY2lyY2xlJywgdGV4dDogJ+WuoeaguOmAmui/hycgfSwKICAyOiB7IHN0eWxlOiAnY29sb3I6IHJlZCcsIHR5cGU6ICdleGNsYW1hdGlvbi1jaXJjbGUnLCB0ZXh0OiAn5a6h5qC45aSx6LSlJyB9LAp9OwovLyDmoLzlvI/ljJbml6XmnJ/lh73mlbAKZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7CiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpOwogIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHsKICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgZGF0ZTogJHtkYXRlU3RyaW5nfWApOwogICAgcmV0dXJuICdJbnZhbGlkIERhdGUnOwogIH0KICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOwogIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7CiAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpOwogIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gOwp9CmZ1bmN0aW9uIGNyZWF0ZVRhYmxlQ29sdW1ucyhoKSB7CiAgcmV0dXJuIFsKCQl7IHRpdGxlOiAn5ZCN56ewJywgZGF0YUluZGV4OiAnY29tcGV0aXRpb25OYW1lJyB9LAogICAgeyB0aXRsZTogJ+WPgui1m+S6uicsIGRhdGFJbmRleDogJ3N0dWRlbnROYW1lJyB9LAoJCXsgdGl0bGU6ICfpmJ/plb8nLCBkYXRhSW5kZXg6ICd0ZWFtTGVhZGVyTmFtZScgfSwKICAgIHsgdGl0bGU6ICfnsbvlnosnLCBkYXRhSW5kZXg6ICdjb21wZXRpdGlvblR5cGUnIH0sCgkJeyAKICAgICAgdGl0bGU6ICfmiJDnu6knLCAKICAgICAgZGF0YUluZGV4OiAnYXdhcmRMZXZlbCcsCiAgICAgIGN1c3RvbVJlbmRlcjogKHRleHQsIHJlY29yZCkgPT4gewogICAgICAgIC8vIOWmguaenCBhd2FyZExldmVsIOS4jeWtmOWcqOaIluS4uuepuu+8jOWImeaYvuekuuKAnOacquiOt+WlluKAne+8jOWQpuWImeaYvuekuuWunumZheaIkOe7qQogICAgICAgIHJldHVybiB0ZXh0ID8gdGV4dCA6ICfmnKrojrflpZYnOwogICAgICB9CiAgICB9LAoJCXsgCiAgICAgIHRpdGxlOiAn5aSH5rOo5L+h5oGvJywgCiAgICAgIGRhdGFJbmRleDogJ2FkZGl0aW9uYWxJbmZvJywKICAgICAgY3VzdG9tUmVuZGVyOiAodGV4dCwgcmVjb3JkKSA9PiB7CiAgICAgICAgLy8g5aaC5p6cIGFkZGl0aW9uYWxJbmZvIOS4jeWtmOWcqOaIluS4uuepuu+8jOWImeaYvuekuuKAnOacquiOt+WlluKAne+8jOWQpuWImeaYvuekuuWunumZheaIkOe7qQogICAgICAgIHJldHVybiB0ZXh0ID8gdGV4dCA6ICfml6AnOwogICAgICB9CiAgICB9LAoJCXsgCiAgICAgIHRpdGxlOiAn6I635aWW6K+B5LmmJywgCiAgICAgIGRhdGFJbmRleDogJ2NlcnRpZmljYXRlUGF0aCcsCiAgICAgIGN1c3RvbVJlbmRlcjogKHRleHQsIHJlY29yZCkgPT4gewogICAgICAgIC8vIOWmguaenCBjZXJ0aWZpY2F0ZVBhdGgg5a2Y5Zyo77yM5YiZ5pi+56S65Zu+54mHCiAgICAgICAgaWYgKHRleHQpIHsKICAgICAgICAgIHJldHVybiA8aW1nIHNyYz17dGV4dH0gc3R5bGU9e3sgd2lkdGg6ICcxMDBweCcsIGhlaWdodDogJ2F1dG8nIH19IC8+OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gJ+aXoCc7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoJCXsgdGl0bGU6ICfnirbmgIEnLCBkYXRhSW5kZXg6ICdyZWdpc3RyYXRpb25TdGF0dXMnIH0sCiAgICB7IHRpdGxlOiAn55m76K6w5pe26Ze0JywgCgkJCWRhdGFJbmRleDogJ3JlZ2lzdHJhdGlvblRpbWUnLAoJICAJY3VzdG9tUmVuZGVyOiAodGV4dCwgcmVjb3JkKSA9PiBmb3JtYXREYXRlKHJlY29yZC5yZWdpc3RyYXRpb25UaW1lKQoJfSwKICAgIHsKICAgICAgdGl0bGU6ICfmk43kvZwnLAogICAgICBhbGlnbjogJ2NlbnRlcicsCiAgICAgIHNjb3BlZFNsb3RzOiB7CiAgICAgICAgY3VzdG9tUmVuZGVyOiAnYWN0aW9uJywKICAgICAgfSwKICAgIH0sCiAgXTsKfQoKZnVuY3Rpb24gZXhwb3J0RXhjZWwoZGF0YSkgewogIGNvbnN0IGhlYWRlciA9IGNyZWF0ZVRhYmxlQ29sdW1ucygpLm1hcCh2ID0+IHYudGl0bGUpOwogIGhlYWRlci5wb3AoKTsgLy8g5Y675o6J5pyA5ZCO5LiA5qCP5pON5L2c5qCPCiAgcmV0dXJuIGV4cG9ydERhdGEoewogICAgbmFtZTogJ+WPgui1m+iusOW9leS/oeaBrycsCiAgICBkYXRhLAogICAgaGVhZGVyLAogICAga2V5TWFwOiB7CiAgICAgIGNvbXBldGl0aW9uSWQ6ICflkI3np7AnLAogICAgICBzdHVkZW50SWQ6ICflj4LotZvkuronLAogICAgICB0ZWFtTGVhZGVySWQ6ICfnu4TpmJ/nvJblj7cnLAogICAgICBjb21wZXRpdGlvblR5cGU6ICfnsbvlnosnLAogICAgICBhd2FyZExldmVsOiAn5oiQ57upJywKICAgICAgY29tcGV0aXRpb25UeXBlOiAn57G75Z6LJywKICAgICAgcmVnaXN0cmF0aW9uU3RhdHVzOiBbJ+eKtuaAgScsIHN0YXR1cyA9PiBzdGF0dXNNYXBbcmVnaXN0cmF0aW9uU3RhdHVzXT8udGV4dF0sCiAgICAgIHJlZ2lzdHJhdGlvblRpbWU6ICfnmbvorrDml7bpl7QnLAogICAgfSwKICB9KTsKfQoKZnVuY3Rpb24gY3JlYXRlU2VhcmNoT3B0aW9ucygpIHsKICByZXR1cm4gWwogICAgewogICAgICBsYWJlbDogJ+i1m+S6i+WQjeensCcsCiAgICAgIGtleTogJ3RpdGxlJywKICAgICAgZGVmYXVsdDogJycsCiAgICAgIGNvbXBvbmVudDogJ2lucHV0JywKCQkJYWxpZ246ICdjZW50ZXInCiAgICB9LAogICAgewogICAgICBsYWJlbDogJ+WPgui1m+S6uicsCiAgICAgIGtleTogJ3NuYW1lJywKICAgICAgZGVmYXVsdDogJycsCiAgICAgIGNvbXBvbmVudDogJ2lucHV0JywKCQkJYWxpZ246ICdjZW50ZXInCiAgICB9LAogICAgewogICAgICBsYWJlbDogJ+aIkOe7qScsCiAgICAgIGtleTogJ3Njb3JlJywKICAgICAgZGVmYXVsdDogJycsCiAgICAgIGNvbXBvbmVudDogJ2lucHV0JywKCQkJYWxpZ246ICdjZW50ZXInCiAgICB9LAogICAgewogICAgICBsYWJlbDogJ+WuoeaguOeKtuaAgScsCiAgICAgIGtleTogJ3N0YXR1cycsCiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCwKICAgICAgY29tcG9uZW50OiAnc2VsZWN0JywKCQkJYWxpZ246ICdjZW50ZXInLAogICAgICBwcm9wczogewogICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgIHsgbGFiZWw6ICfnrYnlvoXlrabmoKHlrqHmoLgnLCB2YWx1ZTogJ+etieW+heWtpuagoeWuoeaguCcgfSwKICAgICAgICAgIHsgbGFiZWw6ICfmiJDlip/miqXlkI0nLCB2YWx1ZTogJ+aIkOWKn+aKpeWQjScgfSwKICAgICAgICAgIHsgbGFiZWw6ICflrqHmoLjlpLHotKUnLCB2YWx1ZTogJ+WuoeaguOWksei0pScgfSwKICAgICAgICBdLAogICAgICB9LAogICAgfSwKICBdOwp9Cg=="},{"version":3,"sources":["Record.vue"],"names":[],"mappings":";AA8CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"Record.vue","sourceRoot":"src/views/race","sourcesContent":["<template>\n <div>\n <SearchForm\n ref=\"searchForm\"\n :loading=\"loading\"\n :options=\"searchOptions\"\n @search=\"search\"\n @reset=\"search\"\n />\n\n <!--信息列表-->\n <AntTable\n v-model=\"selectedKeys\"\n row-key=\"record_id\"\n :loading=\"loading\"\n :data-source=\"records\"\n :pagination=\"pagination\"\n :columns=\"tableColumns\"\n @change=\"changePage\"\n >\n <template #header>\n <a-button-group>\n <a-button\n \n :disabled=\"!selectedKeys.length\"\n @click=\"batchDelete\"\n >\n 批量删除 ({{ selectedKeys.length }})\n </a-button>\n <a-button\n \n :loading=\"exporting\"\n @click=\"exportAll\"\n >\n 全量导出\n </a-button>\n </a-button-group>\n </template>\n <template #action=\"record\">\n <RecordAction :record=\"record\" :fresh-data=\"getData\" />\n </template>\n </AntTable>\n </div>\n</template>\n\n<script>\nimport { exportData } from '@/utils/excel';\nimport { AllCompetition } from '@/api';\nimport RecordAction from '@/components/record/RecordAction';\n\nexport default {\n name: 'Record',\n components: { RecordAction },\n metaInfo: {\n title: '参赛记录',\n },\n data() {\n return {\n selectedKeys: [],\n loading: false,\n exporting: false,\n records: [],\n\t\t\toriginalRaces: [],\n\t\t\tquery:{},\n current: 1,\n pageSize: 10,\n total: 0,\n tableColumns: createTableColumns.call(this, this.$createElement),\n searchOptions: createSearchOptions.call(this),\n };\n },\n computed: {\n pagination() {\n return {\n current: this.current,\n pageSize: this.pageSize,\n total: this.total,\n };\n },\n },\n mounted() {\n this.$watch(() => [this.pageSize, this.current], this.getData, { immediate: true });\n },\n methods: {\n changePage({ pageSize, current }) {\n Object.assign(this, { pageSize, current });\n },\n search() {\n this.current = 1;\n this.getData();\n },\n\t\tgetData() {\n\tthis.query = this.$refs.searchForm.getResult();\n\tconsole.log(this.query)\n this.loading = true;\n this.$api.RegistrationAll({\n }).then(data => {\n\t\t// 如果筛选出来用户身份为学生\n if(this.$store.state.user.userPrivileges == 2){\n\t\t\t// 筛选学生用户自己的比赛\n this.records = data.data.filter(item => {\n return item.studentId == this.$store.state.user.userId; // 添加 return 语句\n });\n this.total = this.records.length; // 更新 total 的计算方式\n console.log(this.records);\n } else {\n this.originalRaces = data.data;\n\t\t\tthis.filterRaces(); // 调用过滤方法\n this.total = data.data.length;\n }\n }).catch(e => {\n console.error(e);\n this.$message.error(e.msg || '获取数据失败');\n }).finally(() => {\n this.loading = false;\n });\n},\n// 过滤\n// 过滤比赛\nfilterRaces() {\n \t\tlet filteredRaces = this.originalRaces.slice(); // 复制原始用户数据\n\t\t\tconsole.log(filteredRaces)\n\t\t\t\t// 状态\n if (this.query.status) {\n filteredRaces = filteredRaces.filter(user => user.competitionStatus == this.query.status);\n }\n// 名称\n if (this.query.title) {\n filteredRaces = filteredRaces.filter(user => user.competitionName.includes(this.query.title));\n }\n// 负责人\n if (this.query.sname) {\n\t\tfilteredRaces = filteredRaces.filter(user => user.studentName.includes(this.query.sname));\n }\n// 成绩\nif (this.query.score!=null) {\n\t\tfilteredRaces = filteredRaces.filter(user => user.awardLevel.includes(this.query.sname));\n }\n this.records = filteredRaces;\n},\n batchDelete() {\n this.$modal.confirm({\n title: `确认删除选中的${this.selectedKeys.length}项数据?`,\n onOk: () => this.$api.deleteRecord(this.selectedKeys)\n .then(() => {\n this.$message.success('删除成功!');\n this.selectedKeys.splice(0);\n this.getData();\n }).catch(e => {\n this.$message.error(e.msg || '删除失败!');\n throw e;\n }),\n });\n },\n exportAll() {\n this.exporting = true;\n this.$api.getRecordList(this.query).then(data => {\n return exportExcel(data.data);\n }).catch(e => {\n console.error(e);\n this.$message.error(e.msg || '导出失败');\n }).finally(() => {\n this.exporting = false;\n });\n },\n },\n};\n\nconst statusMap = {\n 0: { style: 'color: lightgrey', type: 'question-circle', text: '待审核' },\n 1: { style: 'color: limegreen', type: 'check-circle', text: '审核通过' },\n 2: { style: 'color: red', type: 'exclamation-circle', text: '审核失败' },\n};\n// 格式化日期函数\nfunction formatDate(dateString) {\n const date = new Date(dateString);\n if (isNaN(date.getTime())) {\n console.error(`Invalid date: ${dateString}`);\n return 'Invalid Date';\n }\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\nfunction createTableColumns(h) {\n return [\n\t\t{ title: '名称', dataIndex: 'competitionName' },\n { title: '参赛人', dataIndex: 'studentName' },\n\t\t{ title: '队长', dataIndex: 'teamLeaderName' },\n { title: '类型', dataIndex: 'competitionType' },\n\t\t{ \n title: '成绩', \n dataIndex: 'awardLevel',\n customRender: (text, record) => {\n // 如果 awardLevel 不存在或为空,则显示“未获奖”,否则显示实际成绩\n return text ? text : '未获奖';\n }\n },\n\t\t{ \n title: '备注信息', \n dataIndex: 'additionalInfo',\n customRender: (text, record) => {\n // 如果 additionalInfo 不存在或为空,则显示“未获奖”,否则显示实际成绩\n return text ? text : '无';\n }\n },\n\t\t{ \n title: '获奖证书', \n dataIndex: 'certificatePath',\n customRender: (text, record) => {\n // 如果 certificatePath 存在,则显示图片\n if (text) {\n return <img src={text} style={{ width: '100px', height: 'auto' }} />;\n } else {\n return '无';\n }\n }\n },\n\t\t{ title: '状态', dataIndex: 'registrationStatus' },\n { title: '登记时间', \n\t\t\tdataIndex: 'registrationTime',\n\t \tcustomRender: (text, record) => formatDate(record.registrationTime)\n\t},\n {\n title: '操作',\n align: 'center',\n scopedSlots: {\n customRender: 'action',\n },\n },\n ];\n}\n\nfunction exportExcel(data) {\n const header = createTableColumns().map(v => v.title);\n header.pop(); // 去掉最后一栏操作栏\n return exportData({\n name: '参赛记录信息',\n data,\n header,\n keyMap: {\n competitionId: '名称',\n studentId: '参赛人',\n teamLeaderId: '组队编号',\n competitionType: '类型',\n awardLevel: '成绩',\n competitionType: '类型',\n registrationStatus: ['状态', status => statusMap[registrationStatus]?.text],\n registrationTime: '登记时间',\n },\n });\n}\n\nfunction createSearchOptions() {\n return [\n {\n label: '赛事名称',\n key: 'title',\n default: '',\n component: 'input',\n\t\t\talign: 'center'\n },\n {\n label: '参赛人',\n key: 'sname',\n default: '',\n component: 'input',\n\t\t\talign: 'center'\n },\n {\n label: '成绩',\n key: 'score',\n default: '',\n component: 'input',\n\t\t\talign: 'center'\n },\n {\n label: '审核状态',\n key: 'status',\n default: undefined,\n component: 'select',\n\t\t\talign: 'center',\n props: {\n options: [\n { label: '等待学校审核', value: '等待学校审核' },\n { label: '成功报名', value: '成功报名' },\n { label: '审核失败', value: '审核失败' },\n ],\n },\n },\n ];\n}\n</script>\n\n<style scoped>\n</style>\n"]}]} |