wjx 2 tygodni temu
rodzic
commit
a03c222f09

+ 65 - 41
src/pages/weComTask/components/filterUser/filterUserText.ts

@@ -32,7 +32,11 @@ const targetingData = [
     { key: 'lastExitHourRange', name: '最近退群(最近N小时)' },
     { key: 'addGroupCount', name: '进群次数' },
     { key: 'exitGroupCount', name: '退群次数' },
-    { key: 'retentionGroupCount', name: '留存群聊数' }
+    { key: 'retentionGroupCount', name: '留存群聊数' },
+    { key: 'repeatRangType', name: '重粉范围' },
+    { key: 'repeatOperateType', name: '重粉操作类型' },
+    { key: 'corpIdCount', name: '添加主体数' },
+    { key: 'corpUserIdCount', name: '添加客服数' },
 ]
 
 const targetingGroupData = [
@@ -148,19 +152,29 @@ interface ContentProps {
     retentionGroupCount?: { // 留存群聊数
         retentionGroupCountMin?: string,
         retentionGroupCountMax?: string
-    }
+    },
+    repeatRangType?: 0 | 1,
+    repeatOperateType?: 0 | 1,
+    corpIdCount?: {
+        minCorpIdCount?: number,
+        maxCorpIdCount?: number
+    },
+    corpUserIdCount?: {
+        minCorpUserIdCount?: number,
+        maxCorpUserIdCount?: number
+    },
 }
 
 /** 重置筛选用户数据 */
 export const resetFilterUserData = (data: { [x: string]: any }): ContentProps => {
     const {
         beginTime, endTime, rechargeCountMin, rechargeCountMax, rechargeMoneyMin, rechargeMoneyMax, lastRechargeTimeMin, lastRechargeTimeMax,
-        firstRechargeMoneyMin, firstRechargeMoneyMax, rechargeMoneyMaxMin, rechargeMoneyMaxMax, subHourMin, subHourMax, subDayMin, subDayMax, 
-        lastRechargeHourMin, lastRechargeHourMax, lastReadHourMin, lastReadHourMax, groupChatNames, groupChatBeginTime, groupChatEndTime, groupChatHourMin, groupChatHourMax, 
+        firstRechargeMoneyMin, firstRechargeMoneyMax, rechargeMoneyMaxMin, rechargeMoneyMaxMax, subHourMin, subHourMax, subDayMin, subDayMax,
+        lastRechargeHourMin, lastRechargeHourMax, lastReadHourMin, lastReadHourMax, groupChatNames, groupChatBeginTime, groupChatEndTime, groupChatHourMin, groupChatHourMax,
         groupChatUserMin, groupChatUserMax, lastReadTimeMin, lastReadTimeMax, firstAddGroupTimeMin, firstAddGroupTimeMax,
         lastAddGroupTimeMin, lastAddGroupTimeMax, lastExitTimeMin, lastExitTimeMax, firstAddGroupHourRangeMin, firstAddGroupHourRangeMax,
         lastAddGroupHourRangeMin, lastAddGroupHourRangeMax, lastExitHourRangeMin, lastExitHourRangeMax, addGroupCountMin, addGroupCountMax,
-        exitGroupCountMin, exitGroupCountMax, retentionGroupCountMin, retentionGroupCountMax,
+        exitGroupCountMin, exitGroupCountMax, retentionGroupCountMin, retentionGroupCountMax, minCorpIdCount, maxCorpIdCount, minCorpUserIdCount, maxCorpUserIdCount,
         ...params
     } = data
 
@@ -237,6 +251,12 @@ export const resetFilterUserData = (data: { [x: string]: any }): ContentProps =>
     if (retentionGroupCountMin || retentionGroupCountMax) {
         newData.retentionGroupCount = { retentionGroupCountMin, retentionGroupCountMax }
     }
+    if (minCorpIdCount || maxCorpIdCount) {
+        newData.corpIdCount = { minCorpIdCount, maxCorpIdCount }
+    }
+    if (minCorpUserIdCount || maxCorpUserIdCount) {
+        newData.corpUserIdCount = { minCorpUserIdCount, maxCorpUserIdCount }
+    }
     return newData
 }
 
