b93f123320a63cba1c908e4c43c95aea.json 44 KB

1
  1. {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\kefu\\appChat\\index.vue?vue&type=style&index=0&id=065536fa&lang=scss&scoped=true","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\kefu\\appChat\\index.vue","mtime":1761185180094},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\css-loader\\index.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\postcss-loader\\src\\index.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQpAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvZW1vamktYXdlc29tZS9jc3MvZ29vZ2xlLm1pbi5jc3MnOw0KbGkgew0KICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7DQp9DQouY2hhdC1yb29tIHsNCiAgLnJvb20gew0KICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7DQogICAgcG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogY2FsYyg1MCUgLSAzMjdweCk7DQogICAgbGVmdDogY2FsYyg1MCUgLSAzNjVweCk7DQogICAgei1pbmRleDogOTk5Ow0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICB3aWR0aDogNzMwcHg7DQogICAgaGVpZ2h0OiA2NTRweDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgYm94LXNoYWRvdzogMXB4IDFweCAxNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOw0KDQogICAgJi53aW4gew0KICAgICAgdG9wOiAwOw0KICAgICAgbGVmdDogMDsNCiAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgIH0NCg0KICAgIC5oZWFkIHsNCiAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgaGVpZ2h0OiA1MHB4Ow0KICAgICAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgICAgIHBhZGRpbmctbGVmdDogMjBweDsNCiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgyNzBkZWcsIHZhcigtLXByZXYtY29sb3ItcHJpbWFyeSkgMCUsICMzODc1ZWEgMTAwJSk7DQoNCiAgICAgIC5pbWFnZSB7DQogICAgICAgIHdpZHRoOiAzNnB4Ow0KICAgICAgICBoZWlnaHQ6IDM2cHg7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCg0KICAgICAgICBpbWcgew0KICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICAgIGhlaWdodDogMTAwJTsNCiAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsNCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAubmFtZSB7DQogICAgICAgIGZsZXg6IDE7DQogICAgICAgIG1pbi13aWR0aDogMDsNCiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7DQogICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICAgICAgY29sb3I6ICNmZmZmZmY7DQogICAgICB9DQoNCiAgICAgIC5pY29uZm9udCB7DQogICAgICAgIHdpZHRoOiAyNXB4Ow0KICAgICAgICBoZWlnaHQ6IDI1cHg7DQogICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICAgICAgbGluZS1oZWlnaHQ6IDI1cHg7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgY29sb3I6ICNmZmZmZmY7DQogICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAubWFpbiB7DQogICAgICBmbGV4OiAxOw0KICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgIG1pbi1oZWlnaHQ6IDA7DQoNCiAgICAgIC5jaGF0IHsNCiAgICAgICAgZmxleDogMTsNCiAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICAgICAgbWluLXdpZHRoOiAwOw0KICAgICAgfQ0KDQogICAgICAucmVjb3JkIHsNCiAgICAgICAgZmxleDogMTsNCiAgICAgICAgbWluLWhlaWdodDogMDsNCiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOw0KICAgICAgICBvdmVyZmxvdy15OiBhdXRvOw0KDQogICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHsNCiAgICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICB9DQoNCiAgICAgICAgdWwgew0KICAgICAgICAgIHBhZGRpbmc6IDIwcHg7DQogICAgICAgIH0NCg0KICAgICAgICBsaSB7DQogICAgICAgICAgfiBsaSB7DQogICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4Ow0KICAgICAgICAgIH0NCg0KICAgICAgICAgICY6OmFmdGVyIHsNCiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOw0KICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7DQogICAgICAgICAgICBoZWlnaHQ6IDA7DQogICAgICAgICAgICBjbGVhcjogYm90aDsNCiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAmLnJpZ2h0IHsNCiAgICAgICAgICAgIC5hdmF0YXIgew0KICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC5jb250ZW50IHsNCiAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7DQoNCiAgICAgICAgICAgICAgPiBkaXYgew0KICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAudGltZS10YWcgew0KICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4Ow0KICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMHB4Ow0KICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICBjb2xvcjogIzk5OTk5OTsNCiAgICAgICAgfQ0KDQogICAgICAgIC5hdmF0YXIgew0KICAgICAgICAgIGZsb2F0OiBsZWZ0Ow0KICAgICAgICAgIHdpZHRoOiA0MHB4Ow0KICAgICAgICAgIGhlaWdodDogNDBweDsNCiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7DQogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCg0KICAgICAgICAgICYucmlnaHQgew0KICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0Ow0KICAgICAgICAgIH0NCg0KICAgICAgICAgIGltZyB7DQogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLmNvbnRlbnQgew0KICAgICAgICAgIG1hcmdpbi1yaWdodDogNTZweDsNCiAgICAgICAgICBtYXJnaW4tbGVmdDogNTZweDsNCiAgICAgICAgfQ0KDQogICAgICAgIC50ZXh0IHsNCiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICAgICAgbWluLWhlaWdodDogNDFweDsNCiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7DQogICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsNCiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Ow0KICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDsNCiAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDsNCiAgICAgICAgICBjb2xvcjogIzAwMDAwMDsNCiAgICAgICAgfQ0KDQogICAgICAgIC5pbWFnZSB7DQogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgICAgICAgIG1heC13aWR0aDogNTAlOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7DQogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCg0KICAgICAgICAgIGltZyB7DQogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAuZ29vZHMsDQogICAgICAgIC5vcmRlciB7DQogICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7DQogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAgICAgICB3aWR0aDogMzIwcHg7DQogICAgICAgICAgcGFkZGluZzogMTBweCAxM3B4Ow0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7DQogICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsNCiAgICAgICAgfQ0KDQogICAgICAgIC50aHVtYiB7DQogICAgICAgICAgd2lkdGg6IDYwcHg7DQogICAgICAgICAgaGVpZ2h0OiA2MHB4Ow0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOw0KDQogICAgICAgICAgaW1nIHsNCiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgICAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLmludHJvIHsNCiAgICAgICAgICBmbGV4OiAxOw0KICAgICAgICAgIG1pbi13aWR0aDogMDsNCiAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsNCg0KICAgICAgICAgIC5uYW1lIHsNCiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOw0KICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7DQogICAgICAgICAgICBmb250LXNpemU6IDE1cHg7DQogICAgICAgICAgICBjb2xvcjogIzAwMDAwMDsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAuYXR0ciB7DQogICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7DQogICAgICAgICAgICBmb250LXNpemU6IDEycHg7DQogICAgICAgICAgICBjb2xvcjogIzk5OTk5OTsNCg0KICAgICAgICAgICAgc3BhbiB7DQogICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQoNCiAgICAgICAgICAgICAgfiBzcGFuIHsNCiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCg0KICAgICAgICAgIC5ncm91cCB7DQogICAgICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDsNCg0KICAgICAgICAgICAgLm1vbmV5IHsNCiAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4Ow0KICAgICAgICAgICAgICBjb2xvcjogI2ZmMDAwMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgYSB7DQogICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXByZXYtY29sb3ItcHJpbWFyeSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIC5lZGl0b3Igew0KICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgICAgICBoZWlnaHQ6IDE2MnB4Ow0KICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VjZWNlYzsNCg0KICAgICAgICA+IGRpdiB7DQogICAgICAgICAgJjpmaXJzdC1jaGlsZCB7DQogICAgICAgICAgICBmb250LXNpemU6IDA7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgYnV0dG9uIHsNCiAgICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgICAgYmFja2dyb3VuZDogbm9uZTsNCiAgICAgICAgICBvdXRsaW5lOiBub25lOw0KDQogICAgICAgICAgfiBidXR0b24gew0KICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgJi5lbmQgew0KICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4Ow0KICAgICAgICAgIH0NCg0KICAgICAgICAgICY6aG92ZXIgew0KICAgICAgICAgICAgY29sb3I6IHZhcigtLXByZXYtY29sb3ItcHJpbWFyeSk7DQoNCiAgICAgICAgICAgIC5pY29uZm9udCB7DQogICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wcmV2LWNvbG9yLXByaW1hcnkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC5lZGl0b3ItaGQgew0KICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgICAgIGhlaWdodDogNTBweDsNCiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4Ow0KICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsNCg0KICAgICAgICAgIC5pY29uZm9udCB7DQogICAgICAgICAgICBsaW5lLWhlaWdodDogMTsNCiAgICAgICAgICAgIGNvbG9yOiAjMzMzMzMzOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIC5lbW9qaS1wYW5lbCB7DQogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICBib3R0b206IDEwMCU7DQogICAgICAgICAgICBsZWZ0OiA1cHg7DQogICAgICAgICAgICB3aWR0aDogMzkwcHg7DQogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsNCiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlY2VjZWM7DQogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7DQogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICAgICAgICAgICAgYm94LXNoYWRvdzogMXB4IDAgMTZweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7DQoNCiAgICAgICAgICAgIC5lbSB7DQogICAgICAgICAgICAgIHdpZHRoOiAyOHB4Ow0KICAgICAgICAgICAgICBoZWlnaHQ6IDI4cHg7DQogICAgICAgICAgICAgIHBhZGRpbmc6IDRweDsNCiAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDsNCiAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQogICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQoNCiAgICAgICAgICAgICAgJjpob3ZlciB7DQogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNlYzsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC5pY29uLWJpYW9xaW5nMSwNCiAgICAgICAgLmljb24tdHVwaWFuMSB7DQogICAgICAgICAgZm9udC1zaXplOiAyMnB4Ow0KICAgICAgICB9DQoNCiAgICAgICAgLmljb24tZ3VhbmppIHsNCiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsNCiAgICAgICAgICBmb250LXNpemU6IDE1cHg7DQogICAgICAgIH0NCg0KICAgICAgICAuZWRpdG9yLWJkIHsNCiAgICAgICAgICBmbGV4OiAxOw0KICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7DQoNCiAgICAgICAgICB0ZXh0YXJlYSB7DQogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDsNCiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsNCiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsNCiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgICAgICByZXNpemU6IG5vbmU7DQogICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7DQogICAgICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOw0KDQogICAgICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7DQogICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLmVkaXRvci1mdCB7DQogICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOw0KICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDsNCiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsNCg0KICAgICAgICAgIGJ1dHRvbiB7DQogICAgICAgICAgICB3aWR0aDogNjhweDsNCiAgICAgICAgICAgIGhlaWdodDogMjZweDsNCiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzODc1ZWE7DQogICAgICAgICAgICBvdXRsaW5lOiBub25lOw0KICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4Ow0KICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7DQoNCiAgICAgICAgICAgICY6ZGlzYWJsZWQgew0KICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjY2NjOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAubm90aWNlIHsNCiAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICAgICAgd2lkdGg6IDI2MHB4Ow0KICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlY2VjZWM7DQoNCiAgICAgICAgLnJpY2ggew0KICAgICAgICAgIGZsZXg6IDE7DQogICAgICAgICAgbWluLWhlaWdodDogMDsNCiAgICAgICAgICBwYWRkaW5nOiAxOHB4IDE4cHggMDsNCiAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47DQogICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsNCg0KICAgICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHsNCiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgOjp2LWRlZXBpbWcgew0KICAgICAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgOjp2LWRlZXB2aWRlbyB7DQogICAgICAgICAgICB3aWR0aDogMTAwJTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAuY29weSB7DQogICAgICAgICAgcGFkZGluZy10b3A6IDE1cHg7DQogICAgICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7DQogICAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICBjb2xvcjogI2NjY2NjYyAhaW1wb3J0YW50Ow0KICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfQ0KfQ0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AA4kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/pages/kefu/appChat","sourcesContent":["<template>\r\n <div class=\"chat-room\">\r\n <div class=\"room\" :class=\"{ win: !chatOptions.popup }\" v-db-click @click=\"roomClick\">\r\n <div v-drag class=\"head\">\r\n <div class=\"image\">\r\n <img v-lazy=\"serviceData && serviceData.avatar\" />\r\n </div>\r\n <div class=\"name\">{{ serviceData && serviceData.nickname }}</div>\r\n <div\r\n :class=\"['iconfont', muted ? 'icon-shengyinjingyinxianxing' : 'icon-shengyinyinliang']\"\r\n v-db-click\r\n @click.stop=\"muted = !muted\"\r\n ></div>\r\n <div class=\"iconfont icon-guanbi5\" v-db-click @click.stop=\"close\"></div>\r\n </div>\r\n <div class=\"main\">\r\n <div class=\"chat\">\r\n <div class=\"record\" @scroll=\"onScroll\" ref=\"record\">\r\n <div id=\"chat_scroll\" ref=\"scrollBox\" v-loading=\"loading\">\r\n <ul>\r\n <template v-for=\"item in records\">\r\n <li :key=\"item.id\" :class=\"{ right: item.uid === serviceData.tourist_uid }\" :id=\"`chat_${item.id}`\">\r\n <div v-if=\"item.show\" class=\"time-tag\">\r\n {{ item.add_time }}\r\n </div>\r\n <div class=\"avatar\">\r\n <img v-lazy=\"item.avatar\" />\r\n </div>\r\n <div class=\"content\" ref=\"chatContent\">\r\n <div v-if=\"item.msn_type === 1\" class=\"text\" v-html=\"item.msn\"></div>\r\n <div v-if=\"item.msn_type === 2\" class=\"image\">\r\n <div class=\"text\">\r\n <i :class=\"`em ${item.msn}`\"></i>\r\n </div>\r\n </div>\r\n <div v-if=\"item.msn_type === 3\" class=\"image\" v-viewer>\r\n <img v-lazy=\"item.msn\" />\r\n </div>\r\n <div v-if=\"item.msn_type === 5\" class=\"goods\">\r\n <div class=\"thumb\">\r\n <img v-lazy=\"item.productInfo.image\" />\r\n </div>\r\n <div class=\"intro\">\r\n <div class=\"name\">\r\n {{ item.productInfo.store_name }}\r\n </div>\r\n <div class=\"attr\">\r\n <span>库存:{{ item.productInfo.stock }}</span>\r\n <span\r\n >销量:{{\r\n parseInt(item.productInfo.sales) +\r\n parseInt(item.productInfo.ficti ? item.productInfo.ficti : 0)\r\n }}</span\r\n >\r\n </div>\r\n <div class=\"group\">\r\n <div class=\"money\">¥{{ item.productInfo.price }}</div>\r\n <span style=\"cursor: pointer\" v-db-click @click.stop=\"onLook(item.productInfo.id)\"\r\n >查看商品 ></span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <template v-if=\"item.msn_type === 6\">\r\n <div v-for=\"itm in item.orderInfo.cartInfo\" :key=\"itm.id\" class=\"order\">\r\n <div class=\"thumb\">\r\n <img :src=\"itm.productInfo.image\" />\r\n </div>\r\n <div class=\"intro\">\r\n <div class=\"name\">订单ID:{{ item.orderInfo.order_id }}</div>\r\n <div class=\"attr\">商品数量:{{ itm.cart_num }}</div>\r\n <div class=\"group\">\r\n <div class=\"money\">¥{{ itm.productInfo.price }}</div>\r\n <nuxt-link\r\n target=\"_blank\"\r\n :to=\"{\r\n path: '/order_detail',\r\n query: { orderId: item.orderInfo.order_id },\r\n }\"\r\n >查看订单 ></nuxt-link\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n </div>\r\n </li>\r\n </template>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"editor\">\r\n <div class=\"editor-hd\">\r\n <div>\r\n <button class=\"emoji-btn\" title=\"表情\" v-db-click @click.stop=\"emojiSwitch\">\r\n <span class=\"iconfont iconbiaoqing1\"></span>\r\n </button>\r\n <button title=\"图片\" v-if=\"kufuToken\">\r\n <el-upload\r\n :show-file-list=\"false\"\r\n :action=\"uploadAction\"\r\n :before-upload=\"beforeUpload\"\r\n accept=\"image/*\"\r\n :on-format-error=\"handleFormatError\"\r\n :data=\"uploadData\"\r\n :on-success=\"uploadSuccess\"\r\n :on-error=\"uploadError\"\r\n >\r\n <span class=\"iconfont icontupian1\"></span>\r\n </el-upload>\r\n </button>\r\n </div>\r\n <!-- <div>-->\r\n <!-- <button class=\"end\" v-db-click @click=\"chatEnd\">-->\r\n <!-- <i class=\"iconfont icon-guanji\"></i>结束-->\r\n <!-- </button>-->\r\n <!-- </div>-->\r\n <!-- 表情 -->\r\n <div class=\"emoji-panel\" v-if=\"emojiShow\">\r\n <i\r\n class=\"em\"\r\n :class=\"emoji\"\r\n v-db-click\r\n @click.stop=\"selectEmoji(emoji)\"\r\n v-for=\"(emoji, index) in emojiList\"\r\n :key=\"index\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"editor-bd\">\r\n <textarea v-model=\"chatCont\" placeholder=\"请输入文字内容\" @keydown.enter=\"ctrlEnter\"></textarea>\r\n </div>\r\n <div class=\"editor-ft\">\r\n <button :disabled=\"!chatCont\" v-db-click @click.stop=\"sendMessage\">发送</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"notice\">\r\n <div v-if=\"notice\" class=\"rich\" v-html=\"notice\"></div>\r\n <div class=\"copy\">\r\n <span v-if=\"copyright\">{{ copyright }}</span>\r\n <a v-else href=\"http://www.crmeb.com/\" target=\"_blank\">CRMEB提供技术支持</a>\r\n </div>\r\n </div>\r\n </div>\r\n <audio ref=\"audio\" :src=\"audioSrc\"></audio>\r\n </div>\r\n <feed-back @closeChange=\"closeChange($event)\" v-if=\"change\" :change=\"change\"></feed-back>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport 'emoji-awesome/dist/css/google.min.css';\r\nimport emojiList from '@/utils/emoji';\r\nimport { Socket } from '@/libs/socket';\r\nimport Setting from '@/setting';\r\nimport Cookies from 'js-cookie';\r\nimport { chatListApi, serviceListApi, getAdvApi, serviceList, getOrderApi, productApi } from '@/api/kefu';\r\nimport feedBack from './feedback';\r\nimport { isPicUpload } from '@/utils';\r\nimport { Session } from '@/utils/storage.js';\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: 'ChatRoom',\r\n auth: false,\r\n components: {\r\n feedBack,\r\n },\r\n props: {\r\n chatOptions: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n show: false,\r\n };\r\n },\r\n },\r\n },\r\n directives: {\r\n drag: {\r\n inserted: function (el) {\r\n let x = 0;\r\n let y = 0;\r\n let l = 0;\r\n let t = 0;\r\n let isDown = false;\r\n el.onmousedown = function (e) {\r\n x = e.clientX;\r\n y = e.clientY;\r\n l = el.parentNode.offsetLeft;\r\n t = el.parentNode.offsetTop;\r\n isDown = true;\r\n el.style.cursor = 'move';\r\n window.onmousemove = function (e) {\r\n if (isDown == false) {\r\n return;\r\n }\r\n let nx = e.clientX;\r\n let ny = e.clientY;\r\n let nl = nx - (x - l);\r\n let nt = ny - (y - t);\r\n el.parentNode.style.left = nl + 'px';\r\n el.parentNode.style.top = nt + 'px';\r\n };\r\n window.onmouseup = function () {\r\n isDown = false;\r\n el.style.cursor = 'default';\r\n window.onmousemove = null;\r\n window.onmouseup = null;\r\n };\r\n return false;\r\n };\r\n },\r\n },\r\n },\r\n data() {\r\n return {\r\n locations: `${location.origin}`,\r\n change: false,\r\n emojiGroup: chunk(emojiList, 20), // 表情列表\r\n emojiList: emojiList,\r\n emojiShow: false,\r\n recordList: [],\r\n limit: 20,\r\n loading: false,\r\n finished: false,\r\n chatCont: '',\r\n service: null,\r\n serviceData: {},\r\n uploadAction: '',\r\n notice: '',\r\n audio: null,\r\n muted: false,\r\n audioSrc: '',\r\n upperId: 0,\r\n uploadData: {},\r\n is_tourist: 1, // 0登录状态,1未登录状态游客\r\n text: '',\r\n isLoad: false,\r\n page: 1,\r\n tourist_avatar: '', //游客头像\r\n tourist_uid: '', //游客id\r\n toUid: '', //客服id\r\n kufuToken: '', // token\r\n copyright: Session.get('copyright') || '',\r\n };\r\n },\r\n watch: {\r\n muted(value) {\r\n this.audio.muted = value;\r\n },\r\n },\r\n computed: {\r\n records() {\r\n return this.recordList.map((item, index) => {\r\n if (index) {\r\n if (new Date(item.add_time) - new Date(this.recordList[index - 1].add_time) >= 300000) {\r\n item.show = true;\r\n } else {\r\n item.show = false;\r\n }\r\n } else {\r\n item.show = false;\r\n }\r\n return item;\r\n });\r\n },\r\n },\r\n created() {\r\n if (location.href.indexOf('kefu') != -1)\r\n this.uploadAction = Setting.apiBaseURL.replace(/adminapi/, 'kefuapi') + '/tourist/upload';\r\n let token = Cookies.get('auth._token.local1');\r\n this.kufuToken = token ? token.split('Bearer ')[1] : '';\r\n },\r\n mounted() {\r\n let that = this;\r\n window.addEventListener('click', function () {\r\n that.emojiShow = false;\r\n });\r\n if (this.$wechat._isMobile()) this.$router.replace('/kefu/mobile_user_chat');\r\n this.getNotice();\r\n Socket.then((ws) => {\r\n if (this.kufuToken) {\r\n ws.send({\r\n type: 'login',\r\n data: this.kufuToken,\r\n });\r\n }\r\n this.getService();\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 this.recordList.push(data);\r\n setTimeout((res) => {\r\n this.$nextTick(function () {\r\n this.$refs.record.scrollTop = this.$refs.record.scrollHeight - this.$refs.record.clientHeight;\r\n });\r\n }, 300);\r\n });\r\n // 监听客服转接\r\n ws.$on('to_transfer', (data) => {\r\n this.toUid = data.toUid;\r\n ws.send({\r\n data: {\r\n id: this.toUid,\r\n },\r\n type: 'to_chat',\r\n });\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 ws.$on('success', (data) => {\r\n this.is_tourist = 0;\r\n });\r\n });\r\n this.text = this.replace_em('[em-smiling_imp]');\r\n },\r\n beforeDestroy() {\r\n this.socket.close();\r\n },\r\n methods: {\r\n onLook(id) {\r\n window.open(`${location.origin}/home/goods_detail/${id}`);\r\n },\r\n // 关闭\r\n closeChange(msg) {\r\n this.change = msg;\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 is_tourist: this.is_tourist,\r\n to_uid: this.toUid,\r\n tourist_uid: this.tourist_uid,\r\n tourist_avatar: this.tourist_avatar,\r\n form_type: this.$wechat.isWeixin() ? 1 : 3,\r\n },\r\n };\r\n Socket.then((ws) => {\r\n ws.send(obj);\r\n });\r\n },\r\n // 随机客服\r\n getService() {\r\n serviceListApi({ token: this.kufuToken || '' })\r\n .then((res) => {\r\n this.serviceData = res.data;\r\n this.upperId = 0;\r\n this.toUid = res.data.uid;\r\n this.tourist_uid = res.data.tourist_uid;\r\n this.tourist_avatar = res.data.tourist_avatar;\r\n let obj = {\r\n data: {\r\n id: res.data.uid,\r\n tourist_uid: this.tourist_uid,\r\n },\r\n type: 'to_chat',\r\n };\r\n Socket.then((ws) => {\r\n ws.send(obj);\r\n });\r\n if (this.kufuToken) {\r\n this.getRecordList();\r\n }\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n this.change = true;\r\n });\r\n },\r\n roomClick(event) {\r\n // if (\r\n // !event.target.classList.contains(\"emoji-panel\") &&\r\n // !event.target.classList.contains(\"emoji-btn\") &&\r\n // !event.target.classList.contains(\"icon-biaoqing\") &&\r\n // this.emojiShow\r\n // ) {\r\n // this.emojiShow = false;\r\n // }\r\n },\r\n // enter 发送\r\n ctrlEnter(e) {\r\n if (e.keyCode == 13) {\r\n e.preventDefault();\r\n }\r\n if (this.chatCont.trim()) {\r\n this.sendMessage();\r\n }\r\n },\r\n // 关闭聊天窗口\r\n close() {\r\n this.$emit('chat-close');\r\n },\r\n // 选择表情\r\n selectEmoji(data) {\r\n let val = `[${data}]`;\r\n this.chatCont += val;\r\n this.emojiShow = false;\r\n },\r\n // 聊天表情转换\r\n replace_em(str) {\r\n str = str.replace(/\\[em-([\\s\\S]*)\\]/g, \"<span class='em em-$1'/></span>\");\r\n return str;\r\n },\r\n onScroll(event) {\r\n if (event.target.scrollTop <= 30) {\r\n if (this.kufuToken) {\r\n this.getRecordList();\r\n }\r\n }\r\n },\r\n // 聊天记录\r\n getRecordList() {\r\n if (this.loading) {\r\n return;\r\n }\r\n if (this.finished) {\r\n return;\r\n }\r\n this.loading = true;\r\n chatListApi({\r\n uid: this.serviceData.uid,\r\n limit: this.limit,\r\n upperId: this.upperId,\r\n token: this.kufuToken,\r\n })\r\n .then((res) => {\r\n if (res.data.length === 0) return (this.loading = false);\r\n res.data.forEach((el) => {\r\n if (el.msn_type == 1) {\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 = `chat_${res.data[res.data.length - 1].id}`;\r\n } else {\r\n selector = `chat_${this.recordList[0].id}`;\r\n }\r\n this.recordList = [...res.data, ...this.recordList];\r\n this.upperId = res.data.length > 0 ? res.data[0].id : 0;\r\n this.loading = false;\r\n this.finished = res.data.length < this.limit;\r\n this.$nextTick(function () {\r\n this.setPageScrollTo(selector);\r\n });\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n this.loading = false;\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.$refs.record.scrollTop = num;\r\n }, 0);\r\n } else {\r\n var container = document.querySelector('#chat_scroll');\r\n this.$refs.record.scrollTop = container.offsetHeight;\r\n setTimeout((res) => {\r\n if (this.$refs.record.scrollTop != this.$refs.scrollBox.offsetHeight) {\r\n this.$refs.record.scrollTop = document.querySelector('#chat_scroll').offsetHeight;\r\n }\r\n }, 300);\r\n }\r\n });\r\n },\r\n // 表情包显示隐藏\r\n emojiSwitch() {\r\n this.emojiShow = !this.emojiShow;\r\n },\r\n // 发送消息\r\n sendMessage() {\r\n this.sendMsg(this.chatCont, 1);\r\n this.chatCont = '';\r\n },\r\n chat(data) {\r\n if (data.uid != this.$auth.user.uid && this.audio) {\r\n this.audio.play();\r\n }\r\n this.recordList.push(data);\r\n this.$nextTick(() => {\r\n this.$refs.record.scrollTop = this.$refs.record.scrollHeight - this.$refs.record.clientHeight;\r\n });\r\n },\r\n sendGoods() {\r\n if (this.chatOptions.goodsId) {\r\n Socket.then((ws) => {\r\n ws.send({\r\n data: {\r\n msn: this.chatOptions.goodsId,\r\n type: 5,\r\n to_uid: this.toUid,\r\n },\r\n type: 'to_chat',\r\n });\r\n });\r\n }\r\n },\r\n sendOrder() {\r\n if (this.chatOptions.orderId) {\r\n Socket.then((ws) => {\r\n ws.send({\r\n data: {\r\n msn: this.chatOptions.orderId,\r\n type: 6,\r\n to_uid: this.toUid,\r\n },\r\n type: 'to_chat',\r\n });\r\n });\r\n }\r\n },\r\n chatEnd() {\r\n if (navigator.userAgent.indexOf('MSIE') > 0) {\r\n if (navigator.userAgent.indexOf('MSIE 6.0') > 0) {\r\n window.opener = null;\r\n window.close();\r\n } else {\r\n window.open('', '_top');\r\n window.top.close();\r\n }\r\n } else if (navigator.userAgent.indexOf('Firefox') > 0) {\r\n window.location.href = 'about:blank ';\r\n } else {\r\n window.opener = null;\r\n window.open('', '_self', '');\r\n window.close();\r\n }\r\n },\r\n // 广告\r\n getNotice() {\r\n getAdvApi().then((res) => {\r\n this.notice = res.data.content;\r\n });\r\n },\r\n beforeUpload(file) {\r\n if (isPicUpload(file)) {\r\n this.uploadData = {\r\n filename: file,\r\n token: this.kufuToken,\r\n };\r\n let promise = new Promise((resolve) => {\r\n this.$nextTick(function () {\r\n resolve(true);\r\n });\r\n });\r\n return promise;\r\n }\r\n },\r\n handleFormatError(file) {\r\n this.$message.error('上传图片只能是 jpg、jpg、jpeg、gif 格式!');\r\n },\r\n uploadSuccess(res) {\r\n this.sendMsg(res.data.url, 3);\r\n },\r\n uploadError(error) {\r\n this.$message.error(error);\r\n },\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\nli {\r\n list-style-type: none;\r\n}\r\n.chat-room {\r\n .room {\r\n border-radius: 10px;\r\n position: fixed;\r\n top: calc(50% - 327px);\r\n left: calc(50% - 365px);\r\n z-index: 999;\r\n display: flex;\r\n flex-direction: column;\r\n width: 730px;\r\n height: 654px;\r\n background-color: #ffffff;\r\n overflow: hidden;\r\n box-shadow: 1px 1px 15px 0 rgba(0, 0, 0, 0.1);\r\n\r\n &.win {\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .head {\r\n display: flex;\r\n align-items: center;\r\n height: 50px;\r\n padding-right: 15px;\r\n padding-left: 20px;\r\n background: linear-gradient(270deg, var(--prev-color-primary) 0%, #3875ea 100%);\r\n\r\n .image {\r\n width: 36px;\r\n height: 36px;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n\r\n img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n }\r\n\r\n .name {\r\n flex: 1;\r\n min-width: 0;\r\n margin-left: 15px;\r\n font-size: 16px;\r\n color: #ffffff;\r\n }\r\n\r\n .iconfont {\r\n width: 25px;\r\n height: 25px;\r\n font-size: 16px;\r\n line-height: 25px;\r\n text-align: center;\r\n color: #ffffff;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .main {\r\n flex: 1;\r\n display: flex;\r\n min-height: 0;\r\n\r\n .chat {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n min-width: 0;\r\n }\r\n\r\n .record {\r\n flex: 1;\r\n min-height: 0;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n ul {\r\n padding: 20px;\r\n }\r\n\r\n li {\r\n ~ li {\r\n margin-top: 20px;\r\n }\r\n\r\n &::after {\r\n content: '';\r\n display: block;\r\n height: 0;\r\n clear: both;\r\n visibility: hidden;\r\n }\r\n\r\n &.right {\r\n .avatar {\r\n float: right;\r\n }\r\n\r\n .content {\r\n text-align: right;\r\n\r\n > div {\r\n text-align: left;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .time-tag {\r\n padding-top: 10px;\r\n padding-bottom: 30px;\r\n text-align: center;\r\n color: #999999;\r\n }\r\n\r\n .avatar {\r\n float: left;\r\n width: 40px;\r\n height: 40px;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n\r\n &.right {\r\n float: right;\r\n }\r\n\r\n img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n }\r\n\r\n .content {\r\n margin-right: 56px;\r\n margin-left: 56px;\r\n }\r\n\r\n .text {\r\n display: inline-block;\r\n min-height: 41px;\r\n padding: 10px 12px;\r\n border-radius: 10px;\r\n background-color: #f5f5f5;\r\n font-size: 15px;\r\n line-height: 21px;\r\n color: #000000;\r\n }\r\n\r\n .image {\r\n display: inline-block;\r\n max-width: 50%;\r\n border-radius: 10px;\r\n overflow: hidden;\r\n\r\n img {\r\n display: block;\r\n max-width: 100%;\r\n }\r\n }\r\n\r\n .goods,\r\n .order {\r\n display: inline-flex;\r\n align-items: center;\r\n width: 320px;\r\n padding: 10px 13px;\r\n border-radius: 10px;\r\n background-color: #f5f5f5;\r\n }\r\n\r\n .thumb {\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 5px;\r\n overflow: hidden;\r\n\r\n img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n\r\n .intro {\r\n flex: 1;\r\n min-width: 0;\r\n margin-left: 10px;\r\n\r\n .name {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n font-size: 15px;\r\n color: #000000;\r\n }\r\n\r\n .attr {\r\n margin-top: 5px;\r\n font-size: 12px;\r\n color: #999999;\r\n\r\n span {\r\n vertical-align: middle;\r\n\r\n ~ span {\r\n margin-left: 10px;\r\n }\r\n }\r\n }\r\n\r\n .group {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 5px;\r\n\r\n .money {\r\n font-size: 14px;\r\n color: #ff0000;\r\n }\r\n\r\n a {\r\n font-size: 12px;\r\n color: var(--prev-color-primary);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .editor {\r\n display: flex;\r\n flex-direction: column;\r\n height: 162px;\r\n border-top: 1px solid #ececec;\r\n\r\n > div {\r\n &:first-child {\r\n font-size: 0;\r\n }\r\n }\r\n\r\n button {\r\n border: none;\r\n background: none;\r\n outline: none;\r\n\r\n ~ button {\r\n margin-left: 20px;\r\n }\r\n\r\n &.end {\r\n font-size: 15px;\r\n }\r\n\r\n &:hover {\r\n color: var(--prev-color-primary);\r\n\r\n .iconfont {\r\n color: var(--prev-color-primary);\r\n }\r\n }\r\n }\r\n\r\n .editor-hd {\r\n position: relative;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n height: 50px;\r\n padding-right: 20px;\r\n padding-left: 20px;\r\n\r\n .iconfont {\r\n line-height: 1;\r\n color: #333333;\r\n }\r\n\r\n .emoji-panel {\r\n position: absolute;\r\n bottom: 100%;\r\n left: 5px;\r\n width: 390px;\r\n padding-bottom: 10px;\r\n border: 1px solid #ececec;\r\n margin-bottom: 5px;\r\n background-color: #ffffff;\r\n box-shadow: 1px 0 16px 0 rgba(0, 0, 0, 0.05);\r\n\r\n .em {\r\n width: 28px;\r\n height: 28px;\r\n padding: 4px;\r\n margin-top: 10px;\r\n margin-left: 10px;\r\n box-sizing: border-box;\r\n\r\n &:hover {\r\n background-color: #ececec;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .icon-biaoqing1,\r\n .icon-tupian1 {\r\n font-size: 22px;\r\n }\r\n\r\n .icon-guanji {\r\n margin-right: 5px;\r\n font-size: 15px;\r\n }\r\n\r\n .editor-bd {\r\n flex: 1;\r\n min-height: 0;\r\n\r\n textarea {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n padding-right: 20px;\r\n padding-left: 20px;\r\n border: none;\r\n outline: none;\r\n resize: none;\r\n white-space: pre-wrap;\r\n overflow-wrap: break-word;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n .editor-ft {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n padding-right: 20px;\r\n padding-bottom: 20px;\r\n\r\n button {\r\n width: 68px;\r\n height: 26px;\r\n border: none;\r\n border-radius: 3px;\r\n background-color: #3875ea;\r\n outline: none;\r\n font-size: 13px;\r\n color: #ffffff;\r\n\r\n &:disabled {\r\n background-color: #cccccc;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .notice {\r\n display: flex;\r\n flex-direction: column;\r\n width: 260px;\r\n border-left: 1px solid #ececec;\r\n\r\n .rich {\r\n flex: 1;\r\n min-height: 0;\r\n padding: 18px 18px 0;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n ::v-deepimg {\r\n width: 100%;\r\n }\r\n\r\n ::v-deepvideo {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .copy {\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n font-size: 12px;\r\n text-align: center;\r\n color: #cccccc !important;\r\n text-decoration: none;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n"]}]}