资源监测页面

dev
zc 3 years ago
parent 346c44f764
commit 9f5865c360
  1. 4
      cjy-project/src/main/resources/mapper/iotInfo/IotInfoMapper.xml
  2. 42
      cjy-project/src/main/resources/mapper/tour/TourInfoMapper.xml
  3. 6
      ruoyi-ui/src/components/DictTag/index.vue
  4. 76
      ruoyi-ui/src/views/picture/resource-monitoring/dialog-module/hotel-list.vue
  5. 52
      ruoyi-ui/src/views/picture/resource-monitoring/dialog-module/scenic-list.vue
  6. 139
      ruoyi-ui/src/views/picture/resource-monitoring/dialog-module/tour-list.vue
  7. 71
      ruoyi-ui/src/views/picture/resource-monitoring/dialog-module/video-list.vue
  8. 5
      ruoyi-ui/src/views/picture/resource-monitoring/index.vue
  9. 23
      ruoyi-ui/src/views/picture/resource-monitoring/resoure-dialog.vue
  10. 1
      ruoyi-ui/vue.config.js

@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="java.util.Map" id="MapResult">
<result property="id" column="id" />
<result property="type" column="type" />
<result property="typeName" column="typeName" />
<result property="resourceCode" column="resourceCode" jdbcType ="BIGINT" javaType="java.lang.String" />
<result property="resourceName" column="resourceName" />
<result property="runStatus" column="runStatus" />
@ -78,9 +79,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectIotInfoList" parameterType="IotInfo" resultType="java.util.Map">
select t1.id,t1.type,t1.resource_code as resourceCode,t1.resource_name as resourceName,t1.dev_brand as devBrand,t1.dev_model as devModel,t1.run_status as runStatus
select t1.id,t1.type,t4.name as typeName,t1.resource_code as resourceCode,t1.resource_name as resourceName,t1.dev_brand as devBrand,t1.dev_model as devModel,t1.run_status as runStatus
from b_iot_info as t1
left join b_graphic_info as t3 on t1.resource_code = t3.resource_code
left join ti_resource_type t4 on t1.type = t4.data_type
<where>
<if test="type != null and type != ''"> and t1.type = #{type}</if>
<if test="searchType == 'resourceCode'">

