index.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <template>
  2. <div class="app-container">
  3. <div class="filter-container">
  4. <div class="filter-left">
  5. <div class="filter-item">操作内容:
  6. <el-input v-model="operation" placeholder="请输入操作内容" style="width: 140px"></el-input>
  7. </div>
  8. <el-button type="primary" icon="el-icon-search" size="mini" @click="getList()">搜索</el-button>
  9. <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  10. </div>
  11. </div>
  12. <!-- <el-divider></el-divider> -->
  13. <el-table
  14. :data="tableData"
  15. stripe
  16. style="width: 100%;margin-top:10px;"
  17. id="out-table"
  18. @selection-change="handleSelectionChange"
  19. :height="tableHeight"
  20. >
  21. <el-table-column prop="id" label="序号" show-overflow-tooltip></el-table-column>
  22. <el-table-column prop="operation" label="操作内容" show-overflow-tooltip> </el-table-column>
  23. <el-table-column prop="ip" label="请求ip" show-overflow-tooltip> </el-table-column>
  24. <el-table-column prop="userName" label="操作人员" show-overflow-tooltip> </el-table-column>
  25. <el-table-column prop="creatDate" label="操作时间" show-overflow-tooltip></el-table-column>
  26. </el-table>
  27. <el-pagination
  28. background
  29. @current-change="handleCurrentChange"
  30. :page-sizes="[10, 15, 20, 30]"
  31. @size-change="handleSizeChange"
  32. :current-page="current"
  33. :page-size="size"
  34. layout="sizes,prev, pager, next"
  35. :total="totalCount"
  36. >
  37. </el-pagination>
  38. </div>
  39. </template>
  40. <script>
  41. // 引入导出Excel表格依赖
  42. import FileSaver from "file-saver"
  43. import XLSX from "xlsx"
  44. import { logList } from '@/api/system/log'
  45. export default {
  46. name:"javascriptthree",
  47. data() {
  48. return {
  49. tableData: [
  50. ],
  51. //存储列表总数
  52. totalCount: 0,
  53. //存储开始页
  54. current: 1,
  55. //存储每页几条
  56. size: 15,
  57. operation:undefined,
  58. multipleSelection: [],
  59. options: [
  60. {
  61. value: "1",
  62. label: "操作人1",
  63. },
  64. {
  65. value: "2",
  66. label: "操作人2",
  67. },
  68. {
  69. value: "3",
  70. label: "操作人3",
  71. },
  72. ],
  73. value: "",
  74. input:"",
  75. dialogFormVisible: false,
  76. form: {
  77. name: "",
  78. region: "",
  79. region2: "",
  80. date1: "",
  81. date2: "",
  82. delivery: false,
  83. type: [],
  84. resource: "",
  85. desc: "",
  86. },
  87. formLabelWidth: "120px",
  88. userName:undefined,
  89. //表格自适应高度
  90. tableHeight:undefined,
  91. //日期时间选择器
  92. formDaliog: {
  93. startTime: "",
  94. endTime: "",
  95. },
  96. pickerOptions1: {
  97. disabledDate: (time) => {
  98. if (this.formDaliog.endTime) {
  99. return (
  100. time.getTime() < Date.now() - 8.64e7 ||
  101. time.getTime() > new Date(this.formDaliog.endTime).getTime()
  102. );
  103. } else {
  104. return time.getTime() < Date.now() - 8.64e7;
  105. }
  106. },
  107. },
  108. pickerOptions2: {
  109. disabledDate: (time) => {
  110. if (this.formDaliog.startTime) {
  111. return (
  112. time.getTime() < Date.now() - 8.64e7 ||
  113. time.getTime() < new Date(this.formDaliog.startTime).getTime()
  114. );
  115. } else {
  116. return time.getTime() < Date.now() - 8.64e7;
  117. }
  118. },
  119. },
  120. };
  121. },
  122. created() {
  123. this.getList();
  124. },
  125. mounted(){
  126. // table高度
  127. if(window.innerWidth <1920){
  128. this.tableHeight = window.innerHeight - 300
  129. }
  130. // 监听窗口大小变化
  131. let self = this;
  132. window.onresize = function() {
  133. self.tableHeight = window.innerHeight - 300
  134. }
  135. },
  136. methods: {
  137. /** 重置按钮操作 */
  138. resetQuery() {
  139. this.operation = undefined;
  140. this.handleQuery();
  141. },
  142. /** 搜索按钮操作 */
  143. handleQuery() {
  144. this.getList();
  145. },
  146. getList(){
  147. //获取tableData数据
  148. logList({
  149. current: this.current,
  150. size: this.size,
  151. name:this.operation}).then(Response =>{
  152. if(Response.status == "SUCCESS"){
  153. if(Response.data.pageList){
  154. this.tableData = Response.data.pageList
  155. }
  156. }
  157. })
  158. },
  159. //分页查询
  160. handleCurrentChange(val) {
  161. this.current = val;
  162. this.getData();
  163. },
  164. //改变每条数
  165. handleSizeChange(val) {
  166. this.size = val;
  167. this.getData();
  168. },
  169. //定义导出Excel表格事件
  170. exportExcel() {
  171. /* 从表生成工作簿对象 */
  172. var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"));
  173. /* 获取二进制字符串作为输出 */
  174. var wbout = XLSX.write(wb, {
  175. bookType: "xlsx",
  176. bookSST: true,
  177. type: "array",
  178. });
  179. try {
  180. FileSaver.saveAs(
  181. //Blob 对象表示一个不可变、原始数据的类文件对象。
  182. //Blob 表示的不一定是JavaScript原生格式的数据。
  183. //File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
  184. //返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
  185. new Blob([wbout], { type: "application/octet-stream" }),
  186. //设置导出文件名称
  187. "sheetjs.xlsx"
  188. );
  189. } catch (e) {
  190. if (typeof console !== "undefined") console.log(e, wbout);
  191. }
  192. return wbout;
  193. },
  194. handleEdit(index, row) {
  195. alert(index, row);
  196. },
  197. handleDelete(index, row) {
  198. this.$confirm("确定删除该单位吗?", "删除", {
  199. confirmButtonText: "确定",
  200. cancelButtonText: "取消",
  201. type: "warning",
  202. })
  203. .then(() => {
  204. this.$message({
  205. type: "success",
  206. message: "删除成功!",
  207. });
  208. this.tableData.splice(index, 1);
  209. })
  210. .catch(() => {
  211. this.$message({
  212. type: "info",
  213. message: "已取消删除",
  214. });
  215. });
  216. },
  217. batchDelete() {
  218. let multData = this.multipleSelection;
  219. let tableData = this.tableData;
  220. let multDataLen = multData.length;
  221. let tableDataLen = tableData.length;
  222. for (let i = 0; i < multDataLen; i++) {
  223. for (let y = 0; y < tableDataLen; y++) {
  224. if (JSON.stringify(tableData[y]) === JSON.stringify(multData[i])) {
  225. // 判断是否相等,相等就删除
  226. this.tableData.splice(y, 1);
  227. }
  228. }
  229. }
  230. },
  231. handleSelectionChange(val) {
  232. this.multipleSelection = val;
  233. },
  234. },
  235. };
  236. </script>