From 952240909a036a341300ec25a2259e6faed33362 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 04 九月 2025 16:09:49 +0800 Subject: [PATCH] 设备保修真机测试,bug修改 --- src/pages/equipmentManagement/upkeep/index.vue | 179 --------- src/pages/login.vue | 34 + src/pages/equipmentManagement/repair/maintain.vue | 37 - src/pages/sales/salesAccount/detail.vue | 36 +- src/pages/cooperativeOffice/collaborativeApproval/index.vue | 201 ---------- src/pages/equipmentManagement/ledger/index.vue | 177 --------- src/pages/equipmentManagement/repair/index.vue | 186 +--------- src/pages/equipmentManagement/repair/add.vue | 39 - src/store/modules/user.ts | 6 src/pages/cooperativeOffice/clientVisit/detail.vue | 5 src/pages/cooperativeOffice/clientVisit/index.vue | 168 +-------- 11 files changed, 150 insertions(+), 918 deletions(-) diff --git a/src/pages/cooperativeOffice/clientVisit/detail.vue b/src/pages/cooperativeOffice/clientVisit/detail.vue index 3dbee0c..2e4e416 100644 --- a/src/pages/cooperativeOffice/clientVisit/detail.vue +++ b/src/pages/cooperativeOffice/clientVisit/detail.vue @@ -240,11 +240,8 @@ Object.keys(source).forEach((k) => { submitData[k] = source[k] }) - - console.log('鎻愪氦鏁版嵁:', submitData) - + const { code } = await clientVisitSignIn(submitData) - console.log('code----', code); if (code === 200) { showToast('绛惧埌鎴愬姛') diff --git a/src/pages/cooperativeOffice/clientVisit/index.vue b/src/pages/cooperativeOffice/clientVisit/index.vue index 4f37a94..5b731d4 100644 --- a/src/pages/cooperativeOffice/clientVisit/index.vue +++ b/src/pages/cooperativeOffice/clientVisit/index.vue @@ -1,30 +1,30 @@ <template> - <view class="client-visit-list"> + <view class="sales-accoun"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> <PageHeader title="瀹㈡埛鎷滆" @back="goBack" /> <!-- 鎼滅储鍜岀瓫閫夊尯鍩� --> - <view class="search-filter-section"> + <view class="search-section"> <view class="search-bar"> <view class="search-input"> - <input + <up-input class="search-text" placeholder="璇疯緭鍏ュ鎴峰悕绉�" v-model="customerName" - confirm-type="search" - @confirm="getList" + @blur="getList" + clearable /> </view> <view class="filter-button" @click="getList"> - <up-icon name="search" size="24" color="#999"></up-icon> + <u-icon name="search" size="24" color="#999"></u-icon> </view> </view> </view> <!-- 鎷滆璁板綍鍒楄〃 --> - <view class="visit-list" v-if="visitList.length > 0"> + <view class="ledger-list" v-if="visitList.length > 0"> <view v-for="(item, index) in visitList" :key="index"> - <view class="visit-item"> + <view class="ledger-item"> <view class="item-header"> <view class="item-left"> <view class="document-icon"> @@ -239,167 +239,35 @@ </script> <style scoped lang="scss"> -.u-divider { - margin: 0 !important; -} +@import "../../../styles/sales-common.scss"; -.client-visit-list { +// 椤甸潰鐗瑰畾鐨勬牱寮忚鐩� +.sales-accoun { 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; -} - -.visit-list { - padding: 20px; -} - -.visit-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: #667eea; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; + background: #667eea; // 淇濇寔椤甸潰鐗规湁鐨勮儗鏅壊 } -.item-id { - font-size: 14px; - color: #333; - font-weight: 500; -} - +// 鐗规湁鏍峰紡 .visit-status { display: flex; align-items: center; } -.item-details { - padding: 16px 0; -} - -.detail-row { - display: flex; - align-items: flex-start; - 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; - word-break: break-all; + word-break: break-all; // 淇濈暀椤甸潰鐗规湁鐨勬枃鏈崲琛屾牱寮� } -.no-data { - padding: 40px 0; - text-align: center; - color: #999; -} - -.action-buttons { - display: flex; - gap: 12px; - padding: 0 0 16px 0; - justify-content: space-between; -} - -.action-btn { - flex: 1; -} - +// 鐗瑰畾鐨勬诞鍔ㄦ寜閽牱寮� .fab-button { - position: fixed; - bottom: calc(30px + env(safe-area-inset-bottom)); - right: 30px; - width: 56px; - height: 56px; - background: #667eea; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 4px 16px rgba(102, 126, 234, 0.3); - z-index: 1000; + background: #667eea; // 淇濇寔椤甸潰鐗规湁鐨勮儗鏅壊 + box-shadow: 0 4px 16px rgba(102, 126, 234, 0.3); // 淇濇寔椤甸潰鐗规湁鐨勯槾褰辨晥鏋� } </style> diff --git a/src/pages/cooperativeOffice/collaborativeApproval/index.vue b/src/pages/cooperativeOffice/collaborativeApproval/index.vue index a3e3293..6004a54 100644 --- a/src/pages/cooperativeOffice/collaborativeApproval/index.vue +++ b/src/pages/cooperativeOffice/collaborativeApproval/index.vue @@ -5,13 +5,14 @@ <PageHeader title="瀹℃壒绠$悊" @back="goBack" /> <!-- 鎼滅储鍜岀瓫閫夊尯鍩� --> - <view class="search-filter-section"> + <view class="search-section"> <view class="search-bar"> <view class="search-input"> - <input + <up-input class="search-text" placeholder="璇疯緭鍏ユ祦绋嬬紪鍙�" v-model="searchForm.approveId" + clearable /> </view> <view class="search-button" @click="getList"> @@ -77,7 +78,7 @@ :disabled="item.approveStatus == 2 || item.approveStatus == 1 || item.approveStatus == 4" @click="handleItemClick(item)" > - 缂栬緫 + 缂栬緫 </u-button> <u-button type="success" @@ -86,7 +87,7 @@ :disabled="item.approveUserCurrentId == null || item.approveStatus == 2 || item.approveStatus == 3 || item.approveStatus == 4 || item.approveUserCurrentId !== userStore.id" @click="approve(item)" > - 瀹℃牳 + 瀹℃牳 </u-button> </view> </view> @@ -98,7 +99,6 @@ <view v-else class="no-data"> <text>鏆傛棤瀹℃壒鏁版嵁</text> </view> -<!-- <van-floating-bubble icon="plus" @click="handleAdd"/>--> <!-- 娴姩鎿嶄綔鎸夐挳 --> <view class="fab-button" @click="handleAdd"> <up-icon name="plus" size="24" color="#ffffff"></up-icon> @@ -229,178 +229,34 @@ </script> <style scoped lang="scss"> + @import "../../../styles/sales-common.scss"; + .u-divider { margin: 0 !important; } - .sales-account { - min-height: 100vh; - background: #f8f9fa; - position: relative; - } - .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; - } - - - .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; - } - - .ledger-list { - padding: 20px; - } - - .ledger-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: #ed8d05; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; } - .item-id { - font-size: 14px; - color: #333; - font-weight: 500; + // 娴姩鎸夐挳鏍峰紡 - 瑕嗙洊鍏叡鏍峰紡涓殑鑳屾櫙鑹� + .fab-button { + background: #ed8d05; } - .item-tag { - border-radius: 4px; - padding: 2px 4px; - } - - .tag-text { - font-size: 11px; - color: #ffffff; - font-weight: 500; - } - - .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-row-user { display: flex; align-items: center; justify-content: space-between; } + .detail-row-approveReason { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; - } - - .detail-info { - margin-top: 10px; - display: flex; - align-items: flex-start; - justify-content: space-between; - } - - .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.highlightBlue { @@ -413,31 +269,11 @@ font-weight: 500; } - .no-data { - padding: 40px 0; - text-align: center; - color: #999; - } - - .fab-button { - position: fixed; - bottom: 30px; - right: 30px; - width: 56px; - height: 56px; - background: #ed8d05; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3); - z-index: 1000; - } - .approver-value { display: flex; justify-content: flex-end; } + .approver-chip { display: inline-flex; align-items: center; @@ -449,6 +285,7 @@ padding: 4px 10px; max-width: 100%; } + .approver-name { font-size: 12px; color: #2b7cff; @@ -470,11 +307,5 @@ line-height: 28px; padding: 0 12px; } - .action-btn.edit { - /* primary 鏍峰紡鏉ヨ嚜缁勪欢锛岃繖閲屼繚鐣欓挬瀛愪互渚垮悗缁渶瑕佹墿灞� */ - } - .action-btn.approve { - /* success 鏍峰紡鏉ヨ嚜缁勪欢锛岃繖閲屼繚鐣欓挬瀛愪互渚垮悗缁渶瑕佹墿灞� */ - } - /* 宸茬Щ闄ant缁勪欢鐨勬牱寮忓紩鐢� */ + </style> \ No newline at end of file diff --git a/src/pages/equipmentManagement/ledger/index.vue b/src/pages/equipmentManagement/ledger/index.vue index 712de1e..fbe02e0 100644 --- a/src/pages/equipmentManagement/ledger/index.vue +++ b/src/pages/equipmentManagement/ledger/index.vue @@ -1,18 +1,18 @@ <template> - <view class="device-ledger"> + <view class="sales-account"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> <PageHeader title="璁惧鍙拌处" @back="goBack" /> - <!-- 鎼滅储鍜岀瓫閫夊尯鍩� --> - <view class="search-filter-section"> + <!-- 鎼滅储鍖哄煙 --> + <view class="search-section"> <view class="search-bar"> <view class="search-input"> - <input + <up-input class="search-text" - placeholder="璇疯緭鍏ヨ澶囧悕绉�" + placeholder="璇疯緭鍏ヨ澶囧悕绉版悳绱�" v-model="searchKeyword" - confirm-type="search" - @confirm="getList" + @change="getList" + clearable /> </view> <view class="filter-button" @click="getList"> @@ -218,166 +218,7 @@ </script> <style scoped lang="scss"> -.u-divider { - margin: 0 !important; -} +@import '@/styles/sales-common.scss'; -.device-ledger { - 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; -} - -.ledger-list { - padding: 20px; -} - -.ledger-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; -} - -.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: 12px; - padding: 0 0 16px 0; - justify-content: space-between; -} - -.action-btn { - flex: 1; -} - -.fab-button { - position: fixed; - bottom: calc(30px + env(safe-area-inset-bottom)); - right: 30px; - width: 56px; - height: 56px; - background: #2979ff; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3); - z-index: 1000; -} +// 璁惧鍙拌处鐗规湁鏍峰紡锛堟墍鏈夋牱寮忛兘宸插寘鍚湪鍏叡鏍峰紡涓級 </style> \ No newline at end of file diff --git a/src/pages/equipmentManagement/repair/add.vue b/src/pages/equipmentManagement/repair/add.vue index ec0147f..9f3cd0e 100644 --- a/src/pages/equipmentManagement/repair/add.vue +++ b/src/pages/equipmentManagement/repair/add.vue @@ -169,7 +169,7 @@ if (code == 200) { form.value.deviceLedgerId = data.deviceLedgerId; form.value.deviceModel = data.deviceModel; - form.value.repairTime = data.repairTime; + form.value.repairTime = dayjs(data.repairTime).format("YYYY-MM-DD"); form.value.repairName = data.repairName; form.value.remark = data.remark; // 璁剧疆璁惧鍚嶇О鏄剧ず @@ -185,23 +185,6 @@ // 鏂板妯″紡 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 = ''; }; // 鎵弿浜岀淮鐮佸姛鑳� @@ -283,6 +266,7 @@ // 纭鏃ユ湡閫夋嫨 const onDateConfirm = (e) => { form.value.repairTime = formatDateToYMD(e.value); + pickerDateValue.value = dayjs(e.value).format("YYYY-MM-DD"); showDate.value = false; }; @@ -355,19 +339,21 @@ // 杩斿洖涓婁竴椤� const goBack = () => { + uni.removeStorageSync('repairId'); uni.navigateBack(); }; // 鑾峰彇椤甸潰鍙傛暟 const getPageParams = () => { - const pages = getCurrentPages(); - const currentPage = pages[pages.length - 1]; - const options = currentPage.options; + // 浣跨敤uni.getStorageSync鑾峰彇id + const id = uni.getStorageSync('repairId'); // 鏍规嵁鏄惁鏈塱d鍙傛暟鏉ュ垽鏂槸鏂板杩樻槸缂栬緫 - if (options.id) { + if (id) { // 缂栬緫妯″紡锛岃幏鍙栬鎯� - loadForm(options.id); + loadForm(id); + // 鍙�夛細鑾峰彇鍚庢竻闄ゅ瓨鍌ㄧ殑id锛岄伩鍏嶅奖鍝嶅悗缁搷浣� + // uni.removeStorageSync('repairId'); } else { // 鏂板妯″紡 loadForm(); @@ -376,10 +362,9 @@ // 鑾峰彇椤甸潰ID const getPageId = () => { - const pages = getCurrentPages(); - const currentPage = pages[pages.length - 1]; - const options = currentPage.options; - return options.id; + // 浣跨敤uni.getStorageSync鑾峰彇id + const id = uni.getStorageSync('repairId'); + return id; }; </script> diff --git a/src/pages/equipmentManagement/repair/index.vue b/src/pages/equipmentManagement/repair/index.vue index c844d4b..49b2374 100644 --- a/src/pages/equipmentManagement/repair/index.vue +++ b/src/pages/equipmentManagement/repair/index.vue @@ -1,18 +1,18 @@ <template> - <view class="device-repair"> + <view class="sales-account"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> <PageHeader title="璁惧鎶ヤ慨" @back="goBack" /> <!-- 鎼滅储鍖哄煙 --> - <view class="search-filter-section"> + <view class="search-section"> <view class="search-bar"> <view class="search-input"> - <input + <up-input class="search-text" - placeholder="璇疯緭鍏ヨ澶囧悕绉�" + placeholder="璇疯緭鍏ヨ澶囧悕绉版悳绱�" v-model="searchKeyword" - confirm-type="search" - @confirm="getList" + @change="getList" + clearable /> </view> <view class="filter-button" @click="getList"> @@ -22,9 +22,9 @@ </view> <!-- 璁惧鎶ヤ慨鍒楄〃 --> - <view class="repair-list" v-if="repairList.length > 0"> + <view class="ledger-list" v-if="repairList.length > 0"> <view v-for="(item, index) in repairList" :key="index"> - <view class="repair-item"> + <view class="ledger-item"> <view class="item-header"> <view class="item-left"> <view class="document-icon"> @@ -76,6 +76,7 @@ type="primary" size="small" class="action-btn" + :disabled="item.status === 1" @click="edit(item.id)" > 缂栬緫 @@ -188,8 +189,10 @@ showToast('鍙傛暟閿欒') return } + // 浣跨敤uni.setStorageSync瀛樺偍id + uni.setStorageSync('repairId', id) uni.navigateTo({ - url: `/pages/equipmentManagement/repair/maintain?id=${id}` + url: '/pages/equipmentManagement/repair/maintain' }) } @@ -203,8 +206,10 @@ // 缂栬緫 - 璺宠浆鍒癮dd椤甸潰锛岄�氳繃id鍖哄垎鏂板杩樻槸缂栬緫 const edit = (id) => { if (!id) return + // 浣跨敤uni.setStorageSync瀛樺偍id + uni.setStorageSync('repairId', id) uni.navigateTo({ - url: `/pages/equipmentManagement/repair/add?id=${id}` + url: '/pages/equipmentManagement/repair/add' }) } @@ -242,100 +247,11 @@ </script> <style scoped lang="scss"> -.u-divider { - margin: 0 !important; -} +@import '@/styles/sales-common.scss'; -.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; +// 璁惧缁翠慨鐗规湁鏍峰紡 +.sales-account { + padding-bottom: 80px; // 涓烘诞鍔ㄦ寜閽暀鍑虹┖闂� } .status-tag { @@ -343,69 +259,7 @@ 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; -} -.fab-button { - position: fixed; - bottom: calc(30px + env(safe-area-inset-bottom)); - right: 30px; - width: 56px; - height: 56px; - background: #2979ff; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3); - z-index: 1000; - /* 纭繚娴姩鎸夐挳涓嶈搴曢儴瀹夊叏鍖哄煙閬尅 */ + gap: 8px; // 涓庡叕鍏辨牱寮忎腑鐨� 12px 涓嶅悓 } </style> \ No newline at end of file diff --git a/src/pages/equipmentManagement/repair/maintain.vue b/src/pages/equipmentManagement/repair/maintain.vue index 12a39b7..aa8a8e3 100644 --- a/src/pages/equipmentManagement/repair/maintain.vue +++ b/src/pages/equipmentManagement/repair/maintain.vue @@ -50,9 +50,11 @@ <up-datetime-picker :show="showDatePicker" v-model="pickerDateValue" - mode="date" + mode="datetime" title="閫夋嫨鏃ユ湡" + format="YYYY-MM-DD HH:mm:ss" @confirm="onDateConfirm" + @cancel="showDatePicker = false" /> </view> </template> @@ -64,7 +66,6 @@ import { addMaintain } from '@/api/equipmentManagement/repair'; import useUserStore from "@/store/modules/user"; import dayjs from "dayjs"; -import { formatDateToYMD } from '@/utils/ruoyi' defineOptions({ name: "璁惧缁翠慨琛ㄥ崟", @@ -89,7 +90,7 @@ const form = ref({ maintenanceName: userStore.nickName || '', // 榛樿浣跨敤褰撳墠鐢ㄦ埛鏄电О maintenanceResult: undefined, // 缁翠慨缁撴灉 - maintenanceTime: dayjs().format("YYYY-MM-DD"), // 缁翠慨鏃ユ湡锛堝彧鏄剧ず鏃ユ湡锛� + maintenanceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 缁翠慨鏃ユ湡锛堝彧鏄剧ず鏃ユ湡锛� }); // 鑷畾涔塻howToast鍑芥暟 @@ -100,17 +101,12 @@ }) }; -// 娓呴櫎琛ㄥ崟鏍¢獙鐘舵�� -const clearValidate = () => { - // uview-plus涓嶉渶瑕佹墜鍔ㄦ竻闄ら獙璇佺姸鎬侊紝閲嶇疆琛ㄥ崟鏃朵細鑷姩娓呴櫎 -}; - // 閲嶇疆琛ㄥ崟鏁版嵁鍜屾牎楠岀姸鎬� const resetForm = () => { form.value = { maintenanceName: userStore.nickName || '', maintenanceResult: undefined, - maintenanceTime: dayjs().format("YYYY-MM-DD"), + maintenanceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), }; }; @@ -145,10 +141,6 @@ // 鍑嗗鎻愪氦鏁版嵁锛宮aintenanceTime 鍔犱笂褰撳墠鏃跺垎绉� 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 }); @@ -156,12 +148,14 @@ showToast('鏂板缁翠慨鎴愬姛'); resetFormAndValidate(); setTimeout(() => { - uni.navigateBack(); - }, 1500); + goBack(); + }, 500); } else { loading.value = false; } } catch (e) { + console.log(e); + loading.value = false; showToast('鎿嶄綔澶辫触'); } @@ -169,21 +163,20 @@ // 杩斿洖涓婁竴椤� const goBack = () => { + uni.removeStorageSync('repairId'); uni.navigateBack(); }; // 鑾峰彇椤甸潰ID const getPageId = () => { - const pages = getCurrentPages(); - const currentPage = pages[pages.length - 1]; - const options = currentPage.options; - return options.id; + const id = uni.getStorageSync('repairId'); + return id; }; // 纭鏃ユ湡閫夋嫨 const onDateConfirm = (e) => { - form.value.maintenanceTime = formatDateToYMD(e.value) - pickerDateValue.value = formatDateToYMD(e.value) + form.value.maintenanceTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss') + pickerDateValue.value = e.value showDatePicker.value = false; }; @@ -192,7 +185,7 @@ // 璁剧疆缁翠慨浜轰负褰撳墠鐢ㄦ埛鏄电О form.value.maintenanceName = userStore.nickName || ''; // 璁剧疆褰撳墠鏃ユ湡锛堝彧鍖呭惈骞存湀鏃ワ級 - form.value.maintenanceTime = dayjs().format('YYYY-MM-DD'); + form.value.maintenanceTime = dayjs().format('YYYY-MM-DD HH:mm:ss'); }; onShow(() => { diff --git a/src/pages/equipmentManagement/upkeep/index.vue b/src/pages/equipmentManagement/upkeep/index.vue index 35c00de..39454f9 100644 --- a/src/pages/equipmentManagement/upkeep/index.vue +++ b/src/pages/equipmentManagement/upkeep/index.vue @@ -1,18 +1,18 @@ <template> - <view class="device-upkeep"> + <view class="sales-account"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> <PageHeader title="璁惧淇濆吇" @back="goBack" /> <!-- 鎼滅储鍖哄煙 --> - <view class="search-filter-section"> + <view class="search-section"> <view class="search-bar"> <view class="search-input"> - <input + <up-input class="search-text" - placeholder="璇疯緭鍏ヨ澶囧悕绉�" + placeholder="璇疯緭鍏ヨ澶囧悕绉版悳绱�" v-model="searchKeyword" - confirm-type="search" - @confirm="getList" + @change="getList" + clearable /> </view> <view class="filter-button" @click="getList"> @@ -22,9 +22,9 @@ </view> <!-- 璁惧淇濆吇鍒楄〃 --> - <view class="upkeep-list" v-if="upkeepList.length > 0"> + <view class="ledger-list" v-if="upkeepList.length > 0"> <view v-for="(item, index) in upkeepList" :key="index"> - <view class="upkeep-item" @click="toggleSelection(item)"> + <view class="ledger-item" @click="toggleSelection(item)"> <view class="item-header"> <view class="item-left"> <view class="document-icon"> @@ -285,58 +285,11 @@ </script> <style scoped lang="scss"> -.u-divider { - margin: 0 !important; -} +@import '@/styles/sales-common.scss'; -.device-upkeep { - 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; +// 璁惧淇濆吇鐗规湁鏍峰紡 +.sales-account { + padding-bottom: 80px; // 涓烘诞鍔ㄦ寜閽暀鍑虹┖闂� } .action-section { @@ -345,36 +298,9 @@ border-bottom: 1px solid #f0f0f0; } -.action-buttons { - display: flex; - gap: 8px; +.action-section .action-buttons { + gap: 8px; // 涓庡叕鍏辨牱寮忎腑鐨� 12px 涓嶅悓 justify-content: flex-start; -} - -.upkeep-list { - padding: 20px; -} - -.upkeep-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; } .checkbox-wrapper { @@ -382,93 +308,22 @@ align-items: center; } -.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: 80px; + min-width: 80px; // 涓庡叕鍏辨牱寮忎腑鐨� 60px 涓嶅悓 } .detail-value { - font-size: 12px; - color: #000000; - text-align: right; - flex: 1; - margin-left: 16px; display: flex; justify-content: flex-end; align-items: center; } -.detail-value.highlight { - color: #2979ff; - font-weight: 500; -} - -.no-data { - padding: 40px 0; - text-align: center; - color: #999; -} - -.upkeep-item .action-buttons { - display: flex; - gap: 8px; - padding: 0 0 16px 0; - justify-content: space-between; -} - -.action-btn { - flex: 1; -} - -.fab-button { - position: fixed; - bottom: calc(30px + env(safe-area-inset-bottom)); - right: 30px; - width: 56px; - height: 56px; - background: #667eea; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 4px 16px rgba(102, 126, 234, 0.3); - z-index: 1000; +.ledger-item .action-buttons { + gap: 8px; // 涓庡叕鍏辨牱寮忎腑鐨� 12px 涓嶅悓 } </style> \ No newline at end of file diff --git a/src/pages/login.vue b/src/pages/login.vue index f702371..860fd09 100644 --- a/src/pages/login.vue +++ b/src/pages/login.vue @@ -7,7 +7,7 @@ <view class="input-item flex align-center"> <up-input prefixIcon="account" placeholder="璇疯緭鍏ヨ处鍙�" border="bottom" @blur="getUserLoginFacotryList" - maxlength="30" v-model="loginForm.username" clearable></up-input> + maxlength="30" v-model="loginForm.userName" clearable></up-input> </view> <view class="input-item flex align-center"> <up-input prefixIcon="lock" placeholder="璇疯緭鍏ュ瘑鐮�" border="bottom" maxlength="20" v-model="loginForm.password" clearable type="password"></up-input> @@ -42,7 +42,14 @@ </template> <script setup> -import modal from '@/plugins/modal' +import {modal} from "@/plugins"; + +const showToast = (message) => { + uni.showToast({ + title: message, + icon: 'none' + }) +} import { userLoginFacotryList} from '@/api/login' import { ref, onMounted } from "vue"; import useUserStore from '@/store/modules/user' @@ -54,7 +61,7 @@ const useWxLogin = ref(false); // 鏄惁浣跨敤寰俊鐧诲綍 const rememberPassword = ref(false); // 璁颁綇瀵嗙爜 const loginForm = ref({ - username: "", + userName: "", password: "", factoryId: "", currentFatoryName: "", @@ -64,7 +71,7 @@ // 淇濆瓨瀵嗙爜鍒版湰鍦板瓨鍌� function savePassword() { if (rememberPassword.value) { - uni.setStorageSync('remembered_username', loginForm.value.username); + uni.setStorageSync('remembered_username', loginForm.value.userName); uni.setStorageSync('remembered_password', loginForm.value.password); uni.setStorageSync('remember_password', true); } else { @@ -82,7 +89,7 @@ const savedUsername = uni.getStorageSync('remembered_username'); const savedPassword = uni.getStorageSync('remembered_password'); if (savedUsername) { - loginForm.value.username = savedUsername; + loginForm.value.userName = savedUsername; } if (savedPassword) { loginForm.value.password = savedPassword; @@ -103,8 +110,9 @@ } function getUserLoginFacotryList() { - if(loginForm.value.username){ - userLoginFacotryList({userName:loginForm.value.username}).then(res => { + if(loginForm.value.userName){ + userLoginFacotryList({userName:loginForm.value.userName}).then(res => { + console.log('res',res) // 妫�鏌es.data鏄惁涓烘暟缁� if (res.data && Array.isArray(res.data)) { // 閲嶆柊缁勮鏁版嵁鏍煎紡锛歞eptId鍙樻垚id锛宒eptName鍙樻垚name @@ -117,7 +125,7 @@ factoryList.value = [] } }).catch(error => { - modal.msgError('鑾峰彇鍏徃鍒楄〃澶辫触:', error) + showToast('鑾峰彇鍏徃鍒楄〃澶辫触:', error) factoryList.value = [] }) }else { @@ -126,14 +134,14 @@ } async function handleLogin() { - if (loginForm.value.username === "") { - modal.msgError("璇疯緭鍏ユ偍鐨勮处鍙�") + if (loginForm.value.userName === "") { + showToast("璇疯緭鍏ユ偍鐨勮处鍙�") } else if (loginForm.value.password === "") { - modal.msgError("璇疯緭鍏ユ偍鐨勫瘑鐮�") + showToast("璇疯緭鍏ユ偍鐨勫瘑鐮�") } else if (loginForm.value.factoryId === "") { - modal.msgError("璇烽�夋嫨鍏徃") + showToast("璇烽�夋嫨鍏徃") } else { - modal.loading("鐧诲綍涓紝璇疯�愬績绛夊緟...") + showToast("鐧诲綍涓紝璇疯�愬績绛夊緟...") pwdLogin() } }; diff --git a/src/pages/sales/salesAccount/detail.vue b/src/pages/sales/salesAccount/detail.vue index e082ecb..0938814 100644 --- a/src/pages/sales/salesAccount/detail.vue +++ b/src/pages/sales/salesAccount/detail.vue @@ -189,7 +189,7 @@ label="浜у搧澶х被" prop="productCategory" required - :rules="productRules" + :rules="productRules.productCategory" > <up-input v-model="product.productCategory" @@ -210,7 +210,7 @@ label="瑙勬牸鍨嬪彿" prop="specificationModel" required - :rules="productRules" + :rules="productRules.specificationModel" > <up-input v-model="product.specificationModel" @@ -231,7 +231,7 @@ label="鍗曚綅" prop="unit" required - :rules="productRules" + :rules="productRules.unit" > <up-input v-model="product.unit" @@ -244,7 +244,7 @@ label="绋庣巼(%)" prop="taxRate" required - :rules="productRules" + :rules="productRules.taxRate" > <up-input v-model="product.taxRate" @@ -265,7 +265,7 @@ label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" required - :rules="productRules" + :rules="productRules.taxInclusiveUnitPrice" > <up-input v-model="product.taxInclusiveUnitPrice" @@ -280,7 +280,7 @@ label="鏁伴噺" prop="quantity" required - :rules="productRules" + :rules="productRules.quantity" > <up-input v-model="product.quantity" @@ -295,7 +295,7 @@ label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" required - :rules="productRules" + :rules="productRules.taxInclusiveTotalPrice" > <up-input v-model="product.taxInclusiveTotalPrice" @@ -310,7 +310,7 @@ label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" required - :rules="productRules" + :rules="productRules.taxExclusiveTotalPrice" > <up-input v-model="product.taxExclusiveTotalPrice" @@ -325,7 +325,7 @@ label="鍙戠エ绫诲瀷" prop="invoiceType" required - :rules="productRules" + :rules="productRules.invoiceType" > <up-input v-model="product.invoiceType" @@ -362,7 +362,6 @@ import { formatDateToYMD } from '@/utils/ruoyi' import { addOrUpdateSalesLedger, - addOrUpdateSalesLedgerProduct, customerList, getSalesLedgerWithProducts, modelList, @@ -504,35 +503,35 @@ // 琛ㄥ崟鏍¢獙瑙勫垯 const rules = { salesman: [ - { required: true, message: '璇烽�夋嫨涓氬姟鍛�', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨涓氬姟鍛�', trigger: 'change' } ], customerContractNo: [ { required: true, message: '璇疯緭鍏ュ鎴峰悎鍚屽彿', trigger: 'blur' } ], customerName: [ - { required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'change' } ], projectName: [ { required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' } ], executionDate: [ - { required: true, message: '璇烽�夋嫨绛捐鏃ユ湡', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨绛捐鏃ユ湡', trigger: 'change' } ] }; // 浜у搧淇℃伅鏍¢獙瑙勫垯 const productRules = { productCategory: [ - { required: true, message: '璇烽�夋嫨浜у搧澶х被', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨浜у搧澶х被', trigger: 'change' } ], specificationModel: [ - { required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'change' } ], unit: [ { required: true, message: '璇疯緭鍏ュ崟浣�', trigger: 'blur' } ], taxRate: [ - { required: true, message: '璇烽�夋嫨绋庣巼', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨绋庣巼', trigger: 'change' } ], taxInclusiveUnitPrice: [ { required: true, message: '璇疯緭鍏ュ惈绋庡崟浠�', trigger: 'blur' }, @@ -551,7 +550,7 @@ { type: 'number', min: 0, message: '涓嶅惈绋庢�讳环蹇呴』澶т簬0', trigger: 'blur' } ], invoiceType: [ - { required: true, message: '璇烽�夋嫨鍙戠エ绫诲瀷', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨鍙戠エ绫诲瀷', trigger: 'change' } ] }; @@ -580,7 +579,8 @@ // 鏃ユ湡纭浜嬩欢 const onDateConfirm = (e) => { form.value.executionDate = formatDateToYMD(e.value) - pickerDateValue.value = formatDateToYMD(e.value) + // 淇濇寔pickerDateValue涓烘椂闂存埑鏍煎紡锛岃�屼笉鏄牸寮忓寲鐨勫瓧绗︿覆 + pickerDateValue.value = e.value showDatePicker.value = false; } diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 7b9c873..969943c 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -5,7 +5,7 @@ import config from '@/config.js' export interface LoginForm { - username: string; + userName: string; password: string; factoryId: string; } @@ -27,11 +27,11 @@ actions: { // 閮ㄩ棬鐧诲綍 loginCheckFactory(userInfo: any) { - const username = userInfo.username.trim() + const userName = userInfo.userName const password = userInfo.password const factoryId = userInfo.factoryId return new Promise((resolve, reject) => { - loginCheckFactory(username, password, factoryId).then((res: any) => { + loginCheckFactory(userName, password, factoryId).then((res: any) => { setToken(res.token) this.token = res.token resolve(null) -- Gitblit v1.9.3