diff --git a/src/api/report/commonReportApi.js b/src/api/report/commonReportApi.js new file mode 100644 index 0000000..4ae5a48 --- /dev/null +++ b/src/api/report/commonReportApi.js @@ -0,0 +1,107 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取报表自定义列表 +export function listReportCustom(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportCustom.listReportCustom', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取报表自定义组件关系 +export function listReportCustomComponentRel(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportCustomComponentRel.listReportCustomComponentRel', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取报表自定义组件条件 +export function listReportCustomComponentCondition(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportCustomComponentCondition.listReportCustomComponentCondition', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取报表自定义组件数据 +export function listReportCustomComponentData(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportCustomComponent.listReportCustomComponentData', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取报表自定义组件页脚数据 +export function listReportCustomComponentDataFooter(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportCustomComponent.listReportCustomComponentDataFooter', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 导出报表数据 +export function exportData(params) { + return new Promise((resolve, reject) => { + request({ + url: '/export.exportData', + method: 'get', + params: { + ...params, + 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/report/reportHuaningApi.js b/src/api/report/reportHuaningApi.js new file mode 100644 index 0000000..6e2e993 --- /dev/null +++ b/src/api/report/reportHuaningApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询未收情况表数据 +export function queryHuaningOweFee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportFeeMonthStatistics/queryHuaningOweFee', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询未收明细表数据 +export function queryHuaningOweFeeDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportFeeMonthStatistics/queryHuaningOweFeeDetail', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询当月收费情况表数据 +export function queryHuaningPayFee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportFeeMonthStatistics/queryHuaningPayFee', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询费用明细 +export function queryFeeDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/fee.queryFeeDetail', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询楼栋列表 +export function listFloors(params) { + return new Promise((resolve, reject) => { + request({ + url: '/floor.queryFloors', + method: 'get', + params: { + ...params, + 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/report/reportPayFeeDepositApi.js b/src/api/report/reportPayFeeDepositApi.js new file mode 100644 index 0000000..3c77db2 --- /dev/null +++ b/src/api/report/reportPayFeeDepositApi.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询押金报表 +export function queryPayFeeDeposit(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/reportFeeMonthStatistics/queryPayFeeDeposit', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 导出押金报表数据 +export function exportData(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/export.exportData', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询单元列表 +export function queryUnits(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/unit.queryUnits', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/couponMarketApi.js b/src/api/scm/couponMarketApi.js new file mode 100644 index 0000000..f752c55 --- /dev/null +++ b/src/api/scm/couponMarketApi.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +// 获取供应商列表 +export function listSupplier(params) { + return new Promise((resolve, reject) => { + request({ + url: '/supplier.listSupplier', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取优惠券列表 +export function listSupplierCoupon(params) { + return new Promise((resolve, reject) => { + request({ + url: '/supplierCoupon.listSupplierCoupon', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/couponPropertyPoolManageApi.js b/src/api/scm/couponPropertyPoolManageApi.js new file mode 100644 index 0000000..7f9c0a2 --- /dev/null +++ b/src/api/scm/couponPropertyPoolManageApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' + +// 获取优惠券池列表 +export function listCouponPropertyPool(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.listCouponPropertyPool', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 新增优惠券池 +export function saveCouponPropertyPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.saveCouponPropertyPool', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新优惠券池 +export function updateCouponPropertyPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.updateCouponPropertyPool', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除优惠券池 +export function deleteCouponPropertyPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.deleteCouponPropertyPool', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 赠送优惠券 +export function giftCouponProperty(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.giftCouponProperty', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取优惠券属性 +export function listCouponKey(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponKey.listCouponKey', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/scm/couponRuleApi.js b/src/api/scm/couponRuleApi.js new file mode 100644 index 0000000..10db3be --- /dev/null +++ b/src/api/scm/couponRuleApi.js @@ -0,0 +1,249 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取优惠券规则列表 +export function listCouponRule(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.listCouponRule', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加优惠券规则 +export function saveCouponRule(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.saveCouponRule', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新优惠券规则 +export function updateCouponRule(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.updateCouponRule', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除优惠券规则 +export function deleteCouponRule(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.deleteCouponRule', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取优惠券规则关联的优惠券列表 +export function listCouponRuleCpps(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.listCouponRuleCpps', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加优惠券规则关联的优惠券 +export function saveCouponRuleCpps(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.saveCouponRuleCpps', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新优惠券规则关联的优惠券 +export function updateCouponRuleCpps(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.updateCouponRuleCpps', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除优惠券规则关联的优惠券 +export function deleteCouponRuleCpps(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.deleteCouponRuleCpps', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取优惠券规则关联的缴费赠送列表 +export function listCouponRuleFee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.listCouponRuleFee', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加优惠券规则关联的缴费赠送 +export function saveCouponRuleFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.saveCouponRuleFee', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除优惠券规则关联的缴费赠送 +export function deleteCouponRuleFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/couponRule.deleteCouponRuleFee', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取优惠券属性池列表 +export function listCouponPropertyPool(params) { + return new Promise((resolve, reject) => { + request({ + url: '/couponProperty.listCouponPropertyPool', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取费用配置列表 +export function listFeeConfigs(params) { + return new Promise((resolve, reject) => { + request({ + url: '/feeConfig.listFeeConfigs', + method: 'get', + params: { + ...params, + 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/report/ReportHuaningOweFee.vue b/src/components/report/ReportHuaningOweFee.vue new file mode 100644 index 0000000..5f27bc4 --- /dev/null +++ b/src/components/report/ReportHuaningOweFee.vue @@ -0,0 +1,104 @@ + + + + + \ No newline at end of file diff --git a/src/components/report/ReportHuaningOweFeeDetail.vue b/src/components/report/ReportHuaningOweFeeDetail.vue new file mode 100644 index 0000000..69284a5 --- /dev/null +++ b/src/components/report/ReportHuaningOweFeeDetail.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/src/components/report/ReportHuaningPayFee.vue b/src/components/report/ReportHuaningPayFee.vue new file mode 100644 index 0000000..ff306a0 --- /dev/null +++ b/src/components/report/ReportHuaningPayFee.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/src/components/report/commonReportTable.vue b/src/components/report/commonReportTable.vue new file mode 100644 index 0000000..b808744 --- /dev/null +++ b/src/components/report/commonReportTable.vue @@ -0,0 +1,263 @@ + + + + + \ No newline at end of file diff --git a/src/components/report/searchFloor.vue b/src/components/report/searchFloor.vue new file mode 100644 index 0000000..ed3b3b4 --- /dev/null +++ b/src/components/report/searchFloor.vue @@ -0,0 +1,195 @@ + + + + + \ No newline at end of file diff --git a/src/components/report/viewFeeDetail.vue b/src/components/report/viewFeeDetail.vue index 1e56d80..3d0cb37 100644 --- a/src/components/report/viewFeeDetail.vue +++ b/src/components/report/viewFeeDetail.vue @@ -1,40 +1,33 @@ \ No newline at end of file diff --git a/src/components/scm/AddCouponRule.vue b/src/components/scm/AddCouponRule.vue new file mode 100644 index 0000000..791a829 --- /dev/null +++ b/src/components/scm/AddCouponRule.vue @@ -0,0 +1,92 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/AddCouponRuleCpps.vue b/src/components/scm/AddCouponRuleCpps.vue new file mode 100644 index 0000000..49143ca --- /dev/null +++ b/src/components/scm/AddCouponRuleCpps.vue @@ -0,0 +1,155 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/AddCouponRuleFee.vue b/src/components/scm/AddCouponRuleFee.vue new file mode 100644 index 0000000..3a974c4 --- /dev/null +++ b/src/components/scm/AddCouponRuleFee.vue @@ -0,0 +1,163 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/CouponRuleCpps.vue b/src/components/scm/CouponRuleCpps.vue new file mode 100644 index 0000000..72887ce --- /dev/null +++ b/src/components/scm/CouponRuleCpps.vue @@ -0,0 +1,192 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/CouponRuleDiv.vue b/src/components/scm/CouponRuleDiv.vue new file mode 100644 index 0000000..a17f917 --- /dev/null +++ b/src/components/scm/CouponRuleDiv.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/CouponRuleFees.vue b/src/components/scm/CouponRuleFees.vue new file mode 100644 index 0000000..187d9d5 --- /dev/null +++ b/src/components/scm/CouponRuleFees.vue @@ -0,0 +1,150 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/DeleteCouponRule.vue b/src/components/scm/DeleteCouponRule.vue new file mode 100644 index 0000000..cb97f9a --- /dev/null +++ b/src/components/scm/DeleteCouponRule.vue @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/DeleteCouponRuleCpps.vue b/src/components/scm/DeleteCouponRuleCpps.vue new file mode 100644 index 0000000..f3a63d7 --- /dev/null +++ b/src/components/scm/DeleteCouponRuleCpps.vue @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/DeleteCouponRuleFee.vue b/src/components/scm/DeleteCouponRuleFee.vue new file mode 100644 index 0000000..3597a10 --- /dev/null +++ b/src/components/scm/DeleteCouponRuleFee.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/EditCouponRule.vue b/src/components/scm/EditCouponRule.vue new file mode 100644 index 0000000..a43afda --- /dev/null +++ b/src/components/scm/EditCouponRule.vue @@ -0,0 +1,98 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/EditCouponRuleCpps.vue b/src/components/scm/EditCouponRuleCpps.vue new file mode 100644 index 0000000..2c597e8 --- /dev/null +++ b/src/components/scm/EditCouponRuleCpps.vue @@ -0,0 +1,154 @@ + + + + + \ No newline at end of file diff --git a/src/components/scm/addCouponPropertyPool.vue b/src/components/scm/addCouponPropertyPool.vue new file mode 100644 index 0000000..bee6b04 --- /dev/null +++ b/src/components/scm/addCouponPropertyPool.vue @@ -0,0 +1,176 @@ + + + \ No newline at end of file diff --git a/src/components/scm/deleteCouponPropertyPool.vue b/src/components/scm/deleteCouponPropertyPool.vue new file mode 100644 index 0000000..2497a32 --- /dev/null +++ b/src/components/scm/deleteCouponPropertyPool.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/components/scm/editCouponPropertyPool.vue b/src/components/scm/editCouponPropertyPool.vue new file mode 100644 index 0000000..5cf6bb0 --- /dev/null +++ b/src/components/scm/editCouponPropertyPool.vue @@ -0,0 +1,188 @@ + + + \ No newline at end of file diff --git a/src/components/scm/giftCouponPropertyPool.vue b/src/components/scm/giftCouponPropertyPool.vue new file mode 100644 index 0000000..accfacd --- /dev/null +++ b/src/components/scm/giftCouponPropertyPool.vue @@ -0,0 +1,109 @@ + + + \ No newline at end of file diff --git a/src/i18n/commonLang.js b/src/i18n/commonLang.js index cd3ac97..eaf5c49 100644 --- a/src/i18n/commonLang.js +++ b/src/i18n/commonLang.js @@ -48,6 +48,8 @@ export const messages = { selectFile:'Select File', change:'Change', print:'Print', + year:'Year', + month:'Month', } }, zh: { @@ -99,6 +101,8 @@ export const messages = { selectFile:'选择文件', change:'变更', print:'打印', + year:'年', + month:'月', } } } \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index 32e2012..f687309 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -141,6 +141,7 @@ import { messages as reportI18n } from './reportI18n' import { messages as devI18n } from './devI18n' import { messages as resourceI18n } from './resourceI18n' import { messages as carI18n } from './carI18n' +import { messages as scmI18n } from './scmI18n' Vue.use(VueI18n) @@ -280,6 +281,7 @@ const messages = { ...devI18n.en, ...resourceI18n.en, ...carI18n.en, + ...scmI18n.en, }, zh: { ...loginMessages.zh, @@ -413,6 +415,7 @@ const messages = { ...devI18n.zh, ...resourceI18n.zh, ...carI18n.zh, + ...scmI18n.zh, } } diff --git a/src/i18n/reportI18n.js b/src/i18n/reportI18n.js index 03e9f18..d17106c 100644 --- a/src/i18n/reportI18n.js +++ b/src/i18n/reportI18n.js @@ -16,6 +16,9 @@ import { messages as reportRepairMessages } from '../views/report/reportRepairLa import { messages as reportNoFeeRoomMessages } from '../views/report/reportNoFeeRoomLang' import { messages as reportQuestionAnswerDetailMessages } from '../views/report/reportQuestionAnswerDetailLang' import { messages as reportOwnerPayFeeMessages } from '../views/report/reportOwnerPayFeeLang' +import { messages as reportHuaningMessages } from '../views/report/reportHuaningLang' +import { messages as reportPayFeeDepositMessages } from '../views/report/reportPayFeeDepositLang' +import { messages as commonReportMessages } from '../views/report/commonReportLang' export const messages = { en: { @@ -36,6 +39,9 @@ export const messages = { ...reportNoFeeRoomMessages.en, ...reportQuestionAnswerDetailMessages.en, ...reportOwnerPayFeeMessages.en, + ...reportHuaningMessages.en, + ...reportPayFeeDepositMessages.en, + ...commonReportMessages.en, }, zh: { ...reportCustomComponentRelManageMessages.zh, @@ -54,5 +60,8 @@ export const messages = { ...reportNoFeeRoomMessages.zh, ...reportQuestionAnswerDetailMessages.zh, ...reportOwnerPayFeeMessages.zh, + ...reportHuaningMessages.zh, + ...reportPayFeeDepositMessages.zh, + ...commonReportMessages.zh, } } \ No newline at end of file diff --git a/src/i18n/scmI18n.js b/src/i18n/scmI18n.js new file mode 100644 index 0000000..e424a5d --- /dev/null +++ b/src/i18n/scmI18n.js @@ -0,0 +1,17 @@ +import { messages as couponMarketMessages } from '../views/scm/couponMarketLang' +import { messages as couponPropertyPoolManageMessages } from '../views/scm/couponPropertyPoolManageLang' +import { messages as couponRuleMessages } from '../views/scm/couponRuleLang' + +export const messages = { + en: { + + ...couponMarketMessages.en, + ...couponPropertyPoolManageMessages.en, + ...couponRuleMessages.en, + }, + zh: { + ...couponMarketMessages.zh, + ...couponPropertyPoolManageMessages.zh, + ...couponRuleMessages.zh, + } +} \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 6c9a55e..5fbb38f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,7 @@ import reportRouter from './reportRouter' import devRouter from './devRouter' import resourceRouter from './resourceRouter' import carRouter from './carRouter' +import scmRouter from './scmRouter' Vue.use(VueRouter) @@ -630,6 +631,7 @@ const routes = [ ...devRouter, ...resourceRouter, ...carRouter, + ...scmRouter, // 其他子路由可以在这里添加 ] }, diff --git a/src/router/reportRouter.js b/src/router/reportRouter.js index db80063..6c40900 100644 --- a/src/router/reportRouter.js +++ b/src/router/reportRouter.js @@ -50,9 +50,23 @@ export default [ component: () => import('@/views/report/reportQuestionAnswerDetailList.vue') }, { - path:'/pages/property/reportOwnerPayFee', - name:'/pages/property/reportOwnerPayFee', + path: '/pages/property/reportOwnerPayFee', + name: '/pages/property/reportOwnerPayFee', component: () => import('@/views/report/reportOwnerPayFeeList.vue') - }, - + }, + { + path: '/pages/property/reportHuaning', + name: '/pages/property/reportHuaning', + component: () => import('@/views/report/reportHuaningList.vue') + }, + { + path: '/pages/property/reportPayFeeDeposit', + name: '/pages/property/reportPayFeeDeposit', + component: () => import('@/views/report/reportPayFeeDepositList.vue') + }, + { + path: '/pages/property/commonReport', + name: '/pages/property/commonReport', + component: () => import('@/views/report/commonReportList.vue') + }, ] \ No newline at end of file diff --git a/src/router/scmRouter.js b/src/router/scmRouter.js new file mode 100644 index 0000000..664d93a --- /dev/null +++ b/src/router/scmRouter.js @@ -0,0 +1,17 @@ +export default [ + { + path: '/pages/scm/couponMarket', + name: '/pages/scm/couponMarket', + component: () => import('@/views/scm/couponMarketList.vue') + }, + { + path: '/pages/scm/couponPropertyPoolManage', + name: '/pages/scm/couponPropertyPoolManage', + component: () => import('@/views/scm/couponPropertyPoolManageList.vue') + }, + { + path:'/pages/scm/couponRule', + name:'/pages/scm/couponRule', + component: () => import('@/views/scm/couponRuleList.vue') + }, +] \ No newline at end of file diff --git a/src/views/report/commonReportLang.js b/src/views/report/commonReportLang.js new file mode 100644 index 0000000..60e300f --- /dev/null +++ b/src/views/report/commonReportLang.js @@ -0,0 +1,22 @@ +export const messages = { + en: { + commonReportTable: { + queryConditions: 'Query Conditions', + query: 'Query', + reset: 'Reset', + export: 'Export', + print: 'Print', + noData: 'No Data' + } + }, + zh: { + commonReportTable: { + queryConditions: '查询条件', + query: '查询', + reset: '重置', + export: '导出', + print: '打印', + noData: '暂无数据' + } + } +} \ No newline at end of file diff --git a/src/views/report/commonReportList.vue b/src/views/report/commonReportList.vue new file mode 100644 index 0000000..0137361 --- /dev/null +++ b/src/views/report/commonReportList.vue @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/src/views/report/reportHuaningLang.js b/src/views/report/reportHuaningLang.js new file mode 100644 index 0000000..22a4e92 --- /dev/null +++ b/src/views/report/reportHuaningLang.js @@ -0,0 +1,118 @@ +export const messages = { + en: { + reportHuaning: { + search: { + title: 'Search Conditions', + feeType: 'Please select fee type', + floor: 'Please select floor' + }, + tab: { + oweFee: 'Uncollected Situation Report', + oweFeeDetail: 'Uncollected Details Report', + payFee: 'Current Month Collection Report' + } + }, + reportHuaningOweFee: { + table: { + floorNum: 'Building Number', + totalOweAmount: 'Total Uncollected Amount (as of {date})', + oweAmount: 'Uncollected Amount', + preYearOweAmount: 'Uncollected Amount Before' + } + }, + reportHuaningPayFee: { + table: { + floorNum: 'Building Number', + monthlyReceivable: 'Monthly Receivable', + monthReceived: 'Month Received', + monthReceivedPart1: 'Month Received belongs to {year} Year 1-{month} Month Part', + monthReceivedPart2: 'Month Received belongs to {year} Year {month} Month Part', + monthReceivedPart3: 'Month Received belongs to {nextMonth} Pre-collection Part', + monthReceivedPart4: 'Month Received belongs to Before {year} Year Part' + } + }, + reportHuaningOweFeeDetail: { + table: { + roomNum: 'Room Number', + area: 'Area', + fee: 'Fee', + startTime: 'Fee Start Time', + endTime: 'Fee End Time', + totalOweAmount: 'Total Uncollected Amount', + oweAmount: 'Uncollected Amount', + preYearOweAmount: 'Uncollected Amount Before' + } + }, + viewFeeDetail: { + title: 'Year Payment History', + table: { + cycle: 'Cycle (Unit: Month)', + receivableAmount: 'Receivable Amount (Unit: Yuan)', + receivedAmount: 'Received Amount (Unit: Yuan)', + payTime: 'Payment Time', + startTime: 'Payment Start Time', + endTime: 'Payment End Time', + status: 'Status', + remark: 'Remark' + } + } + }, + zh: { + reportHuaning: { + search: { + title: '查询条件', + feeType: '请选择收费类型', + floor: '请选择楼栋' + }, + tab: { + oweFee: '未收情况表', + oweFeeDetail: '未收明细表', + payFee: '当月收费情况表' + } + }, + reportHuaningOweFee: { + table: { + floorNum: '楼栋号', + totalOweAmount: '总未收金额(截止{date})', + oweAmount: '未收金额', + preYearOweAmount: '年前未收金额' + } + }, + reportHuaningPayFee: { + table: { + floorNum: '楼栋号', + monthlyReceivable: '每月应收', + monthReceived: '月实收', + monthReceivedPart1: '月实收中属于{year}年1-{month}月部分', + monthReceivedPart2: '月实收中属于{year}年{month}月部分', + monthReceivedPart3: '月实收中属于{nextMonth}起预收部分', + monthReceivedPart4: '月实收中属于{year}年前部分' + } + }, + reportHuaningOweFeeDetail: { + table: { + roomNum: '房号', + area: '面积', + fee: '费用', + startTime: '费用开始时间', + endTime: '费用截止时间', + totalOweAmount: '总未收金额', + oweAmount: '未收金额', + preYearOweAmount: '年前未收金额' + } + }, + viewFeeDetail: { + title: '年缴费历史', + table: { + cycle: '周期(单位:月)', + receivableAmount: '应收金额(单位:元)', + receivedAmount: '实收金额(单位:元)', + payTime: '缴费时间', + startTime: '缴费起始时间', + endTime: '缴费结束时间', + status: '状态', + remark: '备注' + } + } + } +} \ No newline at end of file diff --git a/src/views/report/reportHuaningList.vue b/src/views/report/reportHuaningList.vue new file mode 100644 index 0000000..5b0a215 --- /dev/null +++ b/src/views/report/reportHuaningList.vue @@ -0,0 +1,194 @@ + + + + + \ No newline at end of file diff --git a/src/views/report/reportPayFeeDepositLang.js b/src/views/report/reportPayFeeDepositLang.js new file mode 100644 index 0000000..d432517 --- /dev/null +++ b/src/views/report/reportPayFeeDepositLang.js @@ -0,0 +1,140 @@ +export const messages = { + en: { + reportPayFeeDeposit: { + search: { + title: 'Search Conditions', + floorName: 'Please select building', + choose: 'Choose', + unit: 'Unit', + unitPlaceholder: 'Please select unit', + roomNum: 'Please fill in room number', + feeId: 'Please enter fee ID', + feeName: 'Fee item name', + feeNamePlaceholder: 'Please select fee item name', + search: 'Search', + reset: 'Reset', + state: 'Payment status', + statePlaceholder: 'Please select payment status', + payerObjType: 'Payment object type', + payerObjTypePlaceholder: 'Please select payment object type', + startTime: 'Please select fee creation start time', + endTime: 'Please select fee creation end time', + detailState: 'Refund status', + detailStatePlaceholder: 'Please select refund status' + }, + table: { + title: 'Deposit Report', + tooltip: 'Payment records of deposit type', + export: 'Export', + feeId: 'Fee ID', + roomNum: 'Room number', + owner: 'Owner', + feeType: 'Fee type', + feeName: 'Fee item', + startTime: 'Fee start time', + endTime: 'Fee end time', + createTime: 'Creation time', + payerObjType: 'Payment object type', + payerObjId: 'Payer ID', + amount: 'Receivable amount', + state: 'Status', + detailState: 'Refund status', + operation: 'Operation', + detail: 'Detail', + unpaid: 'Unpaid', + subtotal: 'Subtotal', + total: 'Total', + paid: 'Paid', + refunded: 'Refunded', + refundInProgress: 'Refund in progress', + refundFailed: 'Refund failed', + yuan: 'Yuan' + } + }, + searchFloor: { + title: 'Building Selection', + floorId: 'Please enter building ID', + floorName: 'Please enter building name', + floorNum: 'Please enter building number', + search: 'Search', + reset: 'Reset', + table: { + floorId: 'Building ID', + floorName: 'Name', + floorNum: 'Number', + userName: 'Creator', + operation: 'Operation', + choose: 'Choose' + } + } + }, + zh: { + reportPayFeeDeposit: { + search: { + title: '查询条件', + floorName: '请选择楼栋', + choose: '选择', + unit: '单元', + unitPlaceholder: '请选择单元', + roomNum: '请填写房屋编号', + feeId: '请输入费用ID', + feeName: '费用项名称', + feeNamePlaceholder: '请选择费用项名称', + search: '查询', + reset: '重置', + state: '收费状态', + statePlaceholder: '请选择收费状态', + payerObjType: '收费对象类型', + payerObjTypePlaceholder: '请选择收费对象类型', + startTime: '请选择费用创建开始时间', + endTime: '请选择费用创建结束时间', + detailState: '退费状态', + detailStatePlaceholder: '请选择退费状态' + }, + table: { + title: '押金报表', + tooltip: '押金类记录的收费情况', + export: '导出', + feeId: '费用ID', + roomNum: '房号', + owner: '业主', + feeType: '费用类型', + feeName: '费用项', + startTime: '费用开始时间', + endTime: '费用结束时间', + createTime: '创建时间', + payerObjType: '付费对象类型', + payerObjId: '付款方ID', + amount: '应收金额', + state: '状态', + detailState: '退费状态', + operation: '操作', + detail: '详情', + unpaid: '未缴费', + subtotal: '小计', + total: '大计', + paid: '已收费', + refunded: '已退费', + refundInProgress: '退费中', + refundFailed: '退费失败', + yuan: '元' + } + }, + searchFloor: { + title: '小区楼栋', + floorId: '请输入楼栋ID', + floorName: '请输入楼栋名称', + floorNum: '请输入楼栋编号', + search: '查询', + reset: '重置', + table: { + floorId: '楼栋ID', + floorName: '名称', + floorNum: '编号', + userName: '创建人', + operation: '操作', + choose: '选择' + } + } + } +} \ No newline at end of file diff --git a/src/views/report/reportPayFeeDepositList.vue b/src/views/report/reportPayFeeDepositList.vue new file mode 100644 index 0000000..02f4738 --- /dev/null +++ b/src/views/report/reportPayFeeDepositList.vue @@ -0,0 +1,422 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/couponMarketLang.js b/src/views/scm/couponMarketLang.js new file mode 100644 index 0000000..aa60862 --- /dev/null +++ b/src/views/scm/couponMarketLang.js @@ -0,0 +1,24 @@ +export const messages = { + en: { + couponMarket: { + search: { + placeholder: 'Please enter coupon name', + }, + price: 'Price', + buy: 'Buy', + fetchSupplierError: 'Failed to fetch supplier list', + fetchCouponError: 'Failed to fetch coupon list' + } + }, + zh: { + couponMarket: { + search: { + placeholder: '请输入优惠券名称', + }, + price: '售价', + buy: '购买', + fetchSupplierError: '获取供应商列表失败', + fetchCouponError: '获取优惠券列表失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/couponMarketList.vue b/src/views/scm/couponMarketList.vue new file mode 100644 index 0000000..8fc5c80 --- /dev/null +++ b/src/views/scm/couponMarketList.vue @@ -0,0 +1,179 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/couponPropertyPoolManageLang.js b/src/views/scm/couponPropertyPoolManageLang.js new file mode 100644 index 0000000..d326ded --- /dev/null +++ b/src/views/scm/couponPropertyPoolManageLang.js @@ -0,0 +1,194 @@ +export const messages = { + en: { + couponPropertyPoolManage: { + search: { + title: 'Search Conditions', + cppId: 'Coupon ID', + couponName: 'Coupon Name', + fromType: 'From Type', + toType: 'To Type' + }, + list: { + title: 'Coupon List', + add: 'Create' + }, + table: { + cppId: 'ID', + couponName: 'Coupon Name', + fromType: 'From Type', + toType: 'To Type', + stock: 'Quantity', + validityDay: 'Validity', + day: 'days', + createTime: 'Create Time', + gift: 'Manual Gift' + }, + fromType: { + market: 'Market Purchase', + self: 'Self Made' + }, + toType: { + shopping: 'Shopping', + payment: 'Payment', + repair: 'Repair', + parking: 'Parking', + charging: 'Charging' + }, + add: { + title: 'Create Coupon', + couponName: 'Coupon Name', + couponNamePlaceholder: 'Required, please enter coupon name', + toType: 'Purpose', + toTypePlaceholder: 'Required, please select purpose', + stock: 'Quantity', + stockPlaceholder: 'Required, please enter quantity', + validityDay: 'Validity', + validityDayPlaceholder: 'Required, please enter validity (days)', + remark: 'Instructions', + remarkPlaceholder: 'Required, please enter instructions', + success: 'Create successfully', + error: 'Create failed' + }, + edit: { + title: 'Edit Coupon', + couponName: 'Coupon Name', + couponNamePlaceholder: 'Required, please enter coupon name', + toType: 'Purpose', + toTypePlaceholder: 'Required, please select purpose', + stock: 'Quantity', + stockPlaceholder: 'Required, please enter quantity', + validityDay: 'Validity', + validityDayPlaceholder: 'Required, please enter validity (days)', + remark: 'Instructions', + remarkPlaceholder: 'Required, please enter instructions', + success: 'Edit successfully', + error: 'Edit failed' + }, + gift: { + title: 'Gift Coupon', + couponName: 'Coupon Name', + giftCount: 'Quantity', + giftCountPlaceholder: 'Required, please enter quantity', + tel: 'Owner Phone', + telPlaceholder: 'Required, please enter phone number', + submit: 'Gift', + success: 'Gift successfully', + error: 'Gift failed' + }, + delete: { + title: 'Delete Confirmation', + confirmText: 'Are you sure to delete this coupon?', + success: 'Delete successfully', + error: 'Delete failed' + }, + validate: { + couponNameRequired: 'Coupon name is required', + couponNameMaxLength: 'Coupon name cannot exceed 64 characters', + toTypeRequired: 'Purpose is required', + stockRequired: 'Quantity is required', + validityDayRequired: 'Validity is required', + remarkRequired: 'Instructions is required', + cppIdRequired: 'Coupon ID is required', + giftCountRequired: 'Quantity is required', + telRequired: 'Phone number is required' + }, + fetchError: 'Failed to get coupon list' + } + }, + zh: { + couponPropertyPoolManage: { + search: { + title: '查询条件', + cppId: '优惠券编号', + couponName: '优惠券名称', + fromType: '来自方式', + toType: '用途' + }, + list: { + title: '优惠券列表', + add: '制作' + }, + table: { + cppId: '编号', + couponName: '优惠券名称', + fromType: '来自方式', + toType: '用途', + stock: '数量', + validityDay: '有效期', + day: '天', + createTime: '创建时间', + gift: '手工赠送' + }, + fromType: { + market: '优惠券市场购买', + self: '自己制作' + }, + toType: { + shopping: '购物', + payment: '缴费', + repair: '维修劵', + parking: '停车劵', + charging: '充电桩充电劵' + }, + add: { + title: '制作优惠券', + couponName: '优惠券名称', + couponNamePlaceholder: '必填,请填写优惠券名称', + toType: '用途', + toTypePlaceholder: '必填,请选择用途', + stock: '数量', + stockPlaceholder: '必填,请填写数量', + validityDay: '有效期', + validityDayPlaceholder: '必填,请填写有效期(天)', + remark: '使用说明', + remarkPlaceholder: '必填,请填写使用说明', + success: '制作成功', + error: '制作失败' + }, + edit: { + title: '修改优惠券', + couponName: '优惠券名称', + couponNamePlaceholder: '必填,请填写优惠券名称', + toType: '用途', + toTypePlaceholder: '必填,请选择用途', + stock: '数量', + stockPlaceholder: '必填,请填写数量', + validityDay: '有效期', + validityDayPlaceholder: '必填,请填写有效期(天)', + remark: '使用说明', + remarkPlaceholder: '必填,请填写使用说明', + success: '修改成功', + error: '修改失败' + }, + gift: { + title: '赠送优惠券', + couponName: '优惠券名称', + giftCount: '数量', + giftCountPlaceholder: '必填,请填写数量', + tel: '业主手机号', + telPlaceholder: '必填,请填写手机号', + submit: '赠送', + success: '赠送成功', + error: '赠送失败' + }, + delete: { + title: '删除确认', + confirmText: '确定删除优惠券?', + success: '删除成功', + error: '删除失败' + }, + validate: { + couponNameRequired: '优惠券名称不能为空', + couponNameMaxLength: '优惠券名称不能超过64个字符', + toTypeRequired: '用途不能为空', + stockRequired: '数量不能为空', + validityDayRequired: '有效期不能为空', + remarkRequired: '使用说明不能为空', + cppIdRequired: '优惠券编号不能为空', + giftCountRequired: '数量不能为空', + telRequired: '手机号不能为空' + }, + fetchError: '获取优惠券列表失败' + } + } +} \ No newline at end of file diff --git a/src/views/scm/couponPropertyPoolManageList.vue b/src/views/scm/couponPropertyPoolManageList.vue new file mode 100644 index 0000000..33c9f6d --- /dev/null +++ b/src/views/scm/couponPropertyPoolManageList.vue @@ -0,0 +1,207 @@ + + + + + \ No newline at end of file diff --git a/src/views/scm/couponRuleLang.js b/src/views/scm/couponRuleLang.js new file mode 100644 index 0000000..4726f91 --- /dev/null +++ b/src/views/scm/couponRuleLang.js @@ -0,0 +1,120 @@ +export const messages = { + en: { + couponRule: { + title: 'Coupon Rules', + ruleName: 'Rule Name', + ruleNamePlaceholder: 'Please enter rule name', + ruleNameRequired: 'Rule name is required', + ruleNameMaxLength: 'Rule name cannot exceed 64 characters', + remark: 'Remark', + remarkPlaceholder: 'Please enter remark', + remarkMaxLength: 'Remark cannot exceed 512 characters', + ruleIdRequired: 'Rule ID is required', + addRule: 'Add Rule', + editRule: 'Edit Rule', + deleteConfirm: 'Delete Confirmation', + deleteRulePrompt: 'Are you sure to delete this coupon rule?', + selectRuleFirst: 'Please select a rule first', + coupon: 'Coupon', + fee: 'Fee' + }, + couponRuleCpps: { + id: 'ID', + coupon: 'Coupon', + couponPlaceholder: 'Please select coupon', + couponRequired: 'Coupon is required', + quantity: 'Quantity', + quantityPlaceholder: 'Please enter quantity', + quantityRequired: 'Quantity is required', + quantityPattern: 'Quantity must be a positive integer', + frequency: 'Frequency', + frequencyPlaceholder: 'Please select frequency', + frequencyRequired: 'Frequency is required', + once: 'Once', + monthly: 'Monthly', + addCoupon: 'Add Coupon', + editCoupon: 'Edit Coupon', + deleteConfirm: 'Delete Confirmation', + deletePrompt: 'Are you sure to delete this coupon?', + idRequired: 'ID is required' + }, + couponRuleFee: { + id: 'ID', + fee: 'Fee', + feePlaceholder: 'Please select fee', + feeRequired: 'Fee is required', + payTime: 'Payment Time', + payMonth: 'Payment Month', + payMonthPlaceholder: 'Please enter payment month', + payMonthRequired: 'Payment month is required', + payStartTime: 'Start Time', + payStartTimePlaceholder: 'Please select start time', + payStartTimeRequired: 'Start time is required', + payEndTime: 'End Time', + payEndTimePlaceholder: 'Please select end time', + payEndTimeRequired: 'End time is required', + addFee: 'Add Fee', + deleteConfirm: 'Delete Confirmation', + deletePrompt: 'Are you sure to delete this fee rule?' + } + }, + zh: { + couponRule: { + title: '优惠券规则', + ruleName: '规则名称', + ruleNamePlaceholder: '请输入规则名称', + ruleNameRequired: '规则名称不能为空', + ruleNameMaxLength: '规则名称不能超过64个字符', + remark: '备注', + remarkPlaceholder: '请输入备注', + remarkMaxLength: '备注不能超过512个字符', + ruleIdRequired: '规则ID不能为空', + addRule: '添加规则', + editRule: '编辑规则', + deleteConfirm: '删除确认', + deleteRulePrompt: '确定要删除此优惠券规则吗?', + selectRuleFirst: '请先选择规则', + coupon: '优惠券', + fee: '缴费赠送' + }, + couponRuleCpps: { + id: '编号', + coupon: '优惠券', + couponPlaceholder: '请选择优惠券', + couponRequired: '优惠券不能为空', + quantity: '数量', + quantityPlaceholder: '请输入数量', + quantityRequired: '数量不能为空', + quantityPattern: '数量必须为正整数', + frequency: '频率', + frequencyPlaceholder: '请选择频率', + frequencyRequired: '频率不能为空', + once: '赠送一次', + monthly: '每月赠送', + addCoupon: '添加优惠券', + editCoupon: '编辑优惠券', + deleteConfirm: '删除确认', + deletePrompt: '确定要删除此优惠券吗?', + idRequired: 'ID不能为空' + }, + couponRuleFee: { + id: '编号', + fee: '费用', + feePlaceholder: '请选择费用', + feeRequired: '费用不能为空', + payTime: '缴费时间', + payMonth: '缴费月', + payMonthPlaceholder: '请输入缴费月', + payMonthRequired: '缴费月不能为空', + payStartTime: '开始时间', + payStartTimePlaceholder: '请选择开始时间', + payStartTimeRequired: '开始时间不能为空', + payEndTime: '结束时间', + payEndTimePlaceholder: '请选择结束时间', + payEndTimeRequired: '结束时间不能为空', + addFee: '添加缴费赠送', + deleteConfirm: '删除确认', + deletePrompt: '确定要删除此缴费规则吗?' + } + } +} \ No newline at end of file diff --git a/src/views/scm/couponRuleList.vue b/src/views/scm/couponRuleList.vue new file mode 100644 index 0000000..caf3fb1 --- /dev/null +++ b/src/views/scm/couponRuleList.vue @@ -0,0 +1,127 @@ + + + + + \ No newline at end of file