AIManage/src/views/model/index.vue

172 lines
5.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!-- 用户管理 -->
<template>
<div class="app-container">
<div class="search-container">
<el-button type="primary" @click="doUploadModel" ><i-ep-plus />上传模型</el-button>
<el-form ref="queryFormRef" :model="queryParams" :inline="true" style="flex-grow: 1;text-align: right;">
<el-form-item label="" prop="keywords">
<el-input v-model="queryParams.model_name" placeholder="请输入模型名称" clearable style="width: 200px"
@keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery"><i-ep-search />搜索</el-button>
<el-button @click="resetQuery">
<i-ep-refresh />
重置</el-button>
</el-form-item>
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-table v-loading="loading" :data="tableData" stripe @selection-change="handleSelectionChange">
<el-table-column label="模型名称" align="left" prop="model_name" width="300"/>
<el-table-column label="网络名称" align="left" prop="model_network" />
<el-table-column label="模型类型" align="left" prop="modl_sub_type_name" />
<el-table-column label="版本" align="left" prop="model_version" />
<el-table-column label="说明" width="300" align="left" prop="model_desc" />
<el-table-column label="上传时间" width="120" align="left" prop="create_time" />
<el-table-column label="上传用户" width="100" align="left" prop="user_name" />
<el-table-column label="操作" fixed="right" width="250">
<template #default="scope">
<el-button text type="primary" size="small"
@click="doShowModelDetail(scope.row)"><i-ep-edit />查看</el-button>
<el-button text type="primary" size="small"
@click="doProtocol()"><i-ep-link/>互联</el-button>
<el-button text type="primary" size="small" @click="handleDelete(scope.row)"><i-ep-delete />删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-card class="card-footer">
<pagination v-if="total > 0" v-model:total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="handleQuery" />
</el-card>
</div>
</template>
<script setup lang="ts">
defineOptions({
name: "calculateIndex",
inheritAttrs: false,
});
import ModelApi from '@/api/models'
import { UserQuery } from "@/api/user/model";
const queryFormRef = ref(ElForm); //
const router = useRouter();
const loading = ref(false); //
const removeIds = ref([]); // ID
let queryParams = reactive<any>({
page_num: 1,
page_size: 10,
model_name:''
});
const dateTimeRange = ref("");
let total = ref(100); // 数据总数
watch(dateTimeRange, (newVal) => {
if (newVal) {
queryParams.startTime = newVal[0];
queryParams.endTime = newVal[1];
}
});
let tableData = ref([])
/** 查询 */
function handleQuery() {
ModelApi.list(queryParams).then(d=>{
total.value=d.data.data.total||0;
tableData.value=d.data.data.model_list||[];
});
loading.value = true;
//ElMessage.success("查询成功");
loading.value = false;
}
const doUploadModel=()=>{
router.replace({ path: "/modelMgr/uploadModel" });
}
function doProtocol(){
router.replace({ path: "/protocol/index" });
}
/** 重置查询 */
function resetQuery() {
queryFormRef.value.resetFields();
dateTimeRange.value = "";
queryParams.page_num = 1;
queryParams.model_name='';
handleQuery();
}
/** 行选中 */
function handleSelectionChange(selection: any) {
removeIds.value = selection.map((item: any) => item.model_id);
}
/** 删除数据 */
function handleDelete(row: { [key: string]: any }) {
ElMessageBox.confirm("确认删除模型?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(function () {
ModelApi.deleteModel(row.model_id).then(d=>{
if(d.data.code==0){
ElMessage.success("删除成功");
handleQuery();
}
})
});
}
const doShowModelDetail=(row:any)=>{
router.replace({path:"/modelMgr/modelDetail",query:{id:row.model_id,from:'model'}})
}
/**
* 打开弹窗
*
* @param type 弹窗类型 用户表单user-form | 用户导入user-import
* @param id 用户ID
*/
async function openDialog(type: string, id?: number) {
router.replace({ path: "/operatorLibrary/calculateEdit" });
}
/** 下载导入模板 */
function downloadTemplate() {
ElMessage.success("下载模板成功");
}
/** 导出用户 */
function handleExport() {
ElMessage.success("导出成功");
}
onMounted(() => {
handleQuery();
});
</script>
<style scoped lang='scss'>
.search-container{
display:flex;
}
.card-footer{
position: fixed;
width: calc(100% - 215px);
bottom: 0px;
:deep(.el-card__body){
padding:0px;
.el-pagination{
justify-content: end;
}
}
}
</style>