| 1 |
- {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\kefu\\pc\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\kefu\\pc\\index.vue","mtime":1761614939027},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1761614927320},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQp2YXIgbXAzID0gcmVxdWlyZSgnLi4vLi4vLi4vYXNzZXRzL3ZpZGVvL25vdGljZS53YXYnKTsNCnZhciBtcDMgPSBuZXcgQXVkaW8obXAzKTsNCmltcG9ydCBTZXR0aW5nIGZyb20gJ0Avc2V0dGluZyc7DQppbXBvcnQgeyBIYXBweVNjcm9sbCB9IGZyb20gJ3Z1ZS1oYXBweS1zY3JvbGwnOw0KaW1wb3J0IGJhc2VIZWFkZXIgZnJvbSAnLi9jb21wb25lbnRzL2Jhc2VIZWFkZXInOw0KaW1wb3J0IGNoYXRMaXN0IGZyb20gJy4vY29tcG9uZW50cy9jaGF0TGlzdCc7DQppbXBvcnQgcmlnaHRNZW51IGZyb20gJy4vY29tcG9uZW50cy9yaWdodE1lbnUnOw0KaW1wb3J0IGVtb2ppTGlzdCBmcm9tICdAL3V0aWxzL2Vtb2ppJzsNCmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ0AvbGlicy9zb2NrZXQnOw0KaW1wb3J0IHV0aWwgZnJvbSAnQC9saWJzL3V0aWwnOw0KaW1wb3J0IG1zZ1dpbmRvdyBmcm9tICcuL2NvbXBvbmVudHMvbXNnV2luZG93JzsNCmltcG9ydCB0cmFuc2ZlciBmcm9tICcuL2NvbXBvbmVudHMvdHJhbnNmZXInOw0KaW1wb3J0IHsgc2VydmljZUxpc3QsIHVwbG9hZEltZyB9IGZyb20gJ0AvYXBpL2tlZnUnOw0KaW1wb3J0IGdvb2RzRGV0YWlsIGZyb20gJy4vY29tcG9uZW50cy9nb29kc19kZXRhaWwnOw0KaW1wb3J0IG9yZGVyRGV0YWlsIGZyb20gJy4vY29tcG9uZW50cy9vcmRlcl9kZXRhaWwnOw0KaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsNCmltcG9ydCB7IGdldENvb2tpZXMsIHJlbW92ZUNvb2tpZXMsIHNldENvb2tpZXMgfSBmcm9tICdAL2xpYnMvdXRpbCc7DQppbXBvcnQgeyBzZXJ2aWNlSW5mbyB9IGZyb20gJ0AvYXBpL2tlZnVfbW9iaWxlJzsNCmltcG9ydCB7IGlzUGljVXBsb2FkIH0gZnJvbSAnQC91dGlscyc7DQoNCmNvbnN0IGNodW5rID0gZnVuY3Rpb24gKGFyciwgbnVtKSB7DQogIG51bSA9IG51bSAqIDEgfHwgMTsNCiAgdmFyIHJldCA9IFtdOw0KICBhcnIuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaSkgew0KICAgIGlmIChpICUgbnVtID09PSAwKSB7DQogICAgICByZXQucHVzaChbXSk7DQogICAgfQ0KICAgIHJldFtyZXQubGVuZ3RoIC0gMV0ucHVzaChpdGVtKTsNCiAgfSk7DQogIHJldHVybiByZXQ7DQp9Ow0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAnaW5kZXgnLA0KICBjb21wb25lbnRzOiB7DQogICAgYmFzZUhlYWRlciwNCiAgICBjaGF0TGlzdCwNCiAgICByaWdodE1lbnUsDQogICAgbXNnV2luZG93LA0KICAgIHRyYW5zZmVyLA0KICAgIEhhcHB5U2Nyb2xsLA0KICAgIGdvb2RzRGV0YWlsLA0KICAgIG9yZGVyRGV0YWlsLA0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBpc0Vtb2ppOiBmYWxzZSwNCiAgICAgIGNoYXRDb246ICcnLA0KICAgICAgZW1vamlHcm91cDogY2h1bmsoZW1vamlMaXN0LCAyMCksIC8vIOihqOaDheWIl+ihqA0KICAgICAgZW1vamlMaXN0OiBlbW9qaUxpc3QsDQogICAgICBodG1sOiAnJywNCiAgICAgIHVzZXJBY3RpdmU6IHt9LCAvL+W3puS+p+eUqOaIt+WIl+ihqOmAieS4reS/oeaBrw0KICAgICAga2VmdUluZm86IHt9LCAvL+WuouacjeS/oeaBrw0KICAgICAgaXNNc2c6IGZhbHNlLA0KICAgICAgaXNUcmFuc2ZlcjogZmFsc2UsDQogICAgICBhY3RpdmVNc2c6ICcnLCAvLyDpgInkuK3nmoTor53mnK8NCiAgICAgIGNoYXRMaXN0OiBbXSwNCiAgICAgIHRleHQ6ICcnLA0KICAgICAgbGltaXQ6IDIwLA0KICAgICAgdXBwZXJJZDogMCwNCiAgICAgIG9ubGluZTogdHJ1ZSwgLy/lvZPliY3lrqLmnI3lnKjnur/nirbmgIENCiAgICAgIHNjcm9sbFRvcDogMCwNCiAgICAgIGlzU2Nyb2xsOiB0cnVlLA0KICAgICAgb2xkSGVpZ2h0OiAwLA0KICAgICAgaXNMb2FkOiBmYWxzZSwNCiAgICAgIGlzUHJvZHVjdEJveDogZmFsc2UsDQogICAgICBnb29kc0lkOiAnJywNCiAgICAgIGlzT3JkZXI6IGZhbHNlLA0KICAgICAgb3JkZXJJZDogJycsDQogICAgICB1cGxvYWQ6ICcnLA0KICAgICAgaGVhZGVyOiB7fSwNCiAgICAgIHVwbG9hZERhdGE6IHsNCiAgICAgICAgZmlsZW5hbWU6ICdmaWxlJywNCiAgICAgIH0sDQogICAgICB1c2VyT25saW5lOiB7fSwNCiAgICAgIG5ld1JlY29yZWQ6IHt9LCAvL+aWsOWvueivneS/oeaBrw0KICAgICAgc2VhcmNoRGF0YTogJycsIC8vIOaQnOe0ouaWh+Wtlw0KICAgICAgc2Nyb2xsTnVtOiAwLCAvL+a7muWKqOasoeaVsA0KICAgICAgdHJhbnNmZXJJZDogJycsIC8v6L2s5o6laWQNCiAgICAgIGJvZHlDbG9zZTogZmFsc2UsDQogICAgICB0b3VyaXN0OiAwLA0KICAgIH07DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgLi4ubWFwU3RhdGUoew0KICAgICAgc29ja2V0U3RhdHVzOiAoc3RhdGUpID0+IHN0YXRlLmFkbWluLmtlZnUuc29ja2V0U3RhdHVzLA0KICAgIH0pLA0KICAgIGRpc2FibGVkKCkgew0KICAgICAgaWYgKHRoaXMuY2hhdENvbi5sZW5ndGggPT0gMCkgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHJlY29yZHMoKSB7DQogICAgICByZXR1cm4gdGhpcy5jaGF0TGlzdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7DQogICAgICAgIGl0ZW0udGltZSA9IHRoaXMuJG1vbWVudChpdGVtLmFkZF90aW1lICogMTAwMCkuZm9ybWF0KCdNTU1EbyBIOm1tJyk7DQogICAgICAgIGlmIChpbmRleCkgew0KICAgICAgICAgIGlmIChpdGVtLmFkZF90aW1lIC0gdGhpcy5jaGF0TGlzdFtpbmRleCAtIDFdLmFkZF90aW1lID49IDMwMCkgew0KICAgICAgICAgICAgaXRlbS5zaG93ID0gdHJ1ZTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaXRlbS5zaG93ID0gZmFsc2U7DQogICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIGl0ZW0uc2hvdyA9IHRydWU7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGl0ZW07DQogICAgICB9KTsNCiAgICB9LA0KICB9LA0KICAvLyDmjIfku6TnspjotLTmjIfku6TlrprkuYkNCiAgZGlyZWN0aXZlczogew0KICAgIHBhc3RlOiB7DQogICAgICBiaW5kKGVsLCBiaW5kaW5nLCB2bm9kZSkgew0KICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdwYXN0ZScsIGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgIC8v6L+Z6YeM55u05o6l55uR5ZCs5YWD57Sg55qE57KY6LS05LqL5Lu2DQogICAgICAgICAgYmluZGluZy52YWx1ZShldmVudCk7DQogICAgICAgIH0pOw0KICAgICAgfSwNCiAgICB9LA0KICB9LA0KICB3YXRjaDogew0KICAgIC8vIHNvY2tldFN0YXR1czp7DQogICAgLy8gICAgIGhhbmRsZXIoblZhbCxWYWwpew0KICAgIC8vICAgICAgICAgaWYoblZhbCl7DQogICAgLy8gICAgICAgICAgICAgU29ja2V0LnNlbmQoew0KICAgIC8vICAgICAgICAgICAgICAgICBkYXRhOiB1dGlsLmNvb2tpZXMua2VmdUdldCgndG9rZW4nKSwNCiAgICAvLyAgICAgICAgICAgICAgICAgdHlwZTogImtlZnVfbG9naW4iDQogICAgLy8gICAgICAgICAgICAgfSk7DQogICAgLy8gICAgICAgICB9DQogICAgLy8gICAgIH0sDQogICAgLy8gICAgIGRlZXA6dHJ1ZQ0KICAgIC8vIH0NCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLnVwbG9hZCA9IFNldHRpbmcuYXBpQmFzZVVSTC5yZXBsYWNlKCdhZG1pbmFwaScsICdrZWZ1YXBpJykgKyAnL3VwbG9hZCc7DQogICAgc2VydmljZUluZm8oKS50aGVuKChyZXMpID0+IHsNCiAgICAgIHRoaXMua2VmdUluZm8gPSByZXMuZGF0YTsNCiAgICAgIGlmICh0aGlzLmtlZnVJbmZvLnNpdGVfbmFtZSkgew0KICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRoaXMua2VmdUluZm8uc2l0ZV9uYW1lOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5rZWZ1SW5mby5zaXRlX25hbWUgPSAnJzsNCiAgICAgIH0NCiAgICB9KTsNCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICBsZXQgc2VsZiA9IHRoaXM7DQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgew0KICAgICAgc2VsZi5pc0Vtb2ppID0gZmFsc2U7DQogICAgfSk7DQogICAgc2V0VGltZW91dCgoZSkgPT4gew0KICAgICAgU29ja2V0LnRoZW4oKHdzKSA9PiB7DQogICAgICAgIHdzLnNlbmQoew0KICAgICAgICAgIHR5cGU6ICdrZWZ1X2xvZ2luJywNCiAgICAgICAgICBkYXRhOiBnZXRDb29raWVzKCdrZWZ1X3Rva2VuJyksDQogICAgICAgIH0pOw0KICAgICAgICB3cy4kb24oWydyZXBseScsICdjaGF0J10sIChkYXRhKSA9PiB7DQogICAgICAgICAgaWYgKGRhdGEubXNuX3R5cGUgPT0gMSkgew0KICAgICAgICAgICAgZGF0YS5tc24gPSB0aGlzLnJlcGxhY2VfZW0oZGF0YS5tc24pOw0KICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoZGF0YS5tc25fdHlwZSA9PSAyKSB7DQogICAgICAgICAgICBpZiAoZGF0YS5tc24uaW5kZXhPZignWycpID09IC0xKSB7DQogICAgICAgICAgICAgIGRhdGEubXNuID0gdGhpcy5yZXBsYWNlX2VtKGBbJHtkYXRhLm1zbn1dYCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIHRoaXMuY2hhdExpc3QucHVzaChkYXRhKTsNCiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjaGF0X3Njcm9sbCcpOw0KICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7DQogICAgICAgICAgICB9LCA4MDApOw0KICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICAgICAgd3MuJG9uKCdyZXBseScsIChkYXRhKSA9PiB7DQogICAgICAgICAgLy8gbXAzLnBsYXkoKTsNCiAgICAgICAgfSk7DQogICAgICAgIHdzLiRvbignc29ja2V0X2Vycm9yJywgKCkgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+i/nuaOpeWksei0pScpOw0KICAgICAgICB9KTsNCiAgICAgICAgd3MuJG9uKCdlcnJfdGlwJywgKGRhdGEpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGRhdGEubXNnKTsNCiAgICAgICAgfSk7DQogICAgICAgIC8v55So5oi35LiK57q/5o+Q6YaS5bm/5pKtDQogICAgICAgIHdzLiRvbigndXNlcl9vbmxpbmUnLCAoZGF0YSkgPT4gew0KICAgICAgICAgIHRoaXMudXNlck9ubGluZSA9IGRhdGE7DQogICAgICAgIH0pOw0KICAgICAgICAvL+eUqOaIt+acquivu+a2iOaBr+adoeaVsOabtOaUuQ0KICAgICAgICB3cy4kb24oJ21zc2FnZV9udW0nLCAoZGF0YSkgPT4gew0KICAgICAgICAgIGlmIChkYXRhLm51bSA+IDApIHsNCiAgICAgICAgICAgIG1wMy5wbGF5KCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHRoaXMuY2hhdExpc3QuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgICAgaWYgKGl0ZW0udG9fdWlkID09IGRhdGEudWlkKSB7DQogICAgICAgICAgICAgIGl0ZW0ubXNzYWdlX251bSA9IGRhdGEubnVtOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pOw0KICAgICAgICAgIGlmIChkYXRhLnJlY29yZWQuaWQpIHsNCiAgICAgICAgICAgIHRoaXMubmV3UmVjb3JlZCA9IGRhdGEucmVjb3JlZDsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgICAgfSk7DQogICAgfSwgMjAwMCk7DQogICAgdGhpcy5oZWFkZXJbJ0F1dGhvcmktemF0aW9uJ10gPSAnQmVhcmVyICcgKyBnZXRDb29raWVzKCdrZWZ1X3Rva2VuJyk7DQogICAgdGhpcy50ZXh0ID0gdGhpcy5yZXBsYWNlX2VtKCdbZW0tc21pbGluZ19pbXBdJyk7DQogICAgLy8gU29ja2V0LmluaXQodGhpcywna2VmdScpOw0KICB9LA0KICBtZXRob2RzOiB7DQogICAgYmVmb3JlVXBsb2FkKGZpbGUpIHsNCiAgICAgIHJldHVybiBpc1BpY1VwbG9hZChmaWxlKTsNCiAgICB9LA0KICAgIGhhbmRsZUZvcm1hdEVycm9yKGZpbGUpIHsNCiAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+S4iuS8oOWbvueJh+WPquiDveaYryBqcGfjgIFqcGfjgIFqcGVn44CBZ2lmIOagvOW8jyEnKTsNCiAgICB9LA0KICAgIGJpbmRFbnRlcihlKSB7fSwNCiAgICAvL+W+ruS/oeaIquWbvuS4iuS8oOWbvueJh+aXtuinpuWPkQ0KICAgIGhhbmRsZVBhcnNlKGUpIHsNCiAgICAgIGxldCBmaWxlID0gbnVsbDsNCiAgICAgIGlmICgNCiAgICAgICAgZS5jbGlwYm9hcmREYXRhICYmDQogICAgICAgIGUuY2xpcGJvYXJkRGF0YS5pdGVtc1swXSAmJg0KICAgICAgICBlLmNsaXBib2FyZERhdGEuaXRlbXNbMF0udHlwZSAmJg0KICAgICAgICBlLmNsaXBib2FyZERhdGEuaXRlbXNbMF0udHlwZS5pbmRleE9mKCdpbWFnZScpID4gLTENCiAgICAgICkgew0KICAgICAgICAvL+i/memHjOWwseaYr+WIpOaWreaYr+WQpuacieeymOi0tOi/m+adpeeahOaWh+S7tuS4lOaWh+S7tuS4uuWbvueJh+agvOW8jw0KICAgICAgICBmaWxlID0gZS5jbGlwYm9hcmREYXRhLml0ZW1zWzBdLmdldEFzRmlsZSgpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfkuIrkvKDnmoTmlofku7blv4XpobvkuLrlm77niYfkuJTml6Dms5XlpI3liLbmnKzlnLDlm77niYfkuJTml6Dms5XlkIzml7blpI3liLblpJrlvKDlm77niYcnLA0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuOw0KICAgICAgfQ0KICAgICAgdGhpcy51cGRhdGUoZmlsZSk7DQogICAgfSwNCiAgICB1cGRhdGUoZSkgew0KICAgICAgLy8g5LiK5Lyg54Wn54mHDQogICAgICBsZXQgZmlsZSA9IGU7DQogICAgICBsZXQgcGFyYW0gPSBuZXcgRm9ybURhdGEoKTsgLy8g5Yib5bu6Zm9ybeWvueixoQ0KICAgICAgcGFyYW0uYXBwZW5kKCdmaWxlbmFtZScsICdmaWxlJyk7IC8vIOmAmui/h2FwcGVuZOWQkWZvcm3lr7nosaHmt7vliqDmlbDmja7ov5vljrsNCiAgICAgIHBhcmFtLmFwcGVuZCgnZmlsZScsIGZpbGUpOyAvLyDpgJrov4dhcHBlbmTlkJFmb3Jt5a+56LGh5re75Yqg5pWw5o2u6L+b5Y67DQogICAgICAvLyDmt7vliqDor7fmsYLlpLQNCiAgICAgIHVwbG9hZEltZyhwYXJhbSkudGhlbigocmVzKSA9PiB7DQogICAgICAgIHRoaXMuc2VuZE1zZyhyZXMuZGF0YS51cmwsIDMpOw0KICAgICAgfSk7DQogICAgfSwNCiAgICAvLyDkuIrkvKDmiJDlip8NCiAgICBoYW5kbGVTdWNjZXNzKHJlcywgZmlsZSwgZmlsZUxpc3QpIHsNCiAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOw0KICAgICAgICB0aGlzLnNlbmRNc2cocmVzLmRhdGEudXJsLCAzKTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7DQogICAgICB9DQogICAgfSwNCiAgICAvL+iuouWNleivpuaDhQ0KICAgIGxvb2tPcmRlcihpdGVtKSB7DQogICAgICB0aGlzLm9yZGVySWQgPSBpdGVtLm9yZGVySW5mby5pZDsNCiAgICAgIHRoaXMuaXNPcmRlciA9IHRydWU7DQogICAgfSwNCiAgICBzZXRPbmxpbmUoZGF0YSkgew0KICAgICAgU29ja2V0LnRoZW4oKHdzKSA9PiB7DQogICAgICAgIHdzLnNlbmQoew0KICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgIG9ubGluZTogZGF0YSwNCiAgICAgICAgICB9LA0KICAgICAgICAgIHR5cGU6ICdvbmxpbmUnLA0KICAgICAgICB9KTsNCiAgICAgIH0pOw0KICAgICAgdGhpcy5vbmxpbmUgPSBkYXRhOw0KICAgIH0sDQogICAgLy8g6Zi75q2i5rWP6KeI5Zmo6buY6K6k5o2i6KGM5pON5L2cDQogICAgbGlzdGVuKGV2ZW50KSB7DQogICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleUNvZGUgPT0gMTMpIHsNCiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnJykgew0KICAgICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLmVycm9yKCfor7fovpPlhaXmtojmga8nKTsNCiAgICAgICAgfQ0KICAgICAgICBjb25zb2xlLmxvZyhldmVudC50YXJnZXQudmFsdWUpOw0KICAgICAgICB0aGlzLnNlbmRNc2coZXZlbnQudGFyZ2V0LnZhbHVlLCAxKTsNCiAgICAgICAgdGhpcy5jaGF0Q29uID0gJyc7DQogICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHRoaXMuJHJlZnMuY2hhdElucHV0LmZvY3VzKCkpOw0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g6L6T5YWl5qGG6YCJ5oup6KGo5oOFDQogICAgc2VsZWN0KGRhdGEpIHsNCiAgICAgIGxldCB2YWwgPSBgWyR7ZGF0YX1dYDsNCiAgICAgIHRoaXMuY2hhdENvbiArPSB2YWw7DQogICAgICB0aGlzLmlzRW1vamkgPSBmYWxzZTsNCiAgICB9LA0KICAgIC8vIOiBiuWkqeihqOaDhei9rOaNog0KICAgIHJlcGxhY2VfZW0oc3RyKSB7DQogICAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFsoW15cW1xdXSspXF0vZywgIjxzcGFuIGNsYXNzPSdlbSAkMScvPjwvc3Bhbj4iKTsNCiAgICAgIHJldHVybiBzdHI7DQogICAgfSwNCiAgICAvLyDojrflj5bmmK/lkKbmuLjlrqINCiAgICBjaGFuZ2VUeXBlKGRhdGEpIHsNCiAgICAgIHRoaXMudG91cmlzdCA9IGRhdGE7DQogICAgfSwNCiAgICAvLyDojrflj5bliJfooajnlKjmiLfkv6Hmga8NCiAgICBzZXREYXRhSWQoZGF0YSkgew0KICAgICAgdGhpcy51c2VyQWN0aXZlID0gZGF0YTsNCiAgICAgIHRoaXMuY2hhdExpc3QgPSBbXTsNCiAgICAgIHRoaXMudXBwZXJJZCA9IDA7DQogICAgICB0aGlzLm9sZEhlaWdodCA9IDA7DQogICAgICB0aGlzLmlzU2Nyb2xsID0gdHJ1ZTsNCiAgICAgIGlmIChkYXRhKSB7DQogICAgICAgIHdpbmRvdy5kb2N1bWVudC50aXRsZSA9IGRhdGEubmlja25hbWUNCiAgICAgICAgICA/IGDmraPlnKjlkowke2RhdGEubmlja25hbWV95a+56K+d5LitIC0gJHt0aGlzLmtlZnVJbmZvLnNpdGVfbmFtZX1gDQogICAgICAgICAgOiAn5q2j5Zyo5ZKM5ri45a6i5a+56K+d5LitIC0gJyArIHRoaXMua2VmdUluZm8uc2l0ZV9uYW1lOw0KDQogICAgICAgIFNvY2tldC50aGVuKCh3cykgPT4gew0KICAgICAgICAgIHdzLnNlbmQoew0KICAgICAgICAgICAgZGF0YTogew0KICAgICAgICAgICAgICBpZDogdGhpcy51c2VyQWN0aXZlLnRvX3VpZCwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB0eXBlOiAndG9fY2hhdCcsDQogICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgICAgICB0aGlzLmdldENoYXRMaXN0KCk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB3aW5kb3cuZG9jdW1lbnQudGl0bGUgPSB0aGlzLmtlZnVJbmZvLnNpdGVfbmFtZTsNCiAgICAgIH0NCiAgICB9LA0KICAgIG1zZ0Nsb3NlKCkgew0KICAgICAgdGhpcy5pc1RyYW5zZmVyID0gZmFsc2U7DQogICAgfSwNCiAgICAvLyDor53mnK/pgInkuK0NCiAgICBhY3RpdmVUeHQoZGF0YSkgew0KICAgICAgdGhpcy5jaGF0Q29uID0gZGF0YTsNCiAgICAgIHRoaXMuaXNNc2cgPSBmYWxzZTsNCiAgICB9LA0KICAgIC8vIOaWh+acrOWPkemAgQ0KICAgIHNlbmRUZXh0KCkgew0KICAgICAgdGhpcy5zZW5kTXNnKHRoaXMuY2hhdENvbiwgMSk7DQogICAgICB0aGlzLmNoYXRDb24gPSAnJzsNCiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHRoaXMuJHJlZnMuY2hhdElucHV0LmZvY3VzKCkpOw0KICAgIH0sDQoNCiAgICAvLyDnu5/kuIDlj5HpgIHlpITnkIYNCiAgICBzZW5kTXNnKG1zbiwgdHlwZSkgew0KICAgICAgbGV0IG9iaiA9IHsNCiAgICAgICAgdHlwZTogJ2NoYXQnLA0KICAgICAgICBkYXRhOiB7DQogICAgICAgICAgbXNuLA0KICAgICAgICAgIHR5cGUsDQogICAgICAgICAgdG9fdWlkOiB0aGlzLnVzZXJBY3RpdmUudG9fdWlkLA0KICAgICAgICAgIGlzX3RvdXJpc3Q6IHRoaXMudG91cmlzdCwNCiAgICAgICAgfSwNCiAgICAgIH07DQogICAgICBTb2NrZXQudGhlbigod3MpID0+IHsNCiAgICAgICAgd3Muc2VuZChvYmopOw0KICAgICAgfSk7DQogICAgfSwNCiAgICBzZW5kKHR5cGUsIGRhdGEpIHsNCiAgICAgIFNvY2tldC5zZW5kKHsNCiAgICAgICAgZGF0YSwNCiAgICAgICAgdHlwZSwNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g6I635Y+W6IGK5aSp5YiX6KGoDQogICAgZ2V0Q2hhdExpc3QoKSB7DQogICAgICBzZXJ2aWNlTGlzdCh7DQogICAgICAgIGxpbWl0OiB0aGlzLmxpbWl0LA0KICAgICAgICB1aWQ6IHRoaXMudXNlckFjdGl2ZS50b191aWQsDQogICAgICAgIHVwcGVySWQ6IHRoaXMudXBwZXJJZCwNCiAgICAgICAgaXNfdG91cmlzdDogdGhpcy50b3VyaXN0LA0KICAgICAgfSkudGhlbigocmVzKSA9PiB7DQogICAgICAgIHJlcy5kYXRhLmZvckVhY2goKGVsKSA9PiB7DQogICAgICAgICAgaWYgKGVsLm1zbl90eXBlID09IDEpIHsNCiAgICAgICAgICAgIGVsLm1zbiA9IHRoaXMucmVwbGFjZV9lbShlbC5tc24pOw0KICAgICAgICAgIH0gZWxzZSBpZiAoZWwubXNuX3R5cGUgPT0gMikgew0KICAgICAgICAgICAgZWwubXNuID0gdGhpcy5yZXBsYWNlX2VtKGBbJHtlbC5tc259XWApOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICAgIGxldCBzZWxlY3RvciA9ICcnOw0KICAgICAgICBpZiAodGhpcy51cHBlcklkID09IDApIHsNCiAgICAgICAgICBzZWxlY3RvciA9ICcnOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHNlbGVjdG9yID0gYGNoYXRfJHt0aGlzLmNoYXRMaXN0WzBdLmlkfWA7DQogICAgICAgIH0NCg0KICAgICAgICAvLyB0aGlzLmNoYXRMaXN0ID0gcmVzLmRhdGEuY29uY2F0KHRoaXMuY2hhdExpc3QpDQogICAgICAgIHRoaXMuY2hhdExpc3QgPSBbLi4ucmVzLmRhdGEsIC4uLnRoaXMuY2hhdExpc3RdOw0KICAgICAgICB0aGlzLnVwcGVySWQgPSByZXMuZGF0YS5sZW5ndGggPiAwID8gcmVzLmRhdGFbMF0uaWQgOiAwOw0KICAgICAgICB0aGlzLmlzTG9hZCA9IGZhbHNlOw0KICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7DQogICAgICAgICAgLy8gdGhpcy5zY3JvbGxUb1RvcCgpDQogICAgICAgICAgdGhpcy5pc1Njcm9sbCA9IHJlcy5kYXRhLmxlbmd0aCA+PSB0aGlzLmxpbWl0Ow0KICAgICAgICAgIHRoaXMuc2V0UGFnZVNjcm9sbFRvKHNlbGVjdG9yKTsNCiAgICAgICAgfSk7DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOiuvue9rumhtemdoua7muWKqOS9jee9rg0KICAgIHNldFBhZ2VTY3JvbGxUbyhzZWxlY3Rvcikgew0KICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gew0KICAgICAgICBpZiAoc2VsZWN0b3IpIHsNCiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICAgIGxldCBudW0gPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdG9yKS5vZmZzZXRUb3ApIC0gNjA7DQogICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IG51bTsNCiAgICAgICAgICB9LCAwKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NoYXRfc2Nyb2xsJyk7DQogICAgICAgICAgdGhpcy5zY3JvbGxUb3AgPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0Ow0KICAgICAgICAgIHNldFRpbWVvdXQoKHJlcykgPT4gew0KICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsVG9wICE9IHRoaXMuJHJlZnMuc2Nyb2xsQm94Lm9mZnNldEhlaWdodCkgew0KICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjaGF0X3Njcm9sbCcpLm9mZnNldEhlaWdodDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9LCAzMDApOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8v5rua5Yqo5Yiw6aG26YOoDQogICAgc2Nyb2xsSGFuZGxlcigpIHsNCiAgICAgIGxldCBzZWxmID0gdGhpczsNCiAgICAgIGlmICh0aGlzLmlzU2Nyb2xsICYmIHRoaXMudXBwZXJJZCkgew0KICAgICAgICB0aGlzLmlzTG9hZCA9IHRydWU7DQogICAgICAgIHRoaXMuZ2V0Q2hhdExpc3QoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOa7muWKqOadoeWKqOeUuw0KICAgIHNjcm9sbFRvVG9wKGR1cmF0aW9uKSB7DQogICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NoYXRfc2Nyb2xsJyk7DQogICAgICB0aGlzLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSB0aGlzLm9sZEhlaWdodDsNCiAgICAgIHNldFRpbWVvdXQoKHJlcykgPT4gew0KICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IHRoaXMuJHJlZnMuc2Nyb2xsQm94Lm9mZnNldEhlaWdodCAtIHRoaXMub2xkSGVpZ2h0Ow0KICAgICAgfSwgMzAwKTsNCiAgICB9LA0KICAgIC8vIOWVhuWTgeaOqOmAgQ0KICAgIGJpbmRQdXNoKGRhdGEpIHsNCiAgICAgIHRoaXMuc2VuZE1zZyhkYXRhLCA1KTsNCiAgICB9LA0KICAgIC8vIOWVhuWTgeivpuaDhQ0KICAgIGxvb2tHb29kcyhpdGVtKSB7DQogICAgICB0aGlzLmdvb2RzSWQgPSBpdGVtLm1zbjsNCiAgICAgIHRoaXMuaXNQcm9kdWN0Qm94ID0gdHJ1ZTsNCiAgICB9LA0KICAgIC8vIOaQnOe0oueUqOaItw0KICAgIGJpbmRTZWFyY2goZGF0YSkgew0KICAgICAgdGhpcy5zZWFyY2hEYXRhID0gZGF0YTsNCiAgICAgIHRoaXMub2xkSGVpZ2h0ID0gMDsNCiAgICAgIHRoaXMudXBwZXJJZCA9IDA7DQogICAgICB0aGlzLmlzU2Nyb2xsID0gZmFsc2U7DQogICAgfSwNCiAgICAvLyDlrqLmnI3ovazmjqUNCiAgICB0cmFuc2ZlclBlb3BsZShkYXRhKSB7DQogICAgICB0aGlzLnRyYW5zZmVySWQgPSBkYXRhLmlkOw0KICAgICAgdGhpcy5pc1RyYW5zZmVyID0gZmFsc2U7DQogICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+i9rOaOpeaIkOWKnycpOw0KICAgICAgU29ja2V0LnRoZW4oKHdzKSA9PiB7DQogICAgICAgIHdzLnNlbmQoew0KICAgICAgICAgIHR5cGU6ICd0b19jaGF0JywNCiAgICAgICAgICBkYXRhOiB7IGlkOiBkYXRhLnVpZCB9LA0KICAgICAgICB9KTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5a6i5pyN6L2s5o6l56Gu5a6aDQogICAgdHJhbnNmZXJPaygpIHt9LA0KICB9LA0KfTsNCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAmLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/pages/kefu/pc","sourcesContent":["<template>\r\n <div class=\"kefu-layouts\">\r\n <div class=\"content-wrapper\">\r\n <baseHeader :kefuInfo=\"kefuInfo\" :online=\"online\" @setOnline=\"setOnline\" @search=\"bindSearch\"></baseHeader>\r\n <div class=\"container\">\r\n <chatList\r\n @setDataId=\"setDataId\"\r\n @changeType=\"changeType\"\r\n :userOnline=\"userOnline\"\r\n :newRecored=\"newRecored\"\r\n :searchData=\"searchData\"\r\n ></chatList>\r\n <div class=\"chat-content\">\r\n <div class=\"chat-body\">\r\n <happy-scroll size=\"5\" resize hide-horizontal :scroll-top=\"scrollTop\" @vertical-start=\"scrollHandler\">\r\n <div style=\"width: 600px; padding: 20px\" id=\"chat_scroll\" ref=\"scrollBox\" v-loading=\"isLoad\">\r\n <div\r\n class=\"chat-item\"\r\n v-for=\"(item, index) in records\"\r\n :key=\"index\"\r\n :class=\"[{ 'right-box': item.uid == kefuInfo.uid }, { gary: item.msn_type == 5 }]\"\r\n :id=\"`chat_${item.id}`\"\r\n >\r\n <div class=\"time\" v-show=\"item.show\">{{ item.time }}</div>\r\n <div class=\"flex-box\">\r\n <div class=\"avatar\">\r\n <img v-lazy=\"item.avatar\" alt=\"\" />\r\n </div>\r\n <div class=\"msg-wrapper\">\r\n <!-- 文档 -->\r\n <template v-if=\"item.msn_type <= 2\">\r\n <div class=\"txt-wrapper pad16\" v-html=\"item.msn\"></div>\r\n </template>\r\n <!-- 图片 -->\r\n <template v-if=\"item.msn_type == 3\">\r\n <div class=\"img-wraper\" v-viewer>\r\n <img v-lazy=\"item.msn\" alt=\"\" />\r\n </div>\r\n </template>\r\n <!-- 商品 -->\r\n <template v-if=\"item.msn_type == 5\">\r\n <div class=\"order-wrapper pad16\">\r\n <div class=\"img-box\">\r\n <img :src=\"item.productInfo.image\" alt=\"\" />\r\n </div>\r\n <div class=\"order-info\">\r\n <div class=\"name line1\">\r\n {{ item.productInfo.store_name }}\r\n </div>\r\n <div class=\"sku\">库存:{{ item.productInfo.stock }} 销量:{{ item.productInfo.sales }}</div>\r\n <div class=\"price-box\">\r\n <div class=\"num\">¥ {{ item.productInfo.price }}</div>\r\n <a herf=\"javascript:;\" class=\"more\" v-db-click @click.stop=\"lookGoods(item)\"\r\n >查看商品 ></a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n <!-- 订单 -->\r\n <template\r\n v-if=\"item.msn_type == 6 && item.orderInfo && (item.orderInfo.length > 0 || item.orderInfo.id)\"\r\n >\r\n <div class=\"order-wrapper pad16\">\r\n <div class=\"img-box\">\r\n <img :src=\"item.orderInfo.cartInfo[0].productInfo.image\" alt=\"\" />\r\n </div>\r\n <div class=\"order-info\">\r\n <div class=\"name line1\">\r\n {{ item.orderInfo.order_id }}\r\n </div>\r\n <div class=\"sku\">商品数量:{{ item.orderInfo.total_num }}</div>\r\n <div class=\"price-box\">\r\n <div class=\"num\">¥ {{ item.orderInfo.pay_price }}</div>\r\n <a href=\"javascript:;\" class=\"more\" v-db-click @click.stop=\"lookOrder(item)\"\r\n >查看订单 ></a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-if=\"item.msn_type == 6 && !item.orderInfo\">\r\n <div class=\"txt-wrapper pad16\" v-html=\"item.msn\"></div>\r\n </template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </happy-scroll>\r\n </div>\r\n <div class=\"chat-textarea\">\r\n <div class=\"chat-btn-wrapper\">\r\n <div class=\"left-wrappers\">\r\n <div class=\"icon-item\" v-db-click @click.stop=\"isEmoji = !isEmoji\">\r\n <span class=\"iconfont iconbiaoqing1\"></span>\r\n </div>\r\n <div class=\"icon-item\">\r\n <el-upload\r\n :show-file-list=\"false\"\r\n :headers=\"header\"\r\n :data=\"uploadData\"\r\n :on-success=\"handleSuccess\"\r\n accept=\"image/*\"\r\n :on-format-error=\"handleFormatError\"\r\n :action=\"upload\"\r\n :before-upload=\"beforeUpload\"\r\n >\r\n <span class=\"iconfont icontupian1\"></span>\r\n </el-upload>\r\n </div>\r\n <div class=\"icon-item\" v-db-click @click.stop.stop=\"isMsg = true\">\r\n <span class=\"iconfont iconliaotian\"></span>\r\n </div>\r\n </div>\r\n <div class=\"right-wrapper\">\r\n <div class=\"icon-item\" v-db-click @click.stop=\"isTransfer = !isTransfer\">\r\n <span class=\"iconfont iconzhuanjie\"></span>\r\n <span>转接</span>\r\n </div>\r\n <div class=\"transfer-box\" v-if=\"isTransfer\">\r\n <transfer @close=\"msgClose\" @transferPeople=\"transferPeople\" :userUid=\"userActive.to_uid\"></transfer>\r\n </div>\r\n <div class=\"transfer-bg\" v-if=\"isTransfer\" v-db-click @click.stop=\"isTransfer = false\"></div>\r\n </div>\r\n <!-- 表情 -->\r\n <div class=\"emoji-box\" v-show=\"isEmoji\">\r\n <div class=\"emoji-item\" v-for=\"(emoji, index) in emojiList\" :key=\"index\">\r\n <i class=\"em\" :class=\"emoji\" v-db-click @click.stop=\"select(emoji)\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"textarea-box\" style=\"position: relative\">\r\n <el-input\r\n ref=\"chatInput\"\r\n v-paste=\"handleParse\"\r\n v-model=\"chatCon\"\r\n type=\"textarea\"\r\n :rows=\"7\"\r\n @keydown.enter.native=\"listen($event)\"\r\n placeholder=\"请输入文字内容\"\r\n style=\"font-size: 14px; height: 150px\"\r\n />\r\n <div class=\"send-btn\">\r\n <el-button class=\"btns\" type=\"primary\" :disabled=\"disabled\" v-db-click @click.stop=\"sendText\"\r\n >发送</el-button\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <rightMenu\r\n :isTourist=\"tourist\"\r\n :uid=\"userActive.to_uid\"\r\n :webType=\"userActive.type\"\r\n @bindPush=\"bindPush\"\r\n ></rightMenu>\r\n </div>\r\n </div>\r\n <!-- 用户标签 -->\r\n <el-dialog :visible.sync=\"isMsg\" title=\"客服话术\" class=\"none-radius isMsgbox\" width=\"720px\">\r\n <msgWindow v-if=\"isMsg\" @close=\"msgClose\" @activeTxt=\"activeTxt\"></msgWindow>\r\n </el-dialog>\r\n <!-- 商品弹窗 -->\r\n <div v-if=\"isProductBox\">\r\n <div class=\"bg\" v-db-click @click.stop=\"isProductBox = false\"></div>\r\n <goodsDetail :goodsId=\"goodsId\"></goodsDetail>\r\n </div>\r\n <!-- 订单详情 -->\r\n <div v-if=\"isOrder\">\r\n <el-dialog :visible.sync=\"isOrder\" title=\"订单信息\" width=\"720px\" class=\"none-radius\">\r\n <orderDetail :orderId=\"orderId\"></orderDetail>\r\n </el-dialog>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nvar mp3 = require('../../../assets/video/notice.wav');\r\nvar mp3 = new Audio(mp3);\r\nimport Setting from '@/setting';\r\nimport { HappyScroll } from 'vue-happy-scroll';\r\nimport baseHeader from './components/baseHeader';\r\nimport chatList from './components/chatList';\r\nimport rightMenu from './components/rightMenu';\r\nimport emojiList from '@/utils/emoji';\r\nimport { Socket } from '@/libs/socket';\r\nimport util from '@/libs/util';\r\nimport msgWindow from './components/msgWindow';\r\nimport transfer from './components/transfer';\r\nimport { serviceList, uploadImg } from '@/api/kefu';\r\nimport goodsDetail from './components/goods_detail';\r\nimport orderDetail from './components/order_detail';\r\nimport { mapState } from 'vuex';\r\nimport { getCookies, removeCookies, setCookies } from '@/libs/util';\r\nimport { serviceInfo } from '@/api/kefu_mobile';\r\nimport { isPicUpload } from '@/utils';\r\n\r\nconst chunk = function (arr, num) {\r\n num = num * 1 || 1;\r\n var ret = [];\r\n arr.forEach(function (item, i) {\r\n if (i % num === 0) {\r\n ret.push([]);\r\n }\r\n ret[ret.length - 1].push(item);\r\n });\r\n return ret;\r\n};\r\nexport default {\r\n name: 'index',\r\n components: {\r\n baseHeader,\r\n chatList,\r\n rightMenu,\r\n msgWindow,\r\n transfer,\r\n HappyScroll,\r\n goodsDetail,\r\n orderDetail,\r\n },\r\n data() {\r\n return {\r\n isEmoji: false,\r\n chatCon: '',\r\n emojiGroup: chunk(emojiList, 20), // 表情列表\r\n emojiList: emojiList,\r\n html: '',\r\n userActive: {}, //左侧用户列表选中信息\r\n kefuInfo: {}, //客服信息\r\n isMsg: false,\r\n isTransfer: false,\r\n activeMsg: '', // 选中的话术\r\n chatList: [],\r\n text: '',\r\n limit: 20,\r\n upperId: 0,\r\n online: true, //当前客服在线状态\r\n scrollTop: 0,\r\n isScroll: true,\r\n oldHeight: 0,\r\n isLoad: false,\r\n isProductBox: false,\r\n goodsId: '',\r\n isOrder: false,\r\n orderId: '',\r\n upload: '',\r\n header: {},\r\n uploadData: {\r\n filename: 'file',\r\n },\r\n userOnline: {},\r\n newRecored: {}, //新对话信息\r\n searchData: '', // 搜索文字\r\n scrollNum: 0, //滚动次数\r\n transferId: '', //转接id\r\n bodyClose: false,\r\n tourist: 0,\r\n };\r\n },\r\n computed: {\r\n ...mapState({\r\n socketStatus: (state) => state.admin.kefu.socketStatus,\r\n }),\r\n disabled() {\r\n if (this.chatCon.length == 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n records() {\r\n return this.chatList.map((item, index) => {\r\n item.time = this.$moment(item.add_time * 1000).format('MMMDo H:mm');\r\n if (index) {\r\n if (item.add_time - this.chatList[index - 1].add_time >= 300) {\r\n item.show = true;\r\n } else {\r\n item.show = false;\r\n }\r\n } else {\r\n item.show = true;\r\n }\r\n return item;\r\n });\r\n },\r\n },\r\n // 指令粘贴指令定义\r\n directives: {\r\n paste: {\r\n bind(el, binding, vnode) {\r\n el.addEventListener('paste', function (event) {\r\n //这里直接监听元素的粘贴事件\r\n binding.value(event);\r\n });\r\n },\r\n },\r\n },\r\n watch: {\r\n // socketStatus:{\r\n // handler(nVal,Val){\r\n // if(nVal){\r\n // Socket.send({\r\n // data: util.cookies.kefuGet('token'),\r\n // type: \"kefu_login\"\r\n // });\r\n // }\r\n // },\r\n // deep:true\r\n // }\r\n },\r\n created() {\r\n this.upload = Setting.apiBaseURL.replace('adminapi', 'kefuapi') + '/upload';\r\n serviceInfo().then((res) => {\r\n this.kefuInfo = res.data;\r\n if (this.kefuInfo.site_name) {\r\n document.title = this.kefuInfo.site_name;\r\n } else {\r\n this.kefuInfo.site_name = '';\r\n }\r\n });\r\n },\r\n mounted() {\r\n let self = this;\r\n window.addEventListener('click', function () {\r\n self.isEmoji = false;\r\n });\r\n setTimeout((e) => {\r\n Socket.then((ws) => {\r\n ws.send({\r\n type: 'kefu_login',\r\n data: getCookies('kefu_token'),\r\n });\r\n ws.$on(['reply', 'chat'], (data) => {\r\n if (data.msn_type == 1) {\r\n data.msn = this.replace_em(data.msn);\r\n }\r\n if (data.msn_type == 2) {\r\n if (data.msn.indexOf('[') == -1) {\r\n data.msn = this.replace_em(`[${data.msn}]`);\r\n }\r\n }\r\n this.chatList.push(data);\r\n this.$nextTick(function () {\r\n setTimeout(() => {\r\n var container = document.querySelector('#chat_scroll');\r\n this.scrollTop = container.offsetHeight;\r\n }, 800);\r\n });\r\n });\r\n ws.$on('reply', (data) => {\r\n // mp3.play();\r\n });\r\n ws.$on('socket_error', () => {\r\n this.$message.error('连接失败');\r\n });\r\n ws.$on('err_tip', (data) => {\r\n this.$message.error(data.msg);\r\n });\r\n //用户上线提醒广播\r\n ws.$on('user_online', (data) => {\r\n this.userOnline = data;\r\n });\r\n //用户未读消息条数更改\r\n ws.$on('mssage_num', (data) => {\r\n if (data.num > 0) {\r\n mp3.play();\r\n }\r\n this.chatList.forEach((item) => {\r\n if (item.to_uid == data.uid) {\r\n item.mssage_num = data.num;\r\n }\r\n });\r\n if (data.recored.id) {\r\n this.newRecored = data.recored;\r\n }\r\n });\r\n });\r\n }, 2000);\r\n this.header['Authori-zation'] = 'Bearer ' + getCookies('kefu_token');\r\n this.text = this.replace_em('[em-smiling_imp]');\r\n // Socket.init(this,'kefu');\r\n },\r\n methods: {\r\n beforeUpload(file) {\r\n return isPicUpload(file);\r\n },\r\n handleFormatError(file) {\r\n this.$message.error('上传图片只能是 jpg、jpg、jpeg、gif 格式!');\r\n },\r\n bindEnter(e) {},\r\n //微信截图上传图片时触发\r\n handleParse(e) {\r\n let file = null;\r\n if (\r\n e.clipboardData &&\r\n e.clipboardData.items[0] &&\r\n e.clipboardData.items[0].type &&\r\n e.clipboardData.items[0].type.indexOf('image') > -1\r\n ) {\r\n //这里就是判断是否有粘贴进来的文件且文件为图片格式\r\n file = e.clipboardData.items[0].getAsFile();\r\n } else {\r\n this.$message({\r\n type: 'warning',\r\n message: '上传的文件必须为图片且无法复制本地图片且无法同时复制多张图片',\r\n });\r\n return;\r\n }\r\n this.update(file);\r\n },\r\n update(e) {\r\n // 上传照片\r\n let file = e;\r\n let param = new FormData(); // 创建form对象\r\n param.append('filename', 'file'); // 通过append向form对象添加数据进去\r\n param.append('file', file); // 通过append向form对象添加数据进去\r\n // 添加请求头\r\n uploadImg(param).then((res) => {\r\n this.sendMsg(res.data.url, 3);\r\n });\r\n },\r\n // 上传成功\r\n handleSuccess(res, file, fileList) {\r\n if (res.status === 200) {\r\n this.$message.success(res.msg);\r\n this.sendMsg(res.data.url, 3);\r\n } else {\r\n this.$message.error(res.msg);\r\n }\r\n },\r\n //订单详情\r\n lookOrder(item) {\r\n this.orderId = item.orderInfo.id;\r\n this.isOrder = true;\r\n },\r\n setOnline(data) {\r\n Socket.then((ws) => {\r\n ws.send({\r\n data: {\r\n online: data,\r\n },\r\n type: 'online',\r\n });\r\n });\r\n this.online = data;\r\n },\r\n // 阻止浏览器默认换行操作\r\n listen(event) {\r\n if (!event.shiftKey && event.keyCode == 13) {\r\n if (event.target.value == '') {\r\n return this.$message.error('请输入消息');\r\n }\r\n console.log(event.target.value);\r\n this.sendMsg(event.target.value, 1);\r\n this.chatCon = '';\r\n this.$nextTick(() => this.$refs.chatInput.focus());\r\n }\r\n },\r\n // 输入框选择表情\r\n select(data) {\r\n let val = `[${data}]`;\r\n this.chatCon += val;\r\n this.isEmoji = false;\r\n },\r\n // 聊天表情转换\r\n replace_em(str) {\r\n str = str.replace(/\\[([^\\[\\]]+)\\]/g, \"<span class='em $1'/></span>\");\r\n return str;\r\n },\r\n // 获取是否游客\r\n changeType(data) {\r\n this.tourist = data;\r\n },\r\n // 获取列表用户信息\r\n setDataId(data) {\r\n this.userActive = data;\r\n this.chatList = [];\r\n this.upperId = 0;\r\n this.oldHeight = 0;\r\n this.isScroll = true;\r\n if (data) {\r\n window.document.title = data.nickname\r\n ? `正在和${data.nickname}对话中 - ${this.kefuInfo.site_name}`\r\n : '正在和游客对话中 - ' + this.kefuInfo.site_name;\r\n\r\n Socket.then((ws) => {\r\n ws.send({\r\n data: {\r\n id: this.userActive.to_uid,\r\n },\r\n type: 'to_chat',\r\n });\r\n });\r\n this.getChatList();\r\n } else {\r\n window.document.title = this.kefuInfo.site_name;\r\n }\r\n },\r\n msgClose() {\r\n this.isTransfer = false;\r\n },\r\n // 话术选中\r\n activeTxt(data) {\r\n this.chatCon = data;\r\n this.isMsg = false;\r\n },\r\n // 文本发送\r\n sendText() {\r\n this.sendMsg(this.chatCon, 1);\r\n this.chatCon = '';\r\n this.$nextTick(() => this.$refs.chatInput.focus());\r\n },\r\n\r\n // 统一发送处理\r\n sendMsg(msn, type) {\r\n let obj = {\r\n type: 'chat',\r\n data: {\r\n msn,\r\n type,\r\n to_uid: this.userActive.to_uid,\r\n is_tourist: this.tourist,\r\n },\r\n };\r\n Socket.then((ws) => {\r\n ws.send(obj);\r\n });\r\n },\r\n send(type, data) {\r\n Socket.send({\r\n data,\r\n type,\r\n });\r\n },\r\n // 获取聊天列表\r\n getChatList() {\r\n serviceList({\r\n limit: this.limit,\r\n uid: this.userActive.to_uid,\r\n upperId: this.upperId,\r\n is_tourist: this.tourist,\r\n }).then((res) => {\r\n res.data.forEach((el) => {\r\n if (el.msn_type == 1) {\r\n el.msn = this.replace_em(el.msn);\r\n } else if (el.msn_type == 2) {\r\n el.msn = this.replace_em(`[${el.msn}]`);\r\n }\r\n });\r\n let selector = '';\r\n if (this.upperId == 0) {\r\n selector = '';\r\n } else {\r\n selector = `chat_${this.chatList[0].id}`;\r\n }\r\n\r\n // this.chatList = res.data.concat(this.chatList)\r\n this.chatList = [...res.data, ...this.chatList];\r\n this.upperId = res.data.length > 0 ? res.data[0].id : 0;\r\n this.isLoad = false;\r\n this.$nextTick(() => {\r\n // this.scrollToTop()\r\n this.isScroll = res.data.length >= this.limit;\r\n this.setPageScrollTo(selector);\r\n });\r\n });\r\n },\r\n // 设置页面滚动位置\r\n setPageScrollTo(selector) {\r\n this.$nextTick(() => {\r\n if (selector) {\r\n setTimeout(() => {\r\n let num = parseFloat(document.getElementById(selector).offsetTop) - 60;\r\n this.scrollTop = num;\r\n }, 0);\r\n } else {\r\n var container = document.querySelector('#chat_scroll');\r\n this.scrollTop = container.offsetHeight;\r\n setTimeout((res) => {\r\n if (this.scrollTop != this.$refs.scrollBox.offsetHeight) {\r\n this.scrollTop = document.querySelector('#chat_scroll').offsetHeight;\r\n }\r\n }, 300);\r\n }\r\n });\r\n },\r\n //滚动到顶部\r\n scrollHandler() {\r\n let self = this;\r\n if (this.isScroll && this.upperId) {\r\n this.isLoad = true;\r\n this.getChatList();\r\n }\r\n },\r\n // 滚动条动画\r\n scrollToTop(duration) {\r\n var container = document.querySelector('#chat_scroll');\r\n this.scrollTop = container.offsetHeight - this.oldHeight;\r\n setTimeout((res) => {\r\n this.scrollTop = this.$refs.scrollBox.offsetHeight - this.oldHeight;\r\n }, 300);\r\n },\r\n // 商品推送\r\n bindPush(data) {\r\n this.sendMsg(data, 5);\r\n },\r\n // 商品详情\r\n lookGoods(item) {\r\n this.goodsId = item.msn;\r\n this.isProductBox = true;\r\n },\r\n // 搜索用户\r\n bindSearch(data) {\r\n this.searchData = data;\r\n this.oldHeight = 0;\r\n this.upperId = 0;\r\n this.isScroll = false;\r\n },\r\n // 客服转接\r\n transferPeople(data) {\r\n this.transferId = data.id;\r\n this.isTransfer = false;\r\n this.$message.success('转接成功');\r\n Socket.then((ws) => {\r\n ws.send({\r\n type: 'to_chat',\r\n data: { id: data.uid },\r\n });\r\n });\r\n },\r\n // 客服转接确定\r\n transferOk() {},\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../../styles/emoji-awesome/css/google.min.css';\r\n::v-deeptextarea.ivu-input {\r\n border: none;\r\n resize: none;\r\n}\r\n.kefu-layouts {\r\n padding-top: 30px;\r\n height: 100%;\r\n display: flex;\r\n background: #ccc;\r\n overflow: scroll;\r\n}\r\n.content-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n width: 1200px;\r\n height: 810px;\r\n margin: 0 auto;\r\n background: #fff;\r\n .container {\r\n flex: 1;\r\n display: flex;\r\n .chat-content {\r\n width: 600px;\r\n height: 100%;\r\n border-right: 1px solid #ececec;\r\n .chat-body {\r\n height: 530px;\r\n .chat-item {\r\n margin-bottom: 10px;\r\n .time {\r\n text-align: center;\r\n color: #999999;\r\n font-size: 14px;\r\n margin: 18px 0;\r\n }\r\n .flex-box {\r\n display: flex;\r\n }\r\n .avatar {\r\n width: 40px;\r\n height: 40px;\r\n margin-right: 16px;\r\n\r\n img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n border-radius: 50%;\r\n }\r\n }\r\n .msg-wrapper {\r\n max-width: 320px;\r\n background: #f5f5f5;\r\n border-radius: 10px;\r\n color: #000000;\r\n font-size: 14px;\r\n overflow: hidden;\r\n .txt-wrapper {\r\n word-break: break-all;\r\n white-space: pre-wrap;\r\n }\r\n .pad16 {\r\n padding: 9px;\r\n }\r\n .img-wraper img {\r\n max-width: 100%;\r\n height: auto;\r\n display: block;\r\n }\r\n .order-wrapper {\r\n display: flex;\r\n width: 320px;\r\n .img-box {\r\n width: 60px;\r\n height: 60px;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n border-radius: 5px;\r\n }\r\n }\r\n .order-info {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n width: 224px;\r\n margin-left: 10px;\r\n font-size: 12px;\r\n .price-box {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n font-size: 14px;\r\n color: #ff0000;\r\n .more {\r\n font-size: 12px;\r\n color: var(--prev-color-primary);\r\n }\r\n }\r\n .name {\r\n font-size: 14px;\r\n }\r\n .sku {\r\n margin: 1px 0;\r\n color: #999999;\r\n }\r\n }\r\n }\r\n }\r\n &.right-box {\r\n .flex-box {\r\n flex-direction: row-reverse;\r\n .avatar {\r\n margin-right: 0;\r\n margin-left: 16px;\r\n }\r\n .msg-wrapper {\r\n background: #cde0ff;\r\n }\r\n }\r\n &.gary .msg-wrapper {\r\n background: #f5f5f5;\r\n }\r\n }\r\n }\r\n }\r\n .chat-textarea {\r\n height: 214px;\r\n border-top: 1px solid #ececec;\r\n .chat-btn-wrapper {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 15px 0;\r\n .left-wrappers {\r\n display: flex;\r\n align-items: center;\r\n .icon-item {\r\n display: flex;\r\n align-items: center;\r\n margin-left: 20px;\r\n cursor: pointer;\r\n .iconfont {\r\n font-size: 22px;\r\n color: #333333;\r\n }\r\n }\r\n }\r\n .right-wrapper {\r\n position: relative;\r\n padding-right: 20px;\r\n .icon-item {\r\n display: flex;\r\n align-items: center;\r\n font-size: 15px;\r\n color: #333;\r\n cursor: pointer;\r\n\r\n span {\r\n margin-left: 10px;\r\n }\r\n }\r\n .transfer-box {\r\n z-index: 60;\r\n position: absolute;\r\n right: 1px;\r\n bottom: 43px;\r\n width: 140px;\r\n background: #fff;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n padding: 16px;\r\n }\r\n .transfer-bg {\r\n z-index: 50;\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: transparent;\r\n }\r\n }\r\n .emoji-box {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n transform: translateY(-100%);\r\n display: flex;\r\n flex-wrap: wrap;\r\n width: 60%;\r\n padding: 15px 9px;\r\n box-shadow: 0px 0px 13px 1px rgba(0, 0, 0, 0.1);\r\n background: #fff;\r\n overflow: auto;\r\n height: 240px;\r\n .emoji-item {\r\n margin-right: 13px;\r\n margin-bottom: 8px;\r\n cursor: pointer;\r\n &:nth-child(10n) {\r\n margin-right: 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.send-btn {\r\n position: absolute;\r\n right: 0;\r\n bottom: 10px;\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-top: 10px;\r\n margin-right: 10px;\r\n width: 80px;\r\n .btns {\r\n width: 100%;\r\n background: #3875ea;\r\n &[disabled] {\r\n background: #cccccc;\r\n color: #fff;\r\n }\r\n }\r\n}\r\n.bg {\r\n z-index: 100;\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n}\r\n::v-deep .happy-scroll-content {\r\n width: 100%;\r\n .demo-spin-icon-load {\r\n animation: ani-demo-spin 1s linear infinite;\r\n }\r\n\r\n @-webkit-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @-moz-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @-ms-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @-o-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n .demo-spin-col {\r\n height: 100px;\r\n position: relative;\r\n border: 1px solid #eee;\r\n }\r\n}\r\n.isMsgbox {\r\n ::v-deep .ivu-modal-body {\r\n padding: 0;\r\n }\r\n}\r\n.emoji-box::-webkit-scrollbar {\r\n width: 0;\r\n}\r\n.textarea-box ::v-deep .ivu-input:focus {\r\n box-shadow: none;\r\n}\r\n.textarea-box ::v-deep .el-textarea__inner {\r\n border: none;\r\n resize: none;\r\n}\r\n</style>\r\n"]}]}
|