category.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. /**
  2. * 公告分类管理API
  3. * @description 提供公告分类的增删改查功能
  4. * @version 1.0.0
  5. */
  6. import request from '@/router/axios';
  7. /**
  8. * 分类状态枚举
  9. * @typedef {0|1} CategoryStatus
  10. * - 0: 禁用
  11. * - 1: 启用
  12. */
  13. /**
  14. * 删除状态枚举
  15. * @typedef {0|1} DeleteStatus
  16. * - 0: 未删除
  17. * - 1: 已删除
  18. */
  19. /**
  20. * 系统分类标识
  21. * @typedef {0|1} SystemFlag
  22. * - 0: 非系统分类
  23. * - 1: 系统分类
  24. */
  25. /**
  26. * 分类数据类型定义
  27. * @typedef {Object} CategoryItem
  28. * @property {number} id - 分类ID(唯一标识)
  29. * @property {string} name - 分类名称(必填,最大长度50)
  30. * @property {number} sortOrder - 排序(数值越小越靠前,默认0)
  31. * @property {number} orgId - 组织ID(必填)
  32. * @property {string} orgCode - 组织编码(必填)
  33. * @property {string} orgName - 组织名称(只读)
  34. * @property {SystemFlag} isSystem - 是否系统分类(0-否 1-是)
  35. * @property {string} remark - 备注(可选,最大长度200)
  36. * @property {number} createUser - 创建用户ID
  37. * @property {number} createDept - 创建部门ID
  38. * @property {string|null} createTime - 创建时间(ISO格式)
  39. * @property {number|null} updateUser - 更新用户ID
  40. * @property {string|null} updateTime - 更新时间(ISO格式)
  41. * @property {CategoryStatus} status - 状态(0-禁用 1-启用)
  42. * @property {DeleteStatus} isDeleted - 是否删除(0-否 1-是)
  43. */
  44. /**
  45. * 新增分类请求参数类型
  46. * @typedef {Object} AddCategoryParams
  47. * @property {number} createDept - 创建部门ID(必填)
  48. * @property {number} createUser - 创建用户ID(必填)
  49. * @property {string} name - 分类名称(必填,最大长度50)
  50. * @property {string} orgCode - 组织编码(必填)
  51. * @property {number} orgId - 组织ID(必填)
  52. * @property {string} orgName - 组织名称(必填)
  53. * @property {string} [remark=''] - 备注(可选,最大长度200)
  54. * @property {number} [sortOrder=0] - 排序(可选,默认0)
  55. */
  56. /**
  57. * 更新分类请求参数类型
  58. * @typedef {Object} UpdateCategoryParams
  59. * @property {number} id - 分类ID(必填)
  60. * @property {string} name - 分类名称(必填,最大长度50)
  61. * @property {string} [remark] - 备注(可选,最大长度200)
  62. * @property {number} [sortOrder] - 排序(可选)
  63. * @property {number} [createDept] - 创建部门ID
  64. * @property {number} [createUser] - 创建用户ID
  65. * @property {string} [orgCode] - 组织编码
  66. * @property {number} [orgId] - 组织ID
  67. * @property {string} [orgName] - 组织名称
  68. */
  69. /**
  70. * 通用API响应类型
  71. * @template T
  72. * @typedef {Object} ApiResponse
  73. * @property {number} code - 响应状态码
  74. * @property {boolean} success - 是否成功
  75. * @property {string} msg - 响应消息
  76. * @property {T} data - 响应数据
  77. */
  78. /**
  79. * @template T
  80. * @typedef {ApiResponse<T>} ApiResponseGeneric
  81. */
  82. /**
  83. * 获取分类列表
  84. * @returns {Promise<import('axios').AxiosResponse<ApiResponseGeneric<CategoryItem[]>>>} 分类列表响应
  85. * @throws {Error} 当请求失败时抛出错误
  86. * @example
  87. * // 获取所有分类
  88. * const response = await getCategoryList();
  89. * const categories = response.data.data;
  90. * console.log(categories.length);
  91. */
  92. export const getCategoryList = () => {
  93. return request({
  94. url: '/api/blade-factory/api/factory/notice/category/list',
  95. method: 'get'
  96. })
  97. }
  98. /**
  99. * 新增分类
  100. * @param {AddCategoryParams} params - 分类信息
  101. * @param {number} params.createDept - 创建部门ID
  102. * @param {number} params.createUser - 创建用户ID
  103. * @param {string} params.name - 分类名称
  104. * @param {string} params.orgCode - 组织编码
  105. * @param {number} params.orgId - 组织ID
  106. * @param {string} params.orgName - 组织名称
  107. * @param {string} [params.remark=''] - 备注
  108. * @param {number} [params.sortOrder=0] - 排序
  109. * @returns {Promise<import('axios').AxiosResponse<ApiResponseGeneric<null>>>} 操作结果
  110. * @throws {Error} 当请求失败或参数验证失败时抛出错误
  111. * @example
  112. * // 新增分类
  113. * const params = {
  114. * name: '重要公告',
  115. * createDept: 1,
  116. * createUser: 1,
  117. * orgCode: 'ORG001',
  118. * orgId: 1,
  119. * orgName: '总部',
  120. * remark: '重要公告分类'
  121. * };
  122. * await addCategory(params);
  123. */
  124. export const addCategory = (params) => {
  125. return request({
  126. url: '/api/blade-factory/api/factory/notice/category/add',
  127. method: 'post',
  128. data: {
  129. sortOrder: 0,
  130. ...params
  131. }
  132. })
  133. }
  134. /**
  135. * 更新分类
  136. * @param {UpdateCategoryParams} params - 分类信息(包含id)
  137. * 修改分类
  138. * @param {Object} params - 分类参数
  139. * @param {number} params.id - 分类ID
  140. * @param {string} params.name - 分类名称
  141. * @param {string} [params.remark] - 备注
  142. * @param {number} [params.sortOrder] - 排序
  143. * @returns {Promise<import('axios').AxiosResponse<ApiResponse<null>>>} 操作结果
  144. * @throws {Error} 当请求失败、参数验证失败或分类不存在时抛出错误
  145. * @example
  146. * // 更新分类
  147. * const params = {
  148. * id: 1,
  149. * name: '更新后的分类名称',
  150. * remark: '更新后的备注',
  151. * sortOrder: 10
  152. * };
  153. * await updateCategory(params);
  154. */
  155. export const updateCategory = (params) => {
  156. return request({
  157. url: '/api/blade-factory/api/factory/notice/category/update',
  158. method: 'post',
  159. data: params
  160. })
  161. }
  162. /**
  163. * 删除分类
  164. * @param {string|number} ids - 分类ID,多个用逗号分隔
  165. * @returns {Promise<import('axios').AxiosResponse<ApiResponse<null>>>} 操作结果
  166. * @throws {Error} 当请求失败或分类不存在时抛出错误
  167. * @example
  168. * // 删除单个分类
  169. * await removeCategory(1);
  170. *
  171. * // 删除多个分类
  172. * await removeCategory('1,2,3');
  173. */
  174. export const removeCategory = (ids) => {
  175. return request({
  176. url: '/api/blade-factory/api/notice/category/remove',
  177. method: 'post',
  178. params: {
  179. ids: String(ids)
  180. }
  181. })
  182. }
  183. /**
  184. * 获取分类详情
  185. * @param {number} id - 分类ID(必填)
  186. * @returns {Promise<import('axios').AxiosResponse<ApiResponseGeneric<CategoryItem>>>} 分类详情
  187. * @throws {Error} 当请求失败或分类不存在时抛出错误
  188. * @example
  189. * // 获取分类详情
  190. * const response = await getCategoryDetail(1);
  191. * const category = response.data.data;
  192. * console.log(category.name);
  193. */
  194. export const getCategoryDetail = (id) => {
  195. return request({
  196. url: '/api/blade-factory/api/notice/category/detail',
  197. method: 'get',
  198. params: {
  199. id
  200. }
  201. })
  202. }
  203. /**
  204. * 更新分类状态
  205. * @param {number} id - 分类ID(必填)
  206. * @param {CategoryStatus} status - 状态(0-禁用 1-启用)
  207. * @returns {Promise<import('axios').AxiosResponse<ApiResponse<null>>>} 操作结果
  208. * @throws {Error} 当请求失败或分类不存在时抛出错误
  209. * @example
  210. * // 启用分类
  211. * await updateCategoryStatus(1, 1);
  212. *
  213. * // 禁用分类
  214. * await updateCategoryStatus(1, 0);
  215. */
  216. export const updateCategoryStatus = (id, status) => {
  217. return request({
  218. url: '/api/blade-factory/api/notice/category/status',
  219. method: 'post',
  220. params: {
  221. id,
  222. status
  223. }
  224. })
  225. }