diff --git a/src/api/fee/carCreateFeeApi.js b/src/api/fee/carCreateFeeApi.js new file mode 100644 index 0000000..2ce2443 --- /dev/null +++ b/src/api/fee/carCreateFeeApi.js @@ -0,0 +1,136 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询车辆收费信息 +export function listCarCreateFees(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/owner.queryOwnerCars', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '查询车辆收费信息失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 保存停车位收费信息 +export function saveParkingSpaceCreateFee(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/fee.saveParkingSpaceCreateFee', + method: 'post', + data: { + ...data, + 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) + }) + }) +} + +// 查询停车场列表 +export function listParkingAreas(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/parkingArea.listParkingAreas', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 导出车辆收费Excel +export function exportCarFeeExcel(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/callComponent/importAndExportFee/exportData', + method: 'get', + params: { + ...params, + communityId, + type: '2002' + } + }).then(response => { + resolve(response) + }).catch(error => { + reject(error) + }) + }) +} + +// 导入自定义费用 +export function importCustomFee(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + const formData = new FormData() + formData.append('uploadFile', data.file) + formData.append('communityId', communityId) + formData.append('importAdapt', 'importCustomFee') + + request({ + url: '/callComponent/upload/assetImport/importData', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).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/listCarFeeApi.js b/src/api/fee/listCarFeeApi.js new file mode 100644 index 0000000..c0d77fe --- /dev/null +++ b/src/api/fee/listCarFeeApi.js @@ -0,0 +1,215 @@ +import request from '@/utils/request' + +// 查询费用列表 +export function listFee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/fee.listFee', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除费用 +export function deleteFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/fee.deleteFee', + method: 'post', + data + }).then(response => { + const res = response.data + + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新费用 +export function updateFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/fee.updateFee', + method: 'post', + data + }).then(response => { + const res = response.data + + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 拆分费用 +export function splitFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/feeSub.splitPayFee', + method: 'post', + data + }).then(response => { + const res = response.data + + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存车位费用 +export function saveParkingSpaceCreateFee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/fee.saveParkingSpaceCreateFee', + method: 'post', + data + }).then(response => { + const res = response.data + + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存抄表 +export function saveMeterWater(data) { + return new Promise((resolve, reject) => { + request({ + url: '/meterWater.saveMeterWater', + method: 'post', + data + }).then(response => { + const res = response.data + + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询抄表 +export function queryPreMeterWater(params) { + return new Promise((resolve, reject) => { + request({ + url: '/meterWater/queryPreMeterWater', + method: 'get', + params + }).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 + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询停车场 +export function listParkingAreas(params) { + return new Promise((resolve, reject) => { + request({ + url: '/parkingArea.listParkingAreas', + method: 'get', + params + }).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 + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询单元 +export function queryUnits(params) { + return new Promise((resolve, reject) => { + request({ + url: '/unit.queryUnits', + method: 'get', + params + }).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 + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询抄表类型 +export function listMeterType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/meterType.listMeterType', + 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/work/repairSettingApi.js b/src/api/work/repairSettingApi.js new file mode 100644 index 0000000..327def9 --- /dev/null +++ b/src/api/work/repairSettingApi.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取报修设置列表 +export function listRepairSettings(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/repair.listRepairSettings', + method: 'get', + params + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '获取报修设置列表失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 添加报修设置 +export function saveRepairSetting(data) { + return new Promise((resolve, reject) => { + data.communityId = getCommunityId() + request({ + url: '/repair.saveRepairSetting', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '添加报修设置失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 更新报修设置 +export function updateRepairSetting(data) { + return new Promise((resolve, reject) => { + data.communityId = getCommunityId() + request({ + url: '/repair.updateRepairSetting', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '更新报修设置失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除报修设置 +export function deleteRepairSetting(settingId) { + return new Promise((resolve, reject) => { + const data = { + settingId, + communityId: getCommunityId() + } + request({ + url: '/repair.deleteRepairSetting', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '删除报修设置失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 获取字典数据 +export function getDict(dictType, state) { + return new Promise((resolve, reject) => { + request({ + url: '/dict.getDict', + method: 'get', + params: { + dictType, + state, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + 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/work/repairTypeUserApi.js b/src/api/work/repairTypeUserApi.js new file mode 100644 index 0000000..10648cc --- /dev/null +++ b/src/api/work/repairTypeUserApi.js @@ -0,0 +1,98 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取报修师傅列表 +export function listRepairTypeUsers(params) { + return new Promise((resolve, reject) => { + request({ + url: '/repair.listRepairTypeUsers', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存报修师傅 +export function saveRepairTypeUser(data) { + data.communityId = getCommunityId() + return new Promise((resolve, reject) => { + request({ + url: '/repair.saveRepairTypeUser', + method: 'post', + data + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新报修师傅 +export function updateRepairTypeUser(data) { + data.communityId = getCommunityId() + + return new Promise((resolve, reject) => { + request({ + url: '/repair/updateRepairTypeUser', + method: 'post', + data + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除报修师傅 +export function deleteRepairTypeUser(data) { + data.communityId = getCommunityId() + + return new Promise((resolve, reject) => { + request({ + url: '/repair/deleteRepairTypeUser', + method: 'post', + data + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取组织树 +export function listOrgTree(params) { + + return new Promise((resolve, reject) => { + request({ + url: '/org/listOrgTree', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取员工信息 +export function getStaffInfos(params) { + return new Promise((resolve, reject) => { + request({ + url: '/query.staff.infos', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/fee/carCreateFeeAdd.vue b/src/components/fee/carCreateFeeAdd.vue new file mode 100644 index 0000000..6dc41d0 --- /dev/null +++ b/src/components/fee/carCreateFeeAdd.vue @@ -0,0 +1,197 @@ + + + \ No newline at end of file diff --git a/src/components/fee/deleteFee.vue b/src/components/fee/deleteFee.vue new file mode 100644 index 0000000..09283a4 --- /dev/null +++ b/src/components/fee/deleteFee.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/src/components/fee/doImportCreateFee.vue b/src/components/fee/doImportCreateFee.vue new file mode 100644 index 0000000..852354e --- /dev/null +++ b/src/components/fee/doImportCreateFee.vue @@ -0,0 +1,95 @@ + + + \ No newline at end of file diff --git a/src/components/fee/editFee.vue b/src/components/fee/editFee.vue new file mode 100644 index 0000000..d027d2e --- /dev/null +++ b/src/components/fee/editFee.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/src/components/fee/exportCarFeeImportExcel.vue b/src/components/fee/exportCarFeeImportExcel.vue new file mode 100644 index 0000000..9dc4733 --- /dev/null +++ b/src/components/fee/exportCarFeeImportExcel.vue @@ -0,0 +1,131 @@ + + + \ No newline at end of file diff --git a/src/components/fee/parkingAreaSelect2.vue b/src/components/fee/parkingAreaSelect2.vue new file mode 100644 index 0000000..4c4aa8e --- /dev/null +++ b/src/components/fee/parkingAreaSelect2.vue @@ -0,0 +1,63 @@ + + + \ No newline at end of file diff --git a/src/components/fee/splitFee.vue b/src/components/fee/splitFee.vue new file mode 100644 index 0000000..b754dbc --- /dev/null +++ b/src/components/fee/splitFee.vue @@ -0,0 +1,100 @@ + + + \ No newline at end of file diff --git a/src/components/work/AddRepairSetting.vue b/src/components/work/AddRepairSetting.vue new file mode 100644 index 0000000..b4d9f6e --- /dev/null +++ b/src/components/work/AddRepairSetting.vue @@ -0,0 +1,218 @@ + + + \ No newline at end of file diff --git a/src/components/work/DeleteRepairSetting.vue b/src/components/work/DeleteRepairSetting.vue new file mode 100644 index 0000000..68c82fb --- /dev/null +++ b/src/components/work/DeleteRepairSetting.vue @@ -0,0 +1,53 @@ + + + \ No newline at end of file diff --git a/src/components/work/DeleteRepairTypeUser.vue b/src/components/work/DeleteRepairTypeUser.vue new file mode 100644 index 0000000..4b37dca --- /dev/null +++ b/src/components/work/DeleteRepairTypeUser.vue @@ -0,0 +1,62 @@ + + + \ No newline at end of file diff --git a/src/components/work/EditRepairSetting.vue b/src/components/work/EditRepairSetting.vue new file mode 100644 index 0000000..45ab88c --- /dev/null +++ b/src/components/work/EditRepairSetting.vue @@ -0,0 +1,239 @@ + + + \ No newline at end of file diff --git a/src/components/work/EditRepairTypeUser.vue b/src/components/work/EditRepairTypeUser.vue new file mode 100644 index 0000000..3768283 --- /dev/null +++ b/src/components/work/EditRepairTypeUser.vue @@ -0,0 +1,87 @@ + + + \ No newline at end of file diff --git a/src/components/work/OrgTreeShow.vue b/src/components/work/OrgTreeShow.vue new file mode 100644 index 0000000..08feba1 --- /dev/null +++ b/src/components/work/OrgTreeShow.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/src/components/work/SelectStaff.vue b/src/components/work/SelectStaff.vue new file mode 100644 index 0000000..878a8d8 --- /dev/null +++ b/src/components/work/SelectStaff.vue @@ -0,0 +1,148 @@ + + + + + \ No newline at end of file diff --git a/src/i18n/commonLang.js b/src/i18n/commonLang.js index 313184e..156064d 100644 --- a/src/i18n/commonLang.js +++ b/src/i18n/commonLang.js @@ -44,6 +44,7 @@ export const messages = { hour:'hour', more:'More', tip:'Tip', + selectFile:'Select File' } }, zh: { @@ -91,7 +92,7 @@ export const messages = { hour:'时', more:'更多', tip:'提示', - + selectFile:'选择文件' } } } \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index 7e200c8..7b7934b 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -158,6 +158,10 @@ import { messages as tempCarPaymentMessages } from '../views/car/tempCarPaymentL import { messages as parkingSpaceApplyManageMessages } from '../views/car/parkingSpaceApplyManageLang' import { messages as addParkingSpaceApplyMessages } from '../views/car/addParkingSpaceApplyLang' import { messages as auditParkingSpaceApplyMessages } from '../views/car/auditParkingSpaceApplyLang' +import { messages as carCreateFeeMessages } from '../views/fee/carCreateFeeLang' +import { messages as listCarFeeMessages } from '../views/fee/listCarFeeLang' +import { messages as repairSettingMessages } from '../views/work/repairSettingLang' +import { messages as repairTypeUserMessages } from '../views/work/repairTypeUserLang' Vue.use(VueI18n) @@ -320,6 +324,10 @@ const messages = { ...parkingSpaceApplyManageMessages.en, ...addParkingSpaceApplyMessages.en, ...auditParkingSpaceApplyMessages.en, + ...carCreateFeeMessages.en, + ...listCarFeeMessages.en, + ...repairSettingMessages.en, + ...repairTypeUserMessages.en, }, zh: { ...loginMessages.zh, @@ -478,6 +486,10 @@ const messages = { ...parkingSpaceApplyManageMessages.zh, ...addParkingSpaceApplyMessages.zh, ...auditParkingSpaceApplyMessages.zh, + ...carCreateFeeMessages.zh, + ...listCarFeeMessages.zh, + ...repairSettingMessages.zh, + ...repairTypeUserMessages.zh, } } diff --git a/src/router/index.js b/src/router/index.js index c52b3eb..11500dd 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -767,25 +767,45 @@ const routes = [ component: () => import('@/views/car/remainingParkingSpaceList.vue') }, { - path:'/pages/car/tempCarPayment', - name:'/pages/car/tempCarPayment', + path: '/pages/car/tempCarPayment', + name: '/pages/car/tempCarPayment', component: () => import('@/views/car/tempCarPaymentList.vue') + }, + { + path: '/pages/property/parkingSpaceApplyManage', + name: '/pages/property/parkingSpaceApplyManage', + component: () => import('@/views/car/parkingSpaceApplyManageList.vue') + }, + { + path: '/views/car/addParkingSpaceApply', + name: '/views/car/addParkingSpaceApply', + component: () => import('@/views/car/addParkingSpaceApply.vue') + }, + { + path: '/views/car/auditParkingSpaceApply', + name: '/views/car/auditParkingSpaceApply', + component: () => import('@/views/car/auditParkingSpaceApply.vue') + }, + { + path: '/pages/property/carCreateFee', + name: '/pages/property/carCreateFee', + component: () => import('@/views/fee/carCreateFeeList.vue') + }, + { + path: '/views/fee/listCarFee', + name: '/views/fee/listCarFee', + component: () => import('@/views/fee/listCarFeeList.vue') + }, + { + path: '/pages/work/repairSetting', + name: '/pages/work/repairSetting', + component: () => import('@/views/work/repairSettingList.vue') + }, + { + path:'/views/work/repairTypeUser', + name:'/views/work/repairTypeUser', + component: () => import('@/views/work/repairTypeUserList.vue') }, - { - path:'/pages/property/parkingSpaceApplyManage', - name:'/pages/property/parkingSpaceApplyManage', - component: () => import('@/views/car/parkingSpaceApplyManageList.vue') - }, - { - path:'/views/car/addParkingSpaceApply', - name:'/views/car/addParkingSpaceApply', - component: () => import('@/views/car/addParkingSpaceApply.vue') - }, - { - path:'/views/car/auditParkingSpaceApply', - name:'/views/car/auditParkingSpaceApply', - component: () => import('@/views/car/auditParkingSpaceApply.vue') - }, // 其他子路由可以在这里添加 ] }, diff --git a/src/views/fee/carCreateFeeLang.js b/src/views/fee/carCreateFeeLang.js new file mode 100644 index 0000000..f4d009a --- /dev/null +++ b/src/views/fee/carCreateFeeLang.js @@ -0,0 +1,134 @@ +export const messages = { + en: { + carCreateFee: { + queryCondition: "Query Conditions", + parkingSpacePlaceholder: "Please fill in parking lot-space, e.g. 1-101", + carNumPlaceholder: "Please fill in license plate number", + ownerNamePlaceholder: "Please fill in owner name", + parkingSpaceStatus: "Parking space status", + query: "Query", + reset: "Reset", + vehicleCharging: "Vehicle Charging", + customTemplate: "Custom Template", + customCreate: "Custom Create", + batchCreate: "Batch Create", + buyMonthlyCard: "Buy Monthly Card", + licensePlate: "License Plate", + parkingLot: "Parking Lot (Unit: No.)", + parkingSpace: "Parking Space (Unit: No.)", + ownerName: "Owner Name", + contact: "Contact", + status: "Status", + operation: "Operation", + viewCharges: "View Charges" + }, + carCreateFeeAdd: { + createFee: "Create Fee", + chargeScope: "Charge Scope", + requiredChargeScope: "Required, please select charge scope", + community: "Community", + parkingLot: "Parking Lot", + vehicle: "Vehicle", + feeType: "Fee Type", + requiredFeeType: "Required, please select fee type", + feeItem: "Fee Item", + requiredFeeItem: "Required, please select fee item", + chargeAmount: "Charge Amount", + requiredChargeAmount: "Required, please fill in charge amount", + parkingSpaceStatus: "Parking Space Status", + sold: "Sold", + rented: "Rented", + startTime: "Billing Start Time", + requiredStartTime: "Required, please fill in billing start time", + endTime: "Billing End Time", + requiredEndTime: "Required, please fill in billing end time", + submit: "Submit", + cancel: "Cancel" + }, + exportCarFeeImportExcel: { + templateExport: "Template Export", + parkingLot: "Parking Lot", + all: "All", + parkingLotPlaceholder: "Parking Lot", + feeItem: "Fee Item", + export: "Export", + cancel: "Cancel" + }, + doImportCreateFee: { + customCreateFee: "Custom Create Fee", + selectFile: "Select File", + requiredFile: "Required, please select data file", + import: "Import", + cancel: "Cancel" + }, + parkingAreaSelect2: { + parkingLotPlaceholder: "Required, please select parking lot" + } + }, + zh: { + carCreateFee: { + queryCondition: "查询条件", + parkingSpacePlaceholder: "请填写停车场-车位,如 1-101", + carNumPlaceholder: "请填写车牌号", + ownerNamePlaceholder: "请填写业主名称", + parkingSpaceStatus: "请选择车位状态", + query: "查询", + reset: "重置", + vehicleCharging: "车辆收费", + customTemplate: "自定义模板", + customCreate: "自定义创建", + batchCreate: "批量创建", + buyMonthlyCard: "购买月卡", + licensePlate: "车牌号", + parkingLot: "停车场(单位:号)", + parkingSpace: "车位(单位:号)", + ownerName: "业主名称", + contact: "联系方式", + status: "车位状态", + operation: "操作", + viewCharges: "查看收费" + }, + carCreateFeeAdd: { + createFee: "创建费用", + chargeScope: "收费范围", + requiredChargeScope: "必填,请选择收费范围", + community: "小区", + parkingLot: "停车场", + vehicle: "车辆", + feeType: "费用类型", + requiredFeeType: "必填,请选择费用类型", + feeItem: "收费项目", + requiredFeeItem: "必填,请选择收费项目", + chargeAmount: "收费金额", + requiredChargeAmount: "必填,请填写收费金额", + parkingSpaceStatus: "车位状态", + sold: "已出售", + rented: "已出租", + startTime: "计费起始时间", + requiredStartTime: "必填,请填写计费起始时间", + endTime: "计费结束时间", + requiredEndTime: "必填,请填写计费结束时间", + submit: "提交", + cancel: "取消" + }, + exportCarFeeImportExcel: { + templateExport: "模板导出", + parkingLot: "停车场", + all: "全部", + parkingLotPlaceholder: "停车场", + feeItem: "费用项", + export: "导出", + cancel: "取消" + }, + doImportCreateFee: { + customCreateFee: "自定义创建费用", + selectFile: "选择文件", + requiredFile: "必填,请选择数据文件", + import: "导入", + cancel: "取消" + }, + parkingAreaSelect2: { + parkingLotPlaceholder: "必填,请选择停车场" + } + } +} \ No newline at end of file diff --git a/src/views/fee/carCreateFeeList.vue b/src/views/fee/carCreateFeeList.vue new file mode 100644 index 0000000..6aea08c --- /dev/null +++ b/src/views/fee/carCreateFeeList.vue @@ -0,0 +1,212 @@ + + + + + \ No newline at end of file diff --git a/src/views/fee/listCarFeeLang.js b/src/views/fee/listCarFeeLang.js new file mode 100644 index 0000000..f3bdc5a --- /dev/null +++ b/src/views/fee/listCarFeeLang.js @@ -0,0 +1,60 @@ +export const messages = { + en: { + listCarFee: { + fee: 'Fee', + createFee: 'Create Fee', + feeItem: 'Fee Item', + feeFlag: 'Fee Flag', + feeType: 'Fee Type', + amountOwed: 'Amount Owed', + startTime: 'Start Time', + endTime: 'End Time', + remark: 'Remark', + state: 'State', + operation: 'Operation', + pay: 'Pay', + history: 'History', + cancel: 'Cancel', + change: 'Change', + split: 'Split', + detail: 'Detail', + preDegrees: 'Pre Degrees', + curDegrees: 'Cur Degrees', + price: 'Price', + additionalAmount: 'Additional Amount', + algorithm: 'Algorithm', + usage: 'Usage', + note1: 'Note: The end time "-" means the fee is not due or the fee collection has ended.', + note2: 'If the amount owed is -1, it is usually an error in the fee item formula setting, please check.' + }, + }, + zh: { + listCarFee: { + fee: '费用', + createFee: '创建费用', + feeItem: '费用项目', + feeFlag: '费用标识', + feeType: '费用类型', + amountOwed: '应收金额', + startTime: '建账时间', + endTime: '应收时间段', + remark: '说明', + state: '状态', + operation: '操作', + pay: '缴费', + history: '历史', + cancel: '取消', + change: '变更', + split: '拆分', + detail: '详情', + preDegrees: '上期度数', + curDegrees: '本期度数', + price: '单价', + additionalAmount: '附加费', + algorithm: '算法', + usage: '用量', + note1: '注意:应收结束时间“-”表示未到应收时间或收费已结束。', + note2: '应收金额为-1一般为费用项公式设置出错请检查。' + }, + } +} \ No newline at end of file diff --git a/src/views/fee/listCarFeeList.vue b/src/views/fee/listCarFeeList.vue new file mode 100644 index 0000000..4029931 --- /dev/null +++ b/src/views/fee/listCarFeeList.vue @@ -0,0 +1,261 @@ + + + + + \ No newline at end of file diff --git a/src/views/work/repairSettingLang.js b/src/views/work/repairSettingLang.js new file mode 100644 index 0000000..116f5d6 --- /dev/null +++ b/src/views/work/repairSettingLang.js @@ -0,0 +1,140 @@ +export const messages = { + en: { + repairSetting: { + queryCondition: 'Query Condition', + repairTypeNamePlaceholder: 'Please enter type name', + repairWayPlaceholder: 'Please select dispatch method', + repairSettingTypePlaceholder: 'Please select repair setting type', + publicAreaPlaceholder: 'Please select area', + returnVisitFlagPlaceholder: 'Please select whether to follow up', + search: 'Search', + reset: 'Reset', + repairSettingTitle: 'Repair Settings', + documentation: 'Documentation', + add: 'Add', + typeName: 'Type Name', + repairSettingType: 'Repair Setting Type', + dispatchMethod: 'Dispatch Method', + area: 'Area', + ownerDisplay: 'Owner Display', + notificationMethod: 'Notification Method', + returnVisit: 'Return Visit', + processingTime: 'Processing Time (hours)', + timeoutWarning: 'Timeout Warning (minutes)', + createTime: 'Create Time', + operation: 'Operation', + edit: 'Edit', + bindRepairMaster: 'Bind Repair Master', + delete: 'Delete', + explanation: 'Explanation', + save: 'Save', + cancel: 'Cancel', + confirmDeleteTitle: 'Please confirm your operation!', + confirmDeleteContent: 'Are you sure to delete this repair setting?', + cancelDelete: 'Cancel', + confirmDelete: 'Confirm Delete', + addTitle: 'Add Repair Setting', + editTitle: 'Edit Repair Setting', + settingType: 'Setting Type', + publicArea: 'Public Area', + ownerDisplayPlaceholder: 'Whether to display in owner app', + notificationMethodPlaceholder: 'Please select notification method', + returnVisitSetting: 'Return Visit Setting', + remarkPlaceholder: 'Optional, please enter remarks', + required: 'Required', + cleaningOrder: 'Cleaning Order', + repairOrder: 'Repair Order', + grabOrder: 'Grab Order', + assign: 'Assign', + polling: 'Polling', + nonHouse: 'Non-House', + house: 'House', + yes: 'Yes', + no: 'No', + sms: 'SMS', + wechat: 'WeChat', + wechatWorkLicense: 'WeChat + Employee License', + noFollowUp: 'No Follow Up', + followUpAfterEvaluation: 'Follow Up After Evaluation', + followUp: 'Follow Up', + dispatchExplanation: 'Dispatch Explanation:', + dispatchPoint1: '1. Grab Order: Employees (masters under the repair type) grab orders independently, suitable for scenarios where the property gives commissions per order', + dispatchPoint2: '2. Assign: Specifically assigned by customer service to employees (masters under the repair type)', + dispatchPoint3: '3. Polling: System periodically assigns orders to employees (masters under the repair type)', + areaExplanation: 'Area Explanation:', + areaPoint1: 'Community, building, unit are non-house areas; houses are house areas', + areaPoint2: 'Note: For owner house repairs, a house area type must be added for normal repair', + processingTimeUnit: 'Hours', + timeoutWarningUnit: 'Minutes' + } + }, + zh: { + repairSetting: { + queryCondition: '查询条件', + repairTypeNamePlaceholder: '请输入类型名称', + repairWayPlaceholder: '请选择派单方式', + repairSettingTypePlaceholder: '请选择报修设置类型', + publicAreaPlaceholder: '请选择区域', + returnVisitFlagPlaceholder: '请选择是否回访', + search: '查询', + reset: '重置', + repairSettingTitle: '报修设置', + documentation: '文档', + add: '添加', + typeName: '类型名称', + repairSettingType: '报修设置类型', + dispatchMethod: '派单方式', + area: '区域', + ownerDisplay: '业主端展示', + notificationMethod: '通知方式', + returnVisit: '是否回访', + processingTime: '办理时长', + timeoutWarning: '超时预警', + createTime: '创建时间', + operation: '操作', + edit: '修改', + bindRepairMaster: '绑定维修师傅', + delete: '删除', + explanation: '说明', + save: '保存', + cancel: '取消', + confirmDeleteTitle: '请确认您的操作!', + confirmDeleteContent: '确定删除报修设置', + cancelDelete: '点错了', + confirmDelete: '确认删除', + addTitle: '添加报修设置', + editTitle: '修改报修设置', + settingType: '设置类型', + publicArea: '公共区域', + ownerDisplayPlaceholder: '必填,请选择是否在业主端展示', + notificationMethodPlaceholder: '必填,请选择通知方式', + returnVisitSetting: '回访设置', + remarkPlaceholder: '选填,请填写说明', + required: '必填', + cleaningOrder: '保洁单', + repairOrder: '维修单', + grabOrder: '抢单', + assign: '指派', + polling: '轮训', + nonHouse: '非房屋', + house: '房屋', + yes: '是', + no: '否', + sms: '短信', + wechat: '微信', + wechatWorkLicense: '微信+员工工牌', + noFollowUp: '不回访', + followUpAfterEvaluation: '已评价不回访', + followUp: '回访', + dispatchExplanation: '派单方式说明:', + dispatchPoint1: '1、抢单:员工(报修类型下的师傅)自主抢单维修处理,比较实用于物业每单给维修是否提成的场景', + dispatchPoint2: '2、指派:专门由客服派单员工(报修类型下的师傅)维修处理,一般物业的选择', + dispatchPoint3: '3、轮训:由系统定时派单员工(报修类型下的师傅)维修处理', + areaExplanation: '区域说明:', + areaPoint1: '小区、楼栋、单元为非房屋类区域,房屋为房屋类区域', + areaPoint2: '注意:一般业主房屋报修必须添加一个房屋类区域的类型才能正常报修', + processingTimeUnit: '小时', + timeoutWarningUnit: '分钟' + } + } +} \ No newline at end of file diff --git a/src/views/work/repairSettingList.vue b/src/views/work/repairSettingList.vue new file mode 100644 index 0000000..8c3747c --- /dev/null +++ b/src/views/work/repairSettingList.vue @@ -0,0 +1,290 @@ + + + + + \ No newline at end of file diff --git a/src/views/work/repairTypeUserLang.js b/src/views/work/repairTypeUserLang.js new file mode 100644 index 0000000..05dc80e --- /dev/null +++ b/src/views/work/repairTypeUserLang.js @@ -0,0 +1,66 @@ +export const messages = { + en: { + repairTypeUser: { + title: 'Repair Master', + repairMasterId: 'Repair Master ID', + masterName: 'Master Name', + repairType: 'Repair Type', + status: 'Status', + description: 'Description', + createTime: 'Create Time', + operation: 'Operation', + repairTypeRequired: 'Repair type is required' + }, + selectStaff: { + title: 'Select Staff', + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + selectStaffFirst: 'Please select a staff first' + }, + deleteRepairTypeUser: { + title: 'Confirm Operation', + confirmDelete: 'Are you sure to delete this repair master?' + }, + editRepairTypeUser: { + title: 'Modify Repair Master', + status: 'Status', + description: 'Description', + online: 'Online', + offline: 'Offline', + descriptionPlaceholder: 'Optional, please enter description', + statusRequired: 'Status is required' + } + }, + zh: { + repairTypeUser: { + title: '报修师傅', + repairMasterId: '维修师傅ID', + masterName: '师傅名称', + repairType: '报修类型', + status: '状态', + description: '说明', + createTime: '创建时间', + operation: '操作', + repairTypeRequired: '未包含报修类型' + }, + selectStaff: { + title: '选择员工', + orgInfo: '组织信息', + staffInfo: '员工信息', + selectStaffFirst: '请先选择员工' + }, + deleteRepairTypeUser: { + title: '请确认您的操作', + confirmDelete: '确定删除报修师傅?' + }, + editRepairTypeUser: { + title: '变更报修师傅', + status: '状态', + description: '说明', + online: '在线', + offline: '离线', + descriptionPlaceholder: '选填,请填写说明', + statusRequired: '状态不能为空' + } + } +} \ No newline at end of file diff --git a/src/views/work/repairTypeUserList.vue b/src/views/work/repairTypeUserList.vue new file mode 100644 index 0000000..a3194c8 --- /dev/null +++ b/src/views/work/repairTypeUserList.vue @@ -0,0 +1,176 @@ + + + + + \ No newline at end of file