Browse Source

新增任务权限设置

ai_dev
zhouhaibin 2 months ago
parent
commit
53fb9bac0a
  1. 67
      src/api/taskPermissions/DocumentTasksPermissions/index.ts
  2. 115
      src/api/taskPermissions/DocumentTasksPermissions/model.ts
  3. 221
      src/views/taskPermissions/DocumentTasksPermissions/DocumentTasksPermissions.data.ts
  4. 69
      src/views/taskPermissions/DocumentTasksPermissions/DocumentTasksPermissionsModal.vue
  5. 115
      src/views/taskPermissions/DocumentTasksPermissions/index.vue

67
src/api/taskPermissions/DocumentTasksPermissions/index.ts

@ -0,0 +1,67 @@
import { defHttp } from '@/utils/http/axios';
import { ID, IDS, commonExport } from '@/api/base';
import { DocumentTasksPermissionsVO, DocumentTasksPermissionsForm, DocumentTasksPermissionsQuery } from './model';
/**
*
* @param params
* @returns
*/
export function DocumentTasksPermissionsList(params?: DocumentTasksPermissionsQuery) {
return defHttp.get<DocumentTasksPermissionsVO[]>({ url: '/productManagement/DocumentTasksPermissions/list', params });
}
/**
*
* @param params
* @returns
*/
export function DocumentTasksPermissionsExport(params?: DocumentTasksPermissionsQuery) {
return commonExport('/productManagement/DocumentTasksPermissions/export', params ?? {});
}
/**
*
* @param id id
* @returns
*/
export function DocumentTasksPermissionsInfo(id: ID) {
return defHttp.get<DocumentTasksPermissionsVO>({ url: '/productManagement/DocumentTasksPermissions/' + id });
}
/**
*
* @param data
* @returns
*/
export function DocumentTasksPermissionsAdd(data: DocumentTasksPermissionsForm) {
return defHttp.postWithMsg<void>({ url: '/productManagement/DocumentTasksPermissions', data });
}
/**
*
* @param data
* @returns
*/
export function DocumentTasksPermissionsUpdate(data: DocumentTasksPermissionsForm) {
return defHttp.putWithMsg<void>({ url: '/productManagement/DocumentTasksPermissions', data });
}
/**
*
* @param id id
* @returns
*/
export function DocumentTasksPermissionsRemove(id: ID | IDS) {
return defHttp.deleteWithMsg<void>({ url: '/productManagement/DocumentTasksPermissions/' + id },);
}
/**
*
* @returns
*/
export const getUsersAll = () => {
return defHttp.get<any>({ url: '/productManagement/DocumentTasksPermissions/getUsersAll' });
}
export const getTasksPermissionsByUserId = () => {
return defHttp.get<DocumentTasksPermissionsVO>({ url: '/productManagement/DocumentTasksPermissions/getTasksPermissionsByUserId' });
}

115
src/api/taskPermissions/DocumentTasksPermissions/model.ts

@ -0,0 +1,115 @@
import { BaseEntity, PageQuery } from '@/api/base';
export interface DocumentTasksPermissionsVO {
/**
* ID
*/
id: string | number;
/**
* ID
*/
userId: string | number;
/**
* ID
*/
roleId: string | number;
/**
*
*/
dailyDocumentCount: number;
/**
*
*/
priority: number;
/**
*
*/
taskType: string;
/**
*
*/
remainingTasksToday: number;
}
export interface DocumentTasksPermissionsForm extends BaseEntity {
/**
* ID
*/
id?: string | number;
/**
* ID
*/
userId?: string | number;
/**
* ID
*/
roleId?: string | number;
/**
*
*/
dailyDocumentCount?: number;
/**
*
*/
priority?: number;
/**
*
*/
taskType?: string;
/**
*
*/
remainingTasksToday?: number;
}
export interface DocumentTasksPermissionsQuery extends PageQuery {
/**
* ID
*/
userId?: string | number;
/**
* ID
*/
roleId?: string | number;
/**
*
*/
dailyDocumentCount?: number;
/**
*
*/
priority?: number;
/**
*
*/
taskType?: string;
/**
*
*/
remainingTasksToday?: number;
/**
*
*/
params?: any;
}

221
src/views/taskPermissions/DocumentTasksPermissions/DocumentTasksPermissions.data.ts

