<template> <el-container style="padding:0px;" :style="{height:currentHeight-65+'px'}"> <el-header style='height:42px;line-height:42px;border: 1px solid rgba(195, 195, 195, 1);background: #f4f4f4;'> <span class="title-bold title-left-color">发卡查询</span> <el-popover placement="bottom" width="150"> <el-button slot="reference" size='mini' type="primary" icon="el-icon-s-tools" style='float:right;transform:translateY(6px)'> 筛选</el-button> <el-checkbox-group v-model="checkList"> <el-col :span="24"> <el-checkbox v-for="(item,index) in tableHeader" :label="item" :key="index"> {{item.label}} </el-checkbox> </el-col> </el-checkbox-group> </el-popover> </el-header> <el-main class="box_main"> <el-card> <div class="tableCard"> <el-form ref="form" :inline="true" :model="dataForm" size="mini"> <el-form-item label=""> <el-input v-model="dataForm.name" placeholder="请输入姓名、卡序列号" clearable></el-input> </el-form-item> <!-- <el-form-item label="卡序列号:"> <el-input v-model="dataForm.serialNumber" placeholder="请输入内容"></el-input> </el-form-item> <el-form-item label="工号:"> <el-input v-model="dataForm.jobNumber " placeholder="请输入内容"></el-input> </el-form-item> --> <el-button @click="getDataList()" type="primary" size="mini" icon="el-icon-search">查询</el-button> <el-button @click="resetClick()" type="primary" size="mini" icon="el-icon-refresh-right">重置</el-button> <el-button v-if="isAuth('access:card:export')" type="primary" @click="exportData()" v-loading.fullscreen.lock="fullscreenLoading" size="mini" icon="el-icon-download">导出excel</el-button> <el-button v-if="isAuth('access:card:synchronization')" type="primary" @click="syncClick()" style="float:right" size="mini">发卡同步</el-button> <!-- <el-button type="primary" @click="sortClick(1)" style="float:right" size="mini">按姓名排序</el-button> <el-button type="primary" @click="sortClick(2)" style="float:right" size="mini">按部门排序</el-button> --> </el-form> <drag-table :data="dataList" :header="checkList" :option="tableOption" @getDataList="getDataList" v-loading="dataListLoading" :operationNum="1" :isShowOperate="false"> <el-table-column slot="fixed" fixed prop="" label="序号" width="80" header-align="center" align="center"> <template slot-scope="scope"> {{scope.$index+(pageIndex - 1) * pageSize + 1}} </template> </el-table-column> </drag-table> <!-- <el-table :data="dataList" v-loading="dataListLoading" :stripe="true" :header-cell-style="{background:'#EEF8FF',color:'#333333'}" style="width: 100%;"> <el-table-column type="index" header-align="center" align="center" width='80' label="序号"> <template scope="scope"><span>{{scope.$index+(pageIndex - 1) * pageSize + 1}} </span></template> </el-table-column> <el-table-column prop="name" header-align="center" align="center" label="姓名"></el-table-column> <el-table-column prop="jobNumber" header-align="center" align="center" label="工号"></el-table-column> <el-table-column prop="serialNumber" header-align="center" align="center" label="卡序列号"></el-table-column> <el-table-column prop="createTime" header-align="center" align="center" label="创建时间"></el-table-column> <el-table-column prop="activation" header-align="center" align="center" label="起始有效时间"></el-table-column> <el-table-column prop="expiration" header-align="center" align="center" label="结束有效时间"></el-table-column> </el-table> --> <!-- <el-table-column prop="department" header-align="center" align="center" label="所在部门"></el-table-column> <el-table-column prop="post" header-align="center" align="center" label="岗位"></el-table-column> <el-table-column prop="group" header-align="center" align="center" label="班组"></el-table-column> <el-table-column prop="phoneNumber" header-align="center" align="center" label="手机"></el-table-column> <el-table-column header-align="center" align="center" label="状态"> <template slot-scope="scope"> <div v-if='scope.row.status==0'><el-badge is-dot class="item"></el-badge>请假</div> <div v-if='scope.row.status==1'>    在岗</div> <div v-if='scope.row.status==2'><el-badge is-dot class="item1"></el-badge>出差</div> </template> </el-table-column> --> </div> </el-card> </el-main> <el-footer class="box_footer"> <el-pagination @size-change="sizeChangeHandle" background @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalPage" layout="total, sizes, prev, pager, next, jumper"></el-pagination> </el-footer> </el-container> </template> <script> import dragTable from '../../components/tab' export default { data() { return { checkList: [], //筛选数据 tableHeader: [ { label: '姓名', prop: 'name' }, { label: '卡序列号', prop: 'serialNumber' }, { label: '创建时间', prop: 'createTime' }, { label: '起始有效时间', prop: 'activation' }, { label: '结束有效时间', prop: 'expiration' } ], tableOption: { border: false, //是否边框 maxHeight: 500 //高度 }, queryDetailVisible: true, dataForm: { stationId: localStorage.getItem('stationId'), subCode: '01', sort: 'department', name: '' }, dialogDataForm: { operation: '1' }, fullscreenLoading: false, dataList: [], pageIndex: 1, pageSize: 10, totalPage: 0, dataListLoading: false, state1: '', restaurants: [] } }, components: { dragTable }, // computed(){ // dowHref: function () { // return '' // } // }, computed: { currentHeight() { return this.$store.state.d2admin.currentHeight.height } }, watch: { totalPage() { //注意这个函数的名字必须和你监听data中的属性的名字一样,这样才能当你data中的属性发生变化时,触发这个函数 let pages = Math.ceil(this.totalPage / this.pageSize)//新数据总页数 //总页数小于当前页数则重新加载列表数据 if (pages < this.pageIndex) { this.pageIndex = pages || 1 this.getDataList()//获取表格数据的方法 } } }, created() { this.pageIndex = 1 this.getDataList() this.checkList = [...this.tableHeader] }, methods: { resetClick() { this.dataForm = { stationId: localStorage.getItem('stationId'), subCode: '01', sort: 'department', name: '' } this.getDataList() }, tabRowClick(res) { this.$refs.queryDetail.init(JSON.parse(JSON.stringify(res))) }, handleSelect() { }, //发卡同步 syncClick() { this.dataListLoading = true this.$http({ url: this.$http.adornUrlEq('/accessCard/sync'), method: 'post', data: { } }).then(data => { //console.log('data', data) this.dataListLoading = false if (data && data.code === 0) { this.$message.success('发卡同步成功') this.pageIndex = 1 this.getDataList() } else { this.$message.success(data.msg) } }) }, sortClick(now) { if (now == 1) { this.dataForm.sort = 'name' } else { this.dataForm.sort = 'department' } this.getDataList() }, // 获取数据列表 getDataList(sort, order) { this.dataListLoading = true this.$http({ url: this.$http.adornUrlEq('/accessCard/list'), method: 'post', data: { stationId: this.dataForm.stationId, page: this.pageIndex, rows: this.pageSize, name: this.dataForm.name, sort, order } }).then(data => { //console.log('data', data) if (data && data.code === 0) { this.dataList = data.page.rows this.totalPage = data.page.total } else { this.dataList = [] this.totalPage = 0 } this.dataListLoading = false }) }, exportData() { this.fullscreenLoading = true this.$http({ url: this.$http.adornUrlEq('/accessCard/export'), method: 'get', responseType: 'arraybuffer', params: { stationId: this.dataForm.stationId, name: this.dataForm.name, serialNumber: this.dataForm.serialNumber, jobNumber: this.dataForm.jobNumber, sort: this.dataForm.sort } }).then(data => { console.log(data) let dd = localStorage.getItem('headers') let headers = JSON.parse(dd) let type = headers['content-type'].trim().split(';')[0] let filename = decodeURI(headers['content-disposition'].trim().split(';')[1].split('=')[1]) const blob = new Blob([data], { type: type }) if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob, filename) } else { const link = document.createElement('a') link.download = filename link.style.display = 'none' link.href = URL.createObjectURL(blob) document.body.appendChild(link) link.click() URL.revokeObjectURL(link.href) document.body.removeChild(link) } this.fullscreenLoading = false }) }, // 每页数 sizeChangeHandle(val) { this.pageSize = val this.pageIndex = 1 this.getDataList() }, // 当前页 currentChangeHandle(val) { this.pageIndex = val this.getDataList() }, dialogFormVisible() { }, //转化时间 formatTime(date, format) { if (date) { date = new Date(date) var o = { 'M+': date.getMonth() + 1, //月份 'd+': date.getDate(), //日 'h+': date.getHours(), //小时 'm+': date.getMinutes(), //分 's+': date.getSeconds(), //秒 'q+': Math.floor((date.getMonth() + 3) / 3), //季度 'S': date.getMilliseconds() //毫秒 } var fmt = format || 'yyyy-MM-dd hh:mm' if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) } for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) } } return fmt } else { return '' } } } } </script> <style lang='scss'> .inputWidth { width: 130px; } .instuctions_header{ height: 42px; background:#EDEEF1; border:1px solid rgba(195, 195, 195, 1); h1{ font-size:16px; line-height: 42px; height: 42px; margin: 0; font-family:Adobe Heiti Std; font-weight:bold; color:rgba(51,51,51,1); float: left; } span{ width:5px; height:16px; background:rgba(33,172,252,1); float: left; margin: 13px 10px 0 20px; }; } .instuctions_content{ padding: 20px; background: #fff; table{ th{ background: #eef8ff !important; color: #333333 !important; } } .item { margin-top: 10px; margin-right: 5px; .el-badge__content.is-dot{ background-color: #FF3823 !important; } } .item1{ margin-top: 10px; margin-right: 5px; .el-badge__content.is-dot{ background-color: #E2A80C !important; } } } </style>