From 025e46e11cb2962fd7692adfa401333758cc779b Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 02 九月 2025 14:00:34 +0800 Subject: [PATCH] 修改组件 --- src/pages/sales/receiptPayment/add.vue | 282 +++++++++++++++++++++++++++---------------------------- 1 files changed, 139 insertions(+), 143 deletions(-) diff --git a/src/pages/sales/receiptPayment/add.vue b/src/pages/sales/receiptPayment/add.vue index 150c570..3c88333 100644 --- a/src/pages/sales/receiptPayment/add.vue +++ b/src/pages/sales/receiptPayment/add.vue @@ -4,108 +4,151 @@ <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"> + <u-form @submit="onSubmit" ref="formRef" label-width="110" input-align="right" error-message-align="right"> <!-- 鍩烘湰淇℃伅 --> - <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> + <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" + /> + <template #right> + <up-icon + name="arrow-right" + @click="showPaymentTypePicker" + ></up-icon> + </template> + </u-form-item> + <u-form-item label="鏉ユ鏃ユ湡" prop="receiptPaymentDate" required border-bottom> + <u-input + v-model="form.receiptPaymentDate" + placeholder="璇烽�夋嫨" + readonly + @click="showDatePicker" + /> + <template #right> + <up-icon + name="arrow-right" + @click="showDatePicker" + ></up-icon> + </template> + </u-form-item> + <u-form-item label="鐧昏浜�" border-bottom> + <u-input + v-model="form.registrant" + placeholder="鑷姩濉厖" + readonly + /> + </u-form-item> + </u-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> + <FooterButtons + cancelText="鍙栨秷" + confirmText="淇濆瓨" + :loading="loading" + @cancel="onClickLeft" + @confirm="onSubmit" + /> + </u-form> <!-- 鍥炴鏂瑰紡閫夋嫨鍣� --> - <van-popup v-model:show="showPaymentType" position="bottom"> - <van-picker - :model-value="pickerValue" - :columns="receipt_payment_type" - @confirm="onPaymentTypeConfirm" - @cancel="showPaymentType = false" - /> - </van-popup> + <up-action-sheet + :show="showPaymentType" + :actions="receiptPaymentType" + title="閫夋嫨鍥炴褰㈠紡" + @select="onPaymentTypeConfirm" + @close="showPaymentType = false" + /> <!-- 鏃ユ湡閫夋嫨鍣� --> - <van-popup v-model:show="showDate" position="bottom"> - <van-date-picker + <up-popup :show="showDate" mode="bottom" @close="showDate = false"> + <up-datetime-picker + :show="true" v-model="currentDate" - title="閫夋嫨鏃ユ湡" @confirm="onDateConfirm" @cancel="showDate = false" + mode="date" /> - </van-popup> + </up-popup> </view> </template> <script setup> import { ref, onMounted, computed } from 'vue' +import FooterButtons from '@/components/FooterButtons.vue' import { receiptPaymentSaveOrUpdate, invoiceInfo } from '@/api/salesManagement/receiptPayment' import useUserStore from '@/store/modules/user' -import { showToast, showNotify } from 'vant' import { useDict } from '@/utils/dict' +import { formatDateToYMD } from '@/utils/ruoyi' + +// 鏄剧ず鎻愮ず淇℃伅 +const showToast = (message) => { + uni.showToast({ + title: message, + icon: 'none' + }) +} + +// 鏄剧ず鍔犺浇鎻愮ず +const showLoadingToast = (message) => { + uni.showLoading({ + title: message, + mask: true + }); +}; + +// 鍏抽棴鍔犺浇鎻愮ず +const closeToast = () => { + uni.hideLoading(); +}; const userStore = useUserStore() @@ -139,9 +182,9 @@ const { receipt_payment_type: dictReceiptPaymentType } = useDict('receipt_payment_type') // 杞崲瀛楀吀鏁版嵁鏍煎紡涓洪�夋嫨鍣ㄩ渶瑕佺殑鏍煎紡 -const receipt_payment_type = computed(() => { +const receiptPaymentType = computed(() => { return dictReceiptPaymentType.value.map(item => ({ - text: item.label, + name: item.label, value: item.value })) }) @@ -164,10 +207,9 @@ } // 纭鍥炴鏂瑰紡閫夋嫨 -const onPaymentTypeConfirm = ({ selectedValues, selectedOptions }) => { - form.value.receiptPaymentType = selectedOptions[0].value - form.value.receiptPaymentTypeName = selectedOptions[0].text - pickerValue.value = selectedValues; +const onPaymentTypeConfirm = (action) => { + form.value.receiptPaymentType = action.value + form.value.receiptPaymentTypeName = action.name showPaymentType.value = false } @@ -177,27 +219,27 @@ } // 纭鏃ユ湡閫夋嫨 -const onDateConfirm = ({ selectedValues }) => { - form.value.receiptPaymentDate = selectedValues.join('-') - currentDate.value = selectedValues - showDate.value = false +const onDateConfirm = (e) => { + form.value.receiptPaymentDate = formatDateToYMD(e.value) + currentDate.value = formatDateToYMD(e.value) + showDate.value = false; } // 鎻愪氦琛ㄥ崟 const onSubmit = () => { // 琛ㄥ崟楠岃瘉 if (!form.value.receiptPaymentAmount) { - showNotify({ type: 'warning', message: '璇疯緭鍏ュ洖娆鹃噾棰�' }) + showToast('璇疯緭鍏ュ洖娆鹃噾棰�') return } if (!form.value.receiptPaymentType) { - showNotify({ type: 'warning', message: '璇烽�夋嫨鍥炴褰㈠紡' }) + showToast('璇烽�夋嫨鍥炴褰㈠紡') return } if (!form.value.receiptPaymentDate) { - showNotify({ type: 'warning', message: '璇烽�夋嫨鏉ユ鏃ユ湡' }) + showToast('璇烽�夋嫨鏉ユ鏃ユ湡') return } @@ -242,51 +284,5 @@ </script> <style scoped lang="scss"> -.account-detail { - min-height: 100vh; - background: #f8f9fa; - padding-bottom: 5rem; -} - -.footer-btns { - position: fixed; - left: 0; - right: 0; - bottom: 0; - background: #fff; - display: flex; - justify-content: space-around; - align-items: center; - padding: 0.75rem 0; - box-shadow: 0 -0.125rem 0.5rem rgba(0,0,0,0.05); - z-index: 1000; -} - -.cancel-btn { - font-weight: 400; - font-size: 1rem; - color: #FFFFFF; - width: 6.375rem; - background: #C7C9CC; - box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2); - border-radius: 2.5rem 2.5rem 2.5rem 2.5rem; -} - -.save-btn { - font-weight: 400; - font-size: 1rem; - color: #FFFFFF; - width: 14rem; - background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%); - box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2); - border-radius: 2.5rem 2.5rem 2.5rem 2.5rem; -} - -// 鍝嶅簲寮忚皟鏁� -@media (max-width: 768px) { - .submit-section { - padding: 12px; - } -} -.tip-text { padding: 4px 16px 0 16px; font-size: 12px; color: #888; } +@import '@/static/scss/form-common.scss'; </style> -- Gitblit v1.9.3