调用明细
This commit is contained in:
		
							
								
								
									
										75
									
								
								packages/xbot/AppCallDetails/AppCallDetails.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								packages/xbot/AppCallDetails/AppCallDetails.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | |||||||
|  | <template> | ||||||
|  |   <div class="AppCallDetails"> | ||||||
|  |     <keep-alive :include="['List']"> | ||||||
|  |       <component | ||||||
|  |         ref="component" | ||||||
|  |         :is="component" | ||||||
|  |         @change="onChange" | ||||||
|  |         :params="params" | ||||||
|  |         :instance="instance" | ||||||
|  |         :dict="dict" | ||||||
|  |       ></component> | ||||||
|  |     </keep-alive> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import List from "./components/List"; | ||||||
|  | import GroupList from "./components/GroupList"; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |   name: "AppCallDetails", | ||||||
|  |   label: "调用明细", | ||||||
|  |   props: { | ||||||
|  |     instance: Function, | ||||||
|  |     dict: Object, | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       component: "List", | ||||||
|  |       params: {}, | ||||||
|  |       include: [], | ||||||
|  |  | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   components: { | ||||||
|  |     GroupList, | ||||||
|  |     List | ||||||
|  |   }, | ||||||
|  |   mounted() { | ||||||
|  |     if (this.$route.params.id) { | ||||||
|  |       this.component = 'Detail' | ||||||
|  |       this.params = { | ||||||
|  |         id: this.$route.params.id | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     onChange(data) { | ||||||
|  |       if (data.type === "GroupList") { | ||||||
|  |         this.component = "GroupList"; | ||||||
|  |         this.params = data.params; | ||||||
|  |       } | ||||||
|  |       if (data.type === "List") { | ||||||
|  |         this.component = "List"; | ||||||
|  |         this.params = data.params; | ||||||
|  |  | ||||||
|  |         this.$nextTick(() => { | ||||||
|  |           if (data.isRefresh) { | ||||||
|  |             this.$refs.component.getTableData(); | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |        | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss"> | ||||||
|  | .AppCallDetails { | ||||||
|  |   height: 100%; | ||||||
|  |   background: #f3f6f9; | ||||||
|  |   overflow: auto; | ||||||
|  | } | ||||||
|  | </style> | ||||||
							
								
								
									
										247
									
								
								packages/xbot/AppCallDetails/components/GroupList.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										247
									
								
								packages/xbot/AppCallDetails/components/GroupList.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,247 @@ | |||||||
|  | <template> | ||||||
|  |   <section class="GroupList"> | ||||||
|  |     <ai-list> | ||||||
|  |       <template slot="title"> | ||||||
|  |         <ai-title title="调用详情" isShowBottomBorder isShowBack @onBackClick="cancel(false)"></ai-title> | ||||||
|  |       </template> | ||||||
|  |       <template #content> | ||||||
|  |         <ai-search-bar> | ||||||
|  |           <template #left> | ||||||
|  |             <!-- <ai-select v-model="search.matchStatus" :selectList="dict.getDict('xbotGroupMatchStatus')" placeholder="请选择是否匹配" @change="search.current = 1, getTableData()"/> | ||||||
|  |             <ai-select v-model="search.status" :selectList="dict.getDict('xbotGroupStatus')" placeholder="请选择群状态" @change="search.current = 1, getTableData()"/> | ||||||
|  |             <el-button type="primary" @click="match">自动匹配</el-button> --> | ||||||
|  |             <el-date-picker v-model="time" size="small" type="daterange" value-format="yyyy-MM-dd" | ||||||
|  |               range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="search.current = 1, getTableData()"> | ||||||
|  |             </el-date-picker> | ||||||
|  |           </template> | ||||||
|  |           <template #right> | ||||||
|  |             <el-input | ||||||
|  |               v-model="search.groupName" | ||||||
|  |               size="small" | ||||||
|  |               placeholder="群名称" | ||||||
|  |               clearable | ||||||
|  |               v-throttle="() => {search.current = 1, getTableData()}" | ||||||
|  |               @clear="search.current = 1, search.groupName = '', getTableData()" | ||||||
|  |               suffix-icon="iconfont iconSearch"> | ||||||
|  |             </el-input> | ||||||
|  |           </template> | ||||||
|  |         </ai-search-bar> | ||||||
|  |         <ai-table :tableData="tableData" :total="total" :current.sync="search.current" :size.sync="search.size" | ||||||
|  |                   @getList="getTableData()" :col-configs="colConfigs"> | ||||||
|  |           <el-table-column slot="avatar" label="群聊头像"  align="left"> | ||||||
|  |             <template slot-scope="{ row }"> | ||||||
|  |               <img :src="row.avatar ? row.avatar : 'https://cdn.cunwuyun.cn/dvcp/group-img.png'" alt="" class="group-avatar"> | ||||||
|  |             </template> | ||||||
|  |           </el-table-column> | ||||||
|  |           <el-table-column slot="option" label="操作"  align="center"> | ||||||
|  |             <template slot-scope="{ row }"> | ||||||
|  |               <div class="table-options"> | ||||||
|  |                 <el-button type="text" @click="edit(row)">编辑</el-button> | ||||||
|  |               </div> | ||||||
|  |             </template> | ||||||
|  |           </el-table-column> | ||||||
|  |         </ai-table> | ||||||
|  |       </template> | ||||||
|  |     </ai-list> | ||||||
|  |     <ai-dialog | ||||||
|  |       :visible.sync="dialog" | ||||||
|  |       width="800px" | ||||||
|  |       @close="dialog=false" | ||||||
|  |       title="群关联信息" | ||||||
|  |       @onConfirm="onConfirm"> | ||||||
|  |       <el-form class="ai-form" label-width="120px" :model="editInfo" ref="editInfo"> | ||||||
|  |         <el-form-item label="群名称" style="width: 100%;"> | ||||||
|  |           <div>{{editInfo.nickname}}</div> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="群主ID" style="width: 100%;"> | ||||||
|  |           <div>{{editInfo.managerWxid}}</div> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="人员关联" prop="managerTpUserName" style="width: 100%;" :rules="[{ required: true, message: '请选择人员' }]"> | ||||||
|  |           <el-input disabled size="small" v-model="editInfo.managerTpUserName" clearable placeholder="请选择人员"> | ||||||
|  |             <template slot="append"> | ||||||
|  |               <ai-user-selecter refs="addTags" :isMultiple="false" :instance="instance" v-model="editInfo.user" @change="onChooseUser"> | ||||||
|  |                 <el-button size="small">选择人员</el-button> | ||||||
|  |               </ai-user-selecter> | ||||||
|  |             </template> | ||||||
|  |           </el-input> | ||||||
|  |         </el-form-item> | ||||||
|  |       </el-form> | ||||||
|  |     </ai-dialog> | ||||||
|  |   </section> | ||||||
|  |  | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import { mapState } from "vuex"; | ||||||
|  | export default { | ||||||
|  |   name: "GroupList", | ||||||
|  |   props: { | ||||||
|  |     instance: Function, | ||||||
|  |     dict: Object, | ||||||
|  |     params: Object | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       search: { | ||||||
|  |         current: 1, | ||||||
|  |         size: 10, | ||||||
|  |         groupName: '' | ||||||
|  |       }, | ||||||
|  |       tableData: [], | ||||||
|  |       total: 0, | ||||||
|  |       dialog: false, | ||||||
|  |       editInfo: {}, | ||||||
|  |       time: [] | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   created() { | ||||||
|  |     this.dict.load('xbotGroupMatchStatus', 'xbotGroupStatus').then(() => { | ||||||
|  |       this.getTableData() | ||||||
|  |     }) | ||||||
|  |   }, | ||||||
|  |   computed: { | ||||||
|  |     ...mapState(['user']), | ||||||
|  |     colConfigs() { | ||||||
|  |       return [ | ||||||
|  |         { slot: "avatar", label: '群聊头像'}, | ||||||
|  |         { prop: "nickname", label: '群名称', align: 'center'}, | ||||||
|  |         { prop: "managerNickname", label: '群主昵称', align: 'center'}, | ||||||
|  |         { prop: "aiTotal", label: '累计调用'}, | ||||||
|  |         { prop: "aiActive", label: '主动调用'}, | ||||||
|  |         { prop: "aiPassive", label: '被动调用'}, | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     getTableData() { | ||||||
|  |       this.instance.post(`/app/appmasssendingtaskbaidu/infoList`,null,{ | ||||||
|  |         params: { | ||||||
|  |           ...this.search, | ||||||
|  |           clientId: this.params.id, | ||||||
|  |           beginTime: this.time[0] || '', | ||||||
|  |           endTime: this.time[1] || '' , | ||||||
|  |         } | ||||||
|  |       }).then(res => { | ||||||
|  |         if(res?.data) { | ||||||
|  |           this.tableData = res.data.records | ||||||
|  |           this.total = res.data.total | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     showDialog(row) { | ||||||
|  |       this.dialog = true | ||||||
|  |       this.groupInfo = row | ||||||
|  |       this.getTableDataGroup() | ||||||
|  |     }, | ||||||
|  |     getTableDataGroup() { | ||||||
|  |       this.instance.post(`/app/xbotCallback/groupList`,null,{ | ||||||
|  |         params: { | ||||||
|  |           // ...this.searchGroup, | ||||||
|  |           current: 1, | ||||||
|  |           managerWxid: this.groupInfo.loginUserId, | ||||||
|  |           beginTime: this.time[0] || '', | ||||||
|  |           endTime: this.time[1] || '' , | ||||||
|  |         } | ||||||
|  |       }).then(res => { | ||||||
|  |         if(res?.data) { | ||||||
|  |           this.tableDataGroup = JSON.parse(res.data) | ||||||
|  |           this.tableDataGroup.map((item) => { | ||||||
|  |             item.num = item.member_list.length | ||||||
|  |           }) | ||||||
|  |           // this.totalGroup = res.data.total | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     cancel(isRefresh) { | ||||||
|  |       this.$emit('change', { | ||||||
|  |         type: 'List', | ||||||
|  |         isRefresh: !!isRefresh | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     match() { | ||||||
|  |       this.instance.post(`/app/xbotCallback/automaticMatch`,null,{ | ||||||
|  |         params: { | ||||||
|  |           managerWxid: this.params.loginUserId | ||||||
|  |         } | ||||||
|  |       }).then(res => { | ||||||
|  |         if(res.code == 0) { | ||||||
|  |           this.$message.success('匹配成功!') | ||||||
|  |           this.getTableData() | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     edit(row) { | ||||||
|  |       this.dialog = true | ||||||
|  |       this.editInfo = {...row} | ||||||
|  |       this.editInfo.user = [{id: row.managerTpwxid, name: row.managerTpUserName}] | ||||||
|  |     }, | ||||||
|  |     onChooseUser(v) { | ||||||
|  |       this.editInfo.wxUserId = v[0].id | ||||||
|  |       this.editInfo.managerTpUserName = v[0].name | ||||||
|  |       this.editInfo.user = v | ||||||
|  |     }, | ||||||
|  |     onConfirm() { | ||||||
|  |       this.$refs.editInfo.validate(v => { | ||||||
|  |         if (v) { | ||||||
|  |           this.instance.post('/app/xbotCallback/manualMatch', null, { | ||||||
|  |             params: { | ||||||
|  |               wxUserId: this.editInfo.wxUserId, | ||||||
|  |               wxid: this.editInfo.wxid | ||||||
|  |             } | ||||||
|  |           }).then(res => { | ||||||
|  |             if (res?.code == 0) { | ||||||
|  |               this.dialog = false | ||||||
|  |               this.getTableData() | ||||||
|  |               this.$message.success('编辑成功!') | ||||||
|  |             } | ||||||
|  |           }) | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | .GroupList { | ||||||
|  |   height: 100%; | ||||||
|  |  | ||||||
|  |   .time-select { | ||||||
|  |     padding: 0 16px; | ||||||
|  |     height: 32px; | ||||||
|  |     line-height: 32px; | ||||||
|  |     border: 1px solid #d0d4dc; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: space-between; | ||||||
|  |     cursor: pointer; | ||||||
|  |     .el-icon-arrow-down { | ||||||
|  |       line-height: 32px; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   :deep .is-error { | ||||||
|  |     .time-select { | ||||||
|  |       border: 1px solid #f46!important; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   .tips { | ||||||
|  |     display: inline-block; | ||||||
|  |     color: #999; | ||||||
|  |     font-size: 14px; | ||||||
|  |     margin-left: 16px; | ||||||
|  |   } | ||||||
|  |   .group-avatar { | ||||||
|  |     width: 50px; | ||||||
|  |     height: 50px; | ||||||
|  |     border-radius: 50%; | ||||||
|  |   } | ||||||
|  |   :deep .ai-dialog__content--wrapper { | ||||||
|  |     // height: 1000px; | ||||||
|  |     // overflow-y: scroll; | ||||||
|  |     .ai-table { | ||||||
|  |       // height: 1000px; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
							
								
								
									
										322
									
								
								packages/xbot/AppCallDetails/components/List.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								packages/xbot/AppCallDetails/components/List.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,322 @@ | |||||||
|  | <template> | ||||||
|  |   <section class="List"> | ||||||
|  |     <ai-list> | ||||||
|  |       <template slot="title"> | ||||||
|  |         <ai-title title="调用明细" isShowBottomBorder></ai-title> | ||||||
|  |       </template> | ||||||
|  |       <template #content> | ||||||
|  |         <ai-search-bar> | ||||||
|  |           <template #left> | ||||||
|  |             <el-select v-model="configInfo.id" filterable placeholder="请选择机位" size="small" @change="configChange" clearable> | ||||||
|  |               <el-option | ||||||
|  |                 v-for="item in configList" | ||||||
|  |                 :key="item.value" | ||||||
|  |                 :label="item.label" | ||||||
|  |                 :value="item.value"> | ||||||
|  |               </el-option> | ||||||
|  |             </el-select> | ||||||
|  |             <ai-area-get | ||||||
|  |               style="width: 180px;" | ||||||
|  |               placeholder="所属地区" | ||||||
|  |               :instance="instance" | ||||||
|  |               v-model="search.areaId" | ||||||
|  |               @change="getListInit"/> | ||||||
|  |               <el-date-picker v-model="time" size="small" type="daterange" value-format="yyyy-MM-dd" | ||||||
|  |               range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="getListInit()"> | ||||||
|  |             </el-date-picker> | ||||||
|  |             <!-- <span class="tips">当前机位1有效期为:{{configInfo.validity}}    ip地址为:{{configInfo.xbotIp}}</span> --> | ||||||
|  |           </template> | ||||||
|  |           <template #right> | ||||||
|  |             <!-- <ai-download :instance="instance" url="/app/appepidemicbackhomerecord/export" fileName="调用明细" :disabled="tableData.length == 0"> | ||||||
|  |               <el-button icon="iconfont iconExported" :disabled="tableData.length == 0">导出</el-button> | ||||||
|  |             </ai-download> --> | ||||||
|  |             <el-input | ||||||
|  |               v-model="search.loginUserName" | ||||||
|  |               size="small" | ||||||
|  |               v-throttle="() => { search.current = 1, getListInit() }" | ||||||
|  |               placeholder="姓名/手机号" | ||||||
|  |               clearable | ||||||
|  |               @clear="search.current = 1, search.loginUserName = '', getListInit()" | ||||||
|  |               suffix-icon="iconfont iconSearch"> | ||||||
|  |             </el-input> | ||||||
|  |           </template> | ||||||
|  |         </ai-search-bar> | ||||||
|  |         <ai-table :tableData="tableData" :total="total" :current.sync="search.current" :size.sync="search.size" | ||||||
|  |                   @getList="getTableData()" :col-configs="colConfigs"> | ||||||
|  |           <el-table-column slot="avatar" label="头像 "  align="left" width="200"> | ||||||
|  |             <template slot-scope="{ row }"> | ||||||
|  |               <img :src="row.avatar ? row.avatar : 'https://cdn.cunwuyun.cn/dvcp/group-img.png'" alt="" class="group-avatar"> | ||||||
|  |             </template> | ||||||
|  |           </el-table-column> | ||||||
|  |           <el-table-column slot="options" label="操作"  align="center" width="200px"> | ||||||
|  |             <template slot-scope="{ row }"> | ||||||
|  |               <el-button type="text" @click="toGroup(row)">详情</el-button> | ||||||
|  |               <!-- <el-button type="text" @click="toAnnouce(row)">推送任务</el-button> --> | ||||||
|  |             </template> | ||||||
|  |           </el-table-column> | ||||||
|  |         </ai-table> | ||||||
|  |       </template> | ||||||
|  |     </ai-list> | ||||||
|  |     <ai-dialog | ||||||
|  |       title="监控群聊" | ||||||
|  |       :visible.sync="dialog" | ||||||
|  |       :destroyOnClose="true" | ||||||
|  |       width="720px" | ||||||
|  |       :customFooter="true"> | ||||||
|  |         <ai-table :tableData="tableDataGroup" :isShowPagination="false" | ||||||
|  |           @getList="getTableDataGroup()" :col-configs="colConfigsGroup"> | ||||||
|  |           <el-table-column slot="avatar" label="群聊头像"  align="left"> | ||||||
|  |             <template slot-scope="{ row }"> | ||||||
|  |               <img :src="row.avatar ? row.avatar : 'https://cdn.cunwuyun.cn/dvcp/group-img.png'" alt="" class="group-avatar"> | ||||||
|  |             </template> | ||||||
|  |           </el-table-column> | ||||||
|  |         </ai-table> | ||||||
|  |         <div class="dialog-footer" slot="footer"> | ||||||
|  |           <el-button @click="dialog=false">关闭</el-button> | ||||||
|  |         </div> | ||||||
|  |     </ai-dialog> | ||||||
|  |     <ai-dialog | ||||||
|  |       title="所属地区设置" | ||||||
|  |       :visible.sync="showArea" | ||||||
|  |       :destroyOnClose="true" | ||||||
|  |       width="720px" | ||||||
|  |       @onConfirm="areaConfirm" | ||||||
|  |       > | ||||||
|  |       <el-form class="ai-form" :model="areaInfo" label-width="120px" ref="form"> | ||||||
|  |         <el-form-item prop="areaId" style="width: 100%;" label="所属地区" :rules="[{required: true, message: '请选择所属地区地区', trigger: 'change'}]"> | ||||||
|  |           <ai-area-get style="width: 400px;" placeholder="所属地区" :instance="instance" v-model="areaInfo.areaId" :name.sync="areaInfo.areaName" /> | ||||||
|  |         </el-form-item> | ||||||
|  |       </el-form> | ||||||
|  |     </ai-dialog> | ||||||
|  |   </section> | ||||||
|  |  | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import { mapState } from "vuex"; | ||||||
|  | export default { | ||||||
|  |   name: "List", | ||||||
|  |   props: { | ||||||
|  |     instance: Function, | ||||||
|  |     dict: Object | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       search: { | ||||||
|  |         areaId: '', | ||||||
|  |         current: 1, | ||||||
|  |         size: 10, | ||||||
|  |         loginUserName: '' | ||||||
|  |       }, | ||||||
|  |       tableData: [], | ||||||
|  |       total: 0, | ||||||
|  |       dialog: false, | ||||||
|  |       configList: [], | ||||||
|  |       configId: '', | ||||||
|  |       configInfo: {id: ''}, | ||||||
|  |       groupInfo: {}, | ||||||
|  |       searchGroup: { | ||||||
|  |         current: 1, | ||||||
|  |         size: 10, | ||||||
|  |       }, | ||||||
|  |       tableDataGroup: [], | ||||||
|  |       totalGroup: 0, | ||||||
|  |       showArea: false, | ||||||
|  |       areaInfo: {}, | ||||||
|  |       time: [] | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   created() { | ||||||
|  |     this.dict.load('yesOrNo', 'deviceStatus').then(() => { | ||||||
|  |       this.getConfigList() | ||||||
|  |     }) | ||||||
|  |   }, | ||||||
|  |   computed: { | ||||||
|  |     ...mapState(['user']), | ||||||
|  |     colConfigs() { | ||||||
|  |       return [ | ||||||
|  |         { slot: "avatar"}, | ||||||
|  |         { prop: "xbotName", label: '机位'}, | ||||||
|  |         { slot: "loginUserId", label: '用户id'}, | ||||||
|  |         { prop: "loginUserName", label: '姓名', align: "left"}, | ||||||
|  |         { prop: "phone", label: '手机号'}, | ||||||
|  |         { prop: "aiTotal", label: '累计调用'}, | ||||||
|  |         { prop: "aiActive", label: '主动调用'}, | ||||||
|  |         { prop: "aiPassive", label: '被动调用'}, | ||||||
|  |         { prop: "areaName", label: '所属地区'}, | ||||||
|  |         { slot: "option"}, | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     colConfigsGroup() { | ||||||
|  |       return [ | ||||||
|  |         { slot: "avatar", label: '群聊头像'}, | ||||||
|  |         { prop: "nickname", label: '群聊名称', align: 'center'}, | ||||||
|  |         { prop: "is_manager", label: '是否管理员', dict: 'yesOrNo', align: 'center'}, | ||||||
|  |         { prop: "num", label: '群聊成员(人数)', align: 'center'}, | ||||||
|  |         // { prop: "phone", label: '群主'}, | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     getConfigList() { | ||||||
|  |       this.instance.post(`/app/appxbotconfig/list?size=1000`).then(res => { | ||||||
|  |         if(res?.data) { | ||||||
|  |           res.data.records.map((item) => { | ||||||
|  |             item.label = item.xbotName | ||||||
|  |             item.value = item.id | ||||||
|  |           }) | ||||||
|  |           this.configList = res.data.records | ||||||
|  |           // this.configInfo = this.configList[0] | ||||||
|  |           this.getTableData() | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     configChange(e) { | ||||||
|  |       if(e) { | ||||||
|  |         this.configList.map((item) => { | ||||||
|  |           if(item.id == e) { | ||||||
|  |             this.configInfo = {...item} | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }else { | ||||||
|  |         this.configInfo = {id: ''} | ||||||
|  |       } | ||||||
|  |       this.search.current = 1 | ||||||
|  |       this.getTableData() | ||||||
|  |     }, | ||||||
|  |     openWechat() { | ||||||
|  |       this.instance.post(`/app/appxbotconfig/openWechat?id=${this.configInfo.id}`).then(res => { | ||||||
|  |         if(res.code === 0) { | ||||||
|  |           this.configInfo.status = 0 | ||||||
|  |           this.$message.success('启动成功!') | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     getListInit() { | ||||||
|  |       this.search.current = 1 | ||||||
|  |       this.getTableData() | ||||||
|  |     }, | ||||||
|  |     getTableData() { | ||||||
|  |       this.instance.post(`/app/xbotCallback/list2`,null,{ | ||||||
|  |         params: { | ||||||
|  |           ...this.search, | ||||||
|  |           loginUserName: this.search.name, | ||||||
|  |           beginTime: this.time[0] || '', | ||||||
|  |           endTime: this.time[1] || '' , | ||||||
|  |           xbotId: this.configInfo.id ? this.configInfo.id : '' | ||||||
|  |         } | ||||||
|  |       }).then(res => { | ||||||
|  |         if(res?.data) { | ||||||
|  |           this.tableData = res.data.records | ||||||
|  |           this.total = res.data.total | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     showDialog(row) { | ||||||
|  |       if(row.status == 1) { | ||||||
|  |         this.dialog = true | ||||||
|  |         this.groupInfo = row | ||||||
|  |         this.getTableDataGroup() | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     changeArea(row) { | ||||||
|  |       this.showArea = true | ||||||
|  |       this.areaInfo = {...row} | ||||||
|  |       this.$refs['form'].clearValidate(); | ||||||
|  |     }, | ||||||
|  |     areaConfirm() { | ||||||
|  |       this.$refs['form'].validate((valid) => { | ||||||
|  |         if (valid) { | ||||||
|  |           this.instance.post(`app/xbotCallback/updateArea?id=${this.areaInfo.id}&areaId=${this.areaInfo.areaId}&areaName=${this.areaInfo.areaName}`).then(res => { | ||||||
|  |             if (res.code == 0) { | ||||||
|  |               this.$message.success('所属地区设置成功') | ||||||
|  |               this.showArea = false | ||||||
|  |               this.getListInit() | ||||||
|  |             } | ||||||
|  |           }) | ||||||
|  |         } else { | ||||||
|  |           return false | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     getTableDataGroup() { | ||||||
|  |       this.tableDataGroup = [] | ||||||
|  |       this.instance.post(`/app/xbotCallback/groupList`,null,{ | ||||||
|  |         params: { | ||||||
|  |           // ...this.searchGroup, | ||||||
|  |           current: 1, | ||||||
|  |           managerWxid: this.groupInfo.loginUserId, | ||||||
|  |           xbotId: this.groupInfo.xbotId | ||||||
|  |         } | ||||||
|  |       }).then(res => { | ||||||
|  |         if(res?.data) { | ||||||
|  |           var tableDataGroup = JSON.parse(res.data) | ||||||
|  |           tableDataGroup.map((item) => { | ||||||
|  |             item.num = item.member_list.length | ||||||
|  |             if(item.total_member > 2) { | ||||||
|  |               this.tableDataGroup.push(item) | ||||||
|  |             } | ||||||
|  |           }) | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     toGroup(row) { | ||||||
|  |       this.$emit('change', { | ||||||
|  |         type: 'GroupList', | ||||||
|  |         params:row | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     toAnnouce(row) { | ||||||
|  |       this.$emit('change', { | ||||||
|  |         type: 'AnnounceList', | ||||||
|  |         params: row, | ||||||
|  |         isRefresh: true | ||||||
|  |       }) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | .List { | ||||||
|  |   height: 100%; | ||||||
|  |  | ||||||
|  |   .time-select { | ||||||
|  |     padding: 0 16px; | ||||||
|  |     height: 32px; | ||||||
|  |     line-height: 32px; | ||||||
|  |     border: 1px solid #d0d4dc; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: space-between; | ||||||
|  |     cursor: pointer; | ||||||
|  |     .el-icon-arrow-down { | ||||||
|  |       line-height: 32px; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   :deep .is-error { | ||||||
|  |     .time-select { | ||||||
|  |       border: 1px solid #f46!important; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   .tips { | ||||||
|  |     display: inline-block; | ||||||
|  |     color: #999; | ||||||
|  |     font-size: 14px; | ||||||
|  |     margin-left: 16px; | ||||||
|  |   } | ||||||
|  |   .group-avatar { | ||||||
|  |     width: 50px; | ||||||
|  |     height: 50px; | ||||||
|  |     border-radius: 50%; | ||||||
|  |   } | ||||||
|  |   :deep .ai-dialog__content--wrapper { | ||||||
|  |     // height: 1000px; | ||||||
|  |     // overflow-y: scroll; | ||||||
|  |     .ai-table { | ||||||
|  |       // height: 1000px; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
		Reference in New Issue
	
	Block a user