| public/import/中华东波清临时停车费模版.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/import/中华东波清住宅物业费导入新模版.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/import/中华东波清商铺物业费导入新模板.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/import/中华东波清地下停车费模版.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/import/中华东波清地面停车费.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/import/中华东波清白单流水汇总模版.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/import/住宅物业费 导入新模板.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/import/商铺物业费 导入新模板 .xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/pages/property/carCreateFee/carCreateFee.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/pages/property/carCreateFee/carCreateFee.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/pages/property/feeConfigManage/feeConfigManage.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/pages/property/feeConfigManage/feeConfigManage.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| public/pages/property/flowchartManage/flowchartManage.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
public/import/Öлª¶«²¨ÇåÁÙʱͣ³µ·ÑÄ£°æ.xlsxBinary files differ
public/import/Öлª¶«²¨ÇåסլÎïÒµ·Ñµ¼ÈëÐÂÄ£°æ.xlsxBinary files differ
public/import/Öлª¶«²¨ÇåÉÌÆÌÎïÒµ·Ñµ¼ÈëÐÂÄ£°å.xlsxBinary files differ
public/import/Öлª¶«²¨Ç嵨ÏÂÍ£³µ·ÑÄ£°æ.xlsxBinary files differ
public/import/Öлª¶«²¨ÇåµØÃæÍ£³µ·Ñ.xlsxBinary files differ
public/import/Öлª¶«²¨Çå°×µ¥Á÷Ë®»ã×ÜÄ£°æ.xlsxBinary files differ
public/import/סլÎïÒµ·Ñ µ¼ÈëÐÂÄ£°å.xlsxBinary files differ
public/import/ÉÌÆÌÎïÒµ·Ñ µ¼ÈëÐÂÄ£°å .xlsxBinary files differ
public/pages/property/carCreateFee/carCreateFee.html
@@ -83,6 +83,10 @@ v-on:click="_openCarCreateFeeAddModal(null,true)"> <vc:i18n name="æ¹éå建" namespace="carCreateFee"></vc:i18n> </button> <button type="button" class="btn btn-primary btn-sm" style="margin-left:10px" v-on:click="_importCarData()"> <vc:i18n name="æ°æ®å¯¼å ¥" namespace="carCreateFee"></vc:i18n> </button> <!-- <button type="button" class="btn btn-primary btn-sm" style="margin-left:10px" v-on:click="_toBuyCarMonthCard()"> <vc:i18n name="è´ä¹°æå¡" namespace="carCreateFee"></vc:i18n> @@ -159,4 +163,63 @@ <vc:create path="property/carCreateFeeAdd"></vc:create> <vc:create path="property/exportCarFeeImportExcel"></vc:create> <vc:create path="property/doImportCreateFee"></vc:create> <!-- è½¦è¾æ°æ®å¯¼å ¥å¼¹çª --> <div class="modal fade" id="importCarDataModal" tabindex="-1" role="dialog" aria-labelledby="importCarDataModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="importCarDataModalLabel">è½¦è¾æ°æ®å¯¼å ¥</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="ibox-content"> <div> <div class="form-group row"> <label class="col-sm-2 col-form-label">éæ©æä»¶</label> <div class="col-sm-10"> <div class="custom-file"> <input id="carExcelFile" ref="carExcelFile" type="file" class="custom-file-input form-control" name="carExcelFile" v-on:change="getCarExcelFile($event)" accept=".xls,.xlsx,.csv"> <label for="carExcelFile" class="custom-file-label"> {{carCreateFeeInfo.excelFile==''?'å¿ å¡«ï¼è¯·éæ©æ°æ®æä»¶':carCreateFeeInfo.excelFile.name}} </label> </div> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">å¯¼å ¥ç±»å</label> <div class="col-sm-10"> <select class="custom-select" v-model="carCreateFeeInfo.importAdapt"> <option value="importOwnerCarV2">å°é¢/å°ä¸å车费</option> <option value="importCarInout">临æ¶å车费</option> </select> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">ä¸è½½æ¨¡æ¿</label> <div class="col-sm-10"> <div v-if="carCreateFeeInfo.importAdapt == 'importOwnerCarV2'"> 请å ä¸è½½ <a href="/import/ä¸å䏿³¢æ¸ å°é¢å车费.xlsx" target="_blank">å°é¢åè½¦è´¹å¯¼å ¥æ°æ¨¡æ¿</a> æ <a href="/import/ä¸å䏿³¢æ¸ å°ä¸å车费模ç.xlsx" target="_blank">å°ä¸åè½¦è´¹å¯¼å ¥æ°æ¨¡æ¿</a> <span>å夿°æ®åï¼ä¸ä¼ å¯¼å ¥</span> </div> <div v-else-if="carCreateFeeInfo.importAdapt == 'importCarInout'"> 请å ä¸è½½ <a href="/import/临æ¶åè½¦è´¹å¯¼å ¥æ¨¡æ¿.xlsx" target="_blank">临æ¶åè½¦è´¹å¯¼å ¥æ¨¡æ¿</a> <span>å夿°æ®åï¼ä¸ä¼ å¯¼å ¥</span> </div> </div> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">åæ¶</button> <button type="button" class="btn btn-primary" v-on:click="_importCarDataSubmit()">å¯¼å ¥</button> </div> </div> </div> </div> </div> public/pages/property/carCreateFee/carCreateFee.js
@@ -17,6 +17,8 @@ state: '', num: '', moreCondition: false, excelFile: '', importAdapt: 'importOwnerCarV2', conditions: { psId: '', ownerName: '', @@ -111,6 +113,106 @@ }, _openDoCreateRoomFee: function () { vc.emit('doImportCreateFee', 'openDoImportCreateFeeModal', {}) }, // æå¼å¯¼å ¥å¼¹çª _importCarData: function () { // 使ç¨åçJavaScriptæ¹å¼æå¼å¼¹çªï¼é¿å jQueryéæ©å¨é®é¢ var modal = document.getElementById('importCarDataModal'); if (modal) { // æ£æ¥æ¯å¦æBootstrap Modalå®ä¾ if (window.$ && $.fn.modal) { // 妿jQueryåBootstrap Modalå¯ç¨ï¼ä½¿ç¨jQueryæ¹å¼ $('#importCarDataModal').modal('show'); } else { // å¦åå°è¯åçæ¹å¼ modal.style.display = 'block'; modal.classList.add('show'); } } else { console.error('å¯¼å ¥å¼¹çªå ç´ æªæ¾å°'); vc.toast('å¯¼å ¥åè½åå§å失败ï¼è¯·å·æ°é¡µé¢éè¯'); } }, // è·åå¯¼å ¥æä»¶ getCarExcelFile: function (e) { vc.component.carCreateFeeInfo.excelFile = e.target.files[0]; }, // å¯¼å ¥è½¦è¾æ°æ® _importCarDataSubmit: function () { // æ£æ¥æ¯å¦éæ©äºæä»¶ if (!vc.component.carCreateFeeInfo.excelFile || vc.component.carCreateFeeInfo.excelFile == '') { vc.toast('è¯·éæ©å¯¼å ¥æä»¶'); return; } // æ·»å æä»¶éªè¯ if (!vc.component._checkFileValid(vc.component.carCreateFeeInfo.excelFile)) { return; } // æå»ºFormDataï¼ä½¿ç¨åç«¯è¦æ±çåæ°æ ¼å¼ var param = new FormData(); param.append('uploadFile', vc.component.carCreateFeeInfo.excelFile); // åç«¯è¦æ±çæä»¶ååæ° param.append('communityId', vc.getCurrentCommunity().communityId); // å°åºç¼å· param.append('importAdapt', vc.component.carCreateFeeInfo.importAdapt); // å端æä¾çå¯¼å ¥éé å¨ param.append('userId', vc.getData('/userInfo/userId')); // æä½åå·¥ç¼å· // æ¾ç¤ºå¯¼å ¥è¿åº¦æç¤º vc.toast('æ£å¨å¯¼å ¥ä¸ï¼è¯·ç¨å...'); // 使ç¨å端æä¾ç宿´æ¥å£å°å vc.http.upload( '/callComponent/upload/assetImport/importData', // å端æå®ç宿´æ¥å£å°å param, { emulateJSON: true, headers: { "Content-Type": "multipart/form-data" } }, function (json, res) { try { var _json = JSON.parse(json); if (_json.code === 0) { $('#importCarDataModal').modal('hide'); vc.toast('å¯¼å ¥æåï¼å ±å¯¼å ¥ ' + _json.data + ' æ¡æ°æ®'); vc.component.listCars(vc.component.currentPage, DEFAULT_ROW); // æ¸ ç©ºæä»¶éæ© vc.component.carCreateFeeInfo.excelFile = ''; $('#carExcelFile').val(''); return; } vc.toast(_json.msg || 'å¯¼å ¥å¤±è´¥', 10000); } catch (e) { console.error('å¯¼å ¥ååºè§£æé误:', e); vc.toast('å¯¼å ¥å¤±è´¥ï¼æ°æ®è§£æé误', 10000); } }, function (errInfo, error) { console.error('å¯¼å ¥è¯·æ±å¤±è´¥:', errInfo, error); vc.toast('å¯¼å ¥å¤±è´¥ï¼' + (errInfo || 'ç½ç»é误'), 10000); } ); }, // æä»¶éªè¯æ¹æ³ _checkFileValid: function (_file) { // éªè¯æä»¶ç±»å const fileName = _file.name; const fileExt = fileName.split('.').pop().toLowerCase(); const acceptTypes = ['xlsx', 'xls', 'csv']; if (!acceptTypes.includes(fileExt)) { vc.toast('æä»¶ç±»å䏿¯æï¼è¯·éæ© xlsxãxls æ csv æ ¼å¼æä»¶'); return false; } // éªè¯æä»¶å¤§å°ï¼20MBï¼ const maxSize = 20 * 1024 * 1024; if (_file.size > maxSize) { vc.toast('æä»¶å¤§å°ä¸è½è¶ è¿ 20MB'); return false; } return true; } } }); public/pages/property/feeConfigManage/feeConfigManage.html
@@ -109,9 +109,14 @@ </span> </button> <button type="button" class="btn btn-primary btn-sm" v-on:click="_openAddFeeConfigModal()" v-if="vc.hasPrivilege('502022022571930560')"> <vc:i18n name="æ·»å " namespace="feeConfigManage"></vc:i18n> </button> v-if="vc.hasPrivilege('502022022571930560')"> <vc:i18n name="æ·»å " namespace="feeConfigManage"></vc:i18n> </button> <button type="button" class="btn btn-primary btn-sm" v-on:click="_openImportFeeConfigModal()" v-if="vc.hasPrivilege('502022022571930560')"> <i class="fa fa-upload"></i> <span>æ°æ®å¯¼å ¥</span> </button> </div> </div> <div class="ibox-content"> @@ -234,4 +239,65 @@ <vc:create path="property/editFeeConfig"></vc:create> <vc:create path="property/deleteFeeConfig"></vc:create> </div> <!-- æ°æ®å¯¼å ¥æ¨¡ææ¡ --> <div class="modal fade" id="importFeeConfigModal" tabindex="-1" role="dialog" aria-labelledby="importFeeConfigModalLabel"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="importFeeConfigModalLabel">ç©ä¸è´¹å¯¼å ¥</h4> </div> <div class="modal-body"> <div class="form-group row" style="margin-top:20px"> <label class="col-sm-3 col-form-label"> <span class="c-red">*</span> <vc:i18n name="éæ©æä»¶" namespace="importExcel"></vc:i18n> </label> <div class="col-sm-9"> <div class="custom-file"> <input id="excelTemplate" type="file" class="custom-file-input form-control" name="excelTemplate" v-on:change="getFile($event)" accept=".xls,.xlsx"> <label for="excelTemplate" class="custom-file-label"> {{excelFile==null?'å¿ å¡«ï¼è¯·éæ©æ°æ®æä»¶':excelFile.name}} </label> </div> </div> </div> <div class="form-group row" style="margin-top:20px"> <label class="col-sm-3 col-form-label"> <span class="c-red">*</span> <vc:i18n name="å¯¼å ¥ç±»å" namespace="importExcel"></vc:i18n> </label> <div class="col-sm-9"> <select class="custom-select" v-model="feeConfigManageInfo.importType"> <option value="residential">ä½å® ç©ä¸è´¹</option> <option value="commercial">åéºç©ä¸è´¹</option> </select> </div> </div> <div class="form-group row" style="margin-top:20px"> <label class="col-sm-3 col-form-label"> <vc:i18n name="模æ¿ä¸è½½" namespace="importExcel"></vc:i18n> </label> <div class="col-sm-9"> <div v-if="feeConfigManageInfo.importType == 'residential'"> 请å ä¸è½½ <a href="/import/ä¸å䏿³¢æ¸ ä½å® ç©ä¸è´¹å¯¼å ¥æ°æ¨¡ç.xlsx.xlsx" target="_blank">ä½å® ç©ä¸è´¹å¯¼å ¥æ¨¡æ¿</a> å夿°æ®åï¼ä¸ä¼ å¯¼å ¥ </div> <div v-else-if="feeConfigManageInfo.importType == 'commercial'"> 请å ä¸è½½ <a href="/import/ä¸å䏿³¢æ¸ åéºç©ä¸è´¹å¯¼å ¥æ°æ¨¡æ¿.xlsx" target="_blank">åéºç©ä¸è´¹å¯¼å ¥æ¨¡æ¿</a> å夿°æ®åï¼ä¸ä¼ å¯¼å ¥ </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"> <vc:i18n name="åæ¶" namespace="common"></vc:i18n> </button> <button type="button" class="btn btn-primary" v-on:click="_importFeeConfigData"> <vc:i18n name="å¯¼å ¥" namespace="importExcel"></vc:i18n> </button> </div> </div> </div> </div> </div> public/pages/property/feeConfigManage/feeConfigManage.js
@@ -24,6 +24,7 @@ billTypes: [], isDefaults: [], curPage: DEFAULT_PAGE, importType: 'residential', conditions: { configId: '', secondaryFeeTypeCd: '', @@ -35,7 +36,8 @@ paymentCd: '', deductFrom: '' } } }, excelFile: null, }, _initMethod: function() { $that._initDicts(); // åå§ååå ¸æ°æ® @@ -196,6 +198,73 @@ // }, _openFeeConfigDetail: function(_feeConfig) { window.open('/#/pages/fee/feeConfigDetail?configId=' + _feeConfig.configId) }, // è·åæä»¶ getFile: function(e) { var files = e.target.files; if (files.length === 0) { return; } $that.excelFile = files[0]; }, // æå¼å¯¼å ¥æ¨¡ææ¡ _openImportFeeConfigModal: function() { $that.excelFile = null; $('#importFeeConfigModal').modal('show'); }, // æ£æ¥æä»¶ç±»å checkFileType: function(fileType) { var arrType = ['xlsx', 'xls']; return arrType.indexOf(fileType) > -1; }, // æ£æ¥æä»¶å¤§å° checkFileSize: function(fileSize) { return fileSize < 20 * 1024 * 1024; // 20MB }, // å¯¼å ¥è´¹ç¨é ç½®æ°æ® _importFeeConfigData: function() { if (!$that.excelFile) { vc.toast('è¯·éæ©è¦å¯¼å ¥çæä»¶'); return; } // éªè¯æä»¶ç±»å if (!vc.component.checkFileType($that.excelFile.name.split('.')[1])) { vc.toast('䏿¯ææçExcelæ ¼å¼'); return; } // éªè¯æä»¶å¤§å° if (!vc.component.checkFileSize($that.excelFile.size)) { vc.toast('Excelæä»¶å¤§å°ä¸è½è¶ è¿20M'); return; } var formData = new FormData(); formData.append('uploadFile', $that.excelFile); formData.append('importAdapt', 'importRoomOwnerV2'); formData.append('communityId', vc.getCurrentCommunity().communityId); formData.append('userId', vc.getLoginUser().userId); var param = { url: '/callComponent/upload/assetImport/importData', data: formData, contentType: false, processData: false, type: 'post', success: function(json, res) { var _json = JSON.parse(json); if (_json.code === 0) { vc.toast('å¯¼å ¥æå'); $('#importFeeConfigModal').modal('hide'); // å·æ°æ°æ® $that._listFeeConfigs($that.feeConfigManageInfo.curPage, DEFAULT_ROWS); } else { vc.toast(_json.msg); } }, error: function(errInfo, error) { console.log('请æ±å¤±è´¥å¤ç'); vc.toast('å¯¼å ¥å¤±è´¥ï¼è¯·æ£æ¥æä»¶æ ¼å¼'); } }; vc.http.request(param); } } }); public/pages/property/flowchartManage/flowchartManage.html
@@ -74,8 +74,13 @@ <div> <div class="text-right"> <button type="button" class="btn btn-primary btn-sm" v-on:click="_importPropertyFeeData()"> <i class="fa fa-upload"></i> <vc:i18n name="å¯¼å ¥ç©ä¸è´¹" namespace="flowchartManageOwner"></vc:i18n> </button> <button type="button" class="btn btn-primary btn-sm" style="margin-left:10px" v-on:click="_exportflowchartManageOwnerExcel()"> <i class="fa fa-plus"></i> <i class="fa fa-download"></i> <vc:i18n name="导åº" namespace="flowchartManageOwner"></vc:i18n> </button> </div> @@ -1119,4 +1124,63 @@ </div> --> </div> </div> <!-- ç©ä¸è´¹æ°æ®å¯¼å ¥å¼¹çª --> <div class="modal fade" id="importPropertyFeeDataModal" tabindex="-1" role="dialog" aria-labelledby="importPropertyFeeDataModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="importPropertyFeeDataModalLabel">ç©ä¸è´¹æ°æ®å¯¼å ¥</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="ibox-content"> <div> <div class="form-group row"> <label class="col-sm-2 col-form-label">éæ©æä»¶</label> <div class="col-sm-10"> <div class="custom-file"> <input id="propertyFeeExcelFile" ref="propertyFeeExcelFile" type="file" class="custom-file-input form-control" name="propertyFeeExcelFile" v-on:change="getPropertyFeeExcelFile($event)" accept=".xls,.xlsx,.csv"> <label for="propertyFeeExcelFile" class="custom-file-label"> {{flowchartFee.excelFile==''?'å¿ å¡«ï¼è¯·éæ©æ°æ®æä»¶':flowchartFee.excelFile.name}} </label> </div> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">å¯¼å ¥ç±»å</label> <div class="col-sm-10"> <select class="custom-select" v-model="flowchartFee.importAdapt"> <option value="importOwnerPropertyFeeV2">ä½å® ç©ä¸è´¹</option> <option value="importShopPropertyFeeV2">åéºç©ä¸è´¹</option> </select> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label">ä¸è½½æ¨¡æ¿</label> <div class="col-sm-10"> <div v-if="flowchartFee.importAdapt == 'importOwnerPropertyFeeV2'"> 请å ä¸è½½ <a href="/import/ä½å® ç©ä¸è´¹å¯¼å ¥æ¨¡æ¿.xlsx" target="_blank">ä½å® ç©ä¸è´¹å¯¼å ¥æ¨¡æ¿</a> <span>å夿°æ®åï¼ä¸ä¼ å¯¼å ¥</span> </div> <div v-else-if="flowchartFee.importAdapt == 'importShopPropertyFeeV2'"> 请å ä¸è½½ <a href="/import/åéºç©ä¸è´¹å¯¼å ¥æ¨¡æ¿.xlsx" target="_blank">åéºç©ä¸è´¹å¯¼å ¥æ¨¡æ¿</a> <span>å夿°æ®åï¼ä¸ä¼ å¯¼å ¥</span> </div> </div> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">åæ¶</button> <button type="button" class="btn btn-primary" v-on:click="_importPropertyFeeDataSubmit()">å¯¼å ¥</button> </div> </div> </div> </div> </div>