Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
5d3142e4
authored
Aug 05, 2026
by
renyizhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
动态规格(未完成)
parent
ccbdbc30
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
86 additions
and
87 deletions
+86
-87
src/api/compute/resourcespu/index.ts
+3
-0
src/views/compute/resourcespu/form/index.vue
+0
-0
src/views/compute/resourcespu/index.vue
+83
-87
No files found.
src/api/compute/resourcespu/index.ts
View file @
5d3142e4
...
@@ -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
...
...
src/views/compute/resourcespu/form/index.vue
View file @
5d3142e4
This diff is collapsed.
Click to expand it.
src/views/compute/resourcespu/index.vue
View file @
5d3142e4
...
@@ -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
)
}
}
/** 商品图预览 */
/** 商品图预览 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment