02/19
parent
482b8347ed
commit
f136fc5c49
@ -0,0 +1,56 @@
|
||||
// @ts-ignore
|
||||
import { DataResult, PageRequest } from '../model/baseModel'
|
||||
import { request } from '/@/utils/request'
|
||||
|
||||
enum Api {
|
||||
list = '/adminApi/Tenant/GetTenantList',
|
||||
GetTenantPermission = '/adminApi/Tenant/GetTenantPermission',
|
||||
GetTenantInfo = '/adminApi/Tenant/GetTenantInfo',
|
||||
UpdateTenantPermission = '/adminApi/Tenant/UpdateTenantPermission',
|
||||
|
||||
editUser = '/adminApi/User/EditUser',
|
||||
getUser = '/adminApi/User/GetUserInfo',
|
||||
|
||||
}
|
||||
export function GetTenantList(data: PageRequest) {
|
||||
return request<DataResult>({
|
||||
url: Api.list,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export function getPermission(query: { id: string }) {
|
||||
return request<DataResult>({
|
||||
url: Api.GetTenantPermission,
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
export function getInfo(query: { id: string }) {
|
||||
return request<DataResult>({
|
||||
url: Api.GetTenantInfo,
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
export function UpdatePermission(data: any) {
|
||||
return request<DataResult>({
|
||||
url: Api.UpdateTenantPermission,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export function editUser(data: any) {
|
||||
return request<DataResult>({
|
||||
url: Api.editUser,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export function getUser(query: { id: string }) {
|
||||
return request<DataResult>({
|
||||
url: Api.getUser,
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
@ -0,0 +1,136 @@
|
||||
<template> <BasicForm @register="registerForm" /> </template>
|
||||
<script lang="ts" setup>
|
||||
import { defineComponent, ref, watch, onMounted } from 'vue'
|
||||
import { BasicForm, useForm } from '/@/components/Form/index'
|
||||
// import { authorization } from './columns'
|
||||
import { useMessage } from '/@/hooks/web/useMessage'
|
||||
import { propTypes } from '/@/utils/propTypes'
|
||||
const { notification, createConfirm, createMessage } = useMessage()
|
||||
// 声明Emits
|
||||
const emit = defineEmits(['next', 'prev'])
|
||||
const props = defineProps({
|
||||
checkedKeys: propTypes.array,
|
||||
ApiData: propTypes.object,
|
||||
})
|
||||
watch(
|
||||
() => props.ApiData,
|
||||
() => {
|
||||
initData()
|
||||
},
|
||||
{ deep: true },
|
||||
)
|
||||
async function initData() {
|
||||
let Rdata = {
|
||||
authUserNum: props.ApiData.authUserNum,
|
||||
}
|
||||
props.ApiData.permissionAuthList.forEach((item) => {
|
||||
Rdata[`${item.permissionId}--authNum`] = item.authNum
|
||||
})
|
||||
console.log(Rdata, 111)
|
||||
|
||||
setFieldsValue(Rdata)
|
||||
// setFieldsValue(props.ShowData)
|
||||
}
|
||||
const isUpdate = ref(true)
|
||||
const loading = ref(false)
|
||||
const rowId = ref('')
|
||||
const authorization = ref([
|
||||
// {
|
||||
// field: 'divider-selects',
|
||||
// component: 'Divider',
|
||||
// label: '系统授权用户数',
|
||||
// colProps: { span: 24 },
|
||||
// },
|
||||
// {
|
||||
// field: 'authUserNum',
|
||||
// label: '租户授权用户数',
|
||||
// component: 'InputNumber',
|
||||
// labelWidth: '200px',
|
||||
// componentProps: {
|
||||
// min: 0,
|
||||
// placeholder: '可登陆系统的最大用户数',
|
||||
// },
|
||||
// colProps: { span: 8 },
|
||||
// },
|
||||
])
|
||||
console.log(props.checkedKeys, 'props.checkedKeys')
|
||||
|
||||
// const ASD = () => {
|
||||
props.checkedKeys.forEach((item, index) => {
|
||||
if (index == 0) {
|
||||
authorization.value.push({
|
||||
field: 'divider-selects',
|
||||
component: 'Divider',
|
||||
label: '权限模块授权',
|
||||
colProps: { span: 24 },
|
||||
})
|
||||
}
|
||||
authorization.value.push({
|
||||
field: `${item.key}--authNum`,
|
||||
label: `${item.title} 授权数`,
|
||||
component: 'InputNumber',
|
||||
labelWidth: '200px',
|
||||
componentProps: {
|
||||
min: 0,
|
||||
},
|
||||
colProps: { span: 8 },
|
||||
})
|
||||
})
|
||||
authorization.value.push({
|
||||
field: 'divider-selects',
|
||||
component: 'Divider',
|
||||
label: '审批步骤',
|
||||
colProps: { span: 24 },
|
||||
})
|
||||
// }
|
||||
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = useForm({
|
||||
labelWidth: 100,
|
||||
schemas: authorization.value,
|
||||
resetButtonOptions: {
|
||||
text: '上一步',
|
||||
// onClick: handlePrev,
|
||||
},
|
||||
resetFunc: handlePrev,
|
||||
showResetButton: true,
|
||||
submitButtonOptions: {
|
||||
text: '下一步',
|
||||
},
|
||||
submitFunc: handleNext,
|
||||
})
|
||||
// watch(
|
||||
// () => props.checkedKeys,
|
||||
// (newData, oldData) => {
|
||||
// ASD()
|
||||
// console.log(newData, oldData, authorization.value)
|
||||
|
||||
// setProps({
|
||||
// labelWidth: 100,
|
||||
// schemas: authorization.value,
|
||||
// resetButtonOptions: {
|
||||
// text: '上一步',
|
||||
// onClick: handlePrev,
|
||||
// },
|
||||
// showResetButton: true,
|
||||
// submitButtonOptions: {
|
||||
// text: '下一步',
|
||||
// },
|
||||
// submitFunc: handleNext,
|
||||
// })
|
||||
// },
|
||||
// { deep: true },
|
||||
// )
|
||||
async function handlePrev() {
|
||||
emit('prev')
|
||||
}
|
||||
async function handleNext() {
|
||||
try {
|
||||
const values = await validate()
|
||||
emit('next', values)
|
||||
} catch (error) {}
|
||||
}
|
||||
onMounted(() => {
|
||||
initData()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="less"></style>
|
@ -0,0 +1,128 @@
|
||||
<template>
|
||||
<div class="m-4 mr-0 overflow-hidden bg-white">
|
||||
<BasicTree
|
||||
ref="treeRef"
|
||||
title="所拥有的的权限"
|
||||
:treeData="treeData"
|
||||
:checkable="true"
|
||||
:checkedKeys="checkedKeys"
|
||||
:selectedKeys="selectedKeys"
|
||||
defaultExpandAll
|
||||
@check="onCheck"
|
||||
/>
|
||||
</div>
|
||||
<BasicForm @register="registerForm" />
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { defineComponent, onMounted, ref, unref } from 'vue'
|
||||
import { BasicForm, useForm } from '/@/components/Form/index'
|
||||
import { permissionFormSchema } from './columns'
|
||||
import { getTenantAuditInfo, auditInfo } from './api'
|
||||
import { useMessage } from '/@/hooks/web/useMessage'
|
||||
import { BasicTree, TreeItem } from '/@/components/Tree'
|
||||
import { getClientPermissionTreeList } from './api'
|
||||
import { propTypes } from '/@/utils/propTypes'
|
||||
//树的信息
|
||||
const treeData = ref<TreeItem[]>([])
|
||||
//树的全部节点信息
|
||||
const allTreeKeys = ref([])
|
||||
//树的选择节点信息
|
||||
const checkedKeys = ref([])
|
||||
const WebcheckedKeys = ref([])
|
||||
const defaultCheckedKeys = ref([])
|
||||
//树的选中的节点信息
|
||||
const selectedKeys = ref([])
|
||||
const roleId = ref('')
|
||||
//树的实例
|
||||
const treeRef = ref(null)
|
||||
const loading = ref(false)
|
||||
const { notification, createConfirm, createMessage } = useMessage()
|
||||
// 声明Emits
|
||||
const emit = defineEmits(['next', 'prev', 'permission'])
|
||||
const props = defineProps({
|
||||
ApiData: propTypes.object,
|
||||
})
|
||||
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = useForm({
|
||||
labelWidth: 100,
|
||||
schemas: permissionFormSchema,
|
||||
|
||||
showResetButton: false,
|
||||
submitButtonOptions: {
|
||||
text: '下一步',
|
||||
},
|
||||
submitFunc: handleNext,
|
||||
})
|
||||
|
||||
async function handleNext() {
|
||||
console.log('permission', checkedKeys.value)
|
||||
let Rdata = []
|
||||
treeData.value.forEach((item) => {
|
||||
console.log(item)
|
||||
item.children.forEach((item2) => {
|
||||
console.log(item2)
|
||||
checkedKeys.value.forEach((e) => {
|
||||
console.log(e)
|
||||
if (e == item2.key) {
|
||||
Rdata.push(item2)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
emit('next', {
|
||||
WebcheckedKeys: WebcheckedKeys.value,
|
||||
checkedKeys: Rdata,
|
||||
})
|
||||
}
|
||||
async function fetch() {
|
||||
reset()
|
||||
//初始化数据
|
||||
const res = await getClientPermissionTreeList()
|
||||
treeData.value = res.data
|
||||
initData()
|
||||
// allTreeKeys.value = res.data.ids
|
||||
// treeData.value = data
|
||||
}
|
||||
async function initData() {
|
||||
console.log(props.ApiData)
|
||||
let Arr = []
|
||||
props.ApiData.forEach((item) => {
|
||||
Arr.push(item.key)
|
||||
})
|
||||
// setFieldsValue({
|
||||
// ...props.ShowData,
|
||||
// ...props.ApiData.auditInfo,
|
||||
// })
|
||||
checkedKeys.value = Arr
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据重置
|
||||
*/
|
||||
function reset() {
|
||||
treeData.value = []
|
||||
allTreeKeys.value = []
|
||||
checkedKeys.value = []
|
||||
defaultCheckedKeys.value = []
|
||||
selectedKeys.value = []
|
||||
// roleId.value = ''
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击选中
|
||||
*/
|
||||
function onCheck(o, info) {
|
||||
console.log(o, info)
|
||||
|
||||
checkedKeys.value = o.checked ? o.checked : o
|
||||
WebcheckedKeys.value = o.concat(info.halfCheckedKeys)
|
||||
console.log(WebcheckedKeys.value, checkedKeys.value)
|
||||
|
||||
// checkedKeys.value = o.concat(info.halfCheckedKeys)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
fetch()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="less"></style>
|
@ -0,0 +1,236 @@
|
||||
<template>
|
||||
<BasicModal
|
||||
v-bind="$attrs"
|
||||
@register="registerModal"
|
||||
:useWrapper="true"
|
||||
:title="getTitle"
|
||||
width="80%"
|
||||
>
|
||||
<!-- @ok="handleSave" -->
|
||||
<div class="step-form-form">
|
||||
<a-steps :current="current">
|
||||
<a-step title="权限模块" />
|
||||
<a-step title="授权信息" />
|
||||
<!-- <a-step title="完成" /> -->
|
||||
</a-steps>
|
||||
</div>
|
||||
<div class="mt-5">
|
||||
<PermissionSetStep
|
||||
@prev="handleStepPrev"
|
||||
@next="handleStep2Next"
|
||||
v-show="current === 0"
|
||||
v-if="state.initSetp1"
|
||||
:ApiData="checkedKeys"
|
||||
/>
|
||||
<Authorization
|
||||
@prev="handleStepPrev"
|
||||
@next="handleStep3Next"
|
||||
v-show="current === 1"
|
||||
v-if="state.initSetp2"
|
||||
:checkedKeys="checkedKeys"
|
||||
:ApiData="ApiData"
|
||||
/>
|
||||
</div>
|
||||
<!--右下角按钮-->
|
||||
<template #footer>
|
||||
<a-button
|
||||
@click="closeModal"
|
||||
preIcon="ant-design:close-outlined"
|
||||
type="warning"
|
||||
:loading="loading"
|
||||
ghost
|
||||
style="margin-right: 0.8rem"
|
||||
>取消
|
||||
</a-button>
|
||||
</template>
|
||||
</BasicModal>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, computed, unref, h, reactive, onMounted } from 'vue'
|
||||
import { BasicModal, useModalInner } from '/@/components/Modal'
|
||||
import { useMessage } from '/@/hooks/web/useMessage'
|
||||
import PermissionSetStep from './PermissionSetStep.vue'
|
||||
import Authorization from './Authorization.vue'
|
||||
import { RejectTenantApply } from './api'
|
||||
import { getPermission, getInfo } from '/@/api/system/tenant'
|
||||
import { useUserStore } from '/@/store/modules/user'
|
||||
import { UpdatePermission } from '/@/api/system/tenant'
|
||||
const userStore = useUserStore()
|
||||
onMounted(() => {
|
||||
// 记录当前的tenantId
|
||||
tenantId.value = userStore.getUserInfo?.tenantId
|
||||
console.log('Mounted', userStore.getUserInfo)
|
||||
})
|
||||
const tenantId = ref('')
|
||||
const { notification, createConfirm, createMessage } = useMessage()
|
||||
// 声明Emits
|
||||
const emit = defineEmits(['success', 'register'])
|
||||
const isUpdate = ref(true)
|
||||
const loading = ref(false)
|
||||
// const rowId = ref('')
|
||||
const current = ref(0)
|
||||
const applyId = ref('')
|
||||
const state = reactive({
|
||||
initSetp1: true,
|
||||
initSetp2: false,
|
||||
initSetp3: false,
|
||||
initSetp4: false,
|
||||
})
|
||||
const checkedKeys = ref([])
|
||||
const ApiData = reactive({
|
||||
tenantId: 0,
|
||||
permissionIds: [],
|
||||
permissionAuthList: [],
|
||||
})
|
||||
const ShowData = reactive({
|
||||
address: '',
|
||||
adminUserCode: '',
|
||||
auditNote: '',
|
||||
auditStatus: '',
|
||||
auditTime: '',
|
||||
chief: '',
|
||||
contractBeginDate: '',
|
||||
contractEndDate: '',
|
||||
email: '',
|
||||
id: '',
|
||||
name: '',
|
||||
phone: '',
|
||||
pinYinCode: '',
|
||||
taxNo: '',
|
||||
tel: '',
|
||||
})
|
||||
async function initData() {
|
||||
console.log('initData')
|
||||
|
||||
const res: API.DataResult = await getInfo({ id: applyId.value })
|
||||
if (res.succeeded) {
|
||||
ShowData.address = res.data.address
|
||||
ShowData.adminUserCode = res.data.adminUserCode
|
||||
ShowData.auditNote = res.data.auditNote
|
||||
ShowData.auditStatus = res.data.auditStatus
|
||||
ShowData.auditTime = res.data.auditTime
|
||||
ShowData.chief = res.data.chief
|
||||
ShowData.contractBeginDate = res.data.contractBeginDate
|
||||
ShowData.contractEndDate = res.data.contractEndDate
|
||||
ShowData.email = res.data.email
|
||||
ShowData.id = res.data.id
|
||||
ShowData.name = res.data.name
|
||||
ShowData.phone = res.data.phone
|
||||
ShowData.pinYinCode = res.data.pinYinCode
|
||||
ShowData.taxNo = res.data.taxNo
|
||||
ShowData.tel = res.data.tel
|
||||
}
|
||||
console.log(tenantId)
|
||||
|
||||
const res2: API.DataResult = await getPermission({ id: tenantId.value })
|
||||
if (res2.succeeded) {
|
||||
console.log(res2)
|
||||
}
|
||||
}
|
||||
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
|
||||
console.log('closeModal')
|
||||
ApiData.tenantId = tenantId.value
|
||||
ApiData.permissionIds = []
|
||||
ApiData.permissionAuthList = []
|
||||
|
||||
checkedKeys.value = []
|
||||
current.value = 0
|
||||
state.initSetp1 = true
|
||||
state.initSetp2 = false
|
||||
state.initSetp3 = false
|
||||
state.initSetp4 = false
|
||||
setModalProps({ confirmLoading: false, loading: true })
|
||||
console.log(!!data?.isUpdate, data)
|
||||
|
||||
isUpdate.value = !!data?.isUpdate
|
||||
console.log(unref(isUpdate), 'unref(isUpdate)')
|
||||
|
||||
if (unref(isUpdate)) {
|
||||
applyId.value = data.record.id
|
||||
}
|
||||
initData()
|
||||
setModalProps({ loading: false })
|
||||
})
|
||||
|
||||
function handleStepPrev(stepValues) {
|
||||
current.value--
|
||||
console.log(current.value)
|
||||
|
||||
if (current.value == 0) {
|
||||
state.initSetp1 = true
|
||||
state.initSetp2 = false
|
||||
state.initSetp3 = false
|
||||
state.initSetp4 = false
|
||||
} else if (current.value == 1) {
|
||||
state.initSetp1 = false
|
||||
state.initSetp2 = true
|
||||
state.initSetp3 = false
|
||||
state.initSetp4 = false
|
||||
} else if (current.value == 2) {
|
||||
state.initSetp1 = false
|
||||
state.initSetp2 = false
|
||||
state.initSetp3 = true
|
||||
state.initSetp4 = false
|
||||
} else if (current.value == 3) {
|
||||
state.initSetp1 = false
|
||||
state.initSetp2 = false
|
||||
state.initSetp3 = false
|
||||
state.initSetp4 = true
|
||||
}
|
||||
}
|
||||
|
||||
function handleStep2Next(step2Values: any) {
|
||||
current.value++
|
||||
state.initSetp1 = false
|
||||
state.initSetp2 = true
|
||||
ApiData.permissionIds = step2Values.WebcheckedKeys
|
||||
checkedKeys.value = step2Values.checkedKeys
|
||||
}
|
||||
async function handleStep3Next(step3Values: any) {
|
||||
console.log(step3Values)
|
||||
ApiData.permissionAuthList = []
|
||||
Object.keys(step3Values).forEach((item) => {
|
||||
let ArrItem = item.split('--')
|
||||
if (ArrItem.length == 2) {
|
||||
ApiData.permissionAuthList.push({
|
||||
permissionId: ArrItem[0],
|
||||
authNum: step3Values[item],
|
||||
})
|
||||
}
|
||||
})
|
||||
console.log(ApiData)
|
||||
const res: API.DataResult = await UpdatePermission(ApiData)
|
||||
if (res.succeeded) {
|
||||
current.value = 0
|
||||
state.initSetp1 = true
|
||||
state.initSetp2 = false
|
||||
closeModal()
|
||||
ApiData.tenantId = 0
|
||||
ApiData.permissionIds = []
|
||||
ApiData.permissionAuthList = []
|
||||
}
|
||||
}
|
||||
// async function handleStep4Next(step4Values: any) {
|
||||
// console.log(step4Values)
|
||||
// ApiData.dbInfo = {
|
||||
// dbType: step4Values.dbType,
|
||||
// connection: step4Values.connection,
|
||||
// }
|
||||
// const res: API.DataResult = await TenantApplyAudit(ApiData)
|
||||
// if (res.succeeded) {
|
||||
// current.value = 0
|
||||
// state.initSetp1 = true
|
||||
// state.initSetp2 = false
|
||||
// state.initSetp3 = false
|
||||
// state.initSetp4 = false
|
||||
// closeModal()
|
||||
// ApiData.auditInfo = {}
|
||||
// ApiData.authUserNum = ''
|
||||
// ApiData.permissionIds = []
|
||||
// ApiData.permissionAuthList = []
|
||||
// ApiData.dbInfo = {}
|
||||
// }
|
||||
// }
|
||||
|
||||
const getTitle = computed(() => (!unref(isUpdate) ? '' : '企业用户审批'))
|
||||
</script>
|
@ -0,0 +1,56 @@
|
||||
// @ts-ignore
|
||||
import { request } from '/@/utils/request'
|
||||
import { DataResult, PageRequest } from '/@/api/model/baseModel'
|
||||
enum Api {
|
||||
list = '/adminApi/TenantApply/GetTenantApplyList',
|
||||
getTenantAuditInfo = '/adminApi/TenantApply/GetTenantAuditInfo',
|
||||
auditInfo = '/adminApi/TenantApply/AuditTenantApply',
|
||||
getClientPermissionTreeList = '/adminApi/Common/GetClientPermissionTreeList',
|
||||
RejectTenantApply = '/adminApi/TenantApply/RejectTenantApply',
|
||||
TenantApplyAudit = '/adminApi/TenantApply/TenantApplyAudit',
|
||||
}
|
||||
export function getTenantApplyList(data: PageRequest) {
|
||||
return request<DataResult>({
|
||||
url: Api.list,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function getTenantAuditInfo(query: { id: string }) {
|
||||
return request<DataResult>({
|
||||
url: Api.getTenantAuditInfo,
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
|
||||
export function auditInfo(data: any) {
|
||||
return request<DataResult>({
|
||||
url: Api.auditInfo,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
export function getClientPermissionTreeList() {
|
||||
return request<DataResult>({
|
||||
url: Api.getClientPermissionTreeList,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
// 企业用户审批-驳回 (Auth)
|
||||
export function RejectTenantApply(data: any) {
|
||||
return request<DataResult>({
|
||||
url: Api.RejectTenantApply,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 企业用户审批-审核通过 (Auth)
|
||||
export function TenantApplyAudit(data: any) {
|
||||
return request<DataResult>({
|
||||
url: Api.TenantApplyAudit,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
@ -0,0 +1,263 @@
|
||||
// import { filterDictTextByCache } from '/@/utils/dictUtil'
|
||||
import { BasicColumn, FormSchema } from '/@/components/Table'
|
||||
// import { getDictDropDown } from '/@/api/common/index';
|
||||
import { getRoleList } from '/@/api/common'
|
||||
import { Tag } from 'ant-design-vue'
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '公司名称',
|
||||
dataIndex: 'name',
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '助记码',
|
||||
dataIndex: 'pinYinCode',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '公司地址',
|
||||
dataIndex: 'address',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '租户管理员手机',
|
||||
dataIndex: 'phone',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '公司电话',
|
||||
dataIndex: 'tel',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '邮箱',
|
||||
dataIndex: 'email',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '企业法人',
|
||||
dataIndex: 'chief',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '企业税号',
|
||||
dataIndex: 'taxNo',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '租户类型',
|
||||
dataIndex: 'tenantType',
|
||||
width: 200,
|
||||
customRender: ({ text }) => {
|
||||
if (text === 1) {
|
||||
return <Tag color="success">系统租户</Tag>
|
||||
} else if (text === 0) {
|
||||
return <Tag color="blue">普通租户</Tag>
|
||||
}
|
||||
return text
|
||||
},
|
||||
},
|
||||
// {
|
||||
// title: '性别',
|
||||
// dataIndex: 'sex',
|
||||
// width: 200,
|
||||
// customRender: ({ text }) => {
|
||||
// if (text === 1) {
|
||||
// return <Tag color="success">男</Tag>
|
||||
// } else if (text === 2) {
|
||||
// return <Tag color="blue">女</Tag>
|
||||
// }
|
||||
// return text
|
||||
// },
|
||||
// },
|
||||
|
||||
]
|
||||
export const permissionFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'divider-selects',
|
||||
component: 'Divider',
|
||||
label: '审批步骤',
|
||||
colProps: { span: 24 },
|
||||
},
|
||||
{
|
||||
label: '',
|
||||
field: 'id',
|
||||
component: 'Input',
|
||||
defaultValue: '',
|
||||
show: false,
|
||||
},
|
||||
]
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'UserName',
|
||||
label: '用户名称',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
},
|
||||
{
|
||||
field: 'UserCode',
|
||||
label: '用户唯一编码',
|
||||
component: 'Input',
|
||||
colProps: { span: 8 },
|
||||
},
|
||||
]
|
||||
export const formSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'divider-selects',
|
||||
component: 'Divider',
|
||||
label: '基本用户信息',
|
||||
colProps: {
|
||||
span: 24,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '',
|
||||
field: 'id',
|
||||
component: 'Input',
|
||||
defaultValue: '',
|
||||
show: false,
|
||||
},
|
||||
{
|
||||
label: '',
|
||||
field: 'permissionIdentity',
|
||||
component: 'Input',
|
||||
defaultValue: '',
|
||||
show: false,
|
||||
},
|
||||
{
|
||||
field: 'userCode',
|
||||
label: '用户唯一码',
|
||||
component: 'Input',
|
||||
required: true,
|
||||
colProps: { span: 12 },
|
||||
dynamicDisabled: ({ values }) => {
|
||||
return !!values.id
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'sex',
|
||||
component: 'RadioButtonGroup',
|
||||
label: '性别',
|
||||
required: true,
|
||||
componentProps: {
|
||||
options: [
|
||||
{ label: '男', value: 1 },
|
||||
{ label: '女', value: 2 },
|
||||
],
|
||||
},
|
||||
defaultValue: 1,
|
||||
colProps: {
|
||||
span: 8,
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'userName',
|
||||
label: '用户名称',
|
||||
component: 'Input',
|
||||
required: true,
|
||||
colProps: { span: 12 },
|
||||
},
|
||||
{
|
||||
field: 'userType',
|
||||
label: '用户类型',
|
||||
component: 'RadioButtonGroup',
|
||||
required: true,
|
||||
colProps: {
|
||||
span: 12,
|
||||
},
|
||||
defaultValue: 2,
|
||||
componentProps: {
|
||||
options: [
|
||||
// { label: '超级管理员', value: 0, disabled: true },
|
||||
{ label: '管理员', value: 1 },
|
||||
{ label: '普通用户', value: 2 },
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'pinYinCode',
|
||||
label: '助记码',
|
||||
component: 'Input',
|
||||
colProps: { span: 12 },
|
||||
dynamicDisabled: () => {
|
||||
return true
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'password',
|
||||
label: '密码',
|
||||
component: 'Input',
|
||||
colProps: { span: 12 },
|
||||
defaultValue: '0000',
|
||||
dynamicDisabled: () => {
|
||||
return true
|
||||
},
|
||||
itemProps: {
|
||||
extra: '请及时重置初始密码!',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'birthday',
|
||||
label: '出生日期',
|
||||
component: 'DatePicker',
|
||||
// required: true,
|
||||
colProps: {
|
||||
span: 12,
|
||||
},
|
||||
componentProps: {},
|
||||
},
|
||||
{
|
||||
field: 'nickName',
|
||||
label: '用户昵称',
|
||||
component: 'Input',
|
||||
required: true,
|
||||
colProps: { span: 12 },
|
||||
},
|
||||
{
|
||||
field: 'phone',
|
||||
label: '手机号',
|
||||
component: 'Input',
|
||||
colProps: { span: 12 },
|
||||
},
|
||||
{
|
||||
field: 'email',
|
||||
label: '邮箱',
|
||||
component: 'Input',
|
||||
colProps: { span: 12 },
|
||||
},
|
||||
{
|
||||
field: 'duty',
|
||||
label: '职位',
|
||||
component: 'Input',
|
||||
colProps: { span: 12 },
|
||||
},
|
||||
{
|
||||
field: 'note',
|
||||
label: '备注',
|
||||
component: 'InputTextArea',
|
||||
colProps: { span: 24 },
|
||||
// ifShow: ({ values }) => !isButton(values.menuType),
|
||||
},
|
||||
{
|
||||
field: 'divider-selects',
|
||||
component: 'Divider',
|
||||
label: '附属信息',
|
||||
componentProps: {},
|
||||
colProps: {
|
||||
span: 24,
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'roleIds',
|
||||
label: '所属角色',
|
||||
component: 'ApiSelect',
|
||||
// required: true,
|
||||
defaultValue: [],
|
||||
colProps: { span: 12 },
|
||||
componentProps: {
|
||||
// mode: 'multiple',
|
||||
api: getRoleList,
|
||||
resultField: 'data',
|
||||
},
|
||||
},
|
||||
]
|
@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<div>
|
||||
<BasicTable @register="registerTable">
|
||||
<template #toolbar>
|
||||
<a-button type="primary" @click="handleCreate"> 新增租户 </a-button>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'userName'">
|
||||
<span style="color: #0d84ff" @click="handleEdit(record)">{{ record.userName }}</span>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
icon: 'ant-design:solution-outlined',
|
||||
tooltip: '授权',
|
||||
onClick: handleEdit.bind(null, record),
|
||||
},
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<UserModal @register="registerModal" @success="handleSuccess" />
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { defineComponent, onMounted, ref } from 'vue'
|
||||
import { BasicTable, useTable, TableAction } from '/@/components/Table'
|
||||
import { GetTenantList } from '/@/api/system/tenant'
|
||||
import { useModal } from '/@/components/Modal'
|
||||
import UserModal from './UserModal.vue'
|
||||
import { columns, searchFormSchema } from './columns'
|
||||
const dictOptions = ref<any[]>([])
|
||||
const [registerModal, { openModal }] = useModal()
|
||||
const [registerPermissionModal, { openModal: openPermissionModal }] = useModal()
|
||||
const [registerTable, { reload, getForm, getPaginationRef }] = useTable({
|
||||
title: '租户列表',
|
||||
// api: getSysDictTypeList,
|
||||
api: async (p) => {
|
||||
const res: API.DataResult = await GetTenantList(p)
|
||||
// console.log(items);
|
||||
return new Promise((resolve) => {
|
||||
resolve({ data: [...res.data], total: res.count })
|
||||
})
|
||||
},
|
||||
beforeFetch: () => {
|
||||
var currentPageInfo: any = getPaginationRef()
|
||||
var data = getForm().getFieldsValue()
|
||||
const postParam: API.PageRequest = {
|
||||
queryCondition: '',
|
||||
pageCondition: {
|
||||
pageIndex: currentPageInfo.current,
|
||||
pageSize: currentPageInfo.pageSize,
|
||||
sortConditions: [],
|
||||
},
|
||||
}
|
||||
let condition: API.ConditionItem[] = []
|
||||
if (!!data.UserName) {
|
||||
condition.push({
|
||||
FieldName: 'UserName',
|
||||
FieldValue: data.UserName,
|
||||
ConditionalType: 1,
|
||||
})
|
||||
}
|
||||
if (!!data.UserCode) {
|
||||
condition.push({
|
||||
FieldName: 'UserCode',
|
||||
FieldValue: data.UserCode,
|
||||
ConditionalType: 1,
|
||||
})
|
||||
}
|
||||
postParam.queryCondition = JSON.stringify(condition)
|
||||
// console.log(postParam);
|
||||
return postParam
|
||||
},
|
||||
columns,
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
isTreeTable: false,
|
||||
pagination: true,
|
||||
striped: true,
|
||||
useSearchForm: true,
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
showIndexColumn: true,
|
||||
canResize: false,
|
||||
actionColumn: {
|
||||
width: 80,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
fixed: undefined,
|
||||
},
|
||||
})
|
||||
|
||||
function handleCreate() {
|
||||
openModal(true, {
|
||||
isParent: false,
|
||||
isUpdate: false,
|
||||
})
|
||||
}
|
||||
|
||||
function handleEdit(record: Recordable) {
|
||||
openModal(true, {
|
||||
record,
|
||||
isUpdate: true,
|
||||
})
|
||||
}
|
||||
function handleDelete(record: Recordable) {
|
||||
console.log(record)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
//初始化字典选项
|
||||
})
|
||||
function handleSuccess() {
|
||||
reload()
|
||||
}
|
||||
</script>
|
Loading…
Reference in New Issue