Commit 8e6b81eeacc8fe60270fbdd69ec7fb0de304bd63

Authored by wesley88
1 parent b5b8bec2

1

admin-web-master/src/api/newly.js
1 import request from '@/utils/request' 1 import request from '@/utils/request'
2 // import request from '@/utils/request2' 2 // import request from '@/utils/request2'
  3 +// 资源数量增长趋势
  4 +export function resourceQuantityGrowth(data) {
  5 + return request({
  6 + url: '/statistical/resourceQuantityGrowth',
  7 + method: 'post',
  8 + data
  9 + })
  10 +}
  11 +// 资源分布统计
  12 +export function resourceDistributionStatistics(data) {
  13 + return request({
  14 + url: '/statistical/resourceDistributionStatistics',
  15 + method: 'post',
  16 + data
  17 + })
  18 +}
  19 +// 资源情况占比
  20 +export function resourceSituationProportion(data) {
  21 + return request({
  22 + url: '/statistical/resourceSituationProportion',
  23 + method: 'post',
  24 + data
  25 + })
  26 +}
  27 +
  28 +// 资源利用率占比
  29 +export function resourceUtilizationProportion(data) {
  30 + return request({
  31 + url: '/statistical/resourceUtilizationProportion',
  32 + method: 'post',
  33 + data
  34 + })
  35 +}
  36 +
