13404089107
2025-03-24 fa61713f7efa9d48a662141591afc9a2441ed597
大屏下方统计图页面
2个文件已修改
2个文件已添加
302 ■■■■ 已修改文件
package-lock.json 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/bg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/unbg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components/datascreen/CenterPanel.vue 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -1878,6 +1878,49 @@
        "webpack-merge": "^5.7.3",
        "webpack-virtual-modules": "^0.4.2",
        "whatwg-fetch": "^3.6.2"
      },
      "dependencies": {
        "@vue/vue-loader-v15": {
          "version": "npm:vue-loader@15.11.1",
          "resolved": "https://mirrors.cloud.tencent.com/npm/vue-loader/-/vue-loader-15.11.1.tgz",
          "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==",
          "dev": true,
          "requires": {
            "@vue/component-compiler-utils": "^3.1.0",
            "hash-sum": "^1.0.2",
            "loader-utils": "^1.1.0",
            "vue-hot-reload-api": "^2.3.0",
            "vue-style-loader": "^4.1.0"
          },
          "dependencies": {
            "hash-sum": {
              "version": "1.0.2",
              "resolved": "https://mirrors.cloud.tencent.com/npm/hash-sum/-/hash-sum-1.0.2.tgz",
              "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
              "dev": true
            }
          }
        },
        "json5": {
          "version": "1.0.2",
          "resolved": "https://mirrors.cloud.tencent.com/npm/json5/-/json5-1.0.2.tgz",
          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
          "dev": true,
          "requires": {
            "minimist": "^1.2.0"
          }
        },
        "loader-utils": {
          "version": "1.4.2",
          "resolved": "https://mirrors.cloud.tencent.com/npm/loader-utils/-/loader-utils-1.4.2.tgz",
          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
          "dev": true,
          "requires": {
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^1.0.1"
          }
        }
      }
    },
    "@vue/cli-shared-utils": {
@@ -2035,47 +2078,6 @@
      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz",
      "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
      "dev": true
    },
    "@vue/vue-loader-v15": {
      "version": "npm:vue-loader@15.11.1",
      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz",
      "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==",
      "dev": true,
      "requires": {
        "@vue/component-compiler-utils": "^3.1.0",
        "hash-sum": "^1.0.2",
        "loader-utils": "^1.1.0",
        "vue-hot-reload-api": "^2.3.0",
        "vue-style-loader": "^4.1.0"
      },
      "dependencies": {
        "hash-sum": {
          "version": "1.0.2",
          "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
          "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
          "dev": true
        },
        "json5": {
          "version": "1.0.2",
          "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
          "dev": true,
          "requires": {
            "minimist": "^1.2.0"
          }
        },
        "loader-utils": {
          "version": "1.4.2",
          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
          "dev": true,
          "requires": {
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^1.0.1"
          }
        }
      }
    },
    "@vue/web-component-wrapper": {
      "version": "1.3.0",
src/assets/bg.png
src/assets/unbg.png
src/components/datascreen/CenterPanel.vue
@@ -15,14 +15,16 @@
          <img src="@/assets/center-top-right.png" alt="">
          <div>
            <div class="label">本月应补偿总额(万元)</div>
            <div class="value">{{ data.monthCompensationAmount }} <span>环比</span><span class="value-change value-change-down">{{ data.monthCompensationAmountRate }}</span></div>
            <div class="value">{{ data.monthCompensationAmount }} <span>环比</span><span
                class="value-change value-change-down">{{ data.monthCompensationAmountRate }}</span></div>
          </div>
        </div>
        <div class="data-item">
          <img src="@/assets/center-top-right.png" alt="">
          <div>
            <div class="label">下月应补偿总额(万元)</div>
            <div class="value">{{ data.nextMonthCompensationAmount }} <span>环比</span><span class="value-change value-change-up">{{ data.nextMonthCompensationAmountRate }}</span></div>
            <div class="value">{{ data.nextMonthCompensationAmount }} <span>环比</span><span
                class="value-change value-change-up">{{ data.nextMonthCompensationAmountRate }}</span></div>
          </div>
        </div>
      </div>
@@ -35,7 +37,29 @@
    <!-- 中间下部数据 -->
    <div class="center-bottom panel-item">
      <div class="compensation-table">
        <div class="table-header">
          <div class="batch-number txt-center">安置批次</div>
          <div class="household-count txt-center">安置户数</div>
          <div class="people-count txt-center">安置人数</div>
          <div class="progress-wrapper txt-center">补偿阶段</div>
        </div>
        <div class="table-content">
          <div class="table-row" v-for="(item, index) in compensationList" :key="index">
            <div class="batch-number pl-20">{{ item.batchNumber }}</div>
            <div class="household-count">{{ item.householdCount }}</div>
            <div class="people-count">{{ item.peopleCount }}</div>
            <div class="progress-wrapper">
              <div class="progress-bar">
                <div class="progress-fill">
                  <div class="progress-color" :class="item.point>=25?'progress-yellow':item.point>=50?'progress-green':item.point>=75?'progress-blue':'progress-gray'"></div>
                </div>
              </div>
              <div class="progress-text">{{ item.stage }}/20</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
@@ -59,6 +83,44 @@
        { label: '已受理', value: '2021103000001', percentage: 90 },
        { label: '已审核', value: '2021103000002', percentage: 70 },
        { label: '已完成', value: '2021103000003', percentage: 50 }
      ],
      compensationList: [
        {
          batchNumber: '2021103000001',
          householdCount: '8355',
          peopleCount: '238355',
          progress: 50,
          yellowProgress: 20,
          blueProgress: 30,
          stage: '1'
        },
        {
          batchNumber: '2021103000001',
          householdCount: '8355',
          peopleCount: '238355',
          progress: 60,
          yellowProgress: 25,
          blueProgress: 35,
          stage: '2'
        },
        {
          batchNumber: '2021103000001',
          householdCount: '8355',
          peopleCount: '238355',
          progress: 75,
          yellowProgress: 30,
          blueProgress: 45,
          stage: '2'
        },
        {
          batchNumber: '2021103000001',
          householdCount: '8355',
          peopleCount: '238355',
          progress: 90,
          yellowProgress: 35,
          blueProgress: 55,
          stage: '2'
        }
      ]
    };
  }
