diff --git a/src/views/components/ProjectDetails/Companyenter.vue b/src/views/components/ProjectDetails/Companyenter.vue index 1fb3826..ad207c3 100644 --- a/src/views/components/ProjectDetails/Companyenter.vue +++ b/src/views/components/ProjectDetails/Companyenter.vue @@ -74,7 +74,7 @@ @@ -152,8 +152,8 @@
-
@@ -223,7 +223,7 @@ export default { tableData: [], pagination: { currentPage: 1, - pageSize: 10, + pageSize: 5, total: 0 }, upload: { @@ -320,18 +320,22 @@ export default { }, deleteRow(index) { const id = this.tableData[index].id; - deleteqyBasicInformation([id]).then(response => { - this.$modal.msgSuccess('删除成功'); - this.tableData.splice(index, 1); - this.fetchTableData().then(() => { - this.form.rzqys = this.tableData.length; - this.save(); + const projectName = this.tableData[index].name; + this.$modal.confirm(`是否确认删除"${projectName}"?`).then(() => { + deleteqyBasicInformation([id]).then(response => { + this.tableData.splice(index, 1); + this.fetchTableData().then(() => { + this.form.rzqys = this.tableData.length; + this.save(); + }); + this.$modal.msgSuccess("删除成功"); + }).catch(error => { + this.$modal.msgError('删除失败'); }); - }).catch(error => { - this.$modal.msgError('删除失败'); + }).catch(() => { + this.$modal.msgWarning("已取消删除"); }); }, - // 导入相关方法 handleImport() { this.upload.open = true; diff --git a/src/views/components/ProjectDetails/Months.vue b/src/views/components/ProjectDetails/Months.vue index 4d32890..292d0cc 100644 --- a/src/views/components/ProjectDetails/Months.vue +++ b/src/views/components/ProjectDetails/Months.vue @@ -7,79 +7,110 @@ 月度进展信息
- 新增 新增 + + 导出 + 导出 +
-
- - - - - - - - - - - - - - - - - - - - - - -
-
- - + @click="handleDelete(item)">删除 +
+
- - + + @@ -106,7 +137,7 @@ - + @@ -123,99 +154,139 @@ 确 定 + + @@ -347,13 +418,7 @@ export default { width: 100%; background-color: #FFFFFF; box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1); - border-radius: 0.5rem 0.5rem 0.5rem 0.5rem; -} - - -.content { - padding: 1rem; - display: flex; + border-radius: 0.5rem; } .containertop { @@ -378,44 +443,64 @@ export default { } .topleft span { - width: auto; - height: 1rem; font-family: aliregular; font-weight: 500; font-size: 1rem; color: #3D424C; line-height: 1rem; - text-align: right; - font-style: normal; - text-transform: none; } -.picturediv { - width: 18.31rem; - height: 25.31rem; - background-color: lightblue; +.content { + padding: 1rem 1rem 1rem 2rem; } -.descriptionsdiv { +/* 自定义表格样式 */ +.custom-table-container { width: 100%; - margin-left: 1rem; - height: auto; + border: 1px solid #EBEEF5; + overflow: hidden; } -.two-row-item { - height: 20rem; +.custom-table-header { + display: flex; + background-color: #f5f7fa; + /* font-weight: bold; */ + font-size: 0.88rem; + padding: 0.5rem 0; } -.block { - width: 100%; +.custom-table-body { + max-height: 14rem; + overflow-y: auto; + font-size: 0.88rem; + padding-right: 0.5rem; +} + +.custom-table-row { display: flex; - justify-content: space-between; - margin-top: 1rem; + align-items: center; + padding: 0.5rem 0; + border-bottom: 1px solid #EBEEF5; } -.no-data { +.table-cell { + flex: 1; text-align: center; - padding: 2rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 0 0.5rem; +} + +.no-data-row { + text-align: center; + padding: 1rem 0; color: #999; + font-size: 0.875rem; +} +.yuedu{ + width: 100%; + height: 100%; + padding: 0rem 1rem 1rem 2rem; } \ No newline at end of file diff --git a/src/views/components/analysis/ndwcqk.vue b/src/views/components/analysis/ndwcqk.vue index 454f009..ca4b95d 100644 --- a/src/views/components/analysis/ndwcqk.vue +++ b/src/views/components/analysis/ndwcqk.vue @@ -3,25 +3,49 @@
时间截止至2025年2月
+ +
+
+
+ 已完成 +
+
+
+ 未完成 +
+
+
+ 本年目标 +
+
-
+
{{ item.year }}年 - 已完成 {{ item.completed }} / 目标 {{ item.target }} / 未完成 {{ item.remaining }} +
-
- +
+ {{ item.completed }} +
-
+
+ {{ item.remaining }} +
- +
+ }"> +
+ +
+
+ {{ item.target }}
@@ -33,14 +57,15 @@ export default { data() { const currentYear = new Date().getFullYear(); return { - // 示例数据:你可以替换成接口获取的真实数据 progressData: [ - { year: currentYear, completed: 950, target: 900, remaining: 50 }, - { year: currentYear - 1, completed: 800, target: 800, remaining: 0 }, - { year: currentYear - 2, completed: 750, target: 700, remaining: 0 }, - { year: currentYear - 3, completed: 500, target: 600, remaining: 100 }, + { year: currentYear, completed: 0, target: 0, remaining: 0 }, + { year: currentYear - 1, completed: 25, target: 65, remaining: 31 }, + { year: currentYear - 2, completed: 25, target: 55, remaining: 30 }, + { year: currentYear - 3, completed: 25, target: 39, remaining: 14 }, + { year: currentYear - 4, completed: 25, target: 31, remaining: 6 }, + { year: currentYear - 5, completed: 21, target: 22, remaining: 1 }, ], - bufferZone: 50 + bufferZone: 3 }; }, methods: { @@ -51,19 +76,28 @@ export default { // 计算已完成百分比(不超过目标+缓冲) completedWidth(item) { const max = item.target + this.bufferZone; + + if (max === 0) return '0%'; // 如果目标也是 0,就不显示进度 + const value = Math.min(item.completed, max); - return `${(value / max) * 100}%`; + const percentage = (value / max) * 100; + + // 如果 completed 是 0,但 target > 0,则显示最小宽度 1% + return `${item.completed > 0 ? percentage : 15}%`; }, // 缓冲区固定比例 bufferWidth(item) { const max = item.target + this.bufferZone; - return `${(this.bufferZone / max) * 100}%`; + const percentage = (this.bufferZone / max) * 100; + return `${percentage > 0 ? percentage : 1}%`; }, // 剩余部分 remainingWidth(item) { const max = item.target + this.bufferZone; const remaining = Math.max(0, max - item.completed); - return `${(remaining / max) * 100}%`; + const percentage = (remaining / max) * 100; + + return `${percentage > 0 ? percentage : 1}%`; } } }; @@ -75,7 +109,8 @@ export default { height: 100%; overflow: auto; } -.top{ + +.top { width: 100%; display: flex; margin-bottom: 10px; @@ -83,8 +118,12 @@ export default { color: gray; justify-content: flex-end; } + .year-progress { margin-bottom: 1.5rem; + width: 100%; + display: flex; + gap: 10px; } .header { @@ -95,6 +134,7 @@ export default { } .progress-bar { + width: 82%; height: 1rem; border-radius: 0.5rem; background-color: #e0e0e0; @@ -119,4 +159,66 @@ export default { /* 淡蓝色 - 未完成 */ height: 100%; } + +.legend { + width: 100%; + padding-left: 50%; + display: flex; + justify-content: space-between; + margin-bottom: 0.5rem; +} + +.legend-item { + display: flex; + align-items: center; + font-size: 0.75rem; + color: #666; +} + +.legend-color { + width: 12px; + height: 12px; + border-radius: 50%; + margin-right: 1rem; +} + +.completed-color { + background-color: #409EFF; + /* 已完成颜色 */ +} + +.buffer-color { + background-color: #f0f0f0; + /* 年度目标颜色 */ +} + +.remaining-color { + background-color: #87CEFA; + /* 未完成颜色 */ +} + +.progress-bar { + position: relative; + height: 1rem; + display: flex; + align-items: center; + /* 垂直居中 */ +} + +.progress-bar div { + position: relative; + text-align: center; + color: white; + /* 文字颜色 */ + font-size: 0.75rem; + overflow: hidden; +} + +.progress-text { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + white-space: nowrap; +} \ No newline at end of file diff --git a/src/views/components/analysis/yuedutouzi.vue b/src/views/components/analysis/yuedutouzi.vue new file mode 100644 index 0000000..bd76001 --- /dev/null +++ b/src/views/components/analysis/yuedutouzi.vue @@ -0,0 +1,208 @@ + + + + + \ No newline at end of file diff --git a/src/views/login.vue b/src/views/login.vue index cb19f5b..a43ba6e 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -11,7 +11,7 @@ - + + + - 登 录 登 录 中... - + --> 政务统一身份认证登录 @@ -200,11 +200,10 @@ export default { }); }, handleGovernmentLogin() { - window.location.href = 'https://qyt.sipac.gov.cn/' + window.location.href = 'https://qyt.sipac.gov.cn/sipsg-enterprise-mobile-manage/#/login' }, handleEnterpriseLogin() { - // 示例跳转 - // window.location.href = 'https://example.com/enterprise-login'; + window.location.href = 'https://gysl.sipac.gov.cn'; } } } diff --git a/src/views/statistics/1.vue b/src/views/statistics/1.vue index 5393ec0..db8d707 100644 --- a/src/views/statistics/1.vue +++ b/src/views/statistics/1.vue @@ -1,259 +1,258 @@ - - - - - \ No newline at end of file +}; + + + + \ No newline at end of file diff --git a/src/views/statistics/2.vue b/src/views/statistics/2.vue index 8280fba..c8b8756 100644 --- a/src/views/statistics/2.vue +++ b/src/views/statistics/2.vue @@ -1,295 +1,296 @@ - - - - - \ No newline at end of file +} + +.relaitem { + flex: 1; + position: relative; +} + +.itemsall { + position: absolute; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + top: 33%; + left: 23%; + z-index: 1; +} + +.itemsall span:nth-child(1) { + font-family: DINbold; + font-weight: 500; + font-size: 1.25rem; + color: #292C33; + text-align: left; + font-style: normal; + text-transform: none; +} + +.itemsall span:nth-child(2) { + font-family: alibold; + font-weight: 400; + font-size: 0.68rem; + color: #9E9E9E; + text-align: left; + font-style: normal; + text-transform: none; +} + +.itemhead span { + margin-left: 1rem; + font-family: alibold; + font-weight: 600; + font-size: 1rem; + color: #3D424C; + line-height: 1.69rem; + text-align: left; + font-style: normal; + text-transform: none; +} + +.mainarea { + flex: 1; + padding: 0 0 0 .5rem; + overflow: auto; +} + +.allarea { + flex: 1; + padding: 0rem 1rem 0 1rem; + display: flex; + flex-direction: column; +} + +.bgcicon { + padding: 0 !important; +} + \ No newline at end of file diff --git a/src/views/statistics/index.vue b/src/views/statistics/index.vue index cd5a6e1..db8d707 100644 --- a/src/views/statistics/index.vue +++ b/src/views/statistics/index.vue @@ -1,4 +1,5 @@