|
|
@@ -48,13 +48,14 @@
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="2">
|
|
|
- <el-button type="primary" @click="dialogVisible = true">+新增服务商</el-button>
|
|
|
+ <el-button type="primary" @click="handleadd">+新增服务商</el-button>
|
|
|
|
|
|
- <el-dialog v-model="dialogVisible" title="新增服务商" width="40%">
|
|
|
+ <el-dialog v-model="dialogVisible" :title="mode === 'add' ? '新增服务商' : '编辑服务商'" width="40%">
|
|
|
|
|
|
- <el-form>
|
|
|
+ <!-- 新增表单 -->
|
|
|
+ <el-form v-if="mode === 'add'">
|
|
|
<!-- Tab 栏 -->
|
|
|
- <el-tabs tab-position="top" v-model="activeTab" type="card">
|
|
|
+ <el-tabs tab-position="top" v-model="activeTab" type="card">
|
|
|
<el-tab-pane label="基本信息" name="info1">
|
|
|
<BasicInfo v-model="formData.info1" />
|
|
|
</el-tab-pane>
|
|
|
@@ -74,6 +75,29 @@
|
|
|
</div>
|
|
|
</el-form>
|
|
|
|
|
|
+ <!-- 编辑表单 -->
|
|
|
+ <el-form v-if="mode === 'edit'">
|
|
|
+ <!-- Tab 栏 -->
|
|
|
+ <el-tabs tab-position="top" v-model="activeTab" type="card">
|
|
|
+ <el-tab-pane label="基本信息" name="info1">
|
|
|
+ <BasicInfo v-model="formData.info1" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="API配置" name="info2">
|
|
|
+ <ApiInfo v-model="formData.info2" />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="附加信息" name="info3">
|
|
|
+ <AdditionInfo v-model="formData.info3" />
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <!-- 提交按钮 -->
|
|
|
+ <div style="display: flex; justify-content: flex-end;">
|
|
|
+ <el-form-item>
|
|
|
+ <el-button @click="dialogVisible = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm">更新</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
</el-dialog>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
@@ -144,11 +168,13 @@
|
|
|
<el-table-column label="创建时间" prop="createTime" width="240" />
|
|
|
<el-table-column label="操作" width="240">
|
|
|
<template #default="slot">
|
|
|
- <!-- 查看 传入id进入详情页面 -->
|
|
|
- <el-icon size="15" color="#15A9FF" style="margin-right: 10px;"><View /></el-icon>
|
|
|
+ <el-icon size="15" color="#15A9FF" style="margin-right: 10px;" @click="handleView(slot.row)">
|
|
|
+ <View />
|
|
|
+ </el-icon>
|
|
|
|
|
|
- <!-- 编辑 传递现有信息 打开编辑弹窗 -->
|
|
|
- <el-icon size="15" color="#15A9FF" style="margin-right: 10px;"><Edit /></el-icon>
|
|
|
+ <el-icon size="15" color="#15A9FF" style="margin-right: 10px;" @click="handleEdit(slot.row)">
|
|
|
+ <Edit />
|
|
|
+ </el-icon>
|
|
|
|
|
|
<!-- 启用/禁用图标 -->
|
|
|
<el-icon size="15" style="margin-right: 10px;" :color="slot.row.status === 'active' ? '#13ce66' : '#ff4949'">
|
|
|
@@ -194,9 +220,51 @@ import { View, Edit, List, Check, Close } from '@element-plus/icons-vue'
|
|
|
import BasicInfo from "@/views/modleServiceProvide/components/BasicInfo.vue";
|
|
|
import ApiInfo from "@/views/modleServiceProvide/components/ApiInfo.vue";
|
|
|
import AdditionInfo from "@/views/modleServiceProvide/components/AdditionInfo.vue";
|
|
|
-import { listModelVendor,addModelVendor, ModelVendorQuery, ModelVendorDto } from '@/api/modleServiceProvide';
|
|
|
+import {
|
|
|
+ listModelVendor,
|
|
|
+ addModelVendor,
|
|
|
+ ModelVendorQuery,
|
|
|
+ ModelVendorDto,
|
|
|
+ updateModelVendor
|
|
|
+} from '@/api/modleServiceProvide';
|
|
|
|
|
|
import request from "@/utils/request";
|
|
|
+
|
|
|
+import { useRouter } from 'vue-router' // 引入 Vue Router
|
|
|
+
|
|
|
+const router = useRouter()
|
|
|
+
|
|
|
+// 查看详情(跳转到详情页)
|
|
|
+const handleView = (row) => {
|
|
|
+ router.push({
|
|
|
+ path: '/modleServiceProvideDetail',
|
|
|
+ query: { id: row.id } // 假设 row.id 是模型的唯一标识
|
|
|
+ })
|
|
|
+}
|
|
|
+const mode = ref('add')
|
|
|
+// 编辑时的当前行数据
|
|
|
+const currentRow = ref(null)
|
|
|
+
|
|
|
+// 编辑(打开弹窗)
|
|
|
+const handleEdit = (row) => {
|
|
|
+ mode.value = 'edit'
|
|
|
+ currentRow.value = row
|
|
|
+ // 把当前行数据赋值给表单
|
|
|
+ formData.value = {
|
|
|
+ info1: { ...row.info1 },
|
|
|
+ info2: { ...row.info2 },
|
|
|
+ info3: { ...row.info3 }
|
|
|
+ }
|
|
|
+ dialogVisible.value = true
|
|
|
+}
|
|
|
+const handleadd = () =>
|
|
|
+{
|
|
|
+
|
|
|
+ mode.value = 'add'
|
|
|
+
|
|
|
+ dialogVisible.value = true
|
|
|
+}
|
|
|
+
|
|
|
// 筛选条件
|
|
|
const filters = ref({
|
|
|
vendorName: '',
|
|
|
@@ -235,13 +303,42 @@ const queryParams = ref<ModelVendorQuery>({
|
|
|
const dataList = ref<ModelVendorDto[]>([]);
|
|
|
const total = ref<number>(0);
|
|
|
const loading = ref<boolean>(false);
|
|
|
-
|
|
|
+/**
|
|
|
+ * 将后端返回的单个记录转换为 formData 格式
|
|
|
+ */
|
|
|
+const formatToFormData = (record) => {
|
|
|
+ return {
|
|
|
+ info1: {
|
|
|
+ vendorCode: record.vendorCode || '',
|
|
|
+ vendorName: record.vendorName || '',
|
|
|
+ modelKind: record.modelKind ? [record.modelKind] : [], // 假设 modelKind 是字符串,转为数组
|
|
|
+ logoUrl: record.logoUrl || '',
|
|
|
+ logoFile: null, // 文件对象不从后端获取
|
|
|
+ isOfficial: record.isOfficial || false,
|
|
|
+ status: record.status || 0,
|
|
|
+ sortOrder: record.sortOrder || 0
|
|
|
+ },
|
|
|
+ info2: {
|
|
|
+ defaultUrl: record.defaultUrl || '',
|
|
|
+ extraConfig: record.extraConfig || ''
|
|
|
+ },
|
|
|
+ info3: {
|
|
|
+ contactInfo: record.contactInfo || '',
|
|
|
+ website: record.website || '',
|
|
|
+ apiDocUrl: record.apiDocUrl || '',
|
|
|
+ pricingUrl: record.pricingUrl || '',
|
|
|
+ description: record.description || ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
// 获取数据方法
|
|
|
const getList = async () => {
|
|
|
loading.value = true;
|
|
|
try {
|
|
|
const res = await listModelVendor(queryParams.value);
|
|
|
- dataList.value = res.data.list;
|
|
|
+ dataList.value = res.data.records.map(formatToFormData);
|
|
|
+ //
|
|
|
+ // dataList.value = res.data.list;
|
|
|
total.value = res.data.total;
|
|
|
} catch (error) {
|
|
|
console.error('获取数据失败:', error);
|
|
|
@@ -342,7 +439,7 @@ const handleSelectionChange = (selection: ProviderModel[]) => {
|
|
|
selectedIds.value = selection.map(item => item.id)
|
|
|
}
|
|
|
|
|
|
-const dialogVisible = ref(false)
|
|
|
+let dialogVisible = ref(false)
|
|
|
const formRef = ref<FormInstance>()
|
|
|
|
|
|
|
|
|
@@ -426,8 +523,16 @@ const submitForm = () => {
|
|
|
if (data.info1.logoFile) {
|
|
|
submitData.append('logo', data.info1.logoFile);
|
|
|
}
|
|
|
+ if(mode.value = 'add')
|
|
|
+ {
|
|
|
+ const res = addModelVendor(submitData);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ const res = updateModelVendor(submitData)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- const res = addModelVendor(submitData);
|
|
|
|
|
|
// 发送请求
|
|
|
// axios.post('/api/model/vendor/save', submitData, {
|