| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134 | 'use strict';module.exports = app => {    // session验证中间件    const sessionAuth = app.middlewares.sessionAuth();    // 创建时间自动填充中间件    const datetimeFill = app.middlewares.datetimeFill();    // 项目管理员判断中间件    const projectManagerCheck = app.middlewares.projectManagerCheck();    // 标段读取中间件    const tenderCheck = app.middlewares.tenderCheck();    const tenderBuildCheck = app.middlewares.tenderBuildCheck();    const ledgerAuditCheck = app.middlewares.ledgerAuditCheck();    const reviseAuditCheck = app.middlewares.reviseAuditCheck();    const changeAuditCheck = app.middlewares.changeAuditCheck();    const changeProjectAuditCheck = app.middlewares.changeProjectAuditCheck();    const changeApplyAuditCheck = app.middlewares.changeApplyAuditCheck();    const changePlanAuditCheck = app.middlewares.changePlanAuditCheck();    const uncheckTenderCheck = app.middlewares.uncheckTenderCheck();    const tenderPermissionCheck = app.middlewares.tenderPermissionCheck();    // 期读取中间件    const stageCheck = app.middlewares.stageCheck();    const settleCheck = app.middlewares.settleCheck();    const phasePayCheck = app.middlewares.phasePayCheck();    // 材料调差读取中间件    const materialCheck = app.middlewares.materialCheck();    // 第三方接口认证判断中间件    const api2otherCheck = app.middlewares.api2otherCheck();    // 项目管理接口认证中间件    const api3managementCheck = app.middlewares.api3managementCheck();    // 微信验证登录中间件    const wechatAuth = app.middlewares.wechatAuth();    // 企业微信验证登录中间件    const wxWorkAuth = app.middlewares.wxWorkAuth();    // 预付款中间件    const advanceCheck = app.middlewares.advanceCheck();    // 变更令中间件    const changeCheck = app.middlewares.changeCheck();    // 变更立项书中间件    const changeProjectCheck = app.middlewares.changeProjectCheck();    // 变更申请中间件    const changeApplyCheck = app.middlewares.changeApplyCheck();    // 变更方案中间件    const changePlanCheck = app.middlewares.changePlanCheck();    // 投资进度中间件    const scheduleCheck = app.middlewares.scheduleCheck();    // 修订    const reviseCheck = app.middlewares.reviseCheck();    const budgetCheck = app.middlewares.budgetCheck();    const subProjectCheck = app.middlewares.subProjectCheck();    // 支付审批中间件    const paymentTenderCheck = app.middlewares.paymentTenderCheck();    const paymentDetailCheck = app.middlewares.paymentDetailCheck();    // 施工日志中间件    const constructionCheck = app.middlewares.constructionCheck();    // 合同管理中间件    const contractCheck = app.middlewares.contractCheck();    // 资金监管中间件    const financialCheck = app.middlewares.financialCheck();    const financialPayCheck = app.middlewares.financialPayCheck();    const financialPayAuditCheck = app.middlewares.financialPayAuditCheck();    // 登入登出相关    app.get('/login', 'loginController.index');    app.get('/login/:code', 'loginController.index');    app.get('/login/port', api2otherCheck, 'loginController.port');    app.get('/', 'loginController.index');    app.get('/logout', 'loginController.logout');    app.post('/login', 'loginController.login');    app.post('/login/port', 'loginController.loginPort');    app.get('/login/management', api3managementCheck, 'loginController.management');    app.get('/project/name', 'loginController.projectName');    app.get('/sign', 'signController.index');    app.post('/sign/save', 'signController.save');    app.post('/reset/password', 'loginController.resetPassword');    // 项目管理对计量接口相关    app.get('/management/account', api3managementCheck, 'loginController.account');    app.get('/management/account/sync', api3managementCheck, 'loginController.syncProjectAccount');    app.get('/management/account/valid', api3managementCheck, 'loginController.syncValidAccount');    app.get('/management/project', api3managementCheck, 'loginController.project');    app.get('/management/proxy/project/vertify', sessionAuth, 'loginController.vertifyProject');    app.get('/management/proxy/project/add', sessionAuth, 'loginController.addProject');    // 用户信息初始化相关    app.get('/boot', sessionAuth, 'bootController.index');    app.post('/boot', sessionAuth, 'bootController.boot');    // 项目相关    app.get('/project/info', sessionAuth, 'projectController.info');    app.get('/project/account', sessionAuth, projectManagerCheck, 'accountController.index');    app.post('/project/account/permission/:accountId', sessionAuth, projectManagerCheck, 'accountController.savePermission');    app.get('/project/account/enable/:accountId', sessionAuth, projectManagerCheck, 'accountController.enable');    app.get('/project/account/disable/:accountId', sessionAuth, projectManagerCheck, 'accountController.enable');    app.get('/project/switch/:projectId', sessionAuth, projectManagerCheck, 'projectController.switchProject');    app.post('/project/info', sessionAuth, 'projectController.saveInfo');    // 个人账号相关    app.get('/profile/info', sessionAuth, 'profileController.info');    app.get('/profile/cert', sessionAuth, 'profileController.cert');    app.post('/profile/cert/save', sessionAuth, 'profileController.certSave');    app.post('/profile/cert/upload', sessionAuth, 'profileController.certUpload');    app.get('/profile/sms', sessionAuth, 'profileController.sms');    app.post('/profile/sms/type', sessionAuth, 'profileController.smsType');    app.post('/profile/dsk/api', sessionAuth, 'profileController.dskApi');    app.get('/profile/sign', sessionAuth, 'profileController.sign');    app.get('/profile/sign/netca', sessionAuth, 'profileController.netcasign');    app.post('/profile/sign/save', sessionAuth, 'profileController.signSave');    // app.get('/profile/netcasign/delete', sessionAuth, 'profileController.netcasignDelete');    // app.get('/profile/netcasign/upload', sessionAuth, 'profileController.netcasignload');    app.post('/profile/sign/delete', sessionAuth, 'profileController.signDelete');    app.post('/profile/sign/upload', sessionAuth, 'profileController.signUpload');    app.post('/profile/stamp/upload', sessionAuth, 'profileController.stampUpload');    app.get('/profile/safe', sessionAuth, 'profileController.safe');    app.post('/profile/save', sessionAuth, 'profileController.saveBase');    app.post('/profile/password', sessionAuth, 'profileController.modifyPassword');    app.post('/profile/code', sessionAuth, 'profileController.getCode');    app.post('/profile/bind', sessionAuth, 'profileController.bindMobile');    app.get('/profile/qrCode', sessionAuth, 'profileController.qrCode');    app.get('/profile/wechat', sessionAuth, 'profileController.wechat');    app.post('/profile/wechat/remove', sessionAuth, 'profileController.removeWechat');    // ------------------------- 通用 -----------------------------    // 标准库相关    app.post('/std-lib/get-data', sessionAuth, 'standardLibController.getData');    // 查询    app.post('/search/user', sessionAuth, 'projectController.searchAccount');    // 示例    app.get('/template/:file', sessionAuth, 'templateController.download');    // ------------------------- 通用 -----------------------------    // ------------------------- 项目相关 -----------------------------    // **工作台  todo 暂时引用控制面板,待修改    app.get('/dashboard', sessionAuth, 'dashboardController.workspace');    app.post('/dashboard/load', sessionAuth, 'dashboardController.loadTenders');    app.get('/dashboard/msg', sessionAuth, 'dashboardController.msg');    app.get('/dashboard/msg/:id', sessionAuth, 'dashboardController.msg');    app.get('/dashboard/msg/add/:id', sessionAuth, 'dashboardController.msgAdd');    app.post('/dashboard/msg/set/:id', sessionAuth, datetimeFill, 'dashboardController.msgSet');    app.get('/dashboard/msg/del/:id', sessionAuth, 'dashboardController.msgDelete');    app.post('/dashboard/msg/:id/file/upload', sessionAuth, 'dashboardController.msgUploadFile');    app.post('/dashboard/msg/:id/file/del', sessionAuth, 'dashboardController.msgDeleteFile');    // **数据大屏 todo dataview    // **项目列表    app.get('/subproj', sessionAuth, 'subProjController.index');    app.post('/subproj/addFolder', sessionAuth, projectManagerCheck, 'subProjController.addFolder');    app.post('/subproj/addProj', sessionAuth, projectManagerCheck, 'subProjController.addProj');    app.post('/subproj/dragTo', sessionAuth, projectManagerCheck, 'subProjController.dragTo');    app.post('/subproj/move', sessionAuth, projectManagerCheck, 'subProjController.move');    app.post('/subproj/del', sessionAuth, projectManagerCheck, 'subProjController.del');    app.post('/subproj/save', sessionAuth, projectManagerCheck, 'subProjController.save');    app.post('/subproj/refresh', sessionAuth, projectManagerCheck, 'subProjController.refresh');    app.post('/subproj/rela/save', sessionAuth, 'subProjController.saveRela');    app.post('/subproj/rela', sessionAuth, 'subProjController.rela');    app.post('/subproj/member', sessionAuth, projectManagerCheck, 'subProjController.member');    app.post('/subproj/memberSave', sessionAuth, projectManagerCheck, 'subProjController.memberSave');    app.get('/subproj/info', sessionAuth, 'subProjController.listInfo');    app.post('/subproj/col-set', sessionAuth, projectManagerCheck, 'subProjController.colSet');    app.post('/subproj/info/refreshCache', sessionAuth, 'subProjController.refreshInfoCache');    // **项目汇总 todo spgather    // **平台设置    // 项目信息    app.get('/setting/info', sessionAuth, 'settingController.info');    app.post('/setting/updateinfo/:id', sessionAuth, 'settingController.updateinfo');    app.post('/setting/update/projectset', sessionAuth, 'settingController.updateProjectSet');    // 账号设置    app.get('/setting/user', sessionAuth, 'settingController.user');    app.get('/setting/user/permission/set', sessionAuth, 'settingController.userPermissionSet');    app.get('/setting/user/unit', sessionAuth, 'settingController.userUnit');    app.post('/setting/user/unit/add', sessionAuth, 'settingController.userUnitAdd');    app.post('/setting/user/unit/save', sessionAuth, 'settingController.userUnitSave');    app.post('/setting/user/unit/upload', sessionAuth, 'settingController.userUnitUpload');    // 账号停用和启用    app.post('/setting/user/switch', sessionAuth, 'settingController.userSwitch');    app.post('/setting/user/add', sessionAuth, datetimeFill, 'settingController.addUser');    app.post('/setting/user/update', sessionAuth, 'settingController.updateUser');    app.post('/setting/user/permission', sessionAuth, 'settingController.permission');    app.post('/setting/user/reset/password', sessionAuth, 'settingController.resetUserPassword');    app.post('/setting/user/exist', sessionAuth, 'settingController.accountExist');    app.post('/setting/user/unbind', sessionAuth, 'settingController.userUnbind');    // 接口设置    app.get('/setting/api', sessionAuth, 'settingController.s2b');    app.post('/setting/api/update', sessionAuth, 'settingController.s2bUpdate');    app.post('/setting/api/update-status', sessionAuth, 'settingController.s2bUpdateStatus');    // 联动计量    app.post('/setting/limit/save', sessionAuth, projectManagerCheck, 'settingController.saveLimit');    app.post('/setting/limit/saveOption', sessionAuth, projectManagerCheck, 'settingController.saveLimitOption');    app.get('/setting/api/tender/:id', sessionAuth, projectManagerCheck, tenderCheck, 'settingController.tender');    app.post('/setting/api/tender/:id/load', sessionAuth, projectManagerCheck, tenderCheck, 'settingController.tenderLoad');    app.post('/setting/api/tender/:id/update', sessionAuth, projectManagerCheck, tenderCheck, 'settingController.tenderUpdate');    // 显示设置    app.get('/setting/show', sessionAuth, 'settingController.show');    app.post('/setting/show/update', sessionAuth, 'settingController.showListUpdate');    app.post('/setting/show/update-sjs', sessionAuth, 'settingController.showSjsUpdate');    app.get('/setting/spread', sessionAuth, projectManagerCheck, 'settingController.spread');    app.post('/setting/spread/save', sessionAuth, projectManagerCheck, 'settingController.saveSpread');    app.post('/setting/spread/preview', sessionAuth, projectManagerCheck, 'settingController.previewSpread');    app.post('/setting/spread/reset', sessionAuth, projectManagerCheck, 'settingController.resetSpread');    // ------------------------- 项目相关 -----------------------------    // ------------------------- 项目内部相关 -----------------------------    // **项目设置    // app.post('/sp/:id/setting/user/load', sessionAuth, subProjectCheck, 'subProjSettingController.load');    // 标段自定义类别    app.get('/sp/:id/setting/category', sessionAuth, subProjectCheck, 'subProjSettingController.category');    app.post('/sp/:id/setting/category/add', sessionAuth, subProjectCheck, 'subProjSettingController.addCategory');    app.post('/sp/:id/setting/category/del', sessionAuth, subProjectCheck, 'subProjSettingController.deleteCategory');    app.post('/sp/:id/setting/category/update', sessionAuth, subProjectCheck, 'subProjSettingController.updateCategory');    app.post('/sp/:id/setting/category/value', sessionAuth, subProjectCheck, 'subProjSettingController.setCategoryValue');    app.post('/sp/:id/setting/category/level', sessionAuth, subProjectCheck, 'subProjSettingController.resetCategoryLevel');    app.post('/sp/:id/setting/category/self-level', sessionAuth, subProjectCheck, 'subProjSettingController.selfCategoryLevel');    // 账号设置    app.get('/sp/:id/setting/user', sessionAuth, subProjectCheck, 'subProjSettingController.user');    app.get('/sp/:id/setting/user/permission', sessionAuth, subProjectCheck, 'subProjSettingController.permission');    app.post('/sp/:id/setting/user/permission/update', sessionAuth, subProjectCheck, 'subProjSettingController.permissionUpdate');    // 操作日志    app.get('/sp/:id/setting/logs', sessionAuth, subProjectCheck, 'subProjSettingController.logs');    app.get('/sp/:id/setting/logs/type/:type', sessionAuth, subProjectCheck, 'subProjSettingController.logs');    // 功能设置    app.get('/sp/:id/setting/fun', sessionAuth, subProjectCheck, 'subProjSettingController.fun');    app.post('/sp/:id/setting/fun/update', sessionAuth, subProjectCheck, 'subProjSettingController.updateFun');    // 决策大屏    app.get('/sp/:id/setting/datacollect', sessionAuth, subProjectCheck, 'subProjSettingController.dataCollect');    app.post('/sp/:id/setting/datacollect/save', sessionAuth, subProjectCheck, 'subProjSettingController.dataCollectSave');    // 标段管理    app.get('/sp/:id/setting/manage', sessionAuth, subProjectCheck, 'subProjSettingController.manage');    app.post('/sp/:id/setting/manage/tender/save', sessionAuth, subProjectCheck, 'subProjSettingController.manageTenderSave');    app.get('/sp/:id/nop/:block', sessionAuth, subProjectCheck, 'subProjController.noPermission');    // 项目列表跳转项目内部 todo 除标段内,均改为/sp/:id/xxx的链接形式    // **控制面板    app.get('/sp/:id/dashboard', sessionAuth, subProjectCheck, 'dashboardController.index');    app.get('/sp/:id/dashboard/msg', sessionAuth, subProjectCheck, 'dashboardController.msg');    app.get('/sp/:id/dashboard/msg/:mid', sessionAuth, subProjectCheck, 'dashboardController.msg');    app.get('/sp/:id/dashboard/msg/add/:mid', sessionAuth, subProjectCheck, 'dashboardController.msgAdd');    app.post('/sp/:id/dashboard/msg/set/:mid', sessionAuth, subProjectCheck, datetimeFill, 'dashboardController.msgSet');    app.get('/sp/:id/dashboard/msg/del/:mid', sessionAuth, subProjectCheck, 'dashboardController.msgDelete');    app.post('/dashboard/msg/:mid/file/upload', sessionAuth, 'dashboardController.msgUploadFile');    app.post('/dashboard/msg/:mid/file/del', sessionAuth, 'dashboardController.msgDeleteFile');    app.get('/wap/message/download/file/:fid', 'wapController.messageDownloadFile');    // 推送相关    // app.post('/dashboard/push', sessionAuth, 'dashboardController.pushSet');    // **决策大屏    app.get('/sp/:id/datacollect', sessionAuth, subProjectCheck, 'datacollectController.index');    app.get('/sp/:id/datacollect/index/:index', sessionAuth, subProjectCheck, 'datacollectController.index');    app.post('/sp/:id/datacollect/load', sessionAuth, subProjectCheck, 'datacollectController.loadData');    // **项目概况    // 项目信息    app.get('/sp/:id/info', sessionAuth, subProjectCheck, 'subProjController.info');    app.get('/sp/:id/data', sessionAuth, subProjectCheck, 'subProjController.dataIndex');    app.post('/sp/:id/info/save', sessionAuth, subProjectCheck, 'subProjController.saveInfo');    app.post('/sp/:id/load', sessionAuth, subProjectCheck, 'subProjController.load');    // 阶段进度    app.get('/sp/:id/progress', sessionAuth, subProjectCheck, 'subProjController.progress');    app.post('/sp/:id/progress/update', sessionAuth, subProjectCheck, 'subProjController.progressUpdate');    app.post('/sp/:id/progress/file/upload', sessionAuth, subProjectCheck, 'subProjController.uploadFile');    app.post('/sp/:id/progress/file/upload/big', sessionAuth, subProjectCheck, 'subProjController.uploadBigFile');    app.post('/sp/:id/progress/file/delete', sessionAuth, subProjectCheck, 'subProjController.deleteFile');    // 推进记录    app.get('/sp/:id/push', sessionAuth, subProjectCheck, 'subProjController.push');    app.post('/sp/:id/push/update', sessionAuth, subProjectCheck, 'subProjController.pushUpdate');    app.post('/sp/:id/push/file/upload', sessionAuth, subProjectCheck, 'subProjController.uploadFile');    app.post('/sp/:id/push/file/upload/big', sessionAuth, subProjectCheck, 'subProjController.uploadBigFile');    app.post('/sp/:id/push/file/delete', sessionAuth, subProjectCheck, 'subProjController.deleteFile');    // **标段管理    // 金额概况    app.get('/sp/:id/list', sessionAuth, subProjectCheck, 'tenderController.listDefault');    app.get('/sp/:id/list/finish', sessionAuth, subProjectCheck, 'tenderController.listDefaultFinish');    app.post('/sp/:id/list/load', sessionAuth, subProjectCheck, 'tenderController.listLoad');    app.post('/sp/:id/list/load2', sessionAuth, subProjectCheck, 'tenderController.listLoad2');    app.get('/sp/:id/list/info', sessionAuth, subProjectCheck, 'tenderController.listInfo');    app.get('/sp/:id/list/info/finish', sessionAuth, subProjectCheck, 'tenderController.listInfoFinish');    app.post('/sp/:id/list/info/col-set', sessionAuth, projectManagerCheck, subProjectCheck, 'subProjController.colSet');    // 计量进度    app.get('/sp/:id/list/progress', sessionAuth, subProjectCheck, 'tenderController.listProgress');    // 管理标段    app.get('/sp/:id/list/manage', sessionAuth, subProjectCheck, 'tenderController.listManage');    app.get('/sp/:id/list/manage/finish', sessionAuth, subProjectCheck, 'tenderController.listManageFinish');    app.post('/sp/:id/list/add', sessionAuth, subProjectCheck, 'tenderController.addTender');    app.post('/sp/:id/list/update', sessionAuth, subProjectCheck, 'tenderController.updateTender');    app.post('/sp/:id/list/del', sessionAuth, subProjectCheck, 'tenderController.deleteTender');    app.post('/sp/:id/list/batchUpdate', sessionAuth, subProjectCheck, 'tenderController.batchUpdate');    app.get('/sp/:id/list/refreshCache', sessionAuth, subProjectCheck, 'tenderController.refreshCache');    // 统计分析    app.get('/sp/:id/spss/info', sessionAuth, subProjectCheck, 'spssController.info');    app.get('/sp/:id/spss/gather/ledger', sessionAuth, subProjectCheck, 'spssController.gatherLedger');    app.get('/sp/:id/spss/gather/stage', sessionAuth, subProjectCheck, 'spssController.gatherStage');    app.get('/sp/:id/spss/gather/stage/extra', sessionAuth, subProjectCheck, 'spssController.gatherStageExtra');    app.get('/sp/:id/spss/compare/ledger', sessionAuth, subProjectCheck, 'spssController.compareLedger');    app.get('/sp/:id/spss/compare/stage', sessionAuth, subProjectCheck, 'spssController.compareStage');    app.post('/sp/:id/spss/load', sessionAuth, subProjectCheck, 'spssController.load');    // **标段合同管理 todo 接入项目内部    // app.get('/sp/:id/contract', sessionAuth, subProjectCheck, 'contractController.index');    app.get('/sp/:id/contract/tender', sessionAuth, subProjectCheck, 'contractController.tender');    app.post('/sp/:id/contract/tender/:tid/audit/save', sessionAuth, subProjectCheck, contractCheck, 'contractController.auditSave');    app.get('/sp/:id/contract/tender/:tid/detail', sessionAuth, subProjectCheck, contractCheck, 'contractController.detail');    app.get('/sp/:id/contract/tender/:tid/detail/:type', sessionAuth, subProjectCheck, contractCheck, 'contractController.detail');    app.get('/sp/:id/contract/tender/:tid/panel', sessionAuth, subProjectCheck, contractCheck, 'contractController.panel');    app.post('/sp/:id/contract/tender/:tid/detail/load', sessionAuth, subProjectCheck, contractCheck, 'contractController.loadDetail');    app.post('/sp/:id/contract/tender/:tid/detail/:type/load', sessionAuth, subProjectCheck, contractCheck, 'contractController.loadDetail');    app.post('/sp/:id/contract/tender/:tid/detail/update', sessionAuth, subProjectCheck, contractCheck, 'contractController.updateBills');    app.post('/sp/:id/contract/tender/:tid/detail/:type/update', sessionAuth, subProjectCheck, contractCheck, 'contractController.updateBills');    app.post('/sp/:id/contract/tender/:tid/detail/:type/:cid/file/upload', sessionAuth, subProjectCheck, contractCheck, 'contractController.uploadFile');    app.post('/sp/:id/contract/tender/:tid/detail/:type/:cid/file/delete', sessionAuth, subProjectCheck, contractCheck, 'contractController.deleteFile');    app.get('/sp/:id/contract/tender/:tid/detail/:type/:cid/file/:fid/download', sessionAuth, subProjectCheck, contractCheck, 'contractController.downloadFile');    app.post('/sp/:id/contract/tender/:tid/detail/:type/:cid/pay/:cpid/file/upload', sessionAuth, subProjectCheck, contractCheck, 'contractController.uploadFile');    app.post('/sp/:id/contract/tender/:tid/detail/:type/:cid/pay/:cpid/file/delete', sessionAuth, subProjectCheck, contractCheck, 'contractController.deleteFile');    app.get('/sp/:id/contract/tender/:tid/detail/:type/:cid/pay/:cpid/file/:fid/download', sessionAuth, subProjectCheck, contractCheck, 'contractController.downloadFile');    // 项目合同管理    app.get('/sp/:id/contract', sessionAuth, subProjectCheck, contractCheck, 'contractController.detail');    app.post('/sp/:id/contract/audit/save', sessionAuth, subProjectCheck, contractCheck, 'contractController.auditSave');    app.get('/sp/:id/contract/detail', sessionAuth, subProjectCheck, contractCheck, 'contractController.detail');    app.get('/sp/:id/contract/detail/:type', sessionAuth, subProjectCheck, contractCheck, 'contractController.detail');    app.get('/sp/:id/contract/panel', sessionAuth, subProjectCheck, contractCheck, 'contractController.panel');    app.post('/sp/:id/contract/load', sessionAuth, subProjectCheck, contractCheck, 'contractController.loadDetail');    app.post('/sp/:id/contract/detail/load', sessionAuth, subProjectCheck, contractCheck, 'contractController.loadDetail');    app.post('/sp/:id/contract/detail/:type/load', sessionAuth, subProjectCheck, contractCheck, 'contractController.loadDetail');    app.post('/sp/:id/contract/detail/update', sessionAuth, subProjectCheck, contractCheck, 'contractController.updateBills');    app.post('/sp/:id/contract/detail/:type/update', sessionAuth, subProjectCheck, contractCheck, 'contractController.updateBills');    app.post('/sp/:id/contract/detail/:type/:cid/file/upload', sessionAuth, subProjectCheck, contractCheck, 'contractController.uploadFile');    app.post('/sp/:id/contract/detail/:type/:cid/file/delete', sessionAuth, subProjectCheck, contractCheck, 'contractController.deleteFile');    app.get('/sp/:id/contract/detail/:type/:cid/file/:fid/download', sessionAuth, subProjectCheck, contractCheck, 'contractController.downloadFile');    app.post('/sp/:id/contract/detail/:type/:cid/pay/:cpid/file/upload', sessionAuth, subProjectCheck, contractCheck, 'contractController.uploadFile');    app.post('/sp/:id/contract/detail/:type/:cid/pay/:cpid/file/delete', sessionAuth, subProjectCheck, contractCheck, 'contractController.deleteFile');    app.get('/sp/:id/contract/detail/:type/:cid/pay/:cpid/file/:fid/download', sessionAuth, subProjectCheck, contractCheck, 'contractController.downloadFile');    // 资料归集-列表    app.get('/file', sessionAuth, 'fileController.index');    // 资料归集-模板    app.get('/file/template', sessionAuth, projectManagerCheck, 'fileController.template');    app.post('/file/template/save', sessionAuth, projectManagerCheck, 'fileController.saveTemplate');    app.post('/file/template/reset', sessionAuth, projectManagerCheck, 'fileController.resetTemplate');    app.post('/file/template/del', sessionAuth, projectManagerCheck, 'fileController.delTemplate');    app.get('/file/template/:id', sessionAuth, projectManagerCheck, 'fileController.templateDetail');    app.post('/file/template/:id/update', sessionAuth, projectManagerCheck, 'fileController.updateTemplate');    // 资料归集-文件    app.get('/sp/:id/file', sessionAuth, subProjectCheck, 'fileController.file');    app.post('/sp/:id/permission', sessionAuth, projectManagerCheck, subProjectCheck, 'fileController.getFilingTypePermission');    app.post('/sp/:id/permission/save', sessionAuth, projectManagerCheck, subProjectCheck, 'fileController.saveFilingTypePermission');    app.post('/sp/:id/filing/add', sessionAuth, subProjectCheck, 'fileController.addFiling');    app.post('/sp/:id/filing/save', sessionAuth, subProjectCheck, 'fileController.saveFiling');    app.post('/sp/:id/filing/del', sessionAuth, subProjectCheck, 'fileController.delFiling');    app.post('/sp/:id/filing/move', sessionAuth, subProjectCheck, 'fileController.moveFiling');    app.post('/sp/:id/file/load', sessionAuth, subProjectCheck, 'fileController.loadFile');    app.post('/sp/:id/file/check', sessionAuth, subProjectCheck, 'fileController.checkFiles');    app.post('/sp/:id/file/upload', sessionAuth, subProjectCheck, 'fileController.uploadFile');    app.post('/sp/:id/file/upload/big', sessionAuth, subProjectCheck, 'fileController.uploadBigFile');    app.post('/sp/:id/file/del', sessionAuth, subProjectCheck, 'fileController.delFile');    app.post('/sp/:id/file/save', sessionAuth, subProjectCheck, 'fileController.saveFile');    app.post('/sp/:id/file/move', sessionAuth, subProjectCheck, 'fileController.moveFile');    app.post('/sp/:id/file/rela', sessionAuth, subProjectCheck, 'fileController.relaFile');    app.post('/sp/:id/file/rela/tender', sessionAuth, subProjectCheck, 'fileController.loadValidRelaTender');    app.post('/sp/:id/file/rela/files', sessionAuth, subProjectCheck, 'fileController.loadRelaFiles');    app.post('/sp/:id/file/search', sessionAuth, subProjectCheck, 'fileController.search');    // 资料归集-管理员编辑    app.get('/sp/:id/fm', sessionAuth, projectManagerCheck, subProjectCheck, 'fileController.manage');    app.post('/sp/:id/lock-file', sessionAuth, projectManagerCheck, subProjectCheck, 'fileController.lockFiling');    app.post('/sp/:id/fm/update', sessionAuth, projectManagerCheck, subProjectCheck, 'fileController.manageUpdate');    // **施工日志 todo 接入项目内部    app.get('/sp/:id/construction', sessionAuth, subProjectCheck, 'constructionController.index');    app.post('/sp/:id/construction/:tid/audit/save', sessionAuth, subProjectCheck, 'constructionController.auditSave');    app.get('/sp/:id/construction/:tid/list', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.list');    app.post('/sp/:id/construction/:tid/list/add', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.addLog');    app.post('/sp/:id/construction/:tid/list/startmulti', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.startMulti');    app.get('/sp/:id/construction/:tid/log/:lid', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.logInfo');    app.post('/sp/:id/construction/:tid/log/:lid/delete', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.deleteLog');    app.post('/sp/:id/construction/:tid/log/:lid/save', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.logSave');    app.post('/sp/:id/construction/:tid/log/:lid/file/upload', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.uploadFile');    app.post('/sp/:id/construction/:tid/log/:lid/file/delete', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.deleteFile');    app.get('/sp/:id/construction/:tid/log/:lid/file/:fid/download', sessionAuth, subProjectCheck, constructionCheck, 'constructionController.downloadFile');    // **概算投资/动态投资    app.get('/sp/:id/budget', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.budgetInfo');    app.get('/sp/:id/budget/compare', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.compare');    app.post('/sp/:id/budget/compare/load', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.compareLoad');    app.post('/sp/:id/budget/compare/final', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.compareFinal');    app.get('/sp/:id/budget/:btype', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.detail');    app.post('/sp/:id/budget/:btype/load', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.detailLoad');    app.post('/sp/:id/budget/:btype/update', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.detailUpdate');    app.post('/sp/:id/budget/:btype/upload-excel/:ueType', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.detailUploadExcel');    app.post('/sp/:id/budget/:btype/ybp', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.uploadYbp');    app.post('/sp/:id/budget/:btype/dsk', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.importDsk');    app.post('/sp/:id/budget/decimal', sessionAuth, subProjectCheck, budgetCheck, 'budgetController.decimal');    // 支付审批    app.get('/sp/:id/payment', sessionAuth, subProjectCheck, 'paymentController.index');    app.get('/sp/:id/payment/setting', sessionAuth, subProjectCheck, 'paymentController.setting');    app.post('/sp/:id/payment/permission/save', sessionAuth, subProjectCheck, 'paymentController.permissionSave');    app.post('/sp/:id/payment/info/save', sessionAuth, subProjectCheck, 'paymentController.paymentInfoSave');    app.get('/sp/:id/payment/:pid/detail/:did', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.detail');    app.post('/sp/:id/payment/:pid/detail/:did/save', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.detailSave');    app.post('/sp/:id/payment/save', sessionAuth, subProjectCheck, 'paymentController.save');    app.post('/sp/:id/payment/list/load', sessionAuth, subProjectCheck, 'paymentController.listLoad');    app.get('/sp/:id/payment/:pid/process', sessionAuth, subProjectCheck, paymentTenderCheck, 'paymentController.process');    app.post('/sp/:id/payment/:pid/process/save', sessionAuth, subProjectCheck, paymentTenderCheck, 'paymentController.processSave');    app.get('/sp/:id/payment/:pid/list', sessionAuth, subProjectCheck, paymentTenderCheck, 'paymentController.rptList');    app.get('/sp/:id/payment/:pid/list/:trid', sessionAuth, subProjectCheck, paymentTenderCheck, 'paymentController.rptList');    app.post('/sp/:id/payment/:pid/list/:trid/save', sessionAuth, subProjectCheck, paymentTenderCheck, 'paymentController.rptSave');    app.post('/sp/:id/payment/:pid/list/:trid/delete', sessionAuth, subProjectCheck, paymentTenderCheck, 'paymentController.deleteDetail');    app.post('/sp/:id/payment/:pid/list/:trid/auditors', sessionAuth, subProjectCheck, paymentTenderCheck, 'paymentController.detailAuditors');    app.post('/sp/:id/payment/:pid/detail/:did/audit/start', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.startAudit');    app.post('/sp/:id/payment/:pid/detail/:did/audit/check', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.checkAudit');    // 附件    app.post('/sp/:id/payment/:pid/detail/:did/file/upload', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.uploadDetailFile');    app.post('/sp/:id/payment/:pid/detail/:did/file/delete', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.deleteDetailFile');    app.get('/sp/:id/payment/:pid/detail/:did/file/:fid/download', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.downloadDetailFile');    // 安全生产费    app.get('/sp/:id/payment/:pid/safe/:did/bills', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.safeBills');    app.get('/sp/:id/payment/:pid/safe/:did/compare', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.safeCompare');    app.post('/sp/:id/payment/:pid/safe/:did/load', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.safeLoad');    app.post('/sp/:id/payment/:pid/safe/:did/update', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.safeUpdate');    app.post('/sp/:id/payment/:pid/safe/:did/decimal', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.safeDecimal');    app.post('/sp/:id/payment/:pid/safe/:did/file/upload', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.uploadDetailFile');    app.post('/sp/:id/payment/:pid/safe/:did/file/delete', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'paymentController.deleteDetailFile');    // **资金监管 todo 接入项目内部    // app.get('/financial', sessionAuth, 'financialController.index');    // app.post('/financial/audit/save', sessionAuth, financialCheck, 'financialController.auditSave');    app.get('/sp/:id/financial/transfer', sessionAuth, subProjectCheck, financialCheck, 'financialController.transfer');    app.post('/sp/:id/financial/transfer/add', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferAdd');    app.post('/sp/:id/financial/transfer/update', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferUpdate');    app.post('/sp/:id/financial/transfer/:trid/file/upload', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferUploadFile');    app.post('/sp/:id/financial/transfer/:trid/file/delete', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferDeleteFile');    app.get('/sp/:id/financial/transfer/:trid/file/:fid/download', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferDownloadFile');    app.get('/sp/:id/financial/transfer/:trid/tender', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferTender');    app.post('/sp/:id/financial/transfer/:trid/tender/update', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferTenderUpdate');    app.post('/sp/:id/financial/transfer/:trid/tender/:ttid/file/upload', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferTenderUploadFile');    app.post('/sp/:id/financial/transfer/:trid/tender/:ttid/file/delete', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferTenderDeleteFile');    app.get('/sp/:id/financial/transfer/:trid/tender/:ttid/file/:fid/download', sessionAuth, subProjectCheck, financialCheck, 'financialController.transferTenderDownloadFile');    app.get('/sp/:id/financial/pay/stage', sessionAuth, subProjectCheck, financialCheck, 'financialController.payStage');    app.post('/sp/:id/financial/pay/stage/save', sessionAuth, subProjectCheck, financialCheck, 'financialController.payStageSave');    app.get('/sp/:id/financial/pay/stage/:fpsid', sessionAuth, subProjectCheck, financialCheck, 'financialController.pay');    app.post('/sp/:id/financial/pay/stage/:fpsid/save', sessionAuth, subProjectCheck, financialCheck, 'financialController.paySave');    app.get('/sp/:id/financial/pay/:fpid/detail', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, financialPayAuditCheck, 'financialController.payDetail');    app.post('/sp/:id/financial/pay/:fpid/save', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, 'financialController.payDetailSave');    app.post('/sp/:id/financial/pay/:fpid/file/upload', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, 'financialController.payUploadFile');    app.post('/sp/:id/financial/pay/:fpid/file/delete', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, 'financialController.payDeleteFile');    app.get('/sp/:id/financial/pay/:fpid/file/:fid/download', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, 'financialController.payDownloadFile');    app.post('/sp/:id/financial/pay/:fpid/audit/start', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, financialPayAuditCheck, 'financialController.startPayAudit');    app.post('/sp/:id/financial/pay/:fpid/audit/check', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, 'financialController.checkPayAudit');    app.post('/sp/:id/financial/pay/:fpid/audit/check/again', sessionAuth, subProjectCheck, financialCheck, financialPayCheck, 'financialController.checkPayAgain');    app.get('/sp/:id/financial/pay/list', sessionAuth, subProjectCheck, financialCheck, 'financialController.payList');    app.post('/sp/:id/financial/pay/list/save', sessionAuth, subProjectCheck, financialCheck, 'financialController.payListSave');    app.get('/sp/:id/financial/pay/tender', sessionAuth, subProjectCheck, financialCheck, 'financialController.payTender');    app.post('/sp/:id/financial/pay/tender/save', sessionAuth, subProjectCheck, financialCheck, 'financialController.payTenderSave');    app.get('/sp/:id/financial/summary', sessionAuth, subProjectCheck, financialCheck, 'financialController.summary');    app.post('/sp/:id/financial/summary/load', sessionAuth, subProjectCheck, financialCheck, 'financialController.summaryLoad');    // 图纸管理    // app.get('/sp/:id/drawing/tender', sessionAuth, subProjectCheck, 'drawingController.tender');    // app.get('/sp/:id/drawing/design', sessionAuth, subProjectCheck, 'drawingController.design');    // app.get('/sp/:id/drawing/as-built', sessionAuth, subProjectCheck, 'drawingController.built');    // 质量管理    app.get('/sp/:id/quality/tender', sessionAuth, subProjectCheck, 'qualityController.tender');    app.post('/sp/:id/quality/member', sessionAuth, subProjectCheck, projectManagerCheck, 'qualityController.member');    app.post('/sp/:id/quality/memberSave', sessionAuth, subProjectCheck, projectManagerCheck, 'qualityController.memberSave');    app.get('/sp/:id/quality/tender/:tid/info', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.info');    app.get('/sp/:id/quality/tender/:tid/flaw', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.flaw');    app.get('/sp/:id/quality/tender/:tid/lab', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.lab');    app.post('/sp/:id/quality/tender/:tid/load', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.load');    app.post('/sp/:id/quality/tender/:tid/save/:type', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.save');    app.post('/sp/:id/quality/tender/:tid/file/upload', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.uploadFile');    app.post('/sp/:id/quality/tender/:tid/file/del', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.delFile');    app.post('/sp/:id/quality/tender/:tid/file/save', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.saveFile');    app.post('/sp/:id/quality/tender/:tid/push', sessionAuth, subProjectCheck, tenderCheck, tenderPermissionCheck, 'qualityController.pushStatus');    app.get('/sp/:id/quality/rule', sessionAuth, subProjectCheck, projectManagerCheck, 'qualityController.rule');    app.post('/sp/:id/quality/rule/save', sessionAuth, subProjectCheck, projectManagerCheck, 'qualityController.ruleSave');    app.post('/sp/:id/quality/tender/:tid/rule/save', sessionAuth, subProjectCheck, tenderCheck, projectManagerCheck, 'qualityController.ruleSave');    // ------------------------- 项目内部相关 -----------------------------    // ------------------------- 标段内部 -----------------------------    // 为了保持标段内部链接不变,须在tenderCheck后,进行subProjectCheck,使用tender.spid来获取所属的子项目,标段无所属子项目时则无法进入    // 标段概况    app.get('/tender/:id', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.tenderInfo');    app.get('/tender/:id/type', sessionAuth, 'tenderController.tenderType');    app.post('/tender/:id/save', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveTenderInfo');    app.post('/tender/:id/save2', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveTenderInfo2');    app.post('/tender/:id/build', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveBuildStatus');    app.post('/tender/rule', sessionAuth, 'tenderController.rule');    app.post('/tender/:id/rule/first', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.ruleFirst');    app.get('/tender/:id/shenpi', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.shenpiSet');    app.post('/tender/:id/shenpi/save', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveTenderInfoShenpi');    app.post('/tender/:id/shenpi/audit/save', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveShenpiAudit');    app.post('/tender/:id/shenpi/ass/load', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.loadAuditAss');    app.post('/tender/:id/shenpi/save-sign', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveCooperateSign');    app.post('/tender/:id/shenpi/union/load', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.loadUnionAudit');    app.post('/tender/:id/shenpi/union/save', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveUnionAudit');    app.post('/tender/:id/copy-setting', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.copyTender');    app.post('/tender/:id/tourist/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'tenderController.saveTourist');    app.post('/tender/:id/map/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'tenderController.saveMap');    app.post('/tender/:id/map/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'tenderController.uploadMap');    app.post('/tender/:id/load', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.loadData');    app.post('/tender/:id/saveRela', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveRelaData');    app.get('/tender/:id/cert', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.certSet');    app.post('/tender/:id/cert/save', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveCert');    app.get('/tender/:id/ctrl-price', sessionAuth, tenderCheck, subProjectCheck, 'ctrlPriceController.index');    app.post('/tender/:id/ctrl-price/load', sessionAuth, tenderCheck, subProjectCheck, 'ctrlPriceController.load');    app.post('/tender/:id/ctrl-price/update', sessionAuth, tenderCheck, subProjectCheck, 'ctrlPriceController.update');    app.post('/tender/:id/ctrl-price/upload-excel/:ueType', sessionAuth, tenderCheck, subProjectCheck, 'ctrlPriceController.uploadExcel');    app.post('/tender/:id/expr/save', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.saveExpr');    app.post('/tender/:id/expr/load', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.loadExpr');    // 预付款    app.get('/tender/:id/advance/:type', sessionAuth, tenderCheck, subProjectCheck, 'advanceController.index');    // app.get('/tender/:id/advance/material', sessionAuth, tenderCheck, subProjectCheck, 'advanceController.materialList');    app.post('/tender/:id/advance/:type/create', sessionAuth, tenderCheck, subProjectCheck, tenderBuildCheck, 'advanceController.create');    app.post('/tender/:id/advance/:type/delete', sessionAuth, tenderCheck, subProjectCheck, tenderBuildCheck, 'advanceController.delete');    app.get('/tender/:id/advance/:order/detail', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'advanceController.detail');    app.post('/tender/:id/advance/:order/audit/add', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'advanceController.addAudit');    app.post('/tender/:id/advance/:order/audit/delete', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'advanceController.deleteAudit');    app.post('/tender/:id/advance/:order/audit/start', sessionAuth, tenderCheck, subProjectCheck, tenderBuildCheck, advanceCheck, 'advanceController.start');    app.post('/tender/:id/advance/:order/audit/check', sessionAuth, tenderCheck, subProjectCheck, tenderBuildCheck, advanceCheck, 'advanceController.checkAudit');    app.post('/tender/:id/advance/:order/update', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'advanceController.update');    app.post('/tender/:id/advance/:order/file/upload', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'advanceController.upload');    app.get('/tender/:id/advance/:order/file/:fid/download', sessionAuth, tenderCheck, subProjectCheck, 'advanceController.downloadFile');    app.post('/tender/:id/advance/:order/file/del', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'advanceController.deleteFile');    app.post('/tender/:id/advance/:type/:order/auditors', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'advanceController.getAuditors');    app.post('/tender/:id/advance/:order/check/again', sessionAuth, tenderCheck, subProjectCheck, tenderBuildCheck, advanceCheck, 'advanceController.checkAgain');    // 标段协作办公    app.get('/tender/:id/cooperation', sessionAuth, tenderCheck, subProjectCheck, 'tenderController.tenderCooperation');    // 台账管理相关    app.get('/tender/:id/ledger', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, ledgerAuditCheck, 'ledgerController.explode');    app.post('/tender/:id/ledger/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.loadExplodeData');    app.post('/tender/:id/ledger/get-children', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.getChildren');    app.post('/tender/:id/ledger/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.update');    app.post('/tender/:id/ledger/upload-excel/:ueType', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.uploadExcel');    app.post('/tender/:id/ledger/ybp', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.uploadYbp');    app.post('/tender/:id/ledger/dsk', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.importDsk');    app.get('/tender/:id/ledger/download/:file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.download');    app.post('/tender/:id/anc-gcl/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.ancGclUpdate');    app.post('/tender/:id/pos/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.posUpdate');    app.post('/tender/:id/pos/paste', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.posPaste');    app.post('/tender/:id/ledger/deal2sgfh', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.deal2sgfh');    app.post('/tender/:id/ledger/sgfh2deal', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.sgfh2deal');    app.post('/tender/:id/ledger/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.check');    app.post('/tender/:id/measure/ledger/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.ledgerAuditors');    // 台账附件    app.post('/tender/:id/ledger/upload/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.uploadFile');    app.get('/tender/:id/ledger/download/file/:fid', sessionAuth, 'ledgerController.downloadFile');    app.post('/tender/:id/ledger/delete/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.deleteFile');    app.post('/tender/:id/ledger/save/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.saveFile');    app.post('/tender/:id/ledger/check/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.checkFile');    app.post('/tender/:id/ledger/compresse/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.downloadZip');    // 台账审批相关    app.post('/tender/:id/ledger/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerAuditController.add');    app.post('/tender/:id/ledger/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerAuditController.remove');    app.post('/tender/:id/ledger/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerAuditController.saveAudit');    app.post('/tender/:id/ledger/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, ledgerAuditCheck, tenderBuildCheck, 'ledgerAuditController.start');    app.post('/tender/:id/ledger/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'ledgerAuditController.check');    app.post('/tender/:id/ledger/audit/check/again', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'ledgerAuditController.checkAgain');    // 部位台账    app.get('/tender/:id/ledger/bwtz', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.bwtz');    app.post('/tender/:id/ledger/bwtz/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.loadBwtz');    // 台账对比    app.get('/tender/:id/ledger/gather', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.gather');    app.post('/tender/:id/ledger/gather/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'ledgerController.loadGatherData');    // 台账修订    app.get('/tender/:id/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reviseController.index');    app.post('/tender/:id/revise/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'reviseController.add');    app.post('/tender/:id/revise/cancel', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'reviseController.cancel');    app.post('/tender/:id/revise/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reviseController.save');    app.post('/setting/revise/show-invalid', sessionAuth, 'reviseController.showInvalid'); // todo 在平台or在项目设置    // 台账修订页面    app.get('/tender/:id/revise/:rid/info', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, reviseAuditCheck, 'reviseController.info');    app.post('/tender/:id/revise/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.reviseAuditors');    app.post('/tender/:id/revise/:rid/info/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.loadInfoData');    app.post('/tender/:id/revise/:rid/info/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.update');    app.post('/tender/:id/revise/:rid/info/upload-excel/:ueType', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.uploadExcel');    app.post('/tender/:id/revise/:rid/info/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.checkData');    app.post('/tender/:id/revise/:rid/info/deal2sgfh', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.deal2sgfh');    app.post('/tender/:id/revise/:rid/info/sgfh2deal', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.sgfh2deal');    app.post('/tender/:id/revise/:rid/file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.uploadFile');    app.post('/tender/:id/revise/:rid/file/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.deleteFile');    app.post('/tender/:id/revise/:rid/file/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.saveFile');    app.get('/tender/:id/revise/:rid/compare', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, reviseAuditCheck, 'reviseController.compare');    app.get('/tender/:id/revise/:rid/gcl-compare', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, reviseAuditCheck, 'reviseController.gclCompare');    app.post('/tender/:id/revise/:rid/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, reviseAuditCheck, 'reviseController.loadData');    // 单价调整    app.get('/tender/:id/revise/:rid/price', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.price');    app.post('/tender/:id/revise/:rid/price/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.priceUpdate');    // 查看修订数据    app.get('/tender/:id/revise/history/:rid/info', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.history');    app.post('/tender/:id/revise/history/:rid/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.loadData');    app.get('/tender/:id/revise/history/:rid/gcl-compare', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.gclCompare');    app.get('/tender/:id/revise/history/:rid/compare', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.compare');    app.get('/tender/:id/revise/history/:rid/price', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'reviseController.price');    // 修订审批    app.post('/tender/:id/revise/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reviseController.addAuditor');    app.post('/tender/:id/revise/audit/remove', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reviseController.removeAuditor');    app.post('/tender/:id/revise/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, reviseAuditCheck, tenderBuildCheck, 'reviseController.start');    app.post('/tender/:id/revise/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, tenderBuildCheck, 'reviseController.check');    // 签约清单    app.post('/tender/:id/deal/get-data', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'dealBillsController.getData');    app.post('/tender/:id/deal/upload-excel', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'dealBillsController.loadExcel');    app.get('/tender/:id/deal/download/:file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'dealBillsController.download');    app.post('/tender/:id/deal/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'dealBillsController.update');    // 计量台账    // 期计量    app.get('/tender/:id/measure/stage', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'measureController.stage');    app.post('/tender/:id/measure/stage/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'measureController.stageAuditors');    app.post('/tender/:id/measure/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'measureController.add');    app.post('/tender/:id/measure/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'measureController.save');    app.post('/tender/:id/measure/stage/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'measureController.delete');    // 计量台账 -- 清单汇总    app.get('/tender/:id/measure/gather', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'measureController.gather');    // 计量台账 -- 审核比较    app.get('/tender/:id/measure/compare', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'measureController.compare');    app.post('/tender/:id/measure/compare/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'measureController.loadCompareData');    // 期计量详细    // 本期计量台账    app.get('/tender/:id/measure/stage/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.index');    app.get('/tender/:id/stage/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.index');// 针对旧数据wap端跳转web问题    app.post('/tender/:id/measure/stage/:order/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.getStageData');    app.post('/tender/:id/measure/stage/:order/pos', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.getStagePosData');    app.post('/tender/:id/measure/stage/:order/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.updateStageData');    app.post('/tender/:id/measure/stage/:order/valid-change', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.searchValidChange');    app.post('/tender/:id/measure/stage/:order/use-change', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.useChange');    app.post('/tender/:id/measure/stage/:order/auto-use-change', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.autoUseChange');    app.post('/tender/:id/measure/stage/:order/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.check');    app.post('/tender/:id/measure/stage/:order/stageCheck', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.stageCheck');    app.post('/tender/:id/measure/stage/:order/save/cooperation', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.saveCooperationData');    app.post('/tender/:id/measure/stage/:order/im-file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.uploadImFile');    app.post('/tender/:id/measure/stage/:order/im-file/del', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.deleteImFile');    app.get('/tender/:id/measure/stage/:order/im-file/download', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.downloadImFile');    app.get('/tender/:id/measure/stage/:order/cpd', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.exportStageData');    app.post('/tender/:id/measure/stage/:order/cpd/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.importStageData');    // 暂存计量    app.post('/tender/:id/measure/stage/:order/stash/list', sessionAuth, tenderCheck, subProjectCheck, stageCheck, 'stageController.stashList');    app.post('/tender/:id/measure/stage/:order/stash/add', sessionAuth, tenderCheck, subProjectCheck, stageCheck, 'stageController.addStash');    app.post('/tender/:id/measure/stage/:order/stash/del', sessionAuth, tenderCheck, subProjectCheck, stageCheck, 'stageController.delStash');    app.post('/tender/:id/measure/stage/:order/stash/recover', sessionAuth, tenderCheck, subProjectCheck, stageCheck, 'stageController.recoverStash');    app.post('/tender/:id/measure/stage/:order/importStageSheet', sessionAuth, tenderCheck, subProjectCheck, stageCheck, 'stageController.importStageSheet');    // 计量附件    app.post('/tender/:id/measure/stage/:order/upload/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.uploadFile');    app.get('/tender/:id/measure/stage/:order/download/file/:fid', sessionAuth, 'stageController.downloadFile');    app.post('/tender/:id/measure/stage/:order/delete/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.deleteFile');    app.post('/tender/:id/measure/stage/:order/save/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.saveFile');    app.post('/tender/:id/measure/stage/:order/check/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.checkFile');    app.post('/tender/:id/measure/stage/:order/download/compresse-file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.downloadZip');    app.post('/tender/:id/measure/stage/:order/save/shoufang', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.saveShoufang');    app.post('/tender/:id/measure/stage/:order/shoufang/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.shoufangAtt');    // 中间计量    app.get('/tender/:id/measure/stage/:order/detail', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.detail');    app.post('/tender/:id/measure/stage/:order/detail/build', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.buildDetailData');    app.post('/tender/:id/measure/stage/:order/detail/adv', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.setAdvancedConfig');    app.post('/tender/:id/measure/stage/:order/detail/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.loadDetailRelaData');    app.post('/tender/:id/measure/stage/:order/detail/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.saveDetailData');    app.post('/tender/:id/measure/stage/:order/detail/add-img', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.addCalcImage');    app.post('/tender/:id/measure/stage/:order/detail/merge-img', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.mergeCalcImage');    // 合同支付    app.get('/tender/:id/measure/stage/:order/pay', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.pay');    app.post('/tender/:id/measure/stage/:order/pay/detail', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.chapterDetail');    app.post('/tender/:id/measure/stage/:order/pay/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.savePayData');    app.post('/tender/:id/measure/stage/:order/pay/upload/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.payUploadFile');    app.get('/tender/:id/measure/stage/:order/pay/download/file/:fid', sessionAuth, 'stageController.payDownloadFile');    app.post('/tender/:id/measure/stage/:order/pay/delete/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.payDeleteFile');    app.get('/tender/:id/pay', sessionAuth, tenderCheck, subProjectCheck, 'payController.index');    app.post('/tender/:id/pay/add', sessionAuth, tenderCheck, subProjectCheck, 'payController.add');    app.post('/tender/:id/pay/delete', sessionAuth, tenderCheck, subProjectCheck, 'payController.del');    app.post('/tender/:id/pay/save', sessionAuth, tenderCheck, subProjectCheck, 'payController.save');    app.post('/tender/:id/pay/auditors', sessionAuth, tenderCheck, subProjectCheck, 'payController.loadAuditors');    app.get('/tender/:id/pay/:order/detail', sessionAuth, tenderCheck, subProjectCheck, phasePayCheck, 'payController.detail');    app.post('/tender/:id/pay/:order/load', sessionAuth, tenderCheck, subProjectCheck, phasePayCheck, 'payController.detailLoad');    app.post('/tender/:id/pay/:order/update', sessionAuth, tenderCheck, subProjectCheck, phasePayCheck, 'payController.detailUpdate');    app.post('/tender/:id/pay/:order/file/upload', sessionAuth, tenderCheck, subProjectCheck, phasePayCheck, 'payController.uploadFile');    app.post('/tender/:id/pay/:order/file/delete', sessionAuth, tenderCheck, subProjectCheck, phasePayCheck, 'payController.deleteFile');    // 合同支付审批    app.post('/tender/:id/pay/:order/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, phasePayCheck, 'payController.addAudit');    app.post('/tender/:id/pay/:order/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, phasePayCheck, 'payController.deleteAudit');    app.post('/tender/:id/pay/:order/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, phasePayCheck, 'payController.auditStart');    app.post('/tender/:id/pay/:order/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, phasePayCheck, 'payController.auditCheck');    app.post('/tender/:id/pay/:order/audit/checkAgain', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, phasePayCheck, 'payController.auditCheckAgain');    app.post('/tender/:id/pay/:order/audit/checkCancel', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, phasePayCheck, 'payController.auditCheckCancel');    // 变更概况    app.get('/tender/:id/measure/stage/:order/change', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.change');    app.post('/tender/:id/measure/stage/:order/change/data', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.getChangeData');    app.post('/tender/:id/measure/stage/:order/change/iData', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.getImportChangeData');    app.post('/tender/:id/measure/stage/:order/change/detail', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.changeDetail');    // 审批    app.post('/tender/:id/measure/stage/:order/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.addAudit');    app.post('/tender/:id/measure/stage/:order/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.deleteAudit');    app.post('/tender/:id/measure/stage/:order/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, tenderBuildCheck, 'stageController.startAudit');    app.post('/tender/:id/measure/stage/:order/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, tenderBuildCheck, 'stageController.checkAudit');    app.get('/tender/:id/measure/stage/:order/audit/check/again', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, tenderBuildCheck, 'stageController.checkAuditAgain');    app.get('/tender/:id/measure/stage/:order/audit/check/cancel', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, tenderBuildCheck, 'stageController.checkAuditCancel');    app.post('/tender/:id/measure/stage/:order/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.saveAudit');    // 部位台账    app.get('/tender/:id/measure/stage/:order/bwtz', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.bwtz');    app.post('/tender/:id/measure/stage/:order/bwtz/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.loadBwtz');    // 清单汇总    app.get('/tender/:id/measure/stage/:order/gather', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.gather');    // 审核比较    app.get('/tender/:id/measure/stage/:order/compare', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.compare');    app.post('/tender/:id/measure/stage/:order/compare/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.compareAuditor');    // 附加功能    // 甲供材料    app.get('/tender/:id/measure/stage/:order/extra/jgcl', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.jgcl');    app.post('/tender/:id/measure/stage/:order/extra/jgcl/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.loadJgcl');    app.post('/tender/:id/measure/stage/:order/extra/jgcl/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.updateJgcl');    // 永久材料    app.get('/tender/:id/measure/stage/:order/extra/yjcl', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.yjcl');    app.post('/tender/:id/measure/stage/:order/extra/yjcl/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.loadYjcl');    app.post('/tender/:id/measure/stage/:order/extra/yjcl/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.updateYjcl');    // 奖罚金    app.get('/tender/:id/measure/stage/:order/extra/bonus', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.bonus');    app.post('/tender/:id/measure/stage/:order/extra/bonus/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.loadBonus');    app.post('/tender/:id/measure/stage/:order/extra/bonus/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.updateBonus');    // 其他    app.get('/tender/:id/measure/stage/:order/extra/other', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.other');    app.post('/tender/:id/measure/stage/:order/extra/other/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.loadOther');    app.post('/tender/:id/measure/stage/:order/extra/other/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.updateOther');    app.post('/tender/:id/measure/stage/:order/extra/upload/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.uploadFile');    app.get('/tender/:id/measure/stage/:order/extra/download/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.downloadFile');    app.post('/tender/:id/measure/stage/:order/extra/delete/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.deleteFile');    // 安全生产    app.get('/tender/:id/measure/stage/:order/extra/safeProd', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.safeProd');    app.post('/tender/:id/measure/stage/:order/extra/safeProd/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.loadSafeProd');    app.post('/tender/:id/measure/stage/:order/extra/safeProd/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.updateSafeProd');    // 临时用地    app.get('/tender/:id/measure/stage/:order/extra/tempLand', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.tempLand');    app.post('/tender/:id/measure/stage/:order/extra/tempLand/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.loadTempLand');    app.post('/tender/:id/measure/stage/:order/extra/tempLand/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageExtraController.updateTempLand');    // 关联台账    app.get('/tender/:id/measure/stage/:order/rela', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.index');    app.post('/tender/:id/measure/stage/:order/rela/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.add');    app.post('/tender/:id/measure/stage/:order/rela/del', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.del');    app.post('/tender/:id/measure/stage/:order/rela/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.update');    app.get('/tender/:id/measure/stage/:order/rela/detail/:trid', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.detail');    app.post('/tender/:id/measure/stage/:order/rela/detail/:trid/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.load');    app.post('/tender/:id/measure/stage/:order/rela/detail/:trid/im-file/del', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.deleteImFile');    app.post('/tender/:id/measure/stage/:order/rela/detail/:trid/im-file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.uploadImFile');    app.get('/tender/:id/measure/stage/:order/rela/detail/:trid/im-file/download', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageRelaController.downloadImFile');    // 期审批管理    app.get('/tender/:id/measure/stage/:order/manager', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'stageController.manager');    app.post('/tender/:id/measure/stage/:order/manager/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, tenderBuildCheck, 'stageController.managerAuditDelete');    // 过程结算    app.get('/tender/:id/settle', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'settleController.list');    app.post('/tender/:id/settle/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'settleController.loadAuditors');    app.post('/tender/:id/settle/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'settleController.add');    app.post('/tender/:id/settle/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'settleController.save');    app.post('/tender/:id/settle/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'settleController.delete');    // 结算汇总    app.get('/tender/:id/settle/gather', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'settleController.gather');    app.post('/tender/:id/settle/gather/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'settleController.loadGatherData');    // 结算期    app.get('/tender/:id/settle/:sorder', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.index');    app.get('/tender/:id/settle/:sorder/select', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.select');    app.get('/tender/:id/settle/:sorder/ledger', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.ledger');    app.post('/tender/:id/settle/:sorder/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.loadSettleData');    app.post('/tender/:id/settle/:sorder/select/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.updateSelect');    app.post('/tender/:id/settle/:sorder/file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.uploadFile');    app.post('/tender/:id/settle/:sorder/file/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.deleteFile');    app.post('/tender/:id/settle/:sorder/file/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.saveFile');    // 结算审批    app.post('/tender/:id/settle/:sorder/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.addAudit');    app.post('/tender/:id/settle/:sorder/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.deleteAudit');    app.post('/tender/:id/settle/:sorder/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.auditStart');    app.post('/tender/:id/settle/:sorder/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.auditCheck');    app.post('/tender/:id/settle/:sorder/audit/checkAgain', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.auditCheckAgain');    app.post('/tender/:id/settle/:sorder/audit/checkCancel', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'settleController.auditCheckCancel');    // 报表    app.get('/tender/:id/report', sessionAuth, tenderCheck, subProjectCheck, 'reportController.index');    app.get('/tender/:id/change/:cid/report', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportController.indexForChange');    app.get('/tender/:id/change/plan/:cplnid/report', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportController.indexForChangePlan');    app.get('/tender/:id/change/project/:cprjid/report', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportController.indexForChangeProject');    app.get('/tender/:id/change/apply/:caid/report', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportController.indexForChangeApply');    app.get('/tender/:id/measure/stage/:order/report', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'reportController.index');    // app.get('/sp/:prjid/contract/report', sessionAuth, subProjectCheck, 'reportController.indexForProjectContract');    // app.get('/sp/:id/contract/panel', sessionAuth, subProjectCheck, contractCheck, 'contractController.panel');    app.get('/sp/:id/contract/report', sessionAuth, subProjectCheck, contractCheck, 'reportController.indexForProjectContract');    // app.get('/sp?/contract/report', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportController.indexForTenderContract');    app.get('/sp/:id/payment/:pid/safe/:did/report', sessionAuth, subProjectCheck, paymentTenderCheck, paymentDetailCheck, 'reportController.indexForPaymentSafe');    app.get('/budget/:id/report', sessionAuth, budgetCheck, 'reportController.indexForDynamicGrandTotal');    app.get('/tender/:id/archiveReport', sessionAuth, tenderCheck, subProjectCheck, 'reportArchiveController.index');    app.post('/tender/report_api/getReportArchive', sessionAuth, 'reportArchiveController.getReportArchive');    app.post('/tender/report_api/getReportArchive4bz', sessionAuth, 'reportArchiveController.getReportArchive4bz');    app.get('/getArchivedFileByUUID/:uuid/:rptName', sessionAuth, 'reportArchiveController.getArchivedFileByUUID');    app.get('/tender/:id/measure/stage/:order/archiveReport', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'reportArchiveController.index');    app.get('/archive/pdf/show', sessionAuth, 'reportArchiveController.pdfShow');    app.get('/printReport/:size', sessionAuth, 'reportController.showPrintPage');    app.get('/individualReport/:size', sessionAuth, 'reportController.showIndividualPage');    app.post('/tender/report_api/getReport', sessionAuth, subProjectCheck, 'reportController.getReport');    app.post('/contract/report_api/getReport', sessionAuth, 'reportController.getReport');    app.post('/report_api/getReport', sessionAuth, 'reportController.getReport');    app.post('/tender/report_api/getDirectReport', sessionAuth, 'reportController.createExcelFilesFromDirectData');    app.post('/tender/report_api/getMultiReports', sessionAuth, subProjectCheck, 'reportController.getMultiReportsEx');    // app.post('/contract/report_api/getMultiReports', sessionAuth, 'reportController.getMultiReportsEx');    app.post('/report_api/getMultiReports', sessionAuth, 'reportController.getMultiReportsEx');    app.post('/tender/report_api/getTestReport', sessionAuth, 'reportController.getTestReport');    app.post('/tender/report_api/createExcelFiles', sessionAuth, 'reportController.createExcelFilesEx');    app.post('/tender/report_api/createExcelFilesInOneBook', sessionAuth, 'reportController.createExcelFilesInOneBookEx');    // app.post('/tender/report_api/createExcelFiles', sessionAuth, 'reportController.createExcelFilesFromLocal');    // app.post('/tender/report_api/createExcelFilesInOneBook', sessionAuth, 'reportController.createExcelFilesFromLocal');    app.get('/getFileByUUID/:uuid/:rptName/:suffix', sessionAuth, 'reportController.getFileByUUID');    // rptRouter.get('/getFileByUUID/:uuid/:rptName/:suffix', reportController.getFileByUUID);    app.post('/tender/report_api/createSignatureRole', sessionAuth, 'signatureController.createSignatureRole');    app.post('/tender/report_api/updateSignatureUsed', sessionAuth, datetimeFill, 'signatureController.updateSignatureUsed');    app.post('/tender/report_api/updateRoleRelationship', sessionAuth, 'signatureController.updateRoleRel');    app.post('/tender/report_api/updateMultiRoleRelationship', sessionAuth, 'signatureController.updateCrossTendersRoleRelationship');    app.post('/tender/report_api/updateMultiChangesRoleRelationship', sessionAuth, 'signatureController.updateMultiChangesRoleRelationship');    app.post('/tender/report_api/updateMultiOtherRoleRelationship', sessionAuth, 'signatureController.updateMultiOtherRoleRelationship');    app.post('/tender/report_api/getMultiRoleRelationships', sessionAuth, 'signatureController.getMultiRoleRptRels');    app.post('/tender/report_api/createRoleRelationship', sessionAuth, 'signatureController.createRoleRel');    app.post('/tender/report_api/updateCustNode', sessionAuth, 'reportController.updateCustNode');    app.post('/report/cDefine', sessionAuth, 'reportController.setCustomDefine');    app.post('/tender/report_api/addArchive/:prjId/:stgId/:bzId/:tdId/:rptId', sessionAuth, 'reportArchiveController.addReportArchive');    app.post('/tender/report_api/addParentChildrenArchive/:prjId/:stgId/:bzId/:tdId/:rptId/:splitInfo', sessionAuth, 'reportArchiveController.addParentChildrenArchiveReports');    app.post('/tender/report_api/updateArchive/:prjId/:stgId/:bzId/:tdId/:rptId/:orgName', sessionAuth, 'reportArchiveController.updateReportArchive');    app.post('/tender/report_api/removeArchive/:prjId/:stgId/:bzId/:rptId/:orgName', sessionAuth, 'reportArchiveController.removeReportArchive');    app.post('/tender/report_api/addArchiveEncryption', sessionAuth, 'reportArchiveController.addReportArchiveEncryption');    app.post('/tender/report_api/updateArchiveEncryption', sessionAuth, 'reportArchiveController.updateReportArchiveEncryption');    app.post('/tender/report_api/removeArchiveEncryption', sessionAuth, 'reportArchiveController.removeReportArchiveEncryption');    app.post('/tender/:id/sendReportFileMsg', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportArchiveController.sendFileMsg');    app.post('/tender/:id/measure/stage/:order/sendReportFileMsg', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'reportArchiveController.sendFileMsg');    app.post('/tender/:id/sendOtherReportFileMsg', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportArchiveController.sendOtherFileMsg');    // 电子签名    app.get('/tender/:id/signReport', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportArchiveController.signReport');    app.post('/tender/:id/signReport/post', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportArchiveController.signPost');    app.post('/tender/:id/signReport/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'reportArchiveController.signFile');    // 变更管理    app.get('/tender/:id/change', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.index');    app.get('/tender/:id/change/status/:status', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.status');    app.post('/tender/:id/change/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.changeAuditors');    app.post('/tender/:id/change/newCode', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.newCode');    app.post('/tender/:id/change/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.add');    app.post('/tender/:id/change/defaultBills', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.defaultBills');    app.post('/tender/:id/change/:cid/info/file/upload', sessionAuth, 'changeController.uploadFile');    app.get('/change/download/file/:id', sessionAuth, 'changeController.downloadFile');    app.post('/change/download/file/:id', sessionAuth, 'changeController.checkFile');    app.post('/tender/:id/change/:cid/info/file/delete', sessionAuth, 'changeController.deleteFile');    app.post('/tender/:id/change/:cid/download/compresse-file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.downloadZip');    app.post('/tender/:id/change/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.delete');    app.post('/tender/:id/change/bills', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.bills');    app.post('/tender/:id/change/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeAuditCheck, 'changeController.save');    app.post('/tender/:id/change/approval', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.approval');    app.post('/tender/:id/change/check/again', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeCheck, changeAuditCheck, 'changeController.checkAgain');    app.post('/tender/:id/change/check/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeCheck, changeAuditCheck, 'changeController.checkRevise');    app.post('/tender/:id/change/cancel/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeCheck, changeAuditCheck, 'changeController.cancelRevise');    app.post('/tender/:id/change/:cid/check/codeRepeat', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.checkCodeRepeat');    app.post('/tender/:id/change/:cid/info/copy', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.copyChange');    app.post('/tender/:id/change/batch/fun', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.batchChangeFun');    // 变更单位管理    app.post('/change/update/company', sessionAuth, 'changeController.updateCompany');    // 变更令 - 新版本    app.get('/tender/:id/change/:cid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, changeAuditCheck, 'changeController.information');    app.get('/tender/:id/change/:cid/relation', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.relation');    app.post('/tender/:id/change/:cid/information/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.saveListsData');    app.post('/tender/:id/change/:cid/information/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, changeAuditCheck, 'changeController.startAudit');    app.post('/tender/:id/change/:cid/information/file/upload', sessionAuth, 'changeController.uploadFile');    app.post('/tender/:id/change/:cid/information/file/delete', sessionAuth, 'changeController.deleteFile');    app.post('/tender/:id/change/:cid/information/copy', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.copyChange');    app.post('/tender/:id/change/:cid/information/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.addAudit');    app.post('/tender/:id/change/:cid/information/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.deleteAudit');    app.post('/tender/:id/change/:cid/information/audit/spgroup', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.changeSpGroup');    app.post('/tender/:id/change/cancel/audit', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.checkAuditCancel');    app.post('/tender/:id/change/:cid/information/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, changeAuditCheck, 'changeController.saveAudit');    // 变更新增部位页(添加台账清单-台账模式)    app.get('/tender/:id/change/:cid/information/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.reviseInfo');    app.post('/tender/:id/change/:cid/information/revise/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.updateRevise');    // 添加台账清单-清单模式    app.get('/tender/:id/change/:cid/information/list', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.addListInfo');    // app.post('/tender/:id/change/:cid/information/list/update', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, 'changeController.updateRevise');    // 变更立项    app.get('/tender/:id/change/project', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.project');    app.get('/tender/:id/change/project/status/:status', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.projectStatus');    app.post('/tender/:id/change/project/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.projectAdd');    app.post('/tender/:id/change/project/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.projectDelete');    app.get('/tender/:id/change/project/:cpid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, changeProjectAuditCheck, 'changeController.projectInformation');    app.post('/tender/:id/change/project/:cpid/information/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.projectInformationSave');    app.post('/tender/:id/change/project/:cpid/information/file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.uploadProjectFile');    app.post('/tender/:id/change/project/:cpid/information/file/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.deleteProjectFile');    app.get('/tender/:id/change/project/:cpid/information/file/:fid/download', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.downloadProjectFile');    app.post('/tender/:id/change/project/:cpid/information/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.addProjectAudit');    app.post('/tender/:id/change/project/:cpid/information/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.deleteProjectAudit');    app.post('/tender/:id/change/project/:cpid/information/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, changeProjectAuditCheck, tenderBuildCheck, 'changeController.startProjectAudit');    app.post('/tender/:id/change/project/:cpid/information/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, tenderBuildCheck, 'changeController.checkProjectAudit');    app.post('/tender/:id/change/project/:cpid/information/xsaudit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.addProjectXsAudit');    app.post('/tender/:id/change/project/:cpid/information/xsaudit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.deleteProjectXsAudit');    app.post('/tender/:id/change/project/cancel/audit', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeProjectCheck, 'changeController.checkProjectAuditCancel');    app.post('/tender/:id/change/project/check/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeProjectCheck, 'changeController.checkProjectRevise');    app.post('/tender/:id/change/project/cancel/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeProjectCheck, 'changeController.cancelProjectRevise');    app.post('/tender/:id/change/project/check/again', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeProjectCheck, 'changeController.checkProjectAgain');    app.post('/tender/:id/change/project/:cpid/information/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.saveProjectAudit');    app.post('/tender/:id/change/project/:cpid/information/audit/spgroup', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, 'changeController.changeProjectSpGroup');    app.post('/tender/:id/change/project/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.changeProjectAuditors');    // 变更申请    app.get('/tender/:id/change/apply', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.apply');    app.get('/tender/:id/change/apply/status/:status', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.applyStatus');    app.post('/tender/:id/change/apply/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.applyAdd');    app.post('/tender/:id/change/apply/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.applyDelete');    app.get('/tender/:id/change/apply/:caid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, changeApplyAuditCheck, 'changeController.applyInformation');    app.post('/tender/:id/change/apply/:caid/information/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.applyInformationSave');    app.post('/tender/:id/change/apply/:caid/information/file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.uploadApplyFile');    app.post('/tender/:id/change/apply/:caid/information/file/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.deleteApplyFile');    app.get('/tender/:id/change/apply/:caid/information/file/:fid/download', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.downloadApplyFile');    app.post('/tender/:id/change/apply/:caid/information/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.addApplyAudit');    app.post('/tender/:id/change/apply/:caid/information/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.deleteApplyAudit');    app.post('/tender/:id/change/apply/:caid/information/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, changeApplyAuditCheck, tenderBuildCheck, 'changeController.startApplyAudit');    app.post('/tender/:id/change/apply/:caid/information/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, tenderBuildCheck, 'changeController.checkApplyAudit');    app.get('/tender/:id/change/apply/:caid/information/notice', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.applyInformationNotice');    app.post('/tender/:id/change/apply/:caid/information/list/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.saveApplyListsData');    app.post('/tender/:id/change/apply/cancel/audit', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeApplyCheck, 'changeController.checkApplyAuditCancel');    app.post('/tender/:id/change/apply/check/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeApplyCheck, 'changeController.checkApplyRevise');    app.post('/tender/:id/change/apply/cancel/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeApplyCheck, 'changeController.cancelApplyRevise');    app.post('/tender/:id/change/apply/check/again', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changeApplyCheck, 'changeController.checkApplyAgain');    app.post('/tender/:id/change/apply/:caid/information/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.saveApplyAudit');    app.post('/tender/:id/change/apply/:caid/information/audit/spgroup', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, 'changeController.changeApplySpGroup');    app.post('/tender/:id/change/apply/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.changeApplyAuditors');    // 变更方案    app.get('/tender/:id/change/plan', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.plan');    app.get('/tender/:id/change/plan/status/:status', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.planStatus');    app.post('/tender/:id/change/plan/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.planAdd');    app.post('/tender/:id/change/plan/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'changeController.planDelete');    app.get('/tender/:id/change/plan/:cpid/info', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.planInformation');// 针对旧数据wap端跳转web问题    app.get('/tender/:id/change/plan/:cpid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, changePlanAuditCheck, 'changeController.planInformation');    app.post('/tender/:id/change/plan/:cpid/information/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.planInformationSave');    app.post('/tender/:id/change/plan/:cpid/information/file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.uploadPlanFile');    app.post('/tender/:id/change/plan/:cpid/information/file/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.deletePlanFile');    app.get('/tender/:id/change/plan/:cpid/information/file/:fid/download', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.downloadPlanFile');    app.post('/tender/:id/change/plan/:cpid/information/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.addPlanAudit');    app.post('/tender/:id/change/plan/:cpid/information/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.deletePlanAudit');    app.post('/tender/:id/change/plan/:cpid/information/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, changePlanAuditCheck, tenderBuildCheck, 'changeController.startPlanAudit');    app.post('/tender/:id/change/plan/:cpid/information/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, tenderBuildCheck, 'changeController.checkPlanAudit');    app.post('/tender/:id/change/plan/:cpid/information/list/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.savePlanListsData');    app.post('/tender/:id/change/plan/cancel/audit', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changePlanCheck, 'changeController.checkPlanAuditCancel');    app.post('/tender/:id/change/plan/check/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changePlanCheck, 'changeController.checkPlanRevise');    app.post('/tender/:id/change/plan/cancel/revise', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changePlanCheck, 'changeController.cancelPlanRevise');    app.post('/tender/:id/change/plan/check/again', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, changePlanCheck, 'changeController.checkPlanAgain');    app.post('/tender/:id/change/plan/:cpid/information/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.savePlanAudit');    app.post('/tender/:id/change/plan/:cpid/information/audit/spgroup', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, 'changeController.changePlanSpGroup');    app.post('/tender/:id/change/plan/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'changeController.changePlanAuditors');    // 材料调差    app.get('/tender/:id/measure/material', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'materialController.index');    app.post('/tender/:id/measure/material/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'materialController.add');    app.post('/tender/:id/measure/material/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'materialController.delete');    app.post('/tender/:id/measure/material/auditors', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'materialController.materialAuditors');    app.post('/tender/:id/measure/material/:order/save/decimal', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.saveDecimal');    app.post('/tender/:id/measure/material/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'materialController.save');    app.post('/tender/:id/measure/material/save/data', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'materialController.saveData');    // 审批    app.post('/tender/:id/measure/material/:order/audit/add', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.addAudit');    app.post('/tender/:id/measure/material/:order/audit/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.deleteAudit');    app.post('/tender/:id/measure/material/:order/audit/start', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, tenderBuildCheck, 'materialController.startAudit');    app.post('/tender/:id/measure/material/:order/audit/check', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, tenderBuildCheck, 'materialController.checkAudit');    app.get('/tender/:id/measure/material/:order/audit/check/again', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.checkAuditAgain');    app.post('/tender/:id/measure/material/:order/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.saveAudit');    // 调差工料    app.get('/tender/:id/measure/material/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.info');    app.post('/tender/:id/measure/material/:order/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.saveBillsData');    // 月信息价    app.post('/tender/:id/measure/material/:order/month/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.saveMonth');    // 指数调差    app.get('/tender/:id/measure/material/:order/exponent', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.exponent');    app.post('/tender/:id/measure/material/:order/exponent/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.saveExponentData');    // 调差清单    app.get('/tender/:id/measure/material/:order/list', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.list');    app.post('/tender/:id/measure/material/:order/list/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.saveListsData');    app.post('/tender/:id/measure/material/:order/list/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.loadListsData');    // 调差清单设置页    app.get('/tender/:id/measure/material/:order/checklist', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.checklist');    app.post('/tender/:id/measure/material/:order/checklist/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.loadListsData');    app.post('/tender/:id/measure/material/:order/checklist/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.saveChecklistData');    // 附件    app.get('/tender/:id/measure/material/:order/file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.file');    app.post('/tender/:id/measure/material/:order/file/upload', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.upload');    app.get('/tender/:id/measure/material/:order/file/:fid/download', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'materialController.downloadFile');    app.post('/tender/:id/measure/material/:order/file/find', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.getCurMatericalFiles');    app.post('/tender/:id/measure/material/:order/file/delete', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'materialController.deleteFile');    app.post('/tender/:id/measure/material/:order/file/download/compresse-file', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'materialController.downloadZip');    // 调差新建期数据获取    app.post('/tender/:id/measure/material/gcl/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'materialController.loadGclData');    // 标段对比    app.get('/tools/check-tz', sessionAuth, 'spssController.checkTz');    app.post('/tools/load', sessionAuth, 'spssController.loadBaseData');    // wap页面    app.get('/wap', 'wapController.index');    app.get('/wap/login', 'wapController.index');    app.post('/wap/login', 'wapController.login');    app.get('/wap/logout', 'wapController.logout');    app.get('/wap/dashboard', sessionAuth, 'wapController.dashboard');    app.get('/wap/dashboard/msg/:id', sessionAuth, 'wapController.msg');    app.get('/wap/subproj', sessionAuth, 'wapController.subproj');    app.get('/wap/sp/:id/list', sessionAuth, subProjectCheck, 'wapController.list');    app.get('/wap/tender/:id', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'wapController.tender');    app.get('/wap/tender/:id/stage/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'wapController.stage');    app.get('/wap/tender/:id/change/:cid/info', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, changeAuditCheck, 'wapController.change');    app.get('/wap/tender/:id/change/plan/:cpid/info', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'wapController.changePlan');    app.post('/wap/tender/:id/change/approval', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, tenderBuildCheck, 'wapController.changeApproval');    app.get('/wap/tender/:id/revise/:rid/info', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'wapController.revise');    app.get('/wap/tender/:id/advance', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'wapController.advance');    app.get('/wap/tender/:id/advance/:order/detail', sessionAuth, tenderCheck, subProjectCheck, advanceCheck, 'wapController.advanceDetail');    // 针对企业微信访问判断去掉wap就能直达web端    app.get('/wap/tender/:id/measure/stage/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'wapController.stage');    app.get('/wap/tender/:id/change', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'wapController.changeIndex');    app.get('/wap/tender/:id/change/:cid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeCheck, changeAuditCheck, 'wapController.change');    app.get('/wap/tender/:id/change/project/:cpid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeProjectCheck, changeProjectAuditCheck, 'wapController.changeProject');    app.get('/wap/tender/:id/change/apply/:caid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changeApplyCheck, changeApplyAuditCheck, 'wapController.changeApply');    app.get('/wap/tender/:id/change/plan/:cpid/information', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, changePlanCheck, changePlanAuditCheck, 'wapController.changePlan');    app.get('/wap/tender/:id/material/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'wapController.material');    app.get('/wap/tender/:id/measure/material/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, materialCheck, 'wapController.material');    app.get('/wap/inspection', 'wapController.inspection');    app.post('/wap/inspection/ask', 'wapController.inspectionAiAsk');    app.post('/wap/voice/token', 'wapController.voiceToken');    // 微信    app.get('/wx', 'wechatController.index');    app.post('/wx', 'wechatController.replyMessage');    app.get('/wx/oauth', 'wechatController.oauth');    app.get('/wx/bind', wechatAuth, 'wechatController.bind');    app.post('/wx/bindwx', wechatAuth, 'wechatController.bindwx');    app.get('/wx/url2wap', wechatAuth, 'wechatController.url2wap');    app.get('/wx/project', wechatAuth, 'wechatController.project');    app.get('/wx/test', 'wechatController.testwx');    app.get('/MP_verify_t3MkWAMqplVxPjmr.txt', 'wechatController.oauthTxt');    // 投资进度    app.get('/tender/:id/schedule', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.index');    app.get('/tender/:id/schedule/ledger', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.ledger');    app.post('/tender/:id/schedule/ledger/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.loadLedgerData');    app.post('/tender/:id/schedule/ledger/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.saveLedger');    app.get('/tender/:id/schedule/plan', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.plan');    app.post('/tender/:id/schedule/plan/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.savePlan');    app.get('/tender/:id/schedule/stage', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.stageTp');    app.get('/tender/:id/schedule/stage/order/:order', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.stageTp');    app.post('/tender/:id/schedule/stage/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.saveStageTp');    app.get('/tender/:id/schedule/stage/gcl', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.stageGcl');    app.post('/tender/:id/schedule/stage/gcl/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.saveStageGcl');    app.post('/tender/:id/schedule/stage/:order/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.loadTpLedgerData');    app.post('/tender/:id/schedule/stage/gcl/:order/load', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.loadGclLedgerData');    app.post('/tender/:id/schedule/audit/save', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'scheduleController.saveAudit');    // 书签    app.post('/tender/:id/ledger/tag', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'tenderController.billsTag');    app.post('/tender/:id/revise/:rid/info/tag', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'tenderController.billsTag');    app.post('/tender/:id/measure/stage/:order/tag', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'tenderController.billsTag');    app.post('/tender/:id/settle/:sorder/ledger/tag', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, settleCheck, 'tenderController.billsTag');    // 总分包    app.post('/tender/:id/ledger/sumLoad', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, 'tenderController.sumLoad');    app.post('/tender/:id/measure/stage/:order/sumLoad', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'tenderController.sumLoad');    app.post('/tender/:id/revise/:rid/info/sumLoad', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, reviseCheck, 'tenderController.sumLoad');    // 多人协同    app.post('/tender/:id/measure/stage/:order/ass', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'tenderController.auditAssist');    app.post('/tender/:id/measure/stage/:order/ass-confirm', sessionAuth, tenderCheck, subProjectCheck, uncheckTenderCheck, stageCheck, 'tenderController.auditAssistConfirm');    // 扫码登录    app.get('/wxAuth', 'loginController.wxAuth');    app.get('/wxproject', 'loginController.wxProject');    app.get('/wx/url2web', 'loginController.url2web');    // 收方单附件页,免session    app.get('/wap/shoufang/upload', 'wapController.shoufangUpload');    app.post('/wap/shoufang/upfile', 'wapController.shoufangUpFile');    app.post('/wap/shoufang/delfile', 'wapController.shoufangDeleteFile');    app.post('/wap/shoufang/editfile', 'wapController.shoufangEditFile');    app.get('/wap/shoufang/download/file/:fid', 'wapController.shoufangDownloadFile');    // 企业微信回调    app.get('/wx/work/callback/command', 'wechatController.command');    app.post('/wx/work/callback/command', 'wechatController.postCommand');    app.get('/WW_verify_CZwGPbI7BRGOBUX1.txt', 'wechatController.oauthWxWorkTxt');// 可信域名配置    app.get('/wx/work/:corpid/oauth', 'wechatController.workOauth');    app.get('/wx/work/:corpid/bind', wxWorkAuth, 'wechatController.workBind');    app.post('/wx/work/bindwx', wxWorkAuth, 'wechatController.workBindwx');    app.get('/wx/work/:corpid/url2wap', wxWorkAuth, 'wechatController.url2wap4work');    app.get('/wx/work/:corpid/project', wxWorkAuth, 'wechatController.workProject');    app.get('/wx/work/:corpid/test', wxWorkAuth, 'wechatController.workTest');    app.get('/wx/tips', 'wechatController.tips');};
 |