Compare commits

...

2 Commits

Author SHA1 Message Date
junleea 64daeaeb56 添加select查询及新增项选择 2025-05-10 15:09:18 +08:00
junleea 870a70222c 解决管理功能的表前端 分页问题 2025-05-10 14:55:31 +08:00
9 changed files with 250 additions and 35 deletions

View File

@ -183,6 +183,8 @@ const handleSelectionChange = (selection: any[]) => {
// //
const handleCurrentChange = (val: number) => { const handleCurrentChange = (val: number) => {
//console.log("currentPage:", val)
//console.log("props.changePage:", props.changePage)
props.changePage(val) props.changePage(val)
} }

View File

@ -9,7 +9,7 @@
<el-input-number v-else-if="item.type === 'number'" v-model="form[item.prop]" <el-input-number v-else-if="item.type === 'number'" v-model="form[item.prop]"
:disabled="item.disabled" controls-position="right"></el-input-number> :disabled="item.disabled" controls-position="right"></el-input-number>
<el-select v-else-if="item.type === 'select'" v-model="form[item.prop]" :disabled="item.disabled" <el-select v-else-if="item.type === 'select'" v-model="form[item.prop]" :disabled="item.disabled"
:placeholder="item.placeholder" clearable :multiple="item.multiple?true:false"> :placeholder="item.placeholder" clearable :multiple="item.multiple?true:false" filterable :allow-create="item.allowcreate?true:false" >
<el-option v-for="opt in item.opts" :label="opt.label" :value="opt.value"></el-option> <el-option v-for="opt in item.opts" :label="opt.label" :value="opt.value"></el-option>
</el-select> </el-select>
<el-date-picker v-else-if="item.type === 'date'" type="date" v-model="form[item.prop]" <el-date-picker v-else-if="item.type === 'date'" type="date" v-model="form[item.prop]"

View File

@ -16,6 +16,8 @@ export interface FormOptionList {
format?: string; format?: string;
activeValue?: any; activeValue?: any;
multiple?: boolean; multiple?: boolean;
allowcreate?: boolean;
filterable?: boolean;
inactiveValue?: any; inactiveValue?: any;
activeText?: string; activeText?: string;
inactiveText?: string; inactiveText?: string;

View File

@ -3,7 +3,7 @@
<TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" /> <TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" />
<div class="container"> <div class="container">
<TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView" <TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView"
:delFunc="handleDelete" :page-change="changePage" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData"> :delFunc="handleDelete" :changePage="changePage" :currentPage="page.index" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData">
<template #toolbarBtn> <template #toolbarBtn>
<el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">上传文件</el-button> <el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">上传文件</el-button>
</template> </template>
@ -38,6 +38,7 @@ import TableDetail from '@/components/table-detail.vue';
import TableSearch from '@/components/table-search.vue'; import TableSearch from '@/components/table-search.vue';
import UploadFile from '@/components/upload-file.vue'; import UploadFile from '@/components/upload-file.vue';
import { FormOption, FormOptionList } from '@/types/form-option'; import { FormOption, FormOptionList } from '@/types/form-option';
import { pa } from 'element-plus/es/locale';
const page = reactive({ const page = reactive({
@ -46,6 +47,7 @@ const page = reactive({
total: 122, total: 122,
}) })
const tableData = ref<File[]>([]); const tableData = ref<File[]>([]);
const allData = ref<File[]>([]);
// //
const query = reactive({ const query = reactive({
@ -69,8 +71,19 @@ const handleSearch = async () => {
return; return;
} }
let result = await FindUserFileService(req); let result = await FindUserFileService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
// //
@ -91,14 +104,34 @@ const getData = async () => {
type: "all" type: "all"
} }
let result = await FindUserFileService(req); let result = await FindUserFileService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
getData(); getData();
const changePage = (val: number) => { const changePage = (val: number) => {
page.index = val; page.index = val;
getData(); //
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = allData.value.slice(start, end);
}; };
// //

View File

@ -3,7 +3,7 @@
<TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" /> <TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" />
<div class="container"> <div class="container">
<TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView" <TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView"
:delFunc="handleDelete" :page-change="changePage" :editFunc="handleEdit" :refresh="getData"> :delFunc="handleDelete" :changePage="changePage" :currentPage="page.index" :editFunc="handleEdit" :refresh="getData">
<template #toolbarBtn> <template #toolbarBtn>
<el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button> <el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button>
</template> </template>
@ -58,8 +58,19 @@ const handleSearch = async () => {
id: parseInt(query.name) id: parseInt(query.name)
} }
let result = await FindFunctionService(req); let result = await FindFunctionService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
// //
@ -79,6 +90,7 @@ const page = reactive({
total: 122, total: 122,
}) })
const tableData = ref<Function[]>([]); const tableData = ref<Function[]>([]);
const allData = ref<Function[]>([]);
const model_select_opts = ref([]); const model_select_opts = ref([]);
const getData = async () => { const getData = async () => {
let req={ let req={
@ -94,14 +106,34 @@ const getData = async () => {
}) })
} }
let result = await FindFunctionService(req); let result = await FindFunctionService(req);
tableData.value = result.data; page.total = result.data.length;
page.total = 12; page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
getData(); getData();
const changePage = (val: number) => { const changePage = (val: number) => {
page.index = val; page.index = val;
getData(); //
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = allData.value.slice(start, end);
}; };

View File

@ -3,7 +3,7 @@
<TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" /> <TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" />
<div class="container"> <div class="container">
<TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView" <TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView"
:delFunc="handleDelete" :page-change="changePage" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData"> :delFunc="handleDelete" :changePage="changePage" :currentPage="page.index" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData">
<template #toolbarBtn> <template #toolbarBtn>
<el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button> <el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button>
</template> </template>
@ -63,8 +63,19 @@ const handleSearch = async () => {
id: parseInt(query.name) id: parseInt(query.name)
} }
let result = await FindKnowledgeBaseService(req); let result = await FindKnowledgeBaseService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
// //
@ -84,6 +95,7 @@ const page = reactive({
total: 122, total: 122,
}) })
const tableData = ref<KBase[]>([]); const tableData = ref<KBase[]>([]);
const allData = ref<KBase[]>([]);
const file_ids_select_opts = ref([]); const file_ids_select_opts = ref([]);
const getData = async () => { const getData = async () => {
let req={ let req={
@ -104,10 +116,10 @@ const getData = async () => {
value: userFile.ID value: userFile.ID
}) })
} }
tableData.value = result.data; allData.value = result.data;
//id //id
for (let i = 0; i < tableData.value.length; i++) { for (let i = 0; i < allData.value.length; i++) {
let file_ids = JSON.parse(tableData.value[i].FileIDs.toString()) let file_ids = JSON.parse(allData.value[i].FileIDs.toString())
let file_id_list = [] let file_id_list = []
for (let j = 0; j < file_ids.length; j++) { for (let j = 0; j < file_ids.length; j++) {
file_id_list.push(file_ids[j]["file_id"]) file_id_list.push(file_ids[j]["file_id"])
@ -122,16 +134,37 @@ const getData = async () => {
} }
} }
} }
tableData.value[i].FileNameList = file_name_list.join(",") allData.value[i].FileNameList = file_name_list.join(",")
// console.log("file_name_list:", file_name_list) // console.log("file_name_list:", file_name_list)
} }
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = allData.value.slice(start, end);
}; };
getData(); getData();
const changePage = (val: number) => { const changePage = (val: number) => {
page.index = val; page.index = val;
getData(); //
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = allData.value.slice(start, end);
}; };
// //

