From 14681dfe7052cb76eefcc0c17d0a0d708e1ac9dd Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期二, 13 五月 2025 16:31:14 +0800 Subject: [PATCH] 完成移动端基本功能 --- eims-ui-mobile/src/service/equ.d.ts | 50 +- eims-ui-mobile/src/static/ico/ico5.png | 0 eims-ui-mobile/src/static/ico/ico14.png | 0 eims-ui-mobile/src/components/fg-tabbar/fg-tabbar.vue | 22 eims-ui-mobile/src/pages/inspect/insp-st.vue | 5 eims-ui-mobile/src/static/ico/ico4.png | 0 eims-ui-mobile/src/static/ico/ico13.png | 0 eims-ui-mobile/src/pages/inspect/insp-record.vue | 64 ++ eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java | 7 eims-ui-mobile/src/style/index.scss | 2 eims-ui-mobile/src/pages/repair/repair-fb.vue | 72 ++ eims-ui-mobile/src/service/repair.d.ts | 8 eims-ui-mobile/src/static/ico/ico17.png | 0 eims-ui-mobile/src/static/ico/ico3.png | 0 eims-ui-mobile/src/static/ico/ico20.png | 0 eims-ui-mobile/src/pages/spare/spare-list.vue | 156 ++++++ eims-ui-mobile/src/service/equ.ts | 8 eims-ui-mobile/src/static/ico/ico16.png | 0 eims-ui-mobile/src/pages/repair/res-list.vue | 52 + eims-ui-mobile/src/service/dict.ts | 3 eims-ui-mobile/src/static/images/cgq.png | 0 eims-ui-mobile/src/pages/repair/repair-add.vue | 34 + eims-ui-mobile/src/pages/maint/maint-st.vue | 29 + eims-ui-mobile/src/pages/scan/index.vue | 215 +++++++++ eims-ui-mobile/src/static/ico/ico15.png | 0 eims-ui-mobile/src/static/ico/ico2.png | 0 eims-ui-mobile/src/pages/equ/index.vue | 55 + eims-ui-mobile/src/service/repair.ts | 9 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsEquController.java | 12 eims-ui-mobile/src/static/ico/ico19.png | 0 eims-ui-mobile/src/service/inspect.ts | 18 eims-ui-mobile/src/static/ico/ico1.png | 0 eims-ui-mobile/src/pages/login/index.vue | 5 eims-ui-mobile/src/static/ico/ico10.png | 0 eims-ui-mobile/src/static/ico/ico18.png | 0 eims-ui-mobile/src/static/ico/ico9.png | 0 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java | 1 eims-ui-mobile/src/pages/spare/index.vue | 68 ++ eims-ui-mobile/src/utils/RoleUtils.ts | 19 eims-ui-mobile/src/types/uni-pages.d.ts | 6 eims-ui-mobile/src/service/spare.ts | 9 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java | 31 + eims-ui-mobile/src/static/ico/ico8.png | 0 eims-ui-mobile/src/pages/my/index.vue | 50 ++ eims-ui-mobile/src/static/ico/ico12.png | 0 eims-ui-mobile/src/static/ico/ico6.png | 0 eims-ui-mobile/src/service/spare.d.ts | 90 +++ eims-ui-mobile/src/pages.json | 67 +- eims-ui-mobile/src/static/ico/ico7.png | 0 eims-ui-mobile/src/pages/equ/equ-list.vue | 86 ++ eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java | 5 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java | 1 eims-ui-mobile/src/pages/home/index.vue | 94 +++ eims-ui-mobile/src/static/ico/ico11.png | 0 54 files changed, 1,172 insertions(+), 181 deletions(-) diff --git a/eims-ui-mobile/src/components/fg-tabbar/fg-tabbar.vue b/eims-ui-mobile/src/components/fg-tabbar/fg-tabbar.vue index 72675c5..c3370a9 100644 --- a/eims-ui-mobile/src/components/fg-tabbar/fg-tabbar.vue +++ b/eims-ui-mobile/src/components/fg-tabbar/fg-tabbar.vue @@ -62,13 +62,35 @@ // scan鐗规畩澶勭悊 if (index === 2) { tabbarStore.setCurIdx(tabbarStore.lastIdx) + + // 妯℃嫙鎴愬姛 + // uni.navigateTo({ + // url: `/pages/scan/index?result=GPA2024NL025`, + // }) + // return false + // 妯℃嫙鎴愬姛 + // 鍙厑璁搁�氳繃鐩告満鎵爜 uni.scanCode({ onlyFromCamera: true, success: function (res) { console.log('鏉$爜绫诲瀷锛�' + res.scanType) console.log('鏉$爜鍐呭锛�' + res.result) + if (res?.scanType !== 'QR_CODE') { + uni.showToast({ + title: '璇蜂娇鐢ㄤ簩缁寸爜杩涜鎵爜', + icon: 'none', + }) + return false + } + + // 浣跨敤split鏂规硶鎴彇璧勪骇缂栧彿 + // const assetCode = res.result.split('璧勪骇缂栧彿锛�')[1].split(' ')[0] + uni.navigateTo({ + url: `/pages/scan/index?result=${res.result}`, + }) }, + fail: function (res) {}, }) } else { tabbarStore.setCurIdx(index) diff --git a/eims-ui-mobile/src/pages.json b/eims-ui-mobile/src/pages.json index 6fb3e3e..6bc5e7e 100644 --- a/eims-ui-mobile/src/pages.json +++ b/eims-ui-mobile/src/pages.json @@ -78,7 +78,7 @@ "layout": "tabbar", "needLogin": true, "style": { - "navigationBarTitleText": "鍏充簬" + "navigationBarTitleText": "璁惧" } }, { @@ -209,31 +209,6 @@ } }, { - "path": "pages/repair/feedback", - "type": "page", - "layout": "default", - "needLogin": true, - "style": { - "navigationBarTitleText": "缁翠慨璇勪环", - "app-plus": { - "titleNView": { - "buttons": [ - { - "text": "鎻愪氦", - "fontSize": "14px", - "color": "#FFFFFF" - }, - { - "text": "", - "fontSize": "14px", - "color": "#FFFFFF" - } - ] - } - } - } - }, - { "path": "pages/repair/repair-add", "type": "page", "layout": "default", @@ -250,6 +225,31 @@ { "text": "", "fontSize": "24px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + { + "path": "pages/repair/repair-fb", + "type": "page", + "layout": "default", + "needLogin": true, + "style": { + "navigationBarTitleText": "缁翠慨璇勪环", + "app-plus": { + "titleNView": { + "buttons": [ + { + "text": "鎻愪氦", + "fontSize": "14px", + "color": "#FFFFFF" + }, + { + "text": "", + "fontSize": "14px", "color": "#FFFFFF" } ] @@ -333,12 +333,25 @@ } }, { + "path": "pages/scan/index", + "type": "page" + }, + { "path": "pages/spare/index", "type": "page", "layout": "tabbar", "needLogin": true, "style": { - "navigationBarTitleText": "spare" + "navigationBarTitleText": "澶囦欢" + } + }, + { + "path": "pages/spare/spare-list", + "type": "page", + "layout": "default", + "needLogin": true, + "style": { + "navigationBarTitleText": "澶囦欢鍒楄〃" } } ], diff --git a/eims-ui-mobile/src/pages/equ/equ-list.vue b/eims-ui-mobile/src/pages/equ/equ-list.vue index 693e6c2..ecd0923 100644 --- a/eims-ui-mobile/src/pages/equ/equ-list.vue +++ b/eims-ui-mobile/src/pages/equ/equ-list.vue @@ -11,8 +11,20 @@ <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time> <template #top> <wd-drop-menu> - <wd-drop-menu-item v-model="equTypeId" :options="typeList" @change="handleEquType" /> - <wd-drop-menu-item v-model="status" :options="statusList" @change="handleEquStatu" /> + <wd-drop-menu-item + v-model="equTypeId" + label-key="dictLabel" + value-key="dictValue" + :options="typeList" + @change="handleEquType" + /> + <wd-drop-menu-item + v-model="status" + label-key="dictLabel" + value-key="dictValue" + :options="statusList" + @change="handleEquStatu" + /> </wd-drop-menu> </template> @@ -23,15 +35,21 @@ <view class="flex items-center menu-title-box"> <view class="menu-indicator"></view> <text class="ml-1 text-xs">{{ item.assetNo }}</text> + <wd-tag v-if="item.status === '0'" class="ml-2" bg-color="cyan">璇曠敤</wd-tag> + <wd-tag v-else-if="item.status === '1'" class="ml-2" type="success">浣跨敤</wd-tag> + <wd-tag v-else-if="item.status === '2'" class="ml-2" type="danger">鍋滅敤</wd-tag> + <wd-tag v-else-if="item.status === '3'" class="ml-2" bg-color="pink">鎶ュ簾</wd-tag> + <wd-tag v-else-if="item.status === '4'" class="ml-2" type="warning">闂茬疆</wd-tag> + <wd-tag v-else-if="item.status === '5'" class="ml-2">鏂板</wd-tag> </view> - <view> + <view @click.stop="handleInfo"> <text class="icon-color-base">璇︽儏</text> <wd-icon name="arrow-right" custom-class="icon-color-base"></wd-icon> </view> </view> </template> - <view class="flex h-[80rpx] items-center" @click.stop="itemClick(item)"> + <view class="flex h-[90rpx] items-center" @click.stop="itemClick(item)"> <image class="slot-img text-center" src="/static/images/camera.png" /> <view class="flex-1"> <view class="text-color-base"> @@ -43,11 +61,7 @@ </view> </view> <view v-if="isSelectEqu"> - <wd-button - size="small" - icon="edit-outline" - @click.stop="handleSelectEqu(item)" - > + <wd-button size="small" icon="edit-outline" @click.stop="handleSelectEqu(item)"> 閫変腑 </wd-button> </view> @@ -59,22 +73,24 @@ <script setup lang="ts"> import { onMounted, getCurrentInstance, ref } from 'vue' - import { getEquList } from '@/service/equ' +import { DICT_SYS_EQU_STATUS, getDictInfo } from '@/service/dict' // 璁惧绫诲瀷 -const equTypeId = ref<number>(0) +const equTypeId = ref<number>(-1) // 璁惧鐘舵�� -const status = ref<number>(0) +const status = ref<number>(-1) const isSelectEqu = ref(false) -const typeList = ref<Record<string, any>[]>([{ label: '鎵�鏈夎澶�', value: 0 }]) -const statusList = ref<Record<string, any>[]>([{ label: '鎵�鏈夌姸鎬�', value: 0 }]) +const typeList = ref<Record<string, any>[]>([{ dictLabel: '璁惧绫诲瀷', dictValue: -1 }]) +const statusList = ref<Record<string, any>[]>([{ dictLabel: '鎵�鏈夌姸鎬�', dictValue: -1 }]) function handleEquType({ value }) { + reloadData() console.log(value) } function handleEquStatu({ value }) { + reloadData() console.log(value) } @@ -82,9 +98,19 @@ const dataList = ref([]) const queryList = (pageNum?: number, pageSize?: number) => { - // 杩欓噷鐨刾ageNo鍜宲ageSize浼氳嚜鍔ㄨ绠楀ソ锛岀洿鎺ヤ紶缁欐湇鍔″櫒鍗冲彲 - // 杩欓噷鐨勮姹傚彧鏄紨绀猴紝璇锋浛鎹㈡垚鑷繁鐨勯」鐩殑缃戠粶璇锋眰锛屽苟鍦ㄧ綉缁滆姹傚洖璋冧腑閫氳繃paging.value.complete(璇锋眰鍥炴潵鐨勬暟缁�)灏嗚姹傜粨鏋滀紶缁檢-paging - getEquList({ pageNum, pageSize }) + const parmams = { + pageNum, + pageSize, + equTypeId: equTypeId.value, + status: status.value, + } + if (equTypeId.value === -1) { + delete parmams.equTypeId + } + if (status.value === -1) { + delete parmams.status + } + getEquList(parmams) .then((res: any) => { // 璇峰嬁鍦ㄧ綉缁滆姹傚洖璋冧腑缁檇ataList璧嬪�硷紒锛佸彧闇�瑕佽皟鐢╟omplete灏卞彲浠ヤ簡 paging.value.completeByTotal(res.rows, res.total) @@ -101,10 +127,13 @@ * 璁惧鏉$洰鐐瑰嚮浜嬩欢 * @param item */ -function itemClick(item: any) { - +function itemClick(item: any) {} +function handleInfo() { + uni.showToast({ + title: '鍔熻兘寮�鍙戜腑', + icon: 'none', + }) } - /** * 鍏跺畠椤甸潰閫夋嫨璁惧 * @param item @@ -126,7 +155,6 @@ }) } - const eventChannel = ref<any>() onMounted(() => { const instance: any = getCurrentInstance().proxy @@ -136,6 +164,19 @@ isSelectEqu.value = true console.log('OnSelectEqu', data) }) +}) + +function reloadData() { + paging.value.reload() +} + +async function initData() { + const sList: any = await getDictInfo(DICT_SYS_EQU_STATUS) + statusList.value.push(...sList) +} + +onLoad(() => { + initData() }) </script> @@ -163,4 +204,7 @@ :deep(.wd-card__footer) { padding: 10rpx !important; } +:deep(.wd-card__title-content) { + padding: 16rpx !important; +} </style> diff --git a/eims-ui-mobile/src/pages/equ/index.vue b/eims-ui-mobile/src/pages/equ/index.vue index bda1221..5377967 100644 --- a/eims-ui-mobile/src/pages/equ/index.vue +++ b/eims-ui-mobile/src/pages/equ/index.vue @@ -3,31 +3,58 @@ layout: 'tabbar', needLogin: true, style: { - navigationBarTitleText: '鍏充簬', + navigationBarTitleText: '璁惧', }, } </route> <template> - <view - class="bg-white overflow-hidden pt-2 px-4" - :style="{ marginTop: safeAreaInsets?.top + 'px' }" - > - <view class="text-center text-3xl mt-8"> - 楦藉弸浠ソ锛屾垜鏄� - <text class="text-red-500">鑿查附</text> - </view> - <RequestComp /> - <UploadComp /> + <view class="bg-base" :style="{ marginTop: safeAreaInsets?.top + 'px' }"> + <wd-cell-group border> + <wd-cell + title="璁惧鍒楄〃" + is-link + to="/pages/equ/equ-list" + icon="list" + custom-icon-class="icon-color-base" + /> + <wd-cell + title="閲嶇偣璁惧" + is-link + icon="keywords" + custom-icon-class="icon-color-base" + @click="handleInfo" + /> + <wd-cell + title="娣诲姞璁惧" + is-link + icon="add" + custom-icon-class="icon-color-base" + @click="handleInfo" + /> + </wd-cell-group> + <wd-cell-group border class="mt-2"> + <wd-cell + title="璁惧鐩樼偣" + is-link + icon="filter" + custom-icon-class="icon-color-base" + @click="handleInfo" + /> + </wd-cell-group> </view> </template> <script lang="ts" setup> -import RequestComp from './components/request.vue' -import UploadComp from './components/upload.vue' - // 鑾峰彇灞忓箷杈圭晫鍒板畨鍏ㄥ尯鍩熻窛绂� const { safeAreaInsets } = uni.getSystemInfoSync() + +function handleInfo() { + uni.showToast({ + title: '鍔熻兘寮�鍙戜腑', + icon: 'none', + }) +} </script> <style lang="scss" scoped> diff --git a/eims-ui-mobile/src/pages/home/index.vue b/eims-ui-mobile/src/pages/home/index.vue index 0d22564..b04275b 100644 --- a/eims-ui-mobile/src/pages/home/index.vue +++ b/eims-ui-mobile/src/pages/home/index.vue @@ -17,13 +17,13 @@ <view class="bg-white h-[80rpx] px-2 flex items-center justify-between"> <view class="flex items-center" @click="handleUserInfo"> <wd-icon name="user" size="40rpx" class="icon-color-base"></wd-icon> - <text class="ml-1 text-color-base">寮犱笁</text> + <text class="ml-1 text-color-base">{{ realName }}</text> </view> <view class="flex items-center"> - <wd-icon name="notification" size="40rpx" class="icon-color-base mr-3"></wd-icon> - <wd-icon name="tips" size="40rpx" class="icon-color-base mr-3"></wd-icon> - <wd-icon name="app" size="40rpx" class="icon-color-base"></wd-icon> + <wd-icon name="notification" size="40rpx" class="icon-color-base mr-3" @click="handleInfo"></wd-icon> + <wd-icon name="tips" size="40rpx" class="icon-color-base mr-3" @click="handleInfo"></wd-icon> + <wd-icon name="app" size="40rpx" class="icon-color-base" @click="handleInfo"></wd-icon> </view> </view> @@ -65,20 +65,20 @@ </view> </wd-card> </view> - <view class="bg-white mt-2"> <wd-card type="rectangle"> <template #title> <view class="flex items-center menu-title-box"> <view class="menu-indicator"></view> - <view class="ml-1 text-xs">璁惧绠$悊</view> + <view class="ml-1 text-xs">蹇嵎鎿嶄綔</view> </view> </template> <wd-grid :column="4"> <wd-grid-item use-slot class="flex justify-center items-center" - v-for="(item, index) in equMenu" + v-for="(item, index) in commonMenu" + :key="item.id" @click.stop="goItemPage(item.path)" > <image class="slot-img text-center" :src="item.icon" /> @@ -87,13 +87,12 @@ </wd-grid> </wd-card> </view> - <view class="bg-white mt-2"> <wd-card type="rectangle"> <template #title> <view class="flex items-center menu-title-box"> <view class="menu-indicator"></view> - <view class="ml-1 text-xs">璁惧鐐规</view> + <view class="ml-1 text-xs">璁惧绠$悊</view> </view> </template> <wd-grid :column="4"> @@ -110,15 +109,41 @@ </wd-grid> </wd-card> </view> + <view class="bg-white mt-2"> + <wd-card type="rectangle"> + <template #title> + <view class="flex items-center menu-title-box"> + <view class="menu-indicator"></view> + <view class="ml-1 text-xs">鍙拌处鐩稿叧</view> + </view> + </template> + <wd-grid :column="4"> + <wd-grid-item + use-slot + class="flex justify-center items-center" + v-for="(item, index) in equMenu" + @click.stop="goItemPage(item.path)" + > + <image class="slot-img text-center" :src="item.icon" /> + <text>{{ item.name }}</text> + </wd-grid-item> + </wd-grid> + </wd-card> + </view> + + </view> </template> <script lang="ts" setup> import { getAllMenusApi } from '@/service/menu' - +import { useUserStore } from '@/store' +import { tabbarStore } from '@/components/fg-tabbar/tabbar' defineOptions({ name: 'Home', }) + +const userStore = useUserStore() // 鑾峰彇灞忓箷杈圭晫鍒板畨鍏ㄥ尯鍩熻窛绂� const { safeAreaInsets } = uni.getSystemInfoSync() @@ -126,6 +151,12 @@ const getAllMenus = async () => { const menuList = await getAllMenusApi() console.error(menuList) +} +function handleInfo() { + uni.showToast({ + title: '鍔熻兘寮�鍙戜腑', + icon: 'none', + }) } const goItemPage = (path: string) => { @@ -139,17 +170,27 @@ // getAllMenus() }) + +const commonMenu = reactive([ + { + id: 1, + name: '鏁呴殰鎶ヤ慨', + icon: '/static/ico/ico20.png', + path: 'pages/repair/repair-add', + } +]) + const equMenu = reactive([ { id: 1, - name: '璁惧绠$悊', - icon: '/static/menu/menu1.png', + name: '璁惧鍒楄〃', + icon: '/static/ico/ico15.png', path: 'pages/equ/equ-list', }, { id: 2, - name: '宸ュ叿绠$悊', - icon: '/static/menu/menu1.png', + name: '宸ュ叿鍒楄〃', + icon: '/static/ico/ico16.png', path: 'pages/fixture/fixture-list', }, ]) @@ -164,32 +205,41 @@ { id: 1, name: '鐐规姹囨��', - icon: '/static/menu/menu4.png', + icon: '/static/ico/ico17.png', path: 'pages/inspect/insp-st', }, { id: 2, name: '淇濆吇姹囨��', - icon: '/static/menu/menu3.png', + icon: '/static/ico/ico11.png', path: 'pages/maint/maint-st', }, { id: 3, - name: '璁惧鎶ヤ慨', - icon: '/static/menu/menu1.png', + name: '鎶ヤ慨鍒楄〃', + icon: '/static/ico/ico18.png', path: 'pages/repair/req-list', }, { id: 4, - name: '璁惧缁翠慨', - icon: '/static/menu/menu2.png', + name: '缁翠慨鍒楄〃', + icon: '/static/ico/ico19.png', path: 'pages/repair/res-list', }, ]) function handleUserInfo() { - getAllMenus() + goToMy() } + +function goToMy() { + tabbarStore.setCurIdx(4) + uni.switchTab({ + url: '/pages/my/index', + }) +} + +const realName = computed(() => userStore?.userInfo?.realName) </script> <style lang="scss" scoped> @@ -229,7 +279,7 @@ height: 72rpx; margin-left: 4rpx; } -:deep(.wd-grid-item__content){ +:deep(.wd-grid-item__content) { align-items: center; } </style> diff --git a/eims-ui-mobile/src/pages/inspect/insp-record.vue b/eims-ui-mobile/src/pages/inspect/insp-record.vue index 7b64703..e17e7bf 100644 --- a/eims-ui-mobile/src/pages/inspect/insp-record.vue +++ b/eims-ui-mobile/src/pages/inspect/insp-record.vue @@ -24,7 +24,7 @@ } </route> <template> - <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time> + <z-paging ref="paging" v-model="dataList" :auto="false" @query="queryList" show-refresher-update-time> <template #top> <wd-card type="rectangle"> <template #title> @@ -66,9 +66,7 @@ <text class="ml-1">杩涜涓�</text> </template> </view> - <view class="text-color-gray text-xs mt-2 flex"> - 鍒涘缓鏃堕棿: {{inspSt.createTime}} - </view> + <view class="text-color-gray text-xs mt-2 flex">鍒涘缓鏃堕棿: {{ inspSt.createTime }}</view> </view> </view> </wd-card> @@ -118,7 +116,13 @@ </view> </wd-collapse-item> </wd-collapse> - <view class="w-full h-[1rpx] bg-base"></view> + <view class="w-full h-[24rpx]"></view> + <wd-cell> + <template #title> + <text class="text-color-gray">鍏跺畠</text> + </template> + </wd-cell> + <view class="w-full h-[1px] bg-base"></view> <wd-textarea label="鐗硅浜嬮」" label-width="200rpx" @@ -137,7 +141,12 @@ <script setup lang="ts"> import { ref } from 'vue' import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store' -import { getInspStRecordList, updateInspectSt, updateInspRecordBatch } from '@/service/inspect' +import { + getInspStRecordList, + getInspSt, + 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() @@ -145,6 +154,7 @@ const collapseRef = ref<CollapseInstance>() const isAllExpanded = ref(false) +const viewMode = ref<string>('Day') // 瀹氫箟鎺ュ彛 interface QueryParams { @@ -255,7 +265,7 @@ updateInspRecordBatch(params) .then((res: any) => { updateInspSt(resolve) - toast.success("鎿嶄綔鎴愬姛") + toast.success('鎿嶄綔鎴愬姛') }) .catch((res) => { console.error(res) @@ -291,16 +301,40 @@ { 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.createTime = options.createTime - inspSt.specialNote = options?.specialNote - inspSt.inspUser = userStore?.userInfo?.userId + // inspSt.id = options.id + // inspSt.inspCode = options.inspCode + // inspSt.equName = options.equName + // inspSt.assetNo = options.assetNo + // inspSt.planTimeStr = options.planTimeStr + // inspSt.createTime = options.createTime + // inspSt.specialNote = options?.specialNote + // inspSt.inspUser = userStore?.userInfo?.userId + viewMode.value = options.viewMode + initData(options.id) }) +function initData(id: any) { + getInspSt(id) + .then((res: any) => { + if (res?.id) { + const inspCode = `${res?.equId}_${res?.planTime}_${viewMode.value}` + inspSt.inspCode = inspCode + Object.assign(inspSt, res) + reloadData() + } else { + uni.showToast({ + title: '鏁版嵁鏌ヨ澶辫触锛岃鑱旂郴绠$悊鍛�', + icon: 'none', + }) + } + }) + .catch((res) => { + console.error(res) + }) +} +function reloadData() { + paging.value.reload() +} const dataCount = computed(() => dataList.value.length) const checkCount = computed(() => dataList.value.filter((item) => item.status === '1').length) const normalNum = computed(() => dataList.value.filter((item) => item.inspResult === '1').length) diff --git a/eims-ui-mobile/src/pages/inspect/insp-st.vue b/eims-ui-mobile/src/pages/inspect/insp-st.vue index 44d5ef2..ee381b4 100644 --- a/eims-ui-mobile/src/pages/inspect/insp-st.vue +++ b/eims-ui-mobile/src/pages/inspect/insp-st.vue @@ -112,9 +112,10 @@ } function itemClick(item) { - const inspCode = `${item.equId}_${item.planTime}_${viewMode.value}` + // const inspCode = `${item.equId}_${item.planTime}_${viewMode.value}` uni.navigateTo({ - url: `/pages/inspect/insp-record?id=${item.id}&createTime=${item.createTime}&inspCode=${inspCode}&specialNote=${item.specialNote ?? ''}&equName=${item.equName ?? ''}&assetNo=${item.assetNo ?? ''}&planTimeStr=${item.planTimeStr ?? ''}`, + // url: `/pages/inspect/insp-record?id=${item.id}&createTime=${item.createTime}&inspCode=${inspCode}&specialNote=${item.specialNote ?? ''}&equName=${item.equName ?? ''}&assetNo=${item.assetNo ?? ''}&planTimeStr=${item.planTimeStr ?? ''}`, + url: `/pages/inspect/insp-record?id=${item.id}&viewMode=${viewMode.value}`, }) } diff --git a/eims-ui-mobile/src/pages/login/index.vue b/eims-ui-mobile/src/pages/login/index.vue index c02558c..5c56190 100644 --- a/eims-ui-mobile/src/pages/login/index.vue +++ b/eims-ui-mobile/src/pages/login/index.vue @@ -54,11 +54,10 @@ import { useToast } from 'wot-design-uni' import { login, getUserInfo } from '@/service/login' import type { UserInfo } from '@/service/login.d' -import { TestEnum } from '@/typings' +import { tabbarStore } from '@/components/fg-tabbar/tabbar' const userStore = useUserStore() const accessStore = useAccessStore() const configStore = useSystemConfigStore() -const { success: showSuccess } = useToast() const model = reactive<{ username: string @@ -127,6 +126,8 @@ userStore.setUserInfo(userInfo) const { query } = currRoute() uni.switchTab({ url: '/pages/home/index' }) + tabbarStore?.setCurIdx(0) + tabbarStore?.setLastIdx(0) } </script> diff --git a/eims-ui-mobile/src/pages/maint/maint-st.vue b/eims-ui-mobile/src/pages/maint/maint-st.vue index f7ce57c..5abc99f 100644 --- a/eims-ui-mobile/src/pages/maint/maint-st.vue +++ b/eims-ui-mobile/src/pages/maint/maint-st.vue @@ -52,7 +52,7 @@ </view> <view class="text-color-gray text-xs mt-2 flex"> <text>鐘舵�侊細</text> - <template v-if="item.status=== '1'"> + <template v-if="item.status === '1'"> <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon> <text class="ml-1">宸插畬鎴�</text> </template> @@ -61,9 +61,7 @@ <text class="ml-1">杩涜涓�</text> </template> </view> - <view class="text-color-gray text-xs mt-2 flex"> - 鍒涘缓鏃堕棿: {{item.createTime}} - </view> + <view class="text-color-gray text-xs mt-2 flex">鍒涘缓鏃堕棿: {{ item.createTime }}</view> </view> <wd-button size="small" icon="edit-outline" @click.stop="itemClick(item)">鏄庣粏</wd-button> </view> @@ -76,13 +74,29 @@ import { ref } from 'vue' import { getMaintStList } from '@/service/maint' +/** + * 鍏朵粬椤甸潰浼犺繃鏉ョ殑鏁版嵁 + * assetNo: 璧勪骇缂栧彿 + * from: 鏄惁鏄壂鐮佽繘鏉ョ殑锛屽鏋滄槸鎵爜杩涙潵锛屽彧鑳芥煡璇㈠浐瀹氳澶囩殑鏁版嵁 + */ +interface PageParams { + assetNo?: string + from?: string +} + interface QueryParams { pageNum: number pageSize: number + assetNo?: string equName?: string status?: string } +// 椤甸潰鍙傛暟锛屼笂涓〉闈紶閫掕繃鏉ョ殑鍙傛暟 +const option = reactive<PageParams>({ + assetNo: '', + from: '', +}) const status = ref<string>('-1') const equName = ref<string>('-1') @@ -117,6 +131,10 @@ if (status.value === '-1') { delete params.status } + // 濡傛灉鏄粠鎵爜椤甸潰杩囨潵锛屽彧鑳芥煡璇㈠浐瀹氳澶囩殑鏁版嵁 + if (option?.from === 'scan') { + params.assetNo = option.assetNo + } getMaintStList(params) .then((res: any) => { @@ -140,7 +158,8 @@ function reloadData() { paging.value.reload() } -onLoad(() => { +onLoad((options) => { + Object.assign(option, options) uni.$on('maint-st-refresh', reloadData) }) onUnload(() => { diff --git a/eims-ui-mobile/src/pages/my/index.vue b/eims-ui-mobile/src/pages/my/index.vue index 2c2a4ca..8a5bd92 100644 --- a/eims-ui-mobile/src/pages/my/index.vue +++ b/eims-ui-mobile/src/pages/my/index.vue @@ -9,11 +9,57 @@ </route> <template> - <view class="pt-40 text-xl text-center text-green-500">鎴戠殑椤甸潰</view> + <view class="bg-base"> + <wd-cell-group border> + <wd-cell title="鐧诲綍鐢ㄦ埛" :value="realName" icon="user" is-link /> + <wd-cell title="瑙掕壊" :value="loginRoleName()" icon="bags" is-link /> + <wd-cell title="浜哄憳绠$悊" icon="usergroup" is-link @click="handleInfo" /> + </wd-cell-group> + <wd-cell-group border class="mt-2"> + <wd-cell title="閫�鍑虹櫥褰�" icon="login" is-link @click="handleLogout" /> + </wd-cell-group> + </view> </template> <script lang="ts" setup> -// +import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store' +import { loginRoleName } from '@/utils/RoleUtils' +import { useMessage } from 'wot-design-uni' +const message = useMessage() +const userStore = useUserStore() +const accessStore = useAccessStore() +const configStore = useSystemConfigStore() +const realName = computed(() => userStore?.userInfo?.realName) + +function handleLogout() { + if (!isLogined()) { + uni.navigateTo({ url: '/pages/login/index' }) + return false + } + message + .confirm({ + msg: '鎻愮ず', + title: '纭畾閫�鍑虹櫥褰曞悧锛�', + }) + .then(() => { + userStore.clearUserInfo() + accessStore.clearAccessInfo() + configStore.clearConfigInfo() + uni.navigateTo({ url: '/pages/login/index' }) + }) + .catch(() => {}) +} + +const isLogined = () => { + return accessStore.isLogined +} + +function handleInfo() { + uni.showToast({ + title: '鍔熻兘寮�鍙戜腑', + icon: 'none', + }) +} </script> <style lang="scss" scoped> diff --git a/eims-ui-mobile/src/pages/repair/repair-add.vue b/eims-ui-mobile/src/pages/repair/repair-add.vue index 12a7620..05718e4 100644 --- a/eims-ui-mobile/src/pages/repair/repair-add.vue +++ b/eims-ui-mobile/src/pages/repair/repair-add.vue @@ -35,6 +35,7 @@ label="鏁呴殰绫诲瀷" v-model="model.reqType" @confirm="handleConfirmReqType" + :disabled="reqTypeDis" /> </wd-cell-group> @@ -181,6 +182,25 @@ const toast = useToast() const userStore = useUserStore() +/** + * 鍏朵粬椤甸潰浼犺繃鏉ョ殑鏁版嵁 + * assetNo: 璧勪骇缂栧彿 + * from: 鏄惁鏄壂鐮佽繘鏉ョ殑锛屽鏋滄槸鎵爜杩涙潵锛屽彧鑳芥煡璇㈠浐瀹氳澶囩殑鏁版嵁 + */ +interface PageParams { + equId?: string + equName?: string + from?: string +} + +// 椤甸潰鍙傛暟锛屼笂涓〉闈紶閫掕繃鏉ョ殑鍙傛暟 +const option = reactive<PageParams>({ + equId: '', + equName: '', + from: '', +}) + +const reqTypeDis = ref(false) // 鎶ヤ慨绫诲瀷 const reqList = ref<any>([]) // 鏁呴殰绫诲埆 @@ -228,6 +248,9 @@ * 閫夋嫨璁惧 */ function handleSelectEqu() { + if(reqTypeDis.value){ + return false + } uni.navigateTo({ url: '/pages/equ/equ-list', events: { @@ -294,7 +317,7 @@ function handleAddRepairReq() { // 琛ュ厖蹇呰瀛楁 - model.status = '0' + model.status = '0' // 鎶ヤ慨鍚庨粯璁ょ姸鎬佷负寰呮帴鍗� model.reqTime = formatDate(new Date()) model.reqDept = userStore?.userInfo?.deptId model.reqUser = userStore?.userInfo?.userId @@ -397,6 +420,15 @@ }) onLoad((options) => { + Object.assign(option, options) + // 鎵爜椤甸潰杩涘叆鐨勪竴浜涘垵濮嬪寲 + if (option.from === 'scan') { + model.equId = option?.equId + model.equName = option?.equName + // 璁剧疆绫诲瀷涓鸿澶囩被鍨� + model.reqType = '1' + reqTypeDis.value = true + } initData() }) </script> diff --git a/eims-ui-mobile/src/pages/repair/feedback.vue b/eims-ui-mobile/src/pages/repair/repair-fb.vue similarity index 75% rename from eims-ui-mobile/src/pages/repair/feedback.vue rename to eims-ui-mobile/src/pages/repair/repair-fb.vue index 497247c..ae8aaea 100644 --- a/eims-ui-mobile/src/pages/repair/feedback.vue +++ b/eims-ui-mobile/src/pages/repair/repair-fb.vue @@ -33,7 +33,7 @@ </view> </template> <wd-steps :active="repairRecordList.length" vertical class="px-4"> - <wd-step v-for="(item,index) in repairRecordList" > + <wd-step v-for="(item, index) in repairRecordList"> <template #title> <view class="flex items-center menu-title-box"> <view class="ml-1 text-xs">{{ item?.operaResult }}</view> @@ -46,7 +46,6 @@ </view> </template> </wd-step> - </wd-steps> </wd-card> @@ -96,10 +95,18 @@ </view> </template> <script setup lang="ts"> -import { getRepairRes, getRepairFb, getRepairRecordList } from '@/service/repair' +import { + getRepairRes, + getRepairFb, + getRepairRecordList, + addRepairFb, + updateRepairFb, +} from '@/service/repair' import { reactive } from 'vue' +import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils' import { RepairResVO, RepairFbVO, RepairRecordVO } from '@/service/repair.d' +const isUpdate = ref(false) const repairRes = reactive<RepairResVO>({ id: '', resCode: '', @@ -118,6 +125,7 @@ const repairFb = reactive<RepairFbVO>({ id: '', + resId: '', resCode: '', fbResult: '', suggestions: '', @@ -134,8 +142,8 @@ } function getRepairRecord() { - if(!repairRes.id){ - return false + if (!repairRes.id) { + return false } const params = { resId: repairRes.id, @@ -143,7 +151,7 @@ getRepairRecordList(params) .then((res: any) => { console.error(res) - if(res?.code === 200){ + if (res?.code === 200) { repairRecordList.value = res?.rows?.sort((a, b) => { if (a.handleTime < b.handleTime) { return -1 @@ -157,7 +165,6 @@ }) .catch((res) => {}) } - function initRepairRes(id: any) { getRepairRes(id) @@ -174,15 +181,62 @@ function getFeedBack(id: any) { getRepairFb(id) .then((res: any) => { + // 鍦ㄨ繖閲岃繘琛屾暟鎹被鍨嬭浆鎹� + res.repairSatisfaction = Number(res?.repairSatisfaction) + res.repairTimeliness = Number(res?.repairTimeliness) + res.serviceAttitude = Number(res?.serviceAttitude) + res.repairSs = Number(res?.repairSs) Object.assign(repairFb, res) }) .catch((res) => {}) } -async function initData(options: any) { - initRepairRes(options.id) +function handleRepairFb() { + if(isOperatorOrRepair()){ + uni.showToast({ + title: '鏃犳潈闄�,璇风櫥褰曠鐞嗗憳璐﹀彿鎿嶄綔', + icon: 'none', + }) + return false + } + const id = repairFb.id + isUpdate.value = !!id + if (isUpdate.value) { + updateRepairFb(repairFb) + .then((res: any) => { + if (res?.code === 200) { + uni.showToast({ + title: '淇敼鎴愬姛', + icon: 'none', + }) + } + }) + .catch((res) => {}) + } else { + addRepairFb(repairFb) + .then((res: any) => { + if (res?.code === 200) { + uni.showToast({ + title: '璇勪环鎴愬姛', + icon: 'none', + }) + } + }) + .catch((res) => {}) + } } +async function initData(options: any) { + repairFb.resId = options.id + initRepairRes(options.id) +} + +onNavigationBarButtonTap((e) => { + if (e.index === 0) { + handleRepairFb() + } +}) + onLoad((options) => { initData(options) }) diff --git a/eims-ui-mobile/src/pages/repair/res-list.vue b/eims-ui-mobile/src/pages/repair/res-list.vue index 096aedd..02b2570 100644 --- a/eims-ui-mobile/src/pages/repair/res-list.vue +++ b/eims-ui-mobile/src/pages/repair/res-list.vue @@ -140,9 +140,8 @@ size="small" icon="edit-outline" @click.stop="goToFeedBack(item)" - v-if="item.fbId === null" > - 鍐欒瘎浠� + 鏌ョ湅璇勪环 </wd-button> </view> </template> @@ -176,9 +175,8 @@ size="small" icon="edit-outline" @click.stop="goToFeedBack(item)" - v-if="item.fbId === null" > - 鍐欒瘎浠� + {{ item.fbId == null ? '鍐欒瘎浠�' : '鏌ョ湅璇勪环' }} </wd-button> </view> </template> @@ -201,15 +199,32 @@ const message = useMessage() const toast = useToast() + +/** + * 鍏朵粬椤甸潰浼犺繃鏉ョ殑鏁版嵁 + * assetNo: 璧勪骇缂栧彿 + * from: 鏄惁鏄壂鐮佽繘鏉ョ殑锛屽鏋滄槸鎵爜杩涙潵锛屽彧鑳芥煡璇㈠浐瀹氳澶囩殑鏁版嵁 + */ +interface PageParams { + assetNo?: string + from?: string +} + +// 椤甸潰鍙傛暟锛屼笂涓〉闈紶閫掕繃鏉ョ殑鍙傛暟 +const option = reactive<PageParams>({ + assetNo: '', + from: '', +}) + // 缁翠慨鍗曠被鍨� -const resTypeId = ref<number>(0) +const resTypeId = ref<number>(-1) // 缁翠慨鍗曞鐞嗙姸鎬� -const status = ref<number>(0) +const status = ref<number>(-1) const isSelectRes = ref(false) -const resTypeList = ref<any>([{ dictLabel: '鎵�鏈夌被鍨�', dictValue: 0 }]) -const statusList = ref<any>([{ dictLabel: '鎵�鏈夌姸鎬�', dictValue: 0 }]) +const resTypeList = ref<any>([{ dictLabel: '鎵�鏈夌被鍨�', dictValue: -1 }]) +const statusList = ref<any>([{ dictLabel: '鎵�鏈夌姸鎬�', dictValue: -1 }]) function handleResType({ value }) { reloadData() } @@ -221,19 +236,23 @@ const dataList = ref([]) const queryList = (pageNum?: number, pageSize?: number) => { - const parmams = { + const params: any = { pageNum, pageSize, reqType: resTypeId.value, status: status.value, } - if (resTypeId.value === 0) { - delete parmams.reqType + if (resTypeId.value === -1) { + delete params.reqType } - if (status.value === 0) { - delete parmams.status + if (status.value === -1) { + delete params.status } - getRepairResList(parmams) + // 濡傛灉鏄粠鎵爜椤甸潰杩囨潵锛屽彧鑳芥煡璇㈠浐瀹氳澶囩殑鏁版嵁 + if (option?.from === 'scan') { + params.assetNo = option.assetNo + } + getRepairResList(params) .then((res: any) => { paging.value.completeByTotal(res.rows, res.total) }) @@ -308,7 +327,7 @@ function goToFeedBack(item) { uni.navigateTo({ - url: `/pages/repair/feedback?id=${item.id}`, + url: `/pages/repair/repair-fb?id=${item.id}`, }) } @@ -373,7 +392,8 @@ const sList: any = await getDictInfo(DICT_REPAIR_RES_STATUS) statusList.value.push(...sList) } -onLoad(() => { +onLoad((options) => { + Object.assign(option, options) initData() uni.$on('res-list-refresh', reloadData) }) diff --git a/eims-ui-mobile/src/pages/scan/index.vue b/eims-ui-mobile/src/pages/scan/index.vue new file mode 100644 index 0000000..82d4d73 --- /dev/null +++ b/eims-ui-mobile/src/pages/scan/index.vue @@ -0,0 +1,215 @@ +<template> + <view class="bg-base"> + <view v-if="exist"> + <wd-cell> + <template #title> + <text class="text-color-gray">璁惧鍥剧墖</text> + </template> + </wd-cell> + <view class="h-[1px] bg-base"></view> + <image class="equ-img" src="/static/images/cgq.png" /> + + <wd-cell class="mt-2"> + <template #title> + <text class="text-color-gray">璁惧淇℃伅</text> + </template> + </wd-cell> + <wd-card type="rectangle"> + <template #title> + <view class="flex justify-between items-baseline"> + <view class="flex items-center menu-title-box"> + <view class="menu-indicator"></view> + <text class="ml-1 text-xs">{{ model.assetNo }}</text> + <wd-tag v-if="model.status === '0'" class="ml-2" bg-color="cyan">璇曠敤</wd-tag> + <wd-tag v-else-if="model.status === '1'" class="ml-2" type="success">浣跨敤</wd-tag> + <wd-tag v-else-if="model.status === '2'" class="ml-2" type="danger">鍋滅敤</wd-tag> + <wd-tag v-else-if="model.status === '3'" class="ml-2" bg-color="pink">鎶ュ簾</wd-tag> + <wd-tag v-else-if="model.status === '4'" class="ml-2" type="warning">闂茬疆</wd-tag> + <wd-tag v-else-if="model.status === '5'" class="ml-2">鏂板</wd-tag> + </view> + + <view @click="handleInfo"> + <text class="icon-color-base">璇︽儏</text> + <wd-icon name="arrow-right" custom-class="icon-color-base"></wd-icon> + </view> + </view> + </template> + <view class="flex h-[90rpx] items-center"> + <image class="slot-img text-center" src="/static/images/camera.png" /> + <view class="flex-1"> + <view class="text-color-base"> + {{ model.equName }} + <text class="text-color-gray ml-2 text-mini">{{ model.modelNo }}</text> + </view> + <view class="text-color-gray text-xs mt-1"> + {{ model.location }} | {{ model.madeIn }} + </view> + </view> + </view> + </wd-card> + + <view class="mt-2"> + <wd-cell class="mt-2"> + <template #title> + <text class="text-color-gray">鎿嶄綔</text> + </template> + </wd-cell> + <view class="h-[1px] bg-base"></view> + <view class="bg-white flex justify-around py-4"> + <wd-button icon="edit-outline" @click.stop="handleInsp">鐐规</wd-button> + <wd-button icon="laptop" @click.stop="handMaint">淇濆吇</wd-button> + <wd-button icon="tools" @click.stop="showActions">缁翠慨</wd-button> + </view> + </view> + + <wd-action-sheet + v-model="show" + :actions="actions" + @close="close" + @select="select" + cancel-text="鍙栨秷" + /> + </view> + <view v-else> + <wd-status-tip image="search" tip="褰撳墠鎼滅储鏃犵粨鏋�" /> + <view class="w-full flex justify-center">{{ scanResult }}</view> + </view> + </view> +</template> +<script setup lang="ts"> +import dayjs from 'dayjs' +import type { EquVO } from '@/service/equ.d' +import { useToast, useMessage } from 'wot-design-uni' +import { getEquByAssetNo } from '@/service/equ' +import { getInspStByStId } from '@/service/inspect' +const message = useMessage() +const toast = useToast() +const model = reactive<EquVO>({}) + +const scanResult = ref<string>('') +const show = ref<boolean>(false) +const exist = ref<boolean>(false) +const actions = ref([ + { + name: '鏂板鎶ヤ慨', + }, + { + name: '鍘荤淮淇�', + }, +]) + +function initData(assetNo: any) { + getEquByAssetNo(assetNo) + .then((res: any) => { + if (res.data) { + Object.assign(model, res) + } else { + toast.error('鏈煡璇㈠埌璇ヨ祫浜х紪鍙风浉鍏虫暟鎹紒') + } + }) + .catch((res) => { + console.error(res) + toast.error(res?.data?.msg || '璇锋眰澶辫触') + }) +} +function handleInfo() { + uni.showToast({ + title: '鍔熻兘寮�鍙戜腑', + icon: 'none', + }) +} + +function handleInsp() { + // 鎷兼帴鍑簊t_id (鐢辨棩鏈�+璁惧id缁勬垚) + const today = dayjs().format('YYYYMMDD') + const stId = `${today}_${model.equId}` + + getInspStByStId(stId).then((res: any) => { + if (res?.id) { + uni.navigateTo({ + url: `/pages/inspect/insp-record?id=${res?.id}&viewMode=Day`, + }) + } else { + uni.showToast({ + title: '璁惧浠婂ぉ娌℃湁鐐规璁板綍锛岃鑱旂郴绠$悊鍛橈紒', + icon: 'none', + }) + } + }) +} +function handMaint() { + if (!model?.assetNo) { + uni.showToast({ + title: '鏈煡璇㈠埌璁惧锛岃鑱旂郴绠$悊鍛橈紒', + icon: 'none', + }) + return false + } + uni.navigateTo({ + url: `/pages/maint/maint-st?assetNo=${model?.assetNo}&from=scan`, + }) +} + +function showActions() { + show.value = true +} + +function close() { + show.value = false +} +function select({ item, index }) { + console.error(model?.equId) + console.error(!model?.equId) + if (!model?.equId) { + uni.showToast({ + title: '鏈煡璇㈠埌璁惧锛岃鑱旂郴绠$悊鍛橈紒', + icon: 'none', + }) + return false + } + switch (index) { + case 0: + uni.navigateTo({ + url: `/pages/repair/repair-add?equId=${model?.equId}&equName=${model?.equName}&from=scan`, + }) + break + case 1: + uni.navigateTo({ + url: `/pages/repair/res-list?assetNo=${model?.assetNo}&from=scan`, + }) + break + } +} +onLoad((options) => { + scanResult.value = options?.result + initData(options?.result) +}) +</script> + +<style scoped lang="scss"> +.equ-img { + width: 100%; + height: 300rpx; +} +.slot-img { + width: 72rpx; + height: 72rpx; + margin-right: 24rpx; +} +.text-mini { + font-size: 22rpx; +} + +.menu-indicator { + width: 6rpx; + height: 22rpx; + border-radius: 10rpx; + background-color: $uni-color-primary; +} +:deep(.wd-card__footer) { + padding: 10rpx !important; +} +:deep(.wd-card__title-content) { + padding: 16rpx 0 !important; +} +</style> diff --git a/eims-ui-mobile/src/pages/spare/index.vue b/eims-ui-mobile/src/pages/spare/index.vue index c1f8574..0dcec78 100644 --- a/eims-ui-mobile/src/pages/spare/index.vue +++ b/eims-ui-mobile/src/pages/spare/index.vue @@ -3,19 +3,79 @@ layout: 'tabbar', needLogin: true, style: { - navigationBarTitleText: 'spare', + navigationBarTitleText: '澶囦欢', }, } </route> <template> - <view class="pt-40 text-xl text-center text-green-500">澶囦欢</view> + <view class="bg-base"> + <view class="flex px-4 py-3 bg-white"> + <div class="box-border h-[150rpx] flex-1 bg-tag rounded-sm mr-2 px-2 py-2"> + <wd-count-to + :startVal="0" + :endVal="0" + :fontSize="24" + color="text-color-base" + ></wd-count-to> + <view class="text-color-gray mt-1">搴撳瓨涓嶈冻</view> + </div> + <div class="box-border h-[150rpx] flex-1 bg-tag rounded-sm mr-2 px-2 py-2"> + <wd-count-to + :startVal="0" + :endVal="0" + :fontSize="24" + color="text-color-base" + ></wd-count-to> + <view class="text-color-gray mt-1">搴撳瓨杩囬噺</view> + </div> + </view> + <wd-cell-group border> + <wd-cell + title="澶囦欢鍒楄〃" + is-link + to="/pages/spare/spare-list" + icon="list" + custom-icon-class="icon-color-base" + /> + <wd-cell + title="娣诲姞澶囦欢" + is-link + icon="add" + custom-icon-class="icon-color-base" + @click="handleInfo" + /> + </wd-cell-group> + <wd-cell-group border class="mt-2"> + <wd-cell + title="娣诲姞鍑哄簱" + is-link + icon="add-circle" + custom-icon-class="icon-color-base" + @click="handleInfo" + /> + <wd-cell + title="娣诲姞鍏ュ簱" + is-link + icon="add-circle" + custom-icon-class="icon-color-base" + @click="handleInfo" + /> + </wd-cell-group> + </view> </template> <script lang="ts" setup> -// +function handleInfo() { + uni.showToast({ + title: '鍔熻兘寮�鍙戜腑', + icon: 'none', + }) +} </script> <style lang="scss" scoped> -// +.bg-tag { + background: #f5f8ff; +} </style> diff --git a/eims-ui-mobile/src/pages/spare/spare-list.vue b/eims-ui-mobile/src/pages/spare/spare-list.vue new file mode 100644 index 0000000..6d2fd19 --- /dev/null +++ b/eims-ui-mobile/src/pages/spare/spare-list.vue @@ -0,0 +1,156 @@ +<route lang="json5" type="page"> +{ + layout: 'default', + needLogin: true, + 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="typeId" :options="typeList" @change="handleSpareType" /> + <wd-drop-menu-item v-model="status" :options="statusList" @change="handleSpareStatu" /> + </wd-drop-menu> + </template> + + <view class="bg-base"> + <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id"> + <template #title> + <view class="flex justify-between items-baseline"> + <view class="flex items-center menu-title-box"> + <view class="menu-indicator"></view> + <text class="ml-1 text-xs">{{ item.code }}</text> + </view> + + <view> + <text class="icon-color-base">璇︽儏</text> + <wd-icon name="arrow-right" custom-class="icon-color-base"></wd-icon> + </view> + </view> + </template> + <view class="flex h-[80rpx] items-center" @click.stop="itemClick(item)"> + <image class="slot-img text-center" src="/static/images/camera.png" /> + <view class="flex-1"> + <view class="text-color-base"> + {{ item.name }} + <text class="text-color-gray ml-2 text-mini">{{ item.modelNo }}</text> + </view> + <view class="text-color-gray text-xs mt-1"> + 搴撳瓨: {{ item.actualStock }} | 鍗曚环: {{ item.referPrice }} + </view> + <view class="text-color-gray text-xs mt-1"> + 渚涘簲鍟�: {{ item.supplier }} + </view> + </view> + <view v-if="isSelectSpare"> + <wd-button size="small" icon="edit-outline" @click.stop="handleSelectSpare(item)"> + 閫変腑 + </wd-button> + </view> + </view> + </wd-card> + </view> + </z-paging> +</template> + +<script setup lang="ts"> +import { onMounted, getCurrentInstance, ref } from 'vue' + +import { getSpareList } from '@/service/spare' + +// 澶囦欢绫诲瀷 +const typeId = ref<number>(-1) +// 澶囦欢鐘舵�� +const status = ref<number>(-1) + +const isSelectSpare = ref(false) + +const typeList = ref<Record<string, any>[]>([{ label: '澶囦欢绫诲瀷', value: -1 }]) +const statusList = ref<Record<string, any>[]>([{ label: '鎵�鏈夌姸鎬�', value: -1 }]) +function handleSpareType({ value }) { + console.log(value) +} +function handleSpareStatu({ value }) { + console.log(value) +} + +const paging = ref(null) +const dataList = ref([]) + +const queryList = (pageNum?: number, pageSize?: number) => { + getSpareList({ pageNum, pageSize }) + .then((res: any) => { + paging.value.completeByTotal(res.rows, res.total) + }) + .catch((res) => { + paging.value.complete(false) + }) +} + +/** + * 澶囦欢鏉$洰鐐瑰嚮浜嬩欢 + * @param item + */ +function itemClick(item: any) {} + +/** + * 鍏跺畠椤甸潰閫夋嫨澶囦欢 + * @param item + */ +function handleSelectSpare(item: any) { + if (isSelectSpare.value) { + emitSelectSpare(item) + uni.navigateBack() + } +} + +/** + * 閫夋嫨澶囦欢鍥炶皟 + * @param spare + */ +function emitSelectSpare(spare: any) { + eventChannel.value.emit('selectSpare', { + data: spare, + }) +} + +const eventChannel = ref<any>() +onMounted(() => { + const instance: any = getCurrentInstance().proxy + const event = instance.getOpenerEventChannel() + eventChannel.value = event + event.on('OnSelectSpare', function (data) { + isSelectSpare.value = true + console.log('OnSelectSpare', data) + }) +}) +</script> + +<style scoped lang="scss"> +.menu-title-box { + height: 30rpx; + line-height: 30rpx; +} + +.slot-img { + width: 72rpx; + height: 72rpx; + margin-right: 24rpx; +} +.text-mini { + font-size: 22rpx; +} + +.menu-indicator { + width: 6rpx; + height: 22rpx; + border-radius: 10rpx; + background-color: $uni-color-primary; +} +:deep(.wd-card__footer) { + padding: 10rpx !important; +} +</style> diff --git a/eims-ui-mobile/src/service/dict.ts b/eims-ui-mobile/src/service/dict.ts index d59eecf..067da1b 100644 --- a/eims-ui-mobile/src/service/dict.ts +++ b/eims-ui-mobile/src/service/dict.ts @@ -8,6 +8,9 @@ export const DICT_REPAIR_REQ_STATUS = 'repair_req_status' export const DICT_REPAIR_RES_STATUS = 'repair_res_status' +export const DICT_SYS_EQU_STATUS = 'sys_equ_status' + export const getDictInfo = (dictType: string) => { return http.get<DictData[]>(`/system/dict/data/type/${dictType}`) } + diff --git a/eims-ui-mobile/src/service/equ.d.ts b/eims-ui-mobile/src/service/equ.d.ts index 7807f19..632cbf2 100644 --- a/eims-ui-mobile/src/service/equ.d.ts +++ b/eims-ui-mobile/src/service/equ.d.ts @@ -2,123 +2,123 @@ /** * */ - equId: number | string; + equId?: number | string; /** * 璧勪骇缂栧彿 */ - assetNo: string; + assetNo?: string; /** * 璁惧缂栫爜 */ - equCode: string; + equCode?: string; /** * 璁惧鍚嶇О */ - equName: string; + equName?: string; /** * 璁惧绫诲瀷 */ - equTypeName: string; + equTypeName?: string; /** * 鍨嬪彿 */ - modelNo: string; + modelNo?: string; /** * 鍒堕�犲晢 */ - madeIn: string; + madeIn?: string; /** * 棰濆害鍔熺巼 */ - ratedPower: number; + ratedPower?: number; /** * 閾墝淇℃伅 */ - plateInfo: string; + plateInfo?: string; /** * 閲囪喘鏃ユ湡 */ - purchaseDate: string; + purchaseDate?: string; /** * 鐘舵�� */ - status: string; + status?: string; /** * 鎵�鍦ㄥ満鎵� */ - location: string; + location?: string; /** * 浣跨敤閮ㄩ棬锛堝叧鑱攊d锛� */ - deptUsed: number; + deptUsed?: number; /** * 浣跨敤閮ㄩ棬鍚嶇О */ - deptName: number; + deptName?: number; /** * 璐d换浜�(鍏宠仈id) */ - respPerson: number; + respPerson?: number; /** * 璐d换浜� */ - respPersonName: string; + respPersonName?: string; /** * 鑱旂郴鐢佃瘽 */ - contactPhone: string; + contactPhone?: string; /** * 姝e紡浣跨敤鏃ユ湡 */ - deployDate: string; + deployDate?: string; /** * 寮�濮嬭瘯鐢ㄦ棩鏈� */ - trialDate: string; + trialDate?: string; /** * 璁″垝楠屾敹鏃ユ湡 */ - planAcceptDate: string; + planAcceptDate?: string; /** * 瀹為檯楠屾敹鏃ユ湡 */ - actualAcceptDate: string; + actualAcceptDate?: string; /** * 瀵煎叆鐘舵�侊紙瀛楀吀锛� */ - importStatus: number; + importStatus?: number; /** * 鐩樼偣鏍囧織 */ - inventoryFlag: number; + inventoryFlag?: number; /** * 涓婃鐩樼偣鏃ユ湡 */ - inventoryDate: string; + inventoryDate?: string; /** * 浣跨敤骞撮檺 */ - serviceLife: number; + serviceLife?: number; } diff --git a/eims-ui-mobile/src/service/equ.ts b/eims-ui-mobile/src/service/equ.ts index 429e521..e510589 100644 --- a/eims-ui-mobile/src/service/equ.ts +++ b/eims-ui-mobile/src/service/equ.ts @@ -7,3 +7,11 @@ export const getEquList = (params: any) => { return http.get<EquVO[]>('/eims/equ/list', params) } + +/** + * 鏍规嵁璧勪骇缂栧彿鏌ヨ璁惧 + * @param id + */ +export const getEquByAssetNo = (assetNo: string) => { + return http.get<EquVO>(`/eims/equ/info/${assetNo}`) +} diff --git a/eims-ui-mobile/src/service/inspect.ts b/eims-ui-mobile/src/service/inspect.ts index adf4fa6..3aad82e 100644 --- a/eims-ui-mobile/src/service/inspect.ts +++ b/eims-ui-mobile/src/service/inspect.ts @@ -1,6 +1,6 @@ import { http } from '@/utils/http' import type { InspectStVO, InspectRecordVO } from './inspect.d' - +type ID = number | string /** * 鐐规姹囨�诲垪琛� */ @@ -9,6 +9,22 @@ } /** + * 鏍规嵁id鏌ヨ姹囨�� + * @param id + */ +export const getInspSt = (id: ID) => { + return http.get<InspectStVO>(`/eims/inspectSt/${id}`) +} + +/** + * 鏍规嵁id鏌ヨ姹囨�� + * @param stId + */ +export const getInspStByStId = (stId: string) => { + return http.get<InspectStVO>(`/eims/inspectSt/info/${stId}`) +} + +/** * 鐐规姹囨�诲垪琛ㄤ笅鐐规璁板綍鍒楄〃 */ export const getInspStRecordList = (params: any) => { diff --git a/eims-ui-mobile/src/service/repair.d.ts b/eims-ui-mobile/src/service/repair.d.ts index cf677cc..5fca882 100644 --- a/eims-ui-mobile/src/service/repair.d.ts +++ b/eims-ui-mobile/src/service/repair.d.ts @@ -206,22 +206,22 @@ /** * 缁翠慨鍙婃椂鎬�(瀛楀吀) */ - repairTimeliness?: number | string; + repairTimeliness?: number ; /** * 鏈嶅姟鎬佸害 */ - serviceAttitude?: number | string; + serviceAttitude?: number ; /** * 缁翠慨鐜板満6s */ - repairSs?: number | string; + repairSs?: number ; /** * 缁翠慨婊℃剰搴� */ - repairSatisfaction?: number | string; + repairSatisfaction?: number ; /** * 鎰忚鎴栧缓璁� diff --git a/eims-ui-mobile/src/service/repair.ts b/eims-ui-mobile/src/service/repair.ts index 1d2e7c3..4b5e2b6 100644 --- a/eims-ui-mobile/src/service/repair.ts +++ b/eims-ui-mobile/src/service/repair.ts @@ -72,8 +72,13 @@ return http.post<void>('/eims/repairFb', data) } - - +/** + * 缂栬緫缁翠慨璇勪环 + * @param data + */ +export const updateRepairFb = (data: any) => { + return http.put<void>('/eims/repairFb', data) +} /** * 缁翠慨璁板綍鍒楄〃 diff --git a/eims-ui-mobile/src/service/spare.d.ts b/eims-ui-mobile/src/service/spare.d.ts new file mode 100644 index 0000000..8a6071b --- /dev/null +++ b/eims-ui-mobile/src/service/spare.d.ts @@ -0,0 +1,90 @@ +export interface SpareVO { + /** + * + */ + id: number | string; + + /** + * 绫诲瀷 + */ + type: number; + + /** + * 澶囦欢鍚嶇О + */ + name: string; + + /** + * 澶囦欢缂栫爜 + */ + code: string; + + /** + * 澶囦欢鍥剧墖 + */ + img: number; + + /** + * 澶囦欢鍥剧墖Url + */ + imgUrl: string; + /** + * 鍨嬪彿 + */ + modelNo: string; + + /** + * 鍒堕�犲晢 + */ + madeIn: string; + + /** + * 渚涘簲鍟� + */ + supplier: string; + + /** + * 璁¢噺鍗曚綅锛堝瓧鍏革級 + */ + unit: string; + + /** + * 鍙傝�冧环鏍� + */ + referPrice: number; + + /** + * 搴撳瓨涓婇檺 + */ + upperStock: number; + + /** + * 搴撳瓨涓嬮檺 + */ + lowerStock: number; + + /** + * 瀹為檯搴撳瓨 + */ + actualStock: number; + + /** + * 搴撳瓨閲戦 + */ + stockAmount: number; + + /** + * 鏇存崲鍛ㄦ湡 + */ + replaceCycle: number; + + /** + * 鏇存崲鍛ㄦ湡鍗曚綅锛堝瓧鍏革級 + */ + cycleUnit: string; + + /** + * 澶囨敞 + */ + remark: string; +} diff --git a/eims-ui-mobile/src/service/spare.ts b/eims-ui-mobile/src/service/spare.ts new file mode 100644 index 0000000..2f6fbc0 --- /dev/null +++ b/eims-ui-mobile/src/service/spare.ts @@ -0,0 +1,9 @@ +import { http } from '@/utils/http' +import type { SpareVO } from './spare.d' + +/** + * 澶囦欢鍒楄〃 + */ +export const getSpareList = (params: any) => { + return http.get<SpareVO[]>('/eims/spare/list', params) +} diff --git a/eims-ui-mobile/src/static/ico/ico1.png b/eims-ui-mobile/src/static/ico/ico1.png new file mode 100644 index 0000000..fb59de7 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico1.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico10.png b/eims-ui-mobile/src/static/ico/ico10.png new file mode 100644 index 0000000..b596a11 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico10.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico11.png b/eims-ui-mobile/src/static/ico/ico11.png new file mode 100644 index 0000000..af42e14 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico11.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico12.png b/eims-ui-mobile/src/static/ico/ico12.png new file mode 100644 index 0000000..6bc7efc --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico12.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico13.png b/eims-ui-mobile/src/static/ico/ico13.png new file mode 100644 index 0000000..6f3ea82 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico13.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico14.png b/eims-ui-mobile/src/static/ico/ico14.png new file mode 100644 index 0000000..0aa451c --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico14.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico15.png b/eims-ui-mobile/src/static/ico/ico15.png new file mode 100644 index 0000000..acaad0b --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico15.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico16.png b/eims-ui-mobile/src/static/ico/ico16.png new file mode 100644 index 0000000..e6e2833 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico16.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico17.png b/eims-ui-mobile/src/static/ico/ico17.png new file mode 100644 index 0000000..52181c9 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico17.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico18.png b/eims-ui-mobile/src/static/ico/ico18.png new file mode 100644 index 0000000..3d95287 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico18.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico19.png b/eims-ui-mobile/src/static/ico/ico19.png new file mode 100644 index 0000000..e56749f --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico19.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico2.png b/eims-ui-mobile/src/static/ico/ico2.png new file mode 100644 index 0000000..2e5bab5 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico2.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico20.png b/eims-ui-mobile/src/static/ico/ico20.png new file mode 100644 index 0000000..6e869ba --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico20.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico3.png b/eims-ui-mobile/src/static/ico/ico3.png new file mode 100644 index 0000000..debd368 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico3.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico4.png b/eims-ui-mobile/src/static/ico/ico4.png new file mode 100644 index 0000000..72b1188 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico4.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico5.png b/eims-ui-mobile/src/static/ico/ico5.png new file mode 100644 index 0000000..6bc7efc --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico5.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico6.png b/eims-ui-mobile/src/static/ico/ico6.png new file mode 100644 index 0000000..e949123 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico6.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico7.png b/eims-ui-mobile/src/static/ico/ico7.png new file mode 100644 index 0000000..629ab6a --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico7.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico8.png b/eims-ui-mobile/src/static/ico/ico8.png new file mode 100644 index 0000000..12cef2a --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico8.png Binary files differ diff --git a/eims-ui-mobile/src/static/ico/ico9.png b/eims-ui-mobile/src/static/ico/ico9.png new file mode 100644 index 0000000..1974eb3 --- /dev/null +++ b/eims-ui-mobile/src/static/ico/ico9.png Binary files differ diff --git a/eims-ui-mobile/src/static/images/cgq.png b/eims-ui-mobile/src/static/images/cgq.png new file mode 100644 index 0000000..30d1dc9 --- /dev/null +++ b/eims-ui-mobile/src/static/images/cgq.png Binary files differ diff --git a/eims-ui-mobile/src/style/index.scss b/eims-ui-mobile/src/style/index.scss index a35dd3f..b582dd3 100644 --- a/eims-ui-mobile/src/style/index.scss +++ b/eims-ui-mobile/src/style/index.scss @@ -57,5 +57,3 @@ background: $uni-color-primary; } - - diff --git a/eims-ui-mobile/src/types/uni-pages.d.ts b/eims-ui-mobile/src/types/uni-pages.d.ts index 3792d6f..d3446bb 100644 --- a/eims-ui-mobile/src/types/uni-pages.d.ts +++ b/eims-ui-mobile/src/types/uni-pages.d.ts @@ -16,12 +16,14 @@ "/pages/maint/maint-st" | "/pages/maint/order-detail" | "/pages/my/index" | - "/pages/repair/feedback" | "/pages/repair/repair-add" | + "/pages/repair/repair-fb" | "/pages/repair/req-list" | "/pages/repair/res-detail" | "/pages/repair/res-list" | - "/pages/spare/index"; + "/pages/scan/index" | + "/pages/spare/index" | + "/pages/spare/spare-list"; } interface RedirectToOptions extends NavigateToOptions {} diff --git a/eims-ui-mobile/src/utils/RoleUtils.ts b/eims-ui-mobile/src/utils/RoleUtils.ts index c1e77d4..3eac386 100644 --- a/eims-ui-mobile/src/utils/RoleUtils.ts +++ b/eims-ui-mobile/src/utils/RoleUtils.ts @@ -39,3 +39,22 @@ roles.includes(ROLE_LINE) || roles.includes(ROLE_SUPER_ADMIN) || roles.includes(ROLE_LEADER) ) } + +export const loginRoleName = () => { + const roles = useUserStore()?.userInfo?.roles || [] + if (roles.includes(ROLE_SUPER_ADMIN)) { + return '瓒呯骇绠$悊鍛�' + } + if (roles.includes(ROLE_LEADER)) { + return '绠$悊鍛�' + } + if (roles.includes(ROLE_OPERATOR)) { + return '鎿嶄綔鍛�' + } + if (roles.includes(ROLE_LINE)) { + return '绾块暱' + } + if (roles.includes(ROLE_REPAIR)) { + return '缁翠慨宸�' + } +} diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsEquController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsEquController.java index 0c81ee7..35b8009 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsEquController.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsEquController.java @@ -77,6 +77,18 @@ } /** + * 鑾峰彇銆愯澶囧彴璐︺�戣缁嗕俊鎭� + * + * @param assetNo + */ + @SaCheckPermission("eims:equ:query") + @GetMapping("/info/{assetNo}") + public R<EimsEquVo> getInfoByAssetNo(@NotNull(message = "璧勪骇缂栧彿涓嶈兘涓虹┖") + @PathVariable String assetNo) { + return R.ok(eimsEquipmentService.queryByAssetNo(assetNo)); + } + + /** * 鏂板銆愯澶囧彴璐︺�� */ @SaCheckPermission("eims:equ:add") diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java index 166d4d4..4f199bc 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java @@ -68,6 +68,13 @@ return R.ok(eimsInspectStService.queryById(id)); } + @SaCheckPermission("eims:inspectSt:query") + @GetMapping("/info/{stId}") + public R<EimsInspectStVo> getInfoByStid(@NotNull(message = "涓婚敭涓嶈兘涓虹┖") + @PathVariable String stId) { + return R.ok(eimsInspectStService.queryByStId(stId)); + } + /** * 鏂板鐐规姹囨�� */ diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java index 3b7f3c2..23d9ed1 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java @@ -116,6 +116,7 @@ // 鍏宠仈琛ㄥ瓧娈� private String reqCode;//鎶ヤ慨鍗曠紪鐮� private String reqType;//鎶ヤ慨鍗曠被鍨� + private String assetNo;//璁惧璧勪骇缂栧彿 diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java index 3136c47..b15208a 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java @@ -1,5 +1,6 @@ package org.dromara.eims.service; +import jakarta.validation.constraints.NotNull; import org.dromara.eims.domain.vo.EimsInspectStVo; import org.dromara.eims.domain.bo.EimsInspectStBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -23,7 +24,7 @@ * @return 鐐规姹囨�� */ EimsInspectStVo queryById(Long id); - + EimsInspectStVo queryByStId(String stId); /** * 鍒嗛〉鏌ヨ鐐规姹囨�诲垪琛� * @@ -65,4 +66,6 @@ * @return 鏄惁鍒犻櫎鎴愬姛 */ Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); + + } 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 c81fd16..199219d 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 @@ -10,8 +10,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.eims.domain.EimsEqu; import org.dromara.eims.domain.EimsInspectRecord; import org.dromara.eims.domain.vo.EimsInspectRecordVo; +import org.dromara.eims.mapper.EimsEquMapper; import org.dromara.eims.mapper.EimsInspectRecordMapper; import org.springframework.stereotype.Service; import org.dromara.eims.domain.bo.EimsInspectStBo; @@ -39,6 +41,7 @@ public class EimsInspectStServiceImpl implements IEimsInspectStService { private final EimsInspectStMapper baseMapper; + private final EimsEquMapper equMapper; private final EimsInspectRecordMapper recordMapper; /** @@ -50,16 +53,36 @@ @Override public EimsInspectStVo queryById(Long id){ EimsInspectStVo stVo = baseMapper.selectVoById(id); + if(stVo!=null&&stVo.getEquId()!=null){ + EimsEqu eimsEqu = equMapper.selectById(stVo.getEquId()); + stVo.setEquName(eimsEqu.getEquName()); + stVo.setAssetNo(eimsEqu.getAssetNo()); + } + // fillStDataSingle(stVo); + return stVo; + } + + @Override + public EimsInspectStVo queryByStId(String stId) { + QueryWrapper<EimsInspectSt> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("st_id", stId); + EimsInspectStVo stVo = baseMapper.selectVoOne(queryWrapper); + if(stVo!=null&&stVo.getEquId()!=null){ + EimsEqu eimsEqu = equMapper.selectById(stVo.getEquId()); + stVo.setEquName(eimsEqu.getEquName()); + stVo.setAssetNo(eimsEqu.getAssetNo()); + } + // fillStDataSingle(stVo); return stVo; } /** * - * @param stVo - * @param type Day-鏃ヨ鍥� Month-鏈堣鍥� + * @param stVo type Day-鏃ヨ鍥� Month-鏈堣鍥� + * @param */ - private void fillStDataSingle(EimsInspectStVo stVo,String type) { + private void fillStDataSingle(EimsInspectStVo stVo) { LambdaQueryWrapper<EimsInspectRecord> recordLqw = Wrappers.lambdaQuery(); recordLqw.eq(EimsInspectRecord::getEquId, stVo.getEquId()); @@ -69,7 +92,7 @@ LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth()); // 鏃ヨ鍥炬煡璇㈣寖鍥� - if(type.equals("Day")){ + if(stVo.getType().equals("Day")){ recordLqw.between(EimsInspectRecord::getPlanTime, planTime, planTime); }else { // 鏈堣鍥炬煡璇㈣寖鍥� diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java index 781ab33..c697818 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java @@ -296,6 +296,7 @@ qw.eq(bo.getResUser() != null, "res.res_user", bo.getResUser()); qw.eq(bo.getReqType() != null, "req.req_type", bo.getReqType()); qw.eq(bo.getReqUser() != null, "res.req_user", bo.getReqUser()); + qw.eq(bo.getAssetNo() != null, "equ.asset_no", bo.getAssetNo()); List<Long> resDeptIds = getAllDescendantIds(bo.getResDept()); qw.in(bo.getResDept() != null, "res.res_dept", resDeptIds); -- Gitblit v1.9.3