Commit 5d3142e4 by renyizhao

动态规格(未完成)

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