| 1 |
- {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\system\\backendRouting\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\system\\backendRouting\\index.vue","mtime":1761614939067},{"path":"D:\\front\\item\\zyAdmin\\babel.config.js","mtime":1761614925168},{"path":"D:\\front\\item\\zyAdmin\\.babelrc","mtime":1761614925165},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1761614927320},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvciBmcm9tICJEOi9mcm9udC9pdGVtL3p5QWRtaW4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L2Zyb250L2l0ZW0venlBZG1pbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2Zyb250L2l0ZW0venlBZG1pbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyI7CmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSAiRDovZnJvbnQvaXRlbS96eUFkbWluL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgeyByb3V0ZUNhdGUsIHN5bmNSb3V0ZSBhcyBfc3luY1JvdXRlLCByb3V0ZUxpc3QsIHJvdXRlRGV0LCByb3V0ZVNhdmUsIGludGVyZmFjZUVkaXROYW1lLCByb3V0ZURlbCwgcm91dGVFZGl0LCByb3V0ZUNhdGVEZWwgfSBmcm9tICdAL2FwaS9zeXN0ZW1CYWNrZW5kUm91dGluZyc7CmltcG9ydCB7IFZ1ZVRyZWVMaXN0LCBUcmVlLCBUcmVlTm9kZSB9IGZyb20gJ3Z1ZS10cmVlLWxpc3QnOwppbXBvcnQgZGVidWdnaW5nIGZyb20gJy4vZGVidWdnaW5nLnZ1ZSc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnc3lzdGVtT3V0SW50ZXJmYWNlJywKICBjb21wb25lbnRzOiB7CiAgICBWdWVUcmVlTGlzdDogVnVlVHJlZUxpc3QsCiAgICBkZWJ1Z2dpbmc6IGRlYnVnZ2luZwogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHZhbHVlOiAnJywKICAgICAgaXNFZGl0OiBmYWxzZSwKICAgICAgbmFtZU1vZGFsOiBmYWxzZSwKICAgICAgZGVidWdnaW5nTW9kYWw6IGZhbHNlLAogICAgICBmb3JtVmFsaWRhdGU6IHt9LAogICAgICBncmlkOiB7CiAgICAgICAgeGw6IDcsCiAgICAgICAgbGc6IDcsCiAgICAgICAgbWQ6IDEyLAogICAgICAgIHNtOiAyNCwKICAgICAgICB4czogMjQKICAgICAgfSwKICAgICAgcnVsZVZhbGlkYXRlOiB7CiAgICAgICAgdGl0bGU6IFt7CiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5q2j56Gu55qE5o+P6L+wICjkuI3og73lpJrkuo4yMDDkvY3mlbApJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJywKICAgICAgICAgIG1heDogMjAwCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIGludFR5cGVMaXN0OiBbewogICAgICAgIHZhbHVlOiAnc3RyaW5nJywKICAgICAgICBsYWJlbDogJ1N0cmluZycKICAgICAgfSwKICAgICAgLy8gewogICAgICAvLyAgIHZhbHVlOiAnYXJyYXknLAogICAgICAvLyAgIGxhYmVsOiAnQXJyYXknLAogICAgICAvLyB9LAogICAgICAvLyB7CiAgICAgIC8vICAgdmFsdWU6ICdvYmplY3QnLAogICAgICAvLyAgIGxhYmVsOiAnT2JqZWN0JywKICAgICAgLy8gfSwKICAgICAgewogICAgICAgIHZhbHVlOiAnbnVtYmVyJywKICAgICAgICBsYWJlbDogJ051bWJlcicKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnYm9vbGVhbicsCiAgICAgICAgbGFiZWw6ICdCb29sZWFuJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdudWxsJywKICAgICAgICBsYWJlbDogJ051bGwnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ2FueScsCiAgICAgICAgbGFiZWw6ICdBbnknCiAgICAgIH1dLAogICAgICB0eXBlTGlzdDogW3sKICAgICAgICB2YWx1ZTogJ3N0cmluZycsCiAgICAgICAgbGFiZWw6ICdTdHJpbmcnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ2FycmF5JywKICAgICAgICBsYWJlbDogJ0FycmF5JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdvYmplY3QnLAogICAgICAgIGxhYmVsOiAnT2JqZWN0JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdudW1iZXInLAogICAgICAgIGxhYmVsOiAnTnVtYmVyJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdib29sZWFuJywKICAgICAgICBsYWJlbDogJ0Jvb2xlYW4nCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ251bGwnLAogICAgICAgIGxhYmVsOiAnTnVsbCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnYW55JywKICAgICAgICBsYWJlbDogJ0FueScKICAgICAgfV0sCiAgICAgIHJlcXVlc3RUeXBlTGlzdDogW3sKICAgICAgICB2YWx1ZTogJ0dFVCcsCiAgICAgICAgbGFiZWw6ICdHRVQnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1BPU1QnLAogICAgICAgIGxhYmVsOiAnUE9TVCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnREVMRVRFJywKICAgICAgICBsYWJlbDogJ0RFTEVURScKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnUFVUJywKICAgICAgICBsYWJlbDogJ1BVVCcKICAgICAgfV0sCiAgICAgIGNvbnRleHREYXRhOiBudWxsLAogICAgICAvL+W3puS+p+WvvOiIquWPs+mUrueCueWHu+aYr+S6p+eUn+eahOaVsOaNruWvueixoQogICAgICB0cmVlRGF0YTogdW5kZWZpbmVkLAogICAgICBidXR0b25Qcm9wczogewogICAgICAgIHR5cGU6ICdkZWZhdWx0JywKICAgICAgICBzaXplOiAnc21hbGwnCiAgICAgIH0sCiAgICAgIG1ldGhvZENvbG9yOiAnI2ZmZicsCiAgICAgIGFwaVR5cGU6ICdhZG1pbmFwaScsCiAgICAgIHBhcmFtc0lkOiAwLAogICAgICB3aW5Mb2FkaW5nOiBmYWxzZQogICAgfTsKICB9LAogIHdhdGNoOiBfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7fSwgJ2Zvcm1WYWxpZGF0ZS5tZXRob2QnLCB7CiAgICBkZWVwOiB0cnVlLAogICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwsIG9sZFZhbCkgewogICAgICBpZiAobmV3VmFsKSB7CiAgICAgICAgdmFyIG1ldGhvZCA9IG5ld1ZhbC50b1VwcGVyQ2FzZSgpOwogICAgICAgIGlmIChtZXRob2QgPT0gJ0dFVCcpIHsKICAgICAgICAgIHRoaXMubWV0aG9kQ29sb3IgPSAnIzYxYWZmZSc7CiAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ1BPU1QnKSB7CiAgICAgICAgICB0aGlzLm1ldGhvZENvbG9yID0gJyM0OWNjOTAnOwogICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQVVQnKSB7CiAgICAgICAgICB0aGlzLm1ldGhvZENvbG9yID0gJyNmY2ExMzAnOwogICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdERUwnIHx8IG1ldGhvZCA9PSAnREVMRVRFJykgewogICAgICAgICAgdGhpcy5tZXRob2RDb2xvciA9ICcjZjkzZTNlJzsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9KSwgImFwaVR5cGUiLCBmdW5jdGlvbiBhcGlUeXBlKG5ld1ZhbCkgewogICAgaWYgKG5ld1ZhbCkgewogICAgICB0aGlzLndpbkxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLmdldEludGVyZmFjZUxpc3QoJ29uZScpOwogICAgfQogIH0pLCAiaXNFZGl0IiwgZnVuY3Rpb24gaXNFZGl0KG5ld1ZhbCkgewogICAgaWYgKG5ld1ZhbCkgewogICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5yZXNwb25zZV9leGFtcGxlLm1hcChmdW5jdGlvbiAoZSkgewogICAgICAgIGUuZGF0YSA9IEpTT04uc3RyaW5naWZ5KGUuZGF0YSk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5mb3JtVmFsaWRhdGUucmVzcG9uc2VfZXhhbXBsZS5tYXAoZnVuY3Rpb24gKGUpIHsKICAgICAgICBlLmRhdGEgPSBKU09OLnBhcnNlKGUuZGF0YSk7CiAgICAgIH0pOwogICAgfQogIH0pLAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1hcFN0YXRlKCdtZWRpYScsIFsnaXNNb2JpbGUnXSkpLCB7fSwgewogICAgbGFiZWxXaWR0aDogZnVuY3Rpb24gbGFiZWxXaWR0aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB1bmRlZmluZWQgOiAnNTBweCc7CiAgICB9LAogICAgbGFiZWxQb3NpdGlvbjogZnVuY3Rpb24gbGFiZWxQb3NpdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdyaWdodCc7CiAgICB9CiAgfSksCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0SW50ZXJmYWNlTGlzdCgnb25lJyk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBzeW5jUm91dGU6IGZ1bmN0aW9uIHN5bmNSb3V0ZSgpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgdGhpcy4kbXNnYm94KHsKICAgICAgICB0aXRsZTogJ+eri+WNs+WQjOatpScsCiAgICAgICAgbWVzc2FnZTogJ+WQjOatpeS5i+WQju+8jOi3r+eUseaWh+S7tuS4reaWsOWinueahOaOpeWPo+a3u+WKoOWIsOaOpeWPo+WIl+ihqOS4re+8jOi3r+eUseaWh+S7tuS4reWIoOmZpOeahOi3r+eUseS8muWQjOatpeeahOWcqOaOpeWPo+WIl+ihqOS4reWIoOmZpCcsCiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgaWNvbkNsYXNzOiAnZWwtaWNvbi13YXJuaW5nJywKICAgICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICdidG4tY3VzdG9tLWNhbmNlbCcKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgX3N5bmNSb3V0ZShfdGhpcy5hcGlUeXBlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzLmdldEludGVyZmFjZUxpc3QoJ29uZScpOwogICAgICAgICAgX3RoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIGRlYnVnZ2luZzogZnVuY3Rpb24gZGVidWdnaW5nKCkgewogICAgICB0aGlzLmRlYnVnZ2luZ01vZGFsID0gdHJ1ZTsKICAgIH0sCiAgICBvbkNsaWNrc3NzOiBmdW5jdGlvbiBvbkNsaWNrc3NzKGUpIHt9LAogICAgbWV0aG9kc0NvbG9yOiBmdW5jdGlvbiBtZXRob2RzQ29sb3IobmV3VmFsKSB7CiAgICAgIHZhciBtZXRob2QgPSBuZXdWYWwudG9VcHBlckNhc2UoKTsKICAgICAgaWYgKG1ldGhvZCA9PSAnR0VUJykgewogICAgICAgIHJldHVybiAnIzYxYWZmZSc7CiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQT1NUJykgewogICAgICAgIHJldHVybiAnIzQ5Y2M5MCc7CiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQVVQnKSB7CiAgICAgICAgcmV0dXJuICcjZmNhMTMwJzsKICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ0RFTCcgfHwgbWV0aG9kID09ICdERUxFVEUnKSB7CiAgICAgICAgcmV0dXJuICcjZjkzZTNlJzsKICAgICAgfQogICAgfSwKICAgIGluc2VydEJlZm9yZTogZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKHBhcmFtcykge30sCiAgICBpbnNlcnRBZnRlcjogZnVuY3Rpb24gaW5zZXJ0QWZ0ZXIocGFyYW1zKSB7fSwKICAgIG1vdmVJbnRvOiBmdW5jdGlvbiBtb3ZlSW50byhwYXJhbXMpIHt9LAogICAgYWRkVGFibGVEYXRhOiBmdW5jdGlvbiBhZGRUYWJsZURhdGEoKSB7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkJHRhYmxlJGluc2VydEEsIGRhdGE7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5uKSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5uID0gMTsKICAgICAgICAgICAgICByZXR1cm4gJHRhYmxlLmluc2VydEF0KG5ld1JvdywgLTEpOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgX3lpZWxkJCR0YWJsZSRpbnNlcnRBID0gX2NvbnRleHQudjsKICAgICAgICAgICAgICBkYXRhID0gX3lpZWxkJCR0YWJsZSRpbnNlcnRBLnJvdzsKICAgICAgICAgICAgICBfY29udGV4dC5uID0gMjsKICAgICAgICAgICAgICByZXR1cm4gJHRhYmxlLnNldEFjdGl2ZUNlbGwoZGF0YSwgJ25hbWUnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hKDIpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBnZXRJbnRlcmZhY2VMaXN0OiBmdW5jdGlvbiBnZXRJbnRlcmZhY2VMaXN0KGRpc2tfdHlwZSkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdHJ5IHsKICAgICAgICByb3V0ZUxpc3QodGhpcy5hcGlUeXBlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIGlmIChyZXMuZGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgcmVzLmRhdGFbMF0uZXhwYW5kID0gZmFsc2U7CiAgICAgICAgICAgIF90aGlzMi50cmVlRGF0YSA9IG5ldyBUcmVlKHJlcy5kYXRhKTsKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIF90aGlzMi4kbmV4dFRpY2soZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICBpZiAoZGlza190eXBlKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGFbMF0uY2hpbGRyZW4gJiYgcmVzLmRhdGFbMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW4gJiYgcmVzLmRhdGFbMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52dGwtaWNvbi1jYXJldC1yaWdodCcpWzBdLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52dGwtaWNvbi1jYXJldC1yaWdodCcpWzFdLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgIGkgPSByZXMuZGF0YVswXS5jaGlsZHJlblswXS5jaGlsZHJlblswXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52dGwtaWNvbi1jYXJldC1yaWdodCcpWzBdLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgIGkgPSByZXMuZGF0YVswXS5jaGlsZHJlblswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzMi5vbkNsaWNrKGkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyB0aGlzLiRyZWZzLnRyZWVMaXN0LmNsZWFyKCk7CiAgICAgICAgICAgIF90aGlzMi50cmVlRGF0YSA9IG5ldyBUcmVlKHt9KTsKICAgICAgICAgICAgX3RoaXMyLmZvcm1WYWxpZGF0ZSA9IHt9OwogICAgICAgICAgfQogICAgICAgICAgX3RoaXMyLndpbkxvYWRpbmcgPSBmYWxzZTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpczIud2luTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgX3RoaXMyLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICAgIH0pOwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgfQogICAgfSwKICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2socGFyYW1zKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKHBhcmFtcy5tZXRob2QpIHsKICAgICAgICAgIHRoaXMuaXNFZGl0ID0gZmFsc2U7CiAgICAgICAgICB0aGlzLnBhcmFtc0lkID0gcGFyYW1zLmlkOwogICAgICAgICAgdGhpcy5nZXRSb3RlRGF0YShwYXJhbXMuaWQpOwogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9CiAgICB9LAogICAgZ2V0Um90ZURhdGE6IGZ1bmN0aW9uIGdldFJvdGVEYXRhKGlkKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByb3V0ZURldChpZCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMzLmZvcm1WYWxpZGF0ZSA9IHJlcy5kYXRhOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgX3RoaXMzLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVTdWJtaXQ6IGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdCgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yKCkudyhmdW5jdGlvbiAoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIubikgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKF90aGlzNC5mb3JtVmFsaWRhdGUubmFtZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQyLm4gPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYSgyLCBfdGhpczQuJG1lc3NhZ2Uud2FybmluZygn6K+36L6T5YWl5o6l5Y+j5ZCN56ewJykpOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgaWYgKF90aGlzNC5mb3JtVmFsaWRhdGUubWV0aG9kKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hKDIsIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nor7fmsYLnsbvlnosnKSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBpZiAoX3RoaXM0LmZvcm1WYWxpZGF0ZS5wYXRoKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDM7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hKDIsIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCfor7fovpPlhaXot6/nlLHlnLDlnYAnKSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy5ib2R5VGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5yZXF1ZXN0ID0gX2NvbnRleHQyLnY7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm4gPSA1OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczQuJHJlZnMucmVzVGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5yZXNwb25zZSA9IF9jb250ZXh0Mi52OwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uID0gNjsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM0LiRyZWZzLmNvZGVUYWJsZS5nZXRUYWJsZURhdGEoKS50YWJsZURhdGE7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICBfdGhpczQuZm9ybVZhbGlkYXRlLmVycm9yX2NvZGUgPSBfY29udGV4dDIudjsKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDc7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy5oZWFkVGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5oZWFkZXIgPSBfY29udGV4dDIudjsKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDg7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy54VGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5xdWVyeSA9IF9jb250ZXh0Mi52OwogICAgICAgICAgICAgIF90aGlzNC5mb3JtVmFsaWRhdGUuYXBpVHlwZSA9IF90aGlzNC5hcGlUeXBlOwogICAgICAgICAgICAgIF90aGlzNC5mb3JtVmFsaWRhdGUucmVzcG9uc2VfZXhhbXBsZS5tYXAoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIGUuZGF0YSA9IEpTT04ucGFyc2UoZS5kYXRhKTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDk7CiAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlU2F2ZShfdGhpczQuZm9ybVZhbGlkYXRlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwogICAgICAgICAgICAgICAgX3RoaXM0LmdldFJvdGVEYXRhKF90aGlzNC5wYXJhbXNJZCk7CiAgICAgICAgICAgICAgICBfdGhpczQuaXNFZGl0ID0gZmFsc2U7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hKDIpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgaW5zZXJ0RXZlbnQ6IGZ1bmN0aW9uIGluc2VydEV2ZW50KHR5cGUpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgJHRhYmxlLCBuZXdSb3csIF95aWVsZCQkdGFibGUkaW5zZXJ0QTIsIGRhdGE7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLm4pIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICR0YWJsZSA9IF90aGlzNS4kcmVmc1t0eXBlXTsKICAgICAgICAgICAgICBpZiAodHlwZSA9PSAneFRhYmxlJykgewogICAgICAgICAgICAgICAgbmV3Um93ID0gewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICcnLAogICAgICAgICAgICAgICAgICB0eXBlOiAnJywKICAgICAgICAgICAgICAgICAgbXVzdDogMCwKICAgICAgICAgICAgICAgICAgdHJpcDogJycKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdyZXNUYWJsZScpIHsKICAgICAgICAgICAgICAgIG5ld1JvdyA9IHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnJywKICAgICAgICAgICAgICAgICAgdHlwZTogJycsCiAgICAgICAgICAgICAgICAgIHRyaXA6ICcnCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBuZXdSb3cgPSB7CiAgICAgICAgICAgICAgICAgIGNvZGU6ICcnLAogICAgICAgICAgICAgICAgICB2YWx1ZTogJycsCiAgICAgICAgICAgICAgICAgIHNvbHV0aW9uOiAnJwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gJHRhYmxlLmluc2VydChuZXdSb3cpLnRoZW4oKHsgcm93IH0pID0+ICR0YWJsZS5zZXRFZGl0Um93KHJvdywgLTEpKTsKICAgICAgICAgICAgICBfY29udGV4dDMubiA9IDE7CiAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5pbnNlcnRBdChuZXdSb3csIC0xKTsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIF95aWVsZCQkdGFibGUkaW5zZXJ0QTIgPSBfY29udGV4dDMudjsKICAgICAgICAgICAgICBkYXRhID0gX3lpZWxkJCR0YWJsZSRpbnNlcnRBMi5yb3c7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm4gPSAyOwogICAgICAgICAgICAgIHJldHVybiAkdGFibGUuc2V0QWN0aXZlQ2VsbChkYXRhLCAnbmFtZScpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hKDIpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgaW5zZXJ0Um93OiBmdW5jdGlvbiBpbnNlcnRSb3coY3VyclJvdywgdHlwZSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IoKS5tKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciAkdGFibGUsIHJlY29yZCwgX3lpZWxkJCR0YWJsZSRpbnNlcnRBMywgbmV3Um93OwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5uKSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAkdGFibGUgPSBfdGhpczYuJHJlZnNbdHlwZV07IC8vIOWmguaenCBudWxsIOWImeaPkuWFpeWIsOebruagh+iKgueCuemhtumDqAogICAgICAgICAgICAgIC8vIOWmguaenCAtMSDliJnmj5LlhaXliLDnm67moIfoioLngrnlupXpg6gKICAgICAgICAgICAgICAvLyDlpoLmnpwgcm93IOWImeacieaPkuWFpeWIsOaViOeahOebruagh+iKgueCueivpeihjOeahOS9jee9rgogICAgICAgICAgICAgIGlmICh0eXBlID09ICd4VGFibGUnKSB7CiAgICAgICAgICAgICAgICByZWNvcmQgPSB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogJycsCiAgICAgICAgICAgICAgICAgIHR5cGU6ICcnLAogICAgICAgICAgICAgICAgICBtdXN0OiAwLAogICAgICAgICAgICAgICAgICB0cmlwOiAnJywKICAgICAgICAgICAgICAgICAgaWQ6IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBjdXJyUm93LmlkIC8vIOmcgOimgeaMh+WumueItuiKgueCue+8jOiHquWKqOaPkuWFpeivpeiKgueCueS4rQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ3Jlc1RhYmxlJykgewogICAgICAgICAgICAgICAgcmVjb3JkID0gewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICcnLAogICAgICAgICAgICAgICAgICB0eXBlOiAnJywKICAgICAgICAgICAgICAgICAgdHJpcDogJycsCiAgICAgICAgICAgICAgICAgIGlkOiBEYXRlLm5vdygpLAogICAgICAgICAgICAgICAgICBwYXJlbnRJZDogY3VyclJvdy5pZCAvLyDpnIDopoHmjIflrprniLboioLngrnvvIzoh6rliqjmj5LlhaXor6XoioLngrnkuK0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJlY29yZCA9IHsKICAgICAgICAgICAgICAgICAgY29kZTogJycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJywKICAgICAgICAgICAgICAgICAgc29sdXRpb246ICcnLAogICAgICAgICAgICAgICAgICBpZDogRGF0ZS5ub3coKSwKICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGN1cnJSb3cuaWQgLy8g6ZyA6KaB5oyH5a6a54i26IqC54K577yM6Ieq5Yqo5o+S5YWl6K+l6IqC54K55LitCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubiA9IDE7CiAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5pbnNlcnRBdChyZWNvcmQsIC0xKTsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIF95aWVsZCQkdGFibGUkaW5zZXJ0QTMgPSBfY29udGV4dDQudjsKICAgICAgICAgICAgICBuZXdSb3cgPSBfeWllbGQkJHRhYmxlJGluc2VydEEzLnJvdzsKICAgICAgICAgICAgICBfY29udGV4dDQubiA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5zZXRUcmVlRXhwYW5kKGN1cnJSb3csIHRydWUpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm4gPSAzOwogICAgICAgICAgICAgIHJldHVybiAkdGFibGUuc2V0QWN0aXZlUm93KG5ld1Jvdyk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmEoMik7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICByZW1vdmVSb3c6IGZ1bmN0aW9uIHJlbW92ZVJvdyhyb3csIHR5cGUpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgJHRhYmxlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5uKSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAkdGFibGUgPSBfdGhpczcuJHJlZnNbdHlwZV07CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm4gPSAxOwogICAgICAgICAgICAgIHJldHVybiAkdGFibGUucmVtb3ZlKHJvdyk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LmEoMik7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDkv67mlLnlkI3lrZcKICAgIGFkZDogZnVuY3Rpb24gYWRkKCkgewogICAgICB0aGlzLnZhbHVlID0gJyc7CiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlLmlkID0gMDsKICAgICAgdGhpcy5uYW1lTW9kYWwgPSB0cnVlOwogICAgfSwKICAgIC8vIOeCueWHu+iPnOWNlQogICAgY2xpY2tNZW51OiBmdW5jdGlvbiBjbGlja01lbnUobmFtZSwgcGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICBpZiAobmFtZSA9PSAxKSB7CiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUgPSB7fTsKICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5jYXRlX2lkID0gcGFyYW1zID8gcGFyYW1zLmlkIDogMDsKICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5pZCA9IDA7CiAgICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlOwogICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gMikgewogICAgICAgIC8vIHRoaXMudmFsdWUgPSBwYXJhbXMubmFtZSB8fCAnJzsKICAgICAgICAvLyB0aGlzLmZvcm1WYWxpZGF0ZS5jYXRlX2lkID0gcGFyYW1zID8gcGFyYW1zLmlkIDogMDsKICAgICAgICAvLyB0aGlzLm5hbWVNb2RhbCA9IHRydWU7CiAgICAgICAgLy8gdGhpcy5vbkVkaXQocGFyYW1zKTsKICAgICAgICB0aGlzLiRtb2RhbEZvcm0ocm91dGVFZGl0KHBhcmFtcy5pZCwgdGhpcy5hcGlUeXBlKSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gX3RoaXM4LmdldEludGVyZmFjZUxpc3QoKTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIGlmIChuYW1lID09IDMpIHsKICAgICAgICB0aGlzLm9uRGVsKHBhcmFtcyk7CiAgICAgIH0gZWxzZSBpZiAobmFtZSA9PSA0KSB7CiAgICAgICAgLy8gdGhpcy5hZGQoKTsKICAgICAgICB0aGlzLiRtb2RhbEZvcm0ocm91dGVDYXRlKHRoaXMuYXBpVHlwZSkpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIF90aGlzOC5nZXRJbnRlcmZhY2VMaXN0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBhZGRGYWM6IGZ1bmN0aW9uIGFkZEZhYyhwYXJhbXMpIHsKICAgICAgdGhpcy5mb3JtVmFsaWRhdGUgPSB7CiAgICAgICAgaWQ6IHBhcmFtcyA/IHBhcmFtcy5pZCA6IDAKICAgICAgfTsKICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlOwogICAgfSwKICAgIGFzeW5jT0s6IGZ1bmN0aW9uIGFzeW5jT0soKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICB2YXIgZGF0YSA9IHsKICAgICAgICBpZDogdGhpcy5mb3JtVmFsaWRhdGUuaWQgfHwgMCwKICAgICAgICB0eXBlOiAwLAogICAgICAgIG5hbWU6IHRoaXMudmFsdWUKICAgICAgfTsKICAgICAgcm91dGVTYXZlKGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzOS4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwogICAgICAgIF90aGlzOS5nZXRJbnRlcmZhY2VMaXN0KCk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBfdGhpczkuJG1lc3NhZ2UuZXJyb3IoZXJyLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5L6n6L655qCP5Y+z6ZSu54K55Ye75LqL5Lu2CiAgICBoYW5kbGVDb250ZXh0TWVudTogZnVuY3Rpb24gaGFuZGxlQ29udGV4dE1lbnUoZGF0YSwgZXZlbnQsIHBvc2l0aW9uKSB7CiAgICAgIHBvc2l0aW9uLmxlZnQgPSBOdW1iZXIocG9zaXRpb24ubGVmdC5zbGljZSgwLCAtMikpICsgNzUgKyAncHgnOwogICAgICB0aGlzLmNvbnRleHREYXRhID0gZGF0YTsKICAgIH0sCiAgICBoYW5kbGVDb250ZXh0Q3JlYXRlRm9sZGVyOiBmdW5jdGlvbiBoYW5kbGVDb250ZXh0Q3JlYXRlRm9sZGVyKCkge30sCiAgICBoYW5kbGVDb250ZXh0Q3JlYXRlRmlsZTogZnVuY3Rpb24gaGFuZGxlQ29udGV4dENyZWF0ZUZpbGUoKSB7fSwKICAgIC8vIOiHquWumuS5ieaYvuekugogICAgcmVuZGVyQ29udGVudDogZnVuY3Rpb24gcmVuZGVyQ29udGVudChoLCBfcmVmKSB7CiAgICAgIHZhciBfdGhpczAgPSB0aGlzOwogICAgICB2YXIgcm9vdCA9IF9yZWYucm9vdCwKICAgICAgICBub2RlID0gX3JlZi5ub2RlLAogICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgcmV0dXJuIGgoJ3NwYW4nLCB7CiAgICAgICAgc3R5bGU6IHsKICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLAogICAgICAgICAgd2lkdGg6ICcxMDAlJwogICAgICAgIH0KICAgICAgfSwgW2goJ3NwYW4nLCBbaChyZXNvbHZlQ29tcG9uZW50KCdJY29uJyksIHsKICAgICAgICB0eXBlOiAnaW9zLXBhcGVyLW91dGxpbmUnLAogICAgICAgIHN0eWxlOiB7CiAgICAgICAgICBtYXJnaW5SaWdodDogJzhweCcKICAgICAgICB9CiAgICAgIH0pLCBoKCdzcGFuJywgZGF0YS50aXRsZSldKSwgaCgnc3BhbicsIHsKICAgICAgICBzdHlsZTogewogICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsCiAgICAgICAgICBmbG9hdDogJ3JpZ2h0JywKICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMzJweCcKICAgICAgICB9CiAgICAgIH0sIFtoKHJlc29sdmVDb21wb25lbnQoJ0J1dHRvbicpLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuYnV0dG9uUHJvcHMpLCB7fSwgewogICAgICAgIGljb246ICdpb3MtYWRkJywKICAgICAgICBzdHlsZTogewogICAgICAgICAgbWFyZ2luUmlnaHQ6ICc4cHgnCiAgICAgICAgfSwKICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkgewogICAgICAgICAgX3RoaXMwLmFwcGVuZChkYXRhKTsKICAgICAgICB9CiAgICAgIH0pKSwgaChyZXNvbHZlQ29tcG9uZW50KCdCdXR0b24nKSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmJ1dHRvblByb3BzKSwge30sIHsKICAgICAgICBpY29uOiAnaW9zLXJlbW92ZScsCiAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHsKICAgICAgICAgIF90aGlzMC5yZW1vdmUocm9vdCwgbm9kZSwgZGF0YSk7CiAgICAgICAgfQogICAgICB9KSldKV0pOwogICAgfSwKICAgIC8qKg0KICAgICAqIOS+p+i+ueagj+eCueWHu+S6i+S7tg0KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhDQogICAgICovCiAgICBjbGlja0RpcjogZnVuY3Rpb24gY2xpY2tEaXIoZGF0YSwgcm9vdCwgbm9kZSkgewogICAgICB2YXIgdGhhdCA9IHRoaXM7CiAgICAgIHRoYXQubmF2SXRlbSA9IGRhdGE7CiAgICAgIHRoYXQucGF0aG5hbWUgPSBkYXRhLnBhdGhuYW1lOwogICAgfSwKICAgIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKGRhdGEpIHsKICAgICAgdmFyIGNoaWxkcmVuID0gZGF0YS5jaGlsZHJlbiB8fCBbXTsKICAgICAgY2hpbGRyZW4ucHVzaCh7CiAgICAgICAgdGl0bGU6ICdhcHBlbmRlZCBub2RlJywKICAgICAgICBleHBhbmQ6IHRydWUKICAgICAgfSk7CiAgICAgIHRoaXMuJHNldChkYXRhLCAnY2hpbGRyZW4nLCBjaGlsZHJlbik7CiAgICB9LAogICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUocm9vdCwgbm9kZSwgZGF0YSkgewogICAgICB2YXIgcGFyZW50S2V5ID0gcm9vdC5maW5kKGZ1bmN0aW9uIChlbCkgewogICAgICAgIHJldHVybiBlbCA9PT0gbm9kZTsKICAgICAgfSkucGFyZW50OwogICAgICB2YXIgcGFyZW50ID0gcm9vdC5maW5kKGZ1bmN0aW9uIChlbCkgewogICAgICAgIHJldHVybiBlbC5ub2RlS2V5ID09PSBwYXJlbnRLZXk7CiAgICAgIH0pLm5vZGU7CiAgICAgIHZhciBpbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGRhdGEpOwogICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTsKICAgIH0sCiAgICBvbk1vdXNlT3ZlcjogZnVuY3Rpb24gb25Nb3VzZU92ZXIocm9vdCwgbm9kZSwgZGF0YSwgZSwgZCkgewogICAgICBjb25zb2xlLmxvZyhyb290LCBub2RlLCBkYXRhKTsKICAgIH0sCiAgICAvLwogICAgb25EZWw6IGZ1bmN0aW9uIG9uRGVsKG5vZGUpIHsKICAgICAgdmFyIF90aGlzMSA9IHRoaXM7CiAgICAgIHZhciBtZXRob2QgPSBub2RlLmNhdGVfaWQgPyByb3V0ZURlbCA6IHJvdXRlQ2F0ZURlbDsKICAgICAgdGhpcy4kbXNnYm94KHsKICAgICAgICB0aXRsZTogJ+aPkOekuicsCiAgICAgICAgbWVzc2FnZTogJ+WIoOmZpOWQjuaXoOazleaBouWkje+8jOivt+ehruiupOWQjuWIoOmZpO+8gScsCiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgaWNvbkNsYXNzOiAnZWwtaWNvbi13YXJuaW5nJywKICAgICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICdidG4tY3VzdG9tLWNhbmNlbCcKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgbWV0aG9kKG5vZGUuaWQpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXMxLiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgICAgICBub2RlLnJlbW92ZSgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgIF90aGlzMS4kbWVzc2FnZS5lcnJvcihlcnIubXNnKTsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIG9uQ2hhbmdlTmFtZTogZnVuY3Rpb24gb25DaGFuZ2VOYW1lKHBhcmFtcykgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CiAgICAgIGlmIChwYXJhbXMuZXZlbnRUeXBlID09ICdibHVyJykgewogICAgICAgIHZhciBkYXRhID0gewogICAgICAgICAgbmFtZTogcGFyYW1zLm5ld05hbWUsCiAgICAgICAgICBpZDogcGFyYW1zLmlkCiAgICAgICAgfTsKICAgICAgICBpbnRlcmZhY2VFZGl0TmFtZShkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzMTAuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpczEwLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgb25BZGROb2RlOiBmdW5jdGlvbiBvbkFkZE5vZGUocGFyYW1zKSB7CiAgICAgIC8vIHRoaXMuJHJvdXRlci5wdXNoKHsKICAgICAgLy8gICBwYXRoOiAnL2FkbWluL3NldHRpbmcvc3lzdGVtX291dF9pbnRlcmZhY2UvYWRkJywKICAgICAgLy8gICBxdWVyeTogewogICAgICAvLyAgICAgcGlkOiBwYXJhbXMucGlkLAogICAgICAvLyAgIH0sCiAgICAgIC8vIH0pOwogICAgfSwKICAgIGFkZE5vZGU6IGZ1bmN0aW9uIGFkZE5vZGUoKSB7CiAgICAgIHZhciBub2RlID0gbmV3IFRyZWVOb2RlKHsKICAgICAgICBuYW1lOiAnbmV3IG5vZGUnLAogICAgICAgIGlzTGVhZjogZmFsc2UKICAgICAgfSk7CiAgICAgIGlmICghdGhpcy5kYXRhLmNoaWxkcmVuKSB0aGlzLmRhdGEuY2hpbGRyZW4gPSBbXTsKICAgICAgdGhpcy5kYXRhLmFkZENoaWxkcmVuKG5vZGUpOwogICAgfSwKICAgIGdldE5ld1RyZWU6IGZ1bmN0aW9uIGdldE5ld1RyZWUoKSB7CiAgICAgIHZhciB2bSA9IHRoaXM7CiAgICAgIGZ1bmN0aW9uIF9kZnMob2xkTm9kZSkgewogICAgICAgIHZhciBuZXdOb2RlID0ge307CiAgICAgICAgZm9yICh2YXIgayBpbiBvbGROb2RlKSB7CiAgICAgICAgICBpZiAoayAhPT0gJ2NoaWxkcmVuJyAmJiBrICE9PSAncGFyZW50JykgewogICAgICAgICAgICBuZXdOb2RlW2tdID0gb2xkTm9kZVtrXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG9sZE5vZGUuY2hpbGRyZW4gJiYgb2xkTm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgICBuZXdOb2RlLmNoaWxkcmVuID0gW107CiAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gb2xkTm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICBuZXdOb2RlLmNoaWxkcmVuLnB1c2goX2RmcyhvbGROb2RlLmNoaWxkcmVuW2ldKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXdOb2RlOwogICAgICB9CiAgICAgIHZtLm5ld1RyZWUgPSBfZGZzKHZtLmRhdGEpOwogICAgfQogIH0KfTs="},{"version":3,"names":["routeCate","syncRoute","routeList","routeDet","routeSave","interfaceEditName","routeDel","routeEdit","routeCateDel","VueTreeList","Tree","TreeNode","debugging","mapState","name","components","data","value","isEdit","nameModal","debuggingModal","formValidate","grid","xl","lg","md","sm","xs","ruleValidate","title","message","trigger","max","loading","intTypeList","label","typeList","requestTypeList","contextData","treeData","undefined","buttonProps","type","size","methodColor","apiType","paramsId","winLoading","watch","_defineProperty","deep","handler","newVal","oldVal","method","toUpperCase","getInterfaceList","response_example","map","e","JSON","stringify","parse","computed","_objectSpread","labelWidth","isMobile","labelPosition","created","methods","_this","$msgbox","showCancelButton","cancelButtonText","confirmButtonText","iconClass","confirmButtonClass","then","res","$message","success","msg","catch","onClicksss","methodsColor","insertBefore","params","insertAfter","moveInto","addTableData","_asyncToGenerator","_regenerator","m","_callee","_yield$$table$insertA","w","_context","n","$table","insertAt","newRow","v","row","setActiveCell","a","disk_type","_this2","length","expand","i","$nextTick","children","document","querySelectorAll","click","onClick","err","error","console","log","id","getRoteData","_this3","handleSubmit","_this4","_callee2","_context2","warning","path","$refs","bodyTable","getTableData","tableData","request","resTable","response","codeTable","error_code","headTable","header","xTable","query","insertEvent","_this5","_callee3","_yield$$table$insertA2","_context3","attribute","must","trip","code","solution","insertRow","currRow","_this6","_callee4","record","_yield$$table$insertA3","_context4","Date","now","parentId","setTreeExpand","setActiveRow","removeRow","_this7","_callee5","_context5","remove","add","clickMenu","_this8","cate_id","$modalForm","onDel","addFac","asyncOK","_this9","handleContextMenu","event","position","left","Number","slice","handleContextCreateFolder","handleContextCreateFile","renderContent","h","_ref","_this0","root","node","that","style","display","width","resolveComponent","marginRight","float","icon","append","clickDir","navItem","pathname","push","$set","parentKey","find","el","parent","nodeKey","index","indexOf","splice","onMouseOver","d","_this1","onChangeName","_this10","eventType","newName","onAddNode","addNode","isLeaf","addChildren","getNewTree","vm","_dfs","oldNode","newNode","k","len","newTree"],"sources":["src/pages/system/backendRouting/index.vue"],"sourcesContent":["<template>\r\n <div>\r\n <div class=\"tabs\">\r\n <el-tabs v-model=\"apiType\">\r\n <el-tab-pane label=\"管理端接口\" name=\"adminapi\"></el-tab-pane>\r\n <el-tab-pane label=\"用户端接口\" name=\"api\"></el-tab-pane>\r\n <el-tab-pane label=\"客服端接口\" name=\"kefuapi\"></el-tab-pane>\r\n <el-tab-pane label=\"对外接口\" name=\"outapi\"></el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n <div class=\"main\" v-loading=\"winLoading\">\r\n <div class=\"ivu-mt card-tree b-r-1\">\r\n <div class=\"tree\">\r\n <div class=\"main-btn\">\r\n <el-button class=\"mb5\" style=\"flex: 1\" type=\"primary\" v-db-click @click=\"clickMenu(4)\" long\r\n >新增分类</el-button\r\n >\r\n <el-button class=\"mb5 mr10\" type=\"success\" v-db-click @click=\"syncRoute()\">同步</el-button>\r\n </div>\r\n\r\n <vue-tree-list\r\n class=\"tree-list\"\r\n ref=\"treeList\"\r\n @change-name=\"onChangeName\"\r\n @delete-node=\"onDel\"\r\n :model=\"treeData\"\r\n default-tree-node-name=\"默认文件夹\"\r\n default-leaf-node-name=\"默认接口名\"\r\n v-bind:default-expanded=\"false\"\r\n :expand-only-one=\"true\"\r\n >\r\n <template v-slot:leafNameDisplay=\"slotProps\">\r\n <div></div>\r\n <div\r\n class=\"tree-node\"\r\n :class=\"{\r\n node: slotProps.model.method,\r\n open: formValidate.path == slotProps.model.path && formValidate.method == slotProps.model.method,\r\n }\"\r\n v-db-click\r\n @click.stop=\"onClick(slotProps.model)\"\r\n >\r\n <span\r\n class=\"\"\r\n :class=\"{\r\n open: formValidate.path == slotProps.model.path && formValidate.method == slotProps.model.method,\r\n }\"\r\n >{{ slotProps.model.name }}</span\r\n >\r\n <el-dropdown\r\n size=\"small\"\r\n transfer\r\n @command=\"\r\n (name) => {\r\n clickMenu(name, slotProps.model);\r\n }\r\n \"\r\n >\r\n <span class=\"el-dropdown-link\">\r\n <i class=\"el-icon-more\"></i>\r\n </span>\r\n <template slot=\"dropdown\">\r\n <el-dropdown-menu>\r\n <el-dropdown-item command=\"1\" v-if=\"!slotProps.model.method\">新增接口</el-dropdown-item>\r\n <el-dropdown-item command=\"2\" v-if=\"!slotProps.model.method\">编辑分类名</el-dropdown-item>\r\n <el-dropdown-item command=\"3\">删除</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </template>\r\n <!-- 新建文件夹 -->\r\n\r\n <span class=\"icon\" slot=\"addTreeNodeIcon\"></span>\r\n <span class=\"icon\" slot=\"addLeafNodeIcon\"></span>\r\n <span class=\"icon\" slot=\"editNodeIcon\"></span>\r\n <span class=\"icon\" slot=\"delNodeIcon\"></span>\r\n <template v-slot:treeNodeIcon=\"slotProps\">\r\n <span\r\n v-if=\"slotProps.model.method\"\r\n class=\"req-method\"\r\n :style=\"{\r\n color: methodsColor(slotProps.model.method),\r\n 'font-weight': slotProps.model.pid == formValidate.pid ? '500' : '500',\r\n }\"\r\n >{{ slotProps.model.method }}</span\r\n >\r\n\r\n <!-- <span v-if=\"slotProps.model.method\"></span> -->\r\n </template>\r\n </vue-tree-list>\r\n </div>\r\n </div>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt right-card\">\r\n <div class=\"data\">\r\n <div class=\"eidt-sub\">\r\n <div class=\"name\">\r\n {{ formValidate.name }}\r\n </div>\r\n <div>\r\n <el-button class=\"submission\" v-db-click @click=\"debugging()\">调试</el-button>\r\n <el-button\r\n v-if=\"formValidate.id\"\r\n type=\"primary\"\r\n class=\"submission\"\r\n v-db-click\r\n @click=\"isEdit = !isEdit\"\r\n >{{ isEdit ? '取消' : '编辑' }}</el-button\r\n >\r\n <el-button\r\n v-if=\"isEdit\"\r\n type=\"primary\"\r\n class=\"submission\"\r\n v-db-click\r\n @click=\"handleSubmit('formValidate')\"\r\n >保存</el-button\r\n >\r\n </div>\r\n </div>\r\n <el-form\r\n class=\"formValidate mt20\"\r\n ref=\"formValidate\"\r\n :rules=\"ruleValidate\"\r\n :model=\"formValidate\"\r\n label-width=\"120px\"\r\n :label-position=\"labelPosition\"\r\n @submit.native.prevent\r\n >\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"24\">\r\n <div class=\"title\">接口信息</div>\r\n <el-form-item label=\"接口名称:\" prop=\"name\">\r\n <el-input\r\n v-if=\"isEdit\"\r\n class=\"perW20\"\r\n type=\"text\"\r\n :rows=\"4\"\r\n v-model.trim=\"formValidate.name\"\r\n placeholder=\"请输入\"\r\n />\r\n <span v-else>{{ formValidate.name || '' }}</span>\r\n </el-form-item>\r\n <el-form-item label=\"请求类型:\" prop=\"name\">\r\n <el-select v-if=\"isEdit\" v-model=\"formValidate.method\" style=\"width: 120px\">\r\n <el-option\r\n v-for=\"(item, index) in requestTypeList\"\r\n :key=\"index\"\r\n :value=\"item.value\"\r\n :label=\"item.label\"\r\n ></el-option>\r\n </el-select>\r\n <span v-else class=\"req-method\" :style=\"'background-color:' + methodColor\">{{\r\n formValidate.method || ''\r\n }}</span>\r\n </el-form-item>\r\n <el-form-item label=\"功能描述:\" prop=\"name\">\r\n <el-input\r\n v-if=\"isEdit\"\r\n class=\"perW20\"\r\n type=\"textarea\"\r\n :rows=\"4\"\r\n v-model.trim=\"formValidate.describe\"\r\n placeholder=\"请输入\"\r\n />\r\n <span v-else class=\"text-area\">{{ formValidate.describe || '--' }}</span>\r\n </el-form-item>\r\n <el-form-item label=\"所属分类:\" prop=\"name\" v-if=\"isEdit\">\r\n <el-cascader\r\n v-model=\"formValidate.cate_id\"\r\n size=\"small\"\r\n :options=\"formValidate.cate_tree\"\r\n :props=\"{ checkStrictly: true, multiple: false, emitPath: false, value: 'id', label: 'name' }\"\r\n clearable\r\n ></el-cascader>\r\n </el-form-item>\r\n <el-form-item label=\"是否公共:\" prop=\"name\">\r\n <el-switch v-if=\"isEdit\" v-model=\"formValidate.type\" :active-value=\"1\" :inactive-value=\"0\">\r\n </el-switch>\r\n <span v-else class=\"text-area\">{{ formValidate.type ? '是' : '否' }}</span>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"24\">\r\n <div class=\"title\">调用方式</div>\r\n <el-form-item label=\"路由地址:\" prop=\"path\">\r\n <span>{{ formValidate.path || '' }}</span>\r\n </el-form-item>\r\n <el-form-item label=\"文件地址:\" prop=\"path\">\r\n <span>{{ formValidate.file_path || '' }}</span>\r\n </el-form-item>\r\n <el-form-item label=\"方法名:\" prop=\"path\">\r\n <span>{{ formValidate.action || '' }}</span>\r\n </el-form-item>\r\n <el-form-item label=\"header参数:\">\r\n <vxe-table\r\n resizable\r\n show-overflow\r\n keep-source\r\n ref=\"headTable\"\r\n row-id=\"id\"\r\n :print-config=\"{}\"\r\n :export-config=\"{}\"\r\n :loading=\"loading\"\r\n :tree-config=\"{ transform: true, rowField: 'id', parentField: 'parentId' }\"\r\n :data=\"formValidate.header\"\r\n >\r\n <!-- <vxe-column type=\"checkbox\" width=\"60\"></vxe-column> -->\r\n <vxe-column field=\"attribute\" width=\"300\" title=\"属性\" tree-node :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.attribute\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.attribute || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"type\" title=\"类型\" width=\"200\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <!-- <vxe-select v-if=\"isEdit\" v-model=\"row.type\" type=\"text\" :optionGroups=\"typeList\"></vxe-select> -->\r\n <vxe-select v-if=\"isEdit\" v-model=\"row.type\" transfer>\r\n <vxe-option\r\n v-for=\"item in typeList\"\r\n :key=\"item.value\"\r\n :value=\"item.value\"\r\n :label=\"item.label\"\r\n ></vxe-option>\r\n </vxe-select>\r\n <span v-else>{{ row.type || '' }}</span>\r\n\r\n <!-- <vxe-select v-model=\"row.type\">\r\n\t\t\t\t\t\t\t\t\t <vxe-option v-for=\"num in 12\" :key=\"num\" :value=\"num\" :label=\"num\"></vxe-option>\r\n\t\t\t\t\t\t\t\t\t </vxe-select> -->\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"must\" title=\"必填\" width=\"100\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-checkbox\r\n v-if=\"isEdit\"\r\n v-model=\"row.must\"\r\n :unchecked-value=\"'0'\"\r\n :checked-value=\"'1'\"\r\n ></vxe-checkbox>\r\n <span v-else>{{ row.must == '1' ? '是' : '否' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"trip\" title=\"说明\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.trip\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.trip || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column title=\"操作\" width=\"200\" v-if=\"isEdit\">\r\n <template #default=\"{ row }\">\r\n <vxe-button\r\n type=\"text\"\r\n v-if=\"row.type === 'array' || row.type === 'object'\"\r\n status=\"primary\"\r\n v-db-click\r\n @click=\"insertRow(row, 'headTable')\"\r\n >插入</vxe-button\r\n >\r\n <vxe-button type=\"text\" status=\"primary\" v-db-click @click=\"removeRow(row, 'headTable')\"\r\n >删除</vxe-button\r\n >\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n\r\n <el-button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" v-db-click @click=\"insertEvent('headTable')\"\r\n >添加参数</el-button\r\n >\r\n </el-form-item>\r\n <el-form-item label=\"query参数:\">\r\n <vxe-table\r\n resizable\r\n show-overflow\r\n keep-source\r\n ref=\"xTable\"\r\n row-id=\"id\"\r\n :print-config=\"{}\"\r\n :export-config=\"{}\"\r\n :loading=\"loading\"\r\n :tree-config=\"{ transform: true, rowField: 'id', parentField: 'parentId' }\"\r\n :data=\"formValidate.query\"\r\n >\r\n <vxe-column field=\"attribute\" width=\"300\" title=\"属性\" tree-node :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.attribute\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.attribute || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"type\" title=\"类型\" width=\"200\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-select v-if=\"isEdit\" v-model=\"row.type\" transfer>\r\n <vxe-option\r\n v-for=\"item in typeList\"\r\n :key=\"item.value\"\r\n :value=\"item.value\"\r\n :label=\"item.label\"\r\n ></vxe-option>\r\n </vxe-select>\r\n <span v-else>{{ row.type || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"must\" title=\"必填\" width=\"100\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-checkbox\r\n v-if=\"isEdit\"\r\n v-model=\"row.must\"\r\n :unchecked-value=\"'0'\"\r\n :checked-value=\"'1'\"\r\n ></vxe-checkbox>\r\n <span v-else>{{ row.must == '1' ? '是' : '否' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"trip\" title=\"说明\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.trip\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.trip || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column title=\"操作\" width=\"200\" v-if=\"isEdit\">\r\n <template #default=\"{ row }\">\r\n <vxe-button\r\n type=\"text\"\r\n v-if=\"row.type === 'array' || row.type === 'object'\"\r\n status=\"primary\"\r\n v-db-click\r\n @click=\"insertRow(row, 'xTable')\"\r\n >插入</vxe-button\r\n >\r\n <vxe-button type=\"text\" status=\"primary\" v-db-click @click=\"removeRow(row, 'xTable')\"\r\n >删除</vxe-button\r\n >\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n <el-button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" v-db-click @click=\"insertEvent('xTable')\"\r\n >添加参数</el-button\r\n >\r\n </el-form-item>\r\n <el-form-item label=\"body参数:\">\r\n <vxe-table\r\n resizable\r\n show-overflow\r\n keep-source\r\n ref=\"bodyTable\"\r\n row-id=\"id\"\r\n :print-config=\"{}\"\r\n :export-config=\"{}\"\r\n :loading=\"loading\"\r\n :tree-config=\"{ transform: true, rowField: 'id', parentField: 'parentId' }\"\r\n :data=\"formValidate.request\"\r\n >\r\n <!-- <vxe-column type=\"checkbox\" width=\"60\"></vxe-column> -->\r\n <vxe-column field=\"attribute\" width=\"300\" title=\"属性\" tree-node :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.attribute\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.attribute || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"type\" title=\"类型\" width=\"200\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <!-- <vxe-select v-if=\"isEdit\" v-model=\"row.type\" type=\"text\" :optionGroups=\"typeList\"></vxe-select> -->\r\n <vxe-select v-if=\"isEdit\" v-model=\"row.type\" transfer>\r\n <vxe-option\r\n v-for=\"item in typeList\"\r\n :key=\"item.value\"\r\n :value=\"item.value\"\r\n :label=\"item.label\"\r\n ></vxe-option>\r\n </vxe-select>\r\n <span v-else>{{ row.type || '' }}</span>\r\n\r\n <!-- <vxe-select v-model=\"row.type\">\r\n <vxe-option v-for=\"num in 12\" :key=\"num\" :value=\"num\" :label=\"num\"></vxe-option>\r\n </vxe-select> -->\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"must\" title=\"必填\" width=\"100\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-checkbox\r\n v-if=\"isEdit\"\r\n v-model=\"row.must\"\r\n :unchecked-value=\"'0'\"\r\n :checked-value=\"'1'\"\r\n ></vxe-checkbox>\r\n <span v-else>{{ row.must == '1' ? '是' : '否' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"trip\" title=\"说明\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.trip\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.trip || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column title=\"操作\" width=\"200\" v-if=\"isEdit\">\r\n <template #default=\"{ row }\">\r\n <vxe-button\r\n type=\"text\"\r\n v-if=\"row.type === 'array' || row.type === 'object'\"\r\n status=\"primary\"\r\n v-db-click\r\n @click=\"insertRow(row, 'bodyTable')\"\r\n >插入</vxe-button\r\n >\r\n <vxe-button type=\"text\" status=\"primary\" v-db-click @click=\"removeRow(row, 'bodyTable')\"\r\n >删除</vxe-button\r\n >\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n\r\n <el-button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" v-db-click @click=\"insertEvent('bodyTable')\"\r\n >添加参数</el-button\r\n >\r\n </el-form-item>\r\n <el-form-item label=\"返回参数:\">\r\n <vxe-table\r\n resizable\r\n show-overflow\r\n keep-source\r\n ref=\"resTable\"\r\n row-id=\"id\"\r\n :print-config=\"{}\"\r\n :export-config=\"{}\"\r\n :loading=\"loading\"\r\n :tree-config=\"{ transform: true, rowField: 'id', parentField: 'parentId' }\"\r\n :data=\"formValidate.response\"\r\n >\r\n <!-- <vxe-column type=\"checkbox\" width=\"60\"></vxe-column> -->\r\n <vxe-column field=\"attribute\" title=\"属性\" width=\"300\" tree-node :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.attribute\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.attribute || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"type\" title=\"类型\" width=\"200\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-select v-if=\"isEdit\" v-model=\"row.type\" transfer>\r\n <vxe-option\r\n v-for=\"item in typeList\"\r\n :key=\"item.value\"\r\n :value=\"item.value\"\r\n :label=\"item.label\"\r\n ></vxe-option>\r\n </vxe-select>\r\n <span v-else>{{ row.type || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <!-- <vxe-column field=\"type\" title=\"必填\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-checkbox v-model=\"row.must\" :unchecked-value=\"0\" :checked-value=\"1\"></vxe-checkbox\r\n >{{ row.must }}\r\n </template>\r\n </vxe-column> -->\r\n <vxe-column field=\"trip\" title=\"说明\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.trip\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.trip || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column title=\"操作\" width=\"200\" v-if=\"isEdit\">\r\n <template #default=\"{ row }\">\r\n <vxe-button\r\n type=\"text\"\r\n v-if=\"row.type === 'array' || row.type === 'object'\"\r\n status=\"primary\"\r\n v-db-click\r\n @click=\"insertRow(row, 'resTable')\"\r\n >插入</vxe-button\r\n >\r\n <vxe-button type=\"text\" status=\"primary\" v-db-click @click=\"removeRow(row, 'resTable')\"\r\n >删除</vxe-button\r\n >\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n <el-button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" v-db-click @click=\"insertEvent('resTable')\"\r\n >添加参数</el-button\r\n >\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"24\">\r\n <div class=\"title\">调用示例</div>\r\n <!-- <el-form-item label=\"请求数据示例:\" prop=\"request_example\">\r\n <el-input\r\n v-if=\"isEdit\"\r\n class=\"perW20\"\r\n type=\"textarea\"\r\n :rows=\"4\"\r\n v-model.trim=\"formValidate.request_example\"\r\n placeholder=\"请输入\"\r\n />\r\n <span v-else class=\"text-area\">{{ formValidate.request_example || '' }}</span>\r\n </el-form-item> -->\r\n <el-form-item v-if=\"formValidate.response_example\" label=\"返回数据示例:\" prop=\"response_example\">\r\n <el-collapse v-for=\"(item, index) in formValidate.response_example\" accordion :key=\"index\">\r\n <el-collapse-item>\r\n <template slot=\"title\">\r\n {{ item.name || '' }}\r\n </template>\r\n <el-input\r\n v-if=\"isEdit\"\r\n class=\"perW20\"\r\n type=\"textarea\"\r\n :rows=\"4\"\r\n v-model.trim=\"item.data\"\r\n placeholder=\"请输入\"\r\n />\r\n <span v-else class=\"text-area\">{{ item.data || '' }}</span>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </el-form-item>\r\n <el-form-item label=\"错误码:\">\r\n <vxe-table\r\n resizable\r\n show-overflow\r\n keep-source\r\n ref=\"codeTable\"\r\n row-id=\"id\"\r\n is-tree-view\r\n :print-config=\"{}\"\r\n :export-config=\"{}\"\r\n :loading=\"loading\"\r\n :tree-config=\"{ rowField: 'id', parentField: 'parentId' }\"\r\n :data=\"formValidate.error_code\"\r\n >\r\n <!-- <vxe-column type=\"checkbox\" width=\"60\"></vxe-column> -->\r\n <vxe-column field=\"code\" title=\"错误码\" tree-node :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.code\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.code || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"value\" title=\"错误码取值\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.value\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.value || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column field=\"solution\" title=\"解决方案\" :edit-render=\"{}\">\r\n <template #default=\"{ row }\">\r\n <vxe-input v-if=\"isEdit\" v-model=\"row.solution\" type=\"text\"></vxe-input>\r\n <span v-else>{{ row.solution || '' }}</span>\r\n </template>\r\n </vxe-column>\r\n <vxe-column title=\"操作\" v-if=\"isEdit\">\r\n <template #default=\"{ row }\">\r\n <vxe-button type=\"text\" status=\"primary\" v-db-click @click=\"removeRow(row, 'codeTable')\"\r\n >删除</vxe-button\r\n >\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n <el-button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" v-db-click @click=\"insertEvent('codeTable')\"\r\n >添加参数</el-button\r\n >\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <!-- <el-row :gutter=\"24\" >\r\n <el-col :span=\"24\">\r\n <el-form-item>\r\n <el-button type=\"primary\" class=\"submission\" v-db-click @click=\"handleSubmit('formValidate')\">保存</el-button>\r\n </el-form-item>\r\n </el-col>\r\n </el-row> -->\r\n </el-form>\r\n </div>\r\n <!-- <div v-else class=\"nothing\">\r\n <div class=\"box\" v-db-click @click=\"clickMenu(4)\">\r\n <div class=\"icon\">\r\n <Icon type=\"ios-folder\" />\r\n </div>\r\n <div class=\"text\">新建文件</div>\r\n </div>\r\n <div class=\"box\" v-db-click @click=\"clickMenu(1)\">\r\n <div class=\"icon\">\r\n <Icon type=\"logo-linkedin\" />\r\n </div>\r\n <div class=\"text\">新建接口</div>\r\n </div>\r\n </div> -->\r\n </el-card>\r\n </div>\r\n <el-dialog :visible.sync=\"nameModal\" width=\"470px\" title=\"分组名称\">\r\n <label>分组名称:</label>\r\n <el-input v-model=\"value\" placeholder=\"请输入分组名称\" style=\"width: 85%\" />\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-db-click @click=\"nameModal = false\">取 消</el-button>\r\n <el-button type=\"primary\" v-db-click @click=\"asyncOK\">确 定</el-button>\r\n </span>\r\n </el-dialog>\r\n <el-drawer\r\n :visible.sync=\"debuggingModal\"\r\n :title=\"formValidate.name\"\r\n size=\"70%\"\r\n :wrapperClosable=\"false\"\r\n :loading=\"loading\"\r\n >\r\n <debugging\r\n v-if=\"debuggingModal\"\r\n :formValidate=\"formValidate\"\r\n :typeList=\"intTypeList\"\r\n :requestTypeList=\"requestTypeList\"\r\n :apiType=\"apiType\"\r\n />\r\n </el-drawer>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {\r\n routeCate,\r\n syncRoute,\r\n routeList,\r\n routeDet,\r\n routeSave,\r\n interfaceEditName,\r\n routeDel,\r\n routeEdit,\r\n routeCateDel,\r\n} from '@/api/systemBackendRouting';\r\nimport { VueTreeList, Tree, TreeNode } from 'vue-tree-list';\r\nimport debugging from './debugging.vue';\r\n\r\nimport { mapState } from 'vuex';\r\nexport default {\r\n name: 'systemOutInterface',\r\n components: {\r\n VueTreeList,\r\n debugging,\r\n },\r\n data() {\r\n return {\r\n value: '',\r\n isEdit: false,\r\n nameModal: false,\r\n debuggingModal: false,\r\n formValidate: {},\r\n grid: {\r\n xl: 7,\r\n lg: 7,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n ruleValidate: {\r\n title: [{ message: '请输入正确的描述 (不能多于200位数)', trigger: 'blur', max: 200 }],\r\n },\r\n loading: false,\r\n intTypeList: [\r\n {\r\n value: 'string',\r\n label: 'String',\r\n },\r\n // {\r\n // value: 'array',\r\n // label: 'Array',\r\n // },\r\n // {\r\n // value: 'object',\r\n // label: 'Object',\r\n // },\r\n {\r\n value: 'number',\r\n label: 'Number',\r\n },\r\n {\r\n value: 'boolean',\r\n label: 'Boolean',\r\n },\r\n {\r\n value: 'null',\r\n label: 'Null',\r\n },\r\n {\r\n value: 'any',\r\n label: 'Any',\r\n },\r\n ],\r\n typeList: [\r\n {\r\n value: 'string',\r\n label: 'String',\r\n },\r\n {\r\n value: 'array',\r\n label: 'Array',\r\n },\r\n {\r\n value: 'object',\r\n label: 'Object',\r\n },\r\n {\r\n value: 'number',\r\n label: 'Number',\r\n },\r\n {\r\n value: 'boolean',\r\n label: 'Boolean',\r\n },\r\n {\r\n value: 'null',\r\n label: 'Null',\r\n },\r\n {\r\n value: 'any',\r\n label: 'Any',\r\n },\r\n ],\r\n requestTypeList: [\r\n {\r\n value: 'GET',\r\n label: 'GET',\r\n },\r\n {\r\n value: 'POST',\r\n label: 'POST',\r\n },\r\n {\r\n value: 'DELETE',\r\n label: 'DELETE',\r\n },\r\n {\r\n value: 'PUT',\r\n label: 'PUT',\r\n },\r\n ],\r\n contextData: null, //左侧导航右键点击是产生的数据对象\r\n treeData: undefined,\r\n buttonProps: {\r\n type: 'default',\r\n size: 'small',\r\n },\r\n methodColor: '#fff',\r\n apiType: 'adminapi',\r\n paramsId: 0,\r\n winLoading: false,\r\n };\r\n },\r\n watch: {\r\n ['formValidate.method']: {\r\n deep: true,\r\n handler(newVal, oldVal) {\r\n if (newVal) {\r\n let method = newVal.toUpperCase();\r\n if (method == 'GET') {\r\n this.methodColor = '#61affe';\r\n } else if (method == 'POST') {\r\n this.methodColor = '#49cc90';\r\n } else if (method == 'PUT') {\r\n this.methodColor = '#fca130';\r\n } else if (method == 'DEL' || method == 'DELETE') {\r\n this.methodColor = '#f93e3e';\r\n }\r\n }\r\n },\r\n },\r\n apiType(newVal) {\r\n if (newVal) {\r\n this.winLoading = true;\r\n this.getInterfaceList('one');\r\n }\r\n },\r\n isEdit(newVal) {\r\n if (newVal) {\r\n this.formValidate.response_example.map((e) => {\r\n e.data = JSON.stringify(e.data);\r\n });\r\n } else {\r\n this.formValidate.response_example.map((e) => {\r\n e.data = JSON.parse(e.data);\r\n });\r\n }\r\n },\r\n },\r\n computed: {\r\n ...mapState('media', ['isMobile']),\r\n labelWidth() {\r\n return this.isMobile ? undefined : '50px';\r\n },\r\n labelPosition() {\r\n return this.isMobile ? 'top' : 'right';\r\n },\r\n },\r\n created() {\r\n this.getInterfaceList('one');\r\n },\r\n methods: {\r\n syncRoute() {\r\n this.$msgbox({\r\n title: '立即同步',\r\n message: '同步之后,路由文件中新增的接口添加到接口列表中,路由文件中删除的路由会同步的在接口列表中删除',\r\n showCancelButton: true,\r\n cancelButtonText: '取消',\r\n confirmButtonText: '确定',\r\n iconClass: 'el-icon-warning',\r\n confirmButtonClass: 'btn-custom-cancel',\r\n })\r\n .then(() => {\r\n syncRoute(this.apiType).then((res) => {\r\n this.getInterfaceList('one');\r\n this.$message.success(res.msg);\r\n });\r\n })\r\n .catch(() => {});\r\n },\r\n debugging() {\r\n this.debuggingModal = true;\r\n },\r\n onClicksss(e) {},\r\n methodsColor(newVal) {\r\n let method = newVal.toUpperCase();\r\n if (method == 'GET') {\r\n return '#61affe';\r\n } else if (method == 'POST') {\r\n return '#49cc90';\r\n } else if (method == 'PUT') {\r\n return '#fca130';\r\n } else if (method == 'DEL' || method == 'DELETE') {\r\n return '#f93e3e';\r\n }\r\n },\r\n insertBefore(params) {},\r\n insertAfter(params) {},\r\n moveInto(params) {},\r\n async addTableData() {\r\n const { row: data } = await $table.insertAt(newRow, -1);\r\n await $table.setActiveCell(data, 'name');\r\n },\r\n getInterfaceList(disk_type) {\r\n try {\r\n routeList(this.apiType)\r\n .then((res) => {\r\n if (res.data.length) {\r\n res.data[0].expand = false;\r\n this.treeData = new Tree(res.data);\r\n let i;\r\n this.$nextTick((e) => {\r\n if (disk_type) {\r\n if (\r\n res.data[0].children &&\r\n res.data[0].children[0].children &&\r\n res.data[0].children[0].children.length\r\n ) {\r\n document.querySelectorAll('.vtl-icon-caret-right')[0].click();\r\n document.querySelectorAll('.vtl-icon-caret-right')[1].click();\r\n i = res.data[0].children[0].children[0];\r\n } else {\r\n document.querySelectorAll('.vtl-icon-caret-right')[0].click();\r\n i = res.data[0].children[0];\r\n }\r\n this.onClick(i);\r\n }\r\n });\r\n } else {\r\n // this.$refs.treeList.clear();\r\n this.treeData = new Tree({});\r\n this.formValidate = {};\r\n }\r\n this.winLoading = false;\r\n })\r\n .catch((err) => {\r\n this.winLoading = false;\r\n this.$message.error(err.msg);\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n onClick(params) {\r\n try {\r\n if (params.method) {\r\n this.isEdit = false;\r\n this.paramsId = params.id;\r\n this.getRoteData(params.id);\r\n }\r\n } catch (error) {}\r\n },\r\n getRoteData(id) {\r\n routeDet(id)\r\n .then((res) => {\r\n this.formValidate = res.data;\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n async handleSubmit() {\r\n if (!this.formValidate.name) {\r\n return this.$message.warning('请输入接口名称');\r\n } else if (!this.formValidate.method) {\r\n return this.$message.warning('请选择请求类型');\r\n } else if (!this.formValidate.path) {\r\n return this.$message.warning('请输入路由地址');\r\n }\r\n this.formValidate.request = await this.$refs.bodyTable.getTableData().tableData;\r\n this.formValidate.response = await this.$refs.resTable.getTableData().tableData;\r\n this.formValidate.error_code = await this.$refs.codeTable.getTableData().tableData;\r\n this.formValidate.header = await this.$refs.headTable.getTableData().tableData;\r\n this.formValidate.query = await this.$refs.xTable.getTableData().tableData;\r\n this.formValidate.apiType = this.apiType;\r\n this.formValidate.response_example.map((e) => {\r\n e.data = JSON.parse(e.data);\r\n });\r\n await routeSave(this.formValidate)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.getRoteData(this.paramsId);\r\n this.isEdit = false;\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n async insertEvent(type) {\r\n const $table = this.$refs[type];\r\n let newRow;\r\n if (type == 'xTable') {\r\n newRow = {\r\n attribute: '',\r\n type: '',\r\n must: 0,\r\n trip: '',\r\n };\r\n } else if (type == 'resTable') {\r\n newRow = {\r\n attribute: '',\r\n type: '',\r\n trip: '',\r\n };\r\n } else {\r\n newRow = {\r\n code: '',\r\n value: '',\r\n solution: '',\r\n };\r\n }\r\n // $table.insert(newRow).then(({ row }) => $table.setEditRow(row, -1));\r\n const { row: data } = await $table.insertAt(newRow, -1);\r\n await $table.setActiveCell(data, 'name');\r\n },\r\n async insertRow(currRow, type) {\r\n const $table = this.$refs[type];\r\n // 如果 null 则插入到目标节点顶部\r\n // 如果 -1 则插入到目标节点底部\r\n // 如果 row 则有插入到效的目标节点该行的位置\r\n let record;\r\n if (type == 'xTable') {\r\n record = {\r\n attribute: '',\r\n type: '',\r\n must: 0,\r\n trip: '',\r\n id: Date.now(),\r\n parentId: currRow.id, // 需要指定父节点,自动插入该节点中\r\n };\r\n } else if (type == 'resTable') {\r\n record = {\r\n attribute: '',\r\n type: '',\r\n trip: '',\r\n id: Date.now(),\r\n parentId: currRow.id, // 需要指定父节点,自动插入该节点中\r\n };\r\n } else {\r\n record = {\r\n code: '',\r\n value: '',\r\n solution: '',\r\n id: Date.now(),\r\n parentId: currRow.id, // 需要指定父节点,自动插入该节点中\r\n };\r\n }\r\n const { row: newRow } = await $table.insertAt(record, -1);\r\n await $table.setTreeExpand(currRow, true); // 将父节点展开\r\n await $table.setActiveRow(newRow); // 插入子节点\r\n },\r\n async removeRow(row, type) {\r\n const $table = this.$refs[type];\r\n await $table.remove(row);\r\n },\r\n // 修改名字\r\n add() {\r\n this.value = '';\r\n this.formValidate.id = 0;\r\n this.nameModal = true;\r\n },\r\n // 点击菜单\r\n clickMenu(name, params) {\r\n if (name == 1) {\r\n this.formValidate = {};\r\n this.formValidate.cate_id = params ? params.id : 0;\r\n this.formValidate.id = 0;\r\n this.isEdit = true;\r\n } else if (name == 2) {\r\n // this.value = params.name || '';\r\n // this.formValidate.cate_id = params ? params.id : 0;\r\n // this.nameModal = true;\r\n // this.onEdit(params);\r\n this.$modalForm(routeEdit(params.id, this.apiType)).then(() => this.getInterfaceList());\r\n } else if (name == 3) {\r\n this.onDel(params);\r\n } else if (name == 4) {\r\n // this.add();\r\n this.$modalForm(routeCate(this.apiType)).then(() => this.getInterfaceList());\r\n }\r\n },\r\n\r\n addFac(params) {\r\n this.formValidate = {\r\n id: params ? params.id : 0,\r\n };\r\n this.isEdit = true;\r\n },\r\n asyncOK() {\r\n let data = {\r\n id: this.formValidate.id || 0,\r\n type: 0,\r\n name: this.value,\r\n };\r\n routeSave(data)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.getInterfaceList();\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n //侧边栏右键点击事件\r\n handleContextMenu(data, event, position) {\r\n position.left = Number(position.left.slice(0, -2)) + 75 + 'px';\r\n this.contextData = data;\r\n },\r\n handleContextCreateFolder() {},\r\n handleContextCreateFile() {},\r\n // 自定义显示\r\n renderContent(h, { root, node, data }) {\r\n let that = this;\r\n return h(\r\n 'span',\r\n {\r\n style: {\r\n display: 'inline-block',\r\n width: '100%',\r\n },\r\n },\r\n [\r\n h('span', [\r\n h(resolveComponent('Icon'), {\r\n type: 'ios-paper-outline',\r\n style: {\r\n marginRight: '8px',\r\n },\r\n }),\r\n h('span', data.title),\r\n ]),\r\n h(\r\n 'span',\r\n {\r\n style: {\r\n display: 'inline-block',\r\n float: 'right',\r\n marginRight: '32px',\r\n },\r\n },\r\n [\r\n h(resolveComponent('Button'), {\r\n ...this.buttonProps,\r\n icon: 'ios-add',\r\n style: {\r\n marginRight: '8px',\r\n },\r\n onClick: () => {\r\n this.append(data);\r\n },\r\n }),\r\n h(resolveComponent('Button'), {\r\n ...this.buttonProps,\r\n icon: 'ios-remove',\r\n onClick: () => {\r\n this.remove(root, node, data);\r\n },\r\n }),\r\n ],\r\n ),\r\n ],\r\n );\r\n },\r\n /**\r\n * 侧边栏点击事件\r\n * @param {Object} data\r\n */\r\n clickDir(data, root, node) {\r\n let that = this;\r\n that.navItem = data;\r\n that.pathname = data.pathname;\r\n },\r\n append(data) {\r\n const children = data.children || [];\r\n children.push({\r\n title: 'appended node',\r\n expand: true,\r\n });\r\n this.$set(data, 'children', children);\r\n },\r\n remove(root, node, data) {\r\n const parentKey = root.find((el) => el === node).parent;\r\n const parent = root.find((el) => el.nodeKey === parentKey).node;\r\n const index = parent.children.indexOf(data);\r\n parent.children.splice(index, 1);\r\n },\r\n onMouseOver(root, node, data, e, d) {\r\n console.log(root, node, data);\r\n },\r\n //\r\n onDel(node) {\r\n let method = node.cate_id ? routeDel : routeCateDel;\r\n this.$msgbox({\r\n title: '提示',\r\n message: '删除后无法恢复,请确认后删除!',\r\n showCancelButton: true,\r\n cancelButtonText: '取消',\r\n confirmButtonText: '确定',\r\n iconClass: 'el-icon-warning',\r\n confirmButtonClass: 'btn-custom-cancel',\r\n })\r\n .then(() => {\r\n method(node.id)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n node.remove();\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n })\r\n .catch(() => {});\r\n },\r\n\r\n onChangeName(params) {\r\n if (params.eventType == 'blur') {\r\n let data = {\r\n name: params.newName,\r\n id: params.id,\r\n };\r\n interfaceEditName(data)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n }\r\n },\r\n\r\n onAddNode(params) {\r\n // this.$router.push({\r\n // path: '/admin/setting/system_out_interface/add',\r\n // query: {\r\n // pid: params.pid,\r\n // },\r\n // });\r\n },\r\n\r\n addNode() {\r\n var node = new TreeNode({ name: 'new node', isLeaf: false });\r\n if (!this.data.children) this.data.children = [];\r\n this.data.addChildren(node);\r\n },\r\n\r\n getNewTree() {\r\n var vm = this;\r\n function _dfs(oldNode) {\r\n var newNode = {};\r\n\r\n for (var k in oldNode) {\r\n if (k !== 'children' && k !== 'parent') {\r\n newNode[k] = oldNode[k];\r\n }\r\n }\r\n\r\n if (oldNode.children && oldNode.children.length > 0) {\r\n newNode.children = [];\r\n for (var i = 0, len = oldNode.children.length; i < len; i++) {\r\n newNode.children.push(_dfs(oldNode.children[i]));\r\n }\r\n }\r\n return newNode;\r\n }\r\n\r\n vm.newTree = _dfs(vm.data);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.reset {\r\n margin-left: 10px;\r\n}\r\n.b-r-1 {\r\n border-right: 1px solid #f2f2f2;\r\n}\r\n.card-tree {\r\n background: #fff;\r\n height: 72px;\r\n box-sizing: border-box;\r\n overflow-x: scroll; /* 设置溢出滚动 */\r\n white-space: nowrap;\r\n overflow-y: hidden;\r\n /* 隐藏滚动条 */\r\n border-radius: 4px;\r\n scrollbar-width: none; /* firefox */\r\n -ms-overflow-style: none; /* IE 10+ */\r\n}\r\n.card-tree::-webkit-scrollbar {\r\n display: none; /* Chrome Safari */\r\n}\r\n::v-deep .el-tabs__item {\r\n height: 54px !important;\r\n line-height: 54px !important;\r\n}\r\n.tabs {\r\n background: #fff;\r\n padding-left: 20px;\r\n border-radius: 5px 5px 0 0;\r\n}\r\n.main {\r\n width: 100%;\r\n display: flex;\r\n padding-bottom: 16px;\r\n background: #fff;\r\n border-radius: 6px;\r\n .main-btn {\r\n display: flex;\r\n position: sticky;\r\n padding: 0px 5px 0 15px;\r\n width: 100%;\r\n background: #fff;\r\n top: 0px;\r\n background-color: rgba(255, 255, 255, 0.6);\r\n backdrop-filter: blur(4px);\r\n z-index: 99;\r\n }\r\n .card-tree {\r\n width: 290px;\r\n height: calc(100vh - 205px);\r\n overflow-y: scroll;\r\n }\r\n ::v-deep .tree {\r\n .tree-list {\r\n margin-left: 10px;\r\n padding: 0 15px;\r\n margin-top: 10px;\r\n }\r\n .vtl-caret {\r\n padding-right: 2px;\r\n }\r\n .req-method {\r\n display: block;\r\n padding: 0px 2px;\r\n font-size: 13px;\r\n line-height: 13px;\r\n margin-right: 5px;\r\n border-radius: 4px;\r\n\r\n text-transform: uppercase;\r\n }\r\n .tree-node {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n cursor: pointer;\r\n\r\n padding: 3px 7px 3px 0;\r\n }\r\n .node {\r\n }\r\n .open {\r\n font-weight: 500;\r\n color: #333;\r\n }\r\n }\r\n ::v-deep .vtl-node-main .vtl-operation {\r\n position: absolute;\r\n right: 20px;\r\n }\r\n ::v-deep .vtl-node-content {\r\n width: 100%;\r\n }\r\n .pop-menu {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n ::v-deep .vtl-node-content .add {\r\n display: none;\r\n margin-right: 10px;\r\n }\r\n ::v-deep .vtl-node-content:hover .add {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n border-radius: 50%;\r\n width: 18px;\r\n height: 18px;\r\n }\r\n ::v-deep .vtl-node-content:hover .add:hover {\r\n background-color: #fff;\r\n .pop-menu {\r\n font-size: 16px;\r\n }\r\n }\r\n ::v-deep .vtl-node-main {\r\n padding: 3px 0;\r\n }\r\n ::v-deep .line1 {\r\n display: table-caption;\r\n white-space: nowrap;\r\n width: 120px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n ::v-deep .ivu-form-item {\r\n margin-bottom: 10px;\r\n }\r\n .right-card {\r\n flex: 1;\r\n ::v-deep .el-card__body {\r\n max-height: calc(100vh - 205px);\r\n overflow-y: scroll;\r\n padding-bottom: 16px;\r\n }\r\n ::v-deep .el-form-item--small.el-form-item {\r\n margin-bottom: 6px;\r\n }\r\n }\r\n .data {\r\n flex: 1;\r\n .req-method {\r\n text-transform: uppercase;\r\n border-radius: 4px;\r\n color: #fff;\r\n padding: 3px 7px;\r\n }\r\n .eidt-sub {\r\n display: flex;\r\n justify-content: space-between;\r\n .name {\r\n font-size: 20px;\r\n font-weight: 500;\r\n }\r\n }\r\n .title {\r\n font-size: 16px;\r\n font-weight: 500;\r\n margin-bottom: 15px;\r\n }\r\n .perW20 {\r\n width: 500px;\r\n }\r\n .text-area {\r\n white-space: pre-wrap;\r\n word-break: break-word;\r\n }\r\n }\r\n ::v-deep .ivu-tree-title {\r\n width: 100% !important;\r\n }\r\n ::v-deep .vtl-tree-margin {\r\n margin-left: 15px;\r\n }\r\n ::v-deep .ivu-btn-icon-only.ivu-btn-small {\r\n width: 28px;\r\n }\r\n ::v-deep .tree-node > span {\r\n font-size: 14px;\r\n }\r\n ::v-deep .tree-node.node > span {\r\n font-size: 13px;\r\n }\r\n .nothing {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 800px;\r\n .box:hover {\r\n border: 1px solid pink;\r\n }\r\n .box {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n width: 150px;\r\n height: 200px;\r\n margin: 0 20px;\r\n border-radius: 10px;\r\n cursor: pointer;\r\n overflow: hidden;\r\n border: 1px solid #fff;\r\n .icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n height: 150px;\r\n font-size: 40px;\r\n color: #2d8cf0;\r\n background: #f1f1f1;\r\n }\r\n .text {\r\n width: 100%;\r\n height: 50px;\r\n background: #ddd;\r\n text-align: center;\r\n line-height: 50px;\r\n font-size: 14px;\r\n font-weight: 500;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n"],"mappings":";;;;;;;;;;;;;;;;;AAqmBA,SACAA,SAAA,EACAC,SAAA,IAAAA,UAAA,EACAC,SAAA,EACAC,QAAA,EACAC,SAAA,EACAC,iBAAA,EACAC,QAAA,EACAC,SAAA,EACAC,YAAA,QACA;AACA,SAAAC,WAAA,EAAAC,IAAA,EAAAC,QAAA;AACA,OAAAC,SAAA;AAEA,SAAAC,QAAA;AACA;EACAC,IAAA;EACAC,UAAA;IACAN,WAAA,EAAAA,WAAA;IACAG,SAAA,EAAAA;EACA;EACAI,IAAA,WAAAA,KAAA;IACA;MACAC,KAAA;MACAC,MAAA;MACAC,SAAA;MACAC,cAAA;MACAC,YAAA;MACAC,IAAA;QACAC,EAAA;QACAC,EAAA;QACAC,EAAA;QACAC,EAAA;QACAC,EAAA;MACA;MACAC,YAAA;QACAC,KAAA;UAAAC,OAAA;UAAAC,OAAA;UAAAC,GAAA;QAAA;MACA;MACAC,OAAA;MACAC,WAAA,GACA;QACAjB,KAAA;QACAkB,KAAA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,EACA;MACAC,QAAA,GACA;QACAnB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,EACA;MACAE,eAAA,GACA;QACApB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,GACA;QACAlB,KAAA;QACAkB,KAAA;MACA,EACA;MACAG,WAAA;MAAA;MACAC,QAAA,EAAAC,SAAA;MACAC,WAAA;QACAC,IAA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","ignoreList":[]}]}
|