Commit 5d3142e4 by renyizhao

动态规格(未完成)

parent ccbdbc30
......@@ -26,6 +26,9 @@ export interface ResourceSpu {
sliderPicUrls?: string; // 商品轮播图地址,以逗号分隔,最多15张
sales?: number; // 商品销量
status?: number; // 状态(0 下架,1 上架,2 回收)
specConfigIds?: number[]; // 规格配置项 ID 列表(关联 compute_resource_config.id)
specMap?: Record<string, string>; // 规格展示 Map(key=configCategory, value=configOption)
specConfigIdsByCategory: Record<string, number[]>; // 前端辅助字段:按 configCategory 分组的多选绑定(提交时扁平化为 specConfigIds)
}
// 算力资源SPU表(基础配置信息) API
......
......@@ -18,12 +18,7 @@
/>
</el-form-item>
<el-form-item label="CPU" prop="cpu">
<el-select
v-model="queryParams.cpu"
placeholder="请选择CPU配置"
clearable
class="!w-240px"
>
<el-select v-model="queryParams.cpu" placeholder="请选择CPU配置" clearable class="!w-240px">
<el-option
v-for="option in resourceConfigStore.getOptionsByType('cpu')"
:key="option.id"
......@@ -33,12 +28,7 @@
</el-select>
</el-form-item>
<el-form-item label="GPU" prop="gpu">
<el-select
v-model="queryParams.gpu"
placeholder="请选择GPU配置"
clearable
class="!w-240px"
>
<el-select v-model="queryParams.gpu" placeholder="请选择GPU配置" clearable class="!w-240px">
<el-option
v-for="option in resourceConfigStore.getOptionsByType('gpu')"
:key="option.id"
......@@ -77,33 +67,33 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="服务器ip" prop="ip">-->
<!-- <el-input-->
<!-- v-model="queryParams.ip"-->
<!-- placeholder="请输入服务器ip"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="初始用户名" prop="initUsername">-->
<!-- <el-input-->
<!-- v-model="queryParams.initUsername"-->
<!-- placeholder="请输入初始用户名"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="初始密码" prop="initPassword">-->
<!-- <el-input-->
<!-- v-model="queryParams.initPassword"-->
<!-- placeholder="请输入初始密码"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="服务器ip" prop="ip">-->
<!-- <el-input-->
<!-- v-model="queryParams.ip"-->
<!-- placeholder="请输入服务器ip"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="初始用户名" prop="initUsername">-->
<!-- <el-input-->
<!-- v-model="queryParams.initUsername"-->
<!-- placeholder="请输入初始用户名"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="初始密码" prop="initPassword">-->
<!-- <el-input-->
<!-- v-model="queryParams.initPassword"-->
<!-- placeholder="请输入初始密码"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="商品简介" prop="intro">
<el-input
v-model="queryParams.intro"
......@@ -158,49 +148,44 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="商品封面图" prop="picUrl">-->
<!-- <el-input-->
<!-- v-model="queryParams.picUrl"-->
<!-- placeholder="请输入商品封面图"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="商品轮播图地址" prop="sliderPicUrls">-->
<!-- <el-input-->
<!-- v-model="queryParams.sliderPicUrls"-->
<!-- placeholder="请输入商品轮播图地址"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="总库存数量" prop="stock">-->
<!-- <el-input-->
<!-- v-model="queryParams.stock"-->
<!-- placeholder="请输入总库存数量"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="商品销量" prop="sales">-->
<!-- <el-input-->
<!-- v-model="queryParams.sales"-->
<!-- placeholder="请输入商品销量"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="商品封面图" prop="picUrl">-->
<!-- <el-input-->
<!-- v-model="queryParams.picUrl"-->
<!-- placeholder="请输入商品封面图"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="商品轮播图地址" prop="sliderPicUrls">-->
<!-- <el-input-->
<!-- v-model="queryParams.sliderPicUrls"-->
<!-- placeholder="请输入商品轮播图地址"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="总库存数量" prop="stock">-->
<!-- <el-input-->
<!-- v-model="queryParams.stock"-->
<!-- placeholder="请输入总库存数量"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="商品销量" prop="sales">-->
<!-- <el-input-->
<!-- v-model="queryParams.sales"-->
<!-- placeholder="请输入商品销量"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态"
clearable
class="!w-240px"
>
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in statusOptions"
:key="dict.value"
......@@ -264,7 +249,7 @@
@selection-change="handleRowCheckboxChange"
>
<el-table-column type="selection" width="55" />
<!-- <el-table-column label="主键ID" align="center" prop="id" />-->
<!-- <el-table-column label="主键ID" align="center" prop="id" />-->
<el-table-column label="算力资源名称" min-width="200">
<template #default="{ row }">
<div class="flex">
......@@ -285,6 +270,18 @@
<!-- 硬件配置字段已隐藏 -->
<!-- <el-table-column label="算力资源分类编号" align="center" prop="categoryId" />-->
<el-table-column label="算力资源分类" align="center" prop="categoryName" min-width="150" />
<el-table-column label="规格" min-width="240">
<template #default="{ row }">
<el-tag
v-for="(value, key) in row.specMap"
:key="key"
size="small"
class="!mr-1"
>
{{ key }}: {{ value }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="算力来源" align="center" prop="source" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMPUTE_RESOURCE_SOURCE" :value="scope.row.source" />
......@@ -353,7 +350,7 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { createImageViewer } from '@/components/ImageViewer'
import { ResourceSpuApi, ResourceSpu } from '@/api/compute/resourcespu'
import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict";
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import { useResourceConfigStore } from '@/store/modules/compute/hardwareConfig'
const { push } = useRouter()
......@@ -393,7 +390,6 @@ const queryParams = reactive({
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
const statusOptions = getIntDictOptions(DICT_TYPE.COMPUTE_RESOURCE_SPU_STATUS)
/** 查询列表 */
const getList = async () => {
......@@ -453,15 +449,15 @@ const handleDeleteBatch = async () => {
try {
// 删除的二次确认
await message.delConfirm()
await ResourceSpuApi.deleteResourceSpuList(checkedIds.value);
await ResourceSpuApi.deleteResourceSpuList(checkedIds.value)
message.success(t('common.delSuccess'))
await getList();
await getList()
} catch {}
}
const checkedIds = ref<number[]>([])
const handleRowCheckboxChange = (records: ResourceSpu[]) => {
checkedIds.value = records.map((item) => item.id);
checkedIds.value = records.map((item) => item.id)
}
/** 商品图预览 */
......
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 sign in to comment