yz3456
2024-05-10 76f84021c817dbec24bde29c903a1ee8cff6d042
ruoyi-ui/src/views/meeting/statistics.vue
@@ -16,34 +16,34 @@
            </div>
          </el-button>
        </div>
        <div style="display: flex; align-items: center;">
        <!-- <div style="display: flex; align-items: center;">
          <el-button @click="newRequest" size="mini" type="text" v-hasPermi="['person:information:memo']" style="margin-left: 10px">
            <div class="form2" style="width: 100px;"><el-icon style="padding-right:30px;"></el-icon>
              <span class="text" style="width: 69px;height: 26px;font-size: 16px;
              font-family: Microsoft YaHei-Regular, Microsoft YaHei; color: #EBA4AA;">新建</span>
            </div>
          </el-button>
        </div>
        </div> -->
      </h1>
      <hr />
      <el-table :data="tableData" border :header-cell-style="{ background: 'pink', fontSize: '13px', color: 'black' }"
      <el-table :data="meetingList" border :header-cell-style="{ background: 'pink', fontSize: '13px', color: 'black' }"
        :row-class-name="tableRowClassName" :row-key="getRowId">
        <el-table-column label="家庭号" prop="num" sortable align="center">
          <template slot-scope="scope">{{ scope.row.num
        ? scope.row.num : '————' }}</template>
        <el-table-column label="家庭号" prop="familyId" sortable align="center">
          <template slot-scope="scope">{{ scope.row.familyId
        ? scope.row.familyId : '————' }}</template>
        </el-table-column>
        <el-table-column label="使用时间" prop="time" sortable align="center">
          <template slot-scope="scope">{{ scope.row.time
        ? scope.row.time : '————' }}</template>
        <el-table-column label="使用时间" prop="useTime" sortable align="center">
          <template slot-scope="scope">{{ scope.row.useTime
        ? scope.row.useTime : '————' }}</template>
        </el-table-column>
        <el-table-column label="会议室名称" prop="address" sortable align="center">
        <el-table-column label="会议室名称" prop="conferenceRoom" sortable align="center">
          <template slot-scope="scope">{{
        scope.row.address ? scope.row.address : '————' }}</template>
        scope.row.conferenceRoom ? scope.row.conferenceRoom : '————' }}</template>
        </el-table-column>
        <el-table-column label="标题" prop="title" sortable align="center">
@@ -51,14 +51,14 @@
        ? scope.row.title : '————' }}</template>
        </el-table-column>
        <el-table-column label="申请人" prop="applicant" sortable align="center">
        <el-table-column label="申请人" prop="applyPerson" sortable align="center">
          <template slot-scope="scope">{{
        scope.row.applicant ? scope.row.applicant : '————' }}</template>
        scope.row.applyPerson ? scope.row.applyPerson : '————' }}</template>
        </el-table-column>
        <el-table-column label="审批人" prop="approve" sortable align="center">
          <template slot-scope="scope">{{ scope.row.approve ?
        scope.row.approve : '————' }}</template>
        <el-table-column label="审批人" prop="ratifyPerson" sortable align="center">
          <template slot-scope="scope">{{ scope.row.ratifyPerson ?
        scope.row.ratifyPerson : '————' }}</template>
        </el-table-column>
        <el-table-column label="状态" prop="status" sortable align="center">
@@ -69,31 +69,40 @@
        <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
          <template slot-scope="scope" v-if="scope.row.roleId !== 1">
            <div class="button-container">
              <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
              <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
              <!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button> -->
              <!-- <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button> -->
              <el-button size="mini" type="text" icon="el-icon-d-arrow-right" @click="handleCheck(scope.row)">查看详情</el-button>
            </div>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total>0"
        :total="total"
        :page.sync="queryParams.pageNum"
        :limit.sync="queryParams.pageSize"
        @pagination="getList"
        style="background: #FEF7FC;"
      />
      <!-- 图表统计 -->
      <el-dialog :title="title2" :visible.sync="open2" width="1500px" append-to-body>
        <div class="p1">
          <h1 style="font-size:21px">每月会议次数统计</h1>
      <el-dialog :title="title2" :visible.sync="open2" width="1500px" @open="openGraph()" append-to-body>
        <!-- class="p1" -->
        <div class="p1" id="main1">
          <!-- <h1 style="font-size:21px">每月会议次数统计</h1> -->
        </div>
        <div class="p1">
          <h1 style="font-size:21px">会议家庭占比统计</h1>
        <div class="p1" id="main2">
          <!-- <h1 style="font-size:21px">会议家庭占比统计</h1> -->
        </div>
      </el-dialog>
      <!-- 新增数据框 -->
      <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
      <!-- <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
        <el-form ref="elForm" :model="formDat" :rules="rules" size="medium" label-width="100px">
          <el-form-item label="家庭号" prop="num">
            <el-input v-model="formDat.num" placeholder="请输入会议室名称" clearable :style="{width: '100%'}">
          <el-form-item label="家庭号" prop="familyId">
            <el-input v-model="formDat.familyId" placeholder="请输入会议室名称" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
@@ -108,8 +117,8 @@
            ></el-date-picker>
          </el-form-item>
          <el-form-item label="会议室名称" prop="address">
            <el-input v-model="formDat.address" placeholder="请输入会议室名称" clearable :style="{width: '100%'}">
          <el-form-item label="会议室名称" prop="conferenceRoom">
            <el-input v-model="formDat.conferenceRoom" placeholder="请输入会议室名称" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
