diff --git a/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/index.ts b/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/index.ts index a7260b35..66a61b01 100644 --- a/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/index.ts +++ b/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/index.ts @@ -59,3 +59,12 @@ export function groupUpdate(data: GroupForm) { export function groupRemove(id: ID | IDS) { return requestClient.deleteWithMsg(`/Property/group/${id}`); } + +/** + * 获取节假日数据 + * @param year + */ +export async function getHoliday(year: string) { + const response = await fetch(`https://timor.tech/api/holiday/year/${year}`); + return response.json(); +} diff --git a/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/model.d.ts b/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/model.d.ts index e189227b..ab341b73 100644 --- a/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/model.d.ts +++ b/apps/web-antd/src/api/property/attendanceManagement/attendanceGroupSettings/model.d.ts @@ -1,4 +1,4 @@ -import type { PageQuery, BaseEntity } from '#/api/common'; +import type {PageQuery, BaseEntity} from '#/api/common'; export interface GroupVO { /** @@ -63,7 +63,16 @@ export interface GroupQuery extends PageQuery { attendanceType?: number; /** - * 日期范围参数 - */ + * 日期范围参数 + */ params?: any; } + +/** + * 假期 + */ +export interface Holiday { + holiday: boolean; + name: string; + date: string; +} diff --git a/apps/web-antd/src/api/property/costManagement/houseCharge/model.d.ts b/apps/web-antd/src/api/property/costManagement/houseCharge/model.d.ts index 2188b2fb..7abe3229 100644 --- a/apps/web-antd/src/api/property/costManagement/houseCharge/model.d.ts +++ b/apps/web-antd/src/api/property/costManagement/houseCharge/model.d.ts @@ -58,6 +58,8 @@ export interface HouseChargeVO { costItemsVo: CostItemSettingVO; chargeStatus: string; + + personId: string; } export interface HouseChargeForm extends BaseEntity { diff --git a/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/data.ts b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/data.ts index d270af7e..14d851ab 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/data.ts +++ b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/data.ts @@ -2,7 +2,7 @@ import type { FormSchemaGetter } from '#/adapter/form'; import type { VxeGridProps } from '#/adapter/vxe-table'; import {getDictOptions} from "#/utils/dict"; import {renderDict} from "#/utils/render"; - +import type { TableColumnsType } from 'ant-design-vue'; export const querySchema: FormSchemaGetter = () => [ { @@ -124,6 +124,18 @@ export const modalSchema: FormSchemaGetter = () => [ rules:'required', defaultValue:'1', }, + { + label: '', + fieldName: 'shiftData', + component: 'Input', + dependencies: { + show: (formValue) => formValue.attendanceType=='1', + triggerFields: ['attendanceType'], + }, + slots:{ + default:'shiftData' + }, + }, { label: '排班周期', fieldName: 'schedulingCycle', @@ -138,32 +150,99 @@ export const modalSchema: FormSchemaGetter = () => [ defaultValue:'1', rules:'required' }, + { + label: '', + fieldName: 'cycleData', + component: 'Input', + dependencies: { + show: (formValue) => formValue.attendanceType=='1', + triggerFields: ['attendanceType'], + }, + slots:{ + default:'cycleData' + }, + }, ]; -export const weekdayColumns: VxeGridProps['columns'] = [ +export const weekdayColumns: TableColumnsType = [ { title: '工作日', - name: 'label', + key: 'label', width:180, align:'center', dataIndex:'label' }, { title: '班次', - name: 'shift', + key: 'shift', minWidth:180, align:'center', dataIndex:'shift' }, { title: '操作', - name: 'action', + key: 'action', dataIndex:'action', width:180, align:'center', - slots:{ - default:'action' - }, - }, ] + +export const noClockingColumns: TableColumnsType = [ + { + title: '无需打卡日期', + key: 'label', + width:180, + align:'center', + dataIndex:'label' + }, + { + title: '操作', + key: 'action', + dataIndex:'action', + width:180, + align:'center', + }, +] + +export const clockingColumns: TableColumnsType = [ + { + title: '必须打卡日期', + key: 'label', + width:180, + align:'center', + dataIndex:'label' + }, + { + title: '操作', + key: 'action', + dataIndex:'action', + width:180, + align:'center', + }, +] + +export const cycleColumns: TableColumnsType = [ + { + title: '天数', + key: 'label', + width:180, + align:'center', + dataIndex:'label' + }, + { + title: '班次', + key: 'label', + width:180, + align:'center', + dataIndex:'label' + }, + { + title: '操作', + key: 'action', + dataIndex:'action', + width:180, + align:'center', + }, +] + diff --git a/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue index 769c01c1..4445dbbc 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue +++ b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue @@ -13,9 +13,16 @@ import { } from '#/api/property/attendanceManagement/attendanceGroupSettings'; import {defaultFormValueGetter, useBeforeCloseDiff} from '#/utils/popup'; -import {modalSchema, weekdayColumns} from './data'; -import {Tag, Button, Table} from 'ant-design-vue' +import { + clockingColumns, + cycleColumns, + modalSchema, + noClockingColumns, + weekdayColumns +} from './data'; +import {Tag, Button, Table, Checkbox} from 'ant-design-vue' import {getDictOptions} from "#/utils/dict"; +import holidayCalendar from './holiday-calendar.vue' const emit = defineEmits<{ reload: [] }>(); @@ -24,7 +31,9 @@ const weekdayData = ref([]) const title = computed(() => { return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); }); - +const settingData = ref({ + isAutomatic: true, +}) const [BasicForm, formApi] = useVbenForm({ commonConfig: { // 默认占满两列 @@ -50,8 +59,9 @@ const {onBeforeClose, markInitialized, resetInitialized} = useBeforeCloseDiff( const [BasicModal, modalApi] = useVbenModal({ // 在这里更改宽度 - class: 'w-[70%]', + class: 'w-[80%]', fullscreenButton: false, + maskClosable:false, onBeforeClose, onClosed: handleClosed, onConfirm: handleConfirm, @@ -66,18 +76,17 @@ const [BasicModal, modalApi] = useVbenModal({ if (isUpdate.value && id) { const record = await groupInfo(id); await formApi.setValues(record); - }else { - weekdayData.value=[] - getDictOptions('wy_kqgzr').forEach(item=>{ - weekdayData.value.push({ - dayOfWeek:item.value, - label:item.label, - shift:item.value=='6'||item.value=='7'?'休息':'常规班次:08:00:00~12:00:00 14:00:00~17:00:00' - }) + } else { + weekdayData.value = [] + getDictOptions('wy_kqgzr').forEach(item => { + weekdayData.value.push({ + dayOfWeek: item.value, + label: item.label, + shift: item.value == '6' || item.value == '7' ? '休息' : '常规班次:08:00:00~12:00:00 14:00:00~17:00:00' + }) }) } await markInitialized(); - modalApi.modalLoading(false); }, }); @@ -106,41 +115,95 @@ async function handleClosed() { await formApi.resetForm(); resetInitialized(); } + +const [HolidayCalendar, holidayApi] = useVbenModal({ + connectedComponent: holidayCalendar, +}); + +/** + * 查看法定节假日日历 + */ +async function showHoliday() { + holidayApi.open() +} + + diff --git a/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/holiday-calendar.vue b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/holiday-calendar.vue new file mode 100644 index 00000000..2db5c818 --- /dev/null +++ b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/holiday-calendar.vue @@ -0,0 +1,78 @@ + + + + diff --git a/apps/web-antd/src/views/property/costManagement/houseCharge/house-charge-refund.vue b/apps/web-antd/src/views/property/costManagement/houseCharge/house-charge-refund.vue index 4d068e2f..9a67aad1 100644 --- a/apps/web-antd/src/views/property/costManagement/houseCharge/house-charge-refund.vue +++ b/apps/web-antd/src/views/property/costManagement/houseCharge/house-charge-refund.vue @@ -6,13 +6,11 @@ import {cloneDeep} from '@vben/utils'; import {useVbenForm} from '#/adapter/form'; import { - houseChargeAdd, houseChargeInfo, houseChargeRefund, - houseChargeUpdate } from '#/api/property/costManagement/houseCharge'; import {defaultFormValueGetter, useBeforeCloseDiff} from '#/utils/popup'; -import {modalSchemaRefund, modalSchemaUpdate} from './data'; +import {modalSchemaRefund} from './data'; import {renderDict} from "#/utils/render"; import {Descriptions, DescriptionsItem, Divider} from "ant-design-vue"; import type {HouseChargeVO} from "#/api/property/costManagement/houseCharge/model"; @@ -62,14 +60,15 @@ const [BasicModal, modalApi] = useVbenModal({ modalApi.modalLoading(true); const {id} = modalApi.getData() as { id?: number | string }; isUpdate.value = !!id; - record.value = await houseChargeInfo(id); - if (record.value) { - room.value = record.value.roomVo - costItem.value = record.value.costItemsVo + if(id){ + record.value = await houseChargeInfo(id); + if (record.value) { + room.value = record.value.roomVo + costItem.value = record.value.costItemsVo + } + await formApi.setValues(record.value); } - await formApi.setValues(record.value); await markInitialized(); - modalApi.modalLoading(false); }, }); @@ -83,8 +82,8 @@ async function handleConfirm() { } // getValues获取为一个readonly的对象 需要修改必须先深拷贝一次 const data = cloneDeep(await formApi.getValues()); - data.costItemsId = record.value.costItemsId - data.personId = record.value.personId + data.costItemsId = record.value?.costItemsId + data.personId = record.value?.personId await houseChargeRefund(data); resetInitialized(); emit('reload'); @@ -123,7 +122,7 @@ async function handleClosed() { {{ record.startTime }} - {{ room.roomNumber }} + {{ room?.roomNumber }} {{ `${room?.area} (套内面积:${room?.insideInArea})` }}