08eeb1b2a1e46d1c2fe39bc8fd8031b7.json 43 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\\pc\\index.vue?vue&type=style&index=0&id=ece7b8f0&lang=scss&scoped=true","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\kefu\\pc\\index.vue","mtime":1761185180107},{"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:DQpAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvZW1vamktYXdlc29tZS9jc3MvZ29vZ2xlLm1pbi5jc3MnOw0KOjp2LWRlZXB0ZXh0YXJlYS5pdnUtaW5wdXQgew0KICBib3JkZXI6IG5vbmU7DQogIHJlc2l6ZTogbm9uZTsNCn0NCi5rZWZ1LWxheW91dHMgew0KICBwYWRkaW5nLXRvcDogMzBweDsNCiAgaGVpZ2h0OiAxMDAlOw0KICBkaXNwbGF5OiBmbGV4Ow0KICBiYWNrZ3JvdW5kOiAjY2NjOw0KICBvdmVyZmxvdzogc2Nyb2xsOw0KfQ0KLmNvbnRlbnQtd3JhcHBlciB7DQogIGRpc3BsYXk6IGZsZXg7DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIHdpZHRoOiAxMjAwcHg7DQogIGhlaWdodDogODEwcHg7DQogIG1hcmdpbjogMCBhdXRvOw0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICAuY29udGFpbmVyIHsNCiAgICBmbGV4OiAxOw0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgLmNoYXQtY29udGVudCB7DQogICAgICB3aWR0aDogNjAwcHg7DQogICAgICBoZWlnaHQ6IDEwMCU7DQogICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZWNlY2VjOw0KICAgICAgLmNoYXQtYm9keSB7DQogICAgICAgIGhlaWdodDogNTMwcHg7DQogICAgICAgIC5jaGF0LWl0ZW0gew0KICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7DQogICAgICAgICAgLnRpbWUgew0KICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgY29sb3I6ICM5OTk5OTk7DQogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7DQogICAgICAgICAgICBtYXJnaW46IDE4cHggMDsNCiAgICAgICAgICB9DQogICAgICAgICAgLmZsZXgtYm94IHsNCiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICAgICAgfQ0KICAgICAgICAgIC5hdmF0YXIgew0KICAgICAgICAgICAgd2lkdGg6IDQwcHg7DQogICAgICAgICAgICBoZWlnaHQ6IDQwcHg7DQogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7DQoNCiAgICAgICAgICAgIGltZyB7DQogICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgICAgICAgICAgICB3aWR0aDogMTAwJTsNCiAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIC5tc2ctd3JhcHBlciB7DQogICAgICAgICAgICBtYXgtd2lkdGg6IDMyMHB4Ow0KICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7DQogICAgICAgICAgICBjb2xvcjogIzAwMDAwMDsNCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgICAudHh0LXdyYXBwZXIgew0KICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7DQogICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC5wYWQxNiB7DQogICAgICAgICAgICAgIHBhZGRpbmc6IDlweDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC5pbWctd3JhcGVyIGltZyB7DQogICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsNCiAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC5vcmRlci13cmFwcGVyIHsNCiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgICAgd2lkdGg6IDMyMHB4Ow0KICAgICAgICAgICAgICAuaW1nLWJveCB7DQogICAgICAgICAgICAgICAgd2lkdGg6IDYwcHg7DQogICAgICAgICAgICAgICAgaGVpZ2h0OiA2MHB4Ow0KDQogICAgICAgICAgICAgICAgaW1nIHsNCiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAub3JkZXItaW5mbyB7DQogICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICAgICAgICAgICAgICB3aWR0aDogMjI0cHg7DQogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgICAgICAgICAgIC5wcmljZS1ib3ggew0KICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7DQogICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmMDAwMDsNCiAgICAgICAgICAgICAgICAgIC5tb3JlIHsNCiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5KTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLm5hbWUgew0KICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAuc2t1IHsNCiAgICAgICAgICAgICAgICAgIG1hcmdpbjogMXB4IDA7DQogICAgICAgICAgICAgICAgICBjb2xvcjogIzk5OTk5OTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgJi5yaWdodC1ib3ggew0KICAgICAgICAgICAgLmZsZXgtYm94IHsNCiAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOw0KICAgICAgICAgICAgICAuYXZhdGFyIHsNCiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7DQogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgLm1zZy13cmFwcGVyIHsNCiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjY2RlMGZmOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAmLmdhcnkgLm1zZy13cmFwcGVyIHsNCiAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIC5jaGF0LXRleHRhcmVhIHsNCiAgICAgICAgaGVpZ2h0OiAyMTRweDsNCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlY2VjZWM7DQogICAgICAgIC5jaGF0LWJ0bi13cmFwcGVyIHsNCiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICAgICAgICBwYWRkaW5nOiAxNXB4IDA7DQogICAgICAgICAgLmxlZnQtd3JhcHBlcnMgew0KICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgICAgICAgICAuaWNvbi1pdGVtIHsNCiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7DQogICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICAgICAgLmljb25mb250IHsNCiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIycHg7DQogICAgICAgICAgICAgICAgY29sb3I6ICMzMzMzMzM7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgLnJpZ2h0LXdyYXBwZXIgew0KICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDsNCiAgICAgICAgICAgIC5pY29uLWl0ZW0gew0KICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7DQogICAgICAgICAgICAgIGNvbG9yOiAjMzMzOw0KICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7DQoNCiAgICAgICAgICAgICAgc3BhbiB7DQogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC50cmFuc2Zlci1ib3ggew0KICAgICAgICAgICAgICB6LWluZGV4OiA2MDsNCiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICAgICAgICByaWdodDogMXB4Ow0KICAgICAgICAgICAgICBib3R0b206IDQzcHg7DQogICAgICAgICAgICAgIHdpZHRoOiAxNDBweDsNCiAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsNCiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpOw0KICAgICAgICAgICAgICBwYWRkaW5nOiAxNnB4Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLnRyYW5zZmVyLWJnIHsNCiAgICAgICAgICAgICAgei1pbmRleDogNTA7DQogICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsNCiAgICAgICAgICAgICAgbGVmdDogMDsNCiAgICAgICAgICAgICAgdG9wOiAwOw0KICAgICAgICAgICAgICB3aWR0aDogMTAwJTsNCiAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgLmVtb2ppLWJveCB7DQogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICBsZWZ0OiAwOw0KICAgICAgICAgICAgdG9wOiAwOw0KICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsNCiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7DQogICAgICAgICAgICB3aWR0aDogNjAlOw0KICAgICAgICAgICAgcGFkZGluZzogMTVweCA5cHg7DQogICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDEzcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKTsNCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7DQogICAgICAgICAgICBvdmVyZmxvdzogYXV0bzsNCiAgICAgICAgICAgIGhlaWdodDogMjQwcHg7DQogICAgICAgICAgICAuZW1vamktaXRlbSB7DQogICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTNweDsNCiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4Ow0KICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgICAgICAgICAgICY6bnRoLWNoaWxkKDEwbikgew0KICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfQ0KfQ0KLnNlbmQtYnRuIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICByaWdodDogMDsNCiAgYm90dG9tOiAxMHB4Ow0KICBkaXNwbGF5OiBmbGV4Ow0KICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOw0KICBtYXJnaW4tdG9wOiAxMHB4Ow0KICBtYXJnaW4tcmlnaHQ6IDEwcHg7DQogIHdpZHRoOiA4MHB4Ow0KICAuYnRucyB7DQogICAgd2lkdGg6IDEwMCU7DQogICAgYmFja2dyb3VuZDogIzM4NzVlYTsNCiAgICAmW2Rpc2FibGVkXSB7DQogICAgICBiYWNrZ3JvdW5kOiAjY2NjY2NjOw0KICAgICAgY29sb3I6ICNmZmY7DQogICAgfQ0KICB9DQp9DQouYmcgew0KICB6LWluZGV4OiAxMDA7DQogIHBvc2l0aW9uOiBmaXhlZDsNCiAgbGVmdDogMDsNCiAgdG9wOiAwOw0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiAxMDAlOw0KICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7DQp9DQo6OnYtZGVlcCAuaGFwcHktc2Nyb2xsLWNvbnRlbnQgew0KICB3aWR0aDogMTAwJTsNCiAgLmRlbW8tc3Bpbi1pY29uLWxvYWQgew0KICAgIGFuaW1hdGlvbjogYW5pLWRlbW8tc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7DQogIH0NCg0KICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pLWRlbW8tc3BpbiB7DQogICAgZnJvbSB7DQogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICB9DQogICAgNTAlIHsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7DQogICAgfQ0KDQogICAgdG8gew0KICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICB9DQogIH0NCg0KICBALW1vei1rZXlmcmFtZXMgYW5pLWRlbW8tc3BpbiB7DQogICAgZnJvbSB7DQogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICB9DQogICAgNTAlIHsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7DQogICAgfQ0KDQogICAgdG8gew0KICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICB9DQogIH0NCg0KICBALW1zLWtleWZyYW1lcyBhbmktZGVtby1zcGluIHsNCiAgICBmcm9tIHsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgIH0NCiAgICA1MCUgew0KICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsNCiAgICB9DQoNCiAgICB0byB7DQogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgIH0NCiAgfQ0KDQogIEAtby1rZXlmcmFtZXMgYW5pLWRlbW8tc3BpbiB7DQogICAgZnJvbSB7DQogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICB9DQogICAgNTAlIHsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7DQogICAgfQ0KDQogICAgdG8gew0KICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICB9DQogIH0NCg0KICBAa2V5ZnJhbWVzIGFuaS1kZW1vLXNwaW4gew0KICAgIGZyb20gew0KICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgfQ0KICAgIDUwJSB7DQogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOw0KICAgIH0NCg0KICAgIHRvIHsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgfQ0KICB9DQogIC5kZW1vLXNwaW4tY29sIHsNCiAgICBoZWlnaHQ6IDEwMHB4Ow0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWVlOw0KICB9DQp9DQouaXNNc2dib3ggew0KICA6OnYtZGVlcCAuaXZ1LW1vZGFsLWJvZHkgew0KICAgIHBhZGRpbmc6IDA7DQogIH0NCn0NCi5lbW9qaS1ib3g6Oi13ZWJraXQtc2Nyb2xsYmFyIHsNCiAgd2lkdGg6IDA7DQp9DQoudGV4dGFyZWEtYm94IDo6di1kZWVwIC5pdnUtaW5wdXQ6Zm9jdXMgew0KICBib3gtc2hhZG93OiBub25lOw0KfQ0KLnRleHRhcmVhLWJveCA6OnYtZGVlcCAuZWwtdGV4dGFyZWFfX2lubmVyIHsNCiAgYm9yZGVyOiBub25lOw0KICByZXNpemU6IG5vbmU7DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AA+nBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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","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"]}]}