Przeglądaj źródła

紧急任务页面提交

maker 2 lat temu
rodzic
commit
da4c5d55b5

+ 52 - 0
src/api/urgentTask.js

@@ -0,0 +1,52 @@
+import service from '@/utils/request'
+
+export const getUrgentTaskList = (data) => {
+    return service({
+        url: '/gameTask/getUrgentTaskList',
+        method: 'post',
+        data
+    })
+}
+
+export const getUnusedPc = (data) => {
+    return service({
+        url: '/gameTask/getUnusedPc',
+        method: 'post',
+        data
+    })
+}
+
+export const createUrgentTask = (data) => {
+    return service({
+        url: '/gameTask/createUrgentTask',
+        method: 'post',
+        data
+    })
+}
+
+export const updateUrgentTask = (data) => {
+    return service({
+        url: '/gameTask/updateUrgentTask',
+        method: 'post',
+        data
+    })
+}
+
+
+export const deleteUrgentTask = (data) => {
+    return service({
+        url: '/gameTask/deleteUrgentTask',
+        method: 'post',
+        data
+    })
+}
+
+
+
+export const deleteUrgentTaskByIds = (data) => {
+    return service({
+        url: '/gameTask/deleteUrgentTaskByIds',
+        method: 'delete',
+        data
+    })
+}

+ 0 - 4
src/view/gameTask/centralControlConfList.vue

@@ -173,10 +173,6 @@ import { ref } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 // import { isNumber } from 'lodash'
 
-const methodFiletr = (value) => {
-    const target = searchOptions.value.filter(item => item.value === value)[0]
-    return target && `${target.label}`
-}
 
 const apis = ref([])
 const form = ref({

+ 350 - 0
src/view/gameTask/urgentTaskList.vue

@@ -0,0 +1,350 @@
+<template>
+    <div>
+        <div class="gva-search-box">
+            <el-form ref="searchForm" :inline="true" :model="searchInfo">
+                <el-form-item label="任务Id">
+                    <el-input v-model="searchInfo.task_id" placeholder="任务ID" />
+                </el-form-item>
+                <!-- <el-form-item label="负责人">
+                    <el-select v-model="searchInfo.user" placeholder="负责人">
+                        <el-option v-for="item in ResponsiblePerson" :key="item.id" :label="item.name" :value="item.name" />
+                    </el-select>
+                </el-form-item> -->
+                <el-form-item label="日期" prop="date">
+                    <el-date-picker v-model="searchInfo.date" size="default" type="daterange" unlink-panels
+                        range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :disabled-date="disabledDate"
+                        :shortcuts="shortcuts" />
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="small" type="primary" icon="search" @click="onSubmit">搜索</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="gva-table-box">
+            <div class="gva-btn-list">
+                <el-button size="small" icon="refresh" @click="onReset">刷新</el-button>
+                <el-button size="small" type="primary" icon="plus" @click="openDialog('addTask')">新增</el-button>
+                <el-popover v-model="deleteVisible" placement="top" width="160">
+                    <p>确定要删除吗?</p>
+                    <div style="text-align: right; margin-top: 8px;">
+                        <el-button size="small" type="primary" link @click="deleteVisible = false">取消</el-button>
+                        <el-button size="small" type="primary" @click="onDelete">确定</el-button>
+                    </div>
+                    <template #reference>
+                        <el-button icon="delete" type="danger" size="small" :disabled="!apis.length"
+                            style="margin-left: 10px;" @click="deleteVisible = true">删除</el-button>
+                    </template>
+                </el-popover>
+            </div>
+            <el-table :data="tableData" @sort-change="sortChange" @selection-change="handleSelectionChange">
+                <el-table-column type="selection" width="55" />
+                <el-table-column align="left" label="任务id" min-width="100" prop="task_id" />
+                <el-table-column align="left" label="租机编号" min-width="150" prop="pc_code" sortable="custom" />
+                <el-table-column align="left" label="创建日期" min-width="150" prop="create_date" sortable="custom" />
+                <el-table-column align="left" label="创建时间" min-width="150" prop="create_time" sortable="custom" />
+                <el-table-column align="left" label="更新时间" min-width="150" prop="update_time" sortable="custom" />
+                <el-table-column align="left" fixed="right" label="操作" width="200">
+                    <template #default="scope">
+                        <el-button icon="edit" size="small" type="primary" link
+                            @click="editTaskFunc(scope.row)">编辑</el-button>
+                        <el-button icon="delete" size="small" type="primary" link
+                            @click="deleteTaskFunc(scope.row)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="gva-pagination">
+                <el-pagination :current-page="page" :page-size="pageSize" :page-sizes="[10, 30, 50, 100]" :total="total"
+                    layout="total, sizes, prev, pager, next, jumper" @current-change="handleCurrentChange"
+                    @size-change="handleSizeChange" />
+            </div>
+        </div>
+
+        <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="dialogTitle">
+            <el-form ref="apiForm" :model="form" :rules="rules" label-width="80px">
+                <el-form-item label="任务id" prop="task_id">
+                    <el-input v-model="form.task_id" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="所需租机" prop="pc_code">
+                    <el-select v-model="form.pc_code">
+                        <el-option v-for="item in pcOptions" :key="item.pc_code" :label="item.pc_code"
+                            :value="item.pc_code" />
+                    </el-select>
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <div class="dialog-footer">
+                    <el-button size="small" @click="closeDialog">取 消</el-button>
+                    <el-button size="small" type="primary" @click="enterDialog">确 定</el-button>
+                </div>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+    
+<script>
+export default {
+    name: 'UrgentTask',
+
+}
+</script>
+    
+<script setup>
+import {
+    getUrgentTaskList,
+    getUnusedPc,
+    createUrgentTask,
+    updateUrgentTask,
+    deleteUrgentTask,
+    deleteUrgentTaskByIds
+} from '@/api/urgentTask'
+import { toSQLLine } from '@/utils/stringFun'
+//   import warningBar from '@/components/warningBar/warningBar.vue'
+import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+// import { isNumber } from 'lodash'
+import dayjs from "dayjs";
+
+
+const apis = ref([])
+const form = ref({
+
+})
+
+
+const pcOptions = ref([
+
+    // {
+    //     value: 1,
+    //     label: '小绵羊任务'
+    // },
+    // {
+    //     value: 2,
+    //     label: '魅族任务'
+    // },
+    // {
+    //     value: 3,
+    //     label: '腾讯任务'
+    // },
+])
+
+
+const type = ref('')
+const rules = ref({
+    task_id: [{ required: true, message: '请设置任务id', trigger: 'blur' }],
+    pc_code: [{ required: true, message: '请选择租机', trigger: 'blur' }],
+})
+
+const page = ref(1)
+const total = ref(0)
+const pageSize = ref(10)
+const tableData = ref([])
+const searchInfo = ref({
+})
+
+const onReset = () => {
+    searchInfo.value = {}
+    getTableData()
+}
+
+// 搜索
+const onSubmit = () => {
+    page.value = 1
+    pageSize.value = 10
+    searchInfo.value.game_id = Number(searchInfo.value.game_id)
+    if (typeof searchInfo.value.date != "undefined") {
+        searchInfo.value.date[0] = dayjs(searchInfo.value.date[0]).format(
+            "YYYY-MM-DD"
+        );
+        searchInfo.value.date[1] = dayjs(searchInfo.value.date[1]).format(
+            "YYYY-MM-DD"
+        );
+    }
+    getTableData()
+}
+
+// 分页
+const handleSizeChange = (val) => {
+    pageSize.value = val
+    getTableData()
+}
+
+const handleCurrentChange = (val) => {
+    page.value = val
+    getTableData()
+}
+
+// 排序
+const sortChange = ({ prop, order }) => {
+    if (prop) {
+        if (prop === 'ID') {
+            prop = 'id'
+        }
+        searchInfo.value.orderKey = toSQLLine(prop)
+        searchInfo.value.desc = order === 'descending'
+    }
+    getTableData()
+}
+
+// 查询
+const getTableData = async () => {
+    searchInfo.value.task_id = Number(searchInfo.value.task_id)
+    const table = await getUrgentTaskList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
+    if (table.code === 0) {
+        tableData.value = table.data.list
+        total.value = table.data.total
+        page.value = table.data.page
+        pageSize.value = table.data.pageSize
+    }
+    const pcData = await getUnusedPc()
+    if (pcData.code === 0) {
+        pcOptions.value = pcData.data
+    }
+}
+
+getTableData()
+
+// 批量操作
+const handleSelectionChange = (val) => {
+    apis.value = val
+}
+
+const deleteVisible = ref(false)
+const onDelete = async () => {
+    const ids = apis.value.map(item => item.id)
+    const res = await deleteUrgentTaskByIds({ ids })
+    if (res.code === 0) {
+        ElMessage({
+            type: 'success',
+            message: res.msg
+        })
+        if (tableData.value.length === ids.length && page.value > 1) {
+            page.value--
+        }
+        deleteVisible.value = false
+        getTableData()
+    }
+}
+
+// 弹窗相关
+const apiForm = ref(null)
+const initForm = () => {
+    apiForm.value.resetFields()
+    form.value = {
+    }
+}
+
+const dialogTitle = ref('新增任务')
+const dialogFormVisible = ref(false)
+const openDialog = (key) => {
+    switch (key) {
+        case 'addTask':
+            dialogTitle.value = '新增任务'
+            break
+        case 'editTask':
+            dialogTitle.value = '编辑任务'
+            break
+        default:
+            break
+    }
+    type.value = key
+    dialogFormVisible.value = true
+}
+const closeDialog = () => {
+    initForm()
+    dialogFormVisible.value = false
+}
+
+const editTaskFunc = async (row) => {
+    const res = await getUrgentTaskById({ id: row.id })
+    form.value = res.data
+    openDialog('editTask')
+}
+
+const enterDialog = async () => {
+
+    apiForm.value.validate(async valid => {
+        if (valid) {
+            switch (type.value) {
+                case 'addTask':
+                    {
+                        form.value.task_id = Number(form.value.task_id)
+                        const res = await createUrgentTask(form.value)
+                        if (res.code === 0) {
+                            ElMessage({
+                                type: 'success',
+                                message: '添加成功',
+                                showClose: true
+                            })
+                        }
+                        getTableData()
+                        closeDialog()
+                    }
+
+                    break
+                case 'editTask':
+                    {
+                        form.value.task_id = Number(form.value.task_id)
+                        const res = await updateUrgentTask(form.value)
+                        if (res.code === 0) {
+                            ElMessage({
+                                type: 'success',
+                                message: '编辑成功',
+                                showClose: true
+                            })
+                        }
+                        getTableData()
+                        closeDialog()
+                    }
+                    break
+                default:
+                    // eslint-disable-next-line no-lone-blocks
+                    {
+                        ElMessage({
+                            type: 'error',
+                            message: '未知操作',
+                            showClose: true
+                        })
+                    }
+                    break
+            }
+        }
+    })
+}
+
+const deleteTaskFunc = async (row) => {
+    ElMessageBox.confirm('此操作将永久删除此任务, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+    })
+        .then(async () => {
+            const res = await deleteUrgentTask(row)
+            if (res.code === 0) {
+                ElMessage({
+                    type: 'success',
+                    message: '删除成功!'
+                })
+                if (tableData.value.length === 1 && page.value > 1) {
+                    page.value--
+                }
+                getTableData()
+            }
+        })
+}
+
+</script>
+    
+<style scoped lang="scss">
+.button-box {
+    padding: 10px 20px;
+
+    .el-button {
+        float: right;
+    }
+}
+
+.warning {
+    color: #dc143c;
+}
+</style>
+