Commit 2ac8e91ce568201bd74890aa3fc7a0db9b7f9a12

Authored by wesley88
2 parents 6fd43d28 ed7a1f3e

Merge branch 'master' of http://39.98.150.180/webapp/GreenwayWeb

admin-web-master/src/api/cereBusinessInfo.js
... ... @@ -43,3 +43,12 @@ export function close(data) {
43 43 })
44 44 }
45 45  
  46 +// 招商统计分析
  47 +export function getInvestmentStatistics(data) {
  48 + return request({
  49 + url: '/attractInvestmentStatisticsController/getInvestmentStatistics',
  50 + method: 'post',
  51 + data
  52 + })
  53 +}
  54 +
... ...
admin-web-master/src/assets/images/msg.png 0 → 100644

262 Bytes

admin-web-master/src/layout/index.vue
... ... @@ -10,8 +10,8 @@
10 10 <li :class="index == ins ? 'topList':'weiList'" style="line-height: 55px;height: 100%"
11 11 v-for="(item,ins) in msg" @click="clk(ins)">{{item}}</li>
12 12 </ul>
13   - <div style="position: absolute;top:0px;right:0px;display: flex">
14   - <div style="border-radius:20px; width: 110px; height: 30px;margin-top: 11px;margin-right: 10px;background:rgba(255, 255, 255, 0.1);display: flex;flex-flow: row nowrap;justify-content: center;
  13 + <div style="position: absolute;top:0px;right:0px;display: flex;align-items: center;height: 50px;">
  14 + <div style="border-radius:20px; width: 110px; height: 30px;background:rgba(255, 255, 255, 0.1);display: flex;flex-flow: row nowrap;justify-content: center;
15 15 align-items: center;cursor: pointer;" @click="gzt">
16 16 <!-- <el-image src="https://028wlkj.cn:30021/public/static/logos/home-stable.png"
17 17 style="padding:10px 0;"></el-image> -->
... ... @@ -19,10 +19,13 @@
19 19 style="height: 24px;object-fit: contain;width:24px;margin-right:6px;" />
20 20 <div style="color: #fff;line-height: 20px;font-size:14px">工作台</div>
21 21 </div>
22   -
  22 + <div @click="gomsg" style="padding-left: 30px;cursor: pointer;">
  23 + <img src="../assets/images/msg.png" alt=""
  24 + style="height: 24px;object-fit: contain;width:24px;margin-right:6px;" />
  25 + </div>
23 26 <div class="right-menu">
24 27 <div class="avatar-container">
25   - <div class="avatar-wrapper" style="margin-left: 20px">
  28 + <div class="avatar-wrapper" style="margin-left: 30px">
26 29 <img :src="userAvatar" class="user-avatar">
27 30 <span class="user-name">{{ name }}</span>
28 31 </div>
... ... @@ -722,6 +725,9 @@
722 725  
723 726  
724 727 },
  728 + gomsg(){
  729 + window.location.href = 'https://zhgw-uat.028wlkj.com/cdwlOa/systemMessages'
  730 + },
