<!-- 任务管理 --> <template> <div class="L-main" id="L-size-main"> <div class="content-search" id="L-header"> <div class="search-title">查询条件</div> <el-form :inline="true" :model="formInline" size="small" class="demo-form-inline"> <el-row> <el-col :span="7"> <el-form-item label="任务名称:"> <el-input v-model="formInline.taskName" placeholder="请输入"></el-input> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="任务状态:"> <el-select v-model="formInline.taskStatus" placeholder="请选择"> <el-option label="关闭" value="0"> </el-option> <el-option label="进行中" value="1"> </el-option> <el-option label="正常完成" value="2"> </el-option> <el-option label="超期完成" value="3"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <!-- <el-form-item label="任务编号:"> <el-input v-model="formInline.id" placeholder="请输入"></el-input> </el-form-item> --> <el-form-item label="任务完成时间:"> <el-date-picker v-model="formInline.time" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="请选择"> </el-date-picker> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="8"> <el-form-item> <!-- <el-date-picker v-model="formInline.time" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="请选择"> </el-date-picker> --> </el-form-item> </el-col> <el-col :span="16" style="text-align: right;padding-right: 20px;"> <el-form-item> <el-button size="mini" @click="resetQuery('queryFrom')">重置</el-button> <el-button size="mini" type="primary" @click="handleQuery('queryFrom')">查询</el-button> </el-form-item> </el-col> </el-row> </el-form> </div> <main> <div class="search-title"> <span class="search-title-span">任务列表</span> <el-row :gutter="10" class="mb8"> <!-- <el-col :span="1.5"> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button> </el-col> --> <el-col :span="1.5"> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">任务创建</el-button> </el-col> </el-row> </div> <section> <el-table v-loading="loading" :data="tableData" :height="tabHeader" :max-height="tabHeader" :row-class-name="tableRowClassName"> <el-table-column type="index" width="50" label="序号" align="center" /> <!-- <el-table-column label="任务编号" key="id" width="200px" prop="id" align="center" /> --> <el-table-column label="任务名称" key="taskName" prop="taskName" align="center" /> <el-table-column label="任务下发时间" key="taskTime" prop="taskTime" align="center"> <!-- <template slot-scope="scope"> <dict-tag :options="dict.type.project_middle_type" :value="scope.row.projectMiddleType"/> </template> --> </el-table-column> <el-table-column label="任务期限" key="taskDeadline" prop="taskDeadline" align="center" /> <el-table-column label="任务完成时间" key="taskFinishTime" prop="taskFinishTime" align="center" /> <el-table-column label="任务状态" key="taskStatus" width="200px" prop="taskStatus" class-name="table-status" align="center"> <template slot-scope="scope"> <span v-if="scope.row.taskStatus == 0" style="color: #F56C6C;"> 已关闭 </span> <span v-if="scope.row.taskStatus == 1" style="color: #E6A23C;"> 进行中 </span> <span v-if="scope.row.taskStatus == 2" style="color: #67C23A;"> 正常完成 </span> <span v-if="scope.row.taskStatus == 3" style="color:#67C23A;"> 超期完成 </span> <span v-if="scope.row.taskStatus == 4" style="color: #F56C6C;"> 审核不通过 </span> <span v-if="scope.row.taskStatus == 5" style="color: #F56C6C;"> 审核驳回 </span> </template> </el-table-column> <el-table-column label="操作" prop="userId" class-name="table-operation" align="center"> <template slot-scope="scope"> <div style="display: flex;align-items: center;justify-content: center;"> <div style="display: flex;align-items: center;cursor: pointer;" @click="goInfo(scope.row)"> <img src="@/assets/images/icon-ck@2x.png" alt="" style="width: 20px;margin-right: 5px;"> <span class="look-info" style="color: #1485EF;">查看</span> </div> <!-- --> <div style="display: flex;align-items: center;cursor: pointer;margin-left: 10px;" @click="delInfo(scope.row)" v-if="scope.row.taskStatus == 1 && scope.row.taskStatus != 0"> <img src="@/assets/images/icon-shenhe@2x.png" alt="" style="width: 15px;margin-right: 5px;"> <span class="del-info" style="color: #1485EF;">审核</span> </div> <div style="display: flex;align-items: center;cursor: pointer;margin-left: 10px;" @click="guanbijiekou(scope.row)" v-if="scope.row.taskStatus == 1 && scope.row.taskStatus != 0"> <!-- --> <!-- <img src="@/assets/images/icon-shenhe@2x.png" alt="" style="width: 15px;margin-right: 5px;"> --> <i class="el-icon-delete"></i> <span class="del-info" style="color: #1485EF;">关闭</span> </div> </div> </template> </el-table-column> </el-table> </section> <my-pagination id="L-pagination" :total="total" :page="pagination.current" :limit="pagination.size" @pagination="getPagination" :current-page.sync="pagination.current"></my-pagination> </main> <my-dialog title="新增任务" @close="importClose" ref="taskDialog" class="taskDialogBox" width="43%"> <el-row> <el-col :span="21"> <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px"> <el-form-item label="任务名称" prop="taskName"> <el-input v-model="ruleForm.taskName" placeholder="请输入任务名称"></el-input> </el-form-item> <el-form-item label="核查资产类型" prop="type"> <el-checkbox-group v-model="ruleForm.type"> <el-checkbox label="0">web资产</el-checkbox> <el-checkbox label="1">小程序资产</el-checkbox> <el-checkbox label="2">公众号资产</el-checkbox> <el-checkbox label="3">电子邮件资产</el-checkbox> <el-checkbox label="4">移动应用程序资产</el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item label="核查单位" prop="dwmc" class="select-box"> <el-col> <el-select v-model="ruleForm.dwmc" placeholder="请选择核查单位" multiple collapse-tags> </el-select> </el-col> <el-col class="btn-box"> <el-button type="primary" @click="addliebiao"><i class="el-icon-s-unfold"></i></el-button> </el-col> </el-form-item> <el-form-item label="任务期限" prop="taskDeadline"> <el-date-picker type="datetime" placeholder="选择日期" v-model="ruleForm.taskDeadline" style="width: 100%;" value-format="yyyy-MM-dd HH:mm:ss" default-time="23:59:59"></el-date-picker> </el-form-item> <el-form-item class="newTask-form-item"> <el-button @click="resetForm('ruleForm')">取消</el-button> <el-button type="primary" @click="submitForm('ruleForm')" :loading="btnloading">发布</el-button> </el-form-item> </el-form> </el-col> <el-col :span="6"></el-col> </el-row> </my-dialog> <div class="newTask-liebiao"> <my-dialog title="单位列表" ref="liebiaoDialog" @close="liebiaoClose" class="taskDialogBox" width="80%"> <danweiList ref="danweiList" @adddanweilist="adddanweilist" @liebiaoClose="liebiaoClose"></danweiList> </my-dialog> </div> </div> </template> <script> import myPagination from "@/views/components/Pagination/index.vue" import myDialog from "@/views/components/myDialog/index.vue" import danweiList from "@/views/system/user/danweiList.vue" import { addassetTaskadd, getassetTask, getassetTaskid, assetTaskclose } from "@/api/renwuApi/index.js" export default { // dicts: ['jjh_project_type', 'bms_approval_status', "project_middle_type", "project_small_type", "project_categories"], components: { myPagination, myDialog, danweiList }, data() { return { btnloading: false, formInline: { name: "", type: "", time: [], number: "", status: "", }, total: 0, pagination: { current: 1, size: 10, }, tableData: [ ], loading: false, tabHeader: undefined, ruleForm: { taskName: "", dwmc: [], taskDeadline: "", type: [] }, rules: { taskName: [ { required: true, message: '请输入', trigger: 'change' }, ], dwmc: [ { required: true, message: '请选择', trigger: 'change' } ], taskDeadline: [ { required: true, message: '请选择日期', trigger: 'change' } ], type: [ { required: true, message: '请选择', trigger: 'change' } ] }, tabclicklist: [], chanckList: [ { lable: "0", conent: "web资产" }, { lable: "1", conent: "小程序资产" }, { lable: "2", conent: "公众号资产" }, { lable: "3", conent: "电子邮件资产" }, { lable: "4", conent: "移动应用程序资产" }, ] } }, mounted() { localStorage.removeItem("activeName") this.getInfo(); this.cancalDebounce(); window.addEventListener('resize', this.cancalDebounce); }, destroyed() { window.removeEventListener('resize', this.cancalDebounce); }, methods: { // 关闭新增弹窗 resetForm() { this.ruleForm = { dwmc: [], taskName: "", taskDeadline: "", type: [] } this.$refs.taskDialog.close() this.tabclicklist = [] }, submitForm(formName) { console.log(this.ruleForm); this.$refs[formName].validate((valid) => { if (valid) { this.btnloading = true this.ruleForm.dwmc = this.ruleForm.dwmc.join(",") this.ruleForm.type = this.ruleForm.type.join(",") addassetTaskadd(this.ruleForm).then(res => { this.resetForm() this.getInfo(); this.$modal.msgSuccess("新增成功"); this.btnloading = false }) setTimeout(() => { this.ruleForm.dwmc = this.ruleForm.dwmc.split(",") this.ruleForm.type = this.ruleForm.type.split(",") }, 0); } else { console.log('error submit!!'); return false; } }); }, adddanweilist(val) { if (val) { let list = val this.ruleForm.dwmc = [] list.forEach(element => { this.ruleForm.dwmc.push(element.nickName) }); } else { this.ruleForm.dwmc = [] } this.tabclicklist = val }, // 获取列表 getInfo() { this.loading = true; getassetTask(this.pagination).then(res => { this.loading = false; this.total = res.data.total; this.tableData = res.data.records; }) }, // 重置 resetQuery() { this.formInline = { name: "", type: "", time: [], number: "", status: "", } this.pagination = { current: 1, size: 10, } this.getInfo(); }, //打开列表 addliebiao() { console.log(this.ruleForm.type); if (this.ruleForm.type.length > 0) { this.$refs.liebiaoDialog.open() setTimeout(() => { this.$refs.danweiList.getType(this.ruleForm.type) this.$refs.danweiList.getList() }, 100); if (this.tabclicklist) { setTimeout(() => { this.$refs.danweiList.dakai(this.tabclicklist) }, 100); } } else { this.$message('请先选择核查资产类型'); } }, liebiaoClose() { this.$refs.danweiList.queryParams = { current: 1, size: 10, userName: undefined, nickName: undefined, dwlx: undefined, }, this.$refs.liebiaoDialog.close() }, // 查询 handleQuery() { this.pagination = { current: 1, size: 10 } if (this.formInline.time.length > 0) { this.formInline.begainTime = this.formInline.time[0] this.formInline.endTime = this.formInline.time[1] } this.pagination = { ...this.pagination, ...this.formInline }; this.getInfo(); }, // 页码获取 getPagination(pages) { this.pagination.current = pages.page; this.pagination.size = pages.limit; this.getInfo(); }, // 导入 handleImport() { }, // 导出 handleExport() { }, // 任务创建 handleAdd() { this.$refs.taskDialog.open() setTimeout(() => { this.$refs.ruleForm.clearValidate() }, 100); }, // 关闭弹框 importClose() { this.resetForm() }, // 查看详情 goInfo(row) { getassetTaskid(row.id) this.$router.push({ name: 'TaskInfo', query: { pageType: "look", id: row.id } }) }, delInfo(row) { //taskAudit this.$router.push({ name: 'TaskInfo', query: { pageType: "info", id: row.id } }) }, // 关闭 guanbijiekou(row) { console.log(row); this.$confirm('此操作将关闭改任务, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { assetTaskclose({ taskId: row.id }).then(res => { if (res.code == 200) { this.$message({ type: 'success', message: '关闭成功!' }); this.getInfo(); } }) }).catch(() => { this.$message({ type: 'info', message: '已取消关闭' }); }); }, // 编辑 edit() { }, // 审核 // 修改table背景色 tableRowClassName({ row, rowIndex }) { if (rowIndex % 2 !== 0) { return 'evenNumber-row'; } return ''; }, // 屏幕尺寸变化 cancalDebounce() { const element = document.getElementById('L-size-main'); // 通过元素的 ID 获取元素 const header = document.getElementById('L-header'); // 通过元素的 ID 获取元素 const pagination = document.getElementById('L-pagination'); // 通过元素的 ID 获取元素 const elementHeight = element.offsetHeight; const headerHeight = header.offsetHeight; const paginationtHeight = pagination.offsetHeight; this.tabHeader = elementHeight - headerHeight - paginationtHeight - 110; } }, } </script> <style lang="scss" scoped> .el-icon-s-unfold { font-size: 16px; } // ::v-deep .el-dialog__body{ // padding-left: 80px; // } .el-icon-delete { color: #409EFF; font-size: 16px; font-weight: 600; margin-right: 5px; } </style>