Commit c710516d by 李君

优化

1 parent f7b0c2dc
...@@ -15,7 +15,7 @@ const axiosInstance = axios.create( ...@@ -15,7 +15,7 @@ const axiosInstance = axios.create(
axiosInstance.interceptors.request.use( axiosInstance.interceptors.request.use(
config => { config => {
// Cookies.set('atoken','90eeca8f-7d7e-4dfa-8d7b-468e033dd048') // Cookies.set('atoken','3f719c88-cfe6-42f6-b2c7-a6b355c46c10')
if(!Cookies.get('atoken')){ if(!Cookies.get('atoken')){
ElMessage({ ElMessage({
message: `登录过期,请重新登录`, message: `登录过期,请重新登录`,
......
<template> <template>
<a-form :model="queryForm" layout="inline" :label-col="{ style: { width: '70px' } }"> <div class="containter">
<a-form-item label="集团:" style="padding: 5px 0"> <a-form :model="queryForm" layout="inline" :label-col="{ style: { width: '70px' } }">
<a-select v-model:value="queryForm.account_id" <a-form-item label="集团:" style="padding: 5px 0">
style="width: 280px" <a-select v-model:value="queryForm.account_id"
mode="multiple" style="width: 280px"
:maxTagCount="1" mode="multiple"
@change="onAccountChange" :maxTagCount="1"
:options="accountList" @change="onAccountChange"
optionFilterProp="label" :options="accountList"
show-search optionFilterProp="label"
> show-search
</a-select> >
</a-form-item> </a-select>
<a-form-item label="广场:" style="padding: 5px 0"> </a-form-item>
<a-select v-model:value="queryForm.plaza_id" <a-form-item label="广场:" style="padding: 5px 0">
style="width: 280px" <a-select v-model:value="queryForm.plaza_id"
mode="multiple" style="width: 280px"
:maxTagCount="1" mode="multiple"
@change="onPlazaChange" :maxTagCount="1"
:options="plazaList" @change="onPlazaChange"
optionFilterProp="label" :options="plazaList"
show-search optionFilterProp="label"
> show-search
</a-select> >
</a-form-item> </a-select>
<a-form-item label="出入类型:" style="padding: 5px 0"> </a-form-item>
<a-select v-model:value="queryForm.type" style="width: 280px"> <a-form-item label="出入类型:" style="padding: 5px 0">
<a-select-option :value="0">全场</a-select-option> <a-select v-model:value="queryForm.type" style="width: 280px">
<a-select-option :value="1">广场出入口</a-select-option> <a-select-option :value="0">全场</a-select-option>
<a-select-option :value="2">楼层出入口</a-select-option> <a-select-option :value="1">广场出入口</a-select-option>
<a-select-option :value="3">店铺出入口</a-select-option> <a-select-option :value="2">楼层出入口</a-select-option>
<a-select-option :value="4">其他</a-select-option> <a-select-option :value="3">店铺出入口</a-select-option>
</a-select> <a-select-option :value="4">其他</a-select-option>
</a-form-item> </a-select>
<a-form-item label="区域信息:" style="padding: 5px 0"> </a-form-item>
<a-select v-model:value="queryForm.zone_id" <a-form-item label="区域信息:" style="padding: 5px 0">
style="width: 280px" <a-select v-model:value="queryForm.zone_id"
mode="multiple" style="width: 280px"
:maxTagCount="1" mode="multiple"
@change="onZoneChange" :maxTagCount="1"
:options="zoneList" @change="onZoneChange"
optionFilterProp="label" :options="zoneList"
show-search optionFilterProp="label"
> show-search
</a-select> >
</a-form-item> </a-select>
<a-form-item label="监控点:" style="padding: 5px 0"> </a-form-item>
<a-select v-model:value="queryForm.gate_id" <a-form-item label="监控点:" style="padding: 5px 0">
style="width: 280px" <a-select v-model:value="queryForm.gate_id"
mode="multiple" style="width: 280px"
:maxTagCount="1" mode="multiple"
:options="gateList" :maxTagCount="1"
optionFilterProp="label" :options="gateList"
show-search optionFilterProp="label"
> show-search
>
</a-select>
</a-form-item> </a-select>
<a-form-item label="方向:" style="padding: 5px 0"> </a-form-item>
<a-select v-model:value="queryForm.direction" <a-form-item label="方向:" style="padding: 5px 0">
mode="multiple" <a-select v-model:value="queryForm.direction"
:maxTagCount="1" mode="multiple"
style="width: 280px"> :maxTagCount="1"
<a-select-option :value="1"></a-select-option> style="width: 280px">
<a-select-option :value="-1"></a-select-option> <a-select-option :value="1"></a-select-option>
<a-select-option :value="0">横穿</a-select-option> <a-select-option :value="-1"></a-select-option>
</a-select> <a-select-option :value="0">横穿</a-select-option>
</a-form-item> </a-select>
<a-form-item label="抓拍类型:" style="padding: 5px 0"> </a-form-item>
<a-select v-model:value="queryForm.picType" style="width: 280px"> <a-form-item label="抓拍类型:" style="padding: 5px 0">
<a-select-option :value="1">半身照</a-select-option> <a-select v-model:value="queryForm.picType" style="width: 280px">
<a-select-option :value="2">全身照</a-select-option> <a-select-option :value="1">半身照</a-select-option>
</a-select> <a-select-option :value="2">全身照</a-select-option>
</a-form-item> </a-select>
<a-form-item label="人员类型:" style="padding: 5px 0"> </a-form-item>
<a-select v-model:value="queryForm.personType" <a-form-item label="人员类型:" style="padding: 5px 0">
mode="multiple" <a-select v-model:value="queryForm.personType"
:maxTagCount="1" mode="multiple"
style="width: 280px"> :maxTagCount="1"
<a-select-option :value="1">店员</a-select-option> style="width: 280px">
<a-select-option :value="0">顾客</a-select-option> <a-select-option :value="1">店员</a-select-option>
</a-select> <a-select-option :value="0">顾客</a-select-option>
</a-form-item> </a-select>
<a-form-item label="选择日期:" style="padding: 5px 0"> </a-form-item>
<a-date-picker v-model:value="queryForm.date" :format="'YYYY-MM-DD'" style="width: 280px"/> <a-form-item label="选择日期:" style="padding: 5px 0">
</a-form-item> <a-date-picker v-model:value="queryForm.date" :format="'YYYY-MM-DD'" style="width: 280px"/>
<a-form-item label="选择时间:" style="padding: 5px 0"> </a-form-item>
<a-time-picker v-model:value="queryForm.startTime" style="width: 140px"/> <a-form-item label="选择时间:" style="padding: 5px 0">
<a-time-picker v-model:value="queryForm.endTime" style="width: 140px"/> <a-time-picker v-model:value="queryForm.startTime" style="width: 140px"/>
</a-form-item> <a-time-picker v-model:value="queryForm.endTime" style="width: 140px"/>
<a-form-item label="图片数量:" style="padding: 5px 0"> </a-form-item>
<a-input v-model:value="queryForm.minPic" style="width: 129px"/> <a-form-item label="图片数量:" style="padding: 5px 0">
<a-input v-model:value="queryForm.minPic" style="width: 129px"/>
<a-input v-model:value="queryForm.maxPic" style="width: 129px"/>
</a-form-item> <a-input v-model:value="queryForm.maxPic" style="width: 129px"/>
<a-form-item style="padding: 5px 0"> </a-form-item>
<a-button type="primary" @click="confirmSearch" :loading="isLoading">查询</a-button> <a-form-item style="padding: 5px 0">
</a-form-item> <a-button type="primary" @click="confirmSearch" :loading="isLoading">查询</a-button>
<a-form-item style="padding: 5px 0"> </a-form-item>
<a-button type="primary" @click="comparativeFun">特征对比</a-button> <a-form-item style="padding: 5px 0">
</a-form-item> <a-button type="primary" @click="comparativeFun">特征对比</a-button>
<a-form-item style="padding: 5px 0"> </a-form-item>
<a-button type="primary" @click="singleComparativeFun">单张特征对比</a-button> <a-form-item style="padding: 5px 0">
</a-form-item> <a-button type="primary" @click="singleComparativeFun">单张特征对比</a-button>
<a-form-item style="padding: 5px 0"> </a-form-item>
<a-button type="primary" @click="clerkComparativeFun">店员特征对比</a-button> <a-form-item style="padding: 5px 0">
</a-form-item> <a-button type="primary" @click="clerkComparativeFun">店员特征对比</a-button>
</a-form> </a-form-item>
</a-form>
<div v-loading="isLoading">
<template v-for="person in dataList"> <div v-loading="isLoading">
<div style="margin: 10px 0;border: solid 1px black" :class="person.checked?'checked':''"> <div class="resultContent" :style="{'height':contentHeight+'px'}">
<el-checkbox class="checkBox" v-model="person.checked" @change='checkChange(person)'></el-checkbox> <template v-for="person in dataList">
人id:{{ ' ' + person.person_unid }} <div style="margin: 10px 0;border: solid 1px black" :class="person.checked?'checked':''">
图片数量:{{ person.perrsonList.length }} <el-checkbox class="checkBox" v-model="person.checked" @change='checkChange(person)'></el-checkbox>
<el-row v-for="row in getPagedList(person.perrsonList, 8)"> 人id:{{ ' ' + person.person_unid }}
<el-col :span="3" v-for="item in row"> 图片数量:{{ person.perrsonList.length }}
<div style="margin: 0 5px" @click="handleClick(item)" :class="currentItemId==item.id?'actived':''"> <el-row v-for="row in getPagedList(person.perrsonList, 8)">
<div style="display:flex; justify-content: flex-end "> <el-col :span="3" v-for="item in row">
<span @click="downloadFile(item.features_url)" <div style="margin: 0 5px" @click="handleClick(item)" :class="currentItemId==item.id?'actived':''">
style="color: #409EFF;font-size: 15px;cursor: pointer;"> <div style="display:flex; justify-content: flex-end ">
下载特征值文件 <span @click="downloadFile(item.features_url)"
</span> style="color: #409EFF;font-size: 15px;cursor: pointer;">
</div> 下载特征值文件
<el-image :src="item.picture_url" </span>
:fit="'fill'" </div>
class="single-image" > <el-image :src="item.picture_url"
</el-image> :fit="'fill'"
<div>时间:{{ item.counttime }}</div> class="single-image" >
<div>人员类型:{{ item.person_type==1?'店员':'顾客' }}</div> </el-image>
<div class="direction" :class="'direction'+item.direction">方向:{{ formatDirection(item.direction) }}</div> <div>时间:{{ item.counttime }}</div>
<div>地点:{{ item.gate_name }}</div> <div>人员类型:{{ item.person_type==1?'店员':'顾客' }}</div>
</div> <div>性别:{{ formatGender(item.gender) }}</div>
</el-col> <div class="direction" :class="'direction'+item.direction">方向:{{ formatDirection(item.direction) }}</div>
</el-row> <div>地点:{{ item.gate_name }}</div>
</div>
</el-col>
</el-row>
</div>
</template>
</div> </div>
</template> <a-pagination
<a-pagination v-model:current="pageNum"
v-model:current="pageNum" v-model:pageSize="pageSize"
v-model:pageSize="pageSize" :total="total"
:total="total" :show-total="total => `共 ${total} 条`"
:show-total="total => `共 ${total} 条`" :pageSizeOptions="['10', '20', '40', '80']"
:pageSizeOptions="['10', '20', '40', '80']" @change="onPageNumChange"
@change="onPageNumChange" @showSizeChange="onPageSizeChange"
@showSizeChange="onPageSizeChange" show-size-changer
show-size-changer show-quick-jumper
show-quick-jumper style="text-align:center"
style="text-align:center" />
/> </div>
</div> </div>
<!-- <imgDialog ref='imgModelRef'></imgDialog> --> <!-- <imgDialog ref='imgModelRef'></imgDialog> -->
<DetailDialog ref="DetailDialogRef" /> <DetailDialog ref="DetailDialogRef" />
...@@ -392,7 +397,28 @@ export default { ...@@ -392,7 +397,28 @@ export default {
} }
) )
} }
const formatGender = function(number){
switch (number)
{
case 1:
{
return '男'
}
case -1:
{
return '未知'
}
case 0:
{
return '女'
}
default:
{
break
}
}
}
const formatDirection = function(number) { const formatDirection = function(number) {
switch (number) switch (number)
{ {
...@@ -545,8 +571,10 @@ export default { ...@@ -545,8 +571,10 @@ export default {
} }
DetailDialogRef.value.initDialog(currobj.value,parmas); DetailDialogRef.value.initDialog(currobj.value,parmas);
} }
const contentHeight = ref(0)
const __main = function() { const __main = function() {
getAccountList() getAccountList()
contentHeight.value = window.innerHeight - 310
} }
__main() __main()
...@@ -566,6 +594,7 @@ export default { ...@@ -566,6 +594,7 @@ export default {
gateList, gateList,
pagedTableDataList, pagedTableDataList,
dataList, dataList,
contentHeight,
// mapping // mapping
queryForm, queryForm,
// function // function
...@@ -583,6 +612,7 @@ export default { ...@@ -583,6 +612,7 @@ export default {
checkChange, checkChange,
clerkComparativeFun, clerkComparativeFun,
singleComparativeFun, singleComparativeFun,
formatGender,
// ref // ref
// imgModelRef, // imgModelRef,
DetailDialogRef, DetailDialogRef,
...@@ -604,5 +634,9 @@ export default { ...@@ -604,5 +634,9 @@ export default {
.checked{ .checked{
background-color: #bbb; background-color: #bbb;
} }
.resultContent{
overflow: auto;
min-height: 500px;
}
</style> </style>
...@@ -97,27 +97,29 @@ ...@@ -97,27 +97,29 @@
</a-form> </a-form>
<div v-loading="isLoading"> <div v-loading="isLoading">
<el-row v-for="row in pagedTableDataList"> <div class="resultContent" :style="{'height':contentHeight+'px'}">
<el-col :span="3" v-for="item in row"> <el-row v-for="row in pagedTableDataList">
<div style="margin: 0 5px;cursor: pointer;" @click="handleClick(item)" :class="currentItemId==item.id?'actived':''"> <el-col :span="3" v-for="item in row">
<div style="display:flex; justify-content: flex-end "> <div style="margin: 0 5px;cursor: pointer;" @click="handleClick(item)" :class="currentItemId==item.id?'actived':''">
<span @click="downloadFile(item.features_url)" <div style="display:flex; justify-content: flex-end ">
style="color: #409EFF;font-size: 15px;cursor: pointer;"> <span @click="downloadFile(item.features_url)"
下载特征值文件 style="color: #409EFF;font-size: 15px;cursor: pointer;">
</span> 下载特征值文件
</span>
</div>
<el-image :src="item.picture_url"
:fit="'fill'"
class="single-image">
</el-image>
<div>时间:{{ item.counttime }}</div>
<div>人员类型:{{ item.person_type==1?'店员':'顾客' }}</div>
<div>性别:{{ formatGender(item.gender) }}</div>
<div class="direction" :class="'direction'+item.direction">方向:{{ formatDirection(item.direction) }}</div>
<div>地点:{{ item.gate_name }}</div>
</div> </div>
<el-image :src="item.picture_url" </el-col>
:fit="'fill'" </el-row>
class="single-image"> </div>
</el-image>
<div>时间:{{ item.counttime }}</div>
<div>人员类型:{{ item.person_type==1?'店员':'顾客' }}</div>
<div class="direction" :class="'direction'+item.direction">方向:{{ formatDirection(item.direction) }}</div>
<div>地点:{{ item.gate_name }}</div>
</div>
</el-col>
</el-row>
<a-pagination <a-pagination
v-model:current="pageNum" v-model:current="pageNum"
v-model:pageSize="pageSize" v-model:pageSize="pageSize"
...@@ -361,7 +363,28 @@ export default { ...@@ -361,7 +363,28 @@ export default {
} }
) )
} }
const formatGender = function(number){
switch (number)
{
case 1:
{
return '男'
}
case -1:
{
return '未知'
}
case 0:
{
return '女'
}
default:
{
break
}
}
}
const formatDirection = function(number) { const formatDirection = function(number) {
switch (number) switch (number)
{ {
...@@ -416,8 +439,10 @@ export default { ...@@ -416,8 +439,10 @@ export default {
} }
DetailDialogRef.value.initDialog(currobj.value,parmas); DetailDialogRef.value.initDialog(currobj.value,parmas);
} }
const contentHeight = ref(0)
const __main = function() { const __main = function() {
getAccountList() getAccountList()
contentHeight.value = window.innerHeight - 310
} }
__main() __main()
...@@ -436,6 +461,7 @@ export default { ...@@ -436,6 +461,7 @@ export default {
gateList, gateList,
pagedTableDataList, pagedTableDataList,
currentItemId, currentItemId,
contentHeight,
// mapping // mapping
queryForm, queryForm,
// function // function
...@@ -449,6 +475,7 @@ export default { ...@@ -449,6 +475,7 @@ export default {
downloadFile, downloadFile,
handleClick, handleClick,
comparativeFun, comparativeFun,
formatGender,
// ref // ref
DetailDialogRef, DetailDialogRef,
imgModelRef imgModelRef
...@@ -462,5 +489,9 @@ export default { ...@@ -462,5 +489,9 @@ export default {
.actived{ .actived{
border: 3px solid #1890ff; border: 3px solid #1890ff;
} }
.resultContent{
overflow: auto;
min-height: 500px;
}
</style> </style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!