1 |
- {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\components\\DynamicProcessNodeConfig\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\components\\DynamicProcessNodeConfig\\index.vue","mtime":1623215519972},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgY29tcGxleFBvcCBmcm9tICJAL2NvbXBvbmVudHMvY29tcGxleFBvcCI7DQppbXBvcnQgUnVsZUNvbmZpZyBmcm9tICJAL2NvbXBvbmVudHMvUnVsZUNvbmZpZyINCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogIkR5bmFtaWNQcm9jZXNzTm9kZUNvbmZpZyIsDQogIGNvbXBvbmVudHM6IHsgY29tcGxleFBvcCwgUnVsZUNvbmZpZyB9LA0KICBwcm9wczogew0KICAgIGNvbmZpZ0RhdGE6IHsNCiAgICAgIHR5cGU6IE9iamVjdCwNCiAgICAgIGRlZmF1bHQoKSB7DQogICAgICAgIHJldHVybiB7fTsNCiAgICAgIH0NCiAgICB9LA0KICAgIFRBQkxFX0lEOiB7DQogICAgfSwgLy/mqKHniYjnrKzkuIDmraXphY3nva7ooajmlbDmja4NCiAgICBub2RlOnt9LCAgLy/lvZPliY3oioLngrkNCiAgICBzdGF0dXM6bnVsbCwNCiAgICByZWplY3RlZE5vZGVzOnsNCiAgICAgIHR5cGU6IEFycmF5LA0KICAgICAgZGVmYXVsdDogKCkgPT4gew0KICAgICAgICByZXR1cm4gW10NCiAgICAgIH0NCiAgICB9LA0KICAgIGFzc2lnbmVkTm9kZXM6ew0KICAgICAgdHlwZTogQXJyYXksDQogICAgICBkZWZhdWx0OiAoKSA9PiB7DQogICAgICAgIHJldHVybiBbXQ0KICAgICAgfQ0KICAgIH0sDQogICAgcmVhZE9ubHk6ew0KICAgICAgdHlwZTpCb29sZWFuLA0KICAgICAgZGVmYXVsdDpmYWxzZQ0KICAgIH0NCiAgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgLy/oioLngrnooajnmoTphY3nva4NCiAgICAgIHRhYmxlQ29uZmlnOnsNCiAgICAgICAgcHJvcHM6ew0KICAgICAgICAgIGNvbHVtbnNLZXk6IFsnTkFNRSddLA0KICAgICAgICAgIEF1dG9EYXRhOiBbXSwNCiAgICAgICAgICBoaWRlY29sdW1uczogWydpZCddLA0KICAgICAgICAgIGRhdGE6IHt9LA0KICAgICAgICAgIHRvdGFsUm93Q291bnQ6IDAsDQogICAgICAgICAgZGVmYXVsdFNlbGVjdGVkOiBbXSwNCiAgICAgICAgICBpc0JhY2tSb3dJdGVtOiB0cnVlDQogICAgICAgIH0sDQogICAgICAgIGV2ZW50OnsNCiAgICAgICAgICAnb24taW5wdXQtdmFsdWUtY2hhbmdlJzogKHZhbHVlKSA9PiB7DQogICAgICAgICAgICAgIC8vIOWklumUrueahOaooeeziuaQnOe0og0KICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLkF1dG9EYXRhID0gW10NCiAgICAgICAgICAgICAgdGhpcy4kbmV0d29yay5wb3N0KCcvcC9jL21ldGEvdGFibGUvbGlzdCcse0RFU0NSSVBUSU9OOnZhbHVlfSkudGhlbihyZXMgPT4gew0KICAgICAgICAgICAgICAgIGlmKHJlcy5kYXRhLmNvZGUgPT09IDApew0KICAgICAgICAgICAgICAgICAgLy8gdGhpcy5yb3cgPSByZXMuZGF0YS5kYXRhLnJvdy5jb25jYXQoW10pDQogICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLkF1dG9EYXRhID0gcmVzLmRhdGEuZGF0YS5yb3cucmVkdWNlKChhcnIsaXRlbSkgPT4gew0KICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7DQogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6aXRlbS5OQU1FLnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBpZDppdGVtLklELnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBOQU1FOml0ZW0uREVTQ1JJUFRJT04udmFsDQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnINCiAgICAgICAgICAgICAgICAgIH0sW10pOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICB9KQ0KICAgICAgICAgIH0sDQogICAgICAgICAgJ29uLXBvcHBlci1zaG93JzogKCR0aGlzKSA9PiB7DQogICAgICAgICAgICAvLyDlvZPlpJbplK7kuIvmi4nnq5nlvIDlp4vljrvor7fmsYLmlbDmja4NCiAgICAgICAgICAgIC8vIHRoaXMuZnJlc2hEcm9wRG93blNlbGVjdEZpbHRlckRhdGEoJHRoaXMpDQogICAgICAgICAgICB0aGlzLiRuZXR3b3JrLnBvc3QoJy9wL2MvbWV0YS90YWJsZS9saXN0Jyx7DQogICAgICAgICAgICAgIHBhZ2VTaXplOiR0aGlzLnBhZ2VTaXplLA0KICAgICAgICAgICAgICBwYWdlOjENCiAgICAgICAgICAgIH0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICAgICAgaWYocmVzLmRhdGEuY29kZSA9PT0gMCl7DQogICAgICAgICAgICAgICAgcmVzLmRhdGEuZGF0YS50YWJ0aC5mb3JFYWNoKGl0ZW0gPT4gew0KICAgICAgICAgICAgICAgICAgaWYoaXRlbS5jb2xuYW1lID09PSAnREVTQ1JJUFRJT04nKXsNCiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc2FrID0gdHJ1ZQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0NCiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb25maWcucHJvcHMuZGF0YSA9IHJlcy5kYXRhLmRhdGE7DQogICAgICAgICAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5wcm9wcy50b3RhbFJvd0NvdW50ID0gcmVzLmRhdGEuZGF0YS50b3RhbFJvd0NvdW50Ow0KICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgfSwNCiAgICAgICAgICAnb24tcGFnZS1jaGFuZ2UnOiAoY3VycmVudFBhZ2UsICR0aGlzKSA9PiB7DQogICAgICAgICAgICAvLyDlpJbplK7nmoTliIbpobXmn6Xor6INCiAgICAgICAgICAgIC8vIHRoaXMuZnJlc2hEcm9wRG93blNlbGVjdEZpbHRlckRhdGEoJHRoaXMsY3VycmVudFBhZ2UpDQogICAgICAgICAgICB0aGlzLiRuZXR3b3JrLnBvc3QoJy9wL2MvbWV0YS90YWJsZS9saXN0Jyx7DQogICAgICAgICAgICAgIHBhZ2VTaXplOiR0aGlzLnBhZ2VTaXplLA0KICAgICAgICAgICAgICBwYWdlOmN1cnJlbnRQYWdlDQogICAgICAgICAgICB9KS50aGVuKHJlcyA9PiB7DQogICAgICAgICAgICAgIGlmKHJlcy5kYXRhLmNvZGUgPT09IDApew0KICAgICAgICAgICAgICAgIHJlcy5kYXRhLmRhdGEudGFidGguZm9yRWFjaChpdGVtID0+IHsNCiAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uY29sbmFtZSA9PT0gJ0RFU0NSSVBUSU9OJyl7DQogICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNhayA9IHRydWUNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtDQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLmRhdGEgPSByZXMuZGF0YS5kYXRhOw0KICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb25maWcucHJvcHMudG90YWxSb3dDb3VudCA9IHJlcy5kYXRhLmRhdGEudG90YWxSb3dDb3VudDsNCiAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0sDQogICAgICAgICAgJ29uLWJsdXInOihldmVudCxpbnN0YW5jZSkgPT4gew0KICAgICAgICAgICAgLy8gaWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMuZGF0YS5idXNpbmVzc1R5cGUpICE9PSAnW29iamVjdCBBcnJheV0nIHx8IHRoaXMuZGF0YS5idXNpbmVzc1R5cGUubGVuZ3RoID09PSAwKXsNCiAgICAgICAgICAgIC8vICAgaW5zdGFuY2UuaW5wdXRWYWx1ZSA9ICcnDQoNCiAgICAgICAgICAgIC8vICAgLyoNCiAgICAgICAgICAgIC8vICAgICB0b2RvDQogICAgICAgICAgICAvLyAgICAg5riF56m65omA5pyJ5ZKM5Li76KGo5pyJ5YWz55qE5pWw5o2uDQogICAgICAgICAgICAvLyAgICovDQoNCiAgICAgICAgICAgIC8vIH0NCiAgICAgICAgICB9LA0KICAgICAgICAgICdvbi1ma3JwLXNlbGVjdGVkJzogKHZhbHVlKSA9PiB7DQogICAgICAgICAgICBpZih2YWx1ZS5sZW5ndGggPiAwKXsNCiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtID0gdmFsdWVbMF0ucm93SXRlbS5OQU1FLnZhbD92YWx1ZVswXS5yb3dJdGVtLk5BTUUudmFsOnZhbHVlWzBdLnJvd0l0ZW0uTkFNRQ0KICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEubm9kZUZvcm1JZCA9IHZhbHVlWzBdLklEDQogICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybU5hbWUgPSB2YWx1ZVswXS5MYWJlbA0KDQogICAgICAgICAgICAgIHRoaXMuZ2V0VmlzaWJsZUJ1dHRvbnMoKQ0KICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybSA9IG51bGwNCiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQgPSBudWxsDQogICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybU5hbWUgPSBudWxsDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIOa4hemZpOacieWFs+Wtl+auteaVsOaNrg0KICAgICAgICAgICAgdGhpcy5vbkNsZWFyKCkNCiAgICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQuZGVmYXVsdFNlbGVjdGVkID0gW10NCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5iZWhpbmRFdmVudCA9IFtdDQogICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEucHJlRXZlbnQgPSBbXQ0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmluZXZpdGFibGVFeHRzID0gW10NCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS52aXNpYmxlQnQgPSBbXQ0KICAgICAgICAgIH0sDQogICAgICAgICAgJ29uLWNsZWFyJzogKCkgPT4gew0KICAgICAgICAgICAgLy8g5riF6Zmk5pyJ5YWz5a2X5q615pWw5o2uDQogICAgICAgICAgICB0aGlzLm9uQ2xlYXIoKQ0KICAgICAgICAgICAgdGhpcy5tb2RpZnlGaWVsZC5kZWZhdWx0U2VsZWN0ZWQgPSBbXQ0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmJlaGluZEV2ZW50ID0gW10NCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5wcmVFdmVudCA9IFtdDQogICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZUV4dHMgPSBbXQ0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLnZpc2libGVCdCA9IFtdDQoNCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybSA9IG51bGwNCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkID0gbnVsbA0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtTmFtZSA9IG51bGwNCiAgICAgICAgICAgIHRoaXMudGFibGVDb25maWcucHJvcHMuQXV0b0RhdGEgPSBbXQ0KICAgICAgICAgICAgICB0aGlzLiRuZXR3b3JrLnBvc3QoJy9wL2MvbWV0YS90YWJsZS9saXN0Jyx7REVTQ1JJUFRJT046Jyd9KS50aGVuKHJlcyA9PiB7DQogICAgICAgICAgICAgICAgaWYocmVzLmRhdGEuY29kZSA9PT0gMCl7DQogICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLkF1dG9EYXRhID0gcmVzLmRhdGEuZGF0YS5yb3cucmVkdWNlKChhcnIsaXRlbSkgPT4gew0KICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7DQogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6aXRlbS5OQU1FLnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBpZDppdGVtLklELnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBOQU1FOml0ZW0uREVTQ1JJUFRJT04udmFsDQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnINCiAgICAgICAgICAgICAgICAgIH0sW10pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfSkNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0sDQoNCiAgICAgIHZpc2libGVCdXR0b25zOltdLCAvLyDlj6/op4HmjInpkq4NCg0KDQogICAgICAvL+S/ruaUueWtl+autemFjee9rg0KDQogICAgICAvLyDlj6/mmL7npLrlrZfmrrUNCiAgICAgIG1vZGlmeUZpZWxkOiB7DQogICAgICAgIG1vZGlmaWFibGVfZmllbGQ6ICLpgInkuK3nmoTlrZfmrrUiLA0KICAgICAgICBtb2RpZmlhYmxlX2ZpZWxkX25hbWU6ICIiLCAvL+mAieS4reeahOWtl+auteWQjeensDENCiAgICAgICAgdG90YWxSb3dDb3VudDogMCwgLy/mlbDmja7mgLvmnaHmlbANCiAgICAgICAgcGFnZVNpemU6IDEwLCAvL+avj+mhteaVsOaNruadoeaVsA0KICAgICAgICBkYXRhRW1wdHlNZXNzYWdlOiAi5pWw5o2u5Li656m6IiwgLy/msqHmlbDmja7ml7bnmoTmj5DnpLoNCiAgICAgICAgZGF0YToge30sIC8v6KGo5qC85pWw5o2uDQogICAgICAgIGNvbHVtbnNLZXk6IFsidmFsdWUiXSwgLy9pbnB1dOaYvuekuueahOWtl+autQ0KICAgICAgICBjb2x1bW5zOiBbImlkIl0sIC8v5qih57OK5pCc57Si6ZqQ6JeP55qE5YiXDQogICAgICAgIEF1dG9EYXRhOiBbXSwNCiAgICAgICAgZGVmYXVsdFNlbGVjdGVkOiBbXQ0KICAgICAgfSwNCiAgICAgIG1vZGlmeVRhYmxlU2hvdzogZmFsc2UsDQogICAgICBtb2RpZnlDb2x1bW5zOlsNCiAgICAgICAgew0KICAgICAgICAgIHRpdGxlOiAn5bqP5Y+3JywNCiAgICAgICAgICByZW5kZXI6IChoLCBwYXJhbXMpID0+IHsNCiAgICAgICAgICAgICAgcmV0dXJuIGgoJ3NwYW4nLCB7fSxwYXJhbXMuaW5kZXggKyAxKTsNCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB0aXRsZTogJ+Wtl+auteWQjScsDQogICAgICAgICAga2V5OiAnTGFiZWwnDQogICAgICAgIH0sDQogICAgICAgIC8vIHsNCiAgICAgICAgLy8gICB0aXRsZTogJ+W/heWhqycsDQogICAgICAgIC8vICAga2V5OiAnaXNub3RudWxsJywNCiAgICAgICAgLy8gICByZW5kZXI6IChoLCBwYXJhbXMpID0+IHsNCiAgICAgICAgLy8gICAgICAgcmV0dXJuIGgoJ0NoZWNrYm94Jywgew0KICAgICAgICAvLyAgICAgICAgIHByb3BzOnsNCiAgICAgICAgLy8gICAgICAgICAgICd2YWx1ZSc6cGFyYW1zLnJvdy5pc25vdG51bGwNCiAgICAgICAgLy8gICAgICAgICB9LA0KICAgICAgICAvLyAgICAgICAgIG9uOnsNCiAgICAgICAgLy8gICAgICAgICAgICdvbi1jaGFuZ2UnOiAodmFsdWUpID0+IHsNCiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm1vZGlmaWFibGVGaWVsZFtwYXJhbXMuaW5kZXhdLmlzbm90bnVsbCA9IHZhbHVlDQogICAgICAgIC8vICAgICAgICAgICB9DQogICAgICAgIC8vICAgICAgICAgfQ0KICAgICAgICAvLyAgICAgICB9KTsNCiAgICAgICAgLy8gICB9DQogICAgICAgIC8vIH0sDQogICAgICAgIHsNCiAgICAgICAgICB0aXRsZTogJ+WPquivuycsDQogICAgICAgICAga2V5OiAncmVhZG9ubHknLA0KICAgICAgICAgIHJlbmRlcjogKGgsIHBhcmFtcykgPT4gew0KICAgICAgICAgICAgICByZXR1cm4gaCgnQ2hlY2tib3gnLCB7DQogICAgICAgICAgICAgICAgcHJvcHM6ew0KICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzpwYXJhbXMucm93LnJlYWRvbmx5DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBvbjp7DQogICAgICAgICAgICAgICAgICAnb24tY2hhbmdlJzogKHZhbHVlKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5tb2RpZmlhYmxlRmllbGRbcGFyYW1zLmluZGV4XS5yZWFkb25seSA9IHZhbHVlDQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB0aXRsZTon5pON5L2cJywNCiAgICAgICAgICByZW5kZXI6KGgscGFyYW1zKSA9PiB7DQogICAgICAgICAgICByZXR1cm4gaCgnc3Bhbicsew0KICAgICAgICAgICAgICBzdHlsZTp7DQogICAgICAgICAgICAgICAgY29sb3I6J3JnYmEoMTYsIDE0MiwgMjMzLCAxKScsDQogICAgICAgICAgICAgICAgY3Vyc29yOidwb2ludGVyJw0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBvbjp7DQogICAgICAgICAgICAgICAgY2xpY2s6KCkgPT4gew0KICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm1vZGlmaWFibGVGaWVsZCA9IHRoaXMuY29uZmlnRGF0YS5tb2RpZmlhYmxlRmllbGQuZmlsdGVyKChpdGVtLGluZGV4KSA9PiBpbmRleCAhPT0gcGFyYW1zLmluZGV4KQ0KICAgICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlGaWVsZC5kZWZhdWx0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ0RhdGEubW9kaWZpYWJsZUZpZWxkDQogICAgICAgICAgICAgICAgICBpZih0aGlzLm1vZGlmeUZpZWxkLmRlZmF1bHRTZWxlY3RlZC5sZW5ndGggPT09IDApew0KICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGlmeVRhYmxlU2hvdyA9IGZhbHNlDQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LCfliKDpmaQnKQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgXSwNCg0KICAgICAgcGFnZUJ0bkRhdGE6IFsNCiAgICAgICAgew0KICAgICAgICAgIGxhYmVsOiAi5pyA5bCR5ZCM5oSP5Lq65pWwIiwNCiAgICAgICAgICBpY29udHlwZTogMSwNCiAgICAgICAgICBjb2xvcjogIiMwOUExNTUiLA0KICAgICAgICAgIHZhbHVlOiAiIg0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgbGFiZWw6ICLlkIzmhI/nirbmgIHliKvlkI0iLA0KICAgICAgICAgIGljb250eXBlOiAxLA0KICAgICAgICAgIGNvbG9yOiAiIzA5QTE1NSIsDQogICAgICAgICAgdmFsdWU6ICIiDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBsYWJlbDogIuacgOWwkeaLkue7neS6uuaVsCIsDQogICAgICAgICAgaWNvbnR5cGU6IDIsDQogICAgICAgICAgY29sb3I6ICIjRUQ0MDE0IiwNCiAgICAgICAgICB2YWx1ZTogIiINCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGxhYmVsOiAi5ouS57ud54q25oCB5Yir5ZCNIiwNCiAgICAgICAgICBpY29udHlwZTogMiwNCiAgICAgICAgICBjb2xvcjogIiNFRDQwMTQiLA0KICAgICAgICAgIHZhbHVlOiAiIg0KICAgICAgICB9DQogICAgICBdLA0KICAgICAgc3RhdHVzMTogZmFsc2UsIC8v6LaF5pe25o+Q6YaSDQogICAgICBzdGF0dXMyOiBmYWxzZSwgLy/oh6rliqjlpITnkIYNCiAgICAgIG9wZW5Db250cm9sOiBmYWxzZSwgLy/mjqfliLblvLnmoYbmmK/lkKbmmL7npLoNCiAgICAgIGxvYWRpbmc6IGZhbHNlLCAvLyB65pyA5aSnbG9hZGluZw0KICAgICAgcmVzdWx0RGF0YToge30sIC8vIOmAieS4ree7k+aenA0KICAgICAgb3BlbjogZmFsc2UsIC8vIOaYr+WQpuaJk+W8gA0KICAgICAgb2JqOiB7fSwgLy/kvKDnu5l0YWJsZeeahOWvueixoQ0KICAgICAgc2F2ZU9iajoge30sIC8v5a2Y5YKo55qE5q+P5qyh6IqC54K555qE5a+56LGhDQogICAgICBzZWxlY3RSb3c6IFtdLCAvL+W8ueahhuWkmumAieWNleWHu+S4gOihjOeahOaVsOaNrg0KICAgICAgYXBwcm92ZXM6ICIiLCAvL+WuoeaJueebuOWFs+aVsOaNrg0KICAgICAgc2V0T3ZlcnRpbWU6IHsNCiAgICAgICAgdGhyZXNob2xkOiAiIiwNCiAgICAgICAgc291cmNlczogMCwNCiAgICAgICAgc3RhdHVzOiAxLA0KICAgICAgICBoYW5kbGVWYWx1ZTogIiIsDQogICAgICAgIGhhbmRsZVR5cGU6IDExLA0KICAgICAgICBleHRyYU1zZzogIiINCiAgICAgIH0sDQogICAgICBhdXRvRGV0YWlsOiB7DQogICAgICAgIHRocmVzaG9sZDogIiIsDQogICAgICAgIHNvdXJjZXM6IDAsDQogICAgICAgIHN0YXR1czogMSwNCiAgICAgICAgaGFuZGxlVHlwZTogMjAsDQogICAgICAgIGV4dHJhTXNnOiAiIiwNCiAgICAgICAgaGFuZGxlVmFsdWU6ICIiDQogICAgICB9LA0KICAgICAgYXBwcm92ZWxMaXN0OiBbXSwgLy/lrZjmlL7lrqHmibnnm7jlhbPnmoTmlbDmja4NCiAgICAgIGNsb3NlVHlwZTogZmFsc2UsIC8v5o6n5Yi25a6h5om556Gu5a6a5Y+W5raI5pi+56S654q25oCBDQogICAgICBpc0NhbGxJbnRlcmZhY2U6IGZhbHNlLA0KDQogICAgICBkZWZhdWx0T2JqOnt9LCAgLy/pu5jorqTmlbDmja4NCg0KDQoNCiAgICB9Ow0KICB9LA0KICBjb21wdXRlZDogew0KICAgIHRhYmxlSW5mbyAoKSB7DQogICAgICByZXR1cm4ge3RhYmxlSWQ6dGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQsdGFibGVOYW1lOnRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybX0NCiAgICB9LA0KICAgIGFjdFNlcnZpY2VTKCkgew0KICAgICAgcmV0dXJuIFt0aGlzLnNldE92ZXJ0aW1lLCB0aGlzLmF1dG9EZXRhaWxdOw0KICAgIH0NCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICBwYWdlQnRuRGF0YTogew0KICAgICAgaGFuZGxlcihuZXdWYWwpIHsNCg0KICAgICAgICBsZXQgdGVtQXJyID0gWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIGFjdFR5cGU6IDAsDQogICAgICAgICAgICBhY3ROYW1lOiBuZXdWYWxbMV0udmFsdWUsDQogICAgICAgICAgICBhY3RMaW1pdDogbmV3VmFsWzBdLnZhbHVlDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBhY3RUeXBlOiAxLA0KICAgICAgICAgICAgYWN0TmFtZTogbmV3VmFsWzNdLnZhbHVlLA0KICAgICAgICAgICAgYWN0TGltaXQ6IG5ld1ZhbFsyXS52YWx1ZQ0KICAgICAgICAgIH0NCiAgICAgICAgXTsNCiAgICAgICAgaWYgKHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdC5sZW5ndGggPCAxKSB7DQogICAgICAgICAgdGhpcy5jb25maWdEYXRhLnJ1bGVMaXN0ID0gdGVtQXJyOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdC5tYXAoKGl0ZW0pID0+IHsNCiAgICAgICAgICAgIHRlbUFyci5tYXAoaW5uZXIgPT4gew0KICAgICAgICAgICAgICBpZiAoaXRlbS5hY3RUeXBlID09PSBpbm5lci5hY3RUeXBlKSB7DQogICAgICAgICAgICAgICAgaXRlbSA9IE9iamVjdC5hc3NpZ24oaXRlbSwgaW5uZXIpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgfSwNCiAgICAgIGRlZXA6IHRydWUNCiAgICB9LA0KICAgIGFjdFNlcnZpY2VTOiB7DQogICAgICBoYW5kbGVyKG5ld1ZhbCkgew0KICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0U2VydmljZVMgPSBuZXdWYWw7DQogICAgICB9LA0KICAgICAgZGVlcDogdHJ1ZQ0KICAgIH0sDQogICAgYXBwcm92ZWxMaXN0OiB7DQogICAgICBoYW5kbGVyKG5ld1ZhbCkgew0KICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZWxMaXN0ID0gbmV3VmFsOw0KICAgICAgfSwNCiAgICAgIGRlZXA6IHRydWUNCiAgICB9DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICBvbkJsdXIoZXZlbnQsIGlucywga2V5KSB7DQogICAgICBsZXQgcmVzID0gL15bMC05XSokLzsNCiAgICAgIGlmIChyZXMudGVzdChrZXkpKSB7DQogICAgICAgIGlmICh0aGlzLnBhZ2VCdG5EYXRhW2tleV0udmFsdWUgPT09ICIiICYmIGtleSA9PSAwKSB7DQogICAgICAgICAgdGhpcy4kTWVzc2FnZS53YXJuaW5nKCLmnIDlsJHlkIzmhI/kurrmlbDkuI3og73kuLrnqboiKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGhpcy5wYWdlQnRuRGF0YVtrZXldLnZhbHVlID09PSAiIiAmJiBrZXkgPT0gMSkgew0KICAgICAgICAgIHRoaXMuJE1lc3NhZ2Uud2FybmluZygi5ZCM5oSP54q25oCB5Yir5ZCN5LiN6IO95Li656m6Iik7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHRoaXMucGFnZUJ0bkRhdGFba2V5XS52YWx1ZSA9PT0gIiIgJiYga2V5ID09IDIpIHsNCiAgICAgICAgICB0aGlzLiRNZXNzYWdlLndhcm5pbmcoIuacgOWwkeaLkue7neS6uuaVsOS4jeiDveS4uuepuiIpOw0KICAgICAgICB9DQogICAgICAgIGlmICh0aGlzLnBhZ2VCdG5EYXRhW2tleV0udmFsdWUgPT09ICIiICYmIGtleSA9PSAzKSB7DQogICAgICAgICAgdGhpcy4kTWVzc2FnZS53YXJuaW5nKCLmi5Lnu53nirbmgIHliKvlkI3kuI3og73kuLrnqboiKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy/lj6/mmL7lrZfmrrXkuIvmi4nlpJrpgInkuovku7YNCiAgICBPbkZrcnBTZWxlY3RlZChzZWxlY3RlZCkgew0KICAgICAgaWYoc2VsZWN0ZWQubGVuZ3RoID09PSAwKXsNCiAgICAgICAgdGhpcy5tb2RpZnlUYWJsZVNob3cgPSBmYWxzZQ0KICAgICAgfQ0KICAgICAgc2VsZWN0ZWQubWFwKGl0ZW0gPT4gew0KICAgICAgICAvLyBpdGVtLmlzbm90bnVsbCA9IGZhbHNlDQogICAgICAgIGl0ZW0ucmVhZG9ubHkgPSBmYWxzZQ0KICAgICAgICByZXR1cm4gaXRlbQ0KICAgICAgfSkNCiAgICAgIHRoaXMubW9kaWZ5RmllbGQubW9kaWZpYWJsZUZpZWxkID0gc2VsZWN0ZWQ7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEubW9kaWZpYWJsZUZpZWxkID0gc2VsZWN0ZWQ7DQogICAgfSwNCiAgICBvblBvcHBlclNob3coKSB7DQogICAgICAvL+S4i+aLieWkmumAiQ0KICAgICAgdGhpcy5maW5kRmllbGQoeyBBRF9UQUJMRV9JRDogdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQgfSk7DQogICAgfSwNCiAgICBjaGFuZ2VQYWdlKHZhbCkgew0KICAgICAgdGhpcy5maW5kRmllbGQoew0KICAgICAgICBwYWdlU2l6ZTogdGhpcy5tb2RpZnlGaWVsZC5wYWdlU2l6ZSwNCiAgICAgICAgcGFnZTogdmFsLA0KICAgICAgICBBRF9UQUJMRV9JRDogdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQNCiAgICAgIH0pOw0KICAgIH0sDQogICAgbW9kaWZpYWJsZUZpZWxkQ2xpY2sgKCkgeyAgLy/lj6/mmL7lrZfmrrXlj6ror7sv5b+F5aGr5o6n5Yi2DQogICAgICBpZih0aGlzLm1vZGlmeVRhYmxlU2hvdyl7ICAvL+S/neWtmOadg+mZkA0KDQogICAgICB9ZWxzZXsgIC8v5pu05pS55p2D6ZmQDQoNCiAgICAgIH0NCg0KICAgICAgdGhpcy5tb2RpZnlUYWJsZVNob3cgPSAhdGhpcy5tb2RpZnlUYWJsZVNob3cNCiAgICB9LA0KICAgIC8v5qih57OK5p+l5om+aW5wdXTkuovku7YNCiAgICBpbnB1dENoYW5nZSh2YWwpIHsNCiAgICAgIHRoaXMuZmluZEZpZWxkKHsgREVTQ1JJUFRJT046IHZhbCwgQURfVEFCTEVfSUQ6IHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkIH0pOw0KICAgIH0sDQogICAgb25DbGVhcigpIHsNCiAgICAgIHRoaXMubW9kaWZ5VGFibGVTaG93ID0gZmFsc2UNCiAgICAgIHRoaXMubW9kaWZ5RmllbGQubW9kaWZpYWJsZUZpZWxkID0gW107DQogICAgICB0aGlzLmNvbmZpZ0RhdGEubW9kaWZpYWJsZUZpZWxkID0gW107DQogICAgfSwgLy/lj6/mmL7lrZfmrrXmuIXpmaTkuovku7YNCiAgICBjaGFuZ2UxKHZhbCkgew0KICAgICAgdGhpcy5zdGF0dXMxID0gdmFsOw0KICAgICAgdGhpcy5zZXRPdmVydGltZSA9IHsNCiAgICAgICAgdGhyZXNob2xkOiAiIiwNCiAgICAgICAgc291cmNlczogMCwNCiAgICAgICAgc3RhdHVzOiAxLA0KICAgICAgICBoYW5kbGVWYWx1ZTogIiIsDQogICAgICAgIGhhbmRsZVR5cGU6IDExLA0KICAgICAgICBleHRyYU1zZzogIiIsDQogICAgICAgIGlkOnRoaXMuc2V0T3ZlcnRpbWUuaWQNCiAgICAgIH0NCg0KICAgICAgaWYgKHZhbCkgew0KICAgICAgICB0aGlzLnNldE92ZXJ0aW1lLnN0YXR1cyA9IDA7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLnNldE92ZXJ0aW1lLnN0YXR1cyA9IDE7DQogICAgICB9DQogICAgfSwNCiAgICBjaGFuZ2UyKHZhbCkgew0KICAgICAgdGhpcy5zdGF0dXMyID0gdmFsOw0KICAgICAgdGhpcy5hdXRvRGV0YWlsID0gew0KICAgICAgICB0aHJlc2hvbGQ6ICIiLA0KICAgICAgICBzb3VyY2VzOiAwLA0KICAgICAgICBzdGF0dXM6IDEsDQogICAgICAgIGhhbmRsZVR5cGU6IDIwLA0KICAgICAgICBleHRyYU1zZzogIiIsDQogICAgICAgIGhhbmRsZVZhbHVlOiAiIiwNCiAgICAgICAgaWQ6dGhpcy5hdXRvRGV0YWlsLmlkDQogICAgICB9DQogICAgICBpZiAodmFsKSB7DQogICAgICAgIHRoaXMuYXV0b0RldGFpbC5zdGF0dXMgPSAwOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5hdXRvRGV0YWlsLnN0YXR1cyA9IDE7DQogICAgICB9DQogICAgfSwNCiAgICBnZXRSZXN1bHQoZGF0YSkgew0KICAgICAgdGhpcy5yZXN1bHREYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgZGF0YSk7DQogICAgICBpZiAodGhpcy5yZXN1bHREYXRhLmxpc3QubGVuZ3RoID4gMCkgew0KICAgICAgICB0aGlzLmFwcHJvdmVsTGlzdCA9IHRoaXMucmVzdWx0RGF0YS5saXN0Lm1hcChpdGVtID0+IHsNCiAgICAgICAgICBsZXQgdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSk7DQogICAgICAgICAgZGVsZXRlIHRlbS5zdHJpbmc7DQogICAgICAgICAgcmV0dXJuIHRlbTsNCiAgICAgICAgfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmFwcHJvdmVsTGlzdCA9IFtdOw0KICAgICAgfQ0KICAgIH0sDQogICAgLy/ojrflj5blj6/kv67mlLnlrZfmrrUNCiAgICBmaW5kRmllbGQocGFyYW0pIHsNCiAgICAgIHRoaXMuJG5ldHdvcmsucG9zdCgiL3AvYy9tZXRhL2NvbHVtbi9saXN0IiwgcGFyYW0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICBpZiAocGFyYW0uaGFzT3duUHJvcGVydHkoIkRFU0NSSVBUSU9OIikpIHsNCiAgICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQuQXV0b0RhdGEgPSBbXTsNCiAgICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQuQXV0b0RhdGEgPSByZXMuZGF0YS5kYXRhLnJvdy5yZWR1Y2UoDQogICAgICAgICAgICAgIChhcnIsIGl0ZW0pID0+IHsNCiAgICAgICAgICAgICAgICBhcnIucHVzaCh7DQogICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5ERVNDUklQVElPTi52YWwsDQogICAgICAgICAgICAgICAgICBpZDogaXRlbS5JRC52YWwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYXJyOw0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBbXQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICB9DQogICAgICAgICAgcmVzLmRhdGEuZGF0YS50YWJ0aC5tYXAoaXRlbSA9PiB7DQogICAgICAgICAgICBpZiAoaXRlbS5jb2xuYW1lID09PSAiREVTQ1JJUFRJT04iKSB7DQogICAgICAgICAgICAgIGl0ZW0uaXNhayA9IHRydWU7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICBpdGVtLmlzYWsgPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KTsNCiAgICAgICAgICB0aGlzLm1vZGlmeUZpZWxkLmRhdGEgPSByZXMuZGF0YS5kYXRhOw0KICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQudG90YWxSb3dDb3VudCA9IHJlcy5kYXRhLmRhdGEudG90YWxSb3dDb3VudDsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgfSwNCg0KICAgIHNhdmVDb25maWcgKCkgeyAgLy/noa7lrprmjInpkq7ngrnlh7sNCg0KICAgICAgLy8g6IqC54K55b+F57uPDQogICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZSA9PT0gMiAmJiAoIXRoaXMuY29uZmlnRGF0YS5pbmV2aXRhYmxlRXh0cyB8fCB0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZUV4dHMubGVuZ3RoID09PSAwKSl7DQogICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgY29udGVudDogJ+inhOWImemFjee9ruS4jeiDveS4uuepuicsDQogICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgfSkNCiAgICAgICAgICByZXR1cm4NCiAgICAgIH0NCg0KICAgICAgLy8g5pON5L2c5Lq6DQogICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZXJTdHlsZSA9PT0gMCl7ICAvL+ebtOaOpemAieaLqQ0KICAgICAgICAvLyDlrqHmibnkurrkuLrnqboNCiAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmFwcHJvdmVsTGlzdCAmJiB0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZWxMaXN0Lmxlbmd0aCA9PT0gMCl7DQogICAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICBjb250ZW50OiAn5a6h5om55Lq65LiN6IO95Li656m6JywNCiAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICB9KQ0KDQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgIH1lbHNleyAgLy/mianlsZXnqIvluo8NCiAgICAgICAgLy8g5omp5bGV56iL5bqP5Li656m6DQogICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWdbMF0gJiYgIXRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWdbMF0uaGFuZGxlVmFsdWUpew0KICAgICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgY29udGVudDogJ+aJqeWxleeoi+W6j+S4jeiDveS4uuepuicsDQogICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgfSkNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAvLyDlrqHmibnmnaHku7YNCiAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5hcHByb3ZlQ29uZGl0aW9uID09PSAwKXsNCiAgICAgICAgLy8g5pyA5bCR5ZCM5oSP5Lq65pWwDQogICAgICAgIGlmKCF0aGlzLnBhZ2VCdG5EYXRhWzBdLnZhbHVlKXsNCiAgICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgICBjb250ZW50OiAn5pyA5bCR5ZCM5oSP5Lq65pWw5LiN6IO95Li656m6JywNCiAgICAgICAgICAgICAgbWFzazogdHJ1ZQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgICAvLyDmnIDlsJHmi5Lnu53kurrmlbANCiAgICAgICAgaWYoIXRoaXMucGFnZUJ0bkRhdGFbMl0udmFsdWUpew0KICAgICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICAgIGNvbnRlbnQ6ICfmnIDlsJHmi5Lnu53kurrmlbDkuI3og73kuLrnqbonLA0KICAgICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIHJldHVybg0KICAgICAgICB9DQogICAgICB9DQoNCg0KICAgICAgLy8g6amz5Zue6IqC54K5DQogICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuYXNzaWduQmFjayA9PT0gMSAmJiAhdGhpcy5jb25maWdEYXRhLmJhY2tJZCl7DQogICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgY29udGVudDogJ+mps+WbnuiKgueCueS4jeiDveS4uuepuicsDQogICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgfSkNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQoNCiAgICAgIC8vIOS9nOW6n+aTjeS9nCAtLeWPkei1t+S9nOW6n+eUs+ivtw0KICAgICAgaWYodGhpcy5jb25maWdEYXRhLm5vZGVDYW5jbGUgPT09IDEgJiYgIXRoaXMuY29uZmlnRGF0YS5jYW5jbGVVcmwpew0KICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICAgIHRpdGxlOiAn6ZSZ6K+vJywNCiAgICAgICAgICAgIGNvbnRlbnQ6ICfkvZzlup/nlLPor7flnLDlnYDkuI3og73kuLrnqbonLA0KICAgICAgICAgICAgbWFzazogdHJ1ZQ0KICAgICAgICAgIH0pDQogICAgICAgIHJldHVybg0KICAgICAgfQ0KDQogICAgICAvLyDmjIfmtL7mtYHovazoioLngrkNCiAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5hc3NpZ25OZXh0ID09PSAwICYmICghdGhpcy5jb25maWdEYXRhLmFzc2lnblJhbmdlIHx8IHRoaXMuY29uZmlnRGF0YS5hc3NpZ25SYW5nZS5sZW5ndGggPT09IDApKXsNCiAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICBjb250ZW50OiAn6IqC54K56IyD5Zu05LiN6IO95Li656m6JywNCiAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICB9KQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCg0KICAgICAgLy8g6LaF5pe25o+Q6YaSDQogICAgICBpZih0aGlzLnN0YXR1czEgJiYgKCF0aGlzLnNldE92ZXJ0aW1lLnRocmVzaG9sZCB8fCAhdGhpcy5zZXRPdmVydGltZS5oYW5kbGVWYWx1ZSkpew0KICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICAgIHRpdGxlOiAn6ZSZ6K+vJywNCiAgICAgICAgICAgIGNvbnRlbnQ6ICfor7floavlhpnlrozlloTotoXml7bmj5DphpLkv6Hmga8nLA0KICAgICAgICAgICAgbWFzazogdHJ1ZQ0KICAgICAgICAgIH0pDQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgLy/oh6rliqjlpITnkIYNCiAgICAgIGlmKHRoaXMuc3RhdHVzMiAmJiAoIXRoaXMuYXV0b0RldGFpbC50aHJlc2hvbGQpKXsNCiAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICBjb250ZW50OiAn6K+35aGr5YaZ5a6M5ZaE6Ieq5Yqo5aSE55CG5L+h5oGvJywNCiAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICB9KQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCg0KICAgICAgLy8g5o6n5Yi26Ieq5Yqo5aSE55CG5pe26Ze05aSn5LqO6LaF5pe25o+Q6YaS5pe26Ze0DQogICAgICBpZih0aGlzLnN0YXR1czEgJiYgdGhpcy5zdGF0dXMyKXsNCiAgICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5zZXRPdmVydGltZS5zb3VyY2VzID09PSAwP051bWJlcih0aGlzLnNldE92ZXJ0aW1lLnRocmVzaG9sZCk6TnVtYmVyKHRoaXMuc2V0T3ZlcnRpbWUudGhyZXNob2xkKSoyNA0KICAgICAgICBsZXQgZW5kID0gdGhpcy5hdXRvRGV0YWlsLnNvdXJjZXMgPT09IDA/TnVtYmVyKHRoaXMuYXV0b0RldGFpbC50aHJlc2hvbGQpOk51bWJlcih0aGlzLmF1dG9EZXRhaWwudGhyZXNob2xkKSoyNA0KDQogICAgICAgIGlmKHN0YXJ0ID49IGVuZCl7DQogICAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICAgIHRpdGxlOiAn6ZSZ6K+vJywNCiAgICAgICAgICAgICAgY29udGVudDogJ+i2heaXtuaPkOmGkuaXtumXtOS4jeiDveWkp+S6juiHquWKqOWkhOeQhuaXtumXtCcsDQogICAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgbGV0IGd1aVN0eWxlID0gSlNPTi5wYXJzZSh0aGlzLiRwYXJlbnQuJHBhcmVudC5teURlc2lnbmVyLmdldEZsb3dEYXRhKCkpDQogICAgICBndWlTdHlsZS5ub2RlRGF0YUFycmF5Lm1hcChpdGVtID0+IHsNCiAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmtleSA9PT0gaXRlbS5rZXkpew0KICAgICAgICAgIGl0ZW0udGV4dCA9IHRoaXMuY29uZmlnRGF0YS5uYW1lDQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGl0ZW0NCiAgICAgIH0pDQoNCg0KICAgICAgaWYoKHRoaXMuZGVmYXVsdE9iai5ub2RlRm9ybUlkICE9PSB0aGlzLmNvbmZpZ0RhdGEubm9kZUZvcm1JZCkgJiYgdGhpcy5kZWZhdWx0T2JqLm5vZGVGb3JtSWQpew0KICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgY29udGVudDogJ+W9k+WJjeiKgueCueeahOihqOWNleW3suS/ruaUue+8jOiKgueCueWQjueahOi/nue6v+mFjee9ruWwhuS8mua4heepuu+8jOaYr+WQpuehruiupOS/neWtmO+8nycsDQogICAgICAgICAgbWFzazogdHJ1ZSwNCiAgICAgICAgICBzaG93Q2FuY2VsOiB0cnVlLA0KICAgICAgICAgIG9uT2s6ICgpID0+IHsNCiAgICAgICAgICAgIHRoaXMubm9kZS5maW5kTGlua3NPdXRPZigpLm1hcChpdGVtID0+IHsNCiAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuJHBhcmVudC4kcGFyZW50LnBhdGhNc2dbaXRlbS5kYXRhLmtleV0NCg0KICAgICAgICAgICAgICBsZXQgZ3VpU3R5bGUgPSBKU09OLnBhcnNlKHRoaXMuJHBhcmVudC4kcGFyZW50Lm15RGVzaWduZXIuZ2V0Rmxvd0RhdGEoKSkNCiAgICAgICAgICAgICAgZ3VpU3R5bGUubGlua0RhdGFBcnJheSA9IGd1aVN0eWxlLmxpbmtEYXRhQXJyYXkuZmlsdGVyKHRlbXAgPT4gdGVtcC5rZXkgIT09IGl0ZW0uZGF0YS5rZXkpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRwYXJlbnQuZGF0YS5ndWlTdHlsZSA9IEpTT04uc3RyaW5naWZ5KGd1aVN0eWxlKQ0KICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRwYXJlbnQuaW5pdCgpDQogICAgICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZURyYXdlcicpDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICByZXR1cm4NCiAgICAgIH1lbHNlew0KICAgICAgICB0aGlzLiRwYXJlbnQuJHBhcmVudC5kYXRhLmd1aVN0eWxlID0gSlNPTi5zdHJpbmdpZnkoZ3VpU3R5bGUpDQogICAgICAgIHRoaXMuJHBhcmVudC4kcGFyZW50LmluaXQoKQ0KICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZURyYXdlcicpDQogICAgICB9DQoNCiAgICB9LA0KICAgIGNsb3NlRHJhd2VyICgpIHsgIC8v5Y+W5raI5oyJ6ZKu54K55Ye7DQogICAgICB0aGlzLiRwYXJlbnQuJHBhcmVudC5ub2RlTXNnW051bWJlcih0aGlzLmNvbmZpZ0RhdGEua2V5KV0gPSB0aGlzLmRlZmF1bHRPYmoNCiAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlRHJhd2VyJykNCiAgICB9LA0KICAgIGFwcHJvdmVyU3R5bGVDaGFuZ2UgKCkgeyAgLy/pgInmi6nlrqHmibnkurrnsbvlnovliIfmjaINCiAgICAgIHRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWdbMF0uaGFuZGxlVmFsdWUgPSBudWxsDQogICAgICB0aGlzLnJlc3VsdERhdGEgPSB7fQ0KICAgICAgdGhpcy5hcHByb3ZlbExpc3QgPSBbXTsNCiAgICB9LA0KDQogICAgLy8g5a6h5om55p2h5Lu2IOaJqeWxlQ0KICAgIGluZXZpdGFibGVSZXN1bHQgKHZhbHVlKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZUV4dHMgPSB2YWx1ZQ0KICAgIH0sDQogICAgcHJlRXZlbnRSZXN1bHQgKHZhbHVlKSB7ICAvL+WJjee9ruS6i+S7tuWkhOeQhg0KICAgICAgdGhpcy5jb25maWdEYXRhLnByZUV2ZW50ID0gdmFsdWUNCiAgICB9LA0KICAgIGJlaGluZEV2ZW50UmVzdWx0ICh2YWx1ZSkgeyAvL+WQjue9ruS6i+S7tuWkhOeQhg0KICAgICAgdGhpcy5jb25maWdEYXRhLmJlaGluZEV2ZW50ID0gdmFsdWUNCiAgICB9LA0KICAgIGdldFZpc2libGVCdXR0b25zICgpIHsgLy/ojrflj5blj6/op4HmjInpkq4NCiAgICAgIHRoaXMuJG5ldHdvcmsucG9zdCgnL3AvY3Mvbm9kZS9kZWZpbmUvYnQnLHsNCiAgICAgICAgaWQ6IHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkLA0KICAgICAgICB2dWVEaXNwYWx5OiAwDQogICAgICB9KQ0KICAgICAgLnRoZW4ocmVzID0+IHsNCiAgICAgICAgaWYocmVzLmRhdGEucmVzdWx0Q29kZSA9PT0gMCl7DQogICAgICAgICAgdGhpcy52aXNpYmxlQnV0dG9ucyA9IHJlcy5kYXRhLmRhdGEuZGlmaW5lRGF0YQ0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICB0aGlzLnZpc2libGVCdXR0b25zID0gW10NCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KICAgIHZpc2libGVCdENoYW5nZSAodmFsdWUpIHsgIC8v5Y+v6KeB5oyJ6ZKu6YCJ5oupDQogICAgICBpZih2YWx1ZVswXSA9PT0gJ2JTZWxlY3QtYWxsJyl7DQogICAgICAgIHRoaXMuY29uZmlnRGF0YS52aXNpYmxlQnQgPSB0aGlzLnZpc2libGVCdXR0b25zLnJlZHVjZSgoYXJyLGN1cnJlbnQpID0+IHsNCiAgICAgICAgICBhcnIucHVzaChjdXJyZW50LklEKQ0KICAgICAgICAgIHJldHVybiBhcnINCiAgICAgICAgfSxbXSkNCiAgICAgIH0NCiAgICB9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgLy8g5L+d5a2Y6buY6K6k5YC8DQogICAgdGhpcy5kZWZhdWx0T2JqID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZ0RhdGEpKQ0KDQogICAgaWYgKHRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWcubGVuZ3RoID09PSAwKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnID0gWw0KICAgICAgICB7DQogICAgICAgICAgaWQ6IG51bGwsDQogICAgICAgICAgaGFuZGxlVHlwZTogMzMsDQogICAgICAgICAgaGFuZGxlVmFsdWU6IG51bGwsDQogICAgICAgICAgZXh0cmFNc2c6IG51bGwNCiAgICAgICAgfQ0KICAgICAgXTsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhpcy5jb25maWdEYXRhLmFjdGlvbkNvbmZpZyA9IFsNCiAgICAgICAgew0KICAgICAgICAgIGlkOiB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnWzBdLmlkLA0KICAgICAgICAgIGhhbmRsZVR5cGU6IDMzLA0KICAgICAgICAgIGhhbmRsZVZhbHVlOiB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnWzBdLmhhbmRsZVZhbHVlLA0KICAgICAgICAgIGV4dHJhTXNnOiB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnWzBdLmV4dHJhTXNnDQogICAgICAgIH0NCiAgICAgIF07DQogICAgfQ0KDQogICAgaWYgKHRoaXMuY29uZmlnRGF0YS5tb2RpZmlhYmxlRmllbGQpIHsNCiAgICAgIHRoaXMubW9kaWZ5RmllbGQuZGVmYXVsdFNlbGVjdGVkID0gdGhpcy5jb25maWdEYXRhLm1vZGlmaWFibGVGaWVsZA0KICAgIH0NCg0KDQogICAgaWYgKA0KICAgICAgdGhpcy5jb25maWdEYXRhLmFwcHJvdmVsTGlzdCAmJg0KICAgICAgdGhpcy5jb25maWdEYXRhLmFwcHJvdmVsTGlzdC5sZW5ndGggPiAwDQogICAgKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZWxMaXN0Lm1hcChpdGVtID0+IHsNCiAgICAgICAgbGV0IHRlbU9iaiA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pOw0KICAgICAgICB0aGlzLmFwcHJvdmVzICs9IGl0ZW0uYXBwcm92ZVZhbHVlTmFtZT9pdGVtLmFwcHJvdmVWYWx1ZU5hbWU6aXRlbS5hcHByb3ZlX3ZhbHVlX25hbWUgKyAiLCI7DQogICAgICAgIHRlbU9iai5hcHByb3ZlX3R5cGUgPSB0ZW1PYmouYXBwcm92ZVR5cGU/dGVtT2JqLmFwcHJvdmVUeXBlOnRlbU9iai5hcHByb3ZlX3R5cGU7DQogICAgICAgIHRlbU9iai5hcHByb3ZlX3ZhbHVlID0gdGVtT2JqLmFwcHJvdmVWYWx1ZT90ZW1PYmouYXBwcm92ZVZhbHVlOnRlbU9iai5hcHByb3ZlX3ZhbHVlOw0KICAgICAgICB0ZW1PYmouYXBwcm92ZV92YWx1ZV9uYW1lID0gaXRlbS5hcHByb3ZlVmFsdWVOYW1lP2l0ZW0uYXBwcm92ZVZhbHVlTmFtZTppdGVtLmFwcHJvdmVfdmFsdWVfbmFtZTsNCiAgICAgICAgZGVsZXRlIHRlbU9iai5hcHByb3ZlVHlwZTsNCiAgICAgICAgZGVsZXRlIHRlbU9iai5hcHByb3ZlVmFsdWU7DQogICAgICAgIGRlbGV0ZSB0ZW1PYmouYXBwcm92ZVZhbHVlTmFtZTsNCg0KICAgICAgICBsZXQgdGVtTCA9IE9iamVjdC5hc3NpZ24oe30sIHRlbU9iaik7DQogICAgICAgIHRoaXMuYXBwcm92ZWxMaXN0LnB1c2godGVtT2JqKTsNCiAgICAgICAgdGVtTC5zdHJpbmcgPSBpdGVtLmFwcHJvdmVWYWx1ZU5hbWU/aXRlbS5hcHByb3ZlVmFsdWVOYW1lOml0ZW0uYXBwcm92ZV92YWx1ZV9uYW1lOw0KICAgICAgICB0aGlzLnJlc3VsdERhdGEubGlzdA0KICAgICAgICAgID8gdGhpcy5yZXN1bHREYXRhLmxpc3QucHVzaCh0ZW1MKQ0KICAgICAgICAgIDogdGhpcy4kc2V0KHRoaXMucmVzdWx0RGF0YSwgImxpc3QiLCBbdGVtTF0pOw0KICAgICAgfSk7DQogICAgICB0aGlzLnJlc3VsdERhdGEudG90YWwNCiAgICAgICAgPyAodGhpcy5yZXN1bHREYXRhLnRvdGFsID0gdGhpcy5yZXN1bHREYXRhLmxpc3QubGVuZ3RoKQ0KICAgICAgICA6IHRoaXMuJHNldCh0aGlzLnJlc3VsdERhdGEsICJ0b3RhbCIsIHRoaXMucmVzdWx0RGF0YS5saXN0Lmxlbmd0aCk7DQogICAgICBpZiAodGhpcy5hcHByb3Zlcy5sZW5ndGggPiAwKSB7DQogICAgICAgIHRoaXMuYXBwcm92ZXMgPSB0aGlzLmFwcHJvdmVzLnN1YnN0cmluZygwLCB0aGlzLmFwcHJvdmVzLmxlbmd0aCAtIDEpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIGlmICgNCiAgICAgIHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdCAmJg0KICAgICAgdGhpcy5jb25maWdEYXRhLnJ1bGVMaXN0Lmxlbmd0aCA+IDANCiAgICApIHsNCiAgICAgIHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdC5tYXAoaXRlbSA9PiB7DQogICAgICAgIGlmIChpdGVtLmFjdFR5cGUgPT09IDApIHsNCiAgICAgICAgICB0aGlzLnBhZ2VCdG5EYXRhWzFdLnZhbHVlID0gaXRlbS5hY3ROYW1lOw0KICAgICAgICAgIHRoaXMucGFnZUJ0bkRhdGFbMF0udmFsdWUgPSBpdGVtLmFjdExpbWl0Ow0KICAgICAgICB9DQogICAgICAgIGlmIChpdGVtLmFjdFR5cGUgPT09IDEpIHsNCiAgICAgICAgICB0aGlzLnBhZ2VCdG5EYXRhWzNdLnZhbHVlID0gaXRlbS5hY3ROYW1lOw0KICAgICAgICAgIHRoaXMucGFnZUJ0bkRhdGFbMl0udmFsdWUgPSBpdGVtLmFjdExpbWl0Ow0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9DQoNCiAgICBpZiAoDQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0U2VydmljZVMgJiYNCiAgICAgIHRoaXMuY29uZmlnRGF0YS5hY3RTZXJ2aWNlUy5sZW5ndGggPiAwDQogICAgKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0U2VydmljZVMubWFwKGl0ZW0gPT4gew0KICAgICAgICBpZiAoaXRlbS5oYW5kbGVUeXBlID49IDIwKSB7DQogICAgICAgICAgdGhpcy5hdXRvRGV0YWlsID0gaXRlbTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLnNldE92ZXJ0aW1lID0gaXRlbTsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgICB0aGlzLnNldE92ZXJ0aW1lLnN0YXR1cyA9PT0gMA0KICAgICAgICA/ICh0aGlzLnN0YXR1czEgPSB0cnVlKQ0KICAgICAgICA6ICh0aGlzLnN0YXR1czEgPSBmYWxzZSk7DQogICAgICB0aGlzLmF1dG9EZXRhaWwuc3RhdHVzID09PSAwDQogICAgICAgID8gKHRoaXMuc3RhdHVzMiA9IHRydWUpDQogICAgICAgIDogKHRoaXMuc3RhdHVzMiA9IGZhbHNlKTsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhpcy5jb25maWdEYXRhLmFjdFNlcnZpY2VTID0gWw0KICAgICAgICB7DQogICAgICAgICAgdGhyZXNob2xkOiAiIiwNCiAgICAgICAgICBzb3VyY2VzOiAwLA0KICAgICAgICAgIHN0YXR1czogMSwNCiAgICAgICAgICBoYW5kbGVWYWx1ZTogIiIsDQogICAgICAgICAgaGFuZGxlVHlwZTogMTENCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHRocmVzaG9sZDogIiIsDQogICAgICAgICAgc291cmNlczogMCwNCiAgICAgICAgICBzdGF0dXM6IDEsDQogICAgICAgICAgaGFuZGxlVHlwZTogMjAsDQogICAgICAgICAgaGFuZGxlVmFsdWU6ICIiDQogICAgICAgIH0NCiAgICAgIF07DQogICAgfQ0KDQogICAgLy8g5aSE55CG6IqC54K56KGo6YWN572u6buY6K6k5YC8DQogICAgaWYodGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQpew0KICAgICAgdGhpcy50YWJsZUNvbmZpZy5wcm9wcy5kZWZhdWx0U2VsZWN0ZWQgPSBbDQogICAgICAgIHsNCiAgICAgICAgICBJRDogdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQsDQogICAgICAgICAgTGFiZWw6IHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybU5hbWUNCiAgICAgICAgfQ0KICAgICAgXQ0KICAgIH0NCg0KICAgIC8vIOWPr+ingeaMiemSrg0KICAgIGlmKHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkKXsNCiAgICAgIHRoaXMuZ2V0VmlzaWJsZUJ1dHRvbnMoKQ0KICAgIH0NCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICAvL3RoaXMuZ2V0VHJlZURhdGEoKTsNCiAgICAvKiovDQogIH0NCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;;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;;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;;AAEA;;;;AAIA;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;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/components/DynamicProcessNodeConfig","sourcesContent":["<template>\r\n <!-- 过程节点配置 -->\r\n <div class=\"DynamicProcessNodeConfig\">\r\n <div>\r\n <div class=\"splitItem\">节点配置</div>\r\n <div class=\"nodeSetbox\">\r\n <Form>\r\n <!-- 节点名称 -->\r\n <FormItem label=\"节点名称:\" :label-width=\"100\">\r\n <Input v-model=\"configData.name\" placeholder=\"请输入\" :disabled=\"readOnly\"/>\r\n </FormItem>\r\n\r\n <!-- 单据类型选择 -->\r\n <FormItem label=\"单据类型:\" :label-width=\"100\" >\r\n <DropDownSelectFilter\r\n :disabled=\"readOnly\"\r\n v-bind=\"tableConfig.props\"\r\n v-on=\"tableConfig.event\"\r\n >\r\n\r\n </DropDownSelectFilter>\r\n </FormItem>\r\n\r\n <!-- 可见按钮 -->\r\n <FormItem label=\"可见按钮:\" :label-width=\"100\">\r\n <Select v-model=\"configData.visibleBt\" :disabled=\"readOnly\" multiple @on-change=\"visibleBtChange\" >\r\n <Option v-for=\"(item,index) in visibleButtons\" :key=\"index\" :value=\"item.ID\">{{item.Label}}</Option>\r\n </Select>\r\n </FormItem>\r\n\r\n <!-- 节点必经 -->\r\n <FormItem label=\"节点必经:\" :label-width=\"100\">\r\n <Select v-model=\"configData.inevitable\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">是</Option>\r\n <Option :value=\"1\" :key=\"1\">否</Option>\r\n <Option :value=\"2\" :key=\"2\">扩展</Option>\r\n </Select>\r\n </FormItem>\r\n <FormItem :label-width=\"100\" v-if=\"configData.inevitable === 2\">\r\n <label slot=\"label\"><i class=\"requireStyle\">*</i>规则配置:</label>\r\n <RuleConfig headTitle=\"节点必经规则\" :tableConfig=\"{tableId:configData.nodeFormId,tableName:configData.nodeForm}\" :defaultData=\"configData.inevitableExts\" @getResult=\"inevitableResult\"></RuleConfig>\r\n </FormItem>\r\n\r\n <!-- 节点指派 -->\r\n <FormItem label=\"节点必指派:\" :label-width=\"100\">\r\n <Select v-model=\"configData.assignNode\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">是</Option>\r\n <Option :value=\"1\" :key=\"1\">否</Option>\r\n </Select>\r\n </FormItem>\r\n\r\n <!-- 审批人 -->\r\n <FormItem :label-width=\"100\">\r\n <label slot=\"label\"><i class=\"requireStyle\">*</i>选择操作人:</label>\r\n <Select v-model=\"configData.approverStyle\" :disabled=\"readOnly\" @on-change=\"approverStyleChange\">\r\n <Option :value=\"0\" :key=\"0\">直接选择</Option>\r\n <Option :value=\"1\" :key=\"1\">扩展程序</Option>\r\n </Select>\r\n </FormItem>\r\n <FormItem :label-width=\"100\" v-if=\"configData.approverStyle === 0\">\r\n <label slot=\"label\"><i class=\"requireStyle\">*</i>操作人:</label>\r\n <complexPop :title=\"'选择操作人'\" :resultData=\"resultData\" :disabled=\"readOnly\" @getTotalResult=\"getResult\"></complexPop>\r\n </FormItem>\r\n <FormItem :label-width=\"100\" v-if=\"configData.approverStyle === 1\">\r\n <label slot=\"label\"><i class=\"requireStyle\">*</i>扩展程序:</label>\r\n <Input v-model=\"configData.actionConfig[0].handleValue\" placeholder=\"请输入\" :disabled=\"readOnly\" />\r\n </FormItem>\r\n\r\n <!-- 动态指派操作人 -->\r\n <FormItem label=\"动态指派操作人:\" :label-width=\"110\">\r\n <!-- <Select v-model=\"configData.assignApprover\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">动态指派节点操作人</Option>\r\n <Option :value=\"1\" :key=\"1\">默认操作人</Option>\r\n </Select> -->\r\n <i-switch class=\"switchPage\" v-model=\"configData.assignApprover\" :true-value=\"0\" :false-value=\"1\" :disabled=\"readOnly\" />\r\n </FormItem>\r\n\r\n <!-- 审批条件 -->\r\n <FormItem label=\"审批条件:\" :label-width=\"100\" v-if=\"configData.category === 'Approval'\">\r\n <Select v-model=\"configData.approveCondition\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">自定义人数配置</Option>\r\n <Option :value=\"1\" :key=\"1\">会签</Option>\r\n <Option :value=\"2\" :key=\"2\">或签</Option>\r\n </Select>\r\n </FormItem>\r\n <FormItem v-if=\"configData.approveCondition === 0 && configData.category === 'Approval'\">\r\n <Row>\r\n <Col span=\"24\" style=\"display:flex\">\r\n <span>\r\n <i class=\"requireStyle\">*</i>\r\n <Icon\r\n v-if=\"pageBtnData[0].color\"\r\n :type=\"pageBtnData[0].icontype===1?'ios-checkmark-circle':'ios-close-circle'\"\r\n :color=\"pageBtnData[0].color\"\r\n />\r\n {{pageBtnData[0].label}}:\r\n </span>\r\n <Input v-model=\"pageBtnData[0].value\" :regx=\"/^[0-9]*$/\" @on-blur=\"onBlur(...arguments,0)\" style=\"flex:1\" :disabled=\"readOnly\" />\r\n </Col>\r\n </Row>\r\n </FormItem>\r\n <FormItem v-if=\"configData.approveCondition === 0 && configData.category === 'Approval'\">\r\n <Row>\r\n <Col span=\"24\" style=\"display:flex\">\r\n <span>\r\n <i class=\"requireStyle\">*</i>\r\n <Icon\r\n v-if=\"pageBtnData[2].color\"\r\n :type=\"pageBtnData[2].icontype===1?'ios-checkmark-circle':'ios-close-circle'\"\r\n :color=\"pageBtnData[2].color\"\r\n />\r\n {{pageBtnData[2].label}}:\r\n </span>\r\n <Input v-model=\"pageBtnData[2].value\" :regx=\"/^[0-9]*$/\" @on-blur=\"onBlur(...arguments,2)\" style=\"flex:1\" :disabled=\"readOnly\" />\r\n </Col>\r\n </Row>\r\n </FormItem>\r\n\r\n <!-- 当前可为驳回节点 -->\r\n <FormItem label=\"可为驳回节点:\" :label-width=\"100\">\r\n <Select v-model=\"configData.whetherBack\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">是</Option>\r\n <Option :value=\"1\" :key=\"1\">否</Option>\r\n </Select>\r\n </FormItem>\r\n\r\n <!-- 驳回按钮 -->\r\n <FormItem label=\"驳回按钮:\" :label-width=\"100\">\r\n <i-switch class=\"switchPage\" v-model=\"configData.nodeBack\" :true-value=\"0\" :false-value=\"1\" :disabled=\"readOnly\" />\r\n </FormItem>\r\n\r\n <!-- 驳回操作 -->\r\n <FormItem label=\"驳回操作:\" :label-width=\"100\" v-if=\"configData.category === 'Approval'\">\r\n\r\n <Select v-model=\"configData.assignBack\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">动态指派(在流程中手动指派节点)</Option>\r\n <Option :value=\"1\" :key=\"1\">指定驳回节点</Option>\r\n </Select>\r\n </FormItem>\r\n <FormItem :label-width=\"100\" v-if=\"configData.assignBack === 1 && configData.category === 'Approval'\">\r\n <label slot=\"label\"><i class=\"requireStyle\">*</i>驳回节点:</label>\r\n <Select v-model=\"configData.backId\" :disabled=\"readOnly\">\r\n <Option v-for=\"item in rejectedNodes\" :value=\"item.value\" :key=\"item.value\">{{ item.label }}</Option>\r\n </Select>\r\n </FormItem>\r\n <!-- <FormItem label=\"操作人:\" :label-width=\"100\" v-if=\"(configData.assignBack === 0 || configData.assignBack === 1) && configData.category === 'Approval'\">\r\n <Select v-model=\"configData.assignApprover\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">动态指派(手动指派驳回节点的操作人)</Option>\r\n <Option :value=\"1\" :key=\"1\">默认(下一阶段设置的操作人)</Option>\r\n </Select>\r\n </FormItem> -->\r\n\r\n <!-- 同意按钮 -->\r\n <FormItem label=\"同意操作:\" :label-width=\"100\" v-if=\"configData.category === 'Approval'\">\r\n <i-switch class=\"switchPage\" v-model=\"configData.nodeAgree\" :true-value=\"0\" :false-value=\"1\" :disabled=\"readOnly\" />\r\n </FormItem>\r\n\r\n <!-- 直接结束流程 -->\r\n <FormItem label=\"直接结束流程:\" :label-width=\"100\" v-if=\"configData.category === 'Approval'\">\r\n <i-switch class=\"switchPage\" v-model=\"configData.manualConfig\" :true-value=\"'1'\" :false-value=\"'0'\" :disabled=\"readOnly\" />\r\n </FormItem>\r\n\r\n\r\n <!-- 跳转路径 -->\r\n <FormItem label=\"跳转路径:\" :label-width=\"100\">\r\n <Input v-model=\"configData.nodeUrl\" placeholder=\"请输入\" :disabled=\"readOnly\"/>\r\n </FormItem>\r\n\r\n <!-- 前置事件 -->\r\n <FormItem label=\"前置事件:\" :label-width=\"100\">\r\n <!-- <Input v-model=\"configData.nodeUrl\" placeholder=\"请输入\" :disabled=\"readOnly\"/> -->\r\n <RuleConfig headTitle=\"前置事件规则\" :tableConfig=\"{tableId:configData.nodeFormId,tableName:configData.nodeForm}\" :defaultData=\"configData.preEvent\" @getResult=\"preEventResult\"></RuleConfig>\r\n </FormItem>\r\n\r\n <!-- 后置事件 -->\r\n <FormItem label=\"后置事件:\" :label-width=\"100\">\r\n <!-- <Input v-model=\"configData.nodeUrl\" placeholder=\"请输入\" :disabled=\"readOnly\"/> -->\r\n <RuleConfig headTitle=\"后置事件规则\" :tableConfig=\"{tableId:configData.nodeFormId,tableName:configData.nodeForm}\" :defaultData=\"configData.behindEvent\" @getResult=\"behindEventResult\"></RuleConfig>\r\n </FormItem>\r\n\r\n\r\n </Form>\r\n </div>\r\n\r\n <div class=\"splitItem\">节点操作权限</div>\r\n <div class=\"nodeSetbox\">\r\n <Form>\r\n <!-- 显示字段 -->\r\n <FormItem label=\"显示字段:\" :label-width=\"100\">\r\n <Row>\r\n <Col span=\"19\">\r\n <DropMultiSelectFilter\r\n :disabled=\"readOnly\"\r\n :single=\"false\"\r\n :totalRowCount=\"modifyField.totalRowCount\"\r\n :pageSize=\"modifyField.pageSize\"\r\n @on-page-change=\"changePage\"\r\n :dataEmptyMessage=\"modifyField.dataEmptyMessage\"\r\n @on-input-value-change=\"inputChange\"\r\n @on-fkrp-selected=\"OnFkrpSelected\"\r\n @on-popper-show=\"onPopperShow\"\r\n @on-clear=\"onClear\"\r\n :data=\"modifyField.data\"\r\n :hidecolumns=\"modifyField.columns\"\r\n :AutoData=\"modifyField.AutoData\"\r\n :default-selected=\"modifyField.defaultSelected\"\r\n :columnsKey=\"modifyField.columnsKey\"\r\n ></DropMultiSelectFilter>\r\n </Col>\r\n <Col span=\"4\" offset=\"1\">\r\n <span style=\"color:#5B85E4;cursor:pointer\" v-if=\"configData.modifiableField.length > 0\" @click=\"modifiableFieldClick\">{{modifyTableShow?'关闭修改':'更改权限'}}</span>\r\n <span style=\"color:#ccc;cursor:pointer\" v-if=\"configData.modifiableField.length === 0\">更改权限</span>\r\n </Col>\r\n </Row>\r\n </FormItem>\r\n <FormItem v-if=\"modifyTableShow && configData.modifiableField.length > 0\">\r\n <Row>\r\n <Table border height=\"200\" :columns=\"modifyColumns\" :data=\"configData.modifiableField\"></Table>\r\n </Row>\r\n </FormItem>\r\n\r\n <!-- 作废操作 -->\r\n <FormItem label=\"作废操作:\" :label-width=\"100\">\r\n <Select v-model=\"configData.nodeCancle\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">直接作废</Option>\r\n <Option :value=\"1\" :key=\"1\">发起作废(提交作废申请)</Option>\r\n <Option :value=\"2\" :key=\"2\">否(不显示作废按钮)</Option>\r\n </Select>\r\n </FormItem>\r\n <FormItem :label-width=\"100\" v-if=\"configData.nodeCancle === 1\">\r\n <label slot=\"label\"><i class=\"requireStyle\">*</i>申请地址:</label>\r\n <Input v-model=\"configData.cancleUrl\" placeholder=\"请输入\" :disabled=\"readOnly\"/>\r\n </FormItem>\r\n\r\n <!-- 指派流转节点 -->\r\n <FormItem label=\"指派流转节点:\" :label-width=\"100\">\r\n <Select v-model=\"configData.assignNext\" :disabled=\"readOnly\" >\r\n <Option :value=\"0\" :key=\"0\">是(可批量指派接下来几节点的审批人)</Option>\r\n <Option :value=\"1\" :key=\"1\">否(节点不需要流转)</Option>\r\n </Select>\r\n </FormItem>\r\n <FormItem :label-width=\"100\" v-if=\"configData.assignNext === 0\">\r\n <label slot=\"label\"><i class=\"requireStyle\">*</i>节点范围:</label>\r\n <Select v-model=\"configData.assignRange\" multiple :disabled=\"readOnly\" >\r\n <Option v-for=\"item in assignedNodes\" :value=\"item.value\" :key=\"item.value\">{{ item.label }}</Option>\r\n </Select>\r\n </FormItem>\r\n\r\n\r\n </Form>\r\n </div>\r\n\r\n <div class=\"splitItem\">超时设置</div>\r\n <div class=\"nodeSetbox\">\r\n <div class=\"boxItem\">\r\n <Form>\r\n <FormItem label=\"超时提醒:\" :label-width=\"100\">\r\n <i-switch v-model=\"status1\" @on-change=\"change1\" :disabled=\"readOnly\" />\r\n </FormItem>\r\n <FormItem label=\"超时阀值:\" :label-width=\"100\" :required=\"status1\" v-if=\"status1\">\r\n <Input v-model=\"setOvertime.threshold\" :regx=\"/^[1-9]\\d*$/\" :disabled=\"readOnly\">\r\n <Select v-model=\"setOvertime.sources\" slot=\"append\" style=\"width:70px\" :disabled=\"readOnly\">\r\n <Option :value=\"0\">小时</Option>\r\n <Option :value=\"1\">天</Option>\r\n </Select>\r\n </Input>\r\n </FormItem>\r\n <FormItem label=\"邮箱接口:\" :label-width=\"100\" :required=\"status1\" v-if=\"status1\">\r\n <Input v-model=\"setOvertime.handleValue\" :disabled=\"readOnly\" />\r\n <!-- <Select v-model=\"setOvertime.handle_type\" slot=\"prepend\" style=\"width: 90px;dispaly:none\">\r\n <Option :value=\"11\">邮箱</Option>\r\n <Option :value=\"12\">钉钉消息</Option>\r\n </Select>-->\r\n <!-- <span class=\"tipMessage\">超过这个时间段系统将自动发送提醒消息</span> -->\r\n </FormItem>\r\n </Form>\r\n </div>\r\n <div class=\"boxItem\" v-if=\"configData.category === 'Approval'\">\r\n <Form>\r\n <FormItem label=\"自动处理:\" :label-width=\"100\">\r\n <i-switch v-model=\"status2\" @on-change=\"change2\" :disabled=\"readOnly\" />\r\n </FormItem>\r\n <FormItem label=\"自动处理阀值:\" :label-width=\"100\" :required=\"status2\" v-if=\"status2\">\r\n <Input v-model=\"autoDetail.threshold\" :regx=\"/^[1-9]\\d*$/\" :disabled=\"readOnly\">\r\n <Select v-model=\"autoDetail.sources\" slot=\"append\" style=\"width: 70px\" :disabled=\"readOnly\">\r\n <Option :value=\"0\">小时</Option>\r\n <Option :value=\"1\">天</Option>\r\n </Select>\r\n </Input>\r\n </FormItem>\r\n <FormItem label=\"自动处理方式:\" :label-width=\"100\" :required=\"status2\" v-if=\"status2\">\r\n <Select v-model=\"autoDetail.handleType\" :disabled=\"readOnly\">\r\n <Option :value=\"20\">同意</Option>\r\n <Option :value=\"21\">驳回</Option>\r\n </Select>\r\n </FormItem>\r\n </Form>\r\n </div>\r\n </div>\r\n </div>\r\n <p>\r\n <Button type=\"fcdefault\" @click=\"closeDrawer\">取消</Button>\r\n <Button type=\"primary\" @click=\"saveConfig\" v-if=\"!readOnly\">确定</Button>\r\n </p>\r\n </div>\r\n</template>\r\n<script>\r\nimport complexPop from \"@/components/complexPop\";\r\nimport RuleConfig from \"@/components/RuleConfig\"\r\nexport default {\r\n name: \"DynamicProcessNodeConfig\",\r\n components: { complexPop, RuleConfig },\r\n props: {\r\n configData: {\r\n type: Object,\r\n default() {\r\n return {};\r\n }\r\n },\r\n TABLE_ID: {\r\n }, //模版第一步配置表数据\r\n node:{}, //当前节点\r\n status:null,\r\n rejectedNodes:{\r\n type: Array,\r\n default: () => {\r\n return []\r\n }\r\n },\r\n assignedNodes:{\r\n type: Array,\r\n default: () => {\r\n return []\r\n }\r\n },\r\n readOnly:{\r\n type:Boolean,\r\n default:false\r\n }\r\n },\r\n data() {\r\n return {\r\n //节点表的配置\r\n tableConfig:{\r\n props:{\r\n columnsKey: ['NAME'],\r\n AutoData: [],\r\n hidecolumns: ['id'],\r\n data: {},\r\n totalRowCount: 0,\r\n defaultSelected: [],\r\n isBackRowItem: true\r\n },\r\n event:{\r\n 'on-input-value-change': (value) => {\r\n // 外键的模糊搜索\r\n this.tableConfig.props.AutoData = []\r\n this.$network.post('/p/c/meta/table/list',{DESCRIPTION:value}).then(res => {\r\n if(res.data.code === 0){\r\n // this.row = res.data.data.row.concat([])\r\n this.tableConfig.props.AutoData = res.data.data.row.reduce((arr,item) => {\r\n arr.push({\r\n value:item.NAME.val,\r\n id:item.ID.val,\r\n NAME:item.DESCRIPTION.val\r\n })\r\n return arr\r\n },[]);\r\n }\r\n\r\n })\r\n },\r\n 'on-popper-show': ($this) => {\r\n // 当外键下拉站开始去请求数据\r\n // this.freshDropDownSelectFilterData($this)\r\n this.$network.post('/p/c/meta/table/list',{\r\n pageSize:$this.pageSize,\r\n page:1\r\n }).then(res => {\r\n if(res.data.code === 0){\r\n res.data.data.tabth.forEach(item => {\r\n if(item.colname === 'DESCRIPTION'){\r\n item.isak = true\r\n }\r\n return item\r\n })\r\n this.tableConfig.props.data = res.data.data;\r\n this.tableConfig.props.totalRowCount = res.data.data.totalRowCount;\r\n }\r\n\r\n })\r\n },\r\n 'on-page-change': (currentPage, $this) => {\r\n // 外键的分页查询\r\n // this.freshDropDownSelectFilterData($this,currentPage)\r\n this.$network.post('/p/c/meta/table/list',{\r\n pageSize:$this.pageSize,\r\n page:currentPage\r\n }).then(res => {\r\n if(res.data.code === 0){\r\n res.data.data.tabth.forEach(item => {\r\n if(item.colname === 'DESCRIPTION'){\r\n item.isak = true\r\n }\r\n return item\r\n })\r\n this.tableConfig.props.data = res.data.data;\r\n this.tableConfig.props.totalRowCount = res.data.data.totalRowCount;\r\n }\r\n\r\n })\r\n },\r\n 'on-blur':(event,instance) => {\r\n // if(Object.prototype.toString.call(this.data.businessType) !== '[object Array]' || this.data.businessType.length === 0){\r\n // instance.inputValue = ''\r\n\r\n // /*\r\n // todo\r\n // 清空所有和主表有关的数据\r\n // */\r\n\r\n // }\r\n },\r\n 'on-fkrp-selected': (value) => {\r\n if(value.length > 0){\r\n this.configData.nodeForm = value[0].rowItem.NAME.val?value[0].rowItem.NAME.val:value[0].rowItem.NAME\r\n this.configData.nodeFormId = value[0].ID\r\n this.configData.nodeFormName = value[0].Label\r\n\r\n this.getVisibleButtons()\r\n }else{\r\n this.configData.nodeForm = null\r\n this.configData.nodeFormId = null\r\n this.configData.nodeFormName = null\r\n }\r\n\r\n // 清除有关字段数据\r\n this.onClear()\r\n this.modifyField.defaultSelected = []\r\n this.configData.behindEvent = []\r\n this.configData.preEvent = []\r\n this.configData.inevitableExts = []\r\n this.configData.visibleBt = []\r\n },\r\n 'on-clear': () => {\r\n // 清除有关字段数据\r\n this.onClear()\r\n this.modifyField.defaultSelected = []\r\n this.configData.behindEvent = []\r\n this.configData.preEvent = []\r\n this.configData.inevitableExts = []\r\n this.configData.visibleBt = []\r\n\r\n this.configData.nodeForm = null\r\n this.configData.nodeFormId = null\r\n this.configData.nodeFormName = null\r\n this.tableConfig.props.AutoData = []\r\n this.$network.post('/p/c/meta/table/list',{DESCRIPTION:''}).then(res => {\r\n if(res.data.code === 0){\r\n this.tableConfig.props.AutoData = res.data.data.row.reduce((arr,item) => {\r\n arr.push({\r\n value:item.NAME.val,\r\n id:item.ID.val,\r\n NAME:item.DESCRIPTION.val\r\n })\r\n return arr\r\n },[]);\r\n }\r\n })\r\n }\r\n }\r\n },\r\n\r\n visibleButtons:[], // 可见按钮\r\n\r\n\r\n //修改字段配置\r\n\r\n // 可显示字段\r\n modifyField: {\r\n modifiable_field: \"选中的字段\",\r\n modifiable_field_name: \"\", //选中的字段名称1\r\n totalRowCount: 0, //数据总条数\r\n pageSize: 10, //每页数据条数\r\n dataEmptyMessage: \"数据为空\", //没数据时的提示\r\n data: {}, //表格数据\r\n columnsKey: [\"value\"], //input显示的字段\r\n columns: [\"id\"], //模糊搜索隐藏的列\r\n AutoData: [],\r\n defaultSelected: []\r\n },\r\n modifyTableShow: false,\r\n modifyColumns:[\r\n {\r\n title: '序号',\r\n render: (h, params) => {\r\n return h('span', {},params.index + 1);\r\n }\r\n },\r\n {\r\n title: '字段名',\r\n key: 'Label'\r\n },\r\n // {\r\n // title: '必填',\r\n // key: 'isnotnull',\r\n // render: (h, params) => {\r\n // return h('Checkbox', {\r\n // props:{\r\n // 'value':params.row.isnotnull\r\n // },\r\n // on:{\r\n // 'on-change': (value) => {\r\n // this.configData.modifiableField[params.index].isnotnull = value\r\n // }\r\n // }\r\n // });\r\n // }\r\n // },\r\n {\r\n title: '只读',\r\n key: 'readonly',\r\n render: (h, params) => {\r\n return h('Checkbox', {\r\n props:{\r\n 'value':params.row.readonly\r\n },\r\n on:{\r\n 'on-change': (value) => {\r\n this.configData.modifiableField[params.index].readonly = value\r\n }\r\n }\r\n });\r\n }\r\n },\r\n {\r\n title:'操作',\r\n render:(h,params) => {\r\n return h('span',{\r\n style:{\r\n color:'rgba(16, 142, 233, 1)',\r\n cursor:'pointer'\r\n },\r\n on:{\r\n click:() => {\r\n this.configData.modifiableField = this.configData.modifiableField.filter((item,index) => index !== params.index)\r\n this.modifyField.defaultSelected = this.configData.modifiableField\r\n if(this.modifyField.defaultSelected.length === 0){\r\n this.modifyTableShow = false\r\n }\r\n }\r\n }\r\n },'删除')\r\n }\r\n }\r\n ],\r\n\r\n pageBtnData: [\r\n {\r\n label: \"最少同意人数\",\r\n icontype: 1,\r\n color: \"#09A155\",\r\n value: \"\"\r\n },\r\n {\r\n label: \"同意状态别名\",\r\n icontype: 1,\r\n color: \"#09A155\",\r\n value: \"\"\r\n },\r\n {\r\n label: \"最少拒绝人数\",\r\n icontype: 2,\r\n color: \"#ED4014\",\r\n value: \"\"\r\n },\r\n {\r\n label: \"拒绝状态别名\",\r\n icontype: 2,\r\n color: \"#ED4014\",\r\n value: \"\"\r\n }\r\n ],\r\n status1: false, //超时提醒\r\n status2: false, //自动处理\r\n openControl: false, //控制弹框是否显示\r\n loading: false, // z最大loading\r\n resultData: {}, // 选中结果\r\n open: false, // 是否打开\r\n obj: {}, //传给table的对象\r\n saveObj: {}, //存储的每次节点的对象\r\n selectRow: [], //弹框多选单击一行的数据\r\n approves: \"\", //审批相关数据\r\n setOvertime: {\r\n threshold: \"\",\r\n sources: 0,\r\n status: 1,\r\n handleValue: \"\",\r\n handleType: 11,\r\n extraMsg: \"\"\r\n },\r\n autoDetail: {\r\n threshold: \"\",\r\n sources: 0,\r\n status: 1,\r\n handleType: 20,\r\n extraMsg: \"\",\r\n handleValue: \"\"\r\n },\r\n approvelList: [], //存放审批相关的数据\r\n closeType: false, //控制审批确定取消显示状态\r\n isCallInterface: false,\r\n\r\n defaultObj:{}, //默认数据\r\n\r\n\r\n\r\n };\r\n },\r\n computed: {\r\n tableInfo () {\r\n return {tableId:this.configData.nodeFormId,tableName:this.configData.nodeForm}\r\n },\r\n actServiceS() {\r\n return [this.setOvertime, this.autoDetail];\r\n }\r\n },\r\n watch: {\r\n pageBtnData: {\r\n handler(newVal) {\r\n\r\n let temArr = [\r\n {\r\n actType: 0,\r\n actName: newVal[1].value,\r\n actLimit: newVal[0].value\r\n },\r\n {\r\n actType: 1,\r\n actName: newVal[3].value,\r\n actLimit: newVal[2].value\r\n }\r\n ];\r\n if (this.configData.ruleList.length < 1) {\r\n this.configData.ruleList = temArr;\r\n } else {\r\n this.configData.ruleList.map((item) => {\r\n temArr.map(inner => {\r\n if (item.actType === inner.actType) {\r\n item = Object.assign(item, inner);\r\n }\r\n });\r\n });\r\n }\r\n },\r\n deep: true\r\n },\r\n actServiceS: {\r\n handler(newVal) {\r\n this.configData.actServiceS = newVal;\r\n },\r\n deep: true\r\n },\r\n approvelList: {\r\n handler(newVal) {\r\n this.configData.approvelList = newVal;\r\n },\r\n deep: true\r\n }\r\n },\r\n methods: {\r\n onBlur(event, ins, key) {\r\n let res = /^[0-9]*$/;\r\n if (res.test(key)) {\r\n if (this.pageBtnData[key].value === \"\" && key == 0) {\r\n this.$Message.warning(\"最少同意人数不能为空\");\r\n }\r\n if (this.pageBtnData[key].value === \"\" && key == 1) {\r\n this.$Message.warning(\"同意状态别名不能为空\");\r\n }\r\n if (this.pageBtnData[key].value === \"\" && key == 2) {\r\n this.$Message.warning(\"最少拒绝人数不能为空\");\r\n }\r\n if (this.pageBtnData[key].value === \"\" && key == 3) {\r\n this.$Message.warning(\"拒绝状态别名不能为空\");\r\n }\r\n }\r\n },\r\n //可显字段下拉多选事件\r\n OnFkrpSelected(selected) {\r\n if(selected.length === 0){\r\n this.modifyTableShow = false\r\n }\r\n selected.map(item => {\r\n // item.isnotnull = false\r\n item.readonly = false\r\n return item\r\n })\r\n this.modifyField.modifiableField = selected;\r\n this.configData.modifiableField = selected;\r\n },\r\n onPopperShow() {\r\n //下拉多选\r\n this.findField({ AD_TABLE_ID: this.configData.nodeFormId });\r\n },\r\n changePage(val) {\r\n this.findField({\r\n pageSize: this.modifyField.pageSize,\r\n page: val,\r\n AD_TABLE_ID: this.configData.nodeFormId\r\n });\r\n },\r\n modifiableFieldClick () { //可显字段只读/必填控制\r\n if(this.modifyTableShow){ //保存权限\r\n\r\n }else{ //更改权限\r\n\r\n }\r\n\r\n this.modifyTableShow = !this.modifyTableShow\r\n },\r\n //模糊查找input事件\r\n inputChange(val) {\r\n this.findField({ DESCRIPTION: val, AD_TABLE_ID: this.configData.nodeFormId });\r\n },\r\n onClear() {\r\n this.modifyTableShow = false\r\n this.modifyField.modifiableField = [];\r\n this.configData.modifiableField = [];\r\n }, //可显字段清除事件\r\n change1(val) {\r\n this.status1 = val;\r\n this.setOvertime = {\r\n threshold: \"\",\r\n sources: 0,\r\n status: 1,\r\n handleValue: \"\",\r\n handleType: 11,\r\n extraMsg: \"\",\r\n id:this.setOvertime.id\r\n }\r\n\r\n if (val) {\r\n this.setOvertime.status = 0;\r\n } else {\r\n this.setOvertime.status = 1;\r\n }\r\n },\r\n change2(val) {\r\n this.status2 = val;\r\n this.autoDetail = {\r\n threshold: \"\",\r\n sources: 0,\r\n status: 1,\r\n handleType: 20,\r\n extraMsg: \"\",\r\n handleValue: \"\",\r\n id:this.autoDetail.id\r\n }\r\n if (val) {\r\n this.autoDetail.status = 0;\r\n } else {\r\n this.autoDetail.status = 1;\r\n }\r\n },\r\n getResult(data) {\r\n this.resultData = Object.assign({}, data);\r\n if (this.resultData.list.length > 0) {\r\n this.approvelList = this.resultData.list.map(item => {\r\n let tem = Object.assign({}, item);\r\n delete tem.string;\r\n return tem;\r\n });\r\n } else {\r\n this.approvelList = [];\r\n }\r\n },\r\n //获取可修改字段\r\n findField(param) {\r\n this.$network.post(\"/p/c/meta/column/list\", param).then(res => {\r\n if (res.data.code === 0) {\r\n if (param.hasOwnProperty(\"DESCRIPTION\")) {\r\n this.modifyField.AutoData = [];\r\n this.modifyField.AutoData = res.data.data.row.reduce(\r\n (arr, item) => {\r\n arr.push({\r\n value: item.DESCRIPTION.val,\r\n id: item.ID.val\r\n });\r\n return arr;\r\n },\r\n []\r\n );\r\n }\r\n res.data.data.tabth.map(item => {\r\n if (item.colname === \"DESCRIPTION\") {\r\n item.isak = true;\r\n } else {\r\n item.isak = false;\r\n }\r\n });\r\n this.modifyField.data = res.data.data;\r\n this.modifyField.totalRowCount = res.data.data.totalRowCount;\r\n }\r\n });\r\n },\r\n\r\n saveConfig () { //确定按钮点击\r\n\r\n // 节点必经\r\n if(this.configData.inevitable === 2 && (!this.configData.inevitableExts || this.configData.inevitableExts.length === 0)){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '规则配置不能为空',\r\n mask: true\r\n })\r\n return\r\n }\r\n\r\n // 操作人\r\n if(this.configData.approverStyle === 0){ //直接选择\r\n // 审批人为空\r\n if(this.configData.approvelList && this.configData.approvelList.length === 0){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '审批人不能为空',\r\n mask: true\r\n })\r\n\r\n return\r\n }\r\n }else{ //扩展程序\r\n // 扩展程序为空\r\n if(this.configData.actionConfig[0] && !this.configData.actionConfig[0].handleValue){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '扩展程序不能为空',\r\n mask: true\r\n })\r\n return\r\n }\r\n }\r\n\r\n // 审批条件\r\n if(this.configData.approveCondition === 0){\r\n // 最少同意人数\r\n if(!this.pageBtnData[0].value){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '最少同意人数不能为空',\r\n mask: true\r\n })\r\n return\r\n }\r\n // 最少拒绝人数\r\n if(!this.pageBtnData[2].value){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '最少拒绝人数不能为空',\r\n mask: true\r\n })\r\n return\r\n }\r\n }\r\n\r\n\r\n // 驳回节点\r\n if(this.configData.assignBack === 1 && !this.configData.backId){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '驳回节点不能为空',\r\n mask: true\r\n })\r\n return\r\n }\r\n\r\n // 作废操作 --发起作废申请\r\n if(this.configData.nodeCancle === 1 && !this.configData.cancleUrl){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '作废申请地址不能为空',\r\n mask: true\r\n })\r\n return\r\n }\r\n\r\n // 指派流转节点\r\n if(this.configData.assignNext === 0 && (!this.configData.assignRange || this.configData.assignRange.length === 0)){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '节点范围不能为空',\r\n mask: true\r\n })\r\n return\r\n }\r\n\r\n // 超时提醒\r\n if(this.status1 && (!this.setOvertime.threshold || !this.setOvertime.handleValue)){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '请填写完善超时提醒信息',\r\n mask: true\r\n })\r\n return\r\n }\r\n //自动处理\r\n if(this.status2 && (!this.autoDetail.threshold)){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '请填写完善自动处理信息',\r\n mask: true\r\n })\r\n return\r\n }\r\n\r\n // 控制自动处理时间大于超时提醒时间\r\n if(this.status1 && this.status2){\r\n let start = this.setOvertime.sources === 0?Number(this.setOvertime.threshold):Number(this.setOvertime.threshold)*24\r\n let end = this.autoDetail.sources === 0?Number(this.autoDetail.threshold):Number(this.autoDetail.threshold)*24\r\n\r\n if(start >= end){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '超时提醒时间不能大于自动处理时间',\r\n mask: true\r\n })\r\n return\r\n }\r\n }\r\n\r\n let guiStyle = JSON.parse(this.$parent.$parent.myDesigner.getFlowData())\r\n guiStyle.nodeDataArray.map(item => {\r\n if(this.configData.key === item.key){\r\n item.text = this.configData.name\r\n }\r\n return item\r\n })\r\n\r\n\r\n if((this.defaultObj.nodeFormId !== this.configData.nodeFormId) && this.defaultObj.nodeFormId){\r\n this.$Modal.fcError({\r\n title: '错误',\r\n content: '当前节点的表单已修改,节点后的连线配置将会清空,是否确认保存?',\r\n mask: true,\r\n showCancel: true,\r\n onOk: () => {\r\n this.node.findLinksOutOf().map(item => {\r\n delete this.$parent.$parent.pathMsg[item.data.key]\r\n\r\n let guiStyle = JSON.parse(this.$parent.$parent.myDesigner.getFlowData())\r\n guiStyle.linkDataArray = guiStyle.linkDataArray.filter(temp => temp.key !== item.data.key)\r\n })\r\n this.$parent.$parent.data.guiStyle = JSON.stringify(guiStyle)\r\n this.$parent.$parent.init()\r\n this.$emit('closeDrawer')\r\n }\r\n })\r\n return\r\n }else{\r\n this.$parent.$parent.data.guiStyle = JSON.stringify(guiStyle)\r\n this.$parent.$parent.init()\r\n this.$emit('closeDrawer')\r\n }\r\n\r\n },\r\n closeDrawer () { //取消按钮点击\r\n this.$parent.$parent.nodeMsg[Number(this.configData.key)] = this.defaultObj\r\n this.$emit('closeDrawer')\r\n },\r\n approverStyleChange () { //选择审批人类型切换\r\n this.configData.actionConfig[0].handleValue = null\r\n this.resultData = {}\r\n this.approvelList = [];\r\n },\r\n\r\n // 审批条件 扩展\r\n inevitableResult (value) {\r\n this.configData.inevitableExts = value\r\n },\r\n preEventResult (value) { //前置事件处理\r\n this.configData.preEvent = value\r\n },\r\n behindEventResult (value) { //后置事件处理\r\n this.configData.behindEvent = value\r\n },\r\n getVisibleButtons () { //获取可见按钮\r\n this.$network.post('/p/cs/node/define/bt',{\r\n id: this.configData.nodeFormId,\r\n vueDispaly: 0\r\n })\r\n .then(res => {\r\n if(res.data.resultCode === 0){\r\n this.visibleButtons = res.data.data.difineData\r\n }else{\r\n this.visibleButtons = []\r\n }\r\n })\r\n },\r\n visibleBtChange (value) { //可见按钮选择\r\n if(value[0] === 'bSelect-all'){\r\n this.configData.visibleBt = this.visibleButtons.reduce((arr,current) => {\r\n arr.push(current.ID)\r\n return arr\r\n },[])\r\n }\r\n }\r\n },\r\n created() {\r\n // 保存默认值\r\n this.defaultObj = JSON.parse(JSON.stringify(this.configData))\r\n\r\n if (this.configData.actionConfig.length === 0) {\r\n this.configData.actionConfig = [\r\n {\r\n id: null,\r\n handleType: 33,\r\n handleValue: null,\r\n extraMsg: null\r\n }\r\n ];\r\n } else {\r\n this.configData.actionConfig = [\r\n {\r\n id: this.configData.actionConfig[0].id,\r\n handleType: 33,\r\n handleValue: this.configData.actionConfig[0].handleValue,\r\n extraMsg: this.configData.actionConfig[0].extraMsg\r\n }\r\n ];\r\n }\r\n\r\n if (this.configData.modifiableField) {\r\n this.modifyField.defaultSelected = this.configData.modifiableField\r\n }\r\n\r\n\r\n if (\r\n this.configData.approvelList &&\r\n this.configData.approvelList.length > 0\r\n ) {\r\n this.configData.approvelList.map(item => {\r\n let temObj = Object.assign({}, item);\r\n this.approves += item.approveValueName?item.approveValueName:item.approve_value_name + \",\";\r\n temObj.approve_type = temObj.approveType?temObj.approveType:temObj.approve_type;\r\n temObj.approve_value = temObj.approveValue?temObj.approveValue:temObj.approve_value;\r\n temObj.approve_value_name = item.approveValueName?item.approveValueName:item.approve_value_name;\r\n delete temObj.approveType;\r\n delete temObj.approveValue;\r\n delete temObj.approveValueName;\r\n\r\n let temL = Object.assign({}, temObj);\r\n this.approvelList.push(temObj);\r\n temL.string = item.approveValueName?item.approveValueName:item.approve_value_name;\r\n this.resultData.list\r\n ? this.resultData.list.push(temL)\r\n : this.$set(this.resultData, \"list\", [temL]);\r\n });\r\n this.resultData.total\r\n ? (this.resultData.total = this.resultData.list.length)\r\n : this.$set(this.resultData, \"total\", this.resultData.list.length);\r\n if (this.approves.length > 0) {\r\n this.approves = this.approves.substring(0, this.approves.length - 1);\r\n }\r\n }\r\n\r\n if (\r\n this.configData.ruleList &&\r\n this.configData.ruleList.length > 0\r\n ) {\r\n this.configData.ruleList.map(item => {\r\n if (item.actType === 0) {\r\n this.pageBtnData[1].value = item.actName;\r\n this.pageBtnData[0].value = item.actLimit;\r\n }\r\n if (item.actType === 1) {\r\n this.pageBtnData[3].value = item.actName;\r\n this.pageBtnData[2].value = item.actLimit;\r\n }\r\n });\r\n }\r\n\r\n if (\r\n this.configData.actServiceS &&\r\n this.configData.actServiceS.length > 0\r\n ) {\r\n this.configData.actServiceS.map(item => {\r\n if (item.handleType >= 20) {\r\n this.autoDetail = item;\r\n } else {\r\n this.setOvertime = item;\r\n }\r\n });\r\n this.setOvertime.status === 0\r\n ? (this.status1 = true)\r\n : (this.status1 = false);\r\n this.autoDetail.status === 0\r\n ? (this.status2 = true)\r\n : (this.status2 = false);\r\n } else {\r\n this.configData.actServiceS = [\r\n {\r\n threshold: \"\",\r\n sources: 0,\r\n status: 1,\r\n handleValue: \"\",\r\n handleType: 11\r\n },\r\n {\r\n threshold: \"\",\r\n sources: 0,\r\n status: 1,\r\n handleType: 20,\r\n handleValue: \"\"\r\n }\r\n ];\r\n }\r\n\r\n // 处理节点表配置默认值\r\n if(this.configData.nodeFormId){\r\n this.tableConfig.props.defaultSelected = [\r\n {\r\n ID: this.configData.nodeFormId,\r\n Label: this.configData.nodeFormName\r\n }\r\n ]\r\n }\r\n\r\n // 可见按钮\r\n if(this.configData.nodeFormId){\r\n this.getVisibleButtons()\r\n }\r\n },\r\n mounted() {\r\n //this.getTreeData();\r\n /**/\r\n }\r\n};\r\n</script>\r\n<style lang=\"scss\">\r\n.DynamicProcessNodeConfig {\r\n overflow-y: hidden;\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%;\r\n >p{\r\n text-align: right;\r\n margin-top: 16px;\r\n\r\n >button:first-child{\r\n margin-right: 10px;\r\n }\r\n }\r\n >div{\r\n flex: 1;\r\n overflow: auto;\r\n }\r\n .nodeSetbox {\r\n padding: 16px;\r\n border: 1px solid #dcdee2;\r\n .boxItem {\r\n padding: 16px 40px;\r\n border-bottom: 1px solid #dcdee2;\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n }\r\n .tipMessage {\r\n color: #929292;\r\n line-height: 16px;\r\n }\r\n .burgeon-form-item {\r\n margin-bottom: 16px;\r\n &:last-child {\r\n margin-bottom: 0px;\r\n }\r\n }\r\n &:last-child {\r\n padding: 0;\r\n }\r\n }\r\n .requireStyle {\r\n font-size: 14px;\r\n vertical-align: middle;\r\n color: red;\r\n padding-top: 5px;\r\n display: inline-block;\r\n }\r\n .splitItem {\r\n font-size: 14px;\r\n line-height: 40px;\r\n color: #929292;\r\n &:first-child{\r\n margin-top: -10px;\r\n }\r\n }\r\n .burgeon-fkrp-select-icon {\r\n top: 2px;\r\n }\r\n}\r\n</style>\r\n"]}]}
|