New file |
| | |
| | | <template> |
| | | |
| | | <div id="app" style="width: 100%"> |
| | | <div class="page-header"> |
| | | |
| | | <div class="page-title">用户列表</div> |
| | | <div class="page-header-btn"> |
| | | <el-button icon="el-icon-plus" size="mini" style="margin-right: 1rem;" type="primary" @click="addUser"> |
| | | 添加用户 |
| | | </el-button> |
| | | |
| | | </div> |
| | | </div> |
| | | <!--用户列表--> |
| | | <el-table :data="userList" style="width: 100%;font-size: 12px;" :height="winHeight" |
| | | header-row-class-name="table-header"> |
| | | <el-table-column prop="username" label="用户名" min-width="160"/> |
| | | <el-table-column prop="pushKey" label="pushkey" min-width="160"/> |
| | | <el-table-column prop="role.name" label="类型" min-width="160"/> |
| | | <el-table-column label="操作" min-width="450" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="medium" icon="el-icon-edit" type="text" @click="edit(scope.row)">修改密码</el-button> |
| | | <el-divider direction="vertical"></el-divider> |
| | | <el-button size="medium" icon="el-icon-edit" type="text" @click="changePushKey(scope.row)">修改pushkey</el-button> |
| | | <el-divider direction="vertical"></el-divider> |
| | | <el-button size="medium" icon="el-icon-delete" type="text" @click="deleteUser(scope.row)" |
| | | style="color: #f56c6c">删除 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <changePasswordForAdmin ref="changePasswordForAdmin"></changePasswordForAdmin> |
| | | <changePushKey ref="changePushKey"></changePushKey> |
| | | <addUser ref="addUser"></addUser> |
| | | <el-pagination |
| | | style="float: right" |
| | | @size-change="handleSizeChange" |
| | | @current-change="currentChange" |
| | | :current-page="currentPage" |
| | | :page-size="count" |
| | | :page-sizes="[15, 25, 35, 50]" |
| | | layout="total, sizes, prev, pager, next" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import uiHeader from '../layout/UiHeader.vue' |
| | | import changePasswordForAdmin from './dialog/changePasswordForAdmin.vue' |
| | | import changePushKey from './dialog/changePushKey.vue' |
| | | import addUser from '../components/dialog/addUser.vue' |
| | | |
| | | export default { |
| | | name: 'userManager', |
| | | components: { |
| | | uiHeader, |
| | | changePasswordForAdmin, |
| | | changePushKey, |
| | | addUser |
| | | }, |
| | | data() { |
| | | return { |
| | | userList: [], //设备列表 |
| | | currentUser: {}, //当前操作设备对象 |
| | | |
| | | videoComponentList: [], |
| | | updateLooper: 0, //数据刷新轮训标志 |
| | | currentUserLenth: 0, |
| | | winHeight: window.innerHeight - 200, |
| | | currentPage: 1, |
| | | count: 15, |
| | | total: 0, |
| | | getUserListLoading: false |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.initData(); |
| | | this.updateLooper = setInterval(this.initData, 10000); |
| | | }, |
| | | destroyed() { |
| | | this.$destroy('videojs'); |
| | | clearTimeout(this.updateLooper); |
| | | }, |
| | | methods: { |
| | | initData: function () { |
| | | this.getUserList(); |
| | | }, |
| | | currentChange: function (val) { |
| | | this.currentPage = val; |
| | | this.getUserList(); |
| | | }, |
| | | handleSizeChange: function (val) { |
| | | this.count = val; |
| | | this.getUserList(); |
| | | }, |
| | | getUserList: function () { |
| | | let that = this; |
| | | this.getUserListLoading = true; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: `/api/user/users`, |
| | | params: { |
| | | page: that.currentPage, |
| | | count: that.count |
| | | } |
| | | }).then(function (res) { |
| | | if (res.data.code === 0) { |
| | | that.total = res.data.data.total; |
| | | that.userList = res.data.data.list; |
| | | } |
| | | that.getUserListLoading = false; |
| | | }).catch(function (error) { |
| | | that.getUserListLoading = false; |
| | | }); |
| | | |
| | | }, |
| | | edit: function (row) { |
| | | this.$refs.changePasswordForAdmin.openDialog(row, () => { |
| | | this.$refs.changePasswordForAdmin.close(); |
| | | this.$message({ |
| | | showClose: true, |
| | | message: "密码修改成功", |
| | | type: "success", |
| | | }); |
| | | setTimeout(this.getUserList, 200) |
| | | |
| | | }) |
| | | }, |
| | | deleteUser: function (row) { |
| | | let msg = "确定删除此用户?" |
| | | if (row.online !== 0) { |
| | | msg = "<strong>确定删除此用户?</strong>" |
| | | } |
| | | this.$confirm(msg, '提示', { |
| | | dangerouslyUseHTMLString: true, |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | center: true, |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios({ |
| | | method: 'delete', |
| | | url: `/api/user/delete?id=${row.id}` |
| | | }).then((res) => { |
| | | this.getUserList(); |
| | | }).catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | }).catch(() => { |
| | | |
| | | }); |
| | | |
| | | |
| | | }, |
| | | |
| | | changePushKey: function (row) { |
| | | this.$refs.changePushKey.openDialog(row, () => { |
| | | this.$refs.changePushKey.close(); |
| | | this.$message({ |
| | | showClose: true, |
| | | message: "pushKey修改成功", |
| | | type: "success", |
| | | }); |
| | | setTimeout(this.getUserList, 200) |
| | | |
| | | }) |
| | | }, |
| | | addUser: function () { |
| | | // this.$refs.addUser.openDialog() |
| | | this.$refs.addUser.openDialog( () => { |
| | | this.$refs.addUser.close(); |
| | | this.$message({ |
| | | showClose: true, |
| | | message: "用户添加成功", |
| | | type: "success", |
| | | }); |
| | | setTimeout(this.getUserList, 200) |
| | | |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | .videoList { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-content: flex-start; |
| | | } |
| | | |
| | | .video-item { |
| | | position: relative; |
| | | width: 15rem; |
| | | height: 10rem; |
| | | margin-right: 1rem; |
| | | background-color: #000000; |
| | | } |
| | | |
| | | .video-item-img { |
| | | position: absolute; |
| | | top: 0; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | margin: auto; |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .video-item-img:after { |
| | | content: ""; |
| | | display: inline-block; |
| | | position: absolute; |
| | | z-index: 2; |
| | | top: 0; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | margin: auto; |
| | | width: 3rem; |
| | | height: 3rem; |
| | | background-image: url("../assets/loading.png"); |
| | | background-size: cover; |
| | | background-color: #000000; |
| | | } |
| | | |
| | | .video-item-title { |
| | | position: absolute; |
| | | bottom: 0; |
| | | color: #000000; |
| | | background-color: #ffffff; |
| | | line-height: 1.5rem; |
| | | padding: 0.3rem; |
| | | width: 14.4rem; |
| | | } |
| | | |
| | | </style> |