feat(sis): 电梯信息增加楼层授权功能

This commit is contained in:
zcxlsm 2025-07-16 21:58:55 +08:00
parent a6cc9b783e
commit 637f184387
5 changed files with 124 additions and 1 deletions

View File

@ -59,3 +59,11 @@ export function floorUpdate(data: FloorForm) {
export function floorRemove(id: ID | IDS) {
return requestClient.deleteWithMsg<void>(`/property/floor/${id}`);
}
/**
* ID查询楼层
* @param id id
*/
export function queryByUnitId(id: ID | IDS) {
return requestClient.get<FloorVO[]>(`/property/floor/queryByUnitId/${id}`);
}

View File

@ -194,6 +194,11 @@ export interface ElevatorInfoForm extends BaseEntity {
*/
controlPwd?: string;
/**
* ID
*/
unitId?: number;
}
export interface ElevatorInfoQuery extends PageQuery {

View File

@ -85,7 +85,7 @@ export const columns: VxeGridProps['columns'] = [
fixed: 'right',
slots: { default: 'action' },
title: '操作',
width: 180,
width: 240,
},
];

View File

@ -0,0 +1,96 @@
<script setup lang="ts">
import { ref } from 'vue'
import { cloneDeep } from '@vben/utils'
import { useVbenModal } from '@vben/common-ui'
import { useVbenForm } from '#/adapter/form'
import { queryByUnitId } from '#/api/property/floor'
import { message } from 'ant-design-vue'
import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'
const dataForm = ref<any>()
const floorArr = ref<any[]>([])
const title = ref('楼层授权')
const [BasicModal, modalApi] = useVbenModal({
//
class: 'w-[700px]',
fullscreenButton: false,
onClosed: handleClosed,
onConfirm: handleConfirm,
onOpened: () => {
dataForm.value = modalApi.getData()
const { unitId } = modalApi.getData()
queryByUnitId(unitId).then((res) => {
const arr: any[] = []
res.forEach((item) => {
arr.push({
label: item.floorName,
value: item.id,
})
})
floorArr.value = arr
})
}
})
const [BasicForm, formApi] = useVbenForm({
//
commonConfig: {
//
formItemClass: 'col-span-1',
//
componentProps: {
class: 'w-full',
},
},
layout: 'horizontal',
schema: [
{
component: 'CheckboxGroup',
componentProps: {
name: 'cname',
options: floorArr,
},
fieldName: 'checkboxGroup',
label: '楼层'
}],
wrapperClass: 'grid-cols-1',
showDefaultActions: false
})
// formApi.updateSchema(
// [
// {
// componentProps: {
// options: floorArr,
// },
// fieldName: 'checkboxGroup',
// },
// ])
const { resetInitialized } = useBeforeCloseDiff(
{
initializedGetter: defaultFormValueGetter(formApi),
currentGetter: defaultFormValueGetter(formApi),
},
)
async function handleConfirm() {
// getValuesreadonly
const data = cloneDeep(await formApi.getValues())
console.log(data)
console.log(dataForm.value.elevatorId)
modalApi.close()
}
async function handleClosed() {
await formApi.resetForm()
resetInitialized()
}
</script>
<template>
<BasicModal :title="title">
<BasicForm />
</BasicModal>
</template>

View File

@ -25,6 +25,7 @@ import { commonDownloadExcel } from '#/utils/file/download';
import elevatorInfoModal from './elevatorInfo-modal.vue';
import { columns, querySchema } from './data';
import floorAuthModal from './floorAuth-modal.vue';
const formOptions: VbenFormProps = {
commonConfig: {
@ -88,6 +89,10 @@ const [ElevatorInfoModal, modalApi] = useVbenModal({
connectedComponent: elevatorInfoModal,
});
const [FloorAuthModal, floorAuthModalApi] = useVbenModal({
connectedComponent: floorAuthModal,
});
function handleAdd() {
modalApi.setData({});
modalApi.open();
@ -122,6 +127,12 @@ function handleDownloadExcel() {
fieldMappingTime: formOptions.fieldMappingTime,
});
}
function handleAuth(row: Required<ElevatorInfoForm>) {
floorAuthModalApi.setData({ unitId: row.unitId, elevatorId: row.elevatorId });
floorAuthModalApi.open();
}
</script>
<template>
@ -154,6 +165,8 @@ function handleDownloadExcel() {
</template>
<template #action="{ row }">
<Space>
<ghost-button @click.stop="handleAuth(row)">楼层授权</ghost-button>
<ghost-button
v-access:code="['sis:elevatorInfo:edit']"
@click.stop="handleEdit(row)"
@ -178,5 +191,6 @@ function handleDownloadExcel() {
</template>
</BasicTable>
<ElevatorInfoModal @reload="tableApi.query()" />
<FloorAuthModal @reload="tableApi.query()" />
</Page>
</template>