From 7505cb92edbfec5d09a29cab1f8daa264fe4ac45 Mon Sep 17 00:00:00 2001 From: wuxw <928255095@qq.com> Date: Mon, 30 Jun 2025 18:21:27 +0800 Subject: [PATCH] 开发完成折扣设置 --- src/api/fee/feeDiscountManageApi.js | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/fee/returnPayFeeManageApi.js | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/fee/addFeeDiscount.vue | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/fee/audit.vue | 75 +++++++++++++++++++++++++++++++++++---------------------------------------- src/components/fee/deleteFeeDiscount.vue | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/fee/editFeeDiscount.vue | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/i18n/feeI18n.js | 6 ++++++ src/router/feeRouter.js | 10 ++++++++++ src/views/fee/feeDiscountManageLang.js | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/fee/feeDiscountManageList.vue | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/fee/returnPayFeeManageLang.js | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/fee/returnPayFeeManageList.vue | 339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 1491 insertions(+), 40 deletions(-) create mode 100644 src/api/fee/feeDiscountManageApi.js create mode 100644 src/api/fee/returnPayFeeManageApi.js create mode 100644 src/components/fee/addFeeDiscount.vue create mode 100644 src/components/fee/deleteFeeDiscount.vue create mode 100644 src/components/fee/editFeeDiscount.vue create mode 100644 src/views/fee/feeDiscountManageLang.js create mode 100644 src/views/fee/feeDiscountManageList.vue create mode 100644 src/views/fee/returnPayFeeManageLang.js create mode 100644 src/views/fee/returnPayFeeManageList.vue diff --git a/src/api/fee/feeDiscountManageApi.js b/src/api/fee/feeDiscountManageApi.js new file mode 100644 index 0000000..c99f119 --- /dev/null +++ b/src/api/fee/feeDiscountManageApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询折扣列表 +export function queryFeeDiscount(params) { + return new Promise((resolve, reject) => { + request({ + url: '/feeDiscount/queryFeeDiscount', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询折扣规则 +export function queryFeeDiscountRule(params) { + return new Promise((resolve, reject) => { + request({ + url: '/feeDiscount/queryFeeDiscountRule', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加折扣 +export function saveFeeDiscount(data) { + return new Promise((resolve, reject) => { + request({ + url: '/feeDiscount/saveFeeDiscount', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新折扣 +export function updateFeeDiscount(data) { + return new Promise((resolve, reject) => { + request({ + url: '/feeDiscount/updateFeeDiscount', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除折扣 +export function deleteFeeDiscount(data) { + return new Promise((resolve, reject) => { + request({ + url: '/feeDiscount/deleteFeeDiscount', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/fee/returnPayFeeManageApi.js b/src/api/fee/returnPayFeeManageApi.js new file mode 100644 index 0000000..e3543c4 --- /dev/null +++ b/src/api/fee/returnPayFeeManageApi.js @@ -0,0 +1,91 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取退费申请单列表 +export function listReturnPayFees(params) { + return new Promise((resolve, reject) => { + // 确保社区ID存在 + if (!params.communityId) { + params.communityId = getCommunityId() + } + + request({ + url: '/returnPayFee.listReturnPayFees', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新退费申请单状态 +export function updateReturnPayFee(data) { + return new Promise((resolve, reject) => { + // 确保社区ID存在 + if (!data.communityId) { + data.communityId = getCommunityId() + } + + request({ + url: '/returnPayFee.updateReturnPayFee', + method: 'post', + data, + headers: { + 'Content-Type': 'application/json' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 尝试退款 +export function tryRefundMoney(data) { + return new Promise((resolve, reject) => { + // 确保社区ID存在 + if (!data.communityId) { + data.communityId = getCommunityId() + } + + request({ + url: '/returnPayFee.tryRefundMoney', + method: 'post', + data, + headers: { + 'Content-Type': 'application/json' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取字典数据 +export function getDict(dictType, state) { + return new Promise((resolve, reject) => { + request({ + url: '/dict.getDict', + method: 'get', + params: { + dictType, + state, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/fee/addFeeDiscount.vue b/src/components/fee/addFeeDiscount.vue new file mode 100644 index 0000000..ed3f4ee --- /dev/null +++ b/src/components/fee/addFeeDiscount.vue @@ -0,0 +1,167 @@ + + + \ No newline at end of file diff --git a/src/components/fee/audit.vue b/src/components/fee/audit.vue index 4bfc303..0e3ac92 100644 --- a/src/components/fee/audit.vue +++ b/src/components/fee/audit.vue @@ -3,14 +3,14 @@ :title="$t('audit.title')" :visible.sync="visible" width="50%" - @close="closeDialog" + @close="handleClose" > - - + + - + -
- {{ $t('common.cancel') }} - {{ $t('common.submit') }} -
+ + {{ $t('common.cancel') }} + {{ $t('common.submit') }} + \ No newline at end of file diff --git a/src/components/fee/editFeeDiscount.vue b/src/components/fee/editFeeDiscount.vue new file mode 100644 index 0000000..0ee6a5d --- /dev/null +++ b/src/components/fee/editFeeDiscount.vue @@ -0,0 +1,230 @@ + + + \ No newline at end of file diff --git a/src/i18n/feeI18n.js b/src/i18n/feeI18n.js index 1c0341f..594bf4d 100644 --- a/src/i18n/feeI18n.js +++ b/src/i18n/feeI18n.js @@ -1,15 +1,21 @@ import { messages as contractCreateFeeMessages } from '../views/fee/contractCreateFeeLang' import { messages as meterWaterManageMessages } from '../views/fee/meterWaterManageLang' import { messages as meterTypeManageMessages } from '../views/fee/meterTypeManageLang' +import { messages as returnPayFeeManageMessages } from '../views/fee/returnPayFeeManageLang' +import { messages as feeDiscountManageMessages } from '../views/fee/feeDiscountManageLang' export const messages = { en: { ...contractCreateFeeMessages.en, ...meterWaterManageMessages.en, ...meterTypeManageMessages.en, + ...returnPayFeeManageMessages.en, + ...feeDiscountManageMessages.en, }, zh: { ...contractCreateFeeMessages.zh, ...meterWaterManageMessages.zh, ...meterTypeManageMessages.zh, + ...returnPayFeeManageMessages.zh, + ...feeDiscountManageMessages.zh, } } \ No newline at end of file diff --git a/src/router/feeRouter.js b/src/router/feeRouter.js index 0896830..f2e76c9 100644 --- a/src/router/feeRouter.js +++ b/src/router/feeRouter.js @@ -14,4 +14,14 @@ export default [ name: '/views/fee/meterTypeManage', component: () => import('@/views/fee/meterTypeManageList.vue') }, + { + path: '/pages/property/returnPayFeeManage', + name: '/pages/property/returnPayFeeManage', + component: () => import('@/views/fee/returnPayFeeManageList.vue') + }, + { + path:'/pages/property/feeDiscountManage', + name:'/pages/property/feeDiscountManage', + component: () => import('@/views/fee/feeDiscountManageList.vue') + }, ] \ No newline at end of file diff --git a/src/views/fee/feeDiscountManageLang.js b/src/views/fee/feeDiscountManageLang.js new file mode 100644 index 0000000..80e3a71 --- /dev/null +++ b/src/views/fee/feeDiscountManageLang.js @@ -0,0 +1,122 @@ +export const messages = { + en: { + feeDiscountManage: { + search: { + title: 'Search Conditions', + discountId: 'Please enter discount ID', + discountName: 'Please enter discount name', + discountType: 'Please select discount type', + ruleName: 'Please enter rule name' + }, + list: { + title: 'Discount Information' + }, + table: { + discountId: 'Discount ID', + discountName: 'Discount Name', + discountType: 'Discount Type', + ruleName: 'Rule Name', + rule: 'Rule', + createTime: 'Create Time', + operation: 'Operation' + }, + add: { + title: 'Add Discount', + discountName: 'Discount Name', + discountNamePlaceholder: 'Required, please enter discount name', + discountNameRequired: 'Discount name cannot be empty', + discountNameMaxLength: 'Discount name cannot exceed 256 characters', + discountType: 'Discount Type', + discountTypePlaceholder: 'Required, please select discount type', + discountTypeRequired: 'Discount type cannot be empty', + rule: 'Rule', + rulePlaceholder: 'Required, please select rule', + ruleRequired: 'Rule cannot be empty', + discountDesc: 'Description', + discountDescPlaceholder: 'Optional, please enter description', + specValueRequired: '{specName} cannot be empty' + }, + edit: { + title: 'Edit Discount', + discountName: 'Discount Name', + discountNamePlaceholder: 'Required, please enter discount name', + discountNameRequired: 'Discount name cannot be empty', + discountNameMaxLength: 'Discount name cannot exceed 256 characters', + discountType: 'Discount Type', + discountTypePlaceholder: 'Required, please select discount type', + discountTypeRequired: 'Discount type cannot be empty', + rule: 'Rule', + rulePlaceholder: 'Required, please select rule', + ruleRequired: 'Rule cannot be empty', + discountDesc: 'Description', + discountDescPlaceholder: 'Optional, please enter description', + discountIdRequired: 'Discount ID cannot be empty', + specValueRequired: '{specName} cannot be empty' + }, + delete: { + title: 'Confirm Operation', + confirmText: 'Are you sure to delete this fee discount?' + } + } + }, + zh: { + feeDiscountManage: { + search: { + title: '查询条件', + discountId: '请输入折扣ID', + discountName: '请输入折扣名称', + discountType: '请选择折扣类型', + ruleName: '请输入规则名称' + }, + list: { + title: '折扣信息' + }, + table: { + discountId: '折扣ID', + discountName: '折扣名称', + discountType: '折扣类型', + ruleName: '规则名称', + rule: '规则', + createTime: '创建时间', + operation: '操作' + }, + add: { + title: '添加折扣', + discountName: '折扣名称', + discountNamePlaceholder: '必填,请填写折扣名称', + discountNameRequired: '折扣名称不能为空', + discountNameMaxLength: '折扣名称不能超过256位', + discountType: '折扣类型', + discountTypePlaceholder: '必填,请选择折扣类型', + discountTypeRequired: '折扣类型不能为空', + rule: '规则', + rulePlaceholder: '必填,请选择规则', + ruleRequired: '规则不能为空', + discountDesc: '描述', + discountDescPlaceholder: '可选,请填写描述', + specValueRequired: '{specName}不能为空' + }, + edit: { + title: '修改折扣', + discountName: '折扣名称', + discountNamePlaceholder: '必填,请填写折扣名称', + discountNameRequired: '折扣名称不能为空', + discountNameMaxLength: '折扣名称不能超过256位', + discountType: '折扣类型', + discountTypePlaceholder: '必填,请选择折扣类型', + discountTypeRequired: '折扣类型不能为空', + rule: '规则', + rulePlaceholder: '必填,请选择规则', + ruleRequired: '规则不能为空', + discountDesc: '描述', + discountDescPlaceholder: '可选,请填写描述', + discountIdRequired: '折扣ID不能为空', + specValueRequired: '{specName}不能为空' + }, + delete: { + title: '请确认您的操作', + confirmText: '确定删除费用折扣' + } + } + } +} \ No newline at end of file diff --git a/src/views/fee/feeDiscountManageList.vue b/src/views/fee/feeDiscountManageList.vue new file mode 100644 index 0000000..54f5163 --- /dev/null +++ b/src/views/fee/feeDiscountManageList.vue @@ -0,0 +1,223 @@ + + + + + \ No newline at end of file diff --git a/src/views/fee/returnPayFeeManageLang.js b/src/views/fee/returnPayFeeManageLang.js new file mode 100644 index 0000000..2b35202 --- /dev/null +++ b/src/views/fee/returnPayFeeManageLang.js @@ -0,0 +1,98 @@ +export const messages = { + en: { + returnPayFeeManage: { + search: { + title: 'Search Conditions', + detailId: 'Payment Order Number', + feeType: 'Select Fee Type', + state: 'Select Audit Status', + applyPersonName: 'Applicant Name', + auditPersonName: 'Auditor Name', + payerObjName: 'House Number/Car Number etc.', + startTime: 'Start Time', + endTime: 'End Time' + }, + list: { + title: 'Refund Application List' + }, + table: { + returnFeeId: 'Refund Order Number', + detailId: 'Payment Order Number', + feeType: 'Fee Type', + payerObjName: 'Payment Object', + cycles: 'Payment Cycle (Month)', + amount: 'Payable Amount/Paid Amount', + createTime: 'Application Time', + reason: 'Refund Reason', + applyPersonName: 'Applicant', + state: 'Audit Status', + auditPersonName: 'Auditor', + retundRemark: 'Refund Status' + }, + button: { + retryRefund: 'Retry Refund' + }, + message: { + refundSubmitSuccess: 'Refund submitted successfully', + refundSubmitFailed: 'Refund submission failed' + } + }, + audit: { + title: 'Audit Information', + state: 'Audit Status', + selectState: 'Please Audit', + approve: 'Approve', + reject: 'Reject', + remark: 'Reason', + remarkPlaceholder: 'Required, please fill in the reason' + } + }, + zh: { + returnPayFeeManage: { + search: { + title: '查询条件', + detailId: '缴费单号', + feeType: '选择费用类型', + state: '选择审核状态', + applyPersonName: '申请人姓名', + auditPersonName: '审核人姓名', + payerObjName: '房屋编号/车辆编号等', + startTime: '开始时间', + endTime: '结束时间' + }, + list: { + title: '退费申请单' + }, + table: { + returnFeeId: '退款单号', + detailId: '缴费单号', + feeType: '费用类型', + payerObjName: '付费对象', + cycles: '付费周期(月)', + amount: '应付金额/实付金额', + createTime: '申请时间', + reason: '退费原因', + applyPersonName: '申请人', + state: '审核状态', + auditPersonName: '审核人', + retundRemark: '退款情况' + }, + button: { + retryRefund: '重试退款' + }, + message: { + refundSubmitSuccess: '提交退款成功', + refundSubmitFailed: '提交退款失败' + } + }, + audit: { + title: '审核信息', + state: '审核状态', + selectState: '请审核', + approve: '同意', + reject: '拒绝', + remark: '原因', + remarkPlaceholder: '必填,请填写原因' + } + } +} \ No newline at end of file diff --git a/src/views/fee/returnPayFeeManageList.vue b/src/views/fee/returnPayFeeManageList.vue new file mode 100644 index 0000000..2482d0f --- /dev/null +++ b/src/views/fee/returnPayFeeManageList.vue @@ -0,0 +1,339 @@ + + + + + \ No newline at end of file -- libgit2 0.21.4