| | |
| | | export function companyGetList (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/company/page', data) |
| | | } |
| | | // 查询所有部门 |
| | | export function companyGetListPost (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/company/list', data) |
| | | } |
| | | |
| | | // 删除 |
| | | export function deleteById (id) { |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="500px" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <GlobalWindow :title="title" width="500px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="名称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入名称" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="排序码(升序)" prop="sortnum"> |
| | | <el-input v-model="form.sortnum" type="number" placeholder="请输入排序码" v-trim/> |
| | | <el-form-item label="责任部门" prop="companyId"> |
| | | <el-select @change="loadMember" v-model="form.companyId"> |
| | | <el-option v-for="op in department" :key="op.id" :label="op.name" :value="op.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="form.type==0" label="选择安全员:" prop="memberIdList"> |
| | | <el-form-item v-if="form.type == 0" label="选择安全员" prop="memberIdList"> |
| | | <el-select v-model="form.memberIdList" filterable multiple clearable placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in memberList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="排序码(升序)" prop="sortnum"> |
| | | <el-input v-model="form.sortnum" type="number" placeholder="请输入排序码" v-trim /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { allList } from '@/api/business/member' |
| | | import { companyGetListPost } from '@/api/business/company' |
| | | export default { |
| | | name: 'OperaHiddenDangerParamWindow', |
| | | extends: BaseOpera, |
| | |
| | | return { |
| | | // 表单数据 |
| | | memberList: [], |
| | | department: [], |
| | | departprops: { |
| | | label: 'name', |
| | | value: 'id', |
| | | checkStrictly: true |
| | | }, |
| | | form: { |
| | | id: null, |
| | | name: null, |
| | | companyId: null, |
| | | memberIdList: null, |
| | | type: null, |
| | | sortnum: null |
| | | }, |
| | | // 验证规则 |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请输入名称' } |
| | | ] |
| | | name: [{ required: true, message: '请输入名称' }], |
| | | companyId: [{ required: true, message: '请选择' }], |
| | | memberIdList: [{ required: true, message: '请选择', type: 'array' }], |
| | | } |
| | | } |
| | | }, |
| | |
| | | this.title = title |
| | | this.visible = true |
| | | this.form.type = type |
| | | this.loadMember() |
| | | this.getfindCompanyTreePage() |
| | | // 新建组织 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | getfindCompanyTreePage() { |
| | | companyGetListPost({}) |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | | this.department = res |
| | | } |
| | | }) |
| | | }, |
| | | loadMember () { |
| | | allList({ |
| | | type: 2, |
| | | companyType: 1 |
| | | companyType: 1, |
| | | companyId: this.form.companyId |
| | | }) |
| | | .then(res => { |
| | | this.memberList = res |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="入园车辆" prop="carNos"> |
| | | <el-input v-model="param.carNos" placeholder="请输入车牌号"></el-input> |
| | | <el-input v-model.trim="param.carNos" placeholder="请输入车牌号"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="随车人数" prop="memberNum"> |
| | | <el-input |
| | |
| | | if (!valid) { |
| | | return |
| | | } |
| | | const { param } = this |
| | | if(param.carNos){ |
| | | param.carNos = param.carNos.replace(/\s*/g,"") |
| | | param.carNos = param.carNos.replace(/[\r\n]/g, "") |
| | | } |
| | | // 调用新建接口 |
| | | this.isWorking = true |
| | | createVisit({ |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="随行车辆"> |
| | | <el-input v-model="param.carNos" placeholder="请输入车牌号"></el-input> |
| | | <el-input v-model.trim="param.carNos" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" placeholder="请输入车牌号"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | |
| | | GlobalWindow, |
| | | UploadFaceImg |
| | | }, |
| | | |
| | | data () { |
| | | return { |
| | | isShowModal: false, |
| | |
| | | return |
| | | } |
| | | const { param } = this |
| | | if(param.carNos){ |
| | | param.carNos = param.carNos.replace(/\s*/g,"") |
| | | param.carNos = param.carNos.replace(/[\r\n]/g, "") |
| | | } |
| | | if (param.starttime.slice(0, 10) !== param.endtime.slice(0, 10)) return this.$tip.error('入园时间和离园时间不可跨天') |
| | | // 调用新建接口 |
| | | this.isWorking = true |
| | |
| | | default-time="08:00:00" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="责任部门" prop="companyId"> |
| | | <el-select v-model="param.companyId"> |
| | | <el-option v-for="op in department" :key="op.id" :label="op.name" :value="op.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="隐患区域" prop="areaId"> |
| | | <el-select v-model="param.areaId" @change="changeArea" placeholder="请选择"> |
| | | <el-option |
| | |
| | | import { allList, memberList } from '@/api/business/hiddenDangerParam' |
| | | import { create } from '@/api/business/hiddenDanger' |
| | | import { Loading } from 'element-ui' |
| | | import { companyGetListPost } from '@/api/business/company' |
| | | export default { |
| | | extends: BaseOpera, |
| | | components: { |
| | |
| | | uploadData: { |
| | | folder: 'HIDDEN_DANGER_FILE' |
| | | }, |
| | | department: [], |
| | | rules: { |
| | | // starttime: [{ required: true, message: '请选择日期', trigger: 'change' }], |
| | | areaId: [{ required: true, message: '请选择', trigger: 'change' }], |
| | | cateId: [{ required: true, message: '请选择', trigger: 'change' }], |
| | | checkUserId: [{ required: true, message: '请选择', trigger: 'change' }], |
| | | companyId: [{ required: true, message: '请选择', trigger: 'change' }], |
| | | faceImgUrl: [{ required: true, message: '请上传', trigger: 'change' }], |
| | | |
| | | content: [{ required: true, message: '请输入', trigger: 'blur' }] |
| | |
| | | this.initData() |
| | | }, |
| | | methods: { |
| | | |
| | | initData () { |
| | | allList({ type: 1 }).then(res => { // 类型 |
| | | this.typeList = res || [] |
| | |
| | | memberList({}).then(res => { |
| | | this.memberList = res || [] |
| | | }) |
| | | this.getfindCompanyTreePage() |
| | | }, |
| | | getfindCompanyTreePage() { |
| | | companyGetListPost({}) |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | | this.department = res |
| | | } |
| | | }) |
| | | }, |
| | | changeArea (e) { |
| | | const item = this.addrList.find(i => i.id === e) |
| | |
| | | return |
| | | } |
| | | // 如果访问的是登录页面,则直接跳转至首页 |
| | | if (to.name === 'login') { |
| | | next({ name: 'index' }) |
| | | return |
| | | } |
| | | // if (to.name === 'login') { |
| | | // next({ name: 'index' }) |
| | | // return |
| | | // } |
| | | next() |
| | | return |
| | | } |
| | |
| | | import { trim } from './util' |
| | | import cache from '../plugins/cache' |
| | | import { Message } from 'element-ui' |
| | | import router from '@/router' |
| | | |
| | | axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8' |
| | | const axiosInstance = axios.create({ |
| | |
| | | |
| | | // 新建响应拦截器 |
| | | axiosInstance.interceptors.response.use((response) => { |
| | | |
| | | // 请求失败 |
| | | if (response.status !== 200) { |
| | | return Promise.reject(new Error('服务器繁忙,请稍后再试')) |
| | |
| | | return Promise.reject(new Error('服务器繁忙,请稍后再试')) |
| | | } |
| | | if (response.data.code === 401 || response.data.code === 5112) { |
| | | if (response.config.autoLogin !== false) { |
| | | // if (response.config.autoLogin !== false) { |
| | | Cookies.set('dm_user_token','') |
| | | window.location.href = process.env.VUE_APP_ROUTER_MODE === 'hash' ? (process.env.VUE_APP_CONTEXT_PATH +'/#/login') : (process.env.VUE_APP_CONTEXT_PATH+'/login') |
| | | } |
| | | router.replace({name: 'login'}) |
| | | // } |
| | | return Promise.reject(response.data) |
| | | } |
| | | // 业务失败 |
| | |
| | | <span v-if="row.status == 2" style="color: red">拉黑/冻结</span> |
| | | </template> |
| | | </el-table-column>--> |
| | | <el-table-column prop="trainEndTime" label="培训有效期" min-width="100px"> </el-table-column> |
| | | <el-table-column label="部门类型" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.companyType == 0">相关方组织</span> |
| | |
| | | <img src="@/assets/images/bg@2x.png" class="main_bg" alt=""> |
| | | <div class="login_wrap"> |
| | | <div class="login_img"> |
| | | <div class="h2">安徽安泰物流有限责任公司</div> |
| | | <div class="h3">智慧物流园区安消一体化系统</div> |
| | | </div> |
| | | <div class="form_wrap"> |
| | |
| | | background: url("../assets/images/login_img@2x.png"); |
| | | background-size: 100% 100%; |
| | | padding-left: 40px; |
| | | padding-top: 80px; |
| | | |
| | | padding-top: 60px; |
| | | .h2{ |
| | | color: $primary-color; |
| | | background-color: #fff; |
| | | height: 24px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border-radius: 4px; |
| | | width: 186px; |
| | | display: flex; |
| | | margin-bottom: 12px; |
| | | } |
| | | .h3 { |
| | | font-size: 28px; |
| | | font-weight: 700; |
| | |
| | | <el-form-item label="隐患区域" prop="name"> |
| | | <el-input v-model="searchForm.name" clearable placeholder="请输入隐患区域" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="责任部门" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" clearable placeholder="请输入部门名称" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">搜索</el-button> |
| | | <el-button @click="reset">重置</el-button> |
| | |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="隐患区域" min-width="200px"></el-table-column> |
| | | <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column> |
| | | <el-table-column prop="memberNames" label="安全员" min-width="200px"></el-table-column> |
| | | <el-table-column prop="editDate" label="操作时间" min-width="200px"></el-table-column> |
| | | <el-table-column prop="name" label="隐患区域" min-width="120px"></el-table-column> |
| | | <el-table-column prop="companyName" label="责任部门" min-width="120px"></el-table-column> |
| | | <el-table-column prop="sortnum" label="排序码" min-width="70px"></el-table-column> |
| | | <el-table-column prop="memberNames" label="安全员" min-width="80px"></el-table-column> |
| | | <el-table-column prop="editDate" label="操作时间" min-width="160px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:hiddendangerparam:update', 'business:hiddendangerparam:delete' ])" |
| | | label="操作" |
| | | min-width="250" |
| | | min-width="140" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | |
| | | <el-form-item label="提报人组织" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" placeholder="请输入" clearable @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="责任部门" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" placeholder="请输入" clearable @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="隐患区域" prop="areaId"> |
| | | <el-select v-model="searchForm.areaId" placeholder="请选择隐患区域" clearable @change="search"> |
| | | <el-option |
| | |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="companyName" label="责任部门" min-width="150px"></el-table-column> |
| | | <el-table-column prop="areaName" label="隐患区域" min-width="150px"></el-table-column> |
| | | <el-table-column prop="categoryName" label="隐患类型" min-width="150px"></el-table-column> |
| | | <el-table-column prop="memberName" label="提报人" min-width="80px"></el-table-column> |
| | |
| | | memberName: '', |
| | | companyName: '', |
| | | queryStartTime: '', |
| | | companyName: '', |
| | | queryEndTime: '', |
| | | areaId: null, |
| | | cateId: null, |
| | |
| | | type: 'select', |
| | | label: '作业状态', |
| | | options: [ |
| | | { value: 0, label: '待确认' }, |
| | | { value: 1, label: '待签到' }, |
| | | { value: 2, label: '等待叫号' }, |
| | | { value: 3, label: '入园等待' }, |
| | | { value: 4, label: '月台等待' }, |
| | | { value: 5, label: '作业中' }, |
| | |
| | | } |
| | | |
| | | // 消防管控大屏 报警信息 |
| | | export const getStoreTaskList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/wholeProvince/transportTaskList', data) |
| | | export const getFightingalarmData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/fightingAdmin/alarmData', data) |
| | | } |
| | | // 消防管控大屏 告警处理分析 |
| | | export const getStoreTaskList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/wholeProvince/transportTaskList', data) |
| | | export const getFightingHandle = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/fightingAdmin/alarmHandleData', data) |
| | | } |
| | | // 消防管控大屏 中心数据 |
| | | export const getStoreTaskList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/wholeProvince/transportTaskList', data) |
| | | export const getFightingcenterData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/fightingAdmin/centerData', data) |
| | | } |
| | | // 消防管控大屏 今日各系统设备状态及告警数量 |
| | | export const getStoreTaskList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/wholeProvince/transportTaskList', data) |
| | | export const getFightingDeAlarm = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/fightingAdmin/deviceAlarmData', data) |
| | | } |
| | | // 消防管控大屏 本年消防设备-设施维护情况 |
| | | export const getStoreTaskList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/wholeProvince/transportTaskList', data) |
| | | export const getFightingDeviceY = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/fightingAdmin/yearDeviceData', data) |
| | | } |
| | | |
| | | // 场内调度看板 今日月台完成订单统计 |
| | | export const cnplatformGroupFinish = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/onSitDispatch/platformGroupFinish', data) |
| | | } |
| | | // 场内调度看板 今日月台工作时长趋势 |
| | | export const cnplatformDuration = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/onSitDispatch/platformDuration', data) |
| | | } |
| | | // 场内调度看板 实时月台作业信息 |
| | | export const cnplatformWorkData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/onSitDispatch/platformWorkData', data) |
| | | } |
| | | // 场内调度看板 中心数据 |
| | | export const cncenterData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/onSitDispatch/centerData', data) |
| | | } |
| | | // 场内调度看板 今日车辆作业情况 |
| | | export const cncarWorkSituation = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/onSitDispatch/carWorkSituation', data) |
| | | } |
| | | // 场内调度看板 实时作业效率 |
| | | export const cnworkEfficiency = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/onSitDispatch/workEfficiency', data) |
| | | } |
| | | |
| | | // 物流运行调度看板 中心数据 |
| | | export const wlcenterData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/platformJobRun/centerData', data) |
| | | } |
| | | // 物流运行调度看板 出入库任务量 |
| | | export const wljobData = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/platformJobRun/jobData', data) |
| | | } |
| | | // 物流运行调度看板 当日运输任务 |
| | | export const wlplatformJobList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/platformJobRun/platformJobList', data) |
| | | } |
| | | // 物流运行调度看板 库存情况 |
| | | export const wlstockList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/platformJobRun/stockList', data) |
| | | } |
| | | // 物流运行调度看板 今日入库量统计 |
| | | export const wltotalInList = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/platformJobRun/totalInList', data) |
| | | } |
| | | // 物流运行调度看板 运输任务分析 |
| | | export const wltransportMeasure = (data) => { |
| | | return request('visitsAdmin/cloudService/board/api/platformJobRun/transportMeasure', data) |
| | | } |
| | | |
| | | |
| | |
| | | routes: [ |
| | | { |
| | | path: '/', |
| | | component: () => import('../views/FireFighting.vue') |
| | | component: () => import('../views/SecurityControl.vue') |
| | | }, |
| | | { |
| | | path: '/PlatformCall', // 月台叫号大屏 |
| | |
| | | <span class="item">故障</span> |
| | | <span class="item">离线</span> |
| | | </div> |
| | | <template v-for="i in 5"> |
| | | <template v-for="(item, i) in dataList1" :key="i"> |
| | | <div class="line"> |
| | | <span class="item name">火灶报警系统</span> |
| | | <span class="item">11</span> |
| | | <span class="item">11</span> |
| | | <span class="item">11</span> |
| | | <span class="item">11</span> |
| | | <span class="item">11</span> |
| | | <span class="item name">{{ item.deviceTypeName }}</span> |
| | | <span class="item">{{ item.statusTotal }}</span> |
| | | <span class="item">{{ item.alarmNum }}</span> |
| | | <span class="item">{{ item.shieldNum }}</span> |
| | | <span class="item">{{ item.errNum }}</span> |
| | | <span class="item">{{ item.offlineNum }}</span> |
| | | </div> |
| | | <div class="separate"></div> |
| | | </template> |
| | |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="police_wrap"> |
| | | <div class="item" v-for="(ind, i) in 4"> |
| | | <div class="item" v-for="(item, i) in dataList2"> |
| | | <div class="head"> |
| | | <div class="name">真实报警数</div> |
| | | <div class="name">{{ i }}次</div> |
| | | <div class="name">{{ item.name }}</div> |
| | | <div class="name">{{ item.num }}次</div> |
| | | </div> |
| | | <FirePercent :color="policeColors[i]" :rate="40" /> |
| | | <FirePercent :color="policeColors[i]" :rate="item.rate" /> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <img src="@/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">在线</div> |
| | | <div class="num">1000</div> |
| | | <div class="num">{{ dataList4.onlineDeviceNum }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <img src="@/assets/images/FireFighting/xiaofang_ic_baojing@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">报警</div> |
| | | <div class="num num2">12</div> |
| | | <div class="num num2">{{ dataList4.alarmDeviceNum }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <img src="@/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">故障</div> |
| | | <div class="num num3">12</div> |
| | | <div class="num num3">{{ dataList4.errDeviceNum }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <img src="@/assets/images/FireFighting/xiaofang_ic_lixian@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">离线</div> |
| | | <div class="num num4">12</div> |
| | | <div class="num num4">{{ dataList4.offlineDeviceNum }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <img src="@/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">屏蔽</div> |
| | | <div class="num num5">12</div> |
| | | <div class="num num5">{{ dataList4.shieldDeviceNum }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="content_wrap"> |
| | | <div class="list"> |
| | | <template v-for="i in 3"> |
| | | <div class="item"> |
| | | <div>已维保</div> |
| | | <div class="num active">500</div> |
| | | <div class="num active">{{ dataList5.protectNum }}</div> |
| | | </div> |
| | | <div v-if="i < 3" class="separate"></div> |
| | | </template> |
| | | |
| | | <div class="separate"></div> |
| | | <div class="item"> |
| | | <div>计划维保</div> |
| | | <div class="num active">{{ dataList5.planProtectTotal }}</div> |
| | | </div> |
| | | <div class="separate"></div> |
| | | <div class="item"> |
| | | <div>维保率</div> |
| | | <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="num active">{{ ((dataList5.protectNum / dataList5.planProtectTotal) * 100).toFixed(0) }}%</div> |
| | | </div> |
| | | </div> |
| | | <div class="footer"> |
| | | <img src="@/assets/images/FireFighting/ic_weixiu@2x.png" class="icon" alt=""> |
| | | <div class="content"> |
| | | <div>本月新增维保</div> |
| | | <div class="num">40 <span>个</span></div> |
| | | <div class="num">{{ dataList5.monthAddNum }} <span>个</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <img src="@/assets/images/FireFighting/ic_tibao@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">提报隐患数</div> |
| | | <div class="num"><span>10</span>个</div> |
| | | <div class="num"><span>{{ dataList4.todayDangerNum }}</span>个</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <img src="@/assets/images/FireFighting/ic_chuli@2x.png" alt=""> |
| | | <div class="content"> |
| | | <div class="name">处理隐患数</div> |
| | | <div class="num"><span class="today">3</span>个</div> |
| | | <div class="num"><span class="today">{{ dataList4.dealDangerNum }}</span>个</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="title"> |
| | | <img class="addr" src="@/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png" alt=""> |
| | | <span>address</span> |
| | | <span>A厂房3车间门口</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | import VScaleScreen from 'v-scale-screen' |
| | | import FirePercent from '@/components/FirePercent.vue' |
| | | import dayjs from 'dayjs' |
| | | |
| | | import * as echarts from 'echarts' |
| | | import { |
| | | getFightingalarmData, |
| | | getFightingHandle, |
| | | getFightingcenterData, |
| | | getFightingDeAlarm, |
| | | getFightingDeviceY, |
| | | } from '@/api' |
| | | |
| | | const colors = ['#FEAF01', '#01ABFE', '#51F9E4'] |
| | | const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',] |
| | | const date = ref(dayjs().format('YYYY.MM.DD')) |
| | |
| | | |
| | | }, 1000) |
| | | |
| | | const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a'] |
| | | const initEchart2 = () => { |
| | | var myChart = echarts.init(document.querySelector('.echart2')) |
| | | // 生成数据和日期 |
| | | function getLastSevenDays() { |
| | | const days = [] |
| | | const today = new Date() |
| | | for (let i = 10; i >= 0; i--) { |
| | | days.push(`${i + 1}月`) // 格式化日期为 "X月X日" |
| | | } |
| | | return days |
| | | } |
| | | |
| | | // 示例数据 |
| | | const data1 = [13, 14, 14, 14, 14, 12, 11, 23, 12, 1] // 准时 |
| | | const data2 = [1, 1, 2, 1, 1, 2, 2, 3, 2, 1, 5] // 迟到 |
| | | const data3 = [1, 0, 0, 0, 0, 0, 2, 2, 3, 1, 2] // 请假 |
| | | const data4 = [8, 5, 4, 7, 4, 5, 7, 4, 2, 1, 3] // 加班 |
| | | const option = { |
| | | legend: { |
| | | x: "center", |
| | | textStyle: { |
| | | color: "#FFFFFF", // 图例文字设为白色 |
| | | fontSize: 12 |
| | | }, |
| | | icon: 'circle', |
| | | top: '6%', |
| | | itemWidth: 8, |
| | | itemHeight: 8, |
| | | itemGap: 20, |
| | | data: ['告警数', '进行中', '已处理', '误报数'] // 更新图例名称 |
| | | }, |
| | | grid: { |
| | | left: '2%', |
| | | right: '0%', |
| | | top: '18%', |
| | | bottom: '10%', |
| | | containLabel: true, |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow" |
| | | }, |
| | | textStyle: { |
| | | color: "rgba(255, 255, 255, 1)" |
| | | }, |
| | | backgroundColor: "rgba(0,0,0,0.8)", |
| | | borderColor: "rgba(219, 230, 255, 0.8)", |
| | | }, |
| | | xAxis: { |
| | | data: getLastSevenDays(), // 使用近七天日期 |
| | | axisLabel: { |
| | | color: "#FFFFFF", // X 轴文字设为白色 |
| | | fontSize: 14, |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#1E294C' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | } |
| | | }, |
| | | yAxis: { |
| | | show: true, |
| | | axisLabel: { |
| | | color: "#FFFFFF", // Y 轴文字设为白色 |
| | | fontSize: 12, |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#A9AEB2' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | lineStyle: { |
| | | color: '#A9AEB2' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: ["#0f1d27"], |
| | | width: 1 |
| | | }, |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | name: "告警数", |
| | | type: "bar", |
| | | stack: "attendance", |
| | | data: data1, |
| | | itemStyle: { |
| | | color: '#FEAF01', |
| | | }, |
| | | label: { |
| | | show: false, |
| | | color: "#FFFFFF", |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | barWidth: 6, |
| | | }, |
| | | { |
| | | name: "进行中", // 迟到数据 |
| | | type: "bar", |
| | | stack: "attendance", |
| | | data: data2, |
| | | itemStyle: { |
| | | color: '#28F0C4', // 迟到的颜色 |
| | | }, |
| | | label: { |
| | | show: false, |
| | | color: "#FFFFFF", |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | }, |
| | | { |
| | | name: "已处理", // 请假数据 |
| | | type: "bar", |
| | | stack: "attendance", |
| | | data: data3, |
| | | itemStyle: { |
| | | color: '#0193FE', // 请假的颜色 |
| | | }, |
| | | label: { |
| | | show: false, |
| | | color: "#FFFFFF", |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | }, |
| | | { |
| | | name: "误报数", // 单独的加班柱子 |
| | | type: "bar", |
| | | data: data4, |
| | | barWidth: 6, |
| | | itemStyle: { |
| | | color: '#FEED01', // 高亮的紫色 |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | }, |
| | | ], |
| | | } |
| | | myChart.setOption(option) |
| | | window.addEventListener('resize', function () {//执行 |
| | | myChart.resize() |
| | | }) |
| | | } |
| | | |
| | | const policeColors = ['#01D9FE', '#FE5501', '#0193FE', '#28F0C4'] |
| | | const initWatergage = () => { |
| | | const myChart = echarts.init(document.getElementById('watergage')) |
| | | var data_value = 2 |
| | |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | const dataList1 = ref([]) |
| | | const getData1 = () => { |
| | | getFightingDeAlarm().then(res => { |
| | | dataList1.value = res.data |
| | | }) |
| | | } |
| | | const policeColors = ['#01D9FE', '#FE5501', '#0193FE', '#28F0C4'] |
| | | const dataList2 = ref([]) |
| | | const getData2 = () => { |
| | | getFightingalarmData().then(res => { |
| | | const result = res.data || {} |
| | | let temp = [] |
| | | temp.push({ name: '真实报警数', num: result.realNum, rate: (result.realNum / result.totalNum) * 100 }) |
| | | temp.push({ name: '误报警数', num: result.errNum, rate: (result.errNum / result.totalNum) * 100 }) |
| | | temp.push({ name: '已解除', num: result.liftNum, rate: (result.liftNum / result.totalNum) * 100 }) |
| | | temp.push({ name: '处理中', num: result.processingNum, rate: (result.processingNum / result.totalNum) * 100 }) |
| | | dataList2.value = temp |
| | | }) |
| | | } |
| | | |
| | | const dataList3 = ref([]) |
| | | const getData3 = () => { |
| | | getFightingHandle({ type: 0 }).then(res => { |
| | | dataList3.value = res.data || [] |
| | | initEchart2() |
| | | }) |
| | | } |
| | | const initEchart2 = () => { |
| | | var myChart = echarts.init(document.querySelector('.echart2')) |
| | | // 生成数据和日期 |
| | | // 示例数据 |
| | | const data1 = dataList3.value.map(i => i.alarmNum) |
| | | const data2 = dataList3.value.map(i => i.processingNum) |
| | | const data3 = dataList3.value.map(i => i.liftNum) |
| | | const data4 = dataList3.value.map(i => i.errNum) |
| | | const option = { |
| | | legend: { |
| | | x: "center", |
| | | textStyle: { |
| | | color: "#FFFFFF", // 图例文字设为白色 |
| | | fontSize: 12 |
| | | }, |
| | | icon: 'circle', |
| | | top: '6%', |
| | | itemWidth: 8, |
| | | itemHeight: 8, |
| | | itemGap: 20, |
| | | data: ['告警数', '进行中', '已处理', '误报数'] // 更新图例名称 |
| | | }, |
| | | grid: { |
| | | left: '2%', |
| | | right: '0%', |
| | | top: '20%', |
| | | bottom: '10%', |
| | | containLabel: true, |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow" |
| | | }, |
| | | textStyle: { |
| | | color: "rgba(255, 255, 255, 1)" |
| | | }, |
| | | backgroundColor: "rgba(0,0,0,0.8)", |
| | | borderColor: "rgba(219, 230, 255, 0.8)", |
| | | }, |
| | | xAxis: { |
| | | data: dataList3.value.map(i => i.monthStr), |
| | | axisLabel: { |
| | | color: "#FFFFFF", // X 轴文字设为白色 |
| | | fontSize: 14, |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#1E294C' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | } |
| | | }, |
| | | yAxis: { |
| | | show: true, |
| | | axisLabel: { |
| | | color: "#FFFFFF", // Y 轴文字设为白色 |
| | | fontSize: 12, |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#A9AEB2' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | lineStyle: { |
| | | color: '#A9AEB2' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: ["#0f1d27"], |
| | | width: 1 |
| | | }, |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | name: "告警数", |
| | | type: "bar", |
| | | stack: "attendance", |
| | | data: data1, |
| | | itemStyle: { |
| | | color: '#FEAF01', |
| | | }, |
| | | label: { |
| | | show: false, |
| | | color: "#FFFFFF", |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | barWidth: 6, |
| | | }, |
| | | { |
| | | name: "进行中", // 迟到数据 |
| | | type: "bar", |
| | | stack: "attendance", |
| | | data: data2, |
| | | itemStyle: { |
| | | color: '#28F0C4', // 迟到的颜色 |
| | | }, |
| | | label: { |
| | | show: false, |
| | | color: "#FFFFFF", |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | }, |
| | | { |
| | | name: "已处理", // 请假数据 |
| | | type: "bar", |
| | | stack: "attendance", |
| | | data: data3, |
| | | itemStyle: { |
| | | color: '#0193FE', // 请假的颜色 |
| | | }, |
| | | label: { |
| | | show: false, |
| | | color: "#FFFFFF", |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | }, |
| | | { |
| | | name: "误报数", // 单独的加班柱子 |
| | | type: "bar", |
| | | data: data4, |
| | | barWidth: 6, |
| | | itemStyle: { |
| | | color: '#FEED01', // 高亮的紫色 |
| | | }, |
| | | emphasis: { |
| | | focus: "series", |
| | | }, |
| | | }, |
| | | ], |
| | | } |
| | | myChart.setOption(option) |
| | | window.addEventListener('resize', function () {//执行 |
| | | myChart.resize() |
| | | }) |
| | | } |
| | | |
| | | const dataList4 = ref({}) |
| | | const getData4 = () => { |
| | | getFightingcenterData().then(res => { |
| | | dataList4.value = res.data || {} |
| | | }) |
| | | } |
| | | const dataList5 = ref({}) // 维保 |
| | | const getData5 = () => { |
| | | getFightingDeviceY().then(res => { |
| | | dataList5.value = res.data || {} |
| | | }) |
| | | } |
| | | const dataList6 = ref([]) |
| | | const getData6 = () => { |
| | | getFightingHandle({type: 1}).then(res => { |
| | | dataList6.value = res.data |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getData1() |
| | | getData2() |
| | | getData3() |
| | | getData4() |
| | | getData5() |
| | | getData6() |
| | | |
| | | initWatergage() |
| | | initLiquidlevel() |
| | | }) |
| | |
| | | import dayjs from 'dayjs' |
| | | import * as echarts from 'echarts' |
| | | import ahJSON from '@/assets/anhui.json' |
| | | import { |
| | | wlcenterData, |
| | | wljobData, |
| | | wlplatformJobList, |
| | | wlstockList, |
| | | wltotalInList, |
| | | wltransportMeasure, |
| | | } from '@/api' |
| | | |
| | | const colors = ['#FEAF01', '#01ABFE', '#51F9E4'] |
| | | const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',] |
| | |
| | | }) |
| | | } |
| | | |
| | | const dataList1 = ref([]) |
| | | const getData1 = () => { |
| | | wlcenterData().then(res => { |
| | | const result = res |
| | | }) |
| | | } |
| | | const dataList2 = ref([]) |
| | | const getData2 = () => { |
| | | wlcenterData().then(res => { |
| | | const result = res |
| | | }) |
| | | } |
| | | const dataList3 = ref([]) |
| | | const getData3 = () => { |
| | | wlcenterData().then(res => { |
| | | const result = res |
| | | }) |
| | | } |
| | | const dataList4 = ref([]) |
| | | const getData4 = () => { |
| | | wlcenterData().then(res => { |
| | | const result = res |
| | | }) |
| | | } |
| | | const dataList5 = ref([]) |
| | | const getData5 = () => { |
| | | wlcenterData().then(res => { |
| | | const result = res |
| | | }) |
| | | } |
| | | const dataList6 = ref([]) |
| | | const getData6 = () => { |
| | | wlcenterData().then(res => { |
| | | const result = res |
| | | }) |
| | | } |
| | | onMounted(() => { |
| | | getData1() |
| | | getData2() |
| | | getData3() |
| | | getData4() |
| | | getData5() |
| | | getData6() |
| | | return |
| | | initEnergy() |
| | | initEchart1() |
| | | initMap() |
| | |
| | | <div class="car_static"> |
| | | <div class="echart_wrap"> |
| | | <div class="pie_text"> |
| | | <div class="fs30"><strong>300</strong></div> |
| | | <div class="fs30"><strong>{{ data1 }}</strong></div> |
| | | <div>完成量</div> |
| | | </div> |
| | | <div class="echart1" id="echart1"></div> |
| | | </div> |
| | | <div class="list"> |
| | | <div class="item"> |
| | | <div class="item" v-for="item, i in dataList1" :key="i"> |
| | | <div class="line"> |
| | | <div :style="{ background: colors[0] }" class="icon"></div> |
| | | <div class="text">安泰物流装货月台组</div> |
| | | <div :style="{ background: colors[i] }" class="icon"></div> |
| | | <div class="text">{{ item.name }}</div> |
| | | </div> |
| | | <div :style="{ color: colors[0] }" class="num">100万支</div> |
| | | <div :style="{ color: colors[i] }" class="num">{{ item.value }}万支</div> |
| | | </div> |
| | | <div class="item"> |
| | | <!-- <div class="item"> |
| | | <div class="line"> |
| | | <div :style="{ background: colors[1] }" class="icon"></div> |
| | | <div class="text">安泰物流卸货月台组</div> |
| | |
| | | <div class="text">市公司卸货月台组</div> |
| | | </div> |
| | | <div :style="{ color: colors[2] }" class="num">100万支</div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="list"> |
| | | <div class="line" v-for="item, i in 5"> |
| | | <div class="line" v-for="item, i in dataList2" :key="i"> |
| | | <div class="top"><span v-if="i < 3">top</span>{{ i }}</div> |
| | | <div class="id_card">皖A12313</div> |
| | | <div class="id_card">{{ item.platformName }}</div> |
| | | <div class="wrap"> |
| | | <ChargeRate :rate="15" :color /> |
| | | <ChargeRate :rate="item.rate" /> |
| | | </div> |
| | | <div class="num">6小时34分钟</div> |
| | | <div class="num">{{ item.workTotalTimeT }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div>实时作业效率</div> |
| | | </div> |
| | | <div class="tabs"> |
| | | <div class="tab active">出库</div> |
| | | <div class="tab" :class="{ active: activeTab3 == 1 }" @click="tabClick3(1)">出库</div> |
| | | <div class="separate"></div> |
| | | <div class="tab">入库</div> |
| | | <div class="tab" :class="{ active: activeTab3 == 0 }" @click="tabClick3(0)">入库</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | |
| | | <div class="static_wrap"> |
| | | <div class="item"> |
| | | <div class="name">月台数量</div> |
| | | <div class="nums"> |
| | | <div class="num" v-for="i in '010'">{{ i }}</div> |
| | | <div v-if="data4.platformTotal" class="nums"> |
| | | <div class="num" v-for="n, i in data4.platformTotal + ''" :key="i">{{ n }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="name">空闲月台</div> |
| | | <div class="nums"> |
| | | <div class="num" v-for="i in '010'">{{ i }}</div> |
| | | <div v-if="data4.freePlatform" class="nums"> |
| | | <div class="num" v-for="n, i in data4.freePlatform + ''" :key="i">{{ n }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="name">预约车辆</div> |
| | | <div class="nums"> |
| | | <div class="num" v-for="i in '010'">{{ i }}</div> |
| | | <div v-if="data4.reservationCar" class="nums"> |
| | | <div class="num" v-for="n, i in data4.reservationCar + ''" :key="i">{{ n }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="name">作业车辆</div> |
| | | <div class="nums"> |
| | | <div class="num" v-for="i in '010'">{{ i }}</div> |
| | | <div v-if="data4.workingCar" class="nums"> |
| | | <div class="num" v-for="n, i in data4.workingCar + ''" :key="i">{{ n }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="name">排队车辆</div> |
| | | <div class="nums"> |
| | | <div class="num" v-for="i in '010'">{{ i }}</div> |
| | | <div class="nums" v-if="data4.lineUpCar"> |
| | | <div class="num" v-for="n, i in data4.lineUpCar + ''" :key="i">{{ n }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div>预计完成时间</div> |
| | | <div>月台状态</div> |
| | | </div> |
| | | <div class="line" v-for="i in 6"> |
| | | <div>月台名称</div> |
| | | <div>作业车辆</div> |
| | | <div>作业量</div> |
| | | <div>作业时长</div> |
| | | <div>预计完成时间</div> |
| | | <div>月台状态</div> |
| | | <div class="line" v-for="item, i in dataList5" :key="i"> |
| | | <div>{{ item.platformName }}</div> |
| | | <div>{{ item.carNo || '-' }}</div> |
| | | <div>{{ item.workNum }}{{ item.workNum ? '万支' : '-' }}</div> |
| | | <div>{{ item.workTime || '-' }}</div> |
| | | <div>{{ item.finishTime || '-' }}</div> |
| | | <div :style="{ |
| | | color: item.status == 1 ? '#869CC9' : item.status == 2 ? '#FE5501' : '#D2E0FF' |
| | | }">{{ item.statusTemp }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="static_wrap"> |
| | | <div class="item"> |
| | | <div class="name">签到数</div> |
| | | <div class="num">1</div> |
| | | <div class="num">{{ data6.inNum || 0 }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="name">已叫号</div> |
| | | <div class="num">1</div> |
| | | <div class="num">{{ data6.callNum || 0 }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="name">已作业</div> |
| | | <div class="num">1</div> |
| | | <div class="num">{{ data6.workingNum || 0 }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="name">已完成</div> |
| | | <div class="num">1</div> |
| | | <div class="num">{{ data6.finishNum || 0 }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="echart_wrap"> |
| | | <div class="echart3" id="echart3"></div> |
| | | </div> |
| | | <div class="list"> |
| | | <div class="line" v-for=" i in 7"> |
| | | <div class="line" v-for="item, i in data6.platformLogList"> |
| | | <div class="time_wrap"> |
| | | <div class="time">12.40</div> |
| | | <div class="time" v-if="item.createDate">{{ item.createDate.slice(11, 16) }}</div> |
| | | <div class="sp"></div> |
| | | <div class="dian"></div> |
| | | </div> |
| | | <div class="id_card">皖A12313</div> |
| | | <div class="id_card">{{ item.carCodeFront }}</div> |
| | | <div class="status">开始作业</div> |
| | | <div class="desc">排队等待叫号</div> |
| | | <div class="desc">{{ item.content }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | import dayjs from 'dayjs' |
| | | import ChargeRate from '@/components/ChargeRate.vue' |
| | | import * as echarts from 'echarts' |
| | | import { |
| | | cnplatformGroupFinish, |
| | | cnplatformDuration, |
| | | cnplatformWorkData, |
| | | cncenterData, |
| | | cncarWorkSituation, |
| | | cnworkEfficiency, |
| | | } from '@/api' |
| | | |
| | | |
| | | const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',] |
| | |
| | | labelLine: { |
| | | show: false |
| | | }, |
| | | data: [ |
| | | { value: 1048, name: 'Search Engine' }, |
| | | { value: 735, name: 'Direct' }, |
| | | { value: 580, name: 'Email' } |
| | | ] |
| | | data: dataList1.value |
| | | } |
| | | ] |
| | | } |
| | |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | data: ['2017', '2018', '2019', '2020', '2021', '2022', '2023',], |
| | | data: dataList3.value.map(i => i.workTime), |
| | | }], |
| | | yAxis: [ |
| | | { |
| | |
| | | shadowColor: 'rgba(124,248,255, 0)', |
| | | shadowBlur: 20 |
| | | }, |
| | | data: [393, 438, 485, 631, 389, 224, 287] |
| | | data: dataList3.value.map(i => i.workNum) |
| | | }, |
| | | { |
| | | name: '累计作业量', |
| | |
| | | }, |
| | | barBorderRadius: [30, 30, 0, 0], |
| | | }, |
| | | data: [393, 438, 485, 631, 689, 524, 687] |
| | | data: dataList3.value.map(i => i.totalWorkNum) |
| | | }, |
| | | ] |
| | | } |
| | |
| | | offset: 1, |
| | | color: '#61d3f9' |
| | | }])] |
| | | const temp = [] |
| | | temp.push({ name: '预约数', value: data6.value.reservationNum || 0 }) |
| | | temp.push({ name: '已进场', value: data6.value.inNum || 0 }) |
| | | temp.push({ name: '已作业', value: data6.value.workingNum || 0 }) |
| | | temp.push({ name: '已离场', value: data6.value.leaveNum || 0 }) |
| | | console.log('temp', temp); |
| | | |
| | | const option = { |
| | | color: colors, |
| | | tooltip: { |
| | |
| | | borderWidth: 0, |
| | | borderColor: '#fff' |
| | | }, |
| | | data: [ |
| | | { value: 100, name: '预约数', }, |
| | | { value: 50, name: '已进场' }, |
| | | { value: 20, name: '已作业' }, |
| | | { value: 30, name: '已离场' }, |
| | | ] |
| | | data: temp |
| | | }, |
| | | { |
| | | type: 'funnel', |
| | |
| | | opacity: 1 |
| | | } |
| | | }, |
| | | data: [ |
| | | { value: 100, name: '预约数', }, |
| | | { value: 50, name: '已进场' }, |
| | | { value: 20, name: '已作业' }, |
| | | { value: 30, name: '已离场' }, |
| | | ] |
| | | data: temp |
| | | }, |
| | | ] |
| | | } |
| | |
| | | }) |
| | | } |
| | | |
| | | const dataList1 = ref([]) |
| | | const data1 = ref(0) |
| | | const getData1 = () => { |
| | | cnplatformGroupFinish().then(res => { |
| | | const result = res.data || [] |
| | | let count = 0 |
| | | dataList1.value = result.map(i => { |
| | | count += i.finishData |
| | | return { |
| | | value: i.finishData, |
| | | name: i.platformGroupName |
| | | } |
| | | }) |
| | | data1.value = count |
| | | initEchart1() |
| | | }) |
| | | } |
| | | const dataList2 = ref([]) |
| | | const getData2 = () => { |
| | | cnplatformDuration().then(res => { |
| | | const result = res.data || [] |
| | | dataList2.value = result.map(item => { |
| | | if (item.workTotalTime) { |
| | | if (item.workTotalTime > 60) { |
| | | item.workTotalTimeT = (item.workTotalTime / 60).toFixed(0) + '小时' + item.workTotalTime % 60 + '分钟' |
| | | } else { |
| | | item.workTotalTimeT = item.workTotalTime |
| | | } |
| | | } |
| | | item.rate = ((item.workTotalTime / item.openTotalTime) * 30).toFixed(0) |
| | | return item |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | const dataList3 = ref([]) |
| | | const activeTab3 = ref(1) |
| | | const tabClick3 = (val) => { |
| | | activeTab3.value = val |
| | | getData3() |
| | | } |
| | | const getData3 = () => { |
| | | cnworkEfficiency({ type: activeTab3.value }).then(res => { |
| | | const result = res.data |
| | | dataList3.value = result |
| | | initEchart2() |
| | | }) |
| | | } |
| | | const data4 = ref({}) |
| | | const getData4 = () => { |
| | | cncenterData().then(res => { |
| | | const result = res.data |
| | | data4.value = result |
| | | }) |
| | | } |
| | | const dataList5 = ref([]) |
| | | const getData5 = () => { |
| | | cnplatformWorkData().then(res => { |
| | | const result = res.data || [] |
| | | dataList5.value = result.map(i => { |
| | | i.statusTemp = i.status == 0 ? '作业中' : i.status == 1 ? '空闲中' : '作业超时' |
| | | if (i.workTime) { |
| | | if (item.workTime > 60) { |
| | | item.workTime = (item.workTime / 60).toFixed(0) + 'h' + item.workTime % 60 + 'm' |
| | | } else { |
| | | item.workTime = item.workTime |
| | | } |
| | | } |
| | | i.finishTime = dayjs(i.finishTime).format('HH:mm') |
| | | return i |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | const data6 = ref({}) |
| | | const getData6 = () => { |
| | | cncarWorkSituation().then(res => { |
| | | const result = res.data |
| | | data6.value = result |
| | | initEchart3() |
| | | }) |
| | | } |
| | | |
| | | |
| | | onMounted(() => { |
| | | // initEnergy() |
| | | initEchart1() |
| | | initEchart2() |
| | | initEchart3() |
| | | getData1() |
| | | getData2() |
| | | getData3() |
| | | getData4() |
| | | getData5() |
| | | getData6() |
| | | |
| | | // initEchart1() |
| | | // initEchart2() |
| | | // initEchart3() |
| | | }) |
| | | |
| | | |
| | |
| | | .left_box_one { |
| | | width: 100%; |
| | | margin-bottom: 20px; |
| | | border: 1px solid; |
| | | |
| | | .car_static { |
| | | display: flex; |
| | |
| | | .list { |
| | | padding: 20px 24px 4px; |
| | | height: 227px; |
| | | border: 1px solid; |
| | | |
| | | .line { |
| | | display: flex; |
| | |
| | | .id_card { |
| | | color: #DBEAEA; |
| | | font-weight: 500; |
| | | margin-right: 14px; |
| | | margin-right: 2px; |
| | | font-size: 14px; |
| | | width: 80px; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .num { |
| | | font-weight: 500; |
| | | width: 82px; |
| | | text-align: right; |
| | | font-size: 13px; |
| | | color: #DBEAEA; |
| | | margin-left: 15px; |
| | | margin-left: 2px; |
| | | } |
| | | |
| | | .wrap { |
| | |
| | | margin: 0 6px; |
| | | } |
| | | |
| | | .tab { |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .active { |
| | | color: #0094eb; |
| | | } |