75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
/**
|
||
* 地磅表单 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))
|
||
}
|
||
|
||
/** 运输车辆车牌 */
|
||
export async function fetchVehicleOptions(q) {
|
||
try {
|
||
const data = await db.get('/transport/vehicle', {
|
||
...(q?.trim() ? { q: q.trim() } : {}),
|
||
page: 1,
|
||
pageSize: 100
|
||
})
|
||
return extractOptions(data)
|
||
} catch (e) {
|
||
// 兼容门户信封
|
||
const res = await request({
|
||
url: '/transport/vehicle',
|
||
method: 'GET',
|
||
data: {
|
||
...(q?.trim() ? { q: q.trim() } : {}),
|
||
page: 1,
|
||
pageSize: 100
|
||
}
|
||
})
|
||
return extractOptions(unwrapPortal(res))
|
||
}
|
||
}
|