Department.razor 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. @page "/Department"
  2. @attribute [Authorize]
  3. <PageContainer>
  4. <Breadcrumb>
  5. <Breadcrumb>
  6. <BreadcrumbItem>
  7. <a href="/Home"><Icon Type="home"></Icon></a>
  8. </BreadcrumbItem>
  9. <BreadcrumbItem>
  10. <Icon Type="setting"></Icon><span>基本信息管理</span>
  11. </BreadcrumbItem>
  12. <BreadcrumbItem>
  13. <Icon Type="user"></Icon><span>部门管理</span>
  14. </BreadcrumbItem>
  15. </Breadcrumb>
  16. </Breadcrumb>
  17. <Content>
  18. @*<Button Type="primary" Icon="folder-add" OnClick="()=>AddNew(null)" Style="float:right">添加</Button>*@
  19. </Content>
  20. <ChildContent>
  21. <AntDesign.Layout>
  22. <Sider Style="background-color:white" Width="300">
  23. <div style="width:fit-content">
  24. @if (departments != null)
  25. {
  26. <Tree @ref="tree" Draggable BlockNode DefaultExpandParent AutoExpandParent
  27. DataSource="GetChildren(null)"
  28. TitleExpression="x => x.DataItem.Name"
  29. ChildrenExpression="x => GetChildren(x.DataItem)"
  30. IsLeafExpression="x => GetChildren(x.DataItem)?.Count == 0"
  31. KeyExpression="x => x.DataItem.Id.ToString()"
  32. TItem="wispro.sp.entity.Department"
  33. OnClick="OnSelect"
  34. Style="width:250px;">
  35. <TitleTemplate>
  36. <wispro.sp.web.Components.RightMenuTreeNode Department="@context.DataItem"
  37. OnCreate="()=>AddNew(context.DataItem)"
  38. OnEdit="()=>EditDept(context.DataItem)"
  39. OnDelete="() => DeleteDept(context.DataItem)" />
  40. </TitleTemplate>
  41. </Tree>
  42. }
  43. else
  44. {
  45. <Spin />
  46. }
  47. </div>
  48. </Sider>
  49. <Content>
  50. <AntDesign.Layout Style=" padding: 0 24px 24px;">
  51. <Content>
  52. <div>
  53. @if (_editDepartment != null && _editDepartment.Id > 0)
  54. {
  55. <Button Type="primary" Icon="user-add" OnClick="()=>AddNewUser()" Style="float:right">添加人员</Button>
  56. }
  57. else
  58. {
  59. <div Style="float:right;color:red;">添加人员,请先选择左边的部门!</div>
  60. }
  61. </div>
  62. @if (_loading)
  63. {
  64. <center><Spin /></center>
  65. }
  66. else
  67. {
  68. <AntDesign.Table @ref="table" @bind-PageIndex="_pageIndex" @bind-PageSize="_pageSize"
  69. TItem="Staff"
  70. Loading="_loading"
  71. DataSource="@forecasts"
  72. Total="_total"
  73. @bind-SelectedRows="selectedRows"
  74. OnRow="OnRow"
  75. Bordered=@true
  76. Size=@TableSize.Middle>
  77. <ChildContent>
  78. <Selection Key="@(context.Name)" />
  79. <AntDesign.Column Title="序号" TData="int">
  80. @serialNumber(_pageIndex, _pageSize, context.Name)
  81. </AntDesign.Column>
  82. <AntDesign.Column Title="姓名" @bind-Field="@context.Name" Sortable Filterable />
  83. <AntDesign.Column Title="入职日期" @bind-Field="@context.EntyDate" Format="yyyy-MM-dd" Sortable Filterable />
  84. <AntDesign.Column Title="部门" @bind-Field="@context.Department" Sortable Filterable />
  85. <AntDesign.Column Title="工作地" Field="@context.WorkPlace" Sortable Filterable />
  86. <AntDesign.Column Title="备注" @bind-Field="@context.Memo" Sortable Filterable />
  87. <ActionColumn>
  88. <Space>
  89. <SpaceItem><Button Type="@ButtonType.Text" OnClick="()=>Edit(context)">编辑</Button></SpaceItem>
  90. <SpaceItem><Button Danger Type="@ButtonType.Text" OnClick="()=>Delete(context)">删除</Button></SpaceItem>
  91. </Space>
  92. </ActionColumn>
  93. </ChildContent>
  94. <PaginationTemplate>
  95. <div style="display: flex; align-items: center">
  96. <Pagination Class="my-custom-pagination"
  97. Total="@_total"
  98. PageSize="@_pageSize"
  99. Current="@_pageIndex"
  100. ShowSizeChanger="@true"
  101. OnChange="HandlePageChange" />
  102. </div>
  103. </PaginationTemplate>
  104. </AntDesign.Table>
  105. }
  106. </Content>
  107. </AntDesign.Layout>
  108. </Content>
  109. </AntDesign.Layout>
  110. </ChildContent>
  111. </PageContainer>
  112. <Modal Title="部门添加/修改"
  113. Visible="@newModal"
  114. OnOk="@NewOk"
  115. OnCancel="@NewCancel">
  116. <Form Model="_editDepartment" LabelColSpan="6"
  117. WrapperColSpan="16">
  118. <FormItem Label="名称">
  119. <Input @bind-Value="@context.Name" />
  120. </FormItem>
  121. <FormItem Label="备注">
  122. <TextArea @bind-Value="@context.Memo" MinRows="4" />
  123. </FormItem>
  124. </Form>
  125. </Modal>
  126. <Modal Title="职员添加/修改"
  127. Visible="@_newUserModal"
  128. OnOk="@HandleOk"
  129. OnCancel="@HandleCancel">
  130. <Form Model="EditingStaff" LabelColSpan="6"
  131. WrapperColSpan="16">
  132. <FormItem Label="姓名">
  133. @if (_isAdd)
  134. {
  135. <Input @bind-Value="@context.Name" />
  136. }
  137. else
  138. {
  139. <wispro.sp.web.Components.StaffAutoComplete OnSelected="UserSelected" @bind-SelectName="@context.Name" />
  140. }
  141. </FormItem>
  142. <FormItem Label="岗位状态">
  143. <Input @bind-Value="@context.Status" />
  144. </FormItem>
  145. <FormItem Label="是否计算绩效">
  146. <Switch @bind-Value="@context.IsCalPerformsnce" />
  147. </FormItem>
  148. <FormItem Label="是否在职">
  149. <Switch @bind-Value="@context.IsOnJob" />
  150. </FormItem>
  151. <FormItem Label="是否参与等级计算">
  152. <Switch @bind-Value="@context.IsGradeAssess" />
  153. </FormItem>
  154. <FormItem Label="工程师等级">
  155. <wispro.sp.web.Components.UserGradeSelect @bind-StaffGradeId="@EditingStaff.StaffGradeId" />
  156. </FormItem>
  157. <FormItem Label="职位">
  158. <Select DataSource="@_allPositions"
  159. DefaultValue="@PositionId"
  160. LabelName="@nameof(wispro.sp.entity.Position.Name)"
  161. ValueName="@nameof(wispro.sp.entity.Position.Id)"
  162. Style="width: 200px"
  163. Placeholder="请选择一个职位"
  164. IgnoreItemChanges="false"
  165. AllowClear
  166. OnClearSelected="()=>OnSelectedItemChangedHandler(null)"
  167. OnSelectedItemChanged="OnSelectedItemChangedHandler">
  168. </Select>
  169. </FormItem>
  170. <FormItem Label="工作地">
  171. <Select Mode="default"
  172. DataSource="@_places"
  173. @bind-Value="@context.WorkPlace">
  174. </Select>
  175. </FormItem>
  176. <FormItem Label="邮箱">
  177. <Input @bind-Value="@context.Mail" />
  178. </FormItem>
  179. <FormItem Label="入职时间">
  180. <DatePicker @bind-Value="@context.EntyDate" />
  181. </FormItem>
  182. <FormItem Label="转正日期">
  183. <DatePicker @bind-Value="@context.RegularDate" />
  184. </FormItem>
  185. <FormItem Label="备注">
  186. <TextArea @bind-Value="@context.Memo" MinRows="4" />
  187. </FormItem>
  188. @if (_isAdd)
  189. {
  190. <FormItem Label="账号">
  191. <Input @bind-Value="@context.Account" />
  192. </FormItem>
  193. <FormItem Label="密码">
  194. <Input @bind-Value="@context.Password" Type="password" />
  195. </FormItem>
  196. }
  197. </Form>
  198. </Modal>
  199. <style>
  200. .my-custom-pagination {
  201. margin: 15px 0;
  202. }
  203. .my-custom-pagination .ant-pagination-item,
  204. .my-custom-pagination .ant-pagination-item-link {
  205. border-radius: 100%;
  206. }
  207. </style>