src/pages.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/pages/equipmentManagement/repair/add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/pages/equipmentManagement/repair/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/pages/equipmentManagement/repair/maintain.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/pages/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/pages.json
@@ -306,6 +306,27 @@ "navigationBarTitleText": "设å¤å°è´¦è¯¦æ ", "navigationStyle": "custom" } }, { "path": "pages/equipmentManagement/repair/index", "style": { "navigationBarTitleText": "è®¾å¤æ¥ä¿®", "navigationStyle": "custom" } }, { "path": "pages/equipmentManagement/repair/add", "style": { "navigationBarTitleText": "æ°å¢è®¾å¤æ¥ä¿®", "navigationStyle": "custom" } }, { "path": "pages/equipmentManagement/repair/maintain", "style": { "navigationBarTitleText": "设å¤ç»´ä¿®", "navigationStyle": "custom" } } ], "subPackages": [ src/pages/equipmentManagement/repair/add.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,356 @@ <template> <view class="repair-add"> <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> <PageHeader :title="operationType === 'edit' ? 'ç¼è¾æ¥ä¿®' : 'æ°å¢æ¥ä¿®'" @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"> <!-- åºæ¬ä¿¡æ¯ --> <van-cell-group title="åºæ¬ä¿¡æ¯" inset> <van-field v-model="deviceNameText" label="设å¤åç§°" placeholder="è¯·éæ©è®¾å¤åç§°" :rules="formRules.deviceLedgerId" required readonly @click="showDevicePicker" clearable /> <van-field v-model="form.deviceModel" label="è§æ ¼åå·" placeholder="请è¾å ¥è§æ ¼åå·" readonly clearable /> <van-field v-model="form.repairTime" label="æ¥ä¿®æ¥æ" placeholder="è¯·éæ©æ¥ä¿®æ¥æ" :rules="formRules.repairTime" required readonly @click="showDatePicker" clearable /> <van-field v-model="form.repairName" label="æ¥ä¿®äºº" placeholder="请è¾å ¥æ¥ä¿®äºº" :rules="formRules.repairName" required clearable /> <van-field v-model="form.remark" label="æ éç°è±¡" type="textarea" rows="3" placeholder="请è¾å ¥æ éç°è±¡" :rules="formRules.remark" required clearable maxlength="200" show-word-limit /> </van-cell-group> <!-- æäº¤æé® --> <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> </view> </van-form> <!-- 设å¤éæ©å¨ --> <van-popup v-model:show="showDevice" position="bottom"> <van-picker :model-value="devicePickerValue" :columns="deviceColumns" @confirm="onDeviceConfirm" @cancel="showDevice = false" /> </van-popup> <!-- æ¥æéæ©å¨ --> <van-popup v-model:show="showDate" position="bottom"> <van-date-picker v-model="currentDate" title="éæ©æ¥æ" @confirm="onDateConfirm" @cancel="showDate = false" /> </van-popup> </view> </template> <script setup> import { ref, computed, onMounted } from 'vue'; import { onShow } from '@dcloudio/uni-app'; import PageHeader from '@/components/PageHeader.vue'; import { getDeviceLedger } from '@/api/equipmentManagement/ledger'; import { addRepair, editRepair, getRepairById } from '@/api/equipmentManagement/repair'; import dayjs from "dayjs"; import { showToast } from 'vant'; defineOptions({ name: "è®¾å¤æ¥ä¿®è¡¨å", }); // 表åå¼ç¨ const formRef = ref(null); const operationType = ref('add'); const loading = ref(false); const showDevice = ref(false); const devicePickerValue = ref([]); const showDate = ref(false); const currentDate = ref([new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()]); // 设å¤é项 const deviceOptions = ref([]); const deviceNameText = ref(''); // 表åéªè¯è§å const formRules = { deviceLedgerId: [{ required: true, trigger: "change", message: "è¯·éæ©è®¾å¤åç§°" }], repairTime: [{ required: true, trigger: "change", message: "è¯·éæ©æ¥ä¿®æ¥æ" }], repairName: [{ required: true, trigger: "blur", message: "请è¾å ¥æ¥ä¿®äºº" }], remark: [{ required: true, trigger: "blur", message: "请è¾å ¥æ éç°è±¡" }], }; // ä½¿ç¨ ref 声æè¡¨åæ°æ® const form = ref({ deviceLedgerId: undefined, // 设å¤ID deviceModel: undefined, // è§æ ¼åå· repairTime: dayjs().format("YYYY-MM-DD"), // æ¥ä¿®æ¥æ repairName: undefined, // æ¥ä¿®äºº remark: undefined, // æ éç°è±¡ }); // 设å¤éæ©å¨å const deviceColumns = computed(() => { return deviceOptions.value.map(item => ({ text: item.deviceName, value: item.id })); }); // å 载设å¤å表 const loadDeviceName = async () => { try { const { data } = await getDeviceLedger(); deviceOptions.value = data || []; } catch (e) { showToast('è·å设å¤å表失败'); } }; // 设置设å¤è§æ ¼åå· const setDeviceModel = (id) => { const option = deviceOptions.value.find((item) => item.id === id); if (option) { form.value.deviceModel = option.deviceModel; deviceNameText.value = option.deviceName; } }; // å è½½è¡¨åæ°æ®ï¼ç¼è¾æ¨¡å¼ï¼ const loadForm = async (id) => { if (id) { operationType.value = 'edit'; try { const { code, data } = await getRepairById(id); if (code == 200) { form.value.deviceLedgerId = data.deviceLedgerId; form.value.deviceModel = data.deviceModel; form.value.repairTime = data.repairTime; form.value.repairName = data.repairName; form.value.remark = data.remark; // 设置设å¤åç§°æ¾ç¤º const device = deviceOptions.value.find(item => item.id === data.deviceLedgerId); if (device) { deviceNameText.value = device.deviceName; } } } catch (e) { showToast('è·å详æ 失败'); } } else { // æ°å¢æ¨¡å¼ operationType.value = 'add'; } }; // æ¸ é¤è¡¨åæ ¡éªç¶æ const clearValidate = () => { formRef.value?.clearValidate(); }; // éç½®è¡¨åæ°æ®åæ ¡éªç¶æ const resetForm = () => { form.value = { deviceLedgerId: undefined, deviceModel: undefined, repairTime: dayjs().format("YYYY-MM-DD"), repairName: undefined, remark: undefined, }; deviceNameText.value = ''; }; const resetFormAndValidate = () => { resetForm(); clearValidate(); }; // æäº¤è¡¨å const sendForm = async () => { try { // æå¨éªè¯è¡¨å await formRef.value?.validate(); loading.value = true; const id = getPageId(); // åå¤æäº¤æ°æ® const submitData = { ...form.value }; const { code } = id ? await editRepair({ id: id, ...submitData }) : await addRepair(submitData); if (code == 200) { showToast(`${id ? "ç¼è¾" : "æ°å¢"}æ¥ä¿®æå`); setTimeout(() => { uni.navigateBack(); }, 1500); } else { loading.value = false; } } catch (e) { loading.value = false; showToast('表åéªè¯å¤±è´¥'); } }; // è¿åä¸ä¸é¡µ const goBack = () => { uni.navigateBack(); }; // è·å页é¢åæ° const getPageParams = () => { const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; const options = currentPage.options; // æ ¹æ®æ¯å¦æidåæ°æ¥å¤ææ¯æ°å¢è¿æ¯ç¼è¾ if (options.id) { // ç¼è¾æ¨¡å¼ï¼è·å详æ loadForm(options.id); } else { // æ°å¢æ¨¡å¼ loadForm(); } }; // è·å页é¢ID const getPageId = () => { const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; const options = currentPage.options; return options.id; }; // æ¾ç¤ºè®¾å¤éæ©å¨ const showDevicePicker = () => { showDevice.value = true; }; // 确认设å¤éæ© const onDeviceConfirm = ({ selectedValues, selectedOptions }) => { form.value.deviceLedgerId = selectedOptions[0].value; devicePickerValue.value = selectedValues; showDevice.value = false; setDeviceModel(selectedOptions[0].value); }; // æ¾ç¤ºæ¥æéæ©å¨ const showDatePicker = () => { showDate.value = true; }; // ç¡®è®¤æ¥æéæ© const onDateConfirm = ({ selectedValues }) => { form.value.repairTime = selectedValues.join('-'); currentDate.value = selectedValues; showDate.value = false; }; onShow(() => { // 页颿¾ç¤ºæ¶è·ååæ° getPageParams(); }); onMounted(() => { // 页é¢å è½½æ¶è·å设å¤å表ååæ° loadDeviceName(); getPageParams(); }); </script> <style scoped lang="scss"> .repair-add { min-height: 100vh; background: #f8f9fa; padding-bottom: 5rem; } .footer-btns { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; display: flex; justify-content: space-around; align-items: center; padding: 0.75rem 0; box-shadow: 0 -0.125rem 0.5rem rgba(0,0,0,0.05); z-index: 1000; } .cancel-btn { font-weight: 400; font-size: 1rem; color: #FFFFFF; width: 6.375rem; background: #C7C9CC; box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2); border-radius: 2.5rem 2.5rem 2.5rem 2.5rem; } .save-btn { font-weight: 400; font-size: 1rem; color: #FFFFFF; width: 14rem; background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%); box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2); border-radius: 2.5rem 2.5rem 2.5rem 2.5rem; } // ååºå¼è°æ´ @media (max-width: 768px) { .submit-section { padding: 12px; } } .tip-text { padding: 4px 16px 0 16px; font-size: 12px; color: #888; } </style> src/pages/equipmentManagement/repair/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,377 @@ <template> <view class="device-repair"> <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> <PageHeader title="è®¾å¤æ¥ä¿®" @back="goBack" /> <!-- æç´¢åºå --> <view class="search-filter-section"> <view class="search-bar"> <view class="search-input"> <input class="search-text" placeholder="请è¾å ¥è®¾å¤åç§°" v-model="searchKeyword" confirm-type="search" @confirm="getList" /> </view> <view class="filter-button" @click="getList"> <up-icon name="search" size="24" color="#999"></up-icon> </view> </view> </view> <!-- è®¾å¤æ¥ä¿®å表 --> <view class="repair-list" v-if="repairList.length > 0"> <view v-for="(item, index) in repairList" :key="index"> <view class="repair-item"> <view class="item-header"> <view class="item-left"> <view class="document-icon"> <up-icon name="file-text" size="16" color="#ffffff"></up-icon> </view> <text class="item-id">设å¤åç§°ï¼{{ item.deviceName }}</text> </view> <view class="status-tag"> <van-tag v-if="item.status === 1" type="success">å®ç»</van-tag> <van-tag v-if="item.status === 0" type="danger">å¾ ç»´ä¿®</van-tag> </view> </view> <up-divider></up-divider> <view class="item-details"> <view class="detail-row"> <text class="detail-label">è§æ ¼åå·</text> <text class="detail-value">{{ item.deviceModel || '-' }}</text> </view> <view class="detail-row"> <text class="detail-label">æ¥ä¿®æ¥æ</text> <text class="detail-value">{{ formatDate(item.repairTime) || '-' }}</text> </view> <view class="detail-row"> <text class="detail-label">æ¥ä¿®äºº</text> <text class="detail-value">{{ item.repairName || '-' }}</text> </view> <view class="detail-row"> <text class="detail-label">æ éç°è±¡</text> <text class="detail-value">{{ item.remark || '-' }}</text> </view> <view class="detail-row"> <text class="detail-label">维修人</text> <text class="detail-value">{{ item.maintenanceName || '-' }}</text> </view> <view class="detail-row"> <text class="detail-label">ç»´ä¿®ç»æ</text> <text class="detail-value">{{ item.maintenanceResult || '-' }}</text> </view> <view class="detail-row"> <text class="detail-label">ç»´ä¿®æ¥æ</text> <text class="detail-value">{{ formatDate(item.maintenanceTime) || '-' }}</text> </view> </view> <!-- æé®åºå --> <view class="action-buttons"> <van-button type="primary" size="small" class="action-btn" @click="edit(item.id)" > ç¼è¾ </van-button> <van-button type="warning" size="small" class="action-btn" :disabled="item.status === 1" @click="addMaintain(item.id)" > æ°å¢ç»´ä¿® </van-button> <van-button type="danger" size="small" plain class="action-btn" @click="delRepairByIds(item.id)" > å é¤ </van-button> </view> </view> </view> </view> <view v-else class="no-data"> <text>ææ è®¾å¤æ¥ä¿®æ°æ®</text> </view> <!-- æµ®å¨æ°æ³¡æé® --> <van-floating-bubble axis="xy" icon="plus" @click="addRepair" /> </view> </template> <script setup> import { ref, onMounted } from 'vue' import { onShow } from '@dcloudio/uni-app' import PageHeader from '@/components/PageHeader.vue' import { getRepairPage, delRepair } from '@/api/equipmentManagement/repair' import useUserStore from "@/store/modules/user" import { showToast } from 'vant'; const userStore = useUserStore() // æç´¢å ³é®è¯ const searchKeyword = ref('') // è®¾å¤æ¥ä¿®æ°æ® const repairList = ref([]) // è¿åä¸ä¸é¡µ const goBack = () => { uni.navigateBack() } // æ ¼å¼åæ¥æ const formatDate = (dateStr) => { if (!dateStr) return '' const date = new Date(dateStr) const year = date.getFullYear() const month = String(date.getMonth() + 1).padStart(2, '0') const day = String(date.getDate()).padStart(2, '0') return `${year}-${month}-${day}` } // æ¥è¯¢å表 const getList = () => { const params = { current: -1, size: -1, deviceName: searchKeyword.value || undefined } getRepairPage(params) .then((res) => { repairList.value = res.records || res.data?.records || [] }) .catch(() => { showToast('è·åæ°æ®å¤±è´¥') }) } // æ°å¢ç»´ä¿® - 跳转å°ç»´ä¿®é¡µé¢ const addMaintain = (id) => { if (!id) { showToast('åæ°é误') return } uni.navigateTo({ url: `/pages/equipmentManagement/repair/maintain?id=${id}` }) } // æ°å¢æ¥ä¿® - è·³è½¬å°æ¥ä¿®é¡µé¢ const addRepair = () => { uni.navigateTo({ url: '/pages/equipmentManagement/repair/add' }) } // ç¼è¾ - 跳转å°add页é¢ï¼éè¿idåºåæ°å¢è¿æ¯ç¼è¾ const edit = (id) => { if (!id) return uni.navigateTo({ url: `/pages/equipmentManagement/repair/add?id=${id}` }) } // å 餿¥ä¿®æ°æ® const delRepairByIds = async (ids) => { uni.showModal({ title: 'è¦å', content: '确认å 餿¥ä¿®æ°æ®, æ¤æä½ä¸å¯é?', confirmText: 'ç¡®å®', cancelText: 'åæ¶', success: async (res) => { if (!res.confirm) return try { const response = await delRepair(ids) if (response.code === 200) { showToast('å 餿å') getList() } else { showToast('å é¤å¤±è´¥') } } catch (e) { showToast('å é¤å¤±è´¥') } } }) } onMounted(() => { getList() }) onShow(() => { getList() }) </script> <style scoped lang="scss"> .u-divider { margin: 0 !important; } .device-repair { min-height: 100vh; background: #f8f9fa; position: relative; padding-bottom: 80px; } .search-filter-section { padding: 10px 20px; background: #ffffff; } .search-bar { display: flex; align-items: center; gap: 12px; } .search-input { flex: 1; background: #f5f5f5; border-radius: 24px; padding: 10px 16px; display: flex; align-items: center; gap: 8px; } .search-text { flex: 1; font-size: 14px; color: #333; background: transparent; border: none; outline: none; } .search-text::placeholder { color: #999; } .filter-button { width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; } .repair-list { padding: 20px; } .repair-item { background: #ffffff; border-radius: 12px; margin-bottom: 16px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); padding: 0 16px; } .item-header { padding: 16px 0; display: flex; align-items: center; justify-content: space-between; } .item-left { display: flex; align-items: center; gap: 8px; } .document-icon { width: 24px; height: 24px; background: #2979ff; border-radius: 4px; display: flex; align-items: center; justify-content: center; } .item-id { font-size: 14px; color: #333; font-weight: 500; } .status-tag { display: flex; align-items: center; } .item-details { padding: 16px 0; } .detail-row { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 8px; &:last-child { margin-bottom: 0; } } .detail-label { font-size: 12px; color: #777777; min-width: 60px; } .detail-value { font-size: 12px; color: #000000; text-align: right; flex: 1; margin-left: 16px; } .detail-value.highlight { color: #2979ff; font-weight: 500; } .no-data { padding: 40px 0; text-align: center; color: #999; } .action-buttons { display: flex; gap: 8px; padding: 0 0 16px 0; justify-content: space-between; } .action-btn { flex: 1; } </style> src/pages/equipmentManagement/repair/maintain.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,267 @@ <template> <view class="repair-maintain"> <!-- 使ç¨éç¨é¡µé¢å¤´é¨ç»ä»¶ --> <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"> <!-- åºæ¬ä¿¡æ¯ --> <van-cell-group title="维修信æ¯" inset> <van-field v-model="form.maintenanceName" label="维修人" placeholder="请è¾å ¥ç»´ä¿®äºº" :rules="formRules.maintenanceName" required clearable /> <van-field v-model="form.maintenanceResult" label="ç»´ä¿®ç»æ" type="textarea" rows="3" placeholder="请è¾å ¥ç»´ä¿®ç»æ" :rules="formRules.maintenanceResult" required clearable maxlength="200" show-word-limit /> <van-field v-model="form.maintenanceTime" label="ç»´ä¿®æ¥æ" placeholder="è¯·éæ©ç»´ä¿®æ¥æ" :rules="formRules.maintenanceTime" required readonly @click="showDatePicker" clearable /> </van-cell-group> <!-- æäº¤æé® --> <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> </view> </van-form> <!-- æ¥æéæ©å¨ --> <van-popup v-model:show="showDate" position="bottom"> <van-date-picker v-model="currentDate" title="éæ©æ¥æ" @confirm="onDateConfirm" @cancel="showDate = false" /> </van-popup> </view> </template> <script setup> import { ref, onMounted } from 'vue'; import { onShow } from '@dcloudio/uni-app'; import PageHeader from '@/components/PageHeader.vue'; import { addMaintain } from '@/api/equipmentManagement/repair'; import useUserStore from "@/store/modules/user"; import dayjs from "dayjs"; import { showToast } from 'vant'; defineOptions({ name: "设å¤ç»´ä¿®è¡¨å", }); const userStore = useUserStore(); // 表åå¼ç¨ const formRef = ref(null); const loading = ref(false); const showDate = ref(false); const currentDate = ref([new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()]); // 表åéªè¯è§å const formRules = { maintenanceName: [{ required: true, trigger: "blur", message: "请è¾å ¥ç»´ä¿®äºº" }], maintenanceResult: [{ required: true, trigger: "blur", message: "请è¾å ¥ç»´ä¿®ç»æ" }], maintenanceTime: [{ required: true, trigger: "change", message: "è¯·éæ©ç»´ä¿®æ¥æ" }], }; // ä½¿ç¨ ref 声æè¡¨åæ°æ® const form = ref({ maintenanceName: userStore.nickName || '', // é»è®¤ä½¿ç¨å½åç¨æ·æµç§° maintenanceResult: undefined, // ç»´ä¿®ç»æ maintenanceTime: dayjs().format("YYYY-MM-DD"), // ç»´ä¿®æ¥æï¼åªæ¾ç¤ºæ¥æï¼ }); // æ¸ é¤è¡¨åæ ¡éªç¶æ const clearValidate = () => { // Vant4ä¸ä¸éè¦æå¨æ¸ é¤éªè¯ç¶æï¼éç½®è¡¨åæ¶ä¼èªå¨æ¸ é¤ // formRef.value?.clearValidate(); // å é¤è¿è¡ }; // éç½®è¡¨åæ°æ®åæ ¡éªç¶æ const resetForm = () => { form.value = { maintenanceName: userStore.nickName || '', maintenanceResult: undefined, maintenanceTime: dayjs().format("YYYY-MM-DD"), }; }; const resetFormAndValidate = () => { resetForm(); // clearValidate(); // å é¤è¿è¡ï¼Vant4ä¼èªå¨å¤ç }; // æäº¤è¡¨å const sendForm = async () => { try { // 使ç¨Vant4çæ£ç¡®éªè¯æ¹å¼ formRef.value?.validate().then(() => { // éªè¯éè¿ submitFormData(); }).catch((errors) => { // éªè¯å¤±è´¥ showToast('请填å宿´ä¿¡æ¯'); }); } catch (e) { showToast('表åéªè¯å¤±è´¥'); } }; // æäº¤è¡¨åæ°æ® const submitFormData = async () => { try { loading.value = true; const id = getPageId(); if (!id) { showToast('åæ°é误'); loading.value = false; return; } // åå¤æäº¤æ°æ®ï¼maintenanceTime å ä¸å½åæ¶åç§ const submitData = { ...form.value }; if (submitData.maintenanceTime && !submitData.maintenanceTime.includes(':')) { // 妿 maintenanceTime åªå 嫿¥æï¼æ·»å å½åæ¶åç§ submitData.maintenanceTime = submitData.maintenanceTime + ' ' + dayjs().format('HH:mm:ss'); } const { code } = await addMaintain({ id: id, ...submitData }); if (code == 200) { showToast('æ°å¢ç»´ä¿®æå'); resetFormAndValidate(); setTimeout(() => { uni.navigateBack(); }, 1500); } else { loading.value = false; } } catch (e) { loading.value = false; showToast('æä½å¤±è´¥'); } }; // è¿åä¸ä¸é¡µ const goBack = () => { uni.navigateBack(); }; // è·å页é¢ID const getPageId = () => { const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; const options = currentPage.options; return options.id; }; // æ¾ç¤ºæ¥æéæ©å¨ const showDatePicker = () => { showDate.value = true; }; // ç¡®è®¤æ¥æéæ© const onDateConfirm = ({ selectedValues }) => { // åªä¿åå¹´ææ¥ï¼ä¸å 嫿¶åç§ form.value.maintenanceTime = selectedValues.join('-'); currentDate.value = selectedValues; showDate.value = false; }; // åå§åè¡¨åæ°æ® const initForm = () => { // 设置维修人为å½åç¨æ·æµç§° form.value.maintenanceName = userStore.nickName || ''; // 设置å½åæ¥æï¼åªå å«å¹´ææ¥ï¼ form.value.maintenanceTime = dayjs().format('YYYY-MM-DD'); currentDate.value = [new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()]; }; onShow(() => { // 页颿¾ç¤ºæ¶åå§å表å initForm(); }); onMounted(() => { // 页é¢å è½½æ¶åå§å表å initForm(); }); </script> <style scoped lang="scss"> .repair-maintain { min-height: 100vh; background: #f8f9fa; padding-bottom: 5rem; } .footer-btns { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; display: flex; justify-content: space-around; align-items: center; padding: 0.75rem 0; box-shadow: 0 -0.125rem 0.5rem rgba(0,0,0,0.05); z-index: 1000; } .cancel-btn { font-weight: 400; font-size: 1rem; color: #FFFFFF; width: 6.375rem; background: #C7C9CC; box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2); border-radius: 2.5rem 2.5rem 2.5rem 2.5rem; } .save-btn { font-weight: 400; font-size: 1rem; color: #FFFFFF; width: 14rem; background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%); box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2); border-radius: 2.5rem 2.5rem 2.5rem 2.5rem; } // ååºå¼è°æ´ @media (max-width: 768px) { .submit-section { padding: 12px; } } .tip-text { padding: 4px 16px 0 16px; font-size: 12px; color: #888; } </style> src/pages/index.vue
@@ -365,6 +365,11 @@ url: '/pages/equipmentManagement/ledger/index' }); break; case 'è®¾å¤æ¥ä¿®': uni.navigateTo({ url: '/pages/equipmentManagement/repair/index' }); break; default: uni.showToast({ title: `ç¹å»äº${item.label}`,