From 569c6b3e6b28b2808d22af4656c8f65a973c345e Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期三, 07 五月 2025 09:07:11 +0800 Subject: [PATCH] 提交 --- admin/src/views/business/dangerStatic.vue | 319 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 273 insertions(+), 46 deletions(-) diff --git a/admin/src/views/business/dangerStatic.vue b/admin/src/views/business/dangerStatic.vue index 09678dd..d1ea42c 100644 --- a/admin/src/views/business/dangerStatic.vue +++ b/admin/src/views/business/dangerStatic.vue @@ -1,15 +1,37 @@ <template> - <div class="main_app"> - <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getData(1)" @clear="clear" - @changeForm='changeForm'> - <template #fastdate> - <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio"> - <el-radio-button label="0">褰撳ぉ</el-radio-button> - <el-radio-button label="6">杩�7澶�</el-radio-button> - <el-radio-button label="29">杩�30澶�</el-radio-button> - </el-radio-group> - </template> - </QueryForm> + <div class="main_app1"> + <div class="main_head"> + <div class="main_head_item blue"> + <span>{{totalList.total}}</span> + <span>鎬婚殣鎮f暟</span> + </div> + <div class="main_head_item red"> + <span>{{totalList.waitDeal}}</span> + <span>寰呭鐞�</span> + </div> + <div class="main_head_item yellow"> + <span>{{totalList.dealFinish}}</span> + <span>宸叉暣鏀�</span> + </div> + <div class="main_head_item orange"> + <span>{{totalList.back}}</span> + <span>宸查��鍥�</span> + </div> + <div class="main_head_item darkBlue"> + <span>{{totalList.todayNew}}</span> + <span>浠婃棩鏂板</span> + </div> + </div> +<!-- <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getData(1)" @clear="clear"--> +<!-- @changeForm='changeForm'>--> +<!-- <template #fastdate>--> +<!-- <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">--> +<!-- <el-radio-button label="0">褰撳ぉ</el-radio-button>--> +<!-- <el-radio-button label="6">杩�7澶�</el-radio-button>--> +<!-- <el-radio-button label="29">杩�30澶�</el-radio-button>--> +<!-- </el-radio-group>--> +<!-- </template>--> +<!-- </QueryForm>--> <div class="main_content"> <div class="type_wrap"> <div class="title">闅愭偅绫诲瀷缁熻</div> @@ -24,6 +46,30 @@ <div v-show="deptList && deptList.length > 0" class="echart2" ref="deptRef"></div> <div v-show="deptList.length == 0" style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;"> <img style="width: 240px;" src="@/assets/images/default_homeimg.png" alt=""> + </div> + </div> + </div> + <div class="main_table"> + <div class="main_table_echart"> + <div class="title">鏈勾闅愭偅瓒嬪娍</div> + <div id="echart3" v-if="yearList.length > 0"></div> + <div v-else style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;"> + <img style="width: 240px;" src="@/assets/images/default_homeimg.png" alt=""> + </div> + </div> + <div class="main_table_list"> + <div class="title">鏈湀棰戠箒鍙戠敓闅愭偅鍖哄煙Top10</div> + <div class="list_head"> + <div class="list_head_item">璐d换閮ㄩ棬</div> + <div class="list_head_item">闅愭偅鍖哄煙</div> + <div class="list_head_item">闅愭偅鏁伴噺</div> + </div> + <div class="table_box"> + <div class="list_content" v-for="(item, index) in departmentList" :key="index"> + <div class="list_head_item">{{item.name}}</div> + <div class="list_head_item">{{item.categoryName}}</div> + <div class="list_head_item">{{item.total}}</div> + </div> </div> </div> </div> @@ -74,10 +120,20 @@ }, typeList: [], deptList: [], + totalList: { + total: 0, + waitDeal: 0, + dealFinish: 0, + back: 0, + todayNew: 0 + }, + yearList: [], + departmentList: [] } }, mounted() { this.changeRadio('29') + this.initDept3() // this.getData() }, methods: { @@ -90,11 +146,22 @@ getData(page) { hiddenDangerDataPost({ ...this.filters }).then(res => { if (res) { + this.totalList.total = res.total || 0 + this.totalList.waitDeal = res.waitDeal || 0 + this.totalList.dealFinish = res.dealFinish || 0 + this.totalList.back = res.back || 0 + this.totalList.todayNew = res.todayNew || 0 + + this.yearList = res.yearList + + this.departmentList = res.departmentList.slice(0, 10) + this.typeList = res.cateList || [] this.deptList = res.departmentList || [] this.$nextTick(() => { this.initType() this.initDept() + this.initDept3() }) } @@ -114,8 +181,8 @@ let option = { grid: { left: '0%', - // right: '4%', - // bottom: '3%', + right: '0%', + bottom: '0%', top: '0%', containLabel: true }, @@ -126,7 +193,7 @@ left: '45%', textStyle: { color: '#666666', - fontSize: 16, + fontSize: 13, }, }, { text: total, @@ -134,7 +201,7 @@ left: '47.6%', textStyle: { color: '#080404', - fontSize: 24, + fontSize: 16, fontWeight: 'bold', }, }], @@ -157,7 +224,7 @@ series: [ { type: 'pie', - radius: ['24%', '40%'], + radius: ['34%', '50%'], label: { formatter: "{a|{b}}\n\n{c} | {d}%", rich: { @@ -198,6 +265,13 @@ const myChart = echarts.init(document.querySelector('.echart2')) let option = { + grid: { + left: '10%', + right: '10%', + bottom: '0%', + top: '20%', + containLabel: true + }, xAxis: { type: 'category', data: this.deptList.map(i => i.name), @@ -241,6 +315,41 @@ myChart.resize() }) }, + initDept3() { + if (this.yearList.length === 0) return + + const myChart = echarts.init(document.querySelector('#echart3')) + + let names = this.yearList.map(item => item.name) + let datas = this.yearList.map(item => item.total) + + let option = { + grid: { + left: '5%', + right: '10%', + bottom: '0%', + top: '20%', + containLabel: true + }, + xAxis: { + type: 'category', + data: names + }, + yAxis: { + type: 'value' + }, + series: [ + { + data: datas, + type: 'line' + } + ] + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) + }, clear() { this.filters = {} this.getData() @@ -253,42 +362,160 @@ /*.main_app { height: 100%; }*/ - -.main_content { - display: flex; - height: calc(100% - 100px); - - .title { - font-weight: 600; - font-size: 16px; - color: #222222; +.main_app1 { + width: 100%; + height: calc(100% - 44px); + overflow-y: auto; + overflow-x: hidden; + padding: 15px; + box-sizing: border-box; + background-color: #ffffff; + .main_head { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; margin-bottom: 20px; - margin-top: 20px; - } - - .type_wrap { - flex: 11; - flex-shrink: 0; - height: calc(100% - 20px); - border-right: 12px solid #f7f7f7; - - - .echart1 { - width: 100%; - height: calc(100% - 60px); + .blue { + border-left: 5px solid blue; + } + .red { + border-left: 5px solid red; + } + .yellow { + border-left: 5px solid yellow; + } + .orange { + border-left: 5px solid orange; + } + .darkBlue { + border-left: 5px solid #0000a8; + } + .main_head_item { + width: 19%; + height: 70px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + box-sizing: border-box; + border-radius: 5px; + background-color: #ffffff; + span { + &:nth-child(1) { + font-size: 22px; + color: black; + font-weight: bold; + } + &:nth-child(2) { + font-size: 16px; + color: black; + } + } } } - .dept_wrap { - flex: 10; - flex-shrink: 0; - height: calc(100% - 20px); - padding-left: 20px; + .main_table { + display: flex; + align-items: start; + justify-content: space-between; + .main_table_echart { + flex: 1; + height: 400px; + .title { + font-weight: 600; + font-size: 16px; + color: #222222; + } + #echart3 { + width: 100%; + height: calc(100% - 33px); + } + } + .main_table_list { + margin-left: 20px; + flex-shrink: 0; + width: 500px; + .title { + font-weight: 600; + font-size: 16px; + color: #222222; + } + .list_head { + width: 100%; + height: 35px; + display: flex; + align-items: center; + background-color: #ececec; + margin-top: 15px; + .list_head_item { + flex: 1; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + color: #222222; + } + } + .table_box { + width: 100%; + .list_content { + width: 100%; + height: 35px; + display: flex; + align-items: center; + .list_head_item { + flex: 1; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + color: #222222; + } + } + } + } + } - .echart2 { - width: 100%; - height: calc(100% - 60px); + .main_content { + display: flex; + height: 500px; + + .title { + font-weight: 600; + font-size: 16px; + color: #222222; + /*margin-bottom: 20px;*/ + margin-top: 20px; + } + + .type_wrap { + flex: 11; + flex-shrink: 0; + height: calc(100% - 20px); + /*border-right: 12px solid #f7f7f7;*/ + + + .echart1 { + width: 100%; + height: calc(100% - 60px); + } + } + + .dept_wrap { + flex: 10; + flex-shrink: 0; + height: calc(100% - 20px); + padding-left: 20px; + + .echart2 { + width: 100%; + height: calc(100% - 60px); + } } } } + </style> -- Gitblit v1.9.3