Commit 8dc4b3dc by zhuzhequan

分页数修改

parent 02e7ce04
...@@ -297,7 +297,7 @@ ...@@ -297,7 +297,7 @@
<ElPagination <ElPagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
...@@ -431,7 +431,7 @@ ...@@ -431,7 +431,7 @@
<ElPagination <ElPagination
v-model:current-page="detailPager.page" v-model:current-page="detailPager.page"
v-model:page-size="detailPager.rows" v-model:page-size="detailPager.rows"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="detailPager.total" :total="detailPager.total"
......
...@@ -225,7 +225,7 @@ ...@@ -225,7 +225,7 @@
<ElPagination <ElPagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
......
<template> <template>
<div class="user-page flex-column card h-100 overflow-hidden"> <div class="user-page flex-column card h-100 overflow-hidden">
<div class="header-filter-form"> <div class="header-filter-form">
<ElForm :model="searchForm" inline> <ElForm :model="searchForm" inline>
<ElFormItem label="用户名" prop="account"> <ElFormItem label="用户名" prop="account">
<ElInput <ElInput
v-model="searchForm.account" v-model="searchForm.account"
placeholder="请输入用户名" placeholder="请输入用户名"
clearable clearable
style="width: 200px" style="width: 200px"
/> />
</ElFormItem> </ElFormItem>
<ElFormItem label="状态" prop="status"> <ElFormItem label="状态" prop="status">
<ElSelect <ElSelect
v-model="searchForm.status" v-model="searchForm.status"
clearable clearable
style="width: 200px" style="width: 200px"
placeholder="请选择状态" placeholder="请选择状态"
> >
<ElOption label="启用" :value="1"></ElOption> <ElOption label="启用" :value="1"></ElOption>
<ElOption label="禁用" :value="0"></ElOption> <ElOption label="禁用" :value="0"></ElOption>
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem>
<ElFormItem> <ElFormItem>
<ElButton type="primary" @click="search">查询</ElButton> <ElButton type="primary" @click="search">查询</ElButton>
</ElFormItem> </ElFormItem>
<ElFormItem> <ElFormItem>
<ElButton @click="resetSearchForm">重置</ElButton> <ElButton @click="resetSearchForm">重置</ElButton>
</ElFormItem> </ElFormItem>
<ElFormItem> <ElFormItem>
<ElButton type="success" @click="addUser">新增</ElButton> <ElButton type="success" @click="addUser">新增</ElButton>
</ElFormItem> </ElFormItem>
<ElFormItem> <ElFormItem>
<ElButton type="danger" @click="deleteUser">删除</ElButton> <ElButton type="danger" @click="deleteUser">删除</ElButton>
</ElFormItem> </ElFormItem>
</ElForm> </ElForm>
</div> </div>
<div class="user-content flex-1 flex-column overflow-hidden"> <div class="user-content flex-1 flex-column overflow-hidden">
<div class="user-list flex-1 overflow-hidden"> <div class="user-list flex-1 overflow-hidden">
<ElTable <ElTable
:data="tableData" :data="tableData"
default-expand-all default-expand-all
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<ElTableColumn <ElTableColumn
type="selection" type="selection"
header-align="center" header-align="center"
align="center" align="center"
width="55" width="55"
/> />
<ElTableColumn <ElTableColumn
type="index" type="index"
header-align="center" header-align="center"
align="center" align="center"
label="序号" label="序号"
width="55" width="55"
/> />
<ElTableColumn prop="account" header-align="center" label="用户名"> <ElTableColumn prop="account" header-align="center" label="用户名">
<template #default="scope"> <template #default="scope">
<div> <div>
<span <span
>{{ scope.row.account }} >{{ scope.row.account }}
<ElTooltip <ElTooltip
v-if="scope.row.supperMark === 1" v-if="scope.row.supperMark === 1"
content="超级管理员" content="超级管理员"
placement="top" placement="top"
> >
<Icon <Icon
v-if="scope.row.supperMark === 1" v-if="scope.row.supperMark === 1"
name="zu54" name="zu54"
style="vertical-align: super; cursor: pointer" style="vertical-align: super; cursor: pointer"
> >
</Icon> </Icon>
</ElTooltip> </ElTooltip>
</span> </span>
</div> </div>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn <ElTableColumn
prop="factoryCode" prop="factoryCode"
header-align="center" header-align="center"
label="工厂" label="工厂"
align="center" align="center"
/> />
<ElTableColumn <ElTableColumn
prop="status" prop="status"
header-align="center" header-align="center"
align="center" align="center"
label="状态" label="状态"
> >
<template #default="scope"> <template #default="scope">
<el-tooltip <el-tooltip
:content="scope.row.status ? '启用' : '禁用'" :content="scope.row.status ? '启用' : '禁用'"
placement="top" placement="top"
> >
<ElSwitch <ElSwitch
v-model="scope.row.status" v-model="scope.row.status"
:active-value="1" :active-value="1"
:inactive-value="0" :inactive-value="0"
@change="(e:number) => onChangeStatus(e, scope.row)" @change="(e:number) => onChangeStatus(e, scope.row)"
></ElSwitch> ></ElSwitch>
</el-tooltip> </el-tooltip>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn <ElTableColumn
label="操作" label="操作"
width="130" width="130"
header-align="center" header-align="center"
align="center" align="center"
> >
<template #default="scope"> <template #default="scope">
<el-icon <el-icon
size="24" size="24"
title="编辑" title="编辑"
color="#EF6C00" color="#EF6C00"
style="cursor: pointer; vertical-align: middle" style="cursor: pointer; vertical-align: middle"
@click="editUser(scope.row)" @click="editUser(scope.row)"
> >
<Edit /> <Edit />
</el-icon> </el-icon>
</template> </template>
</ElTableColumn> </ElTableColumn>
</ElTable> </ElTable>
</div> </div>
<ElPagination <ElPagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
style="margin: 10px auto 0; text-align: right" style="margin: 10px auto 0; text-align: right"
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
></ElPagination> ></ElPagination>
</div> </div>
</div> </div>
<ElDialog <ElDialog
v-model="dialogVisible" v-model="dialogVisible"
:title="editId ? '编辑用户' : '新增用户'" :title="editId ? '编辑用户' : '新增用户'"
width="600px" width="600px"
:close-on-click-modal="false" :close-on-click-modal="false"
@opened="onOpenedUserForm" @opened="onOpenedUserForm"
> >
<div class="dialog-form"> <div class="dialog-form">
<ElForm <ElForm
ref="editFormRef" ref="editFormRef"
:model="editForm" :model="editForm"
:rules="rules" :rules="rules"
label-width="90px" label-width="90px"
> >
<ElFormItem label="用户名" prop="account"> <ElFormItem label="用户名" prop="account">
<ElInput <ElInput
v-model="editForm.account" v-model="editForm.account"
placeholder="请输入用户名" placeholder="请输入用户名"
clearable clearable
/> />
</ElFormItem> </ElFormItem>
<ElFormItem v-if="!editId" label="密码" prop="password"> <ElFormItem v-if="!editId" label="密码" prop="password">
<ElInput <ElInput
v-model="editForm.password" v-model="editForm.password"
placeholder="请输入密码" placeholder="请输入密码"
clearable clearable
type="password" type="password"
autocomplete="off" autocomplete="off"
:show-password="true" :show-password="true"
/> />
</ElFormItem> </ElFormItem>
<ElFormItem label="状态" prop="status"> <ElFormItem label="状态" prop="status">
<ElCheckbox <ElCheckbox
v-model="editForm.status" v-model="editForm.status"
label="启用" label="启用"
true-value="1" true-value="1"
false-value="0" false-value="0"
></ElCheckbox> ></ElCheckbox>
</ElFormItem> </ElFormItem>
<ElFormItem label="角色" prop="supperMark"> <ElFormItem label="角色" prop="supperMark">
<ElCheckbox <ElCheckbox
v-model="editForm.supperMark" v-model="editForm.supperMark"
label="超级管理员" label="超级管理员"
true-value="1" true-value="1"
false-value="0" false-value="0"
></ElCheckbox> ></ElCheckbox>
</ElFormItem> </ElFormItem>
</ElForm> </ElForm>
</div> </div>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<ElButton @click="dialogVisible = false"> 取消 </ElButton> <ElButton @click="dialogVisible = false"> 取消 </ElButton>
<ElButton type="primary" @click="save">保存</ElButton> <ElButton type="primary" @click="save">保存</ElButton>
</div> </div>
</template> </template>
</ElDialog> </ElDialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { import {
getUserList, getUserList,
addUserApi, addUserApi,
updateUserApi, updateUserApi,
deleteUserApi, deleteUserApi,
getDetailsByIdApi, getDetailsByIdApi,
changeUserStatusApi, changeUserStatusApi,
} from '@/api/auth' } from '@/api/auth'
import Icon from '@/components/Icon.vue' import Icon from '@/components/Icon.vue'
import { UserEditForm, userData, userSearchForm } from '@/types/api/user' import { UserEditForm, userData, userSearchForm } from '@/types/api/user'
import usePageList from '@/utils/hooks/usePageList' import usePageList from '@/utils/hooks/usePageList'
import { useValue } from '@/utils/hooks/useValue' import { useValue } from '@/utils/hooks/useValue'
import { showConfirm } from '@/utils/ui' import { showConfirm } from '@/utils/ui'
import { Edit } from '@element-plus/icons-vue' import { Edit } from '@element-plus/icons-vue'
import type { FormRules } from 'element-plus' import type { FormRules } from 'element-plus'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
const [searchForm, resetSearchForm] = useValue<userSearchForm>({}) const [searchForm, resetSearchForm] = useValue<userSearchForm>({})
const [editForm, resetEditForm] = useValue<UserEditForm>({ const [editForm, resetEditForm] = useValue<UserEditForm>({
account: '', account: '',
password: '', password: '',
supperMark: '0', supperMark: '0',
status: '1', status: '1',
}) })
const { const {
currentPage, currentPage,
pageSize, pageSize,
total, total,
data: tableData, data: tableData,
refresh: search, refresh: search,
onCurrentPageChange: handleCurrentChange, onCurrentPageChange: handleCurrentChange,
onPageSizeChange: handleSizeChange, onPageSizeChange: handleSizeChange,
} = usePageList({ } = usePageList({
query: (page, pageSize) => query: (page, pageSize) =>
getUserList(searchForm.value, page, pageSize).then((res) => res.data), getUserList(searchForm.value, page, pageSize).then((res) => res.data),
}) })
const dialogVisible = ref(false) const dialogVisible = ref(false)
const editFormRef = ref() const editFormRef = ref()
const selection = ref<userData[]>([]) const selection = ref<userData[]>([])
const rules = reactive<FormRules<UserEditForm>>({ const rules = reactive<FormRules<UserEditForm>>({
account: [ account: [
{ {
required: true, required: true,
message: '请输入用户名', message: '请输入用户名',
}, },
], ],
password: [ password: [
{ {
required: true, required: true,
message: '请输入密码', message: '请输入密码',
}, },
], ],
}) })
const editId = ref<number | undefined>(undefined) const editId = ref<number | undefined>(undefined)
const addUser = () => { const addUser = () => {
editId.value = undefined editId.value = undefined
dialogVisible.value = true dialogVisible.value = true
resetEditForm() resetEditForm()
} }
const deleteUser = async () => { const deleteUser = async () => {
if (!selection.value.length) { if (!selection.value.length) {
return ElMessage({ return ElMessage({
message: '请选择用户', message: '请选择用户',
type: 'warning', type: 'warning',
offset: window.innerHeight / 2, offset: window.innerHeight / 2,
}) })
} }
try { try {
await showConfirm('是否删除用户', { await showConfirm('是否删除用户', {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
}) })
} catch { } catch {
return return
} }
try { try {
const ids = selection.value.map((item) => item.id).join(',') const ids = selection.value.map((item) => item.id).join(',')
await deleteUserApi(ids) await deleteUserApi(ids)
ElMessage({ ElMessage({
message: '删除成功', message: '删除成功',
type: 'success', type: 'success',
offset: window.innerHeight / 2, offset: window.innerHeight / 2,
}) })
search() search()
} catch (e) { } catch (e) {
search() search()
// showError(e) // showError(e)
} }
} }
const editUser = async (item: userData) => { const editUser = async (item: userData) => {
editId.value = item.id editId.value = item.id
try { try {
const res = await getDetailsByIdApi(item.id) const res = await getDetailsByIdApi(item.id)
res.data.supperMark = res.data.supperMark + '' res.data.supperMark = res.data.supperMark + ''
res.data.status = res.data.status + '' res.data.status = res.data.status + ''
editForm.value = res.data editForm.value = res.data
dialogVisible.value = true dialogVisible.value = true
} catch (e) { } catch (e) {
//showError(e) //showError(e)
} }
} }
const save = async () => { const save = async () => {
try { try {
await editFormRef.value.validate() await editFormRef.value.validate()
} catch { } catch {
return return
} }
try { try {
if (!editId.value) { if (!editId.value) {
await addUserApi({ await addUserApi({
...editForm.value, ...editForm.value,
supperMark: Number(editForm.value.supperMark), supperMark: Number(editForm.value.supperMark),
status: Number(editForm.value.status), status: Number(editForm.value.status),
}) })
} else { } else {
await updateUserApi({ await updateUserApi({
...editForm.value, ...editForm.value,
supperMark: Number(editForm.value.supperMark), supperMark: Number(editForm.value.supperMark),
status: Number(editForm.value.status), status: Number(editForm.value.status),
}) })
} }
ElMessage({ ElMessage({
message: '保存成功', message: '保存成功',
type: 'success', type: 'success',
offset: window.innerHeight / 2, offset: window.innerHeight / 2,
}) })
dialogVisible.value = false dialogVisible.value = false
search() search()
} catch (e) { } catch (e) {
return return
} }
} }
const onOpenedUserForm = async () => { const onOpenedUserForm = async () => {
editFormRef.value?.clearValidate() editFormRef.value?.clearValidate()
} }
const handleSelectionChange = (s: userData[]) => { const handleSelectionChange = (s: userData[]) => {
selection.value = s selection.value = s
} }
const onChangeStatus = async (value: number, item: userData) => { const onChangeStatus = async (value: number, item: userData) => {
try { try {
const res = await changeUserStatusApi(value, item.id) const res = await changeUserStatusApi(value, item.id)
ElMessage({ ElMessage({
message: res.message, message: res.message,
type: 'success', type: 'success',
offset: window.innerHeight / 2, offset: window.innerHeight / 2,
}) })
search() search()
} catch (e) { } catch (e) {
//showError(e) //showError(e)
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.header-filter-form { .header-filter-form {
margin-bottom: 20px; margin-bottom: 20px;
:deep(.el-form-item) { :deep(.el-form-item) {
margin-right: 14px; margin-right: 14px;
margin-bottom: 10px; margin-bottom: 10px;
} }
} }
.user-operate-btn { .user-operate-btn {
margin-bottom: 10px; margin-bottom: 10px;
} }
.dialog-footer { .dialog-footer {
text-align: center; text-align: center;
} }
</style> </style>
...@@ -787,7 +787,7 @@ ...@@ -787,7 +787,7 @@
<el-pagination <el-pagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
......
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
<ElPagination <ElPagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
......
...@@ -830,7 +830,7 @@ ...@@ -830,7 +830,7 @@
<el-pagination <el-pagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
......
...@@ -190,7 +190,7 @@ ...@@ -190,7 +190,7 @@
<el-pagination <el-pagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]" :page-sizes="[100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
......
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