Commit 83910851 by 孙美琪

图标+号显示修改

parent 0eadb0af
...@@ -7,31 +7,37 @@ ...@@ -7,31 +7,37 @@
label-width="100px" label-width="100px"
v-loading="formLoading" v-loading="formLoading"
> >
<!-- <el-form-item label="轮播图地址" prop="image">--> <!-- <el-form-item label="轮播图地址" prop="image">-->
<!-- <UploadImg v-model="formData.image" />--> <!-- <UploadImg v-model="formData.image" />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="轮播图地址" prop="images"> <el-form-item label="轮播图地址" prop="images">
<el-upload <div class="dialog-box">
v-model:file-list="formData.images" <el-upload
:action="uploadUrl" v-model:file-list="formData.images"
:http-request="httpRequest" :action="uploadUrl"
list-type="picture-card" :http-request="httpRequest"
:on-preview="handlePictureCardPreview" list-type="picture-card"
:on-remove="handleRemove" :on-preview="handlePictureCardPreview"
:on-success="handleUploadSuccess" :on-remove="handleRemove"
:on-error="handleUploadError" :on-success="handleUploadSuccess"
multiple :on-error="handleUploadError"
> multiple
<i class="el-icon-plus"></i> >
</el-upload> <el-icon>
<!-- 添加预览对话框 --> <Plus />
<el-dialog v-model="previewVisible" append-to-body> </el-icon>
<img style="width: 100%" :src="dialogImageUrl" alt="Preview Image" /> </el-upload>
</el-dialog> <!-- 添加预览对话框 -->
<!-- 添加提示信息 --> <el-dialog v-model="previewVisible" append-to-body>
<p class="upload-tips"> <img style="width: 100%" :src="dialogImageUrl" alt="Preview Image" />
请上传 大小不超过 <span class="red-text">5MB</span> 格式为 <span class="red-text">png/jpg/jpeg</span> 的文件 </el-dialog>
</p> <!-- 添加提示信息 -->
<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>
<el-form-item label="内容" prop="information"> <el-form-item label="内容" prop="information">
...@@ -49,11 +55,11 @@ ...@@ -49,11 +55,11 @@
<el-form-item label="排序值" prop="orderNum"> <el-form-item label="排序值" prop="orderNum">
<el-input v-model="formData.orderNum" placeholder="请输入排序值" /> <el-input v-model="formData.orderNum" placeholder="请输入排序值" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="状态" prop="showStatus">--> <!-- <el-form-item label="状态" prop="showStatus">-->
<!-- <el-radio-group v-model="formData.showStatus">--> <!-- <el-radio-group v-model="formData.showStatus">-->
<!-- <el-radio value="1">请选择字典生成</el-radio>--> <!-- <el-radio value="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>--> <!-- </el-radio-group>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="状态" prop="showStatus"> <el-form-item label="状态" prop="showStatus">
<el-radio-group v-model="formData.showStatus"> <el-radio-group v-model="formData.showStatus">
<el-radio <el-radio
...@@ -80,6 +86,7 @@ ...@@ -80,6 +86,7 @@
import { BannerInfoApi, BannerInfo } from '@/api/biz/bannerinfo' import { BannerInfoApi, BannerInfo } from '@/api/biz/bannerinfo'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { useUpload } from '@/components/UploadFile/src/useUpload' import { useUpload } from '@/components/UploadFile/src/useUpload'
import { Plus } from '@element-plus/icons-vue'
/** banner页管理 表单 */ /** banner页管理 表单 */
defineOptions({ name: 'BannerInfoForm' }) defineOptions({ name: 'BannerInfoForm' })
...@@ -113,7 +120,7 @@ const formRules = reactive({ ...@@ -113,7 +120,7 @@ const formRules = reactive({
information: [{ required: true, message: '内容不能为空', trigger: 'blur' }], information: [{ required: true, message: '内容不能为空', trigger: 'blur' }],
title: [{ required: true, message: '标题不能为空', trigger: 'blur' }], title: [{ required: true, message: '标题不能为空', trigger: 'blur' }],
showStatus: [{ required: true, message: '状态:0-已隐藏,1-已显示不能为空', trigger: 'blur' }], showStatus: [{ required: true, message: '状态:0-已隐藏,1-已显示不能为空', trigger: 'blur' }],
orderNum: [{ required: true, message: '排序值不能为空', trigger: 'blur' }], orderNum: [{ required: true, message: '排序值不能为空', trigger: 'blur' }]
}) })
const formRef = ref() // 表单 Ref const formRef = ref() // 表单 Ref
...@@ -135,12 +142,11 @@ const open = async (type: string, id?: number) => { ...@@ -135,12 +142,11 @@ const open = async (type: string, id?: number) => {
} }
// 将 images 字段转换为 file-list 需要的格式 // 将 images 字段转换为 file-list 需要的格式
if (data.images && Array.isArray(data.images)) { 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 { } else {
formData.value.images = [] formData.value.images = []
} }
formData.value = { ...data, images: formData.value.images } // 确保 image 是数组 formData.value = { ...data, images: formData.value.images } // 确保 image 是数组
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
...@@ -158,22 +164,24 @@ const submitForm = async () => { ...@@ -158,22 +164,24 @@ const submitForm = async () => {
try { try {
// 确保只提取真实的 URL,而不是本地的 Blob URL // 确保只提取真实的 URL,而不是本地的 Blob URL
const imageUrls = formData.value.images const imageUrls = formData.value.images
.filter(item => item.url && !item.url.startsWith('blob:')) // 过滤掉 Blob URL .filter((item) => item.url && !item.url.startsWith('blob:')) // 过滤掉 Blob URL
.map(item => item.url); .map((item) => item.url)
// 如果还有 Blob 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) { if (hasBlobUrls) {
message.warning('请等待图片上传完成后再提交'); message.warning('请等待图片上传完成后再提交')
formLoading.value = false; formLoading.value = false
return; return
} }
// 构造最终数据 // 构造最终数据
const data = { const data = {
...formData.value, ...formData.value,
images: imageUrls images: imageUrls
}; }
if (formType.value === 'bannerCreate') { if (formType.value === 'bannerCreate') {
await BannerInfoApi.createBannerInfo(data) await BannerInfoApi.createBannerInfo(data)
...@@ -224,24 +232,29 @@ const handleUploadSuccess = (response, file, fileList) => { ...@@ -224,24 +232,29 @@ const handleUploadSuccess = (response, file, fileList) => {
// 从响应中提取真实的URL并更新文件对象 // 从响应中提取真实的URL并更新文件对象
if (response && response.data) { if (response && response.data) {
// 根据 useUpload.ts 的实现,可能是 response.data.url 或直接是 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) { if (realUrl) {
file.url = realUrl; file.url = realUrl
} }
} }
// 更新 formData.images // 更新 formData.images
formData.value.images = fileList; formData.value.images = fileList
} }
// 上传失败处理函数 // 上传失败处理函数
const handleUploadError = (err, file, fileList) => { const handleUploadError = (err, file, fileList) => {
message.error('图片上传失败: ' + (err.message || '未知错误')) message.error('图片上传失败: ' + (err.message || '未知错误'))
} }
</script> </script>
<style scoped>.upload-tips { <style scoped>
.dialog-box {
display: flex;
flex-direction: column;
}
.upload-tips {
font-size: 12px; font-size: 12px;
color: #999; color: #999;
margin-top: 10px; margin-top: 10px;
......
...@@ -35,18 +35,23 @@ ...@@ -35,18 +35,23 @@
class="!w-200px" class="!w-200px"
/> />
</el-form-item> </el-form-item>
<!-- <el-form-item label="排序值" prop="orderNum">--> <!-- <el-form-item label="排序值" prop="orderNum">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="queryParams.orderNum"--> <!-- v-model="queryParams.orderNum"-->
<!-- placeholder="请输入排序值"--> <!-- placeholder="请输入排序值"-->
<!-- clearable--> <!-- clearable-->
<!-- @keyup.enter="handleQuery"--> <!-- @keyup.enter="handleQuery"-->
<!-- class="!w-160px"--> <!-- class="!w-160px"-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="状态" prop="showStatus"> <el-form-item label="状态" prop="showStatus">
<el-select v-model="queryParams.showStatus" placeholder="请选择状态" clearable class="!w-200px"> <el-select
v-model="queryParams.showStatus"
placeholder="请选择状态"
clearable
class="!w-200px"
>
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HOME_INFO_STATUS)" v-for="dict in getIntDictOptions(DICT_TYPE.HOME_INFO_STATUS)"
:key="dict.value" :key="dict.value"
...@@ -56,46 +61,53 @@ ...@@ -56,46 +61,53 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="状态" prop="showStatus">--> <!-- <el-form-item label="状态" prop="showStatus">-->
<!-- <el-select--> <!-- <el-select-->
<!-- v-model="queryParams.showStatus"--> <!-- v-model="queryParams.showStatus"-->
<!-- placeholder="请选择状态:0-已隐藏,1-已显示"--> <!-- placeholder="请选择状态:0-已隐藏,1-已显示"-->
<!-- clearable--> <!-- clearable-->
<!-- class="!w-240px"--> <!-- class="!w-240px"-->
<!-- >--> <!-- >-->
<!-- <el-option label="请选择字典生成" value="" />--> <!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="创建时间" prop="createTime">--> <!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker--> <!-- <el-date-picker-->
<!-- v-model="queryParams.createTime"--> <!-- v-model="queryParams.createTime"-->
<!-- value-format="YYYY-MM-DD HH:mm:ss"--> <!-- value-format="YYYY-MM-DD HH:mm:ss"-->
<!-- type="daterange"--> <!-- type="daterange"-->
<!-- start-placeholder="开始日期"--> <!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"--> <!-- end-placeholder="结束日期"-->
<!-- :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"--> <!-- :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"-->
<!-- class="!w-220px"--> <!-- class="!w-220px"-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="备注" prop="remark">--> <!-- <el-form-item label="备注" prop="remark">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="queryParams.remark"--> <!-- v-model="queryParams.remark"-->
<!-- 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> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery">
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <Icon icon="ep:search" class="mr-5px" />
搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" />
重置
</el-button>
<el-button <el-button
type="primary" type="primary"
plain plain
@click="openForm('bannerCreate')" @click="openForm('bannerCreate')"
v-hasPermi="['biz:banner-info:create']" v-hasPermi="['biz:banner-info:create']"
> >
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" />
新增
</el-button> </el-button>
<el-button <el-button
type="success" type="success"
...@@ -104,16 +116,18 @@ ...@@ -104,16 +116,18 @@
:loading="exportLoading" :loading="exportLoading"
v-hasPermi="['biz:banner-info:export']" v-hasPermi="['biz:banner-info:export']"
> >
<Icon icon="ep:download" class="mr-5px" /> 导出 <Icon icon="ep:download" class="mr-5px" />
导出
</el-button> </el-button>
<el-button <el-button
type="danger" type="danger"
plain plain
:disabled="isEmpty(checkedIds)" :disabled="isEmpty(checkedIds)"
@click="handleDeleteBatch" @click="handleDeleteBatch"
v-hasPermi="['biz:banner-info:delete']" v-hasPermi="['biz:banner-info:delete']"
> >
<Icon icon="ep:delete" class="mr-5px" /> 批量删除 <Icon icon="ep:delete" class="mr-5px" />
批量删除
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -122,21 +136,21 @@ ...@@ -122,21 +136,21 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table <el-table
row-key="id" row-key="id"
v-loading="loading" v-loading="loading"
:data="list" :data="list"
:stripe="true" :stripe="true"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
@selection-change="handleRowCheckboxChange" @selection-change="handleRowCheckboxChange"
> >
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="排序值" align="center" prop="orderNum" /> <el-table-column label="排序值" align="center" prop="orderNum" />
<!-- <el-table-column label="轮播图地址" align="center" prop="image" />--> <!-- <el-table-column label="轮播图地址" align="center" prop="image" />-->
<!-- <el-table-column label="轮播图地址" align="center" prop="images" width="100">--> <!-- <el-table-column label="轮播图地址" align="center" prop="images" width="100">-->
<!-- <template #default="scope">--> <!-- <template #default="scope">-->
<!-- <img :src="scope.row.images" alt="轮播图" class="h-36px" />--> <!-- <img :src="scope.row.images" alt="轮播图" class="h-36px" />-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column label="轮播图地址" align="center" prop="images" width="100"> <el-table-column label="轮播图地址" align="center" prop="images" width="100">
<template #default="scope"> <template #default="scope">
<!-- 只显示第一张图片 --> <!-- 只显示第一张图片 -->
...@@ -154,20 +168,20 @@ ...@@ -154,20 +168,20 @@
<el-table-column label="标题" align="center" prop="title" /> <el-table-column label="标题" align="center" prop="title" />
<el-table-column label="链接地址" align="center" prop="url" /> <el-table-column label="链接地址" align="center" prop="url" />
<el-table-column label="描述内容" align="center" prop="description" /> <el-table-column label="描述内容" align="center" prop="description" />
<!-- <el-table-column label="状态" align="center" prop="showStatus" />--> <!-- <el-table-column label="状态" align="center" prop="showStatus" />-->
<el-table-column label="状态" align="center" prop="showStatus"> <el-table-column label="状态" align="center" prop="showStatus">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.HOME_INFO_STATUS" :value="scope.row.showStatus" /> <dict-tag :type="DICT_TYPE.HOME_INFO_STATUS" :value="scope.row.showStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <!-- <el-table-column-->
label="创建时间" <!-- label="创建时间"-->
align="center" <!-- align="center"-->
prop="createTime" <!-- prop="createTime"-->
:formatter="dateFormatter" <!-- :formatter="dateFormatter"-->
width="180px" <!-- width="180px"-->
/> <!-- />-->
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" min-width="120px"> <el-table-column label="操作" align="center" min-width="120px">
<template #default="scope"> <template #default="scope">
...@@ -230,7 +244,7 @@ const queryParams = reactive({ ...@@ -230,7 +244,7 @@ const queryParams = reactive({
showStatus: undefined, showStatus: undefined,
createTime: [], createTime: [],
remark: undefined, remark: undefined,
url: undefined, url: undefined
}) })
const queryFormRef = ref() // 搜索的表单 const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中 const exportLoading = ref(false) // 导出的加载中
...@@ -283,15 +297,15 @@ const handleDeleteBatch = async () => { ...@@ -283,15 +297,15 @@ const handleDeleteBatch = async () => {
try { try {
// 删除的二次确认 // 删除的二次确认
await message.delConfirm() await message.delConfirm()
await BannerInfoApi.deleteBannerInfoList(checkedIds.value); await BannerInfoApi.deleteBannerInfoList(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: BannerInfo[]) => { const handleRowCheckboxChange = (records: BannerInfo[]) => {
checkedIds.value = records.map((item) => item.id); checkedIds.value = records.map((item) => item.id)
} }
/** 导出按钮操作 */ /** 导出按钮操作 */
...@@ -312,5 +326,10 @@ const handleExport = async () => { ...@@ -312,5 +326,10 @@ const handleExport = async () => {
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
getList() getList()
console.log(
getIntDictOptions(DICT_TYPE.HOME_INFO_STATUS),
'getIntDictOptions(DICT_TYPE.HOME_INFO_STATUS)'
)
}) })
</script> </script>
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
:on-error="handleUploadError" :on-error="handleUploadError"
multiple multiple
> >
<i class="el-icon-plus"></i> <el-icon><Plus /></el-icon>
</el-upload> </el-upload>
<!-- 添加预览对话框 --> <!-- 添加预览对话框 -->
<el-dialog v-model="previewVisible" append-to-body> <el-dialog v-model="previewVisible" append-to-body>
...@@ -96,6 +96,7 @@ import { ComputilityInformationApi, ComputilityInformation } from '@/api/biz/com ...@@ -96,6 +96,7 @@ import { ComputilityInformationApi, ComputilityInformation } from '@/api/biz/com
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { useUpload } from '@/components/UploadFile/src/useUpload' import { useUpload } from '@/components/UploadFile/src/useUpload'
import {Plus} from "@element-plus/icons-vue";
// 添加预览相关的响应式变量 // 添加预览相关的响应式变量
const previewVisible = ref(false) const previewVisible = ref(false)
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
:on-error="handleUploadError" :on-error="handleUploadError"
multiple multiple
> >
<i class="el-icon-plus"></i> <el-icon><Plus /></el-icon>
</el-upload> </el-upload>
<!-- 添加预览对话框 --> <!-- 添加预览对话框 -->
<el-dialog v-model="previewVisible" append-to-body> <el-dialog v-model="previewVisible" append-to-body>
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
:on-error="handleUploadError" :on-error="handleUploadError"
multiple multiple
> >
<i class="el-icon-plus"></i> <el-icon><Plus /></el-icon>
</el-upload> </el-upload>
<!-- 添加预览对话框 --> <!-- 添加预览对话框 -->
<el-dialog v-model="previewVisible" append-to-body> <el-dialog v-model="previewVisible" append-to-body>
...@@ -120,6 +120,7 @@ import { IndustryApplicationApi, IndustryApplication } from '@/api/biz/industrya ...@@ -120,6 +120,7 @@ import { IndustryApplicationApi, IndustryApplication } from '@/api/biz/industrya
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { useUpload } from '@/components/UploadFile/src/useUpload' import { useUpload } from '@/components/UploadFile/src/useUpload'
import {Plus} from "@element-plus/icons-vue";
// 添加预览相关的响应式变量 // 添加预览相关的响应式变量
const previewVisible = ref(false) const previewVisible = ref(false)
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
:on-error="handleUploadError" :on-error="handleUploadError"
multiple multiple
> >
<i class="el-icon-plus"></i> <el-icon><Plus /></el-icon>
</el-upload> </el-upload>
<!-- 添加预览对话框 --> <!-- 添加预览对话框 -->
<el-dialog v-model="previewVisible" append-to-body> <el-dialog v-model="previewVisible" append-to-body>
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
import { InformationApi, Information } from '@/api/biz/information' import { InformationApi, Information } from '@/api/biz/information'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { useUpload } from '@/components/UploadFile/src/useUpload' import { useUpload } from '@/components/UploadFile/src/useUpload'
import {Plus} from "@element-plus/icons-vue";
// 添加预览相关的响应式变量 // 添加预览相关的响应式变量
const previewVisible = ref(false) const previewVisible = ref(false)
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
:on-error="handleUploadError" :on-error="handleUploadError"
multiple multiple
> >
<i class="el-icon-plus"></i> <el-icon><Plus /></el-icon>
</el-upload> </el-upload>
<!-- 添加预览对话框 --> <!-- 添加预览对话框 -->
<el-dialog v-model="previewVisible" append-to-body> <el-dialog v-model="previewVisible" append-to-body>
...@@ -71,6 +71,7 @@ import { PartnerApi, Partner } from '@/api/biz/partner' ...@@ -71,6 +71,7 @@ import { PartnerApi, Partner } from '@/api/biz/partner'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { useUpload } from '@/components/UploadFile/src/useUpload' import { useUpload } from '@/components/UploadFile/src/useUpload'
import {Plus} from "@element-plus/icons-vue";
// 添加预览相关的响应式变量 // 添加预览相关的响应式变量
const previewVisible = ref(false) const previewVisible = ref(false)
......
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