| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /**
- * 地磅表单 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))
- }
- }
|