Kaynağa Gözat

上传列表添加

maker 3 yıl önce
ebeveyn
işleme
abae8bd489
3 değiştirilmiş dosya ile 300 ekleme ve 16 silme
  1. 10 2
      src/api/upload.js
  2. 261 0
      src/view/gameTask/scriptList.vue
  3. 29 14
      src/view/gameTask/uploadView.vue

+ 10 - 2
src/api/upload.js

@@ -27,9 +27,17 @@ export const getGameTaskList = (data) => {
   })
 }
 
-export const getGameTaskById = (data) => {
+export const getScriptList = (data) => {
   return service({
-    url: '/gameTask/getGameTaskById',
+    url: '/gameTask/getScriptList',
+    method: 'post',
+    data
+  })
+}
+
+export const statusChange = (data) => {
+  return service({
+    url: '/gameTask/statusChange',
     method: 'post',
     data
   })

+ 261 - 0
src/view/gameTask/scriptList.vue

@@ -0,0 +1,261 @@
+<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.responsible_person" 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>
+                    <el-button size="small" type="primary" icon="search" @click="onSubmit">查询</el-button>
+                    <el-button size="small" icon="refresh" @click="onReset">重置</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="gva-table-box">
+            <el-table :data="tableData" border @sort-change="sortChange" @selection-change="handleSelectionChange">
+                <el-table-column type="selection" width="55" />
+                <el-table-column align="left" label="任务ID" min-width="60" prop="task_id" sortable="custom" />
+                <el-table-column align="left" label="脚本名称" min-width="60" prop="name" sortable="custom" />
+                <el-table-column align="left" label="负责人" min-width="60" prop="responsible_person" sortable="custom" />
+                <el-table-column align="left" label="下载链接" min-width="80" prop="url" />
+                <el-table-column align="left" label="版本号" min-width="60" prop="version" />
+                <el-table-column align="left" label="md5值" min-width="60" prop="md5_string" />
+                <el-table-column align="left" label="状态" min-width="60">
+                    <template #default="scope">
+                        <el-switch v-model="scope.row.state" inline-prompt :active-value="1" :inactive-value="-1"
+                            @change="() => { switchEnable(scope.row) }" />
+                    </template>
+                </el-table-column>
+                <el-table-column align="left" label="创建时间" min-width="110" prop="create_time" sortable="custom" />
+                <el-table-column align="left" label="更新时间" min-width="80" prop="update_time" />
+
+            </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>
+    </div>
+</template>
+  
+<script>
+export default {
+    name: 'ScriptList',
+}
+</script>
+  
+<script setup>
+import {
+    statusChange,
+    getScriptList,
+} from '@/api/upload'
+import {
+    selectResponsiblePerson,
+} from '@/api/responsiblePerson'
+import { useUserStore } from '@/pinia/modules/user'
+import { toSQLLine } from '@/utils/stringFun'
+import warningBar from '@/components/warningBar/warningBar.vue'
+import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { downloadTemplate } from '@/api/excel'
+
+
+const path = ref(import.meta.env.VITE_BASE_API)
+const userStore = useUserStore()
+const typeFiletr = (value) => {
+    const target = typeOptions.value.filter(item => item.value === value)[0]
+    return target && `${target.label}`
+}
+
+const statusFiletr = (value) => {
+    const target = statusOptions.value.filter(item => item.value === value)[0]
+    return target && `${target.label}`
+}
+const ResponsiblePerson = ref([])
+const getResponsiblePerson = async () => {
+    const table = await selectResponsiblePerson()
+    if (table.code === 0) {
+        ResponsiblePerson.value = table.data
+    }
+}
+getResponsiblePerson()
+const apis = ref([])
+
+const form = ref({
+    task_id: '',
+    name: '',
+    responsible_person: '',
+    url: '',
+    version: '',
+    md5_string: '',
+    state: '',
+})
+const statusOptions = ref([
+    {
+        value: -1,
+        label: '关闭',
+        type: 'wain'
+    },
+    {
+        value: 1,
+        label: '使用',
+        type: 'success'
+    }
+])
+
+const GamePortOptions = ref([
+])
+
+const accountTypeOptions = ref([
+])
+
+const loginMethodOptions = ref([
+])
+
+
+const type = ref('')
+
+
+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.task_id = Number(searchInfo.value.task_id)
+    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 () => {
+    const table = await getScriptList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
+    if (table.code === 0) {
+        tableData.value = table.data.list
+        total.value = table.data.total
+        // GamePortOptions.value = table.data.option.game_port
+        // loginMethodOptions.value = table.data.option.login_type
+        // accountTypeOptions.value = table.data.option.account_type
+        // links.value = table.data.option.game_list
+        page.value = table.data.page
+        pageSize.value = table.data.pageSize
+    }
+}
+
+getTableData()
+
+// 批量操作
+const handleSelectionChange = (val) => {
+    apis.value = val
+}
+
+const deleteVisible = ref(false)
+
+// 弹窗相关
+const apiForm = ref(null)
+const initForm = () => {
+    apiForm.value.resetFields()
+    form.value = {
+        task_id: '',
+        name: '',
+        responsible_person: '',
+        url: '',
+        version: '',
+        md5_string: '',
+        state: '',
+    }
+}
+
+const switchEnable = async (row) => {
+    const res = await statusChange({ state: row.state, id: row.id })
+    if (res.code === 0) {
+        ElMessage({ type: 'success', message: `${row.state === -1 ? '停止' : '开启'}成功` })
+    }
+}
+
+const links = ref([])
+
+const querySearch = (queryString, cb) => {
+    const results = queryString
+        ? links.value.filter(createFilter(queryString))
+        : links.value
+    // call callback function to return suggestion objects
+    cb(results)
+}
+const createFilter = (queryString) => {
+    return (restaurant) => {
+        return (
+            restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
+        )
+    }
+}
+
+const handleSelect = (item) => {
+    form.value.game_id = item.game_id
+    console.log(item)
+}
+
+const handleIconClick = (ev) => {
+    console.log(ev)
+}
+
+// links.value = loadAll()
+
+</script>
+  
+<style scoped lang="scss">
+.button-box {
+    padding: 10px 20px;
+
+    .el-button {
+        float: right;
+    }
+}
+
+:deep(.el-tabs__nav-scroll) {
+    width: 35%;
+    margin: 0 auto
+}
+
+:deep(.el-tabs__nav-scroll) .warning {
+    color: #dc143c;
+}
+</style>
+  

+ 29 - 14
src/view/gameTask/uploadView.vue

@@ -41,8 +41,13 @@
     </div>
     <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="dialogTitle">
       <el-form :model="form" :rules="rules" ref="uploadForm" label-width="100px" class="demo-ruleForm">
-        <el-form-item label="gameid" prop="game_id">
-          <el-input type="textarea" v-model="form.game_id" style="width:500px;"></el-input>
+        <el-form-item label="任务id" prop="task_id">
+          <el-input type="textarea" v-model="form.task_id" style="width:500px;"></el-input>
+        </el-form-item>
+        <el-form-item label="负责人">
+          <el-select v-model="form.responsible_person" 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="file">
           <el-upload ref="upload" class="upload-demo" action="#" :before-remove="beforeRemove" :limit="1"
@@ -74,7 +79,6 @@ export default {
 import {
   addFileUpdate,
   getGameTaskList,
-  getGameTaskById,
 } from '@/api/upload'
 import {
   selectResponsiblePerson,
@@ -191,13 +195,15 @@ const initForm = () => {
   uploadForm.value.resetFields()
   upload.value!.clearFiles()
   form.value = {
-    game_id: '' //游戏id
+    task_id: '',//游戏id
+    responsible_person: '',
   }
 }
 
 const uploadFunc = async (row) => {
-  const res = await getGameTaskById({ id: row.task_id })
-  form.value.game_id = res.data.task_id
+  // const res = await getGameTaskById({ id: row.task_id })
+  form.value.task_id = row.task_id
+  form.value.responsible_person = row.user
   openDialog('upload')
 }
 
@@ -253,19 +259,21 @@ const message = ref('请上传dll文件')
 
 //校验规则
 const rules = ref({
-  game_id: [{
+  task_id: [{
     required: true,
     message: '请输入游戏id',
     trigger: 'blur'
   }],
 })
 
-const form: any = ref({
-  game_id: '' //游戏id
+const form = ref({
+  task_id: '',//游戏id
+  responsible_person: '',
 })
 
 
 const handleExceed: UploadProps['onExceed'] = (files) => {
+  console.log("数组超标")
   upload.value!.clearFiles()
   const file = files[0] as UploadRawFile
   file.uid = genFileId()
@@ -302,6 +310,7 @@ let fd = new FormData()
 const httpRequest = (param: any) => {
 
 
+
   // let fd = new FormData();
   const fileObj = param.file // 相当于input里取得的files
   fd.append('file', fileObj) // 文件对象
@@ -310,7 +319,7 @@ const httpRequest = (param: any) => {
 }
 
 const handleRemove: UploadProps['onRemove'] = (file, fileList) => {
-  console.log(file, fileList)
+  console.log(fileList)
 }
 
 
@@ -322,7 +331,8 @@ const submitUpload = async () => {
         return;
       }
       upload.value!.submit()
-      fd.append('game_id', form.value.game_id)
+      fd.append('task_id', form.value.task_id)
+      fd.append('responsible_person', form.value.responsible_person)
       // this.fd.append('log', this.ruleForm.log)
       fullscreenLoading = true;
       //调用后端接口,提交即可
@@ -337,8 +347,12 @@ const submitUpload = async () => {
         fd = new FormData()
         fileList.data = []
         resetForm()
+        getTableData()
+        closeDialog()
       } else {
         ElMessage.error("上传失败");
+        getTableData()
+        closeDialog()
       }
     } else {
       // console.log('error submit!!');
@@ -355,9 +369,10 @@ const resetForm = async () => {
   uploadForm.value.resetFields()
   // console.log(uploadForm.file)
   upload.value!.clearFiles()
-  // form.value = {
-  //   game_id: '' //游戏id
-  // }
+  form.value = {
+    task_id: '',//游戏id
+    responsible_person: '',
+  }
 }
 
 </script>