Commit 76d4c8fc70d9dbab836cc06f8c2c0097b596b12d
1 parent
06ec2cd7
优惠需要申请测试中
Showing
11 changed files
with
118 additions
and
284 deletions
src/components/fee/addApplyRoomDiscount.vue
| 1 | <template> | 1 | <template> |
| 2 | - <el-dialog :title="$t('applyRoomDiscount.add.title')" :visible.sync="visible" width="60%" @close="handleClose"> | 2 | + <el-dialog :title="$t('applyRoomDiscount.add.title')" :visible.sync="visible" width="40%" @close="handleClose"> |
| 3 | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> | 3 | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
| 4 | <el-form-item :label="$t('applyRoomDiscount.add.room')" prop="roomName"> | 4 | <el-form-item :label="$t('applyRoomDiscount.add.room')" prop="roomName"> |
| 5 | <el-input v-model.trim="form.roomName" :placeholder="$t('applyRoomDiscount.add.roomPlaceholder')" | 5 | <el-input v-model.trim="form.roomName" :placeholder="$t('applyRoomDiscount.add.roomPlaceholder')" |
| @@ -64,9 +64,10 @@ | @@ -64,9 +64,10 @@ | ||
| 64 | </template> | 64 | </template> |
| 65 | 65 | ||
| 66 | <script> | 66 | <script> |
| 67 | -import { queryApplyRoomDiscountType ,listRoomsWhereFeeSet} from '@/api/fee/applyRoomDiscountManageApi' | 67 | +import { queryApplyRoomDiscountType, listRoomsWhereFeeSet,saveApplyRoomDiscount } from '@/api/fee/applyRoomDiscountManageApi' |
| 68 | import UploadImageUrl from '@/components/upload/UploadImageUrl' | 68 | import UploadImageUrl from '@/components/upload/UploadImageUrl' |
| 69 | import { getCommunityId } from '@/api/community/communityApi' | 69 | import { getCommunityId } from '@/api/community/communityApi' |
| 70 | +import { listFee } from '@/api/fee/feeApi' | ||
| 70 | 71 | ||
| 71 | export default { | 72 | export default { |
| 72 | name: 'AddApplyRoomDiscount', | 73 | name: 'AddApplyRoomDiscount', |
| @@ -130,7 +131,7 @@ export default { | @@ -130,7 +131,7 @@ export default { | ||
| 130 | }, | 131 | }, |
| 131 | handleClose() { | 132 | handleClose() { |
| 132 | this.$refs.form.resetFields() | 133 | this.$refs.form.resetFields() |
| 133 | - this.$refs.uploadImage.clear() | 134 | + this.$refs.uploadImage.close() |
| 134 | this.form = { | 135 | this.form = { |
| 135 | roomName: '', | 136 | roomName: '', |
| 136 | roomId: '', | 137 | roomId: '', |
| @@ -150,7 +151,7 @@ export default { | @@ -150,7 +151,7 @@ export default { | ||
| 150 | const { data } = await queryApplyRoomDiscountType({ | 151 | const { data } = await queryApplyRoomDiscountType({ |
| 151 | page: 1, | 152 | page: 1, |
| 152 | row: 50, | 153 | row: 50, |
| 153 | - communityId: this.form.communityId | 154 | + communityId: getCommunityId() |
| 154 | }) | 155 | }) |
| 155 | this.applyTypes = data | 156 | this.applyTypes = data |
| 156 | } catch (error) { | 157 | } catch (error) { |
| @@ -171,7 +172,7 @@ export default { | @@ -171,7 +172,7 @@ export default { | ||
| 171 | const params = { | 172 | const params = { |
| 172 | page: 1, | 173 | page: 1, |
| 173 | row: 1, | 174 | row: 1, |
| 174 | - communityId: this.form.communityId, | 175 | + communityId: getCommunityId(), |
| 175 | flag: 0, | 176 | flag: 0, |
| 176 | floorNum: parts[0].trim(), | 177 | floorNum: parts[0].trim(), |
| 177 | unitNum: parts[1].trim(), | 178 | unitNum: parts[1].trim(), |
| @@ -199,13 +200,13 @@ export default { | @@ -199,13 +200,13 @@ export default { | ||
| 199 | const params = { | 200 | const params = { |
| 200 | page: 1, | 201 | page: 1, |
| 201 | row: 50, | 202 | row: 50, |
| 202 | - communityId: this.form.communityId, | 203 | + communityId: getCommunityId(), |
| 203 | payerObjId: this.form.roomId, | 204 | payerObjId: this.form.roomId, |
| 204 | state: '2008001' | 205 | state: '2008001' |
| 205 | } | 206 | } |
| 206 | 207 | ||
| 207 | - const { data } = await this.$api.fee.listFee(params) | ||
| 208 | - this.feeTypeCds = data.fees | 208 | + const { fees } = await listFee(params) |
| 209 | + this.feeTypeCds = fees | ||
| 209 | } catch (error) { | 210 | } catch (error) { |
| 210 | console.error('查询费用项失败:', error) | 211 | console.error('查询费用项失败:', error) |
| 211 | } | 212 | } |
| @@ -233,7 +234,7 @@ export default { | @@ -233,7 +234,7 @@ export default { | ||
| 233 | async saveApplyRoomDiscount() { | 234 | async saveApplyRoomDiscount() { |
| 234 | try { | 235 | try { |
| 235 | this.form.communityId = getCommunityId() | 236 | this.form.communityId = getCommunityId() |
| 236 | - await this.$api.applyRoomDiscount.saveApplyRoomDiscount(this.form) | 237 | + await saveApplyRoomDiscount(this.form) |
| 237 | this.$message.success(this.$t('applyRoomDiscount.message.saveSuccess')) | 238 | this.$message.success(this.$t('applyRoomDiscount.message.saveSuccess')) |
| 238 | this.visible = false | 239 | this.visible = false |
| 239 | this.$emit('success') | 240 | this.$emit('success') |
src/components/fee/addApplyRoomDiscountType.vue
| 1 | <template> | 1 | <template> |
| 2 | - <el-dialog | ||
| 3 | - :title="$t('discountType.add.title')" | ||
| 4 | - :visible.sync="visible" | ||
| 5 | - width="50%" | ||
| 6 | - @close="handleClose" | ||
| 7 | - > | ||
| 8 | - <el-form | ||
| 9 | - ref="form" | ||
| 10 | - :model="formData" | ||
| 11 | - :rules="rules" | ||
| 12 | - label-width="120px" | ||
| 13 | - > | ||
| 14 | - <el-form-item | ||
| 15 | - :label="$t('discountType.form.typeName')" | ||
| 16 | - prop="typeName" | ||
| 17 | - > | ||
| 18 | - <el-input | ||
| 19 | - v-model="formData.typeName" | ||
| 20 | - :placeholder="$t('discountType.form.typeNamePlaceholder')" | ||
| 21 | - /> | 2 | + <el-dialog :title="$t('discountType.add.title')" :visible.sync="visible" width="40%" @close="handleClose"> |
| 3 | + <el-form ref="form" :model="formData" :rules="rules" label-width="120px"> | ||
| 4 | + <el-form-item :label="$t('discountType.form.typeName')" prop="typeName"> | ||
| 5 | + <el-input v-model="formData.typeName" :placeholder="$t('discountType.form.typeNamePlaceholder')" /> | ||
| 22 | </el-form-item> | 6 | </el-form-item> |
| 23 | - <el-form-item | ||
| 24 | - :label="$t('discountType.form.typeDesc')" | ||
| 25 | - prop="typeDesc" | ||
| 26 | - > | ||
| 27 | - <el-input | ||
| 28 | - v-model="formData.typeDesc" | ||
| 29 | - type="textarea" | ||
| 30 | - :placeholder="$t('discountType.form.typeDescPlaceholder')" | ||
| 31 | - :rows="3" | ||
| 32 | - /> | 7 | + <el-form-item :label="$t('discountType.form.typeDesc')" prop="typeDesc"> |
| 8 | + <el-input v-model="formData.typeDesc" type="textarea" :placeholder="$t('discountType.form.typeDescPlaceholder')" | ||
| 9 | + :rows="3" /> | ||
| 33 | </el-form-item> | 10 | </el-form-item> |
| 34 | </el-form> | 11 | </el-form> |
| 35 | 12 |
src/components/fee/addFeeDiscount.vue
| 1 | <template> | 1 | <template> |
| 2 | - <el-dialog :title="$t('feeDiscountManage.add.title')" :visible.sync="visible" width="60%" @close="handleClose"> | 2 | + <el-dialog :title="$t('feeDiscountManage.add.title')" :visible.sync="visible" width="40%" @close="handleClose"> |
| 3 | <el-form ref="form" :model="addFeeDiscountInfo" label-width="120px" :rules="rules"> | 3 | <el-form ref="form" :model="addFeeDiscountInfo" label-width="120px" :rules="rules"> |
| 4 | <el-form-item :label="$t('feeDiscountManage.add.discountName')" prop="discountName"> | 4 | <el-form-item :label="$t('feeDiscountManage.add.discountName')" prop="discountName"> |
| 5 | <el-input v-model.trim="addFeeDiscountInfo.discountName" | 5 | <el-input v-model.trim="addFeeDiscountInfo.discountName" |
src/components/fee/addPayFeeConfigDiscount.vue
| 1 | <template> | 1 | <template> |
| 2 | - <el-dialog | ||
| 3 | - :title="$t('addPayFeeConfigDiscount.addTitle')" | ||
| 4 | - :visible.sync="visible" | ||
| 5 | - width="800px" | ||
| 6 | - :close-on-click-modal="false" | ||
| 7 | - @closed="resetForm" | ||
| 8 | - > | 2 | + <el-dialog :title="$t('addPayFeeConfigDiscount.addTitle')" :visible.sync="visible" width="800px" |
| 3 | + :close-on-click-modal="false" @closed="resetForm"> | ||
| 9 | <el-form ref="form" :model="form" :rules="rules" label-width="160px"> | 4 | <el-form ref="form" :model="form" :rules="rules" label-width="160px"> |
| 10 | <el-form-item :label="$t('addPayFeeConfigDiscount.discountType')" prop="discountType"> | 5 | <el-form-item :label="$t('addPayFeeConfigDiscount.discountType')" prop="discountType"> |
| 11 | - <el-select | ||
| 12 | - v-model="form.discountType" | ||
| 13 | - :placeholder="$t('addPayFeeConfigDiscount.requiredPlaceholder')" | ||
| 14 | - @change="changeDiscountType" | ||
| 15 | - style="width: 100%" | ||
| 16 | - > | 6 | + <el-select v-model="form.discountType" :placeholder="$t('addPayFeeConfigDiscount.requiredPlaceholder')" |
| 7 | + @change="changeDiscountType" style="width: 100%"> | ||
| 17 | <el-option disabled value="">{{ $t('addPayFeeConfigDiscount.selectDiscountType') }}</el-option> | 8 | <el-option disabled value="">{{ $t('addPayFeeConfigDiscount.selectDiscountType') }}</el-option> |
| 18 | - <el-option value="1001">{{ $t('addPayFeeConfigDiscount.discount') }}</el-option> | ||
| 19 | - <el-option value="2002">{{ $t('addPayFeeConfigDiscount.penalty') }}</el-option> | 9 | + <el-option value="1001" :label="$t('addPayFeeConfigDiscount.discount')">{{ |
| 10 | + $t('addPayFeeConfigDiscount.discount') }}</el-option> | ||
| 11 | + <el-option value="2002" :label="$t('addPayFeeConfigDiscount.penalty')">{{ | ||
| 12 | + $t('addPayFeeConfigDiscount.penalty') }}</el-option> | ||
| 20 | </el-select> | 13 | </el-select> |
| 21 | </el-form-item> | 14 | </el-form-item> |
| 22 | 15 | ||
| 23 | <el-form-item :label="$t('addPayFeeConfigDiscount.discountName')" prop="discountId"> | 16 | <el-form-item :label="$t('addPayFeeConfigDiscount.discountName')" prop="discountId"> |
| 24 | - <el-select | ||
| 25 | - v-model="form.discountId" | ||
| 26 | - :placeholder="$t('addPayFeeConfigDiscount.requiredPlaceholder')" | ||
| 27 | - style="width: 100%" | ||
| 28 | - > | 17 | + <el-select v-model="form.discountId" :placeholder="$t('addPayFeeConfigDiscount.requiredPlaceholder')" |
| 18 | + style="width: 100%"> | ||
| 29 | <el-option disabled value="">{{ $t('addPayFeeConfigDiscount.selectDiscountName') }}</el-option> | 19 | <el-option disabled value="">{{ $t('addPayFeeConfigDiscount.selectDiscountName') }}</el-option> |
| 30 | - <el-option | ||
| 31 | - v-for="item in discounts" | ||
| 32 | - :key="item.discountId" | ||
| 33 | - :label="item.discountName" | ||
| 34 | - :value="item.discountId" | ||
| 35 | - /> | 20 | + <el-option v-for="item in discounts" :key="item.discountId" :label="item.discountName" |
| 21 | + :value="item.discountId" /> | ||
| 36 | </el-select> | 22 | </el-select> |
| 37 | </el-form-item> | 23 | </el-form-item> |
| 38 | 24 | ||
| 39 | <el-form-item :label="$t('addPayFeeConfigDiscount.paymentPeriod')" required> | 25 | <el-form-item :label="$t('addPayFeeConfigDiscount.paymentPeriod')" required> |
| 40 | <el-col :span="11"> | 26 | <el-col :span="11"> |
| 41 | <el-form-item prop="startTime"> | 27 | <el-form-item prop="startTime"> |
| 42 | - <el-date-picker | ||
| 43 | - v-model="form.startTime" | ||
| 44 | - type="datetime" | ||
| 45 | - :placeholder="$t('addPayFeeConfigDiscount.startTimePlaceholder')" | ||
| 46 | - style="width: 100%" | ||
| 47 | - /> | 28 | + <el-date-picker v-model="form.startTime" type="datetime" |
| 29 | + :placeholder="$t('addPayFeeConfigDiscount.startTimePlaceholder')" style="width: 100%" | ||
| 30 | + value-format="yyyy-MM-dd HH:mm:ss" /> | ||
| 48 | </el-form-item> | 31 | </el-form-item> |
| 49 | <div class="el-form-item__tip">{{ $t('addPayFeeConfigDiscount.paymentPeriodTip') }}</div> | 32 | <div class="el-form-item__tip">{{ $t('addPayFeeConfigDiscount.paymentPeriodTip') }}</div> |
| 50 | </el-col> | 33 | </el-col> |
| 51 | <el-col :span="2" class="text-center">-</el-col> | 34 | <el-col :span="2" class="text-center">-</el-col> |
| 52 | <el-col :span="11"> | 35 | <el-col :span="11"> |
| 53 | <el-form-item prop="endTime"> | 36 | <el-form-item prop="endTime"> |
| 54 | - <el-date-picker | ||
| 55 | - v-model="form.endTime" | ||
| 56 | - type="datetime" | ||
| 57 | - :placeholder="$t('addPayFeeConfigDiscount.endTimePlaceholder')" | ||
| 58 | - style="width: 100%" | ||
| 59 | - /> | 37 | + <el-date-picker v-model="form.endTime" type="datetime" |
| 38 | + :placeholder="$t('addPayFeeConfigDiscount.endTimePlaceholder')" style="width: 100%" | ||
| 39 | + value-format="yyyy-MM-dd HH:mm:ss" /> | ||
| 60 | </el-form-item> | 40 | </el-form-item> |
| 61 | </el-col> | 41 | </el-col> |
| 62 | </el-form-item> | 42 | </el-form-item> |
| 63 | 43 | ||
| 64 | - <el-form-item | ||
| 65 | - v-if="form.discountType !== '2002'" | ||
| 66 | - :label="$t('addPayFeeConfigDiscount.discountEndTime')" | ||
| 67 | - prop="payMaxEndTime" | ||
| 68 | - > | ||
| 69 | - <el-date-picker | ||
| 70 | - v-model="form.payMaxEndTime" | ||
| 71 | - type="datetime" | ||
| 72 | - :placeholder="$t('addPayFeeConfigDiscount.discountEndTimePlaceholder')" | ||
| 73 | - style="width: 100%" | ||
| 74 | - /> | 44 | + <el-form-item v-if="form.discountType !== '2002'" :label="$t('addPayFeeConfigDiscount.discountEndTime')" |
| 45 | + prop="payMaxEndTime"> | ||
| 46 | + <el-date-picker v-model="form.payMaxEndTime" type="datetime" | ||
| 47 | + :placeholder="$t('addPayFeeConfigDiscount.discountEndTimePlaceholder')" style="width: 100%" | ||
| 48 | + value-format="yyyy-MM-dd HH:mm:ss" /> | ||
| 75 | <div class="el-form-item__tip">{{ $t('addPayFeeConfigDiscount.discountEndTimeTip') }}</div> | 49 | <div class="el-form-item__tip">{{ $t('addPayFeeConfigDiscount.discountEndTimeTip') }}</div> |
| 76 | </el-form-item> | 50 | </el-form-item> |
| 77 | </el-form> | 51 | </el-form> |
| @@ -144,7 +118,7 @@ export default { | @@ -144,7 +118,7 @@ export default { | ||
| 144 | }, | 118 | }, |
| 145 | async changeDiscountType() { | 119 | async changeDiscountType() { |
| 146 | if (!this.form.discountType) return | 120 | if (!this.form.discountType) return |
| 147 | - | 121 | + |
| 148 | try { | 122 | try { |
| 149 | const params = { | 123 | const params = { |
| 150 | page: 1, | 124 | page: 1, |
| @@ -161,7 +135,7 @@ export default { | @@ -161,7 +135,7 @@ export default { | ||
| 161 | async savePayFeeConfigDiscount() { | 135 | async savePayFeeConfigDiscount() { |
| 162 | this.$refs.form.validate(async valid => { | 136 | this.$refs.form.validate(async valid => { |
| 163 | if (!valid) return | 137 | if (!valid) return |
| 164 | - | 138 | + |
| 165 | try { | 139 | try { |
| 166 | this.loading = true | 140 | this.loading = true |
| 167 | await savePayFeeConfigDiscount(this.form) | 141 | await savePayFeeConfigDiscount(this.form) |
| @@ -183,6 +157,7 @@ export default { | @@ -183,6 +157,7 @@ export default { | ||
| 183 | .text-center { | 157 | .text-center { |
| 184 | text-align: center; | 158 | text-align: center; |
| 185 | } | 159 | } |
| 160 | + | ||
| 186 | .el-form-item__tip { | 161 | .el-form-item__tip { |
| 187 | text-align: left; | 162 | text-align: left; |
| 188 | color: #999; | 163 | color: #999; |
src/components/fee/applyRoomDiscountRecord.vue
| @@ -96,8 +96,10 @@ export default { | @@ -96,8 +96,10 @@ export default { | ||
| 96 | isTrue: null, | 96 | isTrue: null, |
| 97 | communityId: '' | 97 | communityId: '' |
| 98 | } | 98 | } |
| 99 | - this.$refs.uploadImageUrl.clear() | ||
| 100 | - this.$refs.uploadVedio.clear() | 99 | + setTimeout(() => { |
| 100 | + this.$refs.uploadImageUrl.clearImages() | ||
| 101 | + this.$refs.uploadVedio.clear() | ||
| 102 | + }, 500) | ||
| 101 | }, | 103 | }, |
| 102 | handleClose() { | 104 | handleClose() { |
| 103 | this.visible = false | 105 | this.visible = false |
src/components/fee/editApplyRoomDiscount.vue
| @@ -93,17 +93,17 @@ export default { | @@ -93,17 +93,17 @@ export default { | ||
| 93 | ...data, | 93 | ...data, |
| 94 | communityId: getCommunityId() | 94 | communityId: getCommunityId() |
| 95 | } | 95 | } |
| 96 | - this.$nextTick(() => { | 96 | + setTimeout(() => { |
| 97 | if (this.$refs.uploadImage) { | 97 | if (this.$refs.uploadImage) { |
| 98 | this.$refs.uploadImage.setImages(this.form.urls || []) | 98 | this.$refs.uploadImage.setImages(this.form.urls || []) |
| 99 | } | 99 | } |
| 100 | - }) | 100 | + }, 500) |
| 101 | this.visible = true | 101 | this.visible = true |
| 102 | }, | 102 | }, |
| 103 | handleClose() { | 103 | handleClose() { |
| 104 | this.$refs.form.resetFields() | 104 | this.$refs.form.resetFields() |
| 105 | if (this.$refs.uploadImage) { | 105 | if (this.$refs.uploadImage) { |
| 106 | - this.$refs.uploadImage.clear() | 106 | + this.$refs.uploadImage.close() |
| 107 | } | 107 | } |
| 108 | this.form = { | 108 | this.form = { |
| 109 | ardId: '', | 109 | ardId: '', |
src/components/fee/editApplyRoomDiscountType.vue
| 1 | <template> | 1 | <template> |
| 2 | - <el-dialog | ||
| 3 | - :title="$t('discountType.edit.title')" | ||
| 4 | - :visible.sync="visible" | ||
| 5 | - width="50%" | ||
| 6 | - @close="handleClose" | ||
| 7 | - > | ||
| 8 | - <el-form | ||
| 9 | - ref="form" | ||
| 10 | - :model="formData" | ||
| 11 | - :rules="rules" | ||
| 12 | - label-width="120px" | ||
| 13 | - > | ||
| 14 | - <el-form-item | ||
| 15 | - :label="$t('discountType.form.applyType')" | ||
| 16 | - prop="applyType" | ||
| 17 | - > | ||
| 18 | - <el-input | ||
| 19 | - v-model="formData.applyType" | ||
| 20 | - disabled | ||
| 21 | - /> | 2 | + <el-dialog :title="$t('discountType.edit.title')" :visible.sync="visible" width="40%" @close="handleClose"> |
| 3 | + <el-form ref="form" :model="formData" :rules="rules" label-width="120px"> | ||
| 4 | + <el-form-item :label="$t('discountType.form.applyType')" prop="applyType"> | ||
| 5 | + <el-input v-model="formData.applyType" disabled /> | ||
| 22 | </el-form-item> | 6 | </el-form-item> |
| 23 | - <el-form-item | ||
| 24 | - :label="$t('discountType.form.typeName')" | ||
| 25 | - prop="typeName" | ||
| 26 | - > | ||
| 27 | - <el-input | ||
| 28 | - v-model="formData.typeName" | ||
| 29 | - :placeholder="$t('discountType.form.typeNamePlaceholder')" | ||
| 30 | - /> | 7 | + <el-form-item :label="$t('discountType.form.typeName')" prop="typeName"> |
| 8 | + <el-input v-model="formData.typeName" :placeholder="$t('discountType.form.typeNamePlaceholder')" /> | ||
| 31 | </el-form-item> | 9 | </el-form-item> |
| 32 | - <el-form-item | ||
| 33 | - :label="$t('discountType.form.typeDesc')" | ||
| 34 | - prop="typeDesc" | ||
| 35 | - > | ||
| 36 | - <el-input | ||
| 37 | - v-model="formData.typeDesc" | ||
| 38 | - type="textarea" | ||
| 39 | - :placeholder="$t('discountType.form.typeDescPlaceholder')" | ||
| 40 | - :rows="3" | ||
| 41 | - /> | 10 | + <el-form-item :label="$t('discountType.form.typeDesc')" prop="typeDesc"> |
| 11 | + <el-input v-model="formData.typeDesc" type="textarea" :placeholder="$t('discountType.form.typeDescPlaceholder')" | ||
| 12 | + :rows="3" /> | ||
| 42 | </el-form-item> | 13 | </el-form-item> |
| 43 | </el-form> | 14 | </el-form> |
| 44 | 15 |
src/components/fee/editFeeDiscount.vue
| 1 | <template> | 1 | <template> |
| 2 | - <el-dialog | ||
| 3 | - :title="$t('feeDiscountManage.edit.title')" | ||
| 4 | - :visible.sync="visible" | ||
| 5 | - width="60%" | ||
| 6 | - @close="handleClose" | ||
| 7 | - > | ||
| 8 | - <el-form | ||
| 9 | - ref="form" | ||
| 10 | - :model="editFeeDiscountInfo" | ||
| 11 | - label-width="120px" | ||
| 12 | - :rules="rules" | ||
| 13 | - > | ||
| 14 | - <el-form-item | ||
| 15 | - :label="$t('feeDiscountManage.edit.discountName')" | ||
| 16 | - prop="discountName" | ||
| 17 | - > | ||
| 18 | - <el-input | ||
| 19 | - v-model.trim="editFeeDiscountInfo.discountName" | ||
| 20 | - :placeholder="$t('feeDiscountManage.edit.discountNamePlaceholder')" | ||
| 21 | - /> | 2 | + <el-dialog :title="$t('feeDiscountManage.edit.title')" :visible.sync="visible" width="40%" @close="handleClose"> |
| 3 | + <el-form ref="form" :model="editFeeDiscountInfo" label-width="120px" :rules="rules"> | ||
| 4 | + <el-form-item :label="$t('feeDiscountManage.edit.discountName')" prop="discountName"> | ||
| 5 | + <el-input v-model.trim="editFeeDiscountInfo.discountName" | ||
| 6 | + :placeholder="$t('feeDiscountManage.edit.discountNamePlaceholder')" /> | ||
| 22 | </el-form-item> | 7 | </el-form-item> |
| 23 | - <el-form-item | ||
| 24 | - :label="$t('feeDiscountManage.edit.discountType')" | ||
| 25 | - prop="discountType" | ||
| 26 | - > | ||
| 27 | - <el-select | ||
| 28 | - v-model="editFeeDiscountInfo.discountType" | ||
| 29 | - :placeholder="$t('feeDiscountManage.edit.discountTypePlaceholder')" | ||
| 30 | - style="width:100%" | ||
| 31 | - @change="_changeEditFeeDiscountType" | ||
| 32 | - > | ||
| 33 | - <el-option | ||
| 34 | - v-for="item in editFeeDiscountInfo.discountTypes" | ||
| 35 | - :key="item.statusCd" | ||
| 36 | - :label="item.name" | ||
| 37 | - :value="item.statusCd" | ||
| 38 | - /> | 8 | + <el-form-item :label="$t('feeDiscountManage.edit.discountType')" prop="discountType"> |
| 9 | + <el-select v-model="editFeeDiscountInfo.discountType" | ||
| 10 | + :placeholder="$t('feeDiscountManage.edit.discountTypePlaceholder')" style="width:100%" | ||
| 11 | + @change="_changeEditFeeDiscountType"> | ||
| 12 | + <el-option v-for="item in editFeeDiscountInfo.discountTypes" :key="item.statusCd" :label="item.name" | ||
| 13 | + :value="item.statusCd" /> | ||
| 39 | </el-select> | 14 | </el-select> |
| 40 | </el-form-item> | 15 | </el-form-item> |
| 41 | - <el-form-item | ||
| 42 | - :label="$t('feeDiscountManage.edit.rule')" | ||
| 43 | - prop="ruleId" | ||
| 44 | - > | ||
| 45 | - <el-select | ||
| 46 | - v-model="editFeeDiscountInfo.ruleId" | ||
| 47 | - :placeholder="$t('feeDiscountManage.edit.rulePlaceholder')" | ||
| 48 | - style="width:100%" | ||
| 49 | - @change="_changeEditFeeDiscountRule" | ||
| 50 | - > | ||
| 51 | - <el-option | ||
| 52 | - v-for="item in editFeeDiscountInfo.rules" | ||
| 53 | - :key="item.ruleId" | ||
| 54 | - :label="item.ruleName" | ||
| 55 | - :value="item.ruleId" | ||
| 56 | - /> | 16 | + <el-form-item :label="$t('feeDiscountManage.edit.rule')" prop="ruleId"> |
| 17 | + <el-select v-model="editFeeDiscountInfo.ruleId" :placeholder="$t('feeDiscountManage.edit.rulePlaceholder')" | ||
| 18 | + style="width:100%" @change="_changeEditFeeDiscountRule"> | ||
| 19 | + <el-option v-for="item in editFeeDiscountInfo.rules" :key="item.ruleId" :label="item.ruleName" | ||
| 20 | + :value="item.ruleId" /> | ||
| 57 | </el-select> | 21 | </el-select> |
| 58 | </el-form-item> | 22 | </el-form-item> |
| 59 | - <el-form-item | ||
| 60 | - v-for="(item,index) in editFeeDiscountInfo.feeDiscountRuleSpecs" | ||
| 61 | - :key="index" | ||
| 62 | - :label="item.specName" | ||
| 63 | - :prop="'feeDiscountRuleSpecs.' + index + '.specValue'" | ||
| 64 | - :rules="{ | 23 | + <el-form-item v-for="(item, index) in editFeeDiscountInfo.feeDiscountRuleSpecs" :key="index" :label="item.specName" |
| 24 | + :prop="'feeDiscountRuleSpecs.' + index + '.specValue'" :rules="{ | ||
| 65 | required: true, | 25 | required: true, |
| 66 | - message: $t('feeDiscountManage.edit.specValueRequired', {specName: item.specName}), | 26 | + message: $t('feeDiscountManage.edit.specValueRequired', { specName: item.specName }), |
| 67 | trigger: 'blur' | 27 | trigger: 'blur' |
| 68 | - }" | ||
| 69 | - > | ||
| 70 | - <el-input | ||
| 71 | - v-model.trim="item.specValue" | ||
| 72 | - type="number" | ||
| 73 | - :placeholder="item.remark" | ||
| 74 | - /> | 28 | + }"> |
| 29 | + <el-input v-model.trim="item.specValue" type="number" :placeholder="item.remark" /> | ||
| 75 | </el-form-item> | 30 | </el-form-item> |
| 76 | <el-form-item :label="$t('feeDiscountManage.edit.discountDesc')"> | 31 | <el-form-item :label="$t('feeDiscountManage.edit.discountDesc')"> |
| 77 | - <el-input | ||
| 78 | - v-model.trim="editFeeDiscountInfo.discountDesc" | ||
| 79 | - type="textarea" | ||
| 80 | - :placeholder="$t('feeDiscountManage.edit.discountDescPlaceholder')" | ||
| 81 | - :rows="3" | ||
| 82 | - /> | 32 | + <el-input v-model.trim="editFeeDiscountInfo.discountDesc" type="textarea" |
| 33 | + :placeholder="$t('feeDiscountManage.edit.discountDescPlaceholder')" :rows="3" /> | ||
| 83 | </el-form-item> | 34 | </el-form-item> |
| 84 | </el-form> | 35 | </el-form> |
| 85 | <span slot="footer" class="dialog-footer"> | 36 | <span slot="footer" class="dialog-footer"> |
| @@ -164,7 +115,7 @@ export default { | @@ -164,7 +115,7 @@ export default { | ||
| 164 | }, | 115 | }, |
| 165 | async _loadEditFeeDiscountRules() { | 116 | async _loadEditFeeDiscountRules() { |
| 166 | if (!this.editFeeDiscountInfo.discountType) return | 117 | if (!this.editFeeDiscountInfo.discountType) return |
| 167 | - | 118 | + |
| 168 | try { | 119 | try { |
| 169 | const params = { | 120 | const params = { |
| 170 | page: 1, | 121 | page: 1, |
| @@ -196,7 +147,7 @@ export default { | @@ -196,7 +147,7 @@ export default { | ||
| 196 | async editFeeDiscount() { | 147 | async editFeeDiscount() { |
| 197 | this.$refs.form.validate(async valid => { | 148 | this.$refs.form.validate(async valid => { |
| 198 | if (!valid) return | 149 | if (!valid) return |
| 199 | - | 150 | + |
| 200 | try { | 151 | try { |
| 201 | await updateFeeDiscount(this.editFeeDiscountInfo) | 152 | await updateFeeDiscount(this.editFeeDiscountInfo) |
| 202 | this.$message.success(this.$t('common.saveSuccess')) | 153 | this.$message.success(this.$t('common.saveSuccess')) |
src/components/fee/reviewApplyRoomDiscount.vue
| @@ -103,6 +103,7 @@ | @@ -103,6 +103,7 @@ | ||
| 103 | import { queryFeeDiscount, updateReviewApplyRoomDiscount } from '@/api/fee/applyRoomDiscountManageApi' | 103 | import { queryFeeDiscount, updateReviewApplyRoomDiscount } from '@/api/fee/applyRoomDiscountManageApi' |
| 104 | import ViewImage from '@/components/system/viewImage' | 104 | import ViewImage from '@/components/system/viewImage' |
| 105 | import { getCommunityId } from '@/api/community/communityApi' | 105 | import { getCommunityId } from '@/api/community/communityApi' |
| 106 | +import { queryFeeDetail } from '@/api/fee/propertyFeeApi' | ||
| 106 | 107 | ||
| 107 | export default { | 108 | export default { |
| 108 | name: 'ReviewApplyRoomDiscount', | 109 | name: 'ReviewApplyRoomDiscount', |
| @@ -228,14 +229,14 @@ export default { | @@ -228,14 +229,14 @@ export default { | ||
| 228 | }, | 229 | }, |
| 229 | async loadFees() { | 230 | async loadFees() { |
| 230 | try { | 231 | try { |
| 231 | - const { data } = await this.$api.fee.queryFeeDetail({ | 232 | + const { feeDetails } = await queryFeeDetail({ |
| 232 | page: 1, | 233 | page: 1, |
| 233 | row: 50, | 234 | row: 50, |
| 234 | communityId: this.form.communityId, | 235 | communityId: this.form.communityId, |
| 235 | feeId: this.form.feeId, | 236 | feeId: this.form.feeId, |
| 236 | state: '1400' | 237 | state: '1400' |
| 237 | }) | 238 | }) |
| 238 | - this.fees = data.feeDetails | 239 | + this.fees = feeDetails |
| 239 | } catch (error) { | 240 | } catch (error) { |
| 240 | console.error('加载缴费记录失败:', error) | 241 | console.error('加载缴费记录失败:', error) |
| 241 | } | 242 | } |
| @@ -266,7 +267,9 @@ export default { | @@ -266,7 +267,9 @@ export default { | ||
| 266 | return `/callComponent/download/getFile/file?fileId=${url}&communityId=-1&time=${new Date().getTime()}` | 267 | return `/callComponent/download/getFile/file?fileId=${url}&communityId=-1&time=${new Date().getTime()}` |
| 267 | }, | 268 | }, |
| 268 | showImage(url) { | 269 | showImage(url) { |
| 269 | - this.$refs.viewImage.open(this.getImageUrl(url)) | 270 | + setTimeout(() => { |
| 271 | + this.$refs.viewImage.open(this.getImageUrl(url)) | ||
| 272 | + }, 100) | ||
| 270 | }, | 273 | }, |
| 271 | submitForm() { | 274 | submitForm() { |
| 272 | this.$refs.form.validate(valid => { | 275 | this.$refs.form.validate(valid => { |
src/views/fee/discountTypeList.vue
| @@ -2,23 +2,15 @@ | @@ -2,23 +2,15 @@ | ||
| 2 | <div class="discount-type-container"> | 2 | <div class="discount-type-container"> |
| 3 | <!-- 查询条件 --> | 3 | <!-- 查询条件 --> |
| 4 | <el-card class="search-card"> | 4 | <el-card class="search-card"> |
| 5 | - <div slot="header" class="clearfix"> | 5 | + <div slot="header" class="flex justify-between"> |
| 6 | <span>{{ $t('discountType.search.title') }}</span> | 6 | <span>{{ $t('discountType.search.title') }}</span> |
| 7 | </div> | 7 | </div> |
| 8 | <el-row :gutter="20"> | 8 | <el-row :gutter="20"> |
| 9 | <el-col :span="6"> | 9 | <el-col :span="6"> |
| 10 | - <el-input | ||
| 11 | - v-model.trim="searchForm.applyType" | ||
| 12 | - :placeholder="$t('discountType.search.applyType')" | ||
| 13 | - clearable | ||
| 14 | - /> | 10 | + <el-input v-model.trim="searchForm.applyType" :placeholder="$t('discountType.search.applyType')" clearable /> |
| 15 | </el-col> | 11 | </el-col> |
| 16 | <el-col :span="6"> | 12 | <el-col :span="6"> |
| 17 | - <el-input | ||
| 18 | - v-model.trim="searchForm.typeName" | ||
| 19 | - :placeholder="$t('discountType.search.typeName')" | ||
| 20 | - clearable | ||
| 21 | - /> | 13 | + <el-input v-model.trim="searchForm.typeName" :placeholder="$t('discountType.search.typeName')" clearable /> |
| 22 | </el-col> | 14 | </el-col> |
| 23 | <el-col :span="4"> | 15 | <el-col :span="4"> |
| 24 | <el-button type="primary" @click="handleSearch"> | 16 | <el-button type="primary" @click="handleSearch"> |
| @@ -30,7 +22,7 @@ | @@ -30,7 +22,7 @@ | ||
| 30 | 22 | ||
| 31 | <!-- 列表 --> | 23 | <!-- 列表 --> |
| 32 | <el-card class="list-card"> | 24 | <el-card class="list-card"> |
| 33 | - <div slot="header" class="clearfix"> | 25 | + <div slot="header" class="flex justify-between"> |
| 34 | <span>{{ $t('discountType.list.title') }}</span> | 26 | <span>{{ $t('discountType.list.title') }}</span> |
| 35 | <div style="float: right;"> | 27 | <div style="float: right;"> |
| 36 | <el-button type="primary" size="small" @click="handleAdd"> | 28 | <el-button type="primary" size="small" @click="handleAdd"> |
| @@ -42,65 +34,26 @@ | @@ -42,65 +34,26 @@ | ||
| 42 | </div> | 34 | </div> |
| 43 | </div> | 35 | </div> |
| 44 | 36 | ||
| 45 | - <el-table | ||
| 46 | - v-loading="loading" | ||
| 47 | - :data="tableData" | ||
| 48 | - border | ||
| 49 | - style="width: 100%" | ||
| 50 | - > | ||
| 51 | - <el-table-column | ||
| 52 | - prop="applyType" | ||
| 53 | - :label="$t('discountType.table.applyType')" | ||
| 54 | - align="center" | ||
| 55 | - /> | ||
| 56 | - <el-table-column | ||
| 57 | - prop="typeName" | ||
| 58 | - :label="$t('discountType.table.typeName')" | ||
| 59 | - align="center" | ||
| 60 | - /> | ||
| 61 | - <el-table-column | ||
| 62 | - prop="typeDesc" | ||
| 63 | - :label="$t('discountType.table.typeDesc')" | ||
| 64 | - align="center" | ||
| 65 | - /> | ||
| 66 | - <el-table-column | ||
| 67 | - prop="createTime" | ||
| 68 | - :label="$t('discountType.table.createTime')" | ||
| 69 | - align="center" | ||
| 70 | - /> | ||
| 71 | - <el-table-column | ||
| 72 | - :label="$t('common.operation')" | ||
| 73 | - align="center" | ||
| 74 | - width="200" | ||
| 75 | - > | 37 | + <el-table v-loading="loading" :data="tableData" border style="width: 100%"> |
| 38 | + <el-table-column prop="applyType" :label="$t('discountType.table.applyType')" align="center" /> | ||
| 39 | + <el-table-column prop="typeName" :label="$t('discountType.table.typeName')" align="center" /> | ||
| 40 | + <el-table-column prop="typeDesc" :label="$t('discountType.table.typeDesc')" align="center" /> | ||
| 41 | + <el-table-column prop="createTime" :label="$t('discountType.table.createTime')" align="center" /> | ||
| 42 | + <el-table-column :label="$t('common.operation')" align="center" width="200"> | ||
| 76 | <template slot-scope="scope"> | 43 | <template slot-scope="scope"> |
| 77 | - <el-button | ||
| 78 | - size="mini" | ||
| 79 | - type="primary" | ||
| 80 | - @click="handleEdit(scope.row)" | ||
| 81 | - > | 44 | + <el-button size="mini" type="primary" @click="handleEdit(scope.row)"> |
| 82 | {{ $t('common.edit') }} | 45 | {{ $t('common.edit') }} |
| 83 | </el-button> | 46 | </el-button> |
| 84 | - <el-button | ||
| 85 | - size="mini" | ||
| 86 | - type="danger" | ||
| 87 | - @click="handleDelete(scope.row)" | ||
| 88 | - > | 47 | + <el-button size="mini" type="danger" @click="handleDelete(scope.row)"> |
| 89 | {{ $t('common.delete') }} | 48 | {{ $t('common.delete') }} |
| 90 | </el-button> | 49 | </el-button> |
| 91 | </template> | 50 | </template> |
| 92 | </el-table-column> | 51 | </el-table-column> |
| 93 | </el-table> | 52 | </el-table> |
| 94 | 53 | ||
| 95 | - <el-pagination | ||
| 96 | - :current-page.sync="page.current" | ||
| 97 | - :page-sizes="[10, 20, 30, 50]" | ||
| 98 | - :page-size="page.size" | ||
| 99 | - :total="page.total" | ||
| 100 | - layout="total, sizes, prev, pager, next, jumper" | ||
| 101 | - @size-change="handleSizeChange" | ||
| 102 | - @current-change="handleCurrentChange" | ||
| 103 | - /> | 54 | + <el-pagination :current-page.sync="page.current" :page-sizes="[10, 20, 30, 50]" :page-size="page.size" |
| 55 | + :total="page.total" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" | ||
| 56 | + @current-change="handleCurrentChange" /> | ||
| 104 | </el-card> | 57 | </el-card> |
| 105 | 58 | ||
| 106 | <!-- 组件 --> | 59 | <!-- 组件 --> |
src/views/fee/payFeeConfigDiscountManageList.vue
| @@ -18,7 +18,11 @@ | @@ -18,7 +18,11 @@ | ||
| 18 | 18 | ||
| 19 | <el-table :data="payFeeConfigDiscounts" border style="width: 100%"> | 19 | <el-table :data="payFeeConfigDiscounts" border style="width: 100%"> |
| 20 | <el-table-column prop="configDiscountId" :label="$t('payFeeConfigDiscountManage.discountId')" align="center" /> | 20 | <el-table-column prop="configDiscountId" :label="$t('payFeeConfigDiscountManage.discountId')" align="center" /> |
| 21 | - <el-table-column prop="feeName" :label="$t('payFeeConfigDiscountManage.feeName')" align="center" /> | 21 | + <el-table-column prop="feeName" :label="$t('payFeeConfigDiscountManage.feeName')" align="center" > |
| 22 | + <template > | ||
| 23 | + {{ feeName }} | ||
| 24 | + </template> | ||
| 25 | + </el-table-column> | ||
| 22 | <el-table-column prop="discountName" :label="$t('payFeeConfigDiscountManage.discountName')" align="center" /> | 26 | <el-table-column prop="discountName" :label="$t('payFeeConfigDiscountManage.discountName')" align="center" /> |
| 23 | <el-table-column :label="$t('payFeeConfigDiscountManage.rule')" align="center"> | 27 | <el-table-column :label="$t('payFeeConfigDiscountManage.rule')" align="center"> |
| 24 | <template slot-scope="scope"> | 28 | <template slot-scope="scope"> |
| @@ -29,7 +33,8 @@ | @@ -29,7 +33,8 @@ | ||
| 29 | </el-table-column> | 33 | </el-table-column> |
| 30 | <el-table-column :label="$t('payFeeConfigDiscountManage.discountType')" align="center"> | 34 | <el-table-column :label="$t('payFeeConfigDiscountManage.discountType')" align="center"> |
| 31 | <template slot-scope="scope"> | 35 | <template slot-scope="scope"> |
| 32 | - {{ scope.row.discountType === '1001' ? $t('payFeeConfigDiscountManage.discount') : $t('payFeeConfigDiscountManage.penalty') }} | 36 | + {{ scope.row.discountType === '1001' ? $t('payFeeConfigDiscountManage.discount') : |
| 37 | + $t('payFeeConfigDiscountManage.penalty') }} | ||
| 33 | </template> | 38 | </template> |
| 34 | </el-table-column> | 39 | </el-table-column> |
| 35 | <el-table-column :label="$t('payFeeConfigDiscountManage.paymentPeriod')" align="center"> | 40 | <el-table-column :label="$t('payFeeConfigDiscountManage.paymentPeriod')" align="center"> |
| @@ -55,15 +60,9 @@ | @@ -55,15 +60,9 @@ | ||
| 55 | <div>{{ $t('payFeeConfigDiscountManage.currentYearTip2') }}</div> | 60 | <div>{{ $t('payFeeConfigDiscountManage.currentYearTip2') }}</div> |
| 56 | </el-col> | 61 | </el-col> |
| 57 | <el-col :span="3" class="text-right"> | 62 | <el-col :span="3" class="text-right"> |
| 58 | - <el-pagination | ||
| 59 | - :current-page.sync="page.current" | ||
| 60 | - :page-sizes="[10, 20, 30, 50]" | ||
| 61 | - :page-size="page.size" | ||
| 62 | - :total="page.total" | ||
| 63 | - layout="total, prev, pager, next" | ||
| 64 | - @size-change="handleSizeChange" | ||
| 65 | - @current-change="handleCurrentChange" | ||
| 66 | - /> | 63 | + <el-pagination :current-page.sync="page.current" :page-sizes="[10, 20, 30, 50]" :page-size="page.size" |
| 64 | + :total="page.total" layout="total, prev, pager, next" @size-change="handleSizeChange" | ||
| 65 | + @current-change="handleCurrentChange" /> | ||
| 67 | </el-col> | 66 | </el-col> |
| 68 | </el-row> | 67 | </el-row> |
| 69 | 68 | ||
| @@ -145,9 +144,11 @@ export default { | @@ -145,9 +144,11 @@ export default { | ||
| 145 | .margin-top-xs { | 144 | .margin-top-xs { |
| 146 | margin-top: 20px; | 145 | margin-top: 20px; |
| 147 | } | 146 | } |
| 147 | + | ||
| 148 | .text-right { | 148 | .text-right { |
| 149 | text-align: right; | 149 | text-align: right; |
| 150 | } | 150 | } |
| 151 | + | ||
| 151 | .discount-desc { | 152 | .discount-desc { |
| 152 | text-align: left; | 153 | text-align: left; |
| 153 | font-size: 13px; | 154 | font-size: 13px; |