From f5eaece8abdc7e1952dba809bd287aa64ab37453 Mon Sep 17 00:00:00 2001 From: zsqtony <450952271@qq.com> Date: Mon, 30 Jun 2025 15:55:47 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E7=BB=84=E7=BB=87=EF=BC=8C?= =?UTF-8?q?=E5=91=98=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Select.tsx | 115 ++++++++++++++---- src/gen/ApiTypes.d.ts | 51 ++++++++ src/gen/Apis.ts | 32 +++++ src/gen/Enums.ts | 6 + .../modals/AssetHousesCreate.tsx | 6 +- .../modals/AssetHousesUpdate.tsx | 6 +- .../modals/AssetUnitsCreate.tsx | 4 +- .../modals/AssetUnitsUpdate.tsx | 15 +-- .../asset_projects/modals/AssetUpdate.tsx | 4 +- .../asset/asset_projects/modals/Create.tsx | 7 +- .../companies/components/Organizations.tsx | 50 +++++++- .../companies/modals/OrganizationsCreate.tsx | 81 +++++------- .../companies/modals/OrganizationsUpdate.tsx | 82 +++++++++++++ src/pages/company/employees/index.tsx | 67 ++++++++++ src/pages/company/employees/modals/Create.tsx | 88 ++++++++++++++ src/pages/company/employees/modals/Update.tsx | 101 +++++++++++++++ 16 files changed, 614 insertions(+), 101 deletions(-) create mode 100644 src/pages/company/companies/modals/OrganizationsUpdate.tsx create mode 100644 src/pages/company/employees/index.tsx create mode 100644 src/pages/company/employees/modals/Create.tsx create mode 100644 src/pages/company/employees/modals/Update.tsx diff --git a/src/components/Select.tsx b/src/components/Select.tsx index bbd3115..3e7ae47 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -5,7 +5,7 @@ import { ProColumns, ProFormColumnsType } from '@ant-design/pro-components'; type ReturnType = ProColumns & ProFormColumnsType; type PropsType = { required?: boolean } & ReturnType; -export const SysSelects = { +export const Selects = { Companies(props?: PropsType): ReturnType { const { title = '机构', @@ -21,13 +21,6 @@ export const SysSelects = { valueType: 'select', hideInTable: hideInTable, formItemProps: { ...(required ? rulesHelper.number : {}) }, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - }, request: async (params) => ( await Apis.Company.Companies.Select({ @@ -36,6 +29,14 @@ export const SysSelects = { }) ).data, ...rest, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + ...rest?.fieldProps, + }, }; }, // 楼栋下拉框 @@ -54,13 +55,6 @@ export const SysSelects = { valueType: 'select', hideInTable: hideInTable, formItemProps: { ...(required ? rulesHelper.number : {}) }, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - }, request: async (params) => ( await Apis.Asset.AssetBuildings.Select({ @@ -70,6 +64,14 @@ export const SysSelects = { }) ).data, ...rest, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + ...rest?.fieldProps, + }, }; }, // 单元下拉框 @@ -88,13 +90,6 @@ export const SysSelects = { valueType: 'select', hideInTable: hideInTable, formItemProps: { ...(required ? rulesHelper.number : {}) }, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - }, request: async (params) => ( await Apis.Asset.AssetUnits.Select({ @@ -105,6 +100,82 @@ export const SysSelects = { }) ).data, ...rest, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + ...rest?.fieldProps, + }, + }; + }, + //组织 + Organizations(props?: PropsType): ReturnType { + const { + title = '组织', + key = 'organizations_id', + required = false, + hideInTable = true, + ...rest + } = props ?? {}; + + return { + title: title, + key: key, + valueType: 'select', + hideInTable: hideInTable, + formItemProps: { ...(required ? rulesHelper.number : {}) }, + request: async (params) => + ( + await Apis.Company.Organizations.Select({ + keywords: params?.KeyWords, + ...params, + }) + ).data, + ...rest, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + ...rest?.fieldProps, + }, + }; + }, + //员工 + Employees(props?: PropsType): ReturnType { + const { + title = '员工', + key = 'managers_id', + required = false, + hideInTable = true, + ...rest + } = props ?? {}; + + return { + title: title, + key: key, + valueType: 'select', + hideInTable: hideInTable, + formItemProps: { ...(required ? rulesHelper.number : {}) }, + request: async (params) => + ( + await Apis.Company.CompanyEmployees.Select({ + keywords: params?.KeyWords, + ...params, + }) + ).data, + ...rest, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + ...rest?.fieldProps, + }, }; }, }; diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts index d2fe834..bce1943 100644 --- a/src/gen/ApiTypes.d.ts +++ b/src/gen/ApiTypes.d.ts @@ -303,6 +303,48 @@ declare namespace ApiTypes { "keywords"?: string; // 关键词 }; } + namespace CompanyEmployees { + type List = { + "name"?: string; // 模糊搜索:名称 + "phone"?: string; // 模糊搜索:手机号 + }; + type Store = { + "name": string; // 名称 + "phone": string; // 手机号 + "password"?: string; // 密码[hidden] + "organizations_id": number; // 所属组织id,[ref:organizations] + "positions_id"?: number; // 岗位id,[ref:company_positions] + "sex"?: string; // 性别,[enum:SexEnum] + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "name": string; // 名称 + "phone": string; // 手机号 + "password"?: string; // 密码[hidden] + "organizations_id": number; // 所属组织id,[ref:organizations] + "positions_id"?: number; // 岗位id,[ref:company_positions] + "sex"?: string; // 性别,[enum:SexEnum] + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type SoftDelete = { + "id": number; // id + }; + type Restore = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type Select = { + "companies_id"?: number; // 所属机构id,[ref:companies] + "organizations_id"?: number; // 所属组织id,[ref:organizations] + "keywords"?: string; // 关键词 + }; + } namespace CompanyReceiptAccounts { type List = { "name"?: string; // 模糊搜索:名称 @@ -387,6 +429,15 @@ declare namespace ApiTypes { type Delete = { "id": number; // id }; + type Select = { + "keywords"?: string; // 关键词 + "type"?: string; // 机构类型:CompanyTypeEnum + }; + type SelectTree = { + "keywords"?: string; // - + "type"?: string; // - + "parent_id"?: number; // - + }; } } namespace Permission { diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts index 661125e..7559c68 100644 --- a/src/gen/Apis.ts +++ b/src/gen/Apis.ts @@ -156,6 +156,32 @@ export const Apis = { return request('admin/company/companies/select', { data }); }, }, + CompanyEmployees: { + List(data?: ApiTypes.Company.CompanyEmployees.List): Promise { + return request('admin/company/company_employees/list', { data }); + }, + Store(data: ApiTypes.Company.CompanyEmployees.Store): Promise { + return request('admin/company/company_employees/store', { data }); + }, + Update(data: ApiTypes.Company.CompanyEmployees.Update): Promise { + return request('admin/company/company_employees/update', { data }); + }, + Show(data: ApiTypes.Company.CompanyEmployees.Show): Promise { + return request('admin/company/company_employees/show', { data }); + }, + SoftDelete(data: ApiTypes.Company.CompanyEmployees.SoftDelete): Promise { + return request('admin/company/company_employees/soft_delete', { data }); + }, + Restore(data: ApiTypes.Company.CompanyEmployees.Restore): Promise { + return request('admin/company/company_employees/restore', { data }); + }, + Delete(data: ApiTypes.Company.CompanyEmployees.Delete): Promise { + return request('admin/company/company_employees/delete', { data }); + }, + Select(data?: ApiTypes.Company.CompanyEmployees.Select): Promise { + return request('admin/company/company_employees/select', { data }); + }, + }, CompanyReceiptAccounts: { List(data?: ApiTypes.Company.CompanyReceiptAccounts.List): Promise { return request('admin/company/company_receipt_accounts/list', { data }); @@ -204,6 +230,12 @@ export const Apis = { Delete(data: ApiTypes.Company.Organizations.Delete): Promise { return request('admin/company/organizations/delete', { data }); }, + Select(data?: ApiTypes.Company.Organizations.Select): Promise { + return request('admin/company/organizations/select', { data }); + }, + SelectTree(data?: ApiTypes.Company.Organizations.SelectTree): Promise { + return request('admin/company/organizations/select_tree', { data }); + }, }, }, Permission: { diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts index a9ad84d..797dd51 100644 --- a/src/gen/Enums.ts +++ b/src/gen/Enums.ts @@ -116,6 +116,12 @@ export const OrganizationsTypeEnum= { 'Department': {"text":"部门","color":"#dc3545","value":"Department"}, }; +// 性别 +export const SexEnum= { + 'Male': {"text":"男","color":"#0000ff","value":"Male"}, + 'FeMale': {"text":"女","color":"#ff0000","value":"FeMale"}, +}; + // SysModuleEnum export const SysModuleEnum= { 'Admin': {"text":"管理员","color":"#cf1322","value":"Admin"}, diff --git a/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx b/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx index 9825f2e..efed27a 100644 --- a/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx @@ -5,7 +5,7 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; -import { SysSelects } from '@/components/Select'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetHousesOrientationEnum, @@ -53,7 +53,7 @@ export default function Create(props: MyBetaModalFormProps) { { valueType: 'group', columns: [ - SysSelects?.AssetBuildings({ + Selects?.AssetBuildings({ key: 'asset_buildings_id', title: '选择楼栋', params: { @@ -71,7 +71,7 @@ export default function Create(props: MyBetaModalFormProps) { }, }, }), - SysSelects?.AssetUnits({ + Selects?.AssetUnits({ key: 'asset_units_id', title: '选择单元', params: { diff --git a/src/pages/asset/asset_projects/modals/AssetHousesUpdate.tsx b/src/pages/asset/asset_projects/modals/AssetHousesUpdate.tsx index 16b1e80..31eb384 100644 --- a/src/pages/asset/asset_projects/modals/AssetHousesUpdate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetHousesUpdate.tsx @@ -5,7 +5,7 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; -import { SysSelects } from '@/components/Select'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetHousesOrientationEnum, @@ -57,7 +57,7 @@ export default function Update(props: MyBetaModalFormProps) { { valueType: 'group', columns: [ - SysSelects?.AssetBuildings({ + Selects?.AssetBuildings({ key: 'asset_buildings_id', title: '选择楼栋', params: { @@ -75,7 +75,7 @@ export default function Update(props: MyBetaModalFormProps) { }, }, }), - SysSelects?.AssetUnits({ + Selects?.AssetUnits({ key: 'asset_units_id', title: '选择单元', params: { diff --git a/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx b/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx index 5ef836c..5f73667 100644 --- a/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx @@ -5,7 +5,7 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; -import { SysSelects } from '@/components/Select'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetUnitsBuildingStructureEnum, @@ -47,7 +47,7 @@ export default function Create(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ - SysSelects?.AssetBuildings({ + Selects?.AssetBuildings({ key: 'asset_buildings_id', title: '选择楼栋', params:{ diff --git a/src/pages/asset/asset_projects/modals/AssetUnitsUpdate.tsx b/src/pages/asset/asset_projects/modals/AssetUnitsUpdate.tsx index c1c6d8b..7ecfb4f 100644 --- a/src/pages/asset/asset_projects/modals/AssetUnitsUpdate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetUnitsUpdate.tsx @@ -5,7 +5,7 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; -import { SysSelects } from '@/components/Select'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetUnitsBuildingStructureEnum, @@ -22,11 +22,7 @@ export default function Update(props: MyBetaModalFormProps) { title={`编辑`} wrapperCol={{ span: 24 }} width="700px" - trigger={ - - } + trigger={} form={form} onOpenChange={(open: any) => { if (open) { @@ -38,7 +34,6 @@ export default function Update(props: MyBetaModalFormProps) { ...values, asset_projects_id: props?.item?.asset_projects_id, id: props?.item?.id, - }) .then(() => { props.reload?.(); @@ -48,13 +43,13 @@ export default function Update(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ - SysSelects?.AssetBuildings({ + Selects?.AssetBuildings({ key: 'asset_buildings_id', title: '选择楼栋', - params:{ + params: { asset_projects_id: props?.item?.id, }, - colProps: { span:24 }, + colProps: { span: 24 }, formItemProps: { ...rulesHelper.number }, }), { diff --git a/src/pages/asset/asset_projects/modals/AssetUpdate.tsx b/src/pages/asset/asset_projects/modals/AssetUpdate.tsx index 4bb8eef..71f9c73 100644 --- a/src/pages/asset/asset_projects/modals/AssetUpdate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetUpdate.tsx @@ -6,7 +6,7 @@ import { rulesHelper, } from '@/common'; import { Address } from '@/components/Address'; -import { SysSelects } from '@/components/Select'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetProjectsChargeEnum, @@ -64,7 +64,7 @@ export default function Update(props: MyBetaModalFormProps) { title: '项目别名', colProps: { span: 6 }, }, - SysSelects?.Companies({ + Selects?.Companies({ key: 'companies_id', title: '所属机构', colProps: { span: 6 }, diff --git a/src/pages/asset/asset_projects/modals/Create.tsx b/src/pages/asset/asset_projects/modals/Create.tsx index f9f6e8b..12c25ed 100644 --- a/src/pages/asset/asset_projects/modals/Create.tsx +++ b/src/pages/asset/asset_projects/modals/Create.tsx @@ -6,7 +6,7 @@ import { rulesHelper, } from '@/common'; import { Address } from '@/components/Address'; -import { SysSelects } from '@/components/Select'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetProjectsChargeEnum, @@ -35,7 +35,6 @@ export default function Create(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ - { key: 'name', title: '项目名称', @@ -47,7 +46,7 @@ export default function Create(props: MyBetaModalFormProps) { title: '项目别名', colProps: { span: 6 }, }, - SysSelects?.Companies({ + Selects?.Companies({ key: 'companies_id', title: '所属机构', colProps: { span: 6 }, @@ -92,7 +91,7 @@ export default function Create(props: MyBetaModalFormProps) { MyFormItems.EnumSelect({ key: 'status', title: '项目状态', - colProps: { span:6 }, + colProps: { span: 6 }, valueEnum: AssetProjectsStatusEnum, // required: true, }), diff --git a/src/pages/company/companies/components/Organizations.tsx b/src/pages/company/companies/components/Organizations.tsx index 41fe6aa..87afca4 100644 --- a/src/pages/company/companies/components/Organizations.tsx +++ b/src/pages/company/companies/components/Organizations.tsx @@ -1,7 +1,15 @@ -import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common'; +import { + MyBetaModalFormProps, + MyButtons, + MyColumns, + MyProTableProps, +} from '@/common'; import { Apis } from '@/gen/Apis'; +import { OrganizationsTypeEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; import OrganizationsCreate from '../modals/OrganizationsCreate'; +import OrganizationsUpdate from '../modals/OrganizationsUpdate'; export default function Organizations(props: MyBetaModalFormProps) { return ( @@ -20,6 +28,7 @@ export default function Organizations(props: MyBetaModalFormProps) { , ]} @@ -27,10 +36,45 @@ export default function Organizations(props: MyBetaModalFormProps) { columns={[ MyColumns.ID(), { - title: '楼栋', - width: '250px', + title: '上级组织', + dataIndex: ['organization_parent', 'name'], + }, + { + title: '组织', dataIndex: 'name', }, + MyColumns.EnumTag({ + title: '类型', + dataIndex: 'type', + valueEnum: OrganizationsTypeEnum, + }), + { + title: '负责人', + dataIndex: ['manager', 'name'], + }, + { + title: '联系电话', + dataIndex: 'manager_phone', + }, + + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + Apis.Company.Organizations.Delete({ id: item.id }).then( + () => action?.reload(), + ) + } + /> + + ), + }), ]} /> diff --git a/src/pages/company/companies/modals/OrganizationsCreate.tsx b/src/pages/company/companies/modals/OrganizationsCreate.tsx index 5304c94..c9938f2 100644 --- a/src/pages/company/companies/modals/OrganizationsCreate.tsx +++ b/src/pages/company/companies/modals/OrganizationsCreate.tsx @@ -5,22 +5,25 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; -import { Address } from '@/components/Address'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { CompaniesMerchantTypeEnum } from '@/gen/Enums'; +import { OrganizationsTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { message } from 'antd'; export default function Create(props: MyBetaModalFormProps) { return ( - + {...MyModalFormProps.props} title={`添加${props.title}`} wrapperCol={{ span: 24 }} width="800px" trigger={} onFinish={async (values) => - Apis.Company.Companies.Store(values) + Apis.Company.Organizations.Store({ + ...values, + companies_id: props?.item?.id, + }) .then(() => { props.reload?.(); message.success(props.title + '成功'); @@ -29,69 +32,43 @@ export default function Create(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ + Selects?.Organizations({ + title: '上级组织', + key: 'parent_id', + params: { companies_id: props?.item?.id }, + colProps: { span: 24 }, + }), { key: 'name', - title: '机构名称', - colProps: { span: 8 }, + title: '组织名称', + colProps: { span: 24 }, formItemProps: { ...rulesHelper.text }, }, - { - key: 'short_name', - title: '机构简称', + MyFormItems.EnumRadio({ + key: 'type', + title: '类型', + colProps: { span: 24 }, + valueEnum: OrganizationsTypeEnum, + required: true, + }), + Selects?.Employees({ + title: '负责人', colProps: { span: 8 }, - }, + }), { - key: 'business_license_number', - title: '营业执照号', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - - { - key: 'contact_name', - title: '联系人姓名', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'contact_phone', - title: '联系人手机', + key: 'manager_phone', + title: '负责人手机', colProps: { span: 8 }, valueType: 'number', fieldProps: { maxLength: 11, }, - formItemProps: { ...rulesHelper.number }, }, { - key: 'contact_email', - title: '联系人邮箱', + key: 'manager_email', + title: '负责人邮箱', colProps: { span: 8 }, }, - { - key: 'contact_address', - title: '联系人地址', - colProps: { span: 24 }, - }, - MyFormItems.EnumRadio({ - key: 'merchant_type', - title: '商户类型', - colProps: { span: 24 }, - valueEnum: CompaniesMerchantTypeEnum, - required: true, - }), - Address.Cascader({ - key: 'casacader', - title: '选择地址', - colProps: { span: 24 }, - keys: ['province', 'city', 'area', 'street'], - required: true, - }), - { - key: 'address', - title: '详细地址', - colProps: { span: 24 }, - }, ]} /> ); diff --git a/src/pages/company/companies/modals/OrganizationsUpdate.tsx b/src/pages/company/companies/modals/OrganizationsUpdate.tsx new file mode 100644 index 0000000..86f6a82 --- /dev/null +++ b/src/pages/company/companies/modals/OrganizationsUpdate.tsx @@ -0,0 +1,82 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { OrganizationsTypeEnum } from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`编辑${props.title}`} + form={form} + trigger={} + wrapperCol={{ span: 24 }} + width="800px" + onOpenChange={(open: any) => { + if (open && props.item) { + form.setFieldsValue(props.item); + } + }} + onFinish={async (values) => + Apis.Company.Organizations.Update({ + ...values, + id: props.item?.id ?? 0, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + Selects?.Organizations({ + title: '上级组织', + key: 'parent_id', + params: { companies_id: props?.item?.companies_id }, + colProps: { span: 24 }, + }), + { + key: 'name', + title: '组织名称', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }, + MyFormItems.EnumRadio({ + key: 'type', + title: '类型', + colProps: { span: 24 }, + valueEnum: OrganizationsTypeEnum, + required: true, + }), + Selects?.Employees({ + title: '负责人', + colProps: { span: 8 }, + }), + { + key: 'manager_phone', + title: '负责人手机', + colProps: { span: 8 }, + valueType: 'number', + fieldProps: { + maxLength: 11, + }, + }, + { + key: 'manager_email', + title: '负责人邮箱', + colProps: { span: 8 }, + }, + ]} + /> + ); +} diff --git a/src/pages/company/employees/index.tsx b/src/pages/company/employees/index.tsx new file mode 100644 index 0000000..8a48043 --- /dev/null +++ b/src/pages/company/employees/index.tsx @@ -0,0 +1,67 @@ +import { + MyButtons, + MyColumns, + MyPageContainer, + MyProTableProps, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import Create from './modals/Create'; +import Update from './modals/Update'; + +export default function Index({ title = '管理员' }) { + return ( + + + MyProTableProps.request( + params, + sort, + Apis.Company.CompanyEmployees.List, + ) + } + toolBarRender={(action) => [ + , + ]} + columns={[ + MyColumns.ID(), + { + title: '姓名', + dataIndex: 'name', + }, + { + title: '手机号', + dataIndex: 'phone', + }, + { + title: '机构', + dataIndex: ['company', 'name'], + }, + { + title: '组织', + dataIndex: ['organization', 'name'], + }, + MyColumns.UpdatedAt(), + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + Apis.Common.Admins.Delete({ id: item.id }).then(() => + action?.reload(), + ) + } + /> + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/company/employees/modals/Create.tsx b/src/pages/company/employees/modals/Create.tsx new file mode 100644 index 0000000..89cdbea --- /dev/null +++ b/src/pages/company/employees/modals/Create.tsx @@ -0,0 +1,88 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { SexEnum } from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { message } from 'antd'; + +export default function Create(props: MyBetaModalFormProps) { + return ( + + {...MyModalFormProps.props} + title={`添加${props.title}`} + wrapperCol={{ span: 24 }} + width="500px" + trigger={} + onFinish={async (values) => + Apis.Company.CompanyEmployees.Store(values) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + Selects?.Companies({ + title: '机构', + key: 'companies_id', + formItemProps: { ...rulesHelper.text }, + }), + { + valueType: 'dependency', + name: ['companies_id'], + columns: ({ companies_id }) => [ + Selects?.Organizations({ + title: '所属组织', + params: { companies_id: companies_id }, + key: 'organizations_id', + formItemProps: { ...rulesHelper.text }, + }), + ], + }, + { + key: 'name', + title: '姓名', + colProps: { span: 12 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'phone', + title: '手机号', + valueType: 'number', + fieldProps: { + maxLength: 11, + }, + colProps: { span: 12 }, + formItemProps: { ...rulesHelper.text }, + }, + MyFormItems.EnumRadio({ + key: 'sex', + title: '性别', + colProps: { span: 24 }, + valueEnum: SexEnum, + required: true, + }), + + { + key: 'password', + title: '密码', + colProps: { span: 24 }, + valueType: 'password', + }, + { + key: 'remark', + title: '备注', + colProps: { span: 24 }, + valueType: 'textarea', + }, + ]} + /> + ); +} diff --git a/src/pages/company/employees/modals/Update.tsx b/src/pages/company/employees/modals/Update.tsx new file mode 100644 index 0000000..4cd4497 --- /dev/null +++ b/src/pages/company/employees/modals/Update.tsx @@ -0,0 +1,101 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; + +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { SexEnum } from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`编辑${props.title}`} + trigger={} + wrapperCol={{ span: 24 }} + width="500px" + form={form} + onOpenChange={(open: any) => { + if (open && props.item) { + form.setFieldsValue({ + ...props.item, + roles_id: props.item?.roles?.map((item: any) => item.value), + }); + } + }} + onFinish={async (values) => + Apis.Company.CompanyEmployees.Update({ + ...values, + id: props.item?.id ?? 0, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + Selects?.Companies({ + title: '机构', + key: 'companies_id', + formItemProps: { ...rulesHelper.text }, + }), + { + valueType: 'dependency', + name: ['companies_id'], + columns: ({ companies_id }) => [ + Selects?.Organizations({ + title: '所属组织', + params: { companies_id: companies_id }, + key: 'organizations_id', + formItemProps: { ...rulesHelper.text }, + }), + ], + }, + { + key: 'name', + title: '姓名', + colProps: { span: 12 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'phone', + title: '手机号', + valueType: 'number', + fieldProps: { + maxLength: 11, + }, + colProps: { span: 12 }, + formItemProps: { ...rulesHelper.text }, + }, + MyFormItems.EnumRadio({ + key: 'sex', + title: '性别', + colProps: { span: 24 }, + valueEnum: SexEnum, + required: true, + }), + + { + key: 'password', + title: '密码', + colProps: { span: 24 }, + valueType: 'password', + }, + { + key: 'remark', + title: '备注', + colProps: { span: 24 }, + valueType: 'textarea', + }, + ]} + /> + ); +}