@@ -66,6 +128,10 @@
</script>
<style lang="less" scoped>
.pl-20 {
  padding-left: 20px;
}
.center-panel {
  position: absolute;
  left: 481px;
@@ -95,7 +161,152 @@
    height: 245px;
    background: url('@/assets/center-bottom-bg.png') no-repeat center center;
    background-size: 100% 100%;
    padding: 20px;
    .compensation-table {
      height: 100%;
      display: flex;
      flex-direction: column;
      .table-header {
        display: flex;
        align-items: center;
        color: rgba(255, 255, 255, 0.6);
        font-size: 12px;
        // margin-top: 20px;
        margin-bottom: 15px;
        >div {
          margin-right: 40px;
        }
        .batch-number {
          width: 150px;
        }
        .household-count {
          width: 80px;
          text-align: center;
        }
        .people-count {
          width: 100px;
          text-align: center;
        }
        .progress-wrapper {
          flex: 1;
          padding-right: 20px;
          padding-left: 20px;
        }
      }
      .table-content {
        flex: 1;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        .table-row {
          display: flex;
          align-items: center;
          color: #fff;
          font-size: 14px;
          padding: 8px 0;
          margin-bottom: 5px;
          box-sizing: border-box;
          >div {
            margin-right: 40px;
          }
          .batch-number {
            width: 150px;
          }
          .household-count {
            width: 80px;
            text-align: center;
          }
          .people-count {
            width: 100px;
            text-align: center;
          }
          .progress-wrapper {
            flex: 1;
            display: flex;
            align-items: center;
            .progress-bar {
              flex: 1;
              height: 10px;
              background: rgba(255, 255, 255, 0.1);
              border-radius: 5px;
              margin-right: 15px;
              overflow: hidden;
              .progress-fill {
                height: 100%;
                display: flex;
                .progress-yellow {
                  height: 100%;
                  background: #FEDB65;
                }
                .progress-blue {
                  height: 100%;
                  background: #00C6FF;
                }
                .progress-green {
                  height: 100%;
                  background: rgba(0, 220, 171, 1);
                }
                .progress-gray {
                  height: 100%;
                  background: rgba(0, 242, 240, 1);
                }
              }
            }
            .progress-text {
              width: 50px;
              text-align: right;
            }
          }
          &:nth-child(2n + 1) {
            background: url('@/assets/bg.png') no-repeat center center;
            border: 2px solid;
            border-image: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(1, 10, 40, 0), rgba(255, 255, 255, 0.6)) 2 2;
          }
          &:nth-child(2n) {
            background: url('@/assets/unbg.png') no-repeat center center;
            border: 2px solid;
            border-image: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(1, 10, 40, 0), rgba(255, 255, 255, 0.2)) 2 2;
          }
          &:last-child {
            margin-bottom: 0;
          }
        }
      }
    }
  }
  .txt-center {
    text-align: center;
    font-size: 12px;
    color: #19ECFF;
    line-height: 18px;
  }
  .map-data {
@@ -109,6 +320,7 @@
    .data-item {
      display: flex;
      flex-shrink: 0;
      img {
        width: 94px;
        height: 80px;