@ -91,6 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createBy" column="createBy" />
<result property="updateBy" column="updateBy" />
<result property="organCode" column="organCode" />
<result property="region" column="region" />
<result property="province" column="province" />
<result property="city" column="city" />
<result property="county" column="county" />
@ -114,29 +115,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectTourInfoList" parameterType="TourInfo" resultMap="MapResult">
select t1.id,t1.type,t1.resource_code as resourceCode,t1.resource_name as resourceName,t1.grade,t1.contacts,t1.telephone,t2.lon,t2.lat,t2.address,t3.image_url as imageUrl,t1.inside_area as insideArea,t1.label
select t1.id,t1.type,t1.resource_code as resourceCode,t1.resource_name as resourceName,t1.grade,t1.contacts,t1.telephone,t2.lon,t2.lat,t2.address,t3.image_url as imageUrl,t1.inside_area as insideArea,t1.label,CONCAT(t4.region_name,t5.region_name,t6.region_name) as region
from b_tour_info as t1
left join b_geography_info as t2 on t1.resource_code = t2.resource_code
left join b_graphic_info as t3 on t1.resource_code = t3.resource_code
left join region t4 on t2.province = t4.region_id
left join region t5 on t2.city = t5.region_id
left join region t6 on t2.county = t6.region_id
<where>
<if test="type != null and type != ''"> and t1.type = #{type}</if>
<if test="searchType == 'resourceCode'">
and t1.resource_code like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'resourceName'">
and t1.resource_name like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'creditCode'">
and t1.credit_code like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'contacts'">
and t1.contacts like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'telephone'">
and t1.telephone like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'outCode'">
and t1.out_code like concat('%', #{keywords}, '%')
<if test="keywords != null and keywords != ''">
<if test="searchType == 'resourceCode'">
and t1.resource_code like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'resourceName'">
and t1.resource_name like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'creditCode'">
and t1.credit_code like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'contacts'">
and t1.contacts like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'telephone'">
and t1.telephone like concat('%', #{keywords}, '%')
</if>
<if test="searchType == 'outCode'">
and t1.out_code like concat('%', #{keywords}, '%')
</if>
</if>
<if test="resourceName != null and resourceName != ''">
and t1.resource_name like concat('%', #{resourceName}, '%')

@ -7,8 +7,10 @@
:key="item.value"
:index="index"
:class="item.raw.cssClass"
>{{ item.label }}</span
>
>
<span v-if="values.length >1">{{ item.label }} </span>
<span v-else>{{ item.label }}</span>
</span>
<el-tag
v-else
:disable-transitions="true"

@ -1,24 +1,74 @@
<template>
<!-- 酒店 列表-->
<div class="p-dialog-box">
<el-table class="p-table" :data="listData" align="center" show-overflow-tooltip="true" height="450">
<div class="display-flex p-form">
<el-select class="p-select " v-model="filterData.searchType" placeholder="请选择类型">
<el-option label="资源名称" value="resourceName"></el-option>
<el-option label="联系人" value="contacts"></el-option>
<el-option label="联系电话" value="telephone"></el-option>
</el-select>
<div class="p-resource-seek m-l-small">
<el-input v-model="filterData.keywords" placeholder="请输入关键词"></el-input>
</div>
<div @click="getresourceListData" class="p-filter-search-btn m-l-small"><i class="iconfont icon-search"></i></div>
</div>
<el-table class="p-table m-t-small" :data="listData" align="center" show-overflow-tooltip="true" height="450">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column prop="name" label="资源类型" width="180"></el-table-column>
<el-table-column prop="name" label="设备编码"></el-table-column>
<el-table-column prop="name" label="设备名称"></el-table-column>
<el-table-column prop="name" label="设备品牌"></el-table-column>
<el-table-column prop="name" label="规格型号"></el-table-column>
<el-table-column prop="name" label="物联协议"></el-table-column>
<el-table-column prop="name" label="运营状态"></el-table-column>
<el-table-column prop="region" label="区域" width="180"></el-table-column>
<el-table-column prop="resourceName" label="资源名称" width="180"></el-table-column>
<el-table-column prop="grade" label="等级" min-width="50" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.hotel_level" :value="scope.row.grade" />
</template>
</el-table-column>
<el-table-column prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.hotel_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
<el-table-column prop="contacts" label="联系人"></el-table-column>
<el-table-column prop="telephone" label="联系电话"></el-table-column>
</el-table>
<div class="p-pagination">
<el-pagination
:current-page="resourcePage"
:page-size="10"
layout="prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</template>
<script>export default {
name: "hotel-list",
props: ['listData'],
}
<script>
import { getBasicList } from "@/api/picture/resource-monitoring/resourceMonitoring";
export default {
name: "hotel-list",
props: ['listData','total','interfacePath','dataType'],
dicts: ['hotel_level','hotel_type'],
data(){
return{
resourcePage:0,
//
filterData: {
searchType: "",
keywords: "",
type: "",
},
}
},
methods: {
//
getresourceListData() {
this.filterData.type = this.dataType;
getBasicList(this.interfacePath,this.filterData).then(response => {
this.total = response.total;
this.listData = response.rows;
});
},
}
}
</script>
<style scoped lang="scss">

@ -1,52 +0,0 @@
<template>
<!-- 景区 列表 -->
<div class="p-dialog-box">
<div class="display-flex p-form">
<el-select class="p-select " v-model="filterData.level" placeholder="请选择类型">
<el-option label="资源名称" value="001"></el-option>
<el-option label="联系人" value="002"></el-option>
<el-option label="联系电话" value="003"></el-option>
</el-select>
<el-input
placeholder="请选择"
suffix-icon="el-icon-arrow-down"
v-model="filterData.area"
style="width: 200rem" class=" m-l-small">
</el-input>
<div class="p-resource-seek m-l-small">
<el-input v-model="filterData.name" placeholder="请输入关键词"></el-input>
</div>
<div class="p-filter-search-btn m-l-small"><i class="iconfont icon-search"></i></div>
</div>
<el-table class="p-table m-t-small" :data="listData" align="center" show-overflow-tooltip="true" height="450">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column prop="insideArea" label="区域" width="180"></el-table-column>
<el-table-column prop="resourceName" label="资源名称" width="180"></el-table-column>
<el-table-column prop="grade" label="等级"></el-table-column>
<el-table-column prop="label" label="标签"></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
<el-table-column prop="contacts" label="联系人"></el-table-column>
<el-table-column prop="telephone" label="联系电话"></el-table-column>
</el-table>
</div>
</template>
<script>export default {
name: "scenic-list",
props: ['listData'],
data(){
return{
//
filterData: {
name: "",
area: '',
level: "",
type: "",
},
}
}
}
</script>
<style scoped lang="scss">
</style>

@ -0,0 +1,139 @@
<template>
<!-- 景区 列表 -->
<div class="p-dialog-box">
<div class="display-flex p-form">
<el-select class="p-select " v-model="filterData.searchType" placeholder="请选择类型">
<el-option label="资源名称" value="resourceName"></el-option>
<el-option label="联系人" value="contacts"></el-option>
<el-option label="联系电话" value="telephone"></el-option>
</el-select>
<div class="p-resource-seek m-l-small">
<el-input v-model="filterData.keywords" placeholder="请输入关键词"></el-input>
</div>
<div @click="getresourceListData" class="p-filter-search-btn m-l-small"><i class="iconfont icon-search"></i></div>
</div>
<el-table class="p-table m-t-small" :data="listData" align="center" show-overflow-tooltip="true" height="450">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column prop="region" label="区域" width="180"></el-table-column>
<el-table-column prop="resourceName" label="资源名称" width="180"></el-table-column>
<!--景区 娱乐 旅行社 等级-->
<el-table-column v-if="dataType == 'scenic' || dataType == 'fun' || dataType == 'travel'" prop="grade" label="等级" min-width="50" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.scenic_level" :value="scope.row.grade" />
</template>
</el-table-column>
<!--酒店 民宿 购物 等级-->
<el-table-column v-if="dataType == 'hotel' || dataType == 'homestay' || dataType == 'shopping'" prop="grade" label="等级" min-width="50" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.hotel_level" :value="scope.row.grade" />
</template>
</el-table-column>
<!--乡村游等级-->
<el-table-column v-if="dataType == 'rural'" prop="grade" label="等级" min-width="50" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.rural_level" :value="scope.row.grade" />
</template>
</el-table-column>
<!--美食等级-->
<el-table-column v-if="dataType == 'food'" prop="grade" label="等级" min-width="50" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.food_level" :value="scope.row.grade" />
</template>
</el-table-column>
<!--景区标签-->
<el-table-column v-if="dataType == 'scenic'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.scenic_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<!--娱乐 标签-->
<el-table-column v-if="dataType == 'fun'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.fun_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<!--酒店标签-->
<el-table-column v-if="dataType == 'hotel'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.hotel_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<!--乡村游标签-->
<el-table-column v-if="dataType == 'rural'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.rural_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<!--民宿标签-->
<el-table-column v-if="dataType == 'homestay'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.homestay_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<!--美食标签-->
<el-table-column v-if="dataType == 'food'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.food_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<!--购物标签-->
<el-table-column v-if="dataType == 'shopping'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.shopping_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<!--旅行社标签-->
<el-table-column v-if="dataType == 'travel'" prop="label" label="标签" min-width="60" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.travel_type" :value="scope.row.label.split(',')"/>
</template>
</el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
<el-table-column prop="contacts" label="联系人"></el-table-column>
<el-table-column prop="telephone" label="联系电话"></el-table-column>
</el-table>
<div class="p-pagination">
<el-pagination
:current-page="resourcePage"
:page-size="10"
layout="prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</template>
<script>
import { getBasicList } from "@/api/picture/resource-monitoring/resourceMonitoring";
export default {
name: "scenic-list",
props: ['listData','total','interfacePath','dataType'],
dicts: ['scenic_level','scenic_type','fun_type','hotel_level','hotel_type','rural_type','rural_level'
,'homestay_type','food_level','food_type','shopping_type','travel_type'],
data(){
return{
resourcePage:0,
//
filterData: {
searchType: "",
keywords: "",
type: "",
},
}
},
methods: {
//
getresourceListData() {
console.log(this.dataType);
this.filterData.type = this.dataType;
getBasicList(this.interfacePath,this.filterData).then(response => {
this.total = response.total;
this.listData = response.rows;
});
},
}
}
</script>
<style scoped lang="scss">
</style>

@ -1,22 +1,71 @@
<template>
<!-- 视频 列表-->
<div class="p-dialog-box">
<el-table class="p-table" :data="listData" align="center" show-overflow-tooltip="true" height="450">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column prop="name" label="资源类型" width="180"></el-table-column>
<el-table-column prop="name" label="设备编码"></el-table-column>
<el-table-column prop="name" label="设备名称"></el-table-column>
<el-table-column prop="name" label="设备品牌"></el-table-column>
<el-table-column prop="name" label="规格型号"></el-table-column>
<el-table-column prop="name" label="物联协议"></el-table-column>
<el-table-column prop="name" label="运营状态"></el-table-column>
<div class="display-flex p-form">
<el-select class="p-select " v-model="filterData.searchType" placeholder="请选择类型">
<el-option label="设备编码" value="resourceCode"></el-option>
<el-option label="设备名称" value="resourceName"></el-option>
</el-select>
<div class="p-resource-seek m-l-small">
<el-input v-model="filterData.keywords" placeholder="请输入关键词"></el-input>
</div>
<div @click="getresourceListData" class="p-filter-search-btn m-l-small"><i class="iconfont icon-search"></i></div>
</div>
<el-table class="p-table m-t-small" :data="listData" align="center" show-overflow-tooltip="true" height="450">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column prop="typeName" label="资源类型" width="180"></el-table-column>
<el-table-column prop="resourceCode" label="设备编码" width="180"></el-table-column>
<el-table-column prop="resourceName" label="设备名称" width="180"></el-table-column>
<el-table-column prop="devBrand" label="设备品牌" min-width="50" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.dev_brand_dict" :value="scope.row.devBrand" />
</template>
</el-table-column>
<el-table-column prop="devModel" label="规格型号" min-width="50" show-overflow-tooltip>
<template slot-scope="scope">
<dict-tag :options="dict.type.dev_model_dict" :value="scope.row.devModel"/>
</template>
</el-table-column>
<el-table-column prop="address" label="运行状态"></el-table-column>
</el-table>
<div class="p-pagination">
<el-pagination
:current-page="resourcePage"
:page-size="10"
layout="prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</template>
<script>export default {
<script>
import { getBasicList } from "@/api/picture/resource-monitoring/resourceMonitoring";
export default {
name: "video-list",
props: ['listData'],
props: ['listData','total','interfacePath','dataType'],
dicts: ['dev_brand_dict','dev_model_dict'],
data(){
return{
resourcePage:0,
//
filterData: {
searchType: "",
keywords: "",
type: "",
},
}
},
methods: {
//
getresourceListData() {
this.filterData.type = this.dataType;
getBasicList(this.interfacePath,this.filterData).then(response => {
this.total = response.total;
this.listData = response.rows;
});
},
}
}
</script>

@ -177,7 +177,7 @@
<!-- 旅游资源弹窗 -->
<el-dialog :visible.sync="dialogStatus" :modal="false" class="p-dialog">
<div class="p-dialog-title" slot="title">{{ dialogName }}</div>
<resoureDialog :type="resourceType+dialogType" :propsData="dialogData"></resoureDialog>
<resoureDialog :type="resourceType+dialogType" :propsData="dialogData" :total="resourceListTotal" :dataType="currentData.dataType" :interfacePath="currentData.interfacePath"></resoureDialog>
</el-dialog>
</div>
</template>
@ -303,6 +303,9 @@ export default {
},2000)
},
methods: {
handleClose() {
this.$destroy(); // vue
},
searchFun(){
let interfacePath = this.currentData.interfacePath;
let dataType = this.currentData.dataType;

@ -1,28 +1,29 @@
<template>
<div class="p-resoure-dialog">
<!-- 旅游场所 ----------------------------------------------------- -->
<!-- 景区 scenic -->
<scenicList v-if="type == 'sceniclist'" :listData="propsData"></scenicList>
<!-- 景区 scenic 娱乐 fun-->
<tourList v-if="type == 'sceniclist' || type == 'funlist' || type == 'hotellist' || type == 'rurallist' || type == 'homestaylist' || type == 'foodlist' || type == 'shoppinglist' || type == 'travellist'" :listData="propsData" :total="total" :dataType="dataType" :interfacePath="interfacePath"></tourList>
<scenicDetail v-if="type == 'scenicdetail'" :detailData="propsData"></scenicDetail>
<!-- 酒店 hotel -->
<hotelList v-if="type == 'hotellist'" :listData="propsData"></hotelList>
<!-- <hotelList v-if="type == 'hotellist'" :listData="propsData" :total="total" :dataType="dataType" :interfacePath="interfacePath"></hotelList>-->
<hotelDetail v-if="type == 'hoteldetail'" :detailData="propsData"></hotelDetail>
<!-- 物联设备 ----------------------------------------------------- -->
<!-- 视频 video -->
<videoList v-if="type == 'videolist'" :listData="propsData"></videoList>
<videoList v-if="type == 'videolist'" :listData="propsData" :total="total" :dataType="dataType" :interfacePath="interfacePath"></videoList>
<videoDetail v-if="type == 'videodetail'" :detailData="propsData"></videoDetail>
<!-- 游客服务 ----------------------------------------------------- -->
<!-- 工作人员 worker -->
<workerList v-if="type == 'workderlist'" :listData="propsData"></workerList>
<workerList v-if="type == 'workderlist'" :listData="propsData" :total="total" :dataType="dataType" :interfacePath="interfacePath"></workerList>
<workerDetail v-if="type == 'workdertail'"></workerDetail>
<!-- 导游 guide -->
<guideList v-if="type == 'guideList'"></guideList>
<guideList v-if="type == 'guideList'" :total="total" :dataType="dataType" :interfacePath="interfacePath"></guideList>
<guideDetail v-if="type == 'guidedetail'"></guideDetail>
<!-- 游玩景点 spot -->
<spotList v-if="type == 'spotlist'" :listData="propsData"></spotList>
<spotList v-if="type == 'spotlist'" :listData="propsData" :total="total" :dataType="dataType" :interfacePath="interfacePath"></spotList>
<spotDetail v-if="type == 'spotdetail'" :detailData="propsData"></spotDetail>
<!-- name type -->
@ -30,8 +31,8 @@
</template>
<script>
// -----------------------------------------------------
// scenic
import scenicList from "@/views/picture/resource-monitoring/dialog-module/scenic-list";
//
import tourList from "@/views/picture/resource-monitoring/dialog-module/tour-list";
// scenic
import scenicDetail from "@/views/picture/resource-monitoring/dialog-module/scenic-detail";
// hotel
@ -63,10 +64,10 @@ import spotDetail from "@/views/picture/resource-monitoring/dialog-module/spot-d
export default {
name: "resoure-dialog",
components: {
scenicList,scenicDetail,hotelList,hotelDetail,
tourList,scenicDetail,hotelList,hotelDetail,
videoList,
workerList,workerDetail,guideDetail,spotList,guideList,spotDetail},
props: ['propsData','type']
props: ['propsData','type','total','interfacePath','dataType']
}
</script>

@ -36,6 +36,7 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8080/`,//用户名:admin 密码CJYjqgk@2023!
// target: `http://39.105.17.128:8096/`,//用户名:admin 密码CJYjqgk@2023!
// target: `http://192.168.0.200:8080/`,//用户名:admin 密码Cjy@123abc
changeOrigin: true,
pathRewrite: {

Loading…
Cancel
Save