3 changed files with 268 additions and 277 deletions
-
25activitylink/src/api/manage/user.js
-
2activitylink/src/router/index.js
-
518activitylink/src/views/zhongchou/user/index.vue
@ -0,0 +1,25 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
export function getuserList(data) { |
|||
return request({ |
|||
url: '/admin/isLogin/selectByJwcode', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function deleteuserByjwcode(data) { |
|||
return request({ |
|||
url: '/admin/isLogin/deleteUser', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function adduserByjwcode(data) { |
|||
return request({ |
|||
url: '/admin/isLogin/addUser', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
@ -1,309 +1,275 @@ |
|||
<template> |
|||
<el-card style="margin-top: 50px; min-height: 90vh; max-height: 90vh;"> |
|||
<!-- 搜索栏 --> |
|||
<div class="gray-container"> |
|||
<h2>用户管理</h2> |
|||
<el-form :inline="true" class="search-bar"> |
|||
<el-form-item label="姓名"> |
|||
<el-input v-model="searchParams.username" placeholder="请输入姓名"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="精网号"> |
|||
<el-input |
|||
v-model="searchParams.jwcode" |
|||
placeholder="请输入精网号" |
|||
@input="handleJwcodeInput" |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" @click="handleSearch">搜索</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="handleReset">重置</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" @click="addusershow">添加用户</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!-- 表格 --> |
|||
<div class="table-container"> |
|||
<el-table :data="tableData" style="width: 100%" :row-style="{ height: '55px' }"> |
|||
<el-table-column prop="username" label="姓名" width="180" align="center"></el-table-column> |
|||
<el-table-column prop="jwcode" label="精网号" width="250" align="center"></el-table-column> |
|||
<el-table-column prop="gradeName" label="中奖等级" width="200" align="center"></el-table-column> |
|||
<el-table-column prop="prizeName" label="所中礼品" width="300" align="center"></el-table-column> |
|||
<el-table-column prop="winTime" label="中奖时间" align="center"></el-table-column> |
|||
<el-table-column label="操作" align="center"> |
|||
<template #default="scope"> |
|||
<el-button size="small" type="danger" @click="openDeleteDialog(scope.row)">删除</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
<el-card style="margin-top: 50px; min-height: 90vh; max-height: 90vh;"> |
|||
<!-- 搜索栏 --> |
|||
<div class="gray-container"> |
|||
<h2>用户管理</h2> |
|||
<el-form :inline="true" class="search-bar"> |
|||
<el-form-item label="精网号"> |
|||
<el-input |
|||
v-model="searchParams.jwcode" |
|||
placeholder="请输入精网号" |
|||
@input="handleJwcodeInput" |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" @click="handleSearch">搜索</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="handleReset">重置</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" @click="addusershow">添加用户</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!-- 表格 --> |
|||
<div class="table-container"> |
|||
<el-table :data="tableData" style="width: 100%" :row-style="{ height: '55px' }"> |
|||
|
|||
<el-table-column prop="jwcode" label="精网号" width="250" align="center"></el-table-column> |
|||
|
|||
<el-table-column prop="createTime" label="中奖时间" align="center"></el-table-column> |
|||
<el-table-column label="操作" align="center"> |
|||
<template #default="scope"> |
|||
<el-button size="small" type="danger" @click="openDeleteDialog(scope.row)">删除</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- 删除确认对话框 --> |
|||
<el-dialog v-model="deleteConfirmVisible" title="提示" width="30%"> |
|||
<span>您确定删除该用户吗?</span> |
|||
<template #footer> |
|||
<span class="dialog-footer"> |
|||
<el-button @click="deleteConfirmVisible = false">取 消</el-button> |
|||
<el-button type="primary" @click="confirmDelete">确 定</el-button> |
|||
</span> |
|||
</template> |
|||
</el-dialog> |
|||
|
|||
<!-- 分页组件 --> |
|||
<el-pagination |
|||
@size-change="handleSizeChange" |
|||
@current-change="handleCurrentChange" |
|||
:current-page="searchParams.pageNum" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="searchParams.pageSize" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
:total="total" |
|||
<!-- 删除确认对话框 --> |
|||
<el-dialog v-model="deleteConfirmVisible" title="提示" width="30%"> |
|||
<span>您确定删除该用户吗?</span> |
|||
<template #footer> |
|||
<span class="dialog-footer"> |
|||
<el-button @click="deleteConfirmVisible = false">取 消</el-button> |
|||
<el-button type="primary" @click="confirmDelete">确 定</el-button> |
|||
</span> |
|||
</template> |
|||
</el-dialog> |
|||
|
|||
<!-- 分页组件 --> |
|||
<el-pagination |
|||
@size-change="handleSizeChange" |
|||
@current-change="handleCurrentChange" |
|||
:current-page="searchParams.pageNum" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="searchParams.pageSize" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
:total="total" |
|||
> |
|||
</el-pagination> |
|||
|
|||
<el-dialog |
|||
v-model="centerDialogVisible" |
|||
title="添加用户" |
|||
width="500" |
|||
align-center |
|||
@closed="cancel" |
|||
> |
|||
</el-pagination> |
|||
|
|||
<el-dialog |
|||
v-model="centerDialogVisible" |
|||
title="添加用户" |
|||
width="500" |
|||
align-center |
|||
@closed="cancel" |
|||
> |
|||
<el-form ref="addForm" :model="JwUser" :rules="rules" label-width="80px"> |
|||
<el-form-item label="用户名称" prop="username"> |
|||
<el-input v-model="JwUser.username" placeholder="请输入用户名称" /> |
|||
</el-form-item> |
|||
<el-form-item label="精网号" prop="jwcode"> |
|||
<el-input v-model="JwUser.jwcode" placeholder="请输入精网号" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="cancel">取消</el-button> |
|||
<el-button type="primary" @click="addUser"> |
|||
提交 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
|
|||
</el-card> |
|||
</template> |
|||
|
|||
<script setup> |
|||
import { ref, onMounted } from 'vue' |
|||
import { useactivityStone } from '@/stone/activityStone' |
|||
import { useWinStone } from '@/stone/winStone' |
|||
import { getWinList, getWinLevelList ,exportWinExcel} from '@/api/manage/win' |
|||
import { onBeforeRouteLeave } from 'vue-router' |
|||
import { ElMessage } from 'element-plus' |
|||
const activityStone = useactivityStone() |
|||
const winStone = useWinStone() |
|||
|
|||
// 搜索参数(初始化时使用持久化值) |
|||
const searchParams = ref({ |
|||
pageNum: 1, |
|||
pageSize: 10, |
|||
username: "", |
|||
jwcode: "" |
|||
}) |
|||
const addForm = ref( |
|||
{ |
|||
username: '', |
|||
jwcode: '', |
|||
} |
|||
); |
|||
const deleteConfirmVisible = ref(false) |
|||
// 表格数据 |
|||
const tableData = ref([]) |
|||
const total = ref(0) |
|||
const centerDialogVisible = ref(false); |
|||
const addusershow = () => { |
|||
centerDialogVisible.value = true; |
|||
<el-form ref="addForm" :model="JwUser" :rules="rules" label-width="80px"> |
|||
<el-form-item label="精网号" prop="jwcode"> |
|||
<el-input v-model="JwUser.jwcode" placeholder="请输入精网号" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="cancel">取消</el-button> |
|||
<el-button type="primary" @click="addUser"> |
|||
提交 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
|
|||
</el-card> |
|||
</template> |
|||
|
|||
<script setup> |
|||
import { ref, onMounted } from 'vue' |
|||
import { getuserList , deleteuserByjwcode , adduserByjwcode } from '@/api/manage/user' |
|||
import { ElMessage } from 'element-plus' |
|||
|
|||
// 搜索参数(初始化时使用持久化值) |
|||
const searchParams = ref({ |
|||
pageNum: 1, |
|||
pageSize: 10, |
|||
jwcode: "" |
|||
}) |
|||
const addForm = ref( |
|||
{ |
|||
jwcode: '', |
|||
} |
|||
); |
|||
const deleteConfirmVisible = ref(false) |
|||
// 表格数据 |
|||
const tableData = ref([]) |
|||
const total = ref(0) |
|||
const centerDialogVisible = ref(false); |
|||
const addusershow = () => { |
|||
centerDialogVisible.value = true; |
|||
}; |
|||
|
|||
const deleteJwcode = ref('') |
|||
// 根据什么删除在定 |
|||
const openDeleteDialog = (row) => { |
|||
// activityToDelete.value = row.id |
|||
deleteConfirmVisible.value = true |
|||
deleteJwcode.value = row.jwcode |
|||
deleteConfirmVisible.value = true |
|||
} |
|||
// 确定删除 |
|||
const confirmDelete = async () => { |
|||
// if (!activityToDelete.value) { |
|||
// ElMessage.warning('未获取到活动ID') |
|||
// return |
|||
// } |
|||
|
|||
// try { |
|||
// const response = await deleteActivityById({activityId: activityToDelete.value}) |
|||
|
|||
// if (response.code === 200) { |
|||
// ElMessage.success('活动删除成功') |
|||
// fetchActivityList() // 刷新活动列表 |
|||
// } else { |
|||
// ElMessage.error(response.message || '删除失败') |
|||
// } |
|||
// } catch (error) { |
|||
// console.error('删除活动失败:', error) |
|||
// ElMessage.error('请求失败,请重试') |
|||
// } finally { |
|||
// deleteConfirmVisible.value = false |
|||
// activityToDelete.value = null |
|||
// } |
|||
console.log("删除用户") |
|||
fetchWinList() |
|||
try { |
|||
const response = await deleteuserByjwcode({ jwcode: deleteJwcode.value }) |
|||
if (response.code === 200) { |
|||
ElMessage.success('删除成功') |
|||
fetchWinList() // 刷新列表 |
|||
} else { |
|||
ElMessage.error(response.message || '删除失败') |
|||
} |
|||
} catch (error) { |
|||
ElMessage.error('删除请求失败,请稍后再试') |
|||
console.error('删除错误:', error) |
|||
} finally { |
|||
deleteConfirmVisible.value = false |
|||
} |
|||
} |
|||
|
|||
const addUser = () => { |
|||
console.log("添加用户") |
|||
centerDialogVisible.value = false; |
|||
|
|||
}; |
|||
|
|||
const JwUser = ref({ |
|||
username: '', |
|||
jwcode: '', |
|||
}) |
|||
const addUser = async () => { |
|||
try { |
|||
const response = await adduserByjwcode({ |
|||
jwcode: JwUser.value.jwcode |
|||
}); |
|||
|
|||
const validateJwcode = (rule, value, callback) => { |
|||
const isNumber = /^\d*$/.test(value); |
|||
if (!isNumber) { |
|||
callback(new Error('只能输入数字')); |
|||
if (response.code === 200) { |
|||
ElMessage.success('添加成功'); |
|||
centerDialogVisible.value = false; |
|||
fetchWinList(); // 刷新用户列表 |
|||
} else { |
|||
callback(); |
|||
ElMessage.error(response.message || '添加失败'); |
|||
} |
|||
} catch (error) { |
|||
ElMessage.error('添加请求失败,请稍后再试'); |
|||
console.error('添加用户错误:', error); |
|||
} |
|||
}; |
|||
|
|||
const rules = { |
|||
username: [ |
|||
{ required: true, message: '请输入用户名称', trigger: 'blur' } |
|||
], |
|||
jwcode: [ |
|||
{ required: true, message: '请输入精网号', trigger: 'blur' }, |
|||
{ validator: validateJwcode, trigger: 'blur' } |
|||
] |
|||
const JwUser = ref({ |
|||
username: '', |
|||
jwcode: '', |
|||
}) |
|||
|
|||
const validateJwcode = (rule, value, callback) => { |
|||
const isNumber = /^\d*$/.test(value); |
|||
if (!isNumber) { |
|||
callback(new Error('只能输入数字')); |
|||
} else { |
|||
callback(); |
|||
} |
|||
}; |
|||
|
|||
const rules = { |
|||
username: [ |
|||
{ required: true, message: '请输入用户名称', trigger: 'blur' } |
|||
], |
|||
jwcode: [ |
|||
{ required: true, message: '请输入精网号', trigger: 'blur' }, |
|||
{ validator: validateJwcode, trigger: 'blur' } |
|||
] |
|||
} |
|||
|
|||
// 输入精网号处理 |
|||
const handleJwcodeInput = (value) => { |
|||
searchParams.value.jwcode = value.replace(/\D/g, '') |
|||
searchParams.value.jwcode = value.replace(/\D/g, '') |
|||
} |
|||
|
|||
|
|||
const handleSizeChange = (val) => { |
|||
searchParams.value.pageSize = val |
|||
searchParams.value.pageNum = 1 |
|||
fetchWinList() |
|||
} |
|||
|
|||
const handleCurrentChange = (val) => { |
|||
searchParams.value.pageNum = val |
|||
fetchWinList() |
|||
} |
|||
const handleSizeChange = (val) => { |
|||
searchParams.value.pageSize = val |
|||
searchParams.value.pageNum = 1 |
|||
fetchWinList() |
|||
} |
|||
|
|||
const handleCurrentChange = (val) => { |
|||
searchParams.value.pageNum = val |
|||
fetchWinList() |
|||
} |
|||
|
|||
const cancel = () => { |
|||
centerDialogVisible.value = false; |
|||
addForm.value.resetFields(); |
|||
const cancel = () => { |
|||
centerDialogVisible.value = false; |
|||
addForm.value.resetFields(); |
|||
}; |
|||
|
|||
// 获取中奖列表 |
|||
const fetchWinList = async () => { |
|||
try { |
|||
const requestData = { |
|||
username: activityStone.searchUsername, |
|||
gradeId: "" , |
|||
jwcode: activityStone.searchJwcode, |
|||
pageNum: searchParams.value.pageNum, |
|||
pageSize: searchParams.value.pageSize |
|||
} |
|||
console.log('请求参数:', requestData) |
|||
const res = await getWinList(requestData) |
|||
if (res.code === 200) { |
|||
tableData.value = res.data.list |
|||
console.log('获取中奖列表成功:', tableData.value) |
|||
total.value = res.data.total |
|||
} |
|||
} catch (error) { |
|||
console.error('获取中奖列表失败:', error) |
|||
// 获取用户列表 |
|||
const fetchWinList = async () => { |
|||
try { |
|||
const requestData = { |
|||
jwcode: searchParams.value.jwcode, |
|||
pageNum: searchParams.value.pageNum, |
|||
pageSize: searchParams.value.pageSize |
|||
} |
|||
} |
|||
|
|||
// 搜索 |
|||
const handleSearch = () => { |
|||
searchParams.value.pageNum = 1 |
|||
|
|||
// // 更新持久化值 |
|||
// activityStone.setSearchUsername(searchParams.value.username) |
|||
// activityStone.setSearchJwcode(searchParams.value.jwcode) |
|||
// winStone.setSearchgradeId(searchParams.value.gradeId) |
|||
|
|||
fetchWinList() |
|||
} |
|||
|
|||
|
|||
|
|||
// 重置搜索 |
|||
const handleReset = () => { |
|||
searchParams.value = { |
|||
pageNum: 1, |
|||
pageSize: 10, |
|||
username: '', |
|||
jwcode: '' |
|||
console.log('请求参数:', requestData) |
|||
const res = await getuserList(requestData) |
|||
console.log('响应数据:', res) |
|||
if (res.code === 200) { |
|||
tableData.value = res.data.list |
|||
console.log('获取用户列表成功:', tableData.value) |
|||
total.value = res.data.total |
|||
} |
|||
|
|||
// 清空持久化值 |
|||
// activityStone.setSearchUsername('') |
|||
// activityStone.setSearchJwcode('') |
|||
// winStone.setSearchgradeId('') |
|||
|
|||
fetchWinList() |
|||
} |
|||
|
|||
|
|||
// 页面加载时获取数据 |
|||
onMounted(() => { |
|||
fetchWinList() |
|||
}) |
|||
|
|||
// onBeforeRouteLeave((to, from, next) => { |
|||
// // 判断是否跳转到 activity/index 页面 |
|||
// if (to.name !== 'zhongchouwinning') { |
|||
// // 清空 winStone 中的 gradeId |
|||
// winStone.setSearchgradeId('') |
|||
|
|||
// // 清空 activityStone 中的搜索值 |
|||
// activityStone.setSearchUsername('') |
|||
// activityStone.setSearchJwcode('') |
|||
// } |
|||
|
|||
// next() // 必须调用 next() |
|||
// }) |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.gray-container { |
|||
width: 100%; |
|||
background-color: #ffffff; |
|||
padding: 20px; |
|||
box-sizing: border-box; |
|||
min-height: 80vh; |
|||
overflow-x: hidden; |
|||
} |
|||
|
|||
.search-bar { |
|||
margin-bottom: 20px; |
|||
} catch (error) { |
|||
console.error('获取用户列表失败:', error) |
|||
} |
|||
|
|||
.prize-level-select { |
|||
width: 220px; |
|||
} |
|||
|
|||
.table-container { |
|||
height: 600px; |
|||
overflow-y: auto; |
|||
} |
|||
|
|||
// 搜索 |
|||
const handleSearch = () => { |
|||
searchParams.value.pageNum = 1 |
|||
|
|||
fetchWinList() |
|||
searchParams.value.jwcode = '' |
|||
} |
|||
|
|||
|
|||
|
|||
// 重置搜索 |
|||
const handleReset = () => { |
|||
searchParams.value = { |
|||
pageNum: 1, |
|||
pageSize: 10, |
|||
username: '', |
|||
jwcode: '' |
|||
} |
|||
</style> |
|||
fetchWinList() |
|||
} |
|||
|
|||
|
|||
// 页面加载时获取数据 |
|||
onMounted(() => { |
|||
fetchWinList() |
|||
}) |
|||
|
|||
</script> |
|||
|
|||
<style scoped> |
|||
.gray-container { |
|||
width: 100%; |
|||
background-color: #ffffff; |
|||
padding: 20px; |
|||
box-sizing: border-box; |
|||
min-height: 80vh; |
|||
overflow-x: hidden; |
|||
} |
|||
|
|||
.search-bar { |
|||
margin-bottom: 20px; |
|||
} |
|||
|
|||
.prize-level-select { |
|||
width: 220px; |
|||
} |
|||
|
|||
.table-container { |
|||
height: 600px; |
|||
overflow-y: auto; |
|||
} |
|||
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue