storeDecoration.ts 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. import { ResPage, StoreUser } from "@/api/interface/index";
  2. import { PORT_NONE } from "@/api/config/servicePort";
  3. import http from "@/api";
  4. import httpApi from "@/api/indexApi";
  5. import { uploadFormDataSimpleCompat } from "@/api/upload.js";
  6. /**
  7. * @name 商铺用户模块
  8. */
  9. //获取商铺经营板块列表
  10. export const getBusinessSection = () => {
  11. return httpApi.get(`/alienStorePlatform/businessSection/getFirstLevelList`, {}, { loading: false });
  12. };
  13. //获取商铺经营种类列表
  14. export const getBusinessSectionTypes = params => {
  15. return httpApi.get(`/alienStorePlatform/businessSection/getSecondLevelList`, params, { loading: false });
  16. };
  17. //获取商铺经营分类
  18. export const getThirdLevelList = params => {
  19. return httpApi.get(`/alienStorePlatform/businessSection/getThirdLevelList`, params, { loading: false });
  20. };
  21. //所在地区
  22. export const getDistrict = (params?: any) => {
  23. return httpApi.get(`/alienStore/gaode/getDistrict`, params, { loading: false });
  24. };
  25. export const getStoreDetail = params => {
  26. return httpApi.get(`/alienStorePlatform/storePlatformRenovation/getDecorationDetail`, params);
  27. };
  28. // 获取门店装修需求列表(分页)
  29. export const getDecorationPage = (params: any) => {
  30. return httpApi.get(`/alienStore/renovation/requirement/getPage`, params);
  31. };
  32. // 获取装修需求详情
  33. export const getDecorationDetail = (params: { id: number | string }) => {
  34. return httpApi.get(`/alienStore/renovation/requirement/getDetail`, params);
  35. };
  36. // ==================== 聊天相关(与商家端 message API 一致) ====================
  37. // 获取聊天记录
  38. export const getChatRecord = (params: { receiverId: string; senderId: string }) => {
  39. return httpApi.get(`/alienStore/message/getMessageListByReceiverId`, params, { loading: false });
  40. };
  41. // 消息已读
  42. export const messageRead = (params: { receiverId: string; senderId: string }) => {
  43. return httpApi.get(`/alienStore/message/read`, params, { loading: false });
  44. };
  45. // WebSocket 连接状态
  46. export const socketStatus = () => {
  47. return httpApi.get(`/alienStore/websocket/getTokenStatus`, {}, { loading: false });
  48. };
  49. // 保存或更新装修需求
  50. export const saveOrUpdateDecoration = (params: any) => {
  51. return httpApi.post(`/alienStore/renovation/requirement/saveOrUpdate`, params);
  52. };
  53. // 上传房屋图纸(统一走 @/api/upload.js → /upload/simple)
  54. export const uploadDecorationImage = (params: FormData) => uploadFormDataSimpleCompat(params);
  55. // 聊天图片/视频上传
  56. export const uploadChatFile = (params: FormData) => uploadFormDataSimpleCompat(params);
  57. // 删除装修需求
  58. export const deleteDecoration = (params: { id: number | string }) => {
  59. return httpApi.post(`/alienStore/renovation/requirement/delete`, {}, { params });
  60. };
  61. //保存店铺信息
  62. export const saveStoreInfo = (params: any) => {
  63. return httpApi.post(`/alienStore/store/info/saveOrUpdate`, params);
  64. };
  65. //编辑店铺信息
  66. export const editStoreInfo = (params: any) => {
  67. return httpApi.post(`/alienStore/store/info/saveOrUpdate`, params);
  68. };
  69. // 入口图查询
  70. export const getEntranceImg = (data: any) => {
  71. return httpApi.get(`/alienStore/img/getByStoreId?storeId=${data}&imgType=1`);
  72. };
  73. //入口图保存
  74. export const saveEntranceImg = (params: any) => {
  75. return httpApi.post(`/alienStore/img/saveOrUpdateImg`, params);
  76. };
  77. // 门店头图查询
  78. export const getStoreHeadImg = (data: any, imgType: any) => {
  79. return httpApi.get(`alienStore/img/getByStoreId?storeId=${data}&imgType=${imgType}`);
  80. };
  81. //门店头图保存
  82. export const saveStoreHeadImg = (params: any) => {
  83. return httpApi.post(`/alienStore/img/saveOrUpdateImg`, params);
  84. };
  85. //批量新增或编辑营业时间
  86. export const addOrEditBusinessTime = (params: any) => {
  87. return httpApi.post(`/alienStore/businessInfo/saveOrUpdateList`, params);
  88. };
  89. //特殊时间
  90. export const getHolidayList = (params: any) => {
  91. return httpApi.get(`alienStore/coupon/getHolidayList`, params);
  92. };
  93. export const getStoreInfoBusinessHours = (params: any) => {
  94. return httpApi.get(`alienStore/store/info/getStoreInfoBusinessHours`, params);
  95. };
  96. //获取营业时间列表
  97. export const getBusinessTimeList = (params: any) => {
  98. return httpApi.get(`/alienStorePlatform/storePlatformBusinessInfo/getByStoreId`, params);
  99. };
  100. //根据门店ID和区域分类查询设施列表
  101. export const getListByStoreIdAndCategory = (params: any) => {
  102. return httpApi.get(`/alienStorePlatform/bathFacilityService/getListByStoreIdAndCategory`, params);
  103. };
  104. //创建/更新官方相册
  105. export const createOrUpdateOfficialAlbum = (params: any) => {
  106. return httpApi.post(`/alienStorePlatform/storePlatformOfficial/createOrUpdateOfficialAlbum`, params);
  107. };
  108. //删除官方相册
  109. export const deleteOfficialAlbum = (params: any) => {
  110. return httpApi.post(`/alienStorePlatform/storePlatformOfficial/deleteOfficialAlbum`, params);
  111. };
  112. //获取官方相册列表
  113. export const getOfficialAlbumList = (params: any) => {
  114. return httpApi.get(`/alienStorePlatform/storePlatformOfficial/getOfficialAlbumList`, params);
  115. };
  116. //相册内图片存储
  117. export const saveOfficialImg = (params: any) => {
  118. return httpApi.post(`/alienStore/img/saveOrUpdate`, params);
  119. };
  120. //相册内图片删除
  121. export const deleteOfficialImg = (params: any) => {
  122. return httpApi.post(`alienStore/img/delete`, params);
  123. };
  124. //相册内图片查询
  125. export const getOfficialImgList = (businessId, storeId, imgType = 2) => {
  126. return httpApi.get(`/alienStore/img/getByBusinessId?businessId=${businessId}&imgType=${imgType}&storeId=${storeId}`);
  127. };
  128. /** 门店官方视频列表 GET /alienStore/video/getByStoreId?storeId= */
  129. export const getOfficialVideoByStoreId = (storeId: number | string) => {
  130. return httpApi.get(`/alienStore/video/getByStoreId`, { storeId: Number(storeId) });
  131. };
  132. /** 官方相册视频保存/批量保存 POST /alienStore/video/saveOrSaveBatch(参数与商家端 albumDetail 一致) */
  133. export const saveOfficialVideoSaveOrSaveBatch = (params: {
  134. videoUrls: string[];
  135. videoIds: (number | string | null)[];
  136. coverUrls: string[];
  137. storeId: number;
  138. businessId: number;
  139. }) => {
  140. return httpApi.post(`/alienStore/video/saveOrSaveBatch`, params);
  141. };
  142. //新建或修改菜品
  143. export const createOrUpdateDish = (params: any) => {
  144. return httpApi.post(`/alienStorePlatform/menuPlatform/saveOrUpdate`, params);
  145. };
  146. //获取门店菜品列表
  147. export const getDishList = (params: any) => {
  148. return httpApi.get(`/alienStorePlatform/menuPlatform/getMenuByStoreId`, params);
  149. };
  150. //删除菜单
  151. export const deleteDish = (params: any) => {
  152. return httpApi.get(`/alienStorePlatform/menuPlatform/delete`, params);
  153. };
  154. //获取菜品详情
  155. export const getDishDetail = (params: any) => {
  156. return httpApi.get(`/alienStorePlatform/menuPlatform/getMenuInfo`, params);
  157. };
  158. // ==================== 酒单管理相关接口(新接口) ====================
  159. //根据门店ID和菜单类型查询酒单列表
  160. export const getBarMenuList = (params: { storeId: number; dishMenuType?: number }) => {
  161. return httpApi.get(`/alienStorePlatform/barMenu/getListByStoreIdAndType`, params);
  162. };
  163. //新增或修改酒单内容
  164. export const saveOrUpdateBarMenu = (params: any) => {
  165. return httpApi.post(`/alienStorePlatform/barMenu/saveOrUpdate`, params);
  166. };
  167. //删除酒单
  168. export const deleteBarMenu = (params: { id: number }) => {
  169. return httpApi.get(`/alienStorePlatform/barMenu/delete`, params);
  170. };
  171. //下载酒单Excel模板
  172. export const downloadBarMenuTemplate = () => {
  173. return httpApi.get(`/alienStorePlatform/barMenu/downloadTemplate`, {}, { responseType: "blob" });
  174. };
  175. //导入酒单Excel
  176. export const importBarMenuExcel = (formData: FormData, storeId: string | number) => {
  177. return httpApi.service.request({
  178. method: "POST",
  179. url: `/alienStorePlatform/barMenu/importMenu`,
  180. params: { storeId },
  181. data: formData,
  182. headers: {
  183. "Content-Type": "multipart/form-data"
  184. }
  185. });
  186. };
  187. //获取所有标签类型
  188. export const getAllTagType = (params?: any) => {
  189. return httpApi.get(`/alienStorePlatform/storePlatformTag/getBusinessRelationTagList`, params);
  190. };
  191. /** 门店标签列表/数据:GET /alienStore/store/tag/getTagList */
  192. export const getTagList = (params?: Record<string, any>) => {
  193. return httpApi.get(`/alienStore/store/tag/getTagList`, params, { loading: false });
  194. };
  195. //获取所有所选标签
  196. export const getAllTag = (params: any) => {
  197. return httpApi.get(`/alienStorePlatform/storePlatformTag/getTagStoreRelationByStoreId`, params);
  198. };
  199. //保存标签
  200. export const saveTag = (params: any) => {
  201. return httpApi.post(`/alienStorePlatform/storePlatformTag/createOrUpdateTagStoreRelation`, params);
  202. };
  203. //新建或修改人员配置
  204. export const createOrUpdatePersonnel = (params: any) => {
  205. return httpApi.post(`/alienStore/storeStaffConfig/addOrUpdateStaffConfig`, params);
  206. };
  207. //获取门店人员列表
  208. export const getPersonnelList = (params: any) => {
  209. return httpApi.get(`/alienStorePlatform/storeStaffConfig/getListByStoreId`, params);
  210. };
  211. //删除人员
  212. export const deletePersonnel = (params: any) => {
  213. return httpApi.get(`/alienStore/storeStaffConfig/deleteStaffConfig`, params);
  214. };
  215. //获取人员详情
  216. export const getPersonnelDetail = (params: any) => {
  217. return httpApi.get(`/alienStorePlatform/storeStaffConfig/getById`, params);
  218. };
  219. // ==================== 设施与服务相关接口 ====================
  220. // 服务管理相关接口
  221. //获取服务列表
  222. export const getServiceList = (params: any) => {
  223. return httpApi.get(`/alienStorePlatform/servicePlatform/getServiceList`, params);
  224. };
  225. //新建或修改服务
  226. export const createOrUpdateService = (params: any) => {
  227. return httpApi.post(`/alienStorePlatform/bathFacilityService/saveOrUpdate`, params);
  228. };
  229. //获取服务详情
  230. export const getServiceDetail = (params: any) => {
  231. return httpApi.get(`/alienStorePlatform/bathFacilityService/getById`, params);
  232. };
  233. //删除服务
  234. export const deleteService = (params: any) => {
  235. return httpApi.get(`/alienStorePlatform/bathFacilityService/delete`, params);
  236. };
  237. //下载服务Excel模板
  238. export const downloadServiceTemplate = () => {
  239. return httpApi.get(`/alienStorePlatform/bathFacilityService/downloadTemplate`, {}, { responseType: "blob" });
  240. };
  241. //导入服务Excel
  242. export const importServiceExcel = (formData: FormData, storeId: string | number) => {
  243. return httpApi.service.request({
  244. method: "POST",
  245. url: `/alienStorePlatform/bathFacilityService/importFacility`,
  246. params: { storeId },
  247. data: formData
  248. });
  249. };
  250. // ==================== 设施区域管理(与商家端 facilityOrService 一致,alienStore 前缀) ====================
  251. // 获取设施区域列表(标签) /alienStore/sports/facility/area/list
  252. export const getSportsFacilityAreaList = (params: { storeId: number }) => {
  253. return httpApi.get(`/alienStore/sports/facility/area/list`, params, { loading: false });
  254. };
  255. // 新建设施区域
  256. export const createSportsFacilityArea = (params: { storeId: number; facilityCategoryName: string }) => {
  257. return httpApi.post(`/alienStore/sports/facility/area/create`, params);
  258. };
  259. // 编辑设施区域
  260. export const updateSportsFacilityArea = (params: { areaId: number; areaName: string }) => {
  261. return httpApi.post(`/alienStore/sports/facility/area/update`, params);
  262. };
  263. // 更新设施区域实景图片
  264. export const updateSportsFacilityAreaHeadUrl = (params: { areaId: number; areaHeadUrl: string }) => {
  265. return httpApi.post(`/alienStore/sports/facility/area/updateHeadUrl`, params);
  266. };
  267. // 批量删除设施区域
  268. export const batchDeleteSportsFacilityArea = (params: { storeId: number; areaIds: (string | number)[] }) => {
  269. return httpApi.post(`/alienStore/sports/facility/area/batchDelete`, params);
  270. };
  271. // 根据区域ID获取设施列表 /alienStore/sports/equipment/facility/listByArea
  272. export const getSportsEquipmentFacilityListByArea = (params: { storeId: number; areaId: number }) => {
  273. return httpApi.get(`/alienStore/sports/equipment/facility/listByArea`, params);
  274. };
  275. // 新增运动设施
  276. export const saveSportsEquipmentFacility = (params: any) => {
  277. return httpApi.post(`/alienStore/sports/equipment/facility/save`, params);
  278. };
  279. // 修改运动设施
  280. export const updateSportsEquipmentFacility = (params: any) => {
  281. return httpApi.post(`/alienStore/sports/equipment/facility/update`, params);
  282. };
  283. // 删除运动设施
  284. export const deleteSportsEquipmentFacility = (params: { equipmentId: number }) => {
  285. return httpApi.post(`/alienStore/sports/equipment/facility/delete`, params);
  286. };
  287. // 设施管理相关接口(兼容旧接口,使用 facilityCategory)
  288. //获取健身设施列表
  289. export const getFacilityList = (params: any) => {
  290. return httpApi.get(`/alienStorePlatform/sportsEquipmentFacility/getListByStoreIdAndCategory`, params);
  291. };
  292. //新建或修改健身设施
  293. export const createOrUpdateFacility = (params: any) => {
  294. return httpApi.post(`/alienStorePlatform/sportsEquipmentFacility/saveOrUpdate`, params);
  295. };
  296. //获取健身设施详情
  297. export const getFacilityDetail = (params: any) => {
  298. return httpApi.get(`/alienStorePlatform/sportsEquipmentFacility/getById`, params);
  299. };
  300. //删除设施
  301. export const deleteFacility = (params: any) => {
  302. return httpApi.get(`/alienStorePlatform/sportsEquipmentFacility/delete`, params);
  303. };
  304. //下载设施Excel模板
  305. export const downloadFacilityTemplate = () => {
  306. return httpApi.get(`/alienStorePlatform/sportsEquipmentFacility/downloadTemplate`, {}, { responseType: "blob" });
  307. };
  308. //导入设施Excel
  309. export const importFacilityExcel = (formData: FormData, storeId: string | number) => {
  310. return httpApi.service.request({
  311. method: "POST",
  312. url: `/alienStorePlatform/bathFacilityService/importFacility`,
  313. params: { storeId },
  314. data: formData
  315. });
  316. };
  317. //下载菜单Excel模板
  318. export const downloadExcelTemplate = () => {
  319. return httpApi.get(`/alienStorePlatform/menuPlatform/downloadTemplate`, {}, { responseType: "blob" });
  320. };
  321. //导入菜单Excel
  322. export const importExcel = (formData: FormData, storeId: string | number) => {
  323. // 对于GET请求发送FormData,需要直接使用axios实例
  324. // axios的get方法可以在config中设置data属性(虽然不符合HTTP规范,但技术上可行)
  325. return httpApi.service.request({
  326. method: "POST",
  327. url: `/alienStorePlatform/menuPlatform/importMenu`,
  328. params: { storeId },
  329. data: formData,
  330. headers: {
  331. "Content-Type": "multipart/form-data"
  332. }
  333. });
  334. };
  335. //获取人员配置列表(搜索用)
  336. export const getStaffConfigList = (params: any) => {
  337. return httpApi.get(`/alienStore/storeStaffConfig/getStaffConfigList`, params);
  338. };
  339. // 设置置顶状态
  340. export const setTopStatus = (params: { id: string | number; topStatus: 0 | 1 }) => {
  341. return httpApi.get(`/alienStore/storeStaffConfig/setTopStatus`, params);
  342. };
  343. // 设置在线状态
  344. export const setOnlineStatus = (params: { id: string | number; onlineStatus: 0 | 1 }) => {
  345. return httpApi.get(`/alienStore/storeStaffConfig/setOnlineStatus`, params);
  346. };
  347. //获取人员配置详情(查看详情用)
  348. export const getStaffConfigDetail = (params: any) => {
  349. return httpApi.get(`/alienStore/storeStaffConfig/getStaffConfigDeatail`, params);
  350. };
  351. //创建标题
  352. export const createTitle = (params: any) => {
  353. return httpApi.post(`/alienStore/storeStaffTitle/createTitle`, params);
  354. };
  355. //修改标题
  356. export const updateTitle = (params: any) => {
  357. return httpApi.post(`/alienStore/storeStaffTitle/updateTitle`, params);
  358. };
  359. //获取标题列表
  360. export const getTitleList = (params: any) => {
  361. return httpApi.get(`/alienStore/storeStaffTitle/getTitleList`, params, { loading: false }).catch((error: any) => {
  362. // 静默处理错误,避免显示错误横幅
  363. // 如果接口不存在(404),返回一个空数据格式,而不是抛出错误
  364. if (error?.response?.status === 404 || error?.message?.includes("不存在")) {
  365. return Promise.resolve({ code: 200, data: [], msg: "" });
  366. }
  367. // 其他错误也返回空数据,避免显示错误横幅
  368. return Promise.resolve({ code: 200, data: [], msg: "" });
  369. });
  370. };
  371. //获取标题详情(通过storeId查询)
  372. export const getTitleDetail = (params: any) => {
  373. return httpApi.get(`/alienStore/storeStaffTitle/detail`, params, { loading: false }).catch((error: any) => {
  374. // 静默处理错误,避免显示错误横幅
  375. if (error?.response?.status === 404 || error?.message?.includes("不存在")) {
  376. return Promise.resolve({ code: 200, data: null, msg: "" });
  377. }
  378. return Promise.resolve({ code: 200, data: null, msg: "" });
  379. });
  380. };
  381. //删除标题
  382. export const deleteTitle = (params: any) => {
  383. return httpApi.get(`/alienStore/storeStaffTitle/deleteTitle`, params);
  384. };