Commit 711b434c by 孙美琪

页面菜单调整

parent 83910851
......@@ -25,9 +25,8 @@
}
& .peg {
box-shadow:
0 0 10px var(--el-color-primary),
0 0 5px var(--el-color-primary) !important;
box-shadow: 0 0 10px var(--el-color-primary),
0 0 5px var(--el-color-primary) !important;
}
& .spinner-icon {
......@@ -35,3 +34,12 @@
border-left-color: var(--el-color-primary);
}
}
.bt-b10 {
padding-bottom: 10px;
}
.upload-box {
display: flex;
flex-direction: column;
}
......@@ -11,7 +11,7 @@
<!-- <UploadImg v-model="formData.image" />-->
<!-- </el-form-item>-->
<el-form-item label="轮播图地址" prop="images">
<div class="dialog-box">
<div class="upload-box">
<el-upload
v-model:file-list="formData.images"
:action="uploadUrl"
......@@ -249,7 +249,7 @@ const handleUploadError = (err, file, fileList) => {
</script>
<style scoped>
.dialog-box {
.upload-box {
display: flex;
flex-direction: column;
}
......
......@@ -6,7 +6,6 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="内容" prop="information">
<el-input
......@@ -26,25 +25,6 @@
class="!w-200px"
/>
</el-form-item>
<el-form-item label="链接地址" prop="url">
<el-input
v-model="queryParams.url"
placeholder="请输入链接地址"
clearable
@keyup.enter="handleQuery"
class="!w-200px"
/>
</el-form-item>
<!-- <el-form-item label="排序值" prop="orderNum">-->
<!-- <el-input-->
<!-- v-model="queryParams.orderNum"-->
<!-- placeholder="请输入排序值"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-160px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="状态" prop="showStatus">
<el-select
v-model="queryParams.showStatus"
......@@ -60,37 +40,6 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="状态" prop="showStatus">-->
<!-- <el-select-->
<!-- v-model="queryParams.showStatus"-->
<!-- placeholder="请选择状态:0-已隐藏,1-已显示"-->
<!-- clearable-->
<!-- class="!w-240px"-->
<!-- >-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker-->
<!-- v-model="queryParams.createTime"-->
<!-- value-format="YYYY-MM-DD HH:mm:ss"-->
<!-- type="daterange"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"-->
<!-- class="!w-220px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备注" prop="remark">-->
<!-- <el-input-->
<!-- v-model="queryParams.remark"-->
<!-- placeholder="请输入备注"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
......@@ -100,41 +49,43 @@
<Icon icon="ep:refresh" class="mr-5px" />
重置
</el-button>
<el-button
type="primary"
plain
@click="openForm('bannerCreate')"
v-hasPermi="['biz:banner-info:create']"
>
<Icon icon="ep:plus" class="mr-5px" />
新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['biz:banner-info:export']"
>
<Icon icon="ep:download" class="mr-5px" />
导出
</el-button>
<el-button
type="danger"
plain
:disabled="isEmpty(checkedIds)"
@click="handleDeleteBatch"
v-hasPermi="['biz:banner-info:delete']"
>
<Icon icon="ep:delete" class="mr-5px" />
批量删除
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<div class="bt-b10">
<el-button
type="primary"
plain
@click="openForm('bannerCreate')"
v-hasPermi="['biz:banner-info:create']"
>
<Icon icon="ep:plus" class="mr-5px" />
新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['biz:banner-info:export']"
>
<Icon icon="ep:download" class="mr-5px" />
导出
</el-button>
<el-button
type="danger"
plain
:disabled="isEmpty(checkedIds)"
@click="handleDeleteBatch"
v-hasPermi="['biz:banner-info:delete']"
>
<Icon icon="ep:delete" class="mr-5px" />
批量删除
</el-button>
</div>
<el-table
row-key="id"
v-loading="loading"
......@@ -145,12 +96,6 @@
>
<el-table-column type="selection" width="55" />
<el-table-column label="排序值" align="center" prop="orderNum" />
<!-- <el-table-column label="轮播图地址" align="center" prop="image" />-->
<!-- <el-table-column label="轮播图地址" align="center" prop="images" width="100">-->
<!-- <template #default="scope">-->
<!-- <img :src="scope.row.images" alt="轮播图" class="h-36px" />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="轮播图地址" align="center" prop="images" width="100">
<template #default="scope">
<!-- 只显示第一张图片 -->
......@@ -168,20 +113,11 @@
<el-table-column label="标题" align="center" prop="title" />
<el-table-column label="链接地址" align="center" prop="url" />
<el-table-column label="描述内容" align="center" prop="description" />
<!-- <el-table-column label="状态" align="center" prop="showStatus" />-->
<el-table-column label="状态" align="center" prop="showStatus">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HOME_INFO_STATUS" :value="scope.row.showStatus" />
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- label="创建时间"-->
<!-- align="center"-->
<!-- prop="createTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="180px"-->
<!-- />-->
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" min-width="120px">
<template #default="scope">
......
......@@ -4,34 +4,37 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="140px"
v-loading="formLoading"
>
<!-- <el-form-item label="展示图地址" prop="images">-->
<!-- <UploadImg v-model="formData.images" />-->
<!-- </el-form-item>-->
<el-form-item label="展示图地址" prop="images">
<el-upload
v-model:file-list="formData.images"
:action="uploadUrl"
:http-request="httpRequest"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
multiple
>
<el-icon><Plus /></el-icon>
</el-upload>
<!-- 添加预览对话框 -->
<el-dialog v-model="previewVisible" append-to-body>
<img style="width: 100%" :src="dialogImageUrl" alt="Preview Image" />
</el-dialog>
<!-- 添加提示信息 -->
<p class="upload-tips">
请上传 大小不超过 <span class="red-text">5MB</span> 格式为 <span class="red-text">png/jpg/jpeg</span> 的文件
</p>
<div class="upload-box">
<el-upload
v-model:file-list="formData.images"
:action="uploadUrl"
:http-request="httpRequest"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
multiple
>
<el-icon>
<Plus />
</el-icon>
</el-upload>
<!-- 添加预览对话框 -->
<el-dialog v-model="previewVisible" append-to-body>
<img style="width: 100%" :src="dialogImageUrl" alt="Preview Image" />
</el-dialog>
<!-- 添加提示信息 -->
<p class="upload-tips">
请上传 大小不超过 <span class="red-text">5MB</span> 格式为
<span class="red-text">png/jpg/jpeg</span>
的文件
</p>
</div>
</el-form-item>
<el-form-item label="内容" prop="information">
......@@ -46,14 +49,14 @@
<el-form-item label="描述内容" prop="description">
<Editor v-model="formData.description" height="150px" />
</el-form-item>
<!-- <el-form-item label="计算资源应用类别" prop="category">-->
<!-- <el-select v-model="formData.category" placeholder="请选择计算资源应用类别">-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="计算资源应用类别" prop="category">
<el-select v-model="formData.category" placeholder="请选择应用类别" clearable class="!w-160px">
<el-select
v-model="formData.category"
placeholder="请选择计算资源应用类别"
clearable
class="!w-160px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HOME_INFO_COMPUTILITY_TYPE)"
:key="dict.value"
......@@ -63,12 +66,6 @@
</el-select>
</el-form-item>
<!-- <el-form-item label="状态" prop="showStatus">-->
<!-- <el-radio-group v-model="formData.showStatus">-->
<!-- <el-radio value="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<el-form-item label="状态" prop="showStatus">
<el-radio-group v-model="formData.showStatus">
<el-radio
......@@ -96,7 +93,7 @@ import { ComputilityInformationApi, ComputilityInformation } from '@/api/biz/com
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { useUpload } from '@/components/UploadFile/src/useUpload'
import {Plus} from "@element-plus/icons-vue";
import { Plus } from '@element-plus/icons-vue'
// 添加预览相关的响应式变量
const previewVisible = ref(false)
......@@ -153,12 +150,11 @@ const open = async (type: string, id?: number) => {
// 将 images 字段转换为 file-list 需要的格式
if (data.images && Array.isArray(data.images)) {
formData.value.images = data.images.map(url => ({ url, name: 'image.jpg' })) // 添加 name 属性
formData.value.images = data.images.map((url) => ({ url, name: 'image.jpg' })) // 添加 name 属性
} else {
formData.value.images = []
}
formData.value = { ...data, images: formData.value.images } // 确保 image 是数组
} finally {
formLoading.value = false
}
......@@ -174,25 +170,26 @@ const submitForm = async () => {
// 提交请求
formLoading.value = true
try {
// 确保只提取真实的 URL,而不是本地的 Blob URL
const imageUrls = formData.value.images
.filter(item => item.url && !item.url.startsWith('blob:')) // 过滤掉 Blob URL
.map(item => item.url);
.filter((item) => item.url && !item.url.startsWith('blob:')) // 过滤掉 Blob URL
.map((item) => item.url)
// 如果还有 Blob URL,说明有文件还未上传完成
const hasBlobUrls = formData.value.images.some(item => item.url && item.url.startsWith('blob:'));
const hasBlobUrls = formData.value.images.some(
(item) => item.url && item.url.startsWith('blob:')
)
if (hasBlobUrls) {
message.warning('请等待图片上传完成后再提交');
formLoading.value = false;
return;
message.warning('请等待图片上传完成后再提交')
formLoading.value = false
return
}
// 构造最终数据
const data = {
...formData.value,
images: imageUrls
};
}
if (formType.value === 'computilityCreate') {
await ComputilityInformationApi.createComputilityInformation(data)
......@@ -243,25 +240,24 @@ const handleUploadSuccess = (response, file, fileList) => {
// 从响应中提取真实的URL并更新文件对象
if (response && response.data) {
// 根据 useUpload.ts 的实现,可能是 response.data.url 或直接是 response.data
const realUrl = response.data.url || response.data;
const realUrl = response.data.url || response.data
if (realUrl) {
file.url = realUrl;
file.url = realUrl
}
}
// 更新 formData.images
formData.value.images = fileList;
formData.value.images = fileList
}
// 上传失败处理函数
const handleUploadError = (err, file, fileList) => {
message.error('图片上传失败: ' + (err.message || '未知错误'))
}
</script>
<style scoped>.upload-tips {
<style scoped>
.upload-tips {
font-size: 12px;
color: #999;
margin-top: 10px;
......
......@@ -6,7 +6,6 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="内容" prop="information">
<el-input
......@@ -17,7 +16,6 @@
class="!w-160px"
/>
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input
v-model="queryParams.title"
......@@ -27,28 +25,7 @@
class="!w-160px"
/>
</el-form-item>
<el-form-item label="链接地址" prop="url">
<el-input
v-model="queryParams.url"
placeholder="请输入链接地址"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="计算资源应用类别" prop="category">-->
<!-- <el-select-->
<!-- v-model="queryParams.category"-->
<!-- placeholder="请选择计算资源应用类别"-->
<!-- clearable-->
<!-- class="!w-240px"-->
<!-- >-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="应用类别" prop="category">
<el-form-item label="计算资源应用类别" prop="category">
<el-select v-model="queryParams.category" placeholder="请选择计算资源应用类别" clearable class="!w-200px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HOME_INFO_COMPUTILITY_TYPE)"
......@@ -60,7 +37,12 @@
</el-form-item>
<el-form-item label="状态" prop="showStatus">
<el-select v-model="queryParams.showStatus" placeholder="请选择状态" clearable class="!w-120px">
<el-select
v-model="queryParams.showStatus"
placeholder="请选择状态"
clearable
class="!w-120px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HOME_INFO_STATUS)"
:key="dict.value"
......@@ -69,55 +51,14 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker-->
<!-- v-model="queryParams.createTime"-->
<!-- value-format="YYYY-MM-DD HH:mm:ss"-->
<!-- type="daterange"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"-->
<!-- class="!w-220px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备注" prop="remark">-->
<!-- <el-input-->
<!-- v-model="queryParams.remark"-->
<!-- placeholder="请输入备注"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('computilityCreate')"
v-hasPermi="['biz:computility-information:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['biz:computility-information:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" />
搜索
</el-button>
<el-button
type="danger"
plain
:disabled="isEmpty(checkedIds)"
@click="handleDeleteBatch"
v-hasPermi="['biz:computility-information:delete']"
>
<Icon icon="ep:delete" class="mr-5px" /> 批量删除
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" />
重置
</el-button>
</el-form-item>
</el-form>
......@@ -125,21 +66,46 @@
<!-- 列表 -->
<ContentWrap>
<div class="bt-b10">
<el-button
type="primary"
plain
@click="openForm('computilityCreate')"
v-hasPermi="['biz:computility-information:create']"
>
<Icon icon="ep:plus" class="mr-5px" />
新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['biz:computility-information:export']"
>
<Icon icon="ep:download" class="mr-5px" />
导出
</el-button>
<el-button
type="danger"
plain
:disabled="isEmpty(checkedIds)"
@click="handleDeleteBatch"
v-hasPermi="['biz:computility-information:delete']"
>
<Icon icon="ep:delete" class="mr-5px" />
批量删除
</el-button>
</div>
<el-table
row-key="id"
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
@selection-change="handleRowCheckboxChange"
row-key="id"
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
@selection-change="handleRowCheckboxChange"
>
<el-table-column type="selection" width="55" />
<!-- <el-table-column label="展示图地址" align="center" prop="image" />-->
<!-- <el-table-column label="展示图地址" align="center" prop="images" width="100">-->
<!-- <template #default="scope">-->
<!-- <img :src="scope.row.images" alt="资源展示图" class="h-36px" />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column type="selection" width="55" />
<el-table-column label="展示图地址" align="center" prop="images" width="100">
<template #default="scope">
<!-- 只显示第一张图片 -->
......@@ -157,26 +123,16 @@
<el-table-column label="标题" align="center" prop="title" />
<el-table-column label="链接地址" align="center" prop="url" />
<el-table-column label="描述内容" align="center" prop="description" />
<!-- <el-table-column label="计算资源应用类别" align="center" prop="category" />-->
<el-table-column label="计算资源应用类别" align="center" prop="category">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HOME_INFO_COMPUTILITY_TYPE" :value="scope.row.category" />
</template>
</el-table-column>
<!-- <el-table-column label="状态" align="center" prop="showStatus" />-->
<el-table-column label="状态" align="center" prop="showStatus">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HOME_INFO_STATUS" :value="Number(scope.row.showStatus)" />
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" min-width="120px">
<template #default="scope">
......@@ -237,7 +193,7 @@ const queryParams = reactive({
showStatus: undefined,
createTime: [],
remark: undefined,
description: '',
description: ''
})
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
......@@ -290,15 +246,15 @@ const handleDeleteBatch = async () => {
try {
// 删除的二次确认
await message.delConfirm()
await ComputilityInformationApi.deleteComputilityInformationList(checkedIds.value);
await ComputilityInformationApi.deleteComputilityInformationList(checkedIds.value)
message.success(t('common.delSuccess'))
await getList();
await getList()
} catch {}
}
const checkedIds = ref<number[]>([])
const handleRowCheckboxChange = (records: ComputilityInformation[]) => {
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