@@ -270,42 +290,46 @@ const FilterUserText = ({ data, configName, configType = 'USER_GROUP', bookCityL
     const content: ContentProps = getContent(data, configType)
 
     return (configName ? configName + '\n' : '') +
-    (content?.msgTagIds ? `智能标签:${content?.msgTagIds?.['business'] ? `业务:${businessPlanData.find(i => i.value === content?.msgTagIds['business'])?.label}` : ''}--${content?.msgTagIds?.['bookCity'] ? `书城:${bookPlatForm.find(i => i.id === content?.msgTagIds['bookCity'])?.platformName}` : ''}--${content?.msgTagIds?.['product'] ? `产品:${bookList.find(i => i.id === content?.msgTagIds['product'])?.bookName}\n` : ''}` : '') + 
-    (content?.msgExcludeTagIds ? `排除智能标签:${content?.msgExcludeTagIds?.['business'] ? `业务:${businessPlanData.find(i => i.value === content?.msgExcludeTagIds['business'])?.label}` : ''}--${content?.msgExcludeTagIds?.['bookCity'] ? `书城:${bookPlatForm.find(i => i.id === content?.msgExcludeTagIds['bookCity'])?.platformName}` : ''}--${content?.msgExcludeTagIds?.['product'] ? `产品:${bookList.find(i => i.id === content?.msgExcludeTagIds['product'])?.bookName}\n` : ''}` : '') + 
-    (content?.sysExternalExcludeTagNames ? `排除标签:${content?.sysExternalExcludeTagNames.join('、') || '--'}\n` : '') +
-    (content?.platformKey ? `书城:${bookCityList?.find(item => item.value === content?.platformKey)?.label || '--'}\n` : '') +
-    (content?.lastBookNameList ? `最近阅读书籍:${content?.lastBookNameList?.join('、') || '--'}\n` : '') +
-    (content?.lastChapterNameList ? `最近阅读章节:${content?.lastChapterNameList?.join('、') || '--'}\n` : '') +
-    (content?.platformUserId ? `书城用户ID:${content?.platformUserId}\n` : '') + 
-    (content?.rechargeBook ? `充值小说:${content?.rechargeBook}\n` : '') +
-    (content?.begin ? `关注时间:${content?.begin?.beginTime ? content?.begin?.beginTime : '不限'} - ${content?.begin?.endTime ? content?.begin?.endTime : '不限'}\n` : '') + 
-    (content?.genders?.length > 0 ? `性别:${content?.genders.map(g => GENDER_TYPE[g]).join('、')}\n` : '') +
-    (content?.rechargeCount ? `充值次数:${content?.rechargeCount?.rechargeCountMin ? content?.rechargeCount?.rechargeCountMin : '不限'} - ${content?.rechargeCount?.rechargeCountMax ? content?.rechargeCount?.rechargeCountMax : '不限'}\n` : '') +
-    (content?.rechargeMoney ? `充值金额:${content?.rechargeMoney?.rechargeMoneyMin ? content?.rechargeMoney?.rechargeMoneyMin : '不限'} - ${content?.rechargeMoney?.rechargeMoneyMax ? content?.rechargeMoney?.rechargeMoneyMax : '不限'}\n` : '') +
-    (content?.lastRechargeTime ? `最后充值时间:${content?.lastRechargeTime?.lastRechargeTimeMin ? content?.lastRechargeTime?.lastRechargeTimeMin : '不限'} - ${content?.lastRechargeTime?.lastRechargeTimeMax ? content?.lastRechargeTime?.lastRechargeTimeMax : '不限'}\n` : '') +
-    (content?.firstRechargeMoney ? `首充金额:${content?.firstRechargeMoney?.firstRechargeMoneyMin ? content?.firstRechargeMoney?.firstRechargeMoneyMin : '不限'} - ${content?.firstRechargeMoney?.firstRechargeMoneyMax ? content?.firstRechargeMoney?.firstRechargeMoneyMax : '不限'}\n` : '') +
-    (content?.rechargeMoneyMax ? `单笔最大充值金额:${content?.rechargeMoneyMax?.rechargeMoneyMaxMin ? content?.rechargeMoneyMax?.rechargeMoneyMaxMin : '不限'} - ${content?.rechargeMoneyMax?.rechargeMoneyMaxMax ? content?.rechargeMoneyMax?.rechargeMoneyMaxMax : '不限'}\n` : '') +
-    (content?.subHour ? `关注距今时间:${content?.subHour?.subHourMin ? content?.subHour?.subHourMin + '小时' : '不限'} - ${content?.subHour?.subHourMax ? content?.subHour?.subHourMax + '小时' : '不限'}\n` : '') +
-    (content?.subDay ? `关注距今天:${content?.subDay?.subDayMin ? content?.subDay?.subDayMin + '天' : '不限'} - ${content?.subDay?.subDayMax ? content?.subDay?.subDayMax + '天' : '不限'}\n` : '') +
-    (content?.lastRechargeHour ? `最近一次充值距今:${content?.lastRechargeHour?.lastRechargeHourMin ? content?.lastRechargeHour?.lastRechargeHourMin + '小时' : '不限'} - ${content?.lastRechargeHour?.lastRechargeHourMax ? content?.lastRechargeHour?.lastRechargeHourMax + '小时' : '不限'}\n` : '') +
-    (content?.lastReadTime ? `最近阅读时间:${content?.lastReadTime?.lastReadTimeMin ? content?.lastReadTime?.lastReadTimeMin : '不限'} - ${content?.lastReadTime?.lastReadTimeMax ? content?.lastReadTime?.lastReadTimeMax : '不限'}\n` : '') +
-    (content?.lastRechargeHour ? `最近阅读至今:${content?.lastReadHour?.lastReadHourMin ? content?.lastReadHour?.lastReadHourMin + '小时' : '不限'} - ${content?.lastReadHour?.lastReadHourMax ? content?.lastReadHour?.lastReadHourMax + '小时' : '不限'}\n` : '') +
-    (content?.opers?.length > 0 ? `手机系统:${content?.opers.map(g => ({ '0': '未知', '1': '安卓', '2': 'IOS' } as any)[g]).join('、')}\n` : '') +
-    (content?.groupChatNames ? `群名称列表:${content?.groupChatNames?.toString()}` : '') +
-    (content?.groupChatTime ? `群创建时间:${content?.groupChatTime?.groupChatBeginTime ? content?.groupChatTime?.groupChatBeginTime + '小时' : '不限'} - ${content?.groupChatTime?.groupChatEndTime ? content?.groupChatTime?.groupChatEndTime + '小时' : '不限'}\n` : '') +
-    (content?.groupChatHour ? `群创建时长:${content?.groupChatHour?.groupChatHourMin ? content?.groupChatHour?.groupChatHourMin : '不限'} - ${content?.groupChatHour?.groupChatHourMax ? content?.groupChatHour?.groupChatHourMax : '不限'}\n` : '') +
-    (content?.groupChatUser ? `群人数:${content?.groupChatUser?.groupChatUserMin ? content?.groupChatUser?.groupChatUserMin : '不限'} - ${content?.groupChatUser?.groupChatUserMax ? content?.groupChatUser?.groupChatUserMax : '不限'}\n` : '') +
-    (content?.firstAddGroupTime ? `首次拉群时间:${content?.firstAddGroupTime?.firstAddGroupTimeMin ? content?.firstAddGroupTime?.firstAddGroupTimeMin : '不限'} - ${content?.firstAddGroupTime?.firstAddGroupTimeMax ? content?.firstAddGroupTime?.firstAddGroupTimeMax : '不限'}\n` : '') +
-    (content?.lastAddGroupTime ? `最近拉群时间:${content?.lastAddGroupTime?.lastAddGroupTimeMin ? content?.lastAddGroupTime?.lastAddGroupTimeMin : '不限'} - ${content?.lastAddGroupTime?.lastAddGroupTimeMax ? content?.lastAddGroupTime?.lastAddGroupTimeMax : '不限'}\n` : '') +
-    (content?.lastExitTime ? `最近退群时间:${content?.lastExitTime?.lastExitTimeMin ? content?.lastExitTime?.lastExitTimeMin : '不限'} - ${content?.lastExitTime?.lastExitTimeMax ? content?.lastExitTime?.lastExitTimeMax : '不限'}\n` : '') +
-    (content?.firstAddGroupHourRange ? `首次拉群(最近N小时):${content?.firstAddGroupHourRange?.firstAddGroupHourRangeMin ? content?.firstAddGroupHourRange?.firstAddGroupHourRangeMin : '不限'} - ${content?.firstAddGroupHourRange?.firstAddGroupHourRangeMax ? content?.firstAddGroupHourRange?.firstAddGroupHourRangeMax : '不限'}\n` : '') +
-    (content?.lastAddGroupHourRange ? `最近拉群(最近N小时):${content?.lastAddGroupHourRange?.lastAddGroupHourRangeMin ? content?.lastAddGroupHourRange?.lastAddGroupHourRangeMin : '不限'} - ${content?.lastAddGroupHourRange?.lastAddGroupHourRangeMax ? content?.lastAddGroupHourRange?.lastAddGroupHourRangeMax : '不限'}\n` : '') +
-    (content?.lastExitHourRange ? `最近退群(最近N小时):${content?.lastExitHourRange?.lastExitHourRangeMin ? content?.lastExitHourRange?.lastExitHourRangeMin : '不限'} - ${content?.lastExitHourRange?.lastExitHourRangeMax ? content?.lastExitHourRange?.lastExitHourRangeMax : '不限'}\n` : '') +
-    (content?.addGroupCount ? `进群次数:${content?.addGroupCount?.addGroupCountMin ? content?.addGroupCount?.addGroupCountMin : '不限'} - ${content?.addGroupCount?.addGroupCountMax ? content?.addGroupCount?.addGroupCountMax : '不限'}\n` : '') +
-    (content?.exitGroupCount ? `退群次数:${content?.exitGroupCount?.exitGroupCountMin ? content?.exitGroupCount?.exitGroupCountMin : '不限'} - ${content?.exitGroupCount?.exitGroupCountMax ? content?.exitGroupCount?.exitGroupCountMax : '不限'}\n` : '') +
-    (content?.retentionGroupCount ? `留存群聊数:${content?.retentionGroupCount?.retentionGroupCountMin ? content?.retentionGroupCount?.retentionGroupCountMin : '不限'} - ${content?.retentionGroupCount?.retentionGroupCountMax ? content?.retentionGroupCount?.retentionGroupCountMax : '不限'}\n` : '') +
-    (configType === 'USER_GROUP' ? `是否查询所有公司:${content?.allCorp ? '是' : '否'}\n` : '') +
-    (content?.unlimited ? `不限:${content?.unlimited}` : '')
+        (content?.msgTagIds ? `智能标签:${content?.msgTagIds?.['business'] ? `业务:${businessPlanData.find(i => i.value === content?.msgTagIds['business'])?.label}` : ''}--${content?.msgTagIds?.['bookCity'] ? `书城:${bookPlatForm.find(i => i.id === content?.msgTagIds['bookCity'])?.platformName}` : ''}--${content?.msgTagIds?.['product'] ? `产品:${bookList.find(i => i.id === content?.msgTagIds['product'])?.bookName}\n` : ''}` : '') +
+        (content?.msgExcludeTagIds ? `排除智能标签:${content?.msgExcludeTagIds?.['business'] ? `业务:${businessPlanData.find(i => i.value === content?.msgExcludeTagIds['business'])?.label}` : ''}--${content?.msgExcludeTagIds?.['bookCity'] ? `书城:${bookPlatForm.find(i => i.id === content?.msgExcludeTagIds['bookCity'])?.platformName}` : ''}--${content?.msgExcludeTagIds?.['product'] ? `产品:${bookList.find(i => i.id === content?.msgExcludeTagIds['product'])?.bookName}\n` : ''}` : '') +
+        (content?.sysExternalExcludeTagNames ? `排除标签:${content?.sysExternalExcludeTagNames.join('、') || '--'}\n` : '') +
+        (content?.platformKey ? `书城:${bookCityList?.find(item => item.value === content?.platformKey)?.label || '--'}\n` : '') +
+        (content?.lastBookNameList ? `最近阅读书籍:${content?.lastBookNameList?.join('、') || '--'}\n` : '') +
+        (content?.lastChapterNameList ? `最近阅读章节:${content?.lastChapterNameList?.join('、') || '--'}\n` : '') +
+        (content?.platformUserId ? `书城用户ID:${content?.platformUserId}\n` : '') +
+        (content?.rechargeBook ? `充值小说:${content?.rechargeBook}\n` : '') +
+        (content?.begin ? `关注时间:${content?.begin?.beginTime ? content?.begin?.beginTime : '不限'} - ${content?.begin?.endTime ? content?.begin?.endTime : '不限'}\n` : '') +
+        (content?.genders?.length > 0 ? `性别:${content?.genders.map(g => GENDER_TYPE[g]).join('、')}\n` : '') +
+        (content?.rechargeCount ? `充值次数:${content?.rechargeCount?.rechargeCountMin ? content?.rechargeCount?.rechargeCountMin : '不限'} - ${content?.rechargeCount?.rechargeCountMax ? content?.rechargeCount?.rechargeCountMax : '不限'}\n` : '') +
+        (content?.rechargeMoney ? `充值金额:${content?.rechargeMoney?.rechargeMoneyMin ? content?.rechargeMoney?.rechargeMoneyMin : '不限'} - ${content?.rechargeMoney?.rechargeMoneyMax ? content?.rechargeMoney?.rechargeMoneyMax : '不限'}\n` : '') +
+        (content?.lastRechargeTime ? `最后充值时间:${content?.lastRechargeTime?.lastRechargeTimeMin ? content?.lastRechargeTime?.lastRechargeTimeMin : '不限'} - ${content?.lastRechargeTime?.lastRechargeTimeMax ? content?.lastRechargeTime?.lastRechargeTimeMax : '不限'}\n` : '') +
+        (content?.firstRechargeMoney ? `首充金额:${content?.firstRechargeMoney?.firstRechargeMoneyMin ? content?.firstRechargeMoney?.firstRechargeMoneyMin : '不限'} - ${content?.firstRechargeMoney?.firstRechargeMoneyMax ? content?.firstRechargeMoney?.firstRechargeMoneyMax : '不限'}\n` : '') +
+        (content?.rechargeMoneyMax ? `单笔最大充值金额:${content?.rechargeMoneyMax?.rechargeMoneyMaxMin ? content?.rechargeMoneyMax?.rechargeMoneyMaxMin : '不限'} - ${content?.rechargeMoneyMax?.rechargeMoneyMaxMax ? content?.rechargeMoneyMax?.rechargeMoneyMaxMax : '不限'}\n` : '') +
+        (content?.subHour ? `关注距今时间:${content?.subHour?.subHourMin ? content?.subHour?.subHourMin + '小时' : '不限'} - ${content?.subHour?.subHourMax ? content?.subHour?.subHourMax + '小时' : '不限'}\n` : '') +
+        (content?.subDay ? `关注距今天:${content?.subDay?.subDayMin ? content?.subDay?.subDayMin + '天' : '不限'} - ${content?.subDay?.subDayMax ? content?.subDay?.subDayMax + '天' : '不限'}\n` : '') +
+        (content?.lastRechargeHour ? `最近一次充值距今:${content?.lastRechargeHour?.lastRechargeHourMin ? content?.lastRechargeHour?.lastRechargeHourMin + '小时' : '不限'} - ${content?.lastRechargeHour?.lastRechargeHourMax ? content?.lastRechargeHour?.lastRechargeHourMax + '小时' : '不限'}\n` : '') +
+        (content?.lastReadTime ? `最近阅读时间:${content?.lastReadTime?.lastReadTimeMin ? content?.lastReadTime?.lastReadTimeMin : '不限'} - ${content?.lastReadTime?.lastReadTimeMax ? content?.lastReadTime?.lastReadTimeMax : '不限'}\n` : '') +
+        (content?.lastRechargeHour ? `最近阅读至今:${content?.lastReadHour?.lastReadHourMin ? content?.lastReadHour?.lastReadHourMin + '小时' : '不限'} - ${content?.lastReadHour?.lastReadHourMax ? content?.lastReadHour?.lastReadHourMax + '小时' : '不限'}\n` : '') +
+        (content?.opers?.length > 0 ? `手机系统:${content?.opers.map(g => ({ '0': '未知', '1': '安卓', '2': 'IOS' } as any)[g]).join('、')}\n` : '') +
+        (content?.groupChatNames ? `群名称列表:${content?.groupChatNames?.toString()}` : '') +
+        (content?.groupChatTime ? `群创建时间:${content?.groupChatTime?.groupChatBeginTime ? content?.groupChatTime?.groupChatBeginTime + '小时' : '不限'} - ${content?.groupChatTime?.groupChatEndTime ? content?.groupChatTime?.groupChatEndTime + '小时' : '不限'}\n` : '') +
+        (content?.groupChatHour ? `群创建时长:${content?.groupChatHour?.groupChatHourMin ? content?.groupChatHour?.groupChatHourMin : '不限'} - ${content?.groupChatHour?.groupChatHourMax ? content?.groupChatHour?.groupChatHourMax : '不限'}\n` : '') +
+        (content?.groupChatUser ? `群人数:${content?.groupChatUser?.groupChatUserMin ? content?.groupChatUser?.groupChatUserMin : '不限'} - ${content?.groupChatUser?.groupChatUserMax ? content?.groupChatUser?.groupChatUserMax : '不限'}\n` : '') +
+        (content?.firstAddGroupTime ? `首次拉群时间:${content?.firstAddGroupTime?.firstAddGroupTimeMin ? content?.firstAddGroupTime?.firstAddGroupTimeMin : '不限'} - ${content?.firstAddGroupTime?.firstAddGroupTimeMax ? content?.firstAddGroupTime?.firstAddGroupTimeMax : '不限'}\n` : '') +
+        (content?.lastAddGroupTime ? `最近拉群时间:${content?.lastAddGroupTime?.lastAddGroupTimeMin ? content?.lastAddGroupTime?.lastAddGroupTimeMin : '不限'} - ${content?.lastAddGroupTime?.lastAddGroupTimeMax ? content?.lastAddGroupTime?.lastAddGroupTimeMax : '不限'}\n` : '') +
+        (content?.lastExitTime ? `最近退群时间:${content?.lastExitTime?.lastExitTimeMin ? content?.lastExitTime?.lastExitTimeMin : '不限'} - ${content?.lastExitTime?.lastExitTimeMax ? content?.lastExitTime?.lastExitTimeMax : '不限'}\n` : '') +
+        (content?.firstAddGroupHourRange ? `首次拉群(最近N小时):${content?.firstAddGroupHourRange?.firstAddGroupHourRangeMin ? content?.firstAddGroupHourRange?.firstAddGroupHourRangeMin : '不限'} - ${content?.firstAddGroupHourRange?.firstAddGroupHourRangeMax ? content?.firstAddGroupHourRange?.firstAddGroupHourRangeMax : '不限'}\n` : '') +
+        (content?.lastAddGroupHourRange ? `最近拉群(最近N小时):${content?.lastAddGroupHourRange?.lastAddGroupHourRangeMin ? content?.lastAddGroupHourRange?.lastAddGroupHourRangeMin : '不限'} - ${content?.lastAddGroupHourRange?.lastAddGroupHourRangeMax ? content?.lastAddGroupHourRange?.lastAddGroupHourRangeMax : '不限'}\n` : '') +
+        (content?.lastExitHourRange ? `最近退群(最近N小时):${content?.lastExitHourRange?.lastExitHourRangeMin ? content?.lastExitHourRange?.lastExitHourRangeMin : '不限'} - ${content?.lastExitHourRange?.lastExitHourRangeMax ? content?.lastExitHourRange?.lastExitHourRangeMax : '不限'}\n` : '') +
+        (content?.addGroupCount ? `进群次数:${content?.addGroupCount?.addGroupCountMin ? content?.addGroupCount?.addGroupCountMin : '不限'} - ${content?.addGroupCount?.addGroupCountMax ? content?.addGroupCount?.addGroupCountMax : '不限'}\n` : '') +
+        (content?.exitGroupCount ? `退群次数:${content?.exitGroupCount?.exitGroupCountMin ? content?.exitGroupCount?.exitGroupCountMin : '不限'} - ${content?.exitGroupCount?.exitGroupCountMax ? content?.exitGroupCount?.exitGroupCountMax : '不限'}\n` : '') +
+        (content?.retentionGroupCount ? `留存群聊数:${content?.retentionGroupCount?.retentionGroupCountMin ? content?.retentionGroupCount?.retentionGroupCountMin : '不限'} - ${content?.retentionGroupCount?.retentionGroupCountMax ? content?.retentionGroupCount?.retentionGroupCountMax : '不限'}\n` : '') +
+        (configType === 'USER_GROUP' ? `是否查询所有公司:${content?.allCorp ? '是' : '否'}\n` : '') +
+        ((content?.repeatRangType || content?.repeatRangType == 0) ? `重粉范围:${content?.repeatRangType == 0 ? '任务内' : '集团内'}\n` : '') +
+        ((content?.repeatOperateType || content?.repeatOperateType == 0) ? `重粉操作类型:${content?.repeatOperateType == 0 ? '排除运营' : '去重运营'}\n` : '') +
+        (content?.corpIdCount ? `添加主体数:${content?.corpIdCount?.minCorpIdCount ? content?.corpIdCount?.minCorpIdCount : '不限'} - ${content?.corpIdCount?.maxCorpIdCount ? content?.corpIdCount?.maxCorpIdCount : '不限'}\n` : '') +
+        (content?.corpUserIdCount ? `添加客服数:${content?.corpUserIdCount?.minCorpUserIdCount ? content?.corpUserIdCount?.minCorpUserIdCount : '不限'} - ${content?.corpUserIdCount?.maxCorpUserIdCount ? content?.corpUserIdCount?.maxCorpUserIdCount : '不限'}\n` : '') +
+        (content?.unlimited ? `不限:${content?.unlimited}` : '')
 }
 
 export default FilterUserText

+ 36 - 3
src/pages/weComTask/components/filterUser/filterUserTooltip.tsx

@@ -35,7 +35,11 @@ const targetingData = [
     { key: 'lastExitHourRange', name: '最近退群(最近N小时)' },
     { key: 'addGroupCount', name: '进群次数' },
     { key: 'exitGroupCount', name: '退群次数' },
-    { key: 'retentionGroupCount', name: '留存群聊数' }
+    { key: 'retentionGroupCount', name: '留存群聊数' },
+    { key: 'repeatRangType', name: '重粉范围' },
+    { key: 'repeatOperateType', name: '重粉操作类型' },
+    { key: 'corpIdCount', name: '添加主体数' },
+    { key: 'corpUserIdCount', name: '添加客服数' }
 ]
 
 const targetingGroupData = [
@@ -156,7 +160,17 @@ interface ContentProps {
     retentionGroupCount?: { // 留存群聊数
         retentionGroupCountMin?: string,
         retentionGroupCountMax?: string
-    }
+    },
+    repeatRangType?: 0 | 1,
+    repeatOperateType?: 0 | 1,
+    corpIdCount?: {
+        minCorpIdCount?: number,
+        maxCorpIdCount?: number
+    },
+    corpUserIdCount?: {
+        minCorpUserIdCount?: number,
+        maxCorpUserIdCount?: number
+    },
 }
 
 /** 重置筛选用户数据 */
@@ -168,7 +182,7 @@ export const resetFilterUserData = (data: { [x: string]: any }): ContentProps =>
         groupChatUserMin, groupChatUserMax, lastReadHourMin, lastReadHourMax, lastReadTimeMin, lastReadTimeMax, firstAddGroupTimeMin, firstAddGroupTimeMax,
         lastAddGroupTimeMin, lastAddGroupTimeMax, lastExitTimeMin, lastExitTimeMax, firstAddGroupHourRangeMin, firstAddGroupHourRangeMax,
         lastAddGroupHourRangeMin, lastAddGroupHourRangeMax, lastExitHourRangeMin, lastExitHourRangeMax, addGroupCountMin, addGroupCountMax,
-        exitGroupCountMin, exitGroupCountMax, retentionGroupCountMin, retentionGroupCountMax,
+        exitGroupCountMin, exitGroupCountMax, retentionGroupCountMin, retentionGroupCountMax, minCorpIdCount, maxCorpIdCount, minCorpUserIdCount, maxCorpUserIdCount,
         ...params
     } = data
 
