客户管理编辑页修改
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import { ref } from 'vue'
|
||||
import { listProduct } from '@/api/price/product'
|
||||
|
||||
/**
|
||||
* 产品列表模块级共享缓存:全应用只拉取一次
|
||||
* 用于客户绑定产品的选择与已绑产品名称/明细回显
|
||||
*/
|
||||
const productList = ref([])
|
||||
let loadingPromise = null
|
||||
|
||||
/** 逗号分隔 id 串 -> 字符串 id 数组 */
|
||||
export function parseProductIds(value) {
|
||||
if (Array.isArray(value)) return value.map(v => String(v)).filter(Boolean)
|
||||
if (value === null || value === undefined) return []
|
||||
return String(value).split(',').map(s => s.trim()).filter(Boolean)
|
||||
}
|
||||
|
||||
/** id 数组 -> 逗号分隔串(去重,保持原顺序) */
|
||||
export function joinProductIds(ids) {
|
||||
const seen = new Set()
|
||||
const out = []
|
||||
;(ids || []).forEach(id => {
|
||||
const key = String(id)
|
||||
if (key && !seen.has(key)) {
|
||||
seen.add(key)
|
||||
out.push(key)
|
||||
}
|
||||
})
|
||||
return out.join(',')
|
||||
}
|
||||
|
||||
export function useProducts() {
|
||||
/** 确保产品列表已加载(force=true 强制刷新),拉取全部状态以便回显已失效产品 */
|
||||
function ensureProducts(force = false) {
|
||||
if (!force && loadingPromise) return loadingPromise
|
||||
if (!force && productList.value.length) return Promise.resolve(productList.value)
|
||||
loadingPromise = listProduct({ pageNum: 1, pageSize: 1000 })
|
||||
.then(res => {
|
||||
productList.value = res.rows || []
|
||||
return productList.value
|
||||
})
|
||||
.finally(() => {
|
||||
loadingPromise = null
|
||||
})
|
||||
return loadingPromise
|
||||
}
|
||||
|
||||
/** 按产品ID查产品对象 */
|
||||
function findProduct(productId) {
|
||||
if (productId === null || productId === undefined || productId === '') return null
|
||||
return productList.value.find(p => String(p.productId) === String(productId)) || null
|
||||
}
|
||||
|
||||
/** 产品展示名:代码 + 名称 */
|
||||
function getProductLabel(productId) {
|
||||
const p = findProduct(productId)
|
||||
if (!p) return String(productId)
|
||||
return p.productCode + ' ' + p.productName
|
||||
}
|
||||
|
||||
return {
|
||||
productList,
|
||||
ensureProducts,
|
||||
findProduct,
|
||||
getProductLabel
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user