From ec88d953dcf33ec0f3f5bf8facbb05878cea5acb Mon Sep 17 00:00:00 2001
From: feige <791364011@qq.com>
Date: 星期二, 06 五月 2025 21:33:51 +0800
Subject: [PATCH] 修改了代码

---
 ruoyi-ui/src/views/meeting/statistics.vue |  549 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 542 insertions(+), 7 deletions(-)

diff --git a/ruoyi-ui/src/views/meeting/statistics.vue b/ruoyi-ui/src/views/meeting/statistics.vue
index a9def5e..e619cdf 100644
--- a/ruoyi-ui/src/views/meeting/statistics.vue
+++ b/ruoyi-ui/src/views/meeting/statistics.vue
@@ -10,31 +10,542 @@
         <div class="button-container"></div>
         <div style="display: flex; align-items: center;">
           <el-button @click="pictureStatistics" size="mini" type="text" v-hasPermi="['person:information:memo']" style="margin-left: 10px">
-            <div class="form"><el-icon style="padding-right:30px;"></el-icon>
+            <div class="form1"><el-icon style="padding-right:50px;"></el-icon>
               <span class="text" style="width: 69px;height: 26px;font-size: 16px;
-              font-family: Microsoft YaHei-Regular, Microsoft YaHei; color: #EBA4AA;">鍥炬爣缁熻</span>
+              font-family: Microsoft YaHei-Regular, Microsoft YaHei; color: #EBA4AA;">鍥捐〃缁熻</span>
             </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="form" style="width: 100px;"><el-icon style="padding-right:30px;"></el-icon>