@@ -244,6 +258,12 @@ export const resetFilterUserData = (data: { [x: string]: any }): ContentProps =>
     }
     if (retentionGroupCountMin || retentionGroupCountMax) {
         newData.retentionGroupCount = { retentionGroupCountMin, retentionGroupCountMax }
+    }
+     if (minCorpIdCount || maxCorpIdCount) {
+        newData.corpIdCount = { minCorpIdCount, maxCorpIdCount }
+    }
+    if (minCorpUserIdCount || maxCorpUserIdCount) {
+        newData.corpUserIdCount = { minCorpUserIdCount, maxCorpUserIdCount }
     }
     return newData
 }
@@ -400,6 +420,19 @@ const FilterUserTooltip: React.FC<Props> = (props) => {
             <strong>是否查询所有公司:</strong><span>{content?.allCorp ? '是' : '否'}</span>
         </div>}
 
+        {(content?.repeatRangType || content?.repeatRangType == 0) && <div>
+            <strong>重粉范围:</strong><span>{content?.repeatRangType == 0 ? '任务内' : '集团内'}</span>
+        </div>}
+        {(content?.repeatOperateType || content?.repeatOperateType == 0) && <div>
+            <strong>重粉操作类型:</strong><span>{content?.repeatOperateType == 0 ? '排除运营' : '去重运营'}</span>
+        </div>}
+        {content?.corpIdCount && <div>
+            <strong>添加主体数:</strong><span>{content?.corpIdCount?.minCorpIdCount ? content?.corpIdCount?.minCorpIdCount : '0'} - {content?.corpIdCount?.maxCorpIdCount ? content?.corpIdCount?.maxCorpIdCount : '不限'}</span>
+        </div>}
+        {content?.corpUserIdCount && <div>
+            <strong>添加客服数:</strong><span>{content?.corpUserIdCount?.minCorpUserIdCount ? content?.corpUserIdCount?.minCorpUserIdCount : '0'} - {content?.corpUserIdCount?.maxCorpUserIdCount ? content?.corpUserIdCount?.maxCorpUserIdCount : '不限'}</span>
+        </div>}
+
         {content?.unlimited && <div>
             <strong>不限:</strong><span>{content?.unlimited}</span>
         </div>}

