2bd2fb716e71a3e57d78ae620c7c5c14.json 34 KB

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