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