From 98ec61a753ac44f4a0d8c242be7f27b3a35b3636 Mon Sep 17 00:00:00 2001 From: yanfeiyong <2060201549@qq.com> Date: Thu, 8 May 2025 14:42:39 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.production | 4 +- src/api/manageApitwo/index.js | 8 + src/layout/components/Navbar.vue | 35 +++- src/views/compilation/handbook/index.vue | 4 +- src/views/compilation/knowledge/index.vue | 8 +- .../components/ProjectDetails/Buildings.vue | 4 +- .../ProjectDetails/Companyenter.vue | 6 +- .../components/ProjectDetails/Months.vue | 161 ++++++++++++++--- .../components/ProjectDetails/Projectgift.vue | 5 +- src/views/components/analysis/all.vue | 101 +++++++++-- src/views/components/analysis/allcompany.vue | 170 ++++++++++++++++-- src/views/components/analysis/map.vue | 2 +- src/views/evalute/configtable/index.vue | 2 +- src/views/evalute/supervision/index.vue | 10 +- src/views/login.vue | 4 +- src/views/manage-add/index.vue | 2 +- src/views/orientedtwo/content/index.vue | 4 +- src/views/orientedtwo/subdivide/index.vue | 2 +- vue.config.js | 2 +- 19 files changed, 443 insertions(+), 91 deletions(-) diff --git a/.env.production b/.env.production index 7036efd..3cdcbb9 100644 --- a/.env.production +++ b/.env.production @@ -5,6 +5,6 @@ VUE_APP_TITLE = 苏州工业园区工业上楼管理系统 ENV = 'production' # 苏州工业园区工业上楼管理系统/生产环境 -# VUE_APP_BASE_API = '' -VUE_APP_BASE_API = 'http://39.101.188.84:7071' +VUE_APP_BASE_API = '' +# VUE_APP_BASE_API = 'http://39.101.188.84:7071' # VUE_APP_BASE_API = '/api' diff --git a/src/api/manageApitwo/index.js b/src/api/manageApitwo/index.js index 9a129ef..e4bf10c 100644 --- a/src/api/manageApitwo/index.js +++ b/src/api/manageApitwo/index.js @@ -37,6 +37,14 @@ export function deletespan(idList) { }); } +//月度信息新增 +export function addmonth(data) { + return request({ + url: "/gysl/projectProgress/add", + method: "post", + data, + }) +} // 月度进展信息修改 export function updateProjectProgress(data) { diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 895daa4..babdcf6 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -8,7 +8,7 @@
-
+
{{ name }} @@ -16,10 +16,31 @@
{{ name }}
- +
+ + +
+
+
@@ -78,7 +99,7 @@ export default { this.$store.dispatch('LogOut').then(() => { this.$router.replace('/login') }) - }).catch(() => {}) + }).catch(() => { }) }, handleCommand(command) { this.$message('点击了: ' + command) @@ -110,7 +131,7 @@ export default { .logoimg span { width: auto; height: 2.06rem; - font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; + font-family: AlibabaPuHuiTi; font-weight: 500; font-size: 1.5rem; color: #292C33; @@ -118,7 +139,6 @@ export default { text-align: left; font-style: normal; text-transform: none; - } .navbarleft { @@ -189,17 +209,20 @@ export default { position: relative; display: flex; align-items: center; + .user-avatar { width: 40px; height: 40px; border-radius: 10px; } - img{ + + img { width: 1rem; height: 1rem; margin-left: 1rem; cursor: pointer; } + .el-icon-caret-bottom { position: absolute; right: -20px; diff --git a/src/views/compilation/handbook/index.vue b/src/views/compilation/handbook/index.vue index 3552992..5cf5443 100644 --- a/src/views/compilation/handbook/index.vue +++ b/src/views/compilation/handbook/index.vue @@ -24,8 +24,8 @@ - 查询 - 重置 + 查询 + 重置 diff --git a/src/views/compilation/knowledge/index.vue b/src/views/compilation/knowledge/index.vue index 12aaf01..8ee590d 100644 --- a/src/views/compilation/knowledge/index.vue +++ b/src/views/compilation/knowledge/index.vue @@ -388,12 +388,12 @@ export default { this.reset(); const catalogId = row.id; this.form = { ...row }; - this.setProtocolType(this.form.wz); // 设置协议类型 + this.setProtocolType(this.form.wz); this.$nextTick(() => { this.handleTypeChange(); // 确保在 DOM 更新后调用 }); this.open = true; - this.title = "修改项目知识库"; + this.title = "编辑项目知识库"; }, /** 提交按钮 */ submitForm: function () { @@ -404,9 +404,7 @@ export default { this.$modal.msgSuccess("修改成功"); this.open = false; this.getList(); - }).catch(error => { - console.error('API Request Error:', error); - }); + }).catch(); } else { addXmzsk(this.form).then(response => { this.$modal.msgSuccess("新增成功"); diff --git a/src/views/components/ProjectDetails/Buildings.vue b/src/views/components/ProjectDetails/Buildings.vue index 7bd6566..635bba1 100644 --- a/src/views/components/ProjectDetails/Buildings.vue +++ b/src/views/components/ProjectDetails/Buildings.vue @@ -119,8 +119,8 @@
- - + + diff --git a/src/views/components/ProjectDetails/Companyenter.vue b/src/views/components/ProjectDetails/Companyenter.vue index 44844f7..516bbf4 100644 --- a/src/views/components/ProjectDetails/Companyenter.vue +++ b/src/views/components/ProjectDetails/Companyenter.vue @@ -101,7 +101,7 @@ @@ -145,9 +145,9 @@ 保存 编辑 + @click="editRow(scope.row)"> 删除 + @click="deleteRow(scope.$index)"> diff --git a/src/views/components/ProjectDetails/Months.vue b/src/views/components/ProjectDetails/Months.vue index 5dcffae..1376f45 100644 --- a/src/views/components/ProjectDetails/Months.vue +++ b/src/views/components/ProjectDetails/Months.vue @@ -7,11 +7,17 @@ 月度进展信息
- 导出 导出 + --> + + 新增 + 新增
@@ -71,14 +77,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取 消 + 确 定 + + diff --git a/src/views/components/ProjectDetails/Projectgift.vue b/src/views/components/ProjectDetails/Projectgift.vue index 6d6a32c..76d3d91 100644 --- a/src/views/components/ProjectDetails/Projectgift.vue +++ b/src/views/components/ProjectDetails/Projectgift.vue @@ -49,7 +49,7 @@ + @change="handleYearChange" style="width: 100%;" />
@@ -69,7 +69,7 @@ - + @@ -497,6 +497,7 @@ export default { display: flex; flex-wrap: wrap; gap: 0.5rem; + padding: .5rem 1rem; } .image-box { diff --git a/src/views/components/analysis/all.vue b/src/views/components/analysis/all.vue index c8d7671..2151597 100644 --- a/src/views/components/analysis/all.vue +++ b/src/views/components/analysis/all.vue @@ -42,8 +42,6 @@
{{ projectData.allBuilding2 }}
- -
@@ -51,6 +49,15 @@
{{ projectData.allBuilding3 }}
+ +
+ + +
+
+
+
+
@@ -72,6 +79,26 @@
{{ projectData.allInvest3 }}
+ + + +
+ + +
+
@@ -105,8 +132,6 @@
{{ currentYearData.currentBuilding2 }}
- -
@@ -114,6 +139,15 @@
{{ currentYearData.currentBuilding3 }}
+ +
+ + +
+
+
+
+
@@ -135,6 +169,24 @@
{{ currentYearData.currentAllInvest3 }}
+ + +
+ + +
@@ -146,16 +198,18 @@ import { allinformation } from '@/api/ManageApi'; export default { data() { return { - selectedYear: new Date().getFullYear().toString(), + showSection1: false, // 控制第一个区域是否显示 + showSection2: false, // 控制第二个区域是否显示 + selectedYear: new Date().getFullYear().toString(), projectData: { allProject: 0, // 项目总数 allGrossArea: 0, //建筑面积 allBuilding1: 0, // 已建 allBuilding2: 0, // 在建 allBuilding3: 0, // 拟建 - allInvest1:0, //投资额 - allInvest2:0, //投资额 - allInvest3:0, //投资额 + allInvest1: 0, //投资额 + allInvest2: 0, //投资额 + allInvest3: 0, //投资额 }, currentYearData: { currentYearProject: 0, //总数 @@ -163,9 +217,9 @@ export default { currentYearBuilding1: 0, // 已建 currentBuilding2: 0, // 在建 currentBuilding3: 0, - currentAllInvest1:0, //投资额 - currentAllInvest2:0, - currentAllInvest3:0 + currentAllInvest1: 0, //投资额 + currentAllInvest2: 0, + currentAllInvest3: 0 }, loading: false, error: null @@ -175,6 +229,13 @@ export default { this.fetchProjectData(); }, methods: { + toggleSection(section) { + if (section === 'section1') { + this.showSection1 = !this.showSection1; + } else if (section === 'section2') { + this.showSection2 = !this.showSection2; + } + }, /** 导出按钮操作 */ handleExport() { this.download( @@ -197,7 +258,7 @@ export default { this.loading = true; try { // 调用 API 时传入 years 参数 - const response = await allinformation({ + const response = await allinformation({ years: this.selectedYear, _t: Date.now() // 添加时间戳防止缓存 }); @@ -215,7 +276,7 @@ export default { currentYearProject: response.data.currentYearProject || 0, currentYearGrossArea: response.data.currentYearGrossArea || 0, currentYearBuilding1: response.data.currentYearBuilding1 || 0, - currentBuilding2: response.data.currentBuilding2 || 0 , + currentBuilding2: response.data.currentBuilding2 || 0, currentBuilding3: response.data.currentBuilding3 || 0, currentAllInvest1: response.data.currentAllInvest1 || 0, currentAllInvest2: response.data.currentAllInvest2 || 0, @@ -242,6 +303,7 @@ export default { display: flex; flex-direction: column; gap: 1rem; + padding: .5rem 0; } table { @@ -277,6 +339,7 @@ th { font-family: aliregular; font-weight: 400; font-size: 0.9rem; + padding-left: .3rem; color: #7B8599; line-height: 1.19rem; text-align: left; @@ -297,7 +360,17 @@ th { } .mainarea { - padding: .5rem 0rem; + padding: .5rem 0rem; + height: auto; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 1rem; +} + +.mainareatwo { + padding: .5rem 0rem; height: auto; width: 100%; display: flex; diff --git a/src/views/components/analysis/allcompany.vue b/src/views/components/analysis/allcompany.vue index 0105248..c27d7b3 100644 --- a/src/views/components/analysis/allcompany.vue +++ b/src/views/components/analysis/allcompany.vue @@ -3,8 +3,15 @@
整体项目情况
-
-
+
@@ -42,6 +49,56 @@
{{ projectData.allBuilding3 }}
+ +
+ + +
+
+
+
+ +
+ +
+
总投资额
+
{{ projectData.allInvest1 }}
+
+
+
+ +
+
计划投资额
+
{{ projectData.allInvest2 }}
+
+
+
+ +
+
占地面积
+
{{ projectData.allInvest3 }}
+
+
+ + + +
+ + +
+
@@ -82,6 +139,54 @@
{{ currentYearData.currentBuilding3 }}
+ +
+ + +
+
+ +
+ +
+ +
+
总投资额
+
{{ currentYearData.currentAllInvest1 }}
+
+
+
+ +
+
计划投资额
+
{{ currentYearData.currentAllInvest2 }}
+
+
+
+ +
+
占地面积
+
{{ currentYearData.currentAllInvest3 }}
+
+
+ + +
+ + +
@@ -93,20 +198,28 @@ import { allinformationtwo } from '@/api/ManageApi'; export default { data() { return { - selectedYear: new Date().getFullYear().toString(), + showSection1: false, // 控制第一个区域是否显示 + showSection2: false, // 控制第二个区域是否显示 + selectedYear: new Date().getFullYear().toString(), projectData: { allProject: 0, // 项目总数 allGrossArea: 0, //建筑面积 allBuilding1: 0, // 已建 allBuilding2: 0, // 在建 - allBuilding3: 0 // 拟建 + allBuilding3: 0, // 拟建 + allInvest1: 0, //投资额 + allInvest2: 0, //投资额 + allInvest3: 0, //投资额 }, currentYearData: { - currentYearProject: 0, //总数 - currentYearGrossArea: 0, //面积 + currentYearProject: 0, //总数 + currentYearGrossArea: 0, //面积 currentYearBuilding1: 0, // 已建 - currentBuilding2: 0 , // 在建 - currentBuilding3: 0 // 在建 + currentBuilding2: 0, // 在建 + currentBuilding3: 0, + currentAllInvest1: 0, //投资额 + currentAllInvest2: 0, + currentAllInvest3: 0 }, loading: false, error: null @@ -116,6 +229,13 @@ export default { this.fetchProjectData(); }, methods: { + toggleSection(section) { + if (section === 'section1') { + this.showSection1 = !this.showSection1; + } else if (section === 'section2') { + this.showSection2 = !this.showSection2; + } + }, /** 导出按钮操作 */ handleExport() { this.download( @@ -126,12 +246,11 @@ export default { `项目整体情况${this.selectedYear}.docx` ); }, - - // Handle year change handleYearChange(year) { if (year) { this.selectedYear = year; this.fetchProjectData(); + this.$emit('year-change', this.selectedYear); //传值 } }, @@ -139,16 +258,19 @@ export default { this.loading = true; try { // 调用 API 时传入 years 参数 - const response = await allinformationtwo({ + const response = await allinformationtwo({ years: this.selectedYear, - _t: Date.now() // 添加时间戳防止缓存 + // _t: Date.now() }); this.projectData = { allProject: response.data.allProject || 0, allGrossArea: response.data.allGrossArea || 0, allBuilding1: response.data.allBuilding1 || 0, allBuilding2: response.data.allBuilding2 || 0, - allBuilding3: response.data.allBuilding3 || 0 + allBuilding3: response.data.allBuilding3 || 0, + allInvest1: response.data.allInvest1 || 0, + allInvest2: response.data.allInvest2 || 0, + allInvest3: response.data.allInvest3 || 0, }; this.currentYearData = { currentYearProject: response.data.currentYearProject || 0, @@ -156,6 +278,9 @@ export default { currentYearBuilding1: response.data.currentYearBuilding1 || 0, currentBuilding2: response.data.currentBuilding2 || 0, currentBuilding3: response.data.currentBuilding3 || 0, + currentAllInvest1: response.data.currentAllInvest1 || 0, + currentAllInvest2: response.data.currentAllInvest2 || 0, + currentAllInvest3: response.data.currentAllInvest3 || 0 }; } catch (error) { console.error("获取数据失败:", error); @@ -174,11 +299,11 @@ export default { gap: .5rem; } -/* Your existing styles remain unchanged */ .container { display: flex; flex-direction: column; - gap: 2rem; + gap: 1rem; + padding: .5rem 0; } table { @@ -213,7 +338,7 @@ th { .lefttitle { font-family: aliregular; font-weight: 400; - font-size: 0.88rem; + font-size: 0.9rem; color: #7B8599; line-height: 1.19rem; text-align: left; @@ -234,7 +359,17 @@ th { } .mainarea { - padding: .5rem; + padding: .5rem 0rem; + height: auto; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 1rem; +} + +.mainareatwo { + padding: .5rem 0rem; height: auto; width: 100%; display: flex; @@ -248,7 +383,6 @@ th { height: 3rem; /* background-color: lightblue; */ display: flex; - gap: .3rem; } .itemleft { diff --git a/src/views/components/analysis/map.vue b/src/views/components/analysis/map.vue index 97a56f4..e6b29d2 100644 --- a/src/views/components/analysis/map.vue +++ b/src/views/components/analysis/map.vue @@ -39,7 +39,7 @@ -
+
diff --git a/src/views/evalute/configtable/index.vue b/src/views/evalute/configtable/index.vue index a0c53b3..678cb37 100644 --- a/src/views/evalute/configtable/index.vue +++ b/src/views/evalute/configtable/index.vue @@ -152,7 +152,7 @@ export default { const postId = row.id || this.ids; // 使用 id 字段 this.form = { ...row }; this.open = true; - this.title = '修改规则'; + this.title = '编辑规则'; }, // 取消按钮 cancel() { diff --git a/src/views/evalute/supervision/index.vue b/src/views/evalute/supervision/index.vue index b937dc9..77ac5bd 100644 --- a/src/views/evalute/supervision/index.vue +++ b/src/views/evalute/supervision/index.vue @@ -389,7 +389,7 @@ export default { this.isView = true; this.dialogVisible = true; - this.dialogTitle = "查看智能提醒规则"; + this.dialogTitle = "查看流程提醒规则"; // 清除验证 this.$nextTick(() => { this.$refs.ruleForm.clearValidate(); @@ -401,7 +401,7 @@ export default { handleAdd() { this.isView = false; this.dialogVisible = true; - this.dialogTitle = "新增智能提醒规则"; + this.dialogTitle = "新增流程提醒规则"; this.isReminder = 1; // 明确设置默认值 // 完整重置表单数据 @@ -428,7 +428,7 @@ export default { }, handleEdit(row) { this.dialogVisible = true; - this.dialogTitle = "修改智能提醒规则"; + this.dialogTitle = "编辑流程提醒规则"; this.isView = false; this.ruleForm = { @@ -503,7 +503,7 @@ export default { this.$refs[formName].validate((valid) => { if (valid) { let param = {}; - if (this.dialogTitle == "新增智能提醒规则") { + if (this.dialogTitle == "新增流程提醒规则") { param = { rulesName: this.ruleForm.rulesName, alertRecipients: Number(this.ruleForm.alertRecipients), @@ -520,7 +520,7 @@ export default { this.initData(); } }); - } else if (this.dialogTitle == "修改智能提醒规则") { + } else if (this.dialogTitle == "修改流程提醒规则") { param = { ...this.editData, }; diff --git a/src/views/login.vue b/src/views/login.vue index 321f933..e7f361d 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -46,7 +46,9 @@ style="width:100%;background: #2B62F1;" @click.native.prevent="handleEnterpriseLogin"> 企业统一身份认证登录 + +
主办单位:苏州工业园区经济发展委员会
- +
diff --git a/src/views/orientedtwo/content/index.vue b/src/views/orientedtwo/content/index.vue index ad40294..ddc47de 100644 --- a/src/views/orientedtwo/content/index.vue +++ b/src/views/orientedtwo/content/index.vue @@ -286,7 +286,7 @@ export default { handleAdd() { this.reset(); this.open = true; - this.title = "新增项目知识库"; + this.title = "新增目录"; }, /** 修改按钮操作 */ handleUpdate(row) { @@ -294,7 +294,7 @@ export default { const catalogId = row.id; this.form = { ...row }; this.open = true; - this.title = "修改项目知识库"; + this.title = "编辑目录"; }, /** 提交按钮 */ submitForm: function () { diff --git a/src/views/orientedtwo/subdivide/index.vue b/src/views/orientedtwo/subdivide/index.vue index ebf479c..e4da2dd 100644 --- a/src/views/orientedtwo/subdivide/index.vue +++ b/src/views/orientedtwo/subdivide/index.vue @@ -318,7 +318,7 @@ export default { const catalogId = row.id; this.form = { ...row }; this.open = true; - this.title = "修改细分产业"; + this.title = "编辑细分产业"; }, /** 提交按钮 */ submitForm: function () { diff --git a/vue.config.js b/vue.config.js index c354206..c993f8b 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.111:7071/`, + target: `http://192.168.0.105:7071/`, // target: `http://39.101.188.84:7071/`, changeOrigin: true, pathRewrite: { From 1daf3eace45de5b9c9c417569b309d1b632aec2d Mon Sep 17 00:00:00 2001 From: yanfeiyong <2060201549@qq.com> Date: Thu, 8 May 2025 15:21:01 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ManageApi/index.js | 8 ++ src/views/components/ProjectDetails/Basic.vue | 36 +++++- src/views/components/analysis/chubeixm.vue | 93 +++++++++++++ src/views/components/analysis/ndwcqk.vue | 122 ++++++++++++++++++ 4 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 src/views/components/analysis/chubeixm.vue create mode 100644 src/views/components/analysis/ndwcqk.vue diff --git a/src/api/ManageApi/index.js b/src/api/ManageApi/index.js index 590af52..b4f3733 100644 --- a/src/api/ManageApi/index.js +++ b/src/api/ManageApi/index.js @@ -714,6 +714,14 @@ export function xmlist(){ //政务统计结束 //企业统计 +//储备项目统计分析 +export function getAllProjects() { + return request({ + url: '/gysl/zwStats/cbxmtj', + method: 'get' + }) +} + //整体项目情况 export function allinformationtwo(){ return request({ diff --git a/src/views/components/ProjectDetails/Basic.vue b/src/views/components/ProjectDetails/Basic.vue index 5522468..39874a1 100644 --- a/src/views/components/ProjectDetails/Basic.vue +++ b/src/views/components/ProjectDetails/Basic.vue @@ -30,7 +30,7 @@
+ :span="item.label === '项目法人单位简介' || item.label === '所属细分产业' ? 3 : 1"> @@ -186,6 +186,24 @@ + + + + + + + + + + + + + + + + @@ -231,7 +249,7 @@ export default { ImageUpload, luotu }, dicts: [ - 'ssgnq', 'xmfrdwxz', 'xzfl', 'jsms' + 'ssgnq', 'xmfrdwxz', 'xzfl', 'jsms','shangloumulu',"bqlxbqlx",'bqlx' ], props: { size: { @@ -359,6 +377,18 @@ export default { 1: '已建', 2: '在建', 3: '拟建', + }, + mlMap:{ + 1:'重点鼓励上楼', + 2:'有条件上楼', + }, + xfMap:{ + 1:'新一代信息技术', + 2:'高端装备制造', + 3:'生物医药及大健康', + 4:'纳米技术应用及新材料', + 5:'人工智能及数字产业', + 6:'新能源及绿色产业', } }; }, @@ -418,6 +448,8 @@ export default { { label: '建设进度', value: data.jsjd }, { label: '统一社会信用代码', value: data.tyshxydm }, { label: '计划投资额', value: data.jhtze }, + { label: '所属产业目录', value: this.mlMap[data.ml] || '' }, + { label: '所属细分产业', value: this.xfMap[data.xfcy] || '' }, { label: '项目法人单位简介', value: data.unitIntroduction }, { label: '项目简介', value: data.introduction } ]; diff --git a/src/views/components/analysis/chubeixm.vue b/src/views/components/analysis/chubeixm.vue new file mode 100644 index 0000000..d4ca29c --- /dev/null +++ b/src/views/components/analysis/chubeixm.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/analysis/ndwcqk.vue b/src/views/components/analysis/ndwcqk.vue new file mode 100644 index 0000000..f5cc3cd --- /dev/null +++ b/src/views/components/analysis/ndwcqk.vue @@ -0,0 +1,122 @@ + + + + + \ No newline at end of file From f0d18fcc625b5b156634d67f8335b8a5d3857149 Mon Sep 17 00:00:00 2001 From: yanfeiyong <2060201549@qq.com> Date: Fri, 9 May 2025 09:46:26 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 ++-- src/views/login.vue | 77 +++++++++++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 37a4c6f..24fa0ed 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "autofit.js": "^3.2.2", "axios": "0.28.1", "clipboard": "2.0.8", - "core-js": "3.37.1", + "core-js": "^3.42.0", "docx-preview": "^0.3.5", "echarts": "^5.4.0", "element-ui": "^2.15.13", @@ -57,10 +57,12 @@ "mars2d": "^3.3.1", "mars2d-esri": "^3.3.1", "moment": "^2.30.1", + "node-forge": "^1.3.1", "nprogress": "0.2.0", "quill": "2.0.2", + "regenerator-runtime": "^0.14.1", "screenfull": "5.0.2", - "sortablejs": "1.10.2", + "sortablejs": "^1.10.2", "splitpanes": "2.4.1", "vue": "2.6.12", "vue-count-to": "1.0.13", diff --git a/src/views/login.vue b/src/views/login.vue index e7f361d..cb19f5b 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -46,7 +46,7 @@ style="width:100%;background: #2B62F1;" @click.native.prevent="handleEnterpriseLogin"> 企业统一身份认证登录 - +
主办单位:苏州工业园区经济发展委员会
@@ -61,6 +61,7 @@ import { getCodeImg } from '@/api/login' import Cookies from 'js-cookie' import { encrypt, decrypt } from '@/utils/jsencrypt' +import forge from 'node-forge' export default { name: 'Login', @@ -86,31 +87,33 @@ export default { code: [{ required: true, trigger: 'change', message: '请输入验证码' }] }, loading: false, - // 验证码开关 captchaEnabled: true, - // 注册开关 register: false, - redirect: undefined + redirect: undefined, + a1: `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl8bS1kYTiMhIS5MZU253bc0ukaxrA1lfCziABFxQrC2c09tMrQGjuH6V1x2ofNBMGhOD9uWN/qkAQy/HwOe/NKUqCw6N0ov6guSrqMDW/BdZ3Bl0rmM1/95jTC1xffFFvej7xWNffIbaPI+bJ4WLX9NViNi9HmT0BRNzJ4d2R86LPPCa+bxLaPjsh2R2tBkbLkUot9769aJaPPiwPCZHMkuQenjHSmpWL0okleqMH8EGX7j6A5A/4IUXPMNKMMzkiSRpsIJ65GJmDAbnR3ZXRfC8MzVBBJB6zr5N0F4N9xZfF+JS/Yx726tCu+rA6GDCyTxtQ/wnKpPdwFP5nUWCWQIDAQAB` } }, watch: { - $route(route) { - this.redirect = route.query && route.query.redirect + $route: { + handler: function (route) { + this.redirect = route.query && route.query.redirect; + }, + immediate: true }, activeName(newVal) { if (newVal === 'first') { - this.loginForm.loginRole = 2; + this.loginForm.loginRole = 2 } else if (newVal === 'second') { - this.loginForm.loginRole = 1; + this.loginForm.loginRole = 1 } } }, computed: { showGovernmentLoginButton() { - return this.activeName === 'second'; + return this.activeName === 'second' }, showEnterpriseLoginButton() { - return this.activeName === 'first'; + return this.activeName === 'first' } }, created() { @@ -119,15 +122,13 @@ export default { }, methods: { getCode() { - getCodeImg().then((res) => { - this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled + getCodeImg().then(res => { + this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled; if (this.captchaEnabled) { - this.codeUrl = `data:image/gif;base64,${res.img}` - this.loginForm.uuid = res.uuid + this.codeUrl = "data:image/gif;base64," + res.img; + this.loginForm.uuid = res.uuid; } - }).catch((error) => { - console.error('获取验证码失败:', error) - }) + }); }, getCookie() { const username = Cookies.get('username') @@ -140,25 +141,47 @@ export default { } }, handleLogin() { - this.$refs.loginForm.validate((valid) => { + this.$refs.loginForm.validate(valid => { + if (valid) { this.loading = true; if (this.loginForm.rememberMe) { - Cookies.set('username', this.loginForm.username, { expires: 30 }); - Cookies.set('password', encrypt(this.loginForm.password), { expires: 30 }); + Cookies.set("username", this.loginForm.username, { expires: 30 }); + Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 }); Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 }); } else { - Cookies.remove('username'); - Cookies.remove('password'); + Cookies.remove("username"); + Cookies.remove("password"); Cookies.remove('rememberMe'); } + // 生成一个 2048 位的 RSA 密钥对 + const lines = []; + lines.push('-----BEGIN PUBLIC KEY-----'); + for (let i = 0; i < this.a1.length; i += 64) { + lines.push(this.a1.slice(i, i + 64)); + } + lines.push('-----END PUBLIC KEY-----'); + lines.join('\n') + const publicKey = forge.pki.publicKeyFromPem(lines.join('\n')); + // 将待加密的字符串转换为字节数组 + var dataBytes = forge.util.encodeUtf8(this.loginForm.password); + // 加密数据 + var encryptedBytes = publicKey.encrypt(dataBytes, 'RSA-OAEP', { + md: forge.md.sha256.create(), + mgf1: { + md: forge.md.sha1.create() + } + }); + // 将加密后的字节数组转换为 Base64 编码的字符串 + var encryptedBase64 = forge.util.encode64(encryptedBytes); + //这里重新构建一个对象 const loginData = { username: this.loginForm.username, - password: this.loginForm.password, + password: encryptedBase64, code: this.loginForm.code, uuid: this.loginForm.uuid, - loginRole: this.activeName === 'first' ? 2 : 1 + loginRole: this.activeName === 'first' ? 2 : 1 }; this.$store.dispatch('Login', loginData) @@ -172,15 +195,15 @@ export default { } console.error('登录失败:', error); }); + } }); }, handleGovernmentLogin() { - // 跳转到政务统一身份认证登录页面 - window.location.href = 'https://qyt.sipac.gov.cn/'; + window.location.href = 'https://qyt.sipac.gov.cn/' }, handleEnterpriseLogin() { - // 跳转到企业统一身份认证登录页面 + // 示例跳转 // window.location.href = 'https://example.com/enterprise-login'; } } From 01fb0a72b4680ffebb8d095ee7585c3dd2236a62 Mon Sep 17 00:00:00 2001 From: yanfeiyong <2060201549@qq.com> Date: Fri, 9 May 2025 10:57:24 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E4=B8=89=E5=BC=A0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.production | 5 +- .../components/ProjectDetails/Months.vue | 5 +- src/views/components/analysis/chanyexfgl.vue | 2 +- src/views/components/analysis/ndwcqk.vue | 2 +- src/views/login_v1.vue | 335 ++++++++++++++++++ src/views/statistics/1.vue | 259 ++++++++++++++ src/views/statistics/2.vue | 295 +++++++++++++++ src/views/statistics/index.vue | 44 ++- 8 files changed, 937 insertions(+), 10 deletions(-) create mode 100644 src/views/login_v1.vue create mode 100644 src/views/statistics/1.vue create mode 100644 src/views/statistics/2.vue diff --git a/.env.production b/.env.production index 3cdcbb9..a5a8cc0 100644 --- a/.env.production +++ b/.env.production @@ -5,6 +5,9 @@ VUE_APP_TITLE = 苏州工业园区工业上楼管理系统 ENV = 'production' # 苏州工业园区工业上楼管理系统/生产环境 +# 个人环境 VUE_APP_BASE_API = '' +# 测试环境 # VUE_APP_BASE_API = 'http://39.101.188.84:7071' -# VUE_APP_BASE_API = '/api' +# 正式环境 +# VUE_APP_BASE_API = 'https://gysl.sipac.gov.cn/api' diff --git a/src/views/components/ProjectDetails/Months.vue b/src/views/components/ProjectDetails/Months.vue index 1376f45..4d32890 100644 --- a/src/views/components/ProjectDetails/Months.vue +++ b/src/views/components/ProjectDetails/Months.vue @@ -191,8 +191,7 @@ export default { if (valid) { const payload = { ...this.form, - xmId: this.xmId, // 来自 props 的项目ID - projectId: this.xmId, // 如果后端需要projectId也传相同值 + xmId: this.xmId, status: this.form.status }; @@ -201,7 +200,7 @@ export default { if (response.code === 200) { this.$message.success('新增成功'); this.dialogVisible = false; - this.getMonthInformationPage(); // 刷新列表 + this.getMonthInformationPage(); } else { this.$message.error(response.msg || '新增失败'); } diff --git a/src/views/components/analysis/chanyexfgl.vue b/src/views/components/analysis/chanyexfgl.vue index 1c61008..566e8ab 100644 --- a/src/views/components/analysis/chanyexfgl.vue +++ b/src/views/components/analysis/chanyexfgl.vue @@ -67,7 +67,7 @@ export default { \ No newline at end of file diff --git a/src/views/statistics/1.vue b/src/views/statistics/1.vue new file mode 100644 index 0000000..5393ec0 --- /dev/null +++ b/src/views/statistics/1.vue @@ -0,0 +1,259 @@ + + + + + + \ No newline at end of file diff --git a/src/views/statistics/2.vue b/src/views/statistics/2.vue new file mode 100644 index 0000000..8280fba --- /dev/null +++ b/src/views/statistics/2.vue @@ -0,0 +1,295 @@ + + + + + + \ No newline at end of file diff --git a/src/views/statistics/index.vue b/src/views/statistics/index.vue index 3bfe497..cd5a6e1 100644 --- a/src/views/statistics/index.vue +++ b/src/views/statistics/index.vue @@ -57,12 +57,36 @@
+
+
+ + 年度任务完成情况 +
+
+ + +
+
+
+ + +
+
+
+ 储备项目统计分析 +
+
+ +
+
产业导向细分产业分析 +
+
@@ -79,6 +103,8 @@ import MapArea from '@/views/components/analysis/map.vue' import Cyeshuju from '@/views/components/analysis/chanyeshuju.vue' import Cydxml from '@/views/components/analysis/chanyedxml.vue' import Cydxxfgl from '@/views/components/analysis/chanyexfgl.vue' +import Cbxm from '@/views/components/analysis/chubeixm.vue' +import Ndwcqk from '@/views/components/analysis/ndwcqk.vue' import { investall, fungong } from '@/api/ManageApi/index' export default { @@ -91,7 +117,9 @@ export default { MapArea, Cyeshuju, Cydxml, - Cydxxfgl + Cydxxfgl, + Cbxm, + Ndwcqk }, data() { return { @@ -107,7 +135,7 @@ export default { methods: { handleYearChange(years) { this.years = years; - console.log("index.vue: handleYearChange called with years:", years); + console.log("index.vue: handleYearChange called with years:", years); }, async getData() { const response = await investall(); @@ -188,6 +216,16 @@ export default { height: 1.25rem; display: flex; align-items: center; + justify-content: space-between; + + .top { + width: auto; + display: flex; + margin-bottom: 10px; + font-size: 0.88rem; + color: gray!important; + justify-content: flex-end; + } } .relaitem { @@ -254,6 +292,4 @@ export default { .bgcicon { padding: 0 !important; } - - \ No newline at end of file