3 37
4 38
5 // 租赁情况统计 39 // 租赁情况统计
admin-web-master/src/views/detect/analyse copy.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 style="width: 100%;margin-bottom:30px;">
  9 + <div style="display:flex;justify-content: space-between">
  10 + <div style="display:flex;">
  11 + <!-- <div style="margin-right: 10px;line-height:35px;">商铺/广告位资源统计</div> -->
  12 + <!-- <el-select v-model="formSel.createDate" placeholder="所属区域" style="width: 150px;margin-right: 10px">
  13 + <el-option label="1" value="1" />
  14 + <el-option label="2" value="2" />
  15 + </el-select>
  16 + <el-select v-model="formSel.createDate" placeholder="经营类型" style="width: 150px;margin-right: 10px">
  17 + <el-option label="1" value="1" />
  18 + <el-option label="2" value="2" />
  19 + </el-select> -->
  20 + <el-date-picker v-model="FormTime" value-format="yyyy-MM-dd" type="daterange"
  21 + range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
  22 + style="width: 300px;margin-right: 10px;" prefix-icon="none">
  23 + </el-date-picker>
  24 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff;">查询
  25 + </el-button>
  26 + <el-button @click="resetting" class="buttonHover"
  27 + style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置
  28 + </el-button>
  29 + </div>
  30 + <div>
  31 + <el-button @click="gitOut" style="background-color: #3F9B6A;color: #fff">导出
  32 + </el-button>
  33 + </div>
  34 + </div>
  35 +
  36 + </div>
  37 + <div ref="contentToConvert">
  38 + <TitleWithCircle title="商铺/广告位资源统计" style="margin: 20px 0;" />
  39 + <div style="display:flex;">
  40 + <div style="width:48%;height: 400px;">
  41 + <div style="display: flex;justify-content: space-between;">
  42 + <div style="line-height:35px;">资源数量增长趋势</div>
  43 + <!-- <div>
  44 + <el-select v-model="formSel.createDate" placeholder="状态" style="width: 100px;margin-right: 10px">
  45 + <el-option label="1" value="1" />
  46 + <el-option label="2" value="2" />
  47 + </el-select>
  48 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  49 + <el-option label="1" value="1" />
  50 + <el-option label="2" value="2" />
  51 + </el-select>
  52 + </div> -->
  53 + </div>
  54 + <div ref="shop1ZX" style="width:100%;height: 400px;"></div>
  55 + </div>
  56 + <div style="width:48%;height: 400px;">
  57 + <div style="display: flex;justify-content: space-between;">
  58 + <div style="line-height:35px;">各资源数量统计</div>
  59 + <!-- <div>
  60 + <el-select v-model="formSel.createDate" placeholder="状态" style="width: 100px;margin-right: 10px">
  61 + <el-option label="1" value="1" />
  62 + <el-option label="2" value="2" />
  63 + </el-select>
  64 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  65 + <el-option label="1" value="1" />
  66 + <el-option label="2" value="2" />
  67 + </el-select>
  68 + </div> -->
  69 + </div>
  70 + <div ref="shop1TJ" style="width:100%;height: 400px;"></div>
  71 + </div>
  72 + </div>
  73 + <TitleWithCircle title="商铺/广告位意向统计" style="margin: 20px 0;" />
  74 + <div style="width: 100%;">
  75 + <div style="display:flex;justify-content: space-between">
  76 + <div style="display:flex;">
  77 + <!-- <div style="margin-right: 10px;line-height:35px;">商铺/广告位意向统计</div> -->
  78 + <!-- <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"
  79 + end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">
  80 + </el-date-picker>
  81 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索
  82 + </el-button>
  83 + <el-button @click="resetting" class="buttonHover"
  84 + style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置
  85 + </el-button> -->
  86 + </div>
  87 + <!-- <div>
  88 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出
  89 + </el-button>
  90 + </div> -->
  91 + </div>
  92 + <div style="display:flex;margin-top:10px;">
  93 + <div style="width:48%;height: 400px;margin-right:20px;">
  94 + <div style="display: flex;justify-content: space-between;">
  95 + <div style="line-height:35px;">租赁意向人群统计</div>
  96 + <!-- <div>
  97 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  98 + <el-option label="1" value="1" />
  99 + <el-option label="2" value="2" />
  100 + </el-select>
  101 + </div> -->
  102 + </div>
  103 + <div ref="shop2BT" style="width:100%;height: 400px;"></div>
  104 + </div>
  105 + <div style="width:48%;height: 400px;margin-right:20px;">
  106 + <div style="display: flex;justify-content: space-between;">
  107 + <div style="line-height:35px;">意向申请数量</div>
  108 + <!-- <div>
  109 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  110 + <el-option label="1" value="1" />
  111 + <el-option label="2" value="2" />
  112 + </el-select>
  113 + </div> -->
  114 + </div>
  115 + <div ref="shop2TJ" style="width:100%;height: 400px;"></div>
  116 + </div>
  117 + </div>
  118 + </div>
  119 + <!-- <div style="width: 100%;margin-bottom:20px;">
  120 + <div style="display:flex;justify-content: space-between">
  121 + <div style="display:flex;">
  122 + <div style="margin-right: 10px;line-height:35px;">商铺/广告位整体经营统计</div>
  123 + <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"
  124 + end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">
  125 + </el-date-picker>
  126 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索
  127 + </el-button>
  128 + <el-button @click="resetting" class="buttonHover"
  129 + style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置
  130 + </el-button>
  131 + </div>
  132 + <div>
  133 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出
  134 + </el-button>
  135 + </div>
  136 + </div>
  137 + <div style="display:flex;margin-top:10px;">
  138 + <div style="width:48%;height: 400px;">
  139 + <div style="display: flex;justify-content: space-between;">
  140 + <div style="line-height:35px;">经营趋势统计</div>
  141 + <div>
  142 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  143 + <el-option label="1" value="1" />
  144 + <el-option label="2" value="2" />
  145 + </el-select>
  146 + </div>
  147 + </div>
  148 + <div ref="shop3ZX" style="width:100%;height: 400px;"></div>
  149 + </div>
  150 + <div style="width:48%;height: 400px;">
  151 + <div style="display: flex;justify-content: space-between;">
  152 + <div style="line-height:35px;">营业收入情况</div>
  153 + <div>
  154 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  155 + <el-option label="1" value="1" />
  156 + <el-option label="2" value="2" />
  157 + </el-select>
  158 + </div>
  159 + </div>
  160 + <div ref="shop3TJ" style="width:100%;height: 400px;"></div>
  161 + </div>
  162 + </div>
  163 + </div> -->
  164 + <!-- 进度条 -->
  165 + <!-- <div style="width: 100%;margin:20px 0;">
  166 + <div style="display:flex;justify-content: space-between">
  167 + <div style="display:flex;">
  168 + <div style="margin-right: 10px;line-height:35px;">商户收费情况统计</div>
  169 + <el-input placeholder="请输入商户名称" v-model="formSel.shopName" style="width:200px;margin-right:15px;" />
  170 + <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"
  171 + end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">
  172 + </el-date-picker>
  173 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索
  174 + </el-button>
  175 + <el-button @click="resetting" class="buttonHover"
  176 + style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置
  177 + </el-button>
  178 + </div>
  179 + <div>
  180 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出
  181 + </el-button>
  182 + </div>
  183 + </div>
  184 + <div style="margin-top:10px;padding:20px">
  185 + <div style="display:flex;margin-bottom:20px;" v-for="index in 5">
  186 + <div style="margin-right:20px;">收费项{{index}}</div>
  187 + <div style='width:90%'><el-progress :percentage="50"></el-progress></div>
  188 + </div>
  189 + </div>
  190 + </div> -->
  191 +
  192 + <!-- <div style="width: 100%;margin:20px 0;">
  193 + <div style="display:flex;justify-content: space-between">
  194 + <div style="display:flex;">
  195 + <div style="margin-right: 10px;line-height:35px;">收费位置统计</div>
  196 + <el-input placeholder="请输入商户名称" v-model="formSel.shopName" style="width:200px;margin-right:15px;" />
  197 + <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"
  198 + end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">
  199 + </el-date-picker>
  200 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索
  201 + </el-button>
  202 + <el-button @click="resetting" class="buttonHover"
  203 + style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置
  204 + </el-button>
  205 + </div>
  206 + <div>
  207 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出
  208 + </el-button>
  209 + </div>
  210 + </div>
  211 + <div style="margin-top:10px;padding:20px">
  212 + <div style="display:flex;margin-bottom:20px;" v-for="index in 5">
  213 + <div style="margin-right:20px;">线上商城{{index}}</div>
  214 + <div style='width:90%'><el-progress :percentage="50"></el-progress></div>
  215 + </div>
  216 + </div>
  217 + </div> -->
  218 +
  219 + <!-- <div style="width: 100%;margin-bottom:20px;">
  220 + <div style="display:flex;justify-content: space-between">
  221 + <div style="display:flex;">
  222 + <div style="margin-right: 10px;line-height:35px;">出租、退租、续租统计</div>
  223 + <el-select v-model="formSel.createDate" placeholder="所属区域" style="width: 150px;margin-right: 10px">
  224 + <el-option label="1" value="1" />
  225 + <el-option label="2" value="2" />
  226 + </el-select>
  227 + <el-select v-model="formSel.createDate" placeholder="经营类型" style="width: 150px;margin-right: 10px">
  228 + <el-option label="1" value="1" />
  229 + <el-option label="2" value="2" />
  230 + </el-select>
  231 + <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"
  232 + end-placeholder="结束日期" style="width: 200px;margin-right: 10px;ma" prefix-icon="none">
  233 + </el-date-picker>
  234 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索
  235 + </el-button>
  236 + <el-button @click="resetting" class="buttonHover"
  237 + style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置
  238 + </el-button>
  239 + </div>
  240 + <div>
  241 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出
  242 + </el-button>
  243 + </div>
  244 + </div>
  245 + <div style="display:flex;margin-top:10px;">
  246 + <div style="width:48%;height: 400px;">
  247 + <div style="display: flex;justify-content: space-between;">
  248 + <div style="line-height:35px;">租赁趋势统计</div>
  249 + <div>
  250 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  251 + <el-option label="1" value="1" />
  252 + <el-option label="2" value="2" />
  253 + </el-select>
  254 + </div>
  255 + </div>
  256 + <div ref="shop4ZX" style="width:100%;height: 400px;"></div>
  257 + </div>
  258 + <div style="width:48%;height: 400px;">
  259 + <div style="display: flex;justify-content: space-between;">
  260 + <div style="line-height:35px;">租赁商户top5</div>
  261 + <div>
  262 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  263 + <el-option label="1" value="1" />
  264 + <el-option label="2" value="2" />
  265 + </el-select>
  266 + </div>
  267 + </div>
  268 + <div ref="shop4TJ" style="width:100%;height: 400px;"></div>
  269 + </div>
  270 + </div>
  271 + </div> -->
  272 + <TitleWithCircle title="合同情况统计" style="margin: 20px 0;" />
  273 + <div style="width: 100%;">
  274 + <div style="display:flex;justify-content: space-between">
  275 + <div style="display:flex;">
  276 + <!-- <div style="margin-right: 10px;line-height:35px;">合同情况统计</div> -->
  277 + <!-- <el-select v-model="formSel.createDate" placeholder="所属区域" style="width: 150px;margin-right: 10px">
  278 + <el-option label="1" value="1" />
  279 + <el-option label="2" value="2" />
  280 + </el-select>
  281 + <el-select v-model="formSel.createDate" placeholder="经营类型" style="width: 150px;margin-right: 10px">
  282 + <el-option label="1" value="1" />
  283 + <el-option label="2" value="2" />
  284 + </el-select>
  285 + <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"
  286 + end-placeholder="结束日期" style="width: 200px;margin-right: 10px;ma" prefix-icon="none">
  287 + </el-date-picker>
  288 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索
  289 + </el-button>
  290 + <el-button @click="resetting" class="buttonHover"
  291 + style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置
  292 + </el-button> -->
  293 + </div>
  294 + <!-- <div>
  295 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出
  296 + </el-button>
  297 + </div> -->
  298 + </div>
  299 + <div style="display:flex;margin-top:10px;">
  300 + <div style="width:48%;height: 400px;">
  301 + <div style="display: flex;justify-content: space-between;">
  302 + <div style="line-height:35px;">合同签约数量趋势</div>
  303 + <!-- <div>
  304 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  305 + <el-option label="1" value="1" />
  306 + <el-option label="2" value="2" />
  307 + </el-select>
  308 + </div> -->
  309 + </div>
  310 + <div ref="shop5ZX" style="width:100%;height: 400px;"></div>
  311 + </div>
  312 + <div style="width:48%;height: 400px;">
  313 + <div style="display: flex;justify-content: space-between;">
  314 + <div style="line-height:35px;">签约数量占比</div>
  315 + <!-- <div>
  316 + <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">
  317 + <el-option label="1" value="1" />
  318 + <el-option label="2" value="2" />
  319 + </el-select>
  320 + </div> -->
  321 + </div>
  322 + <div ref="shop5BT" style="width:100%;height: 400px;"></div>
  323 + </div>
  324 + </div>
  325 + </div>
  326 + </div>
  327 + </div>
  328 +
  329 + </div>
  330 +</template>
  331 +
  332 +<script>
  333 + import html2canvas from 'html2canvas'
  334 + import jsPDF from 'jspdf'
  335 + import TitleWithCircle from '@/components/top/index';
  336 + import {
  337 + statistical,
  338 + } from '@/api/information'
  339 + import * as echarts from 'echarts'
  340 + import {
  341 + async
  342 + } from 'q';
  343 + export default {
  344 + components: {
  345 + TitleWithCircle,
  346 + },
  347 + name: 'atmosphereGl',
  348 + data() {
  349 + return {
  350 + currentPage: 1,
  351 + radio1: 0,
  352 + total: 100,
  353 + flag: false,
  354 + pageSize: 10,
  355 + tableData: [],
  356 + FormTime: [],
  357 + pageindex: {
  358 + startTime: "1990-09-11",
  359 + endTime: "2024-11-09"
  360 + },
  361 + formSel: {
  362 +
  363 + }
  364 + }
  365 + },
  366 + computed: {},
  367 + created() {
  368 + //获取今天日期和一个月前的日期
  369 + let today = new Date();
  370 + let monthAgo = new Date();
  371 + monthAgo.setMonth(monthAgo.getMonth() - 1);
  372 + monthAgo.setDate(monthAgo.getDate() + 1);
  373 + this.pageindex.startTime = monthAgo.toISOString().slice(0, 10);
  374 + this.pageindex.endTime = today.toISOString().slice(0, 10);
  375 + this.FormTime = [
  376 + this.pageindex.startTime,
  377 + this.pageindex.endTime
  378 + ]
  379 + console.error(this.pageindex)
  380 + this.getAll()
  381 +
  382 + },
  383 + mounted() {
  384 +
  385 + // this.charDam1()
  386 + // this.charDam2()
  387 + // this.charDam3()
  388 + // this.charDam4()
  389 + // this.charDam5()
  390 +
  391 + // this.charDam7()
  392 +
  393 + // this.charDam9()
  394 + },
  395 + methods: {
  396 + charDam(datas) {
  397 + let Dom = this.$refs.shop2TJ
  398 + let myChart = echarts.init(Dom)
  399 + let processedData = datas.map(item => ({
  400 + name: item.trendDate,
  401 + value: item.trendQuantity
  402 + }))
  403 + let option = {
  404 + legend: {},
  405 + tooltip: {},
  406 + xAxis: {
  407 + type: 'category',
  408 + data: processedData.map(item => item.name),
  409 + },
  410 + yAxis: {
  411 + type: 'value',
  412 + },
  413 + grid: {
  414 + left: '1%',
  415 + right: '1%',
  416 + top: '5%',
  417 + bottom: '6%',
  418 + containLabel: true
  419 + },
  420 + series: [{
  421 + type: 'bar',
  422 + color: '#3f9b6a',
  423 + data: processedData.map(item => item.value),
  424 + }]
  425 + };
  426 + option && myChart.setOption(option);
  427 + },
  428 + charDam1(datas) {
  429 + let Dom = this.$refs.shop1ZX
  430 + let myChart = echarts.init(Dom);
  431 +
  432 + let processedData = datas.map(item => ({
  433 + name: item.trendDate || '11',
  434 + value: item.trendQuantity
  435 + }))
  436 + processedData.push({
  437 + name: '',
  438 + value: 0
  439 + })
  440 + let option = {
  441 + xAxis: {
  442 + type: 'category',
  443 + data: ['商铺', '场地', '广告位'],
  444 + },
  445 + yAxis: {
  446 + type: 'value',
  447 + max: 50
  448 + },
  449 + grid: {
  450 + left: '1%',
  451 + right: '5%',
  452 + top: '5%',
  453 + bottom: '6%',
  454 + containLabel: true
  455 + },
  456 + series: [{ // 设置线条颜色
  457 + lineStyle: {
  458 + color: '#3f9b6a', // 这里设置为红色
  459 + width: 2, // 线条宽度
  460 + },
  461 + data: processedData.map(item => item.value),
  462 + type: 'line'
  463 + }]
  464 + }
  465 + option && myChart.setOption(option);
  466 + },
  467 + charDam2(datas) {
  468 + let Dom = this.$refs.shop2BT
  469 + let myChart = echarts.init(Dom);
  470 + let processedData = datas.map(item => ({
  471 + name: item.trendDate,
  472 + value: item.trendQuantity
  473 + }))
  474 +
  475 +
  476 + let option = {
  477 + tooltip: {
  478 + trigger: 'item'
  479 + },
  480 + legend: {
  481 + top: '5%',
  482 + left: 'right'
  483 + },
  484 + series: [{
  485 + type: 'pie',
  486 + radius: ['40%', '70%'],
  487 + avoidLabelOverlap: false,
  488 + itemStyle: {
  489 + borderRadius: 10,
  490 + borderColor: '#fff',
  491 + borderWidth: 2
  492 + },
  493 + label: {
  494 + show: false,
  495 + position: 'center'
  496 + },
  497 + emphasis: {
  498 + label: {
  499 + show: true,
  500 + fontSize: 40,
  501 + fontWeight: 'bold'
  502 + }
  503 + },
  504 + labelLine: {
  505 + show: false
  506 + },
  507 + color: ['#3f9b6a', 'rgb(61,182,211)'],
  508 + data: processedData,
  509 + }]
  510 + }
  511 + option && myChart.setOption(option);
  512 + },
  513 + charDam3(datas) {
  514 + let Dom = this.$refs.shop1TJ
  515 + let myChart = echarts.init(Dom);
  516 +
  517 + let processedData = datas.map(item => ({
  518 + // name: item.trendDate || '11',
  519 + value: item.trendQuantity
  520 + }))
  521 + let option = {
  522 + legend: {},
  523 + tooltip: {},
  524 + xAxis: {
  525 + type: 'category',
  526 + data: ['商铺', '场地', '广告位'],
  527 + },
  528 + yAxis: {
  529 + type: 'value',
  530 + max: 50
  531 + },
  532 + grid: {
  533 + left: '1%',
  534 + right: '1%',
  535 + top: '5%',
  536 + bottom: '6%',
  537 + containLabel: true
  538 + },
  539 + series: [{
  540 + type: 'bar',
  541 + color: '#3f9b6a',
  542 + data: processedData.map(item => item.value),
  543 + type: 'line'
  544 + }, ]
  545 + };
  546 + option && myChart.setOption(option);
  547 + },
  548 + // charDam4() {
  549 + // let Dom = this.$refs.shop4ZX
  550 + // let myChart = echarts.init(Dom);
  551 + // let option = {
  552 + // xAxis: {
  553 + // type: 'category',
  554 + // data: ['2024-07', '2024-08', '2024-09', '2024-10', '2024-11', '2024-12', '2024-13']
  555 + // },
  556 + // yAxis: {
  557 + // type: 'value'
  558 + // },
  559 + // grid: {
  560 + // left: '1%',
  561 + // right: '1%',
  562 + // top: '5%',
  563 + // bottom: '6%',
  564 + // containLabel: true
  565 + // },
  566 + // series: [{ // 设置线条颜色
  567 + // lineStyle: {
  568 + // color: '#3f9b6a', // 这里设置为红色
  569 + // width: 2, // 线条宽度
  570 + // },
  571 + // data: [0,0, 0, 1, 0, 0],
  572 + // type: 'line'
  573 + // }]
  574 + // }
  575 + // option && myChart.setOption(option);
  576 +
  577 + // },
  578 + // charDam5() {
  579 + // let Dom = this.$refs.shop4TJ
  580 + // let myChart = echarts.init(Dom);
  581 + // let option = {
  582 + // tooltip: {
  583 + // trigger: 'axis',
  584 + // axisPointer: {
  585 + // type: 'shadow'
  586 + // }
  587 + // },
  588 + // grid: {
  589 + // left: '3%',
  590 + // right: '4%',
  591 + // bottom: '3%',
  592 + // containLabel: true
  593 + // },
  594 + // xAxis: {
  595 + // type: 'value',
  596 + // boundaryGap: [0, 0.01]
  597 + // },
  598 + // yAxis: {
  599 + // type: 'category',
  600 + // data: ['商户A', '商户B', '商户C', '商户D', '商户E', ]
  601 + // },
  602 + // series: [{
  603 + // lineStyle: {
  604 + // color: '#3f9b6a', // 这里设置为红色
  605 + // width: 2, // 线条宽度
  606 + // },
  607 + // name: '2011',
  608 + // type: 'bar',
  609 + // data: [2, 4, 5, 4, 1, 5]
  610 + // }]
  611 + // };
  612 + // option && myChart.setOption(option);
  613 + // },
  614 + charDam6(datas) {
  615 +
  616 + let Dom = this.$refs.shop5ZX
  617 + let myChart = echarts.init(Dom)
  618 + let processedData = datas.map(item => ({
  619 + name: item.trendDate,
  620 + value: item.trendQuantity
  621 + }))
  622 + let option = {
  623 + xAxis: {
  624 + type: 'category',
  625 + data: processedData.map(item => item.name),
  626 + },
  627 + yAxis: {
  628 + type: 'value'
  629 + },
  630 + grid: {
  631 + left: '1%',
  632 + right: '1%',
  633 + top: '5%',
  634 + bottom: '6%',
  635 + containLabel: true
  636 + },
  637 + series: [{ // 设置线条颜色
  638 + lineStyle: {
  639 + color: '#3f9b6a', // 这里设置为红色
  640 + width: 2, // 线条宽度
  641 + },
  642 + data: processedData.map(item => item.value),
  643 + type: 'line'
  644 + }]
  645 + }
  646 + option && myChart.setOption(option);
  647 +
  648 +
  649 + },
  650 + charDam7(datas) {
  651 + let Dom = this.$refs.shop5BT
  652 + let myChart = echarts.init(Dom);
  653 +
  654 + let processedData = datas.map(item => ({
  655 + name: '签约数',
  656 + value: item.trendQuantity
  657 + }))
  658 +
  659 + // processedData.push({name:'签约数',value:0})
  660 + let option = {
  661 + tooltip: {
  662 + trigger: 'item'
  663 + },
  664 + legend: {
  665 + top: '5%',
  666 + left: 'center'
  667 + },
  668 + series: [{
  669 + type: 'pie',
  670 + radius: ['40%', '70%'],
  671 + avoidLabelOverlap: false,
  672 + itemStyle: {
  673 + borderRadius: 10,
  674 + borderColor: '#fff',
  675 + borderWidth: 2
  676 + },
  677 + label: {
  678 + show: false,
  679 + position: 'center'
  680 + },
  681 + emphasis: {
  682 + label: {
  683 + show: true,
  684 + fontSize: 40,
  685 + fontWeight: 'bold'
  686 + }
  687 + },
  688 + labelLine: {
  689 + show: false
  690 + },
  691 + data: processedData
  692 + }]
  693 + }
  694 + option && myChart.setOption(option);
  695 + },
  696 +
  697 + // charDam9(){
  698 +
  699 + // let Dom = this.$refs.shop3TJ
  700 + // let myChart = echarts.init(Dom);
  701 + // let option = {
  702 + // tooltip: {
  703 + // trigger: 'axis',
  704 + // axisPointer: {
  705 + // type: 'shadow'
  706 + // }
  707 + // },
  708 + // grid: {
  709 + // left: '3%',
  710 + // right: '4%',
  711 + // bottom: '3%',
  712 + // containLabel: true
  713 + // },
  714 + // xAxis: {
  715 + // type: 'value',
  716 + // boundaryGap: [0, 0.01]
  717 + // },
  718 + // yAxis: {
  719 + // type: 'category',
  720 + // data: ['商户A', '商户B', '商户C', '商户D', '商户E', ]
  721 + // },
  722 + // series: [{
  723 + // lineStyle: {
  724 + // color: '#3f9b6a', // 这里设置为红色
  725 + // width: 2, // 线条宽度
  726 + // },
  727 + // name: '2011',
  728 + // type: 'bar',
  729 + // data: [1, 2, 3, 4, 5, 10]
  730 + // }]
  731 + // };
  732 + // option && myChart.setOption(option);
  733 +
  734 + // },
  735 +
  736 + async getAll() {
  737 + const res = await statistical(this.pageindex)
  738 + console.log(res)
  739 + this.charDam(res.data.seekingIntentionStatistics)
  740 + this.charDam2(res.data.seekingIntentionStatistics)
  741 + this.charDam6(res.data.contractTrend)
  742 +
  743 + this.charDam7(res.data.basicQueryTrends)
  744 + let trends = [...res.data.shopTrend, ...res.data.venueTrend, ...res.data.advertisingTrend]
  745 +
  746 + this.charDam1(trends)
  747 + this.charDam3(trends)
  748 + },
  749 + handleSizeChange() {
  750 +
  751 + },
  752 + handleCurrentChange() {
  753 +
  754 + },
  755 + resetting() {
  756 + let today = new Date();
  757 + let monthAgo = new Date();
  758 + monthAgo.setMonth(monthAgo.getMonth() - 1);
  759 + monthAgo.setDate(monthAgo.getDate() + 1);
  760 + this.pageindex.startTime = monthAgo.toISOString().slice(0, 10);
  761 + this.pageindex.endTime = today.toISOString().slice(0, 10);
  762 + this.FormTime = [
  763 + this.pageindex.startTime,
  764 + this.pageindex.endTime
  765 + ]
  766 + this.getAll()
  767 + },
  768 + async onSubmit() {
  769 +
  770 + let Msg = {
  771 + startTime: this.FormTime[0],
  772 + endTime: this.FormTime[1]
  773 + }
  774 + const res = await statistical(Msg)
  775 + this.charDam(res.data.seekingIntentionStatistics)
  776 + this.charDam2(res.data.seekingIntentionStatistics)
  777 + this.charDam6(res.data.contractTrend)
  778 + this.charDam7(res.data.basicQueryTrends)
  779 + let trends = [...res.data.shopTrend, ...res.data.venueTrend, ...res.data.advertisingTrend]
  780 +
  781 + this.charDam1(trends)
  782 + this.charDam3(trends)
  783 +
  784 + },
  785 + async gitOut() {
  786 + const content = this.$refs.contentToConvert;
  787 +
  788 + // 使用 html2canvas 将 div 渲染为画布
  789 + const canvas = await html2canvas(content);
  790 +
  791 + // 获取画布的图像数据
  792 + const imgData = canvas.toDataURL('image/png');
  793 +
  794 + // 创建一个新的 PDF 文档
  795 + const pdf = new jsPDF('p', 'mm', 'a4');
  796 +
  797 + // 添加图像到 PDF,第二个参数是图像格式,第三个参数是缩放比例
  798 + const imgWidth = 190; // 图像的宽度(mm)
  799 + const imgHeight = (canvas.height * imgWidth) / canvas.width; // 保持图像的宽高比
  800 +
  801 + pdf.addImage(imgData, 'PNG', 10, 10, imgWidth, imgHeight); // 10, 10 是图像在 PDF 中的位置(mm)
  802 +
  803 + // 保存 PDF 文件
  804 + pdf.save('downloaded.pdf');
  805 + },
  806 + }
  807 + }
  808 +</script>
  809 +
  810 +<style scoped>
  811 + .zhuti {
  812 + padding: 0 20px 20px 20px;
  813 + min-height: calc(100vh - 50px - 20px);
  814 + background-color: #Fff;
  815 +
  816 + }
  817 +
  818 + /deep/ .el-form-item__content {
  819 + line-height: 0;
  820 + }
  821 +
  822 +
  823 +
  824 + .formSearch {
  825 + position: relative;
  826 + margin-top: 30px;
  827 + display: flex;
  828 + width: 100%;
  829 + height: 30px;
  830 + font-size: 14px;
  831 + margin-bottom: 10px;
  832 + }
  833 +
  834 + .greens {
  835 + color: #3F9B6A;
  836 + }
  837 +
  838 +
  839 + .fenye {
  840 + margin-top: 20px;
  841 + display: flex;
  842 + justify-content: flex-start;
  843 + position: relative;
  844 + }
  845 +
  846 + /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
  847 + background-color: #3F9B6A;
  848 + }
  849 +
  850 + .el-row {
  851 + margin-bottom: 20px;
  852 + }
  853 +
  854 + :last-child {
  855 + margin-bottom: 0;
  856 + }
  857 +
  858 + .el-col {
  859 + border-radius: 4px;
  860 + }
  861 +
  862 + .bg-purple-dark {
  863 + background: #99a9bf;
  864 + }
  865 +
  866 + .bg-purple {
  867 + background: #d3dce6;
  868 + }
  869 +
  870 + .bg-purple-light {
  871 + background: #e5e9f2;
  872 + }
  873 +
  874 + .grid-content {
  875 + border-radius: 4px;
  876 + min-height: 36px;
  877 + }
  878 +
  879 + .row-bg {
  880 + padding: 10px 0;
  881 + background-color: #f9fafc;
  882 + }
  883 +
  884 + /deep/ .bg-purple[data-v-0e3fe4ec] {
  885 + background: #fff;
  886 + height: 50px;
  887 + }
  888 +
  889 + /deep/ .el-form--label-top .el-form-item__label {
  890 + padding: 0;
  891 + }
  892 +
  893 + .demo-input-suffix {
  894 + display: flex;
  895 + margin-right: 20px;
  896 + }
  897 +
  898 + .pagination {
  899 + text-align: right;
  900 + line-height: 20px;
  901 + }
  902 +
  903 + /deep/ .el-pagination__total {
  904 + margin-top: 4px;
  905 + }
  906 +
  907 + ::v-deep .el-select .el-input.is-focus .el-input__inner {
  908 + border-color: #3F9B6A
  909 + }
  910 +
  911 + /deep/ .el-dialog__header {
  912 + background-color: #fff;
  913 + padding: 0
  914 + }
  915 +
  916 + /deep/ .el-radio__input.is-checked .el-radio__inner {
  917 + border-color: #3F9B6A;
  918 + background: #3F9B6A;
  919 + }
  920 +
  921 + ::v-deep .buttonHover:hover {
  922 + color: #3f9b6a !important;
  923 + border-color: #c5e1d2 !important;
  924 + background-color: #ecf5f0 !important;
  925 + outline: none;
  926 + }
  927 +</style>
