Commit c48a4063 authored by 胡占生's avatar 胡占生 🇨🇳

feat: 算法场景模块 复制启停操作,回显校验操作,接口联调

parent ccf68a8a
...@@ -81,3 +81,18 @@ export function variableList(id) { ...@@ -81,3 +81,18 @@ export function variableList(id) {
method: 'get' method: 'get'
}) })
} }
// 复制算法
export function copyAlgorithm(id) {
return request({
url: '/system/algorithm/scene/base/'+id,
method: 'post'
})
}
// 复制算法
export function editStatus(data) {
return request({
url: '/system/algorithm/scene/base/editStatus',
method: 'put',
data: data
})
}
...@@ -67,9 +67,13 @@ ...@@ -67,9 +67,13 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键id" align="center" prop="id" /> <el-table-column label="主键id" align="center" prop="id" />
<el-table-column label="场景名称" align="center" prop="sceneName" /> <el-table-column label="场景名称" align="center" prop="sceneName" />
<el-table-column label="分流预警类型" align="center" prop="alarmTypes" /> <el-table-column label="分流预警类型" align="center" prop="alarmTypes">
<template slot-scope="scope">
<span v-for="item in scope.row.alarmTypes">{{ item.typeName }}</span>
</template>
</el-table-column>
<el-table-column label="每秒帧数" align="center" prop="frameSecond" /> <el-table-column label="每秒帧数" align="center" prop="frameSecond" />
<el-table-column label="场景摄像头" align="center" prop="cameras" /> <el-table-column label="场景摄像头" align="center" prop="cameraIdList" />
<el-table-column label="算法" align="center" prop="algorithmName" /> <el-table-column label="算法" align="center" prop="algorithmName" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="160"> <el-table-column label="创建时间" align="center" prop="createTime" width="160">
...@@ -86,20 +90,34 @@ ...@@ -86,20 +90,34 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="editStatus(scope.row)"
v-hasPermi="['system:algorithmScene:editStatus']"
>{{scope.row.status==1?'启用':'禁用'}}</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['system:base:edit']" v-hasPermi="['system:algorithmScene:edit']"
>修改</el-button> >修改</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['system:base:remove']" v-hasPermi="['system:algorithmScene:remove']"
>删除</el-button> >删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-document-copy"
@click="copyAlgorithm(scope.row)"
v-hasPermi="['system:algorithmScene:copy']"
>复制</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -119,7 +137,7 @@ ...@@ -119,7 +137,7 @@
<el-input v-model="form.sceneName" placeholder="请输入场景名称" /> <el-input v-model="form.sceneName" placeholder="请输入场景名称" />
</el-form-item> </el-form-item>
<el-form-item label="场景算法" prop="algorithmId"> <el-form-item label="场景算法" prop="algorithmId">
<el-select @change="sceneChange" v-model="form.algorithmId" placeholder="请选择分流预警类型"> <el-select @change="sceneChange" v-model="form.algorithmId" placeholder="请选择场景算法">
<el-option <el-option
v-for="item in sceneOptions" v-for="item in sceneOptions"
:key="item.id" :key="item.id"
...@@ -152,7 +170,7 @@ ...@@ -152,7 +170,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="算法块" prop="pieceDtos"> <el-form-item label="算法块" prop="pieceDtos">
<el-table v-loading="loading" :data="form.pieceDtos" > <el-table v-loading="loading" ref="multipleTable" :data="form.pieceDtos" :key="'id'" >
<el-table-column label="算法块名称" align="center" prop="id"> <el-table-column label="算法块名称" align="center" prop="id">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
...@@ -213,7 +231,6 @@ ...@@ -213,7 +231,6 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleAlgUpdate(scope.row)" @click="handleAlgUpdate(scope.row)"
v-hasPermi="['system:base:edit']"
>修改</el-button> >修改</el-button>
<el-button <el-button
v-if="scope.row.isEdit" v-if="scope.row.isEdit"
...@@ -221,7 +238,6 @@ ...@@ -221,7 +238,6 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleAlgSave(scope.row)" @click="handleAlgSave(scope.row)"
v-hasPermi="['system:base:edit']"
>保存</el-button> >保存</el-button>
<el-button <el-button
v-if="scope.row.isEdit" v-if="scope.row.isEdit"
...@@ -229,7 +245,6 @@ ...@@ -229,7 +245,6 @@
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleAlgDelete(scope.$index,scope.row)" @click="handleAlgDelete(scope.$index,scope.row)"
v-hasPermi="['system:base:remove']"
>删除</el-button> >删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
...@@ -246,7 +261,7 @@ ...@@ -246,7 +261,7 @@
</template> </template>
<script> <script>
import { listBase, getBase, delBase, addBase, updateBase, pieceList ,cameraList ,typeList ,sceneList , variableList, } from "@/api/algorithm/scene"; import { listBase, getBase, delBase, addBase, updateBase, pieceList ,cameraList ,typeList ,sceneList , variableList,copyAlgorithm,editStatus } from "@/api/algorithm/scene";
export default { export default {
name: "Base", name: "Base",
...@@ -357,7 +372,19 @@ ...@@ -357,7 +372,19 @@
this.reset(); this.reset();
const id = row.id || this.ids const id = row.id || this.ids
getBase(id).then(response => { getBase(id).then(response => {
this.form = response.data; var arr =[]
this.getOption()
this.sceneChange(response.data.algorithmId)
this.form =JSON.parse(JSON.stringify(response.data))
arr=response.data.pieceDtos
this.form.pieceDtos=[]
this.form.alarmTypes=this.form.alarmTypes.split(',')
this.form.cameraIdList=this.form.cameraIdList.split(',')
this.form.cameraIdList=this.changeArr(this.form.cameraIdList)
arr.forEach(item => {
item.isEdit=false
this.form.pieceDtos.push(item)
});
this.open = true; this.open = true;
this.title = "修改算法场景"; this.title = "修改算法场景";
}); });
...@@ -386,6 +413,16 @@ ...@@ -386,6 +413,16 @@
sort:'', sort:'',
isEdit:true, isEdit:true,
}) })
},
//表格内校验
checkFrom(data){
var state=true
data.forEach(item=>{
if(item.isEdit){
state = false
}
})
return state
}, },
// 获取option // 获取option
getOption(){ getOption(){
...@@ -407,14 +444,26 @@ ...@@ -407,14 +444,26 @@
}, },
pieceChange(e){ pieceChange(e){
variableList(e.id).then(res=>{ variableList(e.id).then(res=>{
console.log('%c [ res ]-411', 'font-size:13px; background:pink; color:#bf2c9f;', res)
e.variables=res.data e.variables=res.data
// this.typeOptions=res.data // this.typeOptions=res.data
}) })
}, },
copyAlgorithm(row){
copyAlgorithm(row.id).then(res=>{
this.getList();
console.log('%c [ res ]-432', 'font-size:13px; background:pink; color:#bf2c9f;', res)
})
},
editStatus(row){
editStatus({id:row.id,status:row.status==1?0:1}).then(res=>{
this.getList();
console.log('%c [ res ]-432', 'font-size:13px; background:pink; color:#bf2c9f;', res)
})
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { if(this.checkFrom(this.form.pieceDtos)){
this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
updateBase(this.form).then(response => { updateBase(this.form).then(response => {
...@@ -431,6 +480,16 @@ ...@@ -431,6 +480,16 @@
} }
} }
}); });
}else{
this.$message.error('请保存表格内容');
}
},
changeArr(data){
var arr=[]
data.forEach(item=>{
arr.push(item*1)
})
return arr
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
......
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