| 1 |
- {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\kefu\\pc\\components\\msgWindow.vue?vue&type=style&index=0&id=0805965c&lang=scss&scoped=true","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\kefu\\pc\\components\\msgWindow.vue","mtime":1761614939026},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\css-loader\\index.js","mtime":1761614929364},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1761614937403},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\postcss-loader\\src\\index.js","mtime":1761614935133},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":1761614936391},{"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:DQouaGVhZCB7DQogIC50YWItYmFyIHsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIC50YWItaXRlbSB7DQogICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7DQogICAgICBjb2xvcjogIzk5OTsNCiAgICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7DQogICAgICAmLm9uIHsNCiAgICAgICAgY29sb3I6ICMzMzMzMzM7DQogICAgICB9DQogICAgfQ0KICB9DQogIC5zZWFyY2gtYm94IHsNCiAgICBtYXJnaW4tdG9wOiAxNXB4Ow0KICB9DQp9DQoubWFpbiB7DQogIGRpc3BsYXk6IGZsZXg7DQogIG1hcmdpbi10b3A6IDE1cHg7DQogIGhlaWdodDogMzY1cHg7DQogIC5sZWZ0LWJveCB7DQogICAgd2lkdGg6IDEwNnB4Ow0KICAgIGhlaWdodDogMTAwJTsNCiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZWNlY2VjOw0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgLmxlZnQtaXRlbSB7DQogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICAgIGhlaWdodDogMzZweDsNCiAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDE0cHg7DQogICAgICBmb250LXNpemU6IDEzcHg7DQogICAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgICAmLm9uIHsNCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5LWxpZ2h0LTkpOw0KICAgICAgICBjb2xvcjogdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5KTsNCiAgICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5KTsNCiAgICAgICAgLmljb25Eb3Qgew0KICAgICAgICAgIHotaW5kZXg6IDE7DQogICAgICAgICAgb3BhY2l0eTogMTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJjpudGgtY2hpbGQoMSkub24sDQogICAgICAmOm50aC1jaGlsZCgyKS5vbiB7DQogICAgICAgIC5pY29uRG90IHsNCiAgICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICB9DQogICAgICB9DQogICAgICAuaWNvbmFkZHRvIHsNCiAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgfQ0KICAgICAgLmljb25Eb3Qgew0KICAgICAgICB6LWluZGV4OiAtMTsNCiAgICAgICAgb3BhY2l0eTogMDsNCiAgICAgIH0NCiAgICAgIC5lZGl0LXdyYXBwZXIgew0KICAgICAgICB6LWluZGV4OiA1MDsNCiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICByaWdodDogLTJweDsNCiAgICAgICAgdG9wOiAtNHB4Ow0KICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOw0KICAgICAgICB3aWR0aDogODBweDsNCiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICAgICAgICAuZWRpdC1pdGVtIHsNCiAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsNCiAgICAgICAgICBjb2xvcjogIzY2NiAhaW1wb3J0YW50Ow0KICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLmVkaXQtYmcgew0KICAgICAgICB6LWluZGV4OiA0MDsNCiAgICAgICAgcG9zaXRpb246IGZpeGVkOw0KICAgICAgICBsZWZ0OiAwOw0KICAgICAgICB0b3A6IDA7DQogICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICBoZWlnaHQ6IDEwMCU7DQogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KICAgICAgfQ0KICAgIH0NCiAgfQ0KICAucmlnaHQtYm94IHsNCiAgICBmbGV4OiAxOw0KICAgIHBhZGRpbmc6IDAgMTJweDsNCiAgICBvdmVyZmxvdy14OiBoaWRkZW47DQogICAgLm1zZy1pdGVtIHsNCiAgICAgIG1hcmdpbi10b3A6IDEycHg7DQogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOw0KICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgLmJveDEgew0KICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICAgIC50eHQtYm94IHsNCiAgICAgICAgICBmbGV4OiAxOw0KICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgICBjb2xvcjogIzk5OTk5OTsNCiAgICAgICAgICAudGl0bGUgew0KICAgICAgICAgICAgbWF4LXdpZHRoOiAzNzBweDsNCiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4Ow0KICAgICAgICAgICAgY29sb3I6ICMzMzM7DQogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAuZWRpdC1ib3ggew0KICAgICAgICAgIHotaW5kZXg6IC0xOw0KICAgICAgICAgIG9wYWNpdHk6IDA7DQogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICAgIHJpZ2h0OiA3cHg7DQogICAgICAgICAgdG9wOiAwOw0KICAgICAgICAgIHdpZHRoOiA2MHB4Ow0KICAgICAgICAgIGhlaWdodDogMzBweDsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOw0KICAgICAgICAgIC5pY29uZm9udCB7DQogICAgICAgICAgICBtYXJnaW46IDAgOHB4Ow0KICAgICAgICAgICAgY29sb3I6ICMwMDAwMDA7DQogICAgICAgICAgICBmb250LXNpemU6IDE2cHg7DQogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICAuYm94MiB7DQogICAgICAgIHBhZGRpbmctYm90dG9tOiAxNXB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7DQogICAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7DQogICAgICAgIC5pbnB1dC1ib3ggew0KICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlZWVlOw0KICAgICAgICAgIDo6di1kZWVwIC5pdnUtaW5wdXQgew0KICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQogICAgICAgICAgICBib3JkZXI6IDA7DQogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAuY29udGVudCB7DQogICAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgICAgIHBhZGRpbmc6IDEycHggMTFweCAwOw0KICAgICAgICAgIGNvbG9yOiAjMzMzMzMzOw0KICAgICAgICB9DQogICAgICAgIC5ib20gew0KICAgICAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogICAgICAgICAgcGFkZGluZzogMCAyMHB4IDAgMTFweDsNCiAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4Ow0KDQogICAgICAgICAgYnV0dG9uIHsNCiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7DQogICAgICAgICAgICB3aWR0aDogNzBweDsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgICY6aG92ZXIgew0KICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOw0KICAgICAgICAuYm94MSAuZWRpdC1ib3ggew0KICAgICAgICAgIHotaW5kZXg6IDE7DQogICAgICAgICAgb3BhY2l0eTogMTsNCiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOw0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIC5hZGQtYm94IHsNCiAgICAgIGJvcmRlci1yYWRpdXM6IDA7DQogICAgICBtYXJnaW4tYm90dG9tOiAxMHB4Ow0KICAgICAgLmJveDIgew0KICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogMDsNCiAgICAgICAgLmNvbkJveCB7DQogICAgICAgICAgaGVpZ2h0OiAwOw0KICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgJi5hY3RpdmUgew0KICAgICAgICAgICAgYW5pbWF0aW9uOiBteW1vdmUgMC40cyBlYXNlOw0KICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsNCiAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfQ0KfQ0KLnJpZ2h0LXNjcm9sbCB7DQogIGhlaWdodDogMzQ1cHg7DQp9DQouY2xhc3MtYm94IHsNCiAgLml0ZW0gew0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Ow0KICAgICY6bGFzdC1jaGlsZCB7DQogICAgICBtYXJnaW4tYm90dG9tOiAwOw0KICAgIH0NCg0KICAgIGlucHV0IHsNCiAgICAgIGZsZXg6IDE7DQogICAgfQ0KDQogICAgc3BhbiB7DQogICAgICB3aWR0aDogODBweDsNCiAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICB9DQogIH0NCn0NCg=="},{"version":3,"sources":["msgWindow.vue"],"names":[],"mappings":";AAweA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA","file":"msgWindow.vue","sourceRoot":"src/pages/kefu/pc/components","sourcesContent":["<template>\r\n <div class=\"msg-box\">\r\n <div class=\"head\">\r\n <div class=\"tab-bar\">\r\n <a\r\n href=\"javascript:;\"\r\n class=\"tab-item\"\r\n :class=\"{ on: item.key == tabCur }\"\r\n v-for=\"(item, index) in tabList\"\r\n :key=\"index\"\r\n v-db-click\r\n @click=\"bindTab(item)\"\r\n >{{ item.title }}</a\r\n >\r\n </div>\r\n <div class=\"search-box\">\r\n <el-input placeholder=\"搜索快捷回复\" style=\"width: 100%\" v-model=\"searchTxt\" />\r\n </div>\r\n </div>\r\n <div class=\"main\">\r\n <div class=\"left-box\">\r\n <vue-scroll :ops=\"ops\">\r\n <div class=\"left-item\" v-if=\"tabCur\">\r\n <p>分组</p>\r\n <span class=\"iconfont iconaddto\" v-db-click @click=\"openAddSort\"></span>\r\n </div>\r\n <div\r\n class=\"left-item\"\r\n v-for=\"(item, index) in sortList\"\r\n :key=\"index\"\r\n :class=\"{ on: cateId == item.id }\"\r\n v-db-click\r\n @click=\"selectSort(item)\"\r\n >\r\n <p>{{ item.name }}</p>\r\n <template v-if=\"tabCur\">\r\n <span class=\"iconfont iconDot\" v-db-click @click.top=\"bindEdit(item, scope.$index)\"></span>\r\n\r\n <div class=\"edit-wrapper\" v-show=\"item.isEdit\">\r\n <div class=\"edit-item\" v-db-click @click=\"editSort(item)\">编辑</div>\r\n <div class=\"edit-item\" v-db-click @click=\"delSort(item, '删除分类', scope.$index)\">删除</div>\r\n </div>\r\n <div class=\"edit-bg\" v-show=\"item.isEdit\" v-db-click @click.stop=\"item.isEdit = false\"></div>\r\n </template>\r\n </div>\r\n </vue-scroll>\r\n </div>\r\n <div class=\"right-box\">\r\n <div\r\n v-infinite-scroll=\"handleReachBottom\"\r\n class=\"right-scroll\"\r\n :infinite-scroll-immediate=\"false\"\r\n :infinite-scroll-delay=\"500\"\r\n style=\"overflow: auto\"\r\n >\r\n <div class=\"msg-item add-box\" v-if=\"tabCur\" style=\"margin-top: 0\">\r\n <div class=\"box2\">\r\n <el-input\r\n class=\"input-box\"\r\n v-model=\"addMsg.title\"\r\n placeholder=\"输入标题(选填)\"\r\n style=\"width: 100%\"\r\n @on-focus=\"bindFocus\"\r\n />\r\n <div class=\"conBox\" :class=\"{ active: addMsg.isEdit }\">\r\n <div class=\"content\">\r\n <el-input v-model=\"addMsg.message\" type=\"textarea\" :rows=\"4\" placeholder=\"请输入内容\" />\r\n </div>\r\n <div class=\"bom\">\r\n <div class=\"select\">\r\n <el-select v-model=\"addMsg.cateId\" style=\"width: 100px\" size=\"small\">\r\n <el-option v-for=\"item in sortList\" :value=\"item.id\" :key=\"item.id\">{{ item.name }} </el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"btns-box\">\r\n <el-button v-db-click @click.stop=\"addMsg.isEdit = false\">取消</el-button>\r\n <el-button type=\"primary\" v-db-click @click.stop=\"bindAdd\">保存</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"msg-item\" v-for=\"(item, index) in list\" :key=\"index\" v-if=\"item.id\">\r\n <div class=\"box1\" v-if=\"!item.isEdit\">\r\n <div class=\"txt-box\" v-db-click @click=\"bindRadio(item)\">\r\n <span class=\"title\" v-if=\"item.title\">{{ item.title | filtersTitle }}</span>\r\n <span v-if=\"item.message\">{{ item.message | filtersCon }}</span>\r\n </div>\r\n <div class=\"edit-box\" v-if=\"tabCur\">\r\n <span class=\"iconfont iconbianji\" v-db-click @click.stop=\"editMsg(item)\"></span>\r\n <span class=\"iconfont iconshanchu\" v-db-click @click.stop=\"delMsg(item, '删除话术', index)\"></span>\r\n </div>\r\n </div>\r\n <div class=\"box2\" v-else>\r\n <el-input class=\"input-box\" v-model=\"item.title\" placeholder=\"输入标题(选填)\" style=\"width: 100%\" />\r\n <div class=\"content\">\r\n <el-input v-model=\"item.message\" type=\"textarea\" :rows=\"4\" placeholder=\"请输入内容\" />\r\n </div>\r\n <div class=\"bom\">\r\n <div class=\"select\">\r\n <el-select v-model=\"cateId\" style=\"width: 100px\" size=\"small\">\r\n <el-option v-for=\"item in sortList\" :value=\"item.id\" :key=\"item.id\" :label=\"item.name\"></el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"btns-box\">\r\n <el-button v-db-click @click.stop=\"item.isEdit = false\">取消</el-button>\r\n <el-button type=\"primary\" v-db-click @click.stop=\"updataMsg(item)\">保存</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <el-dialog :visible.sync=\"isAddSort\" append-to-body :title=\"maskTitle\" width=\"304px\" class=\"class-box\">\r\n <div class=\"item\">\r\n <span>分组名称:</span>\r\n <el-input v-model=\"classTitle\" placeholder=\"分组名称\" />\r\n </div>\r\n <div class=\"item\">\r\n <span>分组排序:</span>\r\n <el-input v-model=\"classSort\" placeholder=\"输入排序\" />\r\n </div>\r\n <div class=\"btn\"></div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" v-db-click @click=\"addServiceCate\">确定</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {\r\n speeChcraft,\r\n serviceCate,\r\n serviceCateUpdate,\r\n addSpeeChcraft,\r\n addServiceCate,\r\n editServiceCate,\r\n} from '@/api/kefu';\r\nexport default {\r\n name: 'msgWindow',\r\n data() {\r\n return {\r\n ops: {\r\n vuescroll: {\r\n mode: 'native',\r\n enable: false,\r\n tips: {\r\n deactive: 'Push to Load',\r\n active: 'Release to Load',\r\n start: 'Loading...',\r\n beforeDeactive: 'Load Successfully!',\r\n },\r\n auto: false,\r\n autoLoadDistance: 0,\r\n pullRefresh: {\r\n enable: false,\r\n },\r\n pushLoad: {\r\n enable: false,\r\n auto: true,\r\n autoLoadDistance: 10,\r\n },\r\n },\r\n bar: {\r\n background: '#393232',\r\n opacity: '.5',\r\n size: '2px',\r\n },\r\n },\r\n isScroll: true,\r\n page: 1,\r\n limit: 15,\r\n tabCur: 1,\r\n tabList: [\r\n {\r\n title: '个人库',\r\n key: 1,\r\n },\r\n {\r\n title: '公共库',\r\n key: 0,\r\n },\r\n ],\r\n searchTxt: '', // 搜索\r\n list: [\r\n {\r\n isEdit: false,\r\n },\r\n ], // 列表\r\n model1: '',\r\n msgTitle: '', // 填写的标题\r\n sortList: [], // 分类\r\n cateId: '', // 选中的id\r\n addMsg: {\r\n title: '',\r\n message: '',\r\n cateId: '',\r\n isEdit: false,\r\n },\r\n isAddSort: false, // 添加分类\r\n classTitle: '', // 分类名称\r\n classSort: '', // 分类排序\r\n maskTitle: '', // 弹窗标题\r\n editObj: {}, // 编辑分类对象\r\n };\r\n },\r\n filters: {\r\n filtersTitle(val) {\r\n let len = 37;\r\n if (val.length > len) {\r\n let data = val.substring(0, len);\r\n return `${data}...`;\r\n } else {\r\n return val;\r\n }\r\n },\r\n filtersCon(val) {\r\n let len = 113;\r\n if (val.length > len) {\r\n let data = val.substring(0, len);\r\n return `${data}...`;\r\n } else {\r\n return val;\r\n }\r\n },\r\n },\r\n mounted() {\r\n let self = this;\r\n this.serviceCate();\r\n this.$nextTick(() => {\r\n // this.scroll = new BScroll(this.$refs.wrapper, {\r\n // mouseWheel: {\r\n // speed: 20,\r\n // invert: false,\r\n // easeTime: 300,\r\n // },\r\n // scrollbar: true,\r\n // disableMouse: true,\r\n // // and so on\r\n // });\r\n });\r\n },\r\n methods: {\r\n // 打开编辑\r\n editMsg(item) {\r\n item.isEdit = true;\r\n this.cateId = item.cate_id;\r\n },\r\n // 编辑框\r\n bindEdit(item, index) {\r\n // if (index == 0) {\r\n // return;\r\n // } else {\r\n item.isEdit = !item.isEdit;\r\n // }\r\n },\r\n // 头部选择\r\n bindTab(item) {\r\n console.log('1122');\r\n debugger;\r\n this.tabCur = item.key;\r\n this.cateId = '';\r\n this.sortList = [];\r\n this.isScroll = true;\r\n this.page = 1;\r\n this.list = [];\r\n this.serviceCate();\r\n },\r\n // 搜索\r\n bindSearch() {\r\n this.isScroll = true;\r\n this.page = 1;\r\n this.list = [];\r\n this.getList();\r\n },\r\n // 选择分类\r\n selectSort(item) {\r\n if (this.cateId == item.id) {\r\n return;\r\n }\r\n this.sortList.forEach((el, index) => {\r\n if (el.id != item.id) {\r\n el.isEdit = false;\r\n }\r\n });\r\n this.cateId = item.id;\r\n this.isScroll = true;\r\n this.page = 1;\r\n this.list = [];\r\n this.getList();\r\n },\r\n // 删除分类\r\n delSort(row, tit, num) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: `/service/cate/${row.id}`,\r\n method: 'DELETE',\r\n ids: '',\r\n kefu: true,\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.isScroll = true;\r\n this.page = 1;\r\n this.list = [];\r\n this.cateId = '';\r\n this.serviceCate();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 获取分类\r\n serviceCate() {\r\n serviceCate({\r\n type: this.tabCur,\r\n }).then((res) => {\r\n let obj = {\r\n id: '',\r\n name: '全部',\r\n };\r\n res.data.data.forEach((el, index) => {\r\n el.isEdit = false;\r\n });\r\n // res.data.data.unshift(obj)\r\n this.sortList = res.data.data;\r\n if (this.cateId === '') {\r\n this.cateId = res.data.data[0].id;\r\n }\r\n this.getList();\r\n });\r\n },\r\n // 获取列表\r\n getList() {\r\n if (!this.isScroll) return;\r\n speeChcraft({\r\n page: this.page,\r\n limit: this.limit,\r\n title: this.searchTxt,\r\n cate_id: this.cateId,\r\n type: this.tabCur,\r\n }).then((res) => {\r\n this.isScroll = res.data.length >= this.limit;\r\n res.data.forEach((el, index) => {\r\n el.isEdit = false;\r\n });\r\n this.page++;\r\n this.list = this.list.concat(res.data);\r\n });\r\n },\r\n // 修改话术\r\n updataMsg(item) {\r\n serviceCateUpdate(item.id, {\r\n title: item.title,\r\n cate_id: this.cateId,\r\n message: item.message,\r\n })\r\n .then((res) => {\r\n this.$message.success('修改成功');\r\n item.isEdit = false;\r\n })\r\n .catch((error) => {\r\n this.$message.error(error.msg);\r\n item.isEdit = true;\r\n });\r\n },\r\n // 添加框显示\r\n bindFocus() {\r\n this.list.forEach((el, item) => {\r\n el.isEdit = false;\r\n });\r\n this.addMsg.isEdit = true;\r\n },\r\n // 打开添加窗口\r\n openAddSort() {\r\n this.isAddSort = true;\r\n this.maskTitle = '添加分组';\r\n this.editObj.id = 0;\r\n },\r\n // 添加话术\r\n bindAdd() {\r\n addSpeeChcraft({\r\n title: this.addMsg.title,\r\n cate_id: this.addMsg.cateId,\r\n message: this.addMsg.message,\r\n })\r\n .then((res) => {\r\n this.addMsg.title = '';\r\n this.addMsg.message = '';\r\n this.addMsg.cateId = '';\r\n this.addMsg.isEdit = false;\r\n this.$message.success(res.msg);\r\n res.data.isEdit = false;\r\n this.page = 1;\r\n this.list = [];\r\n this.isScroll = true;\r\n this.serviceCate();\r\n })\r\n .catch((error) => {\r\n this.$message.error(error.msg);\r\n });\r\n },\r\n // 删除\r\n delMsg(row, tit, num, type) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: `service/speechcraft/${row.id}`,\r\n method: 'DELETE',\r\n ids: '',\r\n kefu: true,\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.list.splice(num, 1);\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 添加分类\r\n addServiceCate() {\r\n if (this.editObj.id) {\r\n editServiceCate(this.editObj.id, {\r\n name: this.classTitle,\r\n sort: this.classSort,\r\n })\r\n .then((res) => {\r\n this.classTitle = '';\r\n this.classSort = '';\r\n this.$message.success(res.msg);\r\n this.isAddSort = false;\r\n this.page = 1;\r\n this.list = [];\r\n this.isScroll = true;\r\n this.serviceCate();\r\n })\r\n .catch((error) => {\r\n this.classTitle = '';\r\n this.classSort = '';\r\n this.$message.error(error.msg);\r\n });\r\n } else {\r\n addServiceCate({\r\n name: this.classTitle,\r\n sort: this.classSort,\r\n })\r\n .then((res) => {\r\n this.classTitle = '';\r\n this.classSort = '';\r\n this.$message.success(res.msg);\r\n this.isAddSort = false;\r\n this.page = 1;\r\n this.list = [];\r\n this.isScroll = true;\r\n this.serviceCate();\r\n })\r\n .catch((error) => {\r\n this.classTitle = '';\r\n this.classSort = '';\r\n this.$message.error(error.msg);\r\n });\r\n }\r\n },\r\n // 编辑分类\r\n editSort(item) {\r\n this.classSort = item.sort;\r\n this.classTitle = item.name;\r\n this.isAddSort = true;\r\n this.maskTitle = '编辑分组';\r\n this.editObj = item;\r\n },\r\n handleReachBottom() {\r\n this.getList();\r\n },\r\n bindRadio(data) {\r\n this.$emit('activeTxt', data.message);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.head {\r\n .tab-bar {\r\n display: flex;\r\n .tab-item {\r\n margin-right: 24px;\r\n color: #999;\r\n font-size: 14px;\r\n font-weight: 500;\r\n &.on {\r\n color: #333333;\r\n }\r\n }\r\n }\r\n .search-box {\r\n margin-top: 15px;\r\n }\r\n}\r\n.main {\r\n display: flex;\r\n margin-top: 15px;\r\n height: 365px;\r\n .left-box {\r\n width: 106px;\r\n height: 100%;\r\n border-right: 1px solid #ececec;\r\n overflow: hidden;\r\n .left-item {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n height: 36px;\r\n padding: 0 10px 0 14px;\r\n font-size: 13px;\r\n cursor: pointer;\r\n &.on {\r\n background: var(--prev-color-primary-light-9);\r\n color: var(--prev-color-primary);\r\n border-right: 2px solid var(--prev-color-primary);\r\n .iconDot {\r\n z-index: 1;\r\n opacity: 1;\r\n }\r\n }\r\n &:nth-child(1).on,\r\n &:nth-child(2).on {\r\n .iconDot {\r\n display: none;\r\n }\r\n }\r\n .iconaddto {\r\n font-size: 12px;\r\n }\r\n .iconDot {\r\n z-index: -1;\r\n opacity: 0;\r\n }\r\n .edit-wrapper {\r\n z-index: 50;\r\n position: absolute;\r\n right: -2px;\r\n top: -4px;\r\n background: #fff;\r\n width: 80px;\r\n box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);\r\n border-radius: 4px;\r\n .edit-item {\r\n padding: 8px 16px;\r\n color: #666 !important;\r\n cursor: pointer;\r\n }\r\n }\r\n .edit-bg {\r\n z-index: 40;\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 }\r\n .right-box {\r\n flex: 1;\r\n padding: 0 12px;\r\n overflow-x: hidden;\r\n .msg-item {\r\n margin-top: 12px;\r\n transition: all 0.3s ease;\r\n cursor: pointer;\r\n .box1 {\r\n position: relative;\r\n display: flex;\r\n .txt-box {\r\n flex: 1;\r\n font-size: 12px;\r\n color: #999999;\r\n .title {\r\n max-width: 370px;\r\n margin-right: 5px;\r\n color: #333;\r\n font-weight: 700;\r\n }\r\n }\r\n .edit-box {\r\n z-index: -1;\r\n opacity: 0;\r\n position: absolute;\r\n right: 7px;\r\n top: 0;\r\n width: 60px;\r\n height: 30px;\r\n background: #fff;\r\n .iconfont {\r\n margin: 0 8px;\r\n color: #000000;\r\n font-size: 16px;\r\n cursor: pointer;\r\n }\r\n }\r\n }\r\n .box2 {\r\n padding-bottom: 15px;\r\n border-radius: 5px;\r\n background: #f5f5f5;\r\n .input-box {\r\n border-bottom: 1px solid #eeeeee;\r\n ::v-deep .ivu-input {\r\n background: transparent;\r\n border: 0;\r\n border-radius: 0;\r\n }\r\n }\r\n .content {\r\n font-size: 12px;\r\n padding: 12px 11px 0;\r\n color: #333333;\r\n }\r\n .bom {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0 20px 0 11px;\r\n margin-top: 10px;\r\n\r\n button {\r\n margin-left: 8px;\r\n width: 70px;\r\n }\r\n }\r\n }\r\n &:hover {\r\n transition: all 0.3s ease;\r\n .box1 .edit-box {\r\n z-index: 1;\r\n opacity: 1;\r\n transition: all 0.3s ease;\r\n }\r\n }\r\n }\r\n .add-box {\r\n border-radius: 0;\r\n margin-bottom: 10px;\r\n .box2 {\r\n padding-bottom: 0;\r\n border-radius: 0;\r\n .conBox {\r\n height: 0;\r\n overflow: hidden;\r\n &.active {\r\n animation: mymove 0.4s ease;\r\n animation-iteration-count: 1;\r\n animation-fill-mode: forwards;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.right-scroll {\r\n height: 345px;\r\n}\r\n.class-box {\r\n .item {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n input {\r\n flex: 1;\r\n }\r\n\r\n span {\r\n width: 80px;\r\n font-size: 12px;\r\n }\r\n }\r\n}\r\n</style>\r\n<style>\r\n@keyframes mymove {\r\n 0% {\r\n height: 0;\r\n }\r\n 100% {\r\n height: 150px;\r\n }\r\n}\r\n</style>\r\n"]}]}
|