0 \ No newline at end of file 928 \ No newline at end of file
admin-web-master/src/views/detect/analyse.vue
@@ -8,15 +8,6 @@ @@ -8,15 +8,6 @@
8 <div style="width: 100%;margin-bottom:30px;"> 8 <div style="width: 100%;margin-bottom:30px;">
9 <div style="display:flex;justify-content: space-between"> 9 <div style="display:flex;justify-content: space-between">
10 <div style="display:flex;"> 10 <div style="display:flex;">
11 - <!-- <div style="margin-right: 10px;line-height:35px;">商铺/广告位资源统计</div> -->  
12 - <!-- <el-select v-model="formSel.createDate" placeholder="所属区域" style="width: 150px;margin-right: 10px">  
13 - <el-option label="1" value="1" />  
14 - <el-option label="2" value="2" />  
15 - </el-select>  
16 - <el-select v-model="formSel.createDate" placeholder="经营类型" style="width: 150px;margin-right: 10px">  
17 - <el-option label="1" value="1" />  
18 - <el-option label="2" value="2" />  
19 - </el-select> -->  
20 <el-date-picker v-model="FormTime" value-format="yyyy-MM-dd" type="daterange" 11 <el-date-picker v-model="FormTime" value-format="yyyy-MM-dd" type="daterange"
21 range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" 12 range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
22 style="width: 300px;margin-right: 10px;" prefix-icon="none"> 13 style="width: 300px;margin-right: 10px;" prefix-icon="none">
@@ -32,300 +23,18 @@ @@ -32,300 +23,18 @@
32 </el-button> 23 </el-button>
33 </div> 24 </div>
34 </div> 25 </div>
35 -  
36 </div> 26 </div>
37 - <div ref="contentToConvert">  
38 - <TitleWithCircle title="商铺/广告位资源统计" style="margin: 20px 0;" />  
39 - <div style="display:flex;">  
40 - <div style="width:48%;height: 400px;">  
41 - <div style="display: flex;justify-content: space-between;">  
42 - <div style="line-height:35px;">资源数量增长趋势</div>  
43 - <!-- <div>  
44 - <el-select v-model="formSel.createDate" placeholder="状态" style="width: 100px;margin-right: 10px">  
45 - <el-option label="1" value="1" />  
46 - <el-option label="2" value="2" />  
47 - </el-select>  
48 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
49 - <el-option label="1" value="1" />  
50 - <el-option label="2" value="2" />  
51 - </el-select>  
52 - </div> -->  
53 - </div>  
54 - <div ref="shop1ZX" style="width:100%;height: 400px;"></div>  
55 - </div>  
56 - <div style="width:48%;height: 400px;">  
57 - <div style="display: flex;justify-content: space-between;">  
58 - <div style="line-height:35px;">各资源数量统计</div>  
59 - <!-- <div>  
60 - <el-select v-model="formSel.createDate" placeholder="状态" style="width: 100px;margin-right: 10px">  
61 - <el-option label="1" value="1" />  
62 - <el-option label="2" value="2" />  
63 - </el-select>  
64 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
65 - <el-option label="1" value="1" />  
66 - <el-option label="2" value="2" />  
67 - </el-select>  
68 - </div> -->  
69 - </div>  
70 - <div ref="shop1TJ" style="width:100%;height: 400px;"></div>  
71 - </div>  
72 - </div>  
73 - <TitleWithCircle title="商铺/广告位意向统计" style="margin: 20px 0;" />  
74 - <div style="width: 100%;">  
75 - <div style="display:flex;justify-content: space-between">  
76 - <div style="display:flex;">  
77 - <!-- <div style="margin-right: 10px;line-height:35px;">商铺/广告位意向统计</div> -->  
78 - <!-- <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"  
79 - end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">  
80 - </el-date-picker>  
81 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索  
82 - </el-button>  
83 - <el-button @click="resetting" class="buttonHover"  
84 - style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置  
85 - </el-button> -->  
86 - </div>  
87 - <!-- <div>  
88 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出  
89 - </el-button>  
90 - </div> -->  
91 - </div>  
92 - <div style="display:flex;margin-top:10px;">  
93 - <div style="width:48%;height: 400px;margin-right:20px;">  
94 - <div style="display: flex;justify-content: space-between;">  
95 - <div style="line-height:35px;">租赁意向人群统计</div>  
96 - <!-- <div>  
97 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
98 - <el-option label="1" value="1" />  
99 - <el-option label="2" value="2" />  
100 - </el-select>  
101 - </div> -->  
102 - </div>  
103 - <div ref="shop2BT" style="width:100%;height: 400px;"></div>  
104 - </div>  
105 - <div style="width:48%;height: 400px;margin-right:20px;">  
106 - <div style="display: flex;justify-content: space-between;">  
107 - <div style="line-height:35px;">意向申请数量</div>  
108 - <!-- <div>  
109 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
110 - <el-option label="1" value="1" />  
111 - <el-option label="2" value="2" />  
112 - </el-select>  
113 - </div> -->  
114 - </div>  
115 - <div ref="shop2TJ" style="width:100%;height: 400px;"></div>  
116 - </div>  
117 - </div>  
118 - </div>  
119 - <!-- <div style="width: 100%;margin-bottom:20px;">  
120 - <div style="display:flex;justify-content: space-between">  
121 - <div style="display:flex;">  
122 - <div style="margin-right: 10px;line-height:35px;">商铺/广告位整体经营统计</div>  
123 - <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"  
124 - end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">  
125 - </el-date-picker>  
126 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索  
127 - </el-button>  
128 - <el-button @click="resetting" class="buttonHover"  
129 - style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置  
130 - </el-button>  
131 - </div>  
132 - <div>  
133 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出  
134 - </el-button>  
135 - </div>  
136 - </div>  
137 - <div style="display:flex;margin-top:10px;">  
138 - <div style="width:48%;height: 400px;">  
139 - <div style="display: flex;justify-content: space-between;">  
140 - <div style="line-height:35px;">经营趋势统计</div>  
141 - <div>  
142 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
143 - <el-option label="1" value="1" />  
144 - <el-option label="2" value="2" />  
145 - </el-select>  
146 - </div>  
147 - </div>  
148 - <div ref="shop3ZX" style="width:100%;height: 400px;"></div>  
149 - </div>  
150 - <div style="width:48%;height: 400px;">  
151 - <div style="display: flex;justify-content: space-between;">  
152 - <div style="line-height:35px;">营业收入情况</div>  
153 - <div>  
154 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
155 - <el-option label="1" value="1" />  
156 - <el-option label="2" value="2" />  
157 - </el-select>  
158 - </div>  
159 - </div>  
160 - <div ref="shop3TJ" style="width:100%;height: 400px;"></div>  
161 - </div>  
162 - </div>  
163 - </div> -->  
164 - <!-- 进度条 -->  
165 - <!-- <div style="width: 100%;margin:20px 0;">  
166 - <div style="display:flex;justify-content: space-between">  
167 - <div style="display:flex;">  
168 - <div style="margin-right: 10px;line-height:35px;">商户收费情况统计</div>  
169 - <el-input placeholder="请输入商户名称" v-model="formSel.shopName" style="width:200px;margin-right:15px;" />  
170 - <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"  
171 - end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">  
172 - </el-date-picker>  
173 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索  
174 - </el-button>  
175 - <el-button @click="resetting" class="buttonHover"  
176 - style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置  
177 - </el-button>  
178 - </div>  
179 - <div>  
180 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出  
181 - </el-button>  
182 - </div>  
183 - </div>  
184 - <div style="margin-top:10px;padding:20px">  
185 - <div style="display:flex;margin-bottom:20px;" v-for="index in 5">  
186 - <div style="margin-right:20px;">收费项{{index}}</div>  
187 - <div style='width:90%'><el-progress :percentage="50"></el-progress></div>  
188 - </div>  
189 - </div>  
190 - </div> -->  
191 -  
192 - <!-- <div style="width: 100%;margin:20px 0;">  
193 - <div style="display:flex;justify-content: space-between">  
194 - <div style="display:flex;">  
195 - <div style="margin-right: 10px;line-height:35px;">收费位置统计</div>  
196 - <el-input placeholder="请输入商户名称" v-model="formSel.shopName" style="width:200px;margin-right:15px;" />  
197 - <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"  
198 - end-placeholder="结束日期" style="width: 200px;margin-right: 10px;margin-top:0px;" prefix-icon="none">  
199 - </el-date-picker>  
200 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索  
201 - </el-button>  
202 - <el-button @click="resetting" class="buttonHover"  
203 - style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置  
204 - </el-button>  
205 - </div>  
206 - <div>  
207 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出  
208 - </el-button>  
209 - </div>  
210 - </div>  
211 - <div style="margin-top:10px;padding:20px">  
212 - <div style="display:flex;margin-bottom:20px;" v-for="index in 5">  
213 - <div style="margin-right:20px;">线上商城{{index}}</div>  
214 - <div style='width:90%'><el-progress :percentage="50"></el-progress></div>  
215 - </div>  
216 - </div>  
217 - </div> -->  
218 -  
219 - <!-- <div style="width: 100%;margin-bottom:20px;">  
220 - <div style="display:flex;justify-content: space-between">  
221 - <div style="display:flex;">  
222 - <div style="margin-right: 10px;line-height:35px;">出租、退租、续租统计</div>  
223 - <el-select v-model="formSel.createDate" placeholder="所属区域" style="width: 150px;margin-right: 10px">  
224 - <el-option label="1" value="1" />  
225 - <el-option label="2" value="2" />  
226 - </el-select>  
227 - <el-select v-model="formSel.createDate" placeholder="经营类型" style="width: 150px;margin-right: 10px">  
228 - <el-option label="1" value="1" />  
229 - <el-option label="2" value="2" />  
230 - </el-select>  
231 - <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"  
232 - end-placeholder="结束日期" style="width: 200px;margin-right: 10px;ma" prefix-icon="none">  
233 - </el-date-picker>  
234 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索  
235 - </el-button>  
236 - <el-button @click="resetting" class="buttonHover"  
237 - style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置  
238 - </el-button>  
239 - </div>  
240 - <div>  
241 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出  
242 - </el-button>  
243 - </div>  
244 - </div>  
245 - <div style="display:flex;margin-top:10px;">  
246 - <div style="width:48%;height: 400px;">  
247 - <div style="display: flex;justify-content: space-between;">  
248 - <div style="line-height:35px;">租赁趋势统计</div>  
249 - <div>  
250 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
251 - <el-option label="1" value="1" />  
252 - <el-option label="2" value="2" />  
253 - </el-select>  
254 - </div>  
255 - </div>  
256 - <div ref="shop4ZX" style="width:100%;height: 400px;"></div>  
257 - </div>  
258 - <div style="width:48%;height: 400px;">  
259 - <div style="display: flex;justify-content: space-between;">  
260 - <div style="line-height:35px;">租赁商户top5</div>  
261 - <div>  
262 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
263 - <el-option label="1" value="1" />  
264 - <el-option label="2" value="2" />  
265 - </el-select>  
266 - </div>  
267 - </div>  
268 - <div ref="shop4TJ" style="width:100%;height: 400px;"></div>  
269 - </div>  
270 - </div>  
271 - </div> -->  
272 - <TitleWithCircle title="合同情况统计" style="margin: 20px 0;" />  
273 - <div style="width: 100%;">  
274 - <div style="display:flex;justify-content: space-between">  
275 - <div style="display:flex;">  
276 - <!-- <div style="margin-right: 10px;line-height:35px;">合同情况统计</div> -->  
277 - <!-- <el-select v-model="formSel.createDate" placeholder="所属区域" style="width: 150px;margin-right: 10px">  
278 - <el-option label="1" value="1" />  
279 - <el-option label="2" value="2" />  
280 - </el-select>  
281 - <el-select v-model="formSel.createDate" placeholder="经营类型" style="width: 150px;margin-right: 10px">  
282 - <el-option label="1" value="1" />  
283 - <el-option label="2" value="2" />  
284 - </el-select>  
285 - <el-date-picker v-model="value1" type="datetimerange" range-separator="-" start-placeholder="开始日期"  
286 - end-placeholder="结束日期" style="width: 200px;margin-right: 10px;ma" prefix-icon="none">  
287 - </el-date-picker>  
288 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">检索  
289 - </el-button>  
290 - <el-button @click="resetting" class="buttonHover"  
291 - style="color: #000;border: 1px solid #DBDBDB;background-color: #fff;">重置  
292 - </el-button> -->  
293 - </div>  
294 - <!-- <div>  
295 - <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">导出  
296 - </el-button>  
297 - </div> --> 27 + <div style="width: 100%;">
  28 + <div style="width: 46%;">
  29 + <div>
  30 + <TitleWithCircle title="资源数量增长趋势" style="margin: 20px 0;" />
298 </div> 31 </div>
299 - <div style="display:flex;margin-top:10px;">  
300 - <div style="width:48%;height: 400px;">  
301 - <div style="display: flex;justify-content: space-between;">  
302 - <div style="line-height:35px;">合同签约数量趋势</div>  
303 - <!-- <div>  
304 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
305 - <el-option label="1" value="1" />  
306 - <el-option label="2" value="2" />  
307 - </el-select>  
308 - </div> -->  
309 - </div>  
310 - <div ref="shop5ZX" style="width:100%;height: 400px;"></div>  
311 - </div>  
312 - <div style="width:48%;height: 400px;">  
313 - <div style="display: flex;justify-content: space-between;">  
314 - <div style="line-height:35px;">签约数量占比</div>  
315 - <!-- <div>  
316 - <el-select v-model="formSel.createDate" placeholder="类型" style="width: 100px;margin-right: 10px">  
317 - <el-option label="1" value="1" />  
318 - <el-option label="2" value="2" />  
319 - </el-select>  
320 - </div> -->  
321 - </div>  
322 - <div ref="shop5BT" style="width:100%;height: 400px;"></div>  
323 - </div> 32 + <div>
  33 + <div ref="echarts1" style="width:100%;height: 400px;"></div>
324 </div> 34 </div>
325 </div> 35 </div>
326 </div> 36 </div>
327 </div> 37 </div>
328 -  
329 </div> 38 </div>
330 </template> 39 </template>
331 40
@@ -333,13 +42,13 @@ @@ -333,13 +42,13 @@
333 import html2canvas from 'html2canvas' 42 import html2canvas from 'html2canvas'
334 import jsPDF from 'jspdf' 43 import jsPDF from 'jspdf'
335 import TitleWithCircle from '@/components/top/index'; 44 import TitleWithCircle from '@/components/top/index';
336 - import {  
337 - statistical,  
338 - } from '@/api/information'  
339 import * as echarts from 'echarts' 45 import * as echarts from 'echarts'
340 import { 46 import {
341 - async  
342 - } from 'q'; 47 + resourceQuantityGrowth,
  48 + resourceDistributionStatistics,
  49 + resourceSituationProportion,
  50 + resourceUtilizationProportion,
  51 + } from '@/api/newly.js'
