Commit 8d85fb63 authored by yaya's avatar yaya

feat: 添加会话记录

parent 0ea51992
...@@ -53,3 +53,11 @@ export function stopHumanIntervene(params) { ...@@ -53,3 +53,11 @@ export function stopHumanIntervene(params) {
data: params data: params
}) })
} }
export function findAiChatList(params) {
return request({
url: '/sysIMRecord/findAiChatList',
method: 'post',
data: params
})
}
...@@ -2,7 +2,15 @@ ...@@ -2,7 +2,15 @@
<div class="page_invite"> <div class="page_invite">
<div class="filter-container"> <div class="filter-container">
<el-input v-model="listQuery.nickName" clearable size="mini" class="filter-item" style="width: 200px;" placeholder="请输入用户昵称"/> <el-input v-model="listQuery.nickName" clearable size="mini" class="filter-item" style="width: 200px;" placeholder="请输入用户昵称"/>
<el-button size="mini" class="filter-item" type="primary" @click="handleAdd">生成邀请码</el-button> <el-select v-model="listQuery.toAccount" class="filter-item" size="mini" placeholder="请选择">
<el-option
v-for="item in customerList"
:key="item.code"
:label="item.name"
:value="item.code"/>
</el-select>
<el-button size="mini" class="filter-item" type="primary" @click="getList">查询</el-button>
<el-button size="mini" class="filter-item" @click="getList">重置</el-button>
</div> </div>
<!-- 查询结果 --> <!-- 查询结果 -->
<el-table <el-table
...@@ -13,23 +21,13 @@ ...@@ -13,23 +21,13 @@
border border
fit fit
highlight-current-row> highlight-current-row>
<el-table-column align="center" width="100px" label="邀请码ID" prop="id" sortable /> <el-table-column align="center" width="100px" label="会话ID" prop="fromAccount" sortable />
<el-table-column align="center" label="邀请码" prop="code" /> <el-table-column align="center" label="用户昵称" prop="fromAccountName" />
<el-table-column align="center" label="可邀请人数" prop="enabledNum" /> <el-table-column align="center" label="聊天机器人" prop="toAccountName" />
<el-table-column align="center" label="使用人数" prop="usedNum"/> <el-table-column align="center" label="用户累计消息数" prop="msgNum"/>
<el-table-column align="center" label="状态" prop="stateName" />
<el-table-column align="center" label="有效时间" prop="effectiveStartTime" width="300">
<template slot-scope="scope">
{{ `${scope.row.effectiveStartTime}至${scope.row.effectiveEndTime}` }}
</template>
</el-table-column>
<el-table-column align="center" label="创建时间" prop="createTime"/>
<el-table-column align="center" label="操作" width="250" class-name="small-padding fixed-width"> <el-table-column align="center" label="操作" width="250" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -39,19 +37,6 @@ ...@@ -39,19 +37,6 @@
size="mini" size="mini"
@click="handleToDetail(scope.row)">详情 @click="handleToDetail(scope.row)">详情
</el-button> </el-button>
<el-button
v-permission="['POST /admin/user/approveAgency']"
type="text"
size="mini"
@click="handleCopyCode(scope.row)">
复制邀请码
</el-button>
<el-button
v-permission="['GET /admin/user/detailApprove']"
:disabled="scope.row.state > 1"
type="text"
size="mini"
@click="handleSetEnable(scope.row)">失效</el-button>
</template> </template>
</el-table-column> </el-table-column>
...@@ -68,7 +53,7 @@ ...@@ -68,7 +53,7 @@
</template> </template>
<script> <script>
import { fetchList, setInvalid } from '@/api/business/invite' import { findAiChatList, getUserList } from '@/api/business/chat'
import Pagination from '@/components/Pagination' import Pagination from '@/components/Pagination'
export default { export default {
name: 'ChatList', name: 'ChatList',
...@@ -84,102 +69,39 @@ export default { ...@@ -84,102 +69,39 @@ export default {
limit: 20 limit: 20
}, },
list: [], list: [],
total: 0 total: 0,
customerList: []
} }
}, },
created() { created() {
this.handleGetChatList()
this.getList() this.getList()
}, },
methods: { methods: {
handleAdd() { /**
this.$router.push({ path: '/user/addInvite' }) * 获取客服列表
}, **/
handleToDetail(row) { handleGetChatList() {
this.$router.push({ path: '/user/inviteInfo', query: { id: row.code }}) const params = {}
}, getUserList(params).then(response => {
handleSetEnable(row) { if (response && response.data && response.data.data) {
this.$confirm('你确定要把邀请码设置失效吗?', '提示', { this.customerList = response.data.data
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = {
code: row.code
} }
setInvalid(params).then(response => { console.log('===list ===', response.data.data)
this.list = this.list.filter((item) => { }).catch(response => {
if (item.code === row.code) { this.$notify.error({
item.state = 6 title: '失败',
item.stateName = '已失效' message: response.data.errmsg || '请求失败'
return item
}
return item
})
this.$notify.success({
message: '设置失效成功'
})
}).catch((e) => {
}) })
}) })
}, },
/**
* 复制 handleToDetail(row) {
*/
handleCopyCode(row) {
// 复制结果
let copyResult = true
// 设置想要复制的文本内容
if (!row.code) {
return
}
const text = `藏家相册注册邀请码${row.code},最多可使用${row.enabledNum || 0}次,机会难得,快去体验吧~`
// 判断是否支持clipboard方式
if (window.navigator.clipboard) {
// 利用clipboard将文本写入剪贴板(这是一个异步promise)
window.navigator.clipboard.writeText(text).then((res) => {
console.log('复制成功')
// 返回复制操作的最终结果
return copyResult
}).catch((err) => {
copyResult = false
console.log('复制失败', err)
// 返回复制操作的最终结果
return copyResult
})
} else {
// 不支持clipboard方式 则采用document.execCommand()方式
// 创建一个input元素
const inputDom = document.createElement('textarea')
// 设置为只读 防止移动端手机上弹出软键盘
inputDom.setAttribute('readonly', 'readonly')
// 给input元素赋值
inputDom.value = text
// 将创建的input添加到body
document.body.appendChild(inputDom)
// 选中input元素的内容
inputDom.select()
// 执行浏览器复制命令
// 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签中的内容)
// Input要在正常的编辑状态下原生复制方法才会生效
const result = document.execCommand('copy')
// 判断是否复制成功
if (result) {
console.log('复制成功')
} else {
console.log('复制失败')
copyResult = false
}
// 复制操作后再将构造的标签 移除
document.body.removeChild(inputDom)
// 返回复制操作的最终结果
}
this.$notify.success({
message: '邀请码已复制,快去分享给好友吧~'
})
}, },
getList() { getList() {
this.listLoading = true this.listLoading = true
fetchList(this.listQuery).then(response => { findAiChatList(this.listQuery).then(response => {
this.list = response.data.data.dataList this.list = response.data.data.dataList
this.total = response.data.data.total this.total = response.data.data.total
this.listLoading = false this.listLoading = false
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment