From 793391c23ba45b3dab55657ecd2448d87e17f854 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 16 九月 2025 13:49:53 +0800
Subject: [PATCH] 设备巡检、智能派单
---
src/pages/equipmentManagement/upkeep/maintain.vue | 141 ++++++++++++++++++++++++++--------------------
1 files changed, 79 insertions(+), 62 deletions(-)
diff --git a/src/pages/equipmentManagement/upkeep/maintain.vue b/src/pages/equipmentManagement/upkeep/maintain.vue
index c70ec14..7ffb435 100644
--- a/src/pages/equipmentManagement/upkeep/maintain.vue
+++ b/src/pages/equipmentManagement/upkeep/maintain.vue
@@ -4,65 +4,68 @@
<PageHeader title="鏂板淇濆吇" @back="goBack" />
<!-- 琛ㄥ崟鍐呭 -->
- <van-form @submit="sendForm" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center">
+ <u-form ref="formRef" :model="form" :rules="formRules" label-width="110px" :error-type="['message']">
<!-- 鍩烘湰淇℃伅 -->
- <van-cell-group title="淇濆吇淇℃伅" inset>
- <van-field
+ <u-form-item label="瀹為檯淇濆吇浜�" prop="maintenanceActuallyName" required border-bottom>
+ <u-input
v-model="form.maintenanceActuallyName"
- label="瀹為檯淇濆吇浜�"
placeholder="璇疯緭鍏ュ疄闄呬繚鍏讳汉"
- :rules="formRules.maintenanceActuallyName"
- required
clearable
/>
- <van-field
+ </u-form-item>
+
+ <u-form-item label="瀹為檯淇濆吇鏃ユ湡" prop="maintenanceActuallyTime" required border-bottom>
+ <u-input
v-model="form.maintenanceActuallyTime"
- label="瀹為檯淇濆吇鏃ユ湡"
placeholder="璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡"
- :rules="formRules.maintenanceActuallyTime"
- required
readonly
@click="showDatePicker"
clearable
/>
- <van-field
+ <template #right>
+ <u-icon name="arrow-right" @click.stop="showDatePicker" />
+ </template>
+ </u-form-item>
+
+ <u-form-item label="淇濆吇缁撴灉" prop="maintenanceResult" required border-bottom>
+ <u-input
v-model="maintenanceResultText"
- label="淇濆吇缁撴灉"
placeholder="璇烽�夋嫨淇濆吇缁撴灉"
- :rules="formRules.maintenanceResult"
- required
readonly
@click="showResultPicker"
clearable
/>
- </van-cell-group>
+ <template #right>
+ <u-icon name="arrow-right" @click.stop="showResultPicker" />
+ </template>
+ </u-form-item>
<!-- 鎻愪氦鎸夐挳 -->
<view class="footer-btns">
- <van-button class="cancel-btn" @click="goBack">鍙栨秷</van-button>
- <van-button class="save-btn" native-type="submit" form-type="submit" :loading="loading">淇濆瓨</van-button>
+ <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button>
+ <u-button class="save-btn" @click="sendForm" :loading="loading">淇濆瓨</u-button>
</view>
- </van-form>
+ </u-form>
<!-- 鏃ユ湡閫夋嫨鍣� -->
- <van-popup v-model:show="showDate" position="bottom">
- <van-date-picker
- v-model="currentDate"
+ <u-popup v-model="showDate" mode="bottom" :closeable="true">
+ <u-datetime-picker
+ v-model="form.maintenanceActuallyTime"
+ mode="date"
title="閫夋嫨鏃ユ湡"
@confirm="onDateConfirm"
@cancel="showDate = false"
/>
- </van-popup>
+ </u-popup>
<!-- 淇濆吇缁撴灉閫夋嫨鍣� -->
- <van-popup v-model:show="showResult" position="bottom">
- <van-picker
- :model-value="resultPickerValue"
- :columns="resultColumns"
- @confirm="onResultConfirm"
- @cancel="showResult = false"
- />
- </van-popup>
+ <up-action-sheet
+ :show="showResult"
+ :actions="resultColumns"
+ title="閫夋嫨淇濆吇缁撴灉"
+ @select="onResultConfirm"
+ @close="showResult = false"
+ />
</view>
</template>
@@ -73,7 +76,15 @@
import { addMaintenance } from '@/api/equipmentManagement/upkeep';
import useUserStore from "@/store/modules/user";
import dayjs from "dayjs";
-import { showToast } from 'vant';
+import { formatDateToYMD } from '@/utils/ruoyi';
+
+// 鏄剧ず鎻愮ず淇℃伅
+const showToast = (message) => {
+ uni.showToast({
+ title: message,
+ icon: 'none'
+ })
+};
defineOptions({
name: "璁惧淇濆吇琛ㄥ崟",
@@ -92,8 +103,8 @@
// 淇濆吇缁撴灉閫夐」
const resultColumns = [
- { text: '瀹屽ソ', value: 1 },
- { text: '缁翠慨', value: 0 }
+ { name: '瀹屽ソ', value: 1 },
+ { name: '缁翠慨', value: 0 }
];
// 琛ㄥ崟楠岃瘉瑙勫垯
@@ -107,13 +118,12 @@
const form = ref({
maintenanceActuallyName: userStore.nickName || '', // 榛樿浣跨敤褰撳墠鐢ㄦ埛鏄电О
maintenanceResult: undefined, // 淇濆吇缁撴灉
- maintenanceActuallyTime: dayjs().format("YYYY-MM-DD"), // 瀹為檯淇濆吇鏃ユ湡锛堝彧鏄剧ず鏃ユ湡锛�
+ maintenanceActuallyTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 瀹為檯淇濆吇鏃ユ湡锛堝彧鏄剧ず鏃ユ湡锛�
});
// 娓呴櫎琛ㄥ崟鏍¢獙鐘舵��
const clearValidate = () => {
- // Vant4涓笉闇�瑕佹墜鍔ㄦ竻闄ら獙璇佺姸鎬侊紝閲嶇疆琛ㄥ崟鏃朵細鑷姩娓呴櫎
- // formRef.value?.clearValidate(); // 鍒犻櫎杩欒
+ // uview-plus涓嶉渶瑕佹墜鍔ㄦ竻闄ら獙璇佺姸鎬侊紝閲嶇疆琛ㄥ崟鏃朵細鑷姩娓呴櫎
};
// 閲嶇疆琛ㄥ崟鏁版嵁鍜屾牎楠岀姸鎬�
@@ -121,7 +131,7 @@
form.value = {
maintenanceActuallyName: userStore.nickName || '',
maintenanceResult: undefined,
- maintenanceActuallyTime: dayjs().format("YYYY-MM-DD"),
+ maintenanceActuallyTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
};
maintenanceResultText.value = '';
};
@@ -134,14 +144,27 @@
// 鎻愪氦琛ㄥ崟
const sendForm = async () => {
try {
- // 浣跨敤Vant4鐨勬纭獙璇佹柟寮�
- formRef.value?.validate().then(() => {
- // 楠岃瘉閫氳繃
- submitFormData();
- }).catch((errors) => {
- // 楠岃瘉澶辫触
- showToast('璇峰~鍐欏畬鏁翠俊鎭�');
- });
+ // 鎵嬪姩楠岃瘉琛ㄥ崟
+ let isValid = true;
+ let errorMessage = '';
+ if (!form.value.maintenanceActuallyName) {
+ isValid = false;
+ errorMessage = '璇疯緭鍏ュ疄闄呬繚鍏讳汉';
+ } else if (!form.value.maintenanceActuallyTime) {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡';
+ } else if (form.value.maintenanceResult === undefined) {
+ isValid = false;
+ errorMessage = '璇烽�夋嫨淇濆吇缁撴灉';
+ }
+
+ if (!isValid) {
+ showToast(errorMessage);
+ return;
+ }
+
+ // 楠岃瘉閫氳繃
+ submitFormData();
} catch (e) {
showToast('琛ㄥ崟楠岃瘉澶辫触');
}
@@ -161,11 +184,6 @@
// 鍑嗗鎻愪氦鏁版嵁锛宮aintenanceActuallyTime 鍔犱笂褰撳墠鏃跺垎绉�
const submitData = { ...form.value };
- if (submitData.maintenanceActuallyTime && !submitData.maintenanceActuallyTime.includes(':')) {
- // 濡傛灉 maintenanceActuallyTime 鍙寘鍚棩鏈燂紝娣诲姞褰撳墠鏃跺垎绉�
- submitData.maintenanceActuallyTime = submitData.maintenanceActuallyTime + ' ' + dayjs().format('HH:mm:ss');
- }
-
const { code } = await addMaintenance({ id: id, ...submitData });
if (code == 200) {
@@ -185,15 +203,15 @@
// 杩斿洖涓婁竴椤�
const goBack = () => {
+ // 娓呴櫎瀛樺偍鐨刬d
+ uni.removeStorageSync('repairId');
uni.navigateBack();
};
// 鑾峰彇椤甸潰ID
const getPageId = () => {
- const pages = getCurrentPages();
- const currentPage = pages[pages.length - 1];
- const options = currentPage.options;
- return options.id;
+ // 浠庢湰鍦板瓨鍌ㄨ幏鍙杋d
+ return uni.getStorageSync('repairId');
};
// 鏄剧ず鏃ユ湡閫夋嫨鍣�
@@ -202,10 +220,9 @@
};
// 纭鏃ユ湡閫夋嫨
-const onDateConfirm = ({ selectedValues }) => {
+const onDateConfirm = (e) => {
// 鍙繚瀛樺勾鏈堟棩锛屼笉鍖呭惈鏃跺垎绉�
- form.value.maintenanceActuallyTime = selectedValues.join('-');
- currentDate.value = selectedValues;
+ form.value.maintenanceActuallyTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss');
showDate.value = false;
};
@@ -215,10 +232,9 @@
};
// 纭淇濆吇缁撴灉閫夋嫨
-const onResultConfirm = ({ selectedValues, selectedOptions }) => {
- form.value.maintenanceResult = selectedOptions[0].value;
- maintenanceResultText.value = selectedOptions[0].text;
- resultPickerValue.value = selectedValues;
+const onResultConfirm = (selected) => {
+ form.value.maintenanceResult = selected.value;
+ maintenanceResultText.value = selected.name;
showResult.value = false;
};
@@ -227,7 +243,7 @@
// 璁剧疆淇濆吇浜轰负褰撳墠鐢ㄦ埛鏄电О
form.value.maintenanceActuallyName = userStore.nickName || '';
// 璁剧疆褰撳墠鏃ユ湡锛堝彧鍖呭惈骞存湀鏃ワ級
- form.value.maintenanceActuallyTime = dayjs().format('YYYY-MM-DD');
+ form.value.maintenanceActuallyTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
currentDate.value = [new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()];
};
@@ -243,6 +259,7 @@
</script>
<style scoped lang="scss">
+@import '@/static/scss/form-common.scss';
.upkeep-maintain {
min-height: 100vh;
background: #f8f9fa;
--
Gitblit v1.9.3