| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { http } from '@/common/service/service.js'
- import { USER_INFO } from '@/common/util/constants.js'
- /** 线上下单模式:与后端 DiningMode 枚举一致 */
- export const DINING_MODE = {
- ORDER_ONLY: 'ORDER_ONLY',
- ORDER_AND_PAY: 'ORDER_AND_PAY'
- }
- export function getMerchantId() {
- const info = uni.getStorageSync(USER_INFO) || {}
- return info.merchantId || ''
- }
- /** 前端下单类型 -> 后端 diningMode */
- export function mapOrderModeToDiningMode(orderMode) {
- return orderMode === 'orderPay' ? DINING_MODE.ORDER_AND_PAY : DINING_MODE.ORDER_ONLY
- }
- /** 后端 diningMode -> 前端下单类型 */
- export function mapDiningModeToOrderMode(diningMode) {
- return diningMode === DINING_MODE.ORDER_AND_PAY ? 'orderPay' : 'orderOnly'
- }
- /** 查询门店扫码点餐配置 */
- export function fetchDiningConfig(merchantId) {
- return http.get('/api/v2/merchant/dining-config', {
- params: { merchantId }
- })
- }
- /** 保存门店扫码点餐配置 POST /api/v2/merchant/dining-config */
- export function saveDiningConfig(data) {
- return http.post('/api/v2/merchant/dining-config', data)
- }
- /** 解析配置接口 result */
- export function parseDiningConfigResponse(result = {}) {
- return {
- diningMode: result.diningMode || ''
- }
- }
- /** 批量添加门店桌号 */
- export function batchCreateTables(data) {
- return http.post('/api/v2/merchant/dining-tables/batch', data)
- }
- /** 查询门店桌号列表 GET /jeecg-boot/api/v2/merchant/dining-tables */
- export function fetchTableList(merchantId, { pageNo = 1, pageSize = 10 } = {}) {
- return http.get('/api/v2/merchant/dining-tables', {
- params: { merchantId, pageNo, pageSize }
- })
- }
- /** 解析列表接口 result(兼容分页与普通数组) */
- export function parseTableListResponse(result) {
- if (!result) {
- return { list: [], diningMode: '', total: 0, current: 1, pages: 0, hasMore: false }
- }
- if (Array.isArray(result)) {
- return {
- list: result,
- diningMode: '',
- total: result.length,
- current: 1,
- pages: 1,
- hasMore: false
- }
- }
- const list = result.records || result.list || result.items || []
- const total = result.total != null ? result.total : list.length
- const current = result.current != null ? result.current : (result.pageNo != null ? result.pageNo : 1)
- const size = result.size != null ? result.size : (result.pageSize != null ? result.pageSize : list.length || 1)
- const pages = result.pages != null ? result.pages : Math.ceil(total / size)
- return {
- list,
- diningMode: result.diningMode || '',
- total,
- current,
- pages,
- hasMore: current < pages
- }
- }
- /** 归一化桌号列表项 */
- export function normalizeTableItem(row = {}) {
- const code = row.tableCode != null ? String(row.tableCode) : (row.tableNo != null ? String(row.tableNo) : String(row.no || ''))
- return {
- id: row.id,
- no: code,
- tableCode: code,
- miniQrUrl: row.miniQrUrl || row.miniProgramQrUrl || '',
- officialQrUrl: row.officialQrUrl || row.mpQrUrl || ''
- }
- }
- export function normalizeTableList(list) {
- if (!Array.isArray(list)) return []
- return list.map(normalizeTableItem).sort((a, b) => parseInt(a.no, 10) - parseInt(b.no, 10))
- }
|