725 731 findMatchingNames(List, msg) {
726 732 return List.filter((item) => msg.includes(item.name))
727 733 },
... ... @@ -937,8 +943,8 @@
937 943  
938 944 .right-menu {
939 945 float: right;
940   - height: 100%;
941   - line-height: 50px;
  946 + height: 50px;
  947 + // line-height: 40px;
942 948  
943 949 &:focus {
944 950 outline: none;
... ... @@ -994,8 +1000,9 @@
994 1000 vertical-align: top;
995 1001 font-size: 14px;
996 1002 margin-left: 5px;
997   - margin-top: -4px;
  1003 + // margin-top: -4px;
998 1004 display: inline-block;
  1005 + line-height: 40px;
999 1006 color: #fff
1000 1007 }
1001 1008  
... ...
admin-web-master/src/utils/request.js
... ... @@ -17,12 +17,12 @@ let baseURL = &#39;&#39;
17 17 if(host === 'localhost:8080' || host === 'localhost:8081' || host === 'localhost:9528'|| host === '192.168.31.45:9528'|| host === 'localhost:9529' ) {
18 18  
19 19 // baseURL = 'https://jy.scjysm.asia:18086/cdwlMall/meserver/admin-server';
20   - baseURL = 'https://zhgw-uat.028wlkj.com/cdwlMall/meserver/admin-server';
  20 + // baseURL = 'https://zhgw-uat.028wlkj.com/cdwlMall/meserver/admin-server';
21 21  
22 22 // baseURL = process.env.VUE_APP_DOMAIN_PREFIX_1;
23 23  
24 24  
25   - // baseURL = 'http://128.10.249.42:9003';
  25 + baseURL = 'http://128.10.249.23:9003';
26 26  
27 27  
28 28 } else {
... ...
admin-web-master/src/utils/request2.js
... ... @@ -20,7 +20,7 @@ if(host === &#39;localhost:8080&#39; || host === &#39;localhost:8081&#39; || host === &#39;localhost
20 20 // baseURL = 'https://zhgw-uat.028wlkj.com/cdwlMall/meserver/business-server';
21 21 // baseURL = 'http://172.16.61.125:9004';
22 22 // baseURL = 'https://jy.scjysm.asia:18086/cdwlMall/business-server';
23   - baseURL = 'http://128.10.249.42:9004';
  23 + baseURL = 'http://128.10.249.239004';
24 24 } else {
25 25 console.error('---------------------')
26 26 console.error(hostall)
... ...
admin-web-master/src/views/rent/InvestmentAnalysis/index.vue 0 → 100644
  1 +<template>
  2 + <div style="background-color:#f7f7f7;padding:10px 10px;">
  3 + <div class="zhuti">
  4 + <div style="height:58px;line-height:58px;">
  5 + <div style="color:#0006"> <span>客服服务管理</span> <span style="padding:0 5px;">></span> <span
  6 + style="color:#000000e6">招商统计分析</span></div>
  7 + </div>
  8 + <div class="toolbar">
  9 + <el-form :inline="true" :model="pageindex">
  10 + <el-form-item label="资源类型">
  11 + <el-select placeholder="全部" v-model="pageindex.leaseType"
  12 + style="width: 120px;margin-right: 15px">
  13 + <el-option label="商铺" value="商铺" />
  14 + <el-option label="场地" value="场地" />
  15 + <el-option label="广告位" value="广告位" />
  16 + </el-select>
  17 + </el-form-item>
  18 + <el-form-item label="日期">
  19 + <el-date-picker
  20 + v-model="pageindex.list"
  21 + type="daterange"
  22 + range-separator="至"
  23 + start-placeholder="开始时间"
  24 + end-placeholder="结束时间"
  25 + value-format="yyyy-MM-dd"
  26 + />
  27 + </el-form-item>
  28 +
  29 + <el-form-item label-width="0">
  30 + <el-button @click="search" style="background-color: #3F9B6A;color: #fff">查询</el-button>
  31 + <el-button @click="clear" class="buttonHover"
  32 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">重置</el-button>
  33 + </el-form-item>
  34 + </el-form>
  35 + </div>
  36 + <div style="width: 100%;margin-bottom:30px;">
  37 + <div style="display:flex;margin-top:10px;">
  38 + <div style="width:50%;height: 400px;marigin-right:20px;">
  39 + <div style="display: flex;justify-content: space-between;">
  40 + <div style="line-height:35px;">商户统计</div>
  41 + </div>
  42 + <div ref="shop1TJ" style="width:100%;height: 400px;"></div>
  43 + </div>
  44 + <div style="width:50%;height: 400px;marigin-right:20px;">
  45 + <div style="display: flex;justify-content: space-between;">
  46 + <div style="line-height:35px;">转化率分析</div>
  47 + </div>
  48 + <div ref="shop1ZX" style="width:100%;height: 400px;"></div>
  49 +
  50 + </div>
  51 +
  52 + </div>
  53 + </div>
  54 + <div style="width: 100%;margin-bottom;20px;">
  55 + <div style="display:flex;margin-top:10px;">
  56 +
  57 + <div style="width:50%;height: 400px;marigin-right:20px;">
  58 + <div style="display: flex;justify-content: space-between;">
  59 + <div style="line-height:35px;">出租率</div>
  60 + </div>
  61 + <div ref="shop2TJ" style="width:100%;height: 400px;"></div>
  62 + </div>
  63 + <div style="width:50%;height: 400px;marigin-right:20px;">
  64 + <div style="display: flex;justify-content: space-between;">
  65 + <div style="line-height:35px;">空置资源统计</div>
  66 + </div>
  67 + <div ref="shop3QS" style="width:100%;height: 400px;"></div>
  68 + </div>
  69 + </div>
  70 + </div>
  71 + </div>
  72 +
  73 + </div>
  74 +</template>
  75 +
  76 +<script>
  77 + import {
  78 + getInvestmentStatistics
  79 + } from '@/api/cereBusinessInfo'
  80 + import * as echarts from 'echarts'
  81 + export default {
  82 + name: 'atmosphereGl',
  83 + data() {
  84 + return {
  85 + currentPage: 1,
  86 + radio1: 0,
  87 + total: 100,
  88 + flag: false,
  89 + pageSize: 10,
  90 + tableData: [],
  91 + pageindex: {
  92 + leaseType:'',
  93 + startTime:'',
  94 + endTime:'',
  95 + list:[]
  96 + },
  97 + listType:[]
  98 +
  99 + }
  100 + },
  101 + computed: {},
  102 + mounted() {
  103 + this.getAll()
  104 +
  105 + },
  106 +
  107 + methods: {
  108 + search(){
  109 + if(this.pageindex.list.length!=0){
  110 + this.pageindex.startTime = this.pageindex.list[0]+' 00:00:00'
  111 + this.pageindex.endTime = this.pageindex.list[1]+' 23:59:59'
  112 + }
  113 +
  114 + this.getAll()
  115 + },
  116 + clear(){
  117 + this.pageindex={
  118 + leaseType:'',
  119 + startTime:'',
  120 + endTime:'',
  121 + list:[]
  122 + }
  123 + this.getAll()
  124 + },
  125 + charDam(val) {
  126 +
  127 +
  128 + // 获取图表容器的 DOM 元素
  129 + const chartDom = this.$refs.shop2TJ
  130 + // 初始化 ECharts 实例
  131 + const myChart = echarts.init(chartDom);
  132 + val.sort((a, b) => {
  133 + return new Date(a.month) - new Date(b.month);
  134 + });
  135 + const months = val.map(item => item.month);
  136 + const lettingRate = val.map(item => item.lettingRate);
  137 +
  138 + const option = {
  139 + tooltip: {
  140 + trigger: 'axis'
  141 + },
  142 + xAxis: {
  143 + type: 'category',
  144 + boundaryGap: false,
  145 + data:months,
  146 + },
  147 + yAxis: {
  148 + type: 'value',
  149 + axisLabel: {
  150 + formatter: '{value}%'
  151 + }
  152 + },
  153 + series: [
  154 + {
  155 + name: '出租率',
  156 + type: 'line',
  157 + data: lettingRate,
  158 + symbol: 'circle',
  159 + symbolSize: 8,
  160 + lineStyle: {
  161 + color: '#4A90E2'
  162 + },
  163 + areaStyle: {
  164 + color: new echarts.graphic.LinearGradient(
  165 + 0, 0, 0, 1,
  166 + [
  167 + { offset: 0, color: '#4A90E2' },
  168 + { offset: 1, color: 'rgba(74, 144, 226, 0.1)' }
  169 + ]
  170 + )
  171 + },
  172 + // 新增:设置节点(小圆点)颜色
  173 + itemStyle: {
  174 + normal: {
  175 + color: '#2c87ff' // 节点颜色设为红色,可替换为其他颜色值(如 '#00ff00' 绿色、'#0000ff' 蓝色)
  176 + }
  177 + },
  178 + }
  179 + ]
  180 + };
  181 + // 使用刚指定的配置项和数据显示图表
  182 + option && myChart.setOption(option)
  183 + window.addEventListener('resize', function() {
  184 + myChart.resize();
  185 + })
  186 + },
  187 + charDam1(val) {
  188 +
  189 + const chartDom = this.$refs.shop1ZX;
  190 + const myChart = echarts.init(chartDom)
  191 +
  192 + const option = {
  193 + series: [
  194 + {
  195 + name: '转化率',
  196 + type: 'funnel',
  197 + minSize: '25%',
  198 + maxSize: '80%',
  199 + sort: 'descending',
  200 + color: ['#50B5FF', '#5AD8A6'],
  201 + data: [
  202 + { name: `意向客户 ${val.intention}`, value: val.intention },
  203 + { name: `签约客户 ${val.signContract}`, value: val.signContract }
  204 + ],
  205 + itemStyle: {
  206 + normal: {
  207 + borderColor: '#333',
  208 + borderWidth: 1,
  209 + scale: 10
  210 + }
  211 + },
  212 + label: {
  213 + normal: {
  214 + show: true,
  215 + position: 'inside'
  216 + }
  217 + },
  218 + labelLine: {
  219 + normal: {
  220 + show: true
  221 + }
  222 + },
  223 + tooltip: {
  224 + formatter: function (params) {
  225 + return `${params.name}: ${params.value}`;
  226 + }
  227 + },
  228 + funnelAlign: 'center',
  229 + gap: 5,
  230 + left: '10%',
  231 + right: '10%'
  232 +
  233 + }
  234 + ],
  235 + graphic: [
  236 + {
  237 + type: 'text',
  238 + left: '80%',
  239 + top: '60%',
  240 + style: {
  241 + text: `转化率${val.percentConversion}%`,
  242 + fill: '#666',
  243 + fontSize: 12
  244 + }
  245 + },
  246 + ]
  247 + };
  248 + option && myChart.setOption(option,true);
  249 + window.addEventListener('resize', () => myChart.resize());
  250 + },
  251 + charDam3(val) {
  252 + let Dom = this.$refs.shop1TJ
  253 + let myChart = echarts.init(Dom)
  254 + val.sort((a, b) => {
  255 + return new Date(a.mouth) - new Date(b.mouth);
  256 + });
  257 + const months = val.map(item => item.mouth);
  258 + const intentMerchants = val.map(item => item.intention);
  259 + const signedMerchants = val.map(item => item.signContract);
  260 + // 配置项
  261 + const option = {
  262 + tooltip: {
  263 + trigger: 'axis'
  264 + },
  265 + grid: {
  266 + left: '10%',
  267 + right: '10%',
  268 + bottom: '15%'
  269 + },
  270 + xAxis: {
  271 + type: 'category',
  272 + data: months,
  273 + boundaryGap: false
  274 + },
  275 + yAxis: {
  276 + type: 'value',
  277 + name: '商户数量'
  278 + },
  279 + series: [
  280 + {
  281 + name: '签约商户',
  282 + type: 'line',
  283 + data: signedMerchants,
  284 + symbol: 'circle',
  285 + lineStyle: {
  286 + color: '#1890ff'
  287 + },
  288 + itemStyle: {
  289 + color: '#1890ff'
  290 + }
  291 + },
  292 + {
  293 + name: '意向商户',
  294 + type: 'line',
  295 + data: intentMerchants,
  296 + symbol: 'circle',
  297 + lineStyle: {
  298 + color: '#52c41a'
  299 + },
  300 + itemStyle: {
  301 + color: '#52c41a'
  302 + }
  303 + }
  304 + ]
  305 + };
  306 + option && myChart.setOption(option);
  307 + window.addEventListener('resize', function() {
  308 + myChart.resize();
  309 + })
  310 + },
  311 +
  312 + charDam5(val) {
  313 +
  314 + // 获取图表容器的 DOM 元素
  315 + const chartDom = this.$refs.shop3QS
  316 + // 初始化 ECharts 实例
  317 + const myChart = echarts.init(chartDom);
  318 + // const data = val.sort((a, b) => b.vacancyDays - a.vacancyDays);
  319 + // 按vacancyDays降序排序
  320 + const sortedData = val.sort((a, b) => b.vacancyDays - a.vacancyDays);
  321 +
  322 + // 取前10条数据
  323 + const top10Data = sortedData.slice(0, 10);
  324 +
  325 + // 计算其他项的vacancyDays总和
  326 + const otherVacancyDays = sortedData.slice(10).reduce((sum, item) => sum + item.vacancyDays, 0);
  327 +
  328 + // 添加其他项
  329 + top10Data.push({
  330 + resourceName: '其他',
  331 + vacancyDays: otherVacancyDays
  332 + });
  333 + const option = {
  334 + tooltip: {
  335 + trigger: 'axis',
  336 + axisPointer: {
  337 + type: 'shadow'
  338 + }
  339 + },
  340 + grid: {
  341 + left: '0%',
  342 + right: '5%',
  343 + top: '8%',
  344 + bottom: '8%',
  345 + containLabel: true
  346 + },
  347 +
  348 + xAxis: {
  349 + type: 'value'
  350 + },
  351 + yAxis: {
  352 + type: 'category',
  353 + data: top10Data.map(item => item.resourceName)
  354 + },
  355 + series: [
  356 + {
  357 + name: '空置天数',
  358 + type: 'bar',
  359 + data: top10Data.map(item => item.vacancyDays),
  360 + barWidth: 30,
  361 + barCategoryGap: '50%', // 原为 40%,调整为 60% 增加间隙
  362 + barGap: '20%',
  363 + itemStyle: {
  364 + color: '#3f9b6a',
  365 + },
  366 + label: {
  367 + normal: {
  368 + show: true,
  369 + position: 'insideRight' // 数值显示在柱子右侧
  370 + }
  371 + }
  372 + }
  373 + ],
  374 +
  375 + // graphic: [
  376 + // {
  377 + // type: 'text',
  378 + // left: '92%', // 右侧5%位置
  379 + // bottom: '12%', // 底部5%位置
  380 + // style: {
  381 + // text: '天',
  382 + // fill: '#666',
  383 + // fontSize: 12,
  384 + // // fontWeight: 'bold'
  385 + // }
  386 + // }
  387 + // ]
  388 + };
  389 +
  390 + // 使用刚指定的配置项和数据显示图表
  391 + option && myChart.setOption(option)
  392 + window.addEventListener('resize', function() {
  393 + myChart.resize();
  394 + })
  395 +
  396 + },
  397 +
  398 + async getAll() {
  399 + const res = await getInvestmentStatistics(this.pageindex)
  400 + this.charDam3(res.data.signContractAndIntentionVOList)
  401 + this.charDam1(res.data.percentConversionVO)
  402 + this.charDam(res.data.lettingRateVOList)
  403 + this.charDam5(res.data.vacantDaysVOS)
  404 +
  405 + },
  406 +
  407 + }
  408 + }
  409 +</script>
  410 +
  411 +<style scoped>
  412 + .zhuti {
  413 + padding: 0 20px 20px 20px;
  414 + min-height: calc(100vh - 50px - 20px);
  415 + background-color: #Fff;
  416 +
  417 + }
  418 +
  419 + /deep/ .el-form-item__content {
  420 + line-height: 0;
  421 + }
  422 +
  423 + .tableBtn {
  424 + display: inline-block;
  425 + margin-right: 10px;
  426 + }
  427 +
  428 + .formSearch {
  429 + position: relative;
  430 + margin-top: 30px;
  431 + display: flex;
  432 + width: 100%;
  433 + height: 30px;
  434 + font-size: 14px;
  435 + margin-bottom: 10px;
  436 + }
  437 +
  438 + .greens {
  439 + color: #3F9B6A;
  440 + }
  441 +
  442 +
  443 + .fenye {
  444 + margin-top: 20px;
  445 + display: flex;
  446 + justify-content: flex-start;
  447 + position: relative;
  448 + }
  449 +
  450 + /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
  451 + background-color: #3F9B6A;
  452 + }
  453 +
  454 + .el-row {
  455 + margin-bottom: 20px;
  456 + }
  457 +
  458 + :last-child {
  459 + margin-bottom: 0;
  460 + }
  461 +
  462 + .el-col {
  463 + border-radius: 4px;
  464 + }
  465 +
  466 + .bg-purple-dark {
  467 + background: #99a9bf;
  468 + }
  469 +
  470 + .bg-purple {
  471 + background: #d3dce6;
  472 + }
  473 +
  474 + .bg-purple-light {
  475 + background: #e5e9f2;
  476 + }
  477 +
  478 + .grid-content {
  479 + border-radius: 4px;
  480 + min-height: 36px;
  481 + }
  482 +
  483 + .row-bg {
  484 + padding: 10px 0;
  485 + background-color: #f9fafc;
  486 + }
  487 +
  488 + /deep/ .bg-purple[data-v-0e3fe4ec] {
  489 + background: #fff;
  490 + height: 50px;
  491 + }
  492 +
  493 + /deep/ .el-form--label-top .el-form-item__label {
  494 + padding: 0;
  495 + }
  496 +
  497 + .demo-input-suffix {
  498 + display: flex;
  499 + margin-right: 20px;
  500 + }
  501 +
  502 + .pagination {
  503 + text-align: right;
  504 + line-height: 20px;
  505 + }
  506 +
  507 + /deep/ .el-pagination__total {
  508 + margin-top: 4px;
  509 + }
  510 +
  511 + ::v-deep .el-select .el-input.is-focus .el-input__inner {
  512 + border-color: #3F9B6A
  513 + }
  514 +
  515 + /deep/ .el-dialog__header {
  516 + background-color: #fff;
  517 + padding: 0
  518 + }
  519 +
  520 + /deep/ .el-radio__input.is-checked .el-radio__inner {
  521 + border-color: #3F9B6A;
  522 + background: #3F9B6A;
  523 + }
  524 +
  525 + ::v-deep .buttonHover:hover {
  526 + color: #3f9b6a !important;
  527 + border-color: #c5e1d2 !important;
  528 + background-color: #ecf5f0 !important;
  529 + outline: none;
  530 + }
  531 +</style>
0 532 \ No newline at end of file
... ...
admin-web-master/src/views/scheme/statistics.vue 0 → 100644
  1 +<template>
  2 + <div style="background-color:#f7f7f7;padding:10px 10px;">
  3 + <div class="zhuti">
  4 + <div style="height:58px;line-height:58px;">
  5 + <div style="color:#0006"> <span>招商方案管理</span> <span style="padding:0 5px;">></span> <span
  6 + style="color:#000000e6">招商方案统计</span></div>
  7 + </div>
  8 + <div class="toolbar">
  9 + <el-form :inline="true" :model="pageindex">
  10 + <el-form-item label="资源类型">
  11 + <el-select placeholder="全部" v-model="pageindex.leaseType"
  12 + style="width: 120px;margin-right: 15px">
  13 + <el-option label="商铺" value="商铺" />
  14 + <el-option label="场地" value="场地" />
  15 + <el-option label="广告位" value="广告位" />
  16 + </el-select>
  17 + </el-form-item>
  18 + <el-form-item label="日期">
  19 + <el-date-picker
  20 + v-model="pageindex.list"
  21 + type="daterange"
  22 + range-separator="至"
  23 + start-placeholder="开始时间"
  24 + end-placeholder="结束时间"
  25 + value-format="yyyy-MM-dd"
  26 + />
  27 + </el-form-item>
  28 +
  29 + <el-form-item label-width="0">
  30 + <el-button @click="search" style="background-color: #3F9B6A;color: #fff">查询</el-button>
  31 + <el-button @click="clear" class="buttonHover"
  32 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">重置</el-button>
  33 + </el-form-item>
  34 + </el-form>
  35 + </div>
  36 + <div style="width: 100%;margin-bottom:30px;">
  37 + <div style="display:flex;margin-top:10px;">
  38 + <div style="width:50%;height: 400px;marigin-right:20px;">
  39 + <div style="display: flex;justify-content: space-between;">
  40 + <div style="line-height:35px;">月度签约趋势</div>
  41 + </div>
  42 + <div ref="shop1TJ" style="width:100%;height: 400px;"></div>
  43 + </div>
  44 + <div style="width:50%;height: 400px;marigin-right:20px;">
  45 + <div style="display: flex;justify-content: space-between;">
  46 + <div style="line-height:35px;">资源使用占比</div>
  47 + </div>
  48 + <div ref="shop1ZX" style="width:100%;height: 400px;"></div>
  49 +
  50 + </div>
  51 +
  52 + </div>
  53 + </div>
  54 + <div style="width: 100%;margin-bottom;20px;">
  55 + <div style="display:flex;margin-top:10px;">
  56 +
  57 + <div style="width:50%;height: 400px;marigin-right:20px;">
  58 + <div style="display: flex;justify-content: space-between;">
  59 + <div style="line-height:35px;">商铺经营类型占比</div>
  60 + </div>
  61 + <div ref="shop2TJ" style="width:100%;height: 400px;"></div>
  62 + </div>
  63 + <div style="width:50%;height: 400px;marigin-right:20px;">
  64 + <div style="display: flex;justify-content: space-between;">
  65 + <div style="line-height:35px;">租金价格趋势</div>
  66 + </div>
  67 + <div ref="shop3QS" style="width:100%;height: 400px;"></div>
  68 + </div>
  69 + </div>
  70 + </div>
  71 + </div>
  72 +
  73 + </div>
  74 +</template>
  75 +
  76 +<script>
  77 + import {
  78 + getInvestmentStatistics
  79 + } from '@/api/cereBusinessInfo'
  80 + import * as echarts from 'echarts'
  81 + export default {
  82 + name: 'atmosphereGl',
  83 + data() {
  84 + return {
  85 + currentPage: 1,
  86 + radio1: 0,
  87 + total: 100,
  88 + flag: false,
  89 + pageSize: 10,
  90 + tableData: [],
  91 + pageindex: {
  92 + leaseType:'',
  93 + startTime:'',
  94 + endTime:'',
  95 + list:[]
  96 + },
  97 + listType:[]
  98 +
  99 + }
  100 + },
  101 + computed: {},
  102 + mounted() {
  103 + this.getAll()
  104 +
  105 + },
  106 +
  107 + methods: {
  108 + search(){
  109 + if(this.pageindex.list.length!=0){
  110 + this.pageindex.startTime = this.pageindex.list[0]+' 00:00:00'
  111 + this.pageindex.endTime = this.pageindex.list[1]+' 23:59:59'
  112 + }
  113 +
  114 + this.getAll()
  115 + },
  116 + clear(){
  117 + this.pageindex={
  118 + leaseType:'',
  119 + startTime:'',
  120 + endTime:'',
  121 + list:[]
  122 + }
  123 + this.getAll()
  124 + },
  125 + charDam(val) {
  126 +
  127 +
  128 + // 获取图表容器的 DOM 元素
  129 + const chartDom = this.$refs.shop2TJ
  130 + // 初始化 ECharts 实例
  131 + const myChart = echarts.init(chartDom);
  132 + // 模拟数据
  133 + const shopCount = 50;
  134 + const adCount = 30;
  135 + const venueCount = 20;
  136 + const totalCount = shopCount + adCount + venueCount;
  137 +
  138 + const option = {
  139 + tooltip: {
  140 + trigger: 'item',
  141 + formatter: '{a} <br/>{b}: {c} ({d}%)'
  142 + },
  143 + legend: {
  144 + orient: 'horizontal', // 横向展示
  145 + left: 'center', // 居中显示
  146 + data: ['商铺', '广告位', '场地']
  147 + },
  148 + series: [
  149 + {
  150 + name: '资源分布',
  151 + type: 'pie',
  152 + radius: ['50%', '70%'],
  153 + avoidLabelOverlap: false,
  154 + label: {
  155 + show: true,
  156 + position: 'outside',
  157 + formatter: '{b}: {c}'
  158 + },
  159 + labelLine: {
  160 + show: true
  161 + },
  162 + data: [
  163 + { value: shopCount, name: '商铺' },
  164 + { value: adCount, name: '广告位' },
  165 + { value: venueCount, name: '场地' }
  166 + ]
  167 + },
  168 + {
  169 + name: '总量',
  170 + type: 'pie',
  171 + radius: ['0%', '0%'], // 不显示圆形
  172 + label: {
  173 + show: true,
  174 + position: 'center',
  175 + formatter: `总量: ${totalCount}`,
  176 + fontSize: 20
  177 + },
  178 + data: [
  179 + { value: totalCount, name: '总量' }
  180 + ]
  181 + }
  182 + ]
  183 + };
  184 + // 使用刚指定的配置项和数据显示图表
  185 + option && myChart.setOption(option)
  186 + window.addEventListener('resize', function() {
  187 + myChart.resize();
  188 + })
  189 + },
  190 + charDam1(val) {
  191 +
  192 + const chartDom = this.$refs.shop1ZX;
  193 + const myChart = echarts.init(chartDom)
  194 +
  195 + // 模拟数据
  196 + const shopCount = 50;
  197 + const adCount = 30;
  198 + const venueCount = 20;
  199 + const totalCount = shopCount + adCount + venueCount;
  200 +
  201 + const option = {
  202 + tooltip: {
  203 + trigger: 'item',
  204 + formatter: '{a} <br/>{b}: {c} ({d}%)'
  205 + },
  206 + legend: {
  207 + orient: 'horizontal', // 横向展示
  208 + left: 'center', // 居中显示
  209 + data: ['商铺', '广告位', '场地']
  210 + },
  211 + series: [
  212 + {
  213 + name: '资源分布',
  214 + type: 'pie',
  215 + radius: ['50%', '70%'],
  216 + avoidLabelOverlap: false,
  217 + label: {
  218 + show: true,
  219 + position: 'outside',
  220 + formatter: '{b}: {c}'
  221 + },
  222 + labelLine: {
  223 + show: true
  224 + },
  225 + data: [
  226 + { value: shopCount, name: '商铺' },
  227 + { value: adCount, name: '广告位' },
  228 + { value: venueCount, name: '场地' }
  229 + ]
  230 + },
  231 + {
  232 + name: '总量',
  233 + type: 'pie',
  234 + radius: ['0%', '0%'], // 不显示圆形
  235 + label: {
  236 + show: true,
  237 + position: 'center',
  238 + formatter: `总量: ${totalCount}`,
  239 + fontSize: 20
  240 + },
  241 + data: [
  242 + { value: totalCount, name: '总量' }
  243 + ]
  244 + }
  245 + ]
  246 + };
  247 +
  248 + option && myChart.setOption(option,true);
  249 + window.addEventListener('resize', () => myChart.resize());
  250 + },
  251 + charDam3(val) {
  252 + let Dom = this.$refs.shop1TJ
  253 + let myChart = echarts.init(Dom)
  254 + // val.sort((a, b) => {
  255 + // return new Date(a.mouth) - new Date(b.mouth);
  256 + // });
  257 + // const months = val.map(item => item.mouth);
  258 + // const intentMerchants = val.map(item => item.intention);
  259 + // const signedMerchants = val.map(item => item.signContract);
  260 + // 模拟月度签约数据
  261 + const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
  262 + const contractCounts = [12, 15, 20, 18, 22, 25, 28, 30, 26, 24, 21, 23];
  263 +
  264 + const option = {
  265 + tooltip: {
  266 + trigger: 'axis'
  267 + },
  268 + xAxis: {
  269 + type: 'category',
  270 + data: months,
  271 + boundaryGap: false
  272 + },
  273 + yAxis: {
  274 + type: 'value',
  275 + name: '签约数'
  276 + },
  277 + series: [
  278 + {
  279 + name: '签约数',
  280 + type: 'line',
  281 + data: contractCounts,
  282 + symbol: 'circle',
  283 + lineStyle: {
  284 + color: '#4A90E2'
  285 + },
  286 + itemStyle: {
  287 + color: '#4A90E2'
  288 + },
  289 + areaStyle: {
  290 + color: new echarts.graphic.LinearGradient(
  291 + 0, 0, 0, 1,
  292 + [
  293 + { offset: 0, color: 'rgba(74, 144, 226, 0.3)' },
  294 + { offset: 1, color: 'rgba(74, 144, 226, 0.1)' }
  295 + ]
  296 + )
  297 + }
  298 + }
  299 + ]
  300 + };
  301 +
  302 + option && myChart.setOption(option);
  303 + window.addEventListener('resize', function() {
  304 + myChart.resize();
  305 + })
  306 + },
  307 +
  308 + charDam5(val) {
  309 +
  310 + // 获取图表容器的 DOM 元素
  311 + const chartDom = this.$refs.shop3QS
  312 + // 初始化 ECharts 实例
  313 + const myChart = echarts.init(chartDom);
  314 +
  315 +
  316 + // 模拟租金价格数据,这里假设是按月份统计
  317 + const months = ['1月', '2月', '3月', '4月', '5月', '6月'];
  318 + const rentPrices = [50, 52, 55, 53, 56, 58];
  319 +
  320 + const option = {
  321 + tooltip: {
  322 + trigger: 'axis'
  323 + },
  324 + xAxis: {
  325 + type: 'category',
  326 + data: months,
  327 + boundaryGap: false
  328 + },
  329 + yAxis: {
  330 + type: 'value',
  331 + name: '租金价格(元/m²)'
  332 + },
  333 + series: [
  334 + {
  335 + name: '租金价格',
  336 + type: 'line',
  337 + data: rentPrices,
  338 + symbol: 'circle',
  339 + lineStyle: {
  340 + color: '#4A90E2'
  341 + },
  342 + itemStyle: {
  343 + color: '#4A90E2'
  344 + },
  345 + areaStyle: {
  346 + color: new echarts.graphic.LinearGradient(
  347 + 0, 0, 0, 1,
  348 + [
  349 + { offset: 0, color: 'rgba(74, 144, 226, 0.3)' },
  350 + { offset: 1, color: 'rgba(74, 144, 226, 0.1)' }
  351 + ]
  352 + )
  353 + }
  354 + }
  355 + ]
  356 + };
  357 +
  358 + // 使用刚指定的配置项和数据显示图表
  359 + option && myChart.setOption(option)
  360 + window.addEventListener('resize', function() {
  361 + myChart.resize();
  362 + })
  363 +
  364 + },
  365 +
  366 + async getAll() {
  367 + const res = await getInvestmentStatistics(this.pageindex)
  368 + this.charDam3()
  369 + this.charDam1()
  370 + this.charDam()
  371 + this.charDam5()
  372 +
  373 + },
  374 +
  375 + }
  376 + }
  377 +</script>
  378 +
  379 +<style scoped>
  380 + .zhuti {
  381 + padding: 0 20px 20px 20px;
  382 + min-height: calc(100vh - 50px - 20px);
  383 + background-color: #Fff;
  384 +
  385 + }
  386 +
  387 + /deep/ .el-form-item__content {
  388 + line-height: 0;
  389 + }
  390 +
  391 + .tableBtn {
  392 + display: inline-block;
  393 + margin-right: 10px;
  394 + }
  395 +
  396 + .formSearch {
  397 + position: relative;
  398 + margin-top: 30px;
  399 + display: flex;
  400 + width: 100%;
  401 + height: 30px;
  402 + font-size: 14px;
  403 + margin-bottom: 10px;
  404 + }
  405 +
  406 + .greens {
  407 + color: #3F9B6A;
  408 + }
  409 +
  410 +
  411 + .fenye {
  412 + margin-top: 20px;
  413 + display: flex;
  414 + justify-content: flex-start;
  415 + position: relative;
  416 + }
  417 +
  418 + /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
  419 + background-color: #3F9B6A;
  420 + }
  421 +
  422 + .el-row {
  423 + margin-bottom: 20px;
  424 + }
  425 +
  426 + :last-child {
  427 + margin-bottom: 0;
  428 + }
  429 +
  430 + .el-col {
  431 + border-radius: 4px;
  432 + }
  433 +
  434 + .bg-purple-dark {
  435 + background: #99a9bf;
  436 + }
  437 +
  438 + .bg-purple {
  439 + background: #d3dce6;
  440 + }
  441 +
  442 + .bg-purple-light {
  443 + background: #e5e9f2;
  444 + }
  445 +
  446 + .grid-content {
  447 + border-radius: 4px;
  448 + min-height: 36px;
  449 + }
  450 +
  451 + .row-bg {
  452 + padding: 10px 0;
  453 + background-color: #f9fafc;
  454 + }
  455 +
  456 + /deep/ .bg-purple[data-v-0e3fe4ec] {
  457 + background: #fff;
  458 + height: 50px;
  459 + }
  460 +
  461 + /deep/ .el-form--label-top .el-form-item__label {
  462 + padding: 0;
  463 + }
  464 +
  465 + .demo-input-suffix {
  466 + display: flex;
  467 + margin-right: 20px;
  468 + }
  469 +
  470 + .pagination {
  471 + text-align: right;
  472 + line-height: 20px;
  473 + }
  474 +
  475 + /deep/ .el-pagination__total {
  476 + margin-top: 4px;
  477 + }
  478 +
  479 + ::v-deep .el-select .el-input.is-focus .el-input__inner {
  480 + border-color: #3F9B6A
  481 + }
  482 +
  483 + /deep/ .el-dialog__header {
  484 + background-color: #fff;
  485 + padding: 0
  486 + }
  487 +
  488 + /deep/ .el-radio__input.is-checked .el-radio__inner {
  489 + border-color: #3F9B6A;
  490 + background: #3F9B6A;
  491 + }
  492 +
  493 + ::v-deep .buttonHover:hover {
  494 + color: #3f9b6a !important;
  495 + border-color: #c5e1d2 !important;
  496 + background-color: #ecf5f0 !important;
  497 + outline: none;
  498 + }
  499 +</style>
0 500 \ No newline at end of file
... ...
lvdao-miniapp/pages.json
... ... @@ -141,7 +141,7 @@
141 141 {
142 142 "path": "pages/participation/participation",
143 143 "style": {
144   - "navigationBarTitleText": "活动参与",
  144 + "navigationBarTitleText": "商家活动",
145 145 "navigationBarBackgroundColor": "#fff",
146 146 "enablePullDownRefresh": true
147 147 }
... ...
lvdao-miniapp/pages/participation/participation.vue
1 1 <template>
2 2 <!-- 活动参与 -->
3 3 <view class="page">
4   - <view class="more page-box" @click="toMyAdd">
  4 + <!-- <view class="more page-box" @click="toMyAdd">
5 5 <u-section :bold="false" title="我的活动申请" sub-title='' :show-line="false" color="#0FBB59">
6 6 <view slot="right">
7 7 <u-icon name="arrow-rightward" color="#0FBB59" size="28"></u-icon>
8 8 </view>
9 9 </u-section>
10   - </view>
  10 + </view> -->
11 11 <!-- 搜索 -->
12 12 <!-- <view class="head-search">
13 13 <u-search bg-color="#fff" placeholder="请输入关键词" v-model="pageIndex.activityName" :show-action="false" @search="search"></u-search>
... ... @@ -50,10 +50,10 @@
50 50 </view>
51 51 </view>
52 52  
53   - <view style="height: 120rpx;"></view>
54   - <view class="page-footer">
  53 + <!-- <view style="height: 120rpx;"></view> -->
  54 + <!-- <view class="page-footer">
55 55 <u-button type="success" @click="toAdd">活动申请</u-button>
56   - </view>
  56 + </view> -->
57 57 </view>
58 58 </template>
59 59  
... ...