From 6fd54e9bfb42e8b75758d7cb061b7bbd5c1aa4f7 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期四, 17 四月 2025 10:18:29 +0800 Subject: [PATCH] 代码初始化 --- admin/src/views/index.vue | 551 ++++++++++++------------------------------------------ 1 files changed, 123 insertions(+), 428 deletions(-) diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue index 6633936..35b1186 100644 --- a/admin/src/views/index.vue +++ b/admin/src/views/index.vue @@ -1,74 +1,66 @@ <template> <div class="main_home"> - <!-- <div style="position: fixed;z-index: 99999"><video style="height: 100px;width: 500px" src="rtsp://10.50.250.253:554/openUrl/K2y2vE4" controls></video></div> --> - <div class="home_header" style="text-align: center"> + <div class="home_header"> <div class="mb10 fs17">涓嬪崍濂斤紝{{ userInfo.realname }}</div> <div class="fs13"> 浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂仈鍚堝埄鍗庝簨浠朵笂鎶ョ郴缁熺鐞嗗钩鍙� </div> </div> -<!-- <div class="main"> + <div class="main"> <div class="app_content"> <div class="static_card"> <div class="card"> <div class="header"> <div class="left"> - <div class="fs15">浠婃棩鍦ㄥ洯浜烘暟(浜�)</div> - <div class="num">{{ headerData.todayInParkUserNum }}</div> + <div class="fs15">SHE浠婃棩鎻愭姤鏁伴噺</div> + <div class="num">{{ headerData.todaySheNum ||0 }}</div> </div> <img src="@/assets/icons/home_icon1.png" alt="" /> </div> <div class="content"> - <div>鍏ュ洯浜烘(浜�)锛歿{ headerData.todayInUserNum }}</div> - <div>鍑哄洯浜烘(浜�)锛歿{ headerData.todayOutUserNum }}</div> + <div>鏈В鍐筹細{{ headerData.sheNum || 0}}</div> + <div>宸茶В鍐筹細{{ headerData.sheNum || 0}}</div> + <div>鎬诲伐鍗曢噺锛歿{ headerData.sheNum || 0}}</div> </div> </div> <div class="card"> <div class="header"> <div class="left"> - <div class="fs15">鍦ㄥ洯璁垮鏁�(浜�)</div> - <div class="num">{{ headerData.inParkVisitUserNum }}</div> + <div class="fs15">璺岀粖婊戜粖鏃ュ伐鍗曟暟閲�</div> + <div class="num">{{ headerData.todayDbhNum ||0 }}</div> </div> <img src="@/assets/icons/home_icon2.png" alt="" /> </div> <div class="content"> - <div>璁垮浜烘(浜�)锛歿{ headerData.visitUserNum }}</div> - <div>绛剧浜烘(浜�)锛歿{ headerData.signLevelNum }}</div> + <div>鏈В鍐筹細{{ headerData.dbhNum || 0}}</div> + <div>宸茶В鍐筹細{{ headerData.dbhNum || 0}}</div> + <div>鎬诲伐鍗曢噺锛歿{ headerData.dbhNum || 0}}</div> </div> </div> <div class="card"> <div class="header"> <div class="left"> - <div class="fs15">鍦ㄥ洯闀挎湡鐩稿叧鏂规暟(浜�)</div> - <div class="num">{{ headerData.inParkLwUserNum }}</div> + <div class="fs15">DCA浠婃棩鎻愪氦鏁伴噺</div> + <div class="num">{{ headerData.todayDcaNum ||0 }}</div> </div> <img src="@/assets/icons/home_icon3.png" alt="" /> </div> <div class="content"> - <div>鍏ュ洯浜烘(浜�)锛歿{ headerData.lwUserInNum }}</div> - <div>鍑哄洯浜烘(浜�)锛歿{ headerData.lwUserOutNum }}</div> + <div>鎬绘彁浜ら噺锛歿{ headerData.dcaNum || 0}}</div> </div> </div> <div class="card"> <div class="header"> <div class="left"> - <div class="fs15">浠婃棩鍦ㄥ洯杞﹁締(杈�)</div> - <div class="num">{{ headerData.todayInParkCarNum }}</div> + <div class="fs15">DCA浠婃棩宸ュ崟鏁伴噺</div> + <div class="num">{{ headerData.todayDcaChildNum ||0 }}</div> </div> - <img src="@/assets/icons/home_icon4.png" alt="" /> + <img src="@/assets/icons/home_icon3.png" alt="" /> </div> <div class="content"> - <div>鍏ュ洯杞︽(杈�)锛歿{ headerData.todayInCarNum }}</div> - <div>鍑哄洯杞︽(杈�)锛歿{ headerData.todayOutCarNum }}</div> - </div> - </div> - </div> - <div class="funcs"> - <div class="home_title">甯哥敤鍔熻兘</div> - <div class="list"> - <div v-for="item in funcList" @click="funcClick(item)" :key="item.name" class="item"> - <img class="mb10" :src="item.url" alt="" /> - <div>{{ item.name }}</div> + <div>鏈В鍐筹細{{ headerData.dcaChildNum || 0}}</div> + <div>宸茶В鍐筹細{{ headerData.dcaChildNum || 0}}</div> + <div>鎬诲伐鍗曢噺锛歿{ headerData.dcaChildNum || 0}}</div> </div> </div> </div> @@ -76,114 +68,46 @@ <div class="df mb10"> <div class="wrap static1"> <div class="header"> - <div class="home_title">鍦ㄥ満浜哄憳鍗犳瘮</div> - <!– <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> –> + <div class="home_title">1.SHE浜嬩欢涓婃姤</div> </div> - <div class="content"> - <div class="echart_wrap"> - <div class="pie_text"> - <div class="fs13">鎬绘暟</div> - <div class="fs15"><strong>{{ headerData.todayInParkUserNum }}</strong></div> - </div> - <div class="echart" id="echart1"></div> - </div> - <div class="list"> - <div class="item" v-for="item, i in manningRatio" :key="i"> - <div :style="{ background: colors[i] }" class="icon"></div> - <div class="text">{{ item.name }}</div> - <div class="num">{{ item.value }}</div> - </div> - </div> + <div class="echart" > + <div id="echart0"></div> + <div id="echart01"></div> </div> </div> <div class="wrap static2"> <div class="header"> - <div class="home_title">闀挎湡鐩稿叧鏂瑰垎甯�</div> - <!– <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> –> + <div class="home_title">2.娣卞害绗﹀悎鎬у鏌CA涓婃姤璁板綍</div> </div> - <div class="echart" id="echart2"></div> + <div class="echart" > + <div id="echart1"> </div> + <div id="echart11"> </div> + </div> </div> </div> <div class="df"> <div class="wrap static3"> <div class="header"> - <div class="home_title">7鏃ヨ瀹㈢粺璁�</div> - <!– <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> –> + <div class="home_title">3.娣卞害绗﹀悎鎬у鏌CA浜嬩欢宸ュ崟</div> </div> - <div class="echart" id="echart3"></div> + <div class="echart" > + <div id="echart2"> </div> + <div id="echart21"> </div> + </div> </div> <div class="wrap static4"> <div class="header"> - <div class="home_title">7鏃ヨ溅杈嗙粺璁�</div> - <!– <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> –> + <div class="home_title">4.璺岀粖婊戦闄╀笂鎶�</div> </div> - <div class="echart" id="echart4"></div> + <div class="echart" > + <div id="echart3"> </div> + <div id="echart31"> </div> + </div> </div> </div> </div> </div> - <div class="app_side"> - <div class="task"> - <div class="header df_sb"> - <div class="home_title df"> - <span >寰呭姙浜嬮」</span> - <span class="num" v-if="taskTotal">{{ taskTotal }}</span> - </div> - <div class="df_ac more" @click="jumpPage('/task/index')"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> - </div> - <div class="list"> - <div class="item" v-for="item in taskList" :key="item.id"> - <div class="content"> - <div class="title">{{ item.title }}</div> - <div class="time">{{ item.createDate }}</div> - </div> - <div class="btn" v-permissions="['business:staging:query']" @click="handleDetail(item)">澶勭悊</div> - </div> - <div v-if="taskList.length == 0" class="empty"> - <img src="@/assets/images/default_homeimg.png" alt=""> - </div> - </div> - </div> - <div class="warnning"> - <div class="header df_sb"> - <div class="home_title df"> - <span>瓒呮椂棰勮</span> - <span class="num" v-if="warningTotal">{{ warningTotal }}</span> - </div> - <div class="df_ac more" @click="jumpPage('/business/strandedPersonnel')"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> - </div> - <div class="list"> - <div class="item" v-for="item in warningList" :key="item.id"> - <div class="name_wrap df_sb"> - <div class="name">{{ item.name }}</div> - <div class="identity">璁垮</div> - </div> - <div class="line">鑱旂郴鐢佃瘽锛歿{ item.phone }}</div> - <div class="line">璁垮鍏徃锛歿{ item.companyName }}</div> - <div class="auth df_sb"> - <div class="time">鎺堟潈鏈熼檺锛歿{ item.endtime }}</div> - <div class="btn" @click="departure(item.id)">绂诲満</div> - </div> - </div> - </div> - <div v-if="warningList.length == 0" class="empty"> - <img src="@/assets/images/default_homeimg.png" alt=""> - </div> - </div> - </div> - </div>--> + </div> </div> </template> @@ -191,6 +115,7 @@ import dayjs from 'dayjs' import * as echarts from 'echarts' import { weeks } from '@/utils/config' +import { getIndexData, getWorkOrderData } from '@/api/business/workorder' const colors = ['#52a4f7', '#7678f7', '#5fc6d5'] export default { components: { @@ -201,22 +126,13 @@ nowDate: '', nowWeek: '', headerData: {}, - staticData: {}, - manningRatio: [], - taskList: [], - taskTotal: 0, - warningList: [], - warningTotal: 0, - funcList: [ - { name: '璁垮鎶ュ', path: '', url: require('@/assets/icons/home_func1.png'), path: '/business/reportRecord' }, - { name: '闅愭偅闅忔墜鎷�', path: '', url: require('@/assets/icons/home_func2.png'), path: '/operation/danger/record' }, - { name: '棰勭害浼氳瀹�', path: '', url: require('@/assets/icons/home_func3.png'), path: '/meeting/bookings' }, - { name: '鑰冨嫟宸ヤ綔鍙�', path: '', url: require('@/assets/icons/home_func4.png') } - ], - isShowDetail: false, - isShowReport: false, - isShowDanger: false, - isShowDriver: false + staticData0: {}, + staticData01: {}, + staticData1: {}, + staticData2: {}, + staticData3: {}, + staticData4: {}, + manningRatio: [] } }, computed: { @@ -225,223 +141,97 @@ } }, created () { - + this.initData() }, mounted () { this.updateDate() // this.initData() }, methods: { - SubSuccess (str) { - this[str] = false - this.getTaskList() - }, - funcClick (item) { - if (item.name == '鑰冨嫟宸ヤ綔鍙�') { - getAppHeaderNav(4).then(res => { - window.open(res, '_blank') - }) - } - this.$router.push(item.path) - }, - updateDate () { - this.nowWeek = weeks[new Date().getDay()] - this.nowDate = dayjs().format('YYYY骞碝鏈圖鏃�') - - }, initData () { + this.updateDate() this.getWorkHead() - this.getWorkBody() - this.getTaskList() - this.getWarningList() + this.getWorkBody0() + this.getWorkBody1() + this.getWorkBody2() + this.getWorkBody3() + // this.getWorkBody() }, - getWarningList () { - getWorkbenchData({ queryType: 4 }).then(res => { - this.warningList = res.timeOutVisitList || [] - this.warningTotal = res.timeOutVisitNum || 0 + getWorkBody0 () { + getWorkOrderData({ queryType: 0, orderType: 0 }).then(res => { + this.staticData0 = res || [] + this.initEchart0() + }) + getWorkOrderData({ queryType: 1, orderType: 0 }).then(res => { + this.staticData01 = res || [] + this.initEchart01() }) }, - getTaskList () { - getWorkbenchData({ queryType: 3 }).then(res => { - this.taskList = res.noticesList || [] - this.taskTotal = res.noticesNum || 0 + getWorkBody1 () { + getWorkOrderData({ queryType: 0, orderType: 1 }).then(res => { + this.staticData1 = res || [] + this.initEchart1() + }) + getWorkOrderData({ queryType: 1, orderType: 1 }).then(res => { + this.staticData11 = res || [] + this.initEchart11() }) }, - getWorkBody () { - getWorkbenchData({ queryType: 2 }).then(res => { - this.staticData = res || {} + getWorkBody2 () { + getWorkOrderData({ queryType: 0, orderType: 2 }).then(res => { + this.staticData2 = res || [] this.initEchart2() + }) + getWorkOrderData({ queryType: 1, orderType: 2 }).then(res => { + this.staticData21 = res || [] + this.initEchart21() + }) + }, + getWorkBody3 () { + getWorkOrderData({ queryType: 0, orderType: 3 }).then(res => { + this.staticData3 = res || [] this.initEchart3() - this.initEchart4() + }) + getWorkOrderData({ queryType: 1, orderType: 3 }).then(res => { + this.staticData31 = res || [] + this.initEchart31() }) }, getWorkHead () { - getWorkbenchData({ queryType: 1 }).then(res => { + getIndexData({ }).then(res => { this.headerData = res || {} - const arr = [] - arr.push({ name: '璁垮', value: this.headerData.inParkVisitUserNum }) - arr.push({ name: '鍐呴儴鍛樺伐', value: this.headerData.todayInParkUserNum - this.headerData.inParkLwUserNum - this.headerData.inParkVisitUserNum }) - arr.push({ name: '闀挎湡鐩稿叧鏂�', value: this.headerData.inParkLwUserNum }) - arr.sort((a, b) => b.value - a.value) - this.manningRatio = arr - this.initEchart1() }) }, - jumpPage (page) { - this.$router.push(page) + updateDate () { + this.nowDate = dayjs().format('YYYY骞碝鏈圖鏃�') + this.nowWeek = weeks[new Date().getDay()] }, - departure (id) { - this.$confirm('纭畾绂诲巶鍚�, 鏄惁缁х画?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - level(id) - .then(res => { - this.getWarningList() - }) - }).catch(() => { - - }) + initEchart0 () { + this.initEchartDataDo('echart0', this.staticData0.map(i => i.dateStr), this.staticData0.map(i => i.total),'鍗�') }, - handleDetail (row) { - if (row.type === 7) { - this.handleTest(row); - return - } - if (row.objType === 2) { - this.$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', { ...row, id: row.objId }) - return - } - if (row.objType === 1) { - this.isShowReport = true - this.$nextTick(() => { - this.$refs.VisReportDetailRef.id = row.objId - this.$refs.VisReportDetailRef.type = row.objType - this.$refs.VisReportDetailRef.getDetail() - this.$refs.VisReportDetailRef.isShowModal = true - }) - return - } - if (row.objType === 3) { - const obj = { ...row, id: row.objId } - this.$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�', obj) - return - } - if (row.objType === 6) { - const obj = { ...row, id: row.objId } - this.isShowDriver = true - this.$nextTick(() => { - this.$refs.DriverDetailRef.id = row.objId - this.$refs.DriverDetailRef.type = row.objType - this.$refs.DriverDetailRef.getDetail() - this.$refs.DriverDetailRef.isShowModal = true - }) - return - } - if (row.objType === 0) { - this.isShowDetail = true - this.$nextTick(() => { - this.$refs.DetailRef.id = row.objId - this.$refs.DetailRef.type = row.objType - this.$refs.DetailRef.getDetail() - this.$refs.DetailRef.isShowModal = true - }) - } + initEchart01 () { + this.initEchartDataDo('echart01', this.staticData01.map(i => i.dateStr), this.staticData01.map(i => i.total),'鍗�') }, initEchart1 () { - const myChart = echarts.init(document.getElementById('echart1')) - const that = this - - const option = { - tooltip: { - trigger: 'item' - }, - series: [ - { - type: 'pie', - radius: ['42%', '90%'], - label: { - show: false, - position: 'center' - }, - color: colors, - labelLine: { - show: false - }, - data: that.manningRatio - // data: [ - // { value: that.headerData.inParkVisitUserNum, name: '璁垮' }, - // { value: that.headerData.todayInParkUserNum - that.headerData.inParkVisitUserNum - that.headerData.inParkLwUserNum, name: '鍐呴儴鍛樺伐' }, - // { value: that.headerData.inParkLwUserNum, name: '闀挎湡鐩稿叧鏂�' } - // ] - } - ] - } - myChart.setOption(option) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) + this.initEchartDataDo('echart1', this.staticData1.map(i => i.dateStr), this.staticData1.map(i => i.total),'娆�') + }, + initEchart11 () { + this.initEchartDataDo('echart11', this.staticData11.map(i => i.dateStr), this.staticData11.map(i => i.total),'娆�') }, initEchart2 () { - const myChart = echarts.init(document.getElementById('echart2')) - const that = this - myChart.setOption({ - grid: { - top: '4%', - left: '2%', - right: '6%', - bottom: '2%', - containLabel: true - }, - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line' - } - }, - xAxis: { - type: 'value', - position: 'bottom', - splitLine: { - show: true, - lineStyle: { - // 杩欓噷杈撳叆绾挎潯鐨勬牱寮� - color: 'rgba(255,255,255,0.14)' - } - } - }, - yAxis: { - type: 'category', - data: that.staticData.lwList.map(i => i.name) - }, - series: [ - { - data: that.staticData.lwList.map(i => i.num), - type: 'bar', - barWidth: 10, - itemStyle: { - normal: { - color: new echarts.graphic.LinearGradient( - 1, 0, 0, 0, - [ - { offset: 0, color: '#56abf8' }, - { offset: 1, color: '#407ff0' } - ] - ) - // barBorderRadius: [0, 10, 10, 0] - } - } - } - ] - }) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) + this.initEchartDataDo('echart2', this.staticData2.map(i => i.dateStr), this.staticData2.map(i => i.total),'鍗�') + }, + initEchart21 () { + this.initEchartDataDo('echart21', this.staticData21.map(i => i.dateStr), this.staticData21.map(i => i.total),'鍗�') }, initEchart3 () { - const myChart = echarts.init(document.getElementById('echart3')) - const that = this + this.initEchartDataDo('echart3', this.staticData3.map(i => i.dateStr), this.staticData3.map(i => i.total),'鍗�') + }, + initEchart31 () { + this.initEchartDataDo('echart31',this.staticData31.map(i => i.dateStr), this.staticData31.map(i => i.total),'鍗�') + }, + initEchartDataDo (id, xdata,ydata,unit) { + const myChart = echarts.init(document.getElementById(id)) myChart.setOption({ tooltip: { trigger: 'axis', @@ -455,7 +245,7 @@ <div style="display: flex;align-items: center;"> <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #6feef0;"></div> <span style="margin-left: 6px;">${params[0].value}</span> - <div>浜�</div> + <div>${unit}</div> </div> </div> ` @@ -464,11 +254,11 @@ xAxis: { type: 'category', boundaryGap: false, - data: that.staticData.weekVisitList.map(i => i.name) + data: xdata }, yAxis: { type: 'value', - name: '浜烘暟', + name: '', nameTextStyle: { padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� }, @@ -489,7 +279,7 @@ }, series: [ { - data: that.staticData.weekVisitList.map(i => i.num), + data: ydata, type: 'line', areaStyle: { normal: { @@ -539,106 +329,6 @@ myChart.resize() }) }, - initEchart4 () { - const myChart = echarts.init(document.getElementById('echart4')) - const that = this - myChart.setOption({ - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line' - }, - formatter: function (params) { - return ` - <div style="background-color: #15323f;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;"> - <div>${params[0].name}</div> - <div style="display: flex;align-items: center;"> - <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #6feef0;"></div> - <span style="margin-left: 6px;">${params[0].value}</span> - <div>杈�</div> - </div> - </div> - ` - } - }, - xAxis: { - type: 'category', - boundaryGap: false, - data: that.staticData.weekCarList.map(i => i.name) - }, - yAxis: { - type: 'value', - name: '杞﹁締鏁�', - nameTextStyle: { - padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� - }, - splitLine: { - show: true, - lineStyle: { - // 杩欓噷杈撳叆绾挎潯鐨勬牱寮� - color: 'rgba(255,255,255,0.14)' - } - } - }, - grid: { - top: '16%', - left: '2%', - right: '8%', - bottom: '4%', - containLabel: true - }, - series: [ - { - data: that.staticData.weekCarList.map(i => i.num), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: '#42D49D' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, - color: 'rgba(255,255,255,.5)' // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#42D49D' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#42D49D' // 100% 澶勭殑棰滆壊 - }] - }, - width: 2 // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 10, - itemStyle: { - borderWidth: 1, - borderColor: '#fff', - color: '#42D49D' // 鎶樼嚎鐐圭殑棰滆壊 - }, - smooth: false - } - ] - }) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) - } } } </script> @@ -930,10 +620,15 @@ &:nth-of-type(2n) { margin-left: 10px; } - .echart { width: 100%; height: 190px; + position: relative; + display: flex; + div{ + flex: 1; + height: 190px; + } } .header { @@ -1012,8 +707,8 @@ width: 100%; height: 200px; padding: 20px; -/* color: #fff; - background: linear-gradient(180deg, #0c6ce3 0%, rgba(32, 127, 247, 0) 100%);*/ + color: #fff; + background: linear-gradient(180deg, #076ae5 0%, rgba(32, 127, 247, 0) 100%); } } </style> -- Gitblit v1.9.3