feige
2024-02-02 bd40473c9c634005bc7e62e7fc901bcd8b598fa0
1
{"remainingRequest":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\src\\views\\tool\\build\\index.vue?vue&type=style&index=0&id=39cfdb14&lang=scss&","dependencies":[{"path":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\src\\views\\tool\\build\\index.vue","mtime":1676881540000},{"path":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\node_modules\\css-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":499162500000},{"path":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\node_modules\\postcss-loader\\src\\index.js","mtime":499162500000},{"path":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\node_modules\\sass-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\Users\\小蓝\\Desktop\\赖博士版\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmJvZHksIGh0bWx7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgYmFja2dyb3VuZDogI2ZmZjsKICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppOwp9CgppbnB1dCwgdGV4dGFyZWF7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppOwp9CgouZWRpdG9yLXRhYnN7CiAgYmFja2dyb3VuZDogIzEyMTMxNTsKICAuZWwtdGFic19faGVhZGVyewogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzEyMTMxNTsKICAgIC5lbC10YWJzX19uYXZ7CiAgICAgIGJvcmRlci1jb2xvcjogIzEyMTMxNTsKICAgIH0KICB9CiAgLmVsLXRhYnNfX2l0ZW17CiAgICBoZWlnaHQ6IDMycHg7CiAgICBsaW5lLWhlaWdodDogMzJweDsKICAgIGNvbG9yOiAjODg4YThlOwogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjMTIxMzE1ICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMzYzNjM2OwogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICB9CiAgLmVsLXRhYnNfX2l0ZW0uaXMtYWN0aXZlewogICAgYmFja2dyb3VuZDogIzFlMWUxZTsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMxZTFlMWUhaW1wb3J0YW50OwogICAgY29sb3I6ICNmZmY7CiAgfQogIC5lbC1pY29uLWVkaXR7CiAgICBjb2xvcjogI2YxZmE4YzsKICB9CiAgLmVsLWljb24tZG9jdW1lbnR7CiAgICBjb2xvcjogI2E5NTgxMjsKICB9Cn0KCi8vIGhvbWUKLnJpZ2h0LXNjcm9sbGJhciB7CiAgLmVsLXNjcm9sbGJhcl9fdmlldyB7CiAgICBwYWRkaW5nOiAxMnB4IDE4cHggMTVweCAxNXB4OwogIH0KfQoubGVmdC1zY3JvbGxiYXIgLmVsLXNjcm9sbGJhcl9fd3JhcCB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDsKICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KLmNlbnRlci10YWJzewogIC5lbC10YWJzX19oZWFkZXJ7CiAgICBtYXJnaW4tYm90dG9tOiAwIWltcG9ydGFudDsKICB9CiAgLmVsLXRhYnNfX2l0ZW17CiAgICB3aWR0aDogNTAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KICAuZWwtdGFic19fbmF2ewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5yZWctaXRlbXsKICBwYWRkaW5nOiAxMnB4IDZweDsKICBiYWNrZ3JvdW5kOiAjZjhmOGY4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLmNsb3NlLWJ0bnsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAtNnB4OwogICAgdG9wOiAtNnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxNnB4OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB6LWluZGV4OiAxOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgJjpob3ZlcnsKICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTAsIDIzLCAyMywgMC41KQogICAgfQogIH0KICAmICsgLnJlZy1pdGVtewogICAgbWFyZ2luLXRvcDogMThweDsKICB9Cn0KLmFjdGlvbi1iYXJ7CiAgJiAuZWwtYnV0dG9uKy5lbC1idXR0b24gewogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgfQogICYgaSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMXB4OwogIH0KfQoKLmN1c3RvbS10cmVlLW5vZGV7CiAgd2lkdGg6IDEwMCU7CiAgZm9udC1zaXplOiAxNHB4OwogIC5ub2RlLW9wZXJhdGlvbnsKICAgIGZsb2F0OiByaWdodDsKICB9CiAgaVtjbGFzcyo9ImVsLWljb24iXSArIGlbY2xhc3MqPSJlbC1pY29uIl17CiAgICBtYXJnaW4tbGVmdDogNnB4OwogIH0KICAuZWwtaWNvbi1wbHVzewogICAgY29sb3I6ICM0MDlFRkY7CiAgfQogIC5lbC1pY29uLWRlbGV0ZXsKICAgIGNvbG9yOiAjMTU3YTBjOwogIH0KfQoKLmxlZnQtc2Nyb2xsYmFyIC5lbC1zY3JvbGxiYXJfX3ZpZXd7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwp9CgouZWwtcmF0ZXsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wOwp9Ci5lbC11cGxvYWRfX3RpcHsKICBsaW5lLWhlaWdodDogMS4yOwp9Cgokc2VsZWN0ZWRDb2xvcjogI2Y2ZjdmZjsKJGxpZ2h0ZXJCbHVlOiAjNDA5RUZGOwoKLmNvbnRhaW5lciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKfQoKLmNvbXBvbmVudHMtbGlzdCB7CiAgcGFkZGluZzogOHB4OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgaGVpZ2h0OiAxMDAlOwogIC5jb21wb25lbnRzLWl0ZW0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDQ4JTsKICAgIG1hcmdpbjogMSU7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMG1zICFpbXBvcnRhbnQ7CiAgfQp9Ci5jb21wb25lbnRzLWRyYWdnYWJsZXsKICBwYWRkaW5nLWJvdHRvbTogMjBweDsKfQouY29tcG9uZW50cy10aXRsZXsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6ICMyMjI7CiAgbWFyZ2luOiA2cHggMnB4OwogIC5zdmctaWNvbnsKICAgIGNvbG9yOiAjNjY2OwogICAgZm9udC1zaXplOiAxOHB4OwogIH0KfQoKLmNvbXBvbmVudHMtYm9keSB7CiAgcGFkZGluZzogOHB4IDEwcHg7CiAgYmFja2dyb3VuZDogJHNlbGVjdGVkQ29sb3I7CiAgZm9udC1zaXplOiAxMnB4OwogIGN1cnNvcjogbW92ZTsKICBib3JkZXI6IDFweCBkYXNoZWQgJHNlbGVjdGVkQ29sb3I7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIC5zdmctaWNvbnsKICAgIGNvbG9yOiAjNzc3OwogICAgZm9udC1zaXplOiAxNXB4OwogIH0KICAmOmhvdmVyIHsKICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjNzg3YmU4OwogICAgY29sb3I6ICM3ODdiZTg7CiAgICAuc3ZnLWljb24gewogICAgICBjb2xvcjogIzc4N2JlODsKICAgIH0KICB9Cn0KCi5sZWZ0LWJvYXJkIHsKICB3aWR0aDogMjYwcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIGhlaWdodDogMTAwdmg7Cn0KLmxlZnQtc2Nyb2xsYmFyewogIGhlaWdodDogY2FsYygxMDB2aCAtIDQycHgpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmNlbnRlci1zY3JvbGxiYXIgewogIGhlaWdodDogY2FsYygxMDB2aCAtIDQycHgpOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZjFlOGU4OwogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmMWU4ZTg7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQouY2VudGVyLWJvYXJkIHsKICBoZWlnaHQ6IDEwMHZoOwogIHdpZHRoOiBhdXRvOwogIG1hcmdpbjogMCAzNTBweCAwIDI2MHB4OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLmVtcHR5LWluZm97CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNDYlOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtc2l6ZTogMThweDsKICBjb2xvcjogI2NjYjFlYTsKICBsZXR0ZXItc3BhY2luZzogNHB4Owp9Ci5hY3Rpb24tYmFyewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDQycHg7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgcGFkZGluZzogMCAxNXB4OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7OwogIGJvcmRlcjogMXB4IHNvbGlkICNmMWU4ZTg7CiAgYm9yZGVyLXRvcDogbm9uZTsKICBib3JkZXItbGVmdDogbm9uZTsKICAuZGVsZXRlLWJ0bnsKICAgIGNvbG9yOiAjRjU2QzZDOwogIH0KfQoubG9nby13cmFwcGVyewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDQycHg7CiAgYmFja2dyb3VuZDogI2ZmZjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YxZThlODsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci5sb2dvewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAxMnB4OwogIHRvcDogNnB4OwogIGxpbmUtaGVpZ2h0OiAzMHB4OwogIGNvbG9yOiAjMDBhZmZmOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zaXplOiAxN3B4OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgPiBpbWd7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgfQogIC5naXRodWJ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogc3ViOwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICA+IGltZ3sKICAgICAgaGVpZ2h0OiAyMnB4OwogICAgfQogIH0KfQoKLmNlbnRlci1ib2FyZC1yb3cgewogIHBhZGRpbmc6IDEycHggMTJweCAxNXB4IDEycHg7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAmID4gLmVsLWZvcm0gewogICAgLy8gNjkgPSAxMisxNSs0MgogICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjlweCk7CiAgfQp9Ci5kcmF3aW5nLWJvYXJkIHsKICBoZWlnaHQ6IDEwMCU7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC5jb21wb25lbnRzLWJvZHkgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMDsKICB9CiAgLnNvcnRhYmxlLWdob3N0IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICY6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICIgIjsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogMDsKICAgICAgdG9wOiAwOwogICAgICBoZWlnaHQ6IDNweDsKICAgICAgYmFja2dyb3VuZDogcmdiKDg5LCA4OSwgMjIzKTsKICAgICAgei1pbmRleDogMjsKICAgIH0KICB9CiAgLmNvbXBvbmVudHMtaXRlbS5zb3J0YWJsZS1naG9zdCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogNjBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWxlY3RlZENvbG9yOwogIH0KICAuYWN0aXZlLWZyb20taXRlbSB7CiAgICAmID4gLmVsLWZvcm0taXRlbXsKICAgICAgYmFja2dyb3VuZDogJHNlbGVjdGVkQ29sb3I7CiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIH0KICAgICYgPiAuZHJhd2luZy1pdGVtLWNvcHksICYgPiAuZHJhd2luZy1pdGVtLWRlbGV0ZXsKICAgICAgZGlzcGxheTogaW5pdGlhbDsKICAgIH0KICAgICYgPiAuY29tcG9uZW50LW5hbWV7CiAgICAgIGNvbG9yOiAkbGlnaHRlckJsdWU7CiAgICB9CiAgfQogIC5lbC1mb3JtLWl0ZW17CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIH0KfQouZHJhd2luZy1pdGVtewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBjdXJzb3I6IG1vdmU7CiAgJi51bmZvY3VzLWJvcmRlcmVkOm5vdCguYWN0aXZlRnJvbUl0ZW0pID4gZGl2OmZpcnN0LWNoaWxkICB7CiAgICBib3JkZXI6IDFweCBkYXNoZWQgI2NjYzsKICB9CiAgLmVsLWZvcm0taXRlbXsKICAgIHBhZGRpbmc6IDEycHggMTBweDsKICB9Cn0KLmRyYXdpbmctcm93LWl0ZW17CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGN1cnNvcjogbW92ZTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBwYWRkaW5nOiAwIDJweDsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIC5kcmF3aW5nLXJvdy1pdGVtIHsKICAgIG1hcmdpbi1ib3R0b206IDJweDsKICB9CiAgLmVsLWNvbHsKICAgIG1hcmdpbi10b3A6IDIycHg7CiAgfQogIC5lbC1mb3JtLWl0ZW17CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuZHJhZy13cmFwcGVyewogICAgbWluLWhlaWdodDogODBweDsKICB9CiAgJi5hY3RpdmUtZnJvbS1pdGVtewogICAgYm9yZGVyOiAxcHggZGFzaGVkICRsaWdodGVyQmx1ZTsKICB9CiAgLmNvbXBvbmVudC1uYW1lewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGNvbG9yOiAjYmJiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMCA2cHg7CiAgfQp9Ci5kcmF3aW5nLWl0ZW0sIC5kcmF3aW5nLXJvdy1pdGVtewogICY6aG92ZXIgewogICAgJiA+IC5lbC1mb3JtLWl0ZW17CiAgICAgIGJhY2tncm91bmQ6ICRzZWxlY3RlZENvbG9yOwogICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICB9CiAgICAmID4gLmRyYXdpbmctaXRlbS1jb3B5LCAmID4gLmRyYXdpbmctaXRlbS1kZWxldGV7CiAgICAgIGRpc3BsYXk6IGluaXRpYWw7CiAgICB9CiAgfQogICYgPiAuZHJhd2luZy1pdGVtLWNvcHksICYgPiAuZHJhd2luZy1pdGVtLWRlbGV0ZXsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC0xMHB4OwogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBsaW5lLWhlaWdodDogMjJweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgei1pbmRleDogMTsKICB9CiAgJiA+IC5kcmF3aW5nLWl0ZW0tY29weXsKICAgIHJpZ2h0OiA1NnB4OwogICAgYm9yZGVyLWNvbG9yOiAkbGlnaHRlckJsdWU7CiAgICBjb2xvcjogJGxpZ2h0ZXJCbHVlOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICY6aG92ZXJ7CiAgICAgIGJhY2tncm91bmQ6ICRsaWdodGVyQmx1ZTsKICAgICAgY29sb3I6ICNmZmY7CiAgICB9CiAgfQogICYgPiAuZHJhd2luZy1pdGVtLWRlbGV0ZXsKICAgIHJpZ2h0OiAyNHB4OwogICAgYm9yZGVyLWNvbG9yOiAjRjU2QzZDOwogICAgY29sb3I6ICNGNTZDNkM7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgJjpob3ZlcnsKICAgICAgYmFja2dyb3VuZDogI0Y1NkM2QzsKICAgICAgY29sb3I6ICNmZmY7CiAgICB9CiAgfQp9Cgo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;;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;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;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","file":"index.vue","sourceRoot":"src/views/tool/build","sourcesContent":["<template>\n  <div class=\"container\">\n    <div class=\"left-board\">\n      <div class=\"logo-wrapper\">\n        <div class=\"logo\">\n          <img :src=\"logo\" alt=\"logo\"> Form Generator\n        </div>\n      </div>\n      <el-scrollbar class=\"left-scrollbar\">\n        <div class=\"components-list\">\n          <div class=\"components-title\">\n            <svg-icon icon-class=\"component\" />输入型组件\n          </div>\n          <draggable\n            class=\"components-draggable\"\n            :list=\"inputComponents\"\n            :group=\"{ name: 'componentsGroup', pull: 'clone', put: false }\"\n            :clone=\"cloneComponent\"\n            draggable=\".components-item\"\n            :sort=\"false\"\n            @end=\"onEnd\"\n          >\n            <div\n              v-for=\"(element, index) in inputComponents\" :key=\"index\" class=\"components-item\"\n              @click=\"addComponent(element)\"\n            >\n              <div class=\"components-body\">\n                <svg-icon :icon-class=\"element.tagIcon\" />\n                {{ element.label }}\n              </div>\n            </div>\n          </draggable>\n          <div class=\"components-title\">\n            <svg-icon icon-class=\"component\" />选择型组件\n          </div>\n          <draggable\n            class=\"components-draggable\"\n            :list=\"selectComponents\"\n            :group=\"{ name: 'componentsGroup', pull: 'clone', put: false }\"\n            :clone=\"cloneComponent\"\n            draggable=\".components-item\"\n            :sort=\"false\"\n            @end=\"onEnd\"\n          >\n            <div\n              v-for=\"(element, index) in selectComponents\"\n              :key=\"index\"\n              class=\"components-item\"\n              @click=\"addComponent(element)\"\n            >\n              <div class=\"components-body\">\n                <svg-icon :icon-class=\"element.tagIcon\" />\n                {{ element.label }}\n              </div>\n            </div>\n          </draggable>\n          <div class=\"components-title\">\n            <svg-icon icon-class=\"component\" /> 布局型组件\n          </div>\n          <draggable\n            class=\"components-draggable\" :list=\"layoutComponents\"\n            :group=\"{ name: 'componentsGroup', pull: 'clone', put: false }\" :clone=\"cloneComponent\"\n            draggable=\".components-item\" :sort=\"false\" @end=\"onEnd\"\n          >\n            <div\n              v-for=\"(element, index) in layoutComponents\" :key=\"index\" class=\"components-item\"\n              @click=\"addComponent(element)\"\n            >\n              <div class=\"components-body\">\n                <svg-icon :icon-class=\"element.tagIcon\" />\n                {{ element.label }}\n              </div>\n            </div>\n          </draggable>\n        </div>\n      </el-scrollbar>\n    </div>\n\n    <div class=\"center-board\">\n      <div class=\"action-bar\">\n        <el-button icon=\"el-icon-download\" type=\"text\" @click=\"download\">\n          导出vue文件\n        </el-button>\n        <el-button class=\"copy-btn-main\" icon=\"el-icon-document-copy\" type=\"text\" @click=\"copy\">\n          复制代码\n        </el-button>\n        <el-button class=\"delete-btn\" icon=\"el-icon-delete\" type=\"text\" @click=\"empty\">\n          清空\n        </el-button>\n      </div>\n      <el-scrollbar class=\"center-scrollbar\">\n        <el-row class=\"center-board-row\" :gutter=\"formConf.gutter\">\n          <el-form\n            :size=\"formConf.size\"\n            :label-position=\"formConf.labelPosition\"\n            :disabled=\"formConf.disabled\"\n            :label-width=\"formConf.labelWidth + 'px'\"\n          >\n            <draggable class=\"drawing-board\" :list=\"drawingList\" :animation=\"340\" group=\"componentsGroup\">\n              <draggable-item\n                v-for=\"(element, index) in drawingList\"\n                :key=\"element.renderKey\"\n                :drawing-list=\"drawingList\"\n                :element=\"element\"\n                :index=\"index\"\n                :active-id=\"activeId\"\n                :form-conf=\"formConf\"\n                @activeItem=\"activeFormItem\"\n                @copyItem=\"drawingItemCopy\"\n                @deleteItem=\"drawingItemDelete\"\n              />\n            </draggable>\n            <div v-show=\"!drawingList.length\" class=\"empty-info\">\n              从左侧拖入或点选组件进行表单设计\n            </div>\n          </el-form>\n        </el-row>\n      </el-scrollbar>\n    </div>\n\n    <right-panel\n      :active-data=\"activeData\"\n      :form-conf=\"formConf\"\n      :show-field=\"!!drawingList.length\"\n      @tag-change=\"tagChange\"\n    />\n\n    <code-type-dialog\n      :visible.sync=\"dialogVisible\"\n      title=\"选择生成类型\"\n      :show-file-name=\"showFileName\"\n      @confirm=\"generate\"\n    />\n    <input id=\"copyNode\" type=\"hidden\">\n  </div>\n</template>\n\n<script>\nimport draggable from 'vuedraggable'\nimport beautifier from 'js-beautify'\nimport ClipboardJS from 'clipboard'\nimport render from '@/utils/generator/render'\nimport RightPanel from './RightPanel'\nimport { inputComponents, selectComponents, layoutComponents, formConf } from '@/utils/generator/config'\nimport { beautifierConf, titleCase } from '@/utils/index'\nimport { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html'\nimport { makeUpJs } from '@/utils/generator/js'\nimport { makeUpCss } from '@/utils/generator/css'\nimport drawingDefault from '@/utils/generator/drawingDefault'\nimport logo from '@/assets/logo/logo.png'\nimport CodeTypeDialog from './CodeTypeDialog'\nimport DraggableItem from './DraggableItem'\n\nlet oldActiveId\nlet tempActiveData\n\nexport default {\n  components: {\n    draggable,\n    render,\n    RightPanel,\n    CodeTypeDialog,\n    DraggableItem\n  },\n  data() {\n    return {\n      logo,\n      idGlobal: 100,\n      formConf,\n      inputComponents,\n      selectComponents,\n      layoutComponents,\n      labelWidth: 100,\n      drawingList: drawingDefault,\n      drawingData: {},\n      activeId: drawingDefault[0].formId,\n      drawerVisible: false,\n      formData: {},\n      dialogVisible: false,\n      generateConf: null,\n      showFileName: false,\n      activeData: drawingDefault[0]\n    }\n  },\n  created() {\n    // 防止 firefox 下 拖拽 会新打卡一个选项卡\n    document.body.ondrop = event => {\n      event.preventDefault()\n      event.stopPropagation()\n    }\n  },\n  watch: {\n    // eslint-disable-next-line func-names\n    'activeData.label': function (val, oldVal) {\n      if (\n        this.activeData.placeholder === undefined\n        || !this.activeData.tag\n        || oldActiveId !== this.activeId\n      ) {\n        return\n      }\n      this.activeData.placeholder = this.activeData.placeholder.replace(oldVal, '') + val\n    },\n    activeId: {\n      handler(val) {\n        oldActiveId = val\n      },\n      immediate: true\n    }\n  },\n  mounted() {\n    const clipboard = new ClipboardJS('#copyNode', {\n      text: trigger => {\n        const codeStr = this.generateCode()\n        this.$notify({\n          title: '成功',\n          message: '代码已复制到剪切板,可粘贴。',\n          type: 'success'\n        })\n        return codeStr\n      }\n    })\n    clipboard.on('error', e => {\n      this.$message.error('代码复制失败')\n    })\n  },\n  methods: {\n    activeFormItem(element) {\n      this.activeData = element\n      this.activeId = element.formId\n    },\n    onEnd(obj, a) {\n      if (obj.from !== obj.to) {\n        this.activeData = tempActiveData\n        this.activeId = this.idGlobal\n      }\n    },\n    addComponent(item) {\n      const clone = this.cloneComponent(item)\n      this.drawingList.push(clone)\n      this.activeFormItem(clone)\n    },\n    cloneComponent(origin) {\n      const clone = JSON.parse(JSON.stringify(origin))\n      clone.formId = ++this.idGlobal\n      clone.span = formConf.span\n      clone.renderKey = +new Date() // 改变renderKey后可以实现强制更新组件\n      if (!clone.layout) clone.layout = 'colFormItem'\n      if (clone.layout === 'colFormItem') {\n        clone.vModel = `field${this.idGlobal}`\n        clone.placeholder !== undefined && (clone.placeholder += clone.label)\n        tempActiveData = clone\n      } else if (clone.layout === 'rowFormItem') {\n        delete clone.label\n        clone.componentName = `row${this.idGlobal}`\n        clone.gutter = this.formConf.gutter\n        tempActiveData = clone\n      }\n      return tempActiveData\n    },\n    AssembleFormData() {\n      this.formData = {\n        fields: JSON.parse(JSON.stringify(this.drawingList)),\n        ...this.formConf\n      }\n    },\n    generate(data) {\n      const func = this[`exec${titleCase(this.operationType)}`]\n      this.generateConf = data\n      func && func(data)\n    },\n    execRun(data) {\n      this.AssembleFormData()\n      this.drawerVisible = true\n    },\n    execDownload(data) {\n      const codeStr = this.generateCode()\n      const blob = new Blob([codeStr], { type: 'text/plain;charset=utf-8' })\n      this.$download.saveAs(blob, data.fileName)\n    },\n    execCopy(data) {\n      document.getElementById('copyNode').click()\n    },\n    empty() {\n      this.$confirm('确定要清空所有组件吗?', '提示', { type: 'warning' }).then(\n        () => {\n          this.drawingList = []\n        }\n      )\n    },\n    drawingItemCopy(item, parent) {\n      let clone = JSON.parse(JSON.stringify(item))\n      clone = this.createIdAndKey(clone)\n      parent.push(clone)\n      this.activeFormItem(clone)\n    },\n    createIdAndKey(item) {\n      item.formId = ++this.idGlobal\n      item.renderKey = +new Date()\n      if (item.layout === 'colFormItem') {\n        item.vModel = `field${this.idGlobal}`\n      } else if (item.layout === 'rowFormItem') {\n        item.componentName = `row${this.idGlobal}`\n      }\n      if (Array.isArray(item.children)) {\n        item.children = item.children.map(childItem => this.createIdAndKey(childItem))\n      }\n      return item\n    },\n    drawingItemDelete(index, parent) {\n      parent.splice(index, 1)\n      this.$nextTick(() => {\n        const len = this.drawingList.length\n        if (len) {\n          this.activeFormItem(this.drawingList[len - 1])\n        }\n      })\n    },\n    generateCode() {\n      const { type } = this.generateConf\n      this.AssembleFormData()\n      const script = vueScript(makeUpJs(this.formData, type))\n      const html = vueTemplate(makeUpHtml(this.formData, type))\n      const css = cssStyle(makeUpCss(this.formData))\n      return beautifier.html(html + script + css, beautifierConf.html)\n    },\n    download() {\n      this.dialogVisible = true\n      this.showFileName = true\n      this.operationType = 'download'\n    },\n    run() {\n      this.dialogVisible = true\n      this.showFileName = false\n      this.operationType = 'run'\n    },\n    copy() {\n      this.dialogVisible = true\n      this.showFileName = false\n      this.operationType = 'copy'\n    },\n    tagChange(newTag) {\n      newTag = this.cloneComponent(newTag)\n      newTag.vModel = this.activeData.vModel\n      newTag.formId = this.activeId\n      newTag.span = this.activeData.span\n      delete this.activeData.tag\n      delete this.activeData.tagIcon\n      delete this.activeData.document\n      Object.keys(newTag).forEach(key => {\n        if (this.activeData[key] !== undefined\n          && typeof this.activeData[key] === typeof newTag[key]) {\n          newTag[key] = this.activeData[key]\n        }\n      })\n      this.activeData = newTag\n      this.updateDrawingList(newTag, this.drawingList)\n    },\n    updateDrawingList(newTag, list) {\n      const index = list.findIndex(item => item.formId === this.activeId)\n      if (index > -1) {\n        list.splice(index, 1, newTag)\n      } else {\n        list.forEach(item => {\n          if (Array.isArray(item.children)) this.updateDrawingList(newTag, item.children)\n        })\n      }\n    }\n  }\n}\n</script>\n\n<style lang='scss'>\nbody, html{\n  margin: 0;\n  padding: 0;\n  background: #fff;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n  font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;\n}\n\ninput, textarea{\n  font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;\n}\n\n.editor-tabs{\n  background: #121315;\n  .el-tabs__header{\n    margin: 0;\n    border-bottom-color: #121315;\n    .el-tabs__nav{\n      border-color: #121315;\n    }\n  }\n  .el-tabs__item{\n    height: 32px;\n    line-height: 32px;\n    color: #888a8e;\n    border-left: 1px solid #121315 !important;\n    background: #363636;\n    margin-right: 5px;\n    user-select: none;\n  }\n  .el-tabs__item.is-active{\n    background: #1e1e1e;\n    border-bottom-color: #1e1e1e!important;\n    color: #fff;\n  }\n  .el-icon-edit{\n    color: #f1fa8c;\n  }\n  .el-icon-document{\n    color: #a95812;\n  }\n}\n\n// home\n.right-scrollbar {\n  .el-scrollbar__view {\n    padding: 12px 18px 15px 15px;\n  }\n}\n.left-scrollbar .el-scrollbar__wrap {\n  box-sizing: border-box;\n  overflow-x: hidden !important;\n  margin-bottom: 0 !important;\n}\n.center-tabs{\n  .el-tabs__header{\n    margin-bottom: 0!important;\n  }\n  .el-tabs__item{\n    width: 50%;\n    text-align: center;\n  }\n  .el-tabs__nav{\n    width: 100%;\n  }\n}\n.reg-item{\n  padding: 12px 6px;\n  background: #f8f8f8;\n  position: relative;\n  border-radius: 4px;\n  .close-btn{\n    position: absolute;\n    right: -6px;\n    top: -6px;\n    display: block;\n    width: 16px;\n    height: 16px;\n    line-height: 16px;\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 50%;\n    color: #fff;\n    text-align: center;\n    z-index: 1;\n    cursor: pointer;\n    font-size: 12px;\n    &:hover{\n      background: rgba(210, 23, 23, 0.5)\n    }\n  }\n  & + .reg-item{\n    margin-top: 18px;\n  }\n}\n.action-bar{\n  & .el-button+.el-button {\n    margin-left: 15px;\n  }\n  & i {\n    font-size: 20px;\n    vertical-align: middle;\n    position: relative;\n    top: -1px;\n  }\n}\n\n.custom-tree-node{\n  width: 100%;\n  font-size: 14px;\n  .node-operation{\n    float: right;\n  }\n  i[class*=\"el-icon\"] + i[class*=\"el-icon\"]{\n    margin-left: 6px;\n  }\n  .el-icon-plus{\n    color: #409EFF;\n  }\n  .el-icon-delete{\n    color: #157a0c;\n  }\n}\n\n.left-scrollbar .el-scrollbar__view{\n  overflow-x: hidden;\n}\n\n.el-rate{\n  display: inline-block;\n  vertical-align: text-top;\n}\n.el-upload__tip{\n  line-height: 1.2;\n}\n\n$selectedColor: #f6f7ff;\n$lighterBlue: #409EFF;\n\n.container {\n  position: relative;\n  width: 100%;\n  height: 100%;\n}\n\n.components-list {\n  padding: 8px;\n  box-sizing: border-box;\n  height: 100%;\n  .components-item {\n    display: inline-block;\n    width: 48%;\n    margin: 1%;\n    transition: transform 0ms !important;\n  }\n}\n.components-draggable{\n  padding-bottom: 20px;\n}\n.components-title{\n  font-size: 14px;\n  color: #222;\n  margin: 6px 2px;\n  .svg-icon{\n    color: #666;\n    font-size: 18px;\n  }\n}\n\n.components-body {\n  padding: 8px 10px;\n  background: $selectedColor;\n  font-size: 12px;\n  cursor: move;\n  border: 1px dashed $selectedColor;\n  border-radius: 3px;\n  .svg-icon{\n    color: #777;\n    font-size: 15px;\n  }\n  &:hover {\n    border: 1px dashed #787be8;\n    color: #787be8;\n    .svg-icon {\n      color: #787be8;\n    }\n  }\n}\n\n.left-board {\n  width: 260px;\n  position: absolute;\n  left: 0;\n  top: 0;\n  height: 100vh;\n}\n.left-scrollbar{\n  height: calc(100vh - 42px);\n  overflow: hidden;\n}\n.center-scrollbar {\n  height: calc(100vh - 42px);\n  overflow: hidden;\n  border-left: 1px solid #f1e8e8;\n  border-right: 1px solid #f1e8e8;\n  box-sizing: border-box;\n}\n.center-board {\n  height: 100vh;\n  width: auto;\n  margin: 0 350px 0 260px;\n  box-sizing: border-box;\n}\n.empty-info{\n  position: absolute;\n  top: 46%;\n  left: 0;\n  right: 0;\n  text-align: center;\n  font-size: 18px;\n  color: #ccb1ea;\n  letter-spacing: 4px;\n}\n.action-bar{\n  position: relative;\n  height: 42px;\n  text-align: right;\n  padding: 0 15px;\n  box-sizing: border-box;;\n  border: 1px solid #f1e8e8;\n  border-top: none;\n  border-left: none;\n  .delete-btn{\n    color: #F56C6C;\n  }\n}\n.logo-wrapper{\n  position: relative;\n  height: 42px;\n  background: #fff;\n  border-bottom: 1px solid #f1e8e8;\n  box-sizing: border-box;\n}\n.logo{\n  position: absolute;\n  left: 12px;\n  top: 6px;\n  line-height: 30px;\n  color: #00afff;\n  font-weight: 600;\n  font-size: 17px;\n  white-space: nowrap;\n  > img{\n    width: 30px;\n    height: 30px;\n    vertical-align: top;\n  }\n  .github{\n    display: inline-block;\n    vertical-align: sub;\n    margin-left: 15px;\n    > img{\n      height: 22px;\n    }\n  }\n}\n\n.center-board-row {\n  padding: 12px 12px 15px 12px;\n  box-sizing: border-box;\n  & > .el-form {\n    // 69 = 12+15+42\n    height: calc(100vh - 69px);\n  }\n}\n.drawing-board {\n  height: 100%;\n  position: relative;\n  .components-body {\n    padding: 0;\n    margin: 0;\n    font-size: 0;\n  }\n  .sortable-ghost {\n    position: relative;\n    display: block;\n    overflow: hidden;\n    &::before {\n      content: \" \";\n      position: absolute;\n      left: 0;\n      right: 0;\n      top: 0;\n      height: 3px;\n      background: rgb(89, 89, 223);\n      z-index: 2;\n    }\n  }\n  .components-item.sortable-ghost {\n    width: 100%;\n    height: 60px;\n    background-color: $selectedColor;\n  }\n  .active-from-item {\n    & > .el-form-item{\n      background: $selectedColor;\n      border-radius: 6px;\n    }\n    & > .drawing-item-copy, & > .drawing-item-delete{\n      display: initial;\n    }\n    & > .component-name{\n      color: $lighterBlue;\n    }\n  }\n  .el-form-item{\n    margin-bottom: 15px;\n  }\n}\n.drawing-item{\n  position: relative;\n  cursor: move;\n  &.unfocus-bordered:not(.activeFromItem) > div:first-child  {\n    border: 1px dashed #ccc;\n  }\n  .el-form-item{\n    padding: 12px 10px;\n  }\n}\n.drawing-row-item{\n  position: relative;\n  cursor: move;\n  box-sizing: border-box;\n  border: 1px dashed #ccc;\n  border-radius: 3px;\n  padding: 0 2px;\n  margin-bottom: 15px;\n  .drawing-row-item {\n    margin-bottom: 2px;\n  }\n  .el-col{\n    margin-top: 22px;\n  }\n  .el-form-item{\n    margin-bottom: 0;\n  }\n  .drag-wrapper{\n    min-height: 80px;\n  }\n  &.active-from-item{\n    border: 1px dashed $lighterBlue;\n  }\n  .component-name{\n    position: absolute;\n    top: 0;\n    left: 0;\n    font-size: 12px;\n    color: #bbb;\n    display: inline-block;\n    padding: 0 6px;\n  }\n}\n.drawing-item, .drawing-row-item{\n  &:hover {\n    & > .el-form-item{\n      background: $selectedColor;\n      border-radius: 6px;\n    }\n    & > .drawing-item-copy, & > .drawing-item-delete{\n      display: initial;\n    }\n  }\n  & > .drawing-item-copy, & > .drawing-item-delete{\n    display: none;\n    position: absolute;\n    top: -10px;\n    width: 22px;\n    height: 22px;\n    line-height: 22px;\n    text-align: center;\n    border-radius: 50%;\n    font-size: 12px;\n    border: 1px solid;\n    cursor: pointer;\n    z-index: 1;\n  }\n  & > .drawing-item-copy{\n    right: 56px;\n    border-color: $lighterBlue;\n    color: $lighterBlue;\n    background: #fff;\n    &:hover{\n      background: $lighterBlue;\n      color: #fff;\n    }\n  }\n  & > .drawing-item-delete{\n    right: 24px;\n    border-color: #F56C6C;\n    color: #F56C6C;\n    background: #fff;\n    &:hover{\n      background: #F56C6C;\n      color: #fff;\n    }\n  }\n}\n\n</style>\n"]}]}