diff --git a/src/api/fee/floorShareApi.js b/src/api/fee/floorShareApi.js new file mode 100644 index 0000000..4e251dc --- /dev/null +++ b/src/api/fee/floorShareApi.js @@ -0,0 +1,116 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询楼栋公摊列表 +export function listFloorShareMeter(params) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.listFloorShareMeter', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加楼栋公摊 +export function saveFloorShareMeter(data) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.saveFloorShareMeter', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 修改楼栋公摊 +export function updateFloorShareMeter(data) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.updateFloorShareMeter', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除楼栋公摊 +export function deleteFloorShareMeter(data) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.deleteFloorShareMeter', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询楼栋列表 +export function queryFloors(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) + }) + }) +} + +// 查询费用项列表 +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/api/fee/roomFeeImportApi.js b/src/api/fee/roomFeeImportApi.js new file mode 100644 index 0000000..14b0245 --- /dev/null +++ b/src/api/fee/roomFeeImportApi.js @@ -0,0 +1,111 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +/** + * 查询费用导入列表 + * @param {Object} params 查询参数 + * @returns {Promise} Promise对象 + */ +export function queryImportFee(params) { + return new Promise((resolve, reject) => { + const queryParams = { + ...params, + communityId: getCommunityId() + } + request({ + url: '/importFee/queryImportFee', + method: 'get', + params: queryParams + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total, + records: res.records + }) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 导入费用数据 + * @param {FormData} formData 表单数据 + * @returns {Promise} Promise对象 + */ +export function importRoomFeeData(formData) { + return new Promise((resolve, reject) => { + request({ + url: '/assetImport/importData', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res.data) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 下载导入模板 + * @param {Object} params 查询参数 + * @returns {Promise} Promise对象 + */ +export function downloadImportTemplate(params) { + return new Promise((resolve, reject) => { + request({ + url: '/export.exportData', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res.data) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取费用导入详情 + * @param {String} importFeeId 导入ID + * @returns {Promise} Promise对象 + */ +export function getImportFeeDetail(importFeeId) { + return new Promise((resolve, reject) => { + request({ + url: '/importFee/getImportFeeDetail', + method: 'get', + params: { + importFeeId, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res.data) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/fee/shareReadingApi.js b/src/api/fee/shareReadingApi.js new file mode 100644 index 0000000..57c578d --- /dev/null +++ b/src/api/fee/shareReadingApi.js @@ -0,0 +1,119 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取公摊抄表列表 +export function listFloorShareReading(params) { + return new Promise((resolve, reject) => { + const defaultParams = { + communityId: getCommunityId(), + page: 1, + row: 10 + } + request({ + url: '/meter.listFloorShareReading', + method: 'get', + params: { ...defaultParams, ...params } + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取公摊表列表 +export function listFloorShareMeter(params) { + return new Promise((resolve, reject) => { + const defaultParams = { + communityId: getCommunityId(), + page: 1, + row: 300 + } + request({ + url: '/meter.listFloorShareMeter', + method: 'get', + params: { ...defaultParams, ...params } + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加公摊抄表 +export function saveFloorShareReading(data) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.saveFloorShareReading', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 审核公摊抄表 +export function auditFloorShareReading(data) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.auditFloorShareReading', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除公摊抄表 +export function deleteFloorShareReading(data) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.deleteFloorShareReading', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/fee/shareReadingFeeApi.js b/src/api/fee/shareReadingFeeApi.js new file mode 100644 index 0000000..36cca53 --- /dev/null +++ b/src/api/fee/shareReadingFeeApi.js @@ -0,0 +1,39 @@ +import request from '@/utils/request' + +/** + * 获取公摊费用列表 + * @param {Object} params 查询参数 + * @returns {Promise} Promise对象 + */ +export function listFloorShareFee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/meter.listFloorShareFee', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取社区ID + * @returns {Promise} Promise对象 + */ +export function getCommunityId() { + return new Promise((resolve, reject) => { + request({ + url: '/community.getCommunityId', + method: 'get' + }).then(response => { + const res = response.data + resolve(res.communityId) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/fee/addFloorShare.vue b/src/components/fee/addFloorShare.vue new file mode 100644 index 0000000..0504015 --- /dev/null +++ b/src/components/fee/addFloorShare.vue @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + {{ $t('floorShare.meterNumTip') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/fee/addShareReading.vue b/src/components/fee/addShareReading.vue new file mode 100644 index 0000000..04aefc2 --- /dev/null +++ b/src/components/fee/addShareReading.vue @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/fee/auditShareReading.vue b/src/components/fee/auditShareReading.vue new file mode 100644 index 0000000..2c4fa37 --- /dev/null +++ b/src/components/fee/auditShareReading.vue @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/fee/deleteFloorShare.vue b/src/components/fee/deleteFloorShare.vue new file mode 100644 index 0000000..a5d88c1 --- /dev/null +++ b/src/components/fee/deleteFloorShare.vue @@ -0,0 +1,69 @@ + + + + {{ $t('floorShare.deleteMessage') }} + + + + + + + + \ No newline at end of file diff --git a/src/components/fee/deleteShareReading.vue b/src/components/fee/deleteShareReading.vue new file mode 100644 index 0000000..6a69eec --- /dev/null +++ b/src/components/fee/deleteShareReading.vue @@ -0,0 +1,56 @@ + + + + {{ $t('shareReading.delete.confirm') }} + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + \ No newline at end of file diff --git a/src/components/fee/editFloorShare.vue b/src/components/fee/editFloorShare.vue new file mode 100644 index 0000000..58a120e --- /dev/null +++ b/src/components/fee/editFloorShare.vue @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/fee/importRoomFee.vue b/src/components/fee/importRoomFee.vue new file mode 100644 index 0000000..2d95a26 --- /dev/null +++ b/src/components/fee/importRoomFee.vue @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + {{ $t('importRoomFee.button.selectFile') }} + + + {{ $t('importRoomFee.tips.fileFormat') }} + + + + + + + {{ $t('importRoomFee.tips.downloadTemplate1') }} + + {{ $t('importRoomFee.tips.downloadTemplate2') }} + + {{ $t('importRoomFee.tips.downloadTemplate3') }} + + + + + + + + + + + \ No newline at end of file diff --git a/src/i18n/commonLang.js b/src/i18n/commonLang.js index 625e327..6cc0813 100644 --- a/src/i18n/commonLang.js +++ b/src/i18n/commonLang.js @@ -52,6 +52,7 @@ export const messages = { year:'Year', month:'Month', examine:'Examine', + audit:'Audit', } }, zh: { @@ -107,6 +108,7 @@ export const messages = { year:'年', month:'月', examine:'审核', + audit:'审核', } } } \ No newline at end of file diff --git a/src/i18n/feeI18n.js b/src/i18n/feeI18n.js index 3f97d0f..ab2755d 100644 --- a/src/i18n/feeI18n.js +++ b/src/i18n/feeI18n.js @@ -10,6 +10,10 @@ import { messages as feeReceiptMessages } from '../views/fee/feeReceiptLang' import { messages as printPayFeeMessages } from '../views/fee/printPayFeeLang' import { messages as printPayFeeBangTaiMessages } from '../views/fee/printPayFeeBangTaiLang' import { messages as printSmallPayFeeMessages } from '../views/fee/printSmallPayFeeLang' +import { messages as floorShareMessages } from '../views/fee/floorShareLang' +import { messages as shareReadingMessages } from '../views/fee/shareReadingLang' +import { messages as roomFeeImportMessages } from '../views/fee/roomFeeImportLang' +import { messages as shareReadingFeeMessages } from '../views/fee/shareReadingFeeLang' export const messages = { en: { @@ -25,6 +29,10 @@ export const messages = { ...printPayFeeMessages.en, ...printPayFeeBangTaiMessages.en, ...printSmallPayFeeMessages.en, + ...floorShareMessages.en, + ...shareReadingMessages.en, + ...roomFeeImportMessages.en, + ...shareReadingFeeMessages.en, }, zh: { ...contractCreateFeeMessages.zh, @@ -39,5 +47,9 @@ export const messages = { ...printPayFeeMessages.zh, ...printPayFeeBangTaiMessages.zh, ...printSmallPayFeeMessages.zh, + ...floorShareMessages.zh, + ...shareReadingMessages.zh, + ...roomFeeImportMessages.zh, + ...shareReadingFeeMessages.zh, } } \ No newline at end of file diff --git a/src/router/feeRouter.js b/src/router/feeRouter.js index 34f0c91..99baf4c 100644 --- a/src/router/feeRouter.js +++ b/src/router/feeRouter.js @@ -44,5 +44,25 @@ export default [ name: '/pages/property/feeReceipt', component: () => import('@/views/fee/feeReceiptList.vue') }, + { + path: '/pages/fee/floorShare', + name: '/pages/fee/floorShare', + component: () => import('@/views/fee/floorShareList.vue') + }, + { + path: '/pages/fee/shareReading', + name: '/pages/fee/shareReading', + component: () => import('@/views/fee/shareReadingList.vue') + }, + { + path:'/pages/property/roomFeeImport', + name:'/pages/property/roomFeeImport', + component: () => import('@/views/fee/roomFeeImportList.vue') + }, + { + path:'/views/fee/shareReadingFee', + name:'/views/fee/shareReadingFee', + component: () => import('@/views/fee/shareReadingFeeList.vue') + }, ] \ No newline at end of file diff --git a/src/views/fee/floorShareLang.js b/src/views/fee/floorShareLang.js new file mode 100644 index 0000000..b0b71c1 --- /dev/null +++ b/src/views/fee/floorShareLang.js @@ -0,0 +1,88 @@ +export const messages = { + en: { + floorShare: { + title: 'Floor Share', + id: 'ID', + floor: 'Floor', + meterType: 'Meter Type', + meterNum: 'Meter Number', + shareType: 'Share Type', + formula: 'Formula', + feeItem: 'Fee Item', + feePrice: 'Fee Price', + degree: 'Degree', + readingTime: 'Reading Time', + createTime: 'Create Time', + addTitle: 'Add Floor Share', + editTitle: 'Edit Floor Share', + deleteConfirm: 'Confirm Operation', + deleteMessage: 'Are you sure to delete this floor share?', + fetchError: 'Failed to fetch floor share data', + fetchFloorError: 'Failed to fetch floor data', + fetchFeeConfigError: 'Failed to fetch fee config data', + addSuccess: 'Floor share added successfully', + addFailed: 'Failed to add floor share', + editSuccess: 'Floor share updated successfully', + editFailed: 'Failed to update floor share', + deleteSuccess: 'Floor share deleted successfully', + deleteFailed: 'Failed to delete floor share', + meterTypeRequired: 'Please select meter type', + feeItemRequired: 'Please select fee item', + feePriceRequired: 'Please enter fee price', + feePriceNumber: 'Fee price must be a number', + shareTypeRequired: 'Please select share type', + formulaRequired: 'Please enter formula', + idRequired: 'ID is required', + meterNumPlaceholder: 'Optional, please enter meter number', + meterNumTip: 'Enter 1 if no meter number', + electricMeter: 'Electric Meter', + waterMeter: 'Water Meter', + byArea: 'By Area', + byHouse: 'By House', + byFormula: 'By Formula' + } + }, + zh: { + floorShare: { + title: '楼栋公摊', + id: '编号', + floor: '楼栋', + meterType: '表类型', + meterNum: '表编号', + shareType: '公摊方式', + formula: '公式', + feeItem: '费用项', + feePrice: '费用单价', + degree: '度数', + readingTime: '抄表时间', + createTime: '创建时间', + addTitle: '添加楼栋公摊', + editTitle: '修改楼栋公摊', + deleteConfirm: '请确认您的操作', + deleteMessage: '确定删除楼栋公摊吗?', + fetchError: '获取楼栋公摊数据失败', + fetchFloorError: '获取楼栋数据失败', + fetchFeeConfigError: '获取费用项数据失败', + addSuccess: '楼栋公摊添加成功', + addFailed: '楼栋公摊添加失败', + editSuccess: '楼栋公摊修改成功', + editFailed: '楼栋公摊修改失败', + deleteSuccess: '楼栋公摊删除成功', + deleteFailed: '楼栋公摊删除失败', + meterTypeRequired: '请选择表类型', + feeItemRequired: '请选择费用项', + feePriceRequired: '请输入费用单价', + feePriceNumber: '费用单价必须为数字', + shareTypeRequired: '请选择公摊方式', + formulaRequired: '请输入公式', + idRequired: '编号不能为空', + meterNumPlaceholder: '选填,请填写表编号', + meterNumTip: '没有表号请填写1', + electricMeter: '电表', + waterMeter: '水表', + byArea: '按面积', + byHouse: '按户', + byFormula: '按公式' + } + } +} \ No newline at end of file diff --git a/src/views/fee/floorShareList.vue b/src/views/fee/floorShareList.vue new file mode 100644 index 0000000..4c7beb1 --- /dev/null +++ b/src/views/fee/floorShareList.vue @@ -0,0 +1,164 @@ + + + + + + + + + + {{ $t('floorShare.title') }} + + {{ $t('common.add') }} + + + + + + + + + + + + {{ scope.row.formulaValue || '-' }} + + + + + + + + + + + {{ $t('common.edit') }} + + + {{ $t('common.delete') }} + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/fee/roomFeeImportLang.js b/src/views/fee/roomFeeImportLang.js new file mode 100644 index 0000000..6f8b6c5 --- /dev/null +++ b/src/views/fee/roomFeeImportLang.js @@ -0,0 +1,116 @@ +export const messages = { + en: { + roomFeeImport: { + search: { + title: 'Search Conditions', + importFeeId: 'Please enter import ID', + feeTypeCd: 'Please select fee type' + }, + table: { + title: 'Fee Import', + importFeeId: 'Import ID', + feeTypeCd: 'Fee Type', + createTime: 'Create Time', + remark: 'Remark' + }, + button: { + import: 'Import Fee' + }, + fetchError: 'Failed to fetch fee import data' + }, + importRoomFee: { + title: 'Fee Import', + form: { + feeTypeCd: 'Fee Type', + objType: 'Fee Object', + file: 'Select File', + template: 'Download Template' + }, + placeholder: { + feeTypeCd: 'Required, please select fee type', + objType: 'Required, please select fee object' + }, + options: { + room: 'Room', + parking: 'Parking' + }, + rules: { + feeTypeCdRequired: 'Fee type is required', + objTypeRequired: 'Fee object is required', + fileRequired: 'File is required' + }, + tips: { + fileFormat: 'Only .xls, .xlsx files can be uploaded', + downloadTemplate1: 'Please download', + downloadTemplate2: 'import template', + downloadTemplate3: 'to prepare data before uploading' + }, + button: { + selectFile: 'Select File' + }, + message: { + importSuccess: 'Import successfully', + importFailed: 'Import failed', + downloadSuccess: 'Download template successfully', + downloadFailed: 'Download template failed' + } + } + }, + zh: { + roomFeeImport: { + search: { + title: '查询条件', + importFeeId: '请输入导入ID', + feeTypeCd: '请选择费用类型' + }, + table: { + title: '费用导入', + importFeeId: '导入ID', + feeTypeCd: '费用类型', + createTime: '创建时间', + remark: '备注' + }, + button: { + import: '费用导入' + }, + fetchError: '获取费用导入数据失败' + }, + importRoomFee: { + title: '费用导入', + form: { + feeTypeCd: '费用类型', + objType: '费用对象', + file: '选择文件', + template: '下载模板' + }, + placeholder: { + feeTypeCd: '必填,请选择费用类型', + objType: '必填,请选择费用对象' + }, + options: { + room: '房屋', + parking: '车位车辆' + }, + rules: { + feeTypeCdRequired: '费用类型不能为空', + objTypeRequired: '费用对象不能为空', + fileRequired: '文件不能为空' + }, + tips: { + fileFormat: '只能上传.xls, .xlsx格式文件', + downloadTemplate1: '请先下载', + downloadTemplate2: '导入模板', + downloadTemplate3: '准备数据后上传导入' + }, + button: { + selectFile: '选择文件' + }, + message: { + importSuccess: '导入成功', + importFailed: '导入失败', + downloadSuccess: '下载模板成功', + downloadFailed: '下载模板失败' + } + } + } +} \ No newline at end of file diff --git a/src/views/fee/roomFeeImportList.vue b/src/views/fee/roomFeeImportList.vue new file mode 100644 index 0000000..94f327c --- /dev/null +++ b/src/views/fee/roomFeeImportList.vue @@ -0,0 +1,211 @@ + + + + + + {{ $t('roomFeeImport.search.title') }} + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + {{ $t('roomFeeImport.table.title') }} + + {{ $t('roomFeeImport.button.import') }} + + + + + + + + + + + + {{ $t('common.detail') }} + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/fee/shareReadingFeeLang.js b/src/views/fee/shareReadingFeeLang.js new file mode 100644 index 0000000..4a6d063 --- /dev/null +++ b/src/views/fee/shareReadingFeeLang.js @@ -0,0 +1,44 @@ +export const messages = { + en: { + shareReadingFee: { + search: { + title: 'Search Conditions', + roomName: 'Please enter room number', + ownerName: 'Please enter owner name' + }, + list: { + title: 'Shared Reading Fees' + }, + table: { + roomName: 'Room', + ownerName: 'Owner', + feeName: 'Fee Name', + degrees: 'Shared Degrees', + amount: 'Shared Amount', + remark: 'Remark' + }, + fetchError: 'Failed to fetch shared reading fees' + } + }, + zh: { + shareReadingFee: { + search: { + title: '查询条件', + roomName: '请输入房屋编号', + ownerName: '请输入业主姓名' + }, + list: { + title: '公摊费用' + }, + table: { + roomName: '房屋', + ownerName: '业主', + feeName: '费用名称', + degrees: '公摊度数', + amount: '公摊金额', + remark: '说明' + }, + fetchError: '获取公摊费用失败' + } + } +} \ No newline at end of file diff --git a/src/views/fee/shareReadingFeeList.vue b/src/views/fee/shareReadingFeeList.vue new file mode 100644 index 0000000..3b34035 --- /dev/null +++ b/src/views/fee/shareReadingFeeList.vue @@ -0,0 +1,144 @@ + + + + + + {{ $t('shareReadingFee.search.title') }} + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + {{ $t('shareReadingFee.list.title') }} + + {{ $t('common.back') }} + + + + + + + + + + + + + + {{ $t('common.detail') }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/fee/shareReadingLang.js b/src/views/fee/shareReadingLang.js new file mode 100644 index 0000000..bec144b --- /dev/null +++ b/src/views/fee/shareReadingLang.js @@ -0,0 +1,158 @@ +export const messages = { + en: { + shareReading: { + search: { + title: 'Search Conditions', + selectMeter: 'Please select shared meter', + startTime: 'Please select start time', + endTime: 'Please select end time' + }, + list: { + title: 'Shared Meter Reading', + addReading: 'Add Reading' + }, + table: { + id: 'ID', + name: 'Name', + preDegrees: 'Previous Degrees', + curDegrees: 'Current Degrees', + degrees: 'Degrees', + preReadingTime: 'Previous Reading Time', + curReadingTime: 'Current Reading Time', + reader: 'Reader', + status: 'Status', + remark: 'Remark', + auditor: 'Auditor', + auditOpinion: 'Audit Opinion', + shareProgress: 'Share Progress', + readingTime: 'Reading Time', + shareFee: 'Share Fee', + operation: 'Operation' + }, + status: { + waiting: 'Waiting', + passed: 'Passed', + rejected: 'Rejected', + all: 'All' + }, + add: { + title: 'Add Shared Reading', + meter: 'Shared Meter', + selectMeter: 'Please select shared meter', + preDegrees: 'Previous Degrees', + inputPreDegrees: 'Please input previous degrees', + curDegrees: 'Current Degrees', + inputCurDegrees: 'Please input current degrees', + preReadingTime: 'Previous Reading Time', + selectPreTime: 'Please select previous reading time', + curReadingTime: 'Current Reading Time', + selectCurTime: 'Please select current reading time', + remark: 'Remark', + inputRemark: 'Please input remark (optional)' + }, + audit: { + title: 'Audit Shared Reading', + status: 'Status', + selectStatus: 'Please select status', + remark: 'Remark', + inputRemark: 'Please input remark' + }, + delete: { + title: 'Delete Confirmation', + confirm: 'Are you sure to delete this shared reading?' + }, + validate: { + selectMeter: 'Please select shared meter', + inputPreDegrees: 'Please input previous degrees', + inputCurDegrees: 'Please input current degrees', + selectPreTime: 'Please select previous reading time', + selectCurTime: 'Please select current reading time', + selectStatus: 'Please select audit status', + number: 'Please input valid number' + }, + message: { + addSuccess: 'Add shared reading successfully', + auditSuccess: 'Audit shared reading successfully', + deleteSuccess: 'Delete shared reading successfully' + } + } + }, + zh: { + shareReading: { + search: { + title: '查询条件', + selectMeter: '请选择公摊表', + startTime: '请选择开始时间', + endTime: '请选择结束时间' + }, + list: { + title: '公摊抄表', + addReading: '抄表' + }, + table: { + id: '编号', + name: '名称', + preDegrees: '上期度数', + curDegrees: '本期度数', + degrees: '度数', + preReadingTime: '上期读表时间', + curReadingTime: '本期读表时间', + reader: '抄表人', + status: '状态', + remark: '说明', + auditor: '审核人', + auditOpinion: '审核意见', + shareProgress: '公摊进度', + readingTime: '抄表时间', + shareFee: '公摊费用', + operation: '操作' + }, + status: { + waiting: '待审核', + passed: '审核通过', + rejected: '审核不通过', + all: '全部' + }, + add: { + title: '公摊抄表', + meter: '公摊表', + selectMeter: '请选择公摊表', + preDegrees: '上期度数', + inputPreDegrees: '请填写上期度数', + curDegrees: '本期度数', + inputCurDegrees: '请填写本期度数', + preReadingTime: '上期读表时间', + selectPreTime: '请选择上期读表时间', + curReadingTime: '本期读表时间', + selectCurTime: '请选择本期读表时间', + remark: '备注', + inputRemark: '请填写备注(选填)' + }, + audit: { + title: '公摊审核', + status: '审核', + selectStatus: '请选择审核', + remark: '说明', + inputRemark: '请填写说明' + }, + delete: { + title: '删除确认', + confirm: '确定删除公摊抄表?' + }, + validate: { + selectMeter: '请选择公摊表', + inputPreDegrees: '请填写上期度数', + inputCurDegrees: '请填写本期度数', + selectPreTime: '请选择上期读表时间', + selectCurTime: '请选择本期读表时间', + selectStatus: '请选择审核状态', + number: '请输入有效数字' + }, + message: { + addSuccess: '添加公摊抄表成功', + auditSuccess: '审核公摊抄表成功', + deleteSuccess: '删除公摊抄表成功' + } + } + } +} \ No newline at end of file diff --git a/src/views/fee/shareReadingList.vue b/src/views/fee/shareReadingList.vue new file mode 100644 index 0000000..2b10f30 --- /dev/null +++ b/src/views/fee/shareReadingList.vue @@ -0,0 +1,286 @@ + + + + + + + + {{ item.name }} + + + + + + + + {{ $t('shareReading.search.title') }} + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + {{ $t('shareReading.list.title') }} + + {{ $t('shareReading.list.addReading') }} + + + + + + + + + + {{ scope.row.curDegrees - scope.row.preDegrees }} + + + + + + + + {{ $t('shareReading.status.waiting') }} + {{ $t('shareReading.status.passed') }} + {{ $t('shareReading.status.rejected') }} + + + + + {{ scope.row.remark || '-' }} + + + + + {{ scope.row.auditStaffName || '-' }} + + + + + {{ scope.row.stateMsg || '-' }} + + + + + {{ scope.row.shareMsg || '-' }} + + + + + + + {{ $t('common.audit') }} + + + {{ $t('common.delete') }} + + + {{ $t('shareReading.table.shareFee') }} + + + + + + + + + + + + + + + + + + \ No newline at end of file
{{ $t('floorShare.deleteMessage') }}
{{ $t('shareReading.delete.confirm') }}