@@ -118,13 +127,13 @@
            </el-input>
          </el-form-item>
          <el-form-item label="申请人" prop="applicant">
            <el-input v-model="formDat.applicant" placeholder="请输入申请人" clearable :style="{width: '100%'}">
          <el-form-item label="申请人" prop="applyPerson">
            <el-input v-model="formDat.applyPerson" placeholder="请输入申请人" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
          <el-form-item label="审批人" prop="approve">
            <el-input v-model="formDat.approve" placeholder="请输入审批人" clearable :style="{width: '100%'}">
          <el-form-item label="审批人" prop="ratifyPerson">
            <el-input v-model="formDat.ratifyPerson" placeholder="请输入审批人" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
@@ -143,13 +152,26 @@
          <el-button type="primary" @click="submitDataScope">保 存</el-button>
          <el-button @click="cancel">取 消</el-button>
        </div>
      </el-dialog>
      </el-dialog> -->
    </div>
  </template>
  <script>
import * as echarts from 'echarts';
  import { listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus, deptTreeSelect } from "@/api/system/role";
  import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
  import { Notification, MessageBox, Message, Loading } from 'element-ui'
  //在system/note/index.js中导入接口函数  --接好了
  import {listMeeting3,listGraph} from "@/api/meeting/index";
 export default {
  created() {
    this.getList();
    this.graphData();
  },
   data() {
     return {
       // 显示搜索条件
@@ -157,53 +179,34 @@
       open: false,
       open2: false,
       title: "",
       tableData: [{
         id: 1,
          num: '1',
           title: '1',
           name: 'asasd',
           address: 'asdadsdasd',
           status: '结案'
         },
         {
                    id: 2,
          num: '2',
           title: '2',
           name: 'qweqwqwe',
           address: 'qweqweqwe',
           status: '未结案'
         }
       ],
       meetingList: [],
       dataList:[],
       graphID: [],
       graphDate: [],
       formDat:{
         id: undefined,
         happenTime: undefined,
         endTime: undefined,
         meetingTitle: undefined,
         address: undefined,
         approve: undefined,
         applicant: undefined,
         url: "",
         status: undefined,
         num: undefined
           "title":undefined,
           "familyId":undefined,
           "conferenceRoom":undefined,
           "applyPerson":undefined,
           "ratifyPerson":undefined,
           "status":undefined,
           "useTime":undefined
       },
     queryParams: {
       pageNum: 1,
       pageSize: 10,
       address:undefined,
       applyOrganization:undefined,
       applicant:undefined,
       happenTime:undefined
     },
     dateRange: [],
     // 表单校验
     rules: {
       name: [{
         required: true,
         message: '请输入设备名称',
         trigger: 'blur'
       }],
      },
     // rules: {
     //   name: [{
     //     required: true,
     //     message: '请输入设备名称',
     //     trigger: 'blur'
     //   }],
     //  },
       typeOptions: [
         {
         value: '1',
@@ -219,6 +222,111 @@
     }
   },
   methods: {
     graphData(){
       this.loading = true;
       listGraph().then(response => {
           this.dataList = response.data
           // console.log(this.graphList,'11111111111')
           let a = {}
           this.dataList.forEach(element=>{
             if(a[element['familyId']]){
               a[element['familyId']] += 1
             }else{
               a[element['familyId']] = 1
             }
           })
           for(let i in a){
             this.graphID.push({'name': i , 'value': a[i]})
           }
           // console.log(this.graphID,'graphIDgraphIDgraphID')
           this.loading = false;
         }
         );
     },
     getList() {
       this.loading = true;
       // console.log(this.queryParams)
       //  listProperty(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
         this.queryParams.happenStartTime = this.dateRange.length > 0 && this.dateRange[0]
         this.queryParams.happenEndTime = this.dateRange.length > 0 && this.dateRange[1]
       listMeeting3(this.queryParams).then(response => {
           //  alert(123)
             // console.log(response.data.data,'22222222222')
           this.meetingList = response.data.data;
           this.total = response.data.total;
           this.loading = false;
         }
       );
     },
     openGraph(){
       this.$nextTick(() => {
       //  执行echarts方法
         this.initEcharts()
       })
    },
    initEcharts() {
            const myChart1 = echarts.init(document.getElementById('main1'))
             const option1 = {
                title: {
                    text: '每月会议次数统计',
                    left:'center'
                },
                tooltip: {},
                xAxis: {
                    data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
                },
                yAxis: {},
                legend:{},
                series: [{
                    type: 'bar',
                    data: [5, 20, 36, 10, 10, 20]
                }]
            };
            myChart1.setOption(option1)
            const myChart2 = echarts.init(document.getElementById('main2'))
             const option2 = {
                title: {
                    text: '会议家庭占比统计',
                    left:'center',
                    textStyle:{
                      fontSize:20
                    }
                },
                tooltip: {},
                legend:{
                  orient: 'vertical',
                  left: 'left',
                  textStyle:{
                    fontSize:15
                  }
                },
                series: [{
                    name: '家庭号',
                    type: 'pie',
                    data: this.graphID,
                    label: {
                      show: true, // 是否显示标签
                      position: 'top', // 标签位置,可选值为:top、bottom、center、inside(柱状图内部)、outside(柱状图外部)
                      textStyle: {
                        color: '#333', // 标签字体颜色
                        fontSize: 25, // 标签字体大小
                        fontWeight: 'bold', // 标签字体加粗
                        fontStyle: 'italic', // 标签字体斜体
                        fontFamily: 'Arial' // 标签字体
                      }
                    },
                }]
            };
            myChart2.setOption(option2)
          },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -241,7 +349,7 @@
       // this.reset();
     },
     submitDataScope() {
       console.log(666)
       // console.log(666)
     },
     tableRowClassName({
@@ -345,7 +453,7 @@
    width: 700px;
    height: 700px;
    display: inline-block;
    background-color: aqua;
    margin-right: 30px;
        /* background-color: aqua; */
  }
  </style>