1 |
- {"remainingRequest":"D:\\qianger\\7\\jindouyunNewFront\\node_modules\\babel-loader\\lib\\index.js!D:\\qianger\\7\\jindouyunNewFront\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\qianger\\7\\jindouyunNewFront\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\qianger\\7\\jindouyunNewFront\\src\\views\\goods\\sale\\PublishGoods.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\qianger\\7\\jindouyunNewFront\\src\\views\\goods\\sale\\PublishGoods.vue","mtime":1658126511010},{"path":"D:\\qianger\\7\\jindouyunNewFront\\babel.config.js","mtime":1655374732000},{"path":"D:\\qianger\\7\\jindouyunNewFront\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\qianger\\7\\jindouyunNewFront\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\qianger\\7\\jindouyunNewFront\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\qianger\\7\\jindouyunNewFront\\node_modules\\vue-loader\\lib\\index.js","mtime":1655715099000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IEdvb2RzQ2F0ZWdvcnkgZnJvbSAiQC9jb21wb25lbnQvY29tbW9uL0dvb2RzQ2F0ZWdvcnkudnVlIjsKaW1wb3J0IEJyYW5kU2VsTW9kZWwgZnJvbSAiQC9jb21wb25lbnQvZ29vZHMvQnJhbmRTZWxNb2RlbC52dWUiOyAvLyBpbXBvcnQgRWRpdEdvb2RzIGZyb20gIi4vQWRkR29vZHMiOwoKaW1wb3J0IFNlbGVjdFNob3AgZnJvbSAiQC9jb21wb25lbnQvZ29vZHMvU2VsZWN0U2hvcC52dWUiOwppbXBvcnQgeyBzZXRTYWxlc051bSwgZ2V0R29vZHNJbmZvLCBCYXRjaFVubG9hZGluZywgZ2V0QWxsR29vZHMsIGV4cG9ydEdldEFsbEdvb2RzLCBleHBvcnRHZXRBbGxHb29kc0xpc3QsIHNlYXJjaEdvb2QsIGV4cG9ydFNlYXJjaEdvb2QsIGRlbEdvb2RzLCBzZXRUb3AsIEdvb2RzVXBkYXRlRW5hYmxlU3RhdHVzLCBiYXRjaEdvb2RzRXhwcmVzcywgc2V0U2FsZXNOdW1CYXRjaCwgc2V0QnJhbmQsIHVwZGF0ZUNhdGVnb3J5LCBiYXRjaFNldERpc3RyaWJ1dGlvbiwgc2V0U29ydCwgZ2V0QWxsR29vZHNMaXN0IH0gZnJvbSAiQC9hcGkvZ29vZHMiOwppbXBvcnQgeyBnZXRBbGxFeHByZXNzUnVsZSB9IGZyb20gIkAvYXBpL1N5c3RlbSI7CmltcG9ydCB7IG1hcEdldHRlcnMgfSBmcm9tICJ2dWV4IjsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJQdWJsaXNoR29vZHMiLAogIGNvbXBvbmVudHM6IHsKICAgIEdvb2RzQ2F0ZWdvcnksCiAgICAvLyBFZGl0R29vZHMsCiAgICBCcmFuZFNlbE1vZGVsLAogICAgU2VsZWN0U2hvcAogIH0sCgogIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICB2aXJ0dWFsX3NhbGVzX251bTogMCwKICAgICAgc2V0X2dvb2RzX2lkOiAwLAogICAgICBzYWxlX251bV9mb3JtOiB7CiAgICAgICAgaWRzOiBbXSwKICAgICAgICBtaW5WYWw6ICIiLAogICAgICAgIG1heFZhbDogIiIKICAgICAgfSwKICAgICAgYWN0aXZlTmFtZTogImFsbCIsCiAgICAgIGdvb2RzX3NrdV9saXN0OiBbXSwKICAgICAgY2hlY2tlZEFsbDogZmFsc2UsCiAgICAgIGlzSW5kZXRlcm1pbmF0ZTogZmFsc2UsCiAgICAgIGlzX3ByaWNlOiBmYWxzZSwKICAgICAgc2t1X3Zpc2libGU6IGZhbHNlLAogICAgICBza3VfZ29vZHNfbmFtZTogIiIsCiAgICAgIGdvb2RzX25hbWU6ICIiLAogICAgICBrZXl3b3JkOiAiIiwKICAgICAgYnJhbmRJZDogIiIsCiAgICAgIGNhdGVnb3J5SWQ6ICIiLAogICAgICBlbmFibGVTdGF0dXM6ICIiLAogICAgICBzaG9wSWQ6ICIiLAogICAgICBzZWxfYnJhbmQ6IGZhbHNlLAogICAgICB0cmFuc2ZlclNob3c6IGZhbHNlLAogICAgICB0b3RhbDogMCwKICAgICAgcGFnZTogMSwKICAgICAgcGFnZVNpemU6IDEwLAogICAgICBnb29kc19kYXRhOiBbXSwKICAgICAgLy8gdGFibGUg5pWw5o2uCiAgICAgIGNob29zZV9kYXRhOiBbXSwKICAgICAgZm9ybTogewogICAgICAgIGNhdGVnb3J5UGF0aDogW10sCiAgICAgICAgc2VhcmNoX2tleTogIiIsCiAgICAgICAgYnJhbmQ6ICIiLAogICAgICAgIHNob3A6ICIiLAogICAgICAgIGVuYWJsZVN0YXR1czogIiIKICAgICAgfSwKICAgICAgcHJpY2VfZ29vZHNfZGV0YWlsOiB7fSwKICAgICAgaW5TYWxlczogMCwKICAgICAgaW5TdG9jazogMCwKICAgICAgc3BlY19sb2FkaW5nOiBmYWxzZSwKICAgICAgc2V0X2Zvcm06IHsKICAgICAgICBtYXN0ZXJVbml0SWQ6ICIiLAogICAgICAgIHNob3BOYW1lOiAiIiwKICAgICAgICBicmFuZE5hbWU6ICIiLAogICAgICAgIGJyYW5kSWQ6ICIiLAogICAgICAgIGNhdGVnb3J5OiBbXSwKICAgICAgICBicmFuY2hVbml0OiBbXSwKICAgICAgICBkZWxpdmVyeVN1cElkczogWyIxIiwgIjIiXSwKICAgICAgICAvLyDnianmtYHmlK/mjIEg5Zu65a6a5YC8IDEg5b+r6YCSIDIg6Ieq5o+QIOS8oOWPguagvOW8j++8mjEsMgogICAgICAgIGV4cHJlc3NUeXBlOiAxLAogICAgICAgIC8vIOW/q+mAkui/kOi0uSAxIOWMhemCriAyIOi/kOi0ueaooeeJiCAzIOWbuuWumui0ueeUqAogICAgICAgIGV4cHJlc3NGZWU6ICIiLAogICAgICAgIC8vIOWbuuWumui0ueeUqAogICAgICAgIHNob3dFeHByZXNzOiA1LAogICAgICAgIC8vIOaYr+WQpuWxleekuuW/q+mAkiA15bGV56S6IDTkuI3lsZXnpLoKICAgICAgICBydWxlSWQ6ICIiIC8vIOi/kOi0ueaooeeJiGlkCgogICAgICB9LAogICAgICBleHByZXNzX2xpc3Q6IFtdLAogICAgICBhc3Npc3RGb3JtOiB7fSwKICAgICAgbW9yZV9zdWJfYnRuOiBmYWxzZSwKICAgICAgdW5pdF9zaG93OiBmYWxzZSwKICAgICAgaXNfc2V0OiBmYWxzZSwKICAgICAgc2V0X3RpdDogIiIsCiAgICAgIGNoZWNrTGlzdDogWyLllYblk4HliIbnsbsiLCAi6KeE5qC8IiwgIuWfuuacrOWNleS9jSIsICLmgLvlupPlrZgiLCAvLyAi6Jma5ouf6ZSA6YePIiwKICAgICAgIuecn+WunumUgOmHjyIsICLlvZPliY3nirbmgIEiLCAi6ZSA5ZSu5bqX6ZO6IiwgIuWIm+W7uuaXtumXtCJdLAogICAgICBjb2x1bW5zOiBbewogICAgICAgIGxhYmVsOiAi5ZWG5ZOB5YiG57G7IgogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICLop4TmoLwiCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogIuWfuuacrOWNleS9jSIKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAi5oC75bqT5a2YIgogICAgICB9LCAvLyB7CiAgICAgIC8vICAgbGFiZWw6ICLomZrmi5/plIDph48iLAogICAgICAvLyB9LAogICAgICB7CiAgICAgICAgbGFiZWw6ICLnnJ/lrp7plIDph48iCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogIuW9k+WJjeeKtuaAgSIKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAi6ZSA5ZSu5bqX6ZO6IgogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICLliJvlu7rml7bpl7QiCiAgICAgIH1dLAogICAgICBjbGFzc2lmeUZsYWc6IHRydWUsCiAgICAgIHNwZWNpZmljYXRpb25GbGFnOiB0cnVlLAogICAgICB1bml0RmxhZzogdHJ1ZSwKICAgICAgaW52ZW50b3J5RmxhZzogdHJ1ZSwKICAgICAgdmlydHVhbEZsYWc6IHRydWUsCiAgICAgIHRydWVGbGFnOiB0cnVlLAogICAgICBzdGF0ZUZsYWc6IHRydWUsCiAgICAgIHNob3BGbGFnOiB0cnVlLAogICAgICB0aW1lRmxhZzogdHJ1ZSwKICAgICAgbWVtYmVyX3NvcnQ6IDAgLy/mjpLluo8KCiAgICB9OwogIH0sCgogIGNvbXB1dGVkOiB7IC4uLm1hcEdldHRlcnMoewogICAgICBlbnRlcnByaXNlU2NvcGU6ICJNVXNlci9lbnRlcnByaXNlU2NvcGUiCiAgICB9KQogIH0sCgogIGNyZWF0ZWQoKSB7CiAgICBpZiAodGhpcy4kcm91dGUubmFtZSA9PT0gIkdvb2RzU2FsZSIpIHsKICAgICAgdGhpcy5pblNhbGVzID0gNTsKICAgIH0gZWxzZSBpZiAodGhpcy4kcm91dGUubmFtZSA9PT0gIlNvbGRPdXQiKSB7CiAgICAgIHRoaXMuaW5TdG9jayA9IDQ7CiAgICB9IGVsc2UgaWYgKHRoaXMuJHJvdXRlLm5hbWUgPT09ICJJbldhcmVob3VzZSIpIHsKICAgICAgdGhpcy5pblN0b2NrID0gNTsKICAgIH0KCiAgICB0aGlzLmdldEFsbEdvb2RzTGlzdCgpOwogICAgdGhpcy5nZXRBbGxFeHByZXNzUnVsZSgpOwogIH0sCgogIGFjdGl2YXRlZCgpIHsKICAgIGlmICh0aGlzLiRfaXNJbml0KCkpIHJldHVybjsKICAgIHRoaXMuZ2V0RGF0YSgpOwogIH0sCgogIG1ldGhvZHM6IHsKICAgIHNob3dUb29sdGlwTWV0aG9kKHsKICAgICAgdHlwZSwKICAgICAgY29sdW1uLAogICAgICByb3csCiAgICAgIGl0ZW1zLAogICAgICBfY29sdW1uSW5kZXgKICAgIH0pIHsKICAgICAgaWYgKGNvbHVtbi5wcm9wZXJ0eSA9PT0gInNob3BOYW1lIikgewogICAgICAgIGlmICh0eXBlID09PSAiYm9keSIpIHsKICAgICAgICAgIHJldHVybiBjb2x1bW4uc2hvcE5hbWU7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8vIOiOt+WPlui/kOi0ueaooeeJiAogICAgYXN5bmMgZ2V0QWxsRXhwcmVzc1J1bGUoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRBbGxFeHByZXNzUnVsZSgpOwogICAgICB0aGlzLmV4cHJlc3NfbGlzdCA9IGRhdGE7CiAgICB9LAoKICAgIGFzeW5jIHNldFNhbGVzTnVtKGluZGV4LCB0YWcpIHsKICAgICAgaWYgKHRhZyA9PT0gLTEpIHsKICAgICAgICB0aGlzLmdvb2RzX2RhdGFbaW5kZXhdLnNhbGVfZmFsc2VfdmlzaWJsZSA9IGZhbHNlOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKHRoaXMudmlydHVhbF9zYWxlc19udW0gPCAwKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fovpPlhaXlpKfkuo4w55qE5YC8Iik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjb25zdCBkYXRhID0gYXdhaXQgc2V0U2FsZXNOdW0oewogICAgICAgIGlkOiB0aGlzLmdvb2RzX2RhdGFbaW5kZXhdLmlkLAogICAgICAgIHZhbDogdGhpcy52aXJ0dWFsX3NhbGVzX251bQogICAgICB9KTsKICAgICAgdGhpcy5nb29kc19kYXRhW2luZGV4XS5zYWxlX2ZhbHNlX3Zpc2libGUgPSBmYWxzZTsKICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICB9LAoKICAgIHNob3dTZXRTYWxlTnVtKGluZGV4KSB7CiAgICAgIHRoaXMudmlydHVhbF9zYWxlc19udW0gPSB0aGlzLmdvb2RzX2RhdGFbaW5kZXhdLnZpcnR1YWxTYWxlc051bTsKICAgICAgdGhpcy5nb29kc19kYXRhW2luZGV4XS5zYWxlX2ZhbHNlX3Zpc2libGUgPSB0cnVlOwogICAgfSwKCiAgICBvcGVuQWRkR29vZHMoKSB7CiAgICAgIGlmIChwYXJzZUludCh0aGlzLiRzdG9yZS5nZXR0ZXJzWyJNVXNlci9lbnRlcnByaXNlU2NvcGUiXSkgPT09IDQpIHsKICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCgiL2dvb2RzL3NhbGUvQWRkR29vZHNPbmVTdG9yZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKCIvZ29vZHMvc2FsZS9BZGRHb29kcyIpOwogICAgICB9CiAgICB9LAoKICAgIHRhYkNoYW5nZSgpIHsKICAgICAgc3dpdGNoICh0aGlzLmFjdGl2ZU5hbWUpIHsKICAgICAgICBjYXNlICJhbGwiOgogICAgICAgICAgdGhpcy5pblNhbGVzID0gMTsKICAgICAgICAgIHRoaXMuaW5TdG9jayA9IDA7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAiR29vZHNTYWxlIjoKICAgICAgICAgIHRoaXMuaW5TYWxlcyA9IDI7CiAgICAgICAgICB0aGlzLmluU3RvY2sgPSAwOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgIlNvbGRPdXQiOgogICAgICAgICAgdGhpcy5pblNhbGVzID0gMzsKICAgICAgICAgIHRoaXMuaW5TdG9jayA9IDQ7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAiSW5XYXJlaG91c2UiOgogICAgICAgICAgdGhpcy5pblNhbGVzID0gNDsKICAgICAgICAgIHRoaXMuaW5TdG9jayA9IDU7CiAgICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgdGhpcy5wYWdlQ2hhbmdlKDEpOwogICAgfSwKCiAgICAvLyDnlKjkuo7lj6/lsZXlvIDooajmoLzkuI7moJHlvaLooajmoLzvvIzliIfmjaLmn5DkuIDooYznmoTlsZXlvIDnirbmgIHvvIzlpoLmnpzkvb/nlKjkuobnrKzkuozkuKrlj4LmlbDvvIzliJnmmK/orr7nva7ov5nkuIDooYzlsZXlvIDkuI7lkKbvvIhleHBhbmRlZCDkuLogdHJ1ZSDliJnlsZXlvIDvvIkKICAgIGFzeW5jIHNob3dTcGVjKHsKICAgICAgcm93CiAgICB9KSB7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZlID0+IHsKICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ29vZHNfZGF0YS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSByb3cuaWQpOwoKICAgICAgICBpZiAoIXRoaXMuZ29vZHNfZGF0YVtpbmRleF0uZ29vZHNfc2t1X2xpc3QubGVuZ3RoKSB7CiAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgIGRhdGEKICAgICAgICAgIH0gPSBhd2FpdCBnZXRHb29kc0luZm8ocm93LmlkKTsKCiAgICAgICAgICBpZiAoZGF0YS5zcGVjVHlwZSA9PT0gMikgewogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7CiAgICAgICAgICAgICAgdGhpcy5nb29kc19kYXRhW2luZGV4XS5nb29kc19za3VfbGlzdCA9IGRhdGEuc3BlY011bHRpcGxlLm1hcChpdGVtID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNWYWx1ZU5hbWUgPSBpdGVtLnNwZWNHcm91cC5tYXAoaXRlbVMgPT4gewogICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVMuc3BlY1ZhbHVlTmFtZTsKICAgICAgICAgICAgICAgIH0pLmpvaW4oIjsiKTsKICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0sCiAgICAgICAgICAgICAgICAgIHNwZWNWYWx1ZU5hbWU6IHNwZWNWYWx1ZU5hbWUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChkYXRhLnNwZWNUeXBlID09PSAxKSB7CiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsKICAgICAgICAgICAgICB0aGlzLmdvb2RzX2RhdGFbaW5kZXhdLmdvb2RzX3NrdV9saXN0ID0gZGF0YS5zcGVjTXVsdGlwbGUubWFwKGl0ZW0gPT4gewogICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgICAgICAgICAgc3BlY1ZhbHVlTmFtZTogIiIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmVzb2x2ZSgpOwogICAgICB9KTsgLy8gdGhpcy5nb29kc19kYXRhID0gdGFyZ2V0CiAgICB9LAoKICAgIHRvZ2dsZVJvd0V4cGFuc2lvbihpbmRleCkgewogICAgICB0aGlzLiRyZWZzLmdvb2RzVGFibGUudG9nZ2xlUm93RXhwYW5kKHRoaXMuZ29vZHNfZGF0YVtpbmRleF0pOwogICAgfSwKCiAgICBkZWxCcmFuZCgpIHsKICAgICAgdGhpcy5mb3JtLmJyYW5kID0gIiI7CiAgICAgIHRoaXMuYnJhbmRJZCA9ICIiOwogICAgICB0aGlzLnBhZ2VDaGFuZ2UoMSk7CiAgICB9LAoKICAgIGRlbFNob3AoKSB7CiAgICAgIHRoaXMuZm9ybS5zaG9wID0gIiI7CiAgICAgIHRoaXMuc2hvcElkID0gIiI7CiAgICAgIHRoaXMucGFnZUNoYW5nZSgxKTsKICAgIH0sCgogICAgLy8g5om56YeP6YCJ5oupCiAgICBzZWxlY3Rpb25DaGFuZ2UoewogICAgICByZWNvcmRzCiAgICB9KSB7CiAgICAgIHRoaXMuY2hlY2tlZEFsbCA9IHRoaXMuJHJlZnMuZ29vZHNUYWJsZS5pc0FsbENoZWNrYm94Q2hlY2tlZCgpOwogICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IHRoaXMuJHJlZnMuZ29vZHNUYWJsZS5pc0FsbENoZWNrYm94Q2hlY2tlZCgpOwogICAgICB0aGlzLmNob29zZV9kYXRhID0gcmVjb3JkczsKICAgIH0sCgogICAgLy8g57yW6L6R5a6M5oiQ5Zue6LCDCiAgICBlZGl0c3ViRGF0YSgpIHsKICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICB9LAoKICAgIC8vIOiwg+aVtOS7t+agvCDnvJbovpHmn6XnnIsKICAgIG9wZW5QcmljZU1vZGVsKHJvdykgewogICAgICBpZiAocGFyc2VJbnQodGhpcy4kc3RvcmUuZ2V0dGVyc1siTVVzZXIvZW50ZXJwcmlzZVNjb3BlIl0pID09PSA1KSB7CiAgICAgICAgLy8gdGhpcy5pc19wcmljZSA9IHRydWU7CiAgICAgICAgLy8gdGhpcy5nb29kc19uYW1lID0gcm93LnRpdGxlOwogICAgICAgIC8vIHRoaXMucHJpY2VfZ29vZHNfZGV0YWlsID0gcm93OwogICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKGAvZ29vZHMvc2FsZS9FZGl0R29vZHMvJHtyb3cuaWR9YCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goYC9nb29kcy9zYWxlL0VkaXRHb29kc09uZVN0b3JlLyR7cm93LmlkfWApOwogICAgICB9CiAgICB9LAoKICAgIC8vICDmibnph4/kuIrkuIvmnrYKICAgIGFzeW5jIEJhdGNoVW5sb2FkaW5nKGVuYWJsZVN0YXR1cykgewogICAgICBsZXQgdGl0bGUgPSBlbmFibGVTdGF0dXMgPT09IDQgPyAi56Gu5a6a6KaB5om56YeP5LiL5p626L+Z5Lqb5ZWG5ZOB5ZCX77yfIiA6ICLnoa7lrpropoHmibnph4/kuIrmnrbov5nkupvllYblk4HlkJfvvJ8iOwoKICAgICAgaWYgKCF0aGlzLmNob29zZV9kYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6KaB5pON5L2c55qE5ZWG5ZOBIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLiRjb25maXJtKHRpdGxlLCAi5o+Q56S6IiwgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAi56Gu5a6aIiwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICB0eXBlOiAid2FybmluZyIKICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAgICAgaWYgKCF0aGlzLmNob29zZV9kYXRhLmxlbmd0aCkgewogICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fpgInmi6nopoHmk43kvZznmoTllYblk4EiKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbnN0IGlkRGF0YSA9IHRoaXMuY2hvb3NlX2RhdGEubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7CiAgICAgICAgfSk7CiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IEJhdGNoVW5sb2FkaW5nKHsKICAgICAgICAgIGlkOiBpZERhdGEsCiAgICAgICAgICBlbmFibGVTdGF0dXM6IGVuYWJsZVN0YXR1cwogICAgICAgIH0pOwogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgbWVzc2FnZTogIuaTjeS9nOaIkOWKnyEiCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDmibnph4/liKDpmaQKICAgIGFzeW5jIGRlbGV0ZUJhdGNoVW5sb2FkaW5nKGRlbGV0ZVN0YXR1cykgewogICAgICBpZiAoIXRoaXMuY2hvb3NlX2RhdGEubGVuZ3RoKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fpgInmi6nopoHmk43kvZznmoTllYblk4EiKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHRoaXMuJGNvbmZpcm0oIuehruWumuimgeaJuemHj+WIoOmZpOi/meS6m+WVhuWTgeWQlyIsICLmj5DnpLoiLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICLlj5bmtogiLAogICAgICAgIHR5cGU6ICJ3YXJuaW5nIgogICAgICB9KS50aGVuKGFzeW5jICgpID0+IHsKICAgICAgICBpZiAoIXRoaXMuY2hvb3NlX2RhdGEubGVuZ3RoKSB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+mAieaLqeimgeaTjeS9nOeahOWVhuWTgSIpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY29uc3QgaWREYXRhID0gdGhpcy5jaG9vc2VfZGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgICB9KTsKICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgQmF0Y2hVbmxvYWRpbmcoewogICAgICAgICAgaWQ6IGlkRGF0YSwKICAgICAgICAgIGRlbGV0ZVN0YXR1czogZGVsZXRlU3RhdHVzCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICBtZXNzYWdlOiAi5pON5L2c5oiQ5YqfISIKICAgICAgICB9KTsKICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIOiOt+WPluWIl+ihqAogICAgYXN5bmMgZ2V0QWxsR29vZHMoZXhwb3J0cykgewogICAgICBsZXQgcGFyYW1zID0gewogICAgICAgIHBhZ2U6IHRoaXMucGFnZSwKICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwKICAgICAgICBpZk1lcmNoYW50OiB0aGlzLmlmTWVyY2hhbnQsCiAgICAgICAgbWVyY2hhbnRJZDogdGhpcy5tZXJjaGFudElkCiAgICAgIH07CgogICAgICBpZiAodGhpcy5pblNhbGVzKSB7CiAgICAgICAgcGFyYW1zLmluU2FsZXMgPSB0aGlzLmluU2FsZXM7CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLmluU3RvY2spIHsKICAgICAgICBwYXJhbXMuaW5TdG9jayA9IHRoaXMuaW5TdG9jazsKICAgICAgfQoKICAgICAgaWYgKGV4cG9ydHMpIHsKICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZXhwb3J0R2V0QWxsR29vZHMoeyAuLi5wYXJhbXMsCiAgICAgICAgICBleHBvcnQ6IDEKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0QWxsR29vZHMocGFyYW1zKTsKICAgICAgICB0aGlzLmdvb2RzX2RhdGEgPSBkYXRhLmRhdGEubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgICAgc2FsZV9mYWxzZV92aXNpYmxlOiBmYWxzZSwKICAgICAgICAgICAgZ29vZHNfc2t1X2xpc3Q6IFtdLAogICAgICAgICAgICBhZGRyZXNzOiBpdGVtLnNob3BOYW1lLAogICAgICAgICAgICBzb3J0X2ZsYWc6IGZhbHNlCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHRoaXMudG90YWwgPSBkYXRhLnBhZ2VUb3RhbDsKICAgICAgfQogICAgfSwKCiAgICBhc3luYyBnZXRBbGxHb29kc0xpc3QoZXhwb3J0cykgewogICAgICBsZXQgcGFyYW1zID0gewogICAgICAgIHBhZ2U6IHRoaXMucGFnZSwKICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwKICAgICAgICBrZXl3b3JkVHlwZTogdGhpcy5pblNhbGVzLAogICAgICAgIGtleXdvcmQ6IHRoaXMua2V5d29yZCwKICAgICAgICBjYXRlZ29yeVBhdGg6IHRoaXMuZm9ybS5jYXRlZ29yeVBhdGguam9pbigiLCIpLAogICAgICAgIGJyYW5kSWQ6IHRoaXMuYnJhbmRJZCwKICAgICAgICBlbmFibGVTdGF0dXM6IHRoaXMuZW5hYmxlU3RhdHVzLAogICAgICAgIHNob3BJZDogdGhpcy5zaG9wSWQKICAgICAgfTsKCiAgICAgIGlmIChleHBvcnRzKSB7CiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGV4cG9ydEdldEFsbEdvb2RzTGlzdCh7IC4uLnBhcmFtcywKICAgICAgICAgIGV4cG9ydDogMQogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRBbGxHb29kc0xpc3QocGFyYW1zKTsKICAgICAgICB0aGlzLmdvb2RzX2RhdGEgPSBkYXRhLmRhdGEubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgICAgc2FsZV9mYWxzZV92aXNpYmxlOiBmYWxzZSwKICAgICAgICAgICAgZ29vZHNfc2t1X2xpc3Q6IFtdLAogICAgICAgICAgICBhZGRyZXNzOiBpdGVtLnNob3BOYW1lLAogICAgICAgICAgICBzb3J0X2ZsYWc6IGZhbHNlCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHRoaXMudG90YWwgPSBkYXRhLnBhZ2VUb3RhbDsKICAgICAgfQogICAgfSwKCiAgICAvLyAg5pCc57Si5ZWG5ZOBIHNlYXJjaEdvb2QKICAgIC8vIGFzeW5jIHNlYXJjaEdvb2QoZXhwb3J0cykgewogICAgLy8gICBpZiAodGhpcy5hY3RpdmVOYW1lICE9PSAiYWxsIikgewogICAgLy8gICAgIHRoaXMuZW5hYmxlU3RhdHVzID0gIiI7CiAgICAvLyAgIH0KICAgIC8vICAgbGV0IHBhcmFtcyA9IHsKICAgIC8vICAgICBrZXl3b3JkOiB0aGlzLmtleXdvcmQsCiAgICAvLyAgICAgYnJhbmRJZDogdGhpcy5icmFuZElkLAogICAgLy8gICAgIGNhdGVnb3J5UGF0aDogdGhpcy5mb3JtLmNhdGVnb3J5UGF0aC5qb2luKCIsIiksCiAgICAvLyAgICAgZW5hYmxlU3RhdHVzOiB0aGlzLmVuYWJsZVN0YXR1cywKICAgIC8vICAgICBzaG9wSWQ6IHRoaXMuc2hvcElkLAogICAgLy8gICAgIHBhZ2U6IHRoaXMucGFnZSwKICAgIC8vICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwKICAgIC8vICAgfTsKICAgIC8vICAgaWYgKHRoaXMuaW5TYWxlcykgewogICAgLy8gICAgIHBhcmFtcy5pblNhbGVzID0gdGhpcy5pblNhbGVzOwogICAgLy8gICB9CiAgICAvLyAgIGlmICh0aGlzLmluU3RvY2spIHsKICAgIC8vICAgICBwYXJhbXMuaW5TdG9jayA9IHRoaXMuaW5TdG9jazsKICAgIC8vICAgfQogICAgLy8gICBpZiAoZXhwb3J0cykgewogICAgLy8gICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBleHBvcnRTZWFyY2hHb29kKHsKICAgIC8vICAgICAgIC4uLnBhcmFtcywKICAgIC8vICAgICAgIGV4cG9ydDogMSwKICAgIC8vICAgICB9KTsKICAgIC8vICAgfSBlbHNlIHsKICAgIC8vICAgICBjb25zdCBkYXRhID0gYXdhaXQgc2VhcmNoR29vZChwYXJhbXMpOwogICAgLy8KICAgIC8vICAgICB0aGlzLmdvb2RzX2RhdGEgPSBkYXRhLmRhdGEubWFwKChpdGVtKSA9PiB7CiAgICAvLyAgICAgICByZXR1cm4gewogICAgLy8gICAgICAgICAuLi5pdGVtLAogICAgLy8gICAgICAgICBzYWxlX2ZhbHNlX3Zpc2libGU6IGZhbHNlLAogICAgLy8gICAgICAgICBnb29kc19za3VfbGlzdDogW10sCiAgICAvLyAgICAgICB9OwogICAgLy8gICAgIH0pOwogICAgLy8gICAgIHRoaXMudG90YWwgPSBkYXRhLnBhZ2VUb3RhbDsKICAgIC8vICAgfQogICAgLy8gfSwKICAgIC8vIOWIpOaWreW9k+WJjeS9v+eUqOaWueazleS4uuWIl+ihqOaOpeWPo+i/mOaYr+aQnOe0ouW8leaTjuaOpeWPoyDojrflj5bliJfooajmlbDmja4KICAgIGdldERhdGEoZXhwb3J0cykgewogICAgICBpZiAodGhpcy5hY3RpdmVOYW1lICE9PSAiYWxsIikgewogICAgICAgIHRoaXMuZW5hYmxlU3RhdHVzID0gIiI7CiAgICAgIH0gLy8g5pCc57Si5Y+C5pWw6KeE5pW0CgoKICAgICAgY29uc3Qgb2JqID0gewogICAgICAgIGtleXdvcmQ6IHRoaXMua2V5d29yZCwKICAgICAgICBicmFuZElkOiB0aGlzLmJyYW5kSWQsCiAgICAgICAgY2F0ZWdvcnlQYXRoOiB0aGlzLmZvcm0uY2F0ZWdvcnlQYXRoLmpvaW4oIiwiKSwKICAgICAgICBlbmFibGVTdGF0dXM6IHRoaXMuZW5hYmxlU3RhdHVzLAogICAgICAgIHNob3BJZDogdGhpcy5zaG9wSWQKICAgICAgfTsKICAgICAgY29uc3QgaXNLZXkgPSB0aGlzLiRfY29tbW9uLmlzU2VyY2gob2JqKTsKCiAgICAgIGlmIChpc0tleSkgewogICAgICAgIHRoaXMuc2VhcmNoR29vZChleHBvcnRzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmdldEFsbEdvb2RzKGV4cG9ydHMpOwogICAgICB9CiAgICB9LAoKICAgIC8vIOWIhuexu+aQnOe0ogogICAgZ29vZHNDaGFuZSh2YWwpIHsKICAgICAgdGhpcy5wYWdlQ2hhbmdlKDEpOwogICAgfSwKCiAgICAvLyDlk4HniYzmkJzntKIKICAgIGJyYW5kQ29uZmlybShyb3cpIHsKICAgICAgdGhpcy5mb3JtLmJyYW5kID0gcm93WzBdLnRpdGxlOwogICAgICB0aGlzLmJyYW5kSWQgPSByb3dbMF0uaWQ7CiAgICAgIHRoaXMucGFnZUNoYW5nZSgxKTsKICAgIH0sCgogICAgLy/ovaznp7vlk4HniYwKICAgIHRyYW5zZmVyQnJhbmRDb25maXJtKHJvdykgewogICAgICB0aGlzLnNldF9mb3JtLmJyYW5kTmFtZSA9IHJvd1swXS50aXRsZTsKICAgICAgdGhpcy5zZXRfZm9ybS5icmFuZElkID0gcm93WzBdLmlkOwogICAgfSwKCiAgICAvLyDllYbpk7rmkJzntKIKICAgIHNob3BDb25maXJtKHZhbCwgcm93KSB7CiAgICAgIHRoaXMuc2hvcElkID0gcm93WzBdLmlkOwogICAgICB0aGlzLmZvcm0uc2hvcCA9IHJvd1swXS5uYW1lOwogICAgICB0aGlzLnBhZ2VDaGFuZ2UoMSk7CiAgICB9LAoKICAgIC8vIOWIoOmZpOWVhuWTgQogICAgYXN5bmMgZGVsRGF0YShpZCkgewogICAgICB0aGlzLiRjb25maXJtKCLnoa7lrpropoHliKDpmaTor6XmnaHllYblk4HlkJc/IiwgIuaPkOekuiIsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogIuWPlua2iCIsCiAgICAgICAgdHlwZTogIndhcm5pbmciCiAgICAgIH0pLnRoZW4oYXN5bmMgKCkgPT4gewogICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBkZWxHb29kcyhpZCk7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICBtZXNzYWdlOiAi5Yig6Zmk5oiQ5YqfISIKICAgICAgICB9KTsKICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIOWIoOmZpOWVhuWTgQogICAgYXN5bmMgc2V0VG9wKGlkKSB7CiAgICAgIHRoaXMuJGNvbmZpcm0oIuaYr+WQpuimgeWwhuivpeWVhuWTgee9rumhtj8iLCAi5o+Q56S6IiwgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAi56Gu5a6aIiwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICB0eXBlOiAid2FybmluZyIKICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHNldFRvcChpZCk7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICBtZXNzYWdlOiAi5pON5L2c5oiQ5YqfISIKICAgICAgICB9KTsKICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIOWVhuWTgeS4iuS4i+aetgogICAgYXN5bmMgY2hhbmdlR29vZHNTdGF0dXModmFsLCByb3cpIHsKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgR29vZHNVcGRhdGVFbmFibGVTdGF0dXMoewogICAgICAgICAgaWQ6IHJvdy5pZCwKICAgICAgICAgIGVuYWJsZVN0YXR1czogdmFsCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICBtZXNzYWdlOiAi5pON5L2c5oiQ5YqfISIKICAgICAgICB9KTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgICB9CiAgICB9LAoKICAgIC8vIOWIh+mhtQogICAgcGFnZUNoYW5nZSh2YWwpIHsKICAgICAgdGhpcy5wYWdlID0gdmFsOwogICAgICB0aGlzLmdldEFsbEdvb2RzTGlzdCgpOwogICAgfSwKCiAgICAvLyDmr4/pobXmlbDmja7lpKflsI/mlLnlj5gKICAgIHNpemVDaGFuZ2UodmFsKSB7CiAgICAgIHRoaXMucGFnZVNpemUgPSB2YWw7CiAgICAgIHRoaXMucGFnZUNoYW5nZSgxKTsKICAgIH0sCgogICAgY2hlY2tBbGxDaGFuZ2UoKSB7CiAgICAgIHRoaXMuJHJlZnMuZ29vZHNUYWJsZS5zZXRBbGxDaGVja2JveFJvdyh0aGlzLmNoZWNrZWRBbGwpOwogICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IHRoaXMuJHJlZnMuZ29vZHNUYWJsZS5pc0FsbENoZWNrYm94Q2hlY2tlZCgpOwogICAgICB0aGlzLmNob29zZV9kYXRhID0gdGhpcy4kcmVmcy5nb29kc1RhYmxlLmdldENoZWNrYm94UmVjb3JkcygpOwogICAgfSwKCiAgICAvLyDmiZPlvIDmibnph4/orr7nva7lvLnnqpcKICAgIG9wZW5TZXQodGl0LCByb3cpIHsKICAgICAgdGhpcy5pc19zZXQgPSB0cnVlOwogICAgICB0aGlzLnNldF90aXQgPSB0aXQ7CgogICAgICBpZiAocm93KSB7CiAgICAgICAgdGhpcy5jaG9vc2VfZGF0YSA9IFtyb3ddOwogICAgICB9CiAgICB9LAoKICAgIC8vIOaJuemHj+aPkOS6pAogICAgbW9yZVN1YkRhdGEoKSB7CiAgICAgIHRoaXMuY2hlY2tlZEFsbCA9IGZhbHNlOwogICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlOwoKICAgICAgaWYgKHRoaXMuc2V0X3RpdCA9PT0gIui9rOenu+WIhuexuyIpIHsKICAgICAgICB0aGlzLnVwZGF0ZUNhdGVnb3J5KCk7CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLnNldF90aXQgPT09ICLorr7nva7lk4HniYwiKSB7CiAgICAgICAgdGhpcy5zZXRCcmFuZCgpOwogICAgICB9CgogICAgICBpZiAodGhpcy5zZXRfdGl0ID09PSAi6Jma5ouf6ZSA6YePIikgewogICAgICAgIHRoaXMuc2V0U2FsZXNOdW1CYXRjaCgpOwogICAgICB9CgogICAgICBpZiAodGhpcy5zZXRfdGl0ID09PSAi54mp5rWB6K6+572uIikgewogICAgICAgIHRoaXMuYmF0Y2hHb29kc0V4cHJlc3MoKTsKICAgICAgfQogICAgfSwKCiAgICAvLyDmibnph4/orr7nva7ov5DotLkKICAgIGFzeW5jIGJhdGNoR29vZHNFeHByZXNzKCkgewogICAgICBpZiAoIXRoaXMuY2hvb3NlX2RhdGEubGVuZ3RoKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fpgInmi6nopoHmk43kvZznmoTllYblk4EiKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGNvbnN0IGlkRGF0YSA9IHRoaXMuY2hvb3NlX2RhdGEubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICB9KTsKICAgICAgdGhpcy5tb3JlX3N1Yl9idG4gPSB0cnVlOwoKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgYmF0Y2hHb29kc0V4cHJlc3MoewogICAgICAgICAgZXhwcmVzc1R5cGU6IHRoaXMuc2V0X2Zvcm0uZXhwcmVzc1R5cGUsCiAgICAgICAgICBydWxlSWQ6IHRoaXMuc2V0X2Zvcm0ucnVsZUlkLAogICAgICAgICAgZXhwcmVzc0ZlZTogdGhpcy5zZXRfZm9ybS5leHByZXNzRmVlLAogICAgICAgICAgaWRzOiBpZERhdGEKICAgICAgICB9KTsKICAgICAgICB0aGlzLm1vcmVfc3ViX2J0biA9IGZhbHNlOwogICAgICAgIHRoaXMuaXNfc2V0ID0gZmFsc2U7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCLmk43kvZzmiJDlip8iKTsKICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgfSBjYXRjaCB7CiAgICAgICAgdGhpcy5tb3JlX3N1Yl9idG4gPSBmYWxzZTsKICAgICAgfQogICAgfSwKCiAgICAvLyDorr7nva7omZrmi5/plIDph48KICAgIGFzeW5jIHNldFNhbGVzTnVtQmF0Y2goKSB7CiAgICAgIGlmICghdGhpcy5jaG9vc2VfZGF0YS5sZW5ndGgpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+mAieaLqeimgeaTjeS9nOeahOWVhuWTgSIpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKCF0aGlzLnNhbGVfbnVtX2Zvcm0ubWluVmFsKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLomZrmi5/plIDph4/ljLrpl7TmnIDlsI/lgLzkuI3og73kuLowIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoIXRoaXMuc2FsZV9udW1fZm9ybS5tYXhWYWwpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuiZmuaLn+mUgOmHj+WMuumXtOacgOWkp+WAvOS4jeiDveS4ujAiKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLnNhbGVfbnVtX2Zvcm0ubWF4VmFsIDw9IHRoaXMuc2FsZV9udW1fZm9ybS5taW5WYWwpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuiZmuaLn+mUgOmHj+WMuumXtOacgOWkp+WAvOW/hemhu+Wkp+S6juacgOWwj+WAvCIpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy5tb3JlX3N1Yl9idG4gPSB0cnVlOwoKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBpZERhdGEgPSB0aGlzLmNob29zZV9kYXRhLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBzZXRTYWxlc051bUJhdGNoKHsgLi4udGhpcy5zYWxlX251bV9mb3JtLAogICAgICAgICAgaWRzOiBpZERhdGEKICAgICAgICB9KTsKICAgICAgICB0aGlzLm1vcmVfc3ViX2J0biA9IGZhbHNlOwogICAgICAgIHRoaXMuaXNfc2V0ID0gZmFsc2U7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCLmk43kvZzmiJDlip8iKTsKICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgfSBjYXRjaCB7CiAgICAgICAgdGhpcy5tb3JlX3N1Yl9idG4gPSBmYWxzZTsKICAgICAgfQogICAgfSwKCiAgICAvLyAg6K6+572u5ZOB54mMCiAgICBhc3luYyBzZXRCcmFuZCgpIHsKICAgICAgaWYgKCF0aGlzLmNob29zZV9kYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6KaB5pON5L2c55qE5ZWG5ZOBIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoIXRoaXMuc2V0X2Zvcm0uYnJhbmRJZCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6KaB5pON5L2c55qE5ZOB54mMIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjb25zdCBpZERhdGEgPSB0aGlzLmNob29zZV9kYXRhLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gaXRlbS5iYXNpY0dvb2RzSWQ7CiAgICAgIH0pOwogICAgICB0aGlzLm1vcmVfc3ViX2J0biA9IHRydWU7CgogICAgICB0cnkgewogICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBzZXRCcmFuZCh7CiAgICAgICAgICBpZDogaWREYXRhLAogICAgICAgICAgYnJhbmRJZDogdGhpcy5zZXRfZm9ybS5icmFuZElkCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5tb3JlX3N1Yl9idG4gPSBmYWxzZTsKICAgICAgICB0aGlzLmlzX3NldCA9IGZhbHNlOwogICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygi5pON5L2c5oiQ5YqfIik7CiAgICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICAgIH0gY2F0Y2ggewogICAgICAgIHRoaXMubW9yZV9zdWJfYnRuID0gZmFsc2U7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6L2s56e75YiG57G7CiAgICBhc3luYyB1cGRhdGVDYXRlZ29yeSgpIHsKICAgICAgaWYgKCF0aGlzLmNob29zZV9kYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6KaB5pON5L2c55qE5ZWG5ZOBIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoIXRoaXMuc2V0X2Zvcm0uY2F0ZWdvcnkpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+mAieaLqeimgei9rOenu+eahOWIhuexuyIpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy5tb3JlX3N1Yl9idG4gPSB0cnVlOwoKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBpZERhdGEgPSB0aGlzLmNob29zZV9kYXRhLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBpdGVtLmJhc2ljR29vZHNJZDsKICAgICAgICB9KTsKICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdXBkYXRlQ2F0ZWdvcnkoewogICAgICAgICAgaWQ6IGlkRGF0YSwKICAgICAgICAgIC8vIOimgeenu+WKqOeahOWfuuehgOWVhuWTgWlkCiAgICAgICAgICBjYXRlZ29yeUlkOiB0aGlzLnNldF9mb3JtLmNhdGVnb3J5W3RoaXMuc2V0X2Zvcm0uY2F0ZWdvcnkubGVuZ3RoIC0gMV0sCiAgICAgICAgICAvLyDnp7vliqjoh7PllYblk4HliIbnsbtpZAogICAgICAgICAgY2F0ZWdvcnlQYXRoOiB0aGlzLnNldF9mb3JtLmNhdGVnb3J5LmpvaW4oIiwiKSAvLyDmlrDnmoTllYblk4HliIbnsbvot6/lvoQKCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5tb3JlX3N1Yl9idG4gPSBmYWxzZTsKICAgICAgICB0aGlzLmlzX3NldCA9IGZhbHNlOwogICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygi5pON5L2c5oiQ5YqfIik7CiAgICAgICAgdGhpcy5zZXRfZm9ybS5jYXRlZ29yeSA9IFtdOwogICAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgICB9IGNhdGNoIHsKICAgICAgICB0aGlzLm1vcmVfc3ViX2J0biA9IGZhbHNlOwogICAgICB9CiAgICB9LAoKICAgIGNoYW5nZSgpIHsKICAgICAgdGhpcy5jbGFzc2lmeUZsYWcgPSB0aGlzLmNoZWNrTGlzdC5zb21lKGl0ZW0gPT4gaXRlbSA9PT0gIuWVhuWTgeWIhuexuyIpOwogICAgICB0aGlzLnNwZWNpZmljYXRpb25GbGFnID0gdGhpcy5jaGVja0xpc3Quc29tZShpdGVtID0+IGl0ZW0gPT09ICLop4TmoLwiKTsKICAgICAgdGhpcy51bml0RmxhZyA9IHRoaXMuY2hlY2tMaXN0LnNvbWUoaXRlbSA9PiBpdGVtID09PSAi5Z+65pys5Y2V5L2NIik7CiAgICAgIHRoaXMuaW52ZW50b3J5RmxhZyA9IHRoaXMuY2hlY2tMaXN0LnNvbWUoaXRlbSA9PiBpdGVtID09PSAi5oC75bqT5a2YIik7CiAgICAgIHRoaXMudmlydHVhbEZsYWcgPSB0aGlzLmNoZWNrTGlzdC5zb21lKGl0ZW0gPT4gaXRlbSA9PT0gIuiZmuaLn+mUgOmHjyIpOwogICAgICB0aGlzLnRydWVGbGFnID0gdGhpcy5jaGVja0xpc3Quc29tZShpdGVtID0+IGl0ZW0gPT09ICLnnJ/lrp7plIDph48iKTsKICAgICAgdGhpcy5zdGF0ZUZsYWcgPSB0aGlzLmNoZWNrTGlzdC5zb21lKGl0ZW0gPT4gaXRlbSA9PT0gIuW9k+WJjeeKtuaAgSIpOwogICAgICB0aGlzLnNob3BGbGFnID0gdGhpcy5jaGVja0xpc3Quc29tZShpdGVtID0+IGl0ZW0gPT09ICLplIDllK7lupfpk7oiKTsKICAgICAgdGhpcy50aW1lRmxhZyA9IHRoaXMuY2hlY2tMaXN0LnNvbWUoaXRlbSA9PiBpdGVtID09PSAi5Yib5bu65pe26Ze0Iik7CiAgICB9LAoKICAgIGJhdGNoU2V0RGlzdHJpYnV0aW9uKGVuYWJsZVN0YXR1cykgewogICAgICBsZXQgdGl0bGUgPSBlbmFibGVTdGF0dXMgPT09IDQgPyAi56Gu5a6a6KaB5om56YeP56aB55So5bqT5a2Y6ZSA5ZSu77yfIiA6ICLnoa7lrpropoHmibnph4/lkK/nlKjov5nkupvllYblk4HkuLrotJ/lupPlrZjplIDllK7lkJfvvJ8iOwoKICAgICAgaWYgKCF0aGlzLmNob29zZV9kYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6KaB5pON5L2c55qE5ZWG5ZOBIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLiRjb25maXJtKHRpdGxlLCAi5o+Q56S6IiwgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAi56Gu5a6aIiwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICB0eXBlOiAid2FybmluZyIKICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAgICAgdGhpcy5jaGVja2VkQWxsID0gZmFsc2U7CiAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTsKCiAgICAgICAgaWYgKCF0aGlzLmNob29zZV9kYXRhLmxlbmd0aCkgewogICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fpgInmi6nopoHmk43kvZznmoTllYblk4EiKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbnN0IGlkRGF0YSA9IHRoaXMuY2hvb3NlX2RhdGEubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7CiAgICAgICAgfSk7CiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGJhdGNoU2V0RGlzdHJpYnV0aW9uKHsKICAgICAgICAgIGlkczogaWREYXRhLAogICAgICAgICAgaXNEaXN0cmlidXRpb246IGVuYWJsZVN0YXR1cwogICAgICAgIH0pOwogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgbWVzc2FnZTogIuaTjeS9nOaIkOWKnyEiCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICAgIH0pOwogICAgfSwKCiAgICBzaG93U29ydChpbmRleCkgewogICAgICB0aGlzLmdvb2RzX2RhdGEuZm9yRWFjaChpdGVtID0+IGl0ZW0uc29ydF9mbGFnID0gZmFsc2UpOwogICAgICB0aGlzLm1lbWJlcl9zb3J0ID0gdGhpcy5nb29kc19kYXRhW2luZGV4XS5zb3J0OwogICAgICB0aGlzLmdvb2RzX2RhdGFbaW5kZXhdLnNvcnRfZmxhZyA9IHRydWU7CiAgICB9LAoKICAgIGFzeW5jIHNldFNvcnQoaW5kZXgpIHsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IHNldFNvcnQoewogICAgICAgIGlkOiB0aGlzLmdvb2RzX2RhdGFbaW5kZXhdLmlkLAogICAgICAgIHNvcnQ6IHRoaXMubWVtYmVyX3NvcnQKICAgICAgfSk7CiAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygi5L+u5pS55oiQ5YqfIik7CiAgICAgIHRoaXMuZ29vZHNfZGF0YVtpbmRleF0uc29ydF9mbGFnID0gZmFsc2U7CiAgICAgIGF3YWl0IHRoaXMuZ2V0QWxsR29vZHNMaXN0KCk7CiAgICB9CgogIH0KfTs="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2pBA;AACA,gE,CACA;;AACA;AAEA,SACAA,WADA,EAEAC,YAFA,EAGAC,cAHA,EAIAC,WAJA,EAKAC,iBALA,EAMAC,qBANA,EAOAC,UAPA,EAQAC,gBARA,EASAC,QATA,EAUAC,MAVA,EAWAC,uBAXA,EAYAC,iBAZA,EAaAC,gBAbA,EAcAC,QAdA,EAeAC,cAfA,EAgBAC,oBAhBA,EAiBAC,OAjBA,EAkBAC,eAlBA,QAmBA,aAnBA;AAoBA;AACA;AACA;EACAC,oBADA;EAEAC;IACAC,aADA;IAEA;IACAC,aAHA;IAIAC;EAJA,CAFA;;EAQAC;IACA;MACAC,oBADA;MAEAC,eAFA;MAGAC;QACAC,OADA;QAEAC,UAFA;QAGAC;MAHA,CAHA;MAQAC,iBARA;MASAC,kBATA;MAUAC,iBAVA;MAWAC,sBAXA;MAYAC,eAZA;MAaAC,kBAbA;MAcAC,kBAdA;MAeAC,cAfA;MAgBAC,WAhBA;MAiBAC,WAjBA;MAkBAC,cAlBA;MAmBAC,gBAnBA;MAoBAC,UApBA;MAqBAC,gBArBA;MAsBAC,mBAtBA;MAuBAC,QAvBA;MAwBAC,OAxBA;MAyBAC,YAzBA;MA0BAC,cA1BA;MA0BA;MACAC,eA3BA;MA4BAC;QACAC,gBADA;QAEAC,cAFA;QAGAC,SAHA;QAIAC,QAJA;QAKAb;MALA,CA5BA;MAmCAc,sBAnCA;MAoCAC,UApCA;MAqCAC,UArCA;MAsCAC,mBAtCA;MAuCAC;QACAC,gBADA;QAEAC,YAFA;QAGAC,aAHA;QAIAvB,WAJA;QAKAwB,YALA;QAMAC,cANA;QAOAC,0BAPA;QAOA;QACAC,cARA;QAQA;QACAC,cATA;QASA;QACAC,cAVA;QAUA;QACAC,UAXA,CAWA;;MAXA,CAvCA;MAoDAC,gBApDA;MAqDAC,cArDA;MAsDAC,mBAtDA;MAuDAC,gBAvDA;MAwDAC,aAxDA;MAyDAC,WAzDA;MA0DAC,YACA,MADA,EAEA,IAFA,EAGA,MAHA,EAIA,KAJA,EAKA;MACA,MANA,EAOA,MAPA,EAQA,MARA,EASA,MATA,CA1DA;MAqEAC,UACA;QACAC;MADA,CADA,EAIA;QACAA;MADA,CAJA,EAOA;QACAA;MADA,CAPA,EAUA;QACAA;MADA,CAVA,EAaA;MACA;MACA;MACA;QACAA;MADA,CAhBA,EAmBA;QACAA;MADA,CAnBA,EAsBA;QACAA;MADA,CAtBA,EAyBA;QACAA;MADA,CAzBA,CArEA;MAkGAC,kBAlGA;MAmGAC,uBAnGA;MAoGAC,cApGA;MAqGAC,mBArGA;MAsGAC,iBAtGA;MAuGAC,cAvGA;MAwGAC,eAxGA;MAyGAC,cAzGA;MA0GAC,cA1GA;MA2GAC,cA3GA,CA2GA;;IA3GA;EA6GA,CAtHA;;EAuHAC,YACA;MACAC;IADA;EADA,CAvHA;;EA4HAC;IACA;MACA;IACA,CAFA,MAEA;MACA;IACA,CAFA,MAEA;MACA;IACA;;IACA;IACA;EACA,CAtIA;;EAuIAC;IACA;IACA;EACA,CA1IA;;EA2IAC;IACAC;MAAAC;MAAAC;MAAAC;MAAAC;MAAAC;IAAA;MACA;QACA;UACA;QACA;MACA;IACA,CAPA;;IAQA;IACA;MACA;QAAA5E;MAAA;MACA;IACA,CAZA;;IAaA;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA;QACA6E,6BADA;QAEAC;MAFA;MAKA;MACA;IACA,CA7BA;;IA8BAC;MACA;MACA;IACA,CAjCA;;IAkCAC;MACA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA,CAxCA;;IAyCAC;MACA;QACA;UACA;UACA;UACA;;QACA;UACA;UACA;UACA;;QACA;UACA;UACA;UACA;;QACA;UACA;UACA;UACA;MAhBA;;MAkBA;IACA,CA7DA;;IA8DA;IACA;MAAAP;IAAA;MACA;QACA;;QACA;UACA;YAAA1E;UAAA;;UACA;YACA;cACA,8DACAkF;gBACA,qCACAC,GADA,CACAC;kBACA;gBACA,CAHA,EAIAC,IAJA,CAIA,GAJA;gBAKA,SACA,OADA;kBAEAC;gBAFA;cAIA,CAXA;YAaA,CAdA;UAeA,CAhBA,MAgBA;YACA;cACA,8DACAJ;gBACA,SACA,OADA;kBAEAI;gBAFA;cAIA,CANA;YAQA,CATA;UAUA;QACA;;QACAC;MACA,CAlCA,EADA,CAoCA;IACA,CApGA;;IAqGAC;MACA;IACA,CAvGA;;IAwGAC;MACA;MACA;MACA;IACA,CA5GA;;IA6GAC;MACA;MACA;MACA;IACA,CAjHA;;IAkHA;IACAC;MAAAC;IAAA;MACA;MACA;MACA;IACA,CAvHA;;IAwHA;IACAC;MACA;IACA,CA3HA;;IA4HA;IACAC;MACA;QACA;QACA;QACA;QACA;MACA,CALA,MAKA;QACA;MACA;IACA,CAtIA;;IAwIA;IACA;MACA,YACA5E,qBACA,eADA,GAEA,eAHA;;MAIA;QACA;QACA;MACA;;MACA;QACA6E,uBADA;QAEAC,sBAFA;QAGAxB;MAHA,GAIAyB,IAJA,CAIA;QACA;UACA;UACA;QACA;;QACA;UACA;QACA,CAFA;QAGA;UACApB,UADA;UAEA3D;QAFA;QAIA;UACAsD,eADA;UAEA0B;QAFA;QAIA;MACA,CArBA;IAsBA,CAxKA;;IAyKA;IACA;MACA;QACA;QACA;MACA;;MACA;QACAH,uBADA;QAEAC,sBAFA;QAGAxB;MAHA,GAIAyB,IAJA,CAIA;QACA;UACA;UACA;QACA;;QACA;UACA;QACA,CAFA;QAGA;UACApB,UADA;UAEAsB;QAFA;QAIA;UACA3B,eADA;UAEA0B;QAFA;QAIA;MACA,CArBA;IAsBA,CArMA;;IAsMA;IACA;MACA;QACA3E,eADA;QAEAC,uBAFA;QAGA4E,2BAHA;QAIAC;MAJA;;MAMA;QACAC;MACA;;MACA;QACAA;MACA;;MACA;QACA,uCACA,SADA;UAEAC;QAFA;MAIA,CALA,MAKA;QACA;QACA;UACA,SACA,OADA;YAEAC,yBAFA;YAGAhG,kBAHA;YAIAiG,sBAJA;YAKAC;UALA;QAOA,CARA;QASA;MACA;IACA,CAtOA;;IAuOA;MACA;QACAnF,eADA;QAEAC,uBAFA;QAGAmF,yBAHA;QAIA5F,qBAJA;QAKAa,8CALA;QAMAZ,qBANA;QAOAE,+BAPA;QAQAC;MARA;;MAUA;QACA,2CACA,SADA;UAEAoF;QAFA;MAIA,CALA,MAKA;QACA;QACA;UACA,SACA,OADA;YAEAC,yBAFA;YAGAhG,kBAHA;YAIAiG,sBAJA;YAKAC;UALA;QAOA,CARA;QASA;MACA;IACA,CApQA;;IAqQA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAE;MACA;QACA;MACA,CAHA,CAIA;;;MACA;QACA7F,qBADA;QAEAC,qBAFA;QAGAY,8CAHA;QAIAV,+BAJA;QAKAC;MALA;MAOA;;MACA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA,CA9TA;;IA+TA;IACA0F;MACA;IACA,CAlUA;;IAmUA;IACAC;MACA;MACA;MACA;IACA,CAxUA;;IAyUA;IACAC;MACA;MACA;IACA,CA7UA;;IA8UA;IACAC;MACA;MACA;MACA;IACA,CAnVA;;IAoVA;IACA;MACA;QACAjB,uBADA;QAEAC,sBAFA;QAGAxB;MAHA,GAIAyB,IAJA,CAIA;QACA;QAEA;UACAzB,eADA;UAEA0B;QAFA;QAIA;MACA,CAZA;IAaA,CAnWA;;IAoWA;IACA;MACA;QACAH,uBADA;QAEAC,sBAFA;QAGAxB;MAHA,GAIAyB,IAJA,CAIA;QACA;QAEA;UACAzB,eADA;UAEA0B;QAFA;QAIA;MACA,CAZA;IAaA,CAnXA;;IAoXA;IACA;MACA;QACA;UACArB,UADA;UAEA3D;QAFA;QAIA;UACAsD,eADA;UAEA0B;QAFA;MAIA,CATA,CASA;QACA;MACA;IACA,CAlYA;;IAmYA;IACAe;MACA;MACA;IACA,CAvYA;;IAwYA;IACAC;MACA;MACA;IACA,CA5YA;;IA6YAC;MACA;MACA;MACA;IACA,CAjZA;;IAkZA;IACAC;MACA;MACA;;MACA;QACA;MACA;IACA,CAzZA;;IA0ZA;IACAC;MACA;MACA;;MACA;QACA;MACA;;MACA;QACA;MACA;;MACA;QACA;MACA;;MACA;QACA;MACA;IACA,CA1aA;;IA2aA;IACA;MACA;QACA;QACA;MACA;;MACA;QACA;MACA,CAFA;MAGA;;MACA;QACA;UACA1E,sCADA;UAEAG,4BAFA;UAGAF,oCAHA;UAIAxC;QAJA;QAMA;QAEA;QACA;QACA;MACA,CAZA,CAYA;QACA;MACA;IACA,CApcA;;IAqcA;IACA;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA;;MACA;QACA;UACA;QACA,CAFA;QAGA,sCACA,qBADA;UAEAA;QAFA;QAIA;QAEA;QACA;QACA;MACA,CAbA,CAaA;QACA;MACA;IACA,CAxeA;;IAyeA;IACA;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA;QACA;MACA,CAFA;MAGA;;MACA;QACA;UACAyE,UADA;UAEA7D;QAFA;QAIA;QAEA;QACA;QACA;MACA,CAVA,CAUA;QACA;MACA;IACA,CApgBA;;IAsgBA;IACA;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA;;MACA;QACA;UACA;QACA,CAFA;QAGA;UACA6D,UADA;UACA;UACA5D,mCACA,iCADA,CAFA;UAIA;UACAW,8CALA,CAKA;;QALA;QAOA;QACA;QACA;QACA;QACA;MACA,CAhBA,CAgBA;QACA;MACA;IACA,CApiBA;;IAqiBA0F;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACA,CA/iBA;;IAgjBA9H;MACA,YACA0B,qBACA,cADA,GAEA,qBAHA;;MAIA;QACA;QACA;MACA;;MACA;QACA6E,uBADA;QAEAC,sBAFA;QAGAxB;MAHA,GAIAyB,IAJA,CAIA;QACA;QACA;;QACA;UACA;UACA;QACA;;QACA;UACA;QACA,CAFA;QAGA;UACA7F,WADA;UAEAmH;QAFA;QAIA;UACA/C,eADA;UAEA0B;QAFA;QAIA;MACA,CAvBA;IAwBA,CAjlBA;;IAklBAsB;MACA;MACA;MACA;IACA,CAtlBA;;IAulBA;MACA;QAAAxH;MAAA;QACA6E,6BADA;QAEA4C;MAFA;MAIA;MACA;MACA;IACA;;EA/lBA;AA3IA","names":["setSalesNum","getGoodsInfo","BatchUnloading","getAllGoods","exportGetAllGoods","exportGetAllGoodsList","searchGood","exportSearchGood","delGoods","setTop","GoodsUpdateEnableStatus","batchGoodsExpress","setSalesNumBatch","setBrand","updateCategory","batchSetDistribution","setSort","getAllGoodsList","name","components","GoodsCategory","BrandSelModel","SelectShop","data","virtual_sales_num","set_goods_id","sale_num_form","ids","minVal","maxVal","activeName","goods_sku_list","checkedAll","isIndeterminate","is_price","sku_visible","sku_goods_name","goods_name","keyword","brandId","categoryId","enableStatus","shopId","sel_brand","transferShow","total","page","pageSize","goods_data","choose_data","form","categoryPath","search_key","brand","shop","price_goods_detail","inSales","inStock","spec_loading","set_form","masterUnitId","shopName","brandName","category","branchUnit","deliverySupIds","expressType","expressFee","showExpress","ruleId","express_list","assistForm","more_sub_btn","unit_show","is_set","set_tit","checkList","columns","label","classifyFlag","specificationFlag","unitFlag","inventoryFlag","virtualFlag","trueFlag","stateFlag","shopFlag","timeFlag","member_sort","computed","enterpriseScope","created","activated","methods","showTooltipMethod","type","column","row","items","_columnIndex","id","val","showSetSaleNum","openAddGoods","tabChange","item","map","itemS","join","specValueName","resolve","toggleRowExpansion","delBrand","delShop","selectionChange","records","editsubData","openPriceModel","confirmButtonText","cancelButtonText","then","message","deleteStatus","ifMerchant","merchantId","params","export","sale_false_visible","address","sort_flag","keywordType","getData","goodsChane","brandConfirm","transferBrandConfirm","shopConfirm","pageChange","sizeChange","checkAllChange","openSet","moreSubData","change","isDistribution","showSort","sort"],"sourceRoot":"src/views/goods/sale","sources":["PublishGoods.vue"],"sourcesContent":["<template>\n <ContainerQuery>\n <div slot=\"left\">\n <el-dropdown\n v-if=\"\n $accessCheck($Access.PublishGoodsAddGoods) ||\n $accessCheck($Access.PublishGoodsAddBasicAndPublishGoods)\n \"\n split-button\n type=\"primary\"\n @click=\"openAddGoods\"\n >\n 发布商品\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item>\n <div class=\"dropdown-div\" @click=\"getAllGoodsList(1)\">导出</div>\n </el-dropdown-item>\n <el-dropdown-item v-if=\"enterpriseScope == '4'\">\n <div @click=\"$router.push('/goods/manageG/SingleGoodsImport')\">\n 导入\n </div>\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-button v-else size=\"small\" type=\"primary\" @click=\"getData(1)\">\n 导出\n </el-button>\n </div>\n <div v-if=\"$accessCheck($Access.PublishGoodsSearch)\" slot=\"more\">\n <el-form :inline=\"true\" size=\"small\">\n <el-form-item>\n <el-input\n v-model=\"keyword\"\n style=\"width: 220px\"\n placeholder=\"商品名称/商品编码\"\n clearable\n @keyup.enter.native=\"pageChange(1)\"\n @clear=\"pageChange(1)\"\n >\n <el-button slot=\"append\" @click=\"pageChange(1)\">\n <i class=\"el-icon-search\"></i>\n </el-button>\n </el-input>\n </el-form-item>\n <el-form-item>\n <GoodsCategory\n v-model=\"form.categoryPath\"\n :width=\"160\"\n check-strictly\n clearable\n size=\"small\"\n @change=\"goodsChane\"\n />\n </el-form-item>\n <el-form-item>\n <el-input\n v-model=\"form.brand\"\n style=\"width: 150px\"\n placeholder=\"商品品牌\"\n clearable\n @clear=\"delBrand\"\n >\n <i\n slot=\"suffix\"\n class=\"el-input__icon el-icon-search\"\n @click=\"sel_brand = true\"\n ></i>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-select\n v-model=\"enableStatus\"\n placeholder=\"销售状态\"\n style=\"width: 150px\"\n clearable\n @change=\"pageChange(1)\"\n >\n <el-option label=\"上架\" :value=\"5\"></el-option>\n <el-option label=\"下架\" :value=\"4\"></el-option>\n </el-select>\n </el-form-item>\n <el-form-item>\n <SelectShop\n v-model=\"shopId\"\n width=\"150\"\n placeholder=\"销售店铺\"\n @change=\"shopConfirm\"\n @clear=\"delShop\"\n />\n </el-form-item>\n </el-form>\n </div>\n <el-tabs v-model=\"activeName\" type=\"card\" @tab-click=\"tabChange\">\n <el-tab-pane label=\"全部\" name=\"all\"></el-tab-pane>\n <el-tab-pane label=\"销售中\" name=\"GoodsSale\"></el-tab-pane>\n <el-tab-pane label=\"已售罄\" name=\"SoldOut\"></el-tab-pane>\n <el-tab-pane label=\"仓库中\" name=\"InWarehouse\"></el-tab-pane>\n </el-tabs>\n <vxe-table\n ref=\"goodsTable\"\n show-overflow\n border=\"inner\"\n :data=\"goods_data\"\n :expand-config=\"{\n accordion: true,\n lazy: true,\n loadMethod: showSpec,\n }\"\n :tooltip-config=\"{ contentMethod: showTooltipMethod, enterable: true }\"\n @checkbox-all=\"selectionChange\"\n @checkbox-change=\"selectionChange\"\n >\n <vxe-table-column type=\"checkbox\" width=\"60\"></vxe-table-column>\n <vxe-table-column\n field=\"code\"\n width=\"140\"\n title=\"编码\"\n ></vxe-table-column>\n <vxe-table-column field=\"materialName\" title=\"商品\" min-width=\"300\">\n <template #default=\"scope\">\n <div class=\"clearfix\">\n <div class=\"float_left\">\n <el-image fit=\"cover\" :src=\"scope.row.images[0]\"></el-image>\n </div>\n <div class=\"float_left goods-name-view\">\n {{ scope.row.title }}\n </div>\n </div>\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"classifyFlag\"\n field=\"categoryName\"\n title=\"商品分类\"\n min-width=\"120\"\n >\n <template #default=\"scope\">\n {{ scope.row.categoryName || \"未设置\" }}\n <el-button\n v-if=\"$accessCheck($Access.BaseDataListUpdateCategory)\"\n type=\"text\"\n icon=\"el-icon-edit\"\n @click=\"openSet('转移分类', scope.row)\"\n ></el-button>\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"specificationFlag\"\n type=\"expand\"\n title=\"规格\"\n width=\"140\"\n >\n <template #default=\"scope\">\n <div class=\"sku-btn\" @click=\"toggleRowExpansion(scope.rowIndex)\">\n {{ scope.row.specTotal }}种规格\n </div>\n </template>\n <template #content=\"scope\">\n <ul class=\"sku-ul\">\n <li\n v-for=\"(item, index) in scope.row.goods_sku_list\"\n :key=\"index\"\n class=\"sku-li\"\n >\n <div class=\"clearfix\">\n <div class=\"float_left\">\n <img\n class=\"sku-img\"\n :src=\"item.specImage || scope.row.images[0]\"\n alt=\"\"\n />\n </div>\n <div class=\"sku-info float_left\">\n <p>\n <span class=\"label\">规格:</span>\n {{ item.unitName }};{{ item.specValueName }}\n </p>\n <p>\n <span class=\"label\">库存:</span>\n {{ $_common.formatNub(item.inventory) }};\n <span class=\"label\">销量:</span>\n {{ $_common.formatNub(item.salesNum) }}\n </p>\n <p>\n <span class=\"label\">起订量:</span>\n {{ $_common.formatNub(item.setNum) }};\n <span class=\"label\">市场价:</span>\n {{ $_common.formattedNumber(item.marketPrice) }}\n </p>\n <p>\n <span class=\"label\">阶梯价:</span>\n {{ item.enabledLadder === 1 ? \"是\" : \"否\" }};\n <span v-if=\"!item.enabledLadder\">\n <span class=\"label\">销售价:</span>\n {{ $_common.formattedNumber(item.salePrice) }}\n </span>\n </p>\n </div>\n </div>\n <div v-if=\"item.enabledLadder\" class=\"clearfix\">\n <div class=\"float_left\" style=\"width: 50px; margin-right: 10px\">\n 销售价:\n </div>\n <div class=\"float_left\">\n <p v-for=\"(price, indexP) in item.ladderPrice\" :key=\"indexP\">\n <span>\n 数量:\n <span style=\"color: #ff4040\">\n {{ price.from }}-{{\n indexP === item.ladderPrice.length - 1\n ? \"∞\"\n : price.to\n }}\n </span>\n ,\n </span>\n <span>\n 价格:\n <span style=\"color: #ff4040\">\n {{ $_common.formattedNumber(price.price) }}\n </span>\n ;\n </span>\n </p>\n </div>\n </div>\n </li>\n </ul>\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"unitFlag\"\n field=\"unitNameMaster\"\n title=\"基本单位\"\n min-width=\"100\"\n ></vxe-table-column>\n <vxe-table-column field=\"sort\" title=\"排序\" min-width=\"130\">\n <template #default=\"{ row, $rowIndex }\">\n <div v-if=\"row.sort_flag\">\n <el-input-number\n v-model=\"member_sort\"\n style=\"width: calc(100% - 30px)\"\n :controls=\"false\"\n size=\"mini\"\n @keyup.enter.native=\"setSort($rowIndex)\"\n ></el-input-number>\n <div class=\"virtualSalesNum-btn\" @click=\"setSort($rowIndex)\">\n <i class=\"el-icon-check\"></i>\n </div>\n </div>\n\n <div v-else @click=\"showSort($rowIndex)\">\n {{ row.sort }}\n <el-button type=\"text\" icon=\"el-icon-edit\"></el-button>\n </div>\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"inventoryFlag\"\n field=\"masterInventory\"\n title=\"总库存\"\n min-width=\"100\"\n >\n <template #default=\"scope\">\n <span\n :class=\"\n Number(scope.row.inventorTotal) <= 0\n ? 'danger-status'\n : 'success-status'\n \"\n class=\"\"\n >\n {{ $_common.formatNub(scope.row.inventorTotal) }}\n </span>\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"false\"\n field=\"virtualSalesNum\"\n title=\"虚拟销量\"\n min-width=\"100\"\n >\n <template #default=\"scope\">\n <div v-if=\"scope.row.sale_false_visible\">\n <el-input-number\n v-model=\"virtual_sales_num\"\n style=\"width: calc(100% - 28px)\"\n :controls=\"false\"\n size=\"mini\"\n @keyup.enter.native=\"setSalesNum(scope.$index)\"\n @blur=\"setSalesNum(scope.$index, -1)\"\n ></el-input-number>\n <div class=\"virtualSalesNum-btn\" @click=\"setSalesNum(scope.$index)\">\n <i class=\"el-icon-check\"></i>\n </div>\n </div>\n\n <div v-else @click=\"showSetSaleNum(scope.$index)\">\n {{ scope.row.virtualSalesNum }}\n <el-button\n v-if=\"$accessCheck($Access.PublishGoodssetSalesNum)\"\n type=\"text\"\n icon=\"el-icon-edit\"\n ></el-button>\n </div>\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"trueFlag\"\n field=\"salesNum\"\n title=\"真实销量\"\n min-width=\"100\"\n >\n <template #default=\"scope\">\n {{ $_common.formatNub(scope.row.salesNum) }}\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"stateFlag\"\n field=\"enableStatus\"\n title=\"销售状态\"\n width=\"100\"\n >\n <template #default=\"scope\">\n <el-switch\n v-if=\"$accessCheck($Access.PublishGoodsUpdateEnableStatus)\"\n v-model=\"scope.row.enableStatus\"\n class=\"switchStyle\"\n active-color=\"#36B365\"\n :active-value=\"5\"\n :inactive-value=\"4\"\n active-text=\"上架\"\n inactive-text=\"下架\"\n @change=\"changeGoodsStatus($event, scope.row)\"\n ></el-switch>\n <div v-else>\n <span v-if=\"scope.row.enableStatus === 5\" class=\"success-status\">\n 上架\n </span>\n <span v-else class=\"info-status\">下架</span>\n </div>\n </template>\n </vxe-table-column>\n <vxe-table-column\n v-if=\"shopFlag\"\n field=\"shopName\"\n title=\"销售店铺\"\n min-width=\"200\"\n ></vxe-table-column>\n <vxe-table-column\n v-if=\"timeFlag\"\n field=\"createTime\"\n title=\"创建时间\"\n width=\"150\"\n >\n <template #default=\"scope\">\n {{ $_common.formatDate(scope.row.createTime) }}\n </template>\n </vxe-table-column>\n <vxe-table-column title=\"操作\" fixed=\"right\" width=\"160\">\n <!-- <template slot=\"header\" #default=\"scope\">-->\n <!-- <!– <span v-if=\"false\">{{ scope.$index }}</span>–>-->\n <!-- <span class=\"operation\">操作</span>-->\n <!-- <el-popover popper-class=\"custom-table-checkbox\" trigger=\"click\">-->\n <!-- <el-checkbox-group v-model=\"checkList\">-->\n <!-- <el-checkbox-->\n <!-- v-for=\"(item, index) in columns\"-->\n <!-- :key=\"index\"-->\n <!-- :label=\"item.label\"-->\n <!-- @change=\"change\"-->\n <!-- ></el-checkbox>-->\n <!-- </el-checkbox-group>-->\n <!-- <el-button-->\n <!-- slot=\"reference\"-->\n <!-- icon=\"el-icon-setting\"-->\n <!-- type=\"text\"-->\n <!-- ></el-button>-->\n <!-- </el-popover>-->\n <!-- </template>-->\n <template #default=\"scope\">\n <div style=\"height: 34px; line-height: 34px\">\n <el-button\n v-if=\"\n ($accessCheck($Access.PublishGoodsEditGoods) &&\n $accessCheck($Access.PublishGoodsGetGoodsInfo) &&\n $route.name === 'PublishGoods') ||\n ($accessCheck($Access.PublishGoodsEditQuickGoods) &&\n $accessCheck($Access.PublishGoodsGetQuickGoodsInfo) &&\n $route.name === 'PublishGoods')\n \"\n type=\"text\"\n @click=\"openPriceModel(scope.row)\"\n >\n 编辑\n </el-button>\n <el-button\n v-if=\"\n $accessCheck($Access.PublishGoodsDelGoods) &&\n $route.name === 'PublishGoods'\n \"\n type=\"text\"\n @click=\"delData(scope.row.id)\"\n >\n 删除\n </el-button>\n <el-button\n v-if=\"$accessCheck($Access.PublishGoodssetTop)\"\n type=\"text\"\n @click=\"setTop(scope.row.id)\"\n >\n {{ scope.row.topTime !== 0 ? \"取消置顶\" : \"置顶\" }}\n </el-button>\n </div>\n </template>\n </vxe-table-column>\n </vxe-table>\n <!-- <el-drawer-->\n <!-- class=\"edit-drawer\"-->\n <!-- :title=\"goods_name\"-->\n <!-- :visible.sync=\"is_price\"-->\n <!-- direction=\"rtl\"-->\n <!-- size=\"50%\"-->\n <!-- >-->\n <!-- <EditGoods-->\n <!-- v-if=\"is_price\"-->\n <!-- :goods-id=\"price_goods_detail.id\"-->\n <!-- @subData=\"editsubData\"-->\n <!-- />-->\n <!-- </el-drawer>-->\n <FooterPage\n :page-size=\"pageSize\"\n :total-page.sync=\"total\"\n :current-page.sync=\"page\"\n @pageChange=\"pageChange\"\n @sizeChange=\"sizeChange\"\n >\n <div slot=\"btn-div\" class=\"foot-btn-div\">\n <span class=\"batch-checkbox\">\n <vxe-checkbox\n v-model=\"checkedAll\"\n :indeterminate=\"isIndeterminate\"\n @change=\"checkAllChange\"\n ></vxe-checkbox>\n </span>\n <el-dropdown\n v-if=\"\n $accessCheck($Access.PublishGoodsUpdateEnableStatus) &&\n ['PublishGoods', 'InWarehouse'].includes($route.name)\n \"\n >\n <el-button size=\"mini\">\n 批量上下架\n <i class=\"el-icon-caret-top\"></i>\n </el-button>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item>\n <div class=\"dropdown-div\" @click=\"BatchUnloading(5)\">\n 批量上架\n </div>\n </el-dropdown-item>\n <el-dropdown-item>\n <div class=\"dropdown-div\" @click=\"BatchUnloading(4)\">\n 批量下架\n </div>\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-dropdown\n v-if=\"\n $accessCheck($Access.PublishGoodssetSalesNumBatch) ||\n $accessCheck($Access.PublishGoodsbatchGoodsExpress)\n \"\n >\n <el-button size=\"mini\">\n 批量设置\n <i class=\"el-icon-caret-top\"></i>\n </el-button>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item\n v-if=\"$accessCheck($Access.PublishGoodssetSalesNumBatch)\"\n >\n <div class=\"dropdown-div\" @click=\"openSet('虚拟销量')\">\n 设置虚拟销量\n </div>\n </el-dropdown-item>\n <el-dropdown-item\n v-if=\"$accessCheck($Access.PublishGoodsbatchGoodsExpress)\"\n >\n <div class=\"dropdown-div\" @click=\"openSet('物流设置')\">\n 批量设置物流\n </div>\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-dropdown\n v-if=\"\n $accessCheck($Access.BaseDataListUpdateCategory) ||\n $accessCheck($Access.BaseDataListSetBrand)\n \"\n >\n <el-button size=\"mini\">\n 批量转移\n <i class=\"el-icon-caret-top\"></i>\n </el-button>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item>\n <div\n v-if=\"$accessCheck($Access.BaseDataListUpdateCategory)\"\n class=\"dropdown-div\"\n @click=\"openSet('转移分类')\"\n >\n 转移分类\n </div>\n </el-dropdown-item>\n <el-dropdown-item>\n <div\n v-if=\"$accessCheck($Access.BaseDataListSetBrand)\"\n class=\"dropdown-div\"\n @click=\"openSet('设置品牌')\"\n >\n 转移品牌\n </div>\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-dropdown\n v-if=\"\n $accessCheck($Access.PublishGoodsUpdateEnableStatus) &&\n ['PublishGoods', 'InWarehouse'].includes($route.name)\n \"\n >\n <el-button size=\"mini\">\n 批量负库存销售\n <i class=\"el-icon-caret-top\"></i>\n </el-button>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item>\n <div class=\"dropdown-div\" @click=\"batchSetDistribution(5)\">\n 批量启用\n </div>\n </el-dropdown-item>\n <el-dropdown-item>\n <div class=\"dropdown-div\" @click=\"batchSetDistribution(4)\">\n 批量禁用\n </div>\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-dropdown\n v-if=\"\n $accessCheck($Access.PublishGoodsUpdateEnableStatus) &&\n ['PublishGoods', 'InWarehouse'].includes($route.name)\n \"\n >\n <el-button size=\"mini\" @click=\"deleteBatchUnloading(4)\">\n 批量删除\n </el-button>\n </el-dropdown>\n </div>\n </FooterPage>\n <BrandSelModel\n v-if=\"sel_brand\"\n :is-check=\"false\"\n :dialog-visible=\"sel_brand\"\n @close=\"sel_brand = false\"\n @confirm=\"brandConfirm\"\n />\n <BrandSelModel\n v-if=\"transferShow\"\n :is-check=\"false\"\n :dialog-visible=\"transferShow\"\n @close=\"transferShow = false\"\n @confirm=\"transferBrandConfirm\"\n />\n <el-dialog\n :close-on-press-escape=\"false\"\n :close-on-click-modal=\"false\"\n :title=\"set_tit\"\n :visible.sync=\"is_set\"\n width=\"30%\"\n >\n <el-form ref=\"set_form\" :model=\"set_form\" label-width=\"100px\">\n <el-form-item v-if=\"set_tit === '虚拟销量'\" label=\"销量区间:\">\n <el-input-number\n v-model=\"sale_num_form.minVal\"\n :controls=\"false\"\n ></el-input-number>\n -\n <el-input-number\n v-model=\"sale_num_form.maxVal\"\n :controls=\"false\"\n ></el-input-number>\n <p class=\"form-tip\">虚拟总销量等于销量区间内产生的随机数</p>\n </el-form-item>\n <el-form-item v-if=\"set_tit === '转移分类'\" label=\"转移分类:\">\n <GoodsCategory v-model=\"set_form.category\" check-strictly />\n </el-form-item>\n <el-form-item v-if=\"set_tit === '设置品牌'\" label=\"设置品牌:\">\n <el-input\n v-model=\"set_form.brandName\"\n readonly\n style=\"width: 240px\"\n placeholder=\"请选择品牌\"\n >\n <i\n slot=\"suffix\"\n class=\"el-input__icon el-icon-search\"\n @click=\"transferShow = true\"\n ></i>\n </el-input>\n </el-form-item>\n <div v-if=\"set_tit === '物流设置'\">\n <el-form-item v-if=\"false\" label=\"物流支持:\" prop=\"deliverySupIds\">\n <el-checkbox-group v-model=\"set_form.deliverySupIds\">\n <el-checkbox label=\"1\">快递</el-checkbox>\n <el-checkbox label=\"2\">自提</el-checkbox>\n </el-checkbox-group>\n </el-form-item>\n <br />\n <el-form-item label=\"快递运费:\">\n <el-radio-group v-model=\"set_form.expressType\">\n <el-radio :label=\"1\">包邮</el-radio>\n <el-radio :label=\"2\">运费模版</el-radio>\n <el-radio :label=\"3\">统一运费</el-radio>\n </el-radio-group>\n </el-form-item>\n <br />\n <div v-if=\"set_form.expressType === 2\">\n <el-form-item label=\"运费模板:\" prop=\"ruleId\">\n <el-select v-model=\"set_form.ruleId\" placeholder=\"请选择\">\n <el-option\n v-for=\"(item, index) in express_list\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"item.id\"\n ></el-option>\n </el-select>\n </el-form-item>\n </div>\n <div v-if=\"set_form.expressType === 3\">\n <el-form-item label=\"统一运费:\" prop=\"expressFee\">\n <el-input-number\n v-model=\"set_form.expressFee\"\n :controls=\"false\"\n ></el-input-number>\n <span>元</span>\n </el-form-item>\n </div>\n <el-form-item v-if=\"false\" label=\"是否展示快递:\">\n <el-radio-group v-model=\"set_form.showExpress\">\n <el-radio :label=\"4\">不展示</el-radio>\n <el-radio :label=\"5\">展示</el-radio>\n </el-radio-group>\n </el-form-item>\n </div>\n </el-form>\n <span slot=\"footer\" class=\"dialog-footer\">\n <el-button @click=\"is_set = false\">取 消</el-button>\n <el-button :loading=\"more_sub_btn\" type=\"primary\" @click=\"moreSubData\">\n 确 定\n </el-button>\n </span>\n </el-dialog>\n </ContainerQuery>\n</template>\n\n<script>\n import GoodsCategory from \"@/component/common/GoodsCategory.vue\";\n import BrandSelModel from \"@/component/goods/BrandSelModel.vue\";\n // import EditGoods from \"./AddGoods\";\n import SelectShop from \"@/component/goods/SelectShop.vue\";\n\n import {\n setSalesNum,\n getGoodsInfo,\n BatchUnloading,\n getAllGoods,\n exportGetAllGoods,\n exportGetAllGoodsList,\n searchGood,\n exportSearchGood,\n delGoods,\n setTop,\n GoodsUpdateEnableStatus,\n batchGoodsExpress,\n setSalesNumBatch,\n setBrand,\n updateCategory,\n batchSetDistribution,\n setSort,\n getAllGoodsList,\n } from \"@/api/goods\";\n import { getAllExpressRule } from \"@/api/System\";\n import { mapGetters } from \"vuex\";\n export default {\n name: \"PublishGoods\",\n components: {\n GoodsCategory,\n // EditGoods,\n BrandSelModel,\n SelectShop,\n },\n data() {\n return {\n virtual_sales_num: 0,\n set_goods_id: 0,\n sale_num_form: {\n ids: [],\n minVal: \"\",\n maxVal: \"\",\n },\n activeName: \"all\",\n goods_sku_list: [],\n checkedAll: false,\n isIndeterminate: false,\n is_price: false,\n sku_visible: false,\n sku_goods_name: \"\",\n goods_name: \"\",\n keyword: \"\",\n brandId: \"\",\n categoryId: \"\",\n enableStatus: \"\",\n shopId: \"\",\n sel_brand: false,\n transferShow: false,\n total: 0,\n page: 1,\n pageSize: 10,\n goods_data: [], // table 数据\n choose_data: [],\n form: {\n categoryPath: [],\n search_key: \"\",\n brand: \"\",\n shop: \"\",\n enableStatus: \"\",\n },\n price_goods_detail: {},\n inSales: 0,\n inStock: 0,\n spec_loading: false,\n set_form: {\n masterUnitId: \"\",\n shopName: \"\",\n brandName: \"\",\n brandId: \"\",\n category: [],\n branchUnit: [],\n deliverySupIds: [\"1\", \"2\"], // 物流支持 固定值 1 快递 2 自提 传参格式:1,2\n expressType: 1, // 快递运费 1 包邮 2 运费模版 3 固定费用\n expressFee: \"\", // 固定费用\n showExpress: 5, // 是否展示快递 5展示 4不展示\n ruleId: \"\", // 运费模版id\n },\n express_list: [],\n assistForm: {},\n more_sub_btn: false,\n unit_show: false,\n is_set: false,\n set_tit: \"\",\n checkList: [\n \"商品分类\",\n \"规格\",\n \"基本单位\",\n \"总库存\",\n // \"虚拟销量\",\n \"真实销量\",\n \"当前状态\",\n \"销售店铺\",\n \"创建时间\",\n ],\n columns: [\n {\n label: \"商品分类\",\n },\n {\n label: \"规格\",\n },\n {\n label: \"基本单位\",\n },\n {\n label: \"总库存\",\n },\n // {\n // label: \"虚拟销量\",\n // },\n {\n label: \"真实销量\",\n },\n {\n label: \"当前状态\",\n },\n {\n label: \"销售店铺\",\n },\n {\n label: \"创建时间\",\n },\n ],\n classifyFlag: true,\n specificationFlag: true,\n unitFlag: true,\n inventoryFlag: true,\n virtualFlag: true,\n trueFlag: true,\n stateFlag: true,\n shopFlag: true,\n timeFlag: true,\n member_sort: 0, //排序\n };\n },\n computed: {\n ...mapGetters({\n enterpriseScope: \"MUser/enterpriseScope\",\n }),\n },\n created() {\n if (this.$route.name === \"GoodsSale\") {\n this.inSales = 5;\n } else if (this.$route.name === \"SoldOut\") {\n this.inStock = 4;\n } else if (this.$route.name === \"InWarehouse\") {\n this.inStock = 5;\n }\n this.getAllGoodsList();\n this.getAllExpressRule();\n },\n activated() {\n if (this.$_isInit()) return;\n this.getData();\n },\n methods: {\n showTooltipMethod({ type, column, row, items, _columnIndex }) {\n if (column.property === \"shopName\") {\n if (type === \"body\") {\n return column.shopName;\n }\n }\n },\n // 获取运费模版\n async getAllExpressRule() {\n const { data } = await getAllExpressRule();\n this.express_list = data;\n },\n async setSalesNum(index, tag) {\n if (tag === -1) {\n this.goods_data[index].sale_false_visible = false;\n return;\n }\n if (this.virtual_sales_num < 0) {\n this.$message.warning(\"请输入大于0的值\");\n return;\n }\n const data = await setSalesNum({\n id: this.goods_data[index].id,\n val: this.virtual_sales_num,\n });\n\n this.goods_data[index].sale_false_visible = false;\n this.getData();\n },\n showSetSaleNum(index) {\n this.virtual_sales_num = this.goods_data[index].virtualSalesNum;\n this.goods_data[index].sale_false_visible = true;\n },\n openAddGoods() {\n if (parseInt(this.$store.getters[\"MUser/enterpriseScope\"]) === 4) {\n this.$router.push(\"/goods/sale/AddGoodsOneStore\");\n } else {\n this.$router.push(\"/goods/sale/AddGoods\");\n }\n },\n tabChange() {\n switch (this.activeName) {\n case \"all\":\n this.inSales = 1;\n this.inStock = 0;\n break;\n case \"GoodsSale\":\n this.inSales = 2;\n this.inStock = 0;\n break;\n case \"SoldOut\":\n this.inSales = 3;\n this.inStock = 4;\n break;\n case \"InWarehouse\":\n this.inSales = 4;\n this.inStock = 5;\n break;\n }\n this.pageChange(1);\n },\n // 用于可展开表格与树形表格,切换某一行的展开状态,如果使用了第二个参数,则是设置这一行展开与否(expanded 为 true 则展开)\n async showSpec({ row }) {\n return new Promise(async (resolve) => {\n const index = this.goods_data.findIndex((item) => item.id === row.id);\n if (!this.goods_data[index].goods_sku_list.length) {\n const { data } = await getGoodsInfo(row.id);\n if (data.specType === 2) {\n this.$nextTick(() => {\n this.goods_data[index].goods_sku_list = data.specMultiple.map(\n (item) => {\n const specValueName = item.specGroup\n .map((itemS) => {\n return itemS.specValueName;\n })\n .join(\";\");\n return {\n ...item,\n specValueName: specValueName,\n };\n }\n );\n });\n } else if (data.specType === 1) {\n this.$nextTick(() => {\n this.goods_data[index].goods_sku_list = data.specMultiple.map(\n (item) => {\n return {\n ...item,\n specValueName: \"\",\n };\n }\n );\n });\n }\n }\n resolve();\n });\n // this.goods_data = target\n },\n toggleRowExpansion(index) {\n this.$refs.goodsTable.toggleRowExpand(this.goods_data[index]);\n },\n delBrand() {\n this.form.brand = \"\";\n this.brandId = \"\";\n this.pageChange(1);\n },\n delShop() {\n this.form.shop = \"\";\n this.shopId = \"\";\n this.pageChange(1);\n },\n // 批量选择\n selectionChange({ records }) {\n this.checkedAll = this.$refs.goodsTable.isAllCheckboxChecked();\n this.isIndeterminate = this.$refs.goodsTable.isAllCheckboxChecked();\n this.choose_data = records;\n },\n // 编辑完成回调\n editsubData() {\n this.getData();\n },\n // 调整价格 编辑查看\n openPriceModel(row) {\n if (parseInt(this.$store.getters[\"MUser/enterpriseScope\"]) === 5) {\n // this.is_price = true;\n // this.goods_name = row.title;\n // this.price_goods_detail = row;\n this.$router.push(`/goods/sale/EditGoods/${row.id}`);\n } else {\n this.$router.push(`/goods/sale/EditGoodsOneStore/${row.id}`);\n }\n },\n\n // 批量上下架\n async BatchUnloading(enableStatus) {\n let title =\n enableStatus === 4\n ? \"确定要批量下架这些商品吗?\"\n : \"确定要批量上架这些商品吗?\";\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n this.$confirm(title, \"提示\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\",\n }).then(async () => {\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n const idData = this.choose_data.map((item) => {\n return item.id;\n });\n const data = await BatchUnloading({\n id: idData,\n enableStatus: enableStatus,\n });\n this.$message({\n type: \"success\",\n message: \"操作成功!\",\n });\n this.getData();\n });\n },\n // 批量删除\n async deleteBatchUnloading(deleteStatus) {\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n this.$confirm(\"确定要批量删除这些商品吗\", \"提示\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\",\n }).then(async () => {\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n const idData = this.choose_data.map((item) => {\n return item.id;\n });\n const data = await BatchUnloading({\n id: idData,\n deleteStatus: deleteStatus,\n });\n this.$message({\n type: \"success\",\n message: \"操作成功!\",\n });\n this.getData();\n });\n },\n // 获取列表\n async getAllGoods(exports) {\n let params = {\n page: this.page,\n pageSize: this.pageSize,\n ifMerchant: this.ifMerchant,\n merchantId: this.merchantId,\n };\n if (this.inSales) {\n params.inSales = this.inSales;\n }\n if (this.inStock) {\n params.inStock = this.inStock;\n }\n if (exports) {\n const data = await exportGetAllGoods({\n ...params,\n export: 1,\n });\n } else {\n const data = await getAllGoods(params);\n this.goods_data = data.data.map((item) => {\n return {\n ...item,\n sale_false_visible: false,\n goods_sku_list: [],\n address: item.shopName,\n sort_flag: false,\n };\n });\n this.total = data.pageTotal;\n }\n },\n async getAllGoodsList(exports) {\n let params = {\n page: this.page,\n pageSize: this.pageSize,\n keywordType: this.inSales,\n keyword: this.keyword,\n categoryPath: this.form.categoryPath.join(\",\"),\n brandId: this.brandId,\n enableStatus: this.enableStatus,\n shopId: this.shopId,\n };\n if (exports) {\n const data = await exportGetAllGoodsList({\n ...params,\n export: 1,\n });\n } else {\n const data = await getAllGoodsList(params);\n this.goods_data = data.data.map((item) => {\n return {\n ...item,\n sale_false_visible: false,\n goods_sku_list: [],\n address: item.shopName,\n sort_flag: false,\n };\n });\n this.total = data.pageTotal;\n }\n },\n // 搜索商品 searchGood\n // async searchGood(exports) {\n // if (this.activeName !== \"all\") {\n // this.enableStatus = \"\";\n // }\n // let params = {\n // keyword: this.keyword,\n // brandId: this.brandId,\n // categoryPath: this.form.categoryPath.join(\",\"),\n // enableStatus: this.enableStatus,\n // shopId: this.shopId,\n // page: this.page,\n // pageSize: this.pageSize,\n // };\n // if (this.inSales) {\n // params.inSales = this.inSales;\n // }\n // if (this.inStock) {\n // params.inStock = this.inStock;\n // }\n // if (exports) {\n // const data = await exportSearchGood({\n // ...params,\n // export: 1,\n // });\n // } else {\n // const data = await searchGood(params);\n //\n // this.goods_data = data.data.map((item) => {\n // return {\n // ...item,\n // sale_false_visible: false,\n // goods_sku_list: [],\n // };\n // });\n // this.total = data.pageTotal;\n // }\n // },\n // 判断当前使用方法为列表接口还是搜索引擎接口 获取列表数据\n getData(exports) {\n if (this.activeName !== \"all\") {\n this.enableStatus = \"\";\n }\n // 搜索参数规整\n const obj = {\n keyword: this.keyword,\n brandId: this.brandId,\n categoryPath: this.form.categoryPath.join(\",\"),\n enableStatus: this.enableStatus,\n shopId: this.shopId,\n };\n const isKey = this.$_common.isSerch(obj);\n if (isKey) {\n this.searchGood(exports);\n } else {\n this.getAllGoods(exports);\n }\n },\n // 分类搜索\n goodsChane(val) {\n this.pageChange(1);\n },\n // 品牌搜索\n brandConfirm(row) {\n this.form.brand = row[0].title;\n this.brandId = row[0].id;\n this.pageChange(1);\n },\n //转移品牌\n transferBrandConfirm(row) {\n this.set_form.brandName = row[0].title;\n this.set_form.brandId = row[0].id;\n },\n // 商铺搜索\n shopConfirm(val, row) {\n this.shopId = row[0].id;\n this.form.shop = row[0].name;\n this.pageChange(1);\n },\n // 删除商品\n async delData(id) {\n this.$confirm(\"确定要删除该条商品吗?\", \"提示\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\",\n }).then(async () => {\n const data = await delGoods(id);\n\n this.$message({\n type: \"success\",\n message: \"删除成功!\",\n });\n this.getData();\n });\n },\n // 删除商品\n async setTop(id) {\n this.$confirm(\"是否要将该商品置顶?\", \"提示\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\",\n }).then(async () => {\n const data = await setTop(id);\n\n this.$message({\n type: \"success\",\n message: \"操作成功!\",\n });\n this.getData();\n });\n },\n // 商品上下架\n async changeGoodsStatus(val, row) {\n try {\n const data = await GoodsUpdateEnableStatus({\n id: row.id,\n enableStatus: val,\n });\n this.$message({\n type: \"success\",\n message: \"操作成功!\",\n });\n } catch (e) {\n this.getData();\n }\n },\n // 切页\n pageChange(val) {\n this.page = val;\n this.getAllGoodsList();\n },\n // 每页数据大小改变\n sizeChange(val) {\n this.pageSize = val;\n this.pageChange(1);\n },\n checkAllChange() {\n this.$refs.goodsTable.setAllCheckboxRow(this.checkedAll);\n this.isIndeterminate = this.$refs.goodsTable.isAllCheckboxChecked();\n this.choose_data = this.$refs.goodsTable.getCheckboxRecords();\n },\n // 打开批量设置弹窗\n openSet(tit, row) {\n this.is_set = true;\n this.set_tit = tit;\n if (row) {\n this.choose_data = [row];\n }\n },\n // 批量提交\n moreSubData() {\n this.checkedAll = false;\n this.isIndeterminate = false;\n if (this.set_tit === \"转移分类\") {\n this.updateCategory();\n }\n if (this.set_tit === \"设置品牌\") {\n this.setBrand();\n }\n if (this.set_tit === \"虚拟销量\") {\n this.setSalesNumBatch();\n }\n if (this.set_tit === \"物流设置\") {\n this.batchGoodsExpress();\n }\n },\n // 批量设置运费\n async batchGoodsExpress() {\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n const idData = this.choose_data.map((item) => {\n return item.id;\n });\n this.more_sub_btn = true;\n try {\n const data = await batchGoodsExpress({\n expressType: this.set_form.expressType,\n ruleId: this.set_form.ruleId,\n expressFee: this.set_form.expressFee,\n ids: idData,\n });\n this.more_sub_btn = false;\n\n this.is_set = false;\n this.$message.success(\"操作成功\");\n this.getData();\n } catch {\n this.more_sub_btn = false;\n }\n },\n // 设置虚拟销量\n async setSalesNumBatch() {\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n if (!this.sale_num_form.minVal) {\n this.$message.warning(\"虚拟销量区间最小值不能为0\");\n return;\n }\n if (!this.sale_num_form.maxVal) {\n this.$message.warning(\"虚拟销量区间最大值不能为0\");\n return;\n }\n if (this.sale_num_form.maxVal <= this.sale_num_form.minVal) {\n this.$message.warning(\"虚拟销量区间最大值必须大于最小值\");\n return;\n }\n this.more_sub_btn = true;\n try {\n const idData = this.choose_data.map((item) => {\n return item.id;\n });\n const data = await setSalesNumBatch({\n ...this.sale_num_form,\n ids: idData,\n });\n this.more_sub_btn = false;\n\n this.is_set = false;\n this.$message.success(\"操作成功\");\n this.getData();\n } catch {\n this.more_sub_btn = false;\n }\n },\n // 设置品牌\n async setBrand() {\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n if (!this.set_form.brandId) {\n this.$message.warning(\"请选择要操作的品牌\");\n return;\n }\n const idData = this.choose_data.map((item) => {\n return item.basicGoodsId;\n });\n this.more_sub_btn = true;\n try {\n const data = await setBrand({\n id: idData,\n brandId: this.set_form.brandId,\n });\n this.more_sub_btn = false;\n\n this.is_set = false;\n this.$message.success(\"操作成功\");\n this.getData();\n } catch {\n this.more_sub_btn = false;\n }\n },\n\n // 转移分类\n async updateCategory() {\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n if (!this.set_form.category) {\n this.$message.warning(\"请选择要转移的分类\");\n return;\n }\n this.more_sub_btn = true;\n try {\n const idData = this.choose_data.map((item) => {\n return item.basicGoodsId;\n });\n const data = await updateCategory({\n id: idData, // 要移动的基础商品id\n categoryId: this.set_form.category[\n this.set_form.category.length - 1\n ], // 移动至商品分类id\n categoryPath: this.set_form.category.join(\",\"), // 新的商品分类路径\n });\n this.more_sub_btn = false;\n this.is_set = false;\n this.$message.success(\"操作成功\");\n this.set_form.category = [];\n this.getData();\n } catch {\n this.more_sub_btn = false;\n }\n },\n change() {\n this.classifyFlag = this.checkList.some((item) => item === \"商品分类\");\n this.specificationFlag = this.checkList.some((item) => item === \"规格\");\n this.unitFlag = this.checkList.some((item) => item === \"基本单位\");\n this.inventoryFlag = this.checkList.some((item) => item === \"总库存\");\n this.virtualFlag = this.checkList.some((item) => item === \"虚拟销量\");\n this.trueFlag = this.checkList.some((item) => item === \"真实销量\");\n this.stateFlag = this.checkList.some((item) => item === \"当前状态\");\n this.shopFlag = this.checkList.some((item) => item === \"销售店铺\");\n this.timeFlag = this.checkList.some((item) => item === \"创建时间\");\n },\n batchSetDistribution(enableStatus) {\n let title =\n enableStatus === 4\n ? \"确定要批量禁用库存销售?\"\n : \"确定要批量启用这些商品为负库存销售吗?\";\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n this.$confirm(title, \"提示\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\",\n }).then(async () => {\n this.checkedAll = false;\n this.isIndeterminate = false;\n if (!this.choose_data.length) {\n this.$message.warning(\"请选择要操作的商品\");\n return;\n }\n const idData = this.choose_data.map((item) => {\n return item.id;\n });\n const data = await batchSetDistribution({\n ids: idData,\n isDistribution: enableStatus,\n });\n this.$message({\n type: \"success\",\n message: \"操作成功!\",\n });\n this.getData();\n });\n },\n showSort(index) {\n this.goods_data.forEach((item) => (item.sort_flag = false));\n this.member_sort = this.goods_data[index].sort;\n this.goods_data[index].sort_flag = true;\n },\n async setSort(index) {\n const { data } = await setSort({\n id: this.goods_data[index].id,\n sort: this.member_sort,\n });\n this.$message.success(\"修改成功\");\n this.goods_data[index].sort_flag = false;\n await this.getAllGoodsList();\n },\n },\n };\n</script>\n<style scoped lang=\"scss\">\n .sku-btn {\n width: 71px;\n height: 22px;\n line-height: 22px;\n background: #f5f5f5;\n border-radius: 4px;\n border: 1px solid #cad0d7;\n text-align: center;\n font-size: 12px;\n cursor: pointer;\n display: inline-block;\n }\n .goods-name-view {\n width: calc(100% - 76px);\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n margin-left: 10px;\n }\n .demo-table-expand {\n font-size: 0;\n }\n .demo-table-expand label {\n width: 90px;\n color: #99a9bf;\n }\n .demo-table-expand .el-form-item {\n margin-right: 0;\n margin-bottom: 0;\n width: 50%;\n }\n .custom-table-checkbox {\n .el-checkbox {\n display: block !important;\n margin: 0 05px 0;\n }\n }\n .virtualSalesNum-btn {\n width: 26px;\n text-align: center;\n line-height: 28px;\n height: 28px;\n vertical-align: middle;\n font-size: 12px;\n background: #f5f5f5;\n border: 1px solid #cad0d7;\n display: inline-block;\n cursor: pointer;\n border-left: 0;\n }\n .sku-ul {\n display: flex;\n flex-wrap: wrap;\n .sku-li {\n display: inline-block;\n margin-right: 10px;\n margin-bottom: 10px;\n border: 1px solid #ebeef5;\n padding: 10px;\n width: 294px;\n vertical-align: middle;\n .sku-img {\n width: 50px;\n margin-right: 8px;\n }\n .sku-info {\n line-height: 23px;\n color: #111111;\n .label {\n display: inline-block;\n width: 50px;\n color: #666666;\n text-align: right;\n }\n }\n }\n }\n</style>\n"]}]}
|