| | |
| | | }, |
| | | |
| | | getPointTrendAnalysisData: (params) => { |
| | | return http.get('/sccg/trendAnalysis/pointInfo', params); |
| | | return http.get('/sccg/trendAnalysis/queryPointInfoByTime', params); |
| | | } |
| | | |
| | | } |
| | |
| | | :key="item.id" |
| | | > |
| | | <span>报警图片</span> |
| | | <img :src="item" /> |
| | | <!-- <img :src="item" /> --> |
| | | <el-image style="width:240px" :src="item" :preview-src-list="[item]"> </el-image> |
| | | <span v-if="index === 0" |
| | | >报警时间:{{ currentEvent.alarmTime }}</span |
| | | > |
| | | </div> |
| | | <div class="img-item" v-for="item in imageList" :key="item.id"> |
| | | <img :src="item" /> |
| | | <!-- <img :src="item" /> --> |
| | | <el-image style="width:240px" :src="item" :preview-src-list="[item]"> </el-image> |
| | | </div> |
| | | <el-form |
| | | ref="currentEvent" |
| | |
| | | .catch((err) => this.$message.error(err)); |
| | | }, |
| | | loadData() { |
| | | debugger; |
| | | this.point = { |
| | | x: this.currentEvent.longitude, |
| | | y: this.currentEvent.latitude, |
| | |
| | | this.imageList = this.currentEvent.picData |
| | | .split(",") |
| | | .map((item) => `${FILE_ORIGINAL_URL}sccg/API/img?fileUrl=${item}`); |
| | | // this.imageList =['https://www.shutterstock.com/image-photo/grandmother-holding-grandson-her-lap-600w-1954531321.jpg','https://www.shutterstock.com/image-photo/grandmother-holding-grandson-her-lap-600w-1954531321.jpg'] |
| | | } |
| | | if (this.currentEvent?.alarmTime || this.currentEvent?.currentAlarmTime) { |
| | | const { alarmTime, currentAlarmTime } = this.currentEvent; |
| | |
| | | :visible.sync="echartsDialogVisible" |
| | | :before-close="handleClose" |
| | | > |
| | | <div style="display: flex"> |
| | | <div style="height: 500px; width: 500px" id="echarts"></div> |
| | | <div style="height: 500px; width: 500px" id="typeEcharts"></div> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | |
| | | return { |
| | | echartsDateList: [], |
| | | echartsDataList: null, |
| | | echartsTypeList: [], |
| | | echartsTypeDataList: null, |
| | | echartsDialogVisible: false, |
| | | search: { |
| | | type: null, |
| | |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | let typeEcharts = echarts.init(document.getElementById("typeEcharts")); |
| | | |
| | | let option = { |
| | | series: this.echartsTypeDataList.map(function (data, idx) { |
| | | return { |
| | | type: "pie", |
| | | radius: [20, 60], |
| | | left: "center", |
| | | width: 400, |
| | | itemStyle: { |
| | | borderColor: "#fff", |
| | | borderWidth: 1, |
| | | }, |
| | | label: { |
| | | alignTo: "edge", |
| | | formatter: "{name|{b}}\n{count|{c} 件}", |
| | | minMargin: 5, |
| | | edgeDistance: 10, |
| | | lineHeight: 15, |
| | | rich: { |
| | | time: { |
| | | fontSize: 10, |
| | | color: "#999", |
| | | }, |
| | | }, |
| | | }, |
| | | labelLine: { |
| | | length: 5, |
| | | length2: 0, |
| | | maxSurfaceAngle: 80, |
| | | }, |
| | | data: data, |
| | | }; |
| | | }), |
| | | }; |
| | | let data = []; |
| | | this.echartsTypeDataList.forEach((item) => { |
| | | data.push({ |
| | | name: item.name, |
| | | value: item.count, |
| | | }); |
| | | }); |
| | | |
| | | typeEcharts.setOption({ |
| | | series: [ |
| | | { |
| | | type: "pie", |
| | | radius: [20, 60], |
| | | left: "center", |
| | | width: 400, |
| | | itemStyle: { |
| | | borderColor: "#fff", |
| | | borderWidth: 1, |
| | | }, |
| | | label: { |
| | | alignTo: "edge", |
| | | formatter: "{name|{b}}\n{value|{c} 件}", |
| | | minMargin: 5, |
| | | edgeDistance: 5, |
| | | lineHeight: 15, |
| | | rich: { |
| | | time: { |
| | | fontSize: 10, |
| | | color: "#999", |
| | | }, |
| | | }, |
| | | }, |
| | | labelLine: { |
| | | length: 15, |
| | | length2: 0, |
| | | maxSurfaceAngle: 80, |
| | | }, |
| | | data: data, |
| | | // labelLayout: function (params) { |
| | | // const isLeft = params.labelRect.x < typeEcharts.getWidth() / 2; |
| | | // const points = params.labelLinePoints; |
| | | // // Update the end point. |
| | | // points[2][0] = isLeft |
| | | // ? params.labelRect.x |
| | | // : params.labelRect.x + params.labelRect.width; |
| | | // return { |
| | | // labelLinePoints: points, |
| | | // }; |
| | | // }, |
| | | // data: this.echartsTypeDataList, |
| | | }, |
| | | ], |
| | | }); |
| | | }, |
| | | async searchList() { |
| | | const [startTime, endTime] = this.search.timeRange ?? [null, null]; |
| | |
| | | }; |
| | | this.zoom = 18; |
| | | this.mark = { title: data.address }; |
| | | |
| | | const [startTime, endTime] = this.search.timeRange ?? [null, null]; |
| | | basecase |
| | | .getPointTrendAnalysisData({ |
| | | longitude: data.longitude, |
| | | latitude: data.latitude, |
| | | pointId: data.id, |
| | | startTime: startTime, |
| | | endTime: endTime, |
| | | }) |
| | | .then((res) => { |
| | | // const countList = res.map(item => +item.count); |
| | | this.echartsDataList = []; |
| | | this.echartsDateList = []; |
| | | res.forEach((item) => { |
| | | res.timeList.forEach((item) => { |
| | | this.echartsDataList.push(item.count); |
| | | this.echartsDateList.push(item.dateTime); |
| | | }); |
| | | |
| | | this.echartsTypeDataList = res.typeList; |
| | | // this.echartsTypeDataList = []; |
| | | // this.echartsTypeList = []; |
| | | // res.typeList.forEach((item) => { |
| | | // this.echartsTypeDataList.push(item.count); |
| | | // this.echartsTypeList.push(item.name); |
| | | // }); |
| | | // this.renderEchart(countList); |
| | | }) |
| | | .catch((err) => this.$message.error(err)); |
| | |
| | | watch: { |
| | | $route(){ |
| | | this.handleSelect(this.$route.fullPath) |
| | | console.log(this.$route) |
| | | } |
| | | }, |
| | | methods: { |
| | |
| | | <template> |
| | | <div class="userList"> |
| | | <header> |
| | | <MyHeader ref="myHeader" |
| | | <MyHeader |
| | | ref="myHeader" |
| | | @dialogCreatepro="dialogCreatepro" |
| | | @getUserList="getUserList" |
| | | ></MyHeader> |
| | |
| | | :header-cell-style="{ |
| | | background: '#F5F5F5', |
| | | 'font-weight': '650', |
| | | 'line-height': '45px' |
| | | 'line-height': '45px', |
| | | }" |
| | | :data="tableData" |
| | | style="width: 100%" |
| | | :row-class-name="tableRowClassName" |
| | | @selection-change="tableChange" |
| | | > |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="code" |
| | | label="事件编号" |
| | | min-width="18" |
| | | > |
| | | <el-table-column label="序号" type="index" min-width="10"> </el-table-column> |
| | | <el-table-column prop="code" label="事件编号" min-width="18"> |
| | | <template slot-scope="scope"> |
| | | <el-link @click="JumpView(scope.row)">{{ |
| | | scope.row.code |
| | | }}</el-link> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="eventSource" |
| | | label="问题来源" |
| | | min-width="8" |
| | | > |
| | | <el-table-column prop="eventSource" label="问题来源" min-width="8"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ |
| | | scope.row.eventSource === 2 |
| | | ? '网格巡查' |
| | | : '视频巡查' |
| | | scope.row.eventSource === 2 ? "网格巡查" : "视频巡查" |
| | | }}</span> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-table-column> |
| | | <el-table-column |
| | | :prop="mystatus === 1 ? 'site' : ''" |
| | | :label=" |
| | | mystatus === 1 ? '报警点位' : '违法建筑长、宽、高' |
| | | " |
| | | :label="mystatus === 1 ? '报警点位' : '违法建筑长、宽、高'" |
| | | :min-width="mystatus === 1 ? '10' : '20'" |
| | | show-overflow-tooltip |
| | | > |
| | |
| | | <div v-if="mystatus === 2"> |
| | | <span>{{ |
| | | scope.row.buildingLength + |
| | | '米' + |
| | | '、' + |
| | | "米" + |
| | | "、" + |
| | | scope.row.buildingWidth + |
| | | '米' + |
| | | '、' + |
| | | "米" + |
| | | "、" + |
| | | scope.row.buildingHigh + |
| | | '米' |
| | | "米" |
| | | }}</span> |
| | | </div> |
| | | <div v-else>{{ scope.row.site }}</div> |
| | |
| | | min-width="12" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="operation" |
| | | label="操作" |
| | | min-width="20" |
| | | > |
| | | <el-table-column prop="operation" label="操作" min-width="20"> |
| | | <template slot-scope="scope"> |
| | | <div class="operation" v-if="statusArr[0] === 0"> |
| | | <span @click="handleFind(scope.row)">上报</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleDispatch(scope.row)" |
| | | >调度</span |
| | | > |
| | | <span @click="handleDispatch(scope.row)">调度</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleLearn(scope.row)" |
| | | >在学习</span |
| | | > |
| | | <span @click="handleLearn(scope.row)">在学习</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleNotDeal(scope.row)" |
| | | >暂不处理</span |
| | | > |
| | | <span @click="handleNotDeal(scope.row)">暂不处理</span> |
| | | </div> |
| | | <div class="operation" v-else> |
| | | <span @click="JumpView(scope.row)">查看</span> |
| | |
| | | width="60%" |
| | | title="基础信息(人工)" |
| | | v-if="dialogView" |
| | | :before-close="handleClose" |
| | | :before-close="handleClose2" |
| | | > |
| | | <MyDetail :info="info" v-if="mystatus === 1"></MyDetail> |
| | | <MyIllDetail :info="info" v-else></MyIllDetail> |
| | |
| | | import helper from "@/utils/mydate"; |
| | | import { RESOURCE_OPTIONS } from "@/utils/helper"; |
| | | import basecase from "@/api/operate/basecase"; |
| | | import MyHeader from "@/components/seachHeader/index" |
| | | import MyHeader from "@/components/seachHeader/index"; |
| | | export default { |
| | | components: { |
| | | createUser, |
| | |
| | | MyDetail, |
| | | MyDispatch, |
| | | MyIllDetail, |
| | | MyHeader |
| | | MyHeader, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | }); |
| | | this.getUserList(undefined); |
| | | }, |
| | | mounted() { |
| | | }, |
| | | mounted() {}, |
| | | methods: { |
| | | dialogCreatepro() { |
| | | console.log('-------------------') |
| | | this.dialogCreate = true |
| | | this.dialogCreate = true; |
| | | }, |
| | | // 调度 |
| | | handleDispatch(data) { |
| | |
| | | // 获取用户列表 |
| | | getUserList(seachData) { |
| | | // console.log(seachData.seachData.resource) |
| | | let params |
| | | let params; |
| | | if (seachData) { |
| | | params = { |
| | | current: this.currentPage, |
| | | state: this.statusArr[0] ?? null, |
| | | size: this.pageSize, |
| | | resource: seachData.seachData.resource == undefined ? null : seachData.seachData.resource, |
| | | region: seachData.seachData.region == undefined ? null : seachData.seachData.region, |
| | | resource: |
| | | seachData.seachData.resource == undefined |
| | | ? null |
| | | : seachData.seachData.resource, |
| | | region: |
| | | seachData.seachData.region == undefined |
| | | ? null |
| | | : seachData.seachData.region, |
| | | type: this.statusArr[1] ?? null, |
| | | code: seachData.seachData.code == undefined ? null : seachData.seachData.code, |
| | | categoryBig: seachData.seachData.categoryBig == undefined ? null : seachData.seachData.categoryBig, |
| | | categorySmall: seachData.seachData.categorySmall == undefined ? null : seachData.seachData.categorySmall, |
| | | site: seachData.seachData.site == undefined ? null : seachData.seachData.site, |
| | | street: seachData.seachData.street == undefined ? null : seachData.seachData.street, |
| | | |
| | | code: |
| | | seachData.seachData.code == undefined |
| | | ? null |
| | | : seachData.seachData.code, |
| | | categoryBig: |
| | | seachData.seachData.categoryBig == undefined |
| | | ? null |
| | | : seachData.seachData.categoryBig, |
| | | categorySmall: |
| | | seachData.seachData.categorySmall == undefined |
| | | ? null |
| | | : seachData.seachData.categorySmall, |
| | | site: |
| | | seachData.seachData.site == undefined |
| | | ? null |
| | | : seachData.seachData.site, |
| | | street: |
| | | seachData.seachData.street == undefined |
| | | ? null |
| | | : seachData.seachData.street, |
| | | }; |
| | | if (seachData.seachData.alarmTime) { |
| | | params.startTime = seachData.seachData.alarmTime[0] |
| | | params.endTime = seachData.seachData.alarmTime[1] |
| | | params.startTime = seachData.seachData.alarmTime[0]; |
| | | params.endTime = seachData.seachData.alarmTime[1]; |
| | | } |
| | | } else { |
| | | |
| | | params = { |
| | | current: this.currentPage, |
| | | state: this.statusArr[0] ?? null, |
| | |
| | | this.dialogView = flag; |
| | | this.dialogDispatch = flag; |
| | | }, |
| | | handleClose2(done) { |
| | | this.dialogCreate = false; |
| | | this.dialogNewAdd = false; |
| | | this.dialogDispatch = false; |
| | | this.dialogView = false; |
| | | }, |
| | | handleClose(done) { |
| | | this.$confirm("确认关闭?") |
| | | .then((_) => { |
| | |
| | | this.statusArr[0] = this.tagList[idx].value; |
| | | this.statusArr[1] = 1; |
| | | this.getUserList(); |
| | | this.$refs.myHeader.seachData = {} |
| | | this.$refs.myHeader.seachData = {}; |
| | | }, |
| | | // 更改违规/违建 |
| | | changeTypeChecked(idx) { |
| | |
| | | this.mystatus = idx + 1; |
| | | this.statusArr[1] = this.typeList[idx].value; |
| | | this.getUserList(); |
| | | this.$refs.myHeader.seachData = {} |
| | | this.$refs.myHeader.seachData = {}; |
| | | }, |
| | | async JumpView(data) { |
| | | await this.getEventInfo(data.code); |
| | |
| | | min-width="10" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column prop="storeScore" label="店铺积分" min-width="10"> |
| | | </el-table-column> |
| | | <!-- <el-table-column prop="storeScore" label="店铺积分" min-width="10"> |
| | | </el-table-column> --> |
| | | <el-table-column prop="videoPoint" label="关联摄像机" min-width="10"> |
| | | <template v-if="scope.row.videoId" slot-scope="scope"> |
| | | <span>{{ scope.row.videoPoint.name }}</span> |
| | |
| | | type="primary" |
| | | class="btn submit" |
| | | @click.native.prevent="onSubmit" |
| | | >提交</el-button> |
| | | >提交</el-button |
| | | > |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | |
| | | this.imagedata = deepClone(this.originalData); |
| | | } |
| | | if (this.dialogType !== "create") { |
| | | this.imageList = this.imagedata.url.split(","); |
| | | let _imageList = []; |
| | | debugger; |
| | | let imageData = this.imagedata.url.split(","); |
| | | imageData.forEach((url) => { |
| | | _imageList.push(`${FILE_ORIGINAL_URL}sccg/API/img?fileUrl=${url}`); |
| | | }); |
| | | this.imageList = _imageList; |
| | | } |
| | | this.isDisabled = this.dialogType === "view"; |
| | | }, |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="limitTime" label="剩余时间" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="stepName" label="问题状态" min-width="10"> |
| | | <el-table-column prop="stepName" label="操作" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <div class="operation"> |
| | | <span @click="handleOperation(scope.row)">{{ |
| | |
| | | url: `sccg/base_case/baseCaseDetail/${row.code}`, |
| | | }).then((res) => { |
| | | this.info = res.data; |
| | | this.vioData = res.data.currentSitVo; |
| | | if (res.data) this.vioData = res.data.currentSitVo; |
| | | this.dialogUpdate = true; |
| | | }); |
| | | }, |