Showing
4 changed files
with
309 additions
and
178 deletions
| 1 | <template> | 1 | <template> |
| 2 | - <div class="Tables"> | 2 | + <div class="w-table" :class="{ 'w-table_moving': dragState.dragging }"> |
| 3 | <el-table | 3 | <el-table |
| 4 | :ref="tableName" | 4 | :ref="tableName" |
| 5 | :data="data" | 5 | :data="data" |
| 6 | - :headerData="headerData" | ||
| 7 | :border="border" | 6 | :border="border" |
| 8 | :stripe="stripe" | 7 | :stripe="stripe" |
| 9 | :size="size" | 8 | :size="size" |
| ... | @@ -25,24 +24,33 @@ | ... | @@ -25,24 +24,33 @@ |
| 25 | @select-change="SelectChange" | 24 | @select-change="SelectChange" |
| 26 | > | 25 | > |
| 27 | <el-table-column | 26 | <el-table-column |
| 28 | - v-for="(item, index) in headerData" | 27 | + v-for="(item, index) in newHeader" |
| 29 | - :column-key="item.value" | ||
| 30 | :type="item.type" | 28 | :type="item.type" |
| 31 | :prop="item.value" | 29 | :prop="item.value" |
| 32 | :label="item.name" | 30 | :label="item.name" |
| 33 | :width="item.width" | 31 | :width="item.width" |
| 34 | :align="item.align" | 32 | :align="item.align" |
| 35 | :fixed="item.fixed" | 33 | :fixed="item.fixed" |
| 34 | + :column-key="index.toString()" | ||
| 36 | :show-overflow-tooltip="showOverflowTooltip" | 35 | :show-overflow-tooltip="showOverflowTooltip" |
| 37 | :sortable="item.sorTable" | 36 | :sortable="item.sorTable" |
| 38 | :formatter="formatter" | 37 | :formatter="formatter" |
| 39 | header-align="center" | 38 | header-align="center" |
| 40 | :sort-orders="['descending', 'ascending', null]" | 39 | :sort-orders="['descending', 'ascending', null]" |
| 41 | :slotHeader="slotHeader" | 40 | :slotHeader="slotHeader" |
| 41 | + :render-header="renderHeader" | ||
| 42 | :key="index" | 42 | :key="index" |
| 43 | + v-if="item.disabled" | ||
| 43 | > | 44 | > |
| 44 | - <!-- <template v-if="item.slot" slot-scope=""> | 45 | + <!-- <template slot-scope="scope"> |
| 45 | - <Item :dom="item.slot" @change="itemChange"></Item> | 46 | + <exSlot |
| 47 | + v-if="item.render" | ||
| 48 | + :render="item.render" | ||
| 49 | + :row="scope.row" | ||
| 50 | + :index="scope.$index" | ||
| 51 | + :column="item" | ||
| 52 | + ></exSlot> | ||
| 53 | + <span v-else>{{ scope.row[item.value] || "" }}</span> | ||
| 46 | </template> --> | 54 | </template> --> |
| 47 | </el-table-column> | 55 | </el-table-column> |
| 48 | <slot></slot> | 56 | <slot></slot> |
| ... | @@ -52,41 +60,87 @@ | ... | @@ -52,41 +60,87 @@ |
| 52 | :page-size.sync="limitSize" | 60 | :page-size.sync="limitSize" |
| 53 | :current-page.sync="pageNum" | 61 | :current-page.sync="pageNum" |
| 54 | background | 62 | background |
| 55 | - layout="prev, pager, next, jumper, ->, total, slot" | 63 | + layout="prev, pager, next, jumper, ->, sizes, total" |
| 56 | class="tablePagination" | 64 | class="tablePagination" |
| 65 | + @size-change="sizeChange" | ||
| 57 | @next-click="nextClick" | 66 | @next-click="nextClick" |
| 58 | @prev-click="prevClick" | 67 | @prev-click="prevClick" |
| 59 | @current-change="currentChange" | 68 | @current-change="currentChange" |
| 60 | > | 69 | > |
| 61 | </el-pagination> | 70 | </el-pagination> |
| 62 | - <!-- <infoTable | 71 | + <div class="tableInfo" v-if="infoShow"> |
| 63 | - v-bind="$attrs" | 72 | + <ul class="tableList" v-show="show"> |
| 64 | - @checkChange="checkChange" | 73 | + <el-checkbox-group v-model="checkDisabled"> |
| 65 | - @top="top" | 74 | + <li |
| 66 | - @bottom="bottom" | 75 | + class="flexList" |
| 67 | - ></infoTable> --> | 76 | + v-for="(item, index) in newHeader" |
| 77 | + :key="index" | ||
| 78 | + v-if="!item.type" | ||
| 79 | + :title="item.name" | ||
| 80 | + > | ||
| 81 | + <div> | ||
| 82 | + <el-checkbox | ||
| 83 | + :label="item.name" | ||
| 84 | + @change="newHeader[index].disabled = !item.disabled" | ||
| 85 | + >{{ item.name }}</el-checkbox | ||
| 86 | + > | ||
| 87 | + </div> | ||
| 88 | + </li> | ||
| 89 | + </el-checkbox-group> | ||
| 90 | + </ul> | ||
| 91 | + <el-button | ||
| 92 | + type="primary" | ||
| 93 | + icon="el-icon-edit" | ||
| 94 | + size="medium" | ||
| 95 | + circle | ||
| 96 | + @click="show = !show" | ||
| 97 | + ></el-button> | ||
| 98 | + </div> | ||
| 68 | </div> | 99 | </div> |
| 69 | </template> | 100 | </template> |
| 70 | 101 | ||
| 71 | <script> | 102 | <script> |
| 72 | -// import infoTable from "./info.vue"; | 103 | +let exSlot = { |
| 73 | -import Item from "./item.vue"; | 104 | + fucntional: true, |
| 105 | + props: { | ||
| 106 | + row: Object, | ||
| 107 | + render: Function, | ||
| 108 | + index: [Number, String], | ||
| 109 | + column: { | ||
| 110 | + type: Object, | ||
| 111 | + default: null, | ||
| 112 | + }, | ||
| 113 | + }, | ||
| 114 | + render: (h, data) => { | ||
| 115 | + console.log(data); | ||
| 116 | + if (data) { | ||
| 117 | + const params = { | ||
| 118 | + row: data.props.row, | ||
| 119 | + index: data.props.index, | ||
| 120 | + }; | ||
| 121 | + if (data.props.column) params.column = data.props.column; | ||
| 122 | + return data.props.render(h, params); | ||
| 123 | + } | ||
| 124 | + }, | ||
| 125 | +}; | ||
| 74 | import dictLabels from "../../assets/languages/dictLabels.js"; | 126 | import dictLabels from "../../assets/languages/dictLabels.js"; |
| 75 | import { scrollTo } from "@/utils/scroll-to"; | 127 | import { scrollTo } from "@/utils/scroll-to"; |
| 76 | export default { | 128 | export default { |
| 77 | name: "Table", | 129 | name: "Table", |
| 78 | components: { | 130 | components: { |
| 79 | - // infoTable, | 131 | + exSlot, |
| 80 | - Item, | ||
| 81 | }, | 132 | }, |
| 82 | props: { | 133 | props: { |
| 134 | + //dom名称 | ||
| 83 | tableName: { type: String, default: "tables" }, | 135 | tableName: { type: String, default: "tables" }, |
| 136 | + //表格数据 | ||
| 84 | data: { | 137 | data: { |
| 85 | type: Array, | 138 | type: Array, |
| 86 | default() { | 139 | default() { |
| 87 | return []; | 140 | return []; |
| 88 | }, | 141 | }, |
| 89 | }, | 142 | }, |
| 143 | + //表头数据 | ||
| 90 | headerData: { | 144 | headerData: { |
| 91 | type: Array, | 145 | type: Array, |
| 92 | default: null, | 146 | default: null, |
| ... | @@ -104,7 +158,7 @@ export default { | ... | @@ -104,7 +158,7 @@ export default { |
| 104 | default: "mini", | 158 | default: "mini", |
| 105 | }, | 159 | }, |
| 106 | height: { | 160 | height: { |
| 107 | - type: [String, Number], | 161 | + type: [String,Number], |
| 108 | default: "400", | 162 | default: "400", |
| 109 | }, | 163 | }, |
| 110 | fit: { | 164 | fit: { |
| ... | @@ -143,18 +197,26 @@ export default { | ... | @@ -143,18 +197,26 @@ export default { |
| 143 | type: Boolean, | 197 | type: Boolean, |
| 144 | default: true, | 198 | default: true, |
| 145 | }, | 199 | }, |
| 200 | + //shift键状态 | ||
| 146 | shiftKey: { | 201 | shiftKey: { |
| 147 | type: Boolean, | 202 | type: Boolean, |
| 148 | default: false, | 203 | default: false, |
| 149 | }, | 204 | }, |
| 205 | + //页数 | ||
| 150 | page: { | 206 | page: { |
| 151 | type: Number, | 207 | type: Number, |
| 152 | default: 1, | 208 | default: 1, |
| 153 | }, | 209 | }, |
| 210 | + // pageSizes:{ | ||
| 211 | + // type:Array, | ||
| 212 | + // default:[10, 20, 30, 40, 50, 100] | ||
| 213 | + // }, | ||
| 214 | + //每页长度 | ||
| 154 | limitSize: { | 215 | limitSize: { |
| 155 | type: Number, | 216 | type: Number, |
| 156 | default: 20, | 217 | default: 20, |
| 157 | }, | 218 | }, |
| 219 | + //开始位置 | ||
| 158 | limitStart: { | 220 | limitStart: { |
| 159 | type: Number, | 221 | type: Number, |
| 160 | default: 0, | 222 | default: 0, |
| ... | @@ -167,6 +229,7 @@ export default { | ... | @@ -167,6 +229,7 @@ export default { |
| 167 | type: Number, | 229 | type: Number, |
| 168 | default: 20, | 230 | default: 20, |
| 169 | }, | 231 | }, |
| 232 | + //总数量 | ||
| 170 | totalCount: { | 233 | totalCount: { |
| 171 | type: Number, | 234 | type: Number, |
| 172 | default: 0, | 235 | default: 0, |
| ... | @@ -179,28 +242,43 @@ export default { | ... | @@ -179,28 +242,43 @@ export default { |
| 179 | type: Boolean, | 242 | type: Boolean, |
| 180 | default: false, | 243 | default: false, |
| 181 | }, | 244 | }, |
| 245 | + infoShow:{ | ||
| 246 | + type:Boolean, | ||
| 247 | + default:false, | ||
| 248 | + } | ||
| 182 | }, | 249 | }, |
| 183 | inheritAttrs: false, | 250 | inheritAttrs: false, |
| 184 | data() { | 251 | data() { |
| 185 | return { | 252 | return { |
| 186 | - newHeader: [], | 253 | + newHeader: this.headerData, |
| 187 | selectTable: [], | 254 | selectTable: [], |
| 255 | + checkDisabled: [], | ||
| 188 | pageNum: 1, | 256 | pageNum: 1, |
| 189 | start: -1, | 257 | start: -1, |
| 258 | + show: false, | ||
| 259 | + dragState: { | ||
| 260 | + start: -9, // 起始元素的 index | ||
| 261 | + end: -9, // 移动鼠标时所覆盖的元素 index | ||
| 262 | + dragging: false, // 是否正在拖动 | ||
| 263 | + direction: undefined, // 拖动方向 | ||
| 264 | + }, | ||
| 265 | + //表头数据格式 | ||
| 190 | // { | 266 | // { |
| 191 | - // type: "selection", | 267 | + // type: "", |
| 192 | // name: "", | 268 | // name: "", |
| 193 | // value: "", | 269 | // value: "", |
| 194 | - // slot: null, | ||
| 195 | // width: "", | 270 | // width: "", |
| 196 | // align: "center", | 271 | // align: "center", |
| 197 | // sorTable: false, | 272 | // sorTable: false, |
| 198 | // fixed:false, | 273 | // fixed:false, |
| 274 | + // disabled:true, | ||
| 199 | // }, | 275 | // }, |
| 200 | }; | 276 | }; |
| 201 | }, | 277 | }, |
| 202 | created() { | 278 | created() { |
| 203 | - this.newHeader = this.headerData; | 279 | + this.newHeader.map((item) => { |
| 280 | + this.checkDisabled.push(item.name); | ||
| 281 | + }); | ||
| 204 | }, | 282 | }, |
| 205 | watch: { | 283 | watch: { |
| 206 | page() { | 284 | page() { |
| ... | @@ -214,9 +292,15 @@ export default { | ... | @@ -214,9 +292,15 @@ export default { |
| 214 | this.$refs.tables.doLayout() | 292 | this.$refs.tables.doLayout() |
| 215 | }) | 293 | }) |
| 216 | }, | 294 | }, |
| 295 | + headerData(val, oldVal) { | ||
| 296 | + this.newHeader = val; | ||
| 297 | + }, | ||
| 217 | }, | 298 | }, |
| 218 | - mounted() {}, | ||
| 219 | methods: { | 299 | methods: { |
| 300 | + sizeChange(val){ | ||
| 301 | + this.$emit("sizeChange",val) | ||
| 302 | + }, | ||
| 303 | + //下一页 | ||
| 220 | nextClick() { | 304 | nextClick() { |
| 221 | this.$emit("currentChange", { | 305 | this.$emit("currentChange", { |
| 222 | page: this.pageNum + 1, | 306 | page: this.pageNum + 1, |
| ... | @@ -224,6 +308,7 @@ export default { | ... | @@ -224,6 +308,7 @@ export default { |
| 224 | }); | 308 | }); |
| 225 | scrollTo(0, 800); | 309 | scrollTo(0, 800); |
| 226 | }, | 310 | }, |
| 311 | + //上一页 | ||
| 227 | prevClick() { | 312 | prevClick() { |
| 228 | this.$emit("currentChange", { | 313 | this.$emit("currentChange", { |
| 229 | page: this.pageNum - 1, | 314 | page: this.pageNum - 1, |
| ... | @@ -231,6 +316,7 @@ export default { | ... | @@ -231,6 +316,7 @@ export default { |
| 231 | }); | 316 | }); |
| 232 | scrollTo(0, 800); | 317 | scrollTo(0, 800); |
| 233 | }, | 318 | }, |
| 319 | + //某页 | ||
| 234 | currentChange(val) { | 320 | currentChange(val) { |
| 235 | this.$emit("currentChange", { | 321 | this.$emit("currentChange", { |
| 236 | page: val, | 322 | page: val, |
| ... | @@ -238,6 +324,7 @@ export default { | ... | @@ -238,6 +324,7 @@ export default { |
| 238 | }); | 324 | }); |
| 239 | scrollTo(0, 800); | 325 | scrollTo(0, 800); |
| 240 | }, | 326 | }, |
| 327 | + //表格多选,shift连续选择 | ||
| 241 | tableSelect(selection, row) { | 328 | tableSelect(selection, row) { |
| 242 | let end = row.index; | 329 | let end = row.index; |
| 243 | if (this.shiftKey) { | 330 | if (this.shiftKey) { |
| ... | @@ -285,18 +372,23 @@ export default { | ... | @@ -285,18 +372,23 @@ export default { |
| 285 | selection = this.selectTable.sort(this.compare("index", "ascending")); | 372 | selection = this.selectTable.sort(this.compare("index", "ascending")); |
| 286 | this.$emit("tableSelect", { selection, row }); | 373 | this.$emit("tableSelect", { selection, row }); |
| 287 | }, | 374 | }, |
| 375 | + //表格全选 | ||
| 288 | tableSelectAll(selection) { | 376 | tableSelectAll(selection) { |
| 289 | this.selectTable = selection; | 377 | this.selectTable = selection; |
| 290 | this.$emit("tableSelectAll", selection); | 378 | this.$emit("tableSelectAll", selection); |
| 291 | }, | 379 | }, |
| 380 | + //多选框改变 | ||
| 292 | SelectChange(selection) { | 381 | SelectChange(selection) { |
| 293 | this.$emit("SelectChange", selection); | 382 | this.$emit("SelectChange", selection); |
| 294 | }, | 383 | }, |
| 384 | + //表格选择清空 | ||
| 295 | clearTable() { | 385 | clearTable() { |
| 296 | this.selectTable = []; | 386 | this.selectTable = []; |
| 297 | this.$refs.tables.clearSelection(); | 387 | this.$refs.tables.clearSelection(); |
| 298 | }, | 388 | }, |
| 389 | + //排序 | ||
| 299 | sortChange({ column, prop, order }) { | 390 | sortChange({ column, prop, order }) { |
| 391 | + this.selectTable = []; | ||
| 300 | this.$emit("sortChange", { prop: prop, order: order }); | 392 | this.$emit("sortChange", { prop: prop, order: order }); |
| 301 | }, | 393 | }, |
| 302 | compare(propertyName, sort) { | 394 | compare(propertyName, sort) { |
| ... | @@ -315,6 +407,105 @@ export default { | ... | @@ -315,6 +407,105 @@ export default { |
| 315 | } | 407 | } |
| 316 | }; | 408 | }; |
| 317 | }, | 409 | }, |
| 410 | + //自定义表头 | ||
| 411 | + renderHeader(createElement, { column }) { | ||
| 412 | + return createElement( | ||
| 413 | + "div", | ||
| 414 | + { | ||
| 415 | + class: ["thead-cell"], | ||
| 416 | + // on: { | ||
| 417 | + // mousedown: ($event) => { | ||
| 418 | + // this.handleMouseDown($event, column); | ||
| 419 | + // }, | ||
| 420 | + // mousemove: ($event) => { | ||
| 421 | + // this.handleMouseMove($event, column); | ||
| 422 | + // }, | ||
| 423 | + // }, | ||
| 424 | + }, | ||
| 425 | + [ | ||
| 426 | + // 添加 <a> 用于显示表头 label | ||
| 427 | + createElement("a", column.label), | ||
| 428 | + // 添加一个空标签用于显示拖动动画 | ||
| 429 | + createElement("span", { | ||
| 430 | + class: ["virtual"], | ||
| 431 | + }), | ||
| 432 | + ] | ||
| 433 | + ); | ||
| 434 | + }, | ||
| 435 | + | ||
| 436 | + // 按下鼠标开始拖动 | ||
| 437 | + // handleMouseDown(e, column) { | ||
| 438 | + // this.dragState.dragging = true; | ||
| 439 | + // this.dragState.start = parseInt(column.columnKey); | ||
| 440 | + // // 给拖动时的虚拟容器添加宽高 | ||
| 441 | + // let table = document.getElementsByClassName("w-table")[0]; | ||
| 442 | + // let virtual = document.getElementsByClassName("virtual"); | ||
| 443 | + // for (let item of virtual) { | ||
| 444 | + // item.style.height = table.clientHeight - 1 + "px"; | ||
| 445 | + // item.style.width = item.parentElement.parentElement.clientWidth + "px"; | ||
| 446 | + // } | ||
| 447 | + // document.addEventListener("mouseup", this.handleMouseUp); | ||
| 448 | + // }, | ||
| 449 | + | ||
| 450 | + // 鼠标放开结束拖动 | ||
| 451 | + // handleMouseUp() { | ||
| 452 | + // this.dragColumn(this.dragState); | ||
| 453 | + // // 初始化拖动状态 | ||
| 454 | + // this.dragState = { | ||
| 455 | + // start: -9, | ||
| 456 | + // end: -9, | ||
| 457 | + // dragging: false, | ||
| 458 | + // direction: undefined, | ||
| 459 | + // }; | ||
| 460 | + // document.removeEventListener("mouseup", this.handleMouseUp); | ||
| 461 | + // }, | ||
| 462 | + | ||
| 463 | + // 拖动中 | ||
| 464 | + // handleMouseMove(e, column) { | ||
| 465 | + // if (this.dragState.dragging) { | ||
| 466 | + // let index = parseInt(column.columnKey); // 记录起始列 | ||
| 467 | + // if (index - this.dragState.start !== 0) { | ||
| 468 | + // this.dragState.direction = | ||
| 469 | + // index - this.dragState.start < 0 ? "left" : "right"; // 判断拖动方向 | ||
| 470 | + // this.dragState.end = parseInt(column.columnKey); | ||
| 471 | + // } else { | ||
| 472 | + // this.dragState.direction = undefined; | ||
| 473 | + // } | ||
| 474 | + // } else { | ||
| 475 | + // return false; | ||
| 476 | + // } | ||
| 477 | + // }, | ||
| 478 | + | ||
| 479 | + // 拖动易位 | ||
| 480 | + // dragColumn({ start, end, direction }) { | ||
| 481 | + // let tempData = []; | ||
| 482 | + // let left = direction === "left"; | ||
| 483 | + // let min = left ? end : start - 1; | ||
| 484 | + // let max = left ? start + 1 : end; | ||
| 485 | + // for (let i = 0; i < this.newHeader.length; i++) { | ||
| 486 | + // if (i === end) { | ||
| 487 | + // tempData.push(this.newHeader[start]); | ||
| 488 | + // } else if (i > min && i < max) { | ||
| 489 | + // tempData.push(this.newHeader[left ? i - 1 : i + 1]); | ||
| 490 | + // } else { | ||
| 491 | + // tempData.push(this.newHeader[i]); | ||
| 492 | + // } | ||
| 493 | + // } | ||
| 494 | + // this.newHeader = tempData; | ||
| 495 | + // }, | ||
| 496 | + // headerCellClassName({ column, columnIndex }) { | ||
| 497 | + // let active = | ||
| 498 | + // columnIndex - 1 === this.dragState.end | ||
| 499 | + // ? `darg_active_${this.dragState.direction}` | ||
| 500 | + // : ""; | ||
| 501 | + // let start = columnIndex - 1 === this.dragState.start ? `darg_start` : ""; | ||
| 502 | + // return `${active} ${start}`; | ||
| 503 | + // }, | ||
| 504 | + | ||
| 505 | + // cellClassName({ column, columnIndex }) { | ||
| 506 | + // return columnIndex - 1 === this.dragState.start ? `darg_start` : ""; | ||
| 507 | + // }, | ||
| 508 | + //数据格式化 | ||
| 318 | formatter(row, column, cellValue, index) { | 509 | formatter(row, column, cellValue, index) { |
| 319 | if (dictLabels[column.property]) { | 510 | if (dictLabels[column.property]) { |
| 320 | if (dictLabels[column.property][cellValue]) { | 511 | if (dictLabels[column.property][cellValue]) { |
| ... | @@ -330,14 +521,104 @@ export default { | ... | @@ -330,14 +521,104 @@ export default { |
| 330 | }; | 521 | }; |
| 331 | </script> | 522 | </script> |
| 332 | 523 | ||
| 333 | -<style> | 524 | +<style lang="scss"> |
| 334 | -.Tables { | ||
| 335 | - width: 100%; | ||
| 336 | - margin-top: 20px; | ||
| 337 | -} | ||
| 338 | .tablePagination { | 525 | .tablePagination { |
| 339 | margin-top: 40px; | 526 | margin-top: 40px; |
| 340 | text-align: right; | 527 | text-align: right; |
| 341 | } | 528 | } |
| 529 | +.w-table { | ||
| 530 | + height:100%; | ||
| 531 | + .el-table .darg_start { | ||
| 532 | + background-color: #f3f3f3; | ||
| 533 | + } | ||
| 534 | + .el-table th { | ||
| 535 | + padding: 0; | ||
| 536 | + .virtual { | ||
| 537 | + position: absolute; | ||
| 538 | + display: block; | ||
| 539 | + width: 0; | ||
| 540 | + height: 0; | ||
| 541 | + top: 0px; | ||
| 542 | + left: 0px; | ||
| 543 | + background: none; | ||
| 544 | + border: none; | ||
| 545 | + } | ||
| 546 | + &.darg_active_left { | ||
| 547 | + .virtual { | ||
| 548 | + border-left: 2px dotted #666; | ||
| 549 | + z-index: 99; | ||
| 550 | + } | ||
| 551 | + } | ||
| 552 | + &.darg_active_right { | ||
| 553 | + .virtual { | ||
| 554 | + border-right: 2px dotted #666; | ||
| 555 | + z-index: 99; | ||
| 556 | + } | ||
| 557 | + } | ||
| 558 | + } | ||
| 559 | + .thead-cell { | ||
| 560 | + padding: 0; | ||
| 561 | + display: inline-flex; | ||
| 562 | + flex-direction: column; | ||
| 563 | + align-items: left; | ||
| 564 | + cursor: pointer; | ||
| 565 | + overflow: initial; | ||
| 566 | + &:before { | ||
| 567 | + content: ""; | ||
| 568 | + position: absolute; | ||
| 569 | + top: 0; | ||
| 570 | + left: 0; | ||
| 571 | + bottom: 0; | ||
| 572 | + right: 0; | ||
| 573 | + } | ||
| 574 | + } | ||
| 575 | + &.w-table_moving { | ||
| 576 | + .el-table th .thead-cell { | ||
| 577 | + cursor: move !important; | ||
| 578 | + } | ||
| 579 | + .el-table__fixed { | ||
| 580 | + cursor: not-allowed; | ||
| 581 | + } | ||
| 582 | + } | ||
| 583 | +} | ||
| 584 | +.tableInfo { | ||
| 585 | + position: fixed; | ||
| 586 | + right: 30px; | ||
| 587 | + bottom: 100px; | ||
| 588 | + z-index: 99999999; | ||
| 589 | +} | ||
| 590 | +.tableList { | ||
| 591 | + width: 200px; | ||
| 592 | + max-height: 500px; | ||
| 593 | + padding: 5px; | ||
| 594 | + margin: 0; | ||
| 595 | + position: absolute; | ||
| 596 | + bottom: 35px; | ||
| 597 | + right: 0px; | ||
| 598 | + border: 1px solid #ccc; | ||
| 599 | + border-radius: 3%; | ||
| 600 | + background: #fff; | ||
| 601 | + overflow-y: scroll; | ||
| 602 | +} | ||
| 603 | +.tableList::-webkit-scrollbar { | ||
| 604 | + width: 4px; | ||
| 605 | + height: 4px; | ||
| 606 | +} | ||
| 607 | +.tableList::-webkit-scrollbar-thumb { | ||
| 608 | + border-radius: 10px; | ||
| 609 | + -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); | ||
| 610 | + background: rgba(0, 0, 0, 0.2); | ||
| 611 | +} | ||
| 612 | +.tableList::-webkit-scrollbar-track { | ||
| 613 | + -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); | ||
| 614 | + border-radius: 0; | ||
| 615 | + background: rgba(0, 0, 0, 0.2); | ||
| 616 | +} | ||
| 617 | +.flexList { | ||
| 618 | + width: 100%; | ||
| 619 | + display: flex; | ||
| 620 | + height: 20px; | ||
| 621 | + line-height: 20px; | ||
| 622 | +} | ||
| 342 | </style> | 623 | </style> |
| 343 | 624 | ... | ... |
src/components/Table/info.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <div class="tableInfo"> | ||
| 3 | - <el-dropdown trigger="click" :hide-on-click="false"> | ||
| 4 | - <el-button | ||
| 5 | - type="primary" | ||
| 6 | - icon="el-icon-edit" | ||
| 7 | - size="medium" | ||
| 8 | - circle | ||
| 9 | - ></el-button> | ||
| 10 | - <el-dropdown-menu slot="dropdown"> | ||
| 11 | - <el-checkbox-group v-model="checkList"> | ||
| 12 | - <el-dropdown-item | ||
| 13 | - v-for="(item, index) in infoData" | ||
| 14 | - :key="index" | ||
| 15 | - v-if="!item.type" | ||
| 16 | - class="dropItem" | ||
| 17 | - > | ||
| 18 | - <el-checkbox | ||
| 19 | - :label="item.name" | ||
| 20 | - :checked="true" | ||
| 21 | - @change="checkChange" | ||
| 22 | - ></el-checkbox> | ||
| 23 | - <span class="itemRight"> | ||
| 24 | - <i class="el-icon-caret-top" @click.stop="top(index)"></i> | ||
| 25 | - <i class="el-icon-caret-bottom" @click.stop="bottom(index)"></i> | ||
| 26 | - </span> | ||
| 27 | - </el-dropdown-item> | ||
| 28 | - </el-checkbox-group> | ||
| 29 | - </el-dropdown-menu> | ||
| 30 | - </el-dropdown> | ||
| 31 | - </div> | ||
| 32 | -</template> | ||
| 33 | - | ||
| 34 | -<script> | ||
| 35 | -export default { | ||
| 36 | - props: { infoData: { type: Array, default: null } }, | ||
| 37 | - inheritAttrs: false, | ||
| 38 | - data() { | ||
| 39 | - return { | ||
| 40 | - checkList: [], | ||
| 41 | - }; | ||
| 42 | - }, | ||
| 43 | - methods: { | ||
| 44 | - checkChange(val) { | ||
| 45 | - this.$emit("checkChange", { type: val }); | ||
| 46 | - }, | ||
| 47 | - top(val) { | ||
| 48 | - this.$emit("top", val); | ||
| 49 | - }, | ||
| 50 | - bottom(val) { | ||
| 51 | - this.$emit("bottom", val); | ||
| 52 | - }, | ||
| 53 | - }, | ||
| 54 | - created() {}, | ||
| 55 | -}; | ||
| 56 | -</script> | ||
| 57 | - | ||
| 58 | -<style scope lang="scss"> | ||
| 59 | -.itemRight { | ||
| 60 | - display: -webkit-inline-box; | ||
| 61 | - display: -ms-inline-flexbox; | ||
| 62 | - display: inline-flex; | ||
| 63 | - -webkit-box-orient: vertical; | ||
| 64 | - -webkit-box-direction: normal; | ||
| 65 | - -ms-flex-direction: column; | ||
| 66 | - flex-direction: column; | ||
| 67 | - -webkit-box-align: center; | ||
| 68 | - -ms-flex-align: center; | ||
| 69 | - align-items: center; | ||
| 70 | - height: 34px; | ||
| 71 | - width: 24px; | ||
| 72 | - vertical-align: middle; | ||
| 73 | - cursor: pointer; | ||
| 74 | - overflow: initial; | ||
| 75 | - position: relative; | ||
| 76 | - .el-icon-caret-bottom, | ||
| 77 | - .el-icon-caret-top { | ||
| 78 | - width: 0; | ||
| 79 | - height: 0; | ||
| 80 | - border: solid 5px transparent; | ||
| 81 | - position: absolute; | ||
| 82 | - left: 10px; | ||
| 83 | - } | ||
| 84 | - .el-icon-caret-bottom { | ||
| 85 | - bottom: 12px; | ||
| 86 | - } | ||
| 87 | - .el-icon-caret-top { | ||
| 88 | - top: 5px; | ||
| 89 | - } | ||
| 90 | -} | ||
| 91 | -.dropItem { | ||
| 92 | - display: flex; | ||
| 93 | - justify-content: space-between; | ||
| 94 | -} | ||
| 95 | -</style> | ||
| 96 | - | ||
| 97 | -<style> | ||
| 98 | -.tableInfo { | ||
| 99 | - position: fixed; | ||
| 100 | - right: 30px; | ||
| 101 | - bottom: 40px; | ||
| 102 | - z-index: 99999999; | ||
| 103 | -} | ||
| 104 | -</style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
src/components/Table/item.vue
deleted
100644 → 0
| 1 | -<script> | ||
| 2 | -export default { | ||
| 3 | - name: "Item", | ||
| 4 | - inheritAttrs: false, | ||
| 5 | - props: { | ||
| 6 | - dom: { | ||
| 7 | - type: Object, | ||
| 8 | - default: null, | ||
| 9 | - }, | ||
| 10 | - }, | ||
| 11 | - render() { | ||
| 12 | - let newDom = []; | ||
| 13 | - newDom.push(this.dom); | ||
| 14 | - return newDom; | ||
| 15 | - }, | ||
| 16 | - methods: { | ||
| 17 | - change(val){ | ||
| 18 | - this.$emit('change',val) | ||
| 19 | - } | ||
| 20 | - }, | ||
| 21 | -}; | ||
| 22 | -</script> |
| ... | @@ -138,8 +138,6 @@ | ... | @@ -138,8 +138,6 @@ |
| 138 | v-hasPermi="['base:flightInfo:close']" | 138 | v-hasPermi="['base:flightInfo:close']" |
| 139 | >自动配舱关闭</el-button | 139 | >自动配舱关闭</el-button |
| 140 | > | 140 | > |
| 141 | - <!-- <el-button type="primary" icon="el-icon-circle-check" size="mini">自动推送开启</el-button> | ||
| 142 | - <el-button type="primary" icon="el-icon-circle-close" size="mini">自动推送关闭</el-button> --> | ||
| 143 | </el-form> | 141 | </el-form> |
| 144 | <Tables | 142 | <Tables |
| 145 | ref="flightInfoTable" | 143 | ref="flightInfoTable" |
| ... | @@ -222,18 +220,6 @@ | ... | @@ -222,18 +220,6 @@ |
| 222 | </el-date-picker> | 220 | </el-date-picker> |
| 223 | </el-form-item> | 221 | </el-form-item> |
| 224 | </el-col> | 222 | </el-col> |
| 225 | - <!-- <el-col :span="12"> | ||
| 226 | - <el-form-item label="cutOff时间" prop="cutOffTime"> | ||
| 227 | - <el-select v-model="form.cutOffTime" clearable placeholder="选择时间" type="string"> | ||
| 228 | - <el-option | ||
| 229 | - v-for="item in selectOption.cutOffTime" | ||
| 230 | - :key="item" | ||
| 231 | - :label="item" | ||
| 232 | - :value="item"> | ||
| 233 | - </el-option> | ||
| 234 | - </el-select> | ||
| 235 | - </el-form-item> | ||
| 236 | - </el-col> --> | ||
| 237 | <el-col :span="12"> | 223 | <el-col :span="12"> |
| 238 | <el-form-item label="航班路线" prop="route"> | 224 | <el-form-item label="航班路线" prop="route"> |
| 239 | <el-input | 225 | <el-input |
| ... | @@ -536,16 +522,6 @@ export default { | ... | @@ -536,16 +522,6 @@ export default { |
| 536 | fixed: false, | 522 | fixed: false, |
| 537 | disabled: true, | 523 | disabled: true, |
| 538 | }, | 524 | }, |
| 539 | - // { | ||
| 540 | - // type: "", | ||
| 541 | - // name: "cutOff时间", | ||
| 542 | - // value: "cutOffTime", | ||
| 543 | - // width: "110", | ||
| 544 | - // align: "center", | ||
| 545 | - // sorTable: false, | ||
| 546 | - // fixed: false, | ||
| 547 | - // disabled:true | ||
| 548 | - // }, | ||
| 549 | { | 525 | { |
| 550 | type: "", | 526 | type: "", |
| 551 | name: "航班号", | 527 | name: "航班号", | ... | ... |
-
Please register or login to post a comment