类型:开发
描述:
This commit is contained in:
@@ -7,7 +7,13 @@ export function getListApi() {
|
|||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 统计
|
||||||
|
export function getDetailApi(id) {
|
||||||
|
return request({
|
||||||
|
url: '/fjtcc-api/api/largeScreen/workorder/detail/'+id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
// 统计
|
// 统计
|
||||||
export function getTotalApi() {
|
export function getTotalApi() {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 2.0 KiB |
BIN
src/assets/images/d-icon-1.png
Normal file
BIN
src/assets/images/d-icon-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
File diff suppressed because one or more lines are too long
@@ -427,13 +427,12 @@
|
|||||||
cameraName: cameraName.value,
|
cameraName: cameraName.value,
|
||||||
businessScenicArea: params.businessScenicArea
|
businessScenicArea: params.businessScenicArea
|
||||||
})
|
})
|
||||||
console.log(res,11111111111111)
|
|
||||||
regionList.value = res.data
|
regionList.value = res.data
|
||||||
regionList.value.forEach((item,index)=>{
|
regionList.value.forEach((item,index)=>{
|
||||||
// item.show = true
|
// item.show = true
|
||||||
item.videoResources=item.resourcesList[0].videoResources
|
item.videoResources=item.resourcesList[0].videoResources
|
||||||
})
|
})
|
||||||
regionList.value[0].show = true
|
regionList.value[0].show = false
|
||||||
|
|
||||||
}
|
}
|
||||||
const handleRegions = (e) => {
|
const handleRegions = (e) => {
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<a @click="hanldeToDetails" class="look-btn">
|
<a @click="hanldeToDetails" class="look-btn">
|
||||||
查看详情
|
<!-- 查看详情-->
|
||||||
<!-- <img src="@/assets/images/d-ico-1.png" /> -->
|
<img src="@/assets/images/d-icon-1.png" />
|
||||||
</a>
|
</a>
|
||||||
<iframe v-if="scenicSpotId == 'root000000'" width="100%" height="100%" src="/map/sxzd/bdc.html"></iframe>
|
<iframe v-if="scenicSpotId == 'root000000'" width="100%" height="100%" src="/map/sxzd/bdc.html"></iframe>
|
||||||
<iframe v-if="scenicSpotId == 'root00000000'" width="100%" height="100%" src="/map/sxzd/sxzd.html"></iframe>
|
<iframe v-if="scenicSpotId == 'root00000000'" width="100%" height="100%" src="/map/sxzd/sxzd.html"></iframe>
|
||||||
@@ -110,10 +110,8 @@
|
|||||||
<template v-if="scenicSpotId == 'root00000000'">
|
<template v-if="scenicSpotId == 'root00000000'">
|
||||||
<div>徒步订票</div>
|
<div>徒步订票</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
|
||||||
<div>团队订票</div>
|
<div>团队订票</div>
|
||||||
<div>散客订票</div>
|
<div>散客订票</div>
|
||||||
</template>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item" v-for="(item, index) in gridData" :key="index">
|
<div class="item" v-for="(item, index) in gridData" :key="index">
|
||||||
@@ -122,10 +120,8 @@
|
|||||||
<template v-if="scenicSpotId == 'root00000000'">
|
<template v-if="scenicSpotId == 'root00000000'">
|
||||||
<div>{{ item.walk }}</div>
|
<div>{{ item.walk }}</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
|
||||||
<div>{{ item.group }}</div>
|
<div>{{ item.group }}</div>
|
||||||
<div>{{ item.single }}</div>
|
<div>{{ item.single }}</div>
|
||||||
</template>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -329,14 +325,14 @@ import pubSub from 'pubsub-js'
|
|||||||
padding: vw(20);
|
padding: vw(20);
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background: #0a4190;
|
//background: #0a4190;
|
||||||
border-radius: vw(4);
|
border-radius: vw(4);
|
||||||
font-size: vw(16);
|
font-size: vw(16);
|
||||||
font-weight:700;
|
font-weight:700;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
img{
|
img{
|
||||||
width:vw(100);
|
width:vw(80);
|
||||||
// height:;
|
// height:;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -393,10 +393,11 @@
|
|||||||
hIndex.value = index;
|
hIndex.value = index;
|
||||||
}
|
}
|
||||||
const handlePop2 = async()=>{
|
const handlePop2 = async()=>{
|
||||||
|
if(props.scenicSpotId=="root00000000"){
|
||||||
dialogTableVisible2.value = true
|
dialogTableVisible2.value = true
|
||||||
let res = await getSpotPassengerFlow({scenicSpotId:props.scenicSpotId})
|
let res = await getSpotPassengerFlow({scenicSpotId:props.scenicSpotId})
|
||||||
tjArr.value = res.data
|
tjArr.value = res.data
|
||||||
console.log(res,'res')
|
}
|
||||||
}
|
}
|
||||||
let show = ref(false)
|
let show = ref(false)
|
||||||
let scenicChange = null
|
let scenicChange = null
|
||||||
|
|||||||
@@ -8,24 +8,236 @@
|
|||||||
<span :class="item.level">{{ item.level_text }}</span>
|
<span :class="item.level">{{ item.level_text }}</span>
|
||||||
<p>{{ item.title }}</p>
|
<p>{{ item.title }}</p>
|
||||||
<span class="time">{{ item.time }}</span>
|
<span class="time">{{ item.time }}</span>
|
||||||
|
<span class="btn" @click="showDetail(item.id)">详情</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<el-dialog :title="'工单详情'" center v-model="dialogVisible">
|
||||||
|
<div class="bom-box">
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="m-modal">
|
||||||
|
<div class="item-title--primary">工单信息</div>
|
||||||
|
<div class="item-col">
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">所属景区:</span>
|
||||||
|
<span class="value">{{ detail.road }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">工单类型:</span>
|
||||||
|
<span class="value">{{ detail.type }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">紧急程度:</span>
|
||||||
|
<span :class="'value '+detail.level">{{ detail.levelText }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item-col">
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">具体地点:</span>
|
||||||
|
<span class="value">{{ detail.address }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">创建时间:</span>
|
||||||
|
<span class="value">{{ detail.createTime }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">完成期限:</span>
|
||||||
|
<span class="value">{{ detail.completionDeadline }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item-col">
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">创建人:</span>
|
||||||
|
<span class="value">{{ detail.unidName }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">状态:</span>
|
||||||
|
<span class="value important" v-if="detail.status==0">待处理</span>
|
||||||
|
<span class="value warn" v-else-if="detail.status==1">进行中</span>
|
||||||
|
<span class="value normal" v-else-if="detail.status==2">已完成</span>
|
||||||
|
<span class="value" v-else>已关闭</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">工单内容:</span>
|
||||||
|
<span class="value">{{ detail.title }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item" v-if="detail.imgs">
|
||||||
|
<el-image class="img" :preview-src-list="detail.imgs.split(',')" :src="src" v-for="(src, index) in detail.imgs.split(',')"></el-image>
|
||||||
|
</div>
|
||||||
|
<div class="item-title--warning" v-if="detail.follow && detail.follow.length>0">跟进信息</div>
|
||||||
|
<template v-for="item in detail.follow">
|
||||||
|
<div class="item-col" >
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">跟进人:</span>
|
||||||
|
<span class="value">{{ item.unidName }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">跟进地点:</span>
|
||||||
|
<span class="value">{{ item.address }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">完成率:</span>
|
||||||
|
<span class="value">{{ item.rate }}%</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item-col">
|
||||||
|
<div class="detail-item" style="flex: 2">
|
||||||
|
<span class="label">跟进内容:</span>
|
||||||
|
<span class="value">{{ item.title }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">跟进时间:</span>
|
||||||
|
<span class="value">{{ item.createTime }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item" v-if="item.img">
|
||||||
|
<el-image class="img" :preview-src-list="item.img.split(',')" :src="src" v-for="(src, index) in item.img.split(',')"></el-image>
|
||||||
|
</div>
|
||||||
|
<div style="border-bottom: 1px solid #ffffff;margin: 10px 0;"></div>
|
||||||
|
</template>
|
||||||
|
<div class="item-title--warning" v-if="detail.evaluate && detail.evaluate.length>0">评价信息</div>
|
||||||
|
<template v-for="item in detail.evaluate">
|
||||||
|
<div class="item-col" >
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">评价人:</span>
|
||||||
|
<span class="value warn">{{ item.unidName }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">评价内容:</span>
|
||||||
|
<span class="value">{{ item.title }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item">
|
||||||
|
<span class="label">评价时间:</span>
|
||||||
|
<span class="value">{{ item.createTime }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-item" v-if="item.img">
|
||||||
|
<el-image class="img" :preview-src-list="item.img.split(',')" :src="src" v-for="(src, index) in item.img.split(',')"></el-image>
|
||||||
|
</div>
|
||||||
|
<div style="border-bottom: 1px solid #ffffff;margin: 10px 0;"></div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { getListApi } from '@/api/workOrder'
|
import {getDetailApi, getListApi} from '@/api/workOrder'
|
||||||
|
let dialogVisible = ref(false)
|
||||||
let list = ref([])
|
let list = ref([])
|
||||||
|
let detail = ref({})
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
let res = await getListApi()
|
let res = await getListApi()
|
||||||
list.value = res.data
|
list.value = res.data
|
||||||
}
|
}
|
||||||
|
const showDetail = async (id) => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
let res = await getDetailApi(id)
|
||||||
|
console.log( res.data);
|
||||||
|
detail.value = res.data
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
:deep(.el-dialog__headerbtn .el-dialog__close){
|
||||||
|
color:#fff;
|
||||||
|
font-size:40px;
|
||||||
|
position:relative;
|
||||||
|
top:15px;
|
||||||
|
right:15px;
|
||||||
|
}
|
||||||
|
:deep(.el-dialog__header.show-close){
|
||||||
|
padding-right:0;
|
||||||
|
}
|
||||||
|
:deep(.el-dialog) {
|
||||||
|
background: url('/src/assets/images/map-bg-2.png') no-repeat top center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
width:vw(1500);
|
||||||
|
}
|
||||||
|
:deep(.el-dialog__title) {
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.m-modal{
|
||||||
|
padding: vw(30);
|
||||||
|
.normal {
|
||||||
|
padding:3px 10px;
|
||||||
|
background: #2380fb;
|
||||||
|
}
|
||||||
|
.warn {
|
||||||
|
padding:3px 10px;
|
||||||
|
background: #feae00;
|
||||||
|
}
|
||||||
|
.important {
|
||||||
|
padding:3px 10px;
|
||||||
|
background: #d9011b;
|
||||||
|
}
|
||||||
|
.item-title{
|
||||||
|
font-size: 18px;
|
||||||
|
margin-bottom: vw(30);
|
||||||
|
&--primary {
|
||||||
|
@extend .item-title;
|
||||||
|
color: #02f9fa;
|
||||||
|
background-image: url('@/assets/images/mask-primary.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
&--error {
|
||||||
|
@extend .item-title;
|
||||||
|
background-image: url('@/assets/images/mask-error.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
&--warning {
|
||||||
|
@extend .item-title;
|
||||||
|
background-image: url('@/assets/images/mask-warning.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
&--success {
|
||||||
|
@extend .item-title;
|
||||||
|
background-image: url('@/assets/images/mask-success.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.item-col{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.detail-item {
|
||||||
|
flex:1;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
.img{
|
||||||
|
width:vw(200);
|
||||||
|
height: vw(200);
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bom-box {
|
||||||
|
.modal-body {
|
||||||
|
padding: 16px;
|
||||||
|
color:#fff;
|
||||||
|
height:vh(780);
|
||||||
|
overflow:auto;
|
||||||
|
/* 滚动条整体样式 */
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
width: vw(4); /* 滚动条的宽度 */
|
||||||
|
}
|
||||||
|
/* 滚动条轨道 */
|
||||||
|
&::-webkit-scrollbar-track {
|
||||||
|
background: 'transparent'; /* 轨道的背景色 */
|
||||||
|
}
|
||||||
|
/* 滚动条滑块 */
|
||||||
|
&::-webkit-scrollbar-thumb {
|
||||||
|
background: rgba(0, 150, 255, 0.63); /* 滑块的背景色 */
|
||||||
|
border-radius: 5px; /* 滑块的圆角 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.work-box-1 {
|
.work-box-1 {
|
||||||
width: vw(815);
|
width: vw(815);
|
||||||
height: vh(950);
|
height: vh(950);
|
||||||
@@ -84,7 +296,7 @@
|
|||||||
@extend .label;
|
@extend .label;
|
||||||
background: #d9011b;
|
background: #d9011b;
|
||||||
}
|
}
|
||||||
.time {
|
.time,.btn {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: vw(12);
|
font-size: vw(12);
|
||||||
color: rgba(255, 255, 255, 0.6);
|
color: rgba(255, 255, 255, 0.6);
|
||||||
@@ -94,9 +306,13 @@
|
|||||||
text-transform: none;
|
text-transform: none;
|
||||||
margin-left: vw(30);
|
margin-left: vw(30);
|
||||||
}
|
}
|
||||||
|
.btn{
|
||||||
|
color: #2380fb;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
p {
|
p {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: vw(15);
|
//font-size: vw(15);
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|||||||
@@ -12,12 +12,13 @@
|
|||||||
<div class="item item1">
|
<div class="item item1">
|
||||||
工单完成数 <span class="color1"><countup :end-val="totalData.complete" /></span>
|
工单完成数 <span class="color1"><countup :end-val="totalData.complete" /></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item item3">
|
|
||||||
紧急工单数 <span class=""><countup :end-val="totalData.warn" /></span>
|
|
||||||
</div>
|
|
||||||
<div class="item item2">
|
<div class="item item2">
|
||||||
重要工单数 <span class=""><countup :end-val="totalData.important" /></span>
|
重要工单数 <span class=""><countup :end-val="totalData.important" /></span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="item item3">
|
||||||
|
紧急工单数 <span class=""><countup :end-val="totalData.warn" /></span>
|
||||||
|
</div>
|
||||||
<div class="item item1">
|
<div class="item item1">
|
||||||
普通工单数 <span class=""><countup :end-val="totalData.normal" /></span>
|
普通工单数 <span class=""><countup :end-val="totalData.normal" /></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -311,11 +312,11 @@
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
.item2 {
|
.item2 {
|
||||||
background-image: url('@/assets/images/work-n-bg-2.png');
|
background-image: url('@/assets/images/work-n-bg-3.png');
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
.item3 {
|
.item3 {
|
||||||
background-image: url('@/assets/images/work-n-bg-3.png');
|
background-image: url('@/assets/images/work-n-bg-2.png');
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user