343 export default { 52 export default {
344 components: { 53 components: {
345 TitleWithCircle, 54 TitleWithCircle,
@@ -381,376 +90,53 @@ @@ -381,376 +90,53 @@
381 90
382 }, 91 },
383 mounted() { 92 mounted() {
384 -  
385 - // this.charDam1()  
386 - // this.charDam2()  
387 - // this.charDam3()  
388 - // this.charDam4()  
389 - // this.charDam5()  
390 -  
391 - // this.charDam7()  
392 -  
393 - // this.charDam9()  
394 }, 93 },
395 methods: { 94 methods: {
396 - charDam(datas) {  
397 - let Dom = this.$refs.shop2TJ  
398 - let myChart = echarts.init(Dom)  
399 - let processedData = datas.map(item => ({  
400 - name: item.trendDate,  
401 - value: item.trendQuantity  
402 - }))  
403 - let option = {  
404 - legend: {},  
405 - tooltip: {},  
406 - xAxis: {  
407 - type: 'category',  
408 - data: processedData.map(item => item.name),  
409 - },  
410 - yAxis: {  
411 - type: 'value',  
412 - },  
413 - grid: {  
414 - left: '1%',  
415 - right: '1%',  
416 - top: '5%',  
417 - bottom: '6%',  
418 - containLabel: true  
419 - },  
420 - series: [{  
421 - type: 'bar',  
422 - color: '#3f9b6a',  
423 - data: processedData.map(item => item.value),  
424 - }]  
425 - };  
426 - option && myChart.setOption(option);  
427 - },  
428 - charDam1(datas) {  
429 - let Dom = this.$refs.shop1ZX  
430 - let myChart = echarts.init(Dom);  
431 -  
432 - let processedData = datas.map(item => ({  
433 - name: item.trendDate || '11',  
434 - value: item.trendQuantity  
435 - }))  
436 - processedData.push({  
437 - name: '',  
438 - value: 0  
439 - })  
440 - let option = {  
441 - xAxis: {  
442 - type: 'category',  
443 - data: ['商铺', '场地', '广告位'],  
444 - },  
445 - yAxis: {  
446 - type: 'value',  
447 - max: 50  
448 - },  
449 - grid: {  
450 - left: '1%',  
451 - right: '5%',  
452 - top: '5%',  
453 - bottom: '6%',  
454 - containLabel: true  
455 - },  
456 - series: [{ // 设置线条颜色  
457 - lineStyle: {  
458 - color: '#3f9b6a', // 这里设置为红色  
459 - width: 2, // 线条宽度  
460 - },  
461 - data: processedData.map(item => item.value),  
462 - type: 'line'  
463 - }] 95 + initecharts1(datas) {
  96 + console.error(datas)
  97 + let allx = []
  98 + let list1 = {
  99 + cent:[],
  100 + name:'商铺资源',
464 } 101 }
465 - option && myChart.setOption(option);  
466 - },  
467 - charDam2(datas) {  
468 - let Dom = this.$refs.shop2BT  
469 - let myChart = echarts.init(Dom);  
470 - let processedData = datas.map(item => ({  
471 - name: item.trendDate,  
472 - value: item.trendQuantity  
473 - }))  
474 -  
475 -  
476 - let option = {  
477 - tooltip: {  
478 - trigger: 'item'  
479 - },  
480 - legend: {  
481 - top: '5%',  
482 - left: 'right'  
483 - },  
484 - series: [{  
485 - type: 'pie',  
486 - radius: ['40%', '70%'],  
487 - avoidLabelOverlap: false,  
488 - itemStyle: {  
489 - borderRadius: 10,  
490 - borderColor: '#fff',  
491 - borderWidth: 2  
492 - },  
493 - label: {  
494 - show: false,  
495 - position: 'center'  
496 - },  
497 - emphasis: {  
498 - label: {  
499 - show: true,  
500 - fontSize: 40,  
501 - fontWeight: 'bold'  
502 - }  
503 - },  
504 - labelLine: {  
505 - show: false  
506 - },  
507 - color: ['#3f9b6a', 'rgb(61,182,211)'],  
508 - data: processedData,  
509 - }] 102 + for (let index = 0; index < datas.shopTrend.length; index++) {
  103 + const element = datas.shopTrend[index];
  104 + allx.push(element.trendDate)
  105 + list1.cent.push(element.trendQuantity)
510 } 106 }
511 - option && myChart.setOption(option);  
512 - },  
513 - charDam3(datas) {  
514 - let Dom = this.$refs.shop1TJ  
515 - let myChart = echarts.init(Dom);  
516 -  
517 - let processedData = datas.map(item => ({  
518 - // name: item.trendDate || '11',  
519 - value: item.trendQuantity  
520 - })) 107 + let Dom = this.$refs.echarts1
  108 + let myChart = echarts.init(Dom);
521 let option = { 109 let option = {
522 - legend: {},  
523 - tooltip: {},  
524 - xAxis: {  
525 - type: 'category',  
526 - data: ['商铺', '场地', '广告位'],  
527 - },  
528 - yAxis: {  
529 - type: 'value',  
530 - max: 50  
531 - },  
532 grid: { 110 grid: {
533 - left: '1%',  
534 - right: '1%',  
535 - top: '5%', 111 + top: '3%',
  112 + left: '6%',
  113 + right: '6%',
536 bottom: '6%', 114 bottom: '6%',
537 - containLabel: true  
538 }, 115 },
539 - series: [{  
540 - type: 'bar',  
541 - color: '#3f9b6a',  
542 - data: processedData.map(item => item.value),  
543 - type: 'line'  
544 - }, ]  
545 - };  
546 - option && myChart.setOption(option);  
547 - },  
548 - // charDam4() {  
549 - // let Dom = this.$refs.shop4ZX  
550 - // let myChart = echarts.init(Dom);  
551 - // let option = {  
552 - // xAxis: {  
553 - // type: 'category',  
554 - // data: ['2024-07', '2024-08', '2024-09', '2024-10', '2024-11', '2024-12', '2024-13']  
555 - // },  
556 - // yAxis: {  
557 - // type: 'value'  
558 - // },  
559 - // grid: {  
560 - // left: '1%',  
561 - // right: '1%',  
562 - // top: '5%',  
563 - // bottom: '6%',  
564 - // containLabel: true  
565 - // },  
566 - // series: [{ // 设置线条颜色  
567 - // lineStyle: {  
568 - // color: '#3f9b6a', // 这里设置为红色  
569 - // width: 2, // 线条宽度  
570 - // },  
571 - // data: [0,0, 0, 1, 0, 0],  
572 - // type: 'line'  
573 - // }]  
574 - // }  
575 - // option && myChart.setOption(option);  
576 -  
577 - // },  
578 - // charDam5() {  
579 - // let Dom = this.$refs.shop4TJ  
580 - // let myChart = echarts.init(Dom);  
581 - // let option = {  
582 - // tooltip: {  
583 - // trigger: 'axis',  
584 - // axisPointer: {  
585 - // type: 'shadow'  
586 - // }  
587 - // },  
588 - // grid: {  
589 - // left: '3%',  
590 - // right: '4%',  
591 - // bottom: '3%',  
592 - // containLabel: true  
593 - // },  
594 - // xAxis: {  
595 - // type: 'value',  
596 - // boundaryGap: [0, 0.01]  
597 - // },  
598 - // yAxis: {  
599 - // type: 'category',  
600 - // data: ['商户A', '商户B', '商户C', '商户D', '商户E', ]  
601 - // },  
602 - // series: [{  
603 - // lineStyle: {  
604 - // color: '#3f9b6a', // 这里设置为红色  
605 - // width: 2, // 线条宽度  
606 - // },  
607 - // name: '2011',  
608 - // type: 'bar',  
609 - // data: [2, 4, 5, 4, 1, 5]  
610 - // }]  
611 - // };  
612 - // option && myChart.setOption(option);  
613 - // },  
614 - charDam6(datas) {  
615 -  
616 - let Dom = this.$refs.shop5ZX  
617 - let myChart = echarts.init(Dom)  
618 - let processedData = datas.map(item => ({  
619 - name: item.trendDate,  
620 - value: item.trendQuantity  
621 - }))  
622 - let option = {  
623 xAxis: { 116 xAxis: {
624 type: 'category', 117 type: 'category',
625 - data: processedData.map(item => item.name), 118 + boundaryGap: false,
  119 + data: allx
626 }, 120 },
627 yAxis: { 121 yAxis: {
628 type: 'value' 122 type: 'value'
629 }, 123 },
630 - grid: {  
631 - left: '1%',  
632 - right: '1%',  
633 - top: '5%',  
634 - bottom: '6%',  
635 - containLabel: true  
636 - },  
637 - series: [{ // 设置线条颜色  
638 - lineStyle: {  
639 - color: '#3f9b6a', // 这里设置为红色  
640 - width: 2, // 线条宽度  
641 - },  
642 - data: processedData.map(item => item.value),  
643 - type: 'line'  
644 - }]  
645 - }  
646 - option && myChart.setOption(option);  
647 -  
648 -  
649 - },  
650 - charDam7(datas) {  
651 - let Dom = this.$refs.shop5BT  
652 - let myChart = echarts.init(Dom);  
653 -  
654 - let processedData = datas.map(item => ({  
655 - name: '签约数',  
656 - value: item.trendQuantity  
657 - }))  
658 -  
659 - // processedData.push({name:'签约数',value:0})  
660 - let option = {  
661 - tooltip: {  
662 - trigger: 'item'  
663 - },  
664 - legend: {  
665 - top: '5%',  
666 - left: 'center'  
667 - },  
668 - series: [{  
669 - type: 'pie',  
670 - radius: ['40%', '70%'],  
671 - avoidLabelOverlap: false,  
672 - itemStyle: {  
673 - borderRadius: 10,  
674 - borderColor: '#fff',  
675 - borderWidth: 2  
676 - },  
677 - label: {  
678 - show: false,  
679 - position: 'center'  
680 - },  
681 - emphasis: {  
682 - label: {  
683 - show: true,  
684 - fontSize: 40,  
685 - fontWeight: 'bold'  
686 - }  
687 - },  
688 - labelLine: {  
689 - show: false 124 + series: [
  125 + {
  126 + name: list1.name,
  127 + type: 'line',
  128 + stack: 'Total',
  129 + data: list1.cent
690 }, 130 },
691 - data: processedData  
692 - }]  
693 - } 131 +
  132 + ]
  133 + };
694 option && myChart.setOption(option); 134 option && myChart.setOption(option);
695 }, 135 },
696 -  
697 - // charDam9(){  
698 -  
699 - // let Dom = this.$refs.shop3TJ  
700 - // let myChart = echarts.init(Dom);  
701 - // let option = {  
702 - // tooltip: {  
703 - // trigger: 'axis',  
704 - // axisPointer: {  
705 - // type: 'shadow'  
706 - // }  
707 - // },  
708 - // grid: {  
709 - // left: '3%',  
710 - // right: '4%',  
711 - // bottom: '3%',  
712 - // containLabel: true  
713 - // },  
714 - // xAxis: {  
715 - // type: 'value',  
716 - // boundaryGap: [0, 0.01]  
717 - // },  
718 - // yAxis: {  
719 - // type: 'category',  
720 - // data: ['商户A', '商户B', '商户C', '商户D', '商户E', ]  
721 - // },  
722 - // series: [{  
723 - // lineStyle: {  
724 - // color: '#3f9b6a', // 这里设置为红色  
725 - // width: 2, // 线条宽度  
726 - // },  
727 - // name: '2011',  
728 - // type: 'bar',  
729 - // data: [1, 2, 3, 4, 5, 10]  
730 - // }]  
731 - // };  
732 - // option && myChart.setOption(option);  
733 -  
734 - // },  
735 -  
736 async getAll() { 136 async getAll() {
737 - const res = await statistical(this.pageindex)  
738 - console.log(res)  
739 - this.charDam(res.data.seekingIntentionStatistics)  
740 - this.charDam2(res.data.seekingIntentionStatistics)  
741 - this.charDam6(res.data.contractTrend)  
742 -  
743 - this.charDam7(res.data.basicQueryTrends)  
744 - let trends = [...res.data.shopTrend, ...res.data.venueTrend, ...res.data.advertisingTrend]  
745 -  
746 - this.charDam1(trends)  
747 - this.charDam3(trends)  
748 - },  
749 - handleSizeChange() {  
750 -  
751 - },  
752 - handleCurrentChange() {  
753 - 137 + const res1 = await resourceQuantityGrowth({...this.pageindex})
  138 + console.log(res1.data)
  139 + this.initecharts1(res1.data)
754 }, 140 },
755 resetting() { 141 resetting() {
756 let today = new Date(); 142 let today = new Date();
admin-web-master/src/views/detect/information/index.vue
@@ -195,7 +195,7 @@ @@ -195,7 +195,7 @@
195 }, 195 },
196 tableData: [], 196 tableData: [],
197 total: 0, 197 total: 0,
198 - onaction: '1', 198 + onaction: '2',
199 formInline: {}, 199 formInline: {},
200 } 200 }
201 }, 201 },
admin-web-master/src/views/serve/PerWorkstation/index.vue
@@ -35,22 +35,22 @@ @@ -35,22 +35,22 @@
35 ) 35 )
36 " :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}" 36 " :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
37 style="width: 100%"> 37 style="width: 100%">
38 - <el-table-column label="序号" width="auto" min-width="6%" align="center"> 38 + <el-table-column label="序号" width="80px" align="center">
39 <template slot-scope="scope"> 39 <template slot-scope="scope">
40 {{scope.$index+1}} 40 {{scope.$index+1}}
41 </template> 41 </template>
42 </el-table-column> 42 </el-table-column>
43 - <el-table-column label="标题" prop="title" width="auto" min-width="12%" />  
44 - <el-table-column label="接收商家" prop="receiverMerchant" width="auto" min-width="12%" />  
45 - <!-- <el-table-column label="发布类型" prop="postType" width="auto" min-width="12%" /> 43 + <el-table-column label="标题" prop="title" />
  44 + <el-table-column label="接收商家" prop="receiverMerchant" />
  45 + <!-- <el-table-column label="发布类型" prop="postType" width="auto" min-width="12%" />
