/** * 地磅表单 options(对齐 H5 pickers:CRM 客户/产品 + 运输车辆) */ import { request, parseResponseJson } from '@/utils/request' import db from '@/utils/dbRequest' function extractOptions(res) { if (Array.isArray(res)) return res if (!res || typeof res !== 'object') return [] return res.list || res.rows || res.items || res.data?.list || res.data?.rows || [] } function unwrapPortal(res) { const result = parseResponseJson(res) if (result && typeof result === 'object' && 'code' in result) { if (result.code === 200 || result.code === 0) { return result.data !== undefined ? result.data : result } const msg = result.message || result.msg || '请求失败' uni.showToast({ title: String(msg).slice(0, 40), icon: 'none' }) throw new Error(msg) } return result } /** CRM 客户下拉 */ export async function fetchCustomerOptions(keyword) { const res = await request({ url: '/web/crm/customer/options', method: 'POST', data: { limit: keyword?.trim() ? 50 : 20, ...(keyword?.trim() ? { keyword: keyword.trim() } : {}) } }) return extractOptions(unwrapPortal(res)) } /** CRM 产品下拉(上架) */ export async function fetchProductOptions(keyword) { const res = await request({ url: '/web/crm/products/options', method: 'POST', data: { limit: keyword?.trim() ? 50 : 20, ...(keyword?.trim() ? { keyword: keyword.trim() } : {}) } }) return extractOptions(unwrapPortal(res)) } /** * 运输车辆车牌 * @param {string} [q] 车牌模糊搜索 * @param {{ vehicleType?: string }} [opts] vehicleType: self-自有 / carrier-三方 */ export async function fetchVehicleOptions(q, opts = {}) { const params = { ...(q?.trim() ? { q: q.trim() } : {}), ...(opts.vehicleType ? { vehicleType: opts.vehicleType } : {}), ...(opts.mineVehicles ? { mineVehicles: true } : {}), page: 1, pageSize: 100 } try { const data = await db.get('/transport/vehicle', params) return extractOptions(data) } catch (e) { // 兼容门户信封 const res = await request({ url: '/transport/vehicle', method: 'GET', data: params }) return extractOptions(unwrapPortal(res)) } }