Commit 437fc71d by 李乾广

热力数据重跑,聚类结果批量获取图片特征

1 parent 952664e7
...@@ -17,6 +17,10 @@ const menuRoute = [ ...@@ -17,6 +17,10 @@ const menuRoute = [
path: 'batchAnalysisRerun', path: 'batchAnalysisRerun',
component: () => import("@/views/batchAnalysisRerun/batchAnalysisRerun.vue"), component: () => import("@/views/batchAnalysisRerun/batchAnalysisRerun.vue"),
}, },
{
path: 'hotRerun',
component: () => import("@/views/hotRerun/hotRerun.vue"),
},
{ {
path: 'DataRepair', path: 'DataRepair',
component: () => import("@/views/DataRepair/DataRepair.vue"), component: () => import("@/views/DataRepair/DataRepair.vue"),
...@@ -123,6 +127,8 @@ const router = createRouter( ...@@ -123,6 +127,8 @@ const router = createRouter(
) )
// 全局路由守卫 // 全局路由守卫
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
// Cookies.set('atoken','c3ac0dd5-571d-4c4b-aa51-437b691ac013')
// Cookies.set('userrole_type','c3ac0dd5-571d-4c4b-2341-437b691ac013')
// 加密获取userType // 加密获取userType
let tokenArr = Cookies.get("atoken").split('') let tokenArr = Cookies.get("atoken").split('')
let tokenArr1 = Cookies.get("atoken").split('-') let tokenArr1 = Cookies.get("atoken").split('-')
......
...@@ -121,6 +121,11 @@ ...@@ -121,6 +121,11 @@
<span style="padding: 0 5px">接待批次重跑</span> <span style="padding: 0 5px">接待批次重跑</span>
</div> </div>
</a-menu-item> </a-menu-item>
<a-menu-item :key="'/Main/hotRerun'">
<div class="flex-vertical-center">
<span style="padding: 0 5px">热力数据重跑</span>
</div>
</a-menu-item>
<a-menu-item :key="'/Main/DataRepair'"> <a-menu-item :key="'/Main/DataRepair'">
<div class="flex-vertical-center"> <div class="flex-vertical-center">
<!-- <img :src="require('./Icons/2.svg')" style="height: auto;width:20px"/> --> <!-- <img :src="require('./Icons/2.svg')" style="height: auto;width:20px"/> -->
......
...@@ -180,6 +180,9 @@ ...@@ -180,6 +180,9 @@
<a-form-item style="padding: 5px 0"> <a-form-item style="padding: 5px 0">
<a-button type="primary" @click="updatePersonInfoByGroup">类型修正</a-button> <a-button type="primary" @click="updatePersonInfoByGroup">类型修正</a-button>
</a-form-item> </a-form-item>
<!-- <a-form-item style="padding: 5px 0">
<a-button type="primary" @click="addOneCaptureData">添加抓拍记录</a-button>
</a-form-item> -->
<a-form-item style="padding: 0px 5px;border: 1px solid #ccc;border-radius: 6px;"> <a-form-item style="padding: 0px 5px;border: 1px solid #ccc;border-radius: 6px;">
<a-button type="primary" @click="handleMutipleOperation">{{mutipleOperationText}}</a-button> <a-button type="primary" @click="handleMutipleOperation">{{mutipleOperationText}}</a-button>
<i class="el-icon-arrow-right" style="margin: 0px 10px;"></i> <i class="el-icon-arrow-right" style="margin: 0px 10px;"></i>
...@@ -227,6 +230,7 @@ ...@@ -227,6 +230,7 @@
<!-- <span class="expandWord" @click='updatePersonInfoByGroup(person)'>类型修正</span> --> <!-- <span class="expandWord" @click='updatePersonInfoByGroup(person)'>类型修正</span> -->
<span class="expandWord" @click='uploadGroupData(person)'>上传数据</span> <span class="expandWord" @click='uploadGroupData(person)'>上传数据</span>
<span class="expandWord" @click='searchPersonInfoByGroup(person)'>搜索</span> <span class="expandWord" @click='searchPersonInfoByGroup(person)'>搜索</span>
<!-- <span class="expandWord" @click='searchPersonInfoByGroup(person)'>添加</span> -->
<el-checkbox class="checkBox" v-model="person.checked" @change='checkChange(person)'></el-checkbox> <el-checkbox class="checkBox" v-model="person.checked" @change='checkChange(person)'></el-checkbox>
人id:{{ ' ' + person.person_unid }} 人id:{{ ' ' + person.person_unid }}
...@@ -239,7 +243,7 @@ ...@@ -239,7 +243,7 @@
<div <div
style="margin: 0 5px" style="margin: 0 5px"
:class="[(currentItemId==item.id)?'actived':'', isSelectedPerson(item.id)?'actived-red':'']" :class="[(currentItemId==item.id)?'actived':'', isSelectedPerson(item.id)?'actived-red':'']"
@click="handleClick(item, $event)" @click="handleClick(item, $event,person.perrsonList)"
> >
<div style=""> <div style="">
<span @click="downloadTrajectoryFile(item.track_url)" <span @click="downloadTrajectoryFile(item.track_url)"
...@@ -1025,12 +1029,12 @@ export default { ...@@ -1025,12 +1029,12 @@ export default {
) )
} }
// 查询小平台单个图片 // 查询小平台单个图片
const getDataSourcesImg = (unid) => { const getDataSourcesImg = (unids) => {
console.log('getDataSourcesImg', unid) console.log('getDataSourcesImg', unids)
clusterResultApi.operateGetPics({unids:[unid]}).then((r) => {}) clusterResultApi.operateGetPics({unids:unids}).then((r) => {})
setTimeout(()=>{ setTimeout(()=>{
confirmSearch() confirmSearch()
},2000) },3000)
} }
// 添加人员库 // 添加人员库
const personnelPoolRef = ref(); const personnelPoolRef = ref();
...@@ -1111,13 +1115,25 @@ export default { ...@@ -1111,13 +1115,25 @@ export default {
const downloadTrajectoryFile = function(url){ const downloadTrajectoryFile = function(url){
window.open(url) window.open(url)
} }
const handleClick = function(data, event){ const handleClick = function(data, event,perrsonList){
console.log('handleClick', data, event) // console.log('handleClick', data, event,perrsonList)
console.log('dataSources',dataSources.value,data) // console.log('dataSources',dataSources.value,data)
if(dataSources.value==1&&!data.picture_url){ if(dataSources.value==1){
// 小平台且没有图 // 小平台遍历该聚类,
getDataSourcesImg(data.unid) let unids = []
for(let i=0;i<perrsonList.length;i++){
if(!perrsonList[i].picture_url){
unids.push(perrsonList[i].unid)
}
}
if(unids.length>0){
// 小平台且没有图
getDataSourcesImg(unids)
}
} }
// if(dataSources.value==1&&!data.picture_url){
// getDataSourcesImg([data.unid])
// }
// 多选。只有设置为多选状态的组,才可以选中 // 多选。只有设置为多选状态的组,才可以选中
if (isMultipleOperation.value) { if (isMultipleOperation.value) {
// 如果已选中,则取消。若未选中,则增加 // 如果已选中,则取消。若未选中,则增加
......
<template>
<div v-loading="submitLoading">
<a-form class="data-return-form" :model="queryForm" layout="inline" :label-col="{ style: { width: '70px' } }">
<a-form-item label="集团:">
<a-select v-model:value="queryForm.account_id" style="width: 280px" :options="accountList" @change="onAccountChange" optionFilterProp="label" show-search>
</a-select>
</a-form-item>
<a-form-item label="广场:">
<a-select v-model:value="queryForm.plaza_id" style="width: 280px" :options="plazaList" optionFilterProp="label" show-search>
</a-select>
</a-form-item>
<a-form-item label="开始日期:">
<a-date-picker v-model:value="queryForm.startDate" />
</a-form-item>
<a-form-item label="结束日期:">
<a-date-picker v-model:value="queryForm.endDate" />
</a-form-item>
<a-form-item>
<a-button type="primary" @click="confirmSearch">开始</a-button>
</a-form-item>
</a-form>
<!--新的日志-->
<div class="card-container">
<a-card title="热力数据重跑结果" style="width: 600px">
<el-row v-for="(item,index) in msgLogList" :key="index" style="padding: 2px 0;">
<el-col :span="8">
{{item.time}}
</el-col>
<el-col :span="16">
热力数据重跑任务已提交,正在重跑中...
</el-col>
</el-row>
</a-card>
</div>
</div>
</template>
<script>
import { reactive, ref, toRaw } from 'vue'
import moment from 'moment'
import { ElMessage } from 'element-plus'
import snapshotRecordApi from '@/views/SnapshotCluster/SnapshotRecord/SnapshotRecordApi'
import { isArray } from '@/PublicUtil/Judgment'
import { formatDate } from '@/PublicUtil/PublicUtil'
import hotRerunApi from '@/views/hotRerun/hotRerunApi'
export default {
components: {
VNodes: (_, {attrs}) => {
return attrs.vnodes
},
},
setup() {
const accountList = ref([])
const plazaList = ref([])
const queryForm = reactive({
account_id: '',
plaza_id: '',
startDate: moment(moment().format('YYYY-MM-DD'), 'YYYY-MM-DD'),
endDate: moment(moment().format('YYYY-MM-DD'), 'YYYY-MM-DD'),
})
const onAccountChange = function() {
getPlazaList()
}
const getPlazaList = function() {
queryForm.plaza_id = ''
plazaList.value = []
snapshotRecordApi.getPlazaList({
account_id: queryForm.account_id
}).then(
(r) => {
if (isArray(r)) {
for (const item of r) {
plazaList.value.push({
value: item.id,
label: item.name,
})
}
}
}
)
}
const getAccountList = function() {
queryForm.account_id = ''
accountList.value = []
snapshotRecordApi.getAccountList().then(
(r) => {
if (isArray(r)) {
for (const item of r) {
accountList.value.push({
value: item.id,
label: item.name,
})
}
}
}
)
}
// 新需求:数据重跑
const msgLogList = ref([])
const submitLoading = ref(false)
const confirmSearch = function() {
if (queryForm.account_id=='') {
ElMessage({
message: `请选择集团`,
type: 'error'
})
return
}
if (queryForm.plaza_id=='') {
ElMessage({
message: `请选择广场`,
type: 'error'
})
return
}
msgLogList.value = []
const rawData = toRaw(queryForm)
const params = {
mallId:queryForm.plaza_id,
startDate: formatDate(rawData.startDate),
endDate: formatDate(rawData.endDate),
}
submitLoading.value = true
hotRerunApi.getResult(params).then(
(r) => {
console.log('getResult', r)
submitLoading.value = false
if (r.code==200) {
msgLogList.value.push({time:moment().format('YYYY-MM-DD HH:mm:ss')})
} else {
ElMessage({
message: r.msg||'提交失败',
type: 'error'
})
}
}
)
}
const __main = function() {
getAccountList()
}
__main()
return {
accountList,
plazaList,
queryForm,
onAccountChange,
confirmSearch,
msgLogList,
submitLoading,
}
}
}
</script>
<style lang="less" scoped>
.result-wrapper-2 {
width: 50%;
min-width: 600px;
border-radius: 4px;
margin: 20px auto 0;
position: relative;
overflow: auto;
}
.card-container {
display: flex;
justify-content: center;
/deep/.ant-card-body {
height: 370px;
}
}
.data-return-form {
/deep/.ant-form-item {
margin-bottom: 10px;
}
}
</style>
\ No newline at end of file \ No newline at end of file
import axiosInstance from "@/Request/PublicAxiosInstance"
class HotRerunApi {
getResult(data) {
return axiosInstance.request(
{
method: 'GET',
url: `/heatMap/reCall`,
params: data
}
)
}
}
const hotRerunApi = new HotRerunApi()
export default hotRerunApi
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!