CRM如何過濾查找型別的控制元件
1.專案場景:
提示:在crm系統中過濾查找型別的控制元件
# 2.問題描述:
:在一次做專案是發現查找型別的控制元件過濾在每次過濾時只是在原有的基礎上過濾 而不是清空原有的過濾 使用當前的過濾:我原本是這樣寫的
setEntityOrzOrOffice(entityName: string, isSetFirstValue = false) {
if (ent.type !== 1) return
// 查找多對多關系
var odata = $select=${entityName}id&$filter=systemuserid eq ${util.trimID(ent.getUserId())}
service.retrieveSync(new_systemuser_${entityName}set, odata, (data: any) => {
console.log(data)
if (data && data.value && data.value.length > 0) {
if (data.value.length > 1) {
// 需要賦值第一個時
this.setOrzOrOfficeValue(isSetFirstValue, data, entityName, false)
// 多個則查找過濾
var ids = data.value.map((item: any) => { return item[${entityName}id] })
attr(entityName).require().addFilter(<filter ><condition attribute='${entityName}id' operator='in'><value>${ids.join('</value><value>')}</value></condition></filter>)
} else {
// 只有一個則帶出默認值
this.setOrzOrOfficeValue(true, data, entityName, true)
}
}
}, (errMsg: string) => {
dialog.alert(errMsg)
})
}
private setOrzOrOfficeValue(isSetFirstValue: boolean, data: any, entityName: string, isDisable: boolean) {
if (isSetFirstValue === true) {
var currentid = data.value[0][${entityName}id]
service.retrieveSync(
entityName,
$select=${entityName}id,new_name&$filter=${entityName}id eq ${currentid},
(orzdata: any) => {
if (orzdata && orzdata.value) {
attr(entityName).disable(isDisable).setLookup(entityName, currentid, orzdata.value[0].new_name)
}
})
}
}
# 3.原因分析:
當我需要點擊按鈕 重復過濾時,我需要將原來的過濾條件清除掉
**# 4.解決方案:
使用removePreSearch清楚原有的篩選條件
使用addPreSearch添加后面的篩選條件
advancebillingChange() {
attr(‘new_contract’).removePreSearch(preSearchHandler)
var advancebilling = attr(‘new_advancebilling’).val()
if (advancebilling === true) {
attr('new_contract').addPreSearch(preSearchHandler)
} else {
attr('new_contract').addPreSearch(preSearchHandler)
}
}
先定義一個用于清楚篩選條件的function
function preSearchHandler() {
findfetchxml()
}
后面定義的是控制元件篩選的條件
function findfetchxml() {
var paras
var advancebilling = attr(‘new_advancebilling’).val()
console.log(advancebilling)
if (advancebilling === true) {
paras = {
head: JSON.stringify({ entityId: 0 }),
operate: ‘0’,
Isadvancebilling: ‘1’
}
} else {
paras = {
head: JSON.stringify({ entityId: 0 }),
operate: ‘0’,
Isadvancebilling: ‘0’
}
}
var ids: any
service.execActionSync(‘new_ActionGetContractId’, paras, (data: any) => {
if (data) {
var records = JSON.parse(JSON.parse(data).OutPutResult)
ids = JSON.parse(records.data)
}
}, (errMsg: string) => {
dialog.alert(errMsg)
})
attr('new_contract').addCustomFilter(`<filter ><condition attribute='new_contractid' operator='in'><value>${ids.join('</value><value>')}</value></condition></filter>`)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/239186.html
標籤:其他
