diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 9acb807d..1ce95172 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -2,13 +2,15 @@ run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 on: push: branches: - - master + - prod jobs: Explore-Gitea-Actions: runs-on: ubuntu steps: - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 + with: + fetch-depth: 1 # 只拉取最新的1个提交(浅克隆) - name: Set up Node.js uses: http://git.missmoc.top/mocheng/setup-node@v3 diff --git a/apps/web-antd/src/api/property/resident/unit/model.d.ts b/apps/web-antd/src/api/property/resident/unit/model.d.ts index 8ae348bf..259e2abe 100644 --- a/apps/web-antd/src/api/property/resident/unit/model.d.ts +++ b/apps/web-antd/src/api/property/resident/unit/model.d.ts @@ -35,6 +35,7 @@ export interface Resident_unitVO { * 入驻位置 */ location: string; + locations: string[]; /** * 入驻时间 diff --git a/apps/web-antd/src/layouts/basic.vue b/apps/web-antd/src/layouts/basic.vue index f87a5fbd..61256dab 100644 --- a/apps/web-antd/src/layouts/basic.vue +++ b/apps/web-antd/src/layouts/basic.vue @@ -84,13 +84,13 @@ const menus = computed(() => { // icon: CircleHelp, // text: $t('ui.widgets.qa'), // }, - { - handler: () => { - router.push('/navigation'); - }, - // icon: TagOutlined, - text: '返回导航', - }, + // { + // handler: () => { + // router.push('/navigation'); + // }, + // // icon: TagOutlined, + // text: '返回导航', + // }, ]; /** * 租户选中状态 不显示个人中心 diff --git a/apps/web-antd/src/store/auth.ts b/apps/web-antd/src/store/auth.ts index cdb33525..cd8c4b9f 100644 --- a/apps/web-antd/src/store/auth.ts +++ b/apps/web-antd/src/store/auth.ts @@ -56,9 +56,7 @@ export const useAuthStore = defineStore('auth', () => { if (accessStore.loginExpired) { accessStore.setLoginExpired(false); } else { - onSuccess - ? await onSuccess?.() - : await router.push('/navigation'); + onSuccess ? await onSuccess?.() : await router.push('/analytics'); } if (userInfo?.realName) { diff --git a/apps/web-antd/src/views/dashboard/analytics/analytics-visits-source.vue b/apps/web-antd/src/views/dashboard/analytics/analytics-visits-source.vue index d97c3c0f..fd3bf104 100644 --- a/apps/web-antd/src/views/dashboard/analytics/analytics-visits-source.vue +++ b/apps/web-antd/src/views/dashboard/analytics/analytics-visits-source.vue @@ -26,7 +26,7 @@ onMounted(() => { { name: '搜索引擎', value: 1048 }, { name: '直接访问', value: 735 }, { name: '邮件营销', value: 580 }, - { name: '联盟广告', value: 484 }, + // { name: '联盟广告', value: 484 }, ], emphasis: { label: { diff --git a/apps/web-antd/src/views/dashboard/analytics/index.vue b/apps/web-antd/src/views/dashboard/analytics/index.vue index 5e3d6d28..0236c92a 100644 --- a/apps/web-antd/src/views/dashboard/analytics/index.vue +++ b/apps/web-antd/src/views/dashboard/analytics/index.vue @@ -25,29 +25,29 @@ const overviewItems: AnalysisOverviewItem[] = [ icon: SvgCardIcon, title: '用户量', totalTitle: '总用户量', - totalValue: 120_000, - value: 2000, + totalValue: 78, + value: 15, }, { icon: SvgCakeIcon, title: '访问量', totalTitle: '总访问量', - totalValue: 500_000, - value: 20_000, + totalValue: 2_278, + value: 461, }, { icon: SvgDownloadIcon, title: '下载量', totalTitle: '总下载量', - totalValue: 120_000, - value: 8000, + totalValue: 17, + value: 2, }, { icon: SvgBellIcon, title: '使用量', totalTitle: '总使用量', - totalValue: 50_000, - value: 5000, + totalValue: 6_652, + value: 3_739, }, ]; diff --git a/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts b/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts index f2428646..3e5d020d 100644 --- a/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts +++ b/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts @@ -2,8 +2,6 @@ import type {FormSchemaGetter} from '#/adapter/form'; import type {VxeGridProps} from '#/adapter/vxe-table'; import {renderDict} from "#/utils/render"; import {getDictOptions} from "#/utils/dict"; -import {h} from "vue"; -import {Rate} from "ant-design-vue"; export const querySchema: FormSchemaGetter = () => [ { @@ -96,34 +94,34 @@ export const columns: VxeGridProps['columns'] = [ // field: 'planCompleTime', // width: 100, // }, - { - title: '完成时间', - field: 'compleTime', - width: 100, - }, - { - title: '评价', - field: 'serviceEvalua', - width: 180, - slots: { - default: ({row}) => { - return h(Rate, { - value: row.serviceEvalua || 0, - disabled: true, - }); - }, - }, - }, - { - title: '是否超时', - field: 'isTimeOut', - width: 100, - slots: { - default: ({row}) => { - return row.isTimeOut ? renderDict(row.isTimeOut, 'wy_sf') : ''; - }, - }, - }, + // { + // title: '完成时间', + // field: 'compleTime', + // width: 100, + // }, + // { + // title: '评价', + // field: 'serviceEvalua', + // width: 180, + // slots: { + // default: ({row}) => { + // return h(Rate, { + // value: row.serviceEvalua || 0, + // disabled: true, + // }); + // }, + // }, + // }, + // { + // title: '是否超时', + // field: 'isTimeOut', + // width: 100, + // slots: { + // default: ({row}) => { + // return row.isTimeOut ? renderDict(row.isTimeOut, 'wy_sf') : ''; + // }, + // }, + // }, { title: '创建时间', field: 'createTime', diff --git a/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue b/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue index 6a53cfa8..85309d52 100644 --- a/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue +++ b/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue @@ -47,7 +47,7 @@ async function handleOpenChange(open: boolean) { try { if (orderDetail.value.orderImgUrl) { const res = await ossInfo([orderDetail.value.orderImgUrl]); - let imgUrls = []; + let imgUrls = [] as string[]; res.forEach(item => { imgUrls.push(item.url) }) @@ -55,7 +55,7 @@ async function handleOpenChange(open: boolean) { } if (orderDetail.value.imgUrl) { const res = await ossInfo([orderDetail.value.imgUrl]); - let imgUrls = []; + let imgUrls = [] as string[]; res.forEach(item => { imgUrls.push(item.url) }) @@ -106,7 +106,6 @@ async function handleOpenChange(open: boolean) { - {{ orderDetail.remark }} diff --git a/apps/web-antd/src/views/property/costManagement/costMeterWater/costMeterWater-modal.vue b/apps/web-antd/src/views/property/costManagement/costMeterWater/costMeterWater-modal.vue index 4a0c76fc..6446d59e 100644 --- a/apps/web-antd/src/views/property/costManagement/costMeterWater/costMeterWater-modal.vue +++ b/apps/web-antd/src/views/property/costManagement/costMeterWater/costMeterWater-modal.vue @@ -19,7 +19,7 @@ import { personList } from '#/api/property/resident/person'; const emit = defineEmits<{ reload: [] }>(); const costItemsOptions = ref([]); const meterTypeOptions = ref([]); -const isMeterType = ref(false); +const isMeterType = ref(false); //是否选择了费用类型 const isUpdate = ref(false); const title = computed(() => { return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); @@ -70,6 +70,7 @@ const schema = [ isMeterType.value = false; } else { isMeterType.value = true; + // 获取费用项目 const costItemsRes = await costItemSettingList({ pageSize: 1000000000, pageNum: 1, @@ -79,10 +80,11 @@ const schema = [ label: item.chargeItem, value: item.id, })); + // 获取抄表类型:水费字典为0,电费为1 const meterTypeRes = await meterReadingTypeList({ pageSize: 1000000000, pageNum: 1, - costType: value == '5' ? 0 : 1, + meterType: value == '5' ? '0' : '1', }); meterTypeOptions.value = (meterTypeRes?.rows || []).map((item) => ({ label: item.name, diff --git a/apps/web-antd/src/views/property/costManagement/costMeterWater/data.ts b/apps/web-antd/src/views/property/costManagement/costMeterWater/data.ts index ee2b470c..d0a52f2c 100644 --- a/apps/web-antd/src/views/property/costManagement/costMeterWater/data.ts +++ b/apps/web-antd/src/views/property/costManagement/costMeterWater/data.ts @@ -35,7 +35,7 @@ export const columns: VxeGridProps['columns'] = [ }, { title: '抄表类型', - field: 'meterTypeId', + field: 'costTypeName', }, { title: '本期度数', diff --git a/apps/web-antd/src/views/property/costManagement/paymentReview/data.ts b/apps/web-antd/src/views/property/costManagement/paymentReview/data.ts index cb93ed50..f265f3d3 100644 --- a/apps/web-antd/src/views/property/costManagement/paymentReview/data.ts +++ b/apps/web-antd/src/views/property/costManagement/paymentReview/data.ts @@ -33,8 +33,13 @@ export const querySchema: FormSchemaGetter = () => [ export const columns: VxeGridProps['columns'] = [ { type: 'checkbox', width: 60 }, { - title: '房屋', - field: 'roomNumber', + title: '费用类型', + field: 'costType', + slots: { + default: ({ row }) => { + return renderDict(row.costType, 'pro_expense_type'); + }, + }, }, { title: '费用项目', diff --git a/apps/web-antd/src/views/property/costManagement/paymentReview/paymentReview-detail.vue b/apps/web-antd/src/views/property/costManagement/paymentReview/paymentReview-detail.vue index 875676fc..40401079 100644 --- a/apps/web-antd/src/views/property/costManagement/paymentReview/paymentReview-detail.vue +++ b/apps/web-antd/src/views/property/costManagement/paymentReview/paymentReview-detail.vue @@ -36,7 +36,7 @@ async function handleOpenChange(open: boolean) { - + {{ paymentReviewDetail.roomNumber }} diff --git a/apps/web-antd/src/views/property/customerService/contingenPlan/contingenPlan-examine.vue b/apps/web-antd/src/views/property/customerService/contingenPlan/contingenPlan-examine.vue new file mode 100644 index 00000000..f530abe4 --- /dev/null +++ b/apps/web-antd/src/views/property/customerService/contingenPlan/contingenPlan-examine.vue @@ -0,0 +1,88 @@ + + + + diff --git a/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts b/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts index 933e55ec..422a7415 100644 --- a/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts +++ b/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts @@ -156,3 +156,27 @@ export const modalSchema: FormSchemaGetter = () => [ rules: 'required', }, ]; + +export const schema: FormSchemaGetter = () => [ + { + label: '主键', + fieldName: 'id', + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + }, + { + label: '演练状态', + fieldName: 'status', + component: 'RadioGroup', + componentProps: { + options: [ + { label: '已取消', value: 1 }, + { label: '待进行', value: 2 }, + ], + }, + rules: 'required', + } +]; diff --git a/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue b/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue index 5d105101..358cb853 100644 --- a/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue +++ b/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue @@ -18,6 +18,7 @@ import type { ContingenPlanForm } from '#/api/property/customerService/contingen import { commonDownloadExcel } from '#/utils/file/download'; import contingenPlanModal from './contingenPlan-modal.vue'; +import contingenPlanExamine from './contingenPlan-examine.vue'; import contingenPlanDetail from './contingenPlan-detail.vue'; import { columns, querySchema } from './data'; import {personList} from "#/api/property/resident/person"; @@ -96,10 +97,13 @@ async function handleDelete(row: Required) { await tableApi.query(); } +const [ContingenPlanExamine, contingenPlanExamineApi] = useVbenModal({ + connectedComponent: contingenPlanExamine, +}); + async function handleExamine(row: Required) { - row.status = '1' - await contingenPlanUpdate(row); - await tableApi.query(); + contingenPlanExamineApi.setData({ id: row.id }); + contingenPlanExamineApi.open(); } function handleMultiDelete() { @@ -183,19 +187,12 @@ onMounted(async () => { diff --git a/apps/web-antd/src/views/property/resident/unit/data.ts b/apps/web-antd/src/views/property/resident/unit/data.ts index a7ac0cae..7e7358f9 100644 --- a/apps/web-antd/src/views/property/resident/unit/data.ts +++ b/apps/web-antd/src/views/property/resident/unit/data.ts @@ -157,7 +157,7 @@ export const modalSchema: FormSchemaGetter = () => [ }, { label: '入驻位置', - fieldName: 'location', + fieldName: 'locations', component: 'TreeSelect', rules: 'selectRequired', formItemClass: 'col-span-2' diff --git a/apps/web-antd/src/views/property/resident/unit/unit-modal.vue b/apps/web-antd/src/views/property/resident/unit/unit-modal.vue index 3346c219..0d5d78a7 100644 --- a/apps/web-antd/src/views/property/resident/unit/unit-modal.vue +++ b/apps/web-antd/src/views/property/resident/unit/unit-modal.vue @@ -64,7 +64,11 @@ const [BasicModal, modalApi] = useVbenModal({ await initLocationOptions(); if (isUpdate.value && id) { const record = await resident_unitInfo(id); - await formApi.setValues({...record,authTime:[record.authBegDate,record.authEndDate]}); + let roomIds=record.location.split(',') + await formApi.setValues({...record, + authTime:[record.authBegDate,record.authEndDate], + locations:roomIds + }); } await markInitialized(); @@ -84,7 +88,7 @@ async function handleConfirm() { data.authBegDate = data.authTime[0]; data.authEndDate = data.authTime[1]; - + data.location=data.locations.join(',') await (isUpdate.value ? resident_unitUpdate(data) : resident_unitAdd(data)); resetInitialized(); emit('reload'); @@ -125,8 +129,9 @@ async function initLocationOptions() { treeNodeFilterProp: 'label', // 选中后显示在输入框的值 treeNodeLabelProp: 'fullName', + multiple:true }), - fieldName: 'location', + fieldName: 'locations', }, ]); } diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceReservationRecords/data.ts b/apps/web-antd/src/views/property/roomBooking/conferenceReservationRecords/data.ts index e21faef6..6fd44227 100644 --- a/apps/web-antd/src/views/property/roomBooking/conferenceReservationRecords/data.ts +++ b/apps/web-antd/src/views/property/roomBooking/conferenceReservationRecords/data.ts @@ -43,16 +43,16 @@ export const columns: VxeGridProps['columns'] = [ field: 'unitName', minWidth:'120' }, - { - title: '预定人', - field: 'personName', - minWidth:'120' - }, - { - title: '联系方式', - field: 'phone', - minWidth:'120' - }, + // { + // title: '预定人', + // field: 'personName', + // minWidth:'120' + // }, + // { + // title: '联系方式', + // field: 'phone', + // minWidth:'120' + // }, // { // title: '预定时间', // field: 'scheduledStarttime', @@ -64,7 +64,7 @@ export const columns: VxeGridProps['columns'] = [ { title: '预定时间', field: 'scheduledStarttime', - minWidth: '180', + minWidth: '200', formatter: ({ row }) => { const start = row.scheduledStarttime; const end = row.scheduledEndtime; diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceReservations/index.vue b/apps/web-antd/src/views/property/roomBooking/conferenceReservations/index.vue index 69fea076..e0466038 100644 --- a/apps/web-antd/src/views/property/roomBooking/conferenceReservations/index.vue +++ b/apps/web-antd/src/views/property/roomBooking/conferenceReservations/index.vue @@ -10,9 +10,14 @@ - + - - @@ -113,7 +119,7 @@ async function handleSearch() { openStartHours: openStartHours??undefined, openEndHours:openEndHours??undefined, appointmentTime:formState.appointmentTime?formState.appointmentTime.format('YYYY-MM-DD'):undefined, - meetingRoomType:formState.meetingRoomType + meetingRoomType:formState.meetingRoomType=='all'?undefined:formState.meetingRoomType, } meetingList.value =await notlist(obj); } diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts index 1c829d53..866e5f5a 100644 --- a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts +++ b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts @@ -42,7 +42,7 @@ export const columns: VxeGridProps['columns'] = [ field: 'meetingRoomType', slots: { default: ({row}) => { - return renderDict(row.meetingRoomType, 'meeting_room_type'); + return row.meetingRoomType!=null?renderDict(row.meetingRoomType, 'meeting_room_type'):''; }, }, minWidth:100, diff --git a/apps/web-antd/src/views/property/visitorManagement/visitorTodo/data.ts b/apps/web-antd/src/views/property/visitorManagement/visitorTodo/data.ts index 03cc4caa..7f305ccc 100644 --- a/apps/web-antd/src/views/property/visitorManagement/visitorTodo/data.ts +++ b/apps/web-antd/src/views/property/visitorManagement/visitorTodo/data.ts @@ -1,5 +1,6 @@ import type { FormSchemaGetter } from '#/adapter/form'; import type { VxeGridProps } from '#/adapter/vxe-table'; +import {renderDict} from "#/utils/render"; export const querySchema: FormSchemaGetter = () => [ { @@ -87,6 +88,11 @@ export const columns: VxeGridProps['columns'] = [ { title: '事由', field: 'visitingReason', + slots: { + default: ({ row }) => { + return renderDict(row.visitingReason, 'reason_for_visit'); + }, + }, }, { title: '拜访时间', diff --git a/packages/effects/layouts/src/authentication/authentication.vue b/packages/effects/layouts/src/authentication/authentication.vue index 6dcac873..98378e4e 100644 --- a/packages/effects/layouts/src/authentication/authentication.vue +++ b/packages/effects/layouts/src/authentication/authentication.vue @@ -36,17 +36,17 @@ const { authPanelCenter, authPanelLeft, authPanelRight, isDark } = usePreferences(); -->