Explorar el Código

任务列表按角色展示特定信息

wuyi hace 1 año
padre
commit
596fc4886e
Se han modificado 2 ficheros con 47 adiciones y 20 borrados
  1. 6 0
      src/views/PhoneListView.vue
  2. 41 20
      src/views/TaskView.vue

+ 6 - 0
src/views/PhoneListView.vue

@@ -64,8 +64,14 @@ import { UserRole } from '@/enums'
 import { http } from '@/plugins/http'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { useClipboard } from '@vueuse/core'
+import { useUserStore } from '@/stores/user'
 
+const { user } = useUserStore()
 const where = ref({})
+const roles = user.roles
+if (roles.includes('user')) {
+    where.value.userId = user.id
+}
 const timeFormatter = useTimeFormatter()
 const table = ref(null)
 const model = ref({})

+ 41 - 20
src/views/TaskView.vue

@@ -9,10 +9,10 @@
         <ElTableColumn prop="remark" label="备注" show-overflow-tooltip />
         <ElTableColumn prop="message" label="内容" show-overflow-tooltip />
         <ElTableColumn prop="listId" label="发送列表" :formatter="phoneListFormatter" />
-        <ElTableColumn prop="rcsWait" label="RCS等待时间" />
-        <ElTableColumn prop="rcsInterval" label="RCS发送间隔" />
-        <ElTableColumn prop="cleanCount" label="清理数量" />
-        <ElTableColumn prop="requestNumberInterval" label="请求号码间隔" />
+        <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 prop="status" label="状态" align="center">
             <template #default="{ row }">
                 <ElTag v-if="row.status === 'idle'" type="info">未发送</ElTag>
@@ -66,7 +66,7 @@
                 <ElOption v-for="item in phoneList" :key="item.id" :label="item.name" :value="item.id" />
             </ElSelect>
         </ElFormItem>
-        <ElFormItem prop="channelId" label="渠道列表">
+        <ElFormItem v-if="shouldShow" 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" />
@@ -75,19 +75,19 @@
         <ElFormItem prop="message" label="内容">
             <ElInput v-model="model.message" placeholder="请输入内容" type="textarea" />
         </ElFormItem>
-        <ElFormItem prop="rcsWait" label="RCS等待时间">
+        <ElFormItem v-if="shouldShow" prop="rcsWait" label="RCS等待时间">
             <ElInputNumber :controls="false" v-model="model.rcsWait" placeholder="请输入RCS等待时间" />
             <div class="tip">(0表示使用系统默认值)</div>
         </ElFormItem>
-        <ElFormItem prop="rcsInterval" label="RCS发送间隔">
+        <ElFormItem v-if="shouldShow" prop="rcsInterval" label="RCS发送间隔">
             <ElInputNumber :controls="false" v-model="model.rcsInterval" placeholder="请输入RCS发送间隔" />
             <div class="tip">(0表示使用系统默认值)</div>
         </ElFormItem>
-        <ElFormItem prop="cleanCount" label="清理数量">
+        <ElFormItem v-if="shouldShow" prop="cleanCount" label="清理数量">
             <ElInputNumber :controls="false" v-model="model.cleanCount" placeholder="请输入清理数量" />
             <div class="tip">(0表示使用系统默认值)</div>
         </ElFormItem>
-        <ElFormItem prop="requestNumberInterval" label="请求号码间隔">
+        <ElFormItem v-if="shouldShow" prop="requestNumberInterval" label="请求号码间隔">
             <ElInputNumber :controls="false" v-model="model.requestNumberInterval" placeholder="请输入请求号码间隔" />
             <div class="tip">(0表示使用系统默认值)</div>
         </ElFormItem>
@@ -133,8 +133,13 @@ import { ElMessage, ElMessageBox } from 'element-plus'
 import { useUserStore } from '@/stores/user'
 
 const { user } = useUserStore()
-console.log(user)
 const where = ref({})
+const roles = user.roles
+const shouldShow = ref(true)
+if (roles.includes('user')) {
+    where.value.userId = user.id
+    shouldShow.value = false
+}
 const timeFormatter = useTimeFormatter()
 const table = ref(null)
 const model = ref({})
@@ -142,10 +147,10 @@ const rules = {
     name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
     listId: [{ required: true, message: '请选择发送列表', trigger: 'blur' }],
     message: [{ required: true, message: '请输入内容', trigger: 'blur' }],
-    rcsWait: [{ required: true, message: '请输入RCS等待时间', trigger: 'blur' }],
-    rcsInterval: [{ required: true, message: '请输入RCS发送间隔', trigger: 'blur' }],
-    cleanCount: [{ required: true, message: '请输入清理数量', trigger: 'blur' }],
-    requestNumberInterval: [{ required: true, message: '请输入请求号码间隔', trigger: 'blur' }]
+    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' }]
 }
 const { showEditDialog, onEdit } = setupEditDialog(model)
 
@@ -161,7 +166,9 @@ async function submit() {
 const phoneList = ref([])
 
 async function getPhoneList() {
-    phoneList.value = (await http.post('/phone-list')).items
+    phoneList.value = (await http.post('/phone-list', {
+        search: { where: where.value }
+    })).items
 }
 
 getPhoneList()
@@ -234,11 +241,25 @@ function taskItemStatusFormatter(row, column, cellValue, index) {
 }
 
 async function start(row) {
-    await ElMessageBox.confirm('确定开始发送吗?', '提示', {
-        type: 'warning'
-    })
-    await http.post(`/task/${row.id}/start`)
-    table.value.refresh()
+    const cost = await http.get(`/task/verification/${row.id}`)
+    if (cost > 0 && row.status === 'idle') {
+        const confirm = await ElMessageBox.confirm(`该任务需要从余额中扣除 ${cost} ,是否继续?`, '提示', {
+            type: 'warning'
+        })
+        if (confirm) {
+            await http.post(`/task/${row.id}/start`)
+            table.value.refresh()
+        }
+    } else if (cost < 0 && row.status === 'idle') {
+        await ElMessageBox.alert('余额不足,请充值后再启动任务.', '提示')
+        table.value.refresh()
+    } else {
+        await ElMessageBox.confirm('确定开始发送吗?', '提示', {
+            type: 'warning'
+        })
+        await http.post(`/task/${row.id}/start`)
+        table.value.refresh()
+    }
 }
 
 async function pause(row) {