¶Ô±ÈÐÂÎļþ |
| | |
| | | <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: 'productionName' }, |
| | | { 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> |