46 <el-table-column label="提交时间" prop="publishTime" width="auto" min-width="12%" /> --> 46 <el-table-column label="提交时间" prop="publishTime" width="auto" min-width="12%" /> -->
47 - <el-table-column label="发布状态" prop="status" width="auto" min-width="12%" /> 47 + <!-- <el-table-column label="发布状态" prop="status"/> -->
  48 + <el-table-column label="内容" show-overflow-tooltip prop="content" />
  49 + <el-table-column label="创建时间" prop="createdAt"/>
48 50
49 - <el-table-column label="创建时间" prop="createdAt" width="auto" min-width="12%" />  
50 -  
51 - <el-table-column label="操作" width="auto" min-width="25%"> 51 + <el-table-column label="操作" >
52 <template slot-scope="scope"> 52 <template slot-scope="scope">
53 - <!-- <div class="tableBtn greens" @click="handleEditForm(scope.row,1)"> 53 + <!-- <div class="tableBtn greens" @click="handleEditForm(scope.row,1)">
54 消息提醒查看 54 消息提醒查看
55 </div> 55 </div>
56 <div class="tableBtn greens" @click="handleEditForm(scope.row,2)" > 56 <div class="tableBtn greens" @click="handleEditForm(scope.row,2)" >
@@ -87,38 +87,36 @@ @@ -87,38 +87,36 @@
87 <div style="padding: 0 20px 20px 20px"> 87 <div style="padding: 0 20px 20px 20px">
88 <el-form ref="ruleForm" :model="secondData" label-width="100px"> 88 <el-form ref="ruleForm" :model="secondData" label-width="100px">
89 <el-form-item label="标题"> 89 <el-form-item label="标题">
90 - <el-input v-model="secondData.title" disabled style="width: 90%;" /> 90 + <el-input v-model="secondData.title" disabled style="width: 90%;" />
91 </el-form-item> 91 </el-form-item>
92 <el-form-item label="接收商家" v-if="xian ==1"> 92 <el-form-item label="接收商家" v-if="xian ==1">
93 <el-select v-model="secondData.receiverMerchant" style="width: 90%;" disabled> 93 <el-select v-model="secondData.receiverMerchant" style="width: 90%;" disabled>
94 <!-- <el-option label="电商商家" value="电商商家" /> --> 94 <!-- <el-option label="电商商家" value="电商商家" /> -->
95 - <el-option v-for="(item,index) in receivingMerchantList"  
96 - :key="index" :label="item.label" :value="item.value"></el-option> 95 + <el-option v-for="(item,index) in receivingMerchantList" :key="index" :label="item.label"
  96 + :value="item.value"></el-option>
