Commit 8361d733 authored by wp song's avatar wp song

Merge branch 'developer' of http://git.censoft.com.cn/ai-yunshou/ai-yunshou-vue into developer

parents 7d943eca 4dcefc1b
...@@ -40,6 +40,15 @@ export function listAlgFile(query) { ...@@ -40,6 +40,15 @@ export function listAlgFile(query) {
}) })
} }
// 查询我的算法列表
export function listMyAlg(query) {
return request({
url: '/yunshou/userAlgorithm/list',
method: 'get',
params: query
})
}
// 查询算法列表x详情 // 查询算法列表x详情
export function detailAlg(id) { export function detailAlg(id) {
return request({ return request({
...@@ -58,6 +67,15 @@ export function addAlg(data) { ...@@ -58,6 +67,15 @@ export function addAlg(data) {
}) })
} }
// 新增我的算法列表
export function addMyAlg(data) {
return request({
url: '/yunshou/userAlgorithm',
method: 'post',
data: data
})
}
// 修改算法列表 // 修改算法列表
export function updateAlg(data) { export function updateAlg(data) {
return request({ return request({
...@@ -67,6 +85,24 @@ export function updateAlg(data) { ...@@ -67,6 +85,24 @@ export function updateAlg(data) {
}) })
} }
// 修改我的算法列表
export function updateMyAlg(data) {
return request({
url: '/yunshou/userAlgorithm',
method: 'put',
data: data
})
}
// 修改我的算法状态
export function updateMyAlgState(data) {
return request({
url: '/yunshou/userAlgorithm/updateRunningState',
method: 'post',
data: data
})
}
// 删除算法列表 // 删除算法列表
export function deleteAlg(ids) { export function deleteAlg(ids) {
...@@ -76,6 +112,14 @@ export function deleteAlg(ids) { ...@@ -76,6 +112,14 @@ export function deleteAlg(ids) {
}) })
} }
// 删除我的算法列表
export function deleteMyAlg(ids) {
return request({
url: `/yunshou/userAlgorithm/${ids}`,
method: 'delete'
})
}
// 启用禁用算法 // 启用禁用算法
export function updateAlgState(data) { export function updateAlgState(data) {
......
...@@ -14,7 +14,7 @@ export function useDict(...args) { ...@@ -14,7 +14,7 @@ export function useDict(...args) {
res.value[dictType] = dicts; res.value[dictType] = dicts;
} else { } else {
getDicts(dictType).then(resp => { getDicts(dictType).then(resp => {
res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass })) res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass,remark: p.remark }))
useDictStore().setDict(dictType, res.value[dictType]); useDictStore().setDict(dictType, res.value[dictType]);
}) })
} }
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
<el-button <el-button
type="primary" type="primary"
plain plain
:class="isActive=='4'?'active':''"
@click="changeDivision(12,4)" @click="changeDivision(12,4)"
>四分屏</el-button> >四分屏</el-button>
</el-col> </el-col>
...@@ -55,6 +56,7 @@ ...@@ -55,6 +56,7 @@
<el-button <el-button
type="primary" type="primary"
plain plain
:class="isActive=='6'?'active':''"
@click="changeDivision(8,6)" @click="changeDivision(8,6)"
>六分屏</el-button> >六分屏</el-button>
</el-col> </el-col>
...@@ -62,6 +64,7 @@ ...@@ -62,6 +64,7 @@
<el-button <el-button
type="primary" type="primary"
plain plain
:class="isActive=='12'?'active':''"
@click="changeDivision(6,12)" @click="changeDivision(6,12)"
>十二分屏</el-button> >十二分屏</el-button>
</el-col> </el-col>
...@@ -120,6 +123,7 @@ ...@@ -120,6 +123,7 @@
const ids = ref([]); const ids = ref([]);
const total = ref(0); const total = ref(0);
const division = ref(6); const division = ref(6);
const isActive = ref('12');
const deviceList = ref([]); const deviceList = ref([]);
const algList = ref([]); const algList = ref([]);
const data = reactive({ const data = reactive({
...@@ -142,6 +146,7 @@ ...@@ -142,6 +146,7 @@
function changeDivision(val,pageSize){ function changeDivision(val,pageSize){
division.value=val division.value=val
queryParams.value.pageSize=pageSize queryParams.value.pageSize=pageSize
isActive.value=pageSize
getList() getList()
} }
...@@ -204,6 +209,10 @@ ...@@ -204,6 +209,10 @@
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.active{
background-color: #409EFF;
color: #fff;
}
.search-input{ .search-input{
display: flex; display: flex;
width: 400px; width: 400px;
......
...@@ -296,7 +296,7 @@ getDetials() ...@@ -296,7 +296,7 @@ getDetials()
} }
.img-box{ .img-box{
// width: 500px; // width: 500px;
min-height: 365px; min-height: 200px;
// border: 1px solid #d8dce5; // border: 1px solid #d8dce5;
border-radius: 5px; border-radius: 5px;
text-align: center; text-align: center;
...@@ -411,7 +411,7 @@ getDetials() ...@@ -411,7 +411,7 @@ getDetials()
text-align: left; text-align: left;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
min-height: 180px; min-height: 120px;
} }
.text-style{ .text-style{
font-family: PingFang SC, PingFang SC; font-family: PingFang SC, PingFang SC;
......
...@@ -27,14 +27,17 @@ ...@@ -27,14 +27,17 @@
default-active="2" default-active="2"
class="el-menu-vertical-demo" class="el-menu-vertical-demo"
> >
<el-menu-item :index="''" @click="handMenuClick"> <el-menu-item :index="'我的算法'" @click="getMyList">
<span>全部</span> <span><el-icon style="color: #7F8184;"><component :is="'HomeFilled'" /></el-icon>我的算法</span>
</el-menu-item> </el-menu-item>
<el-menu-item :index="'我的算法'" @click="handMenuClick"> <el-divider style="margin: 5px 0;"/>
<span>我的算法</span> <el-menu-item :index="''" @click="handMenuClick">
<span> <el-icon style="color: #7F8184;"><component :is="'DeleteFilled'" /></el-icon>全部</span>
</el-menu-item> </el-menu-item>
<el-menu-item v-for="item in algorithm_scen" :key="item.value" :index="item.value" @click="handMenuClick"> <el-menu-item v-for="item in algorithm_scen" :key="item.value" :index="item.value" @click="handMenuClick">
<span style="display: flex;align-items: center;">
<el-icon style="color: #7F8184;"><component :is="iconComponent(item.remark)"/></el-icon>
</span> &nbsp;
<span>{{ item.label }}</span> <span>{{ item.label }}</span>
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>
...@@ -68,7 +71,7 @@ ...@@ -68,7 +71,7 @@
type="primary" type="primary"
plain plain
@click="handState('1')" @click="handState('1')"
></el-button> ></el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
...@@ -91,10 +94,11 @@ ...@@ -91,10 +94,11 @@
<div class="cleartitle"> <div class="cleartitle">
<span class="ellipsis">{{item.algorithmName}}</span> <span class="ellipsis">{{item.algorithmName}}</span>
<el-tag <el-tag
v-if="listState"
:type=" item.algorithmStatus=='0'?'success':'danger'" :type=" item.algorithmStatus=='0'?'success':'danger'"
effect="dark" effect="dark"
> >
{{ item.algorithmStatus=='0'?'已启用':'' }} {{ item.algorithmStatus=='0'?'已启用':'' }}
</el-tag> </el-tag>
</div> </div>
</template> </template>
...@@ -113,9 +117,9 @@ ...@@ -113,9 +117,9 @@
{{ item.cardCopywriting }} {{ item.cardCopywriting }}
</div> </div>
<div style="display: flex;justify-content: flex-end;position: absolute;right: 15px;bottom: 10px;" > <div style="display: flex;justify-content: flex-end;position: absolute;right: 15px;bottom: 10px;" >
<el-button link type="primary" icon="Bottom" @click.stop="handleUpdate(item)" >下载</el-button> <el-button link type="primary" icon="Bottom" @click.stop="handleUpdate(item)" v-if="!listState">添加</el-button>
<el-button link type="primary" icon="Edit" @click.stop="handleEnable(item)" >{{item.algorithmStatus=='0'?'':'启用' }}</el-button> <el-button link type="primary" icon="Edit" @click.stop="handleEnable(item)" v-if="listState">{{item.algorithmStatus=='0'?'':'启用' }}</el-button>
<el-button link type="primary" icon="Delete" @click.stop="handleDelete(item)">删除</el-button> <el-button link type="primary" icon="Delete" @click.stop="handleDelete(item)" v-if="listState">删除</el-button>
<!-- <el-dropdown trigger="click" @command.stop="handleSetSize"> <!-- <el-dropdown trigger="click" @command.stop="handleSetSize">
<el-button link type="primary"> <el-button link type="primary">
<el-icon class="el-icon--right"> <el-icon class="el-icon--right">
...@@ -148,7 +152,7 @@ ...@@ -148,7 +152,7 @@
</template> </template>
<script setup name="Index"> <script setup name="Index">
import { listAlg, detailAlg, addAlg, updateAlg, deleteAlg,updateAlgState } from "@/api/algorithmList/index.js"; import { listAlg, listMyAlg ,detailAlg, addMyAlg, updateMyAlgState,deleteMyAlg, deleteAlg,updateAlgState } from "@/api/algorithmList/index.js";
import algorithmDown from './components/algorithmDown.vue' import algorithmDown from './components/algorithmDown.vue'
// import algForm from './components/algorithmDown.vue' // import algForm from './components/algorithmDown.vue'
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
...@@ -160,7 +164,12 @@ ...@@ -160,7 +164,12 @@
const algorithmDownRef = ref(null) const algorithmDownRef = ref(null)
const nowText=ref('算法管理') const nowText=ref('算法管理')
const nowTopTitle=ref('算法管理') const nowTopTitle=ref('算法管理')
const listState=ref(false)
const ids = ref([]); const ids = ref([]);
// const iconComponent = ref('');
// setTimeout(() => {
// iconComponent.value='CirclePlusFilled'
// }, 1000);
const algorithmList=reactive([]) const algorithmList=reactive([])
const algList = ref([]); const algList = ref([]);
const data = reactive({ const data = reactive({
...@@ -182,13 +191,20 @@ ...@@ -182,13 +191,20 @@
/** 查询算法列表 */ /** 查询算法列表 */
function getList() { function getList() {
// loading.value = true;
listAlg(queryParams.value).then(response => { listAlg(queryParams.value).then(response => {
// console.log("🚀 ~ listAlg ~ response:", response)
algList.value = response.rows algList.value = response.rows
// loading.value = false; listState.value=false
}); });
} }
/** 查询我的算法列表 */
function getMyList() {
nowTopTitle.value='我的算法'
listMyAlg(queryParams.value).then(response => {
algList.value = response.rows
listState.value=true
});
}
function handeAdd(row){ function handeAdd(row){
algorithmDownRef.value.handleAdd() algorithmDownRef.value.handleAdd()
} }
...@@ -201,7 +217,11 @@ ...@@ -201,7 +217,11 @@
getList() getList()
} }
function handleUpdate(row) { function handleUpdate(row) {
algorithmDownRef.value.handleUpdate(row) addMyAlg({algorithmId:row.id}).then((res) => {
proxy.$modal.msgSuccess("添加成功");
console.log("🚀 ~ addMyAlg ~ res:", res)
})
// algorithmDownRef.value.handleUpdate(row)
} }
function handMenuClick(row) { function handMenuClick(row) {
...@@ -210,6 +230,15 @@ ...@@ -210,6 +230,15 @@
getList() getList()
} }
function iconComponent(row){
if(row){
return row
}else{
return 'CirclePlusFilled'
}
}
function handleEnable(row){ function handleEnable(row){
const params={ const params={
algorithmStatus: row.algorithmStatus=='1'?"0":"1", algorithmStatus: row.algorithmStatus=='1'?"0":"1",
...@@ -224,14 +253,24 @@ ...@@ -224,14 +253,24 @@
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(row) { function handleDelete(row) {
const id = row.id || ids.value; const id = row.userAlgorithmId || ids.value;
proxy.$modal.confirm('是否确认删除算法名称为"' + row.algorithmName + '"的数据项?').then(function() { proxy.$modal.confirm('是否确认删除算法名称为"' + row.algorithmName + '"的数据项?').then(function() {
return deleteAlg(id); return deleteMyAlg(id);
}).then(() => { }).then(() => {
getList(); getMyList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
}).catch(() => {}); }).catch(() => {});
} }
//
function handeImg(row){
if(row){
return `src/assets/algImg/${row}.png`
}else{
return `src/assets/algImg/setting.png`
}
}
getList(); getList();
</script> </script>
......
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
</el-col> </el-col>
<el-col :xs="0" :sm="2" :md="3" :lg="6"> <el-col :xs="0" :sm="2" :md="3" :lg="6">
<el-scrollbar :height="globalScreenHeight+'px'"> <el-scrollbar :height="globalScreenHeight+'px'">
<el-card class="danger-list"> <el-card class="danger-list" :style="{minHeight:globalScreenHeight+'px'}">
<template v-slot:header> <template v-slot:header>
<div class="cleartitle" style="justify-content: flex-start"> <div class="cleartitle" style="justify-content: flex-start">
<img src="@/assets/images/logo_video.png" width="25px" alt /> <img src="@/assets/images/logo_video.png" width="25px" alt />
...@@ -170,11 +170,7 @@ function getTreeData() { ...@@ -170,11 +170,7 @@ function getTreeData() {
deptOptions.value=res.data deptOptions.value=res.data
}) })
} }
function getWaringData() {
listAlarm(queryParams.value).then((res) => {
algorithmList.value=res.rows
})
}
function getVideos(str){ function getVideos(str){
let canvas = document.getElementById('video') let canvas = document.getElementById('video')
let url = str?str:'rtsp://192.168.20.211:554/av0_0' let url = str?str:'rtsp://192.168.20.211:554/av0_0'
...@@ -198,6 +194,7 @@ function handleNodeClick(row) { ...@@ -198,6 +194,7 @@ function handleNodeClick(row) {
queryParams.value.regionId = treeID; queryParams.value.regionId = treeID;
queryParams.value.locationId = null; queryParams.value.locationId = null;
} }
clearTimeout(timeoutId);
getWaringData() getWaringData()
} }
function handjudge(row) { function handjudge(row) {
...@@ -216,6 +213,23 @@ function handlvideoPath(id) { ...@@ -216,6 +213,23 @@ function handlvideoPath(id) {
getVideos(res.data.videoUrl) getVideos(res.data.videoUrl)
}) })
} }
let timeoutId = null;
function getWaringData() {
listAlarm(queryParams.value).then((res) => {
algorithmList.value=res.rows
timeoutId = setTimeout(getWaringData, 30000);
}).catch((error) => {
// 请求失败,重新尝试
timeoutId = setTimeout(getWaringData, 30000);
});
}
onUnmounted(() => {
// 清除定时器
if (timeoutId) {
clearTimeout(timeoutId);
}
});
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
...@@ -240,7 +254,6 @@ function handlvideoPath(id) { ...@@ -240,7 +254,6 @@ function handlvideoPath(id) {
} }
} }
.danger-list{ .danger-list{
min-height: 700px;
.alg-list { .alg-list {
display: grid; display: grid;
grid-template-columns: repeat(minmax(180px, 1fr)); grid-template-columns: repeat(minmax(180px, 1fr));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment