From 76f84021c817dbec24bde29c903a1ee8cff6d042 Mon Sep 17 00:00:00 2001 From: yz3456 <2753272399@qq.com> Date: 星期五, 10 五月 2024 18:31:53 +0800 Subject: [PATCH] 会议统计 --- ruoyi-ui/src/views/meeting/statistics.vue | 256 ++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 182 insertions(+), 74 deletions(-) diff --git a/ruoyi-ui/src/views/meeting/statistics.vue b/ruoyi-ui/src/views/meeting/statistics.vue index bf8d969..91492da 100644 --- a/ruoyi-ui/src/views/meeting/statistics.vue +++ b/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' + + //鍦╯ystem/note/index.js涓鍏ユ帴鍙e嚱鏁� --鎺ュソ浜� + 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', // 鏍囩浣嶇疆锛屽彲閫夊�间负锛歵op銆乥ottom銆乧enter銆乮nside锛堟煴鐘跺浘鍐呴儴锛夈�乷utside锛堟煴鐘跺浘澶栭儴锛� + 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> -- Gitblit v1.9.1