Files
education/frontend/node_modules/.cache/vue-loader/dd3335b78b69b5bbffa57e97d3be3a1d.json
T

1 line
29 KiB
JSON

{"remainingRequest":"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\\shiftSemester\\ClassTeamSelectDialog.vue?vue&type=script&setup=true&lang=ts","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachOffice\\shiftSemester\\ClassTeamSelectDialog.vue","mtime":1787321099213},{"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:DQppbXBvcnQgeyBjb21wdXRlZCwgcmVhY3RpdmUsIHJlZiB9IGZyb20gJ3Z1ZScNCmltcG9ydCB7IEVsTWVzc2FnZSB9IGZyb20gJ2VsZW1lbnQtcGx1cycNCg0KLy8gPT09PT09PT09PT09PT09PT09PT0gUHJvcHMgJiBFbWl0cyA9PT09PT09PT09PT09PT09PT09PQ0KY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoDQogIGRlZmluZVByb3BzPHsNCiAgICBtb2RlbFZhbHVlOiBib29sZWFuDQogIH0+KCksDQogIHsNCiAgICBtb2RlbFZhbHVlOiBmYWxzZQ0KICB9DQopDQoNCmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7DQogIChlOiAndXBkYXRlOm1vZGVsVmFsdWUnLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQNCiAgKGU6ICdjb25maXJtJywgdGVhbXM6IFRlYW1Sb3dbXSk6IHZvaWQNCn0+KCkNCg0KY29uc3QgdmlzaWJsZSA9IGNvbXB1dGVkKHsNCiAgZ2V0OiAoKSA9PiBwcm9wcy5tb2RlbFZhbHVlLA0KICBzZXQ6ICh2YWwpID0+IGVtaXQoJ3VwZGF0ZTptb2RlbFZhbHVlJywgdmFsKQ0KfSkNCg0KLy8gPT09PT09PT09PT09PT09PT09PT0g5p+l6K+i5p2h5Lu25Yy65Z+fID09PT09PT09PT09PT09PT09PT09DQpjb25zdCBxdWVyeUZvcm0gPSByZWFjdGl2ZSh7DQogIHp5RW5hYmxlZDogZmFsc2UsICAgLy8g5LiT5Lia5ZCv55So5aSN6YCJ5qGG77yI5pyq5Yu+6YCJ77yJDQogIHp5OiAn5LiT5LiaMjE5JywgICAgICAvLyDkuJPkuJrvvIjpu5jorqTlgLzvvIkNCiAgbmpFbmFibGVkOiB0cnVlLCAgICAvLyDlubTnuqflkK/nlKjlpI3pgInmoYbvvIjlt7Lli77pgInvvIkNCiAgbmo6ICcnLCAgICAgICAgICAgICAvLyDlubTnuqfvvIjnqbrlgLzvvIkNCiAgenh6dEVuYWJsZWQ6IGZhbHNlLCAvLyDlnKjmoKHnirbmgIHlkK/nlKjlpI3pgInmoYbvvIjmnKrli77pgInvvIkNCiAgenh6dDogJ+avleS4micsICAgICAgIC8vIOWcqOagoeeKtuaAge+8iOm7mOiupOWAvO+8iQ0KICB4eWRtY0VuYWJsZWQ6IHRydWUsIC8vIOWtpuWRmOmYn+WQjeensOWQr+eUqOWkjemAieahhu+8iOW3suWLvumAie+8iQ0KICB4eWRtYzogJycsICAgICAgICAgIC8vIOWtpuWRmOmYn+WQjeensO+8iOepuuWAvO+8iQ0KICByd2xiRW5hYmxlZDogZmFsc2UsIC8vIOS7u+WKoeexu+WIq+WQr+eUqOWkjemAieahhu+8iOacquWLvumAie+8iQ0KICByd2xiOiAn6KeE5YiS5YaFJyAgICAgIC8vIOS7u+WKoeexu+WIq++8iOm7mOiupOWAvO+8iQ0KfSkNCg0KLy8gPT09PT09PT09PT09PT09PT09PT0g5YiG6aG15o6n5Yi25Yy65Z+fID09PT09PT09PT09PT09PT09PT09DQpjb25zdCBjdXJyZW50UGFnZSA9IHJlZigxKQ0KY29uc3QgcGFnZVNpemUgPSByZWYoMSkNCmNvbnN0IGRpc3BsYXlTaXplID0gcmVmKDEwMCkNCg0KY29uc3QgaGFuZGxlUXVlcnkgPSAoKSA9PiB7DQogIEVsTWVzc2FnZS5zdWNjZXNzKCfmn6Xor6LvvIjliY3nq6/mvJTnpLrvvIknKQ0KfQ0KY29uc3QgaGFuZGxlRmlyc3QgPSAoKSA9PiB7DQogIGN1cnJlbnRQYWdlLnZhbHVlID0gMQ0KICBFbE1lc3NhZ2Uuc3VjY2Vzcygn5bey6Lez6L2s6aaW6aG1JykNCn0NCmNvbnN0IGhhbmRsZVByZXYgPSAoKSA9PiB7DQogIGlmIChjdXJyZW50UGFnZS52YWx1ZSA+IDEpIGN1cnJlbnRQYWdlLnZhbHVlLS0NCn0NCmNvbnN0IGhhbmRsZU5leHQgPSAoKSA9PiB7DQogIGN1cnJlbnRQYWdlLnZhbHVlKysNCn0NCmNvbnN0IGhhbmRsZUxhc3QgPSAoKSA9PiB7DQogIGN1cnJlbnRQYWdlLnZhbHVlID0gdGVhbUxpc3QudmFsdWUubGVuZ3RoIHx8IDENCn0NCmNvbnN0IGhhbmRsZUxvY2F0ZSA9ICgpID0+IHsNCiAgRWxNZXNzYWdlLnN1Y2Nlc3MoYOW3suWumuS9jeWIsOesrCAke2N1cnJlbnRQYWdlLnZhbHVlfSDpobVgKQ0KfQ0KY29uc3QgaGFuZGxlU2V0UGFnZVNpemUgPSAoKSA9PiB7DQogIEVsTWVzc2FnZS5zdWNjZXNzKGDmr4/pobXmmL7npLrmnaHmlbDlt7Lorr7nva7kuLogJHtkaXNwbGF5U2l6ZS52YWx1ZX1gKQ0KfQ0KDQovLyA9PT09PT09PT09PT09PT09PT09PSDkuIrmlrnmlbDmja7ooajmoLzvvIjlj6/pgInlrablkZjpmJ/liJfooajvvIkgPT09PT09PT09PT09PT09PT09PT0NCmludGVyZmFjZSBUZWFtUm93IHsNCiAgeHpkYm06IHN0cmluZyAgIC8vIOihjOaUv+mYn+WIq+WQjeensA0KICB4eWRtYzogc3RyaW5nICAgLy8g5a2m5ZGY6Zif5ZCN56ewDQogIG5qOiBzdHJpbmcgICAgICAvLyDlubTnuqcNCiAgenk6IHN0cmluZyAgICAgIC8vIOS4k+S4mg0KICByczogbnVtYmVyICAgICAgLy8g5Lq65pWwDQogIHp4enQ6IHN0cmluZyAgICAvLyDlnKjmoKHnirbmgIENCiAgcndsYjogc3RyaW5nICAgIC8vIOS7u+WKoeexu+WIqw0KICB6eWpzOiBzdHJpbmcgICAgLy8g5LiT55So5pWZ5a6kDQogIHJ4cnE6IHN0cmluZyAgICAvLyDlhaXlrabml6XmnJ8NCiAgYnlycTogc3RyaW5nICAgIC8vIOavleS4muaXpeacnw0KICBiej86IHN0cmluZyAgICAgLy8g5aSH5rOo77yI5LiL5pa56KGo5qC877yJDQp9DQoNCmNvbnN0IHRlYW1MaXN0ID0gcmVmPFRlYW1Sb3dbXT4oWw0KICB7IHh6ZGJtOiAn5pWZ5a2m5LqU57O7JywgeHlkbWM6ICfnj63mrKEwNDE3Jywgbmo6ICcyMDE257qnJywgenk6ICfkuJPkuJoxMTMnLCByczogMzYsIHp4enQ6ICfmr5XkuJonLCByd2xiOiAn6KeE5YiS5YaFJywgenlqczogJzgtMDExJywgcnhycTogJzIwMTblubQ45pyIMjbml6UnLCBieXJxOiAnMjAxOOW5tDHmnIgyMeaXpScgfSwNCiAgeyB4emRibTogJ+aVmeWtpuS4g+ezuycsIHh5ZG1jOiAn54+t5qyhMDQyMycsIG5qOiAnMjAxNue6pycsIHp5OiAn5LiT5LiaMTE0JywgcnM6IDksIHp4enQ6ICfmr5XkuJonLCByd2xiOiAn6KeE5YiS5YaFJywgenlqczogJzgtMjEy77yI5Y2X5qW877yJJywgcnhycTogJzIwMTblubQ45pyIMjbml6UnLCBieXJxOiAnMjAxOOW5tDHmnIgyMeaXpScgfSwNCiAgeyB4emRibTogJ+aVmeWtpuS4g+ezuycsIHh5ZG1jOiAn54+t5qyhMDQxMScsIG5qOiAnMjAxNue6pycsIHp5OiAn5LiT5LiaMTEyJywgcnM6IDM4LCB6eHp0OiAn5q+V5LiaJywgcndsYjogJ+inhOWIkuWGhScsIHp5anM6ICc2LTIwMycsIHJ4cnE6ICcyMDE25bm0OOaciDI25pelJywgYnlycTogJzIwMTjlubQx5pyIMjHml6UnIH0sDQogIHsgeHpkYm06ICfmlZnlrabkuIPns7snLCB4eWRtYzogJ+ePreasoTA0MDUnLCBuajogJzIwMTbnuqcnLCB6eTogJ+S4k+S4mjExMScsIHJzOiAzNCwgenh6dDogJ+avleS4micsIHJ3bGI6ICfop4TliJLlhoUnLCB6eWpzOiAnOC0wMDcnLCByeHJxOiAnMjAxNuW5tDjmnIgyNuaXpScsIGJ5cnE6ICcyMDE45bm0MeaciDIx5pelJyB9LA0KICB7IHh6ZGJtOiAn5pWZ5a2m5LqU57O7JywgeHlkbWM6ICfnj63mrKEwNDI5Jywgbmo6ICcyMDE357qnJywgenk6ICfkuJPkuJoxMTcnLCByczogNDMsIHp4enQ6ICfmr5XkuJonLCByd2xiOiAn6KeE5YiS5YaFJywgenlqczogJzYtMjAyJywgcnhycTogJzIwMTflubQ45pyIMjTml6UnLCBieXJxOiAnMjAxOeW5tDHmnIgyMeaXpScgfSwNCiAgeyB4emRibTogJ+aVmeWtpuS6lOezuycsIHh5ZG1jOiAn54+t5qyhMDQzMScsIG5qOiAnMjAxN+e6pycsIHp5OiAn5LiT5LiaMTE4JywgcnM6IDIyLCB6eHp0OiAn5q+V5LiaJywgcndsYjogJ+inhOWIkuWGhScsIHp5anM6ICcyLTQwMycsIHJ4cnE6ICcyMDE35bm0OOaciDI05pelJywgYnlycTogJzIwMTnlubQx5pyIMjHml6UnIH0sDQogIHsgeHpkYm06ICfmlZnlrabkuIPns7snLCB4eWRtYzogJ+ePreasoTA0MjUnLCBuajogJzIwMTfnuqcnLCB6eTogJ+S4k+S4mjExNScsIHJzOiAxOSwgenh6dDogJ+avleS4micsIHJ3bGI6ICfop4TliJLlhoUnLCB6eWpzOiAnMi00MDYnLCByeHJxOiAnMjAxN+W5tDjmnIgyNOaXpScsIGJ5cnE6ICcyMDE55bm0MeaciDIx5pelJyB9LA0KICB7IHh6ZGJtOiAn5pWZ5a2m5LiD57O7JywgeHlkbWM6ICfnj63mrKEwNDMyJywgbmo6ICcyMDE357qnJywgenk6ICfkuJPkuJoxMTknLCByczogMTUsIHp4enQ6ICfmr5XkuJonLCByd2xiOiAn6KeE5YiS5YaFJywgenlqczogJzgtMDA577yI5Y2X5qW877yJJywgcnhycTogJzIwMTflubQ45pyIMjTml6UnLCBieXJxOiAnMjAxOeW5tDHmnIgyMeaXpScgfSwNCiAgeyB4emRibTogJ+aVmeWtpuS4g+ezuycsIHh5ZG1jOiAn54+t5qyhMDQzNCcsIG5qOiAnMjAxN+e6pycsIHp5OiAn5LiT5LiaMTIwJywgcnM6IDQ1LCB6eHp0OiAn5q+V5LiaJywgcndsYjogJ+inhOWIkuWGhScsIHp5anM6ICc2LTMwMycsIHJ4cnE6ICcyMDE35bm0OOaciDI05pelJywgYnlycTogJzIwMTnlubQx5pyIMjHml6UnIH0sDQogIHsgeHpkYm06ICfmlZnlrablha3ns7snLCB4eWRtYzogJ+ePreasoTA0MjcnLCBuajogJzIwMTfnuqcnLCB6eTogJ+S4k+S4mjExNicsIHJzOiA2NCwgenh6dDogJ+avleS4micsIHJ3bGI6ICfop4TliJLlhoUnLCB6eWpzOiAnMi01MDEnLCByeHJxOiAnMjAxN+W5tDjmnIgyNOaXpScsIGJ5cnE6ICcyMDE55bm0MeaciDIx5pelJyB9DQpdKQ0KDQovKiog5LiK5pa56KGo5qC85aSa6YCJICovDQpjb25zdCB0b3BTZWxlY3Rpb24gPSByZWY8VGVhbVJvd1tdPihbXSkNCg0KLy8gPT09PT09PT09PT09PT09PT09PT0g5LiL5pa55pWw5o2u6KGo5qC877yI5bey6YCJ5a2m5ZGY6Zif5YiX6KGo77yJID09PT09PT09PT09PT09PT09PT09DQpjb25zdCBzZWxlY3RlZExpc3QgPSByZWY8VGVhbVJvd1tdPihbXSkNCmNvbnN0IGJvdHRvbVNlbGVjdGlvbiA9IHJlZjxUZWFtUm93W10+KFtdKQ0KDQovLyA9PT09PT09PT09PT09PT09PT09PSDkuK3pl7Tmk43kvZzmjInpkq4gPT09PT09PT09PT09PT09PT09PT0NCi8qKiDliqDlhaXvvJrlsIbkuIrmlrnooajmoLzpgInkuK3ooYzliqDlhaXlt7LpgInliJfooajvvIjljrvph43vvIkgKi8NCmNvbnN0IGhhbmRsZUFkZCA9ICgpID0+IHsNCiAgaWYgKCF0b3BTZWxlY3Rpb24udmFsdWUubGVuZ3RoKSB7DQogICAgRWxNZXNzYWdlLndhcm5pbmcoJ+ivt+WFiOWcqOS4iuaWueihqOagvOmAieaLqeWtpuWRmOmYnycpDQogICAgcmV0dXJuDQogIH0NCiAgY29uc3QgZXhpc3RpbmcgPSBuZXcgU2V0KHNlbGVjdGVkTGlzdC52YWx1ZS5tYXAoKHIpID0+IHIueHlkbWMpKQ0KICBsZXQgYWRkZWQgPSAwDQogIHRvcFNlbGVjdGlvbi52YWx1ZS5mb3JFYWNoKChyKSA9PiB7DQogICAgaWYgKCFleGlzdGluZy5oYXMoci54eWRtYykpIHsNCiAgICAgIHNlbGVjdGVkTGlzdC52YWx1ZS5wdXNoKHsgLi4uciwgYno6ICcnIH0pDQogICAgICBhZGRlZCsrDQogICAgfQ0KICB9KQ0KICBpZiAoYWRkZWQpIEVsTWVzc2FnZS5zdWNjZXNzKGDlt7LliqDlhaUgJHthZGRlZH0g5Liq5a2m5ZGY6ZifYCkNCiAgZWxzZSBFbE1lc3NhZ2UuaW5mbygn5omA6YCJ5a2m5ZGY6Zif5bey5Zyo5YiX6KGo5LitJykNCn0NCg0KLyoqIOenu+mZpO+8muWwhuS4i+aWueihqOagvOmAieS4reihjOenu+mZpCAqLw0KY29uc3QgaGFuZGxlUmVtb3ZlID0gKCkgPT4gew0KICBpZiAoIWJvdHRvbVNlbGVjdGlvbi52YWx1ZS5sZW5ndGgpIHsNCiAgICBFbE1lc3NhZ2Uud2FybmluZygn6K+35YWI5Zyo5LiL5pa56KGo5qC86YCJ5oup6KaB56e76Zmk55qE5a2m5ZGY6ZifJykNCiAgICByZXR1cm4NCiAgfQ0KICBjb25zdCByZW1vdmVLZXlzID0gbmV3IFNldChib3R0b21TZWxlY3Rpb24udmFsdWUubWFwKChyKSA9PiByLnh5ZG1jKSkNCiAgc2VsZWN0ZWRMaXN0LnZhbHVlID0gc2VsZWN0ZWRMaXN0LnZhbHVlLmZpbHRlcigocikgPT4gIXJlbW92ZUtleXMuaGFzKHIueHlkbWMpKQ0KICBFbE1lc3NhZ2Uuc3VjY2Vzcyhg5bey56e76ZmkICR7Ym90dG9tU2VsZWN0aW9uLnZhbHVlLmxlbmd0aH0g5Liq5a2m5ZGY6ZifYCkNCn0NCg0KLyoqIOa4hemZpO+8mua4heepuuW3sumAieWIl+ihqCAqLw0KY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7DQogIGlmICghc2VsZWN0ZWRMaXN0LnZhbHVlLmxlbmd0aCkgew0KICAgIEVsTWVzc2FnZS5pbmZvKCflt7LpgInliJfooajkuLrnqbonKQ0KICAgIHJldHVybg0KICB9DQogIHNlbGVjdGVkTGlzdC52YWx1ZSA9IFtdDQogIEVsTWVzc2FnZS5zdWNjZXNzKCflt7LmuIXnqbrlt7LpgInliJfooagnKQ0KfQ0KDQovKiog6YeN572u77ya5riF56m65bey6YCJ5YiX6KGo5bm26YeN572u5p+l6K+i5p2h5Lu2ICovDQpjb25zdCBoYW5kbGVSZXNldCA9ICgpID0+IHsNCiAgc2VsZWN0ZWRMaXN0LnZhbHVlID0gW10NCiAgT2JqZWN0LmFzc2lnbihxdWVyeUZvcm0sIHsNCiAgICB6eUVuYWJsZWQ6IGZhbHNlLCB6eTogJ+S4k+S4mjIxOScsDQogICAgbmpFbmFibGVkOiB0cnVlLCBuajogJycsDQogICAgenh6dEVuYWJsZWQ6IGZhbHNlLCB6eHp0OiAn5q+V5LiaJywNCiAgICB4eWRtY0VuYWJsZWQ6IHRydWUsIHh5ZG1jOiAnJywNCiAgICByd2xiRW5hYmxlZDogZmFsc2UsIHJ3bGI6ICfop4TliJLlhoUnDQogIH0pDQogIGN1cnJlbnRQYWdlLnZhbHVlID0gMQ0KICBFbE1lc3NhZ2Uuc3VjY2Vzcygn5bey6YeN572uJykNCn0NCg0KLy8gPT09PT09PT09PT09PT09PT09PT0g5bqV6YOo5oyJ6ZKuID09PT09PT09PT09PT09PT09PT09DQpjb25zdCBoYW5kbGVDb25maXJtID0gKCkgPT4gew0KICBpZiAoIXNlbGVjdGVkTGlzdC52YWx1ZS5sZW5ndGgpIHsNCiAgICBFbE1lc3NhZ2Uud2FybmluZygn6K+35YWI6YCJ5oup6KaB5bqU55So55qE5a2m5ZGY6ZifJykNCiAgICByZXR1cm4NCiAgfQ0KICBlbWl0KCdjb25maXJtJywgWy4uLnNlbGVjdGVkTGlzdC52YWx1ZV0pDQogIHZpc2libGUudmFsdWUgPSBmYWxzZQ0KICBFbE1lc3NhZ2Uuc3VjY2Vzcyhg6YCJ5a6a5Yy65Z+f6K6+572u5bey5bqU55So5LqOICR7c2VsZWN0ZWRMaXN0LnZhbHVlLmxlbmd0aH0g5Liq54+t5qyhYCkNCn0NCg0KY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4gew0KICB2aXNpYmxlLnZhbHVlID0gZmFsc2UNCn0NCg=="},{"version":3,"sources":["ClassTeamSelectDialog.vue"],"names":[],"mappings":";AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;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;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA","file":"ClassTeamSelectDialog.vue","sourceRoot":"src/views/teachOffice/shiftSemester","sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, reactive, ref } from 'vue'\r\nimport { ElMessage } from 'element-plus'\r\n\r\n// ==================== Props & Emits ====================\r\nconst props = withDefaults(\r\n defineProps<{\r\n modelValue: boolean\r\n }>(),\r\n {\r\n modelValue: false\r\n }\r\n)\r\n\r\nconst emit = defineEmits<{\r\n (e: 'update:modelValue', value: boolean): void\r\n (e: 'confirm', teams: TeamRow[]): void\r\n}>()\r\n\r\nconst visible = computed({\r\n get: () => props.modelValue,\r\n set: (val) => emit('update:modelValue', val)\r\n})\r\n\r\n// ==================== 查询条件区域 ====================\r\nconst queryForm = reactive({\r\n zyEnabled: false, // 专业启用复选框(未勾选)\r\n zy: '专业219', // 专业(默认值)\r\n njEnabled: true, // 年级启用复选框(已勾选)\r\n nj: '', // 年级(空值)\r\n zxztEnabled: false, // 在校状态启用复选框(未勾选)\r\n zxzt: '毕业', // 在校状态(默认值)\r\n xydmcEnabled: true, // 学员队名称启用复选框(已勾选)\r\n xydmc: '', // 学员队名称(空值)\r\n rwlbEnabled: false, // 任务类别启用复选框(未勾选)\r\n rwlb: '规划内' // 任务类别(默认值)\r\n})\r\n\r\n// ==================== 分页控制区域 ====================\r\nconst currentPage = ref(1)\r\nconst pageSize = ref(1)\r\nconst displaySize = ref(100)\r\n\r\nconst handleQuery = () => {\r\n ElMessage.success('查询(前端演示)')\r\n}\r\nconst handleFirst = () => {\r\n currentPage.value = 1\r\n ElMessage.success('已跳转首页')\r\n}\r\nconst handlePrev = () => {\r\n if (currentPage.value > 1) currentPage.value--\r\n}\r\nconst handleNext = () => {\r\n currentPage.value++\r\n}\r\nconst handleLast = () => {\r\n currentPage.value = teamList.value.length || 1\r\n}\r\nconst handleLocate = () => {\r\n ElMessage.success(`已定位到第 ${currentPage.value} 页`)\r\n}\r\nconst handleSetPageSize = () => {\r\n ElMessage.success(`每页显示条数已设置为 ${displaySize.value}`)\r\n}\r\n\r\n// ==================== 上方数据表格(可选学员队列表) ====================\r\ninterface TeamRow {\r\n xzdbm: string // 行政队别名称\r\n xydmc: string // 学员队名称\r\n nj: string // 年级\r\n zy: string // 专业\r\n rs: number // 人数\r\n zxzt: string // 在校状态\r\n rwlb: string // 任务类别\r\n zyjs: string // 专用教室\r\n rxrq: string // 入学日期\r\n byrq: string // 毕业日期\r\n bz?: string // 备注(下方表格)\r\n}\r\n\r\nconst teamList = ref<TeamRow[]>([\r\n { xzdbm: '教学五系', xydmc: '班次0417', nj: '2016级', zy: '专业113', rs: 36, zxzt: '毕业', rwlb: '规划内', zyjs: '8-011', rxrq: '2016年8月26日', byrq: '2018年1月21日' },\r\n { xzdbm: '教学七系', xydmc: '班次0423', nj: '2016级', zy: '专业114', rs: 9, zxzt: '毕业', rwlb: '规划内', zyjs: '8-212(南楼)', rxrq: '2016年8月26日', byrq: '2018年1月21日' },\r\n { xzdbm: '教学七系', xydmc: '班次0411', nj: '2016级', zy: '专业112', rs: 38, zxzt: '毕业', rwlb: '规划内', zyjs: '6-203', rxrq: '2016年8月26日', byrq: '2018年1月21日' },\r\n { xzdbm: '教学七系', xydmc: '班次0405', nj: '2016级', zy: '专业111', rs: 34, zxzt: '毕业', rwlb: '规划内', zyjs: '8-007', rxrq: '2016年8月26日', byrq: '2018年1月21日' },\r\n { xzdbm: '教学五系', xydmc: '班次0429', nj: '2017级', zy: '专业117', rs: 43, zxzt: '毕业', rwlb: '规划内', zyjs: '6-202', rxrq: '2017年8月24日', byrq: '2019年1月21日' },\r\n { xzdbm: '教学五系', xydmc: '班次0431', nj: '2017级', zy: '专业118', rs: 22, zxzt: '毕业', rwlb: '规划内', zyjs: '2-403', rxrq: '2017年8月24日', byrq: '2019年1月21日' },\r\n { xzdbm: '教学七系', xydmc: '班次0425', nj: '2017级', zy: '专业115', rs: 19, zxzt: '毕业', rwlb: '规划内', zyjs: '2-406', rxrq: '2017年8月24日', byrq: '2019年1月21日' },\r\n { xzdbm: '教学七系', xydmc: '班次0432', nj: '2017级', zy: '专业119', rs: 15, zxzt: '毕业', rwlb: '规划内', zyjs: '8-009(南楼)', rxrq: '2017年8月24日', byrq: '2019年1月21日' },\r\n { xzdbm: '教学七系', xydmc: '班次0434', nj: '2017级', zy: '专业120', rs: 45, zxzt: '毕业', rwlb: '规划内', zyjs: '6-303', rxrq: '2017年8月24日', byrq: '2019年1月21日' },\r\n { xzdbm: '教学六系', xydmc: '班次0427', nj: '2017级', zy: '专业116', rs: 64, zxzt: '毕业', rwlb: '规划内', zyjs: '2-501', rxrq: '2017年8月24日', byrq: '2019年1月21日' }\r\n])\r\n\r\n/** 上方表格多选 */\r\nconst topSelection = ref<TeamRow[]>([])\r\n\r\n// ==================== 下方数据表格(已选学员队列表) ====================\r\nconst selectedList = ref<TeamRow[]>([])\r\nconst bottomSelection = ref<TeamRow[]>([])\r\n\r\n// ==================== 中间操作按钮 ====================\r\n/** 加入:将上方表格选中行加入已选列表(去重) */\r\nconst handleAdd = () => {\r\n if (!topSelection.value.length) {\r\n ElMessage.warning('请先在上方表格选择学员队')\r\n return\r\n }\r\n const existing = new Set(selectedList.value.map((r) => r.xydmc))\r\n let added = 0\r\n topSelection.value.forEach((r) => {\r\n if (!existing.has(r.xydmc)) {\r\n selectedList.value.push({ ...r, bz: '' })\r\n added++\r\n }\r\n })\r\n if (added) ElMessage.success(`已加入 ${added} 个学员队`)\r\n else ElMessage.info('所选学员队已在列表中')\r\n}\r\n\r\n/** 移除:将下方表格选中行移除 */\r\nconst handleRemove = () => {\r\n if (!bottomSelection.value.length) {\r\n ElMessage.warning('请先在下方表格选择要移除的学员队')\r\n return\r\n }\r\n const removeKeys = new Set(bottomSelection.value.map((r) => r.xydmc))\r\n selectedList.value = selectedList.value.filter((r) => !removeKeys.has(r.xydmc))\r\n ElMessage.success(`已移除 ${bottomSelection.value.length} 个学员队`)\r\n}\r\n\r\n/** 清除:清空已选列表 */\r\nconst handleClear = () => {\r\n if (!selectedList.value.length) {\r\n ElMessage.info('已选列表为空')\r\n return\r\n }\r\n selectedList.value = []\r\n ElMessage.success('已清空已选列表')\r\n}\r\n\r\n/** 重置:清空已选列表并重置查询条件 */\r\nconst handleReset = () => {\r\n selectedList.value = []\r\n Object.assign(queryForm, {\r\n zyEnabled: false, zy: '专业219',\r\n njEnabled: true, nj: '',\r\n zxztEnabled: false, zxzt: '毕业',\r\n xydmcEnabled: true, xydmc: '',\r\n rwlbEnabled: false, rwlb: '规划内'\r\n })\r\n currentPage.value = 1\r\n ElMessage.success('已重置')\r\n}\r\n\r\n// ==================== 底部按钮 ====================\r\nconst handleConfirm = () => {\r\n if (!selectedList.value.length) {\r\n ElMessage.warning('请先选择要应用的学员队')\r\n return\r\n }\r\n emit('confirm', [...selectedList.value])\r\n visible.value = false\r\n ElMessage.success(`选定区域设置已应用于 ${selectedList.value.length} 个班次`)\r\n}\r\n\r\nconst handleCancel = () => {\r\n visible.value = false\r\n}\r\n</script>\r\n\r\n<template>\r\n <el-dialog\r\n v-model=\"visible\"\r\n title=\"学员队选取\"\r\n width=\"90%\"\r\n top=\"5vh\"\r\n :close-on-click-modal=\"false\"\r\n destroy-on-close\r\n class=\"team-select-dialog\"\r\n >\r\n <div class=\"team-select\">\r\n <!-- ==================== 1. 查询条件区域 ==================== -->\r\n <div class=\"query-panel\">\r\n <el-form label-width=\"88px\" class=\"query-form\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"专业\">\r\n <div class=\"check-field\">\r\n <el-checkbox v-model=\"queryForm.zyEnabled\" />\r\n <el-select v-model=\"queryForm.zy\" :disabled=\"!queryForm.zyEnabled\" style=\"flex: 1\">\r\n <el-option v-for=\"opt in ['专业219', '专业220', '专业221']\" :key=\"opt\" :label=\"opt\" :value=\"opt\" />\r\n </el-select>\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"年级\">\r\n <div class=\"check-field\">\r\n <el-checkbox v-model=\"queryForm.njEnabled\" />\r\n <el-input v-model=\"queryForm.nj\" :disabled=\"!queryForm.njEnabled\" placeholder=\"\" />\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"在校状态\">\r\n <div class=\"check-field\">\r\n <el-checkbox v-model=\"queryForm.zxztEnabled\" />\r\n <el-select v-model=\"queryForm.zxzt\" :disabled=\"!queryForm.zxztEnabled\" style=\"flex: 1\">\r\n <el-option v-for=\"opt in ['毕业', '在校']\" :key=\"opt\" :label=\"opt\" :value=\"opt\" />\r\n </el-select>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"学员队名称\">\r\n <div class=\"check-field\">\r\n <el-checkbox v-model=\"queryForm.xydmcEnabled\" />\r\n <el-input v-model=\"queryForm.xydmc\" :disabled=\"!queryForm.xydmcEnabled\" placeholder=\"\" />\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"任务类别\">\r\n <div class=\"check-field\">\r\n <el-checkbox v-model=\"queryForm.rwlbEnabled\" />\r\n <el-select v-model=\"queryForm.rwlb\" :disabled=\"!queryForm.rwlbEnabled\" style=\"flex: 1\">\r\n <el-option v-for=\"opt in ['规划内', '规划外']\" :key=\"opt\" :label=\"opt\" :value=\"opt\" />\r\n </el-select>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n\r\n <!-- 分页控制区域 -->\r\n <div class=\"pager-row\">\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleQuery\">查询(Q)</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleFirst\">首页(F)</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handlePrev\">上页(P)</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleNext\">下页(N)</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleLast\">末页(L)</button>\r\n <el-input-number v-model=\"currentPage\" :min=\"1\" size=\"small\" controls-position=\"right\" style=\"width: 90px\" />\r\n <span class=\"pager-label\">每页条数</span>\r\n <el-select v-model=\"pageSize\" size=\"small\" style=\"width: 70px\">\r\n <el-option v-for=\"n in [1, 5, 10, 20]\" :key=\"n\" :label=\"String(n)\" :value=\"n\" />\r\n </el-select>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleLocate\">定位</button>\r\n <el-select v-model=\"displaySize\" size=\"small\" style=\"width: 80px\">\r\n <el-option v-for=\"n in [50, 100, 200]\" :key=\"n\" :label=\"String(n)\" :value=\"n\" />\r\n </el-select>\r\n <button type=\"button\" class=\"blue-btn\" @click=\"handleSetPageSize\">设置页项数</button>\r\n </div>\r\n </div>\r\n\r\n <!-- ==================== 2. 上方数据表格 ==================== -->\r\n <div class=\"table-panel\">\r\n <el-table\r\n :data=\"teamList\"\r\n border\r\n stripe\r\n highlight-current-row\r\n size=\"small\"\r\n class=\"team-table\"\r\n @selection-change=\"(rows: TeamRow[]) => (topSelection = rows)\"\r\n >\r\n <el-table-column type=\"selection\" width=\"40\" align=\"center\" />\r\n <el-table-column prop=\"xzdbm\" label=\"行政队别名称\" width=\"100\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"xydmc\" label=\"学员队名称\" width=\"90\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"nj\" label=\"年级\" width=\"70\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"zy\" label=\"专业\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column label=\"人数\" width=\"60\" align=\"center\">\r\n <template #default=\"{ row }\">{{ (row as TeamRow).rs }}人</template>\r\n </el-table-column>\r\n <el-table-column prop=\"zxzt\" label=\"在校状态\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"rwlb\" label=\"任务类别\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"zyjs\" label=\"专用教室\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"rxrq\" label=\"入学日期\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"byrq\" label=\"毕业日期\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n </el-table>\r\n </div>\r\n\r\n <!-- ==================== 3. 中间操作按钮区域 ==================== -->\r\n <div class=\"mid-actions\">\r\n <span class=\"mid-label\">已选择列表项</span>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleAdd\">加入</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleRemove\">移除</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleClear\">清除</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleReset\">重置</button>\r\n </div>\r\n\r\n <!-- ==================== 4. 下方数据表格(已选学员队列表) ==================== -->\r\n <div class=\"table-panel\">\r\n <el-table\r\n :data=\"selectedList\"\r\n border\r\n stripe\r\n size=\"small\"\r\n class=\"team-table\"\r\n @selection-change=\"(rows: TeamRow[]) => (bottomSelection = rows)\"\r\n >\r\n <el-table-column type=\"selection\" width=\"40\" align=\"center\" />\r\n <el-table-column prop=\"zy\" label=\"专业\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"xydmc\" label=\"学员队名称\" width=\"90\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"nj\" label=\"年级\" width=\"70\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column label=\"人数\" width=\"60\" align=\"center\">\r\n <template #default=\"{ row }\">{{ (row as TeamRow).rs }}人</template>\r\n </el-table-column>\r\n <el-table-column prop=\"rwlb\" label=\"任务类别\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"zxzt\" label=\"在校状态\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"zyjs\" label=\"专用教室\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"rxrq\" label=\"入学日期\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"byrq\" label=\"毕业日期\" width=\"120\" align=\"center\" show-overflow-tooltip />\r\n <el-table-column prop=\"bz\" label=\"备注\" width=\"80\" align=\"center\" show-overflow-tooltip />\r\n </el-table>\r\n <el-empty v-if=\"!selectedList.length\" description=\"暂无已选学员队,请从上方表格加入\" :image-size=\"60\" />\r\n </div>\r\n\r\n <!-- ==================== 5. 底部按钮区域 ==================== -->\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleConfirm\">确定</button>\r\n <button type=\"button\" class=\"gray-btn\" @click=\"handleCancel\">取消</button>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.team-select {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n\r\n // ========== 1. 查询条件区域 ==========\r\n .query-panel {\r\n background: #fff;\r\n border: 1px solid #ebeef5;\r\n border-radius: 4px;\r\n padding: 12px 16px 8px;\r\n\r\n .query-form {\r\n .check-field {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n }\r\n\r\n .pager-row {\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n padding-top: 10px;\r\n border-top: 1px solid #ebeef5;\r\n margin-top: 4px;\r\n\r\n .pager-label {\r\n font-size: 13px;\r\n color: #606266;\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n\r\n // ========== 2/4. 表格区域 ==========\r\n .table-panel {\r\n position: relative;\r\n background: #fff;\r\n border: 1px solid #ebeef5;\r\n border-radius: 4px;\r\n padding: 10px;\r\n overflow: hidden;\r\n\r\n .team-table {\r\n width: 100%;\r\n }\r\n\r\n :deep(.el-empty) {\r\n padding: 12px 0;\r\n }\r\n }\r\n\r\n // ========== 3. 中间操作按钮区域 ==========\r\n .mid-actions {\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n\r\n .mid-label {\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: #303133;\r\n white-space: nowrap;\r\n margin-right: 4px;\r\n }\r\n }\r\n\r\n // ========== 5. 底部按钮区域 ==========\r\n .footer-actions {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 8px;\r\n padding-top: 12px;\r\n border-top: 1px solid #ebeef5;\r\n }\r\n\r\n // ========== 银灰色 / 蓝色边框按钮 ==========\r\n .gray-btn {\r\n min-width: 70px;\r\n height: 28px;\r\n padding: 0 14px;\r\n font-size: 12px;\r\n color: #000;\r\n background: linear-gradient(180deg, #fdfdfd 0%, #ececec 50%, #dcdcdc 100%);\r\n border: 1px solid #7a7a7a;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: linear-gradient(180deg, #ffffff 0%, #f4f4f4 50%, #e6e6e6 100%);\r\n }\r\n\r\n &:active {\r\n background: #c8c8c8;\r\n }\r\n }\r\n\r\n .blue-btn {\r\n min-width: 110px;\r\n height: 28px;\r\n padding: 0 14px;\r\n font-size: 12px;\r\n color: #1e6fff;\r\n background: #ecf5ff;\r\n border: 1px solid #1e6fff;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: #d9ecff;\r\n }\r\n\r\n &:active {\r\n background: #c6e2ff;\r\n }\r\n }\r\n}\r\n</style>\r\n"]}]}