From cd2ecc1ef566e4b13725cfa82d4392e063a0be2f Mon Sep 17 00:00:00 2001 From: yanfeiyong <2060201549@qq.com> Date: Mon, 12 May 2025 16:26:11 +0800 Subject: [PATCH] =?UTF-8?q?js=E6=96=87=E4=BB=B6=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.production | 9 +- package.json | 1 + src/api/ManageApi/index.js | 717 +++++++++++++++++++------------------ src/api/login/index.js | 10 + src/permission.js | 113 +++++- src/store/modules/user.js | 166 +++++---- vue.config.js | 2 +- 7 files changed, 569 insertions(+), 449 deletions(-) create mode 100644 src/api/login/index.js diff --git a/.env.production b/.env.production index a5a8cc0..de149ab 100644 --- a/.env.production +++ b/.env.production @@ -5,9 +5,12 @@ VUE_APP_TITLE = 苏州工业园区工业上楼管理系统 ENV = 'production' # 苏州工业园区工业上楼管理系统/生产环境 -# 个人环境 -VUE_APP_BASE_API = '' + + +# VUE_APP_BASE_API = '' + # 测试环境 # VUE_APP_BASE_API = 'http://39.101.188.84:7071' + # 正式环境 -# VUE_APP_BASE_API = 'https://gysl.sipac.gov.cn/api' +VUE_APP_BASE_API = 'https://gysl.sipac.gov.cn/api' diff --git a/package.json b/package.json index 24fa0ed..994ddd6 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "connect": "3.6.6", "eslint": "7.15.0", "eslint-plugin-vue": "7.2.0", + "html-webpack-plugin": "^5.6.3", "lint-staged": "10.5.3", "runjs": "4.4.2", "sass": "1.32.13", diff --git a/src/api/ManageApi/index.js b/src/api/ManageApi/index.js index b4f3733..7cbed19 100644 --- a/src/api/ManageApi/index.js +++ b/src/api/ManageApi/index.js @@ -1,20 +1,20 @@ // src/api/ManageApi/index.js -import request from '@/utils/request'; +import request from "@/utils/request"; // 分页查询所有数据(负面清单和正面清单) export function getBasicInformationPage(params) { return request({ - url:'/gysl/basicInformation/page', - method: 'get', - params - }) + url: "/gysl/basicInformation/page", + method: "get", + params, + }); } //产业标签 查询所有数据 export function getCybqInformationPage(params) { return request({ - url:'/gysl/Cybq/page', - method: 'get', - params - }) + url: "/gysl/Cybq/page", + method: "get", + params, + }); } //产业标签 通过主键查询单条数据 export function getSpanById(id) { @@ -28,156 +28,154 @@ export function getSpanById(id) { export function getBasicInformationById(id) { return request({ url: `/gysl/basicInformation/stagingInfo/${id}`, - method: 'get' + method: "get", }); } // 通过主键查询单条所有数据(政务端) export function getzwBasicInformationById(id) { return request({ url: `/gysl/basicInformation/${id}`, - method: 'get' + method: "get", }); } // 企业端提交填报 export function fillBasicInformation(data) { return request({ - url: '/gysl/basicInformation/fill', - method: 'post', - data: data - }) + url: "/gysl/basicInformation/fill", + method: "post", + data: data, + }); } //企业端暂存数据 export function tempBasicInformation(data) { return request({ - url: '/gysl/basicInformation/staging', - method: 'post', - data: data - }) + url: "/gysl/basicInformation/staging", + method: "post", + data: data, + }); } // 政务端审核通过 export function auditBasicInformation(data) { return request({ - url: '/gysl/basicInformation/audit', - method: 'post', - data: data - }) + url: "/gysl/basicInformation/audit", + method: "post", + data: data, + }); } // 基本信息删除数据 export function deleteBasicInformation(idList) { return request({ - url: '/gysl/basicInformation/delete', - method: 'delete', - params: { idList } - }) -} + url: "/gysl/basicInformation/delete", + method: "delete", + params: { idList }, + }); +} // 企业--基本信息==修改 export function updateBasicInformation(data) { return request({ url: `/gysl/basicInformation/edit`, - method: 'post', - data + method: "post", + data, }); } // 基本信息的导出功能 export function exportBasicInformation(idList) { return request({ - url: '/gysl/basicInformation/exportInfo', - method: 'post', - params: { idList }, + url: "/gysl/basicInformation/exportInfo", + method: "post", + params: { idList }, }); } // 项目详情 规划信息 // 修改规划信息 export function updateProgrammeInformation(data) { return request({ - url: '/gysl/planInformation/edit', - method: 'post', - data + url: "/gysl/planInformation/edit", + method: "post", + data, }); } //根据主键来查询单条数据 export function getProgrammeInformationById(quey) { return request({ - url: '/gysl/planInformation/selectAll', - method: 'get', - params: quey + url: "/gysl/planInformation/selectAll", + method: "get", + params: quey, }); } - // 项目评价清单 // 分页查询项目评价清单 export function getProjectEvaluationList(params) { return request({ - url: '/gysl/xmpjqd/page', - method: 'get', - params + url: "/gysl/xmpjqd/page", + method: "get", + params, }); } // 修改项目评价清单 export function updateProjectEvaluationList(data) { return request({ - url: '/gysl/xmpjqd/edit', - method: 'post', - data + url: "/gysl/xmpjqd/edit", + method: "post", + data, }); } // 新增项目评价清单 export function addProjectEvaluationList(data) { return request({ - url: '/gysl/xmpjqd/add', - method: 'post', - data + url: "/gysl/xmpjqd/add", + method: "post", + data, }); } // 删除项目评价清单 export function deleteProjectEvaluationList(idList) { return request({ - url: '/gysl/xmpjqd/delete', - method: 'delete', - params: { idList } + url: "/gysl/xmpjqd/delete", + method: "delete", + params: { idList }, }); } //评价清单结束 - // 项目评价配置接口 // 新增数据 export function addProjectEvaluation(data) { return request({ - url: '/gysl/pjpz/add', - method: 'post', - data + url: "/gysl/pjpz/add", + method: "post", + data, }); } // 删除数据 export function deleteProjectEvaluation(idList) { return request({ - url: '/gysl/pjpz/delete', - method: 'delete', - params: { idList } + url: "/gysl/pjpz/delete", + method: "delete", + params: { idList }, }); } // 修改数据 export function updateProjectEvaluation(data) { return request({ - url: '/gysl/pjpz/edit', - method: 'post', - data + url: "/gysl/pjpz/edit", + method: "post", + data, }); } // 分页查询所有数据 export function getProjectEvaluationPage(params) { return request({ - url: '/gysl/pjpz/page', - method: 'get', - params + url: "/gysl/pjpz/page", + method: "get", + params, }); } // 评价配置结束 @@ -186,66 +184,64 @@ export function getProjectEvaluationPage(params) { // 新增要素或者指标 export function addElement(data) { return request({ - url: '/gysl/mx/add', - method: 'post', - data + url: "/gysl/mx/add", + method: "post", + data, }); } - // 查询所有要素 export function getAllElements(params) { return request({ - url: '/gysl/mx/page', - method: 'get', - params + url: "/gysl/mx/page", + method: "get", + params, }); } // 编辑指标 export function editElemention(data) { return request({ - url: '/gysl/mx/edit', - method: 'post', - data + url: "/gysl/mx/edit", + method: "post", + data, }); } //编辑要素 -export function updateYsElement(data){ +export function updateYsElement(data) { return request({ - url:'/gysl/mx/updateYs', - method:'post', - data - }) + url: "/gysl/mx/updateYs", + method: "post", + data, + }); } - // 删除指标 export function deleteElemention(idList) { return request({ url: `/gysl/mx/delete`, - method: 'delete', - params: { idList: idList.join(',') } + method: "delete", + params: { idList: idList.join(",") }, }); } //删除要素 export function deleteYsElement(params) { return request({ - url: '/gysl/mx/deleteYs', - method: 'delete', - params - }) + url: "/gysl/mx/deleteYs", + method: "delete", + params, + }); } // 目录管理 // 新增目录 export function addCatalog(data) { return request({ - url: '/gysl/ml/add', - method: 'post', - data : data + url: "/gysl/ml/add", + method: "post", + data: data, }); } @@ -253,28 +249,28 @@ export function addCatalog(data) { export function deleteCatalog(idList) { return request({ url: `/gysl/ml/delete`, - method: 'delete', + method: "delete", params: { - idList: idList.join(',') // 将数组转换为逗号分隔的字符串 - } + idList: idList.join(","), // 将数组转换为逗号分隔的字符串 + }, }); } // 修改目录 export function editCatalog(data) { return request({ - url: '/gysl/ml/edit', - method: 'post', - data + url: "/gysl/ml/edit", + method: "post", + data, }); } // 查询所有目录 export function getAllCatalogs(query) { return request({ - url: '/gysl/ml/page', - method: 'get', - params:query + url: "/gysl/ml/page", + method: "get", + params: query, }); } @@ -282,38 +278,38 @@ export function getAllCatalogs(query) { // 新增数据 export function addXmzsk(data) { return request({ - url: '/gysl/xmzsk/add', - method: 'post', - data + url: "/gysl/xmzsk/add", + method: "post", + data, }); } // 删除数据 export function deleteXmzsk(idList) { return request({ - url: '/gysl/xmzsk/delete', - method: 'delete', + url: "/gysl/xmzsk/delete", + method: "delete", params: { - idList: idList.join(',') // 将数组转换为逗号分隔的字符串 - } + idList: idList.join(","), // 将数组转换为逗号分隔的字符串 + }, }); } // 修改数据 export function updateXmzsk(data) { return request({ - url: '/gysl/xmzsk/edit', - method: 'post', - data + url: "/gysl/xmzsk/edit", + method: "post", + data, }); } // 分页查询所有数据 export function getXmzskPage(params) { return request({ - url: '/gysl/xmzsk/page', - method: 'get', - params + url: "/gysl/xmzsk/page", + method: "get", + params, }); } @@ -321,7 +317,7 @@ export function getXmzskPage(params) { export function getXmzskById(id) { return request({ url: `/gysl/xmzsk/${id}`, - method: 'get' + method: "get", }); } @@ -329,70 +325,69 @@ export function getXmzskById(id) { //新增项目巡礼 export function addXmxl(data) { return request({ - url: '/gysl/xmxl/add', - method: 'post', - data + url: "/gysl/xmxl/add", + method: "post", + data, }); } //删除项目巡礼 export function deleteXmxl(idList) { return request({ - url: '/gysl/xmxl/delete', - method: 'delete', + url: "/gysl/xmxl/delete", + method: "delete", params: { - idList: idList.join(',') // 将数组转换为逗号分隔的字符串 - } + idList: idList.join(","), // 将数组转换为逗号分隔的字符串 + }, }); } //修改项目巡礼 -export function updataXmxl (data) { +export function updataXmxl(data) { return request({ - url: '/gysl/xmxl/edit', - method: 'post', - data + url: "/gysl/xmxl/edit", + method: "post", + data, }); } //分页查询所有项目巡礼 export function getXmxlList(params) { return request({ - url: '/gysl/xmxl/list', - method: 'get', - params + url: "/gysl/xmxl/list", + method: "get", + params, }); } - //企业入驻内容区表格 //新增数据 export function addqyrz(data) { return request({ - url: '/gysl/qyrzInformation/add', - method: 'post', - data + url: "/gysl/qyrzInformation/add", + method: "post", + data, }); } //修改数据 export function updateqyrz(data) { return request({ - url: '/gysl/qyrzInformation/edit', - method: 'post', - data + url: "/gysl/qyrzInformation/edit", + method: "post", + data, }); } //分页查询所有数据 export function getqyrzPage(params) { return request({ - url: '/gysl/qyrzInformation/page', - method: 'get', - params + url: "/gysl/qyrzInformation/page", + method: "get", + params, }); } //删除数据 export function deleteqyrz(idList) { return request({ - url: '/gysl/qyrzInformation/delete', - method: 'delete', - params: { idList } + url: "/gysl/qyrzInformation/delete", + method: "delete", + params: { idList }, }); } @@ -400,36 +395,36 @@ export function deleteqyrz(idList) { export function getqyrzById(id) { return request({ url: `/gysl/qyrzInformation/${id}`, - method: 'get' + method: "get", }); } //企业入驻信息 // 根据项目ID分页查询所有入驻企业 export function getqyBasicInformationPage(params) { return request({ - url: '/gysl/enterprise/page', - method: 'get', - params + url: "/gysl/enterprise/page", + method: "get", + params, }); } // 修改信息 export function updateqyBasicInformation(data) { return request({ - url: '/gysl/enterprise/edit', - method: 'post', - data + url: "/gysl/enterprise/edit", + method: "post", + data, }); } // 删除信息 export function deleteqyBasicInformation(idList) { return request({ - url: '/gysl/enterprise/delete', - method: 'delete', + url: "/gysl/enterprise/delete", + method: "delete", params: { - idList: idList.join(',') // 将数组转换为逗号分隔的字符串 - } + idList: idList.join(","), // 将数组转换为逗号分隔的字符串 + }, }); } @@ -437,9 +432,9 @@ export function deleteqyBasicInformation(idList) { //根据项目ID查询所有数据 export function getMonthInformationPage(params) { return request({ - url: '/gysl/projectProgress/page', - method: 'get', - params + url: "/gysl/projectProgress/page", + method: "get", + params, }); } @@ -447,269 +442,269 @@ export function getMonthInformationPage(params) { //新增数据 export function addjzxx(data) { return request({ - url: '/gysl/buildingInformation/add', - method: 'post', - data - }) + url: "/gysl/buildingInformation/add", + method: "post", + data, + }); } //删除数据 export function deletejzxx(idList) { return request({ - url: '/gysl/buildingInformation/delete', - method: 'delete', - params: { idList: idList.join(',') } // 将数组转换为逗号分隔的字符串 + url: "/gysl/buildingInformation/delete", + method: "delete", + params: { idList: idList.join(",") }, // 将数组转换为逗号分隔的字符串 }); } //修改数据 export function updatejzxx(data) { return request({ - url: '/gysl/buildingInformation/edit', - method: 'post', - data - }) + url: "/gysl/buildingInformation/edit", + method: "post", + data, + }); } //导入项目建筑信息 export function importjzxx(data) { return request({ - url: '/gysl/buildingInformation/importProjectBuilding', - method: 'post', - data - }) + url: "/gysl/buildingInformation/importProjectBuilding", + method: "post", + data, + }); } //分页查询所有数据 export function getjzxxinformationByxmId(params) { return request({ - url: '/gysl/buildingInformation/page', - method: 'get', - params - }) + url: "/gysl/buildingInformation/page", + method: "get", + params, + }); } //通过主键查询单条数据 export function getjzxxById(id) { return request({ url: `/gysl/buildingInformation/${id}`, - method: 'get' - }) + method: "get", + }); } //项目图例 //新增数据 export function addxmtl(data) { return request({ - url:'/gysl/projectLegend/add', - method:'post', - data - }) + url: "/gysl/projectLegend/add", + method: "post", + data, + }); } //删除数据 export function deletexmtl(idList) { return request({ - url:'/gysl/projectLegend/delete', - method:'delete', - params:{idList} - }) + url: "/gysl/projectLegend/delete", + method: "delete", + params: { idList }, + }); } //修改数据 export function editxmtl(data) { return request({ - url: '/gysl/projectLegend/edit', - method: 'put', - data: data - }) + url: "/gysl/projectLegend/edit", + method: "put", + data: data, + }); } //根据项目ID查询数据// 修正后的API定义 export function getxmtlPageByxmId(params) { return request({ - url: '/gysl/projectLegend/page', - method: 'get', - params // 注意这里改为params,GET请求会自动拼接到URL - }) + url: "/gysl/projectLegend/page", + method: "get", + params, // 注意这里改为params,GET请求会自动拼接到URL + }); } //通过主键查询单条数据 export function getxmtlById(id) { return request({ - url:`/gysl/projectLegend/${id}`, - method:'get', - }) + url: `/gysl/projectLegend/${id}`, + method: "get", + }); } //项目其他信息 //新增数据 export function addxmqt(data) { return request({ - url:'/gysl/projectOtherInfo/add', - method:'post', - data - }) + url: "/gysl/projectOtherInfo/add", + method: "post", + data, + }); } //删除数据 export function deletexmqt(idList) { return request({ - url:'/gysl/projectOtherInfo/delete', - method:'delete', - params: { idList: idList.join(',') } - }) + url: "/gysl/projectOtherInfo/delete", + method: "delete", + params: { idList: idList.join(",") }, + }); } //修改数据 export function updatexmqt(data) { return request({ - url:'/gysl/projectOtherInfo/edit', - method:'post', - data - }) + url: "/gysl/projectOtherInfo/edit", + method: "post", + data, + }); } //根据项目id查询信息 export function getOtherInfoByxmId(query) { return request({ - url: '/gysl/projectOtherInfo/searchId', - method: 'get', - params: query // 使用 params 传递查询参数 + url: "/gysl/projectOtherInfo/searchId", + method: "get", + params: query, // 使用 params 传递查询参数 }); } //项目备忘录 //新增数据 export function addxmmmb(data) { return request({ - url:'/gysl/projectRemark/add', - method:'post', - data - }) + url: "/gysl/projectRemark/add", + method: "post", + data, + }); } //删除数据 export function deletexmmmb(idList) { return request({ - url: '/gysl/projectRemark/delete', - method: 'delete', - params: { - idList: idList.join(',') // 将数组转换为逗号分隔的字符串 - } + url: "/gysl/projectRemark/delete", + method: "delete", + params: { + idList: idList.join(","), // 将数组转换为逗号分隔的字符串 + }, }); } //修改数据 export function updateProjectRemark(projectRemark) { return request({ - url: '/gysl/projectRemark/edit', - method: 'put', - data: projectRemark, + url: "/gysl/projectRemark/edit", + method: "put", + data: projectRemark, headers: { - 'Content-Type': 'application/json' - } + "Content-Type": "application/json", + }, }); } //查询所有数据 export function getxmmmbPage(params) { return request({ - url:'/gysl/projectRemark/page', - method:'get', - params - }) + url: "/gysl/projectRemark/page", + method: "get", + params, + }); } //通过主键查询单条数据 export function getxmmmbById(id) { return request({ - url:`/gysl/projectRemark/${id}`, - method:'get', - params:{id} - }) + url: `/gysl/projectRemark/${id}`, + method: "get", + params: { id }, + }); } //单片材料管理 //新增数据 export function addClgl(data) { return request({ - url: '/gysl/dpclgl/add', - method: 'post', - data + url: "/gysl/dpclgl/add", + method: "post", + data, }); } // 删除数据 export function deleteClgl(idList) { return request({ - url: '/gysl/dpclgl/delete', - method: 'delete', - params: { idList: idList.join(',') } // 将数组转换为逗号分隔的字符串 + url: "/gysl/dpclgl/delete", + method: "delete", + params: { idList: idList.join(",") }, // 将数组转换为逗号分隔的字符串 }); } // 修改数据 export function updateClgl(data) { return request({ - url: '/gysl/dpclgl/edit', - method: 'put', - data + url: "/gysl/dpclgl/edit", + method: "put", + data, }); } // 分页查询所有数据 export function getClglPage(params) { return request({ - url: '/gysl/dpclgl/page', - method: 'get', - params + url: "/gysl/dpclgl/page", + method: "get", + params, }); } // 富文本编辑接口 export function exportToPdf(params) { return request({ - url: '/gysl/dpclgl/unloadPdf', - method: 'get', + url: "/gysl/dpclgl/unloadPdf", + method: "get", params, - }) + }); } //通用下载请求 export function downloadPdf(fileName) { return request({ - url: '/common/download', - method: 'get', + url: "/common/download", + method: "get", params: { fileName }, - }) + }); } //政务统计 //整体项目情况 -export function allinformation(params){ - return request({ - url:'/gysl/zwStats/allProject', - method:'get', - params - }) +export function allinformation(params) { + return request({ + url: "/gysl/zwStats/allProject", + method: "get", + params, + }); } // //投资主体 export function investall(params) { return request({ - url: '/gysl/zwStats/investors', - method: 'get', - params - }) + url: "/gysl/zwStats/investors", + method: "get", + params, + }); } // 功能区 -export function fungong(params){ +export function fungong(params) { return request({ - url:'/gysl/zwStats/ribbon', - method:'get', - params - }) + url: "/gysl/zwStats/ribbon", + method: "get", + params, + }); } //详细通知 -export function getAllMessages(){ +export function getAllMessages() { return request({ - url:'/gysl/zwStats/zwNotice', - method:'get' - }) + url: "/gysl/zwStats/zwNotice", + method: "get", + }); } //项目列表 -export function xmlist(){ +export function xmlist() { return request({ - url:'/gysl/zwStats/projectList', - method:'get' - }) + url: "/gysl/zwStats/projectList", + method: "get", + }); } //政务统计结束 @@ -717,119 +712,116 @@ export function xmlist(){ //储备项目统计分析 export function getAllProjects() { return request({ - url: '/gysl/zwStats/cbxmtj', - method: 'get' - }) + url: "/gysl/zwStats/cbxmtj", + method: "get", + }); } //整体项目情况 -export function allinformationtwo(){ +export function allinformationtwo() { return request({ - url:'/gysl/qyStats/allProject', - method:'get' - }) + url: "/gysl/qyStats/allProject", + method: "get", + }); } //产业数据分析 -export function allchanye(){ +export function allchanye() { return request({ - url:'/gysl/zwStats/slfx', - method:'get' - }) + url: "/gysl/zwStats/slfx", + method: "get", + }); } //产业导向目录分析 -export function allchanyeml(){ +export function allchanyeml() { return request({ - url:'/gysl/zwStats/mlfx', - method:'get' - }) + url: "/gysl/zwStats/mlfx", + method: "get", + }); } - //产业导向细分产业分析 -export function allchanyexfcyfx(){ +export function allchanyexfcyfx() { return request({ - url:'/gysl/zwStats/xfcyfx', - method:'get' - }) + url: "/gysl/zwStats/xfcyfx", + method: "get", + }); } //企业详细通知 -export function getAllMessagestwo(){ +export function getAllMessagestwo() { return request({ - url:'/gysl/qyStats/qyNotice', - method:'get' - }) + url: "/gysl/qyStats/qyNotice", + method: "get", + }); } //通过主键查询项目画像 -export function getpicture(id){ +export function getpicture(id) { return request({ - url:`/gysl/xmpjqd/oneXmhx/${id}`, - method:'get' - }) + url: `/gysl/xmpjqd/oneXmhx/${id}`, + method: "get", + }); } //通过主键查询单条项目评价清单 -export function getpicturelist(id){ +export function getpicturelist(id) { return request({ - url:`/gysl/xmpjqd/${id}`, - method:'get' - }) + url: `/gysl/xmpjqd/${id}`, + method: "get", + }); } - // 细分产业管理 // 新增数据 export function addXfcygl(data) { return request({ - url: '/gysl/xfcygl/add', - method: 'post', - data:data + url: "/gysl/xfcygl/add", + method: "post", + data: data, }); } // 删除数据 export function deleteXfcygl(idList) { return request({ - url: '/gysl/xfcygl/delete', - method: 'delete', + url: "/gysl/xfcygl/delete", + method: "delete", params: { - idList: idList.join(',') // 将数组转换为逗号分隔的字符串 - } + idList: idList.join(","), // 将数组转换为逗号分隔的字符串 + }, }); } // 修改数据 export function updateXfcygl(data) { return request({ - url: '/gysl/xfcygl/edit', - method: 'put', - data:data + url: "/gysl/xfcygl/edit", + method: "put", + data: data, }); } // 分页查询所有数据 export function getXfcyglPage(query) { return request({ - url: '/gysl/xfcygl/page', - method: 'get', - params:query + url: "/gysl/xfcygl/page", + method: "get", + params: query, }); } - //消息通知数量(企业端) export function getMessageCount() { return request({ - url: '/gysl/qyStats/qyNoticeCount', - method: 'get' - }) + url: "/gysl/qyStats/qyNoticeCount", + method: "get", + }); } //消息通知数量(政务端) export function getMessageCounttwo() { return request({ - url: '/gysl/zwStats/zwNoticeCount', - method: 'get' - }) + url: "/gysl/zwStats/zwNoticeCount", + method: "get", + }); } //智能提醒 @@ -837,31 +829,31 @@ export function getMessageCounttwo() { export function markSmartReminderAsRead(id) { return request({ url: `/gysl/jSmartReminders/isRead/${id}`, - method: 'get' + method: "get", }); } //分页查询智能提醒规则数据 export function getSmartReminderPage(params) { return request({ - url: '/gysl/jSmartReminders', - method: 'get', - params: params + url: "/gysl/jSmartReminders", + method: "get", + params: params, }); } //新增智能提醒规则 export function addSmartReminder(params) { return request({ - url: '/gysl/jSmartReminders/add', - method: 'post', - data: params + url: "/gysl/jSmartReminders/add", + method: "post", + data: params, }); } //删除智能提醒规则 export function deleteSmartReminder(id) { return request({ url: `/gysl/jSmartReminders/delete/${id}`, - method: 'post' + method: "post", }); } @@ -869,52 +861,52 @@ export function deleteSmartReminder(id) { export function getSmartReminderDetail(id) { return request({ url: `/gysl/jSmartReminders/${id}`, - method: 'get' + method: "get", }); } //修改定期提醒数据和不定期提醒数据 export function updateSmartReminder(params) { return request({ - url: '/gysl/jSmartReminders/updateDq', - method: 'post', - data: params + url: "/gysl/jSmartReminders/updateDq", + method: "post", + data: params, }); } //定时器更新不定期提醒数据 export function updateSmartReminderUntimer(params) { return request({ - url: '/gysl/jSmartReminders/updateNoRegularReminders', - method: 'post', - data: params + url: "/gysl/jSmartReminders/updateNoRegularReminders", + method: "post", + data: params, }); } //分页查询工作手册所有数据 export function getHandbookPage(params) { return request({ - url: '/gysl/handbook/page', - method: 'get', - params + url: "/gysl/handbook/page", + method: "get", + params, }); } //新增工作手册 export function addHandbook(data) { return request({ - url: '/gysl/handbook/add', - method: 'post', - data + url: "/gysl/handbook/add", + method: "post", + data, }); } //修改工作手册 export function updateHandbook(data) { return request({ - url: '/gysl/handbook/edit', - method: 'post', - data + url: "/gysl/handbook/edit", + method: "post", + data, }); } @@ -922,10 +914,10 @@ export function updateHandbook(data) { export function deleteHandbook(idList) { return request({ url: `/gysl/handbook/delete`, - method: 'delete', - params:{ - idList: idList.join(',') - } + method: "delete", + params: { + idList: idList.join(","), + }, }); } @@ -933,7 +925,7 @@ export function deleteHandbook(idList) { export function getHandbookDetail(id) { return request({ url: `/gysl/handbook/${id}`, - method: 'get' + method: "get", }); } @@ -941,8 +933,17 @@ export function getHandbookDetail(id) { export function exportHandbook(id) { return request({ url: `/gysl/handbook/export`, - method: 'post', - responseType: 'blob', - params: { id: id.join(',') } + method: "post", + responseType: "blob", + params: { id: id.join(",") }, }); -} \ No newline at end of file +} + +//月度统计表 (折线图) +export function fetchInvestmentData(params) { + return request({ + url: "/gysl/projectProgress/ydxxtj", + method: "get", + params, + }); +} diff --git a/src/api/login/index.js b/src/api/login/index.js new file mode 100644 index 0000000..2949bda --- /dev/null +++ b/src/api/login/index.js @@ -0,0 +1,10 @@ +import request from "@/utils/request" + +// 政务端单点登录 +export function governmentGetInfo(params) { + return request({ + url: "/system/chief", + method: "get", + params + }) +} diff --git a/src/permission.js b/src/permission.js index c9d211e..63841a2 100644 --- a/src/permission.js +++ b/src/permission.js @@ -3,10 +3,13 @@ import store from './store' import { Message } from 'element-ui' import NProgress from 'nprogress' import 'nprogress/nprogress.css' -import { getToken } from '@/utils/auth' +import { getToken, setToken } from '@/utils/auth' import { isPathMatch } from '@/utils/validate' import { isRelogin } from '@/utils/request' -import { extractPrefix } from '@/utils/common'; +import { extractPrefix } from '@/utils/common' + +// 政务登录接口 +import { governmentGetInfo } from '@/api/login/index' NProgress.configure({ showSpinner: false }) @@ -17,14 +20,92 @@ const isWhiteList = (path) => { } router.beforeEach((to, from, next) => { - if(!extractPrefix(to.path)){ - store.commit("SET_CRUMBS",false); + if (!extractPrefix(to.path)) { + store.commit("SET_CRUMBS", false); } NProgress.start() - if (getToken()) { + + //政务登录 + const url = window.location.href + + // 检查是否包含政务平台返回的关键参数 + const hasUserToken = url.includes('userToken=') + const hasSignature = url.includes('signature=') + const hasTimespan = url.includes('timespan=') + + if (hasUserToken && hasSignature && hasTimespan) { + const regUserToken = /[?&]userToken=([^&#]+)/ + const regSignature = /[?&]signature=([^&#]+)/ + const regTimespan = /[?&]timespan=([^&#]+)/ + + const userTokenMatch = url.match(regUserToken) + const signatureMatch = url.match(regSignature) + const timespanMatch = url.match(regTimespan) + + const userToken = userTokenMatch ? userTokenMatch[1] : null + const signature = signatureMatch ? signatureMatch[1] : null + const timespan = timespanMatch ? timespanMatch[1] : null + + if (userToken && signature && timespan) { + // 调用政务系统登录接口 + governmentGetInfo({ + userToken, + signature, + timespan + }).then(res => { + // 假设 res.token 是返回的 token + const token = res.token + if (token) { + setToken(token) // 存储 token + localStorage.setItem('otherToken', userToken) + + // 清除 URL 中的敏感参数 + const cleanUrl = url + .replace(regUserToken, '') + .replace(regSignature, '') + .replace(regTimespan, '') + .replace(/^&/, '?') + + window.history.replaceState({}, '', cleanUrl) + + // 继续路由守卫流程 + if (store.getters.roles.length === 0) { + isRelogin.show = true + store.dispatch('GetInfo').then(() => { + isRelogin.show = false + store.dispatch('GenerateRoutes').then(accessRoutes => { + router.addRoutes(accessRoutes) + next({ ...to, replace: true }) + }) + }).catch(err => { + store.dispatch('LogOut').then(() => { + Message.error(err) + next({ path: '/' }) + }) + }) + } else { + next() + } + } + }).catch(err => { + console.error('政务系统登录失败:', err) + Message.error('政务系统登录失败,请重新登录') + }) + } else { + Message.error('缺少必要的登录参数') + next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) + } + return + } + + + + //原来的登录逻辑 + const token = getToken() + + if (token) { to.meta.title && store.dispatch('settings/setTitle', to.meta.title) - /* has token*/ if (to.path === '/login') { next({ path: '/' }) NProgress.done() @@ -33,31 +114,27 @@ router.beforeEach((to, from, next) => { } else { if (store.getters.roles.length === 0) { isRelogin.show = true - // 判断当前用户是否已拉取完user_info信息 store.dispatch('GetInfo').then(() => { isRelogin.show = false store.dispatch('GenerateRoutes').then(accessRoutes => { - // 根据roles权限生成可访问的路由表 - router.addRoutes(accessRoutes) // 动态添加可访问路由表 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 + router.addRoutes(accessRoutes) + next({ ...to, replace: true }) }) }).catch(err => { - store.dispatch('LogOut').then(() => { - Message.error(err) - next({ path: '/' }) - }) + store.dispatch('LogOut').then(() => { + Message.error(err) + next({ path: '/' }) }) + }) } else { next() } } } else { - // 没有token if (isWhiteList(to.path)) { - // 在免登录白名单,直接进入 next() } else { - next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页 + next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) NProgress.done() } } @@ -65,4 +142,4 @@ router.beforeEach((to, from, next) => { router.afterEach(() => { NProgress.done() -}) +}) \ No newline at end of file diff --git a/src/store/modules/user.js b/src/store/modules/user.js index ce6290d..c94c62d 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,109 +1,137 @@ -import { login, logout, getInfo } from '@/api/login' -import { getToken, setToken, removeToken } from '@/utils/auth' -import { isHttp, isEmpty } from "@/utils/validate" -import defAva from '@/assets/images/profile.jpg' +import { login, logout, getInfo } from "@/api/login"; +import { getToken, setToken, removeToken } from "@/utils/auth"; +import { isHttp, isEmpty } from "@/utils/validate"; +import defAva from "@/assets/images/profile.jpg"; +import { governmentGetInfo } from "@/api/login"; const user = { state: { token: getToken(), - id: '', - name: '', - avatar: '', + id: "", + name: "", + avatar: "", roles: [], - permissions: [] + permissions: [], }, mutations: { SET_TOKEN: (state, token) => { - state.token = token + state.token = token; }, SET_ID: (state, id) => { - state.id = id + state.id = id; }, SET_NAME: (state, name) => { - state.name = name + state.name = name; }, SET_AVATAR: (state, avatar) => { - state.avatar = avatar + state.avatar = avatar; }, SET_ROLES: (state, roles) => { - state.roles = roles + state.roles = roles; }, SET_PERMISSIONS: (state, permissions) => { - state.permissions = permissions - } + state.permissions = permissions; + }, }, actions: { // 登录 Login({ commit }, userInfo) { - const username = userInfo.username.trim() - const password = userInfo.password - const code = userInfo.code - const uuid = userInfo.uuid - const loginRole = userInfo.loginRole + const username = userInfo.username.trim(); + const password = userInfo.password; + const code = userInfo.code; + const uuid = userInfo.uuid; + const loginRole = userInfo.loginRole; return new Promise((resolve, reject) => { - login(username, password, code, uuid,loginRole).then(res => { - setToken(res.token) - commit('SET_TOKEN', res.token) - resolve() - }).catch(error => { - reject(error) - }) - }) + login(username, password, code, uuid, loginRole) + .then((res) => { + setToken(res.token); + commit("SET_TOKEN", res.token); + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); }, + // 政务端登录 + governmentLogin({ commit, state }, info) { + return new Promise((resolve, reject) => { + governmentGetInfo(info) + .then((res) => { + // console.log(res); + setUserToken(info.userToken); + commit("SET_USERTOKEN", res.data.token); + setToken(res.data.token); + commit("SET_TOKEN", res.data.token); + resolve(); + }) + .catch((error) => { + // console.log(error); + // reject(error) + }); + }); + }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { - getInfo().then(res => { - const user = res.user - let avatar = user.avatar || "" - if (!isHttp(avatar)) { - avatar = (isEmpty(avatar)) ? defAva : process.env.VUE_APP_BASE_API + avatar - } - if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 - commit('SET_ROLES', res.roles) - commit('SET_PERMISSIONS', res.permissions) - } else { - commit('SET_ROLES', ['ROLE_DEFAULT']) - } - commit('SET_ID', user.userId) - - commit('SET_NAME', user.nickName) - - commit('SET_AVATAR', avatar) - resolve(res) - }).catch(error => { - reject(error) - }) - }) + getInfo() + .then((res) => { + const user = res.user; + let avatar = user.avatar || ""; + if (!isHttp(avatar)) { + avatar = isEmpty(avatar) + ? defAva + : process.env.VUE_APP_BASE_API + avatar; + } + if (res.roles && res.roles.length > 0) { + // 验证返回的roles是否是一个非空数组 + commit("SET_ROLES", res.roles); + commit("SET_PERMISSIONS", res.permissions); + } else { + commit("SET_ROLES", ["ROLE_DEFAULT"]); + } + commit("SET_ID", user.userId); + + commit("SET_NAME", user.nickName); + + commit("SET_AVATAR", avatar); + resolve(res); + }) + .catch((error) => { + reject(error); + }); + }); }, // 退出系统 LogOut({ commit, state }) { return new Promise((resolve, reject) => { - logout(state.token).then(() => { - commit('SET_TOKEN', '') - commit('SET_ROLES', []) - commit('SET_PERMISSIONS', []) - removeToken() - resolve() - }).catch(error => { - reject(error) - }) - }) + logout(state.token) + .then(() => { + commit("SET_TOKEN", ""); + commit("SET_ROLES", []); + commit("SET_PERMISSIONS", []); + removeToken(); + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); }, // 前端 登出 FedLogOut({ commit }) { - return new Promise(resolve => { - commit('SET_TOKEN', '') - removeToken() - resolve() - }) - } - } -} + return new Promise((resolve) => { + commit("SET_TOKEN", ""); + removeToken(); + resolve(); + }); + }, + }, +}; -export default user +export default user; diff --git a/vue.config.js b/vue.config.js index c993f8b..27466ca 100644 --- a/vue.config.js +++ b/vue.config.js @@ -46,7 +46,7 @@ module.exports = { proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target: `http://192.168.0.105:7071/`, + // target: `http://192.168.0.109:7071/`, // target: `http://39.101.188.84:7071/`, changeOrigin: true, pathRewrite: {