Merge remote-tracking branch 'origin/master'

dev
zc 2 years ago
commit 71ce0cdd93
  1. 2
      cjy-project/src/main/resources/mapper/enterprise/EnterpriseResourcesAgreementMapper.xml
  2. 3
      ruoyi-ui/src/api/enterprise/resourceAgreementConfig.js
  3. BIN
      ruoyi-ui/src/assets/styles/icons/iconfont.ttf
  4. BIN
      ruoyi-ui/src/assets/styles/icons/iconfont.woff
  5. BIN
      ruoyi-ui/src/assets/styles/icons/iconfont.woff2
  6. 1
      ruoyi-ui/src/assets/styles/picture-common.scss
  7. 4
      ruoyi-ui/src/assets/styles/picture-iconfont.css
  8. 77
      ruoyi-ui/src/views/components/p-level/BaseLevel.vue
  9. 58
      ruoyi-ui/src/views/components/vDict/index.vue
  10. 51
      ruoyi-ui/src/views/enterprise/index.vue
  11. 51
      ruoyi-ui/src/views/enterprise/update-page.vue
  12. 17
      ruoyi-ui/src/views/picture/resource-monitoring/dialog-module/tour-detail.vue
  13. 7
      ruoyi-ui/src/views/picture/resource-monitoring/index.vue
  14. 1
      ruoyi-ui/src/views/picture/scenic-flow/index.vue
  15. 51
      ruoyi-ui/src/views/system/management/attraction/index.vue
  16. 2
      ruoyi-ui/src/views/system/management/electronic-patrol/patrol-task/index.vue
  17. 0
      ruoyi-ui/src/views/system/management/electronic-patrol/utils/patrol.js
  18. 26
      ruoyi-ui/src/views/system/management/enterprise-resource-agreement/index.vue
  19. 3
      ruoyi-ui/src/views/system/management/operational-data/governmentData/governmentData/index.vue
  20. 49
      ruoyi-ui/src/views/system/management/system-config/index.vue
  21. 3
      ruoyi-ui/src/views/system/management/tourism-resources/guideInfo/guide/index.vue

@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectEnterpriseResourcesAgreementById" parameterType="Long" resultMap="EnterpriseResourcesAgreementResult">
select id, enterprise_resource_type_id, resource_agreement_id, remark, sort,ifnull(param_value,'') from ti_enterprise_resources_agreement
select id, enterprise_resource_type_id, resource_agreement_id, remark, sort,ifnull(param_value,'') as param_value from ti_enterprise_resources_agreement
where id = #{id}
</select>

