1 line
34 KiB
JSON
1 line
34 KiB
JSON
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/edit/tinymce.vue?vue&type=style&index=0&id=7065ee9a&scoped=true&lang=css","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/edit/tinymce.vue","mtime":1743947405816},{"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/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:Ci8qIOWcqOe6v+WPkeW4lumhtemdoue+juWMluagt+W8jyAqLwoKLyog5pW05L2T5a655Zmo5qC35byPICovCi50aW55bWNlLWVkaXRvciB7CiAgLyogbWF4LXdpZHRoOiAxMjAwcHg7ICovCiAgbWFyZ2luOiAwIGF1dG87CiAgcGFkZGluZzogMzBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgYm94LXNoYWRvdzogMCA2cHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMDgpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLyog6aG16Z2i5qCH6aKYICovCi5lZGl0b3ItaGVhZGVyIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogNDBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5lZGl0b3ItdGl0bGUgewogIGZvbnQtc2l6ZTogMjhweDsKICBmb250LXdlaWdodDogNjAwOwogIGNvbG9yOiAjMzMzOwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmVkaXRvci10aXRsZTo6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IC0xMHB4OwogIGxlZnQ6IDUwJTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgd2lkdGg6IDgwcHg7CiAgaGVpZ2h0OiA0cHg7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMzY5MGNmLCAjNmRjNmZmKTsKICBib3JkZXItcmFkaXVzOiAycHg7Cn0KCi5lZGl0b3Itc3VidGl0bGUgewogIGZvbnQtc2l6ZTogMTZweDsKICBjb2xvcjogIzY2NjsKICBtYXJnaW4tdG9wOiAyMHB4Owp9CgovKiDovpPlhaXmoYbnvo7ljJYgKi8KLnRpbnltY2UtZWRpdG9yIC5hbnQtaW5wdXQsCi50aW55bWNlLWVkaXRvciAuYW50LWlucHV0LWFmZml4LXdyYXBwZXIgewogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2U4ZThlODsKICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgZm9udC1zaXplOiAxNnB4OwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHRyYW5zcGFyZW50Owp9CgoudGlueW1jZS1lZGl0b3IgLmFudC1pbnB1dDpob3ZlciwKLnRpbnltY2UtZWRpdG9yIC5hbnQtaW5wdXQtYWZmaXgtd3JhcHBlcjpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjMzY5MGNmOwp9CgoudGlueW1jZS1lZGl0b3IgLmFudC1pbnB1dDpmb2N1cywKLnRpbnltY2UtZWRpdG9yIC5hbnQtaW5wdXQtYWZmaXgtd3JhcHBlci1mb2N1c2VkIHsKICBib3JkZXItY29sb3I6ICMzNjkwY2Y7CiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoNTQsIDE0NCwgMjA3LCAwLjIpOwp9CgovKiDmoIfpopjovpPlhaXmoYbnibnmrormoLflvI8gKi8KLmFydGljbGUtdGl0bGUtaW5wdXQgewogIGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgcGFkZGluZzogMTZweCAyMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBib3JkZXItcmFkaXVzOiAxMnB4ICFpbXBvcnRhbnQ7Cn0KCi5hcnRpY2xlLXRpdGxlLWlucHV0OjpwbGFjZWhvbGRlciB7CiAgY29sb3I6ICNhYWE7Cn0KCi8qIOaWh+eroOeugOS7i+e+juWMliAqLwouYXJ0aWNsZS1icmllZi10ZXh0YXJlYSB7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBtaW4taGVpZ2h0OiA4MHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmYWZjOwp9CgovKiDooajljZXpobnnvo7ljJYgKi8KLmZvcm0taXRlbS1jb250YWluZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDI1cHg7Cn0KCi5mb3JtLWl0ZW0tY29udGFpbmVyIC5hbnQtZm9ybS1pdGVtIHsKICBmbGV4OiAxOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KCi50aW55bWNlLWVkaXRvciAuYW50LWZvcm0taXRlbS1sYWJlbCB7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9CgoudGlueW1jZS1lZGl0b3IgLmFudC1mb3JtLWl0ZW0tbGFiZWwgPiBsYWJlbCB7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6ICMzMzM7CiAgaGVpZ2h0OiBhdXRvOwp9CgovKiDkuIvmi4npgInmi6nmoYbnvo7ljJYgKi8KLnRpbnltY2UtZWRpdG9yIC5hbnQtc2VsZWN0IHsKICB3aWR0aDogMTAwJTsKfQoKLnRpbnltY2UtZWRpdG9yIC5hbnQtc2VsZWN0LXNlbGVjdG9yIHsKICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogOHB4IDE2cHggIWltcG9ydGFudDsKICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICBtaW4taGVpZ2h0OiA0OHB4ICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwp9CgoudGlueW1jZS1lZGl0b3IgLmFudC1zZWxlY3Qtc2VsZWN0aW9uLXNlYXJjaCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoudGlueW1jZS1lZGl0b3IgLmFudC1zZWxlY3Q6aG92ZXIgLmFudC1zZWxlY3Qtc2VsZWN0b3IgewogIGJvcmRlci1jb2xvcjogIzM2OTBjZiAhaW1wb3J0YW50Owp9CgoudGlueW1jZS1lZGl0b3IgLmFudC1zZWxlY3QtZm9jdXNlZCAuYW50LXNlbGVjdC1zZWxlY3RvciB7CiAgYm9yZGVyLWNvbG9yOiAjMzY5MGNmICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoNTQsIDE0NCwgMjA3LCAwLjIpICFpbXBvcnRhbnQ7Cn0KCi8qIOe8lui+keWZqOWuueWZqCAqLwouZWRpdG9yLWNvbnRhaW5lciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgYm9yZGVyLXJhZGl1czogMTJweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJvcmRlcjogMXB4IHNvbGlkICNlOGU4ZTg7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7Cn0KCi5lZGl0b3ItY29udGFpbmVyOmhvdmVyIHsKICBib3JkZXItY29sb3I6ICMzNjkwY2Y7CiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoNTQsIDE0NCwgMjA3LCAwLjA1KTsKfQoKLyogVGlueU1DRee8lui+keWZqOiHquWumuS5ieagt+W8jyAqLwoudG94LXRpbnltY2UgewogIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50Owp9CgoudG94IC50b3gtdG9vbGJhcl9fZ3JvdXAgewogIGJvcmRlci1yYWRpdXM6IDZweCAhaW1wb3J0YW50OwogIG1hcmdpbjogMnB4IDRweCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgNHB4ICFpbXBvcnRhbnQ7Cn0KCi50b3ggLnRveC10YnRuIHsKICBib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDsKfQoKLnRveCAudG94LXRidG46aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTQsIDE0NCwgMjA3LCAwLjEpICFpbXBvcnRhbnQ7Cn0KCi50b3ggLnRveC10YnRuLS1lbmFibGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU0LCAxNDQsIDIwNywgMC4yKSAhaW1wb3J0YW50Owp9CgovKiDlj5HluIPmjInpkq7lrrnlmaggKi8KLnB1Ymxpc2gtY29udGFpbmVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIG1hcmdpbi10b3A6IDQwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgovKiDlj5HluIPmjInpkq4gKi8KLnB1Ymxpc2gtYnRuIHsKICBtaW4td2lkdGg6IDE4MHB4OwogIGhlaWdodDogNTBweDsKICBwYWRkaW5nOiAwIDMwcHg7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzM2OTBjZiwgIzJhNzhiOCkgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiAyNXB4ICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJveC1zaGFkb3c6IDAgOHB4IDE1cHggcmdiYSg1NCwgMTQ0LCAyMDcsIDAuMyk7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgIWltcG9ydGFudDsKfQoKLnB1Ymxpc2gtYnRuOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggcmdiYSg1NCwgMTQ0LCAyMDcsIDAuNCkgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMmE3OGI4LCAjMWU1YzhlKSAhaW1wb3J0YW50Owp9CgoucHVibGlzaC1idG4gLmFudGljb24gewogIG1hcmdpbi1yaWdodDogOHB4OwogIGZvbnQtc2l6ZTogMThweDsKfQoKLyog5paH56ug5L+h5oGv5Y2h54mHICovCi5hcnRpY2xlLWluZm8tY2FyZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYzsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIHBhZGRpbmc6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKICBib3JkZXI6IDFweCBkYXNoZWQgI2UwZTBlMDsKfQoKLmFydGljbGUtaW5mby1jYXJkIC5pbmZvLXRpdGxlIHsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogIzMzMzsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmFydGljbGUtaW5mby1jYXJkIC5pbmZvLXRpdGxlIC5hbnRpY29uIHsKICBjb2xvcjogIzM2OTBjZjsKICBtYXJnaW4tcmlnaHQ6IDhweDsKICBmb250LXNpemU6IDE4cHg7Cn0KCi8qIOe8lui+keWZqOW6lemDqOeKtuaAgeagjyAqLwoudG94LXN0YXR1c2JhciB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWUgIWltcG9ydGFudDsKfQoKLyog5LiK5Lyg5Zu+54mH5Yy65Z+fICovCi51cGxvYWQtYm94IHsKICBib3JkZXI6IDJweCBkYXNoZWQgI2UwZTBlMDsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIHBhZGRpbmc6IDIwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICBtYXJnaW4tYm90dG9tOiAyNXB4Owp9CgoudXBsb2FkLWJveDpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjMzY5MGNmOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTQsIDE0NCwgMjA3LCAwLjA1KTsKfQoKLnVwbG9hZC1pY29uIHsKICBmb250LXNpemU6IDQ4cHg7CiAgY29sb3I6ICNkMGQwZDA7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKfQoKLnVwbG9hZC1ib3g6aG92ZXIgLnVwbG9hZC1pY29uIHsKICBjb2xvcjogIzM2OTBjZjsKfQoKLnVwbG9hZC10ZXh0IHsKICBjb2xvcjogIzY2NjsKICBmb250LXNpemU6IDE0cHg7Cn0KCi8qIOWTjeW6lOW8j+iwg+aVtCAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAudGlueW1jZS1lZGl0b3IgewogICAgcGFkZGluZzogMjBweCAxNXB4OwogIH0KCiAgLmZvcm0taXRlbS1jb250YWluZXIgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdhcDogMTVweDsKICB9CgogIC5lZGl0b3ItdGl0bGUgewogICAgZm9udC1zaXplOiAyNHB4OwogIH0KCiAgLnB1Ymxpc2gtYnRuIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQoKLyog5Yqo55S75pWI5p6cICovCkBrZXlmcmFtZXMgZmFkZUluIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgouZmFkZS1pbiB7CiAgYW5pbWF0aW9uOiBmYWRlSW4gMC41cyBlYXNlIGZvcndhcmRzOwp9CgouZmFkZS1pbi1kZWxheS0xIHsKICBhbmltYXRpb246IGZhZGVJbiAwLjVzIGVhc2UgMC4xcyBmb3J3YXJkczsKICBvcGFjaXR5OiAwOwp9CgouZmFkZS1pbi1kZWxheS0yIHsKICBhbmltYXRpb246IGZhZGVJbiAwLjVzIGVhc2UgMC4ycyBmb3J3YXJkczsKICBvcGFjaXR5OiAwOwp9CgovKiDlrZfmlbDnu5/orqHmj5DnpLogKi8KLndvcmQtY291bnQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMTVweDsKICBib3R0b206IDE1cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGNvbG9yOiAjOTk5OwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICBwYWRkaW5nOiA0cHggMTBweDsKICBib3JkZXItcmFkaXVzOiAxNXB4OwogIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi8qIOmihOiniOaViOaenOWMuuWfnyAqLwoucHJldmlldy1jb250YWluZXIgewogIG1hcmdpbi10b3A6IDMwcHg7CiAgcGFkZGluZzogMjBweDsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmOWZhZmM7CiAgYm9yZGVyOiAxcHggc29saWQgI2VlZTsKfQoKLnByZXZpZXctdGl0bGUgewogIGZvbnQtc2l6ZTogMThweDsKICBmb250LXdlaWdodDogNTAwOwogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7CiAgY29sb3I6ICMzMzM7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoucHJldmlldy10aXRsZSAuYW50aWNvbiB7CiAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgY29sb3I6ICMzNjkwY2Y7Cn0KCi5wcmV2aWV3LWNvbnRlbnQgewogIHBhZGRpbmc6IDE1cHg7CiAgYmFja2dyb3VuZDogd2hpdGU7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIG1pbi1oZWlnaHQ6IDEwMHB4Owp9CgovKiDoh6rlrprkuYnmgqzlgZzmlYjmnpwgKi8KLmhvdmVyLWxpZnQgewogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlOwp9CgouaG92ZXItbGlmdDpob3ZlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogIGJveC1zaGFkb3c6IDAgMTBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoKLyog5qCH562+6YCJ5oup5Yy65Z+fICovCi50YWdzLWNvbnRhaW5lciB7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQoKLnRhZ3MtdGl0bGUgewogIGZvbnQtc2l6ZTogMTZweDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiAjMzMzOwogIG1hcmdpbi1ib3R0b206IDEycHg7Cn0KCi50YWctc2VsZWN0IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBnYXA6IDhweDsKfQoKLnRhZy1pdGVtIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmc6IDZweCAxMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmMGYyZjU7CiAgY29sb3I6ICM1NTU7CiAgYm9yZGVyLXJhZGl1czogMjBweDsKICBmb250LXNpemU6IDE0cHg7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwp9CgoudGFnLWl0ZW06aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNlNmY3ZmY7CiAgY29sb3I6ICMzNjkwY2Y7Cn0KCi50YWctaXRlbS5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICMzNjkwY2Y7CiAgY29sb3I6IHdoaXRlOwp9CgoudGFnLWl0ZW0gLmFudGljb24gewogIG1hcmdpbi1yaWdodDogNXB4Owp9CgovKiDmlofnq6DlsIHpnaLkuIrkvKDljLrln58gKi8KLmNvdmVyLXVwbG9hZCB7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQoKLmNvdmVyLXRpdGxlIHsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogIzMzMzsKICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9CgouY292ZXItZGVzY3JpcHRpb24gewogIGZvbnQtc2l6ZTogMTRweDsKICBjb2xvcjogIzg4ODsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgouY292ZXItcHJldmlldyB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAyMDBweDsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY292ZXItcHJldmlldyBpbWcgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBvYmplY3QtZml0OiBjb3ZlcjsKfQoKLmNvdmVyLXVwbG9hZC1idG4gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDE1cHg7CiAgcmlnaHQ6IDE1cHg7CiAgei1pbmRleDogNTsKfQo="},{"version":3,"sources":["tinymce.vue"],"names":[],"mappings":";AAmXA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA","file":"tinymce.vue","sourceRoot":"src/components/edit","sourcesContent":["<template>\n <div class=\"tinymce-editor fade-in\">\n <!-- 页面标题 -->\n <div class=\"editor-header\">\n <h1 class=\"editor-title\">创建新文章</h1>\n <p class=\"editor-subtitle\">分享你的知识、经验和创意</p>\n </div>\n\n <!-- 文章标题输入 -->\n <a-input\n v-model=\"ArticleTitle\"\n placeholder=\"请输入文章标题 (5-50字)\"\n class=\"article-title-input\"\n :maxLength=\"50\"\n :allowClear=\"true\"\n />\n\n <!-- 文章简介输入 -->\n <a-textarea\n v-model=\"briefContent\"\n placeholder=\"请输入文章简介,简明扼要地介绍文章内容 (50-200字)\"\n :auto-size=\"{ minRows: 2, maxRows: 5 }\"\n class=\"article-brief-textarea\"\n :maxLength=\"200\"\n />\n\n <!-- 文章信息 -->\n <div class=\"article-info-card fade-in-delay-1\">\n <div class=\"info-title\">\n <a-icon type=\"info-circle\" />\n <span>文章信息</span>\n </div>\n\n <div class=\"form-item-container\">\n <!-- 选择比赛 -->\n <a-form-item label=\"选择相关比赛\">\n <a-select\n v-model=\"competitionId\"\n :options=\"grades\"\n allowClear\n placeholder=\"请选择相关比赛\"\n :showSearch=\"true\"\n :filterOption=\"filterOption\"\n >\n <template slot=\"suffixIcon\">\n <a-icon type=\"trophy\" />\n </template>\n </a-select>\n </a-form-item>\n\n <!-- 选择文章类型 -->\n <a-form-item label=\"文章类型\">\n <a-select\n v-model=\"articleType\"\n :options=\"message\"\n allowClear\n placeholder=\"请选择文章类型\"\n >\n <template slot=\"suffixIcon\">\n <a-icon type=\"tags\" />\n </template>\n </a-select>\n </a-form-item>\n </div>\n </div>\n\n <!-- 文章封面 -->\n <!-- <div class=\"cover-upload fade-in-delay-2\">\n <div class=\"cover-title\">\n <a-icon type=\"picture\" />\n <span style=\"margin-left: 8px\">文章封面</span>\n </div>\n\n <p class=\"cover-description\">\n 一个好的封面图能够吸引更多读者,建议尺寸 900×500 像素\n </p>\n\n <div class=\"cover-preview hover-lift\">\n <img v-if=\"coverUrl\" :src=\"coverUrl\" alt=\"文章封面\" />\n <div v-else class=\"upload-placeholder\">\n <a-icon type=\"file-image\" style=\"font-size: 48px; color: #d9d9d9\" />\n <p style=\"margin-top: 16px; color: #999\">点击上传封面图片</p>\n </div>\n\n <a-upload\n name=\"file\"\n :showUploadList=\"false\"\n :beforeUpload=\"beforeUpload\"\n @change=\"handleCoverChange\"\n >\n <a-button type=\"primary\" class=\"cover-upload-btn\">\n <a-icon :type=\"coverUrl ? 'edit' : 'upload'\" />\n {{ coverUrl ? \"更换封面\" : \"上传封面\" }}\n </a-button>\n </a-upload>\n </div>\n </div> -->\n\n <!-- 编辑器容器 -->\n <div class=\"editor-container fade-in-delay-2\">\n <Editor\n :id=\"tinymceId\"\n :init=\"init\"\n :disabled=\"disabled\"\n v-model=\"myValue\"\n @onClick=\"onClick\"\n ></Editor>\n <div class=\"word-count\">字数: {{ wordCount }}</div>\n </div>\n\n <!-- 内容预览区域 -->\n <div v-if=\"showPreview\" class=\"preview-container fade-in\">\n <div class=\"preview-title\">\n <a-icon type=\"eye\" />\n <span>文章预览</span>\n </div>\n\n <div class=\"preview-content\" v-html=\"myValue\"></div>\n </div>\n\n <!-- 操作按钮 -->\n <div class=\"publish-container\">\n <a-button @click=\"togglePreview\" style=\"margin-right: 16px\">\n <a-icon :type=\"showPreview ? 'eye-invisible' : 'eye'\" />\n {{ showPreview ? \"关闭预览\" : \"预览文章\" }}\n </a-button>\n\n <a-button type=\"primary\" class=\"publish-btn\" @click=\"confirmPublish\">\n <a-icon type=\"plus\" />\n 发布文章\n </a-button>\n </div>\n </div>\n</template>\n<script>\nimport { message } from \"@/utils/const\";\nimport {\n createArticle,\n AllCompetition,\n SendSMS,\n SendEmail,\n AllArticle,\n} from \"@/api\";\nimport tinymce from \"tinymce/tinymce\"; //tinymce默认hidden,不引入不显示\nimport Editor from \"@tinymce/tinymce-vue\"; //编辑器引入\nimport \"tinymce/themes/silver/theme\"; //编辑器主题\nimport \"tinymce/icons/default\"; //引入编辑器图标icon,不引入则不显示对应图标\n// 引入编辑器插件(基本免费插件都在这儿了)\nimport \"tinymce/plugins/advlist\"; //高级列表\nimport \"tinymce/plugins/autolink\"; //自动链接\nimport \"tinymce/plugins/link\"; //超链接\nimport \"tinymce/plugins/image\"; //插入编辑图片\nimport \"tinymce/plugins/lists\"; //列表插件\nimport \"tinymce/plugins/charmap\"; //特殊字符\nimport \"tinymce/plugins/media\"; //插入编辑媒体\nimport \"tinymce/plugins/wordcount\"; // 字数统计\n// import Cookies from \"js-cookie\";\n\nconst fonts = [\n \"宋体=宋体\",\n \"微软雅黑=微软雅黑\",\n \"新宋体=新宋体\",\n \"黑体=黑体\",\n \"楷体=楷体\",\n \"隶书=隶书\",\n \"Courier New=courier new,courier\",\n \"AkrutiKndPadmini=Akpdmi-n\",\n \"Andale Mono=andale mono,times\",\n \"Arial=arial,helvetica,sans-serif\",\n \"Arial Black=arial black,avant garde\",\n \"Book Antiqua=book antiqua,palatino\",\n \"Comic Sans MS=comic sans ms,sans-serif\",\n \"Courier New=courier new,courier\",\n \"Georgia=georgia,palatino\",\n \"Helvetica=helvetica\",\n \"Impact=impact,chicago\",\n \"Symbol=symbol\",\n \"Tahoma=tahoma,arial,helvetica,sans-serif\",\n \"Terminal=terminal,monaco\",\n \"Times New Roman=times new roman,times\",\n \"Trebuchet MS=trebuchet ms,geneva\",\n \"Verdana=verdana,geneva\",\n \"Webdings=webdings\",\n \"Wingdings=wingdings,zapf dingbats\",\n];\nexport default {\n components: {\n Editor,\n },\n props: {\n //内容\n value: {\n type: String,\n default: \"\",\n },\n //是否禁用\n disabled: {\n type: Boolean,\n default: false,\n },\n // 用于区分单个tinymce\n tinymceId: {\n type: String,\n default: \"tinymce\",\n },\n //插件\n plugins: {\n type: [String, Array],\n default: \"advlist autolink link image lists charmap media wordcount\",\n },\n //工具栏\n toolbar: {\n type: [String, Array],\n default:\n \"undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table\",\n },\n },\n data() {\n return {\n message,\n //初始化配置\n grades: [],\n myValue: this.value,\n ArticleTitle: \"\",\n competitionId: \"\",\n articleType: \"\",\n briefContent: \"\",\n init: {\n selector: \"#\" + this.tinymceId,\n language_url: \"@/components/edit/zh_CN.js\", //汉化路径是自定义的,一般放在public或static里面\n language: \"zh_CN\",\n skin_url: \"/tinymce/skins/ui/oxide\", //皮肤\n plugins: this.plugins, //插件\n //工具栏\n toolbar: this.toolbar,\n toolbar_location: \"/\",\n fontsize_formats:\n \"12px 14px 16px 18px 20px 22px 24px 28px 32px 36px 48px 56px 72px\", //字体大小\n font_formats: fonts.join(\";\"),\n content_style: \"p {margin: 0px; border:0px ; padding: 0px}\", // 设置p的行间距\n width: \"100%\",\n // height: 500,//高度\n placeholder: \"在这里输入文字\",\n\n branding: false, //隐藏右下角技术支持\n //图片上传\n },\n ArticleId: \"\",\n Article: {},\n };\n },\n watch: {\n //监听内容变化\n value(newValue) {\n this.myValue = newValue == null ? \"\" : newValue;\n },\n myValue(newValue) {\n if (this.triggerChange) {\n this.$emit(\"change\", newValue);\n } else {\n this.$emit(\"input\", newValue);\n }\n },\n },\n mounted() {\n tinymce.init({});\n // console.log(this.toolbar,'======')\n this.GetAritle();\n AllCompetition()\n .then((response) => {\n // 获取竞赛数据\n const competitions = response.data;\n\n // 转换数据为适合select选项的格式\n const selectOptions = competitions.map((competition) => ({\n label: competition.competitionName,\n value: competition.competitionId,\n }));\n // 将转换后的数据存储在Vue实例中,以便在模板中使用\n this.grades = selectOptions;\n })\n .catch((error) => {\n console.error(error);\n });\n },\n methods: {\n GetAritle() {\n console.log(this.ArticleId);\n if (this.ArticleId != \"\" || null) {\n AllArticle().then((res) => {\n res.data.forEach((item) => {\n console.log(item);\n if (item.articleId == this.ArticleId) {\n console.log(item);\n this.competitionId = item.competitionId;\n (this.ArticleTitle = item.articleTitle),\n (this.myValue = item.articleContent),\n (this.articleType = item.articleType),\n (this.briefContent = item.briefContent);\n }\n });\n });\n }\n },\n onClick(e) {\n this.$emit(\"onClick\", e, tinymce);\n },\n //可以添加一些自己的自定义事件,如清空内容\n clear() {\n this.myValue = \"\";\n },\n SendTinymce() {\n const data = {\n userId: this.$store.state.user.userId,\n briefContent: this.briefContent,\n competitionId: this.competitionId,\n articleType: this.articleType,\n articleTitle: this.ArticleTitle,\n articleContent: this.myValue,\n };\n\n createArticle(data)\n .then((res) => {\n if (res.code == 200) {\n this.$message.success(\"发送成功\");\n this.articleId = res.data;\n if (this.articleType == \"公告\") {\n // 询问是否进行短信和邮件通知\n this.$modal.confirm({\n title: `确认发送短信与邮件通知用户?`,\n onOk: () => {\n let data = {\n competitionId: this.competitionId,\n articleId: this.articleId,\n };\n this.$api\n .SendEmail(data)\n .then(() => {\n this.$api.SendSMS(data).then(() => {\n this.$message.success(\"短信邮件提醒成功!\");\n });\n })\n .catch((e) => {\n this.$message.error(e.msg || \"发送失败!\");\n throw e;\n });\n },\n });\n }\n } else {\n throw new Error(\"发布失败\");\n }\n })\n .then((notificationData) => {\n if (notificationData) {\n return SendEmail(notificationData)\n .then(() => SendSMS(notificationData))\n .then(() => {\n this.$message.success(\"短信提醒与邮件提醒成功\");\n });\n }\n })\n .catch((error) => {\n console.error(error);\n this.$notify.error({ title: \"错误\", message: error.message });\n });\n },\n },\n};\n</script>\n<style scoped>\n/* 在线发帖页面美化样式 */\n\n/* 整体容器样式 */\n.tinymce-editor {\n /* max-width: 1200px; */\n margin: 0 auto;\n padding: 30px;\n background-color: #fff;\n border-radius: 16px;\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.08);\n position: relative;\n}\n\n/* 页面标题 */\n.editor-header {\n text-align: center;\n margin-bottom: 40px;\n position: relative;\n}\n\n.editor-title {\n font-size: 28px;\n font-weight: 600;\n color: #333;\n margin-bottom: 10px;\n position: relative;\n display: inline-block;\n}\n\n.editor-title::after {\n content: \"\";\n position: absolute;\n bottom: -10px;\n left: 50%;\n transform: translateX(-50%);\n width: 80px;\n height: 4px;\n background: linear-gradient(90deg, #3690cf, #6dc6ff);\n border-radius: 2px;\n}\n\n.editor-subtitle {\n font-size: 16px;\n color: #666;\n margin-top: 20px;\n}\n\n/* 输入框美化 */\n.tinymce-editor .ant-input,\n.tinymce-editor .ant-input-affix-wrapper {\n border-radius: 10px;\n border: 1px solid #e8e8e8;\n padding: 12px 16px;\n font-size: 16px;\n transition: all 0.3s;\n margin-bottom: 20px;\n box-shadow: 0 0 0 2px transparent;\n}\n\n.tinymce-editor .ant-input:hover,\n.tinymce-editor .ant-input-affix-wrapper:hover {\n border-color: #3690cf;\n}\n\n.tinymce-editor .ant-input:focus,\n.tinymce-editor .ant-input-affix-wrapper-focused {\n border-color: #3690cf;\n box-shadow: 0 0 0 2px rgba(54, 144, 207, 0.2);\n}\n\n/* 标题输入框特殊样式 */\n.article-title-input {\n font-size: 20px !important;\n font-weight: 500;\n padding: 16px 20px !important;\n margin-bottom: 20px;\n border-radius: 12px !important;\n}\n\n.article-title-input::placeholder {\n color: #aaa;\n}\n\n/* 文章简介美化 */\n.article-brief-textarea {\n border-radius: 10px;\n min-height: 80px !important;\n margin-bottom: 30px;\n background-color: #f9fafc;\n}\n\n/* 表单项美化 */\n.form-item-container {\n display: flex;\n gap: 20px;\n margin-bottom: 25px;\n}\n\n.form-item-container .ant-form-item {\n flex: 1;\n margin-bottom: 0;\n}\n\n.tinymce-editor .ant-form-item-label {\n margin-bottom: 8px;\n}\n\n.tinymce-editor .ant-form-item-label > label {\n font-size: 16px;\n font-weight: 500;\n color: #333;\n height: auto;\n}\n\n/* 下拉选择框美化 */\n.tinymce-editor .ant-select {\n width: 100%;\n}\n\n.tinymce-editor .ant-select-selector {\n border-radius: 10px !important;\n padding: 8px 16px !important;\n height: auto !important;\n min-height: 48px !important;\n display: flex;\n align-items: center;\n transition: all 0.3s;\n}\n\n.tinymce-editor .ant-select-selection-search {\n display: flex;\n align-items: center;\n}\n\n.tinymce-editor .ant-select:hover .ant-select-selector {\n border-color: #3690cf !important;\n}\n\n.tinymce-editor .ant-select-focused .ant-select-selector {\n border-color: #3690cf !important;\n box-shadow: 0 0 0 2px rgba(54, 144, 207, 0.2) !important;\n}\n\n/* 编辑器容器 */\n.editor-container {\n position: relative;\n margin-bottom: 25px;\n border-radius: 12px;\n overflow: hidden;\n border: 1px solid #e8e8e8;\n transition: all 0.3s;\n}\n\n.editor-container:hover {\n border-color: #3690cf;\n box-shadow: 0 0 0 2px rgba(54, 144, 207, 0.05);\n}\n\n/* TinyMCE编辑器自定义样式 */\n.tox-tinymce {\n border-radius: 12px !important;\n overflow: hidden;\n border: none !important;\n}\n\n.tox .tox-toolbar__group {\n border-radius: 6px !important;\n margin: 2px 4px !important;\n padding: 0 4px !important;\n}\n\n.tox .tox-tbtn {\n border-radius: 6px !important;\n}\n\n.tox .tox-tbtn:hover {\n background-color: rgba(54, 144, 207, 0.1) !important;\n}\n\n.tox .tox-tbtn--enabled {\n background-color: rgba(54, 144, 207, 0.2) !important;\n}\n\n/* 发布按钮容器 */\n.publish-container {\n display: flex;\n justify-content: center;\n margin-top: 40px;\n position: relative;\n}\n\n/* 发布按钮 */\n.publish-btn {\n min-width: 180px;\n height: 50px;\n padding: 0 30px;\n font-size: 16px;\n font-weight: 500;\n background: linear-gradient(135deg, #3690cf, #2a78b8) !important;\n border: none !important;\n border-radius: 25px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 8px 15px rgba(54, 144, 207, 0.3);\n transition: all 0.3s !important;\n}\n\n.publish-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 10px 20px rgba(54, 144, 207, 0.4) !important;\n background: linear-gradient(135deg, #2a78b8, #1e5c8e) !important;\n}\n\n.publish-btn .anticon {\n margin-right: 8px;\n font-size: 18px;\n}\n\n/* 文章信息卡片 */\n.article-info-card {\n background-color: #f9fafc;\n border-radius: 12px;\n padding: 20px;\n margin-bottom: 25px;\n border: 1px dashed #e0e0e0;\n}\n\n.article-info-card .info-title {\n font-size: 16px;\n font-weight: 500;\n color: #333;\n margin-bottom: 15px;\n display: flex;\n align-items: center;\n}\n\n.article-info-card .info-title .anticon {\n color: #3690cf;\n margin-right: 8px;\n font-size: 18px;\n}\n\n/* 编辑器底部状态栏 */\n.tox-statusbar {\n border-top: 1px solid #eee !important;\n}\n\n/* 上传图片区域 */\n.upload-box {\n border: 2px dashed #e0e0e0;\n border-radius: 12px;\n padding: 20px;\n text-align: center;\n cursor: pointer;\n transition: all 0.3s;\n margin-bottom: 25px;\n}\n\n.upload-box:hover {\n border-color: #3690cf;\n background-color: rgba(54, 144, 207, 0.05);\n}\n\n.upload-icon {\n font-size: 48px;\n color: #d0d0d0;\n margin-bottom: 10px;\n transition: all 0.3s;\n}\n\n.upload-box:hover .upload-icon {\n color: #3690cf;\n}\n\n.upload-text {\n color: #666;\n font-size: 14px;\n}\n\n/* 响应式调整 */\n@media (max-width: 768px) {\n .tinymce-editor {\n padding: 20px 15px;\n }\n\n .form-item-container {\n flex-direction: column;\n gap: 15px;\n }\n\n .editor-title {\n font-size: 24px;\n }\n\n .publish-btn {\n width: 100%;\n }\n}\n\n/* 动画效果 */\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.fade-in {\n animation: fadeIn 0.5s ease forwards;\n}\n\n.fade-in-delay-1 {\n animation: fadeIn 0.5s ease 0.1s forwards;\n opacity: 0;\n}\n\n.fade-in-delay-2 {\n animation: fadeIn 0.5s ease 0.2s forwards;\n opacity: 0;\n}\n\n/* 字数统计提示 */\n.word-count {\n position: absolute;\n right: 15px;\n bottom: 15px;\n font-size: 12px;\n color: #999;\n background: rgba(255, 255, 255, 0.9);\n padding: 4px 10px;\n border-radius: 15px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n/* 预览效果区域 */\n.preview-container {\n margin-top: 30px;\n padding: 20px;\n border-radius: 12px;\n background-color: #f9fafc;\n border: 1px solid #eee;\n}\n\n.preview-title {\n font-size: 18px;\n font-weight: 500;\n margin-bottom: 15px;\n padding-bottom: 10px;\n border-bottom: 1px solid #eee;\n color: #333;\n display: flex;\n align-items: center;\n}\n\n.preview-title .anticon {\n margin-right: 8px;\n color: #3690cf;\n}\n\n.preview-content {\n padding: 15px;\n background: white;\n border-radius: 8px;\n min-height: 100px;\n}\n\n/* 自定义悬停效果 */\n.hover-lift {\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n\n.hover-lift:hover {\n transform: translateY(-3px);\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);\n}\n\n/* 标签选择区域 */\n.tags-container {\n margin-bottom: 25px;\n}\n\n.tags-title {\n font-size: 16px;\n font-weight: 500;\n color: #333;\n margin-bottom: 12px;\n}\n\n.tag-select {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.tag-item {\n display: inline-flex;\n align-items: center;\n padding: 6px 12px;\n background-color: #f0f2f5;\n color: #555;\n border-radius: 20px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.3s;\n}\n\n.tag-item:hover {\n background-color: #e6f7ff;\n color: #3690cf;\n}\n\n.tag-item.active {\n background-color: #3690cf;\n color: white;\n}\n\n.tag-item .anticon {\n margin-right: 5px;\n}\n\n/* 文章封面上传区域 */\n.cover-upload {\n margin-bottom: 25px;\n}\n\n.cover-title {\n font-size: 16px;\n font-weight: 500;\n color: #333;\n margin-bottom: 12px;\n}\n\n.cover-description {\n font-size: 14px;\n color: #888;\n margin-bottom: 15px;\n}\n\n.cover-preview {\n width: 100%;\n height: 200px;\n border-radius: 12px;\n overflow: hidden;\n background-color: #f5f5f5;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.cover-preview img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.cover-upload-btn {\n position: absolute;\n bottom: 15px;\n right: 15px;\n z-index: 5;\n}\n</style>\n"]}]} |