Merge remote-tracking branch 'origin/master'
8 files modified
1 files added
| | |
| | | end-placeholder="结束日期" |
| | | @change="change" |
| | | disabled |
| | | :clearable="false" |
| | | /> |
| | | <div class="time-card"> |
| | | <div |
| | | class="card-item" |
| | | :class="item === checked ? 'active' : ''" |
| | | v-for="(item, index) in timeList" |
| | | v-for="(item, index) in timeList" :key="index" |
| | | @click="timeClick(item,index)" |
| | | > |
| | | {{ timeListStr[index] }} |
| | |
| | | position: relative; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | :deep(.el-date-editor .el-range__close-icon--hidden){ |
| | | width: 0 !important; |
| | | |
| | | } |
| | | :deep(.el-date-editor .el-range-input){ |
| | | width: 48% !important; |
| | | font-size: 13px !important; |
| | | } |
| | | :deep(.el-date-editor) { |
| | | box-shadow: none; |
| | | width: 0; |
| | | flex: 1; |
| | | margin-right: 4px; |
| | | // margin-right: 4px; |
| | | |
| | | background: rgba(0, 15, 34, 0.5); |
| | | border-radius: 0px 0px 0px 0px; |
| | |
| | | <div class="num">{{ dataObj.device_num }}</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | 任务数: |
| | | 任务次数: |
| | | <div class="num">{{ dataObj.jobNum }}</div> |
| | | </div> |
| | | </div> |
| | |
| | | const areaCode = props.data.region_code; |
| | | dataObj.value.region_name = props.data.region_name; |
| | | const res = await getDeviceInfoNum({ areaCode }); |
| | | console.log('首页地图弹框',res); |
| | | |
| | | const resJob = await getTotalJobNum({ areaCode }); |
| | | dataObj.value.jobNum = resJob.data.data; |
| | | dataObj.value.device_num = res.data.data.device_num; |
| | |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .content { |
| | | padding: 0px 23px 25px 15px; |
| | | } |
| | | .info { |
| | | height: 34px; |
| | | font-family: Source Han Sans CN, Source Han Sans CN, serif; |
| | |
| | | line-height: 19px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding-left: 15px; |
| | | gap: 0 20px; |
| | | margin: 18px 0; |
| | | justify-content: space-between; |
| | | |
| | | .info-item { |
| | | display: flex; |
| | |
| | | color: #ffffff; |
| | | line-height: 23px; |
| | | text-shadow: 0px 0px 12px rgba(68, 105, 255, 0.67); |
| | | padding-left: 15px; |
| | | |
| | | margin-bottom: 14px; |
| | | } |
| | | |
| | | .status-list { |
| | | display: flex; |
| | | justify-content: space-evenly; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | .status-item { |
| | |
| | | const positioning = row => { |
| | | const longitude = Number(row.longitude) |
| | | const latitude = Number(row.latitude) |
| | | // ismore 单独点击定位和未展开都为0 ismore为false 展开大图 值为0.004 ismore=true & isShowBigImg=true 展开大图 值为0.005 |
| | | if (isMore.value) { |
| | | longitudeOffset.value = isShowBigImg.value ? 0.005 : 0.003 |
| | | } |
| | | if (!isMore.value) { |
| | | longitudeOffset.value = isShowBigImg.value ? 0.003 : 0; |
| | | } |
| | | flyTo({ longitude: longitude + longitudeOffset.value, latitude }, 1, 1000); |
| | | flyTo({ longitude: longitude, latitude:latitude + 0.0002 }, 1, 1000); |
| | | } |
| | | |
| | | // 事件状态+数量 |
| | |
| | | justify-content: center; |
| | | } |
| | | .image-list { |
| | | border: 1px solid red; |
| | | position: absolute; |
| | | z-index: 10; |
| | | z-index: 1; |
| | | right: 460px; |
| | | top: 122px; |
| | | width: 800px; |
| | | height: 600px; |
| | | width: 540px; |
| | | height: 420px; |
| | | background: #0F1929; |
| | | box-shadow: inset 0px -50px 50px 0px rgba(27,148,255,0.13); |
| | | border-radius: 0px 0px 0px 0px; |
| | | // box-shadow: inset 0px -50px 50px 0px rgba(27,148,255,0.13); |
| | | // border-radius: 0px 0px 0px 0px; |
| | | border: 2px solid; |
| | | border-image: linear-gradient(180deg, rgba(81, 168, 255, 0), rgba(48, 111, 202, 1), rgba(255, 255, 255, 1), rgba(27, 148, 255, 1)) 2 2; |
| | | .title { |
| | | position: relative; |
| | | position: absolute; |
| | | text-align: right; |
| | | right: 12px; |
| | | top: 12px; |
| | | // top: 12px; |
| | | img { |
| | | width: 10px; |
| | | height: 10px; |
| | |
| | | } |
| | | } |
| | | .content { |
| | | width: 740px; |
| | | height: 440px; |
| | | box-shadow: 1px 3px 6px 0px rgba(81,168,255,0.58); |
| | | border-radius: 20px 20px 20px 20px; |
| | | border-image: linear-gradient(180deg, rgba(81, 168, 255, 1), rgba(189, 228, 255, 1)) 2 2; |
| | | margin: 28px 28px; |
| | | img { |
| | | width: 100%; |
| | | height: 100%; |
| | | border-radius: 20px 20px 20px 20px; |
| | | border-radius: 10px 10px 10px 10px; |
| | | } |
| | | } |
| | | .card { |
| | | margin: 26px 26px; |
| | | background: linear-gradient( 180deg, rgba(13,30,70,0.72) 0%, #142E6B 100%); |
| | | padding: 0px 10px 0px 10px; |
| | | color: #BECBEA; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | position: relative; |
| | | position: absolute; |
| | | bottom: 0px; |
| | | width: 100%; |
| | | .time-top { |
| | | width: 50px; |
| | | height: 30px; |
| | |
| | | <div class="name">总任务数</div> |
| | | </div> |
| | | <div class="status"> |
| | | <div class="item" v-for="(item, index) in list"> |
| | | <div class="item" v-for="(item, index) in list" :key="index"> |
| | | <div> |
| | | <div :style="{ color: item.color }" class="value"> |
| | | {{ jobStatistics[item.field] }} |
| | |
| | | ? 'distributed' |
| | | : scope.row.status === 3 |
| | | ? 'finish ' |
| | | |
| | | |
| | | : 'fail ' |
| | | " |
| | | > |
| | | : scope.row.status === 5 |
| | | ? 'fail ' |
| | | : ' '"> |
| | | {{ |
| | | scope.row.status === 1 |
| | | ? '待执行' |
| | |
| | | ? '执行中' |
| | | : scope.row.status === 3 |
| | | ? '已执行' |
| | | |
| | | : '执行失败' |
| | | : scope.row.status === 5 |
| | | ? '执行失败' |
| | | : '' |
| | | }} |
| | | </span> |
| | | </template> |
| | |
| | | </el-table> |
| | | </div> |
| | | <!-- 分页 --> |
| | | <div style="display: flex; justify-content: center;margin:15px 0;"> |
| | | <div style="display: flex; justify-content: center; margin: 15px 0"> |
| | | <el-pagination |
| | | class="ztzf-pagination" |
| | | v-model:current-page="pageParams.current" |
| | |
| | | { label: '待执行', value: 1 }, |
| | | { label: '执行中', value: 2 }, |
| | | { label: '已完成', value: 3 }, |
| | | |
| | | { label: '执行失败', value: 4 }, |
| | | |
| | | { label: '执行失败', value: 5 }, |
| | | ] |
| | | // 设备页面参数 |
| | | const devicePageParams = ref({ |
| | |
| | | } |
| | | // 获取任务列表 |
| | | const getJobList = () => { |
| | | // 事件状态:0 =待处理,1=待分拨,2=待处理,3=处理中,4=已完成 5=已完结 |
| | | // 事件状态:0 =待处理,1=待分拨,2=待处理,3=处理中,4=已完成 5=已完结 |
| | | jobList(taskDetailParams).then(res => { |
| | | if (res.data.code !== 0) return |
| | | taskDetailData.value = res.data.data.records |
| | | total.value = res.data.data.total |
| | | |
| | | }) |
| | | } |
| | | // 机巢列表数据 |
| | |
| | | } |
| | | |
| | | // 任务状态颜色 |
| | | // 待执行 |
| | | .pending { |
| | | color: #e36913; |
| | | color: #ffe17e; |
| | | } |
| | | // 执行中 |
| | | .distributed { |
| | | color: #ffc398; |
| | | color: #FFA768; |
| | | } |
| | | // 已执行 |
| | | .finish { |
| | | color: #afd9fb; |
| | | color: #8effac; |
| | | } |
| | | .cancel { |
| | | color: #11c4ff; |
| | | } |
| | | |
| | | // 执行失败 |
| | | .fail { |
| | | color: #8cfea7; |
| | | color: #ff8e8e; |
| | | } |
| | | </style> |
| | | |
| | |
| | | padding-top: 6px; |
| | | margin-top: 10px; |
| | | |
| | | height: 120px; |
| | | height: 100px; |
| | | } |
| | | img { |
| | | width: 45px; |
| | |
| | | // 作业中 |
| | | .atcive { |
| | | color: #ffa768; |
| | | background: linear-gradient(90deg, rgba(12, 45, 92, 1) 0%, #154671 50%, rgba(12, 45, 92, 1) 100%), |
| | | linear-gradient(90deg, rgba(12, 45, 92, 1) 0%, rgba(12, 45, 92, 1) 50%, rgba(12, 45, 92, 1) 100%); |
| | | |
| | | } |
| | | .numbering { |
| | | font-size: 12px; |
| | |
| | | color: #fff; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | background: linear-gradient( 90deg, rgba(71,157,255,0) 0%, rgba(71, 157, 255, 0.12) 50%, rgba(71,157,255,0) 100%); |
| | | .left { |
| | | .left-t { |
| | | height: 24px; |
| | |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | value-format="YYYY-MM-DD" |
| | | @change="changeselect" |
| | | /> |
| | | </div> |
| | | <div class="item"> |
| | |
| | | waylineType.value = 0 |
| | | waylineId.value = val |
| | | const currentRoute = routeOptions.value.find(item => item.wayline_id === val) |
| | | wayLineFile.value = currentRoute.object_key |
| | | wayLineFile.value = currentRoute?.object_key || ''; |
| | | } |
| | | |
| | | // 获取选中机场列表数据,并且发布 |
| | |
| | | }) |
| | | return |
| | | } |
| | | searchForm.begin_time = `${taskData.value} 00:00:00` |
| | | searchForm.end_time = `${taskData.value} 23:59:59` |
| | | searchForm.execute_time_arr = timeSlot.value ? [timeSlot.value] : [] |
| | | |
| | | searchForm.begin_time = `${taskData.value[0]} 00:00:00` |
| | | searchForm.end_time = `${taskData.value[1]} 23:59:59` |
| | | searchForm.execute_time_arr = timeSlot.value ? [timeSlot.value] : []; |
| | | createTask(searchForm).then(res => { |
| | | if (res.data.code === 0) { |
| | | ElMessage.success('任务创建成功') |