MyChat.vue 4.4 KB
Newer Older
1
<template>
2 3 4 5
	<div>
		<el-container>
			<el-main>
				<el-form :inline="true" :model="formInline" class="demo-form-inline">
6
					<el-form-item>
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
						<el-input clearable v-model="formInline.question" placeholder="请输入问题" @keydown.enter.native="initCartList"></el-input>
					</el-form-item>
					<el-form-item>
						<el-button type="primary" @click="initCartList">查询</el-button>
					</el-form-item>
					<el-form-item>
						<el-button type="primary" @click.prevent="addChat">新增</el-button>
					</el-form-item>
				</el-form>
				<el-table border :data="userlist" v-loading="loading">
					<el-table-column prop="id" label="序号" width="100" sortable></el-table-column>
					<el-table-column prop="question" label="问题" width="240" show-overflow-tooltip></el-table-column>
					<el-table-column prop="response" label="答案" show-overflow-tooltip></el-table-column>
					<el-table-column label="创建时间" width="170">
						<template slot-scope="props">
							{{ props.row.createTime | dateFormat }}
						</template>
					</el-table-column>
					<el-table-column prop="详情" label="详情" width="180">
						<template slot-scope="props">
							<el-button type="success" @click.prevent="gotoDetail(props.row.id)">详情</el-button>
							<el-button type="danger" @click="onDelete(props.row.id)">删除</el-button>
						</template>
					</el-table-column>
				</el-table>
				<el-pagination class="pagination" background :key="elementui_page_component_key" :current-page.sync="currentPage" :page-size="pageSize" :total="total" @current-change="handleCurrentChange"></el-pagination>
			</el-main>
			<el-backtop class="backtop"></el-backtop>
		</el-container>
	</div>
37 38 39
</template>

<script>
40
import axios from 'axios'
41
export default {
42
	name: 'MyChat',
43

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
	data() {
		return {
			// 用户列表数据
			userlist: [],
			loading: false,
			elementui_page_component_key: 0,
			currentPage: Number(localStorage.getItem('lastPage')) || 1,
			pageSize: 9,
			total: 0,
			formInline: {
				question: '',
			},
		}
	},
	watch: {
		'formInline.question'(newVal, oldVal) {
			if (newVal !== oldVal) {
				this.currentPage = 1
				localStorage.setItem('lastPage', this.currentPage)
				this.initCartList()
			}
		},
	},
	created() {
		this.$nextTick(() => {
			const foo = this.$route.query.back
			const add = this.$route.query.add
			if (foo === 'back' && add != 'add') {
				this.currentPage = Number(localStorage.getItem('lastPage')) || 1
				this.formInline.question = localStorage.getItem('lastQuestion') || ''
			} else {
				localStorage.setItem('lastPage', 1)
				localStorage.setItem('lastQuestion', '')
				this.currentPage = 1
				this.formInline.question = ''
			}
			// 调用请求数据的方法
			this.initCartList()
		})
	},
	mounted() {
		this.currentPage = Number(localStorage.getItem('lastPage')) || 1
		this.formInline.question = localStorage.getItem('lastQuestion')
		this.elementui_page_component_key++
	},
	methods: {
		async onDelete(id) {
			this.loading = true
			const { data: res } = await axios.get('http://120.79.36.53:8888/chatbot/delete', {
				params: {
					id: id,
				},
			})
			this.initCartList()
			this.loading = false
		},
		refreshPage() {
			location.reload()
		},
		gotoDetail(id) {
			this.$router.push('/home/chatinfo/' + id)
		},
		addChat() {
			this.$router.push('/home/addChat/')
		},
109

110 111 112 113 114 115 116 117 118
		async initCartList() {
			this.loading = true
			const { data: res } = await axios.get('http://120.79.36.53:8888/chatbot/page', {
				params: {
					page: this.currentPage,
					pageSize: this.pageSize,
					question: this.formInline.question,
				},
			})
119

120 121 122 123 124 125 126 127 128 129 130 131 132 133
			if (res.code === 200) {
				this.userlist = res.result.content
				this.total = res.result.totalElements
				localStorage.setItem('lastPage', this.currentPage)
				localStorage.setItem('lastQuestion', this.formInline.question)
			}
			this.loading = false
		},

		handleCurrentChange(currentPage) {
			this.currentPage = currentPage
			this.initCartList()
		},
	},
134
}
135 136 137 138
</script>

<style lang="less" scoped>
.el-header {
139 140 141
	background-color: #b3c0d1;
	color: #333;
	line-height: 60px;
142 143 144
}

.el-aside {
145
	color: #333;
146 147 148
}

.pagination {
149 150
	margin-top: 16px;
	text-align: right;
151 152
}
.header-button-item {
153 154
	margin-right: 15px;
	font-size: 20px;
155 156 157
}

.backtop {
158 159 160 161 162 163 164 165 166 167 168 169
	position: fixed;
	bottom: 50px;
	right: 50px;
	height: 40px;
	width: 40px;
	line-height: 40px;
	text-align: center;
	border-radius: 20px;
	background-color: #007aff;
	color: #fff;
	cursor: pointer;
	z-index: 999;
170 171 172
}

.backtop:hover {
173
	background-color: #0050a0;
174
}
175
</style>