+ 65 - 3
src/pages/weComTask/components/filterUser/newFiterUser.tsx

@@ -31,6 +31,7 @@ const NewFilterUser: React.FC<NewFilterUserProps> = ({ bookCityList, configType
     const [form] = Form.useForm();
     const platformKey = Form.useWatch('platformKey', form)
     const lastBookNameList = Form.useWatch('lastBookNameList', form)
+    const isRepeat = Form.useWatch('isRepeat', form)
     const [isSave, setIsSave] = useState<boolean>(false)
 
     const addSiftPopulationConfig = useAjax((params) => addSiftPopulationConfigApi(params))
@@ -58,6 +59,10 @@ const NewFilterUser: React.FC<NewFilterUserProps> = ({ bookCityList, configType
             if (groupChatNames?.length) {
                 params.groupChatNames = groupChatNames.join(',')
             }
+            const keys = Object.keys(params)
+            if (keys.includes('repeatRangType') || keys.includes('repeatOperateType') || keys.includes('minCorpIdCount') || keys.includes('minCorpUserIdCount')) {
+                params.isRepeat = true
+            }
             form.setFieldsValue(params)
         }
     }, [value])
@@ -65,12 +70,12 @@ const NewFilterUser: React.FC<NewFilterUserProps> = ({ bookCityList, configType
     const handleOk = () => {
         form.validateFields().then((values) => {
             console.log(values)
-            const { configName, ...configContent } = values
+            const { configName, isRepeat, ...configContent } = values
             if (configContent && Object.keys(configContent).length > 0 && Object.keys(configContent).some(key => configContent[key])) {
-                const { 
+                const {
                     beginTime, endTime, lastRechargeTime, lastReadTime, groupChatNames, groupChatTime, firstAddGroupTime,
                     lastAddGroupTime, lastExitTime,
-                    ...params 
+                    ...params
                 } = configContent
                 const dta = {
                     ...params
@@ -573,6 +578,63 @@ const NewFilterUser: React.FC<NewFilterUserProps> = ({ bookCityList, configType
                         <Checkbox>是否查询所有公司</Checkbox>
                     </Form.Item>
                 </div>
+                <div className={style.newSpace}>
+                    <Form.Item name="isRepeat" label={<strong>重粉过滤</strong>} style={{ marginBottom: 0 }} valuePropName='checked'>
+                        <Checkbox>是否开启重粉过滤</Checkbox>
+                    </Form.Item>
+                </div>
+                {isRepeat && <>
+                    <div className={style.newSpace}>
+                        <Form.Item name="repeatRangType" label={<strong>重粉范围</strong>} style={{ marginBottom: 0 }} rules={[{ required: true, message: '请选择重粉范围' }]}>
+                            <Select
+                                placeholder='重粉范围'
+                                allowClear
+                                options={[
+                                    { value: 0, label: '任务内' },
+                                    { value: 1, label: '集团内' }
+                                ]}
+                            />
+                        </Form.Item>
+                    </div>
+                    <div className={style.newSpace}>
+                        <Form.Item name="repeatOperateType" label={<strong>重粉操作类型</strong>} style={{ marginBottom: 0 }} rules={[{ required: true, message: '请选择重粉操作类型' }]}>
+                            <Select
+                                placeholder='重粉操作类型'
+                                allowClear
+                                options={[
+                                    { value: 0, label: '排除运营' },
+                                    { value: 1, label: '去重运营' }
+                                ]}
+                            />
+                        </Form.Item>
+                    </div>
+                    <div className={style.newSpace}>
+                        <Form.Item label={<strong>添加主体</strong>} style={{ marginBottom: 0 }}>
+                            <Space>
+                                <Form.Item name="minCorpIdCount" noStyle rules={[{ required: true, message: '请输入添加主体最小数' }]}>
+                                    <InputNumber placeholder="添加主体最小数" style={{ width: 200 }} />
+                                </Form.Item>
+                                <span>-</span>
+                                <Form.Item name="maxCorpIdCount" noStyle rules={[{ required: true, message: '请输入添加主体最大数' }]}>
+                                    <InputNumber placeholder="添加主体最大数" style={{ width: 200 }} />
+                                </Form.Item>
+                            </Space>
+                        </Form.Item>
+                    </div>
+                    <div className={style.newSpace}>
+                        <Form.Item label={<strong>添加客服</strong>} style={{ marginBottom: 0 }}>
+                            <Space>
+                                <Form.Item name="minCorpUserIdCount" noStyle rules={[{ required: true, message: '请输入添加客服最小数' }]}>
+                                    <InputNumber placeholder="添加客服最小数" style={{ width: 200 }} />
+                                </Form.Item>
+                                <span>-</span>
+                                <Form.Item name="maxCorpUserIdCount" noStyle rules={[{ required: true, message: '请输入添加客服最大数' }]}>
+                                    <InputNumber placeholder="添加客服最大数" style={{ width: 200 }} />
+                                </Form.Item>
+                            </Space>
+                        </Form.Item>
+                    </div>
+                </>}
             </>}
         </Form>
     </Modal>

+ 1 - 21
src/pages/weComTask/page/groupChat/create/components/groupUser/addGroupObject.tsx

@@ -199,16 +199,6 @@ export const ShowGroupUserTable: React.FC<GROUP_CHAT_CREATE.ShowGroupUserTablePr
                 return value ? <span style={{ color: '#1890ff' }}>是</span> : <span style={{ color: 'red' }}>否</span>
             },
         },
-        {
-            title: '是否根据所选主体相同客户去重',
-            dataIndex: 'excludeSameCorpUser',
-            key: 'excludeSameCorpUser',
-            width: 70,
-            align: 'center',
-            render(value) {
-                return value ? <span style={{ color: '#1890ff' }}>是</span> : <span style={{ color: 'red' }}>否</span>
-            },
-        },
         {
             title: '群聊关联公众号',
             dataIndex: 'weChatAppid',
@@ -358,7 +348,7 @@ const AddGroupObjectModal: React.FC<GROUP_CHAT_CREATE.AddGroupObjectModalProps>
                 message.error(errorFields?.[0]?.errors?.[0])
             }}
             onFinish={handleOk}
-            initialValues={(initialValues && Object.keys(initialValues).length > 0) ? initialValues : { externalUserType: 'specify', isRepair: false, groupIndex: 1, groupUserCount: 37, autoOutGroup: false, excludeInGroup: true, deleteGroupTag: true, isRetry: false, excludeSameCorpUser: false }}
+            initialValues={(initialValues && Object.keys(initialValues).length > 0) ? initialValues : { externalUserType: 'specify', isRepair: false, groupIndex: 1, groupUserCount: 37, autoOutGroup: false, excludeInGroup: true, deleteGroupTag: true, isRetry: false }}
             preserve={true}
         >
             <Form.Item
@@ -477,16 +467,6 @@ const AddGroupObjectModal: React.FC<GROUP_CHAT_CREATE.AddGroupObjectModalProps>
                     <Radio value={false}>否</Radio>
                 </Radio.Group>
             </Form.Item>
-            <Form.Item
-                name={'excludeSameCorpUser'}
-                label={<strong>是否根据所选主体相同客户去重</strong>}
-                rules={[{ required: true, message: '请选择是否开启失败人群重试!' }]}
-            >
-                <Radio.Group>
-                    <Radio value={true}>是</Radio>
-                    <Radio value={false}>否</Radio>
-                </Radio.Group>
-            </Form.Item>
             <Form.Item
                 name={'weChatAppid'}
                 label={<strong>群聊关联公众号</strong>}

+ 1 - 2
src/pages/weComTask/page/groupChat/create/const.ts

@@ -12,12 +12,11 @@ export const getPullGroupData = (strategyList: any[]) => {
             return {
                 ...item,
                 id,
-                groupObjectList: taskDetail.map(({ externalUserFilter, weChatAppid, mpAccountInfo, msgTagDTO, groupName, isRetry, excludeSameCorpUser, ...go }, i) => {
+                groupObjectList: taskDetail.map(({ externalUserFilter, weChatAppid, mpAccountInfo, msgTagDTO, groupName, isRetry, ...go }, i) => {
                     const id = go.id || nowTime_inherit + (index * 1000) + (i * 100)
                     const inherit: { [x: string]: any } = {
                         ...go,
                         isRetry: isRetry || false,
-                        excludeSameCorpUser: excludeSameCorpUser || false,
                         id,
                         weChatAppid: mpAccountInfo?.name ? mpAccountInfo?.name + '_' + mpAccountInfo?.id : undefined,
                         tagDTO: msgTagDTO,

+ 0 - 10
src/pages/weComTask/page/groupChat/create/tableConfig.tsx

@@ -173,16 +173,6 @@ export const PreviewColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
                 return value ? <span style={{ color: '#1890ff' }}>是</span> : <span style={{ color: 'red' }}>否</span>
             },
         },
-        {
-            title: '是否根据所选主体相同客户去重',
-            dataIndex: 'excludeSameCorpUser',
-            key: 'excludeSameCorpUser',
-            width: 70,
-            align: 'center',
-            render(value) {
-                return value ? <span style={{ color: '#1890ff' }}>是</span> : <span style={{ color: 'red' }}>否</span>
-            },
-        },
         {
             title: '群聊关联公众号',
             dataIndex: 'weChatAppid',

+ 0 - 10
src/pages/weComTask/page/groupChat/taskList/details.tsx

@@ -179,16 +179,6 @@ const Details: React.FC<Props> = ({ data, bookPlatForm, bookList, visible, onClo
                         return value ? <span style={{ color: '#1890ff' }}>是</span> : <span style={{ color: 'red' }}>否</span>
                     },
                 },
-                {
-                    title: '是否根据所选主体相同客户去重',
-                    dataIndex: 'excludeSameCorpUser',
-                    key: 'excludeSameCorpUser',
-                    width: 70,
-                    align: 'center',
-                    render(value) {
-                        return value ? <span style={{ color: '#1890ff' }}>是</span> : <span style={{ color: 'red' }}>否</span>
-                    },
-                },
                 {
                     title: '拉群完成后自动删除拉群标签',
                     dataIndex: 'excludeInGroup',

+ 1 - 1
src/pages/weComTask/page/home/corpDetails.tsx

@@ -45,7 +45,7 @@ const CorpDetails: React.FC<{ name: string, avatar: string, corpIdCount: number,
                         title: '企业ID',
                         dataIndex: 'corpId',
                         key: 'corpId',
-                        width: 250,
+                        width: 300,
                         ellipsis: true,
                         render: (text: string) => {
                             return <Text copyable>{text}</Text>