api.js 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. import axios from 'axios'
  2. import { useUserStore } from '@/stores/user'
  3. const api = axios.create({
  4. baseURL: import.meta.env.VITE_API_URL,
  5. headers: {
  6. 'Content-Type': 'application/json'
  7. }
  8. })
  9. // 请求拦截器
  10. api.interceptors.request.use(
  11. (config) => {
  12. const userStore = useUserStore()
  13. if (userStore.token) {
  14. config.headers.Authorization = `Bearer ${userStore.token}`
  15. }
  16. return config
  17. },
  18. (error) => {
  19. return Promise.reject(error)
  20. }
  21. )
  22. // 响应拦截器
  23. api.interceptors.response.use(
  24. (response) => response,
  25. (error) => {
  26. if (error.response?.status === 401) {
  27. const userStore = useUserStore()
  28. userStore.logout()
  29. }
  30. console.log('errorxxx', error.response?.data || error)
  31. return Promise.reject(error.response?.data || error)
  32. }
  33. )
  34. export const login = async (name, password) => {
  35. const response = await api.post('/users/admin-login', {
  36. name,
  37. password
  38. })
  39. return response.data
  40. }
  41. export const profile = async () => {
  42. const response = await api.get('/users/profile')
  43. return response.data
  44. }
  45. export const resetPasswordApi = async (password) => {
  46. const response = await api.post('/users/reset-password', {
  47. password
  48. })
  49. return response.data
  50. }
  51. export const listUsersApi = async (page, size) => {
  52. const response = await api.get('/users', {
  53. params: {
  54. page,
  55. size
  56. }
  57. })
  58. return response.data
  59. }
  60. export const allUsersApi = async () => {
  61. const response = await api.get('/users/all')
  62. return response.data
  63. }
  64. export const createUserApi = async (userData) => {
  65. const response = await api.post('/users/create', userData)
  66. return response.data
  67. }
  68. export const updateUserApi = async (userData) => {
  69. const response = await api.post('/users/update', userData)
  70. return response.data
  71. }
  72. // 系统配置相关API
  73. export const listSysConfig = async (page = 0, size = 20, type) => {
  74. const params = { page, size }
  75. if (type) params.type = type
  76. const response = await api.get('/sys-config', { params })
  77. return response.data
  78. }
  79. export const createSysConfig = async (configData) => {
  80. const response = await api.post('/sys-config', configData)
  81. return response.data
  82. }
  83. export const updateSysConfig = async (name, configData) => {
  84. const response = await api.post(`/sys-config/update/${name}`, configData)
  85. return response.data
  86. }
  87. export const deleteSysConfig = async (name) => {
  88. const response = await api.post(`/sys-config/delete/${name}`)
  89. return response.data
  90. }
  91. export const getSysConfigByName = async (name) => {
  92. const response = await api.get(`/sys-config/${name}`)
  93. return response.data
  94. }
  95. // 文件上传API
  96. export const uploadFile = async (file) => {
  97. const formData = new FormData()
  98. formData.append('file', file)
  99. const response = await api.post('/files/upload', formData, {
  100. headers: {
  101. 'Content-Type': 'multipart/form-data'
  102. }
  103. })
  104. return response.data
  105. }
  106. // 文件下载API
  107. export const downloadFile = async (key) => {
  108. const response = await api.post(
  109. '/files/download',
  110. { key },
  111. {
  112. responseType: 'blob'
  113. }
  114. )
  115. return response.data
  116. }
  117. // ==================== 二维码管理相关API ====================
  118. // 生成二维码
  119. export const generateQrCodes = async (qrType, quantity) => {
  120. const response = await api.post('/qr/generate', {
  121. qrType,
  122. quantity
  123. })
  124. return response.data
  125. }
  126. // 查询二维码列表
  127. export const queryQrCodes = async (params) => {
  128. const response = await api.get('/qr/list', { params })
  129. return response.data
  130. }
  131. // 获取二维码信息
  132. export const getQrCodeInfo = async (id) => {
  133. const response = await api.get('/qr/admin/info', {
  134. params: { id }
  135. })
  136. return response.data
  137. }
  138. // 获取二维码扫描记录
  139. export const getQrCodeScanRecords = async (qrCode, limit = 10) => {
  140. const response = await api.get('/qr/scan', {
  141. params: { qrCode, limit }
  142. })
  143. return response.data
  144. }
  145. // 按日期下载二维码
  146. export const downloadQrCodesByDate = async (date) => {
  147. const response = await api.get('/qr/download', {
  148. params: { date },
  149. responseType: 'blob'
  150. })
  151. return response.data
  152. }
  153. // 验证维护码
  154. export const verifyMaintenanceCode = async (qrCode, maintenanceCode) => {
  155. const response = await api.post('/qr/verify', {
  156. qrCode,
  157. maintenanceCode
  158. })
  159. return response.data
  160. }
  161. // 重置维护码
  162. export const resetMaintenanceCode = async (qrCode, maintenanceCode) => {
  163. const response = await api.post('/qr/reset', {
  164. qrCode,
  165. maintenanceCode
  166. })
  167. return response.data
  168. }
  169. // ==================== 人员信息相关API ====================
  170. // 创建人员信息
  171. export const createPersonInfo = async (data) => {
  172. const response = await api.post('/person/create', data)
  173. return response.data
  174. }
  175. // 获取人员信息
  176. export const getPersonInfo = async (qrCode) => {
  177. const response = await api.get('/person/get', {
  178. params: { qrCode }
  179. })
  180. return response.data
  181. }
  182. // 更新人员信息(前台,需要维护码)
  183. export const updatePersonInfo = async (data) => {
  184. const response = await api.put('/person/update', data)
  185. return response.data
  186. }
  187. // 管理员更新人员信息
  188. export const adminUpdatePersonInfo = async (data) => {
  189. const response = await api.post('/person/admin/update', data)
  190. return response.data
  191. }
  192. // 查询人员信息列表(管理员)
  193. export const queryPersonInfo = async (params) => {
  194. const response = await api.get('/person/admin/list', { params })
  195. return response.data
  196. }
  197. // 管理员查询人员详情
  198. export const getPersonAdminDetail = async (qrCodeId) => {
  199. const response = await api.get('/person/admin/detail', {
  200. params: { qrCodeId }
  201. })
  202. return response.data
  203. }
  204. // ==================== 宠物信息相关API ====================
  205. // 创建宠物信息
  206. export const createPetInfo = async (data) => {
  207. const response = await api.post('/pet/create', data)
  208. return response.data
  209. }
  210. // 获取宠物信息
  211. export const getPetInfo = async (qrCode) => {
  212. const response = await api.get('/pet/get', {
  213. params: { qrCode }
  214. })
  215. return response.data
  216. }
  217. // 更新宠物信息(前台,需要维护码)
  218. export const updatePetInfo = async (data) => {
  219. const response = await api.put('/pet/update', data)
  220. return response.data
  221. }
  222. // 管理员更新宠物信息
  223. export const adminUpdatePetInfo = async (data) => {
  224. const response = await api.post('/pet/admin/update', data)
  225. return response.data
  226. }
  227. // 查询宠物信息列表(管理员)
  228. export const queryPetInfo = async (params) => {
  229. const response = await api.get('/pet/admin/list', { params })
  230. return response.data
  231. }
  232. // 管理员查询宠物详情
  233. export const getPetAdminDetail = async (qrCodeId) => {
  234. const response = await api.get('/pet/admin/detail', {
  235. params: { qrCodeId }
  236. })
  237. return response.data
  238. }
  239. // ==================== 物品信息相关API ====================
  240. // 创建物品信息
  241. export const createGoodsInfo = async (data) => {
  242. const response = await api.post('/goods/create', data)
  243. return response.data
  244. }
  245. // 获取物品信息
  246. export const getGoodsInfo = async (qrCode) => {
  247. const response = await api.get('/goods/get', {
  248. params: { qrCode }
  249. })
  250. return response.data
  251. }
  252. // 更新物品信息(前台,需要维护码)
  253. export const updateGoodsInfo = async (data) => {
  254. const response = await api.put('/goods/update', data)
  255. return response.data
  256. }
  257. // 管理员更新物品信息
  258. export const adminUpdateGoodsInfo = async (data) => {
  259. const response = await api.post('/goods/admin/update', data)
  260. return response.data
  261. }
  262. // 查询物品信息列表(管理员)
  263. export const queryGoodsInfo = async (params) => {
  264. const response = await api.get('/goods/admin/list', { params })
  265. return response.data
  266. }
  267. // 管理员查询物品详情
  268. export const getGoodsAdminDetail = async (qrCodeId) => {
  269. const response = await api.get('/goods/admin/detail', {
  270. params: { qrCodeId }
  271. })
  272. return response.data
  273. }
  274. // ==================== 扫描记录相关API ====================
  275. // 创建扫描记录
  276. export const createScanRecord = async (data) => {
  277. const response = await api.post('/scan/create', data)
  278. return response.data
  279. }
  280. // 获取最近扫描记录
  281. export const getRecentScanRecords = async (qrCode, limit = 10) => {
  282. const response = await api.get('/scan/recent', {
  283. params: { qrCode, limit }
  284. })
  285. return response.data
  286. }
  287. // 查询扫描记录
  288. export const queryScanRecords = async (params) => {
  289. const response = await api.get('/scan/list', { params })
  290. return response.data
  291. }
  292. // ==================== 链接信息相关API ====================
  293. // 创建链接信息
  294. export const createLinkInfo = async (data) => {
  295. const response = await api.post('/link/create', data)
  296. return response.data
  297. }
  298. // 获取链接信息
  299. export const getLinkInfo = async (qrCode) => {
  300. const response = await api.get('/link/get', {
  301. params: { qrCode }
  302. })
  303. return response.data
  304. }
  305. // 更新链接信息(前台,需要维护码)
  306. export const updateLinkInfo = async (data) => {
  307. const response = await api.put('/link/update', data)
  308. return response.data
  309. }
  310. // 管理员更新链接信息
  311. export const adminUpdateLinkInfo = async (data) => {
  312. const response = await api.post('/link/admin/update', data)
  313. return response.data
  314. }
  315. // 查询链接信息列表(管理员)
  316. export const queryLinkInfo = async (params) => {
  317. const response = await api.get('/link/admin/list', { params })
  318. return response.data
  319. }
  320. // 管理员查询链接详情
  321. export const getLinkAdminDetail = async (qrCodeId) => {
  322. const response = await api.get('/link/admin/detail', {
  323. params: { qrCodeId }
  324. })
  325. return response.data
  326. }