<el-button size="small" type="primary" @click="searchProxy">查询</el-button><el-checkbox v-model="selectAll" @change="changeSelectAll" >全选</el-checkbox><el-table:data="taskList"v-loading="loading"style="width: 100%;"header-align="left"align="left"@select="handleSelectionChange"@select-all="handleSelectAll"ref="multipleTable"height="100%"><el-table-columnv-hasPermission="$auth.call_task_transfer":selectable="canSelect"type="selection"width="55"></el-table-column></ai-table>async search() {try {this.loading = true;const searchKey = this.searchKey;const status = this.curstatus;let lg = this.taskList.length;let {customerExecStatus,exportTime} = this.formlet exportStartTime = ''let exportEndTime = ''if(customerExecStatus==-1){customerExecStatus=""}if(exportTime && exportTime.length==2){exportStartTime = this.$utils.formatDate(exportTime[0], 'yyyy-MM-dd')exportEndTime = this.$utils.formatDate(exportTime[1], 'yyyy-MM-dd')}const data = {searchKey: encodeURI(searchKey),pageNum: this.paging.pageIndex,pageSize: this.paging.pageSize,execStatus: this.execStatus,limitId: this.paging.pageIndex > 1 ? this.taskList[lg - 1].id : 0,...this.form,exportStartTime,exportEndTime,customerExecStatus,};if (status !== 0) {data.callResult = status;}this.getExportUrl(data);const res = await this.$axios.proxy({url: API.setting.outboundTask.customerList.replace('{id}', this.id),query: data,root: 'speech',method: 'get',})if (res.code !== API.code.OK) {throw res.message}const list = res.data.list || [];this.taskList = list;this.paging.total = res.data.total;this.totalNum = res.data.total;this.$nextTick(() => {this.taskList.forEach(item => {if(this.selectedArrMap.has(item.phoneNumber)){this.$refs.multipleTable.toggleRowSelection(item, true);}})});} catch (e) {this.$Notify({title: '提示',message: e,type: 'error',})} finally {this.loading = false}},
searchProxy() {this.paging.pageIndex = 1;this.selectedArr = []this.$nextTick(() => {this.taskList.forEach(item => {this.$refs.multipleTable.toggleRowSelection(item, false);})});this.search();},// 是否能够选中canSelect(row, index) {return !this.selectAll && row.execStatusCode == 0},// 单选handleSelectionChange(selection, row) {// 处理选中取消条数const selected = selection.length && selection.indexOf(row) !== -1;if (!selected) {const res = this.selectedArr.findIndex(// item => item.taskCustomerId == row.taskCustomerIditem => item.phoneNumber == row.phoneNumber);this.selectedArr.splice(res, 1);} else {this.selectedArr.push(row);}},// 全选handleSelectAll(rows) {// 当前页全选if (rows.length) {rows.forEach(row => {// 如果在回显数据里没有匹配到对应客群id 则push到已选数组里if (!this.selectedArr.find(// item => item.taskCustomerId == row.taskCustomerIditem => item.phoneNumber == row.phoneNumber)) {this.selectedArr.push(row);}});} else {// 当前页反选// 当前页所有数据过滤返回给已选数组里(筛除当前页数据)const _arr = []this.taskList.forEach(row => {// _arr.push(row.taskCustomerId)_arr.push(row.phoneNumber)});this.selectedArr = this.selectedArr.filter(// item => !_arr.includes(item.taskCustomerId)item => !_arr.includes(item.phoneNumber));}},changeSelectAll(val){if(!val){this.selectedArr = [] this.$nextTick(() => {this.taskList.forEach(item => {this.$refs.multipleTable.toggleRowSelection(item, false);})});}},computed: {// 已选多少条selectedTotal() {if(this.selectAll){return this.totalNum}return this.selectedArr.length || 0},selectedArrMap() {const _map = new Map()this.selectedArr.forEach(item => {// _map.set(item.taskCustomerId, item)_map.set(item.phoneNumber, item)})return _map},fieldsColumn(){let result = []if(this.column==2){result = [{label:'金额',key:'money',},{label:'期数',key:'periods',}]}return result},},