From 9a95e2b7e33b69af2ecf6e2e7fa96234d9e1529e Mon Sep 17 00:00:00 2001 From: Zy <1448159279@qq.com> Date: Fri, 17 Apr 2026 19:39:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=95=B0=E6=8D=AE=EF=BC=8C?= =?UTF-8?q?=E5=BC=80=E5=A7=8B=E5=AE=89=E5=85=A8=E5=B7=A1=E6=A3=80=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 31 +- src/api/system/InspectionPlan/index.ts | 63 +++ src/api/system/InspectionPlan/type.ts | 165 ++++++ src/api/system/InspectionRecord/index.ts | 63 +++ src/api/system/InspectionRecord/type.ts | 109 ++++ src/api/system/community/type.ts | 2 +- src/api/system/houseRental/index.ts | 2 +- src/api/system/houseRental/type.ts | 13 +- src/api/system/resident/type.ts | 12 +- src/assets/icons/svg/zhuangxiu.svg | 2 +- src/assets/images/index/1.png | Bin 0 -> 6541 bytes src/assets/images/index/2.png | Bin 0 -> 6891 bytes src/assets/images/index/3.png | Bin 0 -> 7465 bytes src/assets/images/index/5.png | Bin 0 -> 6722 bytes src/assets/images/index/6.png | Bin 0 -> 7008 bytes src/components/Echarts/index.vue | 22 +- src/components/Holder/index.vue | 11 +- src/layout/index.vue | 77 ++- src/store/modules/house.ts | 5 +- src/utils/request.ts | 45 +- src/utils/time.ts | 51 ++ src/views/community/AddCommunity.vue | 1 + src/views/community/index.vue | 2 + src/views/system/Activity/addActivity.vue | 10 +- src/views/system/Activity/index.vue | 1 - src/views/system/Complaint/complainMain.vue | 1 - src/views/system/Complaint/index.vue | 1 - .../system/ComplaintType/addComplaintType.vue | 3 +- src/views/system/ComplaintType/index.vue | 5 +- src/views/system/Decoration/addDecoration.vue | 45 +- src/views/system/Decoration/index.vue | 11 +- src/views/system/HandleLog/addHandleLog.vue | 1 - src/views/system/HandleLog/index.vue | 1 - .../InspectionPlan/addInspectionPlan.vue | 205 +++++++ src/views/system/InspectionPlan/index.vue | 222 ++++++++ .../InspectionRecord/InspectionRecordMain.vue | 161 ++++++ src/views/system/InspectionRecord/index.vue | 223 ++++++++ src/views/system/MonthCard/addMonthCard.vue | 2 - src/views/system/MonthCard/index.vue | 11 +- src/views/system/NoticePc/addNoticePc.vue | 1 - src/views/system/NoticePc/index.vue | 1 - .../system/ParkingCost/addParkingCost.vue | 6 +- src/views/system/ParkingCost/index.vue | 1 - .../system/Questionnaire/addQuestionnaire.vue | 16 +- .../components/QuestionnaireEdit.vue | 2 +- src/views/system/Questionnaire/index.vue | 10 +- src/views/system/Repair/addRepair.vue | 1 - src/views/system/Repair/addRepairlist.vue | 3 +- src/views/system/Repair/index.vue | 1 - src/views/system/Repair/repairlist.vue | 5 +- src/views/system/Visitor/index.vue | 1 - src/views/system/carArea/addCarArea.vue | 2 - src/views/system/carArea/index.vue | 1 - src/views/system/cars/addCars.vue | 2 - src/views/system/cars/index.vue | 10 +- src/views/system/house/AddBuilding.vue | 5 +- src/views/system/house/AddHouse.vue | 8 +- .../house/components/components/table.vue | 10 +- src/views/system/house/components/unit.vue | 2 + .../system/houseRental/addhouseResident.vue | 16 +- src/views/system/houseRental/houseMain.vue | 35 +- src/views/system/houseRental/index.vue | 1 - src/views/system/parking/addParking.vue | 2 - src/views/system/parking/index.vue | 14 +- src/views/system/parking/parkMain.vue | 7 +- src/views/system/resident/ResidentMain.vue | 22 +- src/views/system/resident/addResident.vue | 3 +- src/views/system/resident/index.vue | 39 +- src/views/system/storeroom/addStoreRoom.vue | 3 +- src/views/system/storeroom/index.vue | 1 - src/views/system/user/index.vue | 2 +- src/views/system/user/profile/index.vue | 8 +- src/views/workbench/index2.vue | 522 +++++++++++------- vite.config.ts | 3 +- 74 files changed, 1942 insertions(+), 403 deletions(-) create mode 100644 src/api/system/InspectionPlan/index.ts create mode 100644 src/api/system/InspectionPlan/type.ts create mode 100644 src/api/system/InspectionRecord/index.ts create mode 100644 src/api/system/InspectionRecord/type.ts create mode 100644 src/assets/images/index/1.png create mode 100644 src/assets/images/index/2.png create mode 100644 src/assets/images/index/3.png create mode 100644 src/assets/images/index/5.png create mode 100644 src/assets/images/index/6.png create mode 100644 src/views/system/InspectionPlan/addInspectionPlan.vue create mode 100644 src/views/system/InspectionPlan/index.vue create mode 100644 src/views/system/InspectionRecord/InspectionRecordMain.vue create mode 100644 src/views/system/InspectionRecord/index.vue diff --git a/src/App.vue b/src/App.vue index 617a10e..f6a3658 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,6 @@ @@ -17,4 +17,33 @@ onMounted(() => { handleThemeStyle(useSettingsStore().theme); }); }); + +const scale = ref(1); +// 设计稿宽度(你是多少就写多少,一般 1920) +const DESIGN_WIDTH = 1920; + +// 计算缩放 +const setScale = () => { + const clientWidth = document.documentElement.clientWidth; + let ratio = clientWidth / DESIGN_WIDTH; + // 最小缩到 0.7(防止太小看不清) + if (ratio < 0.7) ratio = 0.7; + // 最大不超过 1 + if (ratio > 1) ratio = 1; + scale.value = ratio; +}; + +// 监听窗口变化 +const resizeListener = () => { + setScale(); +}; + +onMounted(() => { + setScale(); + window.addEventListener('resize', resizeListener); +}); + +onUnmounted(() => { + window.removeEventListener('resize', resizeListener); +}); diff --git a/src/api/system/InspectionPlan/index.ts b/src/api/system/InspectionPlan/index.ts new file mode 100644 index 0000000..847d85d --- /dev/null +++ b/src/api/system/InspectionPlan/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { PlanVO, PlanForm, PlanQuery } from '@/api/system/InspectionPlan/type'; + +/** + * 查询巡检计划列表 + * @param query + * @returns {*} + */ + +export const listPlan = (query?: PlanQuery): AxiosPromise => { + return request({ + url: '/inspection/plan/list', + method: 'get', + params: query + }); +}; + +/** + * 查询巡检计划详细 + * @param id + */ +export const getPlan = (id: string | number): AxiosPromise => { + return request({ + url: '/inspection/plan/' + id, + method: 'get' + }); +}; + +/** + * 新增巡检计划 + * @param data + */ +export const addPlan = (data: PlanForm) => { + return request({ + url: '/inspection/plan', + method: 'post', + data: data + }); +}; + +/** + * 修改巡检计划 + * @param data + */ +export const updatePlan = (data: PlanForm) => { + return request({ + url: '/inspection/plan', + method: 'put', + data: data + }); +}; + +/** + * 删除巡检计划 + * @param id + */ +export const delPlan = (id: string | number | Array) => { + return request({ + url: '/inspection/plan/' + id, + method: 'delete' + }); +}; diff --git a/src/api/system/InspectionPlan/type.ts b/src/api/system/InspectionPlan/type.ts new file mode 100644 index 0000000..a0c20f1 --- /dev/null +++ b/src/api/system/InspectionPlan/type.ts @@ -0,0 +1,165 @@ +export interface PlanVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 巡检计划名称 + */ + planName: string; + + /** + * 巡检人员ID,多个用逗号分隔 + */ + inspectorIds: string | number; + + /** + * 执行周期,如:开始日期-结束日期 + */ + executeCycle: string; + + /** + * 任务时间 + */ + taskTime: string; + + /** + * 提醒时间 + */ + remindTime: string; + + /** + * 巡检设置:0-必须拍照,1-可以跳检 + */ + inspectSetting: number; + + /** + * 计划路线,多个用逗号分隔 + */ + routeIds: string | number; + + /** + * 状态:0-关闭,1-开启 + */ + status: number; + + /** + * 备注 + */ + remark: string; + + /** + * 执行周期具体日期 + */ + executeDay: string; +} + +export interface PlanForm extends BaseEntity { + /** + * 主键ID + */ + id?: string | number; + + /** + * 巡检计划名称 + */ + planName?: string; + + /** + * 巡检人员ID,多个用逗号分隔 + */ + inspectorIds?: string | number; + + /** + * 执行周期,如:开始日期-结束日期 + */ + executeCycle?: string; + + /** + * 任务时间 + */ + taskTime?: string; + + /** + * 提醒时间 + */ + remindTime?: string; + + /** + * 巡检设置:0-必须拍照,1-可以跳检 + */ + inspectSetting?: number; + + /** + * 计划路线,多个用逗号分隔 + */ + routeIds?: string | number; + + /** + * 状态:0-关闭,1-开启 + */ + status?: number; + + /** + * 备注 + */ + remark?: string; + + /** + * 执行周期具体日期 + */ + executeDay?: string; +} + +export interface PlanQuery extends PageQuery { + /** + * 巡检计划名称 + */ + planName?: string; + + /** + * 巡检人员ID,多个用逗号分隔 + */ + inspectorIds?: string | number; + + /** + * 执行周期,如:开始日期-结束日期 + */ + executeCycle?: string; + + /** + * 任务时间 + */ + taskTime?: string; + + /** + * 提醒时间 + */ + remindTime?: string; + + /** + * 巡检设置:0-必须拍照,1-可以跳检 + */ + inspectSetting?: number; + + /** + * 计划路线,多个用逗号分隔 + */ + routeIds?: string | number; + + /** + * 状态:0-关闭,1-开启 + */ + status?: number; + + /** + * 执行周期具体日期 + */ + executeDay?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/src/api/system/InspectionRecord/index.ts b/src/api/system/InspectionRecord/index.ts new file mode 100644 index 0000000..7a36c53 --- /dev/null +++ b/src/api/system/InspectionRecord/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { RecordVO, RecordForm, RecordQuery } from '@/api/system/InspectionRecord/type'; + +/** + * 查询巡检记录主列表 + * @param query + * @returns {*} + */ + +export const listRecord = (query?: RecordQuery): AxiosPromise => { + return request({ + url: '/inspection/record/list', + method: 'get', + params: query + }); +}; + +/** + * 查询巡检记录主详细 + * @param id + */ +export const getRecord = (id: string | number): AxiosPromise => { + return request({ + url: '/inspection/record/' + id, + method: 'get' + }); +}; + +/** + * 新增巡检记录主 + * @param data + */ +export const addRecord = (data: RecordForm) => { + return request({ + url: '/inspection/record', + method: 'post', + data: data + }); +}; + +/** + * 修改巡检记录主 + * @param data + */ +export const updateRecord = (data: RecordForm) => { + return request({ + url: '/inspection/record', + method: 'put', + data: data + }); +}; + +/** + * 删除巡检记录主 + * @param id + */ +export const delRecord = (id: string | number | Array) => { + return request({ + url: '/inspection/record/' + id, + method: 'delete' + }); +}; diff --git a/src/api/system/InspectionRecord/type.ts b/src/api/system/InspectionRecord/type.ts new file mode 100644 index 0000000..c36412f --- /dev/null +++ b/src/api/system/InspectionRecord/type.ts @@ -0,0 +1,109 @@ +export interface RecordVO { + actualEndTime?: null; + actualStartTime?: null; + createByName?: null; + createTime?: string; + details?: null; + id?: string; + inspectorId?: number; + inspectorName?: string; + planId?: string; + planName?: string; + remark?: null; + routeId?: string; + routeName?: string; + status?: number; + statusLabel?: null; + taskName?: string; + taskTime?: string; + updateTime?: string; +} + +export interface RecordForm extends BaseEntity { + /** + * 主键ID + */ + id?: string | number; + + /** + * 关联巡检任务ID + */ + taskId?: string | number; + + /** + * 关联巡检计划ID + */ + planId?: string | number; + + /** + * 巡检人员ID + */ + inspectorId?: string | number; + + /** + * 巡检路线ID + */ + routeId?: string | number; + + /** + * 任务开始时间 + */ + startTime?: string; + + /** + * 任务结束时间 + */ + endTime?: string; + + /** + * 执行状态(字典:inspection_exec_status 0-按时完成 1-超时完成 2-未完成) + */ + execStatus?: number; + + /** + * 备注 + */ + remark?: string; +} + +export interface RecordQuery extends PageQuery { + /** + * 关联巡检任务ID + */ + taskId?: string | number; + + /** + * 关联巡检计划ID + */ + planId?: string | number; + + /** + * 巡检人员ID + */ + inspectorId?: string | number; + + /** + * 巡检路线ID + */ + routeId?: string | number; + + /** + * 任务开始时间 + */ + startTime?: string; + + /** + * 任务结束时间 + */ + endTime?: string; + + /** + * 执行状态(字典:inspection_exec_status 0-按时完成 1-超时完成 2-未完成) + */ + execStatus?: number; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/src/api/system/community/type.ts b/src/api/system/community/type.ts index 212c583..59e358f 100644 --- a/src/api/system/community/type.ts +++ b/src/api/system/community/type.ts @@ -8,7 +8,7 @@ export interface communitylist_rows_type { remark: string; parkingSpaceCount: number; villageImageUrl: string; - city: string | string[]; + city: string; status: '0' | '1'; manageName: string; managePhone: string; diff --git a/src/api/system/houseRental/index.ts b/src/api/system/houseRental/index.ts index ad182f7..0964e3d 100644 --- a/src/api/system/houseRental/index.ts +++ b/src/api/system/houseRental/index.ts @@ -1,6 +1,6 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; -import { HouseRentalVO, HouseRentalForm, HouseRentalQuery } from '@/api/system/type'; +import { HouseRentalVO, HouseRentalForm, HouseRentalQuery } from '@/api/system/houseRental/type'; /** * 查询房屋租赁管理列表 diff --git a/src/api/system/houseRental/type.ts b/src/api/system/houseRental/type.ts index 48f2ccc..fbc8630 100644 --- a/src/api/system/houseRental/type.ts +++ b/src/api/system/houseRental/type.ts @@ -17,7 +17,7 @@ export interface HouseRentalVO { /** * 0 整租 1 合租 */ - rentalType: number; + rentalType: string; /** * 房屋朝向 @@ -76,11 +76,18 @@ export interface HouseRentalVO { /** * 房屋用途 */ - houseUse?: number; + houseUse: string; /** * 租赁状态 */ - rentalStatus?: number; + rentalStatus: number; + + house: string; + name: string; + pubBy: string; + pubTime: string; + houseImageUrls: string[]; + facilitieslist: string[]; } export interface HouseRentalForm extends BaseEntity { diff --git a/src/api/system/resident/type.ts b/src/api/system/resident/type.ts index c88ce21..e4632fe 100644 --- a/src/api/system/resident/type.ts +++ b/src/api/system/resident/type.ts @@ -155,15 +155,15 @@ export interface ResidentQuery extends PageQuery { * 住户类型 * 0业主 1租户 */ - type: string; + type?: string; /** * 住户状态 * 0审核中 1 已认证 */ - status: string; + status?: string; - houseId: number; - villageId: number; - buildingId: number; - unitNo: number; + houseId?: number; + villageId?: number; + buildingId?: number; + unitNo?: number; } diff --git a/src/assets/icons/svg/zhuangxiu.svg b/src/assets/icons/svg/zhuangxiu.svg index 20fe029..8a15fa6 100644 --- a/src/assets/icons/svg/zhuangxiu.svg +++ b/src/assets/icons/svg/zhuangxiu.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/assets/images/index/1.png b/src/assets/images/index/1.png new file mode 100644 index 0000000000000000000000000000000000000000..9528844d17ac530386d82b813cbcc3de70d4790d GIT binary patch literal 6541 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/index/2.png b/src/assets/images/index/2.png new file mode 100644 index 0000000000000000000000000000000000000000..550cb624eccae86ff26cac1f4e06c0bef9ba4480 GIT binary patch literal 6891 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 C#?qMp literal 0 HcmV?d00001 diff --git a/src/assets/images/index/3.png b/src/assets/images/index/3.png new file mode 100644 index 0000000000000000000000000000000000000000..e43c19699b4af0ca29cea5303a2aa9d71a9573ba GIT binary patch literal 7465 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/index/6.png b/src/assets/images/index/6.png new file mode 100644 index 0000000000000000000000000000000000000000..a9db9c3ae20942ba02f54a15e1a41d612cb2dd39 GIT binary patch literal 7008 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 WCdGg)_42>|dC5zwNR>*M`u!J(jTuG& literal 0 HcmV?d00001 diff --git a/src/components/Echarts/index.vue b/src/components/Echarts/index.vue index 0bb406a..05bda03 100644 --- a/src/components/Echarts/index.vue +++ b/src/components/Echarts/index.vue @@ -7,9 +7,6 @@ import { ref, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'; import * as echarts from 'echarts'; import type { EChartsOption, ECharts } from 'echarts'; -// ============================================== -// ✅ 【核心修复】正确的 Vue3 + TS Props 写法 -// ============================================== interface Props { width?: string; height?: string; @@ -36,6 +33,7 @@ const emit = defineEmits<{ const chartRef = ref(); let chartInstance: ECharts | null = null; +let resizeObserver: ResizeObserver | null = null; const initChart = () => { if (!chartRef.value) return; @@ -66,8 +64,10 @@ const updateChart = () => { } }; +// ✅ 核心修复:支持 scale 缩放后重绘 const resizeChart = () => { - chartInstance?.resize(); + if (!chartInstance) return; + chartInstance.resize(); }; const getInstance = () => chartInstance; @@ -88,17 +88,19 @@ onMounted(() => { nextTick(() => initChart()); if (props.autoResize && chartRef.value) { - const resizeObserver = new ResizeObserver(resizeChart); + resizeObserver = new ResizeObserver(resizeChart); resizeObserver.observe(chartRef.value); - - onBeforeUnmount(() => { - resizeObserver.disconnect(); - }); } }); +// ✅ 关键:监听 window.resize(scale 缩放会触发 window.resize) +onMounted(() => { + window.addEventListener('resize', resizeChart); +}); + onBeforeUnmount(() => { window.removeEventListener('resize', resizeChart); + resizeObserver?.disconnect(); chartInstance?.dispose(); chartInstance = null; }); @@ -114,5 +116,7 @@ defineExpose({ diff --git a/src/components/Holder/index.vue b/src/components/Holder/index.vue index 692d5cf..f97a145 100644 --- a/src/components/Holder/index.vue +++ b/src/components/Holder/index.vue @@ -78,10 +78,17 @@ import { ResidentVO } from '@/api/system/resident/type'; import { getHousePathById } from '@/utils/house'; import { ref, watch, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue'; import { useHouseStore } from '@/store/modules/house'; -import { storeToRefs } from 'pinia'; const houseStore = useHouseStore(); -const { treedata } = storeToRefs(houseStore); + +const treedata = ref([]); +function init() { + houseStore.getCurrentVilageTreeHouse().then((res) => { + console.log(res); + treedata.value = res; + }); +} +init(); const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { com_resident_type } = toRefs(proxy?.useDict('com_resident_type')); diff --git a/src/layout/index.vue b/src/layout/index.vue index ba01dbc..42efb87 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -1,16 +1,60 @@ + + diff --git a/src/views/system/ComplaintType/index.vue b/src/views/system/ComplaintType/index.vue index 6b515c5..5584c4b 100644 --- a/src/views/system/ComplaintType/index.vue +++ b/src/views/system/ComplaintType/index.vue @@ -99,7 +99,6 @@ const data = reactive>({ queryParams: { pageNum: 1, pageSize: 10, - villageId: Number(localStorage.getItem('villageid')), name: undefined, status: undefined, createNam: undefined, @@ -145,14 +144,14 @@ const router = useRouter(); /** 新增按钮操作 */ const handleAdd = () => { router.push({ - path: '/repair/addComplantType' + path: '/system/addComplantType' }); }; /** 修改按钮操作 */ const handleUpdate = async (row?: ComplaintTypeVO) => { router.push({ - path: '/repair/addComplantType', + path: '/system/addComplantType', query: { id: row.id } diff --git a/src/views/system/Decoration/addDecoration.vue b/src/views/system/Decoration/addDecoration.vue index 2fd08ba..79c9296 100644 --- a/src/views/system/Decoration/addDecoration.vue +++ b/src/views/system/Decoration/addDecoration.vue @@ -58,10 +58,10 @@ import PageHeader from '@/components/Pageheader/index.vue'; import { addDecoration, getDecoration, updateDecoration } from '@/api/system/Decoration'; import { useHouseStore } from '@/store/modules/house'; import { CascaderValue } from 'element-plus'; +import { getHousePathById } from '@/utils/house'; const houseStore = useHouseStore(); -const { treedata } = storeToRefs(houseStore); -const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const treedata = ref([]); const route = useRoute(); const router = useRouter(); @@ -69,7 +69,6 @@ const formRef = ref(); const form = ref({ 'id': null, 'houseId': null, - villageId: Number(localStorage.getItem('villageid')), 'applyName': '', 'decorationCompany': '', 'decorationContent': '', @@ -83,21 +82,6 @@ const rules = { }; const userid = ref(); -// ! 投诉 ==================================================================================================== -function init() { - getDecoration(userid.value).then((res) => { - form.value = { - ...form.value, - ...res.data - }; - }); -} - -if (route.query.id) { - userid.value = route.query.id; - init(); -} - // 获取房屋 const userHousepath = ref([]); function handleChange(val: (string | number)[]) { @@ -107,11 +91,34 @@ function handleChange(val: (string | number)[]) { form.value.houseId = null; } } + +// ! 投诉 ==================================================================================================== +function getTree() { + houseStore.getCurrentVilageTreeHouse().then((res) => { + treedata.value = res; + if (route.query.id) { + userid.value = route.query.id; + init(); + } + }); +} +getTree(); +function init() { + getDecoration(userid.value).then((res) => { + form.value = { + ...form.value, + ...res.data + }; + const arr = getHousePathById(treedata.value, form.value.houseId); + console.log(arr); + userHousepath.value = arr; + }); +} + // 提交 const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (userid.value) { updateDecoration(form.value).then(() => { ElMessage.success('编辑成功'); diff --git a/src/views/system/Decoration/index.vue b/src/views/system/Decoration/index.vue index 368ff04..3bc1ebc 100644 --- a/src/views/system/Decoration/index.vue +++ b/src/views/system/Decoration/index.vue @@ -1,5 +1,5 @@