From 7a0ffb0048adeda9ebfbca1d0b525eb224c173e3 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期五, 29 八月 2025 17:00:16 +0800 Subject: [PATCH] 修改组件 --- src/pages/equipmentManagement/upkeep/index.vue | 63 src/pages/procurementManagement/invoiceEntry/add.vue | 138 -- src/pages.json | 7 src/pages/procurementManagement/paymentEntry/index.vue | 23 src/pages/procurementManagement/paymentEntry/add.vue | 188 +- src/pages/procurementManagement/paymentEntry/edit.vue | 159 +- src/pages/procurementManagement/procurementLedger/detail.vue | 285 ++-- src/pages/sales/salesAccount/detail.vue | 330 ++--- src/pages/equipmentManagement/repair/add.vue | 134 +- src/pages/equipmentManagement/upkeep/maintain.vue | 90 src/pages/sales/receiptPayment/edit.vue | 170 +- src/pages/cooperativeOffice/collaborativeApproval/approve.vue | 21 src/pages/sales/receiptPayment/index.vue | 14 src/pages/sales/invoicingRegistration/add.vue | 303 ++-- src/pages/equipmentManagement/repair/maintain.vue | 88 src/pages/sales/invoiceLedger/detail.vue | 103 - src/pages/cooperativeOffice/collaborativeApproval/index.vue | 27 src/pages/equipmentManagement/ledger/index.vue | 25 src/pages/equipmentManagement/upkeep/add.vue | 100 src/pages/cooperativeOffice/collaborativeApproval/detail.vue | 122 + src/pages/sales/invoicingRegistration/index.vue | 16 src/pages/sales/receiptPayment/add.vue | 174 +- src/pages/login.vue | 6 src/main.js | 8 src/pages_mine/pages/info/index.vue | 60 src/pages/cooperativeOffice/collaborativeApproval/contactSelect.vue | 53 src/pages/equipmentManagement/repair/index.vue | 53 src/config.js | 4 src/pages/cooperativeOffice/clientVisit/detail.vue | 179 +- src/pages/equipmentManagement/ledger/detail.vue | 202 +- src/pages/cooperativeOffice/clientVisit/index.vue | 418 ------ src/pages/procurementManagement/procurementInvoiceLedger/detail.vue | 79 32 files changed, 1,385 insertions(+), 2,257 deletions(-) diff --git a/src/config.js b/src/config.js index 47daed0..65baaa4 100644 --- a/src/config.js +++ b/src/config.js @@ -1,7 +1,7 @@ // 搴旂敤鍏ㄥ眬閰嶇疆 const config = { - // baseUrl: 'http://114.132.189.42:8089', // 娴嬭瘯搴� - baseUrl: 'http://192.168.1.147:7003', // 鏈湴鑱旇皟 + baseUrl: 'http://114.132.189.42:8089', // 娴嬭瘯搴� + // baseUrl: 'http://192.168.1.147:7003', // 鏈湴鑱旇皟 //cloud鍚庡彴缃戝叧鍦板潃 // baseUrl: 'http://192.168.10.3:8080', // 搴旂敤淇℃伅 diff --git a/src/main.js b/src/main.js index dfd7393..c866fb5 100644 --- a/src/main.js +++ b/src/main.js @@ -2,9 +2,8 @@ import plugins from './plugins' import store from './store' import uviewPlus from 'uview-plus' -// 绉婚櫎浠ヤ笅涓よ Vant 鐩稿叧瀵煎叆 -// import Vant from 'vant'; -// import 'vant/lib/index.css'; +import Vant from 'vant'; +import 'vant/lib/index.css'; import { setupGlobalComponents } from './components' @@ -24,8 +23,7 @@ app.use(store) app.use(uviewPlus) app.use(plugins) - // 绉婚櫎浠ヤ笅琛� Vant 娉ㄥ唽 - // app.use(Vant) + app.use(Vant) // 娉ㄥ唽鍏ㄥ眬缁勪欢 setupGlobalComponents(app) diff --git a/src/pages.json b/src/pages.json index 700c2c3..66d15c2 100644 --- a/src/pages.json +++ b/src/pages.json @@ -294,13 +294,6 @@ } }, { - "path": "pages/cooperativeOffice/clientVisit/detail", - "style": { - "navigationBarTitleText": "瀹㈡埛鎷滆鐧昏", - "navigationStyle": "custom" - } - }, - { "path": "pages/equipmentManagement/ledger/index", "style": { "navigationBarTitleText": "璁惧鍙拌处", diff --git a/src/pages/cooperativeOffice/clientVisit/detail.vue b/src/pages/cooperativeOffice/clientVisit/detail.vue index e22638a..d429a6b 100644 --- a/src/pages/cooperativeOffice/clientVisit/detail.vue +++ b/src/pages/cooperativeOffice/clientVisit/detail.vue @@ -1,122 +1,107 @@ <template> - <view class="client-visit"> - <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="瀹㈡埛鎷滆鐧昏" @back="goBack" /> + <view class="client-visit-detail"> + <PageHeader title="瀹㈡埛鎷滆璇︽儏" @back="goBack" /> - <!-- 绛惧埌琛ㄥ崟 --> - <van-form @submit="handleSignIn" ref="formRef" label-width="110px" input-align="right" error-message-align="right"> + <u-form @submit="handleSignIn" ref="formRef" label-width="110" input-align="right" error-message-align="right"> <!-- 瀹㈡埛淇℃伅 --> - <van-cell-group title="瀹㈡埛淇℃伅" inset> - <van-field - v-model="form.customerName" - label="瀹㈡埛鍚嶇О" - placeholder="璇疯緭鍏ュ鎴峰悕绉�" - required - name="customerName" - clearable - /> - <van-field - v-model="form.contact" - label="鑱旂郴浜�" - placeholder="璇疯緭鍏ヨ仈绯讳汉" - name="contact" - clearable - /> - <van-field - v-model="form.contactPhone" - label="鑱旂郴鐢佃瘽" - placeholder="璇疯緭鍏ヨ仈绯荤數璇�" - name="contactPhone" - clearable - /> - </van-cell-group> - + <u-cell-group title="瀹㈡埛淇℃伅"> + <u-form-item label="瀹㈡埛鍚嶇О" prop="customerName" required border-bottom> + <u-input + v-model="form.customerName" + placeholder="璇疯緭鍏ュ鎴峰悕绉�" + readonly + /> + </u-form-item> + <u-form-item label="鑱旂郴浜�" prop="contactPerson" border-bottom> + <u-input + v-model="form.contactPerson" + placeholder="璇疯緭鍏ヨ仈绯讳汉" + readonly + /> + </u-form-item> + <u-form-item label="鑱旂郴鐢佃瘽" prop="contactPhone" border-bottom> + <u-input + v-model="form.contactPhone" + placeholder="璇疯緭鍏ヨ仈绯荤數璇�" + readonly + /> + </u-form-item> + </u-cell-group> + <!-- 鎷滆淇℃伅 --> - <van-cell-group title="鎷滆淇℃伅" inset> - <van-field - v-model="form.visitingPeople" - label="鎷滆浜�" - placeholder="鎷滆浜�" - name="visitingPeople" - readonly - clearable - /> - <van-field - v-model="form.purposeVisit" - label="鎷滆鐩殑" - placeholder="璇疯緭鍏ユ嫓璁跨洰鐨�" - name="purposeVisit" - required - clearable - /> - <van-field - v-model="form.purposeDate" - label="鎷滆鏃堕棿" - placeholder="璇烽�夋嫨鎷滆鏃堕棿" - name="purposeDate" - required - readonly - @click="showTimePicker" - clearable - /> - <van-field - v-model="form.visitAddress" - label="褰撳墠浣嶇疆" - placeholder="鐐瑰嚮鑾峰彇褰撳墠浣嶇疆" - name="visitAddress" - :readonly="true" - :disabled="true" - type="textarea" - @click="getCurrentLocation" - clearable - > - <template #right-icon> - <van-icon name="location-o" @click.stop="getCurrentLocation" class="location-icon" /> - </template> - </van-field> - </van-cell-group> - + <u-cell-group title="鎷滆淇℃伅"> + <u-form-item label="鎷滆鐩殑" prop="visitPurpose" required border-bottom> + <u-input + v-model="form.visitPurpose" + placeholder="璇疯緭鍏ユ嫓璁跨洰鐨�" + /> + </u-form-item> + <u-form-item label="鎷滆鏃堕棿" prop="visitTime" required border-bottom> + <u-input + v-model="form.visitTime" + placeholder="璇烽�夋嫨鎷滆鏃堕棿" + readonly + @click="showTimePicker" + /> + </u-form-item> + <u-form-item label="鎷滆鍦扮偣" prop="visitLocation" required border-bottom> + <u-input + v-model="form.visitLocation" + placeholder="璇疯緭鍏ユ嫓璁垮湴鐐�" + > + <template #suffix> + <u-icon name="map" @click.stop="getCurrentLocation" class="location-icon" /> + </template> + </u-input> + </u-form-item> + </u-cell-group> + <!-- 澶囨敞淇℃伅 --> - <van-cell-group title="澶囨敞淇℃伅" inset> - <van-field - v-model="form.remark" - label="澶囨敞" - name="remark" - type="textarea" - placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�" - rows="3" - autosize - clearable - /> - </van-cell-group> - + <u-cell-group title="澶囨敞淇℃伅"> + <u-form-item label="澶囨敞" prop="remark" border-bottom> + <u-textarea + v-model="form.remark" + placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�" + :maxlength="200" + count + :autoHeight="true" + /> + </u-form-item> + </u-cell-group> + <!-- 鎻愪氦鎸夐挳 --> <view class="footer-btns"> - <van-button class="cancel-btn" @click="goBack">鍙栨秷</van-button> - <van-button class="sign-btn" native-type="submit" form-type="submit" :loading="loading">绛惧埌</van-button> + <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> + <u-button class="sign-btn" type="primary" @click="handleSignIn" :loading="loading">绛惧埌</u-button> </view> - </van-form> - + </u-form> + <!-- 鏃堕棿閫夋嫨鍣� --> - <van-popup v-model:show="showTime" position="bottom"> - <van-date-picker + <u-popup v-model="showTime" mode="bottom"> + <u-datetime-picker v-model="currentTime" - type="datetime" + title="閫夋嫨鏃堕棿" @confirm="onTimeConfirm" @cancel="showTime = false" - title="閫夋嫨鎷滆鏃堕棿" /> - </van-popup> + </u-popup> </view> </template> <script setup> +// 鏇挎崲 toast 鏂规硶 +const showToast = (message) => { + uni.showToast({ + title: message, + icon: 'none' + }) +} + import { ref, onMounted } from 'vue' import { onShow } from '@dcloudio/uni-app' import PageHeader from '@/components/PageHeader.vue' import { clientVisitSignIn } from '@/api/cooperativeOffice/clientVisit' import useUserStore from "@/store/modules/user" -import { showToast } from 'vant' import dayjs from "dayjs" const userStore = useUserStore() diff --git a/src/pages/cooperativeOffice/clientVisit/index.vue b/src/pages/cooperativeOffice/clientVisit/index.vue index afcb5d6..6e22066 100644 --- a/src/pages/cooperativeOffice/clientVisit/index.vue +++ b/src/pages/cooperativeOffice/clientVisit/index.vue @@ -1,389 +1,59 @@ +// 瀹㈡埛鎷滆 <template> - <view class="client-visit-list"> - <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="瀹㈡埛鎷滆" @back="goBack" /> - - <!-- 鎼滅储鍜岀瓫閫夊尯鍩� --> - <view class="search-filter-section"> - <view class="search-bar"> - <view class="search-input"> - <input - class="search-text" - placeholder="璇疯緭鍏ュ鎴峰悕绉�" - v-model="customerName" - 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 class="page-header"> + <view class="header-left"> + <up-icon name="arrow-left" size="20" color="#333" @click="goBack"></up-icon> </view> - </view> - - <!-- 鎷滆璁板綍鍒楄〃 --> - <view class="visit-list" v-if="visitList.length > 0"> - <view v-for="(item, index) in visitList" :key="index"> - <view class="visit-item"> - <view class="item-header"> - <view class="item-left"> - <view class="document-icon"> - <up-icon name="user" size="16" color="#ffffff"></up-icon> - </view> - <text class="item-id">瀹㈡埛锛歿{ item.customerName }}</text> - </view> - <view class="visit-status"> - <!-- 鏇挎崲鏍囩鍜屾寜閽� --> - <template> - <u-tag type="success">宸插畬鎴�</u-tag> - - <!-- 鎿嶄綔鎸夐挳 --> - <view class="action-buttons"> - <u-button - type="primary" - size="small" - class="action-btn" - @click="openDetail(item)" - > - 鏌ョ湅璇︽儏 - </u-button> - <u-button - type="warning" - size="small" - class="action-btn" - @click="editVisit(item)" - > - 缂栬緫 - </u-button> - </view> - </template> - </view> - </view> - <up-divider></up-divider> - - <view class="item-details"> - <view class="detail-row"> - <text class="detail-label">鑱旂郴浜�</text> - <text class="detail-value">{{ item.contact || '-' }}</text> - </view> - <view class="detail-row"> - <text class="detail-label">鑱旂郴鐢佃瘽</text> - <text class="detail-value">{{ item.contactPhone || '-' }}</text> - </view> - <view class="detail-row"> - <text class="detail-label">鎷滆鐩殑</text> - <text class="detail-value">{{ item.purposeVisit || '-' }}</text> - </view> - <view class="detail-row"> - <text class="detail-label">鎷滆鏃堕棿</text> - <text class="detail-value">{{ item.purposeDate }}</text> - </view> - <view class="detail-row"> - <text class="detail-label">鎷滆鍦板潃</text> - <text class="detail-value">{{ item.visitAddress || '-' }}</text> - </view> - <view class="detail-row"> - <text class="detail-label">鎷滆浜�</text> - <text class="detail-value">{{ item.visitingPeople || '-' }}</text> - </view> - <view class="detail-row" v-if="item.remark"> - <text class="detail-label">澶囨敞</text> - <text class="detail-value">{{ item.remark }}</text> - </view> - </view> - - <!-- 鎸夐挳鍖哄煙 --> - <view class="action-buttons"> - <van-button - type="primary" - size="small" - class="action-btn" - @click="viewDetail(item.id)" - > - 鏌ョ湅璇︽儏 - </van-button> - <van-button - type="danger" - size="small" - plain - class="action-btn" - @click="deleteRecord(item.id)" - > - 鍒犻櫎 - </van-button> - </view> - </view> + <view class="header-center"> + <text class="page-title">瀹㈡埛鎷滆</text> </view> - </view> - - <view v-else class="no-data"> - <text>鏆傛棤鎷滆璁板綍</text> - </view> - - <!-- 娴姩鏂板鎸夐挳 --> - <view class="fab-button" @click="addVisit"> - <up-icon name="plus" size="24" color="#ffffff"></up-icon> </view> </view> </template> - -<script setup> -import { ref, onMounted } from 'vue' -import { onShow } from '@dcloudio/uni-app' -import PageHeader from '@/components/PageHeader.vue' -import { getVisitRecords, deleteVisitRecord } from '@/api/cooperativeOffice/clientVisit' -import useUserStore from "@/store/modules/user" -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant' -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} -import dayjs from "dayjs" - -const userStore = useUserStore() - -// 鎼滅储鍏抽敭璇� -const customerName = ref('') - -// 鎷滆璁板綍鏁版嵁 -const visitList = ref([]) - -// 杩斿洖涓婁竴椤� -const goBack = () => { - uni.navigateBack() -} - -// 鏍煎紡鍖栨棩鏈熸椂闂� -const formatDateTime = (dateStr) => { - if (!dateStr) return '' - return dayjs(dateStr).format("YYYY-MM-DD HH:mm") -} - -// 鏌ヨ鍒楄〃 -const getList = () => { - const params = { - current: -1, - size: -1, - customerName: customerName.value || undefined, - } - getVisitRecords(params) - .then((res) => { - visitList.value = res.records || res.data?.records || [] - }) - .catch(() => { - showToast('鑾峰彇鏁版嵁澶辫触') - }) -} - -// 鏂板鎷滆 - 璺宠浆鍒扮櫥璁伴〉闈� -const addVisit = () => { - uni.navigateTo({ - url: '/pages/cooperativeOffice/clientVisit/detail' - }) -} - -// 鏌ョ湅璇︽儏 -const viewDetail = (id) => { - if (!id) return - uni.navigateTo({ - url: `/pages/cooperativeOffice/clientVisit/detail?id=${id}` - }) -} - -// 鍒犻櫎璁板綍 -const deleteRecord = async (id) => { - if (!id) return - uni.showModal({ - title: '鎻愮ず', - content: '姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ嫓璁胯褰�, 鏄惁缁х画?', - success: async (res) => { - if (!res.confirm) return - try { - await deleteVisitRecord(id) - showToast('鍒犻櫎鎴愬姛') - getList() - } catch (e) { - showToast('鍒犻櫎澶辫触') - } +<script> +export default { + data() { + return { + title: '瀹㈡埛鎷滆' } - }) -} - -onMounted(() => { - getList() -}) - -onShow(() => { - getList() -}) -</script> - -<style scoped lang="scss"> -.u-divider { - margin: 0 !important; -} - -.client-visit-list { - 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; -} - -.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; + }, + methods: { + goBack() { + uni.navigateBack({ + delta: 1 + }) + } } } - -.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; -} - -.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%; +</script> +<style> +.page-header { display: flex; align-items: center; + justify-content: space-between; + padding: 10px 20px; + background-color: #f5f5f5; + position: relative; +} +.header-left { + display: flex; + align-items: center; +} +.header-center { + flex: 1; + display: flex; justify-content: center; - box-shadow: 0 4px 16px rgba(102, 126, 234, 0.3); - z-index: 1000; + align-items: center; + position: absolute; + left: 0; + right: 0; + pointer-events: none; +} +.page-title { + font-size: 18px; + font-weight: bold; + pointer-events: auto; } </style> diff --git a/src/pages/cooperativeOffice/collaborativeApproval/approve.vue b/src/pages/cooperativeOffice/collaborativeApproval/approve.vue index ced62d5..6011e7b 100644 --- a/src/pages/cooperativeOffice/collaborativeApproval/approve.vue +++ b/src/pages/cooperativeOffice/collaborativeApproval/approve.vue @@ -516,23 +516,4 @@ display: flex; justify-content: flex-end; } -</style> - -<template> - <!-- 瀹℃壒鎰忚 --> - <u-form-item label="瀹℃壒鎰忚" prop="approveComment" border-bottom> - <u-textarea - v-model="form.approveComment" - placeholder="璇疯緭鍏ュ鎵规剰瑙�" - :maxlength="200" - count - :autoHeight="true" - /> - </u-form-item> - - <!-- 鎿嶄綔鎸夐挳 --> - <view class="footer-btns"> - <u-button class="reject-btn" type="error" @click="handleReject">椹冲洖</u-button> - <u-button class="approve-btn" type="success" @click="handleApprove">閫氳繃</u-button> - </view> -</template> \ No newline at end of file +</style> \ No newline at end of file diff --git a/src/pages/cooperativeOffice/collaborativeApproval/contactSelect.vue b/src/pages/cooperativeOffice/collaborativeApproval/contactSelect.vue index 88282db..9259068 100644 --- a/src/pages/cooperativeOffice/collaborativeApproval/contactSelect.vue +++ b/src/pages/cooperativeOffice/collaborativeApproval/contactSelect.vue @@ -30,7 +30,7 @@ <view class="contact-details"> <text class="contact-name">{{ selectedContact.nickName }}</text> </view> - <u-icon name="close" size="16" color="#999" @click="clearSelected" /> + <van-icon name="cross" size="16" color="#999" @click="clearSelected" /> </view> </view> @@ -387,56 +387,5 @@ transform: scale(1.2); opacity: 0; } -} -</style> - -<style lang="scss"> -/* 鏇存柊鏍峰紡绫诲悕 */ -:deep(.u-radio) { - .u-radio__icon { - width: 20px; - height: 20px; - border: 2px solid #ddd; - border-radius: 50%; - background: #fff; - position: relative; - transition: all 0.2s; - - &::before { - content: ''; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%) scale(0); - width: 8px; - height: 8px; - background: #006cfb; - border-radius: 50%; - transition: transform 0.2s; - } - } - - &.u-radio--checked { - .u-radio__icon { - border-color: #006cfb; - background: #fff; - - &::before { - transform: translate(-50%, -50%) scale(1); - } - - &::after { - content: ''; - position: absolute; - top: -2px; - left: -2px; - right: -2px; - bottom: -2px; - border: 2px solid rgba(0, 108, 251, 0.2); - border-radius: 50%; - animation: ripple 0.6s ease-out; - } - } - } } </style> \ No newline at end of file diff --git a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue index 6fa0c13..f8ecb68 100644 --- a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue +++ b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue @@ -4,61 +4,73 @@ <!-- 琛ㄥ崟鍖哄煙 --> <view class="form-section"> - <u-form ref="formRef" @submit="submitForm" input-align="right" error-message-align="right"> - <u-cell-group style="margin-bottom: 16px;"> - <u-form-item label="鐢宠浜嬬敱" prop="approveReason" required> - <u-textarea - v-model="form.approveReason" - placeholder="璇疯緭鍏ョ敵璇蜂簨鐢�" - :maxlength="200" - count - :autoHeight="true" - /> - </u-form-item> - </u-cell-group> - <u-cell-group> - <u-form-item label="鐢宠閮ㄩ棬" prop="approveDeptName" required> - <u-input - v-model="form.approveDeptName" - readonly - placeholder="璇烽�夋嫨鐢宠閮ㄩ棬" - @click="showPicker = true" - /> - </u-form-item> - <u-form-item label="鐢宠浜�" prop="approveUserName" required> - <u-input - v-model="form.approveUserName" - placeholder="璇疯緭鍏ョ敵璇蜂汉" - readonly - /> - </u-form-item> - <u-popup v-model="showPicker" mode="bottom"> - <u-picker + <van-form ref="formRef" @submit="submitForm" :rules="rules" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> + <van-cell-group style="margin-bottom: 16px;"> + <van-field + v-model="form.approveReason" + name="approveReason" + rows="2" + autosize + label="鐢宠浜嬬敱" + type="textarea" + maxlength="200" + :rules="[{ required: true, message: '鐢宠浜嬬敱涓嶈兘涓虹┖' }]" + placeholder="璇疯緭鍏ョ敵璇蜂簨鐢�" + show-word-limit + required + /> + </van-cell-group> + <van-cell-group> + <van-field + v-model="form.approveDeptName" + readonly + name="picker" + label="鐢宠閮ㄩ棬" + placeholder="璇烽�夋嫨鐢宠閮ㄩ棬" + :rules="[{ required: true, message: '璇烽�夋嫨鐢宠閮ㄩ棬' }]" + @click="showPicker = true" + required + /> + <van-field + v-model="form.approveUserName" + name="taxPrice" + label="鐢宠浜�" + placeholder="璇疯緭鍏ョ敵璇蜂汉" + :rules="[{ required: true, message: '鐢宠浜轰笉鑳戒负绌�' }]" + required + readonly + /> + <van-popup + v-model:show="showPicker" + position="bottom" + > + <van-picker :columns="productOptions" - v-model="pickerValue" + :model-value="pickerValue" @confirm="onConfirm" @cancel="showPicker = false" /> - </u-popup> - <u-form-item label="鐢宠鏃ユ湡" prop="approveTime" required> - <u-input - v-model="form.approveTime" - placeholder="璇烽�夋嫨" - readonly - @click="showDatePicker" - /> - </u-form-item> - <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker - v-model="currentDate" - title="閫夋嫨鏃ユ湡" - @confirm="onDateConfirm" - @cancel="showDate = false" - /> - </u-popup> - </u-cell-group> - </u-form> + </van-popup> + <van-field + v-model="form.approveTime" + label="鐢宠鏃ユ湡" + placeholder="璇烽�夋嫨" + readonly + required + @click="showDatePicker" + :rules="[{ required: true, message: '璇烽�夋嫨鏉ユ鏃ユ湡' }]" + /> + <!-- 鏃ユ湡閫夋嫨鍣� --> + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker + v-model="currentDate" + title="閫夋嫨鏃ユ湡" + @confirm="onDateConfirm" + @cancel="showDate = false" + /> + </van-popup> + </van-cell-group> + </van-form> </view> <!-- 瀹℃牳娴佺▼鍖哄煙 --> <view class="approval-process"> @@ -86,13 +98,17 @@ </view> <view v-else class="add-approver-btn" @click="addApprover(stepIndex)"> <view class="add-circle">+</view> - <text class="add-text">娣诲姞瀹℃壒浜�</text> + <text class="add-label">閫夋嫨瀹℃壒浜�</text> </view> </view> + <view class="step-line" v-if="stepIndex < approverNodes.length - 1"></view> + <view class="delete-step-btn" v-if="approverNodes.length > 1" @click="removeApprovalStep(stepIndex)">鍒犻櫎鑺傜偣</view> </view> </view> - <u-button icon="plus" plain type="primary" style="width: 100%" @click="addApprovalStep">鏂板鑺傜偣</u-button> + <view class="add-step-btn"> + <van-button icon="plus" plain type="primary" style="width: 100%" @click="addApprovalStep">鏂板鑺傜偣</van-button> + </view> </view> <!-- 搴曢儴鎸夐挳 --> diff --git a/src/pages/cooperativeOffice/collaborativeApproval/index.vue b/src/pages/cooperativeOffice/collaborativeApproval/index.vue index 180b802..708be76 100644 --- a/src/pages/cooperativeOffice/collaborativeApproval/index.vue +++ b/src/pages/cooperativeOffice/collaborativeApproval/index.vue @@ -31,27 +31,8 @@ </view> <text class="item-id">{{ item.approveId }}</text> </view> - <!-- 瀹℃壒鐘舵�佹爣绛� --> - <u-tag :type="getTagClass(item.approveStatus)" size="medium">{{ formatReceiptType(item.approveStatus) }}</u-tag> - - <!-- 鎿嶄綔鎸夐挳 --> - <view class="action-buttons"> - <u-button - type="primary" - size="small" - class="action-btn" - @click="openDetail(item)" - > - 鏌ョ湅璇︽儏 - </u-button> - <u-button - type="success" - size="small" - class="action-btn" - @click="approve(item)" - > - 瀹℃壒 - </u-button> + <view class="item-tag"> + <van-tag :type="getTagClass(item.approveStatus)" size="medium">{{ formatReceiptType(item.approveStatus) }}</van-tag> </view> </view> <up-divider></up-divider> @@ -117,6 +98,7 @@ <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> @@ -479,4 +461,7 @@ .action-btn.approve { /* success 鏍峰紡鏉ヨ嚜缁勪欢锛岃繖閲屼繚鐣欓挬瀛愪互渚垮悗缁渶瑕佹墿灞� */ } + :deep(.van-floating-bubble) { + background: #ed8d05; + } </style> \ No newline at end of file diff --git a/src/pages/equipmentManagement/ledger/detail.vue b/src/pages/equipmentManagement/ledger/detail.vue index 9757730..97d76aa 100644 --- a/src/pages/equipmentManagement/ledger/detail.vue +++ b/src/pages/equipmentManagement/ledger/detail.vue @@ -1,132 +1,128 @@ <template> - <view class="equipment-detail"> + <view class="ledger-detail"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="璁惧鍙拌处璇︽儏" @back="goBack" /> + <PageHeader :title="operationType === 'edit' ? '缂栬緫璁惧鍙拌处' : '鏂板璁惧鍙拌处'" @back="goBack" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="sendForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <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-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="璁惧鍚嶇О" prop="deviceName" required border-bottom> - <u-input - v-model="form.deviceName" - placeholder="璇疯緭鍏ヨ澶囧悕绉�" - clearable - /> - </u-form-item> - <u-form-item label="瑙勬牸鍨嬪彿" prop="deviceModel" required border-bottom> - <u-input - v-model="form.deviceModel" - placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" - clearable - /> - </u-form-item> - <u-form-item label="璁惧缂栧彿" prop="deviceNumber" required border-bottom> - <u-input - v-model="form.deviceNumber" - placeholder="璇疯緭鍏ヨ澶囩紪鍙�" - clearable - /> - </u-form-item> - <u-form-item label="璐拱鏃ユ湡" prop="purchaseDate" required border-bottom> - <u-input - v-model="form.purchaseDate" - placeholder="璇烽�夋嫨璐拱鏃ユ湡" - readonly - @click="showDatePicker" - clearable - /> - </u-form-item> - <u-form-item label="璐拱浠锋牸" prop="purchasePrice" required border-bottom> - <u-input - v-model="form.purchasePrice" - type="number" - placeholder="璇疯緭鍏ヨ喘涔颁环鏍�" - clearable - /> - </u-form-item> - <u-form-item label="渚涘簲鍟�" prop="supplier" required border-bottom> - <u-input - v-model="form.supplier" - placeholder="璇疯緭鍏ヤ緵搴斿晢" - clearable - /> - </u-form-item> - <u-form-item label="浣跨敤閮ㄩ棬" prop="department" required border-bottom> - <u-input - v-model="form.department" - placeholder="璇疯緭鍏ヤ娇鐢ㄩ儴闂�" - clearable - /> - </u-form-item> - <u-form-item label="绋庣巼" prop="taxRate" required border-bottom> - <u-input - v-model="form.taxRate" - placeholder="璇烽�夋嫨绋庣巼" - readonly - @click="showTaxRatePicker" - clearable - /> - </u-form-item> - <u-form-item label="浣跨敤鐘舵��" prop="status" required border-bottom> - <u-input - v-model="form.status" - placeholder="璇疯緭鍏ヤ娇鐢ㄧ姸鎬�" - clearable - /> - </u-form-item> - <u-form-item label="澶囨敞" border-bottom> - <u-textarea - v-model="form.remark" - placeholder="璇疯緭鍏ュ娉�" - :maxlength="200" - count - :autoHeight="true" - /> - </u-form-item> - </u-cell-group> + <van-cell-group title="鍩烘湰淇℃伅" inset> + <van-field + v-model="form.deviceName" + label="璁惧鍚嶇О" + placeholder="璇疯緭鍏ヨ澶囧悕绉�" + :rules="formRules.deviceName" + required + clearable + /> + <van-field + v-model="form.deviceModel" + label="瑙勬牸鍨嬪彿" + placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" + :readonly="form.deviceModel != null && operationType === 'edit'" + :rules="formRules.deviceModel" + required + clearable + /> + <van-field + v-model="form.supplierName" + label="渚涘簲鍟�" + required + placeholder="璇疯緭鍏ヤ緵搴斿晢" + :rules="formRules.supplierName" + clearable + /> + <van-field + v-model="form.unit" + label="鍗曚綅" + required + placeholder="璇疯緭鍏ュ崟浣�" + :rules="formRules.unit" + clearable + /> + <van-field + v-model="form.taxRate" + required + label="绋庣巼(%)" + placeholder="璇烽�夋嫨" + readonly + :rules="formRules.taxRate" + @click="showTaxRatePicker" + clearable + /> + <van-field + v-model="form.number" + label="鏁伴噺" + required + type="number" + placeholder="璇疯緭鍏ユ暟閲�" + :rules="formRules.number" + @blur="mathNum" + clearable + /> + <van-field + v-model="form.taxIncludingPriceUnit" + label="鍚◣鍗曚环" + required + type="number" + placeholder="璇疯緭鍏ュ惈绋庡崟浠�" + :rules="formRules.taxIncludingPriceUnit" + @blur="mathNum" + clearable + /> + <van-field + v-model="form.taxIncludingPriceTotal" + label="鍚◣鎬讳环" + placeholder="鑷姩鐢熸垚" + readonly + /> + <van-field + v-model="form.unTaxIncludingPriceTotal" + label="涓嶅惈绋庢�讳环" + placeholder="鑷姩鐢熸垚" + readonly + /> + <van-field + v-model="form.createTime" + label="褰曞叆鏃ユ湡" + placeholder="璇烽�夋嫨" + readonly + @click="showDatePicker" + required + clearable + /> + </van-cell-group> <!-- 鎻愪氦鎸夐挳 --> <view class="footer-btns"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="sendForm" :loading="loading">淇濆瓨</u-button> + <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> - </u-form> + </van-form> <!-- 绋庣巼閫夋嫨鍣� --> - <u-popup v-model="showTaxRate" mode="bottom"> - <u-picker - v-model="taxRatePickerValue" + <van-popup v-model:show="showTaxRate" position="bottom"> + <van-picker + :model-value="taxRatePickerValue" :columns="taxRateOptions" @confirm="onTaxRateConfirm" @cancel="showTaxRate = false" /> - </u-popup> + </van-popup> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> </view> </template> <script setup> -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - import { ref, computed, onMounted } from 'vue'; import { onShow } from '@dcloudio/uni-app'; import PageHeader from '@/components/PageHeader.vue'; diff --git a/src/pages/equipmentManagement/ledger/index.vue b/src/pages/equipmentManagement/ledger/index.vue index 59efa72..0114c15 100644 --- a/src/pages/equipmentManagement/ledger/index.vue +++ b/src/pages/equipmentManagement/ledger/index.vue @@ -78,25 +78,25 @@ </view> </view> - <!-- 鎸夐挳鍖哄煙 - 鏇挎崲涓� uview-plus 鎸夐挳 --> + <!-- 鎸夐挳鍖哄煙锛屽弬鑰� invoiceLedger 鐨勬牱寮� --> <view class="action-buttons"> - <u-button + <van-button type="primary" size="small" class="action-btn" @click="edit(item.id)" > 缂栬緫 - </u-button> - <u-button - type="error" + </van-button> + <van-button + type="danger" size="small" plain class="action-btn" @click="deleteRow(item.id)" > 鍒犻櫎 - </u-button> + </van-button> </view> </view> </view> @@ -119,16 +119,7 @@ import PageHeader from '@/components/PageHeader.vue' import { getLedgerPage, delLedger } from '@/api/equipmentManagement/ledger' import useUserStore from "@/store/modules/user" -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} +import { showToast } from 'vant'; const userStore = useUserStore() @@ -339,7 +330,7 @@ color: #999; } -// 鎸夐挳鏍峰紡 +// 鎸夐挳鏍峰紡锛屽弬鑰� invoiceLedger .action-buttons { display: flex; gap: 12px; diff --git a/src/pages/equipmentManagement/repair/add.vue b/src/pages/equipmentManagement/repair/add.vue index e9a9dfb..d48202d 100644 --- a/src/pages/equipmentManagement/repair/add.vue +++ b/src/pages/equipmentManagement/repair/add.vue @@ -4,83 +4,88 @@ <PageHeader :title="operationType === 'edit' ? '缂栬緫鎶ヤ慨' : '鏂板鎶ヤ慨'" @back="goBack" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="sendForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <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-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="璁惧鍚嶇О" prop="deviceLedgerId" required> - <u-input - v-model="deviceNameText" - placeholder="璇烽�夋嫨璁惧鍚嶇О" - readonly - @click="showDevicePicker" - clearable - > - <template #suffix> - <u-icon name="scan" @click.stop="startScan" class="scan-icon" /> - </template> - </u-input> - </u-form-item> - <u-form-item label="瑙勬牸鍨嬪彿"> - <u-input - v-model="form.deviceModel" - placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" - readonly - clearable - /> - </u-form-item> - <u-form-item label="鎶ヤ慨鏃ユ湡" prop="repairTime" required> - <u-input - v-model="form.repairTime" - placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡" - readonly - @click="showDatePicker" - clearable - /> - </u-form-item> - <u-form-item label="鎶ヤ慨浜�" prop="repairName" required> - <u-input - v-model="form.repairName" - placeholder="璇疯緭鍏ユ姤淇汉" - clearable - /> - </u-form-item> - <u-form-item label="鏁呴殰鐜拌薄" prop="remark" required> - <u-textarea - v-model="form.remark" - placeholder="璇疯緭鍏ユ晠闅滅幇璞�" - :maxlength="200" - count - :autoHeight="true" - /> - </u-form-item> - </u-cell-group> + <van-cell-group title="鍩烘湰淇℃伅" inset> + <van-field + v-model="deviceNameText" + label="璁惧鍚嶇О" + placeholder="璇烽�夋嫨璁惧鍚嶇О" + :rules="formRules.deviceLedgerId" + required + readonly + @click="showDevicePicker" + clearable + > + <template #right-icon> + <van-icon name="scan" @click.stop="startScan" class="scan-icon" /> + </template> + </van-field> + <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"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="sendForm" :loading="loading">淇濆瓨</u-button> + <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> - </u-form> + </van-form> <!-- 璁惧閫夋嫨鍣� --> - <u-popup v-model="showDevice" mode="bottom"> - <u-picker - v-model="devicePickerValue" + <van-popup v-model:show="showDevice" position="bottom"> + <van-picker + :model-value="devicePickerValue" :columns="deviceColumns" @confirm="onDeviceConfirm" @cancel="showDevice = false" /> - </u-popup> + </van-popup> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> </view> </template> @@ -91,16 +96,7 @@ import { getDeviceLedger } from '@/api/equipmentManagement/ledger'; import { addRepair, editRepair, getRepairById } from '@/api/equipmentManagement/repair'; import dayjs from "dayjs"; -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} +import { showToast } from 'vant'; defineOptions({ name: "璁惧鎶ヤ慨琛ㄥ崟", diff --git a/src/pages/equipmentManagement/repair/index.vue b/src/pages/equipmentManagement/repair/index.vue index d4ce7be..0662172 100644 --- a/src/pages/equipmentManagement/repair/index.vue +++ b/src/pages/equipmentManagement/repair/index.vue @@ -33,38 +33,8 @@ <text class="item-id">璁惧鍚嶇О锛歿{ item.deviceName }}</text> </view> <view class="status-tag"> - <!-- 鏇挎崲鏍囩鍜屾寜閽� --> - <!-- 鐘舵�佹爣绛� --> - <u-tag v-if="item.status === 1" type="success">瀹岀粨</u-tag> - <u-tag v-if="item.status === 0" type="error">寰呯淮淇�</u-tag> - - <!-- 鎿嶄綔鎸夐挳 --> - <view class="action-buttons"> - <u-button - type="primary" - size="small" - class="action-btn" - @click="openForm('add')" - > - 鏂板鎶ヤ慨 - </u-button> - <u-button - type="warning" - size="small" - class="action-btn" - @click="openForm('edit', item)" - > - 缂栬緫 - </u-button> - <u-button - type="success" - size="small" - class="action-btn" - @click="maintain(item)" - > - 缁翠慨 - </u-button> - </view> + <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> @@ -138,9 +108,11 @@ </view> <!-- 娴姩姘旀场鎸夐挳 --> - <view class="fab-button" @click="addRepair"> - <up-icon name="plus" size="24" color="#ffffff"></up-icon> - </view> + <van-floating-bubble + axis="xy" + icon="plus" + @click="addRepair" + /> </view> </template> @@ -150,16 +122,7 @@ import PageHeader from '@/components/PageHeader.vue' import { getRepairPage, delRepair } from '@/api/equipmentManagement/repair' import useUserStore from "@/store/modules/user" -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} +import { showToast } from 'vant'; const userStore = useUserStore() diff --git a/src/pages/equipmentManagement/repair/maintain.vue b/src/pages/equipmentManagement/repair/maintain.vue index 9900220..64d08cb 100644 --- a/src/pages/equipmentManagement/repair/maintain.vue +++ b/src/pages/equipmentManagement/repair/maintain.vue @@ -1,55 +1,60 @@ <template> <view class="repair-maintain"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="璁惧缁翠慨" @back="goBack" /> + <PageHeader title="鏂板缁翠慨" @back="goBack" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="sendForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> - <!-- 缁翠慨淇℃伅 --> - <u-cell-group title="缁翠慨淇℃伅"> - <u-form-item label="瀹為檯缁翠慨浜�" prop="repairPerson" required border-bottom> - <u-input - v-model="form.repairPerson" - placeholder="璇疯緭鍏ュ疄闄呯淮淇汉" - clearable - /> - </u-form-item> - <u-form-item label="瀹為檯缁翠慨鏃ユ湡" prop="repairDate" required border-bottom> - <u-input - v-model="form.repairDate" - placeholder="璇烽�夋嫨瀹為檯缁翠慨鏃ユ湡" - readonly - @click="showDatePicker" - clearable - /> - </u-form-item> - <u-form-item label="缁翠慨缁撴灉" prop="repairResult" required border-bottom> - <u-textarea - v-model="form.repairResult" - placeholder="璇疯緭鍏ョ淮淇粨鏋�" - :maxlength="200" - count - :autoHeight="true" - /> - </u-form-item> - </u-cell-group> + <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"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="sendForm" :loading="loading">淇濆瓨</u-button> + <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> - </u-form> + </van-form> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> </view> </template> @@ -60,16 +65,7 @@ import { addMaintain } from '@/api/equipmentManagement/repair'; import useUserStore from "@/store/modules/user"; import dayjs from "dayjs"; -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} +import { showToast } from 'vant'; defineOptions({ name: "璁惧缁翠慨琛ㄥ崟", diff --git a/src/pages/equipmentManagement/upkeep/add.vue b/src/pages/equipmentManagement/upkeep/add.vue index fc6c5f7..82892ad 100644 --- a/src/pages/equipmentManagement/upkeep/add.vue +++ b/src/pages/equipmentManagement/upkeep/add.vue @@ -1,85 +1,75 @@ <template> <view class="upkeep-add"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="鏂板淇濆吇" @back="goBack" /> + <PageHeader :title="operationType === 'edit' ? '缂栬緫淇濆吇璁″垝' : '鏂板淇濆吇璁″垝'" @back="goBack" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="sendForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <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-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="璁惧鍚嶇О" prop="deviceName" required border-bottom> - <u-input - v-model="deviceNameText" - placeholder="璇烽�夋嫨璁惧鍚嶇О" - readonly - @click="showDevicePicker" - clearable - > - <template #suffix> - <u-icon name="scan" @click.stop="startScan" class="scan-icon" /> - </template> - </u-input> - </u-form-item> - <u-form-item label="瑙勬牸鍨嬪彿" border-bottom> - <u-input - v-model="form.deviceModel" - placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" - readonly - clearable - /> - </u-form-item> - <u-form-item label="淇濆吇鏃ユ湡" prop="upkeepDate" required border-bottom> - <u-input - v-model="form.upkeepDate" - placeholder="璇烽�夋嫨淇濆吇鏃ユ湡" - readonly - @click="showDatePicker" - clearable - /> - </u-form-item> - </u-cell-group> + <van-cell-group title="鍩烘湰淇℃伅" inset> + <van-field + v-model="deviceNameText" + label="璁惧鍚嶇О" + placeholder="璇烽�夋嫨璁惧鍚嶇О" + :rules="formRules.deviceLedgerId" + required + readonly + @click="showDevicePicker" + clearable + > + <template #right-icon> + <van-icon name="scan" @click.stop="startScan" class="scan-icon" /> + </template> + </van-field> + <van-field + v-model="form.deviceModel" + label="瑙勬牸鍨嬪彿" + placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" + readonly + clearable + /> + <van-field + v-model="form.maintenancePlanTime" + label="璁″垝淇濆吇鏃ユ湡" + placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" + :rules="formRules.maintenancePlanTime" + required + readonly + @click="showDatePicker" + clearable + /> + </van-cell-group> <!-- 鎻愪氦鎸夐挳 --> <view class="footer-btns"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="sendForm" :loading="loading">淇濆瓨</u-button> + <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> - </u-form> + </van-form> <!-- 璁惧閫夋嫨鍣� --> - <u-popup v-model="showDevice" mode="bottom"> - <u-picker - v-model="devicePickerValue" + <van-popup v-model:show="showDevice" position="bottom"> + <van-picker + :model-value="devicePickerValue" :columns="deviceColumns" @confirm="onDeviceConfirm" @cancel="showDevice = false" /> - </u-popup> + </van-popup> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> </view> </template> <script setup> -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - import { ref, computed, onMounted, onUnmounted } from 'vue'; import { onShow } from '@dcloudio/uni-app'; import PageHeader from '@/components/PageHeader.vue'; diff --git a/src/pages/equipmentManagement/upkeep/index.vue b/src/pages/equipmentManagement/upkeep/index.vue index 028f542..9ae34cd 100644 --- a/src/pages/equipmentManagement/upkeep/index.vue +++ b/src/pages/equipmentManagement/upkeep/index.vue @@ -33,46 +33,8 @@ <text class="item-id">璁惧鍚嶇О锛歿{ item.deviceName }}</text> </view> <view class="status-tag"> - <!-- 鏇挎崲鏍囩鍜屾寜閽� --> - <!-- 鐘舵�佹爣绛� --> - <u-tag v-if="item.status === 1" type="success">瀹岀粨</u-tag> - <u-tag v-if="item.status === 0" type="error">寰呬繚鍏�</u-tag> - - <!-- 淇濆吇缁撴灉鏍囩 --> - <u-tag v-if="item.maintenanceResult === 1" type="success"> - 瀹屽ソ - </u-tag> - <u-tag v-if="item.maintenanceResult === 0" type="error"> - 缁翠慨 - </u-tag> - - <!-- 鎿嶄綔鎸夐挳 --> - <view class="action-buttons"> - <u-button - type="primary" - size="small" - class="action-btn" - @click="openForm('add')" - > - 鏂板淇濆吇 - </u-button> - <u-button - type="warning" - size="small" - class="action-btn" - @click="openForm('edit', item)" - > - 缂栬緫 - </u-button> - <u-button - type="success" - size="small" - class="action-btn" - @click="maintain(item)" - > - 淇濆吇 - </u-button> - </view> + <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> @@ -152,10 +114,13 @@ <view v-else class="no-data"> <text>鏆傛棤璁惧淇濆吇鏁版嵁</text> </view> - - <view class="fab-button" @click="addPlan"> - <up-icon name="plus" size="24" color="#ffffff"></up-icon> - </view> + + <!-- 娴姩姘旀场鎸夐挳 --> + <van-floating-bubble + axis="xy" + icon="plus" + @click="addPlan" + /> </view> </template> @@ -165,15 +130,7 @@ import PageHeader from '@/components/PageHeader.vue' import { getUpkeepPage, delUpkeep } from '@/api/equipmentManagement/upkeep' import useUserStore from "@/store/modules/user" -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} +import { showToast } from 'vant'; import dayjs from "dayjs" const userStore = useUserStore() diff --git a/src/pages/equipmentManagement/upkeep/maintain.vue b/src/pages/equipmentManagement/upkeep/maintain.vue index 28b7186..c70ec14 100644 --- a/src/pages/equipmentManagement/upkeep/maintain.vue +++ b/src/pages/equipmentManagement/upkeep/maintain.vue @@ -4,62 +4,65 @@ <PageHeader title="鏂板淇濆吇" @back="goBack" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="sendForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <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-cell-group title="淇濆吇淇℃伅"> - <u-form-item label="瀹為檯淇濆吇浜�" prop="maintenanceActuallyName" required> - <u-input - v-model="form.maintenanceActuallyName" - placeholder="璇疯緭鍏ュ疄闄呬繚鍏讳汉" - clearable - /> - </u-form-item> - <u-form-item label="瀹為檯淇濆吇鏃ユ湡" prop="maintenanceActuallyTime" required> - <u-input - v-model="form.maintenanceActuallyTime" - placeholder="璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡" - readonly - @click="showDatePicker" - clearable - /> - </u-form-item> - <u-form-item label="淇濆吇缁撴灉" prop="maintenanceResult" required> - <u-input - v-model="maintenanceResultText" - placeholder="璇烽�夋嫨淇濆吇缁撴灉" - readonly - @click="showResultPicker" - clearable - /> - </u-form-item> - </u-cell-group> + <van-cell-group title="淇濆吇淇℃伅" inset> + <van-field + v-model="form.maintenanceActuallyName" + label="瀹為檯淇濆吇浜�" + placeholder="璇疯緭鍏ュ疄闄呬繚鍏讳汉" + :rules="formRules.maintenanceActuallyName" + required + clearable + /> + <van-field + v-model="form.maintenanceActuallyTime" + label="瀹為檯淇濆吇鏃ユ湡" + placeholder="璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡" + :rules="formRules.maintenanceActuallyTime" + required + readonly + @click="showDatePicker" + clearable + /> + <van-field + v-model="maintenanceResultText" + label="淇濆吇缁撴灉" + placeholder="璇烽�夋嫨淇濆吇缁撴灉" + :rules="formRules.maintenanceResult" + required + readonly + @click="showResultPicker" + clearable + /> + </van-cell-group> <!-- 鎻愪氦鎸夐挳 --> <view class="footer-btns"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="sendForm" :loading="loading">淇濆瓨</u-button> + <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> - </u-form> + </van-form> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> <!-- 淇濆吇缁撴灉閫夋嫨鍣� --> - <u-popup v-model="showResult" mode="bottom"> - <u-picker - v-model="resultPickerValue" + <van-popup v-model:show="showResult" position="bottom"> + <van-picker + :model-value="resultPickerValue" :columns="resultColumns" @confirm="onResultConfirm" @cancel="showResult = false" /> - </u-popup> + </van-popup> </view> </template> @@ -70,16 +73,7 @@ import { addMaintenance } from '@/api/equipmentManagement/upkeep'; import useUserStore from "@/store/modules/user"; import dayjs from "dayjs"; -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant'; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} +import { showToast } from 'vant'; defineOptions({ name: "璁惧淇濆吇琛ㄥ崟", diff --git a/src/pages/login.vue b/src/pages/login.vue index 485f53a..d970266 100644 --- a/src/pages/login.vue +++ b/src/pages/login.vue @@ -101,7 +101,8 @@ } function getUserLoginFacotryList() { - userLoginFacotryList({userName:loginForm.value.username}).then(res => { + if(loginForm.value.username){ + userLoginFacotryList({userName:loginForm.value.username}).then(res => { // 妫�鏌es.data鏄惁涓烘暟缁� if (res.data && Array.isArray(res.data)) { // 閲嶆柊缁勮鏁版嵁鏍煎紡锛歞eptId鍙樻垚id锛宒eptName鍙樻垚name @@ -117,6 +118,9 @@ modal.msgError('鑾峰彇鍏徃鍒楄〃澶辫触:', error) factoryList.value = [] }) + }else { + factoryList.value = [] + } } async function handleLogin() { diff --git a/src/pages/procurementManagement/invoiceEntry/add.vue b/src/pages/procurementManagement/invoiceEntry/add.vue index 54a3ede..2fdcb2b 100644 --- a/src/pages/procurementManagement/invoiceEntry/add.vue +++ b/src/pages/procurementManagement/invoiceEntry/add.vue @@ -540,141 +540,3 @@ } } </style> - -<template> - <view class="invoice-add"> - <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="鏂板鍙戠エ" @back="goBack" /> - - <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="submitForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> - <!-- 鍩烘湰淇℃伅 --> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閲囪喘鍚堝悓鍙�" prop="contractNo" required border-bottom> - <u-input v-model="form.contractNo" placeholder="璇疯緭鍏ラ噰璐悎鍚屽彿" clearable /> - </u-form-item> - <u-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName" required border-bottom> - <u-input v-model="form.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" clearable /> - </u-form-item> - <u-form-item label="鍙戠エ鍙�" prop="invoiceNo" required border-bottom> - <u-input v-model="form.invoiceNo" placeholder="璇疯緭鍏ュ彂绁ㄥ彿" clearable /> - </u-form-item> - <u-form-item label="鍙戠エ閲戦" prop="invoiceAmount" required border-bottom> - <u-input v-model="form.invoiceAmount" type="number" placeholder="璇疯緭鍏ュ彂绁ㄩ噾棰�" clearable /> - </u-form-item> - <u-form-item label="绋庣巼" prop="taxRate" required border-bottom> - <u-input v-model="form.taxRate" placeholder="璇疯緭鍏ョ◣鐜�" clearable /> - </u-form-item> - <u-form-item label="寮�绁ㄦ棩鏈�" prop="issueDate" required border-bottom> - <u-input v-model="form.issueDate" placeholder="璇烽�夋嫨寮�绁ㄦ棩鏈�" readonly @click="showIssueDatePicker = true" clearable /> - </u-form-item> - <u-form-item label="褰曞叆浜�" border-bottom> - <u-input v-model="form.recorder" placeholder="鑷姩濉厖" readonly /> - </u-form-item> - <u-form-item label="鍒涘缓鏃堕棿" border-bottom> - <u-input v-model="form.createTime" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" readonly @click="showCreateTimePicker = true" clearable /> - </u-form-item> - </u-cell-group> - - <!-- 浜у搧淇℃伅 --> - <view class="product-section" v-if="!productData || productData.length === 0"> - <u-empty description="鏆傛棤浜у搧鏁版嵁" /> - </view> - - <!-- 浜у搧鍒楄〃 --> - <view class="product-list" v-if="productData && productData.length > 0"> - <view class="product-card" v-for="(product, idx) in productData" :key="idx"> - <view class="product-header"> - <view class="product-title"> - <u-icon name="file-text" color="#2979ff" size="15" /> - <text class="product-name">浜у搧 {{ idx + 1 }}</text> - </view> - </view> - - <!-- 浜у搧淇℃伅琛ㄥ崟 --> - <view class="product-form"> - <u-form-item label="浜у搧鍚嶇О" border-bottom> - <u-input v-model="product.productName" placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�" /> - </u-form-item> - <u-form-item label="瑙勬牸鍨嬪彿" border-bottom> - <u-input v-model="product.specification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" /> - </u-form-item> - <u-form-item label="鍗曚綅" border-bottom> - <u-input v-model="product.unit" placeholder="璇疯緭鍏ュ崟浣�" /> - </u-form-item> - <u-form-item label="鏁伴噺" border-bottom> - <u-input v-model="product.quantity" type="number" placeholder="璇疯緭鍏ユ暟閲�" /> - </u-form-item> - <u-form-item label="鍗曚环" border-bottom> - <u-input v-model="product.unitPrice" type="number" placeholder="璇疯緭鍏ュ崟浠�" /> - </u-form-item> - <u-form-item label="閲戦" border-bottom> - <u-input v-model="product.amount" type="number" placeholder="璇疯緭鍏ラ噾棰�" /> - </u-form-item> - <u-form-item label="绋庣巼" border-bottom> - <u-input v-model="product.taxRate" placeholder="璇疯緭鍏ョ◣鐜�" /> - </u-form-item> - <u-form-item label="绋庨" border-bottom> - <u-input v-model="product.taxAmount" type="number" placeholder="璇疯緭鍏ョ◣棰�" /> - </u-form-item> - <u-form-item label="鍚◣閲戦" border-bottom> - <u-input v-model="product.totalAmount" type="number" placeholder="璇疯緭鍏ュ惈绋庨噾棰�" /> - </u-form-item> - <u-form-item label="澶囨敞" border-bottom> - <u-textarea v-model="product.remark" placeholder="璇疯緭鍏ュ娉�" :maxlength="200" count :autoHeight="true" /> - </u-form-item> - </view> - </view> - </view> - - <!-- 鎻愪氦鎸夐挳 --> - <view class="footer-btns"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="submitForm">淇濆瓨</u-button> - </view> - </u-form> - - <!-- 寮�绁ㄦ棩鏈熼�夋嫨鍣� --> - <u-popup v-model="showIssueDatePicker" mode="bottom"> - <u-datetime-picker - v-model="issueDateValue" - title="閫夋嫨寮�绁ㄦ棩鏈�" - @confirm="onIssueDateConfirm" - @cancel="showIssueDatePicker = false" - /> - </u-popup> - - <!-- 鍒涘缓鏃堕棿閫夋嫨鍣� --> - <u-popup v-model="showCreateTimePicker" mode="bottom"> - <u-datetime-picker - v-model="createTimeValue" - title="閫夋嫨鍒涘缓鏃堕棿" - @confirm="onCreateTimeConfirm" - @cancel="showCreateTimePicker = false" - /> - </u-popup> - </view> -</template> - -<script setup> -// 鏇挎崲 Vant 鐨� toast 鏂规硶 -// import { showToast, showLoadingToast, closeToast } from 'vant' - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showLoadingToast = (message) => { - uni.showLoading({ - title: message || '鍔犺浇涓�...' - }) -} - -const closeToast = () => { - uni.hideLoading() -} -</script> diff --git a/src/pages/procurementManagement/paymentEntry/add.vue b/src/pages/procurementManagement/paymentEntry/add.vue index 1b65455..4c83048 100644 --- a/src/pages/procurementManagement/paymentEntry/add.vue +++ b/src/pages/procurementManagement/paymentEntry/add.vue @@ -4,137 +4,115 @@ <PageHeader title="鏂板浠樻" @back="onClickLeft" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="onSubmit" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <van-form @submit="onSubmit" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> <!-- 鍩烘湰淇℃伅 --> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閲囪喘鍚堝悓鍙�" border-bottom> - <u-input - v-model="form.purchaseContractNumber" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="閿�鍞悎鍚屽彿" border-bottom> - <u-input - v-model="form.salesContractNo" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="渚涘簲鍟嗗悕绉�" border-bottom> - <u-input - v-model="form.supplierName" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="鍙戠エ鍙�" border-bottom> - <u-input - v-model="form.invoiceNumber" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="鍙戠エ閲戦(鍏�)" border-bottom> - <u-input - v-model="form.invoiceAmount" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <view class="tip-text">寰呬粯娆鹃噾棰濓細{{ currentNoReceiptAmount }} 鍏�</view> - <u-form-item label="鏈浠樻閲戦" prop="currentPaymentAmount" required border-bottom> - <u-input - v-model="form.currentPaymentAmount" - type="number" - placeholder="璇疯緭鍏�" - @blur="changeNum" - clearable - /> - </u-form-item> - <u-form-item label="浠樻褰㈠紡" prop="paymentMethod" required border-bottom> - <u-input - v-model="form.paymentMethod" - placeholder="璇烽�夋嫨" - readonly - @click="showPaymentTypePicker" - /> - </u-form-item> - <u-form-item label="浠樻鏃ユ湡" prop="paymentDate" required border-bottom> - <u-input - v-model="form.paymentDate" - placeholder="璇烽�夋嫨" - readonly - @click="showDatePicker" - /> - </u-form-item> - <u-form-item label="鐧昏浜�" border-bottom> - <u-input - v-model="form.registrant" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="鐧昏鏃ユ湡" prop="registrationtDate" required border-bottom> - <u-input - v-model="form.registrationtDate" - placeholder="璇烽�夋嫨" - readonly - /> - </u-form-item> - </u-cell-group> + <van-cell-group title="鍩烘湰淇℃伅" inset> + <van-field + v-model="form.purchaseContractNumber" + label="閲囪喘鍚堝悓鍙�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.salesContractNo" + label="閿�鍞悎鍚屽彿" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.supplierName" + label="渚涘簲鍟嗗悕绉�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.invoiceNumber" + label="鍙戠エ鍙�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.invoiceAmount" + label="鍙戠エ閲戦(鍏�)" + placeholder="鑷姩濉厖" + readonly + /> + <view class="tip-text">寰呬粯娆鹃噾棰濓細{{ currentNoReceiptAmount }} 鍏�</view> + <van-field + v-model="form.currentPaymentAmount" + label="鏈浠樻閲戦" + type="number" + placeholder="璇疯緭鍏�" + @blur="changeNum" + :rules="[{ required: true, message: '璇疯緭鍏ヤ粯娆鹃噾棰�' }]" + clearable + /> + <van-field + v-model="form.paymentMethod" + label="浠樻褰㈠紡" + placeholder="璇烽�夋嫨" + readonly + @click="showPaymentTypePicker" + :rules="[{ required: true, message: '璇烽�夋嫨浠樻褰㈠紡' }]" + /> + <van-field + v-model="form.paymentDate" + label="浠樻鏃ユ湡" + placeholder="璇烽�夋嫨" + readonly + @click="showDatePicker" + :rules="[{ required: true, message: '璇烽�夋嫨鏉ユ鏃ユ湡' }]" + /> + <van-field + v-model="form.registrant" + label="鐧昏浜�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.registrationtDate" + label="鐧昏鏃ユ湡" + placeholder="璇烽�夋嫨" + readonly + :rules="[{ required: true, message: '璇烽�夋嫨鏉ユ鏃ユ湡' }]" + /> + </van-cell-group> <!-- 鎻愪氦鎸夐挳 --> <view class="footer-btns"> - <u-button class="cancel-btn" @click="onClickLeft">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="onSubmit" :loading="loading">淇濆瓨</u-button> + <van-button class="cancel-btn" @click="onClickLeft">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit" :loading="loading">淇濆瓨</van-button> </view> - </u-form> + </van-form> <!-- 浠樻鏂瑰紡閫夋嫨鍣� --> - <u-popup v-model="showPaymentType" mode="bottom"> - <u-picker - v-model="pickerValue" + <van-popup v-model:show="showPaymentType" position="bottom"> + <van-picker + :model-value="pickerValue" :columns="receipt_payment_type" @confirm="onPaymentTypeConfirm" @cancel="showPaymentType = false" /> - </u-popup> + </van-popup> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> </view> </template> <script setup> import { ref, onMounted, computed } from 'vue' import useUserStore from '@/store/modules/user' -// 鏇挎崲 Vant 鐨� toast 鍜� notify -// import { showToast, showNotify } from 'vant' +import { showToast, showNotify } from 'vant' import { useDict } from '@/utils/dict' import {paymentRegistrationAdd} from "@/api/procurementManagement/paymentEntry"; - -// 鏇挎崲 toast 鍜� notify 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showNotify = ({ type, message }) => { - uni.showToast({ - title: message, - icon: type === 'warning' ? 'none' : 'success' - }) -} const userStore = useUserStore() diff --git a/src/pages/procurementManagement/paymentEntry/edit.vue b/src/pages/procurementManagement/paymentEntry/edit.vue index ba0415f..082c945 100644 --- a/src/pages/procurementManagement/paymentEntry/edit.vue +++ b/src/pages/procurementManagement/paymentEntry/edit.vue @@ -1,83 +1,94 @@ <template> - <view class="payment-edit"> - <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="缂栬緫浠樻" @back="onClickLeft" /> - - <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="onSubmit" ref="formRef" label-width="110" input-align="right" error-message-align="right"> - <!-- 鍩烘湰淇℃伅 --> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閲囪喘鍚堝悓鍙�" border-bottom> - <u-input v-model="form.contractNo" placeholder="鑷姩濉厖" readonly /> - </u-form-item> - <u-form-item label="渚涘簲鍟嗗悕绉�" border-bottom> - <u-input v-model="form.supplierName" placeholder="鑷姩濉厖" readonly /> - </u-form-item> - <u-form-item label="鍙戠エ鍙�" border-bottom> - <u-input v-model="form.invoiceNo" placeholder="鑷姩濉厖" readonly /> - </u-form-item> - <u-form-item label="鍙戠エ閲戦(鍏�)" border-bottom> - <u-input v-model="form.invoiceAmount" placeholder="鑷姩濉厖" readonly /> - </u-form-item> - <u-form-item label="鏈浠樻閲戦" prop="paymentAmount" required border-bottom> - <u-input v-model="form.paymentAmount" type="number" placeholder="璇疯緭鍏�" @blur="changeNum" clearable /> - </u-form-item> - <u-form-item label="浠樻褰㈠紡" prop="paymentType" required border-bottom> - <u-input v-model="form.paymentType" placeholder="璇烽�夋嫨" readonly @click="showPaymentTypePicker" /> - </u-form-item> - <u-form-item label="浠樻鏃ユ湡" prop="paymentDate" required border-bottom> - <u-input v-model="form.paymentDate" placeholder="璇烽�夋嫨" readonly @click="showDatePicker" /> - </u-form-item> - </u-cell-group> - - <!-- 鎻愪氦鎸夐挳 --> - <view class="footer-btns"> - <u-button class="cancel-btn" @click="onClickLeft">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="onSubmit" :loading="loading">淇濆瓨</u-button> - </view> - </u-form> + <view class="account-detail"> + <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> + <PageHeader title="鏂板浠樻" @back="onClickLeft" /> + + <!-- 琛ㄥ崟鍐呭 --> + <van-form @submit="onSubmit" 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.purchaseContractNumber" + label="閲囪喘鍚堝悓鍙�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.supplierName" + label="渚涘簲鍟嗗悕绉�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.invoiceNumber" + label="鍙戠エ鍙�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.invoiceAmount" + label="鍙戠エ閲戦(鍏�)" + placeholder="鑷姩濉厖" + readonly + /> + <view class="tip-text">寰呬粯娆鹃噾棰濓細{{ currentNoReceiptAmount }} 鍏�</view> + <van-field + v-model="form.currentPaymentAmount" + label="鏈浠樻閲戦" + type="number" + placeholder="璇疯緭鍏�" + @blur="changeNum" + :rules="[{ required: true, message: '璇疯緭鍏ヤ粯娆鹃噾棰�' }]" + clearable + /> + <van-field + v-model="form.paymentMethod" + label="浠樻褰㈠紡" + placeholder="璇烽�夋嫨" + readonly + @click="showPaymentTypePicker" + :rules="[{ required: true, message: '璇烽�夋嫨浠樻褰㈠紡' }]" + /> + <van-field + v-model="form.paymentDate" + label="浠樻鏃ユ湡" + placeholder="璇烽�夋嫨" + readonly + @click="showDatePicker" + :rules="[{ required: true, message: '璇烽�夋嫨鏉ユ鏃ユ湡' }]" + /> + </van-cell-group> + + <!-- 鎻愪氦鎸夐挳 --> + <view class="footer-btns"> + <van-button class="cancel-btn" @click="onClickLeft">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit" :loading="loading">淇濆瓨</van-button> + </view> + </van-form> - <!-- 浠樻鏂瑰紡閫夋嫨鍣� --> - <u-popup v-model="showPaymentType" mode="bottom"> - <u-picker - v-model="pickerValue" - :columns="paymentTypeOptions" - @confirm="onPaymentTypeConfirm" - @cancel="showPaymentType = false" - /> - </u-popup> + <!-- 浠樻鏂瑰紡閫夋嫨鍣� --> + <van-popup v-model:show="showPaymentType" position="bottom"> + <van-picker + :model-value="pickerValue" + :columns="receipt_payment_type" + @confirm="onPaymentTypeConfirm" + @cancel="showPaymentType = false" + /> + </van-popup> - <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker - v-model="currentDate" - title="閫夋嫨鏃ユ湡" - @confirm="onDateConfirm" - @cancel="showDate = false" - /> - </u-popup> - </view> + <!-- 鏃ユ湡閫夋嫨鍣� --> + <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> -// 鏇挎崲 Vant 鐨� toast 鍜� notify -// import { showToast, showNotify } from 'vant' - -// 鏇挎崲 toast 鍜� notify 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showNotify = ({ type, message }) => { - uni.showToast({ - title: message, - icon: type === 'warning' ? 'none' : 'success' - }) -} - import { ref, onMounted, computed } from 'vue' import { receiptPaymentSaveOrUpdate, invoiceInfo } from '@/api/salesManagement/receiptPayment' import useUserStore from '@/store/modules/user' diff --git a/src/pages/procurementManagement/paymentEntry/index.vue b/src/pages/procurementManagement/paymentEntry/index.vue index b3424c8..6083918 100644 --- a/src/pages/procurementManagement/paymentEntry/index.vue +++ b/src/pages/procurementManagement/paymentEntry/index.vue @@ -15,14 +15,14 @@ /> </view> <view class="filter-button" @click="getList"> - <u-icon name="search" size="24" color="#999"></u-icon> + <up-icon name="search" size="24" color="#999"></up-icon> </view> </view> <!-- 绛涢�夊紑鍏� --> <view class="switch-row"> <text class="switch-label">涓嶆樉绀哄緟浠樻涓�0</text> - <u-switch v-model="searchForm.status" @change="getList" size="18"/> + <van-switch v-model="searchForm.status" @change="getList" size="18"/> </view> </view> @@ -35,12 +35,12 @@ <view class="item-header"> <view class="item-left"> <view class="document-icon"> - <u-icon name="file-text" size="16" color="#ffffff"></u-icon> + <up-icon name="file-text" size="16" color="#ffffff"></up-icon> </view> <text class="item-id">{{ item.purchaseContractNumber }}</text> </view> </view> - <u-divider></u-divider> + <up-divider></up-divider> <view class="item-details"> <view class="detail-row"> <text class="detail-label">閿�鍞悎鍚屽彿</text> @@ -70,7 +70,7 @@ <!-- 鎿嶄綔鎸夐挳 --> <view class="action-buttons"> - <u-button + <van-button type="primary" size="small" class="action-btn" @@ -78,7 +78,7 @@ @click="openForm('add', item)" > 鏂板浠樻 - </u-button> + </van-button> </view> </view> </view> @@ -94,18 +94,9 @@ <script setup> import { ref } from 'vue' import useUserStore from '@/store/modules/user' -// 鏇挎崲 Vant 鐨� toast -// import { showToast } from 'vant' +import { showToast } from 'vant' import {onShow} from "@dcloudio/uni-app"; import {invoiceListPage} from "@/api/procurementManagement/procurementInvoiceLedger"; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} // 鍝嶅簲寮忔暟鎹� const tableData = ref([]) diff --git a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue index d1ad85c..ec31d69 100644 --- a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue +++ b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue @@ -3,68 +3,53 @@ <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> <PageHeader title="缂栬緫鏉ョエ鍙拌处" @back="goBack" /> - <u-form @submit="submitForm" ref="formRef" label-width="120" input-align="right" error-message-align="right"> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閲囪喘鍚堝悓鍙�" border-bottom> - <u-input v-model="form.purchaseContractNumber" readonly /> - </u-form-item> - <u-form-item label="閿�鍞悎鍚屽彿" border-bottom> - <u-input v-model="form.salesContractNo" readonly /> - </u-form-item> - <u-form-item label="鍚◣鍗曚环(鍏�)" border-bottom> - <u-input v-model="form.taxInclusiveUnitPrice" readonly /> - </u-form-item> - <u-form-item label="鍒涘缓鏃堕棿" border-bottom> - <u-input v-model="form.createdAt" readonly /> - </u-form-item> - <u-form-item label="鍙戠エ鍙�" border-bottom> - <u-input v-model="form.invoiceNumber" placeholder="璇疯緭鍏�" readonly /> - </u-form-item> - <u-form-item label="鏉ョエ鏁�" prop="ticketsNum" required border-bottom> - <u-input v-model="form.ticketsNum" type="number" placeholder="璇疯緭鍏�" @change="inputTicketsNum"/> - </u-form-item> - <u-form-item label="鏈鏉ョエ閲戦(鍏�)" prop="ticketsAmount" required border-bottom> - <u-input v-model="form.ticketsAmount" type="number" placeholder="璇疯緭鍏�" @change="inputTicketsAmount"/> - </u-form-item> + <van-form @submit="submitForm" ref="formRef" label-width="120px" 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.purchaseContractNumber" label="閲囪喘鍚堝悓鍙�" readonly /> + <van-field v-model="form.salesContractNo" label="閿�鍞悎鍚屽彿" readonly /> + <van-field v-model="form.taxInclusiveUnitPrice" label="鍚◣鍗曚环(鍏�)" readonly /> + <van-field v-model="form.createdAt" label="鍒涘缓鏃堕棿" readonly /> + <van-field v-model="form.invoiceNumber" label="鍙戠エ鍙�" placeholder="璇疯緭鍏�" readonly /> + <van-field v-model="form.ticketsNum" label="鏉ョエ鏁�" type="number" placeholder="璇疯緭鍏�" required :rules="[{ required: true, message: '璇疯緭鍏ユ潵绁ㄦ暟' }]" @change="inputTicketsNum"/> + <van-field v-model="form.ticketsAmount" label="鏈鏉ョエ閲戦(鍏�)" type="number" placeholder="璇疯緭鍏�" required :rules="[{ required: true, message: '璇疯緭鍏ユ湰娆℃潵绁ㄩ噾棰�' }]" @change="inputTicketsAmount"/> <view class="tip-text">鏈潵绁ㄦ暟锛歿{ formatAmount(form.futureTickets) }} 鍏�</view> - </u-cell-group> +<!-- <van-field v-model="form.invoicePerson" label="鏈潵绁ㄦ暟" readonly />--> + </van-cell-group> + +<!-- <van-cell-group title="闄勪欢鏉愭枡锛堜粎鏀寔 pdf锛�" inset>--> +<!-- <van-uploader--> +<!-- accept=".pdf"--> +<!-- multiple--> +<!-- :after-read="afterReadUpload"--> +<!-- :before-read="beforeReadPdf"--> +<!-- >--> +<!-- <van-button class="upload-btn" icon="plus" type="primary" block>涓婁紶鏂囦欢</van-button>--> +<!-- </van-uploader>--> +<!-- <view class="uploaded-list" v-if="fileList.length">--> +<!-- <view class="uploaded-item" v-for="(f, idx) in fileList" :key="idx">--> +<!-- <text class="file-name">{{ f.name || getFileNameFromUrl(f.url) }}</text>--> +<!-- <van-button size="mini" type="danger" plain @click="removeUploaded(idx)">绉婚櫎</van-button>--> +<!-- </view>--> +<!-- </view>--> +<!-- </van-cell-group>--> <view class="footer-btns"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="submitForm">淇濆瓨</u-button> + <van-button class="cancel-btn" @click="goBack">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit">淇濆瓨</van-button> </view> - </u-form> + </van-form> </view> </template> <script setup> import { ref, onMounted } from 'vue' -// 鏇挎崲 Vant 鐨� toast 鏂规硶 -// import { showToast, showLoadingToast, closeToast } from 'vant' +import { showToast, showLoadingToast, closeToast } from 'vant' import dayjs from 'dayjs' import useUserStore from '@/store/modules/user' import { getToken } from '@/utils/auth' import { invoiceLedgerSaveOrUpdate } from '@/api/salesManagement/invoiceLedger.js' import config from '@/config.js' import {getProductRecordById, updateRegistration} from "@/api/procurementManagement/procurementInvoiceLedger"; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showLoadingToast = (message) => { - uni.showLoading({ - title: message || '鍔犺浇涓�...' - }) -} - -const closeToast = () => { - uni.hideLoading() -} const userStore = useUserStore() diff --git a/src/pages/procurementManagement/procurementLedger/detail.vue b/src/pages/procurementManagement/procurementLedger/detail.vue index 9292d1d..52aa35c 100644 --- a/src/pages/procurementManagement/procurementLedger/detail.vue +++ b/src/pages/procurementManagement/procurementLedger/detail.vue @@ -4,57 +4,58 @@ <PageHeader title="鍙拌处璇︽儏" @back="goBack" /> <!-- 琛ㄥ崟鍖哄煙 --> - <u-form @submit="onSubmit" label-width="110" input-align="right" style="margin-top: 10px" error-message-align="right"> - <u-form-item label="閲囪喘鍚堝悓鍙�" prop="purchaseContractNumber" required border-bottom> - <u-input v-model="form.purchaseContractNumber" placeholder="鑷姩鐢熸垚" /> - </u-form-item> - <u-form-item label="閿�鍞悎鍚屽彿" prop="salesContractNo" required border-bottom> - <u-input - v-model="form.salesContractNo" - readonly - placeholder="鐐瑰嚮閫夋嫨閿�鍞悎鍚屽彿" - @click="showPicker = true" - /> - </u-form-item> - <u-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName" required border-bottom> - <u-input - v-model="form.supplierName" - readonly - placeholder="鐐瑰嚮閫夋嫨渚涘簲鍟�" - @click="showCustomerPicker = true" - /> - </u-form-item> - <u-form-item label="椤圭洰鍚嶇О" prop="projectName" required border-bottom> - <u-input v-model="form.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" /> - </u-form-item> - <u-form-item label="浠樻鏂瑰紡" border-bottom> - <u-input v-model="form.paymentMethod" placeholder="璇疯緭鍏ヤ粯娆炬柟寮�" /> - </u-form-item> - <u-form-item label="褰曞叆浜�" border-bottom> - <u-input v-model="form.recorderName" placeholder="璇疯緭鍏�" disabled /> - </u-form-item> - <u-form-item label="褰曞叆鏃ユ湡" border-bottom> - <u-input v-model="form.entryDate" placeholder="璇疯緭鍏�" disabled /> - </u-form-item> - <u-popup v-model="showPicker" mode="bottom"> - <u-picker + <van-form @submit="onSubmit" label-width="110px" input-align="right" style="margin-top: 10px" error-message-align="right" scroll-to-error scroll-to-error-position="center"> + <van-field label="閲囪喘鍚堝悓鍙�" name="purchaseContractNumber" borderBottom="true" v-model="form.purchaseContractNumber" placeholder="鑷姩鐢熸垚" :rules="[{ required: true, message: '璇疯緭鍏�' }]"> + </van-field> + <van-field + v-model="form.salesContractNo" + is-link + readonly + name="salesContractNo" + label="閿�鍞悎鍚屽彿" + required + placeholder="鐐瑰嚮閫夋嫨閿�鍞悎鍚屽彿" + :rules="[{ required: true, message: '璇烽�夋嫨閿�鍞悎鍚屽彿' }]" + @click="showPicker = true" + /> + <van-field + v-model="form.supplierName" + is-link + readonly + required + name="supplierName" + label="渚涘簲鍟嗗悕绉�" + placeholder="鐐瑰嚮閫夋嫨渚涘簲鍟�" + :rules="[{ required: true, message: '璇烽�夋嫨渚涘簲鍟�' }]" + @click="showCustomerPicker = true" + /> + <van-field label="椤圭洰鍚嶇О" name="projectName" borderBottom="true" v-model="form.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" :rules="[{ required: true, message: '椤圭洰鍚嶇О涓嶈兘涓虹┖' }]" required> + </van-field> + <van-field label="浠樻鏂瑰紡" name="paymentMethod" borderBottom="true" v-model="form.paymentMethod" placeholder="璇疯緭鍏ヤ粯娆炬柟寮�"> + </van-field> + <van-field label="褰曞叆浜�" name="recorderName" borderBottom="true" v-model="form.recorderName" placeholder="璇疯緭鍏�" disabled> + </van-field> + <van-field label="褰曞叆鏃ユ湡" name="entryDate" borderBottom="true" v-model="form.entryDate" placeholder="璇疯緭鍏�" disabled> + </van-field> + <van-popup v-model:show="showPicker" destroy-on-close position="bottom"> + <van-picker :columns="salesContractList" v-model="pickerValue" @confirm="onConfirm" @cancel="showPicker = false" /> - </u-popup> - <u-popup v-model="showCustomerPicker" mode="bottom"> - <u-picker + </van-popup> + <van-popup v-model:show="showCustomerPicker" destroy-on-close position="bottom"> + <van-picker :columns="supplierList" v-model="pickerCustomerValue" @confirm="onCustomerConfirm" @cancel="showCustomerPicker = false" /> - </u-popup> + </van-popup> <!-- 浜у搧澶х被閫夋嫨鍣� --> - <u-popup v-model="showCategoryPicker" mode="bottom"> + <van-popup v-model:show="showCategoryPicker" destroy-on-close position="bottom"> <!-- 澶撮儴鎸夐挳鍖哄煙 --> <view class="popup-header"> <view @click="showCategoryPicker = false" class="cancelButton">鍙栨秷</view> @@ -68,159 +69,175 @@ check-strictly @check-change="onCategoryConfirm" /> - </u-popup> + </van-popup> <!-- 瑙勬牸鍨嬪彿閫夋嫨鍣� --> - <u-popup v-model="showSpecificationPicker" mode="bottom"> - <u-picker + <van-popup v-model:show="showSpecificationPicker" destroy-on-close position="bottom"> + <van-picker :columns="modelOptions" v-model="pickerSpecificationValue" @confirm="onSpecificationConfirm" @cancel="showSpecificationPicker = false" /> - </u-popup> + </van-popup> <!-- 绋庣巼閫夋嫨鍣� --> - <u-popup v-model="showTaxRatePicker" mode="bottom"> - <u-picker + <van-popup v-model:show="showTaxRatePicker" destroy-on-close position="bottom"> + <van-picker :columns="taxRateOptions" v-model="pickerTaxRateValue" @confirm="onTaxRateConfirm" @cancel="showTaxRatePicker = false" /> - </u-popup> + </van-popup> <!-- 鍙戠エ绫诲瀷閫夋嫨鍣� --> - <u-popup v-model="showInvoiceTypePicker" mode="bottom"> - <u-picker + <van-popup v-model:show="showInvoiceTypePicker" destroy-on-close position="bottom"> + <van-picker :columns="invoiceTypeOptions" v-model="pickerInvoiceTypeValue" @confirm="onInvoiceTypeConfirm" @cancel="showInvoiceTypePicker = false" /> - </u-popup> + </van-popup> <!-- 浜у搧淇℃伅 --> <view class="product-section"> <view class="section-header"> <text class="section-title">浜у搧淇℃伅</text> - <u-button type="primary" size="small" @click="addProduct" class="add-btn" v-if="operationType !== 'view'"> - <u-icon name="plus" size="14" /> - 鏂板 - </u-button> + <van-button type="primary" size="small" @click="addProduct" class="add-btn" icon="plus" v-if="operationType !== 'view'">鏂板</van-button> </view> <view class="product-card" v-for="(product, idx) in productData" :key="idx"> <!-- 浜у搧绫� --> <view class="product-header"> <view class="product-title"> - <u-icon name="file-text" color="#2979ff" size="15" /> + <van-icon name="description" color="#2979ff" size="15" /> <text class="product-productCategory">浜у搧 {{ idx + 1 }}</text> </view> <!-- 鎿嶄綔鎸夐挳 --> - <view class="product-actions" v-if="operationType !== 'view'"> - <u-button type="error" size="mini" @click="removeProduct(idx)" class="del-btn"> - <u-icon name="trash" size="12" /> - 鍒犻櫎 - </u-button> + <view class="product-actions" v-if="operationType !== 'view'"> + <van-button type="danger" size="mini" @click="removeProduct(idx)" class="del-btn" icon="delete">鍒犻櫎</van-button> </view> </view> <!-- 浜у搧淇℃伅琛ㄥ崟 --> <view class="product-form"> <!-- 浜у搧澶х被 --> - <view class="product-category" prop="productCategory" required border-bottom> - <u-input - v-model="product.productCategory" - readonly - placeholder="璇烽�夋嫨" - @click="openCategoryPicker(idx)" - /> - </view> + <van-field + v-model="product.productCategory" + is-link + readonly + name="productCategory" + label="浜у搧澶х被" + required + placeholder="璇烽�夋嫨" + :rules="[{ required: true, message: '璇烽�夋嫨' }]" + @click="openCategoryPicker(idx)" + /> <!-- 瑙勬牸鍨嬪彿 --> - <view class="product-specificationModel" prop="specificationModel" required border-bottom> - <u-input - v-model="product.specificationModel" - readonly - placeholder="璇烽�夋嫨" - @click="openSpecificationPicker(idx)" - /> - </view> + <van-field + v-model="product.specificationModel" + is-link + readonly + name="specificationModel" + label="瑙勬牸鍨嬪彿" + required + :rules="[{ required: true, message: '璇烽�夋嫨' }]" + placeholder="璇烽�夋嫨" + @click="openSpecificationPicker(idx)" + /> <!-- 鍗曚綅 --> - <view class="product-unit" prop="unit" required border-bottom> - <u-input - v-model="product.unit" - placeholder="璇疯緭鍏�" - /> - </view> + <van-field + v-model="product.unit" + name="unit" + label="鍗曚綅" + required + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + placeholder="璇疯緭鍏�" + /> <!-- 绋庣巼 --> - <view class="product-taxRate" prop="taxRate" required border-bottom> - <u-input - v-model="product.taxRate" - readonly - placeholder="璇烽�夋嫨" - @click="openTaxRatePicker(idx)" - /> - </view> + <van-field + v-model="product.taxRate" + is-link + readonly + name="taxRate" + label="绋庣巼(%)" + required + :rules="[{ required: true, message: '璇烽�夋嫨' }]" + placeholder="璇烽�夋嫨" + @click="openTaxRatePicker(idx)" + /> <!-- 鍚◣鍗曚环 --> - <view class="product-taxInclusiveUnitPrice" prop="taxInclusiveUnitPrice" required border-bottom> - <u-input - v-model="product.taxInclusiveUnitPrice" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatTaxPrice(idx)" - /> - </view> + <van-field + v-model="product.taxInclusiveUnitPrice" + name="taxInclusiveUnitPrice" + label="鍚◣鍗曚环(鍏�)" + type="number" + required + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + placeholder="璇疯緭鍏�" + @blur="formatTaxPrice(idx)" + /> <!-- 鏁伴噺 --> - <view class="product-quantity" prop="quantity" required border-bottom> - <u-input - v-model="product.quantity" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatAmount(idx)" - /> - </view> + <van-field + v-model="product.quantity" + name="quantity" + label="鏁伴噺" + type="number" + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + required + placeholder="璇疯緭鍏�" + @blur="formatAmount(idx)" + /> <!-- 鍚◣鎬讳环 --> - <view class="product-taxInclusiveTotalPrice" prop="taxInclusiveTotalPrice" required border-bottom> - <u-input - v-model="product.taxInclusiveTotalPrice" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatTaxTotal(idx)" - /> - </view> + <van-field + v-model="product.taxInclusiveTotalPrice" + name="taxInclusiveTotalPrice" + label="鍚◣鎬讳环(鍏�)" + type="number" + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + required + placeholder="璇疯緭鍏�" + @blur="formatTaxTotal(idx)" + /> <!-- 涓嶅惈绋庢�讳环 --> - <view class="product-taxExclusiveTotalPrice" prop="taxExclusiveTotalPrice" required border-bottom> - <u-input - v-model="product.taxExclusiveTotalPrice" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatNoTaxTotal(idx)" - /> - </view> + <van-field + v-model="product.taxExclusiveTotalPrice" + name="taxExclusiveTotalPrice" + label="涓嶅惈绋庢�讳环(鍏�)" + type="number" + required + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + placeholder="璇疯緭鍏�" + @blur="formatNoTaxTotal(idx)" + /> <!-- 鍙戠エ绫诲瀷 --> - <view class="product-invoiceType" prop="invoiceType" required border-bottom> - <u-input - v-model="product.invoiceType" - readonly - placeholder="璇烽�夋嫨" - @click="openInvoiceTypePicker(idx)" - /> - </view> + <van-field + v-model="product.invoiceType" + is-link + readonly + name="invoiceType" + label="鍙戠エ绫诲瀷" + :rules="[{ required: true, message: '璇烽�夋嫨' }]" + required + placeholder="璇烽�夋嫨" + @click="openInvoiceTypePicker(idx)" + /> </view> </view> </view> <view class="footer-btns" v-if="operationType !== 'view'"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="onSubmit">淇濆瓨</u-button> + <van-button class="cancel-btn" @click="goBack">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit">淇濆瓨</van-button> </view> - </u-form> + </van-form> </view> </template> @@ -720,10 +737,10 @@ .form-section { margin-top: 1rem; } -.u-form-item { +.van-field { height: 3.4rem; } -.u-cell { +.van-cell { align-items: center; } .product-section { diff --git a/src/pages/sales/invoiceLedger/detail.vue b/src/pages/sales/invoiceLedger/detail.vue index b7f6fe8..d8913d3 100644 --- a/src/pages/sales/invoiceLedger/detail.vue +++ b/src/pages/sales/invoiceLedger/detail.vue @@ -1,93 +1,56 @@ <template> - <view class="invoice-detail"> + <view class="account-detail"> <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 --> - <PageHeader title="鍙戠エ璇︽儏" @back="goBack" /> - - <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="submitForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閿�鍞悎鍚屽彿" border-bottom> - <u-input v-model="form.salesContractNo" readonly /> - </u-form-item> - <u-form-item label="瀹㈡埛鍚嶇О" border-bottom> - <u-input v-model="form.customerName" readonly /> - </u-form-item> - <u-form-item label="鍙戠エ鍙�" prop="invoiceNo" required border-bottom> - <u-input v-model="form.invoiceNo" placeholder="璇疯緭鍏�" /> - </u-form-item> - <u-form-item label="鍙戠エ閲戦(鍏�)" prop="invoiceTotal" required border-bottom> - <u-input v-model="form.invoiceTotal" type="number" placeholder="璇疯緭鍏�" /> - </u-form-item> - <u-form-item label="寮�绁ㄤ汉" border-bottom> - <u-input v-model="form.invoicePerson" readonly /> - </u-form-item> - <u-form-item label="寮�绁ㄦ棩鏈�" prop="invoiceDate" required border-bottom> - <u-input v-model="form.invoiceDate" readonly placeholder="璇烽�夋嫨" @click="showInvoiceDatePicker = true" /> - </u-form-item> - </u-cell-group> - - <u-cell-group title="闄勪欢鏉愭枡锛堜粎鏀寔 pdf锛�"> - <u-upload + <PageHeader title="缂栬緫寮�绁ㄥ彴璐�" @back="goBack" /> + + <van-form @submit="submitForm" 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.salesContractNo" label="閿�鍞悎鍚屽彿" readonly /> + <van-field v-model="form.customerName" label="瀹㈡埛鍚嶇О" readonly /> + <van-field v-model="form.invoiceNo" label="鍙戠エ鍙�" placeholder="璇疯緭鍏�" required :rules="[{ required: true, message: '璇疯緭鍏ュ彂绁ㄥ彿' }]" /> + <van-field v-model="form.invoiceTotal" label="鍙戠エ閲戦(鍏�)" type="number" placeholder="璇疯緭鍏�" required :rules="[{ required: true, message: '璇疯緭鍏ュ彂绁ㄩ噾棰�' }]" /> + <view class="tip-text" v-if="form.taxInclusiveTotalPrice">鍚堝悓鎬婚锛歿{ formatAmount(form.taxInclusiveTotalPrice) }} 鍏�</view> + <van-field v-model="form.invoicePerson" label="寮�绁ㄤ汉" readonly /> + <van-field v-model="form.invoiceDate" label="寮�绁ㄦ棩鏈�" readonly placeholder="璇烽�夋嫨" @click="showInvoiceDatePicker = true" required :rules="[{ required: true, message: '璇烽�夋嫨寮�绁ㄦ棩鏈�' }]" /> + </van-cell-group> + + <van-cell-group title="闄勪欢鏉愭枡锛堜粎鏀寔 pdf锛�" inset> + <van-uploader accept=".pdf" multiple - :afterRead="afterReadUpload" - :beforeRead="beforeReadPdf" + :after-read="afterReadUpload" + :before-read="beforeReadPdf" > - <u-button class="upload-btn" type="primary"> - <u-icon name="plus" size="14" /> - 涓婁紶鏂囦欢 - </u-button> - </u-upload> + <van-button class="upload-btn" icon="plus" type="primary" block>涓婁紶鏂囦欢</van-button> + </van-uploader> <view class="uploaded-list" v-if="fileList.length"> <view class="uploaded-item" v-for="(f, idx) in fileList" :key="idx"> <text class="file-name">{{ f.name || getFileNameFromUrl(f.url) }}</text> - <u-button size="mini" type="error" plain @click="removeUploaded(idx)">绉婚櫎</u-button> + <van-button size="mini" type="danger" plain @click="removeUploaded(idx)">绉婚櫎</van-button> </view> </view> - </u-cell-group> - - <!-- 鎻愪氦鎸夐挳 --> - <view class="footer-btns"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="submitForm">淇濆瓨</u-button> - </view> - </u-form> + </van-cell-group> - <!-- 寮�绁ㄦ棩鏈熼�夋嫨鍣� --> - <u-popup v-model="showInvoiceDatePicker" mode="bottom"> - <u-datetime-picker - v-model="invoiceDateValue" + <view class="footer-btns"> + <van-button class="cancel-btn" @click="goBack">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit">淇濆瓨</van-button> + </view> + </van-form> + + <van-popup v-model:show="showInvoiceDatePicker" position="bottom"> + <van-date-picker + v-model="currentInvoiceDate" title="閫夋嫨寮�绁ㄦ棩鏈�" @confirm="onInvoiceDateConfirm" @cancel="showInvoiceDatePicker = false" /> - </u-popup> + </van-popup> </view> </template> <script setup> -// 鏇挎崲 Vant 鐨� toast 鏂规硶 -// import { showToast, showLoadingToast, closeToast } from 'vant' - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showLoadingToast = (message) => { - uni.showLoading({ - title: message || '鍔犺浇涓�...' - }) -} - -const closeToast = () => { - uni.hideLoading() -} - import { ref, onMounted } from 'vue' +import { showToast, showLoadingToast, closeToast } from 'vant' import dayjs from 'dayjs' import useUserStore from '@/store/modules/user' import { getToken } from '@/utils/auth' diff --git a/src/pages/sales/invoicingRegistration/add.vue b/src/pages/sales/invoicingRegistration/add.vue index 1156f6e..64c1931 100644 --- a/src/pages/sales/invoicingRegistration/add.vue +++ b/src/pages/sales/invoicingRegistration/add.vue @@ -4,67 +4,63 @@ <PageHeader title="鏂板寮�绁ㄧ櫥璁�" @back="goBack" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="submitForm" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <van-form @submit="submitForm" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> <!-- 鍩烘湰淇℃伅 --> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閿�鍞悎鍚屽彿" border-bottom> - <u-input - v-model="form.salesContractNo" - readonly - placeholder="鑷姩濉厖" - /> - </u-form-item> - <u-form-item label="瀹㈡埛鍚嶇О" border-bottom> - <u-input - v-model="form.customerName" - readonly - placeholder="鑷姩濉厖" - /> - </u-form-item> - <u-form-item label="涓氬姟鍛�" border-bottom> - <u-input - v-model="form.salesman" - readonly - placeholder="鑷姩濉厖" - /> - </u-form-item> - <u-form-item label="椤圭洰鍚嶇О" border-bottom> - <u-input - v-model="form.projectName" - readonly - placeholder="鑷姩濉厖" - /> - </u-form-item> - <u-form-item label="褰曞叆浜�" border-bottom> - <u-input - v-model="form.createUer" - readonly - placeholder="璇疯緭鍏ュ綍鍏ヤ汉" - /> - </u-form-item> - <u-form-item label="褰曞叆鏃ユ湡" border-bottom> - <u-input - v-model="form.createTime" - readonly - placeholder="璇烽�夋嫨褰曞叆鏃ユ湡" - @click="showCreateTimePicker = true" - /> - </u-form-item> - <u-form-item label="鍙戠エ鍙风爜" prop="invoiceNo" required border-bottom> - <u-input - v-model="form.invoiceNo" - placeholder="璇疯緭鍏ュ彂绁ㄥ彿鐮�" - /> - </u-form-item> - <u-form-item label="寮�绁ㄦ棩鏈�" prop="issueDate" required border-bottom> - <u-input - v-model="form.issueDate" - readonly - placeholder="璇烽�夋嫨寮�绁ㄦ棩鏈�" - @click="showIssueDatePicker = true" - /> - </u-form-item> - </u-cell-group> + <van-cell-group title="鍩烘湰淇℃伅" inset> + <van-field + v-model="form.salesContractNo" + label="閿�鍞悎鍚屽彿" + readonly + placeholder="鑷姩濉厖" + /> + <van-field + v-model="form.customerName" + label="瀹㈡埛鍚嶇О" + readonly + placeholder="鑷姩濉厖" + /> + <van-field + v-model="form.salesman" + label="涓氬姟鍛�" + readonly + placeholder="鑷姩濉厖" + /> + <van-field + v-model="form.projectName" + label="椤圭洰鍚嶇О" + readonly + placeholder="鑷姩濉厖" + /> + <van-field + v-model="form.createUer" + label="褰曞叆浜�" + readonly + placeholder="璇疯緭鍏ュ綍鍏ヤ汉" + /> + <van-field + v-model="form.createTime" + label="褰曞叆鏃ユ湡" + readonly + placeholder="璇烽�夋嫨褰曞叆鏃ユ湡" + @click="showCreateTimePicker = true" + /> + <van-field + v-model="form.invoiceNo" + label="鍙戠エ鍙风爜" + required + placeholder="璇疯緭鍏ュ彂绁ㄥ彿鐮�" + :rules="[{ required: true, message: '璇疯緭鍏ュ彂绁ㄥ彿鐮�' }]" + /> + <van-field + v-model="form.issueDate" + label="寮�绁ㄦ棩鏈�" + readonly + placeholder="璇烽�夋嫨寮�绁ㄦ棩鏈�" + required + @click="showIssueDatePicker = true" + :rules="[{ required: true, message: '璇烽�夋嫨寮�绁ㄦ棩鏈�' }]" + /> + </van-cell-group> <!-- 浜у搧淇℃伅 --> <view class="product-section"> @@ -73,7 +69,7 @@ </view> <view v-if="productData.length === 0" class="empty-state"> - <u-empty text="鏆傛棤浜у搧鏁版嵁" /> + <van-empty description="鏆傛棤浜у搧鏁版嵁" /> </view> <view v-else class="product-list"> @@ -85,151 +81,120 @@ <!-- 浜у搧澶撮儴 --> <view class="product-header"> <view class="product-title"> - <u-icon name="file-text" color="#2979ff" size="15" /> + <van-icon name="description" color="#2979ff" size="15" /> <text class="product-productCategory">浜у搧 {{ index + 1 }}</text> </view> </view> <!-- 浜у搧淇℃伅琛ㄥ崟 --> <view class="product-form"> - <u-form-item label="浜у搧澶х被" border-bottom> - <u-input - v-model="item.productCategory" - readonly - /> - </u-form-item> - <u-form-item label="瑙勬牸鍨嬪彿" border-bottom> - <u-input - v-model="item.specificationModel" - readonly - /> - </u-form-item> - <u-form-item label="鍗曚綅" border-bottom> - <u-input - v-model="item.unit" - readonly - /> - </u-form-item> - <u-form-item label="鏁伴噺" border-bottom> - <u-input - v-model="item.quantity" - readonly - /> - </u-form-item> - <u-form-item label="绋庣巼(%)" border-bottom> - <u-input - v-model="item.taxRate" - readonly - /> - </u-form-item> - <u-form-item label="鍚◣鍗曚环(鍏�)" border-bottom> - <u-input - v-model="item.taxInclusiveUnitPrice" - readonly - /> - </u-form-item> - <u-form-item label="鍚◣鎬讳环(鍏�)" border-bottom> - <u-input - v-model="item.taxInclusiveTotalPrice" - readonly - /> - </u-form-item> - <u-form-item label="涓嶅惈绋庢�讳环(鍏�)" border-bottom> - <u-input - v-model="item.taxExclusiveTotalPrice" - readonly - /> - </u-form-item> + <van-field + v-model="item.productCategory" + label="浜у搧澶х被" + readonly + /> + <van-field + v-model="item.specificationModel" + label="瑙勬牸鍨嬪彿" + readonly + /> + <van-field + v-model="item.unit" + label="鍗曚綅" + readonly + /> + <van-field + v-model="item.quantity" + label="鏁伴噺" + readonly + /> + <van-field + v-model="item.taxRate" + label="绋庣巼(%)" + readonly + /> + <van-field + v-model="item.taxInclusiveUnitPrice" + label="鍚◣鍗曚环(鍏�)" + readonly + /> + <van-field + v-model="item.taxInclusiveTotalPrice" + label="鍚◣鎬讳环(鍏�)" + readonly + /> + <van-field + v-model="item.taxExclusiveTotalPrice" + label="涓嶅惈绋庢�讳环(鍏�)" + readonly + /> <!-- 鏈寮�绁ㄤ俊鎭� --> - <u-form-item label="鏈寮�绁ㄦ暟" border-bottom> - <u-input - v-model="item.currentInvoiceNum" - type="number" - placeholder="璇疯緭鍏ュ紑绁ㄦ暟閲�" - @blur="invoiceNumBlur(item)" - /> - </u-form-item> - <u-form-item label="鏈寮�绁ㄩ噾棰�(鍏�)" border-bottom> - <u-input - v-model="item.currentInvoiceAmount" - type="number" - placeholder="璇疯緭鍏ュ紑绁ㄩ噾棰�" - @blur="invoiceAmountBlur(item)" - /> - </u-form-item> + <van-field + v-model="item.currentInvoiceNum" + label="鏈寮�绁ㄦ暟" + type="number" + placeholder="璇疯緭鍏ュ紑绁ㄦ暟閲�" + @blur="invoiceNumBlur(item)" + /> + <van-field + v-model="item.currentInvoiceAmount" + label="鏈寮�绁ㄩ噾棰�(鍏�)" + type="number" + placeholder="璇疯緭鍏ュ紑绁ㄩ噾棰�" + @blur="invoiceAmountBlur(item)" + /> <!-- 鏈紑绁ㄤ俊鎭� --> - <u-form-item label="鏈紑绁ㄦ暟" border-bottom> - <u-input - v-model="item.noInvoiceNum" - readonly - /> - </u-form-item> - <u-form-item label="鏈紑绁ㄩ噾棰�(鍏�)" border-bottom> - <u-input - v-model="item.noInvoiceAmount" - readonly - /> - </u-form-item> + <van-field + v-model="item.noInvoiceNum" + label="鏈紑绁ㄦ暟" + readonly + /> + <van-field + v-model="item.noInvoiceAmount" + label="鏈紑绁ㄩ噾棰�(鍏�)" + readonly + /> </view> </view> </view> </view> <!-- 鎻愪氦鎸夐挳 --> - <view class="footer-btns"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="submitForm">淇濆瓨</u-button> - </view> - </u-form> + <view class="footer-btns"> + <van-button class="cancel-btn" @click="goBack">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit">淇濆瓨</van-button> + </view> + </van-form> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showIssueDatePicker" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showIssueDatePicker" position="bottom"> + <van-date-picker v-model="currentIssueDate" title="閫夋嫨寮�绁ㄦ棩鏈�" @confirm="onIssueDateConfirm" @cancel="showIssueDatePicker = false" /> - </u-popup> + </van-popup> - <u-popup v-model="showCreateTimePicker" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showCreateTimePicker" position="bottom"> + <van-date-picker v-model="currentCreateTime" title="閫夋嫨褰曞叆鏃ユ湡" @confirm="onCreateTimeConfirm" @cancel="showCreateTimePicker = false" /> - </u-popup> + </van-popup> </view> </template> <script setup> import { ref, reactive, onMounted } from 'vue' -// 鏇挎崲 Vant 鐨� toast 涓� uni 鍘熺敓鎴� uview-plus 鐨勬柟娉� -// import { showToast, showLoadingToast, closeToast } from 'vant' +import { showToast, showLoadingToast, closeToast } from 'vant' import { invoiceRegistrationSave } from '@/api/salesManagement/invoiceRegistration' import useUserStore from '@/store/modules/user' import {getSalesLedgerWithProducts} from "@/api/salesManagement/salesLedger"; - -// 鏇挎崲 toast 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showLoadingToast = (message) => { - uni.showLoading({ - title: message || '鍔犺浇涓�...' - }) -} - -const closeToast = () => { - uni.hideLoading() -} const userStore = useUserStore() const editData = ref(null); diff --git a/src/pages/sales/invoicingRegistration/index.vue b/src/pages/sales/invoicingRegistration/index.vue index a89af00..2f4c344 100644 --- a/src/pages/sales/invoicingRegistration/index.vue +++ b/src/pages/sales/invoicingRegistration/index.vue @@ -14,7 +14,7 @@ /> </view> <view class="filter-button" @click="getList"> - <u-icon name="search" size="24" color="#999"></u-icon> + <up-icon name="search" size="24" color="#999"></up-icon> </view> </view> </view> @@ -26,12 +26,12 @@ <view class="item-header"> <view class="item-left"> <view class="document-icon"> - <u-icon name="file-text" size="16" color="#ffffff"></u-icon> + <up-icon name="file-text" size="16" color="#ffffff"></up-icon> </view> <text class="item-id">{{ item.salesContractNo }}</text> </view> </view> - <u-divider></u-divider> + <up-divider></up-divider> <view class="item-details"> <view class="detail-row"> @@ -66,7 +66,7 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <view class="action-buttons"> - <u-button + <van-button type="primary" size="small" @click="handleAddInvoice(item)" @@ -74,15 +74,15 @@ :disabled="item.noInvoiceAmountTotal == 0" > 鏂板寮�绁� - </u-button> - <u-button - type="info" + </van-button> + <van-button + type="default" size="small" @click="handleViewDetail(item)" class="action-btn" > 鏌ョ湅璇︽儏 - </u-button> + </van-button> </view> </view> </view> diff --git a/src/pages/sales/receiptPayment/add.vue b/src/pages/sales/receiptPayment/add.vue index 4d9befc..150c570 100644 --- a/src/pages/sales/receiptPayment/add.vue +++ b/src/pages/sales/receiptPayment/add.vue @@ -4,105 +4,99 @@ <PageHeader title="鏂板鍥炴" @back="onClickLeft" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="onSubmit" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <van-form @submit="onSubmit" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> <!-- 鍩烘湰淇℃伅 --> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閿�鍞悎鍚屽彿" border-bottom> - <u-input - v-model="form.salesContractNo" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="瀹㈡埛鍚嶇О" border-bottom> - <u-input - v-model="form.customerName" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="鍙戠エ鍙�" border-bottom> - <u-input - v-model="form.invoiceNo" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="鍙戠エ閲戦(鍏�)" border-bottom> - <u-input - v-model="form.invoiceTotal" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="绋庣巼" border-bottom> - <u-input - v-model="form.taxRate" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <view class="tip-text">寰呭洖娆鹃噾棰濓細{{ currentNoReceiptAmount }} 鍏�</view> - <u-form-item label="鏈鍥炴閲戦" prop="receiptPaymentAmount" required border-bottom> - <u-input - v-model="form.receiptPaymentAmount" - type="number" - placeholder="璇疯緭鍏�" - @blur="changeNum" - clearable - /> - </u-form-item> - <u-form-item label="鍥炴褰㈠紡" prop="receiptPaymentTypeName" required border-bottom> - <u-input - v-model="form.receiptPaymentTypeName" - placeholder="璇烽�夋嫨" - readonly - @click="showPaymentTypePicker" - /> - </u-form-item> - <u-form-item label="鏉ユ鏃ユ湡" prop="receiptPaymentDate" required border-bottom> - <u-input - v-model="form.receiptPaymentDate" - placeholder="璇烽�夋嫨" - readonly - @click="showDatePicker" - /> - </u-form-item> - <u-form-item label="鐧昏浜�" border-bottom> - <u-input - v-model="form.registrant" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - </u-cell-group> + <van-cell-group title="鍩烘湰淇℃伅" inset> + <van-field + v-model="form.salesContractNo" + label="閿�鍞悎鍚屽彿" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.customerName" + label="瀹㈡埛鍚嶇О" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.invoiceNo" + label="鍙戠エ鍙�" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.invoiceTotal" + label="鍙戠エ閲戦(鍏�)" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.taxRate" + label="绋庣巼" + placeholder="鑷姩濉厖" + readonly + /> + <view class="tip-text">寰呭洖娆鹃噾棰濓細{{ currentNoReceiptAmount }} 鍏�</view> + <van-field + v-model="form.receiptPaymentAmount" + label="鏈鍥炴閲戦" + type="number" + placeholder="璇疯緭鍏�" + @blur="changeNum" + :rules="[{ required: true, message: '璇疯緭鍏ュ洖娆鹃噾棰�' }]" + clearable + /> + <van-field + v-model="form.receiptPaymentTypeName" + label="鍥炴褰㈠紡" + placeholder="璇烽�夋嫨" + readonly + @click="showPaymentTypePicker" + :rules="[{ required: true, message: '璇烽�夋嫨鍥炴褰㈠紡' }]" + /> + <van-field + v-model="form.receiptPaymentDate" + label="鏉ユ鏃ユ湡" + placeholder="璇烽�夋嫨" + readonly + @click="showDatePicker" + :rules="[{ required: true, message: '璇烽�夋嫨鏉ユ鏃ユ湡' }]" + /> + <van-field + v-model="form.registrant" + label="鐧昏浜�" + placeholder="鑷姩濉厖" + readonly + /> + </van-cell-group> <!-- 鎻愪氦鎸夐挳 --> <view class="footer-btns"> - <u-button class="cancel-btn" @click="onClickLeft">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="onSubmit" :loading="loading">淇濆瓨</u-button> + <van-button class="cancel-btn" @click="onClickLeft">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit" :loading="loading">淇濆瓨</van-button> </view> - </u-form> + </van-form> <!-- 鍥炴鏂瑰紡閫夋嫨鍣� --> - <u-popup v-model="showPaymentType" mode="bottom"> - <u-picker - v-model="pickerValue" + <van-popup v-model:show="showPaymentType" position="bottom"> + <van-picker + :model-value="pickerValue" :columns="receipt_payment_type" @confirm="onPaymentTypeConfirm" @cancel="showPaymentType = false" /> - </u-popup> + </van-popup> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> </view> </template> @@ -110,24 +104,8 @@ import { ref, onMounted, computed } from 'vue' import { receiptPaymentSaveOrUpdate, invoiceInfo } from '@/api/salesManagement/receiptPayment' import useUserStore from '@/store/modules/user' -// 鏇挎崲 Vant 鐨� toast 鍜� notify -// import { showToast, showNotify } from 'vant' +import { showToast, showNotify } from 'vant' import { useDict } from '@/utils/dict' - -// 鏇挎崲 toast 鍜� notify 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showNotify = ({ type, message }) => { - uni.showToast({ - title: message, - icon: type === 'warning' ? 'none' : 'success' - }) -} const userStore = useUserStore() diff --git a/src/pages/sales/receiptPayment/edit.vue b/src/pages/sales/receiptPayment/edit.vue index 8c54a03..c035a9b 100644 --- a/src/pages/sales/receiptPayment/edit.vue +++ b/src/pages/sales/receiptPayment/edit.vue @@ -4,104 +4,98 @@ <PageHeader title="缂栬緫鍥炴" @back="onClickLeft" /> <!-- 琛ㄥ崟鍐呭 --> - <u-form @submit="onSubmit" ref="formRef" label-width="110" input-align="right" error-message-align="right"> + <van-form @submit="onSubmit" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center"> <!-- 鍩烘湰淇℃伅 --> - <u-cell-group title="鍩烘湰淇℃伅"> - <u-form-item label="閿�鍞悎鍚屽彿" border-bottom> - <u-input - v-model="form.salesContractNo" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <u-form-item label="瀹㈡埛鍚嶇О" border-bottom> - <u-input - v-model="form.customerName" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - <!-- <u-form-item label="鍙戠エ鍙�" border-bottom>--> - <!-- <u-input--> - <!-- v-model="form.invoiceNo"--> - <!-- placeholder="鑷姩濉厖"--> - <!-- readonly--> - <!-- />--> - <!-- </u-form-item>--> - <!-- <u-form-item label="鍙戠エ閲戦(鍏�)" border-bottom>--> - <!-- <u-input--> - <!-- v-model="form.invoiceTotal"--> - <!-- placeholder="鑷姩濉厖"--> - <!-- readonly--> - <!-- />--> - <!-- </u-form-item>--> - <!-- <u-form-item label="绋庣巼" border-bottom>--> - <!-- <u-input--> - <!-- v-model="form.taxRate"--> - <!-- placeholder="鑷姩濉厖"--> - <!-- readonly--> - <!-- />--> - <!-- </u-form-item>--> + <van-cell-group title="鍩烘湰淇℃伅" inset> + <van-field + v-model="form.salesContractNo" + label="閿�鍞悎鍚屽彿" + placeholder="鑷姩濉厖" + readonly + /> + <van-field + v-model="form.customerName" + label="瀹㈡埛鍚嶇О" + placeholder="鑷姩濉厖" + readonly + /> +<!-- <van-field--> +<!-- v-model="form.invoiceNo"--> +<!-- label="鍙戠エ鍙�"--> +<!-- placeholder="鑷姩濉厖"--> +<!-- readonly--> +<!-- />--> +<!-- <van-field--> +<!-- v-model="form.invoiceTotal"--> +<!-- label="鍙戠エ閲戦(鍏�)"--> +<!-- placeholder="鑷姩濉厖"--> +<!-- readonly--> +<!-- />--> +<!-- <van-field--> +<!-- v-model="form.taxRate"--> +<!-- label="绋庣巼"--> +<!-- placeholder="鑷姩濉厖"--> +<!-- readonly--> +<!-- />--> <view class="tip-text">寰呭洖娆鹃噾棰濓細{{ currentNoReceiptAmount }} 鍏�</view> - <u-form-item label="鏈鍥炴閲戦" prop="receiptPaymentAmount" required border-bottom> - <u-input - v-model="form.receiptPaymentAmount" - type="number" - placeholder="璇疯緭鍏�" - @blur="changeNum" - clearable - /> - </u-form-item> - <u-form-item label="鍥炴褰㈠紡" prop="receiptPaymentTypeName" required border-bottom> - <u-input - v-model="form.receiptPaymentTypeName" - placeholder="璇烽�夋嫨" - readonly - @click="showPaymentTypePicker" - /> - </u-form-item> - <u-form-item label="鏉ユ鏃ユ湡" prop="receiptPaymentDate" required border-bottom> - <u-input - v-model="form.receiptPaymentDate" - placeholder="璇烽�夋嫨" - readonly - /> - </u-form-item> - <u-form-item label="鐧昏浜�" border-bottom> - <u-input - v-model="form.registrant" - placeholder="鑷姩濉厖" - readonly - /> - </u-form-item> - </u-cell-group> + <van-field + v-model="form.receiptPaymentAmount" + label="鏈鍥炴閲戦" + type="number" + placeholder="璇疯緭鍏�" + @blur="changeNum" + :rules="[{ required: true, message: '璇疯緭鍏ュ洖娆鹃噾棰�' }]" + clearable + /> + <van-field + v-model="form.receiptPaymentTypeName" + label="鍥炴褰㈠紡" + placeholder="璇烽�夋嫨" + readonly + @click="showPaymentTypePicker" + :rules="[{ required: true, message: '璇烽�夋嫨鍥炴褰㈠紡' }]" + /> + <van-field + v-model="form.receiptPaymentDate" + label="鏉ユ鏃ユ湡" + placeholder="璇烽�夋嫨" + readonly + :rules="[{ required: true, message: '璇烽�夋嫨鏉ユ鏃ユ湡' }]" + /> + <van-field + v-model="form.registrant" + label="鐧昏浜�" + placeholder="鑷姩濉厖" + readonly + /> + </van-cell-group> <!-- 鎻愪氦鎸夐挳 --> <view class="footer-btns"> - <u-button class="cancel-btn" @click="onClickLeft">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="onSubmit" :loading="loading">淇濆瓨</u-button> + <van-button class="cancel-btn" @click="onClickLeft">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit" :loading="loading">淇濆瓨</van-button> </view> - </u-form> + </van-form> <!-- 鍥炴鏂瑰紡閫夋嫨鍣� --> - <u-popup v-model="showPaymentType" mode="bottom"> - <u-picker - v-model="pickerValue" + <van-popup v-model:show="showPaymentType" position="bottom"> + <van-picker + :model-value="pickerValue" :columns="receipt_payment_type" @confirm="onPaymentTypeConfirm" @cancel="showPaymentType = false" /> - </u-popup> + </van-popup> <!-- 鏃ユ湡閫夋嫨鍣� --> - <u-popup v-model="showDate" mode="bottom"> - <u-datetime-picker + <van-popup v-model:show="showDate" position="bottom"> + <van-date-picker v-model="currentDate" title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" /> - </u-popup> + </van-popup> </view> </template> @@ -109,24 +103,8 @@ import { ref, onMounted, computed } from 'vue' import { receiptPaymentSaveOrUpdate, invoiceInfo } from '@/api/salesManagement/receiptPayment' import useUserStore from '@/store/modules/user' -// 鏇挎崲 Vant 鐨� toast 鍜� notify -// import { showToast, showNotify } from 'vant' +import { showToast, showNotify } from 'vant' import { useDict } from '@/utils/dict' - -// 鏇挎崲 toast 鍜� notify 鏂规硶 -const showToast = (message) => { - uni.showToast({ - title: message, - icon: 'none' - }) -} - -const showNotify = ({ type, message }) => { - uni.showToast({ - title: message, - icon: type === 'warning' ? 'none' : 'success' - }) -} const userStore = useUserStore() diff --git a/src/pages/sales/receiptPayment/index.vue b/src/pages/sales/receiptPayment/index.vue index a30d42e..4cf0a30 100644 --- a/src/pages/sales/receiptPayment/index.vue +++ b/src/pages/sales/receiptPayment/index.vue @@ -15,14 +15,14 @@ /> </view> <view class="filter-button" @click="getList"> - <u-icon name="search" size="24" color="#999"></u-icon> + <up-icon name="search" size="24" color="#999"></up-icon> </view> </view> <!-- 绛涢�夊紑鍏� --> <view class="switch-row"> <text class="switch-label">涓嶆樉绀哄緟鍥炴涓�0</text> - <u-switch v-model="searchForm.status" @change="getList" size="18"/> + <van-switch v-model="searchForm.status" @change="getList" size="18"/> </view> </view> @@ -35,12 +35,12 @@ <view class="item-header"> <view class="item-left"> <view class="document-icon"> - <u-icon name="file-text" size="16" color="#ffffff"></u-icon> + <up-icon name="file-text" size="16" color="#ffffff"></up-icon> </view> <text class="item-id">{{ item.salesContractNo }}</text> </view> </view> - <u-divider></u-divider> + <up-divider></up-divider> <view class="item-details"> <view class="detail-row"> <text class="detail-label">瀹㈡埛鍚嶇О</text> @@ -82,7 +82,7 @@ <!-- 鎿嶄綔鎸夐挳 --> <view class="action-buttons"> - <u-button + <van-button type="primary" size="small" class="action-btn" @@ -90,7 +90,7 @@ @click="openForm(item)" > 鏂板鍥炴 - </u-button> + </van-button> </view> </view> </view> @@ -98,7 +98,7 @@ <!-- 鏃犳暟鎹彁绀� --> <view class="no-data" v-else> - <text>鏆傛棤鏁版嵁</text> + <text>鏆傛棤鍥炴鏁版嵁</text> </view> </view> </template> diff --git a/src/pages/sales/salesAccount/detail.vue b/src/pages/sales/salesAccount/detail.vue index 3991e5d..bca5e36 100644 --- a/src/pages/sales/salesAccount/detail.vue +++ b/src/pages/sales/salesAccount/detail.vue @@ -4,93 +4,80 @@ <PageHeader title="鍙拌处璇︽儏" @back="goBack" /> <!-- 琛ㄥ崟鍖哄煙 --> - <u-form @submit="onSubmit" label-width="110" input-align="right" style="margin-top: 10px" error-message-align="right"> - <u-form-item label="閿�鍞悎鍚屽彿" prop="salesContractNo" border-bottom> - <u-input v-model="form.salesContractNo" placeholder="鑷姩鐢熸垚" disabled /> - </u-form-item> - <u-form-item + <van-form @submit="onSubmit" label-width="110px" input-align="right" style="margin-top: 10px" error-message-align="right" scroll-to-error scroll-to-error-position="center"> + <van-field label="閿�鍞悎鍚屽彿" name="salesContractNo" borderBottom="true" v-model="form.salesContractNo" placeholder="鑷姩鐢熸垚" disabled> + </van-field> + <van-field + v-model="form.salesman" + is-link + readonly + name="salesman" label="涓氬姟鍛�" - prop="salesman" required - border-bottom - > - <u-input - v-model="form.salesman" - readonly - placeholder="鐐瑰嚮閫夋嫨涓氬姟鍛�" - @click="showPicker = true" - /> - </u-form-item> - <u-form-item label="瀹㈡埛鍚堝悓鍙�" prop="customerContractNo" required border-bottom> - <u-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏ュ鎴峰悎鍚屽彿" - /> - </u-form-item> - <u-form-item + placeholder="鐐瑰嚮閫夋嫨涓氬姟鍛�" + :rules="[{ required: true, message: '璇烽�夋嫨涓氬姟鍛�' }]" + @click="showPicker = true" + /> + <van-field label="瀹㈡埛鍚堝悓鍙�" name="customerContractNo" borderBottom="true" + v-model="form.customerContractNo" required + placeholder="璇疯緭鍏ュ鎴峰悎鍚屽彿" :rules="[{ required: true, message: '瀹㈡埛鍚堝悓鍙蜂笉鑳戒负绌�' }]"> + </van-field> + <van-field + v-model="form.customerName" + is-link + readonly + required + name="customerName" label="瀹㈡埛鍚嶇О" - prop="customerName" + placeholder="鐐瑰嚮閫夋嫨瀹㈡埛" + :rules="[{ required: true, message: '璇烽�夋嫨瀹㈡埛' }]" + @click="showCustomerPicker = true" + /> + <van-field label="椤圭洰鍚嶇О" name="projectName" borderBottom="true" v-model="form.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" :rules="[{ required: true, message: '椤圭洰鍚嶇О涓嶈兘涓虹┖' }]" required> + </van-field> + <van-field + v-model="form.executionDate" + is-link + readonly required - border-bottom - > - <u-input - v-model="form.customerName" - readonly - placeholder="鐐瑰嚮閫夋嫨瀹㈡埛" - @click="showCustomerPicker = true" - /> - </u-form-item> - <u-form-item label="椤圭洰鍚嶇О" prop="projectName" required border-bottom> - <u-input v-model="form.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" /> - </u-form-item> - <u-form-item + name="executionDate" label="绛捐鏃ユ湡" - prop="executionDate" - required - border-bottom - > - <u-input - v-model="form.executionDate" - readonly - placeholder="鐐瑰嚮閫夋嫨鏃堕棿" - @click="showDatePicker = true" - /> - </u-form-item> - <u-popup v-model="showDatePicker" mode="bottom"> - <u-datetime-picker + placeholder="鐐瑰嚮閫夋嫨鏃堕棿" + :rules="[{ required: true, message: '绛捐鏃ユ湡涓嶈兘涓虹┖' }]" + @click="showDatePicker = true" + /> + <van-popup v-model:show="showDatePicker" destroy-on-close position="bottom"> + <van-date-picker v-model="pickerDateValue" @confirm="onDateConfirm" @cancel="showDatePicker = false" /> - </u-popup> - <u-form-item label="浠樻鏂瑰紡" prop="paymentMethod" border-bottom> - <u-input v-model="form.paymentMethod" placeholder="璇疯緭鍏ヤ粯娆炬柟寮�" /> - </u-form-item> - <u-form-item label="褰曞叆浜�" prop="entryPersonName" border-bottom> - <u-input v-model="form.entryPersonName" placeholder="璇疯緭鍏�" disabled /> - </u-form-item> - <u-form-item label="褰曞叆鏃ユ湡" prop="entryDate" border-bottom> - <u-input v-model="form.entryDate" placeholder="璇疯緭鍏�" disabled /> - </u-form-item> - <u-popup v-model="showPicker" mode="bottom"> - <u-picker + </van-popup> + <van-field label="浠樻鏂瑰紡" name="paymentMethod" borderBottom="true" v-model="form.paymentMethod" placeholder="璇疯緭鍏ヤ粯娆炬柟寮�"> + </van-field> + <van-field label="褰曞叆浜�" name="entryPersonName" borderBottom="true" v-model="form.entryPersonName" placeholder="璇疯緭鍏�" disabled> + </van-field> + <van-field label="褰曞叆鏃ユ湡" name="entryDate" borderBottom="true" v-model="form.entryDate" placeholder="璇疯緭鍏�" disabled> + </van-field> + <van-popup v-model:show="showPicker" destroy-on-close position="bottom"> + <van-picker :columns="userList" v-model="pickerValue" @confirm="onConfirm" @cancel="showPicker = false" /> - </u-popup> - <u-popup v-model="showCustomerPicker" mode="bottom"> - <u-picker + </van-popup> + <van-popup v-model:show="showCustomerPicker" destroy-on-close position="bottom"> + <van-picker :columns="customerOption" v-model="pickerCustomerValue" @confirm="onCustomerConfirm" @cancel="showCustomerPicker = false" /> - </u-popup> + </van-popup> <!-- 浜у搧澶х被閫夋嫨鍣� --> - <u-popup v-model="showCategoryPicker" mode="bottom"> + <van-popup v-model:show="showCategoryPicker" destroy-on-close position="bottom"> <!-- 澶撮儴鎸夐挳鍖哄煙 --> <view class="popup-header"> <view @click="showCategoryPicker = false" class="cancelButton">鍙栨秷</view> @@ -104,204 +91,175 @@ check-strictly @check-change="onCategoryConfirm" /> - </u-popup> + </van-popup> <!-- 瑙勬牸鍨嬪彿閫夋嫨鍣� --> - <u-popup v-model="showSpecificationPicker" mode="bottom"> - <u-picker + <van-popup v-model:show="showSpecificationPicker" destroy-on-close position="bottom"> + <van-picker :columns="modelOptions" v-model="pickerSpecificationValue" @confirm="onSpecificationConfirm" @cancel="showSpecificationPicker = false" /> - </u-popup> + </van-popup> <!-- 绋庣巼閫夋嫨鍣� --> - <u-popup v-model="showTaxRatePicker" mode="bottom"> - <u-picker + <van-popup v-model:show="showTaxRatePicker" destroy-on-close position="bottom"> + <van-picker :columns="taxRateOptions" v-model="pickerTaxRateValue" @confirm="onTaxRateConfirm" @cancel="showTaxRatePicker = false" /> - </u-popup> + </van-popup> <!-- 鍙戠エ绫诲瀷閫夋嫨鍣� --> - <u-popup v-model="showInvoiceTypePicker" mode="bottom"> - <u-picker + <van-popup v-model:show="showInvoiceTypePicker" destroy-on-close position="bottom"> + <van-picker :columns="invoiceTypeOptions" v-model="pickerInvoiceTypeValue" @confirm="onInvoiceTypeConfirm" @cancel="showInvoiceTypePicker = false" /> - </u-popup> + </van-popup> <!-- 浜у搧淇℃伅 --> <view class="product-section"> <view class="section-header"> <text class="section-title">浜у搧淇℃伅</text> - <u-button type="primary" size="small" @click="addProduct" class="add-btn" v-if="operationType !== 'view'"> - <u-icon name="plus" size="14" /> - 鏂板 - </u-button> + <van-button type="primary" size="small" @click="addProduct" class="add-btn" icon="plus" v-if="operationType !== 'view'">鏂板</van-button> </view> <view class="product-card" v-for="(product, idx) in productData" :key="idx"> <!-- 浜у搧绫� --> <view class="product-header"> <view class="product-title"> - <u-icon name="file-text" color="#2979ff" size="15" /> + <van-icon name="description" color="#2979ff" size="15" /> <text class="product-productCategory">浜у搧 {{ idx + 1 }}</text> </view> <!-- 鎿嶄綔鎸夐挳 --> - <view class="product-actions" v-if="operationType !== 'view'"> - <u-button type="error" size="mini" @click="removeProduct(idx)" class="del-btn"> - <u-icon name="trash" size="12" /> - 鍒犻櫎 - </u-button> + <view class="product-actions" v-if="operationType !== 'view'"> + <van-button type="danger" size="mini" @click="removeProduct(idx)" class="del-btn" icon="delete">鍒犻櫎</van-button> </view> </view> <!-- 浜у搧淇℃伅琛ㄥ崟 --> <view class="product-form"> <!-- 浜у搧澶х被 --> - <u-form-item + <van-field + v-model="product.productCategory" + is-link + readonly + name="productCategory" label="浜у搧澶х被" - prop="productCategory" required - border-bottom - > - <u-input - v-model="product.productCategory" - readonly - placeholder="璇烽�夋嫨" - @click="openCategoryPicker(idx)" - /> - </u-form-item> + placeholder="璇烽�夋嫨" + :rules="[{ required: true, message: '璇烽�夋嫨' }]" + @click="openCategoryPicker(idx)" + /> <!-- 瑙勬牸鍨嬪彿 --> - <u-form-item + <van-field + v-model="product.specificationModel" + is-link + readonly + name="specificationModel" label="瑙勬牸鍨嬪彿" - prop="specificationModel" required - border-bottom - > - <u-input - v-model="product.specificationModel" - readonly - placeholder="璇烽�夋嫨" - @click="openSpecificationPicker(idx)" - /> - </u-form-item> + :rules="[{ required: true, message: '璇烽�夋嫨' }]" + placeholder="璇烽�夋嫨" + @click="openSpecificationPicker(idx)" + /> <!-- 鍗曚綅 --> - <u-form-item + <van-field + v-model="product.unit" + name="unit" label="鍗曚綅" - prop="unit" required - border-bottom - > - <u-input - v-model="product.unit" - placeholder="璇疯緭鍏�" - /> - </u-form-item> + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + placeholder="璇疯緭鍏�" + /> <!-- 绋庣巼 --> - <u-form-item + <van-field + v-model="product.taxRate" + is-link + readonly + name="taxRate" label="绋庣巼(%)" - prop="taxRate" required - border-bottom - > - <u-input - v-model="product.taxRate" - readonly - placeholder="璇烽�夋嫨" - @click="openTaxRatePicker(idx)" - /> - </u-form-item> + :rules="[{ required: true, message: '璇烽�夋嫨' }]" + placeholder="璇烽�夋嫨" + @click="openTaxRatePicker(idx)" + /> <!-- 鍚◣鍗曚环 --> - <u-form-item + <van-field + v-model="product.taxInclusiveUnitPrice" + name="taxInclusiveUnitPrice" label="鍚◣鍗曚环(鍏�)" - prop="taxInclusiveUnitPrice" + type="number" required - border-bottom - > - <u-input - v-model="product.taxInclusiveUnitPrice" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatTaxPrice(idx)" - /> - </u-form-item> + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + placeholder="璇疯緭鍏�" + @blur="formatTaxPrice(idx)" + /> <!-- 鏁伴噺 --> - <u-form-item + <van-field + v-model="product.quantity" + name="quantity" label="鏁伴噺" - prop="quantity" + type="number" + :rules="[{ required: true, message: '璇疯緭鍏�' }]" required - border-bottom - > - <u-input - v-model="product.quantity" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatAmount(idx)" - /> - </u-form-item> + placeholder="璇疯緭鍏�" + @blur="formatAmount(idx)" + /> <!-- 鍚◣鎬讳环 --> - <u-form-item + <van-field + v-model="product.taxInclusiveTotalPrice" + name="taxInclusiveTotalPrice" label="鍚◣鎬讳环(鍏�)" - prop="taxInclusiveTotalPrice" + type="number" + :rules="[{ required: true, message: '璇疯緭鍏�' }]" required - border-bottom - > - <u-input - v-model="product.taxInclusiveTotalPrice" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatTaxTotal(idx)" - /> - </u-form-item> + placeholder="璇疯緭鍏�" + @blur="formatTaxTotal(idx)" + /> <!-- 涓嶅惈绋庢�讳环 --> - <u-form-item + <van-field + v-model="product.taxExclusiveTotalPrice" + name="taxExclusiveTotalPrice" label="涓嶅惈绋庢�讳环(鍏�)" - prop="taxExclusiveTotalPrice" + type="number" required - border-bottom - > - <u-input - v-model="product.taxExclusiveTotalPrice" - type="number" - placeholder="璇疯緭鍏�" - @blur="formatNoTaxTotal(idx)" - /> - </u-form-item> + :rules="[{ required: true, message: '璇疯緭鍏�' }]" + placeholder="璇疯緭鍏�" + @blur="formatNoTaxTotal(idx)" + /> <!-- 鍙戠エ绫诲瀷 --> - <u-form-item + <van-field + v-model="product.invoiceType" + is-link + readonly + name="invoiceType" label="鍙戠エ绫诲瀷" - prop="invoiceType" + :rules="[{ required: true, message: '璇烽�夋嫨' }]" required - border-bottom - > - <u-input - v-model="product.invoiceType" - readonly - placeholder="璇烽�夋嫨" - @click="openInvoiceTypePicker(idx)" - /> - </u-form-item> + placeholder="璇烽�夋嫨" + @click="openInvoiceTypePicker(idx)" + /> </view> </view> </view> <view class="footer-btns" v-if="operationType !== 'view'"> - <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button> - <u-button class="save-btn" type="primary" @click="onSubmit">淇濆瓨</u-button> + <van-button class="cancel-btn" @click="goBack">鍙栨秷</van-button> + <van-button class="save-btn" native-type="submit" form-type="submit">淇濆瓨</van-button> </view> - </u-form> + </van-form> </view> </template> diff --git a/src/pages_mine/pages/info/index.vue b/src/pages_mine/pages/info/index.vue index dfdae6b..6fb2356 100644 --- a/src/pages_mine/pages/info/index.vue +++ b/src/pages_mine/pages/info/index.vue @@ -1,38 +1,14 @@ <template> <view class="container"> <view class="card"> - <u-cell-group> - <u-cell title="鏄电О" :value="user.nickName"> - <template #icon> - <u-icon name="account" size="18" /> - </template> - </u-cell> - <u-cell title="鎵嬫満鍙风爜" :value="user.phonenumber"> - <template #icon> - <u-icon name="phone" size="18" /> - </template> - </u-cell> - <u-cell title="閭" :value="user.email"> - <template #icon> - <u-icon name="email" size="18" /> - </template> - </u-cell> - <u-cell title="宀椾綅" :value="postGroup"> - <template #icon> - <u-icon name="star" size="18" /> - </template> - </u-cell> - <u-cell title="瑙掕壊" :value="roleGroup"> - <template #icon> - <u-icon name="account-circle" size="18" /> - </template> - </u-cell> - <u-cell title="鍒涘缓鏃ユ湡" :value="user.createTime"> - <template #icon> - <u-icon name="calendar" size="18" /> - </template> - </u-cell> - </u-cell-group> + <van-cell-group> + <van-cell icon="user" title="鏄电О" :value="user.nickName" /> + <van-cell icon="phone" title="鎵嬫満鍙风爜" :value="user.phonenumber" /> + <van-cell icon="invitation" title="閭" :value="user.email" /> + <van-cell icon="medal" title="宀椾綅" :value="postGroup" /> + <van-cell icon="friends" title="瑙掕壊" :value="roleGroup" /> + <van-cell icon="notes" title="鍒涘缓鏃ユ湡" :value="user.createTime" /> + </van-cell-group> </view> <!-- <u-button @click="register()">缁戝畾寰俊</u-button> --> @@ -78,29 +54,31 @@ .container { min-height: 100vh; - padding: 0; + padding: 0; /* 24rpx -> 0.75rem */ box-sizing: border-box; } /* 鍒楄〃鍗$墖瀹瑰櫒 */ .card { background-color: #ffffff; - box-shadow: 0 0.375rem 1rem rgba(0, 0, 0, 0.06); + box-shadow: 0 0.375rem 1rem rgba(0, 0, 0, 0.06); /* 0 12rpx 32rpx -> 0 0.375rem 1rem */ overflow: hidden; } -/* 閫傞厤 uview-plus Cell */ -:deep(.u-cell) { - min-height: 3rem; +/* 閫傞厤 Vant Cell */ +:deep(.van-cell) { + min-height: 3rem; /* 92rpx -> 2.875rem */ align-items: center; } -:deep(.u-cell__title) { +:deep(.van-cell__title) { font-weight: 500; - color: #1f2937; + color: #1f2937; /* 娣辩伆 */ } -:deep(.u-cell__value) { - color: #6b7280; +:deep(.van-cell__value) { + color: #6b7280; /* 娆¤鐏� */ } + +/* 绉婚櫎涓嶅啀浣跨敤鐨� .cell-icon 鏍峰紡 */ </style> -- Gitblit v1.9.3