Digital Office Automation System
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

sales-analysis.js 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. import request from '@/utils/request'
  2. export function getProductCodeSuggestions(params) {
  3. return request({
  4. url: '/reports/product-code-suggestions',
  5. method: 'get',
  6. params
  7. })
  8. }
  9. /**
  10. * 销售分析模块API接口
  11. * 包含分析数据、基准数据、分类管理、店铺客户关联、报表分析等功能
  12. */
  13. // ==================== 分析数据管理 ====================
  14. /**
  15. * 获取分析数据列表
  16. * @param {Object} params - 查询参数
  17. * @param {number} params.page - 页码
  18. * @param {number} params.pageSize - 每页数量
  19. * @param {string} params.productCode - 商品编号
  20. * @param {string} params.productName - 商品名称
  21. * @param {string} params.customerName - 客户名称
  22. * @param {string} params.shopName - 店铺名称
  23. * @param {string} params.status - 状态
  24. * @param {string} params.startDate - 开始日期
  25. * @param {string} params.endDate - 结束日期
  26. * @returns {Promise} 返回数据列表和分页信息
  27. */
  28. export function getAnalysisDataList(params) {
  29. return request({
  30. url: '/analysis-data',
  31. method: 'get',
  32. params
  33. })
  34. }
  35. /**
  36. * 更新分析数据
  37. * @param {number} id - 数据ID
  38. * @param {Object} data - 更新数据
  39. * @returns {Promise} 更新结果
  40. */
  41. export function updateAnalysisData(id, data) {
  42. return request({
  43. url: `/analysis-data/${id}`,
  44. method: 'put',
  45. data
  46. })
  47. }
  48. /**
  49. * 删除分析数据
  50. * @param {number} id - 数据ID
  51. * @returns {Promise} 删除结果
  52. */
  53. export function deleteAnalysisData(id) {
  54. return request({
  55. url: `/analysis-data/${id}`,
  56. method: 'delete'
  57. })
  58. }
  59. /**
  60. * 批量删除分析数据
  61. * @param {string} ids - 数据ID列表,逗号分隔
  62. * @returns {Promise} 批量删除结果
  63. */
  64. export function batchDeleteAnalysisData(ids) {
  65. return request({
  66. url: `/analysis-data/batch/${ids}`,
  67. method: 'delete'
  68. })
  69. }
  70. /**
  71. * 导出分析数据
  72. * @param {Object} params - 导出参数
  73. * @returns {string} 导出文件URL
  74. */
  75. export function exportAnalysisData(params) {
  76. const queryString = new URLSearchParams(params).toString()
  77. return request({
  78. url: `/analysis-data/export?${queryString}`,
  79. responseType: 'blob',
  80. method: 'get'
  81. })
  82. }
  83. // ==================== 数据导入 ====================
  84. /**
  85. * 批量导入分析数据(物流数据)
  86. * @param {FormData} formData - 包含文件和分类ID的表单数据
  87. * @returns {Promise} 导入结果
  88. */
  89. export function importAnalysisDataBatch(formData) {
  90. return request({
  91. url: '/analysis-data/import-batch',
  92. method: 'post',
  93. data: formData,
  94. headers: {
  95. 'Content-Type': 'multipart/form-data'
  96. }
  97. })
  98. }
  99. /**
  100. * 批量导入FBA数据
  101. * @param {FormData} formData - 包含文件和店铺名称的表单数据
  102. * @returns {Promise} 导入结果
  103. */
  104. export function importFBADataBatch(formData) {
  105. return request({
  106. url: '/analysis-data/import/fba/batch',
  107. method: 'post',
  108. data: formData,
  109. headers: {
  110. 'Content-Type': 'multipart/form-data'
  111. }
  112. })
  113. }
  114. /**
  115. * 保存导入的数据
  116. * @param {Object} data - 导入的数据
  117. * @returns {Promise} 保存结果
  118. */
  119. export function saveImportedData(data) {
  120. return request({
  121. url: '/analysis-data/save-imported',
  122. method: 'post',
  123. data
  124. })
  125. }
  126. // ==================== 基准数据管理 ====================
  127. /**
  128. * 获取分类列表(简化版)
  129. * @returns {Promise} 分类列表
  130. */
  131. export function getCategoriesSimple() {
  132. return request({
  133. url: '/categories/simple',
  134. method: 'get'
  135. })
  136. }
  137. /**
  138. * 获取分类详情
  139. * @param {number} categoryId - 分类ID
  140. * @returns {Promise} 分类详情
  141. */
  142. export function getCategoryDetail(categoryId) {
  143. return request({
  144. url: `/categories/${categoryId}`,
  145. method: 'get'
  146. })
  147. }
  148. /**
  149. * 获取基准数据列表
  150. * @param {Object} params - 查询参数
  151. * @param {number} params.page - 页码
  152. * @param {number} params.pageSize - 每页数量
  153. * @param {number} params.categoryId - 分类ID
  154. * @param {string} params.productCode - 商品编号
  155. * @param {string} params.productName - 商品名称
  156. * @returns {Promise} 基准数据列表和分页信息
  157. */
  158. export function getBaseDataList(params) {
  159. return request({
  160. url: '/basedata',
  161. method: 'get',
  162. params
  163. })
  164. }
  165. /**
  166. * 导出基准数据
  167. * @param {number} categoryId - 分类ID
  168. * @returns {Promise} 导出文件URL
  169. */
  170. export function exportBaseData(categoryId) {
  171. return request({
  172. url: `/basedata/export/${categoryId}`,
  173. responseType: 'blob',
  174. method: 'get'
  175. })
  176. }
  177. /**
  178. * 删除基准数据
  179. * @param {number} id - 数据ID
  180. * @returns {Promise} 删除结果
  181. */
  182. export function deleteBaseData(id) {
  183. return request({
  184. url: `/basedata/${id}`,
  185. method: 'delete'
  186. })
  187. }
  188. /**
  189. * 批量删除基准数据
  190. * @param {string} ids - 数据ID列表,逗号分隔
  191. * @returns {Promise} 批量删除结果
  192. */
  193. export function batchDeleteBaseData(ids) {
  194. return request({
  195. url: `/basedata/batch/${ids}`,
  196. method: 'delete'
  197. })
  198. }
  199. /**
  200. * 新增基准数据
  201. * @param {Object} data - 新增数据
  202. * @returns {Promise} 新增结果
  203. */
  204. export function BaseDataAdd(data) {
  205. return request({
  206. url: '/basedata',
  207. method: 'post',
  208. data
  209. })
  210. }
  211. /**
  212. * 更新基准数据
  213. * @param {number} id - 数据ID
  214. * @param {Object} data - 更新数据
  215. * @returns {Promise} 更新结果
  216. */
  217. export function BaseDataUpdate(id, data) {
  218. return request({
  219. url: `/basedata/${id}`,
  220. method: 'put',
  221. data
  222. })
  223. }
  224. // ==================== 分类管理 ====================
  225. /**
  226. * 获取分类列表
  227. * @param {Object} params - 查询参数
  228. * @param {number} params.page - 页码
  229. * @param {number} params.pageSize - 每页数量
  230. * @param {string} params.name - 分类名称
  231. * @returns {Promise} 分类列表和分页信息
  232. */
  233. export function getCategoriesList(params) {
  234. return request({
  235. url: '/categories',
  236. method: 'get',
  237. params
  238. })
  239. }
  240. /**
  241. * 创建分类
  242. * @param {Object} data - 分类数据
  243. * @returns {Promise} 创建结果
  244. */
  245. export function createCategory(data) {
  246. return request({
  247. url: '/categories',
  248. method: 'post',
  249. data
  250. })
  251. }
  252. /**
  253. * 更新分类
  254. * @param {number} id - 分类ID
  255. * @param {Object} data - 分类数据
  256. * @returns {Promise} 更新结果
  257. */
  258. export function updateCategory(id, data) {
  259. return request({
  260. url: `/categories/${id}`,
  261. method: 'put',
  262. data
  263. })
  264. }
  265. /**
  266. * 删除分类
  267. * @param {number} id - 分类ID
  268. * @returns {Promise} 删除结果
  269. */
  270. export function deleteCategory(id) {
  271. return request({
  272. url: `/categories/${id}`,
  273. method: 'delete'
  274. })
  275. }
  276. // ==================== 店铺客户关联管理 ====================
  277. /**
  278. * 获取店铺客户关联列表
  279. * @param {Object} params - 查询参数
  280. * @param {number} params.page - 页码
  281. * @param {number} params.pageSize - 每页数量
  282. * @param {string} params.shopName - 店铺名称
  283. * @param {string} params.customerName - 客户名称
  284. * @returns {Promise} 关联列表和分页信息
  285. */
  286. export function getShopCustomerList(params) {
  287. return request({
  288. url: '/shop-customer',
  289. method: 'get',
  290. params
  291. })
  292. }
  293. /**
  294. * 删除店铺客户关联
  295. * @param {number} id - 关联ID
  296. * @returns {Promise} 删除结果
  297. */
  298. export function deleteShopCustomer(id) {
  299. return request({
  300. url: `/shop-customer/${id}`,
  301. method: 'delete'
  302. })
  303. }
  304. /**
  305. * 批量删除店铺客户关联
  306. * @param {string} ids - 关联ID列表,逗号分隔
  307. * @returns {Promise} 批量删除结果
  308. */
  309. export function batchDeleteShopCustomer(ids) {
  310. return request({
  311. url: `/shop-customer/batch/${ids}`,
  312. method: 'delete'
  313. })
  314. }
  315. /**
  316. * 导出店铺客户关联数据
  317. * @returns {string} 导出文件URL
  318. */
  319. export function exportShopCustomer() {
  320. return request({
  321. url: '/shop-customer/export',
  322. responseType: 'blob',
  323. method: 'get'
  324. })
  325. }
  326. /**
  327. * 新增店铺客户关联
  328. * @param {Object} data - 新增数据
  329. * @returns {Promise} 新增结果
  330. */
  331. export function ShopCustomerAdd(data) {
  332. return request({
  333. url: '/shop-customer',
  334. method: 'post',
  335. data
  336. })
  337. }
  338. /**
  339. * 更新店铺客户关联
  340. * @param {number} id - 关联ID
  341. * @param {Object} data - 更新数据
  342. * @returns {Promise} 更新结果
  343. */
  344. export function ShopCustomerUpdate(id, data) {
  345. return request({
  346. url: `/shop-customer/${id}`,
  347. method: 'put',
  348. data
  349. })
  350. }
  351. // ==================== 报表分析 ====================
  352. /**
  353. * 获取报表筛选选项
  354. * @returns {Promise} 筛选选项数据
  355. */
  356. export function getReportFilterOptions() {
  357. return request({
  358. url: '/reports/filter-options',
  359. method: 'get',
  360. headers: {
  361. 'Content-Type': 'application/json'
  362. }
  363. })
  364. }
  365. /**
  366. * 获取商品分析报表数据
  367. * @param {Object} params - 查询参数
  368. * @param {string} params.startDate - 开始日期
  369. * @param {string} params.endDate - 结束日期
  370. * @param {string} params.productCode - 商品编号
  371. * @returns {Promise} 商品分析数据
  372. */
  373. export function getProductAnalysisReport(params) {
  374. return request({
  375. url: '/reports/product-analysis',
  376. method: 'get',
  377. params
  378. })
  379. }
  380. /**
  381. * 获取店铺分析报表数据
  382. * @param {Object} params - 查询参数
  383. * @param {string} params.startDate - 开始日期
  384. * @param {string} params.endDate - 结束日期
  385. * @param {string} params.shop - 店铺名称
  386. * @returns {Promise} 店铺分析数据
  387. */
  388. export function getShopAnalysisReport(params) {
  389. return request({
  390. url: '/reports/shop-analysis',
  391. method: 'get',
  392. params
  393. })
  394. }
  395. /**
  396. * 获取分类分析报表数据
  397. * @param {Object} params - 查询参数
  398. * @param {string} params.startDate - 开始日期
  399. * @param {string} params.endDate - 结束日期
  400. * @returns {Promise} 分类分析数据
  401. */
  402. export function getCategoryAnalysisReport(params) {
  403. return request({
  404. url: '/reports/category-analysis',
  405. method: 'get',
  406. params
  407. })
  408. }
  409. /**
  410. * 获取整体分析报表数据
  411. * @param {Object} params - 查询参数
  412. * @param {string} params.startDate - 开始日期
  413. * @param {string} params.endDate - 结束日期
  414. * @returns {Promise} 整体分析数据
  415. */
  416. export function getOverallAnalysisReport(params) {
  417. return request({
  418. url: '/reports/overall-analysis',
  419. method: 'get',
  420. params
  421. })
  422. }
  423. /**
  424. * 获取分析数据所有筛选选项
  425. * @param {*} params
  426. * @returns
  427. */
  428. export function getAnalysisAllFilterOptions(params) {
  429. return request({
  430. url: '/tjfx/analysis-data/filter-options',
  431. method: 'get',
  432. params
  433. })
  434. }
  435. /**
  436. * 获取分析数据商品分析
  437. * @param {*} params
  438. * @returns
  439. */
  440. export function getAnalysisProductAnalysis(params) {
  441. return request({
  442. url: '/tjfx/analysis-data/product-analysis',
  443. method: 'get',
  444. params
  445. })
  446. }
  447. /**
  448. * 获取分析数据月度分析
  449. * @param {*} params
  450. * @returns
  451. */
  452. export function getAnalysisMonthlyAnalysis(params) {
  453. return request({
  454. url: '/tjfx/analysis-data/monthly-analysis',
  455. method: 'get',
  456. params
  457. })
  458. }
  459. /**
  460. * 获取分析数据商品店铺分析
  461. * @param {*} params
  462. * @returns
  463. */
  464. export function getAnalysisProductShopAnalysis(params) {
  465. return request({
  466. url: '/tjfx/analysis-data/product-shop-analysis',
  467. method: 'get',
  468. params
  469. })
  470. }
  471. /**
  472. * 获取分析数据综合分析
  473. * @param {*} params
  474. * @returns
  475. */
  476. export function getAnalysisComprehensiveAnalysis(params) {
  477. return request({
  478. url: '/tjfx/analysis-data/comprehensive-analysis',
  479. method: 'get',
  480. params
  481. })
  482. }
  483. /**
  484. * 获取分析数据SSD月度分析
  485. * @param {*} params
  486. * @returns
  487. */
  488. export function getAnalysisSsdMonthlyAnalysis(params) {
  489. return request({
  490. url: '/tjfx/analysis-data/ssd-monthly-analysis',
  491. method: 'get',
  492. params
  493. })
  494. }