chore: 优化字典hooks使用

This commit is contained in:
xlsea
2024-09-11 16:37:35 +08:00
parent 2b14b84c67
commit 9cbbaff297
13 changed files with 94 additions and 52 deletions

View File

@ -4,6 +4,8 @@ import { fetchBatchDeleteUser, fetchGetUserList } from '@/service/api/system';
import { $t } from '@/locales';
import { useAppStore } from '@/store/modules/app';
import { useTable, useTableOperate } from '@/hooks/common/table';
import DictTag from '@/components/custom/dict-tag.vue';
import { useDict } from '@/hooks/business/dict';
import UserOperateDrawer from './modules/user-operate-drawer.vue';
import UserSearch from './modules/user-search.vue';
@ -11,6 +13,9 @@ defineOptions({
name: 'UserList'
});
useDict('sys_user_sex');
useDict('sys_normal_disable');
const appStore = useAppStore();
const {
@ -49,35 +54,42 @@ const {
align: 'center',
width: 64
},
{
key: 'deptId',
title: '部门',
align: 'center',
minWidth: 120
},
{
key: 'userName',
title: '用户名称',
align: 'center',
minWidth: 120
minWidth: 120,
ellipsis: true
},
{
key: 'nickName',
title: '用户昵称',
align: 'center',
minWidth: 120
minWidth: 120,
ellipsis: true
},
{
key: 'deptName',
title: '部门',
align: 'center',
minWidth: 120,
ellipsis: true
},
{
key: 'phonenumber',
title: '手机号码',
align: 'center',
minWidth: 120
minWidth: 120,
ellipsis: true
},
{
key: 'status',
title: '帐号状态',
title: '状态',
align: 'center',
minWidth: 120
minWidth: 80,
render(row) {
return <DictTag size="small" value={row.status} dict-code="sys_normal_disable" />;
}
},
{
key: 'createTime',
@ -85,12 +97,6 @@ const {
align: 'center',
minWidth: 120
},
{
key: 'remark',
title: '备注',
align: 'center',
minWidth: 120
},
{
key: 'operate',
title: $t('common.operate'),
@ -142,7 +148,7 @@ async function edit(userId: CommonType.IdType) {
<template>
<div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
<UserSearch v-model:model="searchParams" @reset="resetSearchParams" @search="getDataByPage" />
<NCard title="用户信息列表" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper">
<NCard title="用户列表" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper">
<template #header-extra>
<TableHeaderOperation
v-model:columns="columnChecks"

View File

@ -155,8 +155,8 @@ watch(visible, () => {
<NFormItem label="密码" path="password">
<NInput v-model:value="model.password" placeholder="请输入密码" />
</NFormItem>
<NFormItem label="帐号状态" path="status">
<NInput v-model:value="model.status" placeholder="请输入帐号状态" />
<NFormItem label="状态" path="status">
<DictRadio v-model:value="model.status" dict-code="sys_normal_disable" />
</NFormItem>
<NFormItem label="备注" path="remark">
<NInput v-model:value="model.remark" placeholder="请输入备注" />

View File

@ -2,6 +2,7 @@
import { ref } from 'vue';
import { $t } from '@/locales';
import { useNaiveForm } from '@/hooks/common/form';
defineOptions({
name: 'UserSearch'
});
@ -36,7 +37,7 @@ async function search() {
</script>
<template>
<NCard :bordered="false" size="small" class="card-wrapper">
<NCard :bordered="false" size="small" class="table-search card-wrapper">
<NCollapse>
<NCollapseItem :title="$t('common.search')" name="user-search">
<NForm ref="formRef" :model="model" label-placement="left" :label-width="80">
@ -51,9 +52,14 @@ async function search() {
<NInput v-model:value="model.phonenumber" placeholder="请输入手机号码" />
</NFormItemGi>
<NFormItemGi span="24 s:12 m:6" label="帐号状态" path="status" class="pr-24px">
<NSelect v-model:value="model.status" placeholder="请选择帐号状态" :options="[]" clearable />
<DictSelect
v-model:value="model.status"
placeholder="请选择帐号状态"
dict-code="sys_normal_disable"
clearable
/>
</NFormItemGi>
<NFormItemGi span="24 s:12 m:6" label="创建时间" path="createTime" class="pr-24px">
<NFormItemGi span="24 s:12 m:8" label="创建时间" path="createTime" class="pr-24px">
<NDatePicker
v-model:formatted-value="dateRangeCreateTime"
type="datetimerange"
@ -61,7 +67,7 @@ async function search() {
clearable
/>
</NFormItemGi>
<NFormItemGi span="24" class="pr-24px">
<NFormItemGi span="24 s:12 m:16" class="pr-24px">
<NSpace class="w-full" justify="end">
<NButton @click="reset">
<template #icon>