From d28bb7d7acdc4d27a553e5b6b2458d5e7ec43165 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期二, 29 四月 2025 14:40:44 +0800
Subject: [PATCH] 完成设备维修工单
---
eims-ui-mobile/src/service/repair.ts | 51 ++
eims-ui-mobile/src/service/repair.d.ts | 148 ++++++++
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java | 30 +
eims-ui-mobile/src/pages.json | 50 +++
eims-ui-mobile/src/pages/login/index.vue | 7
eims-ui-mobile/src/pages/repair/feedback.vue | 198 ++++++++++++
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java | 1
eims-ui-mobile/src/types/uni-pages.d.ts | 2
eims-ui-mobile/src/pages/repair/res-detail.vue | 273 +++++++++++++++++
eims-ui-mobile/src/pages/repair/res-list.vue | 157 +++++++++
10 files changed, 880 insertions(+), 37 deletions(-)
diff --git a/eims-ui-mobile/src/pages.json b/eims-ui-mobile/src/pages.json
index f174d9d..6fb3e3e 100644
--- a/eims-ui-mobile/src/pages.json
+++ b/eims-ui-mobile/src/pages.json
@@ -209,6 +209,31 @@
}
},
{
+ "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",
@@ -258,6 +283,31 @@
}
},
{
+ "path": "pages/repair/res-detail",
+ "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/res-list",
"type": "page",
"layout": "default",
diff --git a/eims-ui-mobile/src/pages/login/index.vue b/eims-ui-mobile/src/pages/login/index.vue
index bc68841..c02558c 100644
--- a/eims-ui-mobile/src/pages/login/index.vue
+++ b/eims-ui-mobile/src/pages/login/index.vue
@@ -42,10 +42,7 @@
</wd-button>
<view class="copyright-info">
- <text>
- 涓婃捣鍏板疂浼犳劅绉戞妧鑲′唤鏈夐檺鍏徃
- </text>
-
+ <text>涓婃捣鍏板疂浼犳劅绉戞妧鑲′唤鏈夐檺鍏徃</text>
</view>
</view>
</wd-form>
@@ -129,7 +126,7 @@
}
userStore.setUserInfo(userInfo)
const { query } = currRoute()
- uni.switchTab({ url: query.redirect })
+ uni.switchTab({ url: '/pages/home/index' })
}
</script>
diff --git a/eims-ui-mobile/src/pages/repair/feedback.vue b/eims-ui-mobile/src/pages/repair/feedback.vue
new file mode 100644
index 0000000..98688e0
--- /dev/null
+++ b/eims-ui-mobile/src/pages/repair/feedback.vue
@@ -0,0 +1,198 @@
+<route lang="json5" type="page">
+{
+ layout: 'default',
+ needLogin: true,
+ style: {
+ navigationBarTitleText: '缁翠慨璇勪环',
+ 'app-plus': {
+ titleNView: {
+ buttons: [
+ {
+ text: '鎻愪氦',
+ fontSize: '14px',
+ color: '#FFFFFF',
+ },
+ {
+ text: '',
+ fontSize: '14px',
+ color: '#FFFFFF',
+ },
+ ],
+ },
+ },
+ },
+}
+</route>
+<template>
+ <view class="bg-base">
+ <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-steps :active="repairRecordList.length" vertical class="px-4">
+ <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>
+ </view>
+ </template>
+ <template #description>
+ <view class="flex items-center menu-title-box">
+ <view class="ml-1 text-xs">{{ item?.operaUserName }}</view>
+ <view class="ml-1 text-xs">{{ item?.handleTime }}</view>
+ </view>
+ </template>
+ </wd-step>
+
+ </wd-steps>
+ </wd-card>
+
+ <wd-cell-group use-slot border>
+ <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-cell title="缁翠慨婊℃剰搴�">
+ <wd-rate v-model="repairFb.repairSatisfaction" change="handleChange"></wd-rate>
+ </wd-cell>
+ <wd-cell title="缁翠慨鍙婃椂鎬�">
+ <wd-rate v-model="repairFb.repairTimeliness" change="handleChange"></wd-rate>
+ </wd-cell>
+ <wd-cell title="缁翠慨鍙婃�佸害">
+ <wd-rate v-model="repairFb.serviceAttitude" change="handleChange"></wd-rate>
+ </wd-cell>
+ <wd-cell title="缁翠慨鐜板満6S">
+ <wd-rate v-model="repairFb.repairSs" change="handleChange"></wd-rate>
+ </wd-cell>
+
+ <wd-textarea
+ label="缁撴灉鍙嶉"
+ label-width="200rpx"
+ type="textarea"
+ v-model="repairFb.fbResult"
+ auto-height
+ :maxlength="200"
+ show-word-limit
+ placeholder="璇疯緭鍏ョ粨鏋滃弽棣�"
+ clearable
+ />
+ <wd-textarea
+ label="鎰忚鎴栧缓璁�"
+ label-width="200rpx"
+ type="textarea"
+ v-model="repairFb.suggestions"
+ auto-height
+ :maxlength="200"
+ show-word-limit
+ placeholder="璇疯緭鍏ユ剰瑙佹垨寤鸿"
+ clearable
+ />
+ </wd-cell-group>
+ </view>
+</template>
+<script setup lang="ts">
+import { getRepairRes, getRepairFb, getRepairRecordList } from '@/service/repair'
+import { reactive } from 'vue'
+import { RepairResVO, RepairFbVO, RepairRecordVO } from '@/service/repair.d'
+
+const repairRes = reactive<RepairResVO>({
+ id: '',
+ resCode: '',
+ reqType: '',
+ reqDesc: '',
+ equName: '',
+ assetNo: '',
+ fixtureName: '',
+ resReason: '',
+ status: '',
+ resHandle: '',
+ resPrevent: '',
+ fbId: '',
+ remark: '',
+})
+
+const repairFb = reactive<RepairFbVO>({
+ id: '',
+ resCode: '',
+ fbResult: '',
+ suggestions: '',
+ repairSatisfaction: 0,
+ repairTimeliness: 0,
+ serviceAttitude: 0,
+ repairSs: 0,
+})
+
+const repairRecordList = ref<RepairRecordVO[]>([])
+
+function handleChange({ value }) {
+ console.log(value)
+}
+
+function getRepairRecord() {
+ if(!repairRes.id){
+ return false
+ }
+ const params = {
+ resId: repairRes.id,
+ }
+ getRepairRecordList(params)
+ .then((res: any) => {
+ console.error(res)
+ if(res?.code === 200){
+ repairRecordList.value = res?.rows?.sort((a, b) => {
+ if (a.handleTime < b.handleTime) {
+ return -1
+ }
+ if (a.handleTime > b.handleTime) {
+ return 1
+ }
+ return 0
+ })
+ }
+ })
+ .catch((res) => {})
+}
+
+
+function initRepairRes(id: any) {
+ getRepairRes(id)
+ .then((res: any) => {
+ Object.assign(repairRes, res)
+ if (repairRes.fbId != null) {
+ getFeedBack(repairRes.fbId)
+ }
+ getRepairRecord()
+ })
+ .catch((res) => {})
+}
+
+function getFeedBack(id: any) {
+ getRepairFb(id)
+ .then((res: any) => {
+ Object.assign(repairFb, res)
+ })
+ .catch((res) => {})
+}
+async function initData(options: any) {
+ initRepairRes(options.id)
+
+}
+
+onLoad((options) => {
+ initData(options)
+})
+</script>
+
+<style scoped lang="scss">
+.menu-indicator {
+ width: 6rpx;
+ height: 24rpx;
+ border-radius: 10rpx;
+ background-color: $uni-color-primary;
+}
+</style>
diff --git a/eims-ui-mobile/src/pages/repair/res-detail.vue b/eims-ui-mobile/src/pages/repair/res-detail.vue
new file mode 100644
index 0000000..77b739b
--- /dev/null
+++ b/eims-ui-mobile/src/pages/repair/res-detail.vue
@@ -0,0 +1,273 @@
+<route lang="json5" type="page">
+{
+ layout: 'default',
+ needLogin: true,
+ style: {
+ navigationBarTitleText: '缁翠慨鏄庣粏',
+ 'app-plus': {
+ titleNView: {
+ buttons: [
+ {
+ text: '鎻愪氦',
+ fontSize: '14px',
+ color: '#FFFFFF',
+ },
+ {
+ text: '淇濆瓨',
+ fontSize: '14px',
+ color: '#FFFFFF',
+ },
+ ],
+ },
+ },
+ },
+}
+</route>
+<template>
+ <view class="bg-base container" safeAreaInsetTopBottom>
+ <wd-form ref="form" :model="repairRes" :rules="rules">
+ <wd-cell-group custom-class="group" title="鎶ヤ慨淇℃伅" border>
+ <wd-cell title="鏁呴殰绫诲瀷" title-width="200rpx" is-link>
+ <text>{{ reqType?.dictLabel }}</text>
+ </wd-cell>
+ <wd-cell title="鎶ヤ慨鎻忚堪" :label="repairRes?.reqDesc" is-link />
+ </wd-cell-group>
+
+ <wd-cell-group
+ v-if="repairRes?.reqType === '1'"
+ custom-class="mt-2"
+ title="璁惧淇℃伅"
+ use-slot
+ border
+ >
+ <wd-cell title="璁惧鍚嶇О" title-width="200rpx" is-link>
+ <text>{{ repairRes?.equName }}</text>
+ </wd-cell>
+ <wd-cell title="璧勪骇缂栧彿" title-width="200rpx" is-link>
+ <text>{{ repairRes?.assetNo }}</text>
+ </wd-cell>
+ </wd-cell-group>
+
+ <wd-cell-group
+ v-if="repairRes?.reqType === '2'"
+ custom-class="mt-2"
+ title="宸ュ叿淇℃伅"
+ use-slot
+ border
+ >
+ <wd-cell title="宸ュ叿鍚嶇О" title-width="200rpx" is-link>
+ <text>{{ repairRes?.fixtureName }}</text>
+ </wd-cell>
+ <wd-cell title="璧勪骇缂栧彿" title-width="200rpx" is-link>
+ <text>{{ repairRes?.assetNo }}</text>
+ </wd-cell>
+ </wd-cell-group>
+
+ <wd-cell-group custom-class="mt-2" title="缁翠慨淇℃伅" use-slot border>
+ <wd-textarea
+ label="鍘熷洜鍒嗘瀽"
+ label-width="200rpx"
+ type="textarea"
+ v-model="repairRes.resReason"
+ auto-height
+ :maxlength="200"
+ show-word-limit
+ placeholder="璇疯緭鍏ュ師鍥犲垎鏋�"
+ clearable
+ />
+
+ <wd-textarea
+ label="澶勭悊鎺柦"
+ label-width="200rpx"
+ type="textarea"
+ v-model="repairRes.resHandle"
+ auto-height
+ :maxlength="200"
+ show-word-limit
+ placeholder="璇疯緭鍏ュ鐞嗘帾鏂�"
+ clearable
+ />
+
+ <wd-textarea
+ label="棰勯槻鎺柦"
+ label-width="200rpx"
+ type="textarea"
+ v-model="repairRes.resPrevent"
+ auto-height
+ :maxlength="200"
+ show-word-limit
+ placeholder="璇疯緭鍏ラ闃叉帾鏂�"
+ clearable
+ />
+
+ <wd-textarea
+ label="澶囨敞"
+ label-width="200rpx"
+ type="textarea"
+ v-model="repairRes.remark"
+ auto-height
+ :maxlength="200"
+ show-word-limit
+ placeholder="璇疯緭鍏ュ娉�"
+ clearable
+ />
+ </wd-cell-group>
+ <view class="h-[2px] w-full bg-base"></view>
+ </wd-form>
+ </view>
+</template>
+
+<script setup lang="ts">
+import { getRepairRes, updateRepairRes } from '@/service/repair'
+import { RepairResVO } from '@/service/repair.d'
+import { reactive, onMounted, ref } from 'vue'
+import { FormRules } from 'wot-design-uni/components/wd-form/types'
+import { useToast, useMessage } from 'wot-design-uni'
+import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils'
+import { DICT_REPAIR_REQ_TYPE, getDictInfo } from '@/service/dict'
+import { formatDate } from '@/utils/DateUtils'
+const toast = useToast()
+const message = useMessage()
+
+const fileList = ref<[]>()
+
+// 鎶ヤ慨鍗曠被鍨�
+const reqTypeList = ref<any>([])
+
+const repairRes = reactive<RepairResVO>({
+ id: '',
+ resCode: '',
+ reqType: '',
+ reqDesc: '',
+ equName: '',
+ assetNo: '',
+ fixtureName: '',
+ resReason: '',
+ status: '',
+ resHandle: '',
+ resPrevent: '',
+ remark: '',
+})
+
+const rules: FormRules = {
+ startTime: [
+ {
+ required: true,
+ message: '璇烽�夋嫨淇濆吇寮�濮嬫椂闂�',
+ },
+ ],
+}
+
+function handleFileChange({ fileList }) {}
+
+function initRepairRes(id: any) {
+ getRepairRes(id)
+ .then((res: any) => {
+ Object.assign(repairRes, res)
+ })
+ .catch((res) => {})
+}
+
+async function initData(options: any) {
+ initRepairRes(options.id)
+ const reqList = await getDictInfo(DICT_REPAIR_REQ_TYPE)
+ reqTypeList.value = reqList
+}
+
+function hanldeUpdateRepairRes(data: any, resolve: any) {
+ updateRepairRes(data)
+ .then((res: any) => {
+ resolve(true)
+ toastSucces()
+ uni.$emit('res-list-refresh')
+ })
+ .catch((res) => {
+ console.error(res)
+ })
+}
+function toastSucces() {
+ toast.success('鎿嶄綔鎴愬姛')
+}
+
+function handleClickRight(data: any) {
+ message
+ .confirm({
+ msg: '纭畾鎻愪氦锛�',
+ title: '鎻愮ず',
+ beforeConfirm: ({ resolve }) => {
+ hanldeUpdateRepairRes(data, resolve)
+ },
+ })
+ .then(() => {})
+ .catch((error) => {
+ console.log(error)
+ })
+}
+
+onNavigationBarButtonTap((e) => {
+ if (e.index === 0) {
+ // 绠$悊鍛樿鑹�
+ if (isLeader()) {
+ toast.warning('褰撳墠鐧诲綍瑙掕壊涓嶅彲鎿嶄綔')
+ } else if (isOperatorOrRepair()) {
+ switch (repairRes.status) {
+ // 宸叉帴鍗�
+ case '1':
+ break
+ // 缁翠慨涓�
+ case '2':
+ {
+ const data = Object.assign({}, repairRes)
+ // 鎻愪氦淇敼鐘舵�佷负瀹屾垚
+ data.status = '3'
+ // 璁剧疆缁翠慨瀹屾垚鏃堕棿
+ data.endTime = formatDate(new Date())
+ handleClickRight(data)
+ }
+ break
+ // 宸插畬鎴�
+ case '3':
+ toast.warning('褰撳墠缁翠慨宸ュ崟瀹屾垚鐘舵�侊紝涓嶅彲鎿嶄綔')
+ break
+ }
+ }
+ } else if (e.index === 1) {
+ if (isLeader()) {
+ toast.warning('褰撳墠鐧诲綍瑙掕壊涓嶅彲鎿嶄綔')
+ } else if (isOperatorOrRepair()) {
+ switch (repairRes.status) {
+ // 宸叉帴鍗�
+ case '1':
+ break
+ // 缁翠慨涓�
+ case '2':
+ {
+ const data = Object.assign({}, repairRes)
+ data.status = '2'
+ // 浠呬繚瀛樹笉淇敼鐘舵��
+ handleClickRight(data)
+ }
+ break
+ // 宸插畬鎴�
+ case '3':
+ toast.warning('褰撳墠缁翠慨宸ュ崟瀹屾垚鐘舵�侊紝涓嶅彲鎿嶄綔')
+ break
+ }
+ }
+ }
+})
+
+const reqType = computed(() =>
+ reqTypeList.value.find((item) => item.dictValue === repairRes.reqType),
+)
+
+onMounted(() => {})
+onLoad((options) => {
+ initData(options)
+})
+</script>
+
+<style scoped lang="scss">
+.container {
+}
+</style>
diff --git a/eims-ui-mobile/src/pages/repair/res-list.vue b/eims-ui-mobile/src/pages/repair/res-list.vue
index 2f3951c..096aedd 100644
--- a/eims-ui-mobile/src/pages/repair/res-list.vue
+++ b/eims-ui-mobile/src/pages/repair/res-list.vue
@@ -61,7 +61,7 @@
</view>
</view>
</template>
- <view class="flex h-[240rpx] items-center" @click.stop="itemClick(item)">
+ <view class="flex h-[240rpx] items-center">
<image
v-if="item.reqType === '1'"
class="slot-img text-center"
@@ -102,10 +102,10 @@
</view>
<view class="text-color-gray mt-1 text-mini">
- <text>寮�濮嬫椂闂�: {{ item.startTime }}</text>
+ <text>缁翠慨寮�濮�: {{ item.startTime }}</text>
</view>
<view class="text-color-gray mt-1 text-mini">
- <text>瀹屾垚鏃堕棿: {{ item.endTime }}</text>
+ <text>缁翠慨缁撴潫: {{ item.endTime }}</text>
</view>
<view class="text-color-gray mt-1 text-mini">
<text>缁翠慨浜�: {{ item.resUserName }}</text>
@@ -113,9 +113,75 @@
</view>
</view>
<view>
- <wd-button v-if="item.status === '1'" size="small" icon="edit-outline">寮�濮嬬淮淇�</wd-button>
- <wd-button v-if="item.status === '2'" size="small" icon="edit-outline">缁翠慨涓�</wd-button>
- <wd-button v-if="item.status === '3'" size="small" icon="edit-outline">宸插畬鎴�</wd-button>
+ <!--鎿嶄綔宸ユ垨缁翠慨宸ヨ鑹�-->
+ <template v-if="isOperatorOrRepair()">
+ <wd-button
+ v-if="item.status === '1'"
+ size="small"
+ icon="edit-outline"
+ @click.stop="handleStartRepair(item)"
+ >
+ 寮�濮嬬淮淇�
+ </wd-button>
+ <wd-button
+ v-else-if="item.status === '2'"
+ size="small"
+ icon="edit-outline"
+ @click.stop="itemClick(item)"
+ >
+ 缁翠慨涓�
+ </wd-button>
+ <view class="h-full flex flex-col" v-else-if="item.status === '3'">
+ <wd-button size="small" icon="warn-bold" @click.stop="itemClick(item)">
+ 璇︽儏
+ </wd-button>
+ <wd-button
+ class="mt-4"
+ size="small"
+ icon="edit-outline"
+ @click.stop="goToFeedBack(item)"
+ v-if="item.fbId === null"
+ >
+ 鍐欒瘎浠�
+ </wd-button>
+ </view>
+ </template>
+
+ <!--绠$悊鍛樿鑹�-->
+ <template v-else-if="isLeader()">
+ <wd-button
+ v-if="item.status === '1'"
+ size="small"
+ icon="warn-bold"
+ disabled
+ @click.stop="itemClick(item)"
+ >
+ 寰呯淮淇�
+ </wd-button>
+ <wd-button
+ v-else-if="item.status === '2'"
+ size="small"
+ icon="warn-bold"
+ disabled
+ @click.stop="itemClick(item)"
+ >
+ 缁翠慨涓�
+ </wd-button>
+ <view class="h-full flex flex-col" v-else-if="item.status === '3'">
+ <wd-button size="small" icon="warn-bold" @click.stop="itemClick(item)">
+ 璇︽儏
+ </wd-button>
+ <wd-button
+ class="mt-4"
+ size="small"
+ icon="edit-outline"
+ @click.stop="goToFeedBack(item)"
+ v-if="item.fbId === null"
+ >
+ 鍐欒瘎浠�
+ </wd-button>
+ </view>
+ </template>
</view>
</view>
</wd-card>
@@ -126,9 +192,11 @@
<script setup lang="ts">
import { onMounted, getCurrentInstance, ref } from 'vue'
import { useToast, useMessage } from 'wot-design-uni'
-import { getRepairResList, addRepairRes } from '@/service/repair'
+import { getRepairResList, addRepairRes, updateRepairRes } from '@/service/repair'
import { DICT_REPAIR_RES_STATUS, DICT_REPAIR_REQ_TYPE, getDictInfo } from '@/service/dict'
+import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils'
import { useUserStore } from '@/store'
+import { formatDate } from '@/utils/DateUtils'
const userStore = useUserStore()
const message = useMessage()
@@ -181,11 +249,76 @@
* 鏉$洰鐐瑰嚮浜嬩欢
* @param item
*/
-function itemClick(item: any) {}
+function itemClick(item: any) {
+ goToDetail(item)
+}
+
+/**
+ * 寮�濮嬬淮淇�
+ * @param item
+ */
+function handleStartRepair(item: any) {
+ // 纭寮�濮嬩慨鏀圭姸鎬佷负2-缁翠慨涓�
+ const data = Object.assign({}, item)
+ // 纭寮�濮嬩慨鏀圭姸鎬佷负2-缁翠慨涓�
+ data.status = '2'
+ // 璁剧疆寮�濮嬬淮淇椂闂�
+ data.startTime = formatDate(new Date())
+ message
+ .confirm({
+ msg: '纭畾寮�濮嬬淮淇紵',
+ title: '鎻愮ず',
+ beforeConfirm: ({ resolve }) => {
+ updateRepair(data, resolve)
+ },
+ })
+ .then(() => {})
+ .catch((error) => {
+ console.log(error)
+ })
+}
+
+/**
+ * 鏇存柊缁翠慨宸ュ崟
+ * @param data
+ * @param resolve
+ */
+function updateRepair(data: any, resolve: any) {
+ updateRepairRes(data)
+ .then((res: any) => {
+ resolve(true)
+ if (res?.code === 200) {
+ reloadData()
+ // 缁翠慨涓姸鎬佹墠闇�瑕佽烦杞�
+ if (data?.status === '2') {
+ goToDetail(data)
+ }
+ }
+ })
+ .catch((res) => {
+ console.error(res)
+ })
+}
+
+function goToDetail(item) {
+ uni.navigateTo({
+ url: `/pages/repair/res-detail?id=${item.id}`,
+ })
+}
+
+function goToFeedBack(item) {
+ uni.navigateTo({
+ url: `/pages/repair/feedback?id=${item.id}`,
+ })
+}
onNavigationBarButtonTap((e) => {
if (e.index === 0) {
- handleSelectReq()
+ if (isLeader()) {
+ toast.info('璇风櫥褰曠淮淇伐璐﹀彿鎺ュ崟')
+ } else if (isOperatorOrRepair()) {
+ handleSelectReq()
+ }
}
})
@@ -240,8 +373,12 @@
const sList: any = await getDictInfo(DICT_REPAIR_RES_STATUS)
statusList.value.push(...sList)
}
-onLoad((options) => {
+onLoad(() => {
initData()
+ uni.$on('res-list-refresh', reloadData)
+})
+onUnload(() => {
+ uni.$off('res-list-refresh', reloadData)
})
</script>
diff --git a/eims-ui-mobile/src/service/repair.d.ts b/eims-ui-mobile/src/service/repair.d.ts
index 65eb8fd..cf677cc 100644
--- a/eims-ui-mobile/src/service/repair.d.ts
+++ b/eims-ui-mobile/src/service/repair.d.ts
@@ -90,70 +90,192 @@
*
*/
id: number | string;
+ // 璇勪环
+ fbId?: number | string;
/**
* 鎶ヤ慨鍗昳d
*/
- reqId: number | string;
+ reqId?: number | string;
+ reqType?: string;
+ reqDesc?: string;
+ equName?: string;
+ assetNo?: string;
+ fixtureName?: string;
/**
* 缁翠慨鍗曞彿
*/
- resCode: string;
+ resCode?: string;
/**
* 缁翠慨浜�
*/
- resUser: number;
+ resUser?: number;
/**
* 缁翠慨浜洪儴闂�
*/
- resDept: number;
+ resDept?: number;
/**
* 鍘熷洜鍒嗘瀽
*/
- resReason: string;
+ resReason?: string;
/**
* 澶勭悊鎺柦
*/
- resHandle: string;
+ resHandle?: string;
/**
* 棰勯槻鎺柦
*/
- resPrevent: string;
+ resPrevent?: string;
/**
* 缁翠慨鐘舵��(瀛楀吀)
*/
- status: string;
+ status?: string;
/**
* 寮�濮嬫椂闂�
*/
- startTime: string;
+ startTime?: string;
/**
* 缁撴潫鏃堕棿
*/
- endTime: string;
+ endTime?: string;
/**
* 浣跨敤宸ュ叿
*/
- useFixture: string;
+ useFixture?: string;
/**
* 浣跨敤澶囦欢
*/
- useParts: string;
+ useParts?: string;
/**
* 澶囨敞
*/
- remark: string;
+ remark?: string;
}
+
+
+export interface RepairFbVO {
+ /**
+ *
+ */
+ id: number | string;
+
+ /**
+ * 缁翠慨宸ュ崟id
+
+ */
+ resId?: number | string;
+ /**
+ * 缁翠慨宸ュ崟code
+
+ */
+ resCode?: string;
+
+ /**
+ * 鍙嶉缁撴灉
+ */
+ fbResult?: string;
+
+ /**
+ * 鍙嶉浜�
+ */
+ fbUser?: number;
+
+ /**
+ * 鍙嶉浜洪儴闂�
+ */
+ fbDept?: number;
+
+ /**
+ * 鍙嶉鏃堕棿
+ */
+ fbTime?: string;
+
+ /**
+ * 缁翠慨鍙婃椂鎬�(瀛楀吀)
+ */
+ repairTimeliness?: number | string;
+
+ /**
+ * 鏈嶅姟鎬佸害
+ */
+ serviceAttitude?: number | string;
+
+ /**
+ * 缁翠慨鐜板満6s
+ */
+ repairSs?: number | string;
+
+ /**
+ * 缁翠慨婊℃剰搴�
+ */
+ repairSatisfaction?: number | string;
+
+ /**
+ * 鎰忚鎴栧缓璁�
+ */
+ suggestions?: string;
+
+ /**
+ * 澶囨敞
+ */
+ remark?: string;
+}
+
+
+export interface RepairRecordVO {
+ /**
+ *
+ */
+ id: number | string;
+
+ /**
+ * 鎶ヤ慨鍗昳d
+ */
+ reqId?: number | string;
+
+ /**
+ * 缁翠慨鍗昳d
+ */
+ resId?: number | string;
+
+ /**
+ * 澶勭悊鏃堕棿
+ */
+ handleTime?: string;
+
+ /**
+ * 鎿嶄綔鐢ㄦ埛
+ */
+ operaUser?: number;
+ operaUserName?: string;
+
+
+ /**
+ * 鎿嶄綔(瀛楀吀)
+ */
+ opera?: string;
+
+ /**
+ * 鎿嶄綔缁撴灉
+ */
+ operaResult?: string;
+
+ /**
+ * 澶囨敞
+ */
+ remark?: string;
+}
+
diff --git a/eims-ui-mobile/src/service/repair.ts b/eims-ui-mobile/src/service/repair.ts
index b763de3..1d2e7c3 100644
--- a/eims-ui-mobile/src/service/repair.ts
+++ b/eims-ui-mobile/src/service/repair.ts
@@ -1,5 +1,5 @@
import { http } from '@/utils/http'
-import type { RepairReqVO, RepairResVO } from './repair.d'
+import type { RepairReqVO, RepairResVO, RepairFbVO, RepairRecordVO } from './repair.d'
type ID = number | string
/**
@@ -23,10 +23,6 @@
return http.get<RepairReqVO[]>('/eims/repairReq/list', params)
}
-
-
-
-
/**
* 缁翠慨鍗曞垪琛�
*/
@@ -34,9 +30,54 @@
return http.get<RepairResVO[]>('/eims/repairRes/list', params)
}
/**
+ * 鏌ヨ缁翠慨鍗�
+ * @param data
+ */
+export const getRepairRes = (id: ID) => {
+ return http.get<RepairResVO>(`/eims/repairRes/${id}`)
+}
+
+/**
* 鏂板缁翠慨鍗�
* @param data
*/
export const addRepairRes = (data: any) => {
return http.post<void>('/eims/repairRes/add', data)
}
+
+
+/**
+ * 鏇存柊缁翠慨宸ュ崟
+ * @param data
+ */
+export const updateRepairRes = (data: any) => {
+ return http.put<void>('/eims/repairRes', data)
+}
+
+
+
+/**
+ * 鏌ヨ缁翠慨璇勪环
+ * @param id
+ */
+export const getRepairFb = (id: ID) => {
+ return http.get<RepairFbVO>(`/eims/repairFb/${id}`)
+}
+
+/**
+ * 鏂板缁翠慨璇勪环
+ * @param data
+ */
+export const addRepairFb = (data: any) => {
+ return http.post<void>('/eims/repairFb', data)
+}
+
+
+
+
+/**
+ * 缁翠慨璁板綍鍒楄〃
+ */
+export const getRepairRecordList = (params: any) => {
+ return http.get<RepairRecordVO[]>('/eims/repairRecord/list', params)
+}
diff --git a/eims-ui-mobile/src/types/uni-pages.d.ts b/eims-ui-mobile/src/types/uni-pages.d.ts
index 6b710ba..3792d6f 100644
--- a/eims-ui-mobile/src/types/uni-pages.d.ts
+++ b/eims-ui-mobile/src/types/uni-pages.d.ts
@@ -16,8 +16,10 @@
"/pages/maint/maint-st" |
"/pages/maint/order-detail" |
"/pages/my/index" |
+ "/pages/repair/feedback" |
"/pages/repair/repair-add" |
"/pages/repair/req-list" |
+ "/pages/repair/res-detail" |
"/pages/repair/res-list" |
"/pages/spare/index";
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java
index 6436efc..aec73bf 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java
@@ -140,6 +140,7 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date reqTime;//鎶ヤ慨鏃堕棿
private String equName;//璁惧鍚嶇О
+ private String assetNo;//
private String fixtureName;//宸ュ叿鍚嶇О
private String faultType;//鏁呴殰绫诲埆
private String reqDeptName;//鎶ヤ慨閮ㄩ棬
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 323765b..781ab33 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
@@ -18,9 +18,10 @@
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.eims.domain.*;
+import org.dromara.eims.domain.vo.EimsEquVo;
+import org.dromara.eims.domain.vo.EimsFixtureVo;
import org.dromara.eims.domain.vo.EimsRepairReqVo;
-import org.dromara.eims.mapper.EimsRepairRecordMapper;
-import org.dromara.eims.mapper.EimsRepairReqMapper;
+import org.dromara.eims.mapper.*;
import org.dromara.eims.utils.DataFilterUtil;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.vo.SysDeptVo;
@@ -29,7 +30,6 @@
import org.springframework.stereotype.Service;
import org.dromara.eims.domain.bo.EimsRepairResBo;
import org.dromara.eims.domain.vo.EimsRepairResVo;
-import org.dromara.eims.mapper.EimsRepairResMapper;
import org.dromara.eims.service.IEimsRepairResService;
import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +49,8 @@
private final EimsRepairReqMapper reqMapper;
private final SysDeptMapper deptMapper;
private final EimsRepairRecordMapper recordMapper;
+ private final EimsEquMapper equMapper;
+ private final EimsFixtureMapper fixtureMapper;
/**
* 鏌ヨ缁翠慨宸ュ崟
@@ -58,7 +60,27 @@
*/
@Override
public EimsRepairResVo queryById(Long id) {
- return baseMapper.selectVoById(id);
+ EimsRepairResVo resVo = baseMapper.selectVoById(id);
+ Long reqId = resVo.getReqId();
+ if(reqId!=null){
+ EimsRepairReqVo reqVo = reqMapper.selectVoById(reqId);
+ resVo.setReqType(reqVo.getReqType());
+ resVo.setReqCode(reqVo.getCode());
+
+ if(reqVo.getEquId()!=null){
+ EimsEquVo equVo = equMapper.selectVoById(reqVo.getEquId());
+ resVo.setAssetNo(equVo.getAssetNo());
+ resVo.setEquName(equVo.getEquName());
+ }
+ if(reqVo.getFixtureId()!=null){
+ EimsFixtureVo fixtureVo = fixtureMapper.selectVoById(reqVo.getFixtureId());
+ resVo.setFixtureName(fixtureVo.getFixtureName());
+ resVo.setAssetNo(fixtureVo.getAssetNo());
+ }
+
+
+ }
+ return resVo;
}
/**
--
Gitblit v1.9.3