这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
3.8 KiB

<template>
<div>
<el-table
row-key="id"
border
fit
highlight-current-row
style="width: 100%;"
:data="dataList"
>
<el-table-column
:label="$t('AbpIdentity.DisplayName:RoleName')"
prop="name"
sortable
width="350px"
min-width="350px"
align="center"
>
<template slot-scope="{row}">
<span>{{ row.name }}</span>
<el-tag
v-if="row.isDefault"
type="success"
>
{{ $t('AbpIdentity.DisplayName:IsDefault') }}
</el-tag>
</template>
</el-table-column>
<el-table-column
:label="$t('AbpIdentity.DisplayName:IsPublic')"
prop="isPublic"
width="200px"
align="center"
>
<template slot-scope="{row}">
<el-switch
v-model="row.isPublic"
disabled
/>
</template>
</el-table-column>
<el-table-column
:label="$t('AbpIdentity.DisplayName:IsStatic')"
prop="isStatic"
width="200px"
align="center"
>
<template slot-scope="{row}">
<el-switch
v-model="row.isStatic"
disabled
/>
</template>
</el-table-column>
<el-table-column
v-if="checkPermission(['AbpIdentity.Roles.ManageOrganizationUnits'])"
:label="$t('AbpIdentity.Actions')"
align="center"
width="100px"
>
<template slot-scope="{row}">
<el-button
size="mini"
type="danger"
icon="el-icon-delete"
@click="handleDeleteRole(row)"
/>
</template>
</el-table-column>
</el-table>
<pagination
v-show="dataTotal>0"
:total="dataTotal"
:page.sync="currentPage"
:limit.sync="pageSize"
@pagination="refreshPagedData"
/>
</div>
</template>
<script lang="ts">
import { abpPagerFormat } from '@/utils'
import { checkPermission } from '@/utils/permission'
import EventBusMiXin from '@/mixins/EventBusMiXin'
import DataListMiXin from '@/mixins/DataListMiXin'
import { Component, Mixins, Prop, Watch } from 'vue-property-decorator'
import Pagination from '@/components/Pagination/index.vue'
import RoleApiService, { RoleGetPagedDto } from '@/api/roles'
import OrganizationUnitService from '@/api/organizationunit'
@Component({
name: 'RoleOrganizationUint',
components: {
Pagination
},
methods: {
checkPermission
}
})
export default class extends Mixins(DataListMiXin, EventBusMiXin) {
@Prop({ default: '' })
private organizationUnitId!: string
public dataFilter = new RoleGetPagedDto()
@Watch('organizationUnitId', { immediate: true })
private onOrganizationUnitIdChanged() {
this.refreshPagedData()
}
mounted() {
this.subscribe('onRoleOrganizationUintChanged', this.refreshPagedData)
}
destroyed() {
this.unSubscribe('onRoleOrganizationUintChanged')
}
protected processDataFilter() {
this.dataFilter.skipCount = abpPagerFormat(this.currentPage, this.pageSize)
}
protected getPagedList(dataFilter: any) {
if (this.organizationUnitId) {
return OrganizationUnitService.getRoles(this.organizationUnitId, dataFilter)
}
return this.getEmptyPagedList()
}
private handleDeleteRole(row: any) {
this.$confirm(this.l('AbpIdentity.OrganizationUnit:AreYouSureRemoveRole', { 0: row.name }),
this.l('AbpIdentity.AreYouSure'), {
callback: (action) => {
if (action === 'confirm') {
RoleApiService
.removeOrganizationUnits(row.id, this.organizationUnitId)
.then(() => {
this.refreshPagedData()
})
}
}
})
}
}
</script>
<style lang="scss" scoped>
</style>