Initial commit

上级 07c55de3
此差异已折叠。
因为 它太大了无法显示 source diff 。你可以改为 查看blob
<template>
<div>
<el-container>
<el-main>
<el-dialog title="新增算法问题" :visible.sync="dialogFormVisible" style="width: 100%">
<el-form :model="form" class="custom-form">
<el-form-item label="算法问题" :label-width="formLabelWidth" class="form-item">
<el-input v-model="form.question" autocomplete="off" style="width: 100%"></el-input>
</el-form-item>
<br />
<el-form-item label="问题类型" :label-width="formLabelWidth" class="form-item">
<el-select v-model="form.questionType" placeholder="请选择活动区域">
<el-option v-for="item in options" :key="item.questionType" :label="item.name" :value="item.questionType"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="handleConfirm(0)">确 定</el-button>
</div>
</el-dialog>
<el-dialog class="red-title" :visible.sync="dialogMutiFormVisible">
<div class="red-title" slot="title">批量新增算法问题(多个问题换行填写)</div>
<el-form :model="form" class="custom-form">
<el-form-item label="算法问题" :label-width="formLabelWidth" class="form-item">
<el-input type="textarea" v-model="form.question" autocomplete="off" :rows="5" :cols="30" style="width: 100%"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogMutiFormVisible = false">取 消</el-button>
<el-button type="primary" @click="handleConfirm(1)">确 定</el-button>
</div>
</el-dialog>
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item>
<el-input clearable v-model="formInline.questionName" placeholder="请输入问题" @keydown.enter.native="interviewPage"></el-input>
</el-form-item>
<el-select v-model="questionType" placeholder="请选择" @change="interviewPage">
<el-option v-for="item in options" :key="item.questionType" :label="item.name" :value="item.questionType"></el-option>
</el-select>
<el-form-item>
<el-button type="primary" @click="interviewPage">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="prepareAdd">新增</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="prepareMutiAdd">批量新增</el-button>
</el-form-item>
</el-form>
<el-table border :data="algorithmicList" v-loading="loading">
<el-table-column prop="id" label="序号" width="100" sortable></el-table-column>
<el-table-column prop="questionName" label="算法问题" show-overflow-tooltip></el-table-column>
<el-table-column prop="questionTypeName" label="问题类型" show-overflow-tooltip align="center">
<template slot-scope="scope">
<span :class="getClassForValue(scope.row.questionTypeName)" v-html="scope.row.questionTypeName"></span>
</template>
</el-table-column>
<el-table-column prop="degreeOfImportance" label="重要程度" show-overflow-tooltip></el-table-column>
<el-table-column prop="degreeOfDifficulty" label="难易程度" show-overflow-tooltip></el-table-column>
<el-table-column prop="difficultyOfScore" label="难易分数" show-overflow-tooltip></el-table-column>
<el-table-column prop="leetcodeNumber" label="力扣号" show-overflow-tooltip></el-table-column>
<el-table-column label="力扣链接" show-overflow-tooltip>
<template slot-scope="scope">
<a :href="scope.row.leetcodeLink" target="_blank">{{ scope.row.leetcodeLink }}</a>
</template>
</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="preEdit(props.row.id, props.row.question, props.row.questionTypeName)" width="200">编辑</el-button>
<el-dialog title="编辑算法问题" :visible.sync="editVisible">
<el-form :model="form">
<el-form-item label="算法问题" :label-width="formLabelWidth">
<el-input class="custom-textarea" type="textarea" v-model="form.question" autocomplete="off" :rows="5" :cols="30" style="text-align: left"></el-input>
</el-form-item>
<el-form-item label="问题类型" :label-width="formLabelWidth">
<el-select v-model="form.questionType" placeholder="请选择问题类型" style="text-align: left">
<el-option v-for="item in options" :key="item.questionType" :label="item.name" :value="item.questionType"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="editVisible = false">取 消</el-button>
<el-button type="primary" @click="editConfirm">确 定</el-button>
</div>
</el-dialog>
<el-button type="danger" @click="prepareDelete(props.row.id)">删除</el-button>
<el-dialog title="提示" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
<span>确认删除吗</span>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click.prevent="onDelete(currentRowId)">确 定</el-button>
</span>
</el-dialog>
</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>
</template>
<script>
import axios from 'axios'
export default {
name: 'MyInterview',
data() {
return {
// 用户列表数据
algorithmicList: [],
loading: false,
elementui_page_component_key: 0,
currentPage: Number(localStorage.getItem('lastPage')) || 1,
pageSize: 9,
total: 0,
formInline: {
questionName: '',
},
options: [],
questionType: 0,
// 新增的内容
dialogFormVisible: false,
dialogMutiFormVisible: false,
form: {
question: '',
questionType: 0,
},
formLabelWidth: '120px',
dialogVisible: false,
editVisible: false,
currentRowId: null,
}
},
watch: {
'formInline.question'(newVal) {
if (newVal === '') {
this.currentPage = 1
localStorage.setItem('lastPage', this.currentPage)
this.interviewPage()
}
},
},
created() {
//获取问题类型的枚举
this.getQuestionType()
//获取问题列表
this.interviewPage()
},
mounted() {},
methods: {
prepareAdd() {
this.form.question = ''
this.form.questionType = 0
this.dialogFormVisible = true
},
prepareMutiAdd() {
this.form.question = ''
this.form.questionType = 0
this.dialogMutiFormVisible = true
},
prepareDelete(id) {
this.currentRowId = id
this.dialogVisible = true
},
preEdit(id, question, questionTypeName) {
this.form.question = question
// 定义一个映射(map)来存储 questionType 到 name 的转换
const questionTypeToNameMap = {}
this.options.forEach((option) => {
questionTypeToNameMap[option.name] = option.questionType
})
this.form.questionType = questionTypeToNameMap[questionTypeName]
this.currentRowId = id
this.editVisible = true
},
handleClose(done) {
this.$confirm('确认关闭?')
.then((_) => {
done()
})
.catch((_) => {})
},
handleConfirm(addType) {
this.dialogFormVisible = false // 关闭对话框
this.dialogMutiFormVisible = false
this.addQuestion(addType) // 发送请求
},
async addQuestion(addType) {
try {
this.loading = true
const { data: res } = await axios.post('http://localhost:8888/algorithmicProblem/add', {
addType: addType,
question: this.form.question,
questionType: this.form.questionType,
})
if (res.code === 200) {
this.form.question = ''
this.form.questionType = 0
this.interviewPage() // 确保这个方法是有效的
} else {
console.error('Received non-200 status code', res)
this.errorMsg(res.message)
}
} catch (error) {
console.error('An error occurred while adding the question:', error)
// 异常处理逻辑
} finally {
this.loading = false
}
},
errorMsg(msg) {
this.$message({
showClose: true,
message: msg,
type: 'error',
})
},
async editConfirm() {
try {
this.loading = true
const { data: res } = await axios.post('http://localhost:8888/algorithmicProblem/update', {
id: this.currentRowId,
question: this.form.question,
questionType: this.form.questionType,
})
if (res.code === 200) {
this.form.question = ''
this.form.questionType = 0
this.editVisible = false
currentRowId: null
this.interviewPage() // 确保这个方法是有效的
} else {
console.error('Received non-200 status code', res)
}
} catch (error) {
console.error('An error occurred while adding the question:', error)
// 异常处理逻辑
} finally {
this.loading = false
}
},
async onDelete(id) {
this.dialogVisible = false
this.loading = true
const { data: res } = await axios.get('http://localhost:8888/algorithmicProblem/delete', {
params: {
id: id,
},
})
this.interviewPage()
this.loading = false
},
refreshPage() {
//获取问题类型的枚举
this.getQuestionType()
location.reload()
},
async getQuestionType() {
const { data: res } = await axios.get('http://localhost:8888/algorithmicProblem/questionType', { params: {} })
if (res.code === 200) {
this.options = res.result
}
},
async interviewPage() {
this.loading = true
const { data: res } = await axios.get('http://localhost:8888/algorithmicProblem/page', {
params: {
page: this.currentPage,
pageSize: this.pageSize,
questionName: this.formInline.questionName,
questionType: this.questionType,
},
})
if (res.code === 200) {
this.total = res.result.totalElements
// 定义一个映射(map)来存储 questionType 到 name 的转换
const questionTypeToNameMap = {}
this.options.forEach((option) => {
questionTypeToNameMap[option.questionType] = option.name
})
console.log(res.result.content)
console.log(questionTypeToNameMap)
// 修改 algorithmicList 中的每一个元素,将 questionType 转换为 name
res.result.content.forEach((item) => {
item.questionTypeName = questionTypeToNameMap[item.questionType] || 'Unknown'
})
this.algorithmicList = res.result.content
}
this.loading = false
},
getClassForValue(value) {
if (value === '链表') {
return 'reddish-purple-value'
}
// else if (value === '集合') {
// return 'new-orange-value'
// } else if (value === 'JVM') {
// return 'clove-tea-value'
// } else if (value === '并发编程') {
// return 'grassy-value'
// } else if (value === 'MySql') {
// return 'daylily-value'
// } else if (value === 'Redis') {
// return 'balloon-flower-value'
// } else if (value === '中间件') {
// return 'pink-value'
// } else if (value === 'Spring') {
// return 'purple-value'
// } else if (value === '微服务') {
// return 'sapphire-blue-value'
// } else if (value === '分布式') {
// return 'green-value'
// } else if (value === '项目') {
// return 'black-value'
// } else if (value === '算法') {
// return 'rose-hermosa-value'
// } else if (value === '反问环节') {
// return 'white-dress-value'
// } else if (value === '设计模式') {
// return 'prunus-gracilis-value'
// } else if (value === '其他') {
// return 'magenta-value'
// } else {
// return 'dark-blue-value'
// }
},
handleCurrentChange(currentPage) {
this.currentPage = currentPage
this.interviewPage()
},
},
}
</script>
<style lang="less" scoped>
.el-header {
background-color: #b3c0d1;
color: #333;
line-height: 60px;
}
.el-aside {
color: #333;
}
.pagination {
margin-top: 16px;
text-align: right;
}
.header-button-item {
margin-right: 15px;
font-size: 20px;
}
.red-title {
line-height: 24px;
font-size: 18px;
color: red;
}
.backtop {
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;
}
.reddish-purple-value {
color: #eb6ea5; /* 相同值的颜色 */
}
.new-orange-value {
color: #59b9c6; /* 相同值的颜色 */
}
.clove-tea-value {
color: #b4866b; /* 不同值的颜色 */
}
.grassy-value {
color: #c3d825; /* 不同值的颜色 */
}
.daylily-value {
color: #f8b862; /* 不同值的颜色 */
}
.balloon-flower-value {
color: #4d5aaf; /* 不同值的颜色 */
}
.pink-value {
color: #f47983; /* 不同值的颜色 */
}
.purple-value {
color: #8d4bbb; /* 不同值的颜色 */
}
.sapphire-blue-value {
color: #4b5cc4; /* 不同值的颜色 */
}
.green-value {
// #7367F0
color: #ce9ffc; /* 不同值的颜色 */
}
.black-value {
color: #000000; /* 不同值的颜色 */
}
.magenta-value {
color: #ff0097; /* 不同值的颜色 */
}
.dark-blue-value {
color: #3eede7; /* 不同值的颜色 */
}
.rose-hermosa-value {
color: #ff6fd8; /* 不同值的颜色 */
}
.white-dress-value {
color: #83ccd2; /* 不同值的颜色 */
}
.prunus-gracilis-value {
color: #5a79ba; /* 不同值的颜色 */
}
.custom-textarea {
width: 100%;
text-align: left;
}
.backtop:hover {
background-color: #0050a0;
}
</style>
\ No newline at end of file
......@@ -39,98 +39,98 @@
<script>
import axios from 'axios'
export default {
name: 'MyChat',
name: 'MyChat',
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) {
if (newVal === '') {
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/')
},
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) {
if (newVal === '') {
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://localhost: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/')
},
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,
},
})
console.log(res)
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
},
async initCartList() {
this.loading = true
const { data: res } = await axios.get('http://localhost:8888/chatbot/page', {
params: {
page: this.currentPage,
pageSize: this.pageSize,
question: this.formInline.question,
},
})
console.log(res)
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()
},
},
handleCurrentChange(currentPage) {
this.currentPage = currentPage
this.initCartList()
},
},
}
</script>
......
......@@ -195,7 +195,7 @@ export default {
try {
this.loading = true
const { data: res } = await axios.post('http://120.79.36.53:8888/interviewQuestion/add', {
const { data: res } = await axios.post('http://localhost:8888/interviewQuestion/add', {
addType: addType,
question: this.form.question,
questionType: this.form.questionType,
......@@ -226,7 +226,7 @@ export default {
try {
this.loading = true
const { data: res } = await axios.post('http://120.79.36.53:8888/interviewQuestion/update', {
const { data: res } = await axios.post('http://localhost:8888/interviewQuestion/update', {
id: this.currentRowId,
question: this.form.question,
questionType: this.form.questionType,
......@@ -251,7 +251,7 @@ export default {
async onDelete(id) {
this.dialogVisible = false
this.loading = true
const { data: res } = await axios.get('http://120.79.36.53:8888/interviewQuestion/delete', {
const { data: res } = await axios.get('http://localhost:8888/interviewQuestion/delete', {
params: {
id: id,
},
......@@ -266,7 +266,7 @@ export default {
},
async getQuestionType() {
const { data: res } = await axios.get('http://120.79.36.53:8888/interviewQuestion/questionType', { params: {} })
const { data: res } = await axios.get('http://localhost:8888/interviewQuestion/questionType', { params: {} })
if (res.code === 200) {
this.options = res.result
}
......@@ -274,7 +274,7 @@ export default {
async interviewPage() {
this.loading = true
const { data: res } = await axios.get('http://120.79.36.53:8888/interviewQuestion/page', {
const { data: res } = await axios.get('http://localhost:8888/interviewQuestion/page', {
params: {
page: this.currentPage,
pageSize: this.pageSize,
......
......@@ -106,7 +106,7 @@ export default {
},
async queryPic() {
this.loading = true
const { data: res } = await axios.get('http://120.79.36.53:8888/picInfo/page', {
const { data: res } = await axios.get('http://localhost:8888/picInfo/page', {
params: {
page: this.currentPage,
pageSize: this.pageSize,
......
......@@ -24,10 +24,10 @@
<span slot="title">用户管理</span>
</el-menu-item>
</router-link>
<router-link to="/home/goods">
<el-menu-item index="/goods" class="left-aside-item">
<i class="el-icon-goods"></i>
<span slot="title">商品管理</span>
<router-link to="/home/algorithmic">
<el-menu-item index="/algorithmic" class="left-aside-item">
<i class="el-icon-question"></i>
<span slot="title">算法题管理</span>
</el-menu-item>
</router-link>
<router-link to="/home/orders">
......
......@@ -42,7 +42,7 @@ export default {
response: this.form.response,
}
axios
.post('http://120.79.36.53:8888/chatbot', data)
.post('http://localhost:8888/chatbot', data)
.then((response) => {
// 只要请求回来的数据,在页面渲染期间要用到,则必须转存到 data 中
if (response.data.code === 200) {
......
......@@ -66,7 +66,7 @@ export default {
// 封装请求列表数据的方法
async initChatList() {
// 调用 axios 的 get 方法,请求列表数据
const { data: res } = await axios.get('http://120.79.36.53:8888/chatbot/' + this.id)
const { data: res } = await axios.get('http://localhost:8888/chatbot/' + this.id)
// 只要请求回来的数据,在页面渲染期间要用到,则必须转存到 data 中
if (res.code === 200) {
this.list = [
......
......@@ -12,6 +12,7 @@ import Goods from '@/components/menus/MyGoods.vue'
import Orders from '@/components/menus/MyOrders.vue'
import Chat from '@/components/menus/MyChat.vue'
import Interview from '@/components/menus/MyInterview.vue'
import Algorithmic from '@/components/menus/MyAlgorithmic.vue'
import Settings from '@/components/menus/MySettings.vue'
import UserDetail from '@/components/user/MyUserDetail.vue'
import MyChatDetail from '@/components/user/MyChatDetail.vue'
......@@ -46,8 +47,8 @@ const router = new VueRouter({
component: Pic
},
{
path: 'goods',
component: Goods
path: 'algorithmic',
component: Algorithmic
},
{
path: 'orders',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册