@ -46,6 +46,7 @@ export function delConfig(id) {
export function agreementConfigList(query){
return request({
url: '/agreement/config/agreementConfigList',
params: query
params: query,
method:'get'
})
}

@ -1455,6 +1455,7 @@ text-align: center;
position: relative;
flex: 1;
font-size: 24rem;
font-family: YouSheBiaoTiHei;
overflow: hidden;
white-space: nowrap;

@ -12,6 +12,10 @@
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-icon-level:before {
content: "\e659";
}
.icon-broadcast:before {
content: "\e64c";

@ -1,15 +1,34 @@
<template>
<!-- 等级组件 -->
<div class="p-level">
<span class="p-level-text" v-for="(item,index) in 5" v-if="type=='001'" :class="Number(level) > index?'active':''">
<div v-if="type=='scenic'||type=='fun'||type=='travel'">
<div class="p-level-text" v-for="(item,index) in 5" :class="Number(level) > index?'active':''">
A
</span>
</div></div>
<div v-else-if="type=='hotel'||type=='rural'||type=='homestay'||type=='gymnasium'||type=='technology'||type=='technology'||type=='homestay'">
<div class="p-level-text" v-for="(item,index) in 5" :class="Number(level) > index?'active':''">
</div></div>
<div v-else-if="type=='food'">
<div class="p-level-text" v-for="(item,index) in 5" :class="Number(level) > index?'active':''">
<span style="font-size: 12px;" class="iconfont icon-icon-level"></span>
</div></div>
<div v-else-if="type=='artgallery'||type=='toilet'||type=='carpark'||type=='guide'">
<div class="p-level-text active">
<vDict :options="dictData" :value="level"></vDict>
</div></div>
<div v-else>
<div class="p-level-text active">{{ level }}</div></div>
</div>
</template>
<script>
// getDicts
import {getDicts} from "@/api/system/dict/data";
import vDict from "@/views/components/vDict/index";
export default {
name: "BaseLevel",
components: {vDict},
props: {
type: {
type: String,
@ -20,11 +39,59 @@ export default {
default: '0'
},
},
data() {
return {
//
dictData: [],
toiletDictData: [],
}
},
watch: {
type: {
handler(newVal, oldVal) {
if(newVal=='artgallery'){
getDicts('artgallery_level').then(response => {
this.dictData = response.data
})}
if(newVal=='guide'){
getDicts('guide_level').then(response => {
this.dictData = response.data
})}
if(newVal=='carpark'){
getDicts('carpark_level').then(response => {
this.dictData = response.data
})}
if(newVal=='toilet'){
getDicts('toilet_level').then(response => {
this.dictData = response.data
})}
},
immediate: true
},}
}
</script>
<style scoped lang="scss">
.p-level{position: relative; padding: 0 $p-spacer-small; color: rgba($p-level-color,.5); border: 1rem solid $p-level-color;border-radius: 20rem;}
.p-level-text{}
.p-level-text.active{ color: $p-level-color; }
.p-level {
position: relative;
padding: 0 $p-spacer-small;
color: rgba($p-level-color, .5);
border: 1rem solid $p-level-color;
border-radius: 20rem;
}
.p-level div{text-align: center}
.p-level-text {
display: inline-block;
color: $p-level-color;
opacity: .3;
}
.p-level-text.active {
color: $p-level-color;opacity: 1;
}
</style>

@ -0,0 +1,58 @@
<template>
<span v-if='dictValue' class="v-dict" :class="'type'+dictValue.dictValue">
{{ dictValue.dictLabel }}
</span>
</template>
<script>
export default {
name: "vDict",
props: {
options: {
type: Array,
default: null,
},
value: [Number, String, Array],
},
data() {
return {
dictValue: []
}
},
watch: {
options: {
handler(newVal, oldVal) {
console.log('aaa',this.value)
if (this.value !== null && typeof this.value !== 'undefined') {
let newOptions=[]
newOptions = newVal.filter((currentValue) => {
return currentValue.dictValue == this.value;
});
this.dictValue = newOptions[0]
} else {
this.values = []
}
},
immediate: true
},
value: {
handler(newVal, oldVal) {
if (this.value !== null && typeof this.value !== 'undefined') {
let newValue=[]
newValue = this.options.filter((currentValue) => {
return currentValue.dictValue == newVal;
});
this.dictValue = newValue[0]
} else {
this.values = []
}
},
immediate: true
},
},
}
</script>
<style scoped>
</style>

@ -355,17 +355,25 @@ import {roleMenuTreeselect} from "@/api/system/menu";
import {batchEnterpriseResourceType, enterpriseresourceTypeList} from "@/api/enterprise/enterpriseResourceType"
import {listEnterpriseResourceType} from "@/api/enterprise/resourceType"
import ImgUpload from '@/components/ImageUpload/index'
import tickt from "@/views/system/management/ticket-data/ticket-check-flow/tickt";
import NewLocation from "../../components/CommonComponents/PublicCoponents/map/NewLocation";
import {getCustomersSource} from "@/api/ticketing/sellTouristsPortrait";
export default {
name: "Enterprise",
mixins: [tickt],
// mixins: [tickt],
components: {
ImgUpload,
NewLocation
},
data() {
return {change:false,
//
provinceOptions: [],
//
cityOptions: [],
cityOptionsTwo: [],
//
countryOptions: [],
countryOptionsTwo: [],
//
loading: true,
//
@ -439,6 +447,7 @@ export default {
},
created() {
this.getList();
this.getCustomersSource(-1)
},
methods: {
/** 查询企业信息列表 */
@ -826,7 +835,43 @@ export default {
closeResource(){
console.log("关闭")
this.resourceCancel();
}
},
getCustomersSource(el) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
this.provinceOptions = value.rows
})
},
getCity(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type != 1){
this.cityOptions = value.rows
}else{
this.cityOptionsTwo = value.rows
}
// this.form.citySource = value.rows[0].regionId
// this.form.city = value.rows[0].regionId
})
},
getCountry(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type !=1){
this.countryOptions = value.rows
}else{
this.countryOptionsTwo = value.rows
}
})
},
/** -------资源类型配置 end-----------------------------------------------------------------------------------------------*/
}
};

