276833e04b1d1321004b0bcf057ccc10.json 58 KB

1
  1. {"remainingRequest":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\order\\components\\OutWarehouseInfo.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\order\\components\\OutWarehouseInfo.vue","mtime":1678954023621},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\babel.config.js","mtime":1681371897685},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1681371912860},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1681371925849}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IENhbGxJbkxvY2F0aW9uIGZyb20gIkAvY29tcG9uZW50L2NvbW1vbi9DYWxsSW5Mb2NhdGlvbiI7CmltcG9ydCB7IG1hcEdldHRlcnMgfSBmcm9tICJ2dWV4IjsKaW1wb3J0IHsgZ2V0U2FsZU91dEluZm9ULCB1cGRhdGVTYWxlT3V0U3RhdHVzIH0gZnJvbSAiQC9hcGkvU3RvY2siOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogIk91dFdhcmVob3VzZUluZm8iLAogIGNvbXBvbmVudHM6IHsKICAgIENhbGxJbkxvY2F0aW9uCiAgfSwKICBwcm9wczogewogICAgb3JkZXJUeXBlOiB7CiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sCiAgICAgIGRlZmF1bHQ6ICIiCiAgICB9LAogICAgb3JkZXJJZDogewogICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLAogICAgICBkZWZhdWx0OiAiIgogICAgfSwKICAgIGF1ZGl0T3V0OiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9CiAgfSwKCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIG91dF9kZXRhaWw6IHsKICAgICAgICByZWNlaXZlRGF0YToge30KICAgICAgfSwKICAgICAgb3V0X2lkOiAiIiwKICAgICAgc2t1X3RvdGFsOiB7fSwKICAgICAgb3V0X3dhcmVob3VzZV9jb3B5OiBbXSwKICAgICAgb3V0X3dhcmVob3VzZV9kYXRhOiBbXSwKICAgICAgLy8g5ZWG5ZOB5riF5Y2V77yM5oyJ5LuT5bqT5YiGCiAgICAgIHVuYXNzaWduZWRfc2t1X2RhdGE6IFtdLAogICAgICAvLyDmnKrlh7rlupPllYblk4EKICAgICAgc3RvcmFnZV9zaG93OiBmYWxzZSwKICAgICAgd2FyZWhvdXNlX2lkOiAiIiwKICAgICAgc2t1SWQ6ICIiLAogICAgICBpdGVtSW5kZXgxOiAiIiwKICAgICAgaW5kZXgxOiAiIiwKICAgICAgbWF0ZXJpZWxJZDogIiIKICAgIH07CiAgfSwKCiAgY29tcHV0ZWQ6IHsgLi4ubWFwR2V0dGVycyh7CiAgICAgIGVuYWJsZUxvY2F0aW9uTWFuYWdlbWVudDogIk1Vc2VyL2VuYWJsZUxvY2F0aW9uTWFuYWdlbWVudCIKICAgIH0pCiAgfSwKICB3YXRjaDogewogICAgYXVkaXRPdXQoKSB7CiAgICAgIHRoaXMudXBkYXRlU2FsZU91dFN0YXR1cygpOwogICAgfQoKICB9LAoKICBjcmVhdGVkKCkgewogICAgdGhpcy5nZXRTYWxlT3V0SW5mbygpOwogIH0sCgogIG1ldGhvZHM6IHsKICAgIC8vIOiOt+WPluWHuuW6k+WNleivpuaDhQogICAgYXN5bmMgZ2V0U2FsZU91dEluZm8oKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRTYWxlT3V0SW5mb1QoewogICAgICAgIG9yaWdpbklkOiB0aGlzLm9yZGVySWQsCiAgICAgICAgc291cmNlOiB0aGlzLm9yZGVyVHlwZQogICAgICB9KTsKICAgICAgdGhpcy5vdXRfZGV0YWlsID0gZGF0YTsKICAgICAgdGhpcy5vdXRfaWQgPSBkYXRhLmlkOwogICAgICB0aGlzLm91dF93YXJlaG91c2VfY29weSA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKGRhdGEub3V0V2FyZWhvdXNlRGF0YSk7IC8vIOWtmOS4gOS4i+acquS/ruaUueeahOWOn+Wni+WHuuW6k+aVsOmHjwoKICAgICAgZGF0YS5vdXRXYXJlaG91c2VEYXRhLmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgaXRlbS5kZXRhaWxzLmZvckVhY2goZ29vZHMgPT4gewogICAgICAgICAgZ29vZHMubnVtQ29weSA9IE51bWJlcihnb29kcy5udW0pOyAvLyDmioTlmJvllYblk4Hpu5jorqTkuLrnqboKCiAgICAgICAgICBpZiAoZ29vZHMuZXh0ZW5kICE9PSAibnVsbCIgJiYgISFnb29kcy5leHRlbmQpIHsKICAgICAgICAgICAgZ29vZHMuZXh0ZW5kID0gSlNPTi5wYXJzZShnb29kcy5leHRlbmQpOwoKICAgICAgICAgICAgaWYgKCFOdW1iZXIoZ29vZHMub3RoZXJOdW0pKSB7CiAgICAgICAgICAgICAgZ29vZHMub3RoZXJOdW0gPSB0aGlzLiROUC5kaXZpZGUoZ29vZHMubnVtQ29weSwgZ29vZHMuZXh0ZW5kLmNvbnZlcnNpb24pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBnb29kcy5udW0gPSAiIjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdvb2RzLm51bSA9IE51bWJlcihnb29kcy5udW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgdGhpcy5vdXRfd2FyZWhvdXNlX2RhdGEgPSBkYXRhLm91dFdhcmVob3VzZURhdGE7CiAgICAgIHRoaXMudW5hc3NpZ25lZF9za3VfZGF0YSA9IGRhdGEuVW5hc3NpZ25lZFNrdURhdGE7CiAgICAgIHRoaXMuc2t1X3RvdGFsID0gZGF0YS5za3VUb3RhbDsKICAgICAgdGhpcy4kZW1pdCgiZ2V0T3V0RGV0YWlsIiwgdGhpcy5vdXRfZGV0YWlsKTsKICAgIH0sCgogICAgd2FyZWhvdXNlQ2hhbmdlKHZhbCwgaW5kZXgsIHJvd0ksIHJvdykgewogICAgICAvLyDmt7Hmi7fotJ3kuIDku73llYblk4HmlbDmja4KICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy5vdXRfd2FyZWhvdXNlX2RhdGEpOyAvLyDlnKjopoHlh7rlupPnmoTliJfooajkuK3mn6Xmib7lvZPliY3liIfmjaLnmoTku5PlupPmmK/lkKblrZjlnKgKCiAgICAgIGNvbnN0IHdJbmRleCA9IHRhcmdldC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLndhcmVob3VzZUlkID09PSB2YWwpOwoKICAgICAgaWYgKHdJbmRleCA+IC0xKSB7CiAgICAgICAgLy8g5b2T5YmN5LuT5bqT5a2Y5ZyoCiAgICAgICAgLy8g5p+l5om+5ZWG5ZOB5piv5ZCm5a2Y5ZyoCiAgICAgICAgY29uc3QgZ0luZGV4ID0gdGFyZ2V0W3dJbmRleF0uZGV0YWlscy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnNrdUlkID09PSByb3cuc2t1SWQpOwoKICAgICAgICBpZiAoZ0luZGV4ID4gLTEpIHsKICAgICAgICAgIC8vIOWVhuWTgeWtmOWcqAogICAgICAgICAgLy8g57Sv5Yqg6ZSA5ZSu6YePCiAgICAgICAgICB0YXJnZXRbd0luZGV4XS5kZXRhaWxzW2dJbmRleF0ubnVtID0gdGhpcy4kTlAucGx1cyh0YXJnZXRbd0luZGV4XS5kZXRhaWxzW2dJbmRleF0ubnVtLCByb3cubnVtKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8g5ZWG5ZOB5LiN5a2Y5Zyo77yM5re75Yqg6K+l5ZWG5ZOBCiAgICAgICAgICB0YXJnZXRbd0luZGV4XS5kZXRhaWxzLnB1c2gocm93KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8g5LuT5bqT5LiN5a2Y5Zyo77yM5re75Yqg5LiA6aG55LuT5bqT5pWw5o2uCiAgICAgICAgdGFyZ2V0LnB1c2goewogICAgICAgICAgd2FyZWhvdXNlSWQ6IHZhbCwKICAgICAgICAgIHdhcmVob3VzZU5hbWU6IHJvdy53YXJlaG91c2VTZWxlY3QuZmluZChpdGVtID0+IGl0ZW0ud2FyZWhvdXNlSWQgPT09IHZhbCkud2FyZWhvdXNlTmFtZSwKICAgICAgICAgIGRldGFpbHM6IFtyb3ddCiAgICAgICAgfSk7CiAgICAgIH0gLy8g5oqK5b2T5YmN6L+Z5p2h5ZWG5ZOB5LuO5Y6f5p2l55qE5L2N572u5Yig6ZmkCgoKICAgICAgdGFyZ2V0W2luZGV4XS5kZXRhaWxzLnNwbGljZShyb3dJLCAxKTsgLy8g5pyq5byA5ZCv6LSf5bqT5a2YCgogICAgICBpZiAocm93LmlzUHJlU2FsZSA9PT0gNCkgewogICAgICAgIC8vIOafpeaJvuW9k+WJjeWIh+aNouS7k+W6k+aVsOaNrgogICAgICAgIGNvbnN0IHdhcmVob3VzZURhdGEgPSByb3cud2FyZWhvdXNlU2VsZWN0LmZpbmQoaXRlbSA9PiBpdGVtLndhcmVob3VzZUlkID09PSB2YWwpOyAvLyDmn6Xmib7lvZPliY3ku5PlupPlnKjlh7rlupPliJfooajnmoTmlbDmja4KCiAgICAgICAgY29uc3QgdGFyZ2V0SSA9IHRhcmdldC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLndhcmVob3VzZUlkID09PSB2YWwpOyAvLyDmn6Xmib7lvZPliY3llYblk4HlnKjor6Xku5PlupPkuIvlh7rlupPliJfooajnmoTmlbDmja4KCiAgICAgICAgY29uc3QgZ29vZHNJID0gdGFyZ2V0W3RhcmdldEldLmRldGFpbHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5za3VJZCA9PT0gcm93LnNrdUlkKTsgLy8g5aaC5p6c5b2T5YmN5pWw6YeP5aSn5LqO6K+l5LuT5bqT5LiL55qE5bqT5a2Y77yM5o6o5YWl5Yiw5pyq5Ye65bqT5pWw5o2u5LitCgogICAgICAgIGlmICh0YXJnZXRbdGFyZ2V0SV0uZGV0YWlsc1tnb29kc0ldLm51bSA+IHdhcmVob3VzZURhdGEud2FyZWhvdXNlSW52ZW50b3J5TnVtKSB7CiAgICAgICAgICAvLyDmi7fotJ3kuIDku73mnKrlh7rlupPmlbDmja4KICAgICAgICAgIGNvbnN0IHVuYXNzaWduZWREYXRhID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy51bmFzc2lnbmVkX3NrdV9kYXRhKTsgLy8g5Yik5pat5b2T5YmN5pyq5Ye65bqT5pWw5o2u5Lit5piv5ZCm5pyJ5b2T5YmN6KeE5qC855qE5ZWG5ZOBCgogICAgICAgICAgY29uc3QgdW5JbmRleCA9IHVuYXNzaWduZWREYXRhLmZpbmRJbmRleCh1bkl0ZW0gPT4gdW5JdGVtLnNrdUlkID09PSByb3cuc2t1SWQpOyAvLyDorr7nva7lvZPliY3mnKrlh7rlupPllYblk4EKCiAgICAgICAgICBjb25zdCBnb29kcyA9IHsgLi4udGFyZ2V0W3RhcmdldEldLmRldGFpbHNbZ29vZHNJXSwKICAgICAgICAgICAgbnVtOiB0aGlzLiROUC5taW51cyh0YXJnZXRbdGFyZ2V0SV0uZGV0YWlsc1tnb29kc0ldLm51bSwgd2FyZWhvdXNlRGF0YS53YXJlaG91c2VJbnZlbnRvcnlOdW0pLAogICAgICAgICAgICB3YXJlaG91c2VJZDogIiIKICAgICAgICAgIH07IC8vIOacquWHuuW6k+WVhuWTgeWIl+ihqOacieivpeWVhuWTge+8jOWImeabv+aNogoKICAgICAgICAgIGlmICh1bkluZGV4ID4gLTEpIHsKICAgICAgICAgICAgdW5hc3NpZ25lZERhdGFbdW5JbmRleF0gPSBnb29kczsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIOayoeacieivpeWVhuWTgeWImeaOqOWFpQogICAgICAgICAgICB1bmFzc2lnbmVkRGF0YS5wdXNoKGdvb2RzKTsKICAgICAgICAgIH0gLy8g57uZ5pyq5Ye65bqT5ZWG5ZOB5YiX6KGo6YeN5paw6LWL5YC8CgoKICAgICAgICAgIHRoaXMudW5hc3NpZ25lZF9za3VfZGF0YSA9IHVuYXNzaWduZWREYXRhOyAvLyDorr7nva7lvZPliY3llYblk4HplIDllK7ph4/kuLror6Xku5PlupPnmoTmnIDlpKflupPlrZgKCiAgICAgICAgICB0YXJnZXRbdGFyZ2V0SV0uZGV0YWlsc1tnb29kc0ldLm51bSA9IHdhcmVob3VzZURhdGEud2FyZWhvdXNlSW52ZW50b3J5TnVtOwogICAgICAgIH0KICAgICAgfSAvLyDnu5nlh7rlupPmlbDmja7ph43mlrDotYvlgLwKCgogICAgICB0aGlzLm91dF93YXJlaG91c2VfZGF0YSA9IHRhcmdldDsKICAgIH0sCgogICAgLy8g6I635Y+W5b2T5YmN5ZCI6K6h6ZSA5ZSu6YePCiAgICB0b3RhbE51bUNoYW5nZSh0YXJnZXQsIHJvdykgewogICAgICAvLyDorr7nva7lj5jph49udW0KICAgICAgbGV0IG51bSA9IDA7CiAgICAgIHRhcmdldC5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgIGNvbnN0IGdvb2RzID0gaXRlbS5kZXRhaWxzLmZpbmQoaXRlbSA9PiBpdGVtLnNrdUlkID09PSByb3cuc2t1SWQpOwoKICAgICAgICBpZiAoZ29vZHMpIHsKICAgICAgICAgIC8vIOWKoOS4iuW9k+WJjeWVhuWTgemUgOWUrumHjwogICAgICAgICAgbnVtID0gdGhpcy4kTlAucGx1cyhudW0sIGdvb2RzLm51bSk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgcmV0dXJuIG51bTsKICAgIH0sCgogICAgLy8g6ZSA5ZSu6YeP5L+u5pS5CiAgICBzYWxlTnVtQmx1cihlLCByb3dJLCBpbmRleCwgcm93KSB7CiAgICAgIGNvbnN0IHZhbCA9IGUudGFyZ2V0LnZhbHVlOyAvLyDmt7Hmi7fotJ3kuIDku73llYblk4HmlbDmja4KCiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMub3V0X3dhcmVob3VzZV9kYXRhKTsKCiAgICAgIGlmICh2YWwgPT09ICIiKSB7CiAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gewogICAgICAgICAgdGFyZ2V0W2luZGV4XS5kZXRhaWxzW3Jvd0ldLm51bSA9ICIiOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3V0X3dhcmVob3VzZV9kYXRhID0gdGFyZ2V0OwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKHRhcmdldFtpbmRleF0uZGV0YWlsc1tyb3dJXS5udW0gPiBOdW1iZXIodGhpcy5za3VfdG90YWxbdGFyZ2V0W2luZGV4XS5kZXRhaWxzW3Jvd0ldLnNrdUlkXSkpIHsKICAgICAgICB0YXJnZXRbaW5kZXhdLmRldGFpbHNbcm93SV0ubnVtID0gTnVtYmVyKHRoaXMuc2t1X3RvdGFsW3RhcmdldFtpbmRleF0uZGV0YWlsc1tyb3dJXS5za3VJZF0pOwogICAgICAgIHRoaXMub3V0X3dhcmVob3VzZV9kYXRhID0gdGFyZ2V0OwogICAgICAgIHJldHVybjsKICAgICAgfSAvLyDkuI3mlK/mjIHotJ/lupPlrZgKCgogICAgICBpZiAocm93LmlzUHJlU2FsZSA9PT0gNCkgewogICAgICAgIGNvbnN0IHdhcmVob3VzZURhdGEgPSByb3cud2FyZWhvdXNlU2VsZWN0LmZpbmQoaXRlbSA9PiBpdGVtLndhcmVob3VzZUlkID09PSByb3cud2FyZWhvdXNlSWQpOyAvLyDovpPlhaXlgLzlpKfkuo7lvZPliY3ku5PlupPlupPlrZjmlbAKCiAgICAgICAgaWYgKE51bWJlcih2YWwpID4gTnVtYmVyKHdhcmVob3VzZURhdGEud2FyZWhvdXNlSW52ZW50b3J5TnVtKSkgewogICAgICAgICAgLy8g5oqK5b2T5YmN5ZWG5ZOB55qE6ZSA5ZSu6YeP6L+Y5Y6fCiAgICAgICAgICB0YXJnZXRbaW5kZXhdLmRldGFpbHNbcm93SV0ubnVtID0gdGFyZ2V0W2luZGV4XS5kZXRhaWxzW3Jvd0ldLm51bUNvcHk7CiAgICAgICAgfQogICAgICB9IC8vIOa3seaLt+i0neS4gOS7veacquWHuuW6k+WVhuWTgeaVsOaNrgoKCiAgICAgIGNvbnN0IHVuYXNzaWduZWREYXRhID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy51bmFzc2lnbmVkX3NrdV9kYXRhKTsgLy8g5Yik5pat5b2T5YmN5pyq5Ye65bqT5pWw5o2u5Lit5piv5ZCm5pyJ5b2T5YmN6KeE5qC855qE5ZWG5ZOBCgogICAgICBjb25zdCB1bkluZGV4ID0gdW5hc3NpZ25lZERhdGEuZmluZEluZGV4KHVuSXRlbSA9PiB1bkl0ZW0uc2t1SWQgPT09IHJvdy5za3VJZCk7IC8vIOiuvue9ruWPmOmHj251bSAg6I635Y+W5b2T5YmN5ZCI6K6h6ZSA5ZSu6YePCgogICAgICBsZXQgbnVtID0gdGhpcy50b3RhbE51bUNoYW5nZSh0YXJnZXQsIHJvdyk7IC8vIOWIpOaWreW9k+WJjeS/ruaUueWQjueahOWQiOiuoeWVhuWTgemUgOWUrumHj+aYr+WQpuWkp+S6jui0reS5sOaVsOmHj++8jOWkp+S6juWwseaKiuW9k+WJjeWVhuWTgeeahOmUgOWUrumHj+i/mOWOnwoKICAgICAgaWYgKG51bSA+IHRoaXMuc2t1X3RvdGFsW3Jvdy5za3VJZF0pIHsKICAgICAgICAvLyDkv67mlLnlkI7nmoTlkIjorqHllYblk4HplIDllK7ph4/lpKfkuo7otK3kubDmlbDph4/vvIzmiorlvZPliY3llYblk4HnmoTplIDllK7ph4/ov5jljp8KICAgICAgICB0YXJnZXRbaW5kZXhdLmRldGFpbHNbcm93SV0ubnVtID0gdGFyZ2V0W2luZGV4XS5kZXRhaWxzW3Jvd0ldLm51bUNvcHk7CiAgICAgIH0gZWxzZSBpZiAobnVtID09PSBOdW1iZXIodGhpcy5za3VfdG90YWxbcm93LnNrdUlkXSkpIHsKICAgICAgICAvLyDkv67mlLnlkI7nmoTlkIjorqHllYblk4HplIDllK7ph4/nrYnkuo7otK3kubDmlbDph48KICAgICAgICAvLyDmnKrlh7rlupPllYblk4HliJfooajmnInor6XllYblk4HvvIzliJnliKDpmaQKICAgICAgICBpZiAodW5JbmRleCA+IC0xKSB7CiAgICAgICAgICB1bmFzc2lnbmVkRGF0YS5zcGxpY2UodW5JbmRleCwgMSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHRoaXMuc2t1X3RvdGFsW3Jvdy5za3VJZF0gJiYgdGhpcy4kTlAubWludXModGhpcy5za3VfdG90YWxbcm93LnNrdUlkXSwgbnVtKSA+IDApIHsKICAgICAgICAvLyDlvZPliY3mnKrlh7rlupPlupPlrZjlpKfkuo4wCiAgICAgICAgLy8g6K6+572u5b2T5YmN5pyq5Ye65bqT5ZWG5ZOBCiAgICAgICAgY29uc3QgZ29vZHMgPSB7IC4uLnRoaXMuJF9jb21tb24uZGVlcENsb25lKHRhcmdldFtpbmRleF0uZGV0YWlsc1tyb3dJXSksCiAgICAgICAgICBudW06IHRoaXMuJE5QLm1pbnVzKHRoaXMuc2t1X3RvdGFsW3Jvdy5za3VJZF0sIG51bSksCiAgICAgICAgICB3YXJlaG91c2VJZDogIiIKICAgICAgICB9OyAvLyDmnKrlh7rlupPllYblk4HliJfooajmnInor6XllYblk4HvvIzliJnmm7/mjaIKCiAgICAgICAgaWYgKHVuSW5kZXggPiAtMSkgewogICAgICAgICAgdW5hc3NpZ25lZERhdGFbdW5JbmRleF0gPSBnb29kczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8g5rKh5pyJ6K+l5ZWG5ZOB5YiZ5o6o5YWlCiAgICAgICAgICB1bmFzc2lnbmVkRGF0YS5wdXNoKGdvb2RzKTsgLy8g5aaC5p6c6L6T5YWl5pWw6YeP5Li6MCDvvIzliJnmiorlr7nlupTlh7rlupPllYblk4HmuIXpmaQKCiAgICAgICAgICBpZiAobnVtID09PSAwKSB7CiAgICAgICAgICAgIHRhcmdldFtpbmRleF0uZGV0YWlscy5zcGxpY2Uocm93SSwgMSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IC8vIOe7meacquWHuuW6k+WVhuWTgeWIl+ihqOmHjeaWsOi1i+WAvAoKCiAgICAgIHRoaXMudW5hc3NpZ25lZF9za3VfZGF0YSA9IHVuYXNzaWduZWREYXRhOyAvLyDnu5nlh7rlupPllYblk4HliJfooajph43mlrDotYvlgLwKCiAgICAgIHRoaXMub3V0X3dhcmVob3VzZV9kYXRhID0gdGFyZ2V0OwogICAgfSwKCiAgICAvLyDmnKrlh7rlupPmlbDmja7ku5PlupPpgInmi6kKICAgIHVuV2FyZWhvdXNlQ2hhbmdlKHZhbCwgcm93LCBpbmRleFVuKSB7CiAgICAgIC8vIOa3seaLt+i0neS4gOS7veWVhuWTgeaVsOaNrgogICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLm91dF93YXJlaG91c2VfZGF0YSk7IC8vIOWcqOWHuuW6k+WVhuWTgeaVsOaNruS4reafpeaJvumAieaLqeS7k+W6kwoKICAgICAgY29uc3QgaW5kZXggPSB0YXJnZXQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS53YXJlaG91c2VJZCA9PT0gdmFsKTsgLy8g5Ye65bqT5ZWG5ZOB5pWw5o2u5Lit5pyJ6K+l6YCJ5oup55qE5LuT5bqTCgogICAgICBpZiAoaW5kZXggPiAtMSkgewogICAgICAgIC8vIOaJvuWIsOWVhuWTgeaJgOWcqOS4i+agh++8iOS9jee9ru+8iQogICAgICAgIGNvbnN0IGdvb2RzSSA9IHRhcmdldFtpbmRleF0uZGV0YWlscy5maW5kSW5kZXgoZ29vZHMgPT4gZ29vZHMuc2t1SWQgPT09IHJvdy5za3VJZCk7IC8vIOivpeS7k+W6k+S4i+WMheWQq+W9k+WJjeWVhuWTgQoKICAgICAgICBpZiAoZ29vZHNJID4gLTEpIHsKICAgICAgICAgIHRhcmdldFtpbmRleF0uZGV0YWlsc1tnb29kc0ldLm51bSA9IHRoaXMuJE5QLnBsdXModGFyZ2V0W2luZGV4XS5kZXRhaWxzW2dvb2RzSV0ubnVtLCByb3cubnVtKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8g6K+l5LuT5bqT5LiL5LiN5YyF5ZCr5b2T5YmN5ZWG5ZOB77yM5oqK5b2T5YmN5ZWG5ZOB5o6o5Yiw6K+l5LuT5bqT5LiL6Z2iCiAgICAgICAgICB0YXJnZXRbaW5kZXhdLmRldGFpbHMucHVzaChyb3cpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICAvLyDlh7rlupPllYblk4HmlbDmja7kuK3msqHmnInor6XpgInmi6nnmoTku5PlupPvvIzmt7vliqDkuIDpobnku5PlupPmlbDmja4KICAgICAgICB0YXJnZXQucHVzaCh7CiAgICAgICAgICB3YXJlaG91c2VJZDogdmFsLAogICAgICAgICAgd2FyZWhvdXNlTmFtZTogcm93LndhcmVob3VzZVNlbGVjdC5maW5kKGl0ZW0gPT4gaXRlbS53YXJlaG91c2VJZCA9PT0gdmFsKS53YXJlaG91c2VOYW1lLAogICAgICAgICAgZGV0YWlsczogW3Jvd10KICAgICAgICB9KTsKICAgICAgfSAvLyDmiorlvZPliY3ov5nmnaHllYblk4Hku47ljp/mnaXnmoTkvY3nva7liKDpmaQKCgogICAgICB0aGlzLnVuYXNzaWduZWRfc2t1X2RhdGEuc3BsaWNlKGluZGV4VW4sIDEpOwogICAgICB0aGlzLm91dF93YXJlaG91c2VfZGF0YSA9IHRhcmdldDsKICAgIH0sCgogICAgYXN5bmMgdXBkYXRlU2FsZU91dFN0YXR1cygpIHsKICAgICAgbGV0IGZsYWcgPSBmYWxzZTsKCiAgICAgIGZvciAobGV0IGkgaW4gdGhpcy5vdXRfd2FyZWhvdXNlX2RhdGEpIHsKICAgICAgICBmb3IgKGxldCBqIGluIHRoaXMub3V0X3dhcmVob3VzZV9kYXRhW2ldLmRldGFpbHMpIHsKICAgICAgICAgIGxldCBpdGVtMSA9IHRoaXMub3V0X3dhcmVob3VzZV9kYXRhW2ldLmRldGFpbHNbal07CgogICAgICAgICAgaWYgKCFpdGVtMS5udW0pIHsKICAgICAgICAgICAgZmxhZyA9IHRydWU7CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi5ZWG5ZOBIiArIGl0ZW0xLm1hdGVyaWVsTmFtZSArICLvvIzop4TmoLwg44CQIiArIGl0ZW0xLnVuaXROYW1lICsgIu+8myIgKyBpdGVtMS5za3VOYW1lICsgIuOAkeeahOWHuuW6k+aVsOmHj+S4jeiDveS4uuepuiIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoaXRlbTEub3RoZXJOdW0gPCAwKSB7CiAgICAgICAgICAgIGZsYWcgPSB0cnVlOwogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuWVhuWTgSIgKyBpdGVtMS5tYXRlcmllbE5hbWUgKyAi77yM6KeE5qC8IOOAkCIgKyBpdGVtMS51bml0TmFtZSArICLvvJsiICsgaXRlbTEuc2t1TmFtZSArICLjgJHnmoTlhbbku5bmlbDph4/kuI3og73lsI/kuo4wIik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGZsYWcpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICghdGhpcy5vdXRfd2FyZWhvdXNlX2RhdGEgfHwgIXRoaXMub3V0X3dhcmVob3VzZV9kYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogIndhcm5pbmciLAogICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqeWHuuW6k+WVhuWTgSIKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGxldCBpc051bSA9IHRydWU7IC8vIOi/h+a7pCDlh7rljrvmsqHmnInllYblk4HnmoQKCiAgICAgIGNvbnN0IG91dFdhcmVob3VzZURhdGEgPSB0aGlzLm91dF93YXJlaG91c2VfZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmRldGFpbHMgJiYgaXRlbS5kZXRhaWxzLmxlbmd0aCA+IDApOwoKICAgICAgaWYgKCFvdXRXYXJlaG91c2VEYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6KaB5Ye65bqT55qE5ZWG5ZOBIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBmb3IgKGxldCBpIGluIG91dFdhcmVob3VzZURhdGEpIHsKICAgICAgICBsZXQgaXRlbSA9IHRoaXMub3V0X3dhcmVob3VzZV9kYXRhW2ldOwoKICAgICAgICBmb3IgKGxldCBuIGluIGl0ZW0uZGV0YWlscykgewogICAgICAgICAgbGV0IG50ZW0gPSBpdGVtLmRldGFpbHNbbl07CgogICAgICAgICAgaWYgKG50ZW0ubnVtIDw9IDApIHsKICAgICAgICAgICAgaXNOdW0gPSBmYWxzZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoIWlzTnVtKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLplIDllK7ph4/lv4XpobvlpKfkuo4wIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLiRjb25maXJtKCLnoa7lrpropoHlrqHmoLjor6Xlh7rlupPljZXlkJfvvJ8iLCAi5o+Q56S6IiwgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAi56Gu5a6aIiwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICB0eXBlOiAid2FybmluZyIKICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB1cGRhdGVTYWxlT3V0U3RhdHVzKHsKICAgICAgICAgICAgaWQ6IHRoaXMub3V0X2RldGFpbC5pZCwKICAgICAgICAgICAgYXVkaXROYW1lOiB0aGlzLnVzZXJOYW1lLAogICAgICAgICAgICBVbmFzc2lnbmVkU2t1RGF0YTogdGhpcy51bmFzc2lnbmVkX3NrdV9kYXRhLAogICAgICAgICAgICBvdXRXYXJlaG91c2VEYXRhOiBvdXRXYXJlaG91c2VEYXRhCiAgICAgICAgICB9KTsKICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICAgIG1lc3NhZ2U6ICLmk43kvZzmiJDlip8hIgogICAgICAgICAgfSk7IC8vIOWuoeaguOaIkOWKn+Whq+WGmei0p+i9puS/oeaBrwoKICAgICAgICAgIGlmICh0aGlzLm91dF9kZXRhaWwuZGVsaXZlcnlUeXBlID09PSAzKSB7CiAgICAgICAgICAgIHRoaXMubG9naXN0aWNzX3Nob3cgPSB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0U2FsZU91dEluZm8oKTsKICAgICAgICAgIHRoaXMuJGVtaXQoImF1ZGl0U3VjY2VzcyIpOwogICAgICAgIH0gY2F0Y2gge30KICAgICAgfSk7CiAgICB9LAoKICAgIHNlbFN0b3JhZ2UoZSkgewogICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLm91dF93YXJlaG91c2VfZGF0YSk7CiAgICAgIHRhcmdldFt0aGlzLmluZGV4MV0uZGV0YWlsc1t0aGlzLml0ZW1JbmRleDFdID0geyAuLi50YXJnZXRbdGhpcy5pbmRleDFdLmRldGFpbHNbdGhpcy5pdGVtSW5kZXgxXSwKICAgICAgICBhcmVhSWQ6IGVbMF0uYXJlYUlkLAogICAgICAgIGFyZWFOYW1lOiBlWzBdLmFyZWFOYW1lLAogICAgICAgIGFyZWFDb2RlOiBlWzBdLmFyZWFDb2RlLAogICAgICAgIHN0b3JhZ2VMb2NhdGlvbk5hbWU6IGVbMF0uc3RvcmFnZUxvY2F0aW9uTmFtZSwKICAgICAgICBzdG9yYWdlTG9jYXRpb25JZDogZVswXS5zdG9yYWdlTG9jYXRpb25JZCwKICAgICAgICBzdG9yYWdlTG9jYXRpb25Db2RlOiBlWzBdLnN0b3JhZ2VMb2NhdGlvbkNvZGUKICAgICAgfTsKICAgICAgdGhpcy5vdXRfd2FyZWhvdXNlX2RhdGEgPSB0YXJnZXQ7CiAgICB9LAoKICAgIHN0b3JhZ2VTaG93KHJvdywgaXRlbUluZGV4MSwgaW5kZXgpIHsKICAgICAgdGhpcy5tYXRlcmllbElkID0gcm93Lm1hdGVyaWVsSWQ7CiAgICAgIHRoaXMuaXRlbUluZGV4MSA9IGl0ZW1JbmRleDE7CiAgICAgIHRoaXMuaW5kZXgxID0gaW5kZXg7CiAgICAgIHRoaXMud2FyZWhvdXNlX2lkID0gcm93LndhcmVob3VzZUlkOwogICAgICB0aGlzLnNrdUlkID0gcm93LnNrdUlkOwogICAgICB0aGlzLnN0b3JhZ2Vfc2hvdyA9IHRydWU7CiAgICB9CgogIH0KfTs="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoeA;AACA;AACA;AACA;EACAA,wBADA;EAEAC;IACAC;EADA,CAFA;EAKAC;IACAC;MACAC,sBADA;MAEAC;IAFA,CADA;IAKAC;MACAF,sBADA;MAEAC;IAFA,CALA;IASAE;MACAH,aADA;MAEAC;IAFA;EATA,CALA;;EAmBAG;IACA;MACAC;QAAAC;MAAA,CADA;MAEAC,UAFA;MAGAC,aAHA;MAIAC,sBAJA;MAKAC,sBALA;MAKA;MACAC,uBANA;MAMA;MACAC,mBAPA;MAQAC,gBARA;MASAC,SATA;MAUAC,cAVA;MAWAC,UAXA;MAYAC;IAZA;EAcA,CAlCA;;EAmCAC,YACA;MACAC;IADA;EADA,CAnCA;EAwCAC;IACAjB;MACA;IACA;;EAHA,CAxCA;;EA6CAkB;IACA;EACA,CA/CA;;EAgDAC;IACA;IACA;MACA;QAAAlB;MAAA;QACAmB,sBADA;QAEAC;MAFA;MAKA;MACA;MACA,kDACApB,qBADA,EARA,CAWA;;MACAA;QACAqB;UACAC,kCADA,CAEA;;UACA;YACAA;;YACA;cACAA,iCACAA,aADA,EAEAA,uBAFA;YAIA;;YAEAA;UACA,CAVA,MAUA;YACAA;UACA;QACA,CAhBA;MAiBA,CAlBA;MAmBA;MACA;MACA;MACA;IACA,CArCA;;IAsCAC;MACA;MACA,gEAFA,CAGA;;MACA;;MACA;QACA;QACA;QACA,gDACAF,gCADA;;QAGA;UACA;UACA;UACAG,mDACAA,kCADA,EAEAC,OAFA;QAIA,CAPA,MAOA;UACA;UACAD;QACA;MACA,CAjBA,MAiBA;QACA;QACAA;UACAE,gBADA;UAEAC,wCACAN,gCADA,EAEAM,aAJA;UAKAC;QALA;MAOA,CA/BA,CAgCA;;;MACAJ,sCAjCA,CAkCA;;MACA;QACA;QACA,+CACAH,gCADA,EAFA,CAKA;;QACA,mEANA,CAOA;;QACA,iDACAA,gCADA,EARA,CAWA;;QACA,IACAG,sCACAK,mCAFA,EAGA;UACA;UACA,+CACA,wBADA,EAFA,CAKA;;UACA,yCACAC,oCADA,EANA,CASA;;UACA,gBACA,kCADA;YAEAC,oBACAP,mCADA,EAEAK,mCAFA,CAFA;YAMAH;UANA,EAVA,CAkBA;;UACA;YACAM;UACA,CAFA,MAEA;YACA;YACAA;UACA,CAxBA,CAyBA;;;UACA,0CA1BA,CA2BA;;UACAR,sCACAK,mCADA;QAEA;MACA,CAjFA,CAmFA;;;MACA;IACA,CA3HA;;IA4HA;IACAI;MACA;MACA;MACAT;QACA;;QACA;UACA;UACAO;QACA;MACA,CANA;MAOA;IACA,CAxIA;;IAyIA;IACAG;MACA,2BADA,CAEA;;MACA;;MAEA;QACA;UACAV;QACA,CAFA;QAGA;QACA;MACA;;MACA,IACAA,kCACAW,yDAFA,EAGA;QACAX,yCACA,iDADA;QAGA;QACA;MACA,CArBA,CAsBA;;;MACA;QACA,+CACAH,4CADA,EADA,CAIA;;QACA;UACA;UACAG,kCACAA,mCADA;QAEA;MACA,CAjCA,CAmCA;;;MACA,+CACA,wBADA,EApCA,CAuCA;;MACA,yCACAM,oCADA,EAxCA,CA2CA;;MACA,2CA5CA,CA6CA;;MACA;QACA;QACAN;MACA,CAHA,MAGA;QACA;QACA;QACA;UACAQ;QACA;MACA,CANA,MAMA,IACA,6BACA,kDAFA,EAGA;QACA;QACA;QACA,gBACA,uDADA;UAEAD,mDAFA;UAGAL;QAHA,EAHA,CAQA;;QACA;UACAM;QACA,CAFA,MAEA;UACA;UACAA,2BAFA,CAIA;;UACA;YACAR;UACA;QACA;MACA,CA9EA,CA+EA;;;MACA,0CAhFA,CAiFA;;MACA;IACA,CA7NA;;IA8NA;IACAY;MACA;MACA,gEAFA,CAGA;;MACA,iEAJA,CAKA;;MACA;QACA;QACA,+CACAd,kCADA,EAFA,CAKA;;QACA;UACAE,kDACAA,iCADA,EAEAC,OAFA;QAIA,CALA,MAKA;UACA;UACAD;QACA;MACA,CAfA,MAeA;QACA;QACAA;UACAE,gBADA;UAEAC,wCACAN,gCADA,EAEAM,aAJA;UAKAC;QALA;MAOA,CA9BA,CA+BA;;;MACA;MACA;IACA,CAjQA;;IAkQA;MACA;;MACA;QACA;UACA;;UACA;YACAS;YACA,sBACA,OACAC,kBADA,GAEA,OAFA,GAGAA,cAHA,GAIA,GAJA,GAKAA,aALA,GAMA,YAPA;YASA;UACA;;UACA;YACAD;YACA,sBACA,OACAC,kBADA,GAEA,OAFA,GAGAA,cAHA,GAIA,GAJA,GAKAA,aALA,GAMA,aAPA;YASA;UACA;QACA;MACA;;MACA;QACA;MACA;;MACA;QACA;UACA1C,eADA;UAEA2C;QAFA;QAIA;MACA;;MACA,iBA3CA,CA4CA;;MACA,wDACAlB,+CADA;;MAGA;QACA;QACA;MACA;;MACA;QACA;;QACA;UACA;;UACA;YACAmB;YACA;UACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA;QACAC,uBADA;QAEAC,sBAFA;QAGA9C;MAHA,GAIA+C,IAJA,CAIA;QACA;UACA;YACAC,sBADA;YAEAC,wBAFA;YAGAC,2CAHA;YAIAC;UAJA;UAOA;YACAnD,eADA;YAEA2C;UAFA,GARA,CAYA;;UACA;YACA;UACA;;UACA;UACA;QACA,CAlBA,CAkBA;MACA,CAxBA;IAyBA,CA7VA;;IA8VAS;MACA;MACAxB,iDACA,+CADA;QAEAyB,mBAFA;QAGAC,uBAHA;QAIAC,uBAJA;QAKAC,6CALA;QAMAC,yCANA;QAOAC;MAPA;MASA;IACA,CA1WA;;IA2WAC;MACA;MACA;MACA;MACA;MACA;MACA;IACA;;EAlXA;AAhDA","names":["name","components","CallInLocation","props","orderType","type","default","orderId","auditOut","data","out_detail","receiveData","out_id","sku_total","out_warehouse_copy","out_warehouse_data","unassigned_sku_data","storage_show","warehouse_id","skuId","itemIndex1","index1","materielId","computed","enableLocationManagement","watch","created","methods","originId","source","item","goods","warehouseChange","target","row","warehouseId","warehouseName","details","warehouseData","unItem","num","unassignedData","totalNumChange","saleNumBlur","Number","unWarehouseChange","flag","item1","message","isNum","confirmButtonText","cancelButtonText","then","id","auditName","UnassignedSkuData","outWarehouseData","selStorage","areaId","areaName","areaCode","storageLocationName","storageLocationId","storageLocationCode","storageShow"],"sourceRoot":"src/views/order/components","sources":["OutWarehouseInfo.vue"],"sourcesContent":["<template>\n <div class=\"out-box\">\n <el-row :span=\"24\">\n <el-row :span=\"24\">\n <el-col :span=\"6\">\n <p\n style=\"padding-left: 28px\"\n class=\"order_midden_left_text el-icon-arrow-right\"\n >\n 单据信息\n </p>\n </el-col>\n <el-col :span=\"6\">\n <p class=\"order_midden_left_text el-icon-arrow-right\">\n &nbsp;出库信息\n </p>\n </el-col>\n <el-col\n v-if=\"out_detail.deliveryType !== 2 && out_detail.receiveData\"\n :span=\"6\"\n >\n <p class=\"order_midden_left_text el-icon-arrow-right\">\n {{ out_detail.deliveryType !== 2 ? \"收货信息\" : \"自提点信息\" }}\n </p>\n </el-col>\n <el-col :span=\"6\">\n <p class=\"order_midden_left_text el-icon-arrow-right\">\n &nbsp;其他信息\n </p>\n </el-col>\n </el-row>\n <el-col :span=\"6\">\n <div class=\"order_midden_left\">\n <el-form\n style=\"margin-top: 10px; padding-left: 46px; font-size: 10px\"\n >\n <el-form-item label=\"单据编号\">\n {{ out_detail.no }}\n </el-form-item>\n <el-form-item label=\"制单人\">\n {{ out_detail.operatorName }}\n </el-form-item>\n <el-form-item label=\"制单时间\">\n <span v-if=\"out_detail.createTime\">\n {{ $_common.formatDate(out_detail.createTime) }}\n </span>\n </el-form-item>\n <el-form-item label=\"出库状态\">\n <span v-if=\"out_detail.auditStatus === 2\" class=\"success-status\">\n 已出库\n </span>\n <span v-else class=\"info-status\">未出库</span>\n </el-form-item>\n </el-form>\n </div>\n </el-col>\n <el-col :span=\"6\">\n <div class=\"order_midden_left\">\n <el-form style=\"margin-top: 10px\" label-width=\"90px\">\n <el-form-item label=\"客户名称\">\n {{ out_detail.customerName }}\n </el-form-item>\n <el-form-item label=\"客户电话\">\n {{ out_detail.customerMobile }}\n </el-form-item>\n <el-form-item label=\"出库日期\">\n {{\n out_detail.auditTime\n ? $_common.formatDate(out_detail.auditTime)\n : \"--\"\n }}\n </el-form-item>\n <el-form-item label=\"出库类型\">\n {{ out_detail.typeName }}\n </el-form-item>\n <el-form-item label=\"配送方式\">\n {{ out_detail.deliveryName }}\n </el-form-item>\n </el-form>\n </div>\n </el-col>\n <el-col :span=\"6\">\n <div\n v-if=\"out_detail.deliveryType !== 2 && out_detail.receiveData\"\n class=\"order_midden_left\"\n >\n <el-form label-width=\"90px\">\n <el-form-item label=\"收货人\">\n {{ out_detail.receiveData.realName || \"匿名\" }}\n </el-form-item>\n <el-form-item label=\"收货电话\">\n {{ out_detail.receiveData.mobile }}\n </el-form-item>\n <el-form-item label=\"收货地址\">\n <span v-if=\"out_detail.receiveData.area\">\n {{ out_detail.receiveData.area.provinceName }}-{{\n out_detail.receiveData.area.cityName\n }}-{{ out_detail.receiveData.area.districtName }}-{{\n out_detail.receiveData.address\n }}\n </span>\n </el-form-item>\n </el-form>\n </div>\n <div\n v-if=\"\n out_detail.deliveryType === 2 &&\n JSON.stringify(out_detail.selfRuleData) !== '[]' &&\n out_detail.selfRuleData.name\n \"\n class=\"order_midden_left\"\n >\n <el-form label-width=\"90px\">\n <el-form-item label=\"自提点\">\n {{ out_detail.selfRuleData.name }}\n </el-form-item>\n <el-form-item label=\"自提点电话\">\n {{ out_detail.selfRuleData.mobile }}\n </el-form-item>\n <el-form-item label=\"营业时间\">\n <span\n v-if=\"\n out_detail.selfRuleData.startTime &&\n out_detail.selfRuleData.endTime\n \"\n >\n {{ out_detail.selfRuleData.startTime }}-{{\n out_detail.selfRuleData.endTime\n }}\n </span>\n <span v-else>全天</span>\n <span style=\"padding-left: 5px\">\n {{ out_detail.selfRuleData.day.join(\",\") }}\n </span>\n </el-form-item>\n <el-form-item label=\"自提地点\">\n {{ out_detail.selfRuleData.provinceName }}-{{\n out_detail.selfRuleData.cityName\n }}-{{ out_detail.selfRuleData.districtName }}-{{\n out_detail.selfRuleData.address\n }}\n </el-form-item>\n </el-form>\n </div>\n </el-col>\n <el-col :span=\"6\">\n <div class=\"order_midden_right\">\n <el-form label-width=\"80px\">\n <el-form-item label=\"来源编号\">\n {{ out_detail.originNo }}\n </el-form-item>\n <el-form-item label=\"备注信息\">\n {{ out_detail.remark || \"无\" }}\n </el-form-item>\n </el-form>\n </div>\n </el-col>\n </el-row>\n <!-- 未分配仓库-->\n <div v-show=\"unassigned_sku_data.length\" class=\"order_bottom\">\n <p class=\"text\">未分配仓库</p>\n <el-table size=\"small\" :data=\"unassigned_sku_data\">\n <el-table-column\n v-if=\"out_detail.isDistribution === 5\"\n prop=\"warehouseId\"\n label=\"仓库\"\n min-width=\"160\"\n >\n <template slot-scope=\"scope\">\n <div\n v-if=\"\n scope.row.warehouseSelect && scope.row.warehouseSelect.length\n \"\n >\n <el-select\n v-model=\"scope.row.warehouseId\"\n style=\"width: 100%\"\n placeholder=\"请选择\"\n @change=\"unWarehouseChange($event, scope.row, scope.$index)\"\n >\n <el-option\n v-for=\"(warehouse, a) in scope.row.warehouseSelect\"\n :key=\"a\"\n :label=\"warehouse.warehouseName\"\n :value=\"warehouse.warehouseId\"\n :disabled=\"\n scope.row.isPreSale === 4 &&\n warehouse.warehouseInventoryNum < scope.row.num\n \"\n >\n <div class=\"clearfix\">\n <span class=\"float_left\">\n {{ warehouse.warehouseName }}\n </span>\n <span\n class=\"float_right\"\n style=\"color: #8492a6; font-size: 12px; margin-left: 10px\"\n >\n 库存{{\n $_common.formatNub(warehouse.warehouseInventoryNum)\n }}\n </span>\n </div>\n </el-option>\n </el-select>\n </div>\n\n <span v-else>无可用仓库</span>\n </template>\n </el-table-column>\n <el-table-column\n prop=\"materielName\"\n label=\"商品名称\"\n min-width=\"160\"\n show-overflow-tooltip\n ></el-table-column>\n <el-table-column\n prop=\"materielCode\"\n label=\"商品编码\"\n min-width=\"130\"\n ></el-table-column>\n <el-table-column prop=\"skuName\" label=\"规格\" min-width=\"140\">\n <template slot-scope=\"scope\">\n {{ scope.row.unitName }};{{ scope.row.skuName }}\n </template>\n </el-table-column>\n <el-table-column prop=\"num\" label=\"销售量\" min-width=\"100\">\n <template slot-scope=\"scope\">\n {{ $_common.formatNub(scope.row.num) }}\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"$accessCheck($Access.moneyshowstockOutMoneyShow)\"\n prop=\"unitPrice\"\n min-width=\"100\"\n label=\"销售单价\"\n >\n <template slot-scope=\"scope\">\n {{ $_common.formattedNumber(scope.row.unitPrice) }}\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"$accessCheck($Access.moneyshowstockOutMoneyShow)\"\n prop=\"originTotalPrice\"\n label=\"销售总金额\"\n min-width=\"100\"\n >\n <template slot-scope=\"scope\">\n ¥{{ $NP.times(Number(scope.row.unitPrice), Number(scope.row.num)) }}\n </template>\n </el-table-column>\n </el-table>\n </div>\n <!-- 仓库出库数据-->\n <template v-for=\"(item, index) in out_warehouse_data\">\n <div v-if=\"item.details.length\" :key=\"index\" class=\"order_bottom\">\n <p class=\"text\">{{ item.warehouseName }}</p>\n <el-table size=\"small\" :data=\"item.details\">\n <el-table-column prop=\"warehouseId\" label=\"仓库\" min-width=\"160\">\n <template slot-scope=\"scope\">\n <span v-if=\"out_detail.isDistribution === 4\">\n {{ scope.row.warehouseName }}\n </span>\n <el-select\n v-else\n v-model=\"scope.row.warehouseId\"\n style=\"width: 100%\"\n placeholder=\"请选择仓库\"\n @change=\"\n warehouseChange($event, index, scope.$index, scope.row)\n \"\n >\n <!--不支持负库存的时候,当库存量小于销售量的时候禁用该仓库-->\n <el-option\n v-for=\"(warehouse, a) in scope.row.warehouseSelect\"\n :key=\"a\"\n :label=\"warehouse.warehouseName\"\n :value=\"warehouse.warehouseId\"\n :disabled=\"\n scope.row.isPreSale === 4 &&\n warehouse.warehouseInventoryNum < scope.row.num\n \"\n >\n <div class=\"clearfix\">\n <span class=\"float_left\">\n {{ warehouse.warehouseName }}\n </span>\n <span\n class=\"float_right\"\n style=\"color: #8492a6; font-size: 12px; margin-left: 10px\"\n >\n 库存{{\n $_common.formatNub(warehouse.warehouseInventoryNum)\n }}\n </span>\n </div>\n </el-option>\n </el-select>\n </template>\n </el-table-column>\n <el-table-column\n prop=\"materielName\"\n label=\"商品名称\"\n min-width=\"160\"\n show-overflow-tooltip\n ></el-table-column>\n <el-table-column\n prop=\"materielCode\"\n label=\"商品编码\"\n min-width=\"130\"\n ></el-table-column>\n <el-table-column prop=\"skuName\" label=\"规格\" min-width=\"140\">\n <template slot-scope=\"scope\">\n {{ scope.row.unitName }};{{ scope.row.skuName }}\n </template>\n </el-table-column>\n <el-table-column prop=\"num\" label=\"应出数量\" min-width=\"100\">\n <template slot-scope=\"scope\">\n <span>\n {{ $_common.formatNub(scope.row.total) }}\n </span>\n <span v-if=\"!!scope.row.extend && scope.row.extend !== 'null'\">\n ({{ scope.row.extend.u_1_buy }}{{ scope.row.extend.u_1 }})\n </span>\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"enableLocationManagement === 5\"\n label=\"库区库位\"\n min-width=\"100\"\n >\n <template slot-scope=\"scope\">\n <el-input\n v-model=\"scope.row.storageLocationName\"\n placeholder=\"库区库位\"\n >\n <i\n slot=\"suffix\"\n class=\"el-input__icon el-icon-search\"\n @click=\"storageShow(scope.row, scope.$index, index)\"\n ></i>\n </el-input>\n </template>\n </el-table-column>\n <el-table-column prop=\"num\" min-width=\"100\">\n <template slot=\"header\">\n <span style=\"color: red\">*</span>\n <span>出库数量</span>\n </template>\n <template slot-scope=\"scope\">\n <div>\n <span v-if=\"out_detail.auditStatus === 2\">\n {{ $_common.formatNub(scope.row.outNum) }}\n </span>\n <el-input\n v-else\n v-model=\"scope.row.num\"\n type=\"number\"\n style=\"width: 100%\"\n @blur=\"saleNumBlur($event, scope.$index, index, scope.row)\"\n ></el-input>\n </div>\n\n <div\n v-if=\"!!scope.row.extend && scope.row.extend !== 'null'\"\n style=\"padding-top: 5px\"\n >\n <span style=\"margin-right: 10px\">其他单位:</span>\n <span v-if=\"out_detail.auditStatus === 2\">\n {{ $_common.formatNub(scope.row.otherNum) }}\n </span>\n <el-input\n v-else\n v-model=\"scope.row.otherNum\"\n type=\"number\"\n style=\"width: calc(100% - 71px)\"\n ></el-input>\n </div>\n </template>\n </el-table-column>\n </el-table>\n </div>\n </template>\n\n <!-- 商品清单-->\n <div class=\"order_bottom\">\n <p class=\"text\">商品清单</p>\n\n <el-table size=\"small\" :data=\"out_detail.details\">\n <el-table-column\n prop=\"materielName\"\n label=\"商品名称\"\n min-width=\"160\"\n show-overflow-tooltip\n ></el-table-column>\n <el-table-column\n prop=\"materielCode\"\n label=\"商品编码\"\n min-width=\"140\"\n ></el-table-column>\n <el-table-column prop=\"skuName\" label=\"规格\" min-width=\"140\">\n <template slot-scope=\"scope\">\n {{ scope.row.unitName }};{{ scope.row.skuName }}\n </template>\n </el-table-column>\n <el-table-column prop=\"num\" label=\"销售量\" min-width=\"100\">\n <template slot-scope=\"scope\">\n {{ $_common.formatNub(scope.row.total) }}\n <span v-if=\"!!scope.row.u_1_buy\">\n ({{ scope.row.u_1_buy }}{{ scope.row.u_1 }})\n </span>\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"out_detail.typeName === '销售出库'\"\n prop=\"num\"\n label=\"出库数量\"\n min-width=\"120\"\n >\n <template slot-scope=\"scope\">\n {{ $_common.formatNub(scope.row.outNum) }}\n <p v-if=\"scope.row.isEq === 5\">\n 其他单位:{{ $_common.formatNub(scope.row.otherNum) }}\n </p>\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"$accessCheck($Access.moneyshowstockOutMoneyShow)\"\n prop=\"unitPrice\"\n min-width=\"130\"\n label=\"销售单价\"\n >\n <template slot-scope=\"scope\">\n {{ $_common.formattedNumber(scope.row.unitPrice) }}\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"$accessCheck($Access.moneyshowstockOutMoneyShow)\"\n prop=\"originTotalPrice\"\n label=\"销售总金额\"\n min-width=\"130\"\n >\n <template slot-scope=\"scope\">\n ¥{{\n $NP.times(Number(scope.row.unitPrice), Number(scope.row.outNum))\n }}\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"$accessCheck($Access.moneyshowstockOutMoneyShow)\"\n prop=\"totalPrice\"\n label=\"销售总金额(优惠后)\"\n min-width=\"130\"\n >\n <template slot-scope=\"scope\">\n {{ $_common.formattedNumber(scope.row.totalPrice) }}\n </template>\n </el-table-column>\n <el-table-column prop=\"skuStorage\" label=\"货架编码\" min-width=\"120\">\n <template slot-scope=\"scope\">\n {{ scope.row.skuStorage || \"--\" }}\n </template>\n </el-table-column>\n <el-table-column prop=\"skuBarCode\" label=\"商品条码\" min-width=\"120\">\n <template slot-scope=\"scope\">\n {{ scope.row.skuBarCode || \"--\" }}\n </template>\n </el-table-column>\n </el-table>\n </div>\n <CallInLocation\n v-if=\"storage_show\"\n :is-check=\"false\"\n :is-show=\"storage_show\"\n :warehouse-id=\"warehouse_id\"\n :sku-id=\"skuId\"\n :materiel-id=\"materielId\"\n @confirm=\"selStorage\"\n @cancel=\"storage_show = false\"\n />\n </div>\n</template>\n\n<script>\n import CallInLocation from \"@/component/common/CallInLocation\";\n import { mapGetters } from \"vuex\";\n import { getSaleOutInfoT, updateSaleOutStatus } from \"@/api/Stock\";\n export default {\n name: \"OutWarehouseInfo\",\n components: {\n CallInLocation,\n },\n props: {\n orderType: {\n type: [Number, String],\n default: \"\",\n },\n orderId: {\n type: [Number, String],\n default: \"\",\n },\n auditOut: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n out_detail: { receiveData: {} },\n out_id: \"\",\n sku_total: {},\n out_warehouse_copy: [],\n out_warehouse_data: [], // 商品清单,按仓库分\n unassigned_sku_data: [], // 未出库商品\n storage_show: false,\n warehouse_id: \"\",\n skuId: \"\",\n itemIndex1: \"\",\n index1: \"\",\n materielId: \"\",\n };\n },\n computed: {\n ...mapGetters({\n enableLocationManagement: \"MUser/enableLocationManagement\",\n }),\n },\n watch: {\n auditOut() {\n this.updateSaleOutStatus();\n },\n },\n created() {\n this.getSaleOutInfo();\n },\n methods: {\n // 获取出库单详情\n async getSaleOutInfo() {\n const { data } = await getSaleOutInfoT({\n originId: this.orderId,\n source: this.orderType,\n });\n\n this.out_detail = data;\n this.out_id = data.id;\n this.out_warehouse_copy = this.$_common.deepClone(\n data.outWarehouseData\n );\n // 存一下未修改的原始出库数量\n data.outWarehouseData.forEach((item) => {\n item.details.forEach((goods) => {\n goods.numCopy = Number(goods.num);\n // 抄嘛商品默认为空\n if (goods.extend !== \"null\" && !!goods.extend) {\n goods.extend = JSON.parse(goods.extend);\n if (!Number(goods.otherNum)) {\n goods.otherNum = this.$NP.divide(\n goods.numCopy,\n goods.extend.conversion\n );\n }\n\n goods.num = \"\";\n } else {\n goods.num = Number(goods.num);\n }\n });\n });\n this.out_warehouse_data = data.outWarehouseData;\n this.unassigned_sku_data = data.UnassignedSkuData;\n this.sku_total = data.skuTotal;\n this.$emit(\"getOutDetail\", this.out_detail);\n },\n warehouseChange(val, index, rowI, row) {\n // 深拷贝一份商品数据\n const target = this.$_common.deepClone(this.out_warehouse_data);\n // 在要出库的列表中查找当前切换的仓库是否存在\n const wIndex = target.findIndex((item) => item.warehouseId === val);\n if (wIndex > -1) {\n // 当前仓库存在\n // 查找商品是否存在\n const gIndex = target[wIndex].details.findIndex(\n (item) => item.skuId === row.skuId\n );\n if (gIndex > -1) {\n // 商品存在\n // 累加销售量\n target[wIndex].details[gIndex].num = this.$NP.plus(\n target[wIndex].details[gIndex].num,\n row.num\n );\n } else {\n // 商品不存在,添加该商品\n target[wIndex].details.push(row);\n }\n } else {\n // 仓库不存在,添加一项仓库数据\n target.push({\n warehouseId: val,\n warehouseName: row.warehouseSelect.find(\n (item) => item.warehouseId === val\n ).warehouseName,\n details: [row],\n });\n }\n // 把当前这条商品从原来的位置删除\n target[index].details.splice(rowI, 1);\n // 未开启负库存\n if (row.isPreSale === 4) {\n // 查找当前切换仓库数据\n const warehouseData = row.warehouseSelect.find(\n (item) => item.warehouseId === val\n );\n // 查找当前仓库在出库列表的数据\n const targetI = target.findIndex((item) => item.warehouseId === val);\n // 查找当前商品在该仓库下出库列表的数据\n const goodsI = target[targetI].details.findIndex(\n (item) => item.skuId === row.skuId\n );\n // 如果当前数量大于该仓库下的库存,推入到未出库数据中\n if (\n target[targetI].details[goodsI].num >\n warehouseData.warehouseInventoryNum\n ) {\n // 拷贝一份未出库数据\n const unassignedData = this.$_common.deepClone(\n this.unassigned_sku_data\n );\n // 判断当前未出库数据中是否有当前规格的商品\n const unIndex = unassignedData.findIndex(\n (unItem) => unItem.skuId === row.skuId\n );\n // 设置当前未出库商品\n const goods = {\n ...target[targetI].details[goodsI],\n num: this.$NP.minus(\n target[targetI].details[goodsI].num,\n warehouseData.warehouseInventoryNum\n ),\n warehouseId: \"\",\n };\n // 未出库商品列表有该商品,则替换\n if (unIndex > -1) {\n unassignedData[unIndex] = goods;\n } else {\n // 没有该商品则推入\n unassignedData.push(goods);\n }\n // 给未出库商品列表重新赋值\n this.unassigned_sku_data = unassignedData;\n // 设置当前商品销售量为该仓库的最大库存\n target[targetI].details[goodsI].num =\n warehouseData.warehouseInventoryNum;\n }\n }\n\n // 给出库数据重新赋值\n this.out_warehouse_data = target;\n },\n // 获取当前合计销售量\n totalNumChange(target, row) {\n // 设置变量num\n let num = 0;\n target.forEach((item) => {\n const goods = item.details.find((item) => item.skuId === row.skuId);\n if (goods) {\n // 加上当前商品销售量\n num = this.$NP.plus(num, goods.num);\n }\n });\n return num;\n },\n // 销售量修改\n saleNumBlur(e, rowI, index, row) {\n const val = e.target.value;\n // 深拷贝一份商品数据\n const target = this.$_common.deepClone(this.out_warehouse_data);\n\n if (val === \"\") {\n this.$nextTick(() => {\n target[index].details[rowI].num = \"\";\n });\n this.out_warehouse_data = target;\n return;\n }\n if (\n target[index].details[rowI].num >\n Number(this.sku_total[target[index].details[rowI].skuId])\n ) {\n target[index].details[rowI].num = Number(\n this.sku_total[target[index].details[rowI].skuId]\n );\n this.out_warehouse_data = target;\n return;\n }\n // 不支持负库存\n if (row.isPreSale === 4) {\n const warehouseData = row.warehouseSelect.find(\n (item) => item.warehouseId === row.warehouseId\n );\n // 输入值大于当前仓库库存数\n if (Number(val) > Number(warehouseData.warehouseInventoryNum)) {\n // 把当前商品的销售量还原\n target[index].details[rowI].num =\n target[index].details[rowI].numCopy;\n }\n }\n\n // 深拷贝一份未出库商品数据\n const unassignedData = this.$_common.deepClone(\n this.unassigned_sku_data\n );\n // 判断当前未出库数据中是否有当前规格的商品\n const unIndex = unassignedData.findIndex(\n (unItem) => unItem.skuId === row.skuId\n );\n // 设置变量num 获取当前合计销售量\n let num = this.totalNumChange(target, row);\n // 判断当前修改后的合计商品销售量是否大于购买数量,大于就把当前商品的销售量还原\n if (num > this.sku_total[row.skuId]) {\n // 修改后的合计商品销售量大于购买数量,把当前商品的销售量还原\n target[index].details[rowI].num = target[index].details[rowI].numCopy;\n } else if (num === Number(this.sku_total[row.skuId])) {\n // 修改后的合计商品销售量等于购买数量\n // 未出库商品列表有该商品,则删除\n if (unIndex > -1) {\n unassignedData.splice(unIndex, 1);\n }\n } else if (\n this.sku_total[row.skuId] &&\n this.$NP.minus(this.sku_total[row.skuId], num) > 0\n ) {\n // 当前未出库库存大于0\n // 设置当前未出库商品\n const goods = {\n ...this.$_common.deepClone(target[index].details[rowI]),\n num: this.$NP.minus(this.sku_total[row.skuId], num),\n warehouseId: \"\",\n };\n // 未出库商品列表有该商品,则替换\n if (unIndex > -1) {\n unassignedData[unIndex] = goods;\n } else {\n // 没有该商品则推入\n unassignedData.push(goods);\n\n // 如果输入数量为0 ,则把对应出库商品清除\n if (num === 0) {\n target[index].details.splice(rowI, 1);\n }\n }\n }\n // 给未出库商品列表重新赋值\n this.unassigned_sku_data = unassignedData;\n // 给出库商品列表重新赋值\n this.out_warehouse_data = target;\n },\n // 未出库数据仓库选择\n unWarehouseChange(val, row, indexUn) {\n // 深拷贝一份商品数据\n const target = this.$_common.deepClone(this.out_warehouse_data);\n // 在出库商品数据中查找选择仓库\n const index = target.findIndex((item) => item.warehouseId === val);\n // 出库商品数据中有该选择的仓库\n if (index > -1) {\n // 找到商品所在下标(位置)\n const goodsI = target[index].details.findIndex(\n (goods) => goods.skuId === row.skuId\n );\n // 该仓库下包含当前商品\n if (goodsI > -1) {\n target[index].details[goodsI].num = this.$NP.plus(\n target[index].details[goodsI].num,\n row.num\n );\n } else {\n // 该仓库下不包含当前商品,把当前商品推到该仓库下面\n target[index].details.push(row);\n }\n } else {\n // 出库商品数据中没有该选择的仓库,添加一项仓库数据\n target.push({\n warehouseId: val,\n warehouseName: row.warehouseSelect.find(\n (item) => item.warehouseId === val\n ).warehouseName,\n details: [row],\n });\n }\n // 把当前这条商品从原来的位置删除\n this.unassigned_sku_data.splice(indexUn, 1);\n this.out_warehouse_data = target;\n },\n async updateSaleOutStatus() {\n let flag = false;\n for (let i in this.out_warehouse_data) {\n for (let j in this.out_warehouse_data[i].details) {\n let item1 = this.out_warehouse_data[i].details[j];\n if (!item1.num) {\n flag = true;\n this.$message.warning(\n \"商品\" +\n item1.materielName +\n \",规格 【\" +\n item1.unitName +\n \";\" +\n item1.skuName +\n \"】的出库数量不能为空\"\n );\n break;\n }\n if (item1.otherNum < 0) {\n flag = true;\n this.$message.warning(\n \"商品\" +\n item1.materielName +\n \",规格 【\" +\n item1.unitName +\n \";\" +\n item1.skuName +\n \"】的其他数量不能小于0\"\n );\n break;\n }\n }\n }\n if (flag) {\n return;\n }\n if (!this.out_warehouse_data || !this.out_warehouse_data.length) {\n this.$message({\n type: \"warning\",\n message: \"请选择出库商品\",\n });\n return;\n }\n let isNum = true;\n // 过滤 出去没有商品的\n const outWarehouseData = this.out_warehouse_data.filter(\n (item) => item.details && item.details.length > 0\n );\n if (!outWarehouseData.length) {\n this.$message.warning(\"请选择要出库的商品\");\n return;\n }\n for (let i in outWarehouseData) {\n let item = this.out_warehouse_data[i];\n for (let n in item.details) {\n let ntem = item.details[n];\n if (ntem.num <= 0) {\n isNum = false;\n break;\n }\n }\n }\n if (!isNum) {\n this.$message.warning(\"销售量必须大于0\");\n return;\n }\n this.$confirm(\"确定要审核该出库单吗?\", \"提示\", {\n confirmButtonText: \"确定\",\n cancelButtonText: \"取消\",\n type: \"warning\",\n }).then(async () => {\n try {\n const data = await updateSaleOutStatus({\n id: this.out_detail.id,\n auditName: this.userName,\n UnassignedSkuData: this.unassigned_sku_data,\n outWarehouseData: outWarehouseData,\n });\n\n this.$message({\n type: \"success\",\n message: \"操作成功!\",\n });\n // 审核成功填写货车信息\n if (this.out_detail.deliveryType === 3) {\n this.logistics_show = true;\n }\n await this.getSaleOutInfo();\n this.$emit(\"auditSuccess\");\n } catch {}\n });\n },\n selStorage(e) {\n const target = this.$_common.deepClone(this.out_warehouse_data);\n target[this.index1].details[this.itemIndex1] = {\n ...target[this.index1].details[this.itemIndex1],\n areaId: e[0].areaId,\n areaName: e[0].areaName,\n areaCode: e[0].areaCode,\n storageLocationName: e[0].storageLocationName,\n storageLocationId: e[0].storageLocationId,\n storageLocationCode: e[0].storageLocationCode,\n };\n this.out_warehouse_data = target;\n },\n storageShow(row, itemIndex1, index) {\n this.materielId = row.materielId;\n this.itemIndex1 = itemIndex1;\n this.index1 = index;\n this.warehouse_id = row.warehouseId;\n this.skuId = row.skuId;\n this.storage_show = true;\n },\n },\n };\n</script>\n<style>\n .out-box .el-form-item--small.el-form-item {\n margin-bottom: 5px;\n }\n</style>\n<style scoped lang=\"scss\">\n .order_midden_left_text {\n font-weight: bold;\n font-size: 16px;\n }\n .order_midden_left {\n margin-top: 16px;\n width: 95%;\n height: 200px;\n border-right: 1px solid #dee2ee;\n }\n .order_midden_right {\n margin-top: 16px;\n }\n .order_bottom {\n border-top: 16px solid #f6f8f9;\n width: 100%;\n padding-bottom: 24px;\n background-color: #ffffff;\n border-radius: 3px;\n .text {\n font-size: 16px;\n font-weight: 600;\n color: #2d405e;\n line-height: 64px;\n padding: 0px 28px;\n }\n .order_p {\n text-align: right;\n line-height: 58px;\n padding-right: 38px;\n color: #2d405e;\n .order_p_money {\n color: #fa6400;\n margin: 0 3px;\n }\n }\n }\n</style>\n"]}]}