new UglifyJsPlugin({ | new UglifyJsPlugin({ | ||||
uglifyOptions: { | uglifyOptions: { | ||||
compress: { | compress: { | ||||
warnings: false | |||||
warnings: false, | |||||
// =====以下是新增的===== | |||||
drop_console: true, // 删除页面中的 console.log | |||||
pure_funcs: ['console.log'] | |||||
} | } | ||||
}, | }, | ||||
sourceMap: config.build.productionSourceMap, | sourceMap: config.build.productionSourceMap, | ||||
}), | }), | ||||
// Compress extracted CSS. We are using this plugin so that possible | // Compress extracted CSS. We are using this plugin so that possible | ||||
// duplicated CSS from different components can be deduped. | // duplicated CSS from different components can be deduped. | ||||
new OptimizeCSSPlugin({ | |||||
cssProcessorOptions: config.build.productionSourceMap | |||||
? { safe: true, map: { inline: false } } | |||||
: { safe: true } | |||||
}), | |||||
// new OptimizeCSSPlugin({ | |||||
// cssProcessorOptions: config.build.productionSourceMap | |||||
// ? { safe: true, map: { inline: false } } | |||||
// : { safe: true } | |||||
// }), | |||||
// generate dist index.html with correct asset hash for caching. | // generate dist index.html with correct asset hash for caching. | ||||
// you can customize output by editing /index.html | // you can customize output by editing /index.html | ||||
// see https://github.com/ampedandwired/html-webpack-plugin | // see https://github.com/ampedandwired/html-webpack-plugin |
* Source Maps | * Source Maps | ||||
*/ | */ | ||||
productionSourceMap: true, | |||||
productionSourceMap: false, | |||||
// https://webpack.js.org/configuration/devtool/#production | // https://webpack.js.org/configuration/devtool/#production | ||||
devtool: '#source-map', | devtool: '#source-map', | ||||
// Surge or Netlify already gzip all static assets for you. | // Surge or Netlify already gzip all static assets for you. | ||||
// Before setting to `true`, make sure to: | // Before setting to `true`, make sure to: | ||||
// npm install --save-dev compression-webpack-plugin | // npm install --save-dev compression-webpack-plugin | ||||
productionGzip: false, | |||||
productionGzip: true, | |||||
productionGzipExtensions: ['js', 'css'], | productionGzipExtensions: ['js', 'css'], | ||||
// Run the build command with an extra argument to | // Run the build command with an extra argument to |
}, | }, | ||||
"dependencies": { | "dependencies": { | ||||
"@antv/g2": "^3.5.11", | "@antv/g2": "^3.5.11", | ||||
"compression-webpack-plugin": "1.1.12", | |||||
"element-ui": "^2.13.0", | "element-ui": "^2.13.0", | ||||
"vue": "^2.5.2", | "vue": "^2.5.2", | ||||
"vue-router": "^3.0.1", | "vue-router": "^3.0.1", | ||||
"vuex": "^3.1.2" | "vuex": "^3.1.2" | ||||
}, | }, | ||||
"devDependencies": { | "devDependencies": { | ||||
"vue2-editor": "^2.10.2", | |||||
"autoprefixer": "^7.1.2", | "autoprefixer": "^7.1.2", | ||||
"axios": "^0.19.0", | "axios": "^0.19.0", | ||||
"babel-core": "^6.22.1", | "babel-core": "^6.22.1", | ||||
"vue-template-compiler": "^2.5.2", | "vue-template-compiler": "^2.5.2", | ||||
"vue-video-player": "^5.0.2", | "vue-video-player": "^5.0.2", | ||||
"vue-wechat-title": "^2.0.5", | "vue-wechat-title": "^2.0.5", | ||||
"vue2-editor": "^2.10.2", | |||||
"webpack": "^3.6.0", | "webpack": "^3.6.0", | ||||
"webpack-bundle-analyzer": "^2.9.0", | "webpack-bundle-analyzer": "^2.9.0", | ||||
"webpack-dev-server": "^2.9.1", | "webpack-dev-server": "^2.9.1", |
import axios from '../api' | |||||
export default { | |||||
getAllList(params) { | |||||
return axios({ | |||||
method: "GET", | |||||
url: '/api/front/app/list', | |||||
params:{ | |||||
...params | |||||
} | |||||
}) | |||||
}, | |||||
getPoints(id) { | |||||
return axios({ | |||||
method: "GET", | |||||
url: '/api/front/app/getPoints/'+id | |||||
}) | |||||
} | |||||
} | |||||
:disabled="disabled" | :disabled="disabled" | ||||
size="small" | size="small" | ||||
placeholder="" | placeholder="" | ||||
:props="{ checkStrictly: true,value:'id', | |||||
:props="{ value:'id', | |||||
label:'name' ,emitPath:false}" | label:'name' ,emitPath:false}" | ||||
clearable></el-cascader> | clearable></el-cascader> | ||||
</template> | </template> |
this.boxHeight = document.body.clientHeight - 240 | this.boxHeight = document.body.clientHeight - 240 | ||||
}, | }, | ||||
mounted() { | mounted() { | ||||
console.log(this.documentList) | |||||
}, | }, | ||||
methods: { | methods: { | ||||
mainClick() { | mainClick() { |
direction: 'right' //设置文本标注方位 | direction: 'right' //设置文本标注方位 | ||||
}); | }); | ||||
marker.setMap(this.map); | marker.setMap(this.map); | ||||
console.log(center) | |||||
if(center){ | if(center){ | ||||
me.map.setZoomAndCenter(10,point) | me.map.setZoomAndCenter(10,point) | ||||
} | } |
<template> | <template> | ||||
<div class="index-map" id="indexMap"></div> | |||||
<div class="index-map" id="indexMap"></div> | |||||
</template> | </template> | ||||
<script> | <script> | ||||
import AMap from "AMap"; | import AMap from "AMap"; | ||||
import inspectApi from '@/api/business/inspect' | import inspectApi from '@/api/business/inspect' | ||||
import appApi from '@/api/app/list' | |||||
export default { | export default { | ||||
name: "trajectory-dialog", | name: "trajectory-dialog", | ||||
} | } | ||||
}, | }, | ||||
props: { | props: { | ||||
isApp:{ | |||||
type:Boolean, | |||||
default(){ | |||||
return false | |||||
} | |||||
}, | |||||
driverId: { | driverId: { | ||||
type: Number, | type: Number, | ||||
default() { | default() { | ||||
}); | }); | ||||
let me = this | let me = this | ||||
this.map.on("complete", function() { | this.map.on("complete", function() { | ||||
me.point() | |||||
if(me.isApp){ | |||||
me.appPoint() | |||||
}else{ | |||||
me.point() | |||||
} | |||||
}); | }); | ||||
}, | }, | ||||
methods: { | methods: { | ||||
marker.moveAlong(pathList, 6000); | marker.moveAlong(pathList, 6000); | ||||
this.map.setCenter(point) | this.map.setCenter(point) | ||||
}, | }, | ||||
appPoint(){ | |||||
appApi.getPoints(this.driverId).then(res => { | |||||
let me = this | |||||
let polygons = null; | |||||
var bounds = res.data.pointList; | |||||
if (bounds && bounds.length > 0) { | |||||
let path = [] | |||||
for (let i = 0, l = bounds.length; i < l; i++) { | |||||
path.push( | |||||
new AMap.LngLat(bounds[i].x, bounds[i].y) | |||||
) | |||||
} | |||||
polygons = new AMap.Polygon({ | |||||
zIndex: 11, | |||||
path: path, | |||||
strokeColor: "#09EBE0", //线颜色 | |||||
strokeOpacity: 1, //线透明度 | |||||
strokeWeight: 1, //线宽 | |||||
strokeStyle: "solid", //线样式 | |||||
strokeDasharray: [10, 5], //补充线样式 | |||||
fillColor: "#17ABA3", | |||||
fillOpacity: 1 | |||||
}); | |||||
this.map.add(polygons) | |||||
this.initRouters(path,bounds) | |||||
} | |||||
}).catch(e => { | |||||
}) | |||||
}, | |||||
point(){ | point(){ | ||||
inspectApi.point(this.driverId).then(res => { | inspectApi.point(this.driverId).then(res => { | ||||
let me = this | let me = this |
meta: { | meta: { | ||||
'title': '无权限' | 'title': '无权限' | ||||
} | } | ||||
}, | |||||
{ | |||||
path: '/menu', | |||||
name: 'menu', | |||||
component: (resolve) => require(['@/views/permission/authrule'], resolve), | |||||
meta: { | |||||
'title': '菜单管理' | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
path: '/permission', | |||||
name: 'permission', | |||||
component: Main, | |||||
children: [ | |||||
{ | |||||
path: '/authrule', | |||||
name: 'authrule', | |||||
component: (resolve) => require(['@/views/permission/authrule'], resolve), | |||||
meta: { | |||||
'title': '菜单管理' | |||||
} | |||||
} | } | ||||
] | ] | ||||
}, | }, | ||||
btnRule[item.permission]=true | btnRule[item.permission]=true | ||||
}) | }) | ||||
store.dispatch('user/setTtnRule', btnRule) | store.dispatch('user/setTtnRule', btnRule) | ||||
console.log(btnRule) | |||||
addDynamicMenuAndRoutes(to, from) | addDynamicMenuAndRoutes(to, from) | ||||
next(to.path) | next(to.path) | ||||
} | } |
<template> | |||||
<div class="app-list"> | |||||
<el-form :inline="true" :model="searchParam" class="demo-form-inline"> | |||||
<el-form-item label="区划"> | |||||
<driverAreaSelect v-model="searchParam.area"></driverAreaSelect> | |||||
</el-form-item> | |||||
<el-form-item label="河湖名称"> | |||||
<el-input | |||||
clearable | |||||
v-model="searchParam.driverName" | |||||
size="small" | |||||
placeholder="请输入河湖名称" | |||||
style="width: 150px" | |||||
/> | |||||
</el-form-item> | |||||
<el-form-item label="日期"> | |||||
<el-date-picker | |||||
style="width: 220px" | |||||
placeholder="日期" | |||||
clearable | |||||
size="small" | |||||
value-format="yyyy-MM-dd" | |||||
v-model="searchParam.time" | |||||
type="daterange" | |||||
range-separator="至" | |||||
start-placeholder="开始日期" | |||||
end-placeholder="结束日期" | |||||
></el-date-picker> | |||||
</el-form-item> | |||||
<el-form-item> | |||||
<el-button | |||||
:loading="tableLoading" | |||||
icon="el-icon-search" | |||||
@click="search" | |||||
size="small" | |||||
type="primary" | |||||
>搜索 | |||||
</el-button> | |||||
<el-button | |||||
icon="el-icon-refresh-right" | |||||
@click="initSearchParam();search()" | |||||
type="primary" | |||||
size="small" | |||||
style="background-color: #fff; border: 1px solid #ccc ; color: #666" | |||||
>清空 | |||||
</el-button> | |||||
</el-form-item> | |||||
</el-form> | |||||
<el-table | |||||
stripe | |||||
ref="table" | |||||
:height="tableHeight" | |||||
v-loading="tableLoading" | |||||
:data="dataList" | |||||
border | |||||
size="medium" | |||||
row-key="id" | |||||
> | |||||
<el-table-column :index="indexMethod" label="序号" type="index" width="80" align="center"/> | |||||
<el-table-column width="120" show-overflow-tooltip prop="inspectNo" label="任务单号" align="center"> | |||||
<template slot-scope="scoped"> | |||||
<!-- <a v-if="btnRule.usernotice_add" href="javascript:void(0);" @click="detailNo(scoped.row)">{{scoped.row.inspectNo}}</a>--> | |||||
<span>{{scoped.row.inspectNo}}</span> | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column width="60" show-overflow-tooltip prop="num" label="行号" align="center"/> | |||||
<el-table-column show-overflow-tooltip prop="driverName" label="河湖名称" align="center"/> | |||||
<el-table-column show-overflow-tooltip prop="areaName" label="区划" align="center"/> | |||||
<el-table-column show-overflow-tooltip prop="beginTime" label="巡检日期" min-width="120" align="center"> | |||||
</el-table-column> | |||||
<el-table-column width="80" v-if="btnRule.front_app_getPoints" show-overflow-tooltip | |||||
prop="driverLength" label="巡检轨迹" align="center"> | |||||
<template slot-scope="{row}"> | |||||
<el-button type="primary" size="mini" | |||||
@click="pointClick(row)">查看 | |||||
</el-button> | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column width="80" show-overflow-tooltip prop="createUserName" label="巡查人" align="center"/> | |||||
<el-table-column width="160" show-overflow-tooltip prop="beginTime" label="巡查时间" align="center"/> | |||||
<el-table-column width="60" show-overflow-tooltip prop="" | |||||
label="报告" align="center"> | |||||
<!-- <template slot-scope="{row}">--> | |||||
<!-- <el-tooltip v-if="row.reportId" class="item" effect="dark" content="查看报告" placement="bottom">--> | |||||
<!-- <el-button @click="getDetail(row.reportId)" type="primary" size="mini" icon="el-icon-document"/>--> | |||||
<!-- </el-tooltip>--> | |||||
<!-- </template>--> | |||||
</el-table-column> | |||||
<el-table-column width="80" show-overflow-tooltip prop="" | |||||
label="图像资料" align="center"> | |||||
<!-- <template slot-scope="{row}">--> | |||||
<!-- <el-tooltip v-if="row.status==4" class="item" effect="dark" content="查看图像" placement="bottom">--> | |||||
<!-- <el-button @click="setMark(row)" type="primary" size="mini" icon="el-icon-picture"/>--> | |||||
<!-- </el-tooltip>--> | |||||
<!-- </template>--> | |||||
</el-table-column> | |||||
</el-table> | |||||
<div class="page-current"> | |||||
<el-pagination | |||||
:current-page="currentPage" | |||||
:page-size="pageSize" | |||||
prev-text="上一页" | |||||
next-text="下一页" | |||||
background | |||||
layout="total, prev, pager, next, jumper" | |||||
style="display: inline-block;" | |||||
:total="count" | |||||
@current-change="handleCurrentChange" | |||||
/> | |||||
</div> | |||||
<el-drawer | |||||
title="巡航轨迹" | |||||
:visible.sync="trajectoryVisible" | |||||
:direction="direction" | |||||
:size="drawerWidth" | |||||
:before-close="handleRrajectoryClose"> | |||||
<trajectory-dialog :isApp="true" :driverId="driverId" v-if="trajectoryVisible"></trajectory-dialog> | |||||
</el-drawer> | |||||
</div> | |||||
</template> | |||||
<script> | |||||
import api from "@/api/app/list"; | |||||
import driverAreaSelect from "@/components/driverAreaSelect"; | |||||
import {mapGetters} from "vuex"; | |||||
import trajectoryDialog from '@/components/trajectoryDialog' | |||||
export default { | |||||
name: "app-list", | |||||
data() { | |||||
return { | |||||
trajectoryVisible:false, | |||||
visible: false, | |||||
dataList: [], | |||||
currentPage: 1, | |||||
count: 0, | |||||
driverId:'', | |||||
pageSize: parseInt((document.body.clientHeight - 250 - 43) / 43), | |||||
tableHeight: document.body.clientHeight - 250, | |||||
drawerWidth: (document.body.clientWidth - 190) + 'px', | |||||
direction: 'rtl', | |||||
tableLoading: false, | |||||
searchParam: { | |||||
area: "", | |||||
driverName: "", | |||||
time: "" | |||||
} | |||||
}; | |||||
}, | |||||
computed: { | |||||
...mapGetters(["btnRule"]) | |||||
}, | |||||
components: {driverAreaSelect,trajectoryDialog}, | |||||
created() { | |||||
}, | |||||
mounted() { | |||||
this.tableLoading = true; | |||||
this.getAllList(); | |||||
}, | |||||
methods: { | |||||
handleRrajectoryClose(){ | |||||
this.trajectoryVisible=false | |||||
}, | |||||
pointClick(row) { | |||||
this.driverId=row.id | |||||
this.trajectoryVisible=true | |||||
}, | |||||
indexMethod(index) { | |||||
return index + 1 + (this.currentPage - 1) * this.pageSize; | |||||
}, | |||||
initSearchParam() { | |||||
this.searchParam = { | |||||
area: "", | |||||
driverName: "", | |||||
time: "" | |||||
}; | |||||
}, | |||||
search() { | |||||
this.currentPage = 1; | |||||
this.tableLoading = true; | |||||
this.$refs.table.bodyWrapper.scrollTop = 0; | |||||
this.getAllList(); | |||||
}, | |||||
handleCurrentChange(val) { | |||||
this.tableLoading = true; | |||||
this.currentPage = val; | |||||
this.$refs.table.bodyWrapper.scrollTop = 0; | |||||
this.getAllList(); | |||||
}, | |||||
getAllList() { | |||||
let searchParam = JSON.parse(JSON.stringify(this.searchParam)); | |||||
if (searchParam.time && searchParam.time.length > 0) { | |||||
searchParam.beginTime = searchParam.time[0] | |||||
searchParam.endTime = searchParam.time[1] | |||||
} else { | |||||
searchParam.beginTime = '' | |||||
searchParam.endTime = '' | |||||
} | |||||
searchParam.page = this.currentPage; | |||||
searchParam.pageSize = this.pageSize; | |||||
api.getAllList(searchParam).then(res => { | |||||
this.dataList = res.data.records ? res.data.records : []; | |||||
this.count = res.data.total; | |||||
this.tableLoading = false; | |||||
}).catch(e => { | |||||
this.dataList = []; | |||||
this.tableLoading = false; | |||||
}); | |||||
} | |||||
} | |||||
}; | |||||
</script> | |||||
<style lang="less"> | |||||
.app-list { | |||||
height: fit-content; | |||||
background-color: #fff; | |||||
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); | |||||
padding: 15px; | |||||
} | |||||
</style> |
searchParam.page = this.currentPage | searchParam.page = this.currentPage | ||||
searchParam.pageSize = this.pageSize | searchParam.pageSize = this.pageSize | ||||
inspectApi.getInspectDriverList(searchParam).then(res => { | inspectApi.getInspectDriverList(searchParam).then(res => { | ||||
console.log(res.data) | |||||
this.dataList = res.data.records ? res.data.records : [] | this.dataList = res.data.records ? res.data.records : [] | ||||
this.count = res.data.total | this.count = res.data.total | ||||
this.tableLoading = false | this.tableLoading = false |
}, | }, | ||||
watch:{ | watch:{ | ||||
askChild(){ | askChild(){ | ||||
console.log(this.askChild) | |||||
} | } | ||||
}, | }, | ||||
components:{dVideo}, | components:{dVideo}, |
count += item.questionNum | count += item.questionNum | ||||
}) | }) | ||||
this.count = count | this.count = count | ||||
console.log(inspectQuestionCategoryList) | |||||
} | } | ||||
} | } | ||||
}, | }, |
let ruleForm=JSON.parse(JSON.stringify(this.ruleForm)) | let ruleForm=JSON.parse(JSON.stringify(this.ruleForm)) | ||||
ruleForm.driverArea = '' | ruleForm.driverArea = '' | ||||
ruleForm.driverId = this.driverId | ruleForm.driverId = this.driverId | ||||
console.log(this.driverDataList.find(item=>item.id== ruleForm.driverId)) | |||||
this.ruleForm=Object.assign({},ruleForm) | this.ruleForm=Object.assign({},ruleForm) | ||||
console.log(this.ruleForm) | |||||
this.search() | this.search() | ||||
}, | }, | ||||
driverArea(){ | driverArea(){ | ||||
delete ruleForm.date | delete ruleForm.date | ||||
api.getQuestionList(ruleForm).then(res => { | api.getQuestionList(ruleForm).then(res => { | ||||
this.dataList=res.data?res.data:[] | this.dataList=res.data?res.data:[] | ||||
console.log(this.dataList) | |||||
me.$emit('problemSearch', this.dataList,this.ruleForm.driverArea,this.ruleForm.driverId) | me.$emit('problemSearch', this.dataList,this.ruleForm.driverArea,this.ruleForm.driverId) | ||||
me.searchLoading = false | me.searchLoading = false | ||||
}).catch(e => { | }).catch(e => { |
driverIdList: [] | driverIdList: [] | ||||
} | } | ||||
this.time = this.defaTime | this.time = this.defaTime | ||||
console.log(this.ruleForm) | |||||
this.$emit('qualityClear') | this.$emit('qualityClear') | ||||
if (this.activeType == 1) { | if (this.activeType == 1) { | ||||
this.searchOne() | this.searchOne() |
<template> | |||||
<el-submenu v-if="menuList.filter(item=>item.pid==menu.id).length>0" :key="menu.id" :index="path"> | |||||
<template slot="title"> | |||||
<svg-icon v-if="menu.icon" :iconClass='menu.icon' className='icon'></svg-icon> | |||||
<span>{{menu.title}}</span> | |||||
</template> | |||||
<filter-menus :menuList="menuList" :key="index" v-for="(child,index) in menuList.filter(item=>item.pid==menu.id)" :menu="child" :path="path+child.name"></filter-menus> | |||||
</el-submenu> | |||||
<el-menu-item v-else :key="menu.id" :index="path"> | |||||
<template slot="title"> | |||||
<svg-icon v-if="menu.icon" :iconClass='menu.icon' className='icon'></svg-icon> | |||||
<span>{{menu.title}}</span> | |||||
</template> | |||||
</el-menu-item> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
name: "filterMenus", | |||||
props: { | |||||
path: { | |||||
type:String, | |||||
default() { | |||||
return ''; | |||||
} | |||||
}, | |||||
menu: { | |||||
type:Object, | |||||
default() { | |||||
return {}; | |||||
} | |||||
}, | |||||
menuList:{ | |||||
type:Array, | |||||
default() { | |||||
return []; | |||||
} | |||||
}, | |||||
}, | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
computed: { | |||||
// 是否还有子列表需要渲染,作为v-if的判断条件 | |||||
isFolder() { | |||||
return this.menu.childTree && this.menu.childTree.length | |||||
} | |||||
}, | |||||
methods: {} | |||||
} | |||||
</script> | |||||
<style scoped> | |||||
</style> |
<svg-icon iconClass='home' className='icon'></svg-icon> | <svg-icon iconClass='home' className='icon'></svg-icon> | ||||
<span>首页</span></el-menu-item> | <span>首页</span></el-menu-item> | ||||
</el-tooltip> | </el-tooltip> | ||||
<el-menu-item @click="command"> | |||||
<svg-icon iconClass='eye-open' className='icon'></svg-icon> | |||||
<span>指挥大屏</span> | |||||
</el-menu-item> | |||||
<el-submenu :key="index" v-for="(item,index) in filterMenuList" :index="item.name"> | |||||
<template slot="title"> | |||||
<svg-icon :iconClass='item.icon' className='icon'></svg-icon> | |||||
<span>{{item.title}}</span> | |||||
</template> | |||||
<el-menu-item v-if="item.children" :key="index" v-for="(child,index) in item.children" :index="child.name"> | |||||
<template slot="title"> | |||||
<svg-icon v-if="child.icon" :iconClass='child.icon' className='icon'></svg-icon> | |||||
<span>{{child.title}}</span> | |||||
</template> | |||||
</el-menu-item> | |||||
</el-submenu> | |||||
<filterMenu :menuList="filterMenuList" :key="index" | |||||
v-for="(menu,index) in filterMenuList.filter(item=>item.pid==0)" :menu="menu" :path="menu.name"> | |||||
</filterMenu> | |||||
</el-menu> | </el-menu> | ||||
<div class="box-right"> | <div class="box-right"> | ||||
<div class="box-right-head"> | <div class="box-right-head"> | ||||
<script> | <script> | ||||
import store from '../../vuex' | import store from '../../vuex' | ||||
import filterMenu from './filterMenu' | |||||
import userApi from '@/api/user/user' | import userApi from '@/api/user/user' | ||||
export default { | export default { | ||||
} | } | ||||
}, | }, | ||||
watch: {}, | watch: {}, | ||||
components: {}, | |||||
components: {filterMenu}, | |||||
methods: { | methods: { | ||||
command(){ | command(){ | ||||
window.open('/command') | window.open('/command') | ||||
let filterMenuList = [] | let filterMenuList = [] | ||||
let roles = JSON.parse(JSON.stringify(store.state.user.roles)) | let roles = JSON.parse(JSON.stringify(store.state.user.roles)) | ||||
if (roles.length > 0) { | if (roles.length > 0) { | ||||
let rootMenu = roles.filter(item => item.pid === 0 && item.type == 2 && item.status == 1) | |||||
let rootMenu = roles.filter(item =>item.type == 2 && item.status == 1) | |||||
rootMenu.sort(function (a, b) { | rootMenu.sort(function (a, b) { | ||||
return a.sort - b.sort | return a.sort - b.sort | ||||
}) | }) | ||||
if (rootMenu.length > 0) { | |||||
rootMenu.map(item => { | |||||
let child = item | |||||
this.childMenu(item, roles, child, item.name) | |||||
filterMenuList.push(child) | |||||
}) | |||||
} | |||||
filterMenuList=Object.assign([],rootMenu) | |||||
} | } | ||||
this.filterMenuList = filterMenuList | this.filterMenuList = filterMenuList | ||||
}, | }, | ||||
childMenu(item, roles, child, name) { | |||||
let list = roles.filter(role => role.pid === item.id && role.type == 2 && role.status == 1) | |||||
if (list.length > 0) { | |||||
list.sort(function (a, b) { | |||||
return a.sort - b.sort | |||||
}) | |||||
child.children = list | |||||
child.children.map(cc => { | |||||
cc.name = name + cc.name | |||||
}) | |||||
} | |||||
}, | |||||
} | } | ||||
} | } | ||||
</script> | </script> |
} | } | ||||
total+=obj.value | total+=obj.value | ||||
}); | }); | ||||
console.log(total) | |||||
// 自定义 other 的图形,增加两条线 | // 自定义 other 的图形,增加两条线 | ||||
G2.Shape.registerShape("interval", "sliceShape", { | G2.Shape.registerShape("interval", "sliceShape", { | ||||
draw(cfg, container) { | draw(cfg, container) { |
} | } | ||||
} | } | ||||
this.questionDriverList = questionDriverList ? questionDriverList.reverse() : [] | this.questionDriverList = questionDriverList ? questionDriverList.reverse() : [] | ||||
console.log(questionDriverList) | |||||
}).catch(e => { | }).catch(e => { | ||||
this.inspectQuestionInfo = {} | this.inspectQuestionInfo = {} | ||||
this.questionDriverAreaList = [] | this.questionDriverAreaList = [] |
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
console.log(this.roles) | |||||
}, | }, | ||||
mounted() { | mounted() { | ||||
this.getDetail(); | this.getDetail(); |
data.driverArea=[] | data.driverArea=[] | ||||
} | } | ||||
this.infoForm = Object.assign({},data) | this.infoForm = Object.assign({},data) | ||||
console.log(this.infoForm) | |||||
this.tableLoading=false | this.tableLoading=false | ||||
this.addDialogVisible = true | this.addDialogVisible = true | ||||
}).catch(e => { | }).catch(e => { | ||||
}, | }, | ||||
// 关闭窗体 | // 关闭窗体 | ||||
closeWin() { | closeWin() { | ||||
console.log("关闭") | |||||
// 调用初始化表单方法 | // 调用初始化表单方法 | ||||
this.initRuleForm() | this.initRuleForm() | ||||
// 设置弹窗不可见 | // 设置弹窗不可见 |
this.agencyList = data | this.agencyList = data | ||||
this.filterAgencyList=data | this.filterAgencyList=data | ||||
this.tableLoading = false | this.tableLoading = false | ||||
console.log(this.agencyList) | |||||
}).catch(e => { | }).catch(e => { | ||||
this.agencyList = [] | this.agencyList = [] | ||||
this.filterAgencyList=[] | this.filterAgencyList=[] | ||||
}, | }, | ||||
// 关闭窗体 | // 关闭窗体 | ||||
closeWin() { | closeWin() { | ||||
console.log("关闭") | |||||
// 调用初始化表单方法 | // 调用初始化表单方法 | ||||
this.initInfoForm() | this.initInfoForm() | ||||
// 设置弹窗不可见 | // 设置弹窗不可见 |
api | api | ||||
.getDetail(this.id) | .getDetail(this.id) | ||||
.then(res => { | .then(res => { | ||||
console.log(res.data.status) | |||||
if (res.data.status == 3) { | if (res.data.status == 3) { | ||||
res.data.status = 4; | res.data.status = 4; | ||||
} | } | ||||
this.childData = res.data; | this.childData = res.data; | ||||
console.log(this.childData) | |||||
this.initMap(); | this.initMap(); | ||||
}) | }) | ||||
.catch(err => { | .catch(err => { |
version "3.1.0" | version "3.1.0" | ||||
resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" | resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" | ||||
cacache@^10.0.4: | |||||
cacache@^10.0.1, cacache@^10.0.4: | |||||
version "10.0.4" | version "10.0.4" | ||||
resolved "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" | resolved "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" | ||||
dependencies: | dependencies: | ||||
dependencies: | dependencies: | ||||
mime-db ">= 1.43.0 < 2" | mime-db ">= 1.43.0 < 2" | ||||
compression-webpack-plugin@1.1.12: | |||||
version "1.1.12" | |||||
resolved "https://registry.npm.taobao.org/compression-webpack-plugin/download/compression-webpack-plugin-1.1.12.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcompression-webpack-plugin%2Fdownload%2Fcompression-webpack-plugin-1.1.12.tgz#becd2aec620ace96bb3fe9a42a55cf48acc8b4d4" | |||||
dependencies: | |||||
cacache "^10.0.1" | |||||
find-cache-dir "^1.0.0" | |||||
neo-async "^2.5.0" | |||||
serialize-javascript "^1.4.0" | |||||
webpack-sources "^1.0.1" | |||||
compression@^1.7.3: | compression@^1.7.3: | ||||
version "1.7.4" | version "1.7.4" | ||||
resolved "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" | resolved "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" |