@ -147,18 +147,25 @@ import {
selectEnterpriseDetails
} from "@/api/enterprise/enterprise";
import ImgUpload from '@/components/ImageUpload/index'
import tickt from "@/views/system/management/ticket-data/ticket-check-flow/tickt";
import NewLocation from "../../components/CommonComponents/PublicCoponents/map/NewLocation";
import {getCustomersSource} from "@/api/ticketing/sellTouristsPortrait";
export default {
name: "update-page",
mixins: [tickt],
// mixins: [tickt],
components: {
ImgUpload,
NewLocation
},
data() {
return {
//
provinceOptions: [],
//
cityOptions: [],
cityOptionsTwo: [],
//
countryOptions: [],
countryOptionsTwo: [],
//
form: {},
loginLogoList:[],
@ -173,6 +180,8 @@ export default {
},
created() {
this.selectEnterpriseDetails();
this.getCustomersSource(-1)
},
methods:{
selectEnterpriseDetails(){
@ -210,6 +219,42 @@ export default {
copySuccess() {
this.$modal.msgSuccess("复制成功");
},
getCustomersSource(el) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
this.provinceOptions = value.rows
})
},
getCity(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type != 1){
this.cityOptions = value.rows
}else{
this.cityOptionsTwo = value.rows
}
// this.form.citySource = value.rows[0].regionId
// this.form.city = value.rows[0].regionId
})
},
getCountry(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type !=1){
this.countryOptions = value.rows
}else{
this.countryOptionsTwo = value.rows
}
})
},
}
}
</script>

