27a8eb33ea101db0e1af52a54c76306d.json 71 KB

1
  1. {"remainingRequest":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js!E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js??ref--0-2!E:\\item\\newItem\\admin\\src\\pages\\setting\\systemOutInterface\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\item\\newItem\\admin\\src\\pages\\setting\\systemOutInterface\\index.vue","mtime":1677828270238},{"path":"E:\\item\\newItem\\admin\\babel.config.js","mtime":1677828270071},{"path":"E:\\item\\newItem\\admin\\.babelrc","mtime":1677828270070},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js","mtime":1570440814000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkU6L2l0ZW0vbmV3SXRlbS9hZG1pbi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRTovaXRlbS9uZXdJdGVtL2FkbWluL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gIkU6L2l0ZW0vbmV3SXRlbS9hZG1pbi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyI7Cgp2YXIgX21ldGhvZHM7CgppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IHsgaW50ZXJmYWNlTGlzdCwgaW50ZXJmYWNlRGV0LCBpbnRlcmZhY2VTYXZlLCBpbnRlcmZhY2VFZGl0TmFtZSwgaW50ZXJmYWNlRGVsIH0gZnJvbSAnQC9hcGkvc3lzdGVtT3V0QWNjb3VudCc7CmltcG9ydCB7IFZ1ZVRyZWVMaXN0LCBUcmVlLCBUcmVlTm9kZSB9IGZyb20gJ3Z1ZS10cmVlLWxpc3QnOwppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ3N5c3RlbU91dEludGVyZmFjZScsCiAgY29tcG9uZW50czogewogICAgVnVlVHJlZUxpc3Q6IFZ1ZVRyZWVMaXN0CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgdmFsdWU6ICcnLAogICAgICBpc0VkaXQ6IGZhbHNlLAogICAgICBuYW1lTW9kYWw6IGZhbHNlLAogICAgICBmb3JtVmFsaWRhdGU6IHt9LAogICAgICBncmlkOiB7CiAgICAgICAgeGw6IDcsCiAgICAgICAgbGc6IDcsCiAgICAgICAgbWQ6IDEyLAogICAgICAgIHNtOiAyNCwKICAgICAgICB4czogMjQKICAgICAgfSwKICAgICAgcnVsZVZhbGlkYXRlOiB7CiAgICAgICAgdGl0bGU6IFt7CiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5q2j56Gu55qE5o+P6L+wICjkuI3og73lpJrkuo4yMDDkvY3mlbApJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJywKICAgICAgICAgIG1heDogMjAwCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIHR5cGVMaXN0OiBbewogICAgICAgIHZhbHVlOiAnc3RyaW5nJywKICAgICAgICBsYWJlbDogJ1N0cmluZycKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnYXJyYXknLAogICAgICAgIGxhYmVsOiAnQXJyYXknCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ251bWJlcicsCiAgICAgICAgbGFiZWw6ICdOdW1iZXInCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ2Jvb2xlYW4nLAogICAgICAgIGxhYmVsOiAnQm9vbGVhbicKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnbnVsbCcsCiAgICAgICAgbGFiZWw6ICdOdWxsJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdhbnknLAogICAgICAgIGxhYmVsOiAnQW55JwogICAgICB9XSwKICAgICAgcmVxdWVzdFR5cGVMaXN0OiBbewogICAgICAgIHZhbHVlOiAnZ2V0JywKICAgICAgICBsYWJlbDogJ2dldCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAncG9zdCcsCiAgICAgICAgbGFiZWw6ICdwb3N0JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdkZWxldGUnLAogICAgICAgIGxhYmVsOiAnZGVsZXRlJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdwdXQnLAogICAgICAgIGxhYmVsOiAncHV0JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdvcHRpb25zJywKICAgICAgICBsYWJlbDogJ29wdGlvbnMnCiAgICAgIH1dLAogICAgICBjb250ZXh0RGF0YTogbnVsbCwKICAgICAgLy/lt6bkvqflr7zoiKrlj7PplK7ngrnlh7vmmK/kuqfnlJ/nmoTmlbDmja7lr7nosaEKICAgICAgdHJlZURhdGE6IHVuZGVmaW5lZCwKICAgICAgYnV0dG9uUHJvcHM6IHsKICAgICAgICB0eXBlOiAnZGVmYXVsdCcsCiAgICAgICAgc2l6ZTogJ3NtYWxsJwogICAgICB9LAogICAgICBtZXRob2RDb2xvcjogJyNmZmYnCiAgICB9OwogIH0sCiAgd2F0Y2g6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgJ2Zvcm1WYWxpZGF0ZS5tZXRob2QnLCB7CiAgICBkZWVwOiB0cnVlLAogICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwsIG9sZFZhbCkgewogICAgICB2YXIgbWV0aG9kID0gbmV3VmFsLnRvVXBwZXJDYXNlKCk7CgogICAgICBpZiAobWV0aG9kID09ICdHRVQnKSB7CiAgICAgICAgdGhpcy5tZXRob2RDb2xvciA9ICcjNjFhZmZlJzsKICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ1BPU1QnKSB7CiAgICAgICAgdGhpcy5tZXRob2RDb2xvciA9ICcjNDljYzkwJzsKICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ1BVVCcpIHsKICAgICAgICB0aGlzLm1ldGhvZENvbG9yID0gJyNmY2ExMzAnOwogICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnREVMRVRFJykgewogICAgICAgIHRoaXMubWV0aG9kQ29sb3IgPSAnI2Y5M2UzZSc7CiAgICAgIH0KICAgIH0KICB9KSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtYXBTdGF0ZSgnbWVkaWEnLCBbJ2lzTW9iaWxlJ10pKSwge30sIHsKICAgIGxhYmVsV2lkdGg6IGZ1bmN0aW9uIGxhYmVsV2lkdGgoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzTW9iaWxlID8gdW5kZWZpbmVkIDogNTA7CiAgICB9LAogICAgbGFiZWxQb3NpdGlvbjogZnVuY3Rpb24gbGFiZWxQb3NpdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdyaWdodCc7CiAgICB9CiAgfSksCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0SW50ZXJmYWNlTGlzdCgnb25lJyk7CiAgfSwKICBtZXRob2RzOiAoX21ldGhvZHMgPSB7CiAgICBvbkNsaWNrc3NzOiBmdW5jdGlvbiBvbkNsaWNrc3NzKGUpIHsKICAgICAgY29uc29sZS5sb2coZSk7CiAgICB9LAogICAgbWV0aG9kc0NvbG9yOiBmdW5jdGlvbiBtZXRob2RzQ29sb3IobmV3VmFsKSB7CiAgICAgIHZhciBtZXRob2QgPSBuZXdWYWwudG9VcHBlckNhc2UoKTsKCiAgICAgIGlmIChtZXRob2QgPT0gJ0dFVCcpIHsKICAgICAgICByZXR1cm4gJyM2MWFmZmUnOwogICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnUE9TVCcpIHsKICAgICAgICByZXR1cm4gJyM0OWNjOTAnOwogICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnUFVUJykgewogICAgICAgIHJldHVybiAnI2ZjYTEzMCc7CiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdERUxFVEUnKSB7CiAgICAgICAgcmV0dXJuICcjZjkzZTNlJzsKICAgICAgfQogICAgfSwKICAgIGluc2VydEJlZm9yZTogZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKHBhcmFtcykgewogICAgICBjb25zb2xlLmxvZyhwYXJhbXMpOwogICAgfSwKICAgIGluc2VydEFmdGVyOiBmdW5jdGlvbiBpbnNlcnRBZnRlcihwYXJhbXMpIHsKICAgICAgY29uc29sZS5sb2cocGFyYW1zKTsKICAgIH0sCiAgICBtb3ZlSW50bzogZnVuY3Rpb24gbW92ZUludG8ocGFyYW1zKSB7CiAgICAgIGNvbnNvbGUubG9nKHBhcmFtcyk7CiAgICB9LAogICAgYWRkVGFibGVEYXRhOiBmdW5jdGlvbiBhZGRUYWJsZURhdGEoKSB7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCQkdGFibGUkaW5zZXJ0QSwgZGF0YTsKCiAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRhYmxlLmluc2VydEF0KG5ld1JvdywgLTEpOwoKICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBfeWllbGQkJHRhYmxlJGluc2VydEEgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgICAgZGF0YSA9IF95aWVsZCQkdGFibGUkaW5zZXJ0QS5yb3c7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNjsKICAgICAgICAgICAgICAgIHJldHVybiAkdGFibGUuc2V0QWN0aXZlQ2VsbChkYXRhLCAnbmFtZScpOwoKICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZ2V0SW50ZXJmYWNlTGlzdDogZnVuY3Rpb24gZ2V0SW50ZXJmYWNlTGlzdChkaXNrX3R5cGUpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgIGludGVyZmFjZUxpc3QoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBjb25zb2xlLmxvZyhyZXMpOwogICAgICAgIHJlcy5kYXRhWzBdLmV4cGFuZCA9IGZhbHNlOwogICAgICAgIF90aGlzLnRyZWVEYXRhID0gbmV3IFRyZWUocmVzLmRhdGEpOwoKICAgICAgICBpZiAocmVzLmRhdGEubGVuZ3RoKSB7CiAgICAgICAgICBpZiAocmVzLmRhdGFbMF0uY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgIF90aGlzLm9uQ2xpY2socmVzLmRhdGFbMF0uY2hpbGRyZW5bMF0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikgewogICAgICAgIF90aGlzLiRNZXNzYWdlLmVycm9yKGVycik7CiAgICAgIH0pOwogICAgfSwKICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2socGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgY29uc29sZS5sb2cocGFyYW1zKTsKCiAgICAgIGlmIChwYXJhbXMubWV0aG9kKSB7CiAgICAgICAgdGhpcy5pc0VkaXQgPSBmYWxzZTsKICAgICAgICBpbnRlcmZhY2VEZXQocGFyYW1zLmlkKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7CiAgICAgICAgICBfdGhpczIuZm9ybVZhbGlkYXRlID0gcmVzLmRhdGE7CiAgICAgICAgICBjb25zb2xlLmxvZyhfdGhpczIuZm9ybVZhbGlkYXRlKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpczIuJE1lc3NhZ2UuZXJyb3IoZXJyKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGhhbmRsZVN1Ym1pdDogZnVuY3Rpb24gaGFuZGxlU3VibWl0KCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHJldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoX3RoaXMzLmZvcm1WYWxpZGF0ZS5uYW1lKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoInJldHVybiIsIF90aGlzMy4kTWVzc2FnZS53YXJuaW5nKCfor7fovpPlhaXmjqXlj6PlkI3np7AnKSk7CgogICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIGlmIChfdGhpczMuZm9ybVZhbGlkYXRlLm1ldGhvZCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDg7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KCJyZXR1cm4iLCBfdGhpczMuJE1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup6K+35rGC57G75Z6LJykpOwoKICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICBpZiAoX3RoaXMzLmZvcm1WYWxpZGF0ZS51cmwpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoInJldHVybiIsIF90aGlzMy4kTWVzc2FnZS53YXJuaW5nKCfor7fovpPlhaXosIPnlKjmlrnlvI8nKSk7CgogICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEyOwogICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy4kcmVmcy54VGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwoKICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm1WYWxpZGF0ZS5yZXF1ZXN0X3BhcmFtcyA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNTsKICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMuJHJlZnMucmVzVGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwoKICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm1WYWxpZGF0ZS5yZXR1cm5fcGFyYW1zID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE4OwogICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy4kcmVmcy5jb2RlVGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwoKICAgICAgICAgICAgICBjYXNlIDE4OgogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm1WYWxpZGF0ZS5lcnJvcl9jb2RlID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDIxOwogICAgICAgICAgICAgICAgcmV0dXJuIGludGVyZmFjZVNhdmUoX3RoaXMzLmZvcm1WYWxpZGF0ZSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7CiAgICAgICAgICAgICAgICAgIF90aGlzMy5pc0VkaXQgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgIF90aGlzMy4kTWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwoKICAgICAgICAgICAgICAgICAgX3RoaXMzLmdldEludGVyZmFjZUxpc3QoKTsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgICAgX3RoaXMzLiRNZXNzYWdlLmVycm9yKGVycik7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGluc2VydEV2ZW50OiBmdW5jdGlvbiBpbnNlcnRFdmVudCh0eXBlKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwoKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyICR0YWJsZSwgbmV3Um93LCBfeWllbGQkJHRhYmxlJGluc2VydEEyLCBkYXRhOwoKICAgICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgJHRhYmxlID0gX3RoaXM0LiRyZWZzW3R5cGVdOwoKICAgICAgICAgICAgICAgIGlmICh0eXBlID09ICd4VGFibGUnKSB7CiAgICAgICAgICAgICAgICAgIG5ld1JvdyA9IHsKICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICcnLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICcnLAogICAgICAgICAgICAgICAgICAgIG11c3Q6IDAsCiAgICAgICAgICAgICAgICAgICAgdHJpcDogJycKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAncmVzVGFibGUnKSB7CiAgICAgICAgICAgICAgICAgIG5ld1JvdyA9IHsKICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICcnLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICcnLAogICAgICAgICAgICAgICAgICAgIHRyaXA6ICcnCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBuZXdSb3cgPSB7CiAgICAgICAgICAgICAgICAgICAgY29kZTogJycsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLAogICAgICAgICAgICAgICAgICAgIHNvbHV0aW9uOiAnJwogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7IC8vICR0YWJsZS5pbnNlcnQobmV3Um93KS50aGVuKCh7IHJvdyB9KSA9PiAkdGFibGUuc2V0RWRpdFJvdyhyb3csIC0xKSk7CgogICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA1OwogICAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5pbnNlcnRBdChuZXdSb3csIC0xKTsKCiAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgX3lpZWxkJCR0YWJsZSRpbnNlcnRBMiA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgICAgZGF0YSA9IF95aWVsZCQkdGFibGUkaW5zZXJ0QTIucm93OwogICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA5OwogICAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5zZXRBY3RpdmVDZWxsKGRhdGEsICduYW1lJyk7CgogICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGluc2VydFJvdzogZnVuY3Rpb24gaW5zZXJ0Um93KGN1cnJSb3csIHR5cGUpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CgogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgJHRhYmxlLCByZWNvcmQsIF95aWVsZCQkdGFibGUkaW5zZXJ0QTMsIG5ld1JvdzsKCiAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICR0YWJsZSA9IF90aGlzNS4kcmVmc1t0eXBlXTsgLy8g5aaC5p6cIG51bGwg5YiZ5o+S5YWl5Yiw55uu5qCH6IqC54K56aG26YOoCiAgICAgICAgICAgICAgICAvLyDlpoLmnpwgLTEg5YiZ5o+S5YWl5Yiw55uu5qCH6IqC54K55bqV6YOoCiAgICAgICAgICAgICAgICAvLyDlpoLmnpwgcm93IOWImeacieaPkuWFpeWIsOaViOeahOebruagh+iKgueCueivpeihjOeahOS9jee9rgoKICAgICAgICAgICAgICAgIGlmICh0eXBlID09ICd4VGFibGUnKSB7CiAgICAgICAgICAgICAgICAgIHJlY29yZCA9IHsKICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICcnLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICcnLAogICAgICAgICAgICAgICAgICAgIG11c3Q6IDAsCiAgICAgICAgICAgICAgICAgICAgdHJpcDogJycsCiAgICAgICAgICAgICAgICAgICAgaWQ6IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGN1cnJSb3cuaWQgLy8g6ZyA6KaB5oyH5a6a54i26IqC54K577yM6Ieq5Yqo5o+S5YWl6K+l6IqC54K55LitCgogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdyZXNUYWJsZScpIHsKICAgICAgICAgICAgICAgICAgcmVjb3JkID0gewogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogJycsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJycsCiAgICAgICAgICAgICAgICAgICAgdHJpcDogJycsCiAgICAgICAgICAgICAgICAgICAgaWQ6IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGN1cnJSb3cuaWQgLy8g6ZyA6KaB5oyH5a6a54i26IqC54K577yM6Ieq5Yqo5o+S5YWl6K+l6IqC54K55LitCgogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgcmVjb3JkID0gewogICAgICAgICAgICAgICAgICAgIGNvZGU6ICcnLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJywKICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbjogJycsCiAgICAgICAgICAgICAgICAgICAgaWQ6IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGN1cnJSb3cuaWQgLy8g6ZyA6KaB5oyH5a6a54i26IqC54K577yM6Ieq5Yqo5o+S5YWl6K+l6IqC54K55LitCgogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNDsKICAgICAgICAgICAgICAgIHJldHVybiAkdGFibGUuaW5zZXJ0QXQocmVjb3JkLCAtMSk7CgogICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIF95aWVsZCQkdGFibGUkaW5zZXJ0QTMgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICAgIG5ld1JvdyA9IF95aWVsZCQkdGFibGUkaW5zZXJ0QTMucm93OwogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA4OwogICAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5zZXRUcmVlRXhwYW5kKGN1cnJSb3csIHRydWUpOwoKICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDEwOwogICAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5zZXRBY3RpdmVSb3cobmV3Um93KTsKCiAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHJlbW92ZVJvdzogZnVuY3Rpb24gcmVtb3ZlUm93KHJvdywgdHlwZSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKCiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciAkdGFibGU7CiAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICR0YWJsZSA9IF90aGlzNi4kcmVmc1t0eXBlXTsKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMzsKICAgICAgICAgICAgICAgIHJldHVybiAkdGFibGUucmVtb3ZlKHJvdyk7CgogICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOS/ruaUueWQjeWtlwogICAgYWRkOiBmdW5jdGlvbiBhZGQoKSB7CiAgICAgIHRoaXMudmFsdWUgPSAnJzsKICAgICAgdGhpcy5mb3JtVmFsaWRhdGUuaWQgPSAwOwogICAgICB0aGlzLm5hbWVNb2RhbCA9IHRydWU7CiAgICB9LAogICAgLy8g54K55Ye76I+c5Y2VCiAgICBjbGlja01lbnU6IGZ1bmN0aW9uIGNsaWNrTWVudShuYW1lLCBwYXJhbXMpIHsKICAgICAgaWYgKG5hbWUgPT0gMSkgewogICAgICAgIHRoaXMuZm9ybVZhbGlkYXRlID0ge307CiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUucGlkID0gcGFyYW1zID8gcGFyYW1zLmlkIDogMDsKICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5pZCA9IDA7CiAgICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlOwogICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gMikgewogICAgICAgIHRoaXMudmFsdWUgPSBwYXJhbXMubmFtZSB8fCAnJzsKICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5pZCA9IHBhcmFtcyA/IHBhcmFtcy5pZCA6IDA7CiAgICAgICAgdGhpcy5uYW1lTW9kYWwgPSB0cnVlOwogICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gMykgewogICAgICAgIHRoaXMub25EZWwocGFyYW1zKTsKICAgICAgfSBlbHNlIGlmIChuYW1lID09IDQpIHsKICAgICAgICB0aGlzLmFkZCgpOwogICAgICB9CiAgICB9LAogICAgYWRkRmFjOiBmdW5jdGlvbiBhZGRGYWMocGFyYW1zKSB7CiAgICAgIGNvbnNvbGUubG9nKCcxMTExJyk7CiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlID0gewogICAgICAgIGlkOiBwYXJhbXMgPyBwYXJhbXMuaWQgOiAwCiAgICAgIH07CiAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTsKICAgIH0sCiAgICBhc3luY09LOiBmdW5jdGlvbiBhc3luY09LKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKCiAgICAgIHZhciBkYXRhID0gewogICAgICAgIGlkOiB0aGlzLmZvcm1WYWxpZGF0ZS5pZCB8fCAwLAogICAgICAgIHR5cGU6IDAsCiAgICAgICAgbmFtZTogdGhpcy52YWx1ZQogICAgICB9OwogICAgICBpbnRlcmZhY2VTYXZlKGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzNy4kTWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwoKICAgICAgICBfdGhpczcuZ2V0SW50ZXJmYWNlTGlzdCgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgX3RoaXM3LiRNZXNzYWdlLmVycm9yKGVycik7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5L6n6L655qCP5Y+z6ZSu54K55Ye75LqL5Lu2CiAgICBoYW5kbGVDb250ZXh0TWVudTogZnVuY3Rpb24gaGFuZGxlQ29udGV4dE1lbnUoZGF0YSwgZXZlbnQsIHBvc2l0aW9uKSB7CiAgICAgIGNvbnNvbGUubG9nKCflj7PplK4nKTsKICAgICAgcG9zaXRpb24ubGVmdCA9IE51bWJlcihwb3NpdGlvbi5sZWZ0LnNsaWNlKDAsIC0yKSkgKyA3NSArICdweCc7CiAgICAgIHRoaXMuY29udGV4dERhdGEgPSBkYXRhOwogICAgfSwKICAgIGhhbmRsZUNvbnRleHRDcmVhdGVGb2xkZXI6IGZ1bmN0aW9uIGhhbmRsZUNvbnRleHRDcmVhdGVGb2xkZXIoKSB7fSwKICAgIGhhbmRsZUNvbnRleHRDcmVhdGVGaWxlOiBmdW5jdGlvbiBoYW5kbGVDb250ZXh0Q3JlYXRlRmlsZSgpIHt9LAogICAgLy8g6Ieq5a6a5LmJ5pi+56S6CiAgICByZW5kZXJDb250ZW50OiBmdW5jdGlvbiByZW5kZXJDb250ZW50KGgsIF9yZWYpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CgogICAgICB2YXIgcm9vdCA9IF9yZWYucm9vdCwKICAgICAgICAgIG5vZGUgPSBfcmVmLm5vZGUsCiAgICAgICAgICBkYXRhID0gX3JlZi5kYXRhOwogICAgICB2YXIgdGhhdCA9IHRoaXM7CiAgICAgIHJldHVybiBoKCdzcGFuJywgewogICAgICAgIHN0eWxlOiB7CiAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywKICAgICAgICAgIHdpZHRoOiAnMTAwJScKICAgICAgICB9CiAgICAgIH0sIFtoKCdzcGFuJywgW2gocmVzb2x2ZUNvbXBvbmVudCgnSWNvbicpLCB7CiAgICAgICAgdHlwZTogJ2lvcy1wYXBlci1vdXRsaW5lJywKICAgICAgICBzdHlsZTogewogICAgICAgICAgbWFyZ2luUmlnaHQ6ICc4cHgnCiAgICAgICAgfQogICAgICB9KSwgaCgnc3BhbicsIGRhdGEudGl0bGUpXSksIGgoJ3NwYW4nLCB7CiAgICAgICAgc3R5bGU6IHsKICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLAogICAgICAgICAgZmxvYXQ6ICdyaWdodCcsCiAgICAgICAgICBtYXJnaW5SaWdodDogJzMycHgnCiAgICAgICAgfQogICAgICB9LCBbaChyZXNvbHZlQ29tcG9uZW50KCdCdXR0b24nKSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmJ1dHRvblByb3BzKSwge30sIHsKICAgICAgICBpY29uOiAnaW9zLWFkZCcsCiAgICAgICAgc3R5bGU6IHsKICAgICAgICAgIG1hcmdpblJpZ2h0OiAnOHB4JwogICAgICAgIH0sCiAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHsKICAgICAgICAgIF90aGlzOC5hcHBlbmQoZGF0YSk7CiAgICAgICAgfQogICAgICB9KSksIGgocmVzb2x2ZUNvbXBvbmVudCgnQnV0dG9uJyksIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy5idXR0b25Qcm9wcyksIHt9LCB7CiAgICAgICAgaWNvbjogJ2lvcy1yZW1vdmUnLAogICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7CiAgICAgICAgICBfdGhpczgucmVtb3ZlKHJvb3QsIG5vZGUsIGRhdGEpOwogICAgICAgIH0KICAgICAgfSkpXSldKTsKICAgIH0sCgogICAgLyoqDQogICAgICog5L6n6L655qCP54K55Ye75LqL5Lu2DQogICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGENCiAgICAgKi8KICAgIGNsaWNrRGlyOiBmdW5jdGlvbiBjbGlja0RpcihkYXRhLCByb290LCBub2RlKSB7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgdGhhdC5uYXZJdGVtID0gZGF0YTsKICAgICAgdGhhdC5wYXRobmFtZSA9IGRhdGEucGF0aG5hbWU7CiAgICB9LAogICAgYXBwZW5kOiBmdW5jdGlvbiBhcHBlbmQoZGF0YSkgewogICAgICB2YXIgY2hpbGRyZW4gPSBkYXRhLmNoaWxkcmVuIHx8IFtdOwogICAgICBjaGlsZHJlbi5wdXNoKHsKICAgICAgICB0aXRsZTogJ2FwcGVuZGVkIG5vZGUnLAogICAgICAgIGV4cGFuZDogdHJ1ZQogICAgICB9KTsKICAgICAgdGhpcy4kc2V0KGRhdGEsICdjaGlsZHJlbicsIGNoaWxkcmVuKTsKICAgIH0sCiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZShyb290LCBub2RlLCBkYXRhKSB7CiAgICAgIHZhciBwYXJlbnRLZXkgPSByb290LmZpbmQoZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgcmV0dXJuIGVsID09PSBub2RlOwogICAgICB9KS5wYXJlbnQ7CiAgICAgIHZhciBwYXJlbnQgPSByb290LmZpbmQoZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgcmV0dXJuIGVsLm5vZGVLZXkgPT09IHBhcmVudEtleTsKICAgICAgfSkubm9kZTsKICAgICAgdmFyIGluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZGF0YSk7CiAgICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpOwogICAgfSwKICAgIG9uTW91c2VPdmVyOiBmdW5jdGlvbiBvbk1vdXNlT3Zlcihyb290LCBub2RlLCBkYXRhLCBlLCBkKSB7CiAgICAgIGNvbnNvbGUubG9nKHJvb3QsIG5vZGUsIGRhdGEpOwogICAgfQogIH0sIF9kZWZpbmVQcm9wZXJ0eShfbWV0aG9kcywgIm9uTW91c2VPdmVyIiwgZnVuY3Rpb24gb25Nb3VzZU92ZXIocm9vdCwgbm9kZSwgZGF0YSwgZSwgZCkgewogICAgY29uc29sZS5sb2cocm9vdCwgbm9kZSwgZGF0YSwgZSwgZCk7CiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfbWV0aG9kcywgIm9uRGVsIiwgZnVuY3Rpb24gb25EZWwobm9kZSkgewogICAgdmFyIF90aGlzOSA9IHRoaXM7CgogICAgY29uc29sZS5sb2cobm9kZS5pZCk7CiAgICB0aGlzLiRNb2RhbC5jb25maXJtKHsKICAgICAgdGl0bGU6ICforablkYonLAogICAgICBjb250ZW50OiAnPHA+5Yig6Zmk5ZCO5peg5rOV5oGi5aSN77yM6K+356Gu6K6k5ZCO5Yig6Zmk77yBPC9wPicsCiAgICAgIG9uT2s6IGZ1bmN0aW9uIG9uT2soKSB7CiAgICAgICAgaW50ZXJmYWNlRGVsKG5vZGUuaWQpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXM5LiRNZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CgogICAgICAgICAgbm9kZS5yZW1vdmUoKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpczkuJE1lc3NhZ2UuZXJyb3IoZXJyKTsKICAgICAgICB9KTsKICAgICAgfSwKICAgICAgb25DYW5jZWw6IGZ1bmN0aW9uIG9uQ2FuY2VsKCkge30KICAgIH0pOwogIH0pLCBfZGVmaW5lUHJvcGVydHkoX21ldGhvZHMsICJvbkNoYW5nZU5hbWUiLCBmdW5jdGlvbiBvbkNoYW5nZU5hbWUocGFyYW1zKSB7CiAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CgogICAgY29uc29sZS5sb2cocGFyYW1zKTsKCiAgICBpZiAocGFyYW1zLmV2ZW50VHlwZSA9PSAnYmx1cicpIHsKICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgbmFtZTogcGFyYW1zLm5ld05hbWUsCiAgICAgICAgaWQ6IHBhcmFtcy5pZAogICAgICB9OwogICAgICBpbnRlcmZhY2VFZGl0TmFtZShkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczEwLiRNZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBfdGhpczEwLiRNZXNzYWdlLmVycm9yKGVycik7CiAgICAgIH0pOwogICAgfQogIH0pLCBfZGVmaW5lUHJvcGVydHkoX21ldGhvZHMsICJvbkFkZE5vZGUiLCBmdW5jdGlvbiBvbkFkZE5vZGUocGFyYW1zKSB7CiAgICBjb25zb2xlLmxvZyhwYXJhbXMpOyAvLyB0aGlzLiRyb3V0ZXIucHVzaCh7CiAgICAvLyAgIHBhdGg6ICcvYWRtaW4vc2V0dGluZy9zeXN0ZW1fb3V0X2ludGVyZmFjZS9hZGQnLAogICAgLy8gICBxdWVyeTogewogICAgLy8gICAgIHBpZDogcGFyYW1zLnBpZCwKICAgIC8vICAgfSwKICAgIC8vIH0pOwogIH0pLCBfZGVmaW5lUHJvcGVydHkoX21ldGhvZHMsICJhZGROb2RlIiwgZnVuY3Rpb24gYWRkTm9kZSgpIHsKICAgIHZhciBub2RlID0gbmV3IFRyZWVOb2RlKHsKICAgICAgbmFtZTogJ25ldyBub2RlJywKICAgICAgaXNMZWFmOiBmYWxzZQogICAgfSk7CiAgICBpZiAoIXRoaXMuZGF0YS5jaGlsZHJlbikgdGhpcy5kYXRhLmNoaWxkcmVuID0gW107CiAgICB0aGlzLmRhdGEuYWRkQ2hpbGRyZW4obm9kZSk7CiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfbWV0aG9kcywgImdldE5ld1RyZWUiLCBmdW5jdGlvbiBnZXROZXdUcmVlKCkgewogICAgdmFyIHZtID0gdGhpczsKCiAgICBmdW5jdGlvbiBfZGZzKG9sZE5vZGUpIHsKICAgICAgdmFyIG5ld05vZGUgPSB7fTsKCiAgICAgIGZvciAodmFyIGsgaW4gb2xkTm9kZSkgewogICAgICAgIGlmIChrICE9PSAnY2hpbGRyZW4nICYmIGsgIT09ICdwYXJlbnQnKSB7CiAgICAgICAgICBuZXdOb2RlW2tdID0gb2xkTm9kZVtrXTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChvbGROb2RlLmNoaWxkcmVuICYmIG9sZE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIG5ld05vZGUuY2hpbGRyZW4gPSBbXTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG9sZE5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgIG5ld05vZGUuY2hpbGRyZW4ucHVzaChfZGZzKG9sZE5vZGUuY2hpbGRyZW5baV0pKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXdOb2RlOwogICAgfQoKICAgIHZtLm5ld1RyZWUgPSBfZGZzKHZtLmRhdGEpOwogIH0pLCBfbWV0aG9kcykKfTs="},{"version":3,"mappings":"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","names":["name","components","VueTreeList","data","value","isEdit","nameModal","formValidate","grid","xl","lg","md","sm","xs","ruleValidate","title","message","trigger","max","loading","typeList","label","requestTypeList","contextData","treeData","buttonProps","type","size","methodColor","watch","deep","handler","newVal","oldVal","computed","mapState","labelWidth","labelPosition","created","methods","onClicksss","e","console","methodsColor","insertBefore","params","insertAfter","moveInto","addTableData","$table","row","getInterfaceList","disk_type","interfaceList","then","res","catch","onClick","interfaceDet","handleSubmit","interfaceSave","insertEvent","newRow","attribute","must","trip","code","solution","insertRow","currRow","record","id","parentId","removeRow","add","clickMenu","addFac","asyncOK","handleContextMenu","event","position","handleContextCreateFolder","handleContextCreateFile","renderContent","h","style","display","width","marginRight","float","icon","clickDir","root","node","that","append","children","expand","remove","parent","onMouseOver","d","content","onOk","interfaceDel","onCancel","interfaceEditName","isLeaf","newNode","vm"],"sourceRoot":"src/pages/setting/systemOutInterface","sources":["index.vue"],"sourcesContent":["<template>\r\n <div>\r\n <div class=\"main\">\r\n <!-- <Tree class=\"tree\" :data=\"treeData\" @on-contextmenu=\"handleContextMenu\">\r\n <template #contextMenu>\r\n <DropdownItem @click.native=\"handleContextCreateFolder()\">新建文件夹</DropdownItem>\r\n <DropdownItem @click.native=\"handleContextCreateFile()\">新建文件</DropdownItem>\r\n <DropdownItem @click.native=\"handleContextDelFolder()\" style=\"color: #ed4014\">删除</DropdownItem>\r\n </template>\r\n </Tree> -->\r\n <!-- <Tree :data=\"treeData\" :render=\"renderContent\" class=\"demo-tree-render\"></Tree> -->\r\n <Card :bordered=\"false\" dis-hover class=\"ivu-mt mr20 card-tree\">\r\n <div class=\"tree\">\r\n <div class=\"main-btn\">\r\n <Button class=\"mb10\" type=\"primary\" @click=\"clickMenu(4)\" long>新增分类</Button>\r\n </div>\r\n\r\n <vue-tree-list\r\n class=\"tree-list\"\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=\"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=\"{ node: slotProps.model.method, open: formValidate.id == slotProps.model.id }\"\r\n @click.stop=\"onClick(slotProps.model)\"\r\n >\r\n <span class=\"\" :class=\"{ open: formValidate.id == slotProps.model.id }\">{{\r\n slotProps.model.name\r\n }}</span>\r\n <Dropdown\r\n transfer\r\n @on-click=\"\r\n (name) => {\r\n clickMenu(name, slotProps.model);\r\n }\r\n \"\r\n >\r\n <a href=\"javascript:void(0)\">\r\n <Icon class=\"add\" type=\"ios-more\" />\r\n </a>\r\n <template #list>\r\n <DropdownMenu>\r\n <DropdownItem name=\"1\" v-if=\"!slotProps.model.method\">新增接口</DropdownItem>\r\n <DropdownItem name=\"2\" v-if=\"!slotProps.model.method\">编辑分类名</DropdownItem>\r\n <DropdownItem name=\"3\">删除</DropdownItem>\r\n </DropdownMenu>\r\n </template>\r\n </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\">\r\n <!-- <Icon type=\"md-create\" /> -->\r\n </span>\r\n <span class=\"icon\" slot=\"editNodeIcon\">\r\n <!-- <Icon type=\"md-create\" /> -->\r\n </span>\r\n <span class=\"icon\" slot=\"delNodeIcon\">\r\n <!-- <Icon type=\"ios-cut\" /> -->\r\n </span>\r\n <template v-slot:treeNodeIcon=\"slotProps\" class=\"req-method\">\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.id == formValidate.id ? '500' : '500',\r\n }\"\r\n >{{ slotProps.model.method == 'delete' ? 'DEL' : 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 </Card>\r\n <Card :bordered=\"false\" dis-hover 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 <Button v-if=\"formValidate.id\" type=\"primary\" class=\"submission mr20\" @click=\"isEdit = !isEdit\">{{\r\n isEdit ? '返回' : '编辑'\r\n }}</Button>\r\n <Button v-if=\"isEdit\" type=\"primary\" class=\"submission\" @click=\"handleSubmit('formValidate')\"\r\n >保存</Button\r\n >\r\n </div>\r\n </div>\r\n <Form\r\n class=\"formValidate mt20\"\r\n ref=\"formValidate\"\r\n :rules=\"ruleValidate\"\r\n :model=\"formValidate\"\r\n :label-width=\"100\"\r\n :label-position=\"labelPosition\"\r\n @submit.native.prevent\r\n >\r\n <Row :gutter=\"24\" type=\"flex\">\r\n <Col span=\"24\">\r\n <div class=\"title\">接口信息</div>\r\n <FormItem label=\"接口名称:\" prop=\"name\">\r\n <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 </FormItem>\r\n <FormItem label=\"请求类型:\" prop=\"name\">\r\n <Select v-if=\"isEdit\" v-model=\"formValidate.method\" style=\"width: 120px\">\r\n <Option v-for=\"(item, index) in requestTypeList\" :key=\"index\" :value=\"item.value\">{{\r\n item.label\r\n }}</Option>\r\n </Select>\r\n <span v-else class=\"req-method\" :style=\"'background-color:' + methodColor\">{{\r\n formValidate.method || ''\r\n }}</span>\r\n </FormItem>\r\n <FormItem label=\"功能描述:\" prop=\"name\">\r\n <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 </FormItem>\r\n </Col>\r\n </Row>\r\n <Row :gutter=\"24\" type=\"flex\">\r\n <Col span=\"24\">\r\n <div class=\"title\">调用方式</div>\r\n <FormItem label=\"调用内容:\" prop=\"url\">\r\n <Input\r\n v-if=\"isEdit\"\r\n class=\"perW20\"\r\n type=\"text\"\r\n :rows=\"4\"\r\n v-model.trim=\"formValidate.url\"\r\n placeholder=\"请输入\"\r\n />\r\n <span v-else>{{ formValidate.url || '' }}</span>\r\n </FormItem>\r\n <FormItem label=\"请求参数:\">\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.request_params\"\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'\"\r\n status=\"primary\"\r\n @click=\"insertRow(row, 'xTable')\"\r\n >插入</vxe-button\r\n >\r\n <vxe-button type=\"text\" status=\"primary\" @click=\"removeRow(row, 'xTable')\">删除</vxe-button>\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n\r\n <Button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" @click=\"insertEvent('xTable')\">添加参数</Button>\r\n </FormItem>\r\n <FormItem 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.return_params\"\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'\"\r\n status=\"primary\"\r\n @click=\"insertRow(row, 'resTable')\"\r\n >插入</vxe-button\r\n >\r\n <vxe-button type=\"text\" status=\"primary\" @click=\"removeRow(row, 'resTable')\">删除</vxe-button>\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n <Button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" @click=\"insertEvent('resTable')\">添加参数</Button>\r\n </FormItem>\r\n </Col>\r\n </Row>\r\n <Row :gutter=\"24\" type=\"flex\">\r\n <Col span=\"24\">\r\n <div class=\"title\">调用示例</div>\r\n <FormItem label=\"请求数据示例:\" prop=\"request_example\">\r\n <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 </FormItem>\r\n <FormItem label=\"返回数据示例:\" prop=\"return_example\">\r\n <Input\r\n v-if=\"isEdit\"\r\n class=\"perW20\"\r\n type=\"textarea\"\r\n :rows=\"4\"\r\n v-model.trim=\"formValidate.return_example\"\r\n placeholder=\"请输入\"\r\n />\r\n <span v-else class=\"text-area\">{{ formValidate.return_example || '' }}</span>\r\n </FormItem>\r\n <FormItem 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 :print-config=\"{}\"\r\n :export-config=\"{}\"\r\n :loading=\"loading\"\r\n :tree-config=\"{ transform: true, 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\" @click=\"removeRow(row, 'codeTable')\">删除</vxe-button>\r\n </template>\r\n </vxe-column>\r\n </vxe-table>\r\n <Button class=\"mt10\" v-if=\"isEdit\" type=\"primary\" @click=\"insertEvent('codeTable')\">添加参数</Button>\r\n </FormItem>\r\n </Col>\r\n </Row>\r\n <!-- <Row :gutter=\"24\" type=\"flex\">\r\n <Col span=\"24\">\r\n <FormItem>\r\n <Button type=\"primary\" class=\"submission\" @click=\"handleSubmit('formValidate')\">保存</Button>\r\n </FormItem>\r\n </Col>\r\n </Row> -->\r\n </Form>\r\n </div>\r\n <!-- <div v-else class=\"nothing\">\r\n <div class=\"box\" @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\" @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 </Card>\r\n </div>\r\n <Modal v-model=\"nameModal\" title=\"分组名称\" :loading=\"loading\" @on-ok=\"asyncOK\">\r\n <label>分组名称:</label>\r\n <Input v-model=\"value\" placeholder=\"请输入分组名称\" style=\"width: 85%\" />\r\n </Modal>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { interfaceList, interfaceDet, interfaceSave, interfaceEditName, interfaceDel } from '@/api/systemOutAccount';\r\nimport { VueTreeList, Tree, TreeNode } from 'vue-tree-list';\r\nimport { mapState } from 'vuex';\r\nexport default {\r\n name: 'systemOutInterface',\r\n components: {\r\n VueTreeList,\r\n },\r\n data() {\r\n return {\r\n value: '',\r\n isEdit: false,\r\n nameModal: 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\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: '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 value: 'options',\r\n label: 'options',\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 };\r\n },\r\n watch: {\r\n ['formValidate.method']: {\r\n deep: true,\r\n handler(newVal, oldVal) {\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 == 'DELETE') {\r\n this.methodColor = '#f93e3e';\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 : 50;\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 onClicksss(e) {\r\n console.log(e);\r\n },\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 == 'DELETE') {\r\n return '#f93e3e';\r\n }\r\n },\r\n insertBefore(params) {\r\n console.log(params);\r\n },\r\n insertAfter(params) {\r\n console.log(params);\r\n },\r\n moveInto(params) {\r\n console.log(params);\r\n },\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 interfaceList()\r\n .then((res) => {\r\n console.log(res);\r\n res.data[0].expand = false;\r\n this.treeData = new Tree(res.data);\r\n\r\n if (res.data.length) {\r\n if (res.data[0].children.length) {\r\n this.onClick(res.data[0].children[0]);\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err);\r\n });\r\n },\r\n onClick(params) {\r\n console.log(params);\r\n if (params.method) {\r\n this.isEdit = false;\r\n interfaceDet(params.id)\r\n .then((res) => {\r\n console.log(res);\r\n this.formValidate = res.data;\r\n console.log(this.formValidate);\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err);\r\n });\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.url) {\r\n return this.$Message.warning('请输入调用方式');\r\n }\r\n this.formValidate.request_params = await this.$refs.xTable.getTableData().tableData;\r\n this.formValidate.return_params = await this.$refs.resTable.getTableData().tableData;\r\n this.formValidate.error_code = await this.$refs.codeTable.getTableData().tableData;\r\n await interfaceSave(this.formValidate)\r\n .then((res) => {\r\n console.log(res);\r\n this.isEdit = false;\r\n this.$Message.success(res.msg);\r\n this.getInterfaceList();\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err);\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 console.log();\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.pid = 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.id = params ? params.id : 0;\r\n this.nameModal = true;\r\n } else if (name == 3) {\r\n this.onDel(params);\r\n } else if (name == 4) {\r\n this.add();\r\n }\r\n },\r\n\r\n addFac(params) {\r\n console.log('1111');\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 interfaceSave(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);\r\n });\r\n },\r\n //侧边栏右键点击事件\r\n handleContextMenu(data, event, position) {\r\n console.log('右键');\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 onMouseOver(root, node, data, e, d) {\r\n console.log(root, node, data, e, d);\r\n },\r\n //\r\n onDel(node) {\r\n console.log(node.id);\r\n this.$Modal.confirm({\r\n title: '警告',\r\n content: '<p>删除后无法恢复,请确认后删除!</p>',\r\n onOk: () => {\r\n interfaceDel(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);\r\n });\r\n },\r\n onCancel: () => {},\r\n });\r\n },\r\n\r\n onChangeName(params) {\r\n console.log(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);\r\n });\r\n }\r\n },\r\n\r\n onAddNode(params) {\r\n console.log(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=\"stylus\" scoped>\r\n.reset {\r\n margin-left: 10px;\r\n}\r\n.card-tree {\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 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.main {\r\n width: 100%;\r\n display: flex;\r\n .main-btn {}\r\n .card-tree{\r\n width: 270px;\r\n height: calc(100vh - 190px);\r\n overflow-y: scroll;\r\n }\r\n >>> .tree {\r\n .tree-list{\r\n margin-left:10px;\r\n\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: 12px;\r\n margin-right: 5px;\r\n border-radius: 4px;\r\n\r\n text-transform: uppercase;\r\n }\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 // width:200px;\r\n padding: 3px 7px 3px 0;\r\n }\r\n .node{\r\n padding:7px 2px 7px 0px;\r\n }\r\n .open {\r\n // background-color: #fff1ef;\r\n font-weight: 500;\r\n color: #333;\r\n }\r\n }\r\n\r\n >>> .vtl-node-main .vtl-operation {\r\n position: absolute;\r\n right: 20px;\r\n }\r\n\r\n >>> .vtl-node-content {\r\n width: 100%;\r\n }\r\n\r\n .pop-menu {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n\r\n >>> .vtl-node-content .add {\r\n display: none;\r\n margin-right: 10px;\r\n }\r\n\r\n >>> .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: 20px;\r\n height: 20px;\r\n }\r\n\r\n >>> .vtl-node-content:hover .add:hover {\r\n background-color: #fff;\r\n\r\n .pop-menu {\r\n font-size: 16px;\r\n }\r\n }\r\n >>> .vtl-node-main{\r\n padding:0;\r\n }\r\n >>> .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 >>> .ivu-form-item{\r\n margin-bottom: 10px;\r\n }\r\n .right-card {\r\n flex: 1;\r\n max-height: calc(100vh - 190px);\r\n overflow-y: scroll;\r\n }\r\n\r\n .data {\r\n flex: 1;\r\n\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\r\n .eidt-sub {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n .name {\r\n font-size: 20px;\r\n font-weight: 500;\r\n }\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\r\n .perW20 {\r\n width: 500px;\r\n }\r\n\r\n .text-area {\r\n white-space: pre-wrap;\r\n }\r\n }\r\n\r\n >>> .ivu-tree-title {\r\n width: 100% !important;\r\n }\r\n >>> .vtl-tree-margin{\r\n margin-left: 5px;\r\n }\r\n >>> .ivu-btn-icon-only.ivu-btn-small {\r\n width: 28px;\r\n }\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\r\n .box:hover {\r\n border: 1px solid pink;\r\n }\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\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\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"]}]}