| 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\\product\\productList\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\item\\newItem\\admin\\src\\pages\\product\\productList\\index.vue","mtime":1677828270229},{"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:aW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkU6L2l0ZW0vbmV3SXRlbS9hZG1pbi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJFOi9pdGVtL25ld0l0ZW0vYWRtaW4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiOwppbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gIkU6L2l0ZW0vbmV3SXRlbS9hZG1pbi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkU6L2l0ZW0vbmV3SXRlbS9hZG1pbi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKCnZhciBfbWV0aG9kczsKCmltcG9ydCAicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IGV4cGFuZFJvdyBmcm9tICcuL3RhYmxlRXhwYW5kLnZ1ZSc7CmltcG9ydCBhdHRyaWJ1dGUgZnJvbSAnLi9hdHRyaWJ1dGUnOwppbXBvcnQgdG9FeGNlbCBmcm9tICcuLi8uLi8uLi91dGlscy9FeGNlbC5qcyc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmltcG9ydCB0YW9CYW8gZnJvbSAnLi90YW9CYW8nOwppbXBvcnQgZ29vZHNEZXRhaWwgZnJvbSAnLi9jb21wb25lbnRzL2dvb2RzRGV0YWlsLnZ1ZSc7CmltcG9ydCBjb3Vwb25MaXN0IGZyb20gJ0AvY29tcG9uZW50cy9jb3Vwb25MaXN0JzsKaW1wb3J0IHsgZXhwb3J0UHJvZHVjdExpc3QgfSBmcm9tICdAL2FwaS9leHBvcnQnOwppbXBvcnQgeyBnZXRHb29kSGVhZGUsIGdldEdvb2RzLCBQb3N0Z29vZHNJc1Nob3csIHRyZWVMaXN0QXBpLCAvLyDliIbnsbvliJfooagKcHJvZHVjdFNob3dBcGksIHByb2R1Y3RVbnNob3dBcGksIHN0b3JlUHJvZHVjdEFwaSwgYmF0Y2hTZXR0aW5nLCBwcm9kdWN0R2V0VGVtcGxhdGVBcGkgfSBmcm9tICdAL2FwaS9wcm9kdWN0JzsKaW1wb3J0IHVzZXJMYWJlbCBmcm9tICdAL2NvbXBvbmVudHMvbGFiZWxMaXN0JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdwcm9kdWN0X3Byb2R1Y3RMaXN0JywKICBjb21wb25lbnRzOiB7CiAgICBleHBhbmRSb3c6IGV4cGFuZFJvdywKICAgIGF0dHJpYnV0ZTogYXR0cmlidXRlLAogICAgdGFvQmFvOiB0YW9CYW8sCiAgICBnb29kc0RldGFpbDogZ29vZHNEZXRhaWwsCiAgICB1c2VyTGFiZWw6IHVzZXJMYWJlbCwKICAgIGNvdXBvbkxpc3Q6IGNvdXBvbkxpc3QKICB9LAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKHt9LCBtYXBTdGF0ZSgndXNlckxldmVsJywgWydjYXRlZ29yeUlkJ10pKSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7CiAgICAgIHRlbXBsYXRlOiBmYWxzZSwKICAgICAgbW9kYWxzOiBmYWxzZSwKICAgICAgYmF0Y2hNb2RhbDogZmFsc2UsCiAgICAgIGxhYmVsU2hvdzogZmFsc2UsCiAgICAgIGJhdGNoVHlwZTogMSwKICAgICAgLy8g5om56YeP6K6+572u57G75Z6LCiAgICAgIGJhdGNoRm9ybURhdGE6IHsKICAgICAgICBjYXRlX2lkOiBbXSwKICAgICAgICBsb2dpc3RpY3M6IFtdLAogICAgICAgIGZyZWlnaHQ6IDIsCiAgICAgICAgcG9zdGFnZTogMCwKICAgICAgICB0ZW1wX2lkOiBudWxsLAogICAgICAgIGdpdmVfaW50ZWdyYWw6IDAsCiAgICAgICAgbGFiZWxfaWQ6IFtdLAogICAgICAgIGNvdXBvbl9pZHM6IFtdLAogICAgICAgIHJlY29tbWVuZDogW10KICAgICAgfSwKICAgICAgcnVsZUJhdGNoOiB7fSwKICAgICAgY291cG9uTmFtZTogW10sCiAgICAgIC8vIOS8mOaDoOWIuAogICAgICBkYXRhTGFiZWw6IFtdLAogICAgICAvLyDmoIfnrb4KICAgICAgdGVtcGxhdGVMaXN0OiBbXSwKICAgICAgLy8g6L+Q6LS55qih54mICiAgICAgIGdyaWQ6IHsKICAgICAgICB4bDogNiwKICAgICAgICBsZzogOCwKICAgICAgICBtZDogMTIsCiAgICAgICAgc206IDI0LAogICAgICAgIHhzOiAyNAogICAgICB9LAogICAgICBhcnRGcm9tOiB7CiAgICAgICAgcGFnZTogMSwKICAgICAgICBsaW1pdDogMTUsCiAgICAgICAgY2F0ZV9pZDogJycsCiAgICAgICAgdHlwZTogJzEnLAogICAgICAgIHN0b3JlX25hbWU6ICcnCiAgICAgIH0sCiAgICAgIGxpc3Q6IFtdLAogICAgICB0YWJsZUxpc3Q6IFtdLAogICAgICBoZWFkZU51bTogW10sCiAgICAgIHRyZWVTZWxlY3Q6IFtdLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgY29sdW1uczogW3sKICAgICAgICB0eXBlOiAnZXhwYW5kJywKICAgICAgICB3aWR0aDogNTAsCiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgcGFyYW1zKSB7CiAgICAgICAgICByZXR1cm4gaChleHBhbmRSb3csIHsKICAgICAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgICByb3c6IHBhcmFtcy5yb3cKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAgdHlwZTogJ3NlbGVjdGlvbicsCiAgICAgICAgd2lkdGg6IDYwLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfllYblk4FJRCcsCiAgICAgICAga2V5OiAnaWQnLAogICAgICAgIHdpZHRoOiA4MAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfllYblk4Hlm74nLAogICAgICAgIHNsb3Q6ICdpbWFnZScsCiAgICAgICAgbWluV2lkdGg6IDgwCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+WVhuWTgeWQjeensCcsCiAgICAgICAga2V5OiAnc3RvcmVfbmFtZScsCiAgICAgICAgbWluV2lkdGg6IDI1MAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfllYblk4HnsbvlnosnLAogICAgICAgIGtleTogJ3Byb2R1Y3RfdHlwZScsCiAgICAgICAgbWluV2lkdGg6IDEwMAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfllYblk4HllK7ku7cnLAogICAgICAgIGtleTogJ3ByaWNlJywKICAgICAgICBtaW5XaWR0aDogOTAKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn6ZSA6YePJywKICAgICAgICBrZXk6ICdzYWxlcycsCiAgICAgICAgbWluV2lkdGg6IDkwCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+W6k+WtmCcsCiAgICAgICAga2V5OiAnc3RvY2snLAogICAgICAgIG1pbldpZHRoOiA4MAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfmjpLluo8nLAogICAgICAgIGtleTogJ3NvcnQnLAogICAgICAgIG1pbldpZHRoOiA3MAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfnirbmgIEnLAogICAgICAgIHNsb3Q6ICdzdGF0ZScsCiAgICAgICAgd2lkdGg6IDEwMCwKICAgICAgICBmaWx0ZXJzOiBbewogICAgICAgICAgbGFiZWw6ICfkuIrmnrYnLAogICAgICAgICAgdmFsdWU6IDEKICAgICAgICB9LCB7CiAgICAgICAgICBsYWJlbDogJ+S4i+aeticsCiAgICAgICAgICB2YWx1ZTogMAogICAgICAgIH1dLAogICAgICAgIGZpbHRlck1ldGhvZDogZnVuY3Rpb24gZmlsdGVyTWV0aG9kKHZhbHVlLCByb3cpIHsKICAgICAgICAgIHJldHVybiByb3cuaXNfc2hvdyA9PT0gdmFsdWU7CiAgICAgICAgfSwKICAgICAgICBmaWx0ZXJNdWx0aXBsZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn5pON5L2cJywKICAgICAgICBzbG90OiAnYWN0aW9uJywKICAgICAgICBmaXhlZDogJ3JpZ2h0JywKICAgICAgICBtaW5XaWR0aDogMjIwCiAgICAgIH1dLAogICAgICBkYXRhOiBbXSwKICAgICAgdG90YWw6IDAsCiAgICAgIGF0dHJUZW1wbGF0ZTogZmFsc2UsCiAgICAgIHNlbGVjdGVkSWRzOiBuZXcgU2V0KCksCiAgICAgIC8v6YCJ5Lit5ZCI5bm26aG555qEaWQKICAgICAgaWRzOiBbXSwKICAgICAgZ29vZHNJZDogJycsCiAgICAgIGlzUHJvZHVjdEJveDogZmFsc2UKICAgIH0sICJ0cmVlU2VsZWN0IiwgW10pOwogIH0sCiAgd2F0Y2g6IHsKICAgICRyb3V0ZTogZnVuY3Rpb24gJHJvdXRlKCkgewogICAgICBpZiAodGhpcy4kcm91dGUuZnVsbFBhdGggPT09ICcvYWRtaW4vcHJvZHVjdC9wcm9kdWN0X2xpc3Q/dHlwZT01JykgewogICAgICAgIHRoaXMuZ2V0UGF0aCgpOwogICAgICB9CiAgICB9CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge30sCiAgYWN0aXZhdGVkOiBmdW5jdGlvbiBhY3RpdmF0ZWQoKSB7CiAgICB0aGlzLmdvb2RIZWFkZSgpOwogICAgdGhpcy5nb29kc0NhdGVnb3J5KCk7CgogICAgaWYgKHRoaXMuJHJvdXRlLmZ1bGxQYXRoID09PSAnL2FkbWluL3Byb2R1Y3QvcHJvZHVjdF9saXN0P3R5cGU9NScpIHsKICAgICAgdGhpcy5nZXRQYXRoKCk7CiAgICB9IGVsc2UgewogICAgICB0aGlzLmdldERhdGFMaXN0KCk7CiAgICB9CiAgfSwKICBtZXRob2RzOiAoX21ldGhvZHMgPSB7CiAgICBiYXRjaFN1YjogZnVuY3Rpb24gYmF0Y2hTdWIoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkSWRzLCB0aGlzLmlkcyk7CiAgICAgIHZhciBkYXRhID0gdGhpcy5iYXRjaEZvcm1EYXRhOwogICAgICBkYXRhLmlkcyA9IHRoaXMuaWRzOwogICAgICBkYXRhLnR5cGUgPSB0aGlzLmJhdGNoVHlwZTsKICAgICAgdmFyIGFjdGl2ZUlkcyA9IFtdOwogICAgICB0aGlzLmRhdGFMYWJlbC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgYWN0aXZlSWRzLnB1c2goaXRlbS5pZCk7CiAgICAgIH0pOwogICAgICBkYXRhLmxhYmVsX2lkID0gYWN0aXZlSWRzOwogICAgICBiYXRjaFNldHRpbmcoZGF0YSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMuJE1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKCiAgICAgICAgX3RoaXMuZ2V0RGF0YUxpc3QoKTsKCiAgICAgICAgX3RoaXMuY2xlYXJCYXRjaERhdGEoKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikgewogICAgICAgIF90aGlzLiRNZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBjbGVhckJhdGNoRGF0YTogZnVuY3Rpb24gY2xlYXJCYXRjaERhdGEoc3RhdHVzKSB7CiAgICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgdGhpcy5iYXRjaEZvcm1EYXRhID0gewogICAgICAgICAgY2F0ZV9pZDogW10sCiAgICAgICAgICBsb2dpc3RpY3M6IFtdLAogICAgICAgICAgZnJlaWdodDogMCwKICAgICAgICAgIHBvc3RhZ2U6IG51bGwsCiAgICAgICAgICB0ZW1wX2lkOiBudWxsLAogICAgICAgICAgZ2l2ZV9pbnRlZ3JhbDogbnVsbCwKICAgICAgICAgIGxhYmVsX2lkOiBbXSwKICAgICAgICAgIGNvdXBvbl9pZHM6IFtdLAogICAgICAgICAgcmVjb21tZW5kOiBbXQogICAgICAgIH07CiAgICAgICAgdGhpcy5pZHMgPSBbXTsKICAgICAgICB0aGlzLmRhdGFMYWJlbCA9IFtdOwogICAgICAgIHRoaXMuY2xlYXJBbGwoZmFsc2UpOwogICAgICB9CiAgICB9LAogICAgLy8g5om56YeP6K6+572u5ZWG5ZOBCiAgICBiYXRjaFNlbGVjdDogZnVuY3Rpb24gYmF0Y2hTZWxlY3QodHlwZSkgewogICAgICBjb25zb2xlLmxvZyh0eXBlKTsKCiAgICAgIGlmICghdGhpcy5pZHMubGVuZ3RoKSB7CiAgICAgICAgdGhpcy4kTWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nopoHorr7nva7nmoTllYblk4EnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmJhdGNoVHlwZSA9IHR5cGU7CiAgICAgICAgdGhpcy5iYXRjaE1vZGFsID0gdHJ1ZTsKICAgICAgICB0aGlzLnByb2R1Y3RHZXRUZW1wbGF0ZSgpOwogICAgICB9CiAgICB9LAogICAgYWN0aXZlRGF0YTogZnVuY3Rpb24gYWN0aXZlRGF0YShkYXRhTGFiZWwpIHsKICAgICAgdGhpcy5sYWJlbFNob3cgPSBmYWxzZTsKICAgICAgdGhpcy5kYXRhTGFiZWwgPSBkYXRhTGFiZWw7CiAgICB9LAogICAgbmFtZUlkOiBmdW5jdGlvbiBuYW1lSWQoaWQsIG5hbWVzKSB7CiAgICAgIHRoaXMuYmF0Y2hGb3JtRGF0YS5jb3Vwb25faWRzID0gaWQ7CiAgICAgIHRoaXMuY291cG9uTmFtZSA9IHRoaXMudW5pcXVlKG5hbWVzKTsKICAgIH0sCiAgICBoYW5kbGVDbG9zZTogZnVuY3Rpb24gaGFuZGxlQ2xvc2UobmFtZSkgewogICAgICB2YXIgaW5kZXggPSB0aGlzLmNvdXBvbk5hbWUuaW5kZXhPZihuYW1lKTsKICAgICAgdGhpcy5jb3Vwb25OYW1lLnNwbGljZShpbmRleCwgMSk7CiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlLmNvdXBvbl9pZHMuc3BsaWNlKGluZGV4LCAxKTsKICAgIH0sCiAgICAvL+WvueixoeaVsOe7hOWOu+mHje+8mwogICAgdW5pcXVlOiBmdW5jdGlvbiB1bmlxdWUoYXJyKSB7CiAgICAgIHZhciByZXMgPSBuZXcgTWFwKCk7CiAgICAgIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChhcnIpIHsKICAgICAgICByZXR1cm4gIXJlcy5oYXMoYXJyLmlkKSAmJiByZXMuc2V0KGFyci5pZCwgMSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiOt+WPlui/kOi0ueaooeadv++8mwogICAgcHJvZHVjdEdldFRlbXBsYXRlOiBmdW5jdGlvbiBwcm9kdWN0R2V0VGVtcGxhdGUoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgcHJvZHVjdEdldFRlbXBsYXRlQXBpKCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMyLnRlbXBsYXRlTGlzdCA9IHJlcy5kYXRhOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDmoIfnrb7lvLnnqpflhbPpl60KICAgIGxhYmVsQ2xvc2U6IGZ1bmN0aW9uIGxhYmVsQ2xvc2UoKSB7CiAgICAgIHRoaXMubGFiZWxTaG93ID0gZmFsc2U7CiAgICB9LAogICAgbG9vazogZnVuY3Rpb24gbG9vayhyb3cpIHsKICAgICAgdGhpcy5nb29kc0lkID0gcm93LmlkOwogICAgICB0aGlzLmlzUHJvZHVjdEJveCA9IHRydWU7CiAgICB9LAogICAgLy8g54mp5rWB5pa55byPCiAgICBsb2dpc3RpY3NCdG46IGZ1bmN0aW9uIGxvZ2lzdGljc0J0bihlKSB7CiAgICAgIHRoaXMuYmF0Y2hGb3JtRGF0YS5sb2dpc3RpY3MgPSBlOwogICAgfSwKICAgIC8vIOWFs+iBlOeUqOaIt+agh+etvgogICAgb3BlbkxhYmVsOiBmdW5jdGlvbiBvcGVuTGFiZWwocm93KSB7CiAgICAgIHRoaXMubGFiZWxTaG93ID0gdHJ1ZTsKICAgICAgdGhpcy4kcmVmcy51c2VyTGFiZWwudXNlckxhYmVsKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhTGFiZWwpKSk7CiAgICB9LAogICAgY2xvc2VMYWJlbDogZnVuY3Rpb24gY2xvc2VMYWJlbChsYWJlbCkgewogICAgICB2YXIgaW5kZXggPSB0aGlzLmRhdGFMYWJlbC5pbmRleE9mKHRoaXMuZGF0YUxhYmVsLmZpbHRlcihmdW5jdGlvbiAoZCkgewogICAgICAgIHJldHVybiBkLmlkID09IGxhYmVsLmlkOwogICAgICB9KVswXSk7CiAgICAgIHRoaXMuZGF0YUxhYmVsLnNwbGljZShpbmRleCwgMSk7CiAgICB9LAogICAgLy8g5re75Yqg5LyY5oOg5Yi4CiAgICBhZGRDb3Vwb246IGZ1bmN0aW9uIGFkZENvdXBvbigpIHsKICAgICAgdGhpcy4kcmVmcy5jb3Vwb25UZW1wbGF0ZXMuaXNUZW1wbGF0ZSA9IHRydWU7CiAgICAgIHRoaXMuJHJlZnMuY291cG9uVGVtcGxhdGVzLnRhYmxlTGlzdCgpOwogICAgfSwKICAgIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgoKSB7CiAgICAgIHRoaXMuY29sdW1uczIgPSBfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5jb2x1bW5zKTsKCiAgICAgIGlmIChuYW1lICE9PSAnMScgJiYgbmFtZSAhPT0gJzInKSB7CiAgICAgICAgdGhpcy5jb2x1bW5zMi5zaGlmdCh7CiAgICAgICAgICB0eXBlOiAnc2VsZWN0aW9uJywKICAgICAgICAgIHdpZHRoOiA2MCwKICAgICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICAgIH0pOwogICAgICB9CgogICAgICB0aGlzLmFydEZyb20ucGFnZSA9IDE7CiAgICAgIHRoaXMuYXJ0RnJvbS50eXBlID0gdGhpcy4kcm91dGUucXVlcnkudHlwZS50b1N0cmluZygpOwogICAgICB0aGlzLmdldERhdGFMaXN0KCk7CiAgICB9LAogICAgLy8g5a+85Ye6CiAgICBleHBvcnRzOiBmdW5jdGlvbiBleHBvcnRzKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIHRoLCBmaWxla2V5LCBkYXRhLCBmaWxlTmFtZSwgZXhjZWxEYXRhLCBpLCBsZWJEYXRhOwogICAgICAgIHJldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIHRoID0gW10sIGZpbGVrZXkgPSBbXSwgZGF0YSA9IFtdLCBmaWxlTmFtZSA9ICcnOwogICAgICAgICAgICAgICAgZXhjZWxEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfdGhpczMuYXJ0RnJvbSkpOwogICAgICAgICAgICAgICAgZXhjZWxEYXRhLnBhZ2UgPSAxOwogICAgICAgICAgICAgICAgZXhjZWxEYXRhLmxpbWl0ID0gNTA7CiAgICAgICAgICAgICAgICBpID0gMDsKCiAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgaWYgKCEoaSA8IGV4Y2VsRGF0YS5wYWdlICsgMSkpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDIyOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gODsKICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMuZ2V0RXhjZWxEYXRhKGV4Y2VsRGF0YSk7CgogICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgIGxlYkRhdGEgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgICAgaWYgKCFmaWxlTmFtZSkgZmlsZU5hbWUgPSBsZWJEYXRhLmZpbGVuYW1lOwoKICAgICAgICAgICAgICAgIGlmICghZmlsZWtleS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgZmlsZWtleSA9IGxlYkRhdGEuZmlsZUtleTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIXRoLmxlbmd0aCkgdGggPSBsZWJEYXRhLmhlYWRlcjsKCiAgICAgICAgICAgICAgICBpZiAoIWxlYkRhdGEuZXhwb3J0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTc7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmNvbmNhdChsZWJEYXRhLmV4cG9ydCk7CiAgICAgICAgICAgICAgICBleGNlbERhdGEucGFnZSsrOwogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE5OwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgICAgICBfdGhpczMuJGV4cG9ydEV4Y2VsKHRoLCBmaWxla2V5LCBmaWxlTmFtZSwgZGF0YSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIik7CgogICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGdldEV4Y2VsRGF0YTogZnVuY3Rpb24gZ2V0RXhjZWxEYXRhKGV4Y2VsRGF0YSkgewogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIGV4cG9ydFByb2R1Y3RMaXN0KGV4Y2VsRGF0YSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgY2hhbmdlVGVtcGxhdGU6IGZ1bmN0aW9uIGNoYW5nZVRlbXBsYXRlKGUpIHsvLyB0aGlzLnRlbXBsYXRlID0gZTsKICAgIH0sCiAgICBmcmVpZ2h0OiBmdW5jdGlvbiBmcmVpZ2h0KCkgewogICAgICB0aGlzLiRyZWZzLnRlbXBsYXRlLmlzVGVtcGxhdGUgPSB0cnVlOwogICAgfSwKICAgIC8vIOaJuemHj+S4iuaetgogICAgb25TaGVsdmVzOiBmdW5jdGlvbiBvblNoZWx2ZXMoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwoKICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHRoaXMuJE1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup6KaB5LiK5p6255qE5ZWG5ZOBJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgICBpZHM6IHRoaXMuaWRzCiAgICAgICAgfTsKICAgICAgICBwcm9kdWN0U2hvd0FwaShkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzNC4kTWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwoKICAgICAgICAgIF90aGlzNC5nb29kSGVhZGUoKTsKCiAgICAgICAgICBfdGhpczQuZ2V0RGF0YUxpc3QoKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICBfdGhpczQuJE1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDmibnph4/kuIvmnrYKICAgIG9uRGlzbW91bnQ6IGZ1bmN0aW9uIG9uRGlzbW91bnQoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwoKICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHRoaXMuJE1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup6KaB5LiL5p6255qE5ZWG5ZOBJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgICBpZHM6IHRoaXMuaWRzCiAgICAgICAgfTsKICAgICAgICBwcm9kdWN0VW5zaG93QXBpKGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXM1LiRNZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CgogICAgICAgICAgX3RoaXM1LmFydEZyb20ucGFnZSA9IDE7CgogICAgICAgICAgX3RoaXM1Lmdvb2RIZWFkZSgpOwoKICAgICAgICAgIF90aGlzNS5nZXREYXRhTGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzNS4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8vIOWFqOmAiQogICAgLy8gb25TZWxlY3RUYWIgKHNlbGVjdGlvbikgewogICAgLy8gICAgIGxldCBkYXRhID0gW10KICAgIC8vICAgICBzZWxlY3Rpb24ubWFwKChpdGVtKSA9PiB7CiAgICAvLyAgICAgICAgIGRhdGEucHVzaChpdGVtLmlkKQogICAgLy8gICAgIH0pCiAgICAvLyAgICAgdGhpcy5pZHMgPSBkYXRhCiAgICAvLyB9LAogICAgLy/lhajpgInlkozlj5bmtojlhajpgInml7bop6blj5EKICAgIGhhbmRsZVNlbGVjdEFsbDogZnVuY3Rpb24gaGFuZGxlU2VsZWN0QWxsKHNlbGVjdGlvbikgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKCiAgICAgIGlmIChzZWxlY3Rpb24ubGVuZ3RoID09PSAwKSB7CiAgICAgICAgLy/ojrflj5Z0YWJsZeeahOaVsOaNru+8mwogICAgICAgIHZhciBkYXRhID0gdGhpcy4kcmVmcy50YWJsZS5kYXRhOwogICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaWYgKF90aGlzNi5zZWxlY3RlZElkcy5oYXMoaXRlbS5pZCkpIHsKICAgICAgICAgICAgX3RoaXM2LnNlbGVjdGVkSWRzLmRlbGV0ZShpdGVtLmlkKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzZWxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgX3RoaXM2LnNlbGVjdGVkSWRzLmFkZChpdGVtLmlkKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgIC8v56Gu5L+dZG9t5Yqg6L295a6M5q+VCiAgICAgICAgX3RoaXM2LnNldENoZWNrZWQoKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8gIOmAieS4reafkOS4gOihjAogICAgaGFuZGxlU2VsZWN0Um93OiBmdW5jdGlvbiBoYW5kbGVTZWxlY3RSb3coc2VsZWN0aW9uLCByb3cpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CgogICAgICB0aGlzLnNlbGVjdGVkSWRzLmFkZChyb3cuaWQpOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgLy/noa7kv51kb23liqDovb3lrozmr5UKICAgICAgICBfdGhpczcuc2V0Q2hlY2tlZCgpOwogICAgICB9KTsKICAgIH0sCiAgICBjbGVhckFsbDogZnVuY3Rpb24gY2xlYXJBbGwoc3RhdHVzKSB7CiAgICAgIHRoaXMuJHJlZnMudGFibGUuc2VsZWN0QWxsKHN0YXR1cyk7CiAgICB9LAogICAgLy8gIOWPlua2iOafkOS4gOihjAogICAgaGFuZGxlQ2FuY2VsUm93OiBmdW5jdGlvbiBoYW5kbGVDYW5jZWxSb3coc2VsZWN0aW9uLCByb3cpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CgogICAgICB0aGlzLnNlbGVjdGVkSWRzLmRlbGV0ZShyb3cuaWQpOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgLy/noa7kv51kb23liqDovb3lrozmr5UKICAgICAgICBfdGhpczguc2V0Q2hlY2tlZCgpOwogICAgICB9KTsKICAgIH0sCiAgICBzZXRDaGVja2VkOiBmdW5jdGlvbiBzZXRDaGVja2VkKCkgewogICAgICAvL+Wwhm5ldyBTZXQoKei9rOWMluS4uuaVsOe7hAogICAgICB0aGlzLmlkcyA9IF90b0NvbnN1bWFibGVBcnJheSh0aGlzLnNlbGVjdGVkSWRzKTsgLy8g5om+5Yiw57uR5a6a55qEdGFibGXnmoRyZWblr7nlupTnmoRkb23vvIzmib7liLB0YWJsZeeahG9iakRhdGHlr7nosaHvvIxvYmpEYXRh5L+d5a2Y55qE5piv5b2T5YmN6aG155qE5pWw5o2uCgogICAgICB2YXIgb2JqRGF0YSA9IHRoaXMuJHJlZnMudGFibGUub2JqRGF0YTsKCiAgICAgIGZvciAodmFyIGluZGV4IGluIG9iakRhdGEpIHsKICAgICAgICBpZiAodGhpcy5zZWxlY3RlZElkcy5oYXMob2JqRGF0YVtpbmRleF0uaWQpKSB7CiAgICAgICAgICBvYmpEYXRhW2luZGV4XS5faXNDaGVja2VkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvLyDmt7vliqDmt5jlrp3llYblk4HmiJDlip8KICAgIG9uQ2xvc2U6IGZ1bmN0aW9uIG9uQ2xvc2UoKSB7CiAgICAgIHRoaXMubW9kYWxzID0gZmFsc2U7CiAgICB9LAogICAgLy8g5aSN5Yi25reY5a6dCiAgICBvbkNvcHk6IGZ1bmN0aW9uIG9uQ29weSgpIHsKICAgICAgdGhpcy4kcm91dGVyLnB1c2goewogICAgICAgIHBhdGg6ICcvYWRtaW4vcHJvZHVjdC9hZGRfcHJvZHVjdCcsCiAgICAgICAgcXVlcnk6IHsKICAgICAgICAgIHR5cGU6IC0xCiAgICAgICAgfQogICAgICB9KTsgLy8gdGhpcy5tb2RhbHMgPSB0cnVlCiAgICB9LAogICAgLy8gdGFi6YCJ5oupCiAgICBvbkNsaWNrVGFiOiBmdW5jdGlvbiBvbkNsaWNrVGFiKG5hbWUpIHsKICAgICAgdGhpcy5hcnRGcm9tLnR5cGUgPSBuYW1lOwogICAgICB0aGlzLmNvbHVtbnMyID0gX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMuY29sdW1ucyk7CgogICAgICBpZiAobmFtZSAhPT0gJzEnICYmIG5hbWUgIT09ICcyJykgewogICAgICAgIHRoaXMuY29sdW1uczIuc2hpZnQoewogICAgICAgICAgdHlwZTogJ3NlbGVjdGlvbicsCiAgICAgICAgICB3aWR0aDogNjAsCiAgICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdGhpcy5hcnRGcm9tLnBhZ2UgPSAxOwogICAgICB0aGlzLnNlbGVjdGVkSWRzLmNsZWFyKCk7CiAgICAgIHRoaXMuZ2V0RGF0YUxpc3QoKTsKICAgIH0sCiAgICAvLyDkuIvmi4nmoJEKICAgIGhhbmRsZUNoZWNrQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGVja0NoYW5nZShkYXRhKSB7CiAgICAgIHZhciB2YWx1ZSA9ICcnOwogICAgICB2YXIgdGl0bGUgPSAnJzsKICAgICAgdGhpcy5saXN0ID0gW107CiAgICAgIHRoaXMuYXJ0RnJvbS5jYXRlX2lkID0gMDsKICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkgewogICAgICAgIHZhbHVlICs9ICIiLmNvbmNhdChpdGVtLmlkLCAiLCIpOwogICAgICAgIHRpdGxlICs9ICIiLmNvbmNhdChpdGVtLnRpdGxlLCAiLCIpOwogICAgICB9KTsKICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgdmFsdWUubGVuZ3RoIC0gMSk7CiAgICAgIHRpdGxlID0gdGl0bGUuc3Vic3RyaW5nKDAsIHRpdGxlLmxlbmd0aCAtIDEpOwogICAgICB0aGlzLmxpc3QucHVzaCh7CiAgICAgICAgdmFsdWU6IHZhbHVlLAogICAgICAgIHRpdGxlOiB0aXRsZQogICAgICB9KTsKICAgICAgdGhpcy5hcnRGcm9tLmNhdGVfaWQgPSB2YWx1ZTsKICAgICAgdGhpcy5nZXREYXRhTGlzdCgpOwogICAgfSwKICAgIC8vIOiOt+WPluWVhuWTgeihqOWNleWktOaVsOmHjwogICAgZ29vZEhlYWRlOiBmdW5jdGlvbiBnb29kSGVhZGUoKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwoKICAgICAgZ2V0R29vZEhlYWRlKCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM5LmhlYWRlTnVtID0gcmVzLmRhdGEubGlzdDsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzOS4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5ZWG5ZOB5YiG57G777ybCiAgICBnb29kc0NhdGVnb3J5OiBmdW5jdGlvbiBnb29kc0NhdGVnb3J5KCkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CgogICAgICB0cmVlTGlzdEFwaSgxKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczEwLnRyZWVTZWxlY3QgPSByZXMuZGF0YTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzMTAuJE1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWVhuWTgeWIl+ihqO+8mwogICAgZ2V0RGF0YUxpc3Q6IGZ1bmN0aW9uIGdldERhdGFMaXN0KCkgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLmFydEZyb20uY2F0ZV9pZCA9IHRoaXMuYXJ0RnJvbS5jYXRlX2lkIHx8ICcnOwogICAgICBnZXRHb29kcyh0aGlzLmFydEZyb20pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIHZhciBkYXRhID0gcmVzLmRhdGE7CiAgICAgICAgX3RoaXMxMS50YWJsZUxpc3QgPSBkYXRhLmxpc3Q7CiAgICAgICAgX3RoaXMxMS50b3RhbCA9IHJlcy5kYXRhLmNvdW50OwoKICAgICAgICBfdGhpczExLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAvL+ehruS/nWRvbeWKoOi9veWujOavlQogICAgICAgICAgX3RoaXMxMS5zZXRDaGVja2VkKCk7CiAgICAgICAgfSk7CgogICAgICAgIF90aGlzMTEubG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMxMS5sb2FkaW5nID0gZmFsc2U7CgogICAgICAgIF90aGlzMTEuJE1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIHBhZ2VDaGFuZ2U6IGZ1bmN0aW9uIHBhZ2VDaGFuZ2Uoc3RhdHVzKSB7CiAgICAgIHRoaXMuYXJ0RnJvbS5wYWdlID0gc3RhdHVzOwogICAgICB0aGlzLmdldERhdGFMaXN0KCk7CiAgICB9LAogICAgLy8g6KGo5qC85pCc57SiCiAgICB1c2VyU2VhcmNoczogZnVuY3Rpb24gdXNlclNlYXJjaHMoKSB7CiAgICAgIHRoaXMuYXJ0RnJvbS5wYWdlID0gMTsKICAgICAgdGhpcy5nZXREYXRhTGlzdCgpOwogICAgfSwKICAgIC8vIOS4iuS4i+aetgogICAgY2hhbmdlU3dpdGNoOiBmdW5jdGlvbiBjaGFuZ2VTd2l0Y2gocm93KSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKCiAgICAgIFBvc3Rnb29kc0lzU2hvdyhyb3cuaWQsIHJvdy5pc19zaG93KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczEyLiRNZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CgogICAgICAgIF90aGlzMTIuZ29vZEhlYWRlKCk7CgogICAgICAgIF90aGlzMTIuZ2V0RGF0YUxpc3QoKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIHJvdy5pc19zaG93ID0gIXJvdy5pc19zaG93ID8gMSA6IDA7CgogICAgICAgIF90aGlzMTIuJE1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOaVsOaNruWvvOWHuu+8mwogICAgZXhwb3J0RGF0YTogZnVuY3Rpb24gZXhwb3J0RGF0YSgpIHsKICAgICAgdmFyIHRoID0gWyfllYblk4HlkI3np7AnLCAn5ZWG5ZOB566A5LuLJywgJ+WVhuWTgeWIhuexuycsICfku7fmoLwnLCAn5bqT5a2YJywgJ+mUgOmHjycsICfmlLbol4/kurrmlbAnXTsKICAgICAgdmFyIGZpbHRlclZhbCA9IFsnc3RvcmVfbmFtZScsICdzdG9yZV9pbmZvJywgJ2NhdGVfbmFtZScsICdwcmljZScsICdzdG9jaycsICdzYWxlcycsICdjb2xsZWN0J107CiAgICAgIHRoaXMud2hlcmUucGFnZSA9ICdub3BhZ2UnOwogICAgICBnZXRHb29kcyh0aGlzLndoZXJlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICB2YXIgZGF0YSA9IHJlcy5kYXRhLm1hcChmdW5jdGlvbiAodikgewogICAgICAgICAgcmV0dXJuIGZpbHRlclZhbC5tYXAoZnVuY3Rpb24gKGspIHsKICAgICAgICAgICAgcmV0dXJuIHZba107CiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICB2YXIgZmlsZVRpbWUgPSBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpOwogICAgICAgIHZhciBmaWxlTmFtZSA9ICfllYbmiLfmlbDmja5fJyArIGZpbGVUaW1lLAogICAgICAgICAgICBmaWxlVHlwZSA9ICd4bHN4JywKICAgICAgICAgICAgc2hlZXROYW1lID0gJ+WVhuaIt+aVsOaNric7CiAgICAgICAgdG9FeGNlbCh7CiAgICAgICAgICB0aDogdGgsCiAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lLAogICAgICAgICAgZmlsZVR5cGU6IGZpbGVUeXBlLAogICAgICAgICAgc2hlZXROYW1lOiBzaGVldE5hbWUKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5bGe5oCn5by55Ye677ybCiAgICBhdHRyVGFwOiBmdW5jdGlvbiBhdHRyVGFwKCkgewogICAgICB0aGlzLmF0dHJUZW1wbGF0ZSA9IHRydWU7CiAgICB9CiAgfSwgX2RlZmluZVByb3BlcnR5KF9tZXRob2RzLCAiY2hhbmdlVGVtcGxhdGUiLCBmdW5jdGlvbiBjaGFuZ2VUZW1wbGF0ZShtc2cpIHsKICAgIHRoaXMuYXR0clRlbXBsYXRlID0gbXNnOwogIH0pLCBfZGVmaW5lUHJvcGVydHkoX21ldGhvZHMsICJlZGl0IiwgZnVuY3Rpb24gZWRpdChyb3cpIHsKICAgIHRoaXMuJHJvdXRlci5wdXNoKHsKICAgICAgcGF0aDogJy9hZG1pbi9wcm9kdWN0L2FkZF9wcm9kdWN0LycgKyByb3cuaWQKICAgIH0pOwogIH0pLCBfZGVmaW5lUHJvcGVydHkoX21ldGhvZHMsICJkZWwiLCBmdW5jdGlvbiBkZWwocm93LCB0aXQsIG51bSkgewogICAgdmFyIF90aGlzMTMgPSB0aGlzOwoKICAgIHZhciBkZWxmcm9tRGF0YSA9IHsKICAgICAgdGl0bGU6IHRpdCwKICAgICAgbnVtOiBudW0sCiAgICAgIHVybDogInByb2R1Y3QvcHJvZHVjdC8iLmNvbmNhdChyb3cuaWQpLAogICAgICBtZXRob2Q6ICdERUxFVEUnLAogICAgICBpZHM6ICcnLAogICAgICB1bjogMQogICAgfTsKICAgIHRoaXMuJG1vZGFsU3VyZShkZWxmcm9tRGF0YSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgIF90aGlzMTMuJE1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKCiAgICAgIF90aGlzMTMudGFibGVMaXN0LnNwbGljZShudW0sIDEpOwoKICAgICAgX3RoaXMxMy5nb29kSGVhZGUoKTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgX3RoaXMxMy4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgIH0pOwogIH0pLCBfbWV0aG9kcykKfTs="},{"version":3,"mappings":"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","names":["getGoodHeade","getGoods","PostgoodsIsShow","treeListApi","productShowApi","productUnshowApi","storeProductApi","batchSetting","productGetTemplateApi","name","components","expandRow","attribute","taoBao","goodsDetail","userLabel","couponList","computed","mapState","data","template","modals","batchModal","labelShow","batchType","batchFormData","cate_id","logistics","freight","postage","temp_id","give_integral","label_id","coupon_ids","recommend","ruleBatch","couponName","dataLabel","templateList","grid","xl","lg","md","sm","xs","artFrom","page","limit","type","store_name","list","tableList","headeNum","treeSelect","loading","columns","width","render","props","row","align","title","key","slot","minWidth","filters","label","value","filterMethod","filterMultiple","fixed","total","attrTemplate","selectedIds","ids","goodsId","isProductBox","watch","$route","created","activated","methods","batchSub","console","activeIds","then","catch","clearBatchData","status","batchSelect","activeData","nameId","id","names","handleClose","unique","arr","productGetTemplate","labelClose","look","logisticsBtn","e","openLabel","closeLabel","addCoupon","getPath","exports","th","filekey","fileName","excelData","JSON","i","lebData","getExcelData","exportProductList","resolve","changeTemplate","onShelves","onDismount","handleSelectAll","selection","handleSelectRow","clearAll","handleCancelRow","setChecked","objData","onClose","onCopy","path","query","onClickTab","handleCheckChange","goodHeade","goodsCategory","getDataList","pageChange","userSearchs","changeSwitch","exportData","toExcel","fileType","sheetName","attrTap","msg","tit","num","url","method","un"],"sourceRoot":"src/pages/product/productList","sources":["index.vue"],"sourcesContent":["<template>\r\n <div class=\"article-manager\">\r\n <Card :bordered=\"false\" dis-hover class=\"ivu-mt\">\r\n <Tabs class=\"mb20\" v-model=\"artFrom.type\" @on-click=\"onClickTab\">\r\n <TabPane\r\n :label=\"item.name + '(' + item.count + ')'\"\r\n :name=\"item.type.toString()\"\r\n v-for=\"(item, index) in headeNum\"\r\n :key=\"index\"\r\n />\r\n </Tabs>\r\n <Form ref=\"artFrom\" :model=\"artFrom\" :label-width=\"75\" label-position=\"right\" @submit.native.prevent>\r\n <Row type=\"flex\" :gutter=\"24\">\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"商品分类:\" label-for=\"pid\">\r\n <Select v-model=\"artFrom.cate_id\" placeholder=\"请选择商品分类\" clearable @on-change=\"userSearchs\">\r\n <Option v-for=\"item in treeSelect\" :value=\"item.id\" :key=\"item.id\">{{\r\n item.html + item.cate_name\r\n }}</Option>\r\n </Select>\r\n </FormItem>\r\n </Col>\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"商品搜索:\" label-for=\"store_name\">\r\n <Input\r\n search\r\n enter-button\r\n placeholder=\"请输入商品名称/关键字/ID\"\r\n v-model=\"artFrom.store_name\"\r\n @on-search=\"userSearchs\"\r\n />\r\n </FormItem>\r\n </Col>\r\n </Row>\r\n </Form>\r\n <div class=\"Button\">\r\n <router-link v-auth=\"['product-product-save']\" :to=\"'/admin/product/add_product'\"\r\n ><Button type=\"primary\" class=\"bnt mr15\" icon=\"md-add\">添加商品</Button></router-link\r\n >\r\n <Button v-auth=\"['product-crawl-save']\" type=\"success\" class=\"bnt mr15\" @click=\"onCopy\">商品采集</Button>\r\n <Dropdown class=\"bnt mr15\" @on-click=\"batchSelect\" :transfer=\"true\">\r\n <Button type=\"info\">\r\n 批量修改\r\n <Icon type=\"ios-arrow-down\"></Icon>\r\n </Button>\r\n <DropdownMenu slot=\"list\">\r\n <DropdownItem :name=\"1\">商品分类</DropdownItem>\r\n <DropdownItem :name=\"2\">物流设置</DropdownItem>\r\n <DropdownItem :name=\"3\">购买送积分</DropdownItem>\r\n <DropdownItem :name=\"4\">购买送优惠券</DropdownItem>\r\n <DropdownItem :name=\"5\">关联用户标签</DropdownItem>\r\n <DropdownItem :name=\"6\">活动推荐</DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n <Button\r\n v-auth=\"['product-product-product_show']\"\r\n class=\"bnt mr15\"\r\n @click=\"onDismount\"\r\n v-show=\"artFrom.type === '1'\"\r\n >批量下架</Button\r\n >\r\n <Button\r\n v-auth=\"['product-product-product_show']\"\r\n class=\"bnt mr15\"\r\n @click=\"onShelves\"\r\n v-show=\"artFrom.type === '2'\"\r\n >批量上架</Button\r\n >\r\n <Button v-auth=\"['export-storeProduct']\" class=\"export\" icon=\"ios-share-outline\" @click=\"exports\">导出</Button>\r\n </div>\r\n <Table\r\n ref=\"table\"\r\n :columns=\"artFrom.type !== '1' && artFrom.type !== '2' ? columns2 : columns\"\r\n :data=\"tableList\"\r\n class=\"ivu-mt\"\r\n :loading=\"loading\"\r\n highlight-row\r\n @on-select=\"handleSelectRow\"\r\n @on-select-cancel=\"handleCancelRow\"\r\n @on-select-all=\"handleSelectAll\"\r\n @on-select-all-cancel=\"handleSelectAll\"\r\n no-data-text=\"暂无数据\"\r\n no-filtered-data-text=\"暂无筛选结果\"\r\n >\r\n <template slot-scope=\"{ row }\" slot=\"id\">\r\n {{ row.id }}\r\n </template>\r\n <template slot-scope=\"{ row }\" slot=\"image\">\r\n <div class=\"tabBox_img\" v-viewer>\r\n <img v-lazy=\"row.image\" />\r\n </div>\r\n </template>\r\n <template slot-scope=\"{ row, index }\" slot=\"state\">\r\n <i-switch\r\n v-model=\"row.is_show\"\r\n :value=\"row.is_show\"\r\n :true-value=\"1\"\r\n :false-value=\"0\"\r\n @on-change=\"changeSwitch(row)\"\r\n size=\"large\"\r\n >\r\n <span slot=\"open\">上架</span>\r\n <span slot=\"close\">下架</span>\r\n </i-switch>\r\n </template>\r\n <template slot-scope=\"{ row, index }\" slot=\"action\">\r\n <a @click=\"look(row)\">查看</a>\r\n <Divider type=\"vertical\" />\r\n <a @click=\"edit(row)\">编辑</a>\r\n <Divider type=\"vertical\" />\r\n <router-link :to=\"{ path: '/admin/product/product_reply/' + row.id }\"><a>查看评论</a></router-link>\r\n <Divider type=\"vertical\" />\r\n <a @click=\"del(row, '恢复商品', index)\" v-if=\"artFrom.type === '6'\">恢复商品</a>\r\n <a @click=\"del(row, '移入回收站', index)\" v-else>移到回收站</a>\r\n </template>\r\n </Table>\r\n <div class=\"acea-row row-right page\">\r\n <Page\r\n :total=\"total\"\r\n :current=\"artFrom.page\"\r\n show-elevator\r\n show-total\r\n @on-change=\"pageChange\"\r\n :page-size=\"artFrom.limit\"\r\n />\r\n </div>\r\n <attribute :attrTemplate=\"attrTemplate\" v-on:changeTemplate=\"changeTemplate\"></attribute>\r\n </Card>\r\n <!-- 生成淘宝京东表单-->\r\n <Modal\r\n v-model=\"modals\"\r\n class=\"Box\"\r\n scrollable\r\n footer-hide\r\n closable\r\n title=\"复制淘宝、天猫、京东、苏宁、1688\"\r\n :mask-closable=\"false\"\r\n width=\"1200\"\r\n height=\"500\"\r\n >\r\n <tao-bao ref=\"taobaos\" v-if=\"modals\" @on-close=\"onClose\"></tao-bao>\r\n </Modal>\r\n <Modal\r\n v-model=\"batchModal\"\r\n class=\"batch-box\"\r\n scrollable\r\n closable\r\n title=\"批量设置\"\r\n :mask-closable=\"false\"\r\n width=\"1000\"\r\n @on-ok=\"batchSub\"\r\n @on-visible-change=\"clearBatchData\"\r\n >\r\n <Form\r\n class=\"batchFormData\"\r\n ref=\"batchFormData\"\r\n :rules=\"ruleBatch\"\r\n :model=\"batchFormData\"\r\n :label-width=\"120\"\r\n label-position=\"right\"\r\n @submit.native.prevent\r\n >\r\n <Row :gutter=\"24\" type=\"flex\">\r\n <Col span=\"24\" v-if=\"batchType == 1\">\r\n <Divider orientation=\"left\">基础设置</Divider>\r\n <FormItem label=\"商品分类:\" prop=\"cate_id\">\r\n <Select v-model=\"batchFormData.cate_id\" placeholder=\"请选择商品分类\" multiple class=\"perW20\">\r\n <Option v-for=\"item in treeSelect\" :disabled=\"item.pid === 0\" :value=\"item.id\" :key=\"item.id\">{{\r\n item.html + item.cate_name\r\n }}</Option>\r\n </Select>\r\n </FormItem>\r\n </Col>\r\n <Col span=\"24\" v-if=\"batchType == 2\">\r\n <Divider orientation=\"left\">物流设置</Divider>\r\n <FormItem label=\"物流方式:\" prop=\"logistics\">\r\n <CheckboxGroup v-model=\"batchFormData.logistics\" @on-change=\"logisticsBtn\">\r\n <Checkbox label=\"1\">快递</Checkbox>\r\n\r\n <Checkbox label=\"2\">到店核销</Checkbox>\r\n </CheckboxGroup>\r\n </FormItem>\r\n <FormItem label=\"运费设置:\">\r\n <RadioGroup v-model=\"batchFormData.freight\">\r\n <!-- <Radio :label=\"1\">包邮</Radio> -->\r\n <Radio :label=\"2\">固定邮费</Radio>\r\n <Radio :label=\"3\">运费模板</Radio>\r\n </RadioGroup>\r\n </FormItem>\r\n <FormItem label=\"\" v-if=\"batchFormData.freight == 2\">\r\n <div class=\"acea-row\">\r\n <InputNumber :min=\"0\" v-model=\"batchFormData.postage\" placeholder=\"请输入金额\" class=\"perW20 maxW\" />\r\n </div>\r\n </FormItem>\r\n <FormItem label=\"\" v-if=\"batchFormData.freight == 3\" prop=\"temp_id\">\r\n <div class=\"acea-row\">\r\n <Select v-model=\"batchFormData.temp_id\" clearable placeholder=\"请选择运费模板\" class=\"perW20 maxW\">\r\n <Option v-for=\"(item, index) in templateList\" :value=\"item.id\" :key=\"index\">{{ item.name }}</Option>\r\n </Select>\r\n </div>\r\n </FormItem>\r\n </Col>\r\n <Col span=\"24\" v-if=\"[3, 4, 5, 6].includes(batchType)\">\r\n <Divider orientation=\"left\" v-if=\"[3, 4, 5, 6].includes(batchType)\">营销设置</Divider>\r\n <FormItem label=\"赠送积分:\" prop=\"give_integral\" v-if=\"batchType == 3\">\r\n <InputNumber v-model=\"batchFormData.give_integral\" :min=\"0\" :max=\"999999\" placeholder=\"请输入积分\" />\r\n </FormItem>\r\n <FormItem label=\"赠送优惠券:\" v-if=\"batchType == 4\">\r\n <div v-if=\"couponName.length\" class=\"mb20\">\r\n <Tag closable v-for=\"(item, index) in couponName\" :key=\"index\" @on-close=\"handleClose(item)\">{{\r\n item.title\r\n }}</Tag>\r\n </div>\r\n <Button type=\"primary\" @click=\"addCoupon\">添加优惠券</Button>\r\n </FormItem>\r\n <FormItem label=\"关联用户标签:\" prop=\"label_id\" v-if=\"batchType == 5\">\r\n <div style=\"display: flex\">\r\n <div class=\"labelInput acea-row row-between-wrapper\" @click=\"openLabel\">\r\n <div style=\"width: 90%\">\r\n <div v-if=\"dataLabel.length\">\r\n <Tag closable v-for=\"(item, index) in dataLabel\" @on-close=\"closeLabel(item)\" :key=\"index\">{{\r\n item.label_name\r\n }}</Tag>\r\n </div>\r\n <span class=\"span\" v-else>选择用户关联标签</span>\r\n </div>\r\n <div class=\"iconfont iconxiayi\"></div>\r\n </div>\r\n </div>\r\n </FormItem>\r\n <FormItem label=\"商品推荐:\" v-if=\"batchType == 6\">\r\n <CheckboxGroup v-model=\"batchFormData.recommend\">\r\n <Checkbox label=\"is_hot\">热卖单品</Checkbox>\r\n <Checkbox label=\"is_benefit\">促销单品</Checkbox>\r\n <Checkbox label=\"is_best\">精品推荐</Checkbox>\r\n <Checkbox label=\"is_new\">首发新品</Checkbox>\r\n <Checkbox label=\"is_good\">优品推荐</Checkbox>\r\n </CheckboxGroup>\r\n </FormItem>\r\n </Col>\r\n </Row>\r\n </Form>\r\n </Modal>\r\n <!-- 用户标签 -->\r\n <Modal\r\n v-model=\"labelShow\"\r\n scrollable\r\n title=\"请选择用户标签\"\r\n :closable=\"false\"\r\n width=\"500\"\r\n :footer-hide=\"true\"\r\n :mask-closable=\"false\"\r\n >\r\n <userLabel ref=\"userLabel\" @activeData=\"activeData\" @close=\"labelClose\"></userLabel>\r\n </Modal>\r\n <!-- 商品弹窗 -->\r\n <div v-if=\"isProductBox\">\r\n <div class=\"bg\" @click=\"isProductBox = false\"></div>\r\n <goodsDetail :goodsId=\"goodsId\"></goodsDetail>\r\n </div>\r\n <coupon-list ref=\"couponTemplates\" @nameId=\"nameId\" :couponids=\"batchFormData.coupon_ids\"></coupon-list>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport expandRow from './tableExpand.vue';\r\nimport attribute from './attribute';\r\nimport toExcel from '../../../utils/Excel.js';\r\nimport { mapState } from 'vuex';\r\nimport taoBao from './taoBao';\r\nimport goodsDetail from './components/goodsDetail.vue';\r\nimport couponList from '@/components/couponList';\r\nimport { exportProductList } from '@/api/export';\r\n\r\nimport {\r\n getGoodHeade,\r\n getGoods,\r\n PostgoodsIsShow,\r\n treeListApi, // 分类列表\r\n productShowApi,\r\n productUnshowApi,\r\n storeProductApi,\r\n batchSetting,\r\n productGetTemplateApi,\r\n} from '@/api/product';\r\nimport userLabel from '@/components/labelList';\r\n\r\nexport default {\r\n name: 'product_productList',\r\n components: { expandRow, attribute, taoBao, goodsDetail, userLabel, couponList },\r\n computed: {\r\n ...mapState('userLevel', ['categoryId']),\r\n },\r\n data() {\r\n return {\r\n template: false,\r\n modals: false,\r\n batchModal: false,\r\n labelShow: false,\r\n batchType: 1, // 批量设置类型\r\n batchFormData: {\r\n cate_id: [],\r\n logistics: [],\r\n freight: 2,\r\n postage: 0,\r\n temp_id: null,\r\n give_integral: 0,\r\n label_id: [],\r\n coupon_ids: [],\r\n recommend: [],\r\n },\r\n ruleBatch: {},\r\n couponName: [], // 优惠券\r\n dataLabel: [], // 标签\r\n templateList: [], // 运费模版\r\n grid: {\r\n xl: 6,\r\n lg: 8,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n artFrom: {\r\n page: 1,\r\n limit: 15,\r\n cate_id: '',\r\n type: '1',\r\n store_name: ''\r\n },\r\n list: [],\r\n tableList: [],\r\n headeNum: [],\r\n treeSelect: [],\r\n loading: false,\r\n columns: [\r\n {\r\n type: 'expand',\r\n width: 50,\r\n render: (h, params) => {\r\n return h(expandRow, {\r\n props: {\r\n row: params.row,\r\n },\r\n });\r\n },\r\n },\r\n {\r\n type: 'selection',\r\n width: 60,\r\n align: 'center',\r\n },\r\n {\r\n title: '商品ID',\r\n key: 'id',\r\n width: 80,\r\n },\r\n {\r\n title: '商品图',\r\n slot: 'image',\r\n minWidth: 80,\r\n },\r\n {\r\n title: '商品名称',\r\n key: 'store_name',\r\n minWidth: 250,\r\n },\r\n {\r\n title: '商品类型',\r\n key: 'product_type',\r\n minWidth: 100,\r\n },\r\n {\r\n title: '商品售价',\r\n key: 'price',\r\n minWidth: 90,\r\n },\r\n {\r\n title: '销量',\r\n key: 'sales',\r\n minWidth: 90,\r\n },\r\n {\r\n title: '库存',\r\n key: 'stock',\r\n minWidth: 80,\r\n },\r\n {\r\n title: '排序',\r\n key: 'sort',\r\n minWidth: 70,\r\n },\r\n {\r\n title: '状态',\r\n slot: 'state',\r\n width: 100,\r\n filters: [\r\n {\r\n label: '上架',\r\n value: 1,\r\n },\r\n {\r\n label: '下架',\r\n value: 0,\r\n },\r\n ],\r\n filterMethod(value, row) {\r\n return row.is_show === value;\r\n },\r\n filterMultiple: false,\r\n },\r\n {\r\n title: '操作',\r\n slot: 'action',\r\n fixed: 'right',\r\n minWidth: 220,\r\n },\r\n ],\r\n data: [],\r\n total: 0,\r\n attrTemplate: false,\r\n selectedIds: new Set(), //选中合并项的id\r\n ids: [],\r\n goodsId: '',\r\n isProductBox: false,\r\n treeSelect: [],\r\n };\r\n },\r\n watch: {\r\n $route() {\r\n if (this.$route.fullPath === '/admin/product/product_list?type=5') {\r\n this.getPath();\r\n }\r\n },\r\n },\r\n created() {},\r\n activated() {\r\n this.goodHeade();\r\n this.goodsCategory();\r\n if (this.$route.fullPath === '/admin/product/product_list?type=5') {\r\n this.getPath();\r\n } else {\r\n this.getDataList();\r\n }\r\n },\r\n methods: {\r\n batchSub() {\r\n console.log(this.selectedIds, this.ids);\r\n let data = this.batchFormData;\r\n data.ids = this.ids;\r\n data.type = this.batchType;\r\n let activeIds = [];\r\n this.dataLabel.forEach((item) => {\r\n activeIds.push(item.id);\r\n });\r\n data.label_id = activeIds;\r\n batchSetting(data)\r\n .then((res) => {\r\n this.$Message.success(res.msg);\r\n this.getDataList();\r\n this.clearBatchData();\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err.msg);\r\n });\r\n },\r\n clearBatchData(status) {\r\n if (!status) {\r\n this.batchFormData = {\r\n cate_id: [],\r\n logistics: [],\r\n freight: 0,\r\n postage: null,\r\n temp_id: null,\r\n give_integral: null,\r\n label_id: [],\r\n coupon_ids: [],\r\n recommend: [],\r\n };\r\n this.ids = [];\r\n this.dataLabel = [];\r\n this.clearAll(false);\r\n }\r\n },\r\n // 批量设置商品\r\n batchSelect(type) {\r\n console.log(type);\r\n if (!this.ids.length) {\r\n this.$Message.warning('请选择要设置的商品');\r\n } else {\r\n this.batchType = type;\r\n this.batchModal = true;\r\n this.productGetTemplate();\r\n }\r\n },\r\n activeData(dataLabel) {\r\n this.labelShow = false;\r\n this.dataLabel = dataLabel;\r\n },\r\n nameId(id, names) {\r\n this.batchFormData.coupon_ids = id;\r\n this.couponName = this.unique(names);\r\n },\r\n handleClose(name) {\r\n let index = this.couponName.indexOf(name);\r\n this.couponName.splice(index, 1);\r\n this.formValidate.coupon_ids.splice(index, 1);\r\n },\r\n //对象数组去重;\r\n unique(arr) {\r\n const res = new Map();\r\n return arr.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1));\r\n },\r\n // 获取运费模板;\r\n productGetTemplate() {\r\n productGetTemplateApi().then((res) => {\r\n this.templateList = res.data;\r\n });\r\n },\r\n // 标签弹窗关闭\r\n labelClose() {\r\n this.labelShow = false;\r\n },\r\n look(row) {\r\n this.goodsId = row.id;\r\n this.isProductBox = true;\r\n },\r\n // 物流方式\r\n logisticsBtn(e) {\r\n this.batchFormData.logistics = e;\r\n },\r\n // 关联用户标签\r\n openLabel(row) {\r\n this.labelShow = true;\r\n this.$refs.userLabel.userLabel(JSON.parse(JSON.stringify(this.dataLabel)));\r\n },\r\n closeLabel(label) {\r\n let index = this.dataLabel.indexOf(this.dataLabel.filter((d) => d.id == label.id)[0]);\r\n this.dataLabel.splice(index, 1);\r\n },\r\n // 添加优惠券\r\n addCoupon() {\r\n this.$refs.couponTemplates.isTemplate = true;\r\n this.$refs.couponTemplates.tableList();\r\n },\r\n getPath() {\r\n this.columns2 = [...this.columns];\r\n if (name !== '1' && name !== '2') {\r\n this.columns2.shift({\r\n type: 'selection',\r\n width: 60,\r\n align: 'center',\r\n });\r\n }\r\n this.artFrom.page = 1;\r\n this.artFrom.type = this.$route.query.type.toString();\r\n this.getDataList();\r\n },\r\n // 导出\r\n async exports() {\r\n let [th, filekey, data, fileName] = [[], [], [], ''];\r\n let excelData = JSON.parse(JSON.stringify(this.artFrom));\r\n excelData.page = 1;\r\n excelData.limit = 50;\r\n for (let i = 0; i < excelData.page + 1; i++) {\r\n let lebData = await this.getExcelData(excelData);\r\n if (!fileName) fileName = lebData.filename;\r\n if (!filekey.length) {\r\n filekey = lebData.fileKey;\r\n }\r\n if (!th.length) th = lebData.header;\r\n if (lebData.export.length) {\r\n data = data.concat(lebData.export);\r\n excelData.page++;\r\n } else {\r\n this.$exportExcel(th, filekey, fileName, data);\r\n return;\r\n }\r\n }\r\n },\r\n getExcelData(excelData) {\r\n return new Promise((resolve, reject) => {\r\n exportProductList(excelData).then((res) => {\r\n resolve(res.data);\r\n });\r\n });\r\n },\r\n changeTemplate(e) {\r\n // this.template = e;\r\n },\r\n freight() {\r\n this.$refs.template.isTemplate = true;\r\n },\r\n // 批量上架\r\n onShelves() {\r\n if (this.ids.length === 0) {\r\n this.$Message.warning('请选择要上架的商品');\r\n } else {\r\n let data = {\r\n ids: this.ids,\r\n };\r\n productShowApi(data)\r\n .then((res) => {\r\n this.$Message.success(res.msg);\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n }\r\n },\r\n // 批量下架\r\n onDismount() {\r\n if (this.ids.length === 0) {\r\n this.$Message.warning('请选择要下架的商品');\r\n } else {\r\n let data = {\r\n ids: this.ids,\r\n };\r\n productUnshowApi(data)\r\n .then((res) => {\r\n this.$Message.success(res.msg);\r\n this.artFrom.page = 1;\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n }\r\n },\r\n\r\n // 全选\r\n // onSelectTab (selection) {\r\n // let data = []\r\n // selection.map((item) => {\r\n // data.push(item.id)\r\n // })\r\n // this.ids = data\r\n // },\r\n //全选和取消全选时触发\r\n handleSelectAll(selection) {\r\n if (selection.length === 0) {\r\n //获取table的数据;\r\n let data = this.$refs.table.data;\r\n data.forEach((item) => {\r\n if (this.selectedIds.has(item.id)) {\r\n this.selectedIds.delete(item.id);\r\n }\r\n });\r\n } else {\r\n selection.forEach((item) => {\r\n this.selectedIds.add(item.id);\r\n });\r\n }\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n this.setChecked();\r\n });\r\n },\r\n // 选中某一行\r\n handleSelectRow(selection, row) {\r\n this.selectedIds.add(row.id);\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n this.setChecked();\r\n });\r\n },\r\n clearAll(status) {\r\n this.$refs.table.selectAll(status);\r\n },\r\n // 取消某一行\r\n handleCancelRow(selection, row) {\r\n this.selectedIds.delete(row.id);\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n this.setChecked();\r\n });\r\n },\r\n setChecked() {\r\n //将new Set()转化为数组\r\n this.ids = [...this.selectedIds];\r\n // 找到绑定的table的ref对应的dom,找到table的objData对象,objData保存的是当前页的数据\r\n let objData = this.$refs.table.objData;\r\n for (let index in objData) {\r\n if (this.selectedIds.has(objData[index].id)) {\r\n objData[index]._isChecked = true;\r\n }\r\n }\r\n },\r\n // 添加淘宝商品成功\r\n onClose() {\r\n this.modals = false;\r\n },\r\n // 复制淘宝\r\n onCopy() {\r\n this.$router.push({\r\n path: '/admin/product/add_product',\r\n query: { type: -1 },\r\n });\r\n // this.modals = true\r\n },\r\n // tab选择\r\n onClickTab(name) {\r\n this.artFrom.type = name;\r\n this.columns2 = [...this.columns];\r\n if (name !== '1' && name !== '2') {\r\n this.columns2.shift({\r\n type: 'selection',\r\n width: 60,\r\n align: 'center',\r\n });\r\n }\r\n this.artFrom.page = 1;\r\n this.selectedIds.clear();\r\n this.getDataList();\r\n },\r\n // 下拉树\r\n handleCheckChange(data) {\r\n let value = '';\r\n let title = '';\r\n this.list = [];\r\n this.artFrom.cate_id = 0;\r\n data.forEach((item, index) => {\r\n value += `${item.id},`;\r\n title += `${item.title},`;\r\n });\r\n value = value.substring(0, value.length - 1);\r\n title = title.substring(0, title.length - 1);\r\n this.list.push({\r\n value,\r\n title,\r\n });\r\n this.artFrom.cate_id = value;\r\n this.getDataList();\r\n },\r\n // 获取商品表单头数量\r\n goodHeade() {\r\n getGoodHeade()\r\n .then((res) => {\r\n this.headeNum = res.data.list;\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 商品分类;\r\n goodsCategory() {\r\n treeListApi(1)\r\n .then((res) => {\r\n this.treeSelect = res.data;\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 商品列表;\r\n getDataList() {\r\n this.loading = true;\r\n this.artFrom.cate_id = this.artFrom.cate_id || '';\r\n getGoods(this.artFrom)\r\n .then((res) => {\r\n let data = res.data;\r\n this.tableList = data.list;\r\n this.total = res.data.count;\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n this.setChecked();\r\n });\r\n this.loading = false;\r\n })\r\n .catch((res) => {\r\n this.loading = false;\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n pageChange(status) {\r\n this.artFrom.page = status;\r\n this.getDataList();\r\n },\r\n // 表格搜索\r\n userSearchs() {\r\n this.artFrom.page = 1;\r\n this.getDataList();\r\n },\r\n // 上下架\r\n changeSwitch(row) {\r\n PostgoodsIsShow(row.id, row.is_show)\r\n .then((res) => {\r\n this.$Message.success(res.msg);\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n row.is_show = !row.is_show ? 1 : 0;\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 数据导出;\r\n exportData: function () {\r\n let th = ['商品名称', '商品简介', '商品分类', '价格', '库存', '销量', '收藏人数'];\r\n let filterVal = ['store_name', 'store_info', 'cate_name', 'price', 'stock', 'sales', 'collect'];\r\n this.where.page = 'nopage';\r\n getGoods(this.where).then((res) => {\r\n let data = res.data.map((v) => filterVal.map((k) => v[k]));\r\n let fileTime = Date.parse(new Date());\r\n let [fileName, fileType, sheetName] = ['商户数据_' + fileTime, 'xlsx', '商户数据'];\r\n toExcel({ th, data, fileName, fileType, sheetName });\r\n });\r\n },\r\n // 属性弹出;\r\n attrTap() {\r\n this.attrTemplate = true;\r\n },\r\n changeTemplate(msg) {\r\n this.attrTemplate = msg;\r\n },\r\n // 编辑\r\n edit(row) {\r\n this.$router.push({ path: '/admin/product/add_product/' + row.id });\r\n },\r\n // 确认\r\n del(row, tit, num) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: `product/product/${row.id}`,\r\n method: 'DELETE',\r\n ids: '',\r\n un: 1,\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$Message.success(res.msg);\r\n this.tableList.splice(num, 1);\r\n this.goodHeade();\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 删除成功\r\n // submitModel () {\r\n // this.tableList.splice(this.delfromData.num, 1);\r\n // this.goodHeade();\r\n // }\r\n },\r\n};\r\n</script>\r\n<style scoped lang=\"stylus\">\r\n/deep/.ivu-modal-mask {\r\n z-index: 999 !important;\r\n}\r\n\r\n/deep/.ivu-modal-wrap {\r\n z-index: 999 !important;\r\n}\r\n\r\n.Box {\r\n >>> .ivu-modal-body {\r\n height: 700px;\r\n overflow: auto;\r\n }\r\n}\r\n\r\n.batch-box {\r\n >>> .ivu-modal-body {\r\n overflow: auto;\r\n min-height: 350px;\r\n }\r\n}\r\n\r\n.tabBox_img {\r\n width: 36px;\r\n height: 36px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n}\r\n\r\n.bg {\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 11;\r\n}\r\n\r\n/deep/.happy-scroll-content {\r\n width: 100%;\r\n\r\n .demo-spin-icon-load {\r\n animation: ani-demo-spin 1s linear infinite;\r\n }\r\n\r\n @keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n .demo-spin-col {\r\n height: 100px;\r\n position: relative;\r\n border: 1px solid #eee;\r\n }\r\n}\r\n\r\n.labelInput {\r\n border: 1px solid #dcdee2;\r\n width: 20%;\r\n padding: 0 5px;\r\n border-radius: 5px;\r\n min-height: 30px;\r\n cursor: pointer;\r\n\r\n .span {\r\n color: #c5c8ce;\r\n }\r\n\r\n .iconxiayi {\r\n font-size: 12px;\r\n }\r\n}\r\n</style>\r\n"]}]}
|