@ -332,10 +332,11 @@
</el-col>
<el-col :span="12">
<base-card-sub-title title="评价趋势分析"></base-card-sub-title>
<div class="m-t-small" style="height: 180px">
<base-echarts1
v-if="EvaluationTrend.eChartData!=undefined&&EvaluationTrend.eChartData.seriesData!=undefined&&EvaluationTrend.eChartData.seriesData.length>0"
:propsData="EvaluationTrend" type="area"></base-echarts1>
<base-default v-else text="暂无数据"></base-default>
:propsData="EvaluationTrend" type="area" ></base-echarts1>
<base-default v-else text="暂无数据"></base-default></div>
</el-col>
<el-col :span="24" class="m-t-medium">
<base-card-sub-title title="网评信息"></base-card-sub-title>
@ -377,17 +378,20 @@
<el-row :gutter="20">
<el-col :span="12">
<base-card-sub-title title="投诉类型统计"></base-card-sub-title>
<div class="m-t-small" style="height: 180px">
<base-echarts1
v-if="TypeComplaint.eChartData!=undefined&&TypeComplaint.eChartData.seriesData!=undefined&&TypeComplaint.eChartData.seriesData.length>0"
:propsData="TypeComplaint" type="pie"></base-echarts1>
<base-default v-else text="暂无数据"></base-default>
</div>
</el-col>
<el-col :span="12">
<base-card-sub-title title="投诉趋势分析"></base-card-sub-title>
<div class="m-t-small" style="height: 180px">
<base-echarts1
v-if="ComplaintTrendData.eChartData!=undefined&&ComplaintTrendData.eChartData.seriesData!=undefined&&ComplaintTrendData.eChartData.seriesData.length>0"
:propsData="ComplaintTrendData" type="area"></base-echarts1>
<base-default v-else text="暂无数据"></base-default>
<base-default v-else text="暂无数据"></base-default> </div>
</el-col>
<el-col :span="24" class="m-t-medium">
<base-card-sub-title title="投诉信息"></base-card-sub-title>
@ -589,10 +593,11 @@
</el-col>
<el-col :span="24">
<base-card-sub-title title="类型分布"></base-card-sub-title>
<div class="m-t-small" style="height: 180px;">
<base-echarts1
v-if="TypeData.eChartData!=undefined&&TypeData.eChartData.seriesData!=undefined&&TypeData.eChartData.seriesData.length>0"
:propsData="TypeData" type="pie"></base-echarts1>
<base-default v-else text="暂无数据"></base-default>
<base-default v-else text="暂无数据"></base-default></div>
</el-col>
</el-row>
</div>
@ -1146,7 +1151,7 @@ export default {
//
attentionStatistics() {
let Opts = {
unit: ['个'],
unit: ['个','个'],
color: ['blue'],
extra: {
column: {
@ -1168,7 +1173,7 @@ export default {
let Opts = {
type: ['column', 'line',],
yAxisIndex: [0, 1],
unit: ['单位'],
unit: ['','次'],
yAxis: {
data: [
{

@ -246,8 +246,11 @@
}}
</div>
<div v-else class="p-resource-list-title">{{ item.resourceName }}</div>
<div class="p-resource-list-level">
<base-level :level="item.grade" type="001"></base-level>
<div class="p-resource-list-level" v-if="item.grade">
<base-level :level="item.grade" :type="currentData.dataType"></base-level>
</div>
<div class="p-resource-list-level" v-if="currentData.dataType=='guide'">
<base-level :level="item.level" :type="currentData.dataType"></base-level>
</div>
</div>
<div v-if="currentData.dataType == 'guide'" class="p-resource-list-address m-t-mini">{{

@ -35,7 +35,6 @@
<!-- 区域客流监测 -->
<base-module name="FlowArea" id="FlowArea" class="m-t-large" style="height: 28vh">
<base-module-card cardTitle="区域客流监测" cardType="small">
<scenic-area :propsData="FlowAreaData"></scenic-area>
</base-module-card>
</base-module>

@ -207,15 +207,15 @@
import { listAttraction, getAttraction, delAttraction, addAttraction, updateAttraction,selectAreaSupervisor } from "@/api/enterprise/attraction";
import { getScenicList,getResourceListByResourceType} from "@/api/tour/tour";
import {getListByInResources} from "@/api/enterprise/enterpriseResourceType";
import tickt from "@/views/system/management/ticket-data/ticket-check-flow/tickt";
import ImgUpload from '@/components/ImageUpload/index'
import TreeSelect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import NewLocation from "@/components/CommonComponents/PublicCoponents/map/NewLocation";
import {getCustomersSource} from "@/api/ticketing/sellTouristsPortrait";
export default {
name: "Attraction",
mixins: [tickt],
// mixins: [tickt],
dicts:['yes_no'],
components: {
ImgUpload,
@ -224,6 +224,14 @@ export default {
},
data() {
return {change:false,
//
provinceOptions: [],
//
cityOptions: [],
cityOptionsTwo: [],
//
countryOptions: [],
countryOptionsTwo: [],
//
loading: true,
//
@ -305,6 +313,8 @@ export default {
created() {
this.getScenicList();
// this.getList();
this.getCustomersSource(-1)
},
methods: {
@ -481,7 +491,42 @@ export default {
})
this.reousrceIptions = res.data
})
}
},
getCustomersSource(el) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
this.provinceOptions = value.rows
})
},
getCity(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type != 1){
this.cityOptions = value.rows
}else{
this.cityOptionsTwo = value.rows
}
// this.form.citySource = value.rows[0].regionId
// this.form.city = value.rows[0].regionId
})
},
getCountry(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type !=1){
this.countryOptions = value.rows
}else{
this.countryOptionsTwo = value.rows
}
})
},
}
};
</script>

@ -215,7 +215,7 @@
<div ref="container" class="m-right-map"></div>
</div>
<div v-if="disabled" class="m-userList-box">
<el-form ref="form" :disabled="disabled" :model="form" :rules="rules" label-width="120px">
<el-form :disabled="disabled" :model="form" :rules="rules" label-width="120px">
<div v-for="(item,index) in form.userList" class="m-userList">
<el-form-item label="人员部门">
<el-input v-model="item.deptName" placeholder="请输入内容" type="input"/>

