From 7a6dc6d28d36e4c3558391bac52d188d5075543f Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期二, 22 四月 2025 16:27:27 +0800 Subject: [PATCH] 1.完成移动端点检汇总和点检明细 --- eims-ui-mobile/src/service/maint.d.ts | 44 +++++ eims-ui/apps/web-antd/src/views/eims/spare-inoutdt/index.vue | 11 + eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java | 2 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java | 39 +++- eims-ui-mobile/src/service/inspect.ts | 15 + eims-ui-mobile/src/service/maint.ts | 9 + eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx | 19 ++ eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml | 2 eims-ui-mobile/src/pages/inspect/insp-st.vue | 21 ++ eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java | 5 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/InspectRecordBo.java | 13 + eims-ui-mobile/src/pages/maint/maint-st.vue | 178 ++++++++++++++++++++++ eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java | 17 ++ eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml | 2 eims-ui-mobile/src/utils/http.ts | 2 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java | 1 eims-ui-mobile/src/pages.json | 8 + eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java | 4 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java | 10 + eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java | 7 eims-ui-mobile/src/pages/home/index.vue | 10 eims-ui-mobile/src/pages/inspect/insp-record.vue | 42 ++++ eims-ui-mobile/src/types/uni-pages.d.ts | 1 eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue | 13 24 files changed, 436 insertions(+), 39 deletions(-) diff --git a/eims-ui-mobile/src/pages.json b/eims-ui-mobile/src/pages.json index 5cfa519..df35397 100644 --- a/eims-ui-mobile/src/pages.json +++ b/eims-ui-mobile/src/pages.json @@ -114,6 +114,14 @@ } }, { + "path": "pages/maint/maint-st", + "type": "page", + "layout": "default", + "style": { + "navigationBarTitleText": "淇濆吇姹囨��" + } + }, + { "path": "pages/my/index", "type": "page", "layout": "tabbar", diff --git a/eims-ui-mobile/src/pages/home/index.vue b/eims-ui-mobile/src/pages/home/index.vue index bd131e7..3351c06 100644 --- a/eims-ui-mobile/src/pages/home/index.vue +++ b/eims-ui-mobile/src/pages/home/index.vue @@ -157,15 +157,15 @@ }, */ { id: 1, - name: '鐐规姒傝', - icon: '/static/menu/menu1.png', + name: '鐐规姹囨��', + icon: '/static/menu/menu2.png', path: 'pages/inspect/insp-st', }, { id: 2, - name: '鐐规姹囨��', - icon: '/static/menu/menu2.png', - path: 'pages/inspect/insp-st', + name: '淇濆吇姹囨��', + icon: '/static/menu/menu1.png', + path: 'pages/maint/maint-st', }, { id: 3, diff --git a/eims-ui-mobile/src/pages/inspect/insp-record.vue b/eims-ui-mobile/src/pages/inspect/insp-record.vue index f176fda..f0b128d 100644 --- a/eims-ui-mobile/src/pages/inspect/insp-record.vue +++ b/eims-ui-mobile/src/pages/inspect/insp-record.vue @@ -109,6 +109,18 @@ </view> </wd-collapse-item> </wd-collapse> + <view class="w-full h-[1rpx] bg-base"></view> + <wd-textarea + label="鐗硅浜嬮」" + label-width="200rpx" + type="textarea" + v-model="inspSt.specialNote" + auto-height + :maxlength="200" + show-word-limit + placeholder="璇疯緭鍏ョ壒璁颁簨椤�" + clearable + /> </view> </z-paging> </template> @@ -116,7 +128,7 @@ <script setup lang="ts"> import { ref } from 'vue' import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store' -import { getInspStRecordList, updateInspRecord, updateInspRecordBatch } from '@/service/inspect' +import { getInspStRecordList, updateInspectSt, updateInspRecordBatch } from '@/service/inspect' import { useToast, useMessage } from 'wot-design-uni' import type { CollapseInstance } from 'wot-design-uni/components/wd-collapse/types' const message = useMessage() @@ -134,10 +146,14 @@ } interface InspSt { + id: string inspCode: string equName: string assetNo: string planTimeStr?: string + status: string + inspUser: number | string + specialNote: string } const dataChange = ref(false) @@ -148,10 +164,14 @@ // 鐐规姹囨�绘暟鎹�(涓婁釜椤甸潰浼犲��) const inspSt = reactive<InspSt>({ + id: '', inspCode: '', equName: '', assetNo: '', planTimeStr: '', + status: '', + inspUser: '', + specialNote: '', }) const paging = ref(null) @@ -180,7 +200,7 @@ } function inspResultClick(item: any) { - // userStore?.userInfo?.realName + // userStore?.userInfo?.userId } const goBack = () => { @@ -191,7 +211,7 @@ } const toggleCollapse = () => { - isAllExpanded.value = !isAllExpanded.value + isAllExpanded.value = !isAllExpanded.value collapseRef.value.toggleAll(isAllExpanded.value) } @@ -218,9 +238,22 @@ const params = { inspRecordList: dataList.value, } + // 鏇存柊鐐规璁板綍 updateInspRecordBatch(params) .then((res: any) => { + updateInspSt(resolve) + }) + .catch((res) => { + console.error(res) + }) +} +function updateInspSt(resolve: any) { + // 鏇存柊鐐规姹囨�� + inspSt.status = '1' + updateInspectSt(inspSt) + .then((res: any) => { paging.value.reload() + uni.$emit('insp-st-refresh') resolve(true) }) .catch((res) => { @@ -244,10 +277,13 @@ { deep: true }, ) onLoad((options) => { + inspSt.id = options.id inspSt.inspCode = options.inspCode inspSt.equName = options.equName inspSt.assetNo = options.assetNo inspSt.planTimeStr = options.planTimeStr + inspSt.specialNote = options?.specialNote + inspSt.inspUser = userStore?.userInfo?.userId }) const dataCount = computed(() => dataList.value.length) diff --git a/eims-ui-mobile/src/pages/inspect/insp-st.vue b/eims-ui-mobile/src/pages/inspect/insp-st.vue index d380724..2499379 100644 --- a/eims-ui-mobile/src/pages/inspect/insp-st.vue +++ b/eims-ui-mobile/src/pages/inspect/insp-st.vue @@ -28,7 +28,11 @@ </view> <view class="flex items-center"> - <text class="text-color-gray text-mini">{{ item.planTimeStr }}</text> + <text class="text-color-gray text-mini"> + {{ + viewMode === 'Day' ? item.planTimeStr : item?.planTimeStr?.substring(0, 7) || '' + }} + </text> </view> </view> </template> @@ -69,6 +73,7 @@ <script setup lang="ts"> import { ref } from 'vue' import { getInspStList } from '@/service/inspect' +import { onShow } from '@dcloudio/uni-app' const viewMode = ref<string>('Day') const equName = ref<string>('鎵�鏈夎澶�') @@ -79,7 +84,7 @@ ]) const equList = ref<Record<string, any>[]>([{ label: '鎵�鏈夎澶�', value: '鎵�鏈夎澶�' }]) function handleViewMode({ value }) { - console.log(value) + reloadData() } function handleEquName({ value }) { console.log(value) @@ -91,10 +96,9 @@ const queryList = (pageNum?: number, pageSize?: number) => { // 杩欓噷鐨刾ageNo鍜宲ageSize浼氳嚜鍔ㄨ绠楀ソ锛岀洿鎺ヤ紶缁欐湇鍔″櫒鍗冲彲 // 杩欓噷鐨勮姹傚彧鏄紨绀猴紝璇锋浛鎹㈡垚鑷繁鐨勯」鐩殑缃戠粶璇锋眰锛屽苟鍦ㄧ綉缁滆姹傚洖璋冧腑閫氳繃paging.value.complete(璇锋眰鍥炴潵鐨勬暟缁�)灏嗚姹傜粨鏋滀紶缁檢-paging - getInspStList({ pageNum, pageSize }) + getInspStList({ pageNum, pageSize, viewMode: viewMode.value }) .then((res: any) => { // 璇峰嬁鍦ㄧ綉缁滆姹傚洖璋冧腑缁檇ataList璧嬪�硷紒锛佸彧闇�瑕佽皟鐢╟omplete灏卞彲浠ヤ簡 - console.log(res) paging.value.complete(res.rows) }) .catch((res) => { @@ -108,12 +112,19 @@ function itemClick(item) { const inspCode = `${item.equId}_${item.planTime}_${viewMode.value}` uni.navigateTo({ - url: `/pages/inspect/insp-record?inspCode=${inspCode}&equName=${item.equName}&assetNo=${item.assetNo}&planTimeStr=${item.planTimeStr}`, + url: `/pages/inspect/insp-record?id=${item.id}&inspCode=${inspCode}&specialNote=${item.specialNote ?? ''}&equName=${item.equName ?? ''}&assetNo=${item.assetNo ?? ''}&planTimeStr=${item.planTimeStr ?? ''}`, }) } +function reloadData() { + paging.value.reload() +} onLoad(() => { queryList() + uni.$on('insp-st-refresh', reloadData) +}) +onUnload(() => { + uni.$off('insp-st-refres', reloadData) }) </script> diff --git a/eims-ui-mobile/src/pages/maint/maint-st.vue b/eims-ui-mobile/src/pages/maint/maint-st.vue new file mode 100644 index 0000000..4104498 --- /dev/null +++ b/eims-ui-mobile/src/pages/maint/maint-st.vue @@ -0,0 +1,178 @@ +<route lang="json5" type="page"> +{ + layout: 'default', + style: { + navigationBarTitleText: '淇濆吇姹囨��', + }, +} +</route> + +<template> + <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time> + <template #top> + <wd-drop-menu> + <wd-drop-menu-item v-model="equName" :options="equList" @change="handleEquName" /> + <wd-drop-menu-item v-model="status" :options="statusList" @change="handleStatus" /> + </wd-drop-menu> + <wd-divider></wd-divider> + </template> + <view class="bg-base"> + <view class="w-full h-[24rpx]"></view> + <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id"> + <template #title> + <view class="flex justify-between"> + <view class="flex items-center menu-title-box"> + <view class="menu-indicator"></view> + <view class="ml-1 text-sm align-center">{{ item.equName }}</view> + <view class="text-color-gray ml-2 text-mini">{{ item.assetNo }}</view> + </view> + + <view class="flex items-center"> + <text class="text-color-gray text-mini"> + {{ status === 'Day' ? item?.planTimeStr : item?.planTimeStr?.substring(0, 7) || '' }} + </text> + </view> + </view> + </template> + <view class="flex h-[100rpx]" items-center> + <image class="slot-img text-center" src="/static/images/camera.png" /> + <view class="flex-1"> + <view class="text-color-gray text-xs mt-1 flex"> + <text class="mr-3">鐐规鎬绘暟: {{ item.recordCount }}</text> + | + <text class="mx-3">宸茬偣妫�: {{ item.checkCount }}</text> + | + <text class="ml-3">鏈偣妫�: {{ item.unCheckCount }}</text> + </view> + <view class="text-color-gray text-xs mt-2 flex"> + <text class="mr-3">姝e父: {{ item.normalNum }}</text> + | + <text class="mx-3">寮傚父: {{ item.abNormalNum }}</text> + </view> + <view class="text-color-gray text-xs mt-2 flex"> + <text>鐘舵�侊細</text> + <template v-if="item.recordCount === item.checkCount"> + <wd-icon class="icon-color-success" name="check-outline" size="40rpx"></wd-icon> + <text class="ml-1">宸插畬鎴�</text> + </template> + <template v-else> + <wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon> + <text class="ml-1">杩涜涓�</text> + </template> + </view> + </view> + <wd-button size="small" icon="edit-outline" @click.stop="itemClick(item)">鏄庣粏</wd-button> + </view> + </wd-card> + </view> + </z-paging> +</template> + +<script setup lang="ts"> +import { ref } from 'vue' +import { getMaintStList } from '@/service/maint' + +interface QueryParams { + pageNum: number + pageSize: number + equName?: string + status?: string +} + +const status = ref<string>('-1') +const equName = ref<string>('-1') + +const statusList = ref<Record<string, any>[]>([ + { label: '鍏ㄩ儴', value: '-1' }, + { label: '寰呬繚鍏�', value: '0' }, + { label: '淇濆吇涓�', value: '1' }, + { label: '寰呴獙璇�', value: '2' }, + { label: '宸插畬鎴�', value: '3' }, +]) +const equList = ref<Record<string, any>[]>([{ label: '鎵�鏈夎澶�', value: '-1' }]) +function handleStatus({ value }) {} +function handleEquName({ value }) { + console.log(value) +} + +const paging = ref(null) +const dataList = ref([]) + +const queryList = (pageNum?: number, pageSize?: number) => { + // 杩欓噷鐨刾ageNo鍜宲ageSize浼氳嚜鍔ㄨ绠楀ソ锛岀洿鎺ヤ紶缁欐湇鍔″櫒鍗冲彲 + // 杩欓噷鐨勮姹傚彧鏄紨绀猴紝璇锋浛鎹㈡垚鑷繁鐨勯」鐩殑缃戠粶璇锋眰锛屽苟鍦ㄧ綉缁滆姹傚洖璋冧腑閫氳繃paging.value.complete(璇锋眰鍥炴潵鐨勬暟缁�)灏嗚姹傜粨鏋滀紶缁檢-paging + const params: QueryParams = { + pageNum, + pageSize, + equName: equName.value, + status: status.value, + } + if (equName.value === '-1') { + delete params.equName + } + if (status.value === '-1') { + delete params.status + } + + getMaintStList(params) + .then((res: any) => { + // 璇峰嬁鍦ㄧ綉缁滆姹傚洖璋冧腑缁檇ataList璧嬪�硷紒锛佸彧闇�瑕佽皟鐢╟omplete灏卞彲浠ヤ簡 + paging.value.complete(res.rows) + }) + .catch((res) => { + // 濡傛灉璇锋眰澶辫触鍐檖aging.value.complete(false)锛屼細鑷姩灞曠ず閿欒椤甸潰 + // 娉ㄦ剰锛屾瘡娆¢兘闇�瑕佸湪catch涓啓杩欏彞璇濆緢楹荤儲锛寊-paging鎻愪緵浜嗘柟妗堝彲浠ュ叏灞�缁熶竴澶勭悊 + // 鍦ㄥ簳灞傜殑缃戠粶璇锋眰鎶涘嚭寮傚父鏃讹紝鍐檜ni.$emit('z-paging-error-emit');鍗冲彲 + paging.value.complete(false) + }) +} + +function itemClick(item) { + const inspCode = `${item.equId}_${item.planTime}_${status.value}` + uni.navigateTo({ + url: `/pages/inspect/insp-record?id=${item.id}&inspCode=${inspCode}&specialNote=${item.specialNote ?? ''}&equName=${item.equName ?? ''}&assetNo=${item.assetNo ?? ''}&planTimeStr=${item.planTimeStr ?? ''}`, + }) +} + +function reloadData() { + paging.value.reload() +} +onLoad(() => { + queryList() + uni.$on('maint-st-refresh', reloadData) +}) +onUnload(() => { + uni.$off('maint-st-refres', reloadData) +}) +</script> + +<style scoped lang="scss"> +.menu-title-box { +} + +.slot-img { + width: 72rpx; + height: 72rpx; + margin-right: 24rpx; +} +.statu-img { + width: 60rpx; + height: 40rpx; +} +.text-mini { + font-size: 22rpx; +} + +.menu-indicator { + width: 6rpx; + height: 26rpx; + border-radius: 10rpx; + background-color: $uni-color-primary; +} +:deep(.wd-card__footer) { + padding: 10rpx !important; +} +:deep(.wd-card__title-content) { + padding: 24rpx 0 !important; +} +</style> diff --git a/eims-ui-mobile/src/service/inspect.ts b/eims-ui-mobile/src/service/inspect.ts index 55da5d3..adf4fa6 100644 --- a/eims-ui-mobile/src/service/inspect.ts +++ b/eims-ui-mobile/src/service/inspect.ts @@ -5,7 +5,6 @@ * 鐐规姹囨�诲垪琛� */ export const getInspStList = (params: any) => { - params.viewMode = 'Day' return http.get<InspectStVO[]>('/eims/inspectSt/list', params) } @@ -21,9 +20,21 @@ * @param data */ export const updateInspRecord = (data: any) => { - return http.post<void>('/eims/inspRecord', data) + return http.put<void>('/eims/inspRecord', data) } +/** + * 鎵归噺鏇存柊鐐规璁板綍 + * @param data + */ export const updateInspRecordBatch = (data: any) => { return http.put<void>('/eims/inspRecord/editBatch', data) } + +/** + * 鏇存柊鐐规姹囨�� + * @param data + */ +export const updateInspectSt = (data: any) => { + return http.put<void>('/eims/inspectSt', data) +} diff --git a/eims-ui-mobile/src/service/maint.d.ts b/eims-ui-mobile/src/service/maint.d.ts new file mode 100644 index 0000000..92e3994 --- /dev/null +++ b/eims-ui-mobile/src/service/maint.d.ts @@ -0,0 +1,44 @@ +export interface MaintStVO { + /** + * + */ + id: number | string; + + /** + * + */ + title: string; + + /** + * + */ + equId: number | string; + status: string; + + /** + * + */ + planTime: string; + + /** + * 淇濆吇浜� + */ + maintUser: number; + + /** + * 楠岃瘉浜� + */ + verifyUser: number; + verifyTime: string; + + /** + * 鐗硅浜嬮」 + */ + specialNote: string; + + /** + * 澶囨敞 + */ + remark: string; +} + diff --git a/eims-ui-mobile/src/service/maint.ts b/eims-ui-mobile/src/service/maint.ts new file mode 100644 index 0000000..42197c2 --- /dev/null +++ b/eims-ui-mobile/src/service/maint.ts @@ -0,0 +1,9 @@ +import { http } from '@/utils/http' +import type { MaintStVO } from './maint.d' + +/** + * 淇濆吇姹囨�诲垪琛� + */ +export const getMaintStList = (params: any) => { + return http.get<MaintStVO[]>('/eims/maintSt/list', params) +} diff --git a/eims-ui-mobile/src/types/uni-pages.d.ts b/eims-ui-mobile/src/types/uni-pages.d.ts index 7b066d0..fefb929 100644 --- a/eims-ui-mobile/src/types/uni-pages.d.ts +++ b/eims-ui-mobile/src/types/uni-pages.d.ts @@ -11,6 +11,7 @@ "/pages/inspect/insp-record" | "/pages/inspect/insp-st" | "/pages/login/index" | + "/pages/maint/maint-st" | "/pages/my/index" | "/pages/spare/index"; } diff --git a/eims-ui-mobile/src/utils/http.ts b/eims-ui-mobile/src/utils/http.ts index f1d74ce..7314ccd 100644 --- a/eims-ui-mobile/src/utils/http.ts +++ b/eims-ui-mobile/src/utils/http.ts @@ -36,10 +36,12 @@ uni.navigateTo({ url: redirectRoute }) reject(res) } else { + // 鍏朵粬閿欒 -> 鏍规嵁鍚庣閿欒淇℃伅杞绘彁绀� uni.showToast({ icon: 'none', title: (res.data as IResData<T>).msg || '璇锋眰閿欒', }) + reject(res) } } else if (res.statusCode === 401) { // 401閿欒 -> 娓呯悊鐢ㄦ埛淇℃伅锛岃烦杞埌鐧诲綍椤� diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx b/eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx index 7fd40eb..fee6672 100644 --- a/eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx +++ b/eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx @@ -46,7 +46,24 @@ { title: '淇濆吇鏃堕棿', field: 'planTimeStr', - minWidth: 200 + minWidth: 200, + slots: { + default: ({ row }) => { + // 鍒ゆ柇鏄惁闇�瑕佹樉绀烘椂闂� + if (!row.type) return ''; + + // 鑾峰彇鍘熷鏃堕棿瀛楃涓� + const fullDate = row.planTimeStr; + + // 鏍规嵁鏉′欢鍐冲畾鏄剧ず鏍煎紡 + // 绀轰緥鏉′欢锛氬鏋� status 鏄煇涓壒瀹氬�硷紙渚嬪 'monthly'锛夛紝鍒欐樉绀� YYYY-MM + if (row.type === 'Month') { + return fullDate.slice(0, 7); // 鎴彇鍓� 7 涓瓧绗︼紝寰楀埌 YYYY-MM + } + // 榛樿鏄剧ず瀹屾暣鏃ユ湡 YYYY-MM-DD + return fullDate; + } + } }, { title: '鐘舵��', diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue b/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue index 0319a0b..9f7a6cf 100644 --- a/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue +++ b/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue @@ -255,16 +255,17 @@ const monBtn = ref<any>('primary'); function queryData(type: ViewMode) { + // TODO 鏃ヨ鍥惧拰鏈堣鍥惧悗绔凡缁熶竴鏂规硶 鍓嶇鍙垹闄ゆ棩瑙嗗浘澶氫綑閰嶇疆 if (type === ViewMode.Day) { dayBtn.value = 'primary'; monBtn.value = 'default'; curViewMode.value = ViewMode.Day; - tableApi.setGridOptions(gridOptions2); + // tableApi.setGridOptions(gridOptions2); } else if (type === ViewMode.Month) { dayBtn.value = 'default'; monBtn.value = 'primary'; curViewMode.value = ViewMode.Month; - tableApi.setGridOptions(gridOptions); + // tableApi.setGridOptions(gridOptions); } tableApi.query(); } @@ -273,7 +274,7 @@ <template> <Page :auto-content-height="true"> <div class="flex h-full gap-[8px] flex-col"> - <BasicTable class="h-2/3" table-title="鐐规璁板綍鍒楄〃"> + <BasicTable class="h-2/3" table-title="鐐规姹囨�诲垪琛�"> <template #toolbar-tools> <Space> <Button :type="dayBtn" @click.stop="queryData(ViewMode.Day)">鏃ヨ鍥�</Button> @@ -300,8 +301,7 @@ <ghost-button v-access:code="['eims:inspectSt:edit']" @click.stop="handleEdit(row)"> {{ $t('pages.common.edit') }} </ghost-button> - <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" - @confirm="handleDelete(row)"> + <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)"> <ghost-button danger v-access:code="['eims:inspectSt:remove']" @click.stop=""> {{ $t('pages.common.delete') }} </ghost-button> @@ -309,8 +309,7 @@ </Space> </template> </BasicTable> - <BasisSubTable :columns="recordCol" :list-api="listInspStRecord" :req-value="recordId" class="h-1/3" - req-key="inspCode" title="鐐规璁板綍" /> + <BasisSubTable :columns="recordCol" :list-api="listInspStRecord" :req-value="recordId" class="h-1/3" req-key="inspCode" title="鐐规璁板綍" /> </div> <InspStDrawer @reload="tableApi.query()" /> </Page> diff --git a/eims-ui/apps/web-antd/src/views/eims/spare-inoutdt/index.vue b/eims-ui/apps/web-antd/src/views/eims/spare-inoutdt/index.vue new file mode 100644 index 0000000..85af715 --- /dev/null +++ b/eims-ui/apps/web-antd/src/views/eims/spare-inoutdt/index.vue @@ -0,0 +1,11 @@ +<script setup lang="ts"> + +</script> + +<template> + +</template> + +<style scoped> + +</style> diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java index 11f84f6..106896e 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java @@ -15,6 +15,7 @@ import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.eims.domain.bo.EimsMaintOrderBo; +import org.dromara.eims.domain.bo.InspectRecordBo; import org.dromara.eims.domain.vo.EimsMaintOrderVo; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; @@ -80,6 +81,7 @@ Map<String, Object> params = bo.getParams(); params.put("beginPlanTime",startOfMonth); params.put("endPlanTime",endOfMonth); + params.put("type","Month"); } return eimsInspectRecordService.queryPageListCustom(bo, pageQuery); } @@ -130,6 +132,14 @@ return toAjax(eimsInspectRecordService.updateByBo(bo)); } + @SaCheckPermission("eims:inspectRecord:edit") + @Log(title = "鐐规璁板綍-鎵归噺淇敼", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("editBatch") + public R<Void> editBatch(@Validated(EditGroup.class) @RequestBody InspectRecordBo bo) { + return toAjax(eimsInspectRecordService.updateBatchByBo(bo)); + } + /** * 鍒犻櫎鐐规璁板綍 * diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java index a0a0c3b..aa8a890 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java @@ -28,6 +28,10 @@ */ @TableId(value = "id") private Long id; + /** + * 姹囨�荤被鍨� Day-鏃ユ眹鎬� Month-鏈堟眹鎬� + */ + private String type; /** * 鏍囬 diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java index 82d3ea9..fefd0ef 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java @@ -28,17 +28,19 @@ */ @NotNull(message = "涓嶈兘涓虹┖", groups = { EditGroup.class }) private Long id; + /** + * 姹囨�荤被鍨� Day-鏃ユ眹鎬� Month-鏈堟眹鎬� + */ + private String type; /** * 鏍囬 */ - @NotBlank(message = "鏍囬涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) private String title; /** * 璁惧id */ - @NotNull(message = "璁惧id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) private Long equId; private String equName; private String assetNo; @@ -46,7 +48,6 @@ /** * 璁″垝鏃堕棿 */ - @NotNull(message = "璁″垝鏃堕棿涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) private Date planTime; /** diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/InspectRecordBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/InspectRecordBo.java new file mode 100644 index 0000000..4e74891 --- /dev/null +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/InspectRecordBo.java @@ -0,0 +1,13 @@ +package org.dromara.eims.domain.bo; + +import lombok.Data; + +import java.util.List; + +@Data +public class InspectRecordBo { + /** + * 绉诲姩绔壒閲忔洿鏂� + */ + private List<EimsInspectRecordBo> inspRecordList; +} diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java index 021d71b..8dee5d2 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java @@ -41,7 +41,10 @@ */ @ExcelProperty(value = "鏍囬") private String title; - + /** + * 姹囨�荤被鍨� Day-鏃ユ眹鎬� Month-鏈堟眹鎬� + */ + private String type; /** * 璁惧id */ diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java index a71d578..4d0c20b 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java @@ -18,6 +18,7 @@ */ public interface EimsInspectRecordMapper extends BaseMapperPlus<EimsInspectRecord, EimsInspectRecordVo> { Page<EimsInspectRecordVo> selectInspRecordList(@Param("page") Page<EimsInspectRecordVo> page, @Param(Constants.WRAPPER) Wrapper<EimsInspectRecord> queryWrapper); + // TODO 鏃ヨ鍥惧拰鏈堣鍥剧粺涓�鎺ュ彛锛屽緟鍒犻櫎 Page<EimsInspectStVo> selectInspRecordDayList(@Param("page") Page<EimsInspectStVo> page, @Param(Constants.WRAPPER) Wrapper<EimsInspectSt> queryWrapper); } diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java index ebd61d3..4afedb1 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java @@ -1,6 +1,7 @@ package org.dromara.eims.service; import org.dromara.eims.domain.bo.EimsInspectStBo; +import org.dromara.eims.domain.bo.InspectRecordBo; import org.dromara.eims.domain.vo.EimsInspectRecordVo; import org.dromara.eims.domain.bo.EimsInspectRecordBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -58,6 +59,7 @@ * @return 鏄惁淇敼鎴愬姛 */ Boolean updateByBo(EimsInspectRecordBo bo); + Boolean updateBatchByBo(InspectRecordBo bo); /** * 鏍¢獙骞舵壒閲忓垹闄ょ偣妫�璁板綍淇℃伅 diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java index 55c65ff..de21a3f 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java @@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.SneakyThrows; +import org.dromara.common.core.constant.DictConstants; +import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -11,10 +13,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.eims.domain.EimsInspectPlan; import org.dromara.eims.domain.EimsInspectSt; import org.dromara.eims.domain.EimsMaintPlan; import org.dromara.eims.domain.bo.EimsInspectStBo; +import org.dromara.eims.domain.bo.InspectRecordBo; import org.dromara.eims.domain.vo.EimsInspectStVo; import org.dromara.eims.domain.vo.EimsMaintOrderVo; import org.dromara.eims.mapper.EimsInspectPlanMapper; @@ -236,6 +240,19 @@ return baseMapper.updateById(update) > 0; } + @Override + public Boolean updateBatchByBo(InspectRecordBo bo) { + LoginUser loginUser = LoginHelper.getLoginUser(); + List<EimsInspectRecord> inspRecordList = MapstructUtils.convert(bo.getInspRecordList(), EimsInspectRecord.class); + inspRecordList.forEach(item->{ + // 鏇存柊涓哄凡鐐规 + item.setStatus(DictConstants.EIMS_INSPECT_STATUS_DETAIL.Y); + item.setInspTime(new Date()); + item.setInspUser(loginUser.getUserId()); + }); + return baseMapper.updateBatchById(inspRecordList); + } + /** * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙 */ diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java index dc31019..6db24c0 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java @@ -21,6 +21,8 @@ import org.dromara.eims.service.IEimsInspectStService; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.ZoneId; import java.time.temporal.TemporalAdjusters; import java.util.*; @@ -59,23 +61,29 @@ */ @Override public TableDataInfo<EimsInspectStVo> queryPageList(EimsInspectStBo bo, PageQuery pageQuery) { + bo.setType(bo.getViewMode()); // 鏈堣鍥� - if(bo.getViewMode().equals("Month")){ +// if(bo.getViewMode().equals("Month")){ QueryWrapper<EimsInspectSt> qw = buildWrapper(bo); Page<EimsInspectStVo> result = baseMapper.selectInspStList(pageQuery.build(), qw); // 濉厖鏁版嵁 - fillStData(result); + fillStData(result,bo.getViewMode()); return TableDataInfo.build(result); // 鏃ヨ鍥� - }else if(bo.getViewMode().equals("Day")){ - Page<EimsInspectStVo> result = recordMapper.selectInspRecordDayList(pageQuery.build(), buildGroupWrapper(bo)); - return TableDataInfo.build(result); - } +// }else if(bo.getViewMode().equals("Day")){ +// Page<EimsInspectStVo> result = recordMapper.selectInspRecordDayList(pageQuery.build(), buildGroupWrapper(bo)); +// return TableDataInfo.build(result); +// } - return null; +// return null; } - private void fillStData(Page<EimsInspectStVo> result) { + /** + * + * @param result + * @param type Day-鏃ヨ鍥� Month-鏈堣鍥� + */ + private void fillStData(Page<EimsInspectStVo> result,String type) { List<EimsInspectStVo> records = result.getRecords(); for (int i = 0; i < records.size(); i++) { EimsInspectStVo stVo = records.get(i); @@ -84,9 +92,19 @@ LambdaQueryWrapper<EimsInspectRecord> recordLqw = Wrappers.lambdaQuery(); recordLqw.eq(EimsInspectRecord::getEquId, stVo.getEquId()); LocalDate planTime = stVo.getPlanTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + // 鏈堣鍥炬煡璇㈣寖鍥� LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth()); LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth()); - recordLqw.between(EimsInspectRecord::getPlanTime, startOfMonth, endOfMonth); + + // 鏃ヨ鍥炬煡璇㈣寖鍥� + if(type.equals("Day")){ + recordLqw.between(EimsInspectRecord::getPlanTime, planTime, planTime); + }else { + // 鏈堣鍥炬煡璇㈣寖鍥� + recordLqw.between(EimsInspectRecord::getPlanTime, startOfMonth, endOfMonth); + } + + // 鎵ц鏌ヨ List<EimsInspectRecordVo> recordList = recordMapper.selectVoList(recordLqw); // TODO 鏍规嵁瀛楀吀eims_inspect_status @@ -96,7 +114,7 @@ // TODO 鏍规嵁瀛楀吀eims_inspect_result Map<String, Long> rMap = recordList.stream() .filter(order ->order.getInspResult()!=null && List.of("1", "2").contains(order.getInspResult())) - .collect(Collectors.groupingBy(EimsInspectRecordVo::getStatus, Collectors.counting())); + .collect(Collectors.groupingBy(EimsInspectRecordVo::getInspResult, Collectors.counting())); stVo.setRecordCount(recordList.size()); stVo.setUnCheckCount(cMap.getOrDefault("0", 0L).intValue()); @@ -157,6 +175,7 @@ qw.like(StringUtils.isNotBlank(bo.getTitle()), "st.title", bo.getTitle()); qw.like(StringUtils.isNotBlank(bo.getEquName()), "equ.equ_name", bo.getEquName()); qw.like(StringUtils.isNotBlank(bo.getAssetNo()), "equ.asset_no", bo.getAssetNo()); + qw.eq( "st.type", bo.getType()); qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null, "st.plan_time", params.get("beginPlanTime"), params.get("endPlanTime")); qw.eq(bo.getInspUser() != null, "st.maint_user", bo.getInspUser()); diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml index bf14d6a..b37e221 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml +++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml @@ -21,7 +21,7 @@ ${ew.getCustomSqlSegment} </select> - + <!--TODO 鏃ヨ鍥惧拰鏈堣鍥剧粺涓�鎺ュ彛锛屽緟鍒犻櫎--> <select id="selectInspRecordDayList" resultMap="EimsInspectStVoResult"> SELECT MAX(ir.id) id, diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml index b9540eb..ec07300 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml +++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml @@ -6,7 +6,7 @@ <resultMap type="org.dromara.eims.domain.vo.EimsInspectStVo" id="MaintInspStVoResult"> </resultMap> <select id="selectInspStList" resultMap="MaintInspStVoResult"> - SELECT st.*,equ.equ_name equName,equ.asset_no assetNo, DATE_FORMAT(st.plan_time, '%Y-%m') as planTimeStr FROM eims_inspect_st st + SELECT st.*,equ.equ_name equName,equ.asset_no assetNo, DATE_FORMAT(st.plan_time, '%Y-%m-%d') as planTimeStr FROM eims_inspect_st st LEFT JOIN eims_equ equ on st.equ_id = equ.equ_id ${ew.getCustomSqlSegment} </select> -- Gitblit v1.9.3