diff --git a/src/api/system/feePrintSpecManageApi.js b/src/api/system/feePrintSpecManageApi.js new file mode 100644 index 0000000..efc6528 --- /dev/null +++ b/src/api/system/feePrintSpecManageApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询打印配置列表 +export function queryFeePrintSpec(params) { + return new Promise((resolve, reject) => { + const defaultParams = { + communityId: getCommunityId(), + ...params + } + request({ + url: '/feePrintSpec/queryFeePrintSpec', + method: 'get', + params: defaultParams + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加打印配置 +export function saveFeePrintSpec(data) { + return new Promise((resolve, reject) => { + const postData = { + ...data, + communityId: getCommunityId() + } + request({ + url: '/feePrintSpec/saveFeePrintSpec', + method: 'post', + data: postData + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Add failed')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 更新打印配置 +export function updateFeePrintSpec(data) { + return new Promise((resolve, reject) => { + const postData = { + ...data, + communityId: getCommunityId() + } + request({ + url: '/feePrintSpec/updateFeePrintSpec', + method: 'post', + data: postData + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Update failed')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除打印配置 +export function deleteFeePrintSpec(data) { + return new Promise((resolve, reject) => { + const postData = { + ...data, + communityId: getCommunityId() + } + request({ + url: '/feePrintSpec/deleteFeePrintSpec', + method: 'post', + data: postData + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Delete failed')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/system/historyFeeDetailImportApi.js b/src/api/system/historyFeeDetailImportApi.js new file mode 100644 index 0000000..4048521 --- /dev/null +++ b/src/api/system/historyFeeDetailImportApi.js @@ -0,0 +1,59 @@ +import request from '@/utils/request' + +/** + * Import historical fee detail data + * @param {FormData} formData + * @returns {Promise} + */ +export function importData(formData) { + return new Promise((resolve, reject) => { + request({ + url: '/assetImport/importData', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * Download house template + * @returns {Promise} + */ +export function downloadHouseTemplate() { + return new Promise((resolve, reject) => { + request({ + url: '/import/importFeeDetail.xlsx', + method: 'get', + responseType: 'blob' + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * Download car template + * @returns {Promise} + */ +export function downloadCarTemplate() { + return new Promise((resolve, reject) => { + request({ + url: '/import/importCarFeeDetail.xlsx', + method: 'get', + responseType: 'blob' + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/system/operateDataLogApi.js b/src/api/system/operateDataLogApi.js new file mode 100644 index 0000000..7234ad8 --- /dev/null +++ b/src/api/system/operateDataLogApi.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' + +// 查询费用项历史记录 +export function queryHisFeeConfig(params) { + return new Promise((resolve, reject) => { + request({ + url: '/fee.queryHisFeeConfig', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询费用历史记录 +export function queryHisFee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/fee.queryHisFee', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询业主历史记录 +export function queryHisOwner(params) { + return new Promise((resolve, reject) => { + request({ + url: '/owner.queryHisOwner', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取业主属性规格 +export function getAttrSpec(attrType) { + return new Promise((resolve, reject) => { + request({ + url: '/attrSpec.listAttrSpec', + method: 'get', + params: { attrType } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询房屋历史记录 +export function queryHisRoom(params) { + return new Promise((resolve, reject) => { + request({ + url: '/room.queryHisRoom', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询车辆历史记录 +export function queryHisOwnerCar(params) { + return new Promise((resolve, reject) => { + request({ + url: '/car.queryHisOwnerCar', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同变更计划 +export function queryContractChangePlan(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractChangePlan', + 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/system/paymentPoolApi.js b/src/api/system/paymentPoolApi.js new file mode 100644 index 0000000..ceab43d --- /dev/null +++ b/src/api/system/paymentPoolApi.js @@ -0,0 +1,170 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取支付池列表 +export function listPaymentPool(params) { + return new Promise((resolve, reject) => { + request({ + url: '/payment.listPaymentPool', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加支付配置 +export function savePaymentPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/payment.savePaymentPool', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 修改支付配置 +export function updatePaymentPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/payment.updatePaymentPool', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除支付配置 +export function deletePaymentPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/payment.deletePaymentPool', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取支付适配器列表 +export function listPaymentAdapt(params) { + return new Promise((resolve, reject) => { + request({ + url: '/payment.listPaymentAdapt', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取支付密钥列表 +export function listPaymentKey(params) { + return new Promise((resolve, reject) => { + request({ + url: '/payment.listPaymentKey', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取支付配置详情 +export function getPaymentPoolDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/payment.listPaymentPool', + method: 'get', + params: { + ...params, + communityId: getCommunityId(), + page: 1, + row: 1 + } + }).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) + }) + }) +} + +// 上传文件 +export function uploadFile(data, config) { + return new Promise((resolve, reject) => { + request({ + url: '/uploadVedio/upload', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + }, + ...config + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/system/publicWeChatManageApi.js b/src/api/system/publicWeChatManageApi.js new file mode 100644 index 0000000..4f6289f --- /dev/null +++ b/src/api/system/publicWeChatManageApi.js @@ -0,0 +1,81 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取公众号列表 +export function listSmallWeChats(params) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.listSmallWeChats', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve({ + data: res.smallWeChats, + total: res.total || 0 + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加公众号 +export function saveSmallWeChat(data) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.saveSmallWeChat', + method: 'post', + data: { + ...data, + objId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新公众号信息 +export function updateSmallWeChat(data) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.updateSmallWeChat', + method: 'post', + data: { + ...data, + objId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除公众号 +export function deleteSmallWeChat(data) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.deleteSmallWeChat', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/system/smallWeChatManageApi.js b/src/api/system/smallWeChatManageApi.js new file mode 100644 index 0000000..1549b43 --- /dev/null +++ b/src/api/system/smallWeChatManageApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取小程序列表 +export function listSmallWeChats(params) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.listSmallWeChats', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加小程序 +export function saveSmallWeChat(data) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.saveSmallWeChat', + method: 'post', + data: { + ...data, + objId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新小程序 +export function updateSmallWeChat(data) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.updateSmallWeChat', + method: 'post', + data: { + ...data, + objId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除小程序 +export function deleteSmallWeChat(data) { + return new Promise((resolve, reject) => { + request({ + url: '/smallWeChat.deleteSmallWeChat', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取小程序字典数据 +export function getSmallWeChatDict(dictType, dictCode) { + return new Promise((resolve, reject) => { + request({ + url: '/dict.getDict', + method: 'get', + params: { + dictType, + dictCode + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/system/addFeePrintSpec.vue b/src/components/system/addFeePrintSpec.vue new file mode 100644 index 0000000..5560861 --- /dev/null +++ b/src/components/system/addFeePrintSpec.vue @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.cancel') }} + + + {{ $t('common.confirm') }} + + + + + + \ No newline at end of file diff --git a/src/components/system/addPaymentPool.vue b/src/components/system/addPaymentPool.vue new file mode 100644 index 0000000..f115a0e --- /dev/null +++ b/src/components/system/addPaymentPool.vue @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ item.feeName }} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/addSmallWechat.vue b/src/components/system/addSmallWechat.vue new file mode 100644 index 0000000..d76e000 --- /dev/null +++ b/src/components/system/addSmallWechat.vue @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/carDetailHis.vue b/src/components/system/carDetailHis.vue new file mode 100644 index 0000000..4cd2a95 --- /dev/null +++ b/src/components/system/carDetailHis.vue @@ -0,0 +1,193 @@ + + + + + + + + {{ $t('carDetailHis.tempCar') }} + {{ scope.row.leaseTypeName }} + + + + + {{ scope.row.carTypeName || '-' }} + + + + + {{ scope.row.carColor || '-' }} + + + + + + {{ scope.row.ownerName }}({{ scope.row.link }}) + + + + + + + {{ scope.row.areaNum }}-{{ scope.row.num }} + + + {{ $t('carDetailHis.released') }} + + + + + + + {{ scope.row.startTime }}~{{ scope.row.endTime }} + + -- + + + + + {{ _getHisOperate(scope.row) }} + + + + + {{ scope.row.userName || '-' }} + + + + + {{ scope.row.createTime }} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/contractDetailChange.vue b/src/components/system/contractDetailChange.vue new file mode 100644 index 0000000..c694e9e --- /dev/null +++ b/src/components/system/contractDetailChange.vue @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('contractDetailChange.detail') }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/deleteFeePrintSpec.vue b/src/components/system/deleteFeePrintSpec.vue new file mode 100644 index 0000000..86dc016 --- /dev/null +++ b/src/components/system/deleteFeePrintSpec.vue @@ -0,0 +1,71 @@ + + + + {{ $t('feePrintSpec.deleteConfirm') }} + + + + {{ $t('common.cancel') }} + + + {{ $t('common.confirm') }} + + + + + + + + \ No newline at end of file diff --git a/src/components/system/deletePaymentPool.vue b/src/components/system/deletePaymentPool.vue new file mode 100644 index 0000000..527c7b2 --- /dev/null +++ b/src/components/system/deletePaymentPool.vue @@ -0,0 +1,75 @@ + + + + + {{ $t('paymentPool.delete.confirmText') }} + + + + + + + + \ No newline at end of file diff --git a/src/components/system/deleteSmallWechat.vue b/src/components/system/deleteSmallWechat.vue new file mode 100644 index 0000000..6a0de10 --- /dev/null +++ b/src/components/system/deleteSmallWechat.vue @@ -0,0 +1,73 @@ + + + + {{ $t('smallWeChatManage.deleteConfirm') }} + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/editFeePrintSpec.vue b/src/components/system/editFeePrintSpec.vue new file mode 100644 index 0000000..423f3d5 --- /dev/null +++ b/src/components/system/editFeePrintSpec.vue @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.cancel') }} + + + {{ $t('common.confirm') }} + + + + + + \ No newline at end of file diff --git a/src/components/system/editPaymentPool.vue b/src/components/system/editPaymentPool.vue new file mode 100644 index 0000000..401e271 --- /dev/null +++ b/src/components/system/editPaymentPool.vue @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + {{ $t('paymentPool.edit.currentCert') }}: {{ formData.certPath }} + + + + + + + + + + + + + + + {{ item.feeName }} + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/editSmallWechat.vue b/src/components/system/editSmallWechat.vue new file mode 100644 index 0000000..8eba298 --- /dev/null +++ b/src/components/system/editSmallWechat.vue @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/feeConfigDetailHis.vue b/src/components/system/feeConfigDetailHis.vue new file mode 100644 index 0000000..f852b33 --- /dev/null +++ b/src/components/system/feeConfigDetailHis.vue @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + {{ scope.row.paymentCd === '1200' ? $t('feeConfigDetailHis.prePayment') : $t('feeConfigDetailHis.postPayment') }} + + + + + + + {{ scope.row.startTime }} + {{ scope.row.endTime }} + + + + + {{ scope.row.computingFormula === '2002' ? '-' : scope.row.squarePrice }} + + + + + + + {{ scope.row.deductFrom === 'Y' ? $t('common.yes') : $t('common.no') }} + + + + + {{ scope.row.payOnline === 'Y' ? $t('common.yes') : $t('common.no') }} + + + + + {{ $t('feeConfigDetailHis.round') }} + {{ $t('feeConfigDetailHis.roundUp') }} + {{ $t('feeConfigDetailHis.roundDown') }} + + + + + + + {{ _getHisConfigOperate(scope.row) }} + + + + + {{ scope.row.userName || '-' }} + + + + + {{ scope.row.createTime || '-' }} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/feeDetailHis.vue b/src/components/system/feeDetailHis.vue new file mode 100644 index 0000000..566ba86 --- /dev/null +++ b/src/components/system/feeDetailHis.vue @@ -0,0 +1,154 @@ + + + + + + {{ scope.row.feeName }} + ({{ scope.row.payerObjName }}) + + + + + {{ scope.row.startTime || '-' }} + + + + + {{ scope.row.endTime || '-' }} + + + + + {{ _getFeeHisOperate(scope.row) }} + + + + + {{ scope.row.userName || '-' }} + + + + + {{ scope.row.createTime }} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/ownerDetailHis.vue b/src/components/system/ownerDetailHis.vue new file mode 100644 index 0000000..c0cb078 --- /dev/null +++ b/src/components/system/ownerDetailHis.vue @@ -0,0 +1,208 @@ + + + + + + {{ _getHisOwnerOperate(scope.row) }} + + + + + {{ scope.row.userName || '-' }} + + + + + {{ scope.row.createTime }} + + + + + {{ scope.row.name }}({{ scope.row.link }}) + + + + + {{ scope.row.sex === 0 ? $t('ownerDetailHis.male') : $t('ownerDetailHis.female') }} + + + + + {{ scope.row.idCard || '-' }} + + + + + {{ scope.row.address || '-' }} + + + + + {{ scope.row.listValues[index] || '-' }} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/roomDetailHis.vue b/src/components/system/roomDetailHis.vue new file mode 100644 index 0000000..35279ce --- /dev/null +++ b/src/components/system/roomDetailHis.vue @@ -0,0 +1,174 @@ + + + + + + {{ _getRoomHisOperate(scope.row) }} + + + + + {{ scope.row.userName || '-' }} + + + + + {{ scope.row.createTime }} + + + + + {{ scope.row.floorNum }}-{{ scope.row.unitNum }}-{{ scope.row.roomNum }} + + + + + {{ scope.row.layer }} + + + + + {{ scope.row.roomSubTypeName }} + + + + + {{ scope.row.builtUpArea }}/{{ scope.row.roomArea }} + + + + + {{ scope.row.roomRent }} + + + + + {{ scope.row.stateName }} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/system/uploadFile.vue b/src/components/system/uploadFile.vue new file mode 100644 index 0000000..58078ed --- /dev/null +++ b/src/components/system/uploadFile.vue @@ -0,0 +1,105 @@ + + + + + + + {{ fileName }} + + + + {{ $t('common.upload') }} + + + + + + + + \ No newline at end of file diff --git a/src/components/system/uploadImageUrl.vue b/src/components/system/uploadImageUrl.vue new file mode 100644 index 0000000..18589fd --- /dev/null +++ b/src/components/system/uploadImageUrl.vue @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/i18n/systemI18n.js b/src/i18n/systemI18n.js index d805c1f..aeda94a 100644 --- a/src/i18n/systemI18n.js +++ b/src/i18n/systemI18n.js @@ -1,12 +1,30 @@ import { messages as communitySettingManageMessages } from '../views/system/communitySettingManageLang' import { messages as storeInfoManageMessages } from '../views/system/storeInfoManageLang' +import { messages as publicWeChatManageMessages } from '../views/system/publicWeChatManageLang' +import { messages as smallWeChatManageMessages } from '../views/system/smallWeChatManageLang' +import { messages as paymentPoolMessages } from '../views/system/paymentPoolLang' +import { messages as operateDataLogMessages } from '../views/system/operateDataLogLang' +import { messages as historyFeeDetailImportMessages } from '../views/system/historyFeeDetailImportLang' +import { messages as feePrintSpecManageMessages } from '../views/system/feePrintSpecManageLang' export const messages = { en: { ...communitySettingManageMessages.en, ...storeInfoManageMessages.en, + ...publicWeChatManageMessages.en, + ...smallWeChatManageMessages.en, + ...paymentPoolMessages.en, + ...operateDataLogMessages.en, + ...historyFeeDetailImportMessages.en, + ...feePrintSpecManageMessages.en, }, zh: { ...communitySettingManageMessages.zh, ...storeInfoManageMessages.zh, + ...publicWeChatManageMessages.zh, + ...smallWeChatManageMessages.zh, + ...paymentPoolMessages.zh, + ...operateDataLogMessages.zh, + ...historyFeeDetailImportMessages.zh, + ...feePrintSpecManageMessages.zh, } } \ No newline at end of file diff --git a/src/router/systemRouter.js b/src/router/systemRouter.js index 630fe8b..ea9b91e 100644 --- a/src/router/systemRouter.js +++ b/src/router/systemRouter.js @@ -15,8 +15,38 @@ export default [ component: () => import('@/views/system/workflowSettingManageList.vue') }, { - path:'/pages/common/storeInfoManage', - name:'/pages/common/storeInfoManage', + path: '/pages/common/storeInfoManage', + name: '/pages/common/storeInfoManage', component: () => import('@/views/system/storeInfoManageList.vue') - }, + }, + { + path: '/pages/property/publicWeChatManage', + name: '/pages/property/publicWeChatManage', + component: () => import('@/views/system/publicWeChatManageList.vue') + }, + { + path: '/pages/property/smallWeChatManage', + name: '/pages/property/smallWeChatManage', + component: () => import('@/views/system/smallWeChatManageList.vue') + }, + { + path: '/pages/fee/paymentPool', + name: '/pages/fee/paymentPool', + component: () => import('@/views/system/paymentPoolList.vue') + }, + { + path: '/pages/log/operateDataLog', + name: '/pages/log/operateDataLog', + component: () => import('@/views/system/operateDataLogList.vue') + }, + { + path: '/pages/property/historyFeeDetailImport', + name: '/pages/property/historyFeeDetailImport', + component: () => import('@/views/system/historyFeeDetailImportList.vue') + }, + { + path: '/pages/property/feePrintSpecManage', + name: '/pages/property/feePrintSpecManage', + component: () => import('@/views/system/feePrintSpecManageList.vue') + }, ] \ No newline at end of file diff --git a/src/views/system/feePrintSpecManageLang.js b/src/views/system/feePrintSpecManageLang.js new file mode 100644 index 0000000..485c4d0 --- /dev/null +++ b/src/views/system/feePrintSpecManageLang.js @@ -0,0 +1,68 @@ +export const messages = { + en: { + feePrintSpecManage: { + title: 'Print Configuration', + add: 'Add', + edit: 'Edit', + delete: 'Delete', + image: 'Image', + name: 'Name', + spec: 'Specification', + code: 'Code', + operation: 'Operation', + reminderPrint: 'Reminder Print', + receiptPrint: 'Receipt Print', + addTitle: 'Add Print Configuration', + editTitle: 'Edit Print Configuration', + deleteTitle: 'Delete Confirmation', + deleteConfirm: 'Are you sure to delete this print configuration?', + deleteSuccess: 'Delete successfully', + deleteFailed: 'Delete failed', + addSuccess: 'Add successfully', + addFailed: 'Add failed', + editSuccess: 'Edit successfully', + editFailed: 'Edit failed', + fetchError: 'Failed to fetch data', + specPlaceholder: 'Please select specification', + namePlaceholder: 'Please enter name', + contentPlaceholder: 'Optional, please enter content', + specRequired: 'Specification is required', + nameRequired: 'Name is required', + nameMaxLength: 'Name cannot exceed 128 characters', + content: 'Content' + } + }, + zh: { + feePrintSpecManage: { + title: '打印配置信息', + add: '添加', + edit: '修改', + delete: '删除', + image: '图片', + name: '名称', + spec: '规格', + code: '编码', + operation: '操作', + reminderPrint: '催缴打印说明', + receiptPrint: '收据打印说明', + addTitle: '添加打印配置', + editTitle: '修改打印配置', + deleteTitle: '删除确认', + deleteConfirm: '确定删除打印配置吗?', + deleteSuccess: '删除成功', + deleteFailed: '删除失败', + addSuccess: '添加成功', + addFailed: '添加失败', + editSuccess: '修改成功', + editFailed: '修改失败', + fetchError: '获取数据失败', + specPlaceholder: '请选择规格', + namePlaceholder: '请输入名称', + contentPlaceholder: '选填,请输入内容', + specRequired: '规格不能为空', + nameRequired: '名称不能为空', + nameMaxLength: '名称不能超过128个字符', + content: '内容' + } + } +} \ No newline at end of file diff --git a/src/views/system/feePrintSpecManageList.vue b/src/views/system/feePrintSpecManageList.vue new file mode 100644 index 0000000..38cc989 --- /dev/null +++ b/src/views/system/feePrintSpecManageList.vue @@ -0,0 +1,143 @@ + + + + + {{ $t('feePrintSpecManage.title') }} + + + {{ $t('feePrintSpecManage.add') }} + + + + + + + + + + + + + + + {{ scope.row.specCd === '1010' ? $t('feePrintSpecManage.reminderPrint') : + $t('feePrintSpecManage.receiptPrint') }} + + + + + + + + {{ $t('feePrintSpecManage.edit') }} + + + {{ $t('feePrintSpecManage.delete') }} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/historyFeeDetailImportLang.js b/src/views/system/historyFeeDetailImportLang.js new file mode 100644 index 0000000..2d69c82 --- /dev/null +++ b/src/views/system/historyFeeDetailImportLang.js @@ -0,0 +1,48 @@ +export const messages = { + en: { + historyFeeDetailImport: { + assetInfo: 'Asset Information', + feeObject: 'Fee Object', + selectFeeObject: 'Required, please select fee object', + house: 'House', + car: 'Car', + selectFile: 'Select File', + requiredFile: 'Required, please select data file', + clickUpload: 'Click to upload', + description: 'Description', + importTip: 'Note: This is for importing historical payment data from previous property systems to facilitate future accounting checks. It should only be used during property data initialization. Please carefully check the data before importing. Once imported, payment history cannot be deleted from the frontend and can only be removed by engineers from the database.', + import: 'Import', + houseTemplate: 'House Template', + carTemplate: 'Car Template', + fileRequired: 'File is required', + invalidFileType: 'Invalid file type, only Excel files are allowed', + fileSizeLimit: 'File size cannot exceed 2MB', + importSuccess: 'Import successful', + importError: 'Import failed', + requiredSelect: 'Required, please select' + } + }, + zh: { + historyFeeDetailImport: { + assetInfo: '资产信息', + feeObject: '费用对象', + selectFeeObject: '必填,请选择费用对象', + house: '房屋', + car: '车辆', + selectFile: '选择文件', + requiredFile: '必填,请选择数据文件', + clickUpload: '点击上传', + description: '说明', + importTip: '请注意,这里是为了将物业之前系统缴费历史数据导入,方便物业后期查账使用,只有在物业数据初始化时使用,导入前请仔细检查数据,一旦导入前台无法删除缴费历史,只有工程师从数据库删除', + import: '导入', + houseTemplate: '房屋模板', + carTemplate: '车辆模板', + fileRequired: '文件不能为空', + invalidFileType: '不是有效的Excel格式', + fileSizeLimit: 'Excel文件大小不能超过2M', + importSuccess: '处理成功', + importError: '导入失败', + requiredSelect: '必填,请选择' + } + } +} \ No newline at end of file diff --git a/src/views/system/historyFeeDetailImportList.vue b/src/views/system/historyFeeDetailImportList.vue new file mode 100644 index 0000000..303371d --- /dev/null +++ b/src/views/system/historyFeeDetailImportList.vue @@ -0,0 +1,200 @@ + + + + + {{ $t('historyFeeDetailImport.assetInfo') }} + + + {{ $t('historyFeeDetailImport.houseTemplate') }} + + + {{ $t('historyFeeDetailImport.carTemplate') }} + + + + + + + + + + + + + + + + + + + + + + {{ $t('historyFeeDetailImport.clickUpload') }} + + + {{ historyFeeDetailImportInfo.excelTemplate ? + historyFeeDetailImportInfo.excelTemplate.name : + $t('historyFeeDetailImport.requiredFile') }} + + + + + + + {{ $t('historyFeeDetailImport.importTip') }} + + + + + + + + + + {{ $t('historyFeeDetailImport.import') }} + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/operateDataLogLang.js b/src/views/system/operateDataLogLang.js new file mode 100644 index 0000000..416e74b --- /dev/null +++ b/src/views/system/operateDataLogLang.js @@ -0,0 +1,236 @@ +export const messages = { + en: { + operateDataLog: { + search: { + title: 'Search Conditions', + logStartTime: 'Please select the start time', + logEndTime: 'Please select the end time', + staffNameLike: 'Please enter the operator', + feeNameLike: 'Please enter the fee item name', + payerObjName: 'Please enter the house name, license plate number or contract number', + ownerNameLike: 'Please enter the owner name', + roomName: 'Please enter the house name Building-Unit-Room', + carNumLike: 'Please enter the license plate number', + contractCode: 'Please enter the contract number' + }, + }, + feeConfigDetailHis: { + feeTypeCdName: 'fee type', + feeName: 'fee item', + feeFlagName: 'fee flag', + billTypeName: 'bill type', + paymentCd: 'payment type', + prePayment: 'pre payment', + postPayment: 'post payment', + paymentCycle: 'payment cycle(unit: month)', + validityPeriod: 'validity period', + squarePrice: 'square price(unit: yuan)', + additionalAmount: 'additional/fixed fee(unit: yuan)', + deductFrom: 'deduct from', + payOnline: 'pay online', + scale: 'scale', + round: 'round', + roundUp: 'round up', + roundDown: 'round down', + decimalPlace: 'decimal place', + operate: 'action', + userName: 'operator', + createTime: 'create time', + add: 'add', + delete: 'delete', + modifyNew: 'modify(new)', + modifyOld: 'modify(old)' + }, + feeDetailHis: { + feeName: 'fee item', + startTime: 'create time', + endTime: 'start time', + operate: 'action', + userName: 'operator', + createTime: 'create time', + add: 'add', + delete: 'delete', + modifyNew: 'modify(new)', + modifyOld: 'modify(old)' + }, + ownerDetailHis: { + operate: 'action', + userName: 'operator', + createTime: 'create time', + name: 'name', + sex: 'sex', + male: 'male', + female: 'female', + idCard: 'id card', + address: 'address', + add: 'add', + delete: 'delete', + modifyNew: 'modify(new)', + modifyOld: 'modify(old)' + }, + roomDetailHis: { + operate: 'action', + userName: 'operator', + createTime: 'create time', + roomNum: 'room number', + layer: 'layer', + roomSubTypeName: 'type', + area: 'area', + roomRent: 'rent', + stateName: 'state', + add: 'add', + delete: 'delete', + modifyNew: 'modify(new)', + modifyOld: 'modify(old)' + }, + carDetailHis: { + carNum: 'car number', + leaseType: 'lease type', + tempCar: 'temp car', + carTypeName: 'car type', + carColor: 'color', + owner: 'owner', + parkingSpace: 'parking space', + released: 'released', + validityPeriod: 'validity period', + operate: 'action', + userName: 'operator', + createTime: 'create time', + add: 'add', + delete: 'delete', + modifyNew: 'modify(new)', + modifyOld: 'modify(old)' + }, + contractDetailChange: { + contractName: 'contract name', + contractCode: 'contract code', + contractTypeName: 'contract type', + partyA: 'party A', + partyB: 'party B', + planTypeName: 'change type', + changePersonName: 'change person', + createTime: 'create time', + remark: 'remark', + stateName: 'state', + operation: 'operation', + detail: 'detail' + } + }, + zh: { + operateDataLog: { + search: { + title: '查询条件', + logStartTime: '请选择开始时间', + logEndTime: '请选择结束时间', + staffNameLike: '请输入操作人', + feeNameLike: '请输入费用项名称', + payerObjName: '请输入房屋名称,车牌号或者合同编号', + ownerNameLike: '请输入业主名称', + roomName: '请输入房屋名称 楼栋-单元-房屋', + carNumLike: '请输入车牌号', + contractCode: '请输入合同编号' + } + }, + feeConfigDetailHis: { + feeTypeCdName: '费用类型', + feeName: '收费项目', + feeFlagName: '费用标识', + billTypeName: '催缴类型', + paymentCd: '付费类型', + prePayment: '预付费', + postPayment: '后付费', + paymentCycle: '缴费周期(单位:月)', + validityPeriod: '有效期', + squarePrice: '计费单价(单位:元)', + additionalAmount: '附加/固定费用(单位:元)', + deductFrom: '账户抵扣', + payOnline: '手机缴费', + scale: '进位方式', + round: '四舍五入', + roundUp: '向上进位', + roundDown: '向下进位', + decimalPlace: '保留小数', + operate: '动作', + userName: '操作人', + createTime: '操作时间', + add: '添加', + delete: '删除', + modifyNew: '修改(新)', + modifyOld: '修改(旧)' + }, + feeDetailHis: { + feeName: '费用项', + startTime: '建账时间', + endTime: '计费起始时间', + operate: '动作', + userName: '操作人', + createTime: '操作时间', + add: '添加', + delete: '删除', + modifyNew: '修改(新)', + modifyOld: '修改(旧)' + }, + ownerDetailHis: { + operate: '动作', + userName: '操作人', + createTime: '操作时间', + name: '姓名', + sex: '性别', + male: '男', + female: '女', + idCard: '身份证', + address: '家庭住址', + add: '添加', + delete: '删除', + modifyNew: '修改(新)', + modifyOld: '修改(旧)' + }, + roomDetailHis: { + operate: '动作', + userName: '操作人', + createTime: '操作时间', + roomNum: '房号', + layer: '楼层', + roomSubTypeName: '类型', + area: '建筑/室内面积', + roomRent: '租金', + stateName: '房屋状态', + add: '添加', + delete: '删除', + modifyNew: '修改(新)', + modifyOld: '修改(旧)' + }, + carDetailHis: { + carNum: '车牌号', + leaseType: '车牌类型', + tempCar: '临时车', + carTypeName: '车辆类型', + carColor: '颜色', + owner: '业主', + parkingSpace: '车位', + released: '车位已释放', + validityPeriod: '有效期', + operate: '动作', + userName: '操作人', + createTime: '操作时间', + add: '添加', + delete: '删除', + modifyNew: '修改(新)', + modifyOld: '修改(旧)' + }, + contractDetailChange: { + contractName: '合同名称', + contractCode: '合同编号', + contractTypeName: '合同类型', + partyA: '甲方', + partyB: '乙方', + planTypeName: '变更类型', + changePersonName: '变更人', + createTime: '申请时间', + remark: '说明', + stateName: '状态', + operation: '操作', + detail: '明细' + } + }, +} \ No newline at end of file diff --git a/src/views/system/operateDataLogList.vue b/src/views/system/operateDataLogList.vue new file mode 100644 index 0000000..f3f8af4 --- /dev/null +++ b/src/views/system/operateDataLogList.vue @@ -0,0 +1,227 @@ + + + + + {{ $t('operateDataLog.search.title') }} + + {{ operateDataLogInfo.moreCondition ? $t('common.hide') : $t('common.more') }} + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + {{ $t('common.reset') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/paymentPoolLang.js b/src/views/system/paymentPoolLang.js new file mode 100644 index 0000000..231971d --- /dev/null +++ b/src/views/system/paymentPoolLang.js @@ -0,0 +1,180 @@ +export const messages = { + en: { + paymentPool: { + search: { + title: 'Search Conditions', + paymentName: 'Payment Name', + paymentType: 'Payment Vendor', + state: 'Status', + allStatus: 'All Status', + enable: 'Enable', + disable: 'Disable' + }, + list: { + title: 'Payment Configuration' + }, + table: { + paymentName: 'Name', + paymentType: 'Payment Vendor', + payRange: 'Payment Range', + communityFee: 'Community Fee', + tempCarFee: 'Temporary Car Fee', + specifiedFee: 'Specified Fee', + state: 'Status', + createTime: 'Create Time', + remark: 'Instruction', + enable: 'Enable', + disable: 'Disable' + }, + add: { + title: 'Add Payment', + paymentName: 'Name', + paymentNamePlaceholder: 'Required, please enter name', + paymentType: 'Payment Vendor', + paymentTypePlaceholder: 'Required, please select payment vendor', + certFile: 'Merchant Certificate(.p12)', + payRange: 'Payment Range', + payRangePlaceholder: 'Required, please select payment range', + communityFee: 'Community Fee', + tempCarFee: 'Temporary Car Fee', + specifiedFee: 'Specified Fee', + feeItems: 'Fee Items', + remark: 'Instruction', + remarkPlaceholder: 'Optional, please enter instruction', + success: 'Add payment successfully', + error: 'Failed to add payment' + }, + edit: { + title: 'Edit Payment', + paymentName: 'Name', + paymentNamePlaceholder: 'Required, please enter name', + paymentType: 'Payment Vendor', + paymentTypePlaceholder: 'Required, please select payment vendor', + certFile: 'Merchant Certificate(.p12)', + currentCert: 'Current Certificate', + payRange: 'Payment Range', + payRangePlaceholder: 'Required, please select payment range', + communityFee: 'Community Fee', + tempCarFee: 'Temporary Car Fee', + specifiedFee: 'Specified Fee', + feeItems: 'Fee Items', + state: 'Status', + statePlaceholder: 'Required, please select status', + enable: 'Enable', + disable: 'Disable', + remark: 'Instruction', + remarkPlaceholder: 'Optional, please enter instruction', + success: 'Edit payment successfully', + error: 'Failed to edit payment' + }, + delete: { + title: 'Delete Confirmation', + confirmText: 'Are you sure to delete this payment configuration?', + success: 'Delete payment successfully', + error: 'Failed to delete payment' + }, + validate: { + paymentNameRequired: 'Name is required', + paymentNameMaxLength: 'Name cannot exceed 64 characters', + paymentTypeRequired: 'Payment vendor is required', + payTypeRequired: 'Payment range is required', + stateRequired: 'Status is required' + }, + fetchError: 'Failed to fetch payment data' + }, + uploadFile: { + sizeLimit: 'File size cannot exceed 20MB', + success: 'File uploaded successfully', + error: 'Failed to upload file' + } + }, + zh: { + paymentPool: { + search: { + title: '查询条件', + paymentName: '支付名称', + paymentType: '支付厂家', + state: '状态', + allStatus: '全部状态', + enable: '启用', + disable: '停用' + }, + list: { + title: '支付配置' + }, + table: { + paymentName: '名称', + paymentType: '支付厂家', + payRange: '支付范围', + communityFee: '小区费用', + tempCarFee: '临时停车费', + specifiedFee: '指定费用项', + state: '状态', + createTime: '创建时间', + remark: '使用说明', + enable: '启用', + disable: '停用' + }, + add: { + title: '添加支付', + paymentName: '名称', + paymentNamePlaceholder: '必填,请填写名称', + paymentType: '支付厂家', + paymentTypePlaceholder: '必填,请选择支付厂家', + certFile: '商户证书(.p12)', + payRange: '支付范围', + payRangePlaceholder: '必填,请选择支付范围', + communityFee: '小区费用', + tempCarFee: '临时停车费', + specifiedFee: '指定费用项', + feeItems: '费用项', + remark: '使用说明', + remarkPlaceholder: '选填,请填写使用说明', + success: '添加支付成功', + error: '添加支付失败' + }, + edit: { + title: '修改支付', + paymentName: '名称', + paymentNamePlaceholder: '必填,请填写名称', + paymentType: '支付厂家', + paymentTypePlaceholder: '必填,请选择支付厂家', + certFile: '商户证书(.p12)', + currentCert: '当前证书', + payRange: '支付范围', + payRangePlaceholder: '必填,请选择支付范围', + communityFee: '小区费用', + tempCarFee: '临时停车费', + specifiedFee: '指定费用项', + feeItems: '费用项', + state: '状态', + statePlaceholder: '必填,请选择状态', + enable: '启用', + disable: '停用', + remark: '使用说明', + remarkPlaceholder: '选填,请填写使用说明', + success: '修改支付成功', + error: '修改支付失败' + }, + delete: { + title: '删除确认', + confirmText: '确定删除该支付配置吗?', + success: '删除支付成功', + error: '删除支付失败' + }, + validate: { + paymentNameRequired: '名称不能为空', + paymentNameMaxLength: '名称不能超过64个字符', + paymentTypeRequired: '支付厂家不能为空', + payTypeRequired: '支付范围不能为空', + stateRequired: '状态不能为空' + }, + fetchError: '获取支付数据失败' + }, + uploadFile: { + sizeLimit: '文件大小不能超过20MB', + success: '文件上传成功', + error: '文件上传失败' + } + } +} \ No newline at end of file diff --git a/src/views/system/paymentPoolList.vue b/src/views/system/paymentPoolList.vue new file mode 100644 index 0000000..79ca0cc --- /dev/null +++ b/src/views/system/paymentPoolList.vue @@ -0,0 +1,210 @@ + + + + + + {{ $t('paymentPool.search.title') }} + + + + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + + + + + + {{ $t('paymentPool.list.title') }} + + {{ $t('common.add') }} + + + + + + + + + + {{ $t('paymentPool.table.communityFee') }} + + + {{ $t('paymentPool.table.tempCarFee') }} + + + {{ $t('paymentPool.table.specifiedFee') }} + + + + + + + {{ scope.row.state === 'Y' ? $t('paymentPool.table.enable') : $t('paymentPool.table.disable') }} + + + + + + + + + {{ $t('common.edit') }} + + + {{ $t('common.delete') }} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/publicWeChatManageLang.js b/src/views/system/publicWeChatManageLang.js new file mode 100644 index 0000000..fdfbe9f --- /dev/null +++ b/src/views/system/publicWeChatManageLang.js @@ -0,0 +1,76 @@ +export const messages = { + en: { + publicWeChatManage: { + title: 'My Public WeChat', + addTitle: 'Add Public WeChat', + editTitle: 'Edit Public WeChat', + deleteTitle: 'Confirm Operation', + deleteConfirm: 'Are you sure to delete this public WeChat?', + table: { + name: 'Name', + appSecret: 'App Secret', + remarks: 'Description', + operation: 'Operation' + }, + form: { + name: 'Name', + appSecret: 'App Secret', + remarks: 'Description' + }, + placeholder: { + name: 'Required, please fill in the name', + appId: 'Required, please fill in APPID', + appSecret: 'Required, please fill in App Secret', + remarks: 'Optional, please fill in description' + }, + validate: { + nameRequired: 'Name is required', + appIdRequired: 'APPID is required', + appSecretRequired: 'App Secret is required' + }, + message: { + addSuccess: 'Added successfully', + editSuccess: 'Modified successfully', + deleteSuccess: 'Deleted successfully', + fetchError: 'Failed to fetch data' + } + } + }, + zh: { + publicWeChatManage: { + title: '我的公众号', + addTitle: '添加公众号', + editTitle: '修改公众号', + deleteTitle: '请确认您的操作', + deleteConfirm: '确定删除该公众号吗?', + table: { + name: '名称', + appSecret: '应用密钥', + remarks: '描述', + operation: '操作' + }, + form: { + name: '名称', + appSecret: '应用密钥', + remarks: '描述' + }, + placeholder: { + name: '必填,请填写名称', + appId: '必填,请填写APPID', + appSecret: '必填,请填写应用密钥', + remarks: '选填,请填写描述信息' + }, + validate: { + nameRequired: '名称不能为空', + appIdRequired: 'APPID不能为空', + appSecretRequired: '应用密钥不能为空' + }, + message: { + addSuccess: '添加成功', + editSuccess: '修改成功', + deleteSuccess: '删除成功', + fetchError: '获取数据失败' + } + } + } +} \ No newline at end of file diff --git a/src/views/system/publicWeChatManageList.vue b/src/views/system/publicWeChatManageList.vue new file mode 100644 index 0000000..1a9d094 --- /dev/null +++ b/src/views/system/publicWeChatManageList.vue @@ -0,0 +1,121 @@ + + + + + {{ $t('publicWeChatManage.title') }} + + + {{ $t('common.add') }} + + + {{ $t('common.document') }} + + + + + + + + + + + + ******** + + + + + + + + {{ $t('common.edit') }} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/smallWeChatManageLang.js b/src/views/system/smallWeChatManageLang.js new file mode 100644 index 0000000..2086caf --- /dev/null +++ b/src/views/system/smallWeChatManageLang.js @@ -0,0 +1,62 @@ +export const messages = { + en: { + smallWeChatManage: { + title: 'My Mini Programs', + name: 'Name', + appSecret: 'App Secret', + remarks: 'Description', + addTitle: 'Add Mini Program', + editTitle: 'Edit Mini Program', + deleteTitle: 'Confirm Operation', + deleteConfirm: 'Are you sure to delete this mini program?', + namePlaceholder: 'Required, please enter name', + appIdPlaceholder: 'Required, please enter APPID', + appSecretPlaceholder: 'Required, please enter app secret', + remarksPlaceholder: 'Optional, please enter description', + nameRequired: 'Name is required', + nameMaxLength: 'Name cannot exceed 100 characters', + appIdRequired: 'APPID is required', + appIdMaxLength: 'APPID cannot exceed 100 characters', + appSecretRequired: 'App secret is required', + appSecretMaxLength: 'App secret cannot exceed 200 characters', + wechatIdRequired: 'WeChat ID is required', + addSuccess: 'Add mini program successfully', + addFailed: 'Failed to add mini program', + editSuccess: 'Edit mini program successfully', + editFailed: 'Failed to edit mini program', + deleteSuccess: 'Delete mini program successfully', + deleteFailed: 'Failed to delete mini program', + fetchError: 'Failed to fetch mini program list' + } + }, + zh: { + smallWeChatManage: { + title: '我的小程序', + name: '名称', + appSecret: '应用密钥', + remarks: '描述', + addTitle: '添加小程序', + editTitle: '修改小程序', + deleteTitle: '请确认您的操作', + deleteConfirm: '确定删除小程序管理吗?', + namePlaceholder: '必填,请填写名称', + appIdPlaceholder: '必填,请填写APPID', + appSecretPlaceholder: '必填,请填写应用密钥', + remarksPlaceholder: '选填,请填写描述信息', + nameRequired: '名称不能为空', + nameMaxLength: '名称不能超过100位', + appIdRequired: 'APPID不能为空', + appIdMaxLength: 'APPID不能超过100位', + appSecretRequired: '应用密钥不能为空', + appSecretMaxLength: '应用密钥不能超过200个字符', + wechatIdRequired: '编码不能为空', + addSuccess: '添加成功', + addFailed: '添加失败', + editSuccess: '修改成功', + editFailed: '修改失败', + deleteSuccess: '删除成功', + deleteFailed: '删除失败', + fetchError: '获取小程序列表失败' + } + } +} \ No newline at end of file diff --git a/src/views/system/smallWeChatManageList.vue b/src/views/system/smallWeChatManageList.vue new file mode 100644 index 0000000..c16a732 --- /dev/null +++ b/src/views/system/smallWeChatManageList.vue @@ -0,0 +1,140 @@ + + + + + {{ $t('smallWeChatManage.title') }} + + + {{ $t('common.add') }} + + + + + + + + + ******** + + + + + + + {{ $t('common.edit') }} + + + + + + + + + + + + + + + + + + \ No newline at end of file
{{ $t('feePrintSpec.deleteConfirm') }}
{{ $t('smallWeChatManage.deleteConfirm') }}