feat: add send many account mode
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import { ref, computed, watch } from 'vue'
|
||||
import { request } from '@/api/api'
|
||||
|
||||
/**
|
||||
* 实例数据管理 Composable
|
||||
* 用于任务和模板的实例数据加载和处理
|
||||
*/
|
||||
export function useInstanceData(
|
||||
type: 'task' | 'template',
|
||||
dataRef: any,
|
||||
openRef: any
|
||||
) {
|
||||
// 实例数据
|
||||
const instances = ref<any[]>([])
|
||||
|
||||
// 检查是否有支持动态接收者的实例
|
||||
const hasDynamicRecipientInstance = computed(() => {
|
||||
if (instances.value && Array.isArray(instances.value)) {
|
||||
return instances.value.some((ins: any) => {
|
||||
try {
|
||||
const config = typeof ins.config === 'string' ? JSON.parse(ins.config) : ins.config
|
||||
return config?.allowMultiRecip === true
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
})
|
||||
}
|
||||
return false
|
||||
})
|
||||
|
||||
// 获取已启用的实例渠道名称列表
|
||||
const enabledChannelNames = computed(() => {
|
||||
if (instances.value && Array.isArray(instances.value)) {
|
||||
return instances.value
|
||||
.filter((ins: any) => ins.enable === 1)
|
||||
.map((ins: any) => ins.way_name)
|
||||
}
|
||||
return []
|
||||
})
|
||||
|
||||
// 加载实例数据
|
||||
const loadInstances = async () => {
|
||||
const id = dataRef.value?.id
|
||||
if (!id) return
|
||||
|
||||
try {
|
||||
let response
|
||||
if (type === 'template') {
|
||||
response = await request.get('/templates/ins/get', {
|
||||
params: { id }
|
||||
})
|
||||
instances.value = response.data.data.ins_list || []
|
||||
} else {
|
||||
response = await request.get('/sendtasks/ins/gettask', {
|
||||
params: { id }
|
||||
})
|
||||
instances.value = response.data.data.ins_data || []
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(`加载${type === 'template' ? '模板' : '任务'}实例失败:`, err)
|
||||
instances.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 监听弹窗打开状态
|
||||
watch(
|
||||
() => openRef.value,
|
||||
async (newVal: boolean) => {
|
||||
if (newVal) {
|
||||
await loadInstances()
|
||||
} else {
|
||||
instances.value = []
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
return {
|
||||
instances,
|
||||
hasDynamicRecipientInstance,
|
||||
enabledChannelNames,
|
||||
loadInstances
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user