@ -0,0 +1,221 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
import { roleOptionSelect, roleInfo } from '@/api/system/role';
import { getDictOptions,getDict } from '@/utils/dict';
import { getUsersAll } from '@/api/taskPermissions/DocumentTasksPermissions';
import { useRender } from '@/hooks/component/useRender';
const { renderDict,renderDictTags } = useRender();
const roleOption = await roleOptionSelect()
const userOption = await getUsersAll()
export const formSchemas: FormSchema[] = [
{
label: '用户',
field: 'userId',
component: 'ApiSelect',
componentProps: ({ formModel, formActionType }) => {
//获取所有用户列表,如果用户选择了用户,则不显示角色,如果用户选择了角色,则不显示用户
return {
api: ()=>{return userOption},
allowClear: true,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
},
valueField: 'userId',
labelField: 'userName',
onChange: (value: any) => {
const { updateSchema, setFieldsValue } = formActionType;
if (value) {
updateSchema({ field: 'roleId', show: false, required: false });
} else {
updateSchema({ field: 'roleId', show: true, required: true });
}
},
};
},
},
{
label: '角色',
field: 'roleId',
component: 'ApiSelect',
componentProps: ({ formModel, formActionType }) => {
//获取角色列表,如果用户选择了用户,则不显示角色,如果用户选择了角色,则不显示用户
return {
api: ()=>{return roleOption},
allowClear: true,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
},
valueField: 'roleId',
labelField: 'roleName',
onChange: (value: any) => {
const { updateSchema, setFieldsValue } = formActionType;
console.log(value);
if (value) {
updateSchema({ field: 'userId', show: false, required: false });
} else {
updateSchema({ field: 'userId', show: true, required: true });
}
},
};
},
},
{
label: '任务种类',
field: 'taskType',
component: 'Select',
componentProps: {
options: getDictOptions('document_task')
},
},
{
label: '每日文档数',
field: 'dailyDocumentCount',
component: 'Input',
},
{
label: '优先级',
field: 'priority',
component: 'Input',
},
];
export const columns: BasicColumn[] = [
{
title: '主键ID',
dataIndex: 'id',
ifShow: false,
},
{
title: '用户',
dataIndex: 'userId',
customRender: ({ value }) => {
for (const item of userOption) {
if (item.userId === value) {
return item.userName;
}
}
},
},
{
title: '角色',
dataIndex: 'roleId',
customRender: ({ value }) => {
for (const item of roleOption) {
if (item.roleId === value) {
return item.roleName;
}
}
},
},
{
title: '任务种类',
dataIndex: 'taskTypeList',
customRender: ({ value }) => renderDictTags(value, getDict('document_task')),
},
{
title: '每日文档数',
dataIndex: 'dailyDocumentCount',
},
{
title: '优先级',
dataIndex: 'priority',
},
];
export const modalSchemas: FormSchema[] = [
{
label: '主键ID',
field: 'id',
required: false,
component: 'Input',
show: false,
},
{
label: '用户',
field: 'userId',
required: true,
component: 'ApiSelect',
componentProps: ({ formModel, formActionType }) => {
//获取所有用户列表,如果用户选择了用户,则不显示角色,如果用户选择了角色,则不显示用户
return {
api: ()=>{return userOption},
allowClear: true,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
},
valueField: 'userId',
labelField: 'userName',
onChange: (value: any) => {
const { updateSchema, setFieldsValue } = formActionType;
if (value) {
updateSchema({ field: 'roleId', show: false, required: false });
} else {
updateSchema({ field: 'roleId', show: true, required: true });
}
},
};
},
},
{
label: '角色',
field: 'roleId',
required: true,
component: 'ApiSelect',
componentProps: ({ formModel, formActionType }) => {
//获取角色列表,如果用户选择了用户,则不显示角色,如果用户选择了角色,则不显示用户
return {
api: ()=>{return roleOption},
allowClear: true,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
},
valueField: 'roleId',
labelField: 'roleName',
onChange: (value: any) => {
const { updateSchema, setFieldsValue } = formActionType;
console.log(value);
if (value) {
updateSchema({ field: 'userId', show: false, required: false });
} else {
updateSchema({ field: 'userId', show: true, required: true });
}
},
};
},
},
{
label: '任务种类',
field: 'taskTypeList',
required: true,
component: 'Select',
componentProps: {
options: getDictOptions('document_task'),
mode: 'multiple',
},
},
{
label: '每日文档数',
field: 'dailyDocumentCount',
required: true,
component: 'Input',
},
{
label: '优先级',
field: 'priority',
required: true,
component: 'InputNumber',
componentProps: {
min: 1,
max: 10,
step: 1,
},
},
];