+            <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="meetingList" border :header-cell-style="{ background: 'pink', fontSize: '13px', color: 'black' }"
+        :row-class-name="tableRowClassName" :row-key="getRowId">
+        <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="useTime" sortable align="center">
+          <template slot-scope="scope">{{ scope.row.useTime
+        ? scope.row.useTime : '鈥斺�斺�斺��' }}</template>
+        </el-table-column>
+
+        <el-table-column label="浼氳瀹ゅ悕绉�" prop="conferenceRoom" sortable align="center">
+          <template slot-scope="scope">{{
+        scope.row.conferenceRoom ? scope.row.conferenceRoom : '鈥斺�斺�斺��' }}</template>
+        </el-table-column>
+
+        <el-table-column label="鏍囬" prop="title" sortable align="center">
+          <template slot-scope="scope">{{ scope.row.title
+        ? scope.row.title : '鈥斺�斺�斺��' }}</template>
+        </el-table-column>
+
+        <el-table-column label="鐢宠浜�" prop="applyPerson" sortable align="center">
+          <template slot-scope="scope">{{
+        scope.row.applyPerson ? scope.row.applyPerson : '鈥斺�斺�斺��' }}</template>
+        </el-table-column>
+
+        <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">
+          <template slot-scope="scope">{{scope.row.status===1? '缁撴': '鏈粨妗�'}}</template>
+        </el-table-column>
+
+
+        <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-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" @open="openGraph()" append-to-body>
+            <div>
+                骞翠唤
+        <el-select v-model="years" id="yearSelect"
+                  placeholder="璇烽�夋嫨骞翠唤" clearable
+                   style="width: 240px;
+                   height: 35px;
+                   border-radius: 16px 16px 16px 16px;
+                   opacity: 0.5;" filterable allow-create
+                   @change="selectValue">
+          <el-option v-for="item in yearOptions"
+            :key="item.value" :label="item.label" :value="item.value"/>
+        </el-select>
+              </div>
+        <div class="p1" id="main1">
+        </div>
+        <div class="p1" id="main2">
+        </div>
+      </el-dialog>
+      <!-- 鏂板鏁版嵁妗� -->
+      <!-- <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="familyId">
+            <el-input v-model="formDat.familyId" placeholder="璇疯緭鍏ヤ細璁鍚嶇О" clearable :style="{width: '100%'}">
+            </el-input>
+          </el-form-item>
+
+          <el-form-item label="寮�濮嬫椂闂�" prop="happenTime">
+            <el-date-picker v-model="formDat.happenTime" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿"
+                            :editable="false" :clearable="false" :style="{width: '100%'}"  value-format="yyyy-MM-dd"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="缁撴潫鏃堕棿" prop="endTime">
+            <el-date-picker v-model="formDat.endTime" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿"
+                            :editable="false" :clearable="false" :style="{width: '100%'}"  value-format="yyyy-MM-dd"
+            ></el-date-picker>
+          </el-form-item>
+
+          <el-form-item label="浼氳瀹ゅ悕绉�" prop="conferenceRoom">
+            <el-input v-model="formDat.conferenceRoom" placeholder="璇疯緭鍏ヤ細璁鍚嶇О" clearable :style="{width: '100%'}">
+            </el-input>
+          </el-form-item>
+
+          <el-form-item label="鏍囬" prop="meetingTitle">
+            <el-input v-model="formDat.meetingTitle" placeholder="璇疯緭鍏ヤ細璁爣棰�" clearable :style="{width: '100%'}">
+            </el-input>
+          </el-form-item>
+
+          <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="ratifyPerson">
+            <el-input v-model="formDat.ratifyPerson" placeholder="璇疯緭鍏ュ鎵逛汉" clearable :style="{width: '100%'}">
+            </el-input>
+          </el-form-item>
+
+          <el-form-item label="鐘舵��" prop="status">
+            <el-select v-model="formDat.status" placeholder="璇烽�夋嫨" clearable :style="{width: '100%'}">
+              <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+
+        </el-form>
+
+          </el-upload>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitDataScope">淇� 瀛�</el-button>
+          <el-button @click="cancel">鍙� 娑�</el-button>
+        </div>
+      </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'
+
+  //鍦╯ystem/note/index.js涓鍏ユ帴鍙e嚱鏁�  --鎺ュソ浜�
+  import {listMeeting3,listGraph} from "@/api/meeting/index";
+
+ export default {
+  created() {
+    this.getList();
+    this.graphData();
+  },
+   data() {
+     return {
+       // 鏄剧ず鎼滅储鏉′欢
+       showSearch: true,
+       open: false,
+       open2: false,
+       title: "",
+       meetingList: [],
+       dataList:[],
+       // 楗煎浘鏁版嵁
+       graphID: [],
+       // 鏌辩姸鍥炬暟鎹�
+       graphDate: [],
+       years:undefined,
+       yearOptions:[],
+       formDat:{
+           "title":undefined,
+           "familyId":undefined,
+           "conferenceRoom":undefined,
+           "applyPerson":undefined,
+           "ratifyPerson":undefined,
+           "status":undefined,
+           "useTime":undefined
+       },
+
+     queryParams: {
+       pageNum: 1,
+       pageSize: 10,
+
+     },
+     dateRange: [],
+     // 琛ㄥ崟鏍¢獙
+     // rules: {
+     //   name: [{
+     //     required: true,
+     //     message: '璇疯緭鍏ヨ澶囧悕绉�',
+     //     trigger: 'blur'
+     //   }],
+     //  },
+       typeOptions: [
+         {
+         value: '1',
+         label: '缁撴',
+         },
+         {
+           value: '0',
+           label: '鏈粨妗�',
+         }
+         ],
+
+
+     }
+   },
+   methods: {
+     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;
+         }
+
+       );
+     },
+     getTypeOptions(list){
+       let years = ['鍏ㄩ儴']
+        let a = {}
+       list.forEach(element=>{
+         let year = element.createTime.split("-")[0]
+         if(a[year]){
+         }else{
+           a[year] = 1
+           years.push(year)
+         }
+       })
+      let yearOptions = []
+      for(let i=0;i<years.length;i++){
+        yearOptions.push({label: years[i],value: i})
+      }
+      return yearOptions;
+     },
+     graphData(){
+       this.loading = true;
+       listGraph().then(response => {
+           this.dataList = response.data
+           console.log(this.dataList,'11111111111')
+           this.yearOptions = this.getTypeOptions(this.dataList)
+           console.log(this.yearOptions,'yearsyearsyearsyears')
+
+           // 瀹跺涵鍙�
+           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]})
+           }
+           // 姣忔湀娆℃暟
+           let b = {'01': 0,'02': 0,'03': 0,'04': 0,'05': 0,'06': 0,'07': 0,'08': 0,'09': 0,'10': 0,'11': 0,'12': 0}
+           this.dataList.forEach(element=>{
+             let month = element.createTime.split("-")[1]
+             if(b[month]){
+               b[month] += 1
+             }else{
+               b[month] = 1
+             }
+           })
+
+           let kon =[]
+           for(let i in b){
+             kon.push({'name': Number(i) , 'value': b[i]})
+           }
+           this.graphDate = kon.sort((a,b) => a.name - b.name)
+
+           this.loading = false;
+         }
+         );
+     },
+
+    b(list,selectedValue){
+      let list2 = []
+      let newGraphID = []
+      let newGraphDate = []
+      list.forEach(element=>{
+        let year = element.createTime.split("-")[0]
+        if(selectedValue == year){
+          list2.push(element)
+        }
+      })
+
+      if(list2.length !=  0){
+        // 瀹跺涵鍙�
+        let a = {}
+        list2.forEach(element=>{
+          if(a[element['familyId']]){
+            a[element['familyId']] += 1
+          }else{
+            a[element['familyId']] = 1
+          }
+        })
+        for(let i in a){
+          newGraphID.push({'name': i , 'value': a[i]})
+        }
+        // 姣忔湀娆℃暟
+        let b = {'01': 0,'02': 0,'03': 0,'04': 0,'05': 0,'06': 0,'07': 0,'08': 0,'09': 0,'10': 0,'11': 0,'12': 0}
+        list2.forEach(element=>{
+          let month = element.createTime.split("-")[1]
+          if(b[month]){
+            b[month] += 1
+          }else{
+            b[month] = 1
+          }
+        })
+
+        let kon =[]
+        for(let i in b){
+          kon.push({'name': Number(i) , 'value': b[i]})
+        }
+        newGraphDate = kon.sort((a,b) => a.name - b.name)
+      }else{
+        list2 = list
+        // 瀹跺涵鍙�
+        let a = {}
+        list2.forEach(element=>{
+          if(a[element['familyId']]){
+            a[element['familyId']] += 1
+          }else{
+            a[element['familyId']] = 1
+          }
+        })
+        for(let i in a){
+          newGraphID.push({'name': i , 'value': a[i]})
+        }
+        // 姣忔湀娆℃暟
+        let b = {'01': 0,'02': 0,'03': 0,'04': 0,'05': 0,'06': 0,'07': 0,'08': 0,'09': 0,'10': 0,'11': 0,'12': 0}
+        list2.forEach(element=>{
+          let month = element.createTime.split("-")[1]
+          if(b[month]){
+            b[month] += 1
+          }else{
+            b[month] = 1
+          }
+        })
+
+        let kon =[]
+        for(let i in b){
+          kon.push({'name': Number(i) , 'value': b[i]})
+        }
+        newGraphDate = kon.sort((a,b) => a.name - b.name)
+      }
+
+      return [newGraphID,newGraphDate];
+    },
+
+    selectValue(value){
+      let obj = {}
+      let year = undefined
+      obj= this.yearOptions.find(function(i){
+              return i.value ===value
+        });
+      year = obj.label
+
+      let result = undefined
+      result = this.b(this.dataList,year)
+      this.graphID = result[0]
+      this.graphDate = result[1]
+      // console.log(this.graphID)
+      // console.log(this.graphDate)
+      echarts.dispose(document.getElementById('main1'))
+      echarts.dispose(document.getElementById('main2'))
+      this.initEcharts()
+    },
+
+     openGraph(){
+       this.$nextTick(() => {
+       //  鎵цecharts鏂规硶
+         this.initEcharts()
+       })
+    },
+    initEcharts() {
+            const myChart1 = echarts.init(document.getElementById('main1'))
+             const option1 = {
+                title: {
+                    text: '姣忔湀浼氳娆℃暟缁熻',
+                    left:'center'
+                },
+                tooltip: {},
+                xAxis: {
+                    data: ['1鏈�','2鏈�','3鏈�','4鏈�','5鏈�','6鏈�','7鏈�','8鏈�','9鏈�','10鏈�','11鏈�','12鏈�']
+                },
+                yAxis: {},
+                legend:{},
+                series: [{
+                    type: 'bar',
+                    data: this.graphDate.map(x => x.value)
+                }]
+            };
+            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', // 鏍囩浣嶇疆锛屽彲閫夊�间负锛歵op銆乥ottom銆乧enter銆乮nside锛堟煴鐘跺浘鍐呴儴锛夈�乷utside锛堟煴鐘跺浘澶栭儴锛�
+                      textStyle: {
+                        color: '#333', // 鏍囩瀛椾綋棰滆壊
+                        fontSize: 25, // 鏍囩瀛椾綋澶у皬
+                        fontWeight: 'bold', // 鏍囩瀛椾綋鍔犵矖
+                        fontStyle: 'italic', // 鏍囩瀛椾綋鏂滀綋
+                        fontFamily: 'Arial' // 鏍囩瀛椾綋
+                      }
+                    },
+                }]
+            };
+
+            myChart2.setOption(option2)
+          },
+     /** 鎼滅储鎸夐挳鎿嶄綔 */
+     handleQuery() {
+       this.queryParams.pageNum = 1;
+       this.getList();
+     },
+     /** 閲嶇疆鎸夐挳鎿嶄綔 */
+     resetQuery() {
+       this.dateRange = [];
+       this.resetForm("queryForm");
+       this.handleQuery();
+     },
+
+
+     newRequest(){
+       this.open = true;
+       this.title = "鏂板"
+     },
+     cancel() {
+       this.open = false;
+       // this.reset();
+     },
+     submitDataScope() {
+       // console.log(666)
+     },
+
+     tableRowClassName({
+       row,
+       rowIndex
+     }) {
+       if (rowIndex % 2 == 0) {
+         return "statistics-warning-row1";
+       } else {
+         return "statistics-warning-row";
+       }
+     },
+     getRowId(row) {
+       return row.id
+     },
+
+      // 淇敼
+      handleUpdate(row) {
+        const id = row.id;
+        let jd = true
+
+        this.$router.push({
+          path:"/meeting/statistics/statisticsInfo/" + id,
+          query:{
+            detail:jd
+          }
+        });
+      },
+      // 鏌ョ湅璇︾粏淇℃伅
+      handleCheck(row){
+        const id = row.id;
+        this.$router.push("/meeting/statistics/statisticsInfo/" + id);
+      },
+
+     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+     handleDelete(row) {
+       const Ids = row.id || this.ids;
+       this.$modal.confirm('鏄惁纭鍒犻櫎鏁版嵁椤癸紵').then(function() {
+         return delSelfEconomy(Ids);
+       }).then(() => {
+         this.getList();
+         this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+       }).catch(() => {});
+     },
+
+     // 鍥捐〃缁熻
+     pictureStatistics(){
+        this.open2=true;
+        this.title2 = "鍥捐〃缁熻"
+     },
+
+   }
+ }
   </script>
 <style scoped>
   .el-table__row.statistics-warning-row {
@@ -59,9 +570,33 @@
   .app-container {
     background-color: #FEF7FC;
   }
-  .form{
+  .form1{
+    background:left/40% no-repeat url('../../assets/icons/pic.png') ;
+    height: 50px;
+    line-height: 50px;
+  }
+  .form2{
     background:left/25% no-repeat url('../../assets/icons/add1.png') ;
     height: 50px;
     line-height: 50px;
   }
+
+  /deep/ .el-table .statistics-warning-row {
+    background: #E0EEFE;
+  }
+
+  /deep/ .el-table .statistics-warning-row1 {
+    background: #FFEFF2;
+  }
+
+  .el-table {
+    border-radius: 14px 14px 14px 14px;
+  }
+  .p1{
+    width: 700px;
+    height: 700px;
+    display: inline-block;
+    margin-right: 30px;
+        /* background-color: aqua; */
+  }
   </style>

--
Gitblit v1.9.1