department.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. import request from "@/utils/request";
  2. const API_PATH = "/payment/department";
  3. // 部门状态标签类型
  4. export const DEPARTMENT_STATUS_TAG_TYPE: Record<string, string> = {
  5. NORMAL: "success",
  6. DISABLED: "warning"
  7. };
  8. // 部门状态标签
  9. export const DEPARTMENT_STATUS_LABEL: Record<string, string> = {
  10. NORMAL: "正常",
  11. DISABLED: "禁用"
  12. };
  13. // 部门状态枚举
  14. export enum DepartmentStatus {
  15. ACTIVE = "NORMAL",
  16. DISABLED = "DISABLED"
  17. };
  18. // 部门列表查询参数
  19. export interface DepartmentPageQuery {
  20. page_no?: number;
  21. page_size?: number;
  22. enterprise_id?: string;
  23. department_name?: string;
  24. department_code?: string;
  25. parent_department_id?: string;
  26. status?: string;
  27. }
  28. // 部门信息
  29. export interface DepartmentInfo {
  30. id: number;
  31. department_id: string;
  32. department_name: string;
  33. department_code?: string;
  34. parent_department_id?: string;
  35. enterprise_id: string;
  36. status: string;
  37. sort_order?: number;
  38. leader_employee_id?: string;
  39. leader_employee_name?: string;
  40. created_time: string;
  41. updated_time: string;
  42. tenant_id: number;
  43. }
  44. // 部门列表项
  45. export interface DepartmentTable {
  46. id: number;
  47. department_id: string;
  48. department_name: string;
  49. department_code?: string;
  50. parent_department_id?: string;
  51. enterprise_id: string;
  52. status: string;
  53. sort_order?: number;
  54. leader_employee_name?: string;
  55. created_time: string;
  56. }
  57. // 部门树形节点
  58. export interface DepartmentTreeNode {
  59. id: string;
  60. label: string;
  61. code?: string;
  62. sort_order?: number;
  63. leader_employee_name?: string;
  64. children?: DepartmentTreeNode[];
  65. }
  66. // 部门操作响应
  67. export interface DepartmentOperation {
  68. department_id: string;
  69. department_name: string;
  70. }
  71. // 部门详情响应
  72. export interface DepartmentDetail {
  73. department: DepartmentInfo;
  74. sub_departments: DepartmentInfo[];
  75. }
  76. // 部门API
  77. export default {
  78. // 创建部门
  79. createDepartment(data: {
  80. enterprise_id: string;
  81. department_name: string;
  82. department_code?: string;
  83. parent_department_id?: string;
  84. sort_order?: number;
  85. leader_employee_id?: string;
  86. leader_employee_name?: string;
  87. }) {
  88. return request<ApiResponse<DepartmentOperation>>({
  89. url: API_PATH,
  90. method: "post",
  91. data,
  92. });
  93. },
  94. // 删除部门
  95. deleteDepartment(department_id: string, enterprise_id: string) {
  96. return request<ApiResponse<DepartmentOperation>>({
  97. url: `${API_PATH}/${department_id}`,
  98. method: "delete",
  99. params: {
  100. enterprise_id,
  101. },
  102. });
  103. },
  104. // 更新部门
  105. updateDepartment(department_id: string, enterprise_id: string, data: {
  106. department_name?: string;
  107. department_code?: string;
  108. parent_department_id?: string;
  109. sort_order?: number;
  110. leader_employee_id?: string;
  111. leader_employee_name?: string;
  112. }) {
  113. return request<ApiResponse<DepartmentOperation>>({
  114. url: `${API_PATH}/${department_id}`,
  115. method: "put",
  116. params: {
  117. enterprise_id,
  118. },
  119. data,
  120. });
  121. },
  122. // 查询部门详情
  123. getDepartmentDetail(department_id: string, enterprise_id: string) {
  124. return request<ApiResponse<DepartmentDetail>>({
  125. url: `${API_PATH}/${department_id}`,
  126. method: "get",
  127. params: {
  128. enterprise_id,
  129. },
  130. });
  131. },
  132. // 获取部门选项
  133. getDepartmentOptions(params: {
  134. enterprise_id: string;
  135. }) {
  136. return request<ApiResponse<any[]>>({
  137. url: `${API_PATH}/tree/list`,
  138. method: "get",
  139. params,
  140. }).then(response => {
  141. // 转换数据结构以匹配前端选择框
  142. if (response.data.code === 0 && response.data.data) {
  143. const convertTreeStructure = (tree: any[]): any[] => {
  144. return tree.map(node => ({
  145. value: node.department_id,
  146. label: node.department_name,
  147. disabled: false,
  148. children: node.children && node.children.length > 0 ? convertTreeStructure(node.children) : []
  149. }));
  150. };
  151. response.data.data = convertTreeStructure(response.data.data);
  152. }
  153. return response;
  154. });
  155. },
  156. // 查询子部门列表
  157. getSubDepartments(department_id: string, enterprise_id: string) {
  158. return request<ApiResponse<string[]>>({
  159. url: `${API_PATH}/${department_id}/sub`,
  160. method: "get",
  161. params: {
  162. enterprise_id,
  163. },
  164. });
  165. },
  166. // 分页查询部门列表
  167. listDepartment(query: DepartmentPageQuery) {
  168. return request<ApiResponse<{
  169. items: DepartmentTable[];
  170. total: number;
  171. page_no: number;
  172. page_size: number;
  173. }>> ({
  174. url: API_PATH,
  175. method: "get",
  176. params: query,
  177. });
  178. },
  179. // 获取部门树形结构
  180. getDepartmentTree(enterprise_id: string) {
  181. return request<ApiResponse<DepartmentTreeNode[]>>({
  182. url: `${API_PATH}/tree/list`,
  183. method: "get",
  184. params: {
  185. enterprise_id,
  186. },
  187. });
  188. },
  189. };