| | |
| | | NODE_ENV = 'development' |
| | | |
| | | # VUE_APP_API_URL = 'https://atwl.ahzyssl.com/zhyq_interface' |
| | | # VUE_APP_API_URL = 'http://localhost:10010' |
| | | VUE_APP_API_URL = 'https://atwl.ahzyssl.com/zhyq_interface' |
| | | VUE_APP_API_URL = 'http://192.168.0.103:10010' |
| | | # VUE_APP_API_URL = 'https://atwl.ahzyssl.com/zhyq_interface' |
| | | # VUE_APP_API_URL = 'http://10.50.250.253:8088/gateway_interface' |
| | | |
| | |
| | | export function approveTemplById (id) { |
| | | return request.get(`/visitsAdmin/cloudService/business/approveTempl/findById/${id}`) |
| | | } |
| | | // åºç¡æ°æ® |
| | | export function getInParkUserData (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/inoutRecord/getInParkUserData', data) |
| | | } |
| | | // å æ¯æ°æ® |
| | | export function getRataList (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/inoutRecord/getRataList', data) |
| | | } |
| | | // æ¥è¡¨æ°æ® |
| | | export function getReportList (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/inoutRecord/getReportList', data) |
| | | } |
| | | // å
¥åæ°æ®åæ-导åºExcel |
| | | export function reportExportExcel (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/inoutRecord/reportExportExcel', data) |
| | | } |
| | | |
| | | export const uploadUrl = 'visitsAdmin/cloudService/public/upload' |
| | |
| | | export function dealJobFinish (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformJob/dealJobFinish', data) |
| | | } |
| | | // æ¢å¤ä½ä¸ |
| | | export function restoreWork (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformJob/restoreWork', data) |
| | | } |
| | |
| | | <el-form-item label="åçè¶
æ¶æ¥è¦æ¶é´(åéï¼ï¼" prop="stayTimeoutAlarmTime"> |
| | | <el-input type="number" v-model="form.stayTimeoutAlarmTime" placeholder="请è¾å
¥åçè¶
æ¶æ¥è¦æ¶é´(åé)" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="æåºç " prop="sortnum"> |
| | | <el-input type="number" v-model="form.sortnum" placeholder="请è¾å
¥æåºç " v-trim /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | |
| | | workRate: '', |
| | | stayTimeoutAlarmTime: '', |
| | | workTimeoutAlarmTime: '', |
| | | sortnum: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | workingNum: [{ required: true, validator: numRuleGtZero, message: '请è¾å
¥åæ¶ä½ä¸æ°é,å¿
须大äº0! ', trigger: 'blur' }] |
| | | workingNum: [{ required: true, validator: numRuleGtZero, message: '请è¾å
¥åæ¶ä½ä¸æ°é,å¿
须大äº0! ', trigger: 'blur' }], |
| | | sortnum: [{ required: true, message: 'æåºç ä¸è½ä¸ºç©ºï¼', trigger: 'blur' }] |
| | | } |
| | | } |
| | | }, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main_app1" v-if="info"> |
| | | <div class="main_head"> |
| | | <div class="main_head_title"> |
| | | <span>å
¥å人åç»è®¡æ»è§</span> |
| | | <el-radio-group v-model="isGroupBy" size="mini" @change="getData(), getRataLists(), getReportLists()"> |
| | | <el-radio-button :label="0">æè½¦æ¬¡ç»è®¡</el-radio-button> |
| | | <el-radio-button :label="1">æè½¦è¾ç»è®¡</el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | <div class="main_head_bottom"> |
| | | <div class="main_head_item blue"> |
| | | <span>{{info.todayTotal}}</span> |
| | | <span>仿¥</span> |
| | | </div> |
| | | <div class="main_head_item red"> |
| | | <span>{{info.yesterdayTotal}}</span> |
| | | <span>æ¨æ¥</span> |
| | | </div> |
| | | <div class="main_head_item yellow"> |
| | | <span>{{info.weekTotal}}</span> |
| | | <span>æ¬å¨</span> |
| | | </div> |
| | | <div class="main_head_item orange"> |
| | | <span>{{info.monthTotal}}</span> |
| | | <span>æ¬æ</span> |
| | | </div> |
| | | <div class="main_head_item darkBlue"> |
| | | <span>{{info.yearTotal}}</span> |
| | | <span>æ¬å¹´</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div class="type_wrap"> |
| | | <div class="title">å
¨å¹´å
¥å人åè¶å¿</div> |
| | | <div class="echart1" ref="typeRef" v-if="info.cumulativeDataList"></div> |
| | | <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-else> |
| | | <img style="width: 200px;" src="@/assets/images/default_homeimg.png" alt=""> |
| | | </div> |
| | | </div> |
| | | <div class="dept_wrap"> |
| | | <div class="title"> |
| | | <span>人ååç±»ç»è®¡</span> |
| | | <el-radio-group style="margin-left: 20px;" v-model="dateType" size="mini" @change="changeDateType"> |
| | | <el-radio-button label="month">æ</el-radio-button> |
| | | <el-radio-button label="year">å¹´</el-radio-button> |
| | | </el-radio-group> |
| | | <el-date-picker |
| | | v-model="value" |
| | | :type="dateType" |
| | | size="mini" |
| | | @change="getRataLists()" |
| | | :value-format="dateType === 'month' ? 'yyyy-MM' : 'yyyy'" |
| | | style="margin-left: 20px; width: 130px;" |
| | | placeholder="è¯·éæ©"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div id="echart2" ref="deptRef" v-if="listZB.length > 0"></div> |
| | | <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-else> |
| | | <img style="width: 200px;" src="@/assets/images/default_homeimg.png" alt=""> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_table"> |
| | | <div class="main_table_list"> |
| | | <div class="title" style="display: flex; align-items: center; justify-content: space-between;"> |
| | | <div> |
| | | <span>å
¥å人åç»è®¡è¡¨</span> |
| | | <el-radio-group style="margin-left: 20px;" v-model="radio" size="mini" @change="changeBB"> |
| | | <el-radio-button label="month">æ</el-radio-button> |
| | | <el-radio-button label="year">å¹´</el-radio-button> |
| | | </el-radio-group> |
| | | <el-date-picker |
| | | v-model="date1" |
| | | :type="radio" |
| | | size="mini" |
| | | @change="getReportLists()" |
| | | :value-format="radio === 'month' ? 'yyyy-MM' : 'yyyy'" |
| | | style="margin-left: 20px; width: 130px;" |
| | | placeholder="è¯·éæ©"> |
| | | </el-date-picker> |
| | | </div> |
| | | <el-button type="primary" size="mini" style="margin-left: 20px;" @click="daochu">导åº</el-button> |
| | | </div> |
| | | <div class="list_head"> |
| | | <div class="list_head_item" v-for="(item, index) in column" :key="index">{{item}}</div> |
| | | </div> |
| | | <div class="table_box"> |
| | | <div class="list_content" v-for="(item, index) in list" :key="index"> |
| | | <div class="list_head_item">å¨è¿ç§</div> |
| | | <div class="list_head_item">èåå·¥æ¿</div> |
| | | <div class="list_head_item">232</div> |
| | | <div class="list_head_item">å¨è¿ç§</div> |
| | | <div class="list_head_item">èåå·¥æ¿</div> |
| | | <div class="list_head_item">232</div> |
| | | <div class="list_head_item">å¨è¿ç§</div> |
| | | <div class="list_head_item">èåå·¥æ¿</div> |
| | | <div class="list_head_item">232</div> |
| | | <div class="list_head_item">232</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_table_list1"> |
| | | <div class="title"> |
| | | <span>æ¬å¹´äººå累计å
¥åç»è®¡</span> |
| | | </div> |
| | | <div class="list_head"> |
| | | <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 info.yearSortList" :key="index"> |
| | | <div class="list_head_item">{{item.name}}</div> |
| | | <div class="list_head_item">{{item.total}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from 'echarts' |
| | | import { getInParkUserData, getRataList, getReportList, reportExportExcel } from '@/api/business' |
| | | export default { |
| | | data() { |
| | | return { |
| | | info: null, |
| | | isGroupBy: 0, |
| | | radio: 'month', |
| | | value: '', |
| | | dateType: 'month', |
| | | date: '', |
| | | date1: '', |
| | | |
| | | listZB: [], |
| | | column: [], |
| | | list: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | var now = new Date(); |
| | | var year = now.getFullYear(); |
| | | var month = now.getMonth() + 1 > 9 ? now.getMonth() + 1 : `0${now.getMonth() + 1}`; |
| | | this.value = `${year}-${month}` |
| | | this.date1 = `${year}-${month}` |
| | | |
| | | this.getData() |
| | | this.getRataLists() |
| | | this.getReportLists() |
| | | }, |
| | | methods: { |
| | | // å¯¼åº |
| | | daochu() { |
| | | reportExportExcel({ dateStr: this.date1, isGroupBy: this.isGroupBy, type: 1 }).then(res => { |
| | | this.download(res) |
| | | console.log(res.data) |
| | | }) |
| | | }, |
| | | changeBB() { |
| | | if (this.radio === 'month') { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | let month = now.getMonth() + 1 > 9 ? now.getMonth() + 1 : `0${now.getMonth() + 1}`; |
| | | this.date1 = `${year}-${month}` |
| | | } else { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | this.date1 = `${year}` |
| | | } |
| | | this.getReportLists() |
| | | }, |
| | | // å
¥å车è¾ç»è®¡è¡¨ |
| | | getReportLists() { |
| | | getReportList({ dateStr: this.date1, isGroupBy: this.isGroupBy, type: 1 }) |
| | | .then(res => { |
| | | console.log(res) |
| | | |
| | | this.column = res.data.map(item => item[0]) |
| | | |
| | | const keys = res.data.map(row => row[0]); // è·åé®å |
| | | const values = res.data.map(row => row.slice(1, row.length)); // è·åå¼ |
| | | |
| | | this.list = values[0].map((_, index) => { |
| | | return keys.reduce((obj, key, i) => { |
| | | obj[key] = values[i][index]; |
| | | return obj; |
| | | }, {}); |
| | | }); |
| | | }) |
| | | }, |
| | | changeDateType() { |
| | | if (this.dateType === 'month') { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | let month = now.getMonth() + 1 > 9 ? now.getMonth() + 1 : `0${now.getMonth() + 1}`; |
| | | this.value = `${year}-${month}` |
| | | } else { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | this.value = `${year}` |
| | | } |
| | | this.getRataLists() |
| | | }, |
| | | // 车è¾åç±»ç»è®¡ |
| | | getRataLists() { |
| | | getRataList({ dateStr: this.value, isGroupBy: this.isGroupBy, type: 1 }) |
| | | .then(res => { |
| | | console.log(res) |
| | | this.listZB = res |
| | | this.$nextTick(() => { |
| | | this.initDept() |
| | | }) |
| | | }) |
| | | }, |
| | | // åºç¡æ°æ® |
| | | getData() { |
| | | getInParkUserData({ isGroupBy: this.isGroupBy, type: 1 }).then(res => { |
| | | this.info = res |
| | | this.$nextTick(() => { |
| | | this.initType() |
| | | }) |
| | | }) |
| | | }, |
| | | // å
¨å¹´å
¥å车è¾è¶å¿ |
| | | initType() { |
| | | if (!this.info.cumulativeDataList) return |
| | | |
| | | const myChart = echarts.init(document.querySelector('.echart1')) |
| | | |
| | | let names = this.info.cumulativeDataList.map(item => item.name) |
| | | let datas = this.info.cumulativeDataList.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() |
| | | }) |
| | | }, |
| | | // 车è¾åç±»ç»è®¡ |
| | | initDept() { |
| | | if (!this.listZB) return |
| | | |
| | | const myChart = echarts.init(document.querySelector('#echart2')) |
| | | |
| | | let data = this.listZB.map(item => { |
| | | return { |
| | | value: item.total, |
| | | name: item.name |
| | | } |
| | | }) |
| | | |
| | | let option = { |
| | | series : [ |
| | | { |
| | | name: 'è®¿é®æ¥æº', |
| | | type: 'pie', |
| | | radius: '55%', |
| | | data: data |
| | | } |
| | | ] |
| | | } |
| | | myChart.setOption(option) |
| | | window.addEventListener('resize', function () { // æ§è¡ |
| | | myChart.resize() |
| | | }) |
| | | }, |
| | | initDept3() { |
| | | const myChart = echarts.init(document.querySelector('#echart3')) |
| | | |
| | | let option = { |
| | | grid: { |
| | | left: '5%', |
| | | right: '10%', |
| | | bottom: '0%', |
| | | top: '20%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] |
| | | }, |
| | | yAxis: { |
| | | type: 'value' |
| | | }, |
| | | series: [ |
| | | { |
| | | data: [150, 230, 224, 218, 135, 147, 260], |
| | | type: 'line' |
| | | } |
| | | ] |
| | | } |
| | | myChart.setOption(option) |
| | | window.addEventListener('resize', function () { // æ§è¡ |
| | | myChart.resize() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .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; |
| | | flex-direction: column; |
| | | margin-bottom: 20px; |
| | | .main_head_title { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 20px; |
| | | span { |
| | | font-weight: 600; |
| | | font-size: 16px; |
| | | color: #222222; |
| | | margin-right: 30px; |
| | | } |
| | | } |
| | | .main_head_bottom { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .main_table { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | height: 300px; |
| | | .main_table_list { |
| | | margin-left: 20px; |
| | | flex: 1; |
| | | .title { |
| | | display: flex; |
| | | align-items: center; |
| | | span { |
| | | 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%; |
| | | height: 234px; |
| | | .list_content { |
| | | width: 100%; |
| | | height: 40px; |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .main_table_list1 { |
| | | margin-left: 20px; |
| | | width: 300px; |
| | | flex-shrink: 0; |
| | | .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%; |
| | | height: 234px; |
| | | .list_content { |
| | | width: 100%; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | .list_head_item { |
| | | flex: 1; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | text-align: center; |
| | | font-size: 13px; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .main_content { |
| | | display: flex; |
| | | height: 400px; |
| | | |
| | | .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: 8; |
| | | flex-shrink: 0; |
| | | height: calc(100% - 20px); |
| | | padding-left: 20px; |
| | | |
| | | #echart2 { |
| | | width: 100%; |
| | | height: calc(100% - 60px); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main_app1" v-if="info"> |
| | | <div class="main_head"> |
| | | <div class="main_head_title"> |
| | | <span>å
¥å车è¾ç»è®¡æ»è§</span> |
| | | <el-radio-group v-model="isGroupBy" size="mini" @change="getData(), getRataLists(), getReportLists()"> |
| | | <el-radio-button :label="0">æè½¦æ¬¡ç»è®¡</el-radio-button> |
| | | <el-radio-button :label="1">æè½¦è¾ç»è®¡</el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | <div class="main_head_bottom"> |
| | | <div class="main_head_item blue"> |
| | | <span>{{info.todayTotal}}</span> |
| | | <span>仿¥</span> |
| | | </div> |
| | | <div class="main_head_item red"> |
| | | <span>{{info.yesterdayTotal}}</span> |
| | | <span>æ¨æ¥</span> |
| | | </div> |
| | | <div class="main_head_item yellow"> |
| | | <span>{{info.weekTotal}}</span> |
| | | <span>æ¬å¨</span> |
| | | </div> |
| | | <div class="main_head_item orange"> |
| | | <span>{{info.monthTotal}}</span> |
| | | <span>æ¬æ</span> |
| | | </div> |
| | | <div class="main_head_item darkBlue"> |
| | | <span>{{info.yearTotal}}</span> |
| | | <span>æ¬å¹´</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div class="type_wrap"> |
| | | <div class="title">å
¨å¹´å
¥å车è¾è¶å¿</div> |
| | | <div id="echart1" ref="typeRef" v-if="info.cumulativeDataList"></div> |
| | | <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-else> |
| | | <img style="width: 200px;" src="@/assets/images/default_homeimg.png" alt=""> |
| | | </div> |
| | | </div> |
| | | <div class="dept_wrap"> |
| | | <div class="title"> |
| | | <span>车è¾åç±»ç»è®¡</span> |
| | | <el-radio-group style="margin-left: 20px;" v-model="dateType" size="mini" @change="changeDateType"> |
| | | <el-radio-button label="month">æ</el-radio-button> |
| | | <el-radio-button label="year">å¹´</el-radio-button> |
| | | </el-radio-group> |
| | | <el-date-picker |
| | | v-model="value" |
| | | :type="dateType" |
| | | size="mini" |
| | | @change="getRataLists()" |
| | | :value-format="dateType === 'month' ? 'yyyy-MM' : 'yyyy'" |
| | | style="margin-left: 20px; width: 130px;" |
| | | placeholder="è¯·éæ©"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div id="echart2" ref="deptRef" v-if="listZB.length > 0"></div> |
| | | <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-else> |
| | | <img style="width: 200px;" src="@/assets/images/default_homeimg.png" alt=""> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_table"> |
| | | <div class="main_table_list"> |
| | | <div class="title" style="display: flex; align-items: center; justify-content: space-between;"> |
| | | <div> |
| | | <span>å
¥å车è¾ç»è®¡è¡¨</span> |
| | | <el-radio-group style="margin-left: 20px;" v-model="radio" size="mini" @change="changeBB"> |
| | | <el-radio-button label="month">æ</el-radio-button> |
| | | <el-radio-button label="year">å¹´</el-radio-button> |
| | | </el-radio-group> |
| | | <el-date-picker |
| | | v-model="date1" |
| | | :type="radio" |
| | | size="mini" |
| | | @change="getReportLists()" |
| | | :value-format="radio === 'month' ? 'yyyy-MM' : 'yyyy'" |
| | | style="margin-left: 20px; width: 130px;" |
| | | placeholder="è¯·éæ©"> |
| | | </el-date-picker> |
| | | </div> |
| | | <el-button type="primary" size="mini" style="margin-left: 20px;" @click="daochu">导åº</el-button> |
| | | </div> |
| | | <div class="list_head"> |
| | | <div class="list_head_item" v-for="(item, index) in column" :key="index">{{item}}</div> |
| | | </div> |
| | | <div class="table_box"> |
| | | <div class="list_content" v-for="(item, index) in list" :key="index"> |
| | | <div class="list_head_item">å¨è¿ç§</div> |
| | | <div class="list_head_item">èåå·¥æ¿</div> |
| | | <div class="list_head_item">232</div> |
| | | <div class="list_head_item">å¨è¿ç§</div> |
| | | <div class="list_head_item">èåå·¥æ¿</div> |
| | | <div class="list_head_item">232</div> |
| | | <div class="list_head_item">å¨è¿ç§</div> |
| | | <div class="list_head_item">èåå·¥æ¿</div> |
| | | <div class="list_head_item">232</div> |
| | | <div class="list_head_item">232</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_table_list1"> |
| | | <div class="title"> |
| | | <span>æ¬å¹´è½¦è¾ç´¯è®¡å
¥åç»è®¡</span> |
| | | </div> |
| | | <div class="list_head"> |
| | | <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 info.yearSortList" :key="index"> |
| | | <div class="list_head_item">{{item.name}}</div> |
| | | <div class="list_head_item">{{item.total}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from 'echarts' |
| | | import { getInParkUserData, getRataList, getReportList, reportExportExcel } from '@/api/business' |
| | | export default { |
| | | data() { |
| | | return { |
| | | info: null, |
| | | isGroupBy: 0, |
| | | radio: 'month', |
| | | value: '', |
| | | dateType: 'month', |
| | | date: '', |
| | | date1: '', |
| | | |
| | | listZB: [], |
| | | column: [], |
| | | list: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | var now = new Date(); |
| | | var year = now.getFullYear(); |
| | | var month = now.getMonth() + 1 > 9 ? now.getMonth() + 1 : `0${now.getMonth() + 1}`; |
| | | this.value = `${year}-${month}` |
| | | this.date1 = `${year}-${month}` |
| | | |
| | | this.getData() |
| | | this.getRataLists() |
| | | this.getReportLists() |
| | | }, |
| | | methods: { |
| | | // å¯¼åº |
| | | daochu() { |
| | | reportExportExcel({ dateStr: this.date1, isGroupBy: this.isGroupBy, type: 0 }).then(res => { |
| | | this.download(res) |
| | | console.log(res.data) |
| | | }) |
| | | }, |
| | | changeBB() { |
| | | if (this.radio === 'month') { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | let month = now.getMonth() + 1 > 9 ? now.getMonth() + 1 : `0${now.getMonth() + 1}`; |
| | | this.date1 = `${year}-${month}` |
| | | } else { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | this.date1 = `${year}` |
| | | } |
| | | this.getReportLists() |
| | | }, |
| | | // å
¥å车è¾ç»è®¡è¡¨ |
| | | getReportLists() { |
| | | getReportList({ dateStr: this.date1, isGroupBy: this.isGroupBy, type: 0 }) |
| | | .then(res => { |
| | | console.log(res) |
| | | |
| | | this.column = res.data.map(item => item[0]) |
| | | |
| | | const keys = res.data.map(row => row[0]); // è·åé®å |
| | | const values = res.data.map(row => row.slice(1, row.length)); // è·åå¼ |
| | | |
| | | this.list = values[0].map((_, index) => { |
| | | return keys.reduce((obj, key, i) => { |
| | | obj[key] = values[i][index]; |
| | | return obj; |
| | | }, {}); |
| | | }); |
| | | }) |
| | | }, |
| | | changeDateType() { |
| | | if (this.dateType === 'month') { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | let month = now.getMonth() + 1 > 9 ? now.getMonth() + 1 : `0${now.getMonth() + 1}`; |
| | | this.value = `${year}-${month}` |
| | | } else { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | this.value = `${year}` |
| | | } |
| | | this.getRataLists() |
| | | }, |
| | | // 车è¾åç±»ç»è®¡ |
| | | getRataLists() { |
| | | getRataList({ dateStr: this.value, isGroupBy: this.isGroupBy, type: 0 }) |
| | | .then(res => { |
| | | console.log(res) |
| | | this.listZB = res |
| | | this.$nextTick(() => { |
| | | this.initDept() |
| | | }) |
| | | }) |
| | | }, |
| | | // åºç¡æ°æ® |
| | | getData() { |
| | | getInParkUserData({ isGroupBy: this.isGroupBy, type: 0 }).then(res => { |
| | | this.info = res |
| | | this.$nextTick(() => { |
| | | this.initType() |
| | | }) |
| | | }) |
| | | }, |
| | | // å
¨å¹´å
¥å车è¾è¶å¿ |
| | | initType() { |
| | | if (!this.info.cumulativeDataList) return |
| | | |
| | | const myChart = echarts.init(document.querySelector('#echart1')) |
| | | |
| | | let names = this.info.cumulativeDataList.map(item => item.name) |
| | | let datas = this.info.cumulativeDataList.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() |
| | | }) |
| | | }, |
| | | // 车è¾åç±»ç»è®¡ |
| | | initDept() { |
| | | if (!this.listZB) return |
| | | |
| | | const myChart = echarts.init(document.querySelector('#echart2')) |
| | | |
| | | let data = this.listZB.map(item => { |
| | | return { |
| | | value: item.total, |
| | | name: item.name |
| | | } |
| | | }) |
| | | |
| | | let option = { |
| | | series : [ |
| | | { |
| | | name: 'è®¿é®æ¥æº', |
| | | type: 'pie', |
| | | radius: '55%', |
| | | data: data |
| | | } |
| | | ] |
| | | } |
| | | myChart.setOption(option) |
| | | window.addEventListener('resize', function () { // æ§è¡ |
| | | myChart.resize() |
| | | }) |
| | | }, |
| | | initDept3() { |
| | | const myChart = echarts.init(document.querySelector('#echart3')) |
| | | |
| | | let option = { |
| | | grid: { |
| | | left: '5%', |
| | | right: '10%', |
| | | bottom: '0%', |
| | | top: '20%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] |
| | | }, |
| | | yAxis: { |
| | | type: 'value' |
| | | }, |
| | | series: [ |
| | | { |
| | | data: [150, 230, 224, 218, 135, 147, 260], |
| | | type: 'line' |
| | | } |
| | | ] |
| | | } |
| | | myChart.setOption(option) |
| | | window.addEventListener('resize', function () { // æ§è¡ |
| | | myChart.resize() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .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; |
| | | flex-direction: column; |
| | | margin-bottom: 20px; |
| | | .main_head_title { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 20px; |
| | | span { |
| | | font-weight: 600; |
| | | font-size: 16px; |
| | | color: #222222; |
| | | margin-right: 30px; |
| | | } |
| | | } |
| | | .main_head_bottom { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .main_table { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | height: 300px; |
| | | .main_table_list { |
| | | margin-left: 20px; |
| | | flex: 1; |
| | | .title { |
| | | display: flex; |
| | | align-items: center; |
| | | span { |
| | | 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%; |
| | | height: 234px; |
| | | .list_content { |
| | | width: 100%; |
| | | height: 40px; |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .main_table_list1 { |
| | | margin-left: 20px; |
| | | width: 300px; |
| | | flex-shrink: 0; |
| | | .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%; |
| | | height: 234px; |
| | | .list_content { |
| | | width: 100%; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | .list_head_item { |
| | | flex: 1; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | text-align: center; |
| | | font-size: 13px; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .main_content { |
| | | display: flex; |
| | | height: 400px; |
| | | |
| | | .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: 8; |
| | | flex-shrink: 0; |
| | | height: calc(100% - 20px); |
| | | padding-left: 20px; |
| | | |
| | | #echart2 { |
| | | width: 100%; |
| | | height: calc(100% - 60px); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <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>æ»éæ£æ°</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> |
| | |
| | | <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">责任é¨é¨</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> |
| | |
| | | }, |
| | | typeList: [], |
| | | deptList: [], |
| | | totalList: { |
| | | total: 0, |
| | | waitDeal: 0, |
| | | dealFinish: 0, |
| | | back: 0, |
| | | todayNew: 0 |
| | | }, |
| | | yearList: [], |
| | | departmentList: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.changeRadio('29') |
| | | this.initDept3() |
| | | // this.getData() |
| | | }, |
| | | methods: { |
| | |
| | | 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() |
| | | }) |
| | | |
| | | } |
| | |
| | | let option = { |
| | | grid: { |
| | | left: '0%', |
| | | // right: '4%', |
| | | // bottom: '3%', |
| | | right: '0%', |
| | | bottom: '0%', |
| | | top: '0%', |
| | | containLabel: true |
| | | }, |
| | |
| | | left: '45%', |
| | | textStyle: { |
| | | color: '#666666', |
| | | fontSize: 16, |
| | | fontSize: 13, |
| | | }, |
| | | }, { |
| | | text: total, |
| | |
| | | left: '47.6%', |
| | | textStyle: { |
| | | color: '#080404', |
| | | fontSize: 24, |
| | | fontSize: 16, |
| | | fontWeight: 'bold', |
| | | }, |
| | | }], |
| | |
| | | series: [ |
| | | { |
| | | type: 'pie', |
| | | radius: ['24%', '40%'], |
| | | radius: ['34%', '50%'], |
| | | label: { |
| | | formatter: "{a|{b}}\n\n{c} | {d}%", |
| | | rich: { |
| | |
| | | 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), |
| | |
| | | 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() |
| | |
| | | /*.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> |
| | |
| | | <el-form-item label="访客åä½" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" placeholder="请è¾å
¥è®¿å®¢åä½" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="èµ·å§æ¶é´" prop="date"> |
| | | <el-date-picker |
| | | v-model="searchForm.date" |
| | | type="daterange" |
| | | @change="changeDate" |
| | | value-format="yyyy-MM-dd" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="审æ¹ç¶æ" prop="status"> |
| | | <el-select v-model="searchForm.status" placeholder="è¯·éæ©"> |
| | | <el-option label="å¾
æäº¤å®¡æ¹" value="0"></el-option> |
| | |
| | | companyName: '', |
| | | idcardNo: '', |
| | | status: '', |
| | | type: 0 |
| | | type: 0, |
| | | queryStarttime: '', |
| | | queryEndtime: '', |
| | | date: [] |
| | | } |
| | | } |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | methods: { |
| | | // æç´¢æ¡éç½® |
| | | reset () { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.queryStarttime = '' |
| | | this.searchForm.queryEndtime = '' |
| | | this.search() |
| | | }, |
| | | changeDate(e) { |
| | | if (e) { |
| | | this.searchForm.queryStarttime = e[0] |
| | | this.searchForm.queryEndtime = e[1] |
| | | } else { |
| | | this.searchForm.queryStarttime = '' |
| | | this.searchForm.queryEndtime = '' |
| | | } |
| | | this.search() |
| | | }, |
| | | handleDetail(row) { |
| | | this.isShowDetail = true |
| | | console.log('row', row) |
| | |
| | | <img src="@/assets/icons/home_icon2.png" alt="" /> |
| | | </div> |
| | | <div class="content"> |
| | | <div>访客人次(人)ï¼{{ headerData.visitUserNum }}</div> |
| | | <div>ç¾ç¦»äººæ¬¡(人)ï¼{{ headerData.signLevelNum }}</div> |
| | | <div>å
¥å人次(人)ï¼{{ headerData.visitUserNum }}</div> |
| | | <div>åºå人次(人)ï¼{{ headerData.signLevelNum }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="card"> |
| | |
| | | </div> |
| | | <div class="wrap static2"> |
| | | <div class="header"> |
| | | <div class="home_title">é¿æç¸å
³æ¹åå¸</div> |
| | | <!-- <div class="home_title">é¿æç¸å
³æ¹åå¸</div>--> |
| | | <el-radio-group v-model="tabPosition" @change="changeType"> |
| | | <el-radio-button label="top">é¿æç¸å
³æ¹åå¸</el-radio-button> |
| | | <el-radio-button label="right">å
é¨äººååå¸</el-radio-button> |
| | | </el-radio-group> |
| | | <!-- <div class="df_ac more"> |
| | | æ´å¤<i class="el-icon-arrow-right"></i> |
| | | </div> --> |
| | |
| | | }, |
| | | data () { |
| | | return { |
| | | tabPosition: 'top', |
| | | colors, |
| | | nowDate: '', |
| | | nowWeek: '', |
| | |
| | | this.initData() |
| | | }, |
| | | methods: { |
| | | changeType(e) { |
| | | console.log(e) |
| | | this.initEchart2() |
| | | }, |
| | | getNoticeList(){ |
| | | syncHkNotice().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.todayInParkUserNum - this.headerData.inParkLwUserNum - this.headerData.inParkVisitUserNum - this.headerData.inParkDriverUserNum }) |
| | | arr.push({ name: 'é¿æç¸å
³æ¹', value: this.headerData.inParkLwUserNum }) |
| | | arr.push({ name: 'è´§è¿å¸æº', value: this.headerData.inParkDriverUserNum }) |
| | | arr.sort((a, b) => b.value - a.value) |
| | | this.manningRatio = arr |
| | | this.initEchart1() |
| | |
| | | }) |
| | | }, |
| | | initEchart2 () { |
| | | console.log('initEchart2') |
| | | const myChart = echarts.init(document.getElementById('echart2')) |
| | | const that = this |
| | | myChart.setOption({ |
| | |
| | | }, |
| | | yAxis: { |
| | | type: 'category', |
| | | data: that.staticData.lwList.map(i => i.name) |
| | | data: that.tabPosition === 'top' ? that.staticData.lwList.map(i => i.name) : that.staticData.internalList.map(i => i.name) |
| | | }, |
| | | series: [ |
| | | { |
| | | data: that.staticData.lwList.map(i => i.num), |
| | | data: that.tabPosition === 'top' ? that.staticData.lwList.map(i => i.num) : that.staticData.internalList.map(i => i.num), |
| | | type: 'bar', |
| | | barWidth: 10, |
| | | itemStyle: { |
| | |
| | | </div> |
| | | <div class="right"> |
| | | <el-button v-if="task.status == 5" plain @click="handleErr(task)">å¼å¸¸æèµ·</el-button> |
| | | <el-button v-if="task.status == 8" plain @click="restore(task)">æ¢å¤ä½ä¸</el-button> |
| | | <el-button v-if="task.status == 5 || task.status == 8" plain |
| | | @click="handleTransform(item, task)">转移æå°</el-button> |
| | | <el-button v-if="task.status == 4" plain @click="handlePass(task)">è¿å·</el-button> |
| | |
| | | platformMove, |
| | | updUserPlatformConfig, |
| | | |
| | | listByGroupId |
| | | listByGroupId, |
| | | restoreWork |
| | | } from '@/api' |
| | | import PlatformQueuing from './components/PlatformQueuing.vue' |
| | | import WaybillDetail from './components/WaybillDetail.vue' |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | restore(item) { |
| | | this.$confirm('æ¨ç¡®è®¤è¦å¯¹è¯¥ä»»å¡è¿è¡æ¢å¤ä½ä¸å', '温馨æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | restoreWork({ jobId: item.id }).then(ress => { |
| | | Message.success('æ¢å¤ä½ä¸æå') |
| | | this.getPlatGroupList() |
| | | }) |
| | | }) |
| | | }, |
| | | platgroupClick(item) { |
| | | this.activeGroup = { ...item } |
| | | this.circulInitTaskList() |
| | |
| | | method: 'get', |
| | | data |
| | | }) |
| | | } |
| | | // æ¢å¤ä½ä¸ |
| | | export const restoreWork = (data) => { |
| | | return http({ |
| | | url: 'visitsAdmin/cloudService/web/platformJob/restoreWork', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | |
| | | <view v-if="item.status == 4" class="btn active" @click="handleWork(item)">å¼å§ä½ä¸</view>
|
| | |
|
| | | <view v-if="item.status == 5" class="btn" @click="handleErr(item)">å¼å¸¸æèµ·</view>
|
| | | <view v-if="item.status == 8" class="btn" @click="restore(item)">å¼å¸¸æèµ·</view>
|
| | | <view v-if="item.status == 5 || item.status == 8" class="btn" @click="handleTransform(item)">转移æå°</view>
|
| | | <view v-if="item.status == 5 || item.status == 8" class="btn active" @click="handleFinish(item)">ä½ä¸å®æ</view>
|
| | | </view>
|
| | |
| | | platformMove,
|
| | | platformErr,
|
| | | platformOverNumber,
|
| | | wmsJobDetail
|
| | | wmsJobDetail,
|
| | | restoreWork
|
| | | } from '@/api'
|
| | | import {
|
| | | statusMap
|
| | |
| | | }
|
| | | }
|
| | | })
|
| | | },
|
| | | restore(item) {
|
| | | uni.showModal({
|
| | | content: 'æ¨ç¡®è®¤è¦å¯¹è¯¥ä»»å¡è¿è¡æ¢å¤ä½ä¸å',
|
| | | success: (res) => {
|
| | | if (res.confirm) {
|
| | | restoreWork({
|
| | | jobId: item.id
|
| | | }).then(ress => {
|
| | | this.showToast('æ¢å¤ä½ä¸æå')
|
| | | this.getPlatformTask()
|
| | | })
|
| | | }
|
| | | }
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | <meta charset="UTF-8"> |
| | | <link rel="icon" href="/favicon.ico"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>宿³°ç©æµæå°å«å·å¤§å±</title> |
| | | <title>宿³°æºæ
§ç©æµååºç³»ç»</title> |
| | | </head> |
| | | <body> |
| | | <div id="app"></div> |