@ -177,9 +177,9 @@
<el-dialog :close-on-click-modal="false" v-if="configOpen" :title="configTitle" :visible.sync="configOpen" append-to-body>
<el-form ref="configForm" :model="configForm" :rules="configRules" label-width="120px">
<template v-if="configList!=undefined&&configList.length>0">
<el-form-item v-for="(item,index) in configList" :key="item.paramKey" :label="item.name">
<el-input v-model="configForm[item.paramKey]" :placeholder="'请输入'+item.name"
:prop="item.type === 'string' ? 'value' : 'number'"
<el-form-item v-for="(item,index) in configList" :key="item.paramKey" :label="item.name" >
<el-input :value="configForm[item.paramKey]" :placeholder="'请输入'+item.name " @input="val => { configForm[item.paramKey] = val }"
/>
</el-form-item>
</template>
@ -408,21 +408,29 @@ export default {
selectEnterpriseAgreementParamsValue(id){
getAgreement(id).then(res =>{
console.log(res)
console.log(res.data.paramValue)
let obj = JSON.parse( res.data.paramValue)
this.$nextTick(()=>{
this.configForm = obj
console.log(res.data)
if(res.data.paramValue){
let obj = JSON.parse( res.data.paramValue)
this.$nextTick(()=>{
this.configForm = obj
})
})
}
})
},
/** 查询协议参数*/
agreementConfig(agreementId,id) {
agreementConfigList({"agreementId": agreementId}).then(res => {
this.configTitle = '参数设置';
const obj = {}
for (let i = 0; i < res.data.length; i++) {
Vue.set(this.configForm, res.data[i].paramKey, null)
Vue.set(obj, res.data[i].paramKey, null)
}
console.log(res.data,'附值后对象')
this.$nextTick(()=>{
this.configForm = obj
this.$forceUpdate()
})
this.configList = res.data;
this.configOpen = true;
this.configAgreementId = id;

@ -223,11 +223,10 @@ import {
addGovernmentData,
updateGovernmentData
} from "@/api/governmentData/governmentData";
import tickt from '../../../ticket-data/ticket-check-flow/tickt'
import operational from "@/views/system/management/operational-data/utils/operational";
export default {
mixins: [operational,tickt],
mixins: [operational],
dicts: ['government_information_type','data_sources'],
name: "GovernmentData",
data() {

@ -56,16 +56,24 @@
<script>
import { selectSysConfigByOrganCode ,addSystemConfig, updateSystemConfig } from "@/api/enterprise/systemConfig";
import tickt from "@/views/system/management/ticket-data/ticket-check-flow/tickt";
import ImgUpload from '@/components/ImageUpload/index'
import {getCustomersSource} from "@/api/ticketing/sellTouristsPortrait";
export default {
name: "SystemConfig",
mixins: [tickt],
// mixins: [tickt],
components: {
ImgUpload
},
data() {
return {
//
provinceOptions: [],
//
cityOptions: [],
cityOptionsTwo: [],
//
countryOptions: [],
countryOptionsTwo: [],
change:false,
//
form: {},
@ -99,8 +107,45 @@ export default {
},
created() {
this.selectSysConfigByOrganCode();
this.getCustomersSource(-1)
},
methods: {
//
getCustomersSource(el) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
this.provinceOptions = value.rows
})
},
getCity(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type != 1){
this.cityOptions = value.rows
}else{
this.cityOptionsTwo = value.rows
}
// this.form.citySource = value.rows[0].regionId
// this.form.city = value.rows[0].regionId
})
},
getCountry(el,type) {
let params = {
regionId: el
}
getCustomersSource(params).then(value => {
if (type !=1){
this.countryOptions = value.rows
}else{
this.countryOptionsTwo = value.rows
}
})
},
selectSysConfigByOrganCode(){
this.reset();
selectSysConfigByOrganCode().then(res =>{

@ -311,9 +311,8 @@
<script>
import {listGuide, getGuide, delGuide, addGuide, updateGuide} from "@/api/guideInfo/guide";
import resources from "@/views/system/management/tourism-resources/utils/resources";
import tickt from "@/views/system/management/ticket-data/ticket-check-flow/tickt";
export default {
mixins: [tickt,resources],
mixins: [resources],
name: "Guide",
data() {
return {

Loading…
Cancel
Save