From ae1aad66a165ee7253bed2127a3b53baa40c2361 Mon Sep 17 00:00:00 2001 From: qingyiay <2386314947@qq.com> Date: 星期三, 17 五月 2023 08:35:33 +0800 Subject: [PATCH] 修复错误,增加验证 --- pages/public-page/forward/forward.vue | 423 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 321 insertions(+), 102 deletions(-) diff --git a/pages/public-page/forward/forward.vue b/pages/public-page/forward/forward.vue index e1a090f..1774faf 100644 --- a/pages/public-page/forward/forward.vue +++ b/pages/public-page/forward/forward.vue @@ -1,28 +1,62 @@ <template> <!-- 杞彂 --> <view class="forward"> - <view v-if="roleType == 1"><u-notice-bar :text="text" :fontSize="30" mode="link"></u-notice-bar></view> - <view v-else-if="roleType == 2"><u-notice-bar :text="text1" :fontSize="30" mode="link"></u-notice-bar></view> - <view class="forward-card" v-for="(val, index) in jhOrderPlanForwardList" :key="index"> - <u--form labelPosition="top" :model="forwardForm" ref="form1"> - <u-form-item label="杞彂瀵硅薄" labelWidth="20%" ref="item1" @click="forwardObjectClick(index)"> - <u--input v-model="val.name" placeholder="鐐瑰嚮閫夋嫨杞彂瀵硅薄" :readonly="true"></u--input> - </u-form-item> - <u-form-item label="杈撳叆鏁伴噺" labelWidth="20%" ref="item1"> - <view class="forward-card-amount"> - <view class="forward-card-amount-input"><u--input v-model="val.carNum" placeholder="璇疯緭鍏ヨ浆鍙戞暟閲�"></u--input></view> - <u-checkbox-group v-model="val.checkboxValue1" placement="column" @change="v => checkboxChange(v, index, val)"> - <u-checkbox :customStyle="{ marginBottom: '8px' }" size="30" labelSize="30" label="鍏ㄩ儴杞彂" name="鍏ㄩ儴杞彂" :disabled="val.ischecked"></u-checkbox> - </u-checkbox-group> - </view> - </u-form-item> - <u-form-item><u-button text="鍒犻櫎鏈粍" :hairline="false" type="error" @click="deleteGroup(index, val)"></u-button></u-form-item> - </u--form> + <view class="forward-banner"> + <view class="banner-block"> + <view class="arrow-left" @click="back"><u-icon name="arrow-left" size="40" color="#ffffff"></u-icon></view> + <view class="forward-text">杞彂</view> + </view> + </view> + <view v-if="roleType == 1" class="notice-bar"> + <u-notice-bar :text="text" :fontSize="30"></u-notice-bar> + <view + class="notice-icon" + style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/notice.png') no-repeat;background-size: cover; width: 42rpx;height: 42rpx;" + ></view> + </view> + <view v-else-if="roleType == 2" class="notice-bar"><u-notice-bar :text="text1" :fontSize="30"></u-notice-bar></view> + <view class="card-main"> + <view class="card-block"> + <view class="forward-card" v-for="(val, index) in jhOrderPlanForwardList" :key="index"> + <u-swipe-action> + <u-swipe-action-item :options="options1" @click="deleteGroup(index, val)" :index="index" :name="val.xsUserId || val.fleetId"> + <view class="card-content"> + <u--form labelPosition="left" :model="forwardForm" ref="form1"> + <u-form-item label="杞彂瀵硅薄" labelWidth="21%" ref="item1" @click="forwardObjectClick(index)"> + <u--input v-model="val.name" placeholder="鐐瑰嚮閫夋嫨杞彂瀵硅薄" :readonly="true" border="bottom"></u--input> + </u-form-item> + <u-form-item label="杈撳叆鏁伴噺" ref="item2" labelWidth="21%"> + <view class="forward-card-amount"> + <view class="forward-card-amount-input"> + <u--input + v-model="val.carNum" + placeholder="璇疯緭鍏ヨ浆鍙戞暟閲�" + @input="debouncecarNumInput(index, val.carNum)" + @blur="blurInput(index, val.carNum)" + border="bottom" + ></u--input> + </view> + <u-checkbox-group v-model="val.checkboxValue1" placement="column" @change="v => checkboxChange(v, index, val)"> + <u-checkbox size="30" shape="circle" labelSize="30" label="鍏ㄩ儴杞彂" name="鍏ㄩ儴杞彂" :disabled="val.ischecked"></u-checkbox> + </u-checkbox-group> + </view> + </u-form-item> + <!-- <u-form-item><u-button text="鍒犻櫎鏈粍" :hairline="false" type="error" @click="deleteGroup(index, val)"></u-button></u-form-item> --> + </u--form> + </view> + </u-swipe-action-item> + </u-swipe-action> + </view> + </view> + </view> + + <view class="utils-buttonGroup"> + <!-- 娣诲姞鎸夐挳 --> + <view class="AdddBtn"><u-button text="娣诲姞" :hairline="false" @click.stop="addForm" :disabled="whetherClick"></u-button></view> + <!-- 鎻愪氦鎸夐挳 --> + <view class="forwardBtn"><u-button text="鎻愪氦" :hairline="false" type="warning" @click.stop="submitForm" :disabled="whetherClick1"></u-button></view> </view> <!-- 澧炲姞鎸夐挳 --> - <view class="AdddBtn"><u-button text="娣诲姞" :hairline="false" type="primary" :customStyle="{ marginBottom: '8px' }" @click="addForm"></u-button></view> - <!-- 鎸夐挳 --> - <view class="forwardBtn"><u-button text="鎻愪氦" :hairline="false" type="warning" @click="submitForm"></u-button></view> <!-- 閫夋嫨璐т唬鎴栬溅闃熷脊鍑烘 --> <view class="selectHuoDaiOrFleet-container"> @@ -55,13 +89,14 @@ <script> import { customerId } from '@/utils/status'; +import toast from '../../../uni_modules/uview-ui/libs/config/props/toast'; export default { onLoad(params) { console.log(params, '杞彂椤甸潰鐨勫弬鏁�'); // 瀹㈡埛 this.cars2 = Number(params.cars2); - this.carNumSurplus1 = Number(params.carNumSurplus1); + this.tempcarNumSurplus1 = this.carNumSurplus1 = Number(params.carNumSurplus1); // 璐т唬 this.carNum = Number(params.carNum); this.carNumSurplusHuodai = this.forwardSurplus = Number(params.carNumSurplusHuodai); @@ -128,12 +163,24 @@ list1: [{ name: '杞﹂槦' }, { name: '璐т唬' }], tabHuoDai: false, carNumSurplus1: '', + tempcarNumSurplus1: '', cars2: '', carNum: '', carNumSurplusHuodai: '', formNum: 1, // 涓汉杞彂鏁版嵁 - personalForward: {} + personalForward: {}, + whetherClick: false, + whetherClick1: false, + // 婊戝姩鍗曞厓鏍奸厤缃� + options1: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#FB0101' + } + } + ] }; }, onShow() { @@ -155,6 +202,12 @@ } }, methods: { + // 杩斿洖涓婁竴椤� + back() { + uni.navigateBack({ + delta: 1 + }); + }, init() { switch (this.roleType) { case 1: @@ -187,8 +240,7 @@ } }, checkboxChange(value, index, v) { - uni.setStorageSync('allrelay', this.jhOrderPlanForwardList[index].carNum); - this.jhOrderPlanForwardList = this.jhOrderPlanForwardList.map((v, i) => { + this.jhOrderPlanForwardList = this.jhOrderPlanForwardList.map(v => { return { ...v, ischecked: false @@ -197,30 +249,34 @@ if (value.length != 0) { let tempforwardSurplus = this.forwardSurplus; let tempcarNumSurplus1 = this.carNumSurplus1; - if (v.id) { - this.$reqGet('jhorderplanforward', { forwardId: v.id }).then(res => { - this.personalForward = res.data; - // 璁$畻鍏ㄩ儴杞彂鏁� - // 瀹㈡埛 - if (this.roleType == 1) { - this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.personalForward.carNum, tempcarNumSurplus1); - } - tempcarNumSurplus1 = 0; - // 璐т唬 - if (this.roleType == 2) { - this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.personalForward.carNum, tempforwardSurplus); - } - tempforwardSurplus = 0; - }); - } else { - if (this.roleType == 1) { - this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.jhOrderPlanForwardList[index].carNum, this.carNumSurplus1); - } - tempcarNumSurplus1 = 0; - if (this.roleType == 2) { - this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.jhOrderPlanForwardList[index].carNum, this.forwardSurplus); - } - tempforwardSurplus = 0; + // if (v.id) { + // this.$reqGet('jhorderplanforward', { forwardId: v.id }).then(res => { + // this.personalForward = res.data; + // // 璁$畻鍏ㄩ儴杞彂鏁� + // // 瀹㈡埛 + // if (this.roleType == 1) { + // this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.personalForward.carNum, tempcarNumSurplus1); + // this.calculate(this.jhOrderPlanForwardList); + // if (tempcarNumSurplus1 == 0) { + // this.jhOrderPlanForwardList[index].carNum = this.allrelay(0, this.carNumSurplus1); + // } + // } + // tempcarNumSurplus1 = 0; + // // 璐т唬 + // if (this.roleType == 2) { + // this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.personalForward.carNum, tempforwardSurplus); + // } + // tempforwardSurplus = 0; + // }); + // } else { } + + if (this.roleType == 1) { + this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.carNumSurplus1, this.jhOrderPlanForwardList[index].carNum); + this.calculate(this.jhOrderPlanForwardList); + } + if (this.roleType == 2) { + this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.carNumSurplusHuodai, this.jhOrderPlanForwardList[index].carNum); + this.calculate(this.jhOrderPlanForwardList); } // 閫夋嫨涓�涓悗鍏朵綑绂佹澶嶉�� this.jhOrderPlanForwardList.forEach((v, i) => { @@ -228,23 +284,10 @@ v.ischecked = true; } }); + this.whetherClick = true; } else { - let tempforwardSurplus = this.forwardSurplus; - let tempcarNumSurplus1 = this.carNumSurplus1; - // 璐т唬 - if (this.roleType == 2) { - this.jhOrderPlanForwardList[index].carNum = this.allrelayto(this.jhOrderPlanForwardList[index].carNum, this.forwardSurplus); - if (this.jhOrderPlanForwardList[index].carNum <= 0) { - this.jhOrderPlanForwardList[index].carNum = 0; - } - } - // 瀹㈡埛 - if (this.roleType == 1) { - this.jhOrderPlanForwardList[index].carNum = this.allrelayto(this.jhOrderPlanForwardList[index].carNum, this.carNumSurplus1); - if (this.jhOrderPlanForwardList[index].carNum <= 0) { - this.jhOrderPlanForwardList[index].carNum = 0; - } - } + this.jhOrderPlanForwardList[index].carNum = 0; + this.calculate(this.jhOrderPlanForwardList); } }, // 鑾峰彇璐т唬鍒楄〃 @@ -298,6 +341,64 @@ } }); }, + // 璁$畻鎻愮叅鍗曟暟閲忥紝娣诲姞鎴栧垹闄ゆ椂璋冪敤 + calculate(arr) { + let total = arr.reduce((prev, cur) => { + return cur.carNum + prev; + }, 0); + console.log(total, '鎻愮叅鍗曚竴鍏辩殑鏁版嵁'); + if (this.roleType == 1) { + if (this.cars2 >= total) { + this.carNumSurplus1 = this.cars2 - total; + this.whetherClick = false; + this.whetherClick1 = false; + } else { + this.carNumSurplus1 = 0; + this.$u.toast('鍓╀綑鎻愮叅鍗曟暟閲忎笉瓒�'); + this.whetherClick = true; + this.whetherClick1 = true; + } + } + if (this.roleType == 2) { + if (this.carNum >= total) { + this.carNumSurplusHuodai = this.carNum - total; + this.whetherClick = false; + this.whetherClick1 = false; + } else { + this.carNumSurplusHuodai = 0; + this.$u.toast('鍓╀綑鎻愮叅鍗曟暟閲忎笉瓒�'); + this.whetherClick = true; + this.whetherClick1 = true; + } + } + }, + debouncecarNumInput(index, value) { + let time; + let that = this; + that.$set(that.jhOrderPlanForwardList[index], 'carNum', Number(value)); + if (that.roleType == 1) { + if (that.jhOrderPlanForwardList[index].carNum < that.carNumSurplus1) { + that.jhOrderPlanForwardList[index].checkboxValue1 = ''; + } + } + if (that.roleType == 2) { + if (that.jhOrderPlanForwardList[index].carNum < that.carNumSurplusHuodai) { + that.jhOrderPlanForwardList[index].checkboxValue1 = ''; + } + } + return (function() { + if (!time) { + time = setTimeout(() => { + that.calculate(that.jhOrderPlanForwardList); + time = null; + }, 800); + } + })(); + }, + blurInput(index, value) { + this.$set(this.jhOrderPlanForwardList[index], 'carNum', Number(value)); + this.calculate(this.jhOrderPlanForwardList); + }, // 娣诲姞涓�缁勮〃鍗� addForm() { // 鍒ゆ柇鏄惁鏈変竴涓閫夛紝濡傛灉鏈夊垯绂佹鏂板姞鐨勫閫夛紝娌℃湁鍒欎笉绂佹 @@ -306,7 +407,7 @@ this.jhOrderPlanForwardList.push({ orderPlanId: this.orderPlanId, name: '', - carNum: 0, + carNum: null, xsUserId: 0, fleetId: 0, checkboxValue1: '', @@ -316,21 +417,23 @@ this.jhOrderPlanForwardList.push({ orderPlanId: this.orderPlanId, name: '', - carNum: 0, + carNum: null, xsUserId: 0, fleetId: 0, checkboxValue1: '', ischecked: true }); } + this.calculate(this.jhOrderPlanForwardList); }, // 鍒犻櫎涓�缁勮〃鍗� deleteGroup(index, v) { let tempcarNum = v.carNum; - if (v.id && this.jhOrderPlanForwardList[index].carNum !== tempcarNum) { + if (v.id) { this.$reqPost('deleteForward', { id: v.id }, 'params').then(res => { if (res.code === 0) { this.jhOrderPlanForwardList.splice(index, 1); + this.calculate(this.jhOrderPlanForwardList); this.$u.toast('鍒犻櫎鎴愬姛'); } else if (res.code === 1) { this.$u.toast(res.msg); @@ -338,6 +441,7 @@ }); } else { this.jhOrderPlanForwardList.splice(index, 1); + this.calculate(this.jhOrderPlanForwardList); this.$u.toast('鍒犻櫎鎴愬姛'); } }, @@ -347,8 +451,9 @@ if (this.jhOrderPlanForwardList.length === 0) { this.$u.toast('璇疯嚦灏戦�夋嫨涓�缁勮浆鍙戝璞�'); } + let reg = /^[1-9]\d*$/; this.jhOrderPlanForwardList.forEach(v => { - if (isNaN(Number(v.carNum)) || Number(v.carNum) <= 0) { + if (!reg.test(v.carNum) || Number(v.carNum) <= 0) { this.$u.toast('璇疯緭鍏ュ悎娉曟暟瀛�'); isPass = false; return isPass; @@ -389,33 +494,127 @@ </script> <style lang="scss" scoped> -::v-deep.forward { - width: 90%; - margin: 0 auto; - - // 鍗$墖 - .forward-card { - margin-top: vww(10); - .notice-bar { - width: 100%; - height: vww(24); +@mixin flex { + display: flex; + justify-content: space-between; + align-items: center; +} +/deep/ .u-notice-bar { + background: rgba(255, 255, 255, 0.3) !important; + box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(27, 103, 255, 0); + border-radius: 28rpx; + .u-notice__content { + text { + text-shadow: 3rpx 3rpx 8rpx #4784fe; + font-size: 24rpx; + color: #fd1446 !important; + font-weight: 400; } - .u-form { - .u-form-item { - .u-form-item__body { - .u-form-item__body__right { - .u-form-item__body__right__content { - .u-form-item__body__right__content__slot { - .forward-card-amount { - display: flex; - justify-content: space-between; - align-items: flex-end; - .forward-card-amount-input { - width: vww(245); + } +} +/deep/ .u-input { + border-bottom: 1px solid #c4c4c4; + width: 458rpx; +} +::v-deep.forward { + width: 100%; + margin: 0 auto; + .forward-banner { + width: 100%; + height: 430rpx; + background: linear-gradient(0deg, #ffffff 0%, #0055fe 100%); + @include flex; + justify-content: flex-start; + overflow: hidden; + .banner-block { + width: 50%; + @include flex; + position: relative; + top: -75rpx; + left: 32rpx; + .forward-text { + width: 80rpx; + font-size: 40rpx; + font-weight: 400; + color: #ffffff; + line-height: 69rpx; + } + } + } + .notice-bar { + width: 688rpx; + height: 56rpx; + margin: 0 auto; + position: relative; + top: -200rpx; + background: transparent; + .notice-icon { + position: absolute; + top: 21rpx; + left: 7rpx; + } + } + .card-main { + width: 100%; + @include flex; + justify-content: center; + position: relative; + top: -100rpx; + z-index: 1; + margin-bottom: vww(40); + .card-block { + width: 690rpx; + @include flex; + flex-direction: column; + .forward-card { + margin-top: vww(10); + width: 690rpx; + height: 275rpx; + background: #ffffff; + box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15); + border-radius: 20rpx; + .card-content { + width: 612rpx; + margin-left: 48rpx; + margin-top: 24rpx; + // margin: 56rpx 30rpx 70rpx 48rpx; + .u-form { + .u-form-item { + .u-form-item__body { + .u-form-item__body__left { + .u-form-item__body__left__content { + .u-form-item__body__left__content__label { + font-weight: 400 !important; + color: #898989 !important; + font-size: 30rpx !important; + } } } - .u-input { - border: 1px solid #dddddd; + .u-form-item__body__right { + .u-form-item__body__right__content { + .u-form-item__body__right__content__slot { + .forward-card-amount { + display: flex; + justify-content: space-between; + align-items: flex-end; + .forward-card-amount-input { + .u-input { + width: 263rpx; + } + } + .u-checkbox-group { + position: relative; + top: vww(8); + left: vww(4); + .u-checkbox { + .u-checkbox__icon-wrap { + border-color: rgba(42, 97, 255, 1) !important; + } + } + } + } + } + } } } } @@ -423,21 +622,41 @@ } } } - .forward-card-amount { - display: flex; + } + .utils-buttonGroup { + width: 610rpx; + @include flex; + position: fixed; + bottom: vww(30); + left: vww(30); + z-index: 3; + .AdddBtn, + .forwardBtn { + width: 290rpx; + } + .AdddBtn { + .u-button { + height: 74rpx; + border: 1px solid #3b56eb; + border-radius: 37rpx 37rpx 37rpx 37rpx; + background: transparent; + color: #3b56eb; + } + } + .forwardBtn { + .u-button { + height: 74rpx; + color: #ffffff; + background: rgba(73, 123, 251, 1); + border: 0; + border-radius: 37rpx 37rpx 37rpx 37rpx; + } } } - - .forwardBtn { - width: 100%; - // position: fixed; - bottom: vww(50); - } - .selectHuoDaiOrFleet-container { .u-popup { .u-transition { - height: 95%; + height: 80%; .u-popup__content { overflow: scroll !important; -- Gitblit v1.9.1