123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- <template>
- <a-modal
- :width="1000"
- :title="title"
- :visible="innerVisible"
- @cancel="handleCancel"
- cancelText="关闭"
- :okButtonProps="{style:{display:'none'}}"
- >
- <a-alert type="info" showIcon style="margin-bottom: 16px;">
- <template slot="message">
- <span>已选择</span>
- <a style="font-weight: 600;padding: 0 4px;">{{ selectedRowKeys.length }}</a>
- <span>项</span>
- <template v-if="selectedRowKeys.length>0">
- <a-divider type="vertical"/>
- <a @click="handleClearSelection">清空选择</a>
- <a-divider type="vertical"/>
- <a @click="handleRevertBatch">批量还原</a>
- <a-divider type="vertical"/>
- <a @click="handleDeleteBatch">批量删除</a>
- </template>
- </template>
- </a-alert>
- <a-table
- ref="table"
- rowKey="id"
- size="middle"
- bordered
- :columns="columns"
- :loading="loading"
- :dataSource="dataSource"
- :pagination="false"
- :rowSelection="{selectedRowKeys, onChange: handleTableSelectChange}"
- >
- <!-- 显示头像 -->
- <template slot="avatarslot" slot-scope="text, record, index">
- <div class="anty-img-wrap">
- <a-avatar shape="square" :src="url.getAvatar(record.avatar)" icon="user"/>
- </div>
- </template>
- <span slot="action" slot-scope="text, record">
- <a @click="handleRevert([record.id])"><a-icon type="redo"/> 还原用户</a>
- <a-divider type="vertical"/>
- <a @click="handleDelete([record.id])"><a-icon type="delete"/> 彻底删除</a>
- </span>
- </a-table>
- </a-modal>
- </template>
- <script>
- import { putAction,deleteAction,getFileAccessHttpUrl } from "@/api/manage"
- // 高度封装的请求,请务必使用 superRequest.call(this,{}) 的方式调用
- function superRequest(options) {
- this.loading = !!options.loading
- options.promise.then(res => {
- if (res.success && typeof options.success === 'function') {
- options.success(res)
- } else {
- throw new Error(res.message)
- }
- }).catch(e => {
- console.error('查询已删除的用户失败:', e)
- this.$message.warning('查询已删除的用户失败:' + (e.message || e))
- }).finally(() => {
- this.loading = false
- })
- }
- export default {
- name: 'UserRecycleBinModal',
- props: {
- visible: {
- type: Boolean,
- default: false
- },
- },
- data() {
- return {
- title: '用户回收站',
- loading: false,
- innerVisible: false,
- selectedRowKeys: [],
- dataSource: [],
- columns: [
- { title: '#', align: 'center', key: 'rowIndex', width: 80, customRender: (t, r, i) => i + 1 },
- { title: '账号', align: 'center', dataIndex: 'username' },
- { title: '姓名', align: 'center', dataIndex: 'realname', },
- { title: '头像', align: 'center', dataIndex: 'avatar', scopedSlots: { customRender: 'avatarslot' } },
- { title: '部门', align: 'center', dataIndex: 'orgCode' },
- { title: '操作', align: 'center', dataIndex: 'action', width: 200, scopedSlots: { customRender: 'action' } }
- ],
- url: {
- getAvatar: (path) => getFileAccessHttpUrl(`${path}`),
- // 回收站操作,get = 获取列表;put = 取回;delete = 彻底删除
- recycleBin: '/sys/user/recycleBin',
- putRecycleBin: '/sys/user/putRecycleBin',
- deleteRecycleBin: '/sys/user/deleteRecycleBin',
- },
- }
- },
- watch: {
- visible: {
- immediate: true,
- handler(val) {
- if (val) {
- this.loadData()
- }
- this.innerVisible = val
- }
- },
- innerVisible(val) {
- this.$emit('update:visible', val)
- },
- },
- methods: {
- loadData() {
- superRequest.call(this, {
- loading: true,
- promise: this.$http.get(this.url.recycleBin),
- success: res => this.dataSource = res.result
- })
- },
- handleOk() {
- this.loadData()
- this.$emit('ok')
- },
- handleCancel() {
- this.innerVisible = false
- },
- // 还原用户
- handleRevert(userIds) {
- this.$confirm({
- title: '恢复用户',
- content: `您确定要恢复这 ${userIds.length} 个用户吗?`,
- centered: true,
- onOk: () => {
- putAction(this.url.putRecycleBin,{userIds:userIds.join(',')}).then((res)=>{
- if(res.success){
- this.handleOk()
- this.handleClearSelection()
- this.$message.success(`还原 ${userIds.length} 个用户成功!`)
- }
- })
- }
- })
- },
- // 彻底删除用户
- handleDelete(userIds) {
- this.$confirm({
- title: '彻底删除用户',
- content: (<div>
- <p>您确定要彻底删除这 {userIds.length} 个用户吗?</p>
- <p style="color:red;">注意:彻底删除后将无法恢复,请谨慎操作!</p>
- </div>),
- centered: true,
- onOk: () => {
- var that = this;
- deleteAction(that.url.deleteRecycleBin, {userIds: userIds.join(',')}).then((res) => {
- if (res.success) {
- this.loadData()
- this.handleClearSelection()
- this.$message.success(`彻底删除 ${userIds.length} 个用户成功!`)
- } else {
- that.$message.warning(res.message);
- }
- });
- },
- })
- },
- handleRevertBatch() {
- this.handleRevert(this.selectedRowKeys)
- },
- handleDeleteBatch() {
- this.handleDelete(this.selectedRowKeys)
- },
- handleClearSelection() {
- this.handleTableSelectChange([], [])
- },
- handleTableSelectChange(selectedRowKeys, selectionRows) {
- this.selectedRowKeys = selectedRowKeys
- this.selectionRows = selectionRows
- },
- }
- }
- </script>
- <style lang="less" scoped></style>
|