From 62a19bf40e747ab986645728d65a63b927eddb6e Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期三, 09 四月 2025 09:17:54 +0800 Subject: [PATCH] * --- src/main/webapp/views/taskWrkLog/taskWrkLog.html | 531 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 348 insertions(+), 183 deletions(-) diff --git a/src/main/webapp/views/taskWrkLog/taskWrkLog.html b/src/main/webapp/views/taskWrkLog/taskWrkLog.html index f074191..800c2f9 100644 --- a/src/main/webapp/views/taskWrkLog/taskWrkLog.html +++ b/src/main/webapp/views/taskWrkLog/taskWrkLog.html @@ -1,193 +1,358 @@ <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="UTF-8"> - <title>浠诲姟绠$悊</title> - <link rel="stylesheet" href="../../static/wcs/css/element.css"> - <script type="text/javascript" src="../../static/wcs/js/jquery/jquery-3.3.1.min.js"></script> - <script type="text/javascript" src="../../static/wms/layui/layui.js"></script> - <script type="text/javascript" src="../../static/wcs/js/common.js"></script> - <script type="text/javascript" src="../../static/wcs/js/vue.min.js"></script> - <script type="text/javascript" src="../../static/wcs/js/element.js"></script> - </head> +<head> + <meta charset="UTF-8"> + <title>浠诲姟绠$悊</title> + <link rel="stylesheet" href="../../static/wcs/css/element.css"> + <script type="text/javascript" src="../../static/wcs/js/jquery/jquery-3.3.1.min.js"></script> + <script type="text/javascript" src="../../static/wms/layui/layui.js"></script> + <script type="text/javascript" src="../../static/wcs/js/common.js"></script> + <script type="text/javascript" src="../../static/wcs/js/vue.min.js"></script> + <script type="text/javascript" src="../../static/wcs/js/element.js"></script> + <script type="text/javascript" src="../../static/wcs/js/xlsx.full.min.js"></script> + <script type="text/javascript" src="../../static/wcs/js/FileSaver.min.js"></script> +</head> - <body> - <div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;"> - <div style="width: 100%;"> - <el-card class="box-card"> - <el-form :inline="true" :model="tableSearchParam" class="demo-form-inline"> - <el-form-item label=""> - <el-input v-model="tableSearchParam.task_no" placeholder="浠诲姟鍙�"></el-input> - </el-form-item> - <el-form-item label=""> - <el-input v-model="tableSearchParam.wrk_no" placeholder="宸ヤ綔鍙�"></el-input> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="getTableData">鏌ヨ</el-button> - <el-button type="primary" @click="resetParam">閲嶇疆</el-button> - </el-form-item> - </el-form> - <el-table ref="singleTable" :data="tableData" style="width: 100%;"> - <el-table-column label="鎿嶄綔" width="100"> - <template slot-scope="scope"> - <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}"> - <el-button icon="el-icon-more" size="mini" type="primary"></el-button> - <el-dropdown-menu slot="dropdown"> - <el-dropdown-item command="showCommand">鏌ョ湅鎸囦护</el-dropdown-item> - </el-dropdown-menu> - </el-dropdown> - </template> - </el-table-column> - <el-table-column property="taskNo" label="浠诲姟鍙�"> - </el-table-column> - <el-table-column property="status$" label="浠诲姟鐘舵��"> - </el-table-column> - <el-table-column property="wrkNo" label="宸ヤ綔鍙�"> - </el-table-column> - <el-table-column property="createTime$" label="鐢熸垚鏃堕棿"> - </el-table-column> - <el-table-column property="modiTime$" label="鏇存柊鏃堕棿"> - </el-table-column> - <el-table-column property="assignTime$" label="娲惧彂鏃堕棿"> - </el-table-column> - <el-table-column property="executeTime$" label="鎵ц鏃堕棿"> - </el-table-column> - <el-table-column property="completeTime$" label="瀹岀粨鏃堕棿"> - </el-table-column> - <el-table-column property="cancelTime$" label="鍙栨秷鏃堕棿"> - </el-table-column> - <el-table-column property="durationTime" label="鎸佺画鏃堕暱"> - </el-table-column> - <el-table-column property="ioType$" label="浠诲姟绫诲瀷"> - </el-table-column> - <el-table-column property="startPoint" label="璧风偣浣嶇疆"> - </el-table-column> - <el-table-column property="targetPoint" label="缁堢偣浣嶇疆"> - </el-table-column> - <el-table-column property="wrkSts$" label="宸ヤ綔鐘舵��"> - </el-table-column> - <el-table-column property="crnNo" label="鍫嗗灈鏈哄彿"> - </el-table-column> - <el-table-column property="barcode" label="鏉$爜"> - </el-table-column> - </el-table> +<body> +<div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;"> + <div style="width: 100%;"> + <el-card class="box-card"> + <el-form :inline="true" :model="tableSearchParam" class="demo-form-inline"> + <el-form-item label=""> + <el-input v-model="tableSearchParam.task_no" placeholder="浠诲姟鍙�"></el-input> + </el-form-item> + <el-form-item label=""> + <el-input v-model="tableSearchParam.wrk_no" placeholder="宸ヤ綔鍙�"></el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="getTableData">鏌ヨ</el-button> + <el-button type="primary" @click="resetParam">閲嶇疆</el-button> + <el-button type="primary" @click="exportTable">瀵煎嚭褰撳墠椤甸潰鏁版嵁</el-button> + <el-button type="primary" @click="exportTableAll">瀵煎嚭鎵�鏈�(鐐瑰嚮鍚庣瓑寰�2鍒嗛挓浠ヤ笂锛屼笉瑕侀噸澶嶇偣鍑�)</el-button> + </el-form-item> + </el-form> + <el-table ref="singleTable" :data="tableData" style="width: 100%;"> + <el-table-column label="鎿嶄綔" width="100"> + <template slot-scope="scope"> + <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}"> + <el-button icon="el-icon-more" size="mini" type="primary"></el-button> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item command="showCommand">鏌ョ湅鎸囦护</el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </template> + </el-table-column> + <el-table-column property="taskNo" label="浠诲姟鍙�"> + </el-table-column> + <el-table-column property="status$" label="浠诲姟鐘舵��"> + </el-table-column> + <el-table-column property="wrkNo" label="宸ヤ綔鍙�"> + </el-table-column> + <el-table-column property="createTime$" label="鐢熸垚鏃堕棿"> + </el-table-column> + <el-table-column property="modiTime$" label="鏇存柊鏃堕棿"> + </el-table-column> + <el-table-column property="assignTime$" label="娲惧彂鏃堕棿"> + </el-table-column> + <el-table-column property="executeTime$" label="鎵ц鏃堕棿"> + </el-table-column> + <el-table-column property="completeTime$" label="瀹岀粨鏃堕棿"> + </el-table-column> + <el-table-column property="cancelTime$" label="鍙栨秷鏃堕棿"> + </el-table-column> + <el-table-column property="durationTime" label="鎸佺画鏃堕暱"> + </el-table-column> + <el-table-column property="ioType$" label="浠诲姟绫诲瀷"> + </el-table-column> + <el-table-column property="startPoint" label="璧风偣浣嶇疆"> + </el-table-column> + <el-table-column property="targetPoint" label="缁堢偣浣嶇疆"> + </el-table-column> + <el-table-column property="wrkSts$" label="宸ヤ綔鐘舵��"> + </el-table-column> + <el-table-column property="crnNo" label="鍫嗗灈鏈哄彿"> + </el-table-column> + <el-table-column property="barcode" label="鏉$爜"> + </el-table-column> + <el-table-column property="memo" label="澶囨敞"> + </el-table-column> + </el-table> - <div style="margin-top: 10px;"> - <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="currentPage" :page-sizes="pageSizes" :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" :total="pageTotal"> - </el-pagination> - </div> - </el-card> + <div style="margin-top: 10px;"> + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" + :current-page="currentPage" :page-sizes="pageSizes" :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" :total="pageTotal"> + </el-pagination> </div> - </div> - <script> - var $layui = layui.config({ - base: baseUrl + "/static/wms/layui/lay/modules/" - }).use(['layer', 'form'], function() {}) + </el-card> + </div> +</div> +<script> + var $layui = layui.config({ + base: baseUrl + "/static/wms/layui/lay/modules/" + }).use(['layer', 'form'], function() {}) - var app = new Vue({ - el: '#app', - data: { - tableData: [], - currentPage: 1, - pageSizes: [16, 30, 50, 100, 150, 200], - pageSize: 16, - pageTotal: 0, - tableSearchParam: { - task_no: null, - status: null, - wrk_no: null - } - }, - created() { - this.init() - }, - methods: { - init() { - let taskNo = getQueryVariable('taskNo') - let wrkNo = getQueryVariable('wrkNo') - if (taskNo != false) { - this.tableSearchParam.task_no = taskNo - } - if (wrkNo != false) { - this.tableSearchParam.wrk_no = wrkNo - } - - this.getTableData() - }, - getTableData() { - let that = this; - let data = this.tableSearchParam - data.curr = this.currentPage - data.limit = this.pageSize - $.ajax({ - url: baseUrl + "/taskWrkLog/list/auth", - headers: { - 'token': localStorage.getItem('token') - }, - data: data, - dataType: 'json', - contentType: 'application/json;charset=UTF-8', - method: 'GET', - success: function(res) { - if (res.code == 200) { - that.tableData = res.data.records - that.pageTotal = res.data.total - } else if (res.code === 403) { - top.location.href = baseUrl + "/"; - } else { - that.$message({ - message: res.msg, - type: 'error' - }); - } - } - }); - }, - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉); - this.pageSize = val - this.getTableData() - }, - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`); - this.currentPage = val - this.getTableData() - }, - resetParam() { - this.tableSearchParam = { - task_no: null, - status: null, - wrk_no: null - } - this.getTableData() - }, - handleCommand(command, row) { - switch (command) { - case "showCommand": - //鏌ョ湅鎸囦护 - this.showCommand(row) - break; - } - }, - showCommand(row) { - let wrkNo = row.wrkNo == null ? "" : row.wrkNo - //鏌ョ湅鎸囦护 - $layui.layer.open({ - type: 2, - title: '鎸囦护绠$悊', - maxmin: true, - area: [top.detailWidth, top.detailHeight], - shadeClose: true, - content: 'commandManageLog.html?taskNo=' + row.taskNo + "&wrkNo=" + wrkNo, - success: function(layero, index) {} - }); - }, + var app = new Vue({ + el: '#app', + data: { + tableData: [], + tableDataAll: [], + currentPage: 1, + pageSizes: [16, 30, 50, 100, 150, 200], + pageSize: 16, + pageTotal: 0, + tableSearchParam: { + task_no: null, + status: null, + wrk_no: null + } + }, + created() { + this.init() + }, + methods: { + init() { + let taskNo = getQueryVariable('taskNo') + let wrkNo = getQueryVariable('wrkNo') + if (taskNo != false) { + this.tableSearchParam.task_no = taskNo } - }) - </script> - </body> + if (wrkNo != false) { + this.tableSearchParam.wrk_no = wrkNo + } + + this.getTableData() + }, + getTableData() { + let that = this; + let data = this.tableSearchParam + data.curr = this.currentPage + data.limit = this.pageSize + $.ajax({ + url: baseUrl + "/taskWrkLog/list/auth", + headers: { + 'token': localStorage.getItem('token') + }, + data: data, + dataType: 'json', + contentType: 'application/json;charset=UTF-8', + method: 'GET', + success: function(res) { + if (res.code == 200) { + that.tableData = res.data.records + that.pageTotal = res.data.total + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + that.$message({ + message: res.msg, + type: 'error' + }); + } + } + }); + }, + executeExportTable() { + // 1. 杩囨护鎿嶄綔鍒� + const exportData = this.tableData.map(item => { + const cloned = { ...item } + delete cloned.operation // 绉婚櫎鎿嶄綔鍒楀叧鑱斿瓧娈� + return cloned + }) + + // 2. 瀹屾暣瀛楁鏄犲皠 + const headerMap = { + taskNo: '浠诲姟鍙�', + status: 'status', + wrkNo: '宸ヤ綔鍙�', + createTime: 'createTime', + ioType: 'ioType', + ioPri: '浼樺厛绾�', + startPoint: '璧风偣浣嶇疆', + targetPoint: '缁堢偣浣嶇疆', + modiUser: 'modiUser', + modiTime: 'modiTime', + memo: '澶囨敞', + barcode: '鏉$爜', + assignTime: 'assignTime', + executeTime: 'executeTime', + completeTime: 'completeTime', + cancelTime: 'cancelTime', + wrkSts: 'wrkSts', + crnNo: '鍫嗗灈鏈哄彿', + commandStep: 'step', + transferMark: 'mark', + wrkSts$: '宸ヤ綔鐘舵��', + ioType$: '浠诲姟绫诲瀷', + status$: '浠诲姟鐘舵��', + createTime$: '鐢熸垚鏃堕棿', + modiTime$: '鏇存柊鏃堕棿', + modiUser$: '鏇存柊浜哄憳', + completeTime$: '瀹岀粨鏃堕棿', + executeTime$: '鎵ц鏃堕棿', + assignTime$: '娲惧彂鏃堕棿', + cancelTime$: '鍙栨秷鏃堕棿' + // taskNo: '浠诲姟鍙�', + // status$: '浠诲姟鐘舵��', + // wrkNo: '宸ヤ綔鍙�', + // createTime$: '鐢熸垚鏃堕棿', + // modiTime$: '鏇存柊鏃堕棿', + // assignTime$: '娲惧彂鏃堕棿', + // executeTime$: '鎵ц鏃堕棿', + // completeTime$: '瀹岀粨鏃堕棿', + // cancelTime$: '鍙栨秷鏃堕棿', + // durationTime: '鎸佺画鏃堕暱', + // ioType$: '浠诲姟绫诲瀷', + // startPoint: '璧风偣浣嶇疆', + // targetPoint: '缁堢偣浣嶇疆', + // wrkSts$: '宸ヤ綔鐘舵��', + // crnNo: '鍫嗗灈鏈哄彿', + // barcode: '鏉$爜', + // memo: '澶囨敞' + } + + // 3. 鍒涘缓宸ヤ綔琛� + const worksheet = XLSX.utils.json_to_sheet(exportData) + + // 4. 鏇挎崲琛ㄥご涓轰腑鏂� + XLSX.utils.sheet_add_aoa(worksheet, [Object.values(headerMap)], { origin: 'A1' }) + + // 5. 鐢熸垚鏂囦欢鍚嶏紙甯︽棩鏈燂級 + const fileName = `浠诲姟鍒楄〃_${new Date().toLocaleDateString().replace(/\//g, '-')}.xlsx` + + // 6. 瀵煎嚭鏂囦欢 + const workbook = XLSX.utils.book_new() + XLSX.utils.book_append_sheet(workbook, worksheet, '浠诲姟鏁版嵁') + XLSX.writeFile(workbook, fileName) + }, + executeExportTableAll() { + let that = this; + + $.ajax({ + url: baseUrl + "/taskWrkLog/export/all/auth", + headers: { + 'token': localStorage.getItem('token') + }, + dataType: 'json', + contentType: 'application/json;charset=UTF-8', + method: 'GET', + success: function(res) { + if (res.code == 200) { + that.tableDataAll = res.data.records + // 1. 杩囨护鎿嶄綔鍒� + const exportData = that.tableDataAll.map(item => { + const cloned = { ...item } + delete cloned.operation // 绉婚櫎鎿嶄綔鍒楀叧鑱斿瓧娈� + return cloned + }) + + // 2. 瀹屾暣瀛楁鏄犲皠 + const headerMap = { + taskNo: '浠诲姟鍙�', + status: '浠诲姟鐘舵��', + wrkNo: '宸ヤ綔鍙�', + createTime: 'createTime', + ioType: 'ioType', + ioPri: '浼樺厛绾�', + startPoint: '璧风偣浣嶇疆', + targetPoint: '缁堢偣浣嶇疆', + modiUser: 'modiUser', + modiTime: 'modiTime', + memo: '澶囨敞', + barcode: '鏉$爜', + assignTime: 'assignTime', + executeTime: 'executeTime', + completeTime: 'completeTime', + cancelTime: 'cancelTime', + wrkSts: 'wrkSts', + crnNo: '鍫嗗灈鏈哄彿', + commandStep: 'step', + transferMark: 'mark', + wrkSts$: '宸ヤ綔鐘舵��', + ioType$: '浠诲姟绫诲瀷', + status$: '浠诲姟鐘舵��', + createTime$: '鐢熸垚鏃堕棿', + modiTime$: '鏇存柊鏃堕棿', + modiUser$: '鏇存柊浜哄憳', + completeTime$: '瀹岀粨鏃堕棿', + executeTime$: '鎵ц鏃堕棿', + assignTime$: '娲惧彂鏃堕棿', + cancelTime$: '鍙栨秷鏃堕棿' + } + + // 3. 鍒涘缓宸ヤ綔琛� + const worksheet = XLSX.utils.json_to_sheet(exportData) + + // 4. 鏇挎崲琛ㄥご涓轰腑鏂� + XLSX.utils.sheet_add_aoa(worksheet, [Object.values(headerMap)], { origin: 'A1' }) + + // 5. 鐢熸垚鏂囦欢鍚嶏紙甯︽棩鏈燂級 + const fileName = `浠诲姟鍒楄〃_${new Date().toLocaleDateString().replace(/\//g, '-')}.xlsx` + + // 6. 瀵煎嚭鏂囦欢 + const workbook = XLSX.utils.book_new() + XLSX.utils.book_append_sheet(workbook, worksheet, '浠诲姟鏁版嵁') + XLSX.writeFile(workbook, fileName) + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + that.$message({ + message: res.msg, + type: 'error' + }); + } + } + }); + }, + handleSizeChange(val) { + console.log(`姣忛〉 ${val} 鏉); + this.pageSize = val + this.getTableData() + }, + handleCurrentChange(val) { + console.log(`褰撳墠椤�: ${val}`); + this.currentPage = val + this.getTableData() + }, + resetParam() { + this.tableSearchParam = { + task_no: null, + status: null, + wrk_no: null + } + this.getTableData() + }, + exportTable() { + this.executeExportTable() + }, + exportTableAll() { + this.executeExportTableAll() + }, + handleCommand(command, row) { + switch (command) { + case "showCommand": + //鏌ョ湅鎸囦护 + this.showCommand(row) + break; + } + }, + showCommand(row) { + let wrkNo = row.wrkNo == null ? "" : row.wrkNo + //鏌ョ湅鎸囦护 + $layui.layer.open({ + type: 2, + title: '鎸囦护绠$悊', + maxmin: true, + area: [top.detailWidth, top.detailHeight], + shadeClose: true, + content: 'commandManageLog.html?taskNo=' + row.taskNo + "&wrkNo=" + wrkNo, + success: function(layero, index) {} + }); + }, + } + }) +</script> +</body> </html> -- Gitblit v1.9.1