CodeMaster/node_modules/.cache/vue-loader/09b9ac55311be37fd73ba61bc8ac1d83.json
2025-04-06 21:59:05 +08:00

1 line
38 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/account/center/index.vue?vue&type=style&index=0&id=706b9d54&lang=less&scoped=true","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/account/center/index.vue","mtime":1743943089632},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/css-loader/dist/cjs.js","mtime":1743264596127},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/loaders/stylePostLoader.js","mtime":1743264597030},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/postcss-loader/src/index.js","mtime":1743264596321},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/less-loader/dist/cjs.js","mtime":1743264596730},{"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:Ci8qIOiuuuWdm+S4quS6uuS4reW/g+e+juWMluagt+W8jyAqLwoKLyog5pW05L2T6aG16Z2i6IOM5pmvICovCi5wYWdlLWhlYWRlci13cmFwcGVyLWdyaWQtY29udGVudC1tYWluIHsKICB3aWR0aDogMTAwJTsKICBtaW4taGVpZ2h0OiAxMDB2aDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmOGZhOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgKICAgIHRvIGJvdHRvbSwKICAgIHJnYmEoMjQwLCAyNDQsIDI0OCwgMC44KSwKICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KQogICk7CiAgcGFkZGluZzogMjRweDsKfQoKLyog5Y2h54mH6YCa55So5qC35byPICovCi5hbnQtY2FyZCB7CiAgYm9yZGVyLXJhZGl1czogMTZweDsKICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgYm9yZGVyOiBub25lOwp9CgouYW50LWNhcmQ6aG92ZXIgewogIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7Cn0KCi8qIOW3puS+p+S4quS6uuS/oeaBr+WNoeeJhyAqLwouYWNjb3VudC1jZW50ZXItYXZhdGFySG9sZGVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAzMnB4IDAgMTZweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi8qIOiDjOaZr+ijhemlsCAqLwouYWNjb3VudC1jZW50ZXItYXZhdGFySG9sZGVyOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBoZWlnaHQ6IDEyMHB4OwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNjkwY2YsICMyYTc4YjgpOwogIHotaW5kZXg6IDA7CiAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDUwJSA1MCUgLyAxNnB4IDE2cHggMjUlIDI1JTsKfQoKLyog5aS05YOP5qC35byPICovCi5hY2NvdW50LWNlbnRlci1hdmF0YXJIb2xkZXIgLmF2YXRhciB7CiAgd2lkdGg6IDEyMHB4OwogIGhlaWdodDogMTIwcHg7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgYm9yZGVyOiA1cHggc29saWQgI2ZmZjsKICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwogIGJhY2tncm91bmQ6ICNmZmY7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmFjY291bnQtY2VudGVyLWF2YXRhckhvbGRlciAuYXZhdGFyOmhvdmVyIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogIGJveC1zaGFkb3c6IDAgMTBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KCi5hY2NvdW50LWNlbnRlci1hdmF0YXJIb2xkZXIgLmF2YXRhciBpbWcgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBvYmplY3QtZml0OiBjb3ZlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlOwp9CgouYWNjb3VudC1jZW50ZXItYXZhdGFySG9sZGVyIC5hdmF0YXI6aG92ZXIgaW1nIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7Cn0KCi8qIOeUqOaIt+WQjeagt+W8jyAqLwouYWNjb3VudC1jZW50ZXItYXZhdGFySG9sZGVyIC51c2VybmFtZSB7CiAgY29sb3I6ICMyYzNlNTA7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogOHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwp9CgovKiDouqvku73moIfnrb4gKi8KLmFjY291bnQtY2VudGVyLWF2YXRhckhvbGRlciAuYmlvIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZzogNHB4IDEycHg7CiAgYmFja2dyb3VuZDogcmdiYSg1NCwgMTQ0LCAyMDcsIDAuMSk7CiAgY29sb3I6ICMzNjkwY2Y7CiAgYm9yZGVyLXJhZGl1czogMjBweDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7Cn0KCi8qIOWIhuWJsue6v+e+juWMliAqLwouYW50LWRpdmlkZXIgewogIG1hcmdpbjogMjRweCAwOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA2KTsKfQoKLmFudC1kaXZpZGVyLWRhc2hlZCB7CiAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDkpOwp9CgovKiDmoIfnrb7ljLrln58gKi8KLmFjY291bnQtY2VudGVyLXRhZ3MgewogIHBhZGRpbmc6IDAgMTZweDsKfQoKLmFjY291bnQtY2VudGVyLXRhZ3MgLnRhZ3NUaXRsZSB7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgY29sb3I6ICMyYzNlNTA7CiAgbWFyZ2luLWJvdHRvbTogMTZweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy1sZWZ0OiAxMnB4Owp9CgouYWNjb3VudC1jZW50ZXItdGFncyAudGFnc1RpdGxlOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDRweDsKICBiYWNrZ3JvdW5kOiAjMzY5MGNmOwogIGJvcmRlci1yYWRpdXM6IDJweDsKfQoKLyog5qCH562+5qC35byPICovCi5hbnQtdGFnIHsKICBtYXJnaW46IDAgOHB4IDhweCAwOwogIHBhZGRpbmc6IDRweCAxMnB4OwogIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kOiAjZjBmMmY1OwogIGNvbG9yOiAjNTU1OwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwp9CgouYW50LXRhZzpob3ZlciB7CiAgYmFja2dyb3VuZDogI2U2ZjdmZjsKICBjb2xvcjogIzM2OTBjZjsKfQoKLyog5paw5aKe5qCH562+5oyJ6ZKuICovCi5hbnQtdGFnLWRhc2hlZCB7CiAgYm9yZGVyOiAxcHggZGFzaGVkICNkOWQ5ZDk7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7Cn0KCi5hbnQtdGFnLWRhc2hlZDpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjMzY5MGNmOwogIGNvbG9yOiAjMzY5MGNmOwp9CgovKiDmr5TotZvljLrln58gKi8KLmFjY291bnQtY2VudGVyLXRlYW0gewogIHBhZGRpbmc6IDAgMTZweDsKfQoKLmFjY291bnQtY2VudGVyLXRlYW0gLnRlYW1UaXRsZSB7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgY29sb3I6ICMyYzNlNTA7CiAgbWFyZ2luLWJvdHRvbTogMTZweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy1sZWZ0OiAxMnB4Owp9CgouYWNjb3VudC1jZW50ZXItdGVhbSAudGVhbVRpdGxlOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDRweDsKICBiYWNrZ3JvdW5kOiAjMzY5MGNmOwogIGJvcmRlci1yYWRpdXM6IDJweDsKfQoKLyog5q+U6LWb5Y2h54mH5qC35byPICovCi5tZW1iZXJzIHsKICBtYXJnaW4tYm90dG9tOiAxNnB4OwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwp9CgoubWVtYmVycyAuYW50LXRhZyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbjogNXB4OwogIHBhZGRpbmc6IDZweCAxMnB4OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBmb250LXNpemU6IDE0cHg7CiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7Cn0KCi5tZW1iZXJzIC5hbnQtdGFnOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTIpOwp9CgovKiDlj7PkvqfpgInpobnljaHmoLflvI8gKi8KLmFudC10YWJzLWJhciB7CiAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICBtYXJnaW4tYm90dG9tOiAyNHB4Owp9CgouYW50LXRhYnMtbmF2IHsKICBtYXJnaW46IDAgYXV0byAxNnB4OwogIHdpZHRoOiBmaXQtY29udGVudDsKICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwogIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgcGFkZGluZzogNHB4Owp9CgouYW50LXRhYnMtdGFiIHsKICBtYXJnaW46IDAgIWltcG9ydGFudDsKICBwYWRkaW5nOiA4cHggMjRweCAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDUwcHggIWltcG9ydGFudDsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICBmb250LXdlaWdodDogNTAwOwp9CgouYW50LXRhYnMtdGFiLWFjdGl2ZSB7CiAgYmFja2dyb3VuZDogIzM2OTBjZiAhaW1wb3J0YW50OwogIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9CgovKiDmlofnq6DliJfooajmoLflvI8gKi8KLmFydGljbGUtbGlzdCB7CiAgcGFkZGluZzogMTZweDsKfQoKLmFydGljbGUtaXRlbSB7CiAgZGlzcGxheTogZmxleDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJhY2tncm91bmQ6IHdoaXRlOwogIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7Cn0KCi5hcnRpY2xlLWl0ZW06aG92ZXIgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICBib3gtc2hhZG93OiAwIDhweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoKLmFydGljbGUtY292ZXIgewogIHdpZHRoOiAyMDBweDsKICBoZWlnaHQ6IDEzNHB4OwogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5hcnRpY2xlLWNvdmVyIGltZyB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzOwp9CgouYXJ0aWNsZS1pdGVtOmhvdmVyIC5hcnRpY2xlLWNvdmVyIGltZyB7CiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwp9CgouYXJ0aWNsZS1jb250ZW50IHsKICBmbGV4OiAxOwogIHBhZGRpbmc6IDE2cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYXJ0aWNsZS10aXRsZSB7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogOHB4OwogIGNvbG9yOiAjMzMzOwp9CgouYXJ0aWNsZS1kZXNjcmlwdGlvbiB7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiAjNjY2OwogIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDEuNjsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogIC13ZWJraXQtbGluZS1jbGFtcDogMjsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgouYXJ0aWNsZS1tZXRhIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAxNnB4OwogIGxlZnQ6IDE2cHg7CiAgcmlnaHQ6IDE2cHg7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgZm9udC1zaXplOiAxMnB4OwogIGNvbG9yOiAjOTk5Owp9CgovKiDmlbDmja7nu5/orqHljaHniYcgKi8KLmRhdGEtc3RhdHMgewogIGRpc3BsYXk6IGZsZXg7CiAgbWFyZ2luLWJvdHRvbTogMjRweDsKfQoKLnN0YXQtY2FyZCB7CiAgZmxleDogMTsKICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIHBhZGRpbmc6IDE2cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG1hcmdpbjogMCA4cHg7CiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwp9Cgouc3RhdC1jYXJkOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgYm94LXNoYWRvdzogMCA4cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi5zdGF0LW51bWJlciB7CiAgZm9udC1zaXplOiAzMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgY29sb3I6ICMzNjkwY2Y7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Cgouc3RhdC10aXRsZSB7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiAjNjY2Owp9CgovKiDlk43lupTlvI/osIPmlbQgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgLmFydGljbGUtY292ZXIgewogICAgd2lkdGg6IDEyMHB4OwogIH0KCiAgLnN0YXQtY2FyZCB7CiAgICBwYWRkaW5nOiAxMnB4OwogIH0KCiAgLnN0YXQtbnVtYmVyIHsKICAgIGZvbnQtc2l6ZTogMjRweDsKICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgewogIC5hcnRpY2xlLWl0ZW0gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICB9CgogIC5hcnRpY2xlLWNvdmVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxODBweDsKICB9CgogIC5kYXRhLXN0YXRzIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICB9CgogIC5zdGF0LWNhcmQgewogICAgZmxleDogMCAwIGNhbGMoNTAlIC0gMTZweCk7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogIH0KfQoKLyog5oKs5rWu5pWI5p6cICovCi5ob3Zlci1jYXJkIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmhvdmVyLWNhcmQ6OmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpIHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNnM7Cn0KCi5ob3Zlci1jYXJkOmhvdmVyOjphZnRlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHJvdGF0ZSg0NWRlZyk7Cn0KCi8qIOWKqOeUu+aViOaenCAqLwpAa2V5ZnJhbWVzIGZhZGVJblVwIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgouYW5pbWF0ZS1mYWRlLWluLXVwIHsKICBhbmltYXRpb246IGZhZGVJblVwIDAuNnMgZWFzZSBmb3J3YXJkczsKfQoKLyog5pu05aSa6Ieq5a6a5LmJ5qC35byPICovCi5jdXN0b20tc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgd2lkdGg6IDZweDsKICBoZWlnaHQ6IDZweDsKfQoKLmN1c3RvbS1zY3JvbGxiYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kOiAjZjFmMWYxOwogIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KCi5jdXN0b20tc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgYmFja2dyb3VuZDogI2MxYzFjMTsKICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgouY3VzdG9tLXNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogIGJhY2tncm91bmQ6ICMzNjkwY2Y7Cn0KCi8qIOmXquWFiei+ueahhuaViOaenCAqLwouZ2xvdy1ib3JkZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmdsb3ctYm9yZGVyOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC0ycHg7CiAgbGVmdDogLTJweDsKICByaWdodDogLTJweDsKICBib3R0b206IC0ycHg7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjMzY5MGNmLCAjNmRjNmZmLCAjMzY5MGNmKTsKICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMjAwJTsKICB6LWluZGV4OiAtMTsKICBib3JkZXItcmFkaXVzOiAxOHB4OwogIGFuaW1hdGlvbjogZ2xvd2luZ0JvcmRlciAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICBvcGFjaXR5OiAwOwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOwp9CgouZ2xvdy1ib3JkZXI6aG92ZXI6OmJlZm9yZSB7CiAgb3BhY2l0eTogMTsKfQoKQGtleWZyYW1lcyBnbG93aW5nQm9yZGVyIHsKICAwJSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7CiAgfQogIDUwJSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDUwJTsKICB9CiAgMTAwJSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7CiAgfQp9Cg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AA8eA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/account/center","sourcesContent":["<template>\n <div class=\"page-header-wrapper-grid-content-main custom-scrollbar\">\n <!-- 数据统计卡片 -->\n <div class=\"data-stats animate-fade-in-up\">\n <div class=\"stat-card glow-border\">\n <div class=\"stat-number\">{{ articleCount }}</div>\n <div class=\"stat-title\">发布文章</div>\n </div>\n <div class=\"stat-card glow-border\">\n <div class=\"stat-number\">{{ viewCount }}</div>\n <div class=\"stat-title\">文章浏览</div>\n </div>\n <div class=\"stat-card glow-border\">\n <div class=\"stat-number\">{{ likeCount }}</div>\n <div class=\"stat-title\">获得点赞</div>\n </div>\n <div class=\"stat-card glow-border\">\n <div class=\"stat-number\">{{ matchs.length }}</div>\n <div class=\"stat-title\">参与比赛</div>\n </div>\n </div>\n\n <a-row :gutter=\"24\">\n <a-col :md=\"24\" :lg=\"8\">\n <a-card\n :bordered=\"false\"\n class=\"hover-card animate-fade-in-up\"\n style=\"animation-delay: 0.1s\"\n >\n <div class=\"account-center-avatarHolder\">\n <div class=\"avatar\">\n <img\n :src=\"src=\"https://onlinephoto.oss-cn-chengdu.aliyuncs.com/hangtian/touxiang.jpg\"\n data-src=\"//www.cmstui.com/wp-content/themes/zibll/img/avatar-default.png\"\n class=\"lazyload avatar avatar-id-1\"\" alt=\"用户头像\" />\n </div>\n <div class=\"username\">{{ $store.state.user.userName }}</div>\n <div class=\"bio\">{{ shenfen }}</div>\n </div>\n\n <a-divider />\n\n <div class=\"account-center-tags\">\n <div class=\"tagsTitle\">个人标签</div>\n <div>\n <template v-for=\"(tag, index) in tags\">\n <a-tooltip v-if=\"tag.length > 20\" :key=\"tag\" :title=\"tag\">\n <a-tag\n :key=\"tag\"\n :closable=\"index !== 0\"\n @close=\"() => handleTagClose(tag)\"\n >{{ `${tag.slice(0, 20)}...` }}</a-tag\n >\n </a-tooltip>\n <a-tag\n v-else\n :key=\"tag\"\n :closable=\"index !== 0\"\n @close=\"() => handleTagClose(tag)\"\n >{{ tag }}</a-tag\n >\n </template>\n <a-input\n v-if=\"tagInputVisible\"\n ref=\"tagInput\"\n type=\"text\"\n size=\"small\"\n :style=\"{ width: '78px' }\"\n :value=\"tagInputValue\"\n @change=\"handleInputChange\"\n @blur=\"handleTagInputConfirm\"\n @keyup.enter=\"handleTagInputConfirm\"\n />\n <a-tag\n v-else\n @click=\"showTagInput\"\n style=\"background: #fff; borderstyle: dashed\"\n >\n <a-icon type=\"plus\" />添加标签\n </a-tag>\n </div>\n </div>\n\n <a-divider :dashed=\"true\" />\n\n <div class=\"account-center-team\">\n <div class=\"teamTitle\">我的比赛</div>\n <a-empty v-if=\"matchs.length === 0\" description=\"暂无参赛记录\" />\n <a-spin :spinning=\"teamSpinning\">\n <div class=\"members\" v-for=\"(item, index) in matchs\" :key=\"index\">\n <a-card\n class=\"match-card\"\n :bordered=\"false\"\n :bodyStyle=\"{ padding: '12px' }\"\n >\n <div class=\"match-title\">\n <a-icon\n type=\"trophy\"\n :style=\"{ color: colors[index % colors.length] }\"\n />\n <span>{{ item.competitionName }}</span>\n </div>\n <div class=\"match-info\">\n <a-tag :color=\"colors[index % colors.length]\">\n {{ item.competitionType }}\n </a-tag>\n <span class=\"match-date\">{{\n formatDate(item.registrationTime)\n }}</span>\n </div>\n </a-card>\n </div>\n </a-spin>\n </div>\n </a-card>\n </a-col>\n\n <a-col :md=\"24\" :lg=\"16\">\n <a-card\n class=\"animate-fade-in-up\"\n style=\"animation-delay: 0.2s; width: 100%\"\n :bordered=\"false\"\n :tabList=\"tabListNoTitle\"\n :activeTabKey=\"noTitleKey\"\n @tabChange=\"(key) => handleTabChange(key, 'noTitleKey')\"\n >\n <div v-if=\"noTitleKey === 'article'\">\n <!-- 文章筛选和排序 -->\n <div class=\"article-filter\">\n <a-radio-group\n v-model=\"articleFilter\"\n buttonStyle=\"solid\"\n @change=\"filterArticles\"\n >\n <a-radio-button value=\"all\">全部文章</a-radio-button>\n <a-radio-button value=\"hot\">热门文章</a-radio-button>\n <a-radio-button value=\"recent\">最近发布</a-radio-button>\n </a-radio-group>\n\n <a-button type=\"primary\" icon=\"plus\" @click=\"createNewArticle\">\n 发布文章\n </a-button>\n </div>\n\n <!-- 文章列表 -->\n <div class=\"article-list\">\n <a-empty v-if=\"articles.length === 0\" description=\"暂无文章\" />\n <div v-else>\n <div\n class=\"article-item\"\n v-for=\"(article, index) in articles\"\n :key=\"index\"\n @click=\"viewArticle(article.id)\"\n >\n <div class=\"article-cover\">\n <img :src=\"getArticleImage(article)\" :alt=\"article.title\" />\n </div>\n <div class=\"article-content\">\n <div class=\"article-title\">{{ article.articleTitle }}</div>\n <div\n class=\"article-description\"\n v-html=\"getArticleExcerpt(article.articleContent)\"\n ></div>\n <div class=\"article-meta\">\n <div class=\"article-date\">\n <a-icon type=\"calendar\" />\n {{ formatDate(article.publishTime) }}\n </div>\n <div class=\"article-stats\">\n <span\n ><a-icon type=\"eye\" />\n {{ article.viewCount || 0 }}</span\n >\n <span style=\"margin-left: 16px\"\n ><a-icon type=\"like\" />\n {{ article.likeCount || 0 }}</span\n >\n <span style=\"margin-left: 16px\"\n ><a-icon type=\"message\" />\n {{ article.commentCount || 0 }}</span\n >\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- 分页 -->\n <div class=\"pagination-container\" v-if=\"articles.length > 0\">\n <a-pagination\n :current=\"current\"\n :pageSize=\"pageSize\"\n :total=\"total\"\n @change=\"handlePageChange\"\n showQuickJumper\n :showSizeChanger=\"true\"\n :pageSizeOptions=\"['6', '12', '24', '36']\"\n @showSizeChange=\"onShowSizeChange\"\n />\n </div>\n </div>\n </div>\n\n <!-- 其他标签页内容 -->\n <div v-else-if=\"noTitleKey === 'app'\">\n <a-empty description=\"功能开发中...\" />\n </div>\n\n <div v-else-if=\"noTitleKey === 'project'\">\n <a-empty description=\"功能开发中...\" />\n </div>\n </a-card>\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script>\nimport PageView from \"../../../layouts/PageView.vue\";\nimport RouteView from \"../../../layouts/RouteView.vue\";\nimport { AppPage, ArticlePage, ProjectPage } from \"./page\";\nimport { mapGetters } from \"vuex\";\n\nexport default {\n components: {\n RouteView,\n PageView,\n AppPage,\n ArticlePage,\n ProjectPage,\n },\n data() {\n return {\n userimg: this.$store.state.avatar,\n tags: [\"技术爱好者\", \"前端开发\", \"生活记录\"],\n tagInputVisible: false,\n tagInputValue: \"\",\n teamSpinning: true,\n shenfen: \"\",\n tabListNoTitle: [\n {\n key: \"article\",\n tab: \"我的文章\",\n },\n {\n key: \"app\",\n tab: \"我的收藏\",\n },\n {\n key: \"project\",\n tab: \"我的评论\",\n },\n ],\n noTitleKey: \"article\",\n matchs: [],\n colors: [\"#f50\", \"#2db7f5\", \"#87d068\", \"#108ee9\", \"#722ed1\"],\n\n // 文章相关数据\n articles: [],\n current: 1,\n pageSize: 6,\n total: 0,\n articleFilter: \"all\",\n\n // 统计数据\n articleCount: 0,\n viewCount: 0,\n likeCount: 0,\n };\n },\n computed: {\n ...mapGetters([\"nickname\", \"avatar\"]),\n },\n mounted() {\n // 设置用户身份\n if (this.$store.state.user.userPrivileges == 0) {\n this.shenfen = \"管理员\";\n } else if (this.$store.state.user.userPrivileges == 1) {\n this.shenfen = \"教师\";\n } else {\n this.shenfen = \"学生\";\n }\n\n // 获取比赛信息\n this.fetchCompetitions();\n\n // 获取文章列表\n this.fetchArticles();\n\n // 获取统计数据\n this.fetchStats();\n },\n methods: {\n // 获取比赛信息\n fetchCompetitions() {\n this.teamSpinning = true;\n this.$api\n .RegistrationAll()\n .then((res) => {\n this.matchs = res.data.filter((match) => {\n return match.studentId == this.$store.state.user.userId;\n });\n this.teamSpinning = false;\n })\n .catch((err) => {\n console.error(\"获取比赛信息失败:\", err);\n this.teamSpinning = false;\n });\n },\n\n // 获取文章列表\n fetchArticles() {\n this.$api\n .AllArticle()\n .then((res) => {\n // 过滤出当前用户的文章\n const userArticles = res.data.filter((article) => {\n return article.userId === this.$store.state.user.userId;\n });\n\n // 根据筛选条件排序\n this.filterArticlesByCondition(userArticles);\n\n // 设置总数\n this.total = userArticles.length;\n this.articleCount = userArticles.length;\n\n // 计算总浏览量和点赞数\n this.calculateStats(userArticles);\n })\n .catch((err) => {\n console.error(\"获取文章列表失败:\", err);\n });\n },\n\n // 根据筛选条件过滤文章\n filterArticlesByCondition(articles) {\n let filteredArticles = [...articles];\n\n // 应用筛选条件\n switch (this.articleFilter) {\n case \"hot\":\n // 按热度(浏览量)排序\n filteredArticles.sort(\n (a, b) => (b.viewCount || 0) - (a.viewCount || 0)\n );\n break;\n case \"recent\":\n // 按发布时间排序\n filteredArticles.sort(\n (a, b) => new Date(b.publishTime) - new Date(a.publishTime)\n );\n break;\n default:\n // 默认按发布时间排序\n filteredArticles.sort(\n (a, b) => new Date(b.publishTime) - new Date(a.publishTime)\n );\n }\n\n // 分页处理\n const startIndex = (this.current - 1) * this.pageSize;\n const endIndex = startIndex + this.pageSize;\n this.articles = filteredArticles.slice(startIndex, endIndex);\n },\n\n // 计算统计数据\n calculateStats(articles) {\n this.viewCount = articles.reduce(\n (sum, article) => sum + (article.viewCount || 0),\n 0\n );\n this.likeCount = articles.reduce(\n (sum, article) => sum + (article.likeCount || 0),\n 0\n );\n },\n\n // 获取统计数据\n fetchStats() {\n // 如果有专门的API可以在这里调用\n },\n\n // 筛选文章\n filterArticles() {\n this.current = 1; // 重置页码\n this.fetchArticles();\n },\n\n // 分页处理\n handlePageChange(page) {\n this.current = page;\n this.fetchArticles();\n },\n\n // 每页显示数量变化\n onShowSizeChange(current, size) {\n this.current = 1;\n this.pageSize = size;\n this.fetchArticles();\n },\n\n // 获取文章封面图\n getArticleImage(article) {\n if (!article.articleContent) return require(\"@/assets/bg.svg\");\n\n // 从文章内容中提取图片\n const imageRegex = /(http[s]?:\\/\\/[^(\\s|\")]+\\.(png|jpg|jpeg|gif|webp))/gi;\n const matches = article.articleContent.match(imageRegex);\n\n // 如果找到图片,返回第一张\n if (matches && matches.length > 0) {\n return matches[0];\n }\n\n const randomSeed = Math.floor(Math.random() * 10000);\n\n // 如果没有找到匹配的图片,可以使用随机图片\n return \"https://tu.ltyuanfang.cn/api/fengjing.php?\" + randomSeed;\n },\n\n // 获取文章摘要\n getArticleExcerpt(content) {\n if (!content) return \"\";\n\n // 移除HTML标签\n const plainText = content.replace(/<[^>]+>/g, \"\");\n\n // 截取前100个字符作为摘要\n return (\n plainText.substring(0, 100) + (plainText.length > 100 ? \"...\" : \"\")\n );\n },\n\n // 格式化日期\n formatDate(dateString) {\n if (!dateString) return \"\";\n\n const date = new Date(dateString);\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(\n 2,\n \"0\"\n )}-${String(date.getDate()).padStart(2, \"0\")}`;\n },\n\n // 查看文章详情\n viewArticle(id) {\n this.$router.push(`/community/pages?id=${id}`);\n },\n\n // 创建新文章\n createNewArticle() {\n this.$router.push(\"/write\");\n },\n\n // 标签相关方法\n handleTabChange(key, type) {\n this[type] = key;\n },\n\n handleTagClose(removeTag) {\n const tags = this.tags.filter((tag) => tag !== removeTag);\n this.tags = tags;\n },\n\n showTagInput() {\n this.tagInputVisible = true;\n this.$nextTick(() => {\n this.$refs.tagInput.focus();\n });\n },\n\n handleInputChange(e) {\n this.tagInputValue = e.target.value;\n },\n\n handleTagInputConfirm() {\n const inputValue = this.tagInputValue;\n let tags = this.tags;\n if (inputValue && !tags.includes(inputValue)) {\n tags = [...tags, inputValue];\n }\n\n Object.assign(this, {\n tags,\n tagInputVisible: false,\n tagInputValue: \"\",\n });\n },\n },\n};\n</script>\n\n<style lang=\"less\" scoped>\n/* 论坛个人中心美化样式 */\n\n/* 整体页面背景 */\n.page-header-wrapper-grid-content-main {\n width: 100%;\n min-height: 100vh;\n background-color: #f6f8fa;\n background-image: linear-gradient(\n to bottom,\n rgba(240, 244, 248, 0.8),\n rgba(255, 255, 255, 0.8)\n );\n padding: 24px;\n}\n\n/* 卡片通用样式 */\n.ant-card {\n border-radius: 16px;\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n transition: all 0.4s ease;\n margin-bottom: 24px;\n border: none;\n}\n\n.ant-card:hover {\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n transform: translateY(-5px);\n}\n\n/* 左侧个人信息卡片 */\n.account-center-avatarHolder {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 32px 0 16px;\n position: relative;\n}\n\n/* 背景装饰 */\n.account-center-avatarHolder::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 120px;\n background: linear-gradient(135deg, #3690cf, #2a78b8);\n z-index: 0;\n border-radius: 16px 16px 50% 50% / 16px 16px 25% 25%;\n}\n\n/* 头像样式 */\n.account-center-avatarHolder .avatar {\n width: 120px;\n height: 120px;\n border-radius: 50%;\n margin-bottom: 24px;\n border: 5px solid #fff;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n position: relative;\n z-index: 1;\n background: #fff;\n transition: all 0.3s ease;\n}\n\n.account-center-avatarHolder .avatar:hover {\n transform: scale(1.05);\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);\n}\n\n.account-center-avatarHolder .avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: all 0.5s ease;\n}\n\n.account-center-avatarHolder .avatar:hover img {\n transform: scale(1.1);\n}\n\n/* 用户名样式 */\n.account-center-avatarHolder .username {\n color: #2c3e50;\n font-size: 24px;\n font-weight: 600;\n margin-bottom: 8px;\n position: relative;\n z-index: 1;\n}\n\n/* 身份标签 */\n.account-center-avatarHolder .bio {\n display: inline-block;\n padding: 4px 12px;\n background: rgba(54, 144, 207, 0.1);\n color: #3690cf;\n border-radius: 20px;\n font-size: 14px;\n font-weight: 500;\n margin-bottom: 8px;\n position: relative;\n z-index: 1;\n}\n\n/* 分割线美化 */\n.ant-divider {\n margin: 24px 0;\n border-color: rgba(0, 0, 0, 0.06);\n}\n\n.ant-divider-dashed {\n border-style: dashed;\n border-color: rgba(0, 0, 0, 0.09);\n}\n\n/* 标签区域 */\n.account-center-tags {\n padding: 0 16px;\n}\n\n.account-center-tags .tagsTitle {\n font-size: 18px;\n font-weight: 600;\n color: #2c3e50;\n margin-bottom: 16px;\n position: relative;\n padding-left: 12px;\n}\n\n.account-center-tags .tagsTitle::before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 4px;\n background: #3690cf;\n border-radius: 2px;\n}\n\n/* 标签样式 */\n.ant-tag {\n margin: 0 8px 8px 0;\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 13px;\n border: none;\n background: #f0f2f5;\n color: #555;\n transition: all 0.3s;\n}\n\n.ant-tag:hover {\n background: #e6f7ff;\n color: #3690cf;\n}\n\n/* 新增标签按钮 */\n.ant-tag-dashed {\n border: 1px dashed #d9d9d9;\n background: transparent;\n transition: all 0.3s;\n}\n\n.ant-tag-dashed:hover {\n border-color: #3690cf;\n color: #3690cf;\n}\n\n/* 比赛区域 */\n.account-center-team {\n padding: 0 16px;\n}\n\n.account-center-team .teamTitle {\n font-size: 18px;\n font-weight: 600;\n color: #2c3e50;\n margin-bottom: 16px;\n position: relative;\n padding-left: 12px;\n}\n\n.account-center-team .teamTitle::before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 4px;\n background: #3690cf;\n border-radius: 2px;\n}\n\n/* 比赛卡片样式 */\n.members {\n margin-bottom: 16px;\n transition: all 0.3s;\n}\n\n.members .ant-tag {\n display: inline-block;\n margin: 5px;\n padding: 6px 12px;\n border-radius: 8px;\n font-size: 14px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n transition: all 0.3s;\n}\n\n.members .ant-tag:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n}\n\n/* 右侧选项卡样式 */\n.ant-tabs-bar {\n border-bottom: none;\n margin-bottom: 24px;\n}\n\n.ant-tabs-nav {\n margin: 0 auto 16px;\n width: fit-content;\n background: #f5f5f5;\n border-radius: 50px;\n padding: 4px;\n}\n\n.ant-tabs-tab {\n margin: 0 !important;\n padding: 8px 24px !important;\n border-radius: 50px !important;\n transition: all 0.3s;\n font-weight: 500;\n}\n\n.ant-tabs-tab-active {\n background: #3690cf !important;\n color: white !important;\n}\n\n/* 文章列表样式 */\n.article-list {\n padding: 16px;\n}\n\n.article-item {\n display: flex;\n margin-bottom: 20px;\n background: white;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);\n transition: all 0.3s;\n}\n\n.article-item:hover {\n transform: translateY(-5px);\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);\n}\n\n.article-cover {\n width: 200px;\n height: 134px;\n overflow: hidden;\n}\n\n.article-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.5s;\n}\n\n.article-item:hover .article-cover img {\n transform: scale(1.1);\n}\n\n.article-content {\n flex: 1;\n padding: 16px;\n position: relative;\n}\n\n.article-title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 8px;\n color: #333;\n}\n\n.article-description {\n font-size: 14px;\n color: #666;\n margin-bottom: 16px;\n line-height: 1.6;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n}\n\n.article-meta {\n position: absolute;\n bottom: 16px;\n left: 16px;\n right: 16px;\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: #999;\n}\n\n/* 数据统计卡片 */\n.data-stats {\n display: flex;\n margin-bottom: 24px;\n}\n\n.stat-card {\n flex: 1;\n background: white;\n border-radius: 12px;\n padding: 16px;\n text-align: center;\n margin: 0 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);\n transition: all 0.3s;\n}\n\n.stat-card:hover {\n transform: translateY(-5px);\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);\n}\n\n.stat-number {\n font-size: 32px;\n font-weight: 600;\n color: #3690cf;\n margin-bottom: 8px;\n}\n\n.stat-title {\n font-size: 14px;\n color: #666;\n}\n\n/* 响应式调整 */\n@media (max-width: 768px) {\n .article-cover {\n width: 120px;\n }\n\n .stat-card {\n padding: 12px;\n }\n\n .stat-number {\n font-size: 24px;\n }\n}\n\n@media (max-width: 480px) {\n .article-item {\n flex-direction: column;\n }\n\n .article-cover {\n width: 100%;\n height: 180px;\n }\n\n .data-stats {\n flex-wrap: wrap;\n }\n\n .stat-card {\n flex: 0 0 calc(50% - 16px);\n margin-bottom: 16px;\n }\n}\n\n/* 悬浮效果 */\n.hover-card {\n position: relative;\n overflow: hidden;\n}\n\n.hover-card::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n transform: translateX(-100%) rotate(45deg);\n transition: transform 0.6s;\n}\n\n.hover-card:hover::after {\n transform: translateX(100%) rotate(45deg);\n}\n\n/* 动画效果 */\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.animate-fade-in-up {\n animation: fadeInUp 0.6s ease forwards;\n}\n\n/* 更多自定义样式 */\n.custom-scrollbar::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n\n.custom-scrollbar::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 10px;\n}\n\n.custom-scrollbar::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 10px;\n}\n\n.custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background: #3690cf;\n}\n\n/* 闪光边框效果 */\n.glow-border {\n position: relative;\n}\n\n.glow-border::before {\n content: \"\";\n position: absolute;\n top: -2px;\n left: -2px;\n right: -2px;\n bottom: -2px;\n background: linear-gradient(45deg, #3690cf, #6dc6ff, #3690cf);\n background-size: 200% 200%;\n z-index: -1;\n border-radius: 18px;\n animation: glowingBorder 3s ease-in-out infinite;\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.glow-border:hover::before {\n opacity: 1;\n}\n\n@keyframes glowingBorder {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n}\n</style>\n"]}]}