97 </el-select> 97 </el-select>
98 </el-form-item> 98 </el-form-item>
99 - <el-form-item label="发布类型" v-if="xian ==1">  
100 - <el-radio-group v-model="secondData.postType" @input="radioClick" disabled>  
101 - <el-radio label="立即发布">立即发布</el-radio>  
102 - <!-- <el-radio label="定时发布">定时发布</el-radio> -->  
103 - </el-radio-group>  
104 - <div v-if="secondData.postType == '定时发布'">  
105 - <el-date-picker style="width:90%;margin-right:5px" v-model="secondData.publishTime" disabled  
106 - type="datetime"  
107 - placeholder="选择日期时间" >  
108 - </el-date-picker>  
109 - </div> 99 + <el-form-item label="发布类型" v-if="xian ==1">
  100 + <el-radio-group v-model="secondData.postType" @input="radioClick" disabled>
  101 + <el-radio label="立即发布">立即发布</el-radio>
  102 + <!-- <el-radio label="定时发布">定时发布</el-radio> -->
  103 + </el-radio-group>
  104 + <div v-if="secondData.postType == '定时发布'">
  105 + <el-date-picker style="width:90%;margin-right:5px" v-model="secondData.publishTime" disabled
  106 + type="datetime" placeholder="选择日期时间">
  107 + </el-date-picker>
  108 + </div>
  109 + </el-form-item>
  110 + <el-form-item label="内容" prop="content">
  111 + <el-input maxlength="200" show-word-limit rows="4" v-model="secondData.content" placeholder="请输入"
  112 + type="textarea" />
110 </el-form-item> 113 </el-form-item>
111 - <el-form-item label="内容"> 114 + <!-- <el-form-item label="内容">
112 <div> 115 <div>
113 - <el-input  
114 - type="textarea"  
115 - :rows="2"  
116 - disabled  
117 - style="width: 90%;"  
118 - v-model="secondData.content"> 116 + <el-input type="textarea" :rows="2" disabled style="width: 90%;" v-model="secondData.content">
119 </el-input> 117 </el-input>
120 </div> 118 </div>
121 - </el-form-item> 119 + </el-form-item> -->
122 </el-form> 120 </el-form>
123 </div> 121 </div>
124 </div> 122 </div>
@@ -151,48 +149,48 @@ @@ -151,48 +149,48 @@
151 新增 149 新增
152 </div> 150 </div>
153 <div style="padding: 0 20px 20px 20px"> 151 <div style="padding: 0 20px 20px 20px">
154 - <el-form :model="ruleForm" ref="AddFromOne"  
155 -:rules="rulesOne" label-width="100px"> 152 + <el-form :model="ruleForm" ref="AddFromOne" :rules="rulesOne" label-width="100px">
156 <el-form-item label="标题" prop="title"> 153 <el-form-item label="标题" prop="title">
157 - <el-input v-model="ruleForm.title" placeholder="请输入" /> 154 + <el-input v-model="ruleForm.title" placeholder="请输入" />
158 </el-form-item> 155 </el-form-item>
159 - <el-form-item label="接收商家" prop="receiverMerchant"> 156 + <el-form-item label="接收商家" prop="receiverMerchant">
160 <el-select v-model="ruleForm.receiverMerchant" placeholder="请选择" style="width: 100%;"> 157 <el-select v-model="ruleForm.receiverMerchant" placeholder="请选择" style="width: 100%;">
161 <!-- <el-option label="小程序商家" value="小程序商家" /> --> 158 <!-- <el-option label="小程序商家" value="小程序商家" /> -->
162 - <el-option v-for="(item,index) in receivingMerchantList"  
163 - :key="index" :label="item.label" :value="item.value"></el-option> 159 + <!-- <el-option v-for="(item,index) in receivingMerchantList" :key="index" :label="item.label"
  160 + :value="item.value"></el-option> -->
  161 + <el-option v-for="(item,index) in shopList" :key="index" :label="item.name+ ' ' + item.phone" :value="item.phone+''" />
164 </el-select> 162 </el-select>
165 </el-form-item> 163 </el-form-item>
166 <el-form-item label="发布类型" prop="postType"> 164 <el-form-item label="发布类型" prop="postType">
167 - <el-radio-group v-model="ruleForm.postType" @input="radioClick">  
168 - <el-radio label="立即发布" value="立即发布">立即发布</el-radio>  
169 - <!-- <el-radio label="定时发布" value="定时发布">定时发布</el-radio> -->  
170 - </el-radio-group>  
171 - <div v-if="ruleForm.postType == '定时发布'">  
172 - <el-date-picker style="width:250px;margin-right:5px" v-model="ruleForm.publishTime"  
173 - type="datetime"  
174 - placeholder="选择日期时间" >  
175 - </el-date-picker>  
176 - </div> 165 + <el-radio-group v-model="ruleForm.postType" @input="radioClick">
  166 + <el-radio label="立即发布" value="立即发布">立即发布</el-radio>
  167 + <!-- <el-radio label="定时发布" value="定时发布">定时发布</el-radio> -->
  168 + </el-radio-group>
  169 + <div v-if="ruleForm.postType == '定时发布'">
  170 + <el-date-picker style="width:250px;margin-right:5px" v-model="ruleForm.publishTime" type="datetime"
  171 + placeholder="选择日期时间">
  172 + </el-date-picker>
  173 + </div>
177 </el-form-item> 174 </el-form-item>
178 - <el-form-item label="内容" prop="content"> 175 + <!-- <el-form-item label="内容" prop="content">
179 <div> 176 <div>
180 - <el-input  
181 - type="textarea"  
182 - :rows="2"  
183 - placeholder="请输入"  
184 - v-model="ruleForm.content"> 177 + <el-input type="textarea" :rows="2" placeholder="请输入" v-model="ruleForm.content">
185 </el-input> 178 </el-input>
186 </div> 179 </div>
  180 + </el-form-item> -->
  181 + <el-form-item label="内容" prop="content">
  182 + <el-input maxlength="200" show-word-limit rows="4" v-model="ruleForm.content" placeholder="请输入"
  183 + type="textarea" />
187 </el-form-item> 184 </el-form-item>
  185 + <div style="display: flex;flex-direction: row-reverse;">
  186 + <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"
  187 + @click="closeFn(2)">取 消</el-button>
  188 + <el-button style="background-color: #3F9B6A;color: #fff;padding:8px 15px;margin-right: 15px;" @click="addCheck">确
  189 + 定</el-button>
  190 + </div>
188 </el-form> 191 </el-form>
189 </div> 192 </div>
190 - <span slot="footer" class="dialog-footer">  
191 - <el-button class="buttonHover" style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;"  
192 - @click="closeFn(2)">取 消</el-button>  
193 - <el-button style="background-color: #3F9B6A;color: #fff;padding:8px 15px;" @click="addCheck">确  
194 - 定</el-button>  
195 - </span> 193 +
196 </el-dialog> 194 </el-dialog>
197 195
198 <div class="fenye"> 196 <div class="fenye">
@@ -216,7 +214,9 @@ @@ -216,7 +214,9 @@
216 ManaEdit, 214 ManaEdit,
217 ManaDel, 215 ManaDel,
218 } from '../../../api/PerWorkstation'; 216 } from '../../../api/PerWorkstation';
219 - 217 + import {
  218 + cerePlatformMerchant,
  219 + } from '@/api/newly.js'
220 export default { 220 export default {
221 data() { 221 data() {
222 return { 222 return {
@@ -226,9 +226,10 @@ @@ -226,9 +226,10 @@
226 myHeaders: { 226 myHeaders: {
227 'Authorization-admin': token 227 'Authorization-admin': token
228 }, 228 },
  229 + shopList: [],
229 ggXin: false, // 新增 230 ggXin: false, // 新增
230 formSel: { 231 formSel: {
231 - title:'' 232 + title: ''
232 }, 233 },
233 secondData: { 234 secondData: {
234 235
@@ -236,10 +237,10 @@ @@ -236,10 +237,10 @@
236 ruleForm: { 237 ruleForm: {
237 title: '', //标题 238 title: '', //标题
238 receiverMerchant: '', 239 receiverMerchant: '',
239 - postType: '立即发布' ,  
240 - content:'',  
241 - status:'1',  
242 - publishTime:'' 240 + postType: '立即发布',
  241 + content: '',
  242 + status: '1',
  243 + publishTime: ''
243 }, 244 },
244 currentPage: 1, 245 currentPage: 1,
245 total: 100, 246 total: 100,
@@ -251,30 +252,36 @@ @@ -251,30 +252,36 @@
251 pageNumber: 1, 252 pageNumber: 1,
252 pageSize: 10, 253 pageSize: 10,
253 }, 254 },
254 - fabutype:'1',  
255 - xian:1, 255 + fabutype: '1',
  256 + xian: 1,
256 rulesOne: { 257 rulesOne: {
257 title: [{ 258 title: [{
258 required: true, 259 required: true,
259 message: '请输入通知标题', 260 message: '请输入通知标题',
260 trigger: 'blur' 261 trigger: 'blur'
261 }, ], 262 }, ],
262 - receiverMerchant: [{  
263 - required: true,  
264 - message: '请选择接收商家',  
265 - trigger: 'change'  
266 - }, ],  
267 - content: [{  
268 - required: true,  
269 - message: '请输入通知消息',  
270 - trigger: 'blur'  
271 - }, ], 263 + receiverMerchant: [{
  264 + required: true,
  265 + message: '请选择接收商家',
  266 + trigger: 'blur'
  267 + }, ],
  268 + content: [{
  269 + required: true,
  270 + message: '请输入通知消息',
  271 + trigger: 'blur'
  272 + }, ],
272 }, 273 },
273 } 274 }
274 }, 275 },
275 276
276 created() { 277 created() {
277 - 278 + cerePlatformMerchant({
  279 + checkState: '2',
  280 + pageNumber: 0,
  281 + pageSize: 1000,
  282 + }).then(res => {
  283 + this.shopList = res.data.content
  284 + })
278 }, 285 },
279 computed: { 286 computed: {
280 receivingMerchantList() { 287 receivingMerchantList() {
@@ -326,16 +333,16 @@ @@ -326,16 +333,16 @@
326 async onSubmit() { 333 async onSubmit() {
327 this.formSel.pageNumber = 1 334 this.formSel.pageNumber = 1
328 this.formSel.pageSize = 10 335 this.formSel.pageSize = 10
329 - const res = await ManaGetAll(this.formSel)  
330 - this.tableData = res.data.content  
331 - this.total = res.data.content.length  
332 - this.formSel = {  
333 - title:'',  
334 - } 336 + const res = await ManaGetAll(this.formSel)
  337 + this.tableData = res.data.content
  338 + this.total = res.data.content.length
  339 + this.formSel = {
  340 + title: '',
  341 + }
335 }, 342 },
336 343
337 // 详情点击 344 // 详情点击
338 - handleEditForm(item,val) { 345 + handleEditForm(item, val) {
339 this.secondData = item 346 this.secondData = item
340 this.detbox = true 347 this.detbox = true
341 this.msgid = item.id 348 this.msgid = item.id
@@ -352,37 +359,74 @@ @@ -352,37 +359,74 @@
352 this.ruleForm = { 359 this.ruleForm = {
353 title: '', //标题 360 title: '', //标题
354 receiverMerchant: '', 361 receiverMerchant: '',
355 - postType: '立即发布' ,  
356 - content:'',  
357 - status:'1',  
358 - publishTime:'' 362 + postType: '立即发布',
  363 + content: '',
  364 + status: '1',
  365 + publishTime: ''
359 } 366 }
360 this.ggXin = true; 367 this.ggXin = true;
361 }, 368 },
362 // 新增确定 369 // 新增确定
363 async addCheck() { 370 async addCheck() {
364 - 371 + let that = this
365 this.ruleForm.publishTime = this.updateCurrentTime() 372 this.ruleForm.publishTime = this.updateCurrentTime()
366 this.ruleForm.createdAt = this.updateCurrentTime() 373 this.ruleForm.createdAt = this.updateCurrentTime()
367 // if(this.ruleForm.postType == '立即发布'){ 374 // if(this.ruleForm.postType == '立即发布'){
368 // this.ruleForm.publishTime = '' 375 // this.ruleForm.publishTime = ''
369 // } 376 // }
370 - this.$refs.AddFromOne.validate((valid) => {  
371 - if (valid) {  
372 - ManaAdd(this.ruleForm).then(res=>{  
373 - this.getAll();  
374 - this.ggXin = false;  
375 - })  
376 -  
377 - }else{  
378 - this.$message({  
379 - message: '请填写完整信息',  
380 - type: 'error'  
381 - })  
382 -  
383 - } 377 + let c1 = false
  378 + await this.$refs.AddFromOne.validate((valid) => {
  379 + if (valid) {
  380 +
  381 + } else {
  382 + this.$message({
  383 + message: '请填写完整信息',
  384 + type: 'error'
  385 + })
  386 + }
  387 + c1 = valid
384 }) 388 })
385 - 389 + console.error(c1)
  390 + if(!c1) {
  391 + return
  392 + }
  393 + let c2 = await ManaAdd(this.ruleForm).then(res1 => {
  394 + return res1
  395 + })
  396 + if(c2.data) {
  397 + this.getAll();
  398 + this.ggXin = false;
  399 + let info = {
  400 + type:'通知消息',
  401 + phone:this.ruleForm.receiverMerchant,
  402 + content:{
  403 + type:'1',
  404 + title:this.ruleForm.title,
  405 + content:this.ruleForm.content
  406 + },
  407 + }
  408 + console.log(']]]]]]')
  409 + let res = await that.$setmsg(info);
  410 + console.log(res)
  411 + if (res.code == 200) {
  412 + this.$message({
  413 + message: '发送成功',
  414 + type: 'success'
  415 + })
  416 + this.$emit('removeonaction', '1')
  417 + } else {
  418 + this.$message({
  419 + message: '发送失败',
  420 + type: 'error'
  421 + })
  422 + }
  423 + } else {
  424 + this.$message({
  425 + message: '发送失败',
  426 + type: 'error'
  427 + })
  428 + }
  429 +
386 }, 430 },
387 handleCurrentChange(val) { 431 handleCurrentChange(val) {
388 this.currentPage = val; 432 this.currentPage = val;
@@ -400,30 +444,32 @@ @@ -400,30 +444,32 @@
400 } 444 }
401 }, 445 },
402 //删除列表 446 //删除列表
403 - delGuan(item) {  
404 -  
405 - const h = this.$createElement;  
406 - this.$msgbox({  
407 - title: '消息',  
408 - message: h('p', null, [  
409 - h('span', null, '是否删除 '),  
410 - ]),  
411 - showCancelButton: true,  
412 - showClose:false,  
413 - confirmButtonText: '确定',  
414 - cancelButtonText: '取消',  
415 - customClass:'oe-dialog-btn',  
416 - beforeClose: (action, instance, done) => {  
417 - if (action === 'confirm') {  
418 - ManaDel({id:item.id}).then(res=>{  
419 - this.getAll()  
420 - done();  
421 - })  
422 - } else {  
423 - done();  
424 - } 447 + delGuan(item) {
  448 +
  449 + const h = this.$createElement;
  450 + this.$msgbox({
  451 + title: '消息',
  452 + message: h('p', null, [
  453 + h('span', null, '是否删除 '),
  454 + ]),
  455 + showCancelButton: true,
  456 + showClose: false,
  457 + confirmButtonText: '确定',
  458 + cancelButtonText: '取消',
  459 + customClass: 'oe-dialog-btn',
  460 + beforeClose: (action, instance, done) => {
  461 + if (action === 'confirm') {
  462 + ManaDel({
  463 + id: item.id
  464 + }).then(res => {
  465 + this.getAll()
  466 + done();
  467 + })
  468 + } else {
  469 + done();
425 } 470 }
426 - }) 471 + }
  472 + })
427 }, 473 },
428 474
429 handleClick() {}, 475 handleClick() {},
@@ -439,17 +485,20 @@ @@ -439,17 +485,20 @@
439 // 重置按钮 485 // 重置按钮
440 resetting() { 486 resetting() {
441 this.formSel = { 487 this.formSel = {
442 - title:'' 488 + title: ''
443 }; 489 };
444 this.getAll(); 490 this.getAll();
445 }, 491 },
446 - radioClick(tiem){  
447 - this.ruleForm.time ='' 492 + radioClick(tiem) {
  493 + this.ruleForm.time = ''
448 } 494 }
449 } 495 }
450 }; 496 };
451 </script> 497 </script>
452 <style scoped> 498 <style scoped>
  499 +.el-radio-group {
  500 + margin-top: 0 !important;
  501 +}
453 /deep/ .first-column-bg { 502 /deep/ .first-column-bg {
454 background-color: #f4f4f5 !important; 503 background-color: #f4f4f5 !important;
455 } 504 }
lvdao-miniapp/pages/message/message.vue
@@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
44 </view> 44 </view>
45 <view class="data"> 45 <view class="data">
46 <view class="title"> 46 <view class="title">
47 - <text>通知消息</text> 47 + <text>平台消息</text>
48 </view> 48 </view>
49 49
50 <view class="describe"> 50 <view class="describe">
@@ -206,8 +206,8 @@ @@ -206,8 +206,8 @@
206 this.zjlist = [] 206 this.zjlist = []
207 this.wylist = [] 207 this.wylist = []
208 let info = { 208 let info = {
209 - // phone:uni.getStorageSync('user').phone,  
210 - phone:'18121815598', 209 + phone:uni.getStorageSync('user').phone,
  210 + // phone:'18121815598',
211 isRead:'0' 211 isRead:'0'
212 } 212 }
213 213
lvdao-miniapp/pagesA/procedureList/procedureList.vue
@@ -44,8 +44,8 @@ @@ -44,8 +44,8 @@
44 onShow(option) { 44 onShow(option) {
45 this.tableList = [] 45 this.tableList = []
46 let info = { 46 let info = {
47 - // phone:uni.getStorageSync('user').phone,  
48 - phone:'18121815598', 47 + phone:uni.getStorageSync('user').phone,
  48 + // phone:'18121815598',
49 } 49 }
50 this.$http.sendRequest('/cereMessage/viewMessage', 'POST',{...info,messageType:this.type},1).then(res => { 50 this.$http.sendRequest('/cereMessage/viewMessage', 'POST',{...info,messageType:this.type},1).then(res => {
51 let obj = res.data.data 51 let obj = res.data.data