69
src/views/taskPermissions/DocumentTasksPermissions/DocumentTasksPermissionsModal.vue

@ -0,0 +1,69 @@
<template>
<BasicModal
v-bind="$attrs"
:title="title"
@register="registerInnerModal"
@ok="handleSubmit"
@cancel="resetForm"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script setup lang="ts">
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { computed, ref, unref } from 'vue';
import { DocumentTasksPermissionsInfo, DocumentTasksPermissionsAdd, DocumentTasksPermissionsUpdate } from '@/api/taskPermissions/DocumentTasksPermissions';
import { modalSchemas } from './DocumentTasksPermissions.data';
defineOptions({ name: 'DocumentTasksPermissionsModal' });
const emit = defineEmits(['register', 'reload']);
const isUpdate = ref<boolean>(false);
const title = computed<string>(() => {
return isUpdate.value ? '编辑文档任务权限' : '新增文档任务权限';
});
const [registerInnerModal, { modalLoading, closeModal }] = useModalInner(
async (data: { record?: Recordable; update: boolean }) => {
modalLoading(true);
const { record, update } = data;
isUpdate.value = update;
if (update && record) {
const ret = await DocumentTasksPermissionsInfo(record.id);
await setFieldsValue(ret);
}
modalLoading(false);
},
);
const [registerForm, { setFieldsValue, resetForm, validate }] = useForm({
labelWidth: 100,
showActionButtonGroup: false,
baseColProps: { span: 24 },
schemas: modalSchemas,
});
async function handleSubmit() {
try {
console.log('handleSubmit');
modalLoading(true);
const data = await validate();
if (unref(isUpdate)) {
await DocumentTasksPermissionsUpdate(data);
} else {
await DocumentTasksPermissionsAdd(data);
}
emit('reload');
closeModal();
await resetForm();
} catch (e) {
} finally {
modalLoading(false);
}
}
</script>
<style scoped></style>

115
src/views/taskPermissions/DocumentTasksPermissions/index.vue

@ -0,0 +1,115 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button
@click="downloadExcel(DocumentTasksPermissionsExport, '文档任务权限数据', getForm().getFieldsValue())"
v-auth="'productManagement:DocumentTasksPermissions:export'"
>导出</a-button
>
<a-button
type="primary"
danger
@click="multipleRemove(DocumentTasksPermissionsRemove)"
:disabled="!selected"
v-auth="'productManagement:DocumentTasksPermissions:remove'"
>删除</a-button
>
<a-button
type="primary"
@click="handleAdd"
v-auth="'productManagement:DocumentTasksPermissions:add'"
>新增</a-button
>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
stopButtonPropagation
:actions="[
{
label: '修改',
icon: IconEnum.EDIT,
type: 'primary',
ghost: true,
auth: 'productManagement:DocumentTasksPermissions:edit',
onClick: handleEdit.bind(null, record),
},
{
label: '删除',
icon: IconEnum.DELETE,
type: 'primary',
danger: true,
ghost: true,
auth: 'productManagement:DocumentTasksPermissions:remove',
popConfirm: {
placement: 'left',
title: '是否删除文档任务权限[' + record.id + ']?',
confirm: handleDelete.bind(null, record),
},
},
]"
/>
</template>
</template>
</BasicTable>
<DocumentTasksPermissionsModal @register="registerModal" @reload="reload" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { DocumentTasksPermissionsList, DocumentTasksPermissionsExport, DocumentTasksPermissionsRemove } from '@/api/taskPermissions/DocumentTasksPermissions';
import { downloadExcel } from '@/utils/file/download';
import { useModal } from '@/components/Modal';
import DocumentTasksPermissionsModal from './DocumentTasksPermissionsModal.vue';
import { formSchemas, columns } from './DocumentTasksPermissions.data';
import { IconEnum } from '@/enums/appEnum';
defineOptions({ name: 'DocumentTasksPermissions' });
const [registerTable, { reload, multipleRemove, selected, getForm }] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '文档任务权限列表',
api: DocumentTasksPermissionsList,
showIndexColumn: false,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
const [registerModal, { openModal }] = useModal();
function handleEdit(record: Recordable) {
openModal(true, { record, update: true });
}
function handleAdd() {
openModal(true, { update: false });
}
async function handleDelete(record: Recordable) {
await DocumentTasksPermissionsRemove([record.id]);
await reload();
}
</script>
<style scoped></style>
Loading…
Cancel
Save