View File

@ -3,7 +3,7 @@
<TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" /> <TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" />
<div class="container"> <div class="container">
<TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView" <TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView"
:delFunc="handleDelete" :page-change="changePage" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData"> :delFunc="handleDelete" :changePage="changePage2" :currentPage="page.currentPage" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData">
<template #toolbarBtn> <template #toolbarBtn>
<el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button> <el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button>
</template> </template>
@ -38,6 +38,7 @@ import TableCustom from '@/components/table-custom.vue';
import TableDetail from '@/components/table-detail.vue'; import TableDetail from '@/components/table-detail.vue';
import TableSearch from '@/components/table-search.vue'; import TableSearch from '@/components/table-search.vue';
import { FormOption, FormOptionList } from '@/types/form-option'; import { FormOption, FormOptionList } from '@/types/form-option';
import { pa } from 'element-plus/es/locale';
// //
@ -63,8 +64,23 @@ const handleSearch = async () => {
id: parseInt(query.name) id: parseInt(query.name)
} }
let result = await FindModelService(req); let result = await FindModelService(req);
tableData.value = result.data; if (result["data"]==null){
ElMessage.error("没有该模型");
return;
}
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
// //
@ -83,30 +99,62 @@ const page = reactive({
index: 1, index: 1,
size: 10, size: 10,
total: 122, total: 122,
pageSizes: [10, 20, 30, 40],
currentPage: 1,
}) })
const tableData = ref<Model[]>([]); const tableData = ref<Model[]>([]);
const allData = ref<Model[]>([]);
const getData = async () => { const getData = async () => {
let req={ let req={
token: localStorage.getItem('token'), token: localStorage.getItem('token'),
type: "UserID" type: "UserID"
} }
let result = await FindModelService(req); let result = await FindModelService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
getData(); getData();
const changePage = (val: number) => { const changePage = async (val: number) => {
console.log("page index:", page.index);
page.index = val; page.index = val;
getData(); getData();
}; };
const changePage2 = async (val: number) => {
//console.log("page index:", page.index);
page.index = val;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = allData.value.slice(start, end);
page.currentPage = val;
};
// //
let options = ref<FormOption>({ let options = ref<FormOption>({
labelWidth: '100px', labelWidth: '100px',
span: 12, span: 12,
list: [ list: [
{ type: 'select', label: '类型', prop: 'Type', required: true , opts:[{label: '本地部署模型', value: 'ollama'},{label: '星火', value: 'spark'},{label: '豆包', value: 'doubao'}]}, { type: 'select', label: '类型', prop: 'Type', required: true, allowcreate:true, opts:[{label: '本地部署模型', value: 'ollama'},{label: '星火', value: 'spark'},{label: '豆包', value: 'doubao'}]},
{ type: 'input', label: 'URL', prop: 'Url', required: true }, { type: 'input', label: 'URL', prop: 'Url', required: true },
{ type: 'input', label: '参数', prop: 'Parameter', required: true }, { type: 'input', label: '参数', prop: 'Parameter', required: true },
{ type: 'input', label: '描述', prop: 'Description', required: true }, { type: 'input', label: '描述', prop: 'Description', required: true },

View File

@ -3,7 +3,7 @@
<TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" /> <TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" />
<div class="container"> <div class="container">
<TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView" <TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView"
:delFunc="handleDelete" :page-change="changePage" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData"> :delFunc="handleDelete" :changePage="changePage" :currentPage="page.index" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData">
<template #toolbarBtn> <template #toolbarBtn>
<el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button> <el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button>
</template> </template>
@ -47,6 +47,7 @@ const page = reactive({
total: 122, total: 122,
}) })
const tableData = ref<Session[]>([]); const tableData = ref<Session[]>([]);
const allData = ref<Session[]>([]);
// //
const query = reactive({ const query = reactive({
@ -77,8 +78,19 @@ const handleSearch = async () => {
} }
let result = await FindSessionService(req); let result = await FindSessionService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
// //
@ -101,14 +113,35 @@ const getData = async () => {
session_type: -1, session_type: -1,
} }
let result = await FindSessionService(req); let result = await FindSessionService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
getData(); getData();
const changePage = (val: number) => { const changePage = (val: number) => {
page.index = val; page.index = val;
getData(); //
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = allData.value.slice(start, end);
//page.currentPage = val;
}; };
const handleGenOperate = async (row: File) => { const handleGenOperate = async (row: File) => {

View File

@ -3,7 +3,7 @@
<TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" /> <TableSearch :query="query" :options="searchOpt" :search="handleSearch" :refresh="getData" />
<div class="container"> <div class="container">
<TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView" <TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView"
:delFunc="handleDelete" :page-change="changePage" :editFunc="handleEdit"> :delFunc="handleDelete" :changePage="changePage" :currentPage="page.index" :editFunc="handleEdit">
<!-- <template #toolbarBtn> <!-- <template #toolbarBtn>
<el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button> <el-button type="warning" :icon="CirclePlusFilled" @click="visible_add = true">新增</el-button>
</template> --> </template> -->
@ -52,11 +52,11 @@ const handleSearch = async () => {
ElMessage.error('请输入用户名或ID'); ElMessage.error('请输入用户名或ID');
return; return;
} }
try{ // query.name
search_id = parseInt(query.name); if (isNaN(Number(query.name))) {
}catch(e){
search_id = -1;
keyword_ = query.name; keyword_ = query.name;
} else {
search_id = parseInt(query.name);
} }
let req={ let req={
token: localStorage.getItem('token'), token: localStorage.getItem('token'),
@ -64,8 +64,19 @@ const handleSearch = async () => {
keyword: keyword_, keyword: keyword_,
} }
let result = await SearchUserService(req); let result = await SearchUserService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
// //
@ -85,6 +96,7 @@ const page = reactive({
total: 122, total: 122,
}) })
const tableData = ref<UserInfo[]>([]); const tableData = ref<UserInfo[]>([]);
const allData = ref<UserInfo[]>([]);
const getData = async () => { const getData = async () => {
let req={ let req={
token: localStorage.getItem('token'), token: localStorage.getItem('token'),
@ -92,14 +104,34 @@ const getData = async () => {
keyword: "_121", keyword: "_121",
} }
let result = await SearchUserService(req); let result = await SearchUserService(req);
tableData.value = result.data;
page.total = result.data.length; page.total = result.data.length;
page.index = 1;
allData.value = result.data;
//
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = result.data.slice(start, end);
}; };
getData(); getData();
const changePage = (val: number) => { const changePage = (val: number) => {
page.index = val; page.index = val;
getData(); //
let start = (page.index - 1) * page.size;
let end = start + page.size;
if (end > page.total) {
end = page.total;
}
if (start > page.total) {
start = page.total;
}
tableData.value = allData.value.slice(start, end);
}; };
// //