diff --git a/src/api/report/reportNoFeeRoomApi.js b/src/api/report/reportNoFeeRoomApi.js new file mode 100644 index 0000000..5bcdae0 --- /dev/null +++ b/src/api/report/reportNoFeeRoomApi.js @@ -0,0 +1,100 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询未收费房屋列表 +export function queryNoFeeRooms(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportFeeMonthStatistics/queryNoFeeRooms', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询楼栋列表 +export function queryFloors(params) { + return new Promise((resolve, reject) => { + request({ + url: '/floor.queryFloors', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res.apiFloorDataVoList || []) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询单元列表 +export function queryUnits(params) { + return new Promise((resolve, reject) => { + request({ + url: '/unit.queryUnits', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res || []) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询房屋列表 +export function queryRooms(params) { + return new Promise((resolve, reject) => { + request({ + url: '/room.queryRooms', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res || { rooms: [] }) + }).catch(error => { + reject(error) + }) + }) +} + +// 导出数据 +export function exportData(params) { + return new Promise((resolve, reject) => { + request({ + url: '/export.exportData', + method: 'get', + params: { + ...params, + communityId: 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/reportOweFeeDetailApi.js b/src/api/report/reportOweFeeDetailApi.js new file mode 100644 index 0000000..0d783c5 --- /dev/null +++ b/src/api/report/reportOweFeeDetailApi.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +// 查询欠费明细 +export function queryOweFeeDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportFeeMonthStatistics/queryOweFeeDetail', + method: 'get', + params + }).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 + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/report/reportOwnerPayFeeApi.js b/src/api/report/reportOwnerPayFeeApi.js new file mode 100644 index 0000000..04f9142 --- /dev/null +++ b/src/api/report/reportOwnerPayFeeApi.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询业主缴费明细报表 +export function queryReportOwnerPayFee(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/reportOwnerPayFee/queryReportOwnerPayFee', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询收费项列表 +export function listFeeConfigs(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/feeConfig.listFeeConfigs', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/report/reportPayFeeDetailApi.js b/src/api/report/reportPayFeeDetailApi.js new file mode 100644 index 0000000..352dd84 --- /dev/null +++ b/src/api/report/reportPayFeeDetailApi.js @@ -0,0 +1,90 @@ +import request from '@/utils/request' + +/** + * 查询缴费明细 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function queryPayFeeDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportFeeMonthStatistics/queryPayFeeDetail', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total, + records: res.records, + sumTotal: res.sumTotal || {} + }) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 导出缴费明细数据 + * @param {Object} params 导出参数 + * @returns {Promise} + */ +export function exportData(params) { + return new Promise((resolve, reject) => { + request({ + url: '/export.exportData', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 查询费用项列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listFeeConfigs(params) { + return new Promise((resolve, reject) => { + request({ + url: '/feeConfig.listFeeConfigs', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + feeConfigs: res.feeConfigs || [] + }) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 查询小区列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listMyEnteredCommunitys(params) { + return new Promise((resolve, reject) => { + request({ + url: '/community.listMyEnteredCommunitys', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + communitys: res.communitys || [] + }) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/report/reportQuestionAnswerDetailApi.js b/src/api/report/reportQuestionAnswerDetailApi.js new file mode 100644 index 0000000..b582591 --- /dev/null +++ b/src/api/report/reportQuestionAnswerDetailApi.js @@ -0,0 +1,40 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询问卷回答明细 +export function queryUserQuestionAnswerValue(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportQuestionAnswer/queryUserQuestionAnswerValue', + method: 'get', + params: { + ...params, + communityId: 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: 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/reportRepairApi.js b/src/api/report/reportRepairApi.js new file mode 100644 index 0000000..d42fd12 --- /dev/null +++ b/src/api/report/reportRepairApi.js @@ -0,0 +1,49 @@ +import request from '@/utils/request' + +// 查询报修汇总数据 +export function queryRepair(params) { + return new Promise((resolve, reject) => { + request({ + url: '/reportFeeMonthStatistics/queryRepair', + method: 'get', + params + }).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 + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取已入驻小区列表 +export function listMyEnteredCommunitys(params) { + return new Promise((resolve, reject) => { + request({ + url: '/community.listMyEnteredCommunitys', + 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/room/searchFloorApi.js b/src/api/room/searchFloorApi.js index 40be013..6192eff 100644 --- a/src/api/room/searchFloorApi.js +++ b/src/api/room/searchFloorApi.js @@ -8,11 +8,8 @@ export function searchFloors(params) { params }).then(response => { const res = response.data - if (res.code === 0) { - resolve(res.data) - } else { - reject(new Error(res.msg || '查询楼栋失败')) - } + + resolve(res) }).catch(error => { reject(error) }) diff --git a/src/components/report/InputSearchOwner.vue b/src/components/report/InputSearchOwner.vue new file mode 100644 index 0000000..834bf67 --- /dev/null +++ b/src/components/report/InputSearchOwner.vue @@ -0,0 +1,128 @@ + + + + + \ No newline at end of file diff --git a/src/components/report/InputSearchRoom.vue b/src/components/report/InputSearchRoom.vue new file mode 100644 index 0000000..5e2b1de --- /dev/null +++ b/src/components/report/InputSearchRoom.vue @@ -0,0 +1,118 @@ + + + + + \ No newline at end of file diff --git a/src/i18n/reportI18n.js b/src/i18n/reportI18n.js index 9d61011..03e9f18 100644 --- a/src/i18n/reportI18n.js +++ b/src/i18n/reportI18n.js @@ -10,6 +10,12 @@ import { messages as reportFeeSummaryMessages } from '../views/report/reportFeeS import { messages as reportFeeDetailMessages } from '../views/report/reportFeeDetailLang' import { messages as feeRemindMessages } from '../views/report/feeRemindLang' import { messages as dataReportMessages } from '../views/report/dataReportLang' +import { messages as reportOweFeeDetailMessages } from '../views/report/reportOweFeeDetailLang' +import { messages as reportPayFeeDetailMessages } from '../views/report/reportPayFeeDetailLang' +import { messages as reportRepairMessages } from '../views/report/reportRepairLang' +import { messages as reportNoFeeRoomMessages } from '../views/report/reportNoFeeRoomLang' +import { messages as reportQuestionAnswerDetailMessages } from '../views/report/reportQuestionAnswerDetailLang' +import { messages as reportOwnerPayFeeMessages } from '../views/report/reportOwnerPayFeeLang' export const messages = { en: { @@ -24,6 +30,12 @@ export const messages = { ...reportFeeDetailMessages.en, ...feeRemindMessages.en, ...dataReportMessages.en, + ...reportOweFeeDetailMessages.en, + ...reportPayFeeDetailMessages.en, + ...reportRepairMessages.en, + ...reportNoFeeRoomMessages.en, + ...reportQuestionAnswerDetailMessages.en, + ...reportOwnerPayFeeMessages.en, }, zh: { ...reportCustomComponentRelManageMessages.zh, @@ -36,5 +48,11 @@ export const messages = { ...reportFeeDetailMessages.zh, ...feeRemindMessages.zh, ...dataReportMessages.zh, + ...reportOweFeeDetailMessages.zh, + ...reportPayFeeDetailMessages.zh, + ...reportRepairMessages.zh, + ...reportNoFeeRoomMessages.zh, + ...reportQuestionAnswerDetailMessages.zh, + ...reportOwnerPayFeeMessages.zh, } } \ No newline at end of file diff --git a/src/router/reportRouter.js b/src/router/reportRouter.js index 9cd4a63..db80063 100644 --- a/src/router/reportRouter.js +++ b/src/router/reportRouter.js @@ -20,9 +20,39 @@ export default [ component: () => import('@/views/report/feeRemindList.vue') }, { - path:'/pages/report/dataReport', - name:'/pages/report/dataReport', + path: '/pages/report/dataReport', + name: '/pages/report/dataReport', component: () => import('@/views/report/dataReportList.vue') + }, + { + path: '/pages/property/reportOweFeeDetail', + name: '/pages/property/reportOweFeeDetail', + component: () => import('@/views/report/reportOweFeeDetailList.vue') + }, + { + path: '/pages/property/reportPayFeeDetail', + name: '/pages/property/reportPayFeeDetail', + component: () => import('@/views/report/reportPayFeeDetailList.vue') + }, + { + path: '/pages/property/reportRepair', + name: '/pages/property/reportRepair', + component: () => import('@/views/report/reportRepairList.vue') + }, + { + path: '/pages/property/reportNoFeeRoom', + name: '/pages/property/reportNoFeeRoom', + component: () => import('@/views/report/reportNoFeeRoomList.vue') + }, + { + path: '/pages/property/reportQuestionAnswerDetail', + name: '/pages/property/reportQuestionAnswerDetail', + component: () => import('@/views/report/reportQuestionAnswerDetailList.vue') + }, + { + path:'/pages/property/reportOwnerPayFee', + name:'/pages/property/reportOwnerPayFee', + component: () => import('@/views/report/reportOwnerPayFeeList.vue') }, ] \ No newline at end of file diff --git a/src/views/report/reportNoFeeRoomLang.js b/src/views/report/reportNoFeeRoomLang.js new file mode 100644 index 0000000..d3f4444 --- /dev/null +++ b/src/views/report/reportNoFeeRoomLang.js @@ -0,0 +1,54 @@ +export const messages = { + en: { + reportNoFeeRoom: { + search: { + title: 'Search Conditions', + floor: 'Select Building', + unit: 'Select Unit', + room: 'Select Room', + ownerName: 'Owner Name', + link: 'Owner Phone' + }, + list: { + title: 'No Fee Rooms', + tooltip: 'Rooms not associated with fee items' + }, + table: { + index: 'No.', + floor: 'Building', + unit: 'Unit', + room: 'Room', + ownerName: 'Owner Name', + link: 'Owner Phone' + }, + exportSuccess: 'Export started successfully', + exportFailed: 'Export failed' + } + }, + zh: { + reportNoFeeRoom: { + search: { + title: '查询条件', + floor: '请选择楼栋', + unit: '请选择单元', + room: '请选择房屋', + ownerName: '业主名称', + link: '业主电话' + }, + list: { + title: '未收费房屋', + tooltip: '未关联收费项的房屋信息' + }, + table: { + index: '序号', + floor: '楼栋', + unit: '单元', + room: '房屋', + ownerName: '业主名称', + link: '业主电话' + }, + exportSuccess: '导出任务已开始', + exportFailed: '导出失败' + } + } +} \ No newline at end of file diff --git a/src/views/report/reportNoFeeRoomList.vue b/src/views/report/reportNoFeeRoomList.vue new file mode 100644 index 0000000..4eb9731 --- /dev/null +++ b/src/views/report/reportNoFeeRoomList.vue @@ -0,0 +1,254 @@ + + + + + \ No newline at end of file diff --git a/src/views/report/reportOweFeeDetailLang.js b/src/views/report/reportOweFeeDetailLang.js new file mode 100644 index 0000000..6cc8ff2 --- /dev/null +++ b/src/views/report/reportOweFeeDetailLang.js @@ -0,0 +1,80 @@ +export const messages = { + en: { + reportOweFeeDetail: { + all: 'All', + searchCondition: 'Search Condition', + feeType: 'Fee Type', + selectFeeType: 'Select Fee Type', + roomNum: 'Room Number', + inputRoomNum: 'Input Room Number', + startTime: 'Start Time', + selectStartTime: 'Select Start Time', + endTime: 'End Time', + selectEndTime: 'Select End Time', + community: 'Community', + selectCommunity: 'Select Community', + search: 'Search', + reset: 'Reset', + ownerName: 'Owner Name', + inputOwnerName: 'Input Owner Name', + oweFeeDetail: 'Owe Fee Detail', + tooltip: 'Details of arrears associated with rooms and fee items', + updateDaily: 'Updated daily', + export: 'Export', + feeNum: 'Fee No.', + owner: 'Owner', + ownerTel: 'Owner Tel', + area: 'Area', + feeItem: 'Fee Item', + oweDays: 'Owe Days', + oweAmount: 'Owe Amount', + subtotal: 'Subtotal', + total: 'Total', + owe: 'Owe', + yuan: 'Yuan', + feeStartTimeDesc: 'Fee start time: The billing start time of the created fee', + oweDaysDesc1: 'Owe days (days): For deposit fee items, the number of days from the fee start time to the current day', + oweDaysDesc2: 'For non-deposit fee items, the number of days from the fee start time to the fee end time', + oweAmountDesc: 'Owe amount: The amount payable during the arrears period' + } + }, + zh: { + reportOweFeeDetail: { + all: '全部', + searchCondition: '查询条件', + feeType: '费用大类', + selectFeeType: '请选择费用大类', + roomNum: '房屋编号', + inputRoomNum: '请填写房屋编号', + startTime: '开始时间', + selectStartTime: '请选择开始时间', + endTime: '结束时间', + selectEndTime: '请选择结束时间', + community: '小区', + selectCommunity: '请选择小区', + search: '查询', + reset: '重置', + ownerName: '业主名称', + inputOwnerName: '请填写业主名称', + oweFeeDetail: '欠费明细表', + tooltip: '房屋与费用项关联的欠费明细', + updateDaily: '按天更新', + export: '导出', + feeNum: '费用编号', + owner: '业主', + ownerTel: '业主电话', + area: '面积', + feeItem: '费用项', + oweDays: '欠费时长(天)', + oweAmount: '欠费金额', + subtotal: '小计', + total: '大计', + owe: '欠费', + yuan: '元', + feeStartTimeDesc: '费用开始时间:所创建费用的计费起始时间', + oweDaysDesc1: '欠费时长(天):押金费用项欠费时长是费用开始时间到当天的天数', + oweDaysDesc2: '除押金外的费用项欠费时长是费用的开始时间到费用的结束时间的天数', + oweAmountDesc: '欠费金额:欠费周期内应缴费用' + } + } +} \ No newline at end of file diff --git a/src/views/report/reportOweFeeDetailList.vue b/src/views/report/reportOweFeeDetailList.vue new file mode 100644 index 0000000..5486d8f --- /dev/null +++ b/src/views/report/reportOweFeeDetailList.vue @@ -0,0 +1,419 @@ + + + + + \ No newline at end of file diff --git a/src/views/report/reportOwnerPayFeeLang.js b/src/views/report/reportOwnerPayFeeLang.js new file mode 100644 index 0000000..24fea1b --- /dev/null +++ b/src/views/report/reportOwnerPayFeeLang.js @@ -0,0 +1,42 @@ +export const messages = { + en: { + reportOwnerPayFee: { + queryCondition: 'Query Conditions', + selectFeeType: 'Select Fee Type', + selectFeeItem: 'Select Fee Item', + inputRoomNum: 'Input Room Number', + inputOwnerName: 'Input Owner Name', + inputYear: 'Input Year', + paymentDetails: 'Owner Payment Details', + paymentDetailsTip: 'Details of owner payment records', + owner: 'Owner', + room: 'Room', + feeItem: 'Fee Item', + month: 'Month', + total: 'Total', + receivable: 'Receivable', + prepayment: 'Prepayment', + fetchError: 'Failed to fetch payment details' + } + }, + zh: { + reportOwnerPayFee: { + queryCondition: '查询条件', + selectFeeType: '请选择收费大类', + selectFeeItem: '请选择收费项', + inputRoomNum: '请输入房屋编号', + inputOwnerName: '请输入业主名称', + inputYear: '请输入年份', + paymentDetails: '业主缴费明细', + paymentDetailsTip: '业主缴费记录明细', + owner: '业主', + room: '房屋', + feeItem: '费用项目', + month: '月', + total: '合计', + receivable: '应收', + prepayment: '预收', + fetchError: '获取缴费明细失败' + } + } +} \ No newline at end of file diff --git a/src/views/report/reportOwnerPayFeeList.vue b/src/views/report/reportOwnerPayFeeList.vue new file mode 100644 index 0000000..f7ad2cb --- /dev/null +++ b/src/views/report/reportOwnerPayFeeList.vue @@ -0,0 +1,369 @@ + + + + + \ No newline at end of file diff --git a/src/views/report/reportPayFeeDetailLang.js b/src/views/report/reportPayFeeDetailLang.js new file mode 100644 index 0000000..7ad948c --- /dev/null +++ b/src/views/report/reportPayFeeDetailLang.js @@ -0,0 +1,122 @@ +export const messages = { + en: { + reportPayFeeDetail: { + search: { + title: 'Search Conditions', + startTime: 'Please select payment start time', + endTime: 'Please select payment end time', + paymentMethod: 'Please select payment method', + feeStatus: 'Please select fee status', + roomOrCarNum: 'Room number or license plate number', + feeType: 'Please select fee type', + feeItem: 'Please select fee item', + feeStartTime: 'Please select fee start time', + feeEndTime: 'Please select fee end time', + community: 'Please select community' + }, + table: { + title: 'Payment Details', + tooltip: 'All house payment records details', + orderNum: 'Order Number', + roomOwner: 'Room/Owner', + feeTypeItem: 'Fee Type > Fee Item', + feeStatus: 'Fee Status', + paymentMethod: 'Payment Method', + paymentPeriod: 'Payment Period', + paymentTime: 'Payment Time', + cashier: 'Cashier', + payableAmount: 'Payable/Receivable Amount(Yuan)', + receivedAmount: 'Received Amount(Yuan)', + withholdAmount: 'Account Deduction(Yuan)', + preferentialAmount: 'Preferential/Deduction Amount(Yuan)', + giftAmount: 'Gift Amount(Yuan)', + lateFee: 'Late Fee(Yuan)', + area: 'Area(sqm)', + parkingSpace: 'Parking Space', + remark: 'Remark' + }, + summary: { + subtotal: 'Subtotal', + total: 'Total', + receivable: 'Receivable', + received: 'Received', + preferential: 'Preferential', + deduction: 'Deduction', + gift: 'Gift', + lateFee: 'Late Fee', + yuan: 'Yuan' + }, + explanation: { + preferential: 'Preferential amount: preferential amount generated under discount rules and no arrears discount rules', + deduction: 'Deduction amount: deduction amount generated under deduction rules', + gift: 'Gift amount: the payable amount of the gifted month under the gift rules', + lateFee: 'Late fee: the default late fee generated under the default late fee rules, which needs to be paid additionally' + }, + hide: 'Hide', + more: 'More', + fetchError: 'Failed to fetch payment details', + exportError: 'Failed to export data', + dateError: 'Payment end time must be greater than payment start time' + } + }, + zh: { + reportPayFeeDetail: { + search: { + title: '查询条件', + startTime: '请选择缴费开始时间', + endTime: '请选择缴费结束时间', + paymentMethod: '请选择支付方式', + feeStatus: '请选择费用状态', + roomOrCarNum: '房屋编号或者车牌号', + feeType: '请选择费用类型', + feeItem: '请选择收费项', + feeStartTime: '请选择收费开始时间', + feeEndTime: '请选择收费结束时间', + community: '请选择小区' + }, + table: { + title: '缴费明细表', + tooltip: '所有房屋缴费记录明细', + orderNum: '订单号', + roomOwner: '房号/业主', + feeTypeItem: '费用类型>费用项', + feeStatus: '费用状态', + paymentMethod: '支付方式', + paymentPeriod: '缴费时间段', + paymentTime: '缴费时间', + cashier: '收银员', + payableAmount: '应缴/应收金额(元)', + receivedAmount: '实收金额(元)', + withholdAmount: '账户抵扣(元)', + preferentialAmount: '优惠/减免金额(元)', + giftAmount: '赠送金额(元)', + lateFee: '滞纳金(元)', + area: '面积(平方米)', + parkingSpace: '车位', + remark: '说明' + }, + summary: { + subtotal: '小计', + total: '大计', + receivable: '应收', + received: '实收', + preferential: '优惠', + deduction: '减免', + gift: '赠送', + lateFee: '滞纳金', + yuan: '元' + }, + explanation: { + preferential: '优惠金额:打折规则和打折无欠费规则下产生的优惠金额', + deduction: '减免金额:减免规则下产生的减免金额', + gift: '赠送金额:赠送规则下赠送月份应缴的金额', + lateFee: '滞纳金:违约滞纳金规则下产生的违约金额,需额外缴纳的滞纳金' + }, + hide: '隐藏', + more: '更多', + fetchError: '获取缴费明细失败', + exportError: '导出数据失败', + dateError: '缴费结束时间必须大于缴费开始时间' + } + } +} \ No newline at end of file diff --git a/src/views/report/reportPayFeeDetailList.vue b/src/views/report/reportPayFeeDetailList.vue new file mode 100644 index 0000000..49930ce --- /dev/null +++ b/src/views/report/reportPayFeeDetailList.vue @@ -0,0 +1,474 @@ + + + + + \ No newline at end of file diff --git a/src/views/report/reportQuestionAnswerDetailLang.js b/src/views/report/reportQuestionAnswerDetailLang.js new file mode 100644 index 0000000..a6bfb4f --- /dev/null +++ b/src/views/report/reportQuestionAnswerDetailLang.js @@ -0,0 +1,58 @@ +export const messages = { + en: { + reportQuestionAnswerDetail: { + queryCondition: 'Query Condition', + selectQaType: 'Please select questionnaire type', + pleaseSelect: 'Please select', + ownerQuestionnaire: 'Owner Questionnaire', + ownerVote: 'Owner Vote', + staffVote: 'Staff Vote', + selectStartTime: 'Please select start time', + selectEndTime: 'Please select end time', + query: 'Query', + reset: 'Reset', + questionnaireDetail: 'Questionnaire Detail Table', + questionnaireAnswerDetail: 'Questionnaire answer details', + export: 'Export', + serialNumber: 'No.', + questionnairePerson: 'Questionnaire Person', + questionnaireType: 'Questionnaire Type', + questionnaireName: 'Questionnaire Name', + questionnaireQuestion: 'Questionnaire Question', + answer: 'Answer', + time: 'Time', + endTimeMustGreater: 'End time must be greater than start time', + fetchError: 'Failed to fetch questionnaire data', + exportSuccess: 'Export success', + exportError: 'Export failed' + } + }, + zh: { + reportQuestionAnswerDetail: { + queryCondition: '查询条件', + selectQaType: '请选择问卷类型', + pleaseSelect: '请选择', + ownerQuestionnaire: '业主问卷', + ownerVote: '业主投票', + staffVote: '员工投票', + selectStartTime: '请选择问卷开始时间', + selectEndTime: '请选择问卷结束时间', + query: '查询', + reset: '重置', + questionnaireDetail: '问卷明细表', + questionnaireAnswerDetail: '问卷回答明细', + export: '导出', + serialNumber: '序号', + questionnairePerson: '问卷人', + questionnaireType: '问卷类型', + questionnaireName: '问卷名称', + questionnaireQuestion: '问卷题目', + answer: '答案', + time: '时间', + endTimeMustGreater: '结束时间必须大于开始时间', + fetchError: '获取问卷数据失败', + exportSuccess: '导出成功', + exportError: '导出失败' + } + } +} \ No newline at end of file diff --git a/src/views/report/reportQuestionAnswerDetailList.vue b/src/views/report/reportQuestionAnswerDetailList.vue new file mode 100644 index 0000000..35a285b --- /dev/null +++ b/src/views/report/reportQuestionAnswerDetailList.vue @@ -0,0 +1,192 @@ + + + + + \ No newline at end of file diff --git a/src/views/report/reportRepairLang.js b/src/views/report/reportRepairLang.js new file mode 100644 index 0000000..9771f06 --- /dev/null +++ b/src/views/report/reportRepairLang.js @@ -0,0 +1,64 @@ +export const messages = { + en: { + reportRepair: { + queryCondition: 'Query Conditions', + hide: 'Hide', + more: 'More', + beginStartTimePlaceholder: 'Please select creation start time', + beginEndTimePlaceholder: 'Please select creation end time', + finishStartTimePlaceholder: 'Please select completion start time', + finishEndTimePlaceholder: 'Please select completion end time', + communityPlaceholder: 'Please select community', + search: 'Search', + reset: 'Reset', + staffPlaceholder: 'Please select staff name', + statePlaceholder: 'Please select status', + reportTitle: 'Repair Summary Report', + tooltip: 'Display work order summary by staff dimension', + export: 'Export', + repairId: 'Repair ID', + staffId: 'Staff ID', + staffName: 'Staff Name', + dealing: 'Processing (count)', + dispatch: 'Dispatch (count)', + transfer: 'Transfer (count)', + chargeback: 'Chargeback (count)', + returnVisit: 'Return Visit (count)', + finished: 'Finished (count)', + score: 'Staff Score', + statistics: 'Statistics', + timeError: 'End time must be greater than start time' + } + }, + zh: { + reportRepair: { + queryCondition: '查询条件', + hide: '隐藏', + more: '更多', + beginStartTimePlaceholder: '请选择创建开始时间', + beginEndTimePlaceholder: '请选择创建结束时间', + finishStartTimePlaceholder: '请选择完结开始时间', + finishEndTimePlaceholder: '请选择完结结束时间', + communityPlaceholder: '请选择小区', + search: '查询', + reset: '重置', + staffPlaceholder: '请选择员工姓名', + statePlaceholder: '请选择状态', + reportTitle: '报修汇总表', + tooltip: '以员工为维度,展示员工处理工单情况汇总', + export: '导出', + repairId: '报修编号', + staffId: '员工ID', + staffName: '员工姓名', + dealing: '处理中(条)', + dispatch: '派单(条)', + transfer: '转单(条)', + chargeback: '退单(条)', + returnVisit: '已回访(条)', + finished: '已完结(条)', + score: '员工评分', + statistics: '统计', + timeError: '结束时间必须大于开始时间' + } + } +} \ No newline at end of file diff --git a/src/views/report/reportRepairList.vue b/src/views/report/reportRepairList.vue new file mode 100644 index 0000000..23a4ab3 --- /dev/null +++ b/src/views/report/reportRepairList.vue @@ -0,0 +1,349 @@ + + + + + \ No newline at end of file