|
|
@@ -2,7 +2,7 @@
|
|
|
<PagingTable url="/task" :where="where" ref="table">
|
|
|
<template #filter>
|
|
|
<ElButton :icon="Refresh" @click="table.refresh()"></ElButton>
|
|
|
- <ElButton :icon="Plus" @click="onEdit(), getPhoneList()"> 添加</ElButton>
|
|
|
+ <ElButton :icon="Plus" @click="onEdit({ checkConnection: true }), getPhoneList()"> 添加</ElButton>
|
|
|
</template>
|
|
|
<ElTableColumn prop="id" label="#" width="80" />
|
|
|
<ElTableColumn prop="name" label="名称" min-width="120" />
|
|
|
@@ -10,10 +10,11 @@
|
|
|
<ElTableColumn prop="message" label="内容" show-overflow-tooltip />
|
|
|
<ElTableColumn prop="dynamicMessage" label="动态内容" show-overflow-tooltip />
|
|
|
<ElTableColumn prop="listId" label="发送列表" :formatter="phoneListFormatter" />
|
|
|
- <ElTableColumn v-if="shouldShow" prop="rcsWait" label="RCS等待时间" />
|
|
|
- <ElTableColumn v-if="shouldShow" prop="rcsInterval" label="RCS发送间隔" />
|
|
|
- <ElTableColumn v-if="shouldShow" prop="cleanCount" label="清理数量" />
|
|
|
- <ElTableColumn v-if="shouldShow" prop="requestNumberInterval" label="请求号码间隔" />
|
|
|
+ <ElTableColumn v-if="isAdmin" prop="rcsWait" label="RCS等待时间" />
|
|
|
+ <ElTableColumn v-if="isAdmin" prop="rcsInterval" label="RCS发送间隔" />
|
|
|
+ <ElTableColumn v-if="isAdmin" prop="cleanCount" label="清理数量" />
|
|
|
+ <ElTableColumn v-if="isAdmin" prop="requestNumberInterval" label="请求号码间隔" />
|
|
|
+ <ElTableColumn v-if="isAdmin" prop="checkConnection" label="检查连接" />
|
|
|
<ElTableColumn prop="status" label="状态" align="center">
|
|
|
<template #default="{ row }">
|
|
|
<ElTag v-if="row.status === 'idle'" type="info">未发送</ElTag>
|
|
|
@@ -76,10 +77,14 @@
|
|
|
<ElOption v-for="item in phoneList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
</ElSelect>
|
|
|
</ElFormItem>
|
|
|
- <ElFormItem v-if="shouldShow" prop="channelId" label="渠道列表">
|
|
|
+ <ElFormItem v-if="isAdmin" prop="channelId" label="渠道列表">
|
|
|
<ElSelect v-model="model.channelId" multiple placeholder="请选择渠道列表">
|
|
|
- <ElOption v-for="item in operatorList" :key="item.id"
|
|
|
- :label="item.mcc+'-'+item.mnc+'-'+item.country+'-'+item.operator" :value="item.id" />
|
|
|
+ <ElOption
|
|
|
+ v-for="item in operatorList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.mcc + '-' + item.mnc + '-' + item.country + '-' + item.operator"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
</ElSelect>
|
|
|
</ElFormItem>
|
|
|
<ElFormItem prop="message" label="内容">
|
|
|
@@ -88,22 +93,25 @@
|
|
|
<ElFormItem prop="dynamicMessage" label="动态内容">
|
|
|
<ElInput v-model="model.dynamicMessage" placeholder="请输入动态内容" type="textarea" />
|
|
|
</ElFormItem>
|
|
|
- <ElFormItem v-if="shouldShow" prop="rcsWait" label="RCS等待时间">
|
|
|
+ <ElFormItem v-if="isAdmin" prop="rcsWait" label="RCS等待时间">
|
|
|
<ElInputNumber :controls="false" v-model="model.rcsWait" placeholder="请输入RCS等待时间" />
|
|
|
<div class="tip">(0表示使用系统默认值)</div>
|
|
|
</ElFormItem>
|
|
|
- <ElFormItem v-if="shouldShow" prop="rcsInterval" label="RCS发送间隔">
|
|
|
+ <ElFormItem v-if="isAdmin" prop="rcsInterval" label="RCS发送间隔">
|
|
|
<ElInputNumber :controls="false" v-model="model.rcsInterval" placeholder="请输入RCS发送间隔" />
|
|
|
<div class="tip">(0表示使用系统默认值)</div>
|
|
|
</ElFormItem>
|
|
|
- <ElFormItem v-if="shouldShow" prop="cleanCount" label="清理数量">
|
|
|
+ <ElFormItem v-if="isAdmin" prop="cleanCount" label="清理数量">
|
|
|
<ElInputNumber :controls="false" v-model="model.cleanCount" placeholder="请输入清理数量" />
|
|
|
<div class="tip">(0表示使用系统默认值)</div>
|
|
|
</ElFormItem>
|
|
|
- <ElFormItem v-if="shouldShow" prop="requestNumberInterval" label="请求号码间隔">
|
|
|
+ <ElFormItem v-if="isAdmin" prop="requestNumberInterval" label="请求号码间隔">
|
|
|
<ElInputNumber :controls="false" v-model="model.requestNumberInterval" placeholder="请输入请求号码间隔" />
|
|
|
<div class="tip">(0表示使用系统默认值)</div>
|
|
|
</ElFormItem>
|
|
|
+ <ElFormItem v-if="isAdmin" prop="checkConnection" label="检查连接">
|
|
|
+ <ElSwitch v-model="model.checkConnection" />
|
|
|
+ </ElFormItem>
|
|
|
</EditDialog>
|
|
|
|
|
|
<ElDialog v-model="showDetailDialog" title="详情" width="800px">
|
|
|
@@ -113,12 +121,7 @@
|
|
|
<ElTableColumn prop="sendAt" label="发送时间" :formatter="timeFormatter" align="center" />
|
|
|
<ElTableColumn prop="status" label="状态" align="center">
|
|
|
<template #default="{ row }">
|
|
|
- <el-tooltip
|
|
|
- class="box-item"
|
|
|
- effect="dark"
|
|
|
- content="Top Left prompts info"
|
|
|
- placement="top-start"
|
|
|
- >
|
|
|
+ <el-tooltip class="box-item" effect="dark" content="Top Left prompts info" placement="top-start">
|
|
|
<ElTag v-if="row.status === 'success'" type="success">成功</ElTag>
|
|
|
<ElTag v-else-if="row.status === 'fail'" type="danger">失败</ElTag>
|
|
|
<ElTag v-else-if="row.status === 'pending'" type="warning">发送中</ElTag>
|
|
|
@@ -142,7 +145,7 @@
|
|
|
</EditDialog>
|
|
|
</template>
|
|
|
<script setup>
|
|
|
-import { ref } from 'vue'
|
|
|
+import { computed, inject, ref } from 'vue'
|
|
|
import PagingTable from '@/components/PagingTable.vue'
|
|
|
import { useTimeFormatter } from '@/utils/formatter'
|
|
|
import { Plus, Refresh } from '@vicons/tabler'
|
|
|
@@ -150,19 +153,17 @@ import EditDialog from '@/components/EditDialog.vue'
|
|
|
import { setupEditDialog } from '@/utils/editDialog'
|
|
|
import { http } from '@/plugins/http'
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
+import { storeToRefs } from 'pinia'
|
|
|
import { useUserStore } from '@/stores/user'
|
|
|
|
|
|
-const { user } = useUserStore()
|
|
|
+const { user } = storeToRefs(useUserStore())
|
|
|
const where = ref({})
|
|
|
-const roles = user.roles
|
|
|
-const shouldShow = ref(true)
|
|
|
-if (roles.includes('user')) {
|
|
|
- where.value.userId = user.id
|
|
|
- shouldShow.value = false
|
|
|
-}
|
|
|
+const isAdmin = inject('isAdmin')
|
|
|
const timeFormatter = useTimeFormatter()
|
|
|
const table = ref(null)
|
|
|
-const model = ref({})
|
|
|
+const model = ref({
|
|
|
+ checkConnection: true
|
|
|
+})
|
|
|
const rules = {
|
|
|
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
|
|
listId: [{ required: true, message: '请选择发送列表', trigger: 'blur' }],
|
|
|
@@ -171,25 +172,30 @@ const rules = {
|
|
|
rcsWait: [{ required: false, message: '请输入RCS等待时间', trigger: 'blur' }],
|
|
|
rcsInterval: [{ required: false, message: '请输入RCS发送间隔', trigger: 'blur' }],
|
|
|
cleanCount: [{ required: false, message: '请输入清理数量', trigger: 'blur' }],
|
|
|
- requestNumberInterval: [{ required: false, message: '请输入请求号码间隔', trigger: 'blur' }]
|
|
|
+ requestNumberInterval: [{ required: false, message: '请输入请求号码间隔', trigger: 'blur' }],
|
|
|
+ checkConnection: [{ required: false, message: '请选择是否检查连接', trigger: 'blur' }]
|
|
|
}
|
|
|
const { showEditDialog, onEdit } = setupEditDialog(model)
|
|
|
|
|
|
async function submit() {
|
|
|
- model.value.userId = user.id
|
|
|
if (model.value.channelId) {
|
|
|
model.value.channelId = model.value.channelId.join(',')
|
|
|
}
|
|
|
- await http.put('/task', model.value)
|
|
|
+ await http.put('/task', {
|
|
|
+ ...model.value,
|
|
|
+ userId: user.value.id
|
|
|
+ })
|
|
|
ElMessage.success('保存成功')
|
|
|
}
|
|
|
|
|
|
const phoneList = ref([])
|
|
|
|
|
|
async function getPhoneList() {
|
|
|
- phoneList.value = (await http.post('/phone-list', {
|
|
|
- search: { page: { page: 1, limit: 100 }, order: { createdAt: 'DESC' }, where: where.value }
|
|
|
- })).items
|
|
|
+ phoneList.value = (
|
|
|
+ await http.post('/phone-list', {
|
|
|
+ search: { page: { page: 1, limit: 100 }, order: { createdAt: 'DESC' }, where: where.value }
|
|
|
+ })
|
|
|
+ ).items
|
|
|
}
|
|
|
|
|
|
getPhoneList()
|