|
@@ -7,61 +7,202 @@
|
|
|
ai订阅配置
|
|
|
</div>
|
|
|
<div class="page-header-btn">
|
|
|
- <el-tooltip class="item" effect="dark" content="添加算法" placement="left-start">
|
|
|
- <el-button icon="el-icon-plus" circle size="mini" @click="showArithmeticDialog" ></el-button>
|
|
|
- </el-tooltip>
|
|
|
+<!-- <el-tooltip class="item" effect="dark" content="添加算法" placement="left-start">-->
|
|
|
+<!-- <el-button icon="el-icon-plus" circle size="mini" @click="showArithmeticDialog" ></el-button>-->
|
|
|
+<!-- </el-tooltip>-->
|
|
|
</div>
|
|
|
</div>
|
|
|
- <add-arithmetic ref="addArithmeticDialog" ></add-arithmetic>
|
|
|
+ <add-arithmetic ref="addArithmeticDialog" @select="selectConfigHandle" ></add-arithmetic>
|
|
|
<el-container v-loading="isLoading" style="min-height: 82vh;flex-direction: column;" >
|
|
|
- <el-card class="box-card" v-for="item in useAiList" :key="item.arithmetic">
|
|
|
+ <el-card class="box-card">
|
|
|
<div slot="header" class="card-header flex space-between align-center" >
|
|
|
- <span>{{ toArithmetic(item.arithmetic).text }}</span>
|
|
|
+ <span>{{toArithmetic(aiTypes.face).text}}</span>
|
|
|
|
|
|
<el-button-group>
|
|
|
- <el-button icon="el-icon-edit" @click="showEditAi(item.id)">调整算法</el-button>
|
|
|
- <el-button icon="el-icon-delete" type="danger">关闭该算法</el-button>
|
|
|
+ <el-button icon="el-icon-edit" @click="showArithmeticDialog(aiTypes.face)">更改配置</el-button>
|
|
|
</el-button-group>
|
|
|
</div>
|
|
|
|
|
|
- <div class="ai-info">
|
|
|
|
|
|
+ <div class="ai-info" v-if="arithmetic[aiTypes.face].configId">
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">检验类型:</div>
|
|
|
+ <div class="text">{{toTriggerType(arithmetic[aiTypes.face].triggerType).text}}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">触发相似度:</div>
|
|
|
+ <div class="text">{{arithmetic[aiTypes.face].score}}%</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">使用数据库:</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.face].libraryId).libraryName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">数据库版本:</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.face].libraryId).version }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">名单数量:</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.face].libraryId).total }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">资源路径:</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.face].resourcePath }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">多媒体资源上传地址:</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.face].uploadUrl }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">报警推送回调地址:</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.face].pushUrl }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="ai-info-not" v-else-if="!arithmetic[aiTypes.face].configId">
|
|
|
+ 未启用{{toArithmetic(aiTypes.face).text}}
|
|
|
+ <el-button @click="showArithmeticDialog(aiTypes.face)">选择{{toArithmetic(aiTypes.face).text}}配置</el-button>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="card-header flex space-between align-center" >
|
|
|
+ <span>{{toArithmetic(aiTypes.carPlate).text}}</span>
|
|
|
+
|
|
|
+ <el-button-group>
|
|
|
+ <el-button icon="el-icon-edit" @click="showArithmeticDialog(aiTypes.carPlate)">更改配置</el-button>
|
|
|
+ </el-button-group>
|
|
|
+ </div>
|
|
|
+ <div class="ai-info" v-if="arithmetic[aiTypes.carPlate].configId">
|
|
|
<div class="info-item">
|
|
|
<div class="label">检验类型:</div>
|
|
|
- <div class="text">{{toTriggerType(item.triggerType).text}}</div>
|
|
|
+ <div class="text">{{toTriggerType(arithmetic[aiTypes.carPlate].triggerType).text}}</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
<div class="label">触发相似度:</div>
|
|
|
- <div class="text">{{item.score}}%</div>
|
|
|
+ <div class="text">{{arithmetic[aiTypes.carPlate].score}}%</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
<div class="label">使用数据库:</div>
|
|
|
- <div class="text">{{ toAiData(item.libraryId).libraryName }}</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.carPlate].libraryId).libraryName }}</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
<div class="label">数据库版本:</div>
|
|
|
- <div class="text">{{ toAiData(item.libraryId).version }}</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.carPlate].libraryId).version }}</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
<div class="label">名单数量:</div>
|
|
|
- <div class="text">{{ toAiData(item.libraryId).total }}</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.carPlate].libraryId).total }}</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
<div class="label">资源路径:</div>
|
|
|
- <div class="text">{{ item.resourcePath }}</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.carPlate].resourcePath }}</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
<div class="label">多媒体资源上传地址:</div>
|
|
|
- <div class="text">{{ item.uploadUrl }}</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.carPlate].uploadUrl }}</div>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
<div class="label">报警推送回调地址:</div>
|
|
|
- <div class="text">{{ item.pushUrl }}</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.carPlate].pushUrl }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="ai-info-not" v-if="!arithmetic[aiTypes.carPlate].configId">
|
|
|
+ 未启用{{toArithmetic(aiTypes.carPlate).text}}
|
|
|
+ <el-button @click="showArithmeticDialog(aiTypes.carPlate)">选择{{toArithmetic(aiTypes.carPlate).text}}配置</el-button>
|
|
|
+ </div>
|
|
|
</el-card>
|
|
|
+
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="card-header flex space-between align-center" >
|
|
|
+ <span>{{toArithmetic(aiTypes.fire).text}}</span>
|
|
|
+
|
|
|
+ <el-button-group>
|
|
|
+ <el-button icon="el-icon-edit" @click="showArithmeticDialog(aiTypes.fire)">更改配置</el-button>
|
|
|
+ </el-button-group>
|
|
|
+ </div>
|
|
|
+ <div class="ai-info" v-if="arithmetic[aiTypes.fire].configId">
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">检验类型:</div>
|
|
|
+ <div class="text">{{toTriggerType(arithmetic[aiTypes.fire].triggerType).text}}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">触发相似度:</div>
|
|
|
+ <div class="text">{{arithmetic[aiTypes.fire].score}}%</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">使用数据库:</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.fire].libraryId).libraryName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">数据库版本:</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.fire].libraryId).version }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">名单数量:</div>
|
|
|
+ <div class="text">{{ toAiData(arithmetic[aiTypes.fire].libraryId).total }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">资源路径:</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.fire].resourcePath }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">多媒体资源上传地址:</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.fire].uploadUrl }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="label">报警推送回调地址:</div>
|
|
|
+ <div class="text">{{ arithmetic[aiTypes.fire].pushUrl }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="ai-info-not" v-if="!arithmetic[aiTypes.fire].configId">
|
|
|
+ 未启用{{toArithmetic(aiTypes.face).text}}
|
|
|
+ <el-button @click="showArithmeticDialog(aiTypes.fire)">选择{{toArithmetic(aiTypes.fire).text}}配置</el-button>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+
|
|
|
+<!-- <div class="ai-info">-->
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">检验类型:</div>-->
|
|
|
+<!-- <div class="text">{{toTriggerType(item.triggerType).text}}</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">触发相似度:</div>-->
|
|
|
+<!-- <div class="text">{{item.score}}%</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">使用数据库:</div>-->
|
|
|
+<!-- <div class="text">{{ toAiData(item.libraryId).libraryName }}</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">数据库版本:</div>-->
|
|
|
+<!-- <div class="text">{{ toAiData(item.libraryId).version }}</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">名单数量:</div>-->
|
|
|
+<!-- <div class="text">{{ toAiData(item.libraryId).total }}</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">资源路径:</div>-->
|
|
|
+<!-- <div class="text">{{ item.resourcePath }}</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">多媒体资源上传地址:</div>-->
|
|
|
+<!-- <div class="text">{{ item.uploadUrl }}</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="info-item">-->
|
|
|
+<!-- <div class="label">报警推送回调地址:</div>-->
|
|
|
+<!-- <div class="text">{{ item.pushUrl }}</div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- </div>-->
|
|
|
</el-container>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -70,12 +211,14 @@
|
|
|
import aiMap from "../map/ai"
|
|
|
import {toNumber} from "../until/typeTool";
|
|
|
import AddArithmetic from "./dialog/addArithmetic";
|
|
|
+import handle from "@/until/handle";
|
|
|
|
|
|
export default {
|
|
|
name: "aiConfig",
|
|
|
components: {AddArithmetic},
|
|
|
data(){
|
|
|
return {
|
|
|
+ aiTypes: aiMap.aiTypes,
|
|
|
deviceId: this.$route.params.deviceId,
|
|
|
isLoading: false,
|
|
|
arithmeticEnum:aiMap.arithmeticEnum,
|
|
@@ -84,6 +227,12 @@ export default {
|
|
|
],
|
|
|
useAiList: [
|
|
|
],
|
|
|
+ // 匹配的算法
|
|
|
+ arithmetic:{
|
|
|
+ [aiMap.aiTypes.face]:{},
|
|
|
+ [aiMap.aiTypes.carPlate]:{},
|
|
|
+ [aiMap.aiTypes.fire]:{},
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
async mounted(){
|
|
@@ -106,31 +255,32 @@ export default {
|
|
|
this.beforeUrl = "/deviceList"
|
|
|
}
|
|
|
},
|
|
|
- loadAiLib(){
|
|
|
+ async loadAiLib(){
|
|
|
this.isLoading = true;
|
|
|
let that = this;
|
|
|
- return this.$axios({
|
|
|
+ let [err,res] = await handle(this.$axios({
|
|
|
method: 'get',
|
|
|
- url: '/api/device/query/aiLibrary'
|
|
|
- }).then((res) => {
|
|
|
- // console.log("获取ai数据结果:" + JSON.stringify(res));
|
|
|
- this.isLoading = false;
|
|
|
- // console.log(res);
|
|
|
- let data = res.data;
|
|
|
- if(data.code === 0 ){
|
|
|
- that.aiList = data.data;
|
|
|
- }else{
|
|
|
- console.log(res);
|
|
|
- console.error("未知的返回结果!")
|
|
|
- }
|
|
|
- }).catch((e) => {
|
|
|
- console.error(e)
|
|
|
+ url: `/api/device/query/aiLibrary`
|
|
|
+ }))
|
|
|
+ this.isLoading = false;
|
|
|
+ if (err){
|
|
|
+ console.error(err)
|
|
|
that.$message({
|
|
|
showClose: true,
|
|
|
- message: e,
|
|
|
+ message: err,
|
|
|
type: 'error'
|
|
|
});
|
|
|
- });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let data = res.data;
|
|
|
+ if(data.code === 0 ){
|
|
|
+ //
|
|
|
+
|
|
|
+ that.aiList = data.data;
|
|
|
+ }else{
|
|
|
+ console.log(res);
|
|
|
+ console.error("未知的返回结果!")
|
|
|
+ }
|
|
|
},
|
|
|
loadDeviceAi(){
|
|
|
this.isLoading = true;
|
|
@@ -144,6 +294,21 @@ export default {
|
|
|
// console.log(res);
|
|
|
let data = res.data;
|
|
|
if(data.code === 0 ){
|
|
|
+ data.data.forEach(ai=>{
|
|
|
+ console.log(ai)
|
|
|
+ if(toNumber(ai.arithmetic) === toNumber(aiMap.aiTypes.face)){
|
|
|
+ console.log('人脸')
|
|
|
+ this.arithmetic[aiMap.aiTypes.face] = ai;
|
|
|
+ } else if(toNumber(ai.arithmetic) === toNumber(aiMap.aiTypes.carPlate)){
|
|
|
+ console.log('车牌')
|
|
|
+ this.arithmetic[aiMap.aiTypes.carPlate] = ai;
|
|
|
+ }else if(toNumber(ai.arithmetic) === toNumber(aiMap.aiTypes.fire)){
|
|
|
+ console.log('火情')
|
|
|
+ this.arithmetic[aiMap.aiTypes.fire] = ai;
|
|
|
+ }else{
|
|
|
+ console.error("未知的ai类型");
|
|
|
+ }
|
|
|
+ })
|
|
|
that.useAiList = data.data;
|
|
|
}else{
|
|
|
console.log(res);
|
|
@@ -158,11 +323,15 @@ export default {
|
|
|
});
|
|
|
});
|
|
|
},
|
|
|
+ async selectConfigHandle(configId){
|
|
|
+ console.log("-*----"+configId);
|
|
|
+
|
|
|
+ },
|
|
|
showEditAi(id){
|
|
|
this.$router.push(`/devEditAi/${id}`);
|
|
|
},
|
|
|
- showArithmeticDialog(){
|
|
|
- this.$refs.addArithmeticDialog.showDialog(this.deviceId);
|
|
|
+ showArithmeticDialog(arithemtic){
|
|
|
+ this.$refs.addArithmeticDialog.showDialog(arithemtic,this.deviceId,this.aiList,this.arithmetic[arithemtic]);
|
|
|
}
|
|
|
|
|
|
}
|