This commit is contained in:
wangchengming 2025-10-27 09:39:58 +08:00
parent d3a5fafc4a
commit 7fc8d59c06
34 changed files with 218 additions and 54 deletions

View File

@ -20,6 +20,7 @@
"@element-plus/icons-vue": "2.3.1",
"@vueup/vue-quill": "1.2.0",
"@vueuse/core": "13.3.0",
"amfe-flexible": "^2.2.1",
"axios": "1.9.0",
"clipboard": "2.0.11",
"echarts": "5.6.0",
@ -29,6 +30,7 @@
"js-beautify": "1.14.11",
"js-cookie": "3.0.5",
"jsencrypt": "3.3.2",
"lib-flexible-computer": "^1.0.2",
"nprogress": "0.2.0",
"pinia": "3.0.2",
"splitpanes": "4.0.4",
@ -40,6 +42,7 @@
},
"devDependencies": {
"@vitejs/plugin-vue": "5.2.4",
"postcss-pxtorem": "^6.1.0",
"sass-embedded": "1.89.1",
"unplugin-auto-import": "0.18.6",
"unplugin-vue-setup-extend-plus": "1.0.1",

View File

@ -4,10 +4,10 @@
<script setup>
import useSettingsStore from '@/store/modules/settings'
import { handleThemeStyle } from '@/utils/theme'
import { handleThemeStyle } from '@/utils/theme'
onMounted(() => {
nextTick(() => {
nextTick(() => {
//
handleThemeStyle(useSettingsStore().theme)
})

View File

@ -77,6 +77,7 @@ export function importSupplier(query) {
url: '/admin/busSupplier/import',
method: 'post',
data: query,
timeout: 1800000, // 1800000毫秒 = 30分钟根据文件大小调整
headers: {
'Content-Type': 'multipart/form-data'
}

View File

@ -44,6 +44,9 @@ import ImagePreview from "@/components/ImagePreview"
// 字典标签组件
import DictTag from '@/components/DictTag'
import 'lib-flexible-computer'
const app = createApp(App)
// 全局方法挂载

View File

@ -122,6 +122,20 @@ export const dynamicRoutes = [
}
]
},
{
path: '/mediaLibrary/detailPage',
component: Layout,
hidden: true,
permissions: ['mediaLibrary:detail'],
children: [
{
path: ':mediaId(\\d+)',
component: () => import('@/views/mediaLibrary/linkMediaDetail'),
name: 'linkMediaDetail',
meta: { title: '媒体详情', activeMenu: '/mediaLibrary' }
}
]
},
{
path: '/mediaLibrary/formPage',
component: Layout,

View File

@ -20,12 +20,12 @@
auto-complete="off" placeholder="账号">
</el-input>
</el-form-item>
<el-form-item prop="email">
<!-- <el-form-item prop="email">
<el-input v-model="forgetForm.email" type="email" size="large" class="custom-input"
auto-complete="off" placeholder="邮箱">
</el-input>
</el-form-item>
<div style="float: right;margin-bottom: 35px;">
</el-form-item> -->
<div style="float: right;margin: 55px 0 35px;">
<router-link to="/login" custom v-slot="{ href }">
<a class="routeLinkText" :href="href">返回登录</a>
</router-link>
@ -78,12 +78,9 @@ const handleForgetPassword = () => {
loading.value = true
resetPwd(forgetForm.value).then(res => {
if (res.code == 200) {
const _email = forgetForm.value.email
ElMessageBox.alert(
`<font color='red'>
恭喜您您的密码重置成功<br>
<br>
稍后会有邮件通知到邮箱${_email}
恭喜您您的密码重置成功<br>
</font>`,
"系统提示",
{

View File

@ -76,8 +76,8 @@ const router = useRouter()
const { proxy } = getCurrentInstance()
const loginForm = ref({
username: "admin",
password: "admin123",
username: null,
password: null,
rememberMe: false,
code: "",
uuid: ""

View File

@ -20,7 +20,7 @@
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="4周/面" align="center" prop="allAroundFace" width="120" />
<el-table-column label="成本单价" align="center" prop="allAroundFace" width="120" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />
@ -118,8 +118,8 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="4周/面" prop="allAroundFace">
<el-input v-model="form.allAroundFace" placeholder="请输入4周/面" />
<el-form-item label="成本单价" prop="allAroundFace">
<el-input v-model="form.allAroundFace" placeholder="请输入成本单价" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -200,7 +200,7 @@ const data = reactive({
unitPrice: [{ required: true, message: "请输入单价", trigger: "blur" }],
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
totalRegularPriceUnit: [{ required: true, message: "请输入总净价单位", trigger: "blur" }],
allAroundFace: [{ required: true, message: "请输入4周/面", trigger: "blur" }],
allAroundFace: [{ required: true, message: "请输入成本单价", trigger: "blur" }],
mediaFeeTotalPrice: [{ required: true, message: "请输入媒体费总价", trigger: "blur" }],
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
totalExposure: [{ required: true, message: "请输入总曝光/人次", trigger: "blur" }],

View File

@ -176,7 +176,7 @@
</el-row>
<el-table ref="tableRef" v-loading="loading" :data="mediaList" @selection-change="handleSelectionChange"
:height="unfoldFlag ? 'calc(100vh - 372px)' : 'calc(100vh - 338px)'">
:min-height="unfoldFlag ? 'calc(100vh - 372px)' : 'calc(100vh - 338px)'">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="媒体名称" align="left" prop="mediaName" width="320">
<template #default="scope">
@ -516,6 +516,7 @@ const handleQuery = () => {
}
/** 重置按钮操作 */
const resetQuery = () => {
multipleChoseArr.value = []
queryParams.value = {
pageNum: 1,
pageSize: 10,

View File

@ -0,0 +1,27 @@
<template>
<div class="app-container">
<media-detail ref="mediaDetailRef" />
</div>
</template>
<script setup name="Post">
import { onMounted, ref } from 'vue';
import { useBackgroundStore } from '@/store/modules/background'
import otherbg from '@/assets/images/otherbg.png'
import mediaDetail from './mediaDetail.vue';
const bgStore = useBackgroundStore()
const route = useRoute()
const mediaDetailRef = ref(null)
//
onMounted(() => {
bgStore.setBgImage(otherbg)
const _mediaId = route.params && route.params.mediaId
if (_mediaId) {
console.log('接收id', _mediaId)
mediaDetailRef.value.linkGetMediaInfo(_mediaId)
}
});
</script>

View File

@ -3,7 +3,7 @@
<template #header>
<div class="card-header">
<span>媒体信息</span>
<el-icon style="float: right;cursor: pointer;" @click="handleClose">
<el-icon style="float: right;cursor: pointer;" @click="handleClose" v-if="showClose">
<Close />
</el-icon>
</div>
@ -482,7 +482,7 @@ const emit = defineEmits(['handleShowList']);
const detailForm = ref({})
const activePriceType = ref('门禁')
const activeNames = ref(['1', '2', '3', '4'])
const showClose = ref(true)
//
const competitiveOfferRef = ref(null)
//
@ -556,6 +556,7 @@ const handleChangeDept = (val) => {
if (detailForm.value.dataScopeDeptName == '网络媒体部' && activePriceType.value == '车库灯箱') garageLightBoxRef.value.getMediaPrice(detailForm.value.id, false)
}
const getMediaInfo = () => {
showClose.value = true
mediaDetail({ mediaId: detailForm.value.id }).then(res => {
detailForm.value = res.data
handleChangeDept(res.data.dataScopeDeptName)
@ -609,7 +610,6 @@ const getMediaInfo = () => {
mRProductionRequirementsRef.value.setFileInfo(fileList)
}
}
})
}
//
@ -620,9 +620,68 @@ const initForm = (_ruleForm) => {
detailForm.value = _ruleForm
if (detailForm.value.id) getMediaInfo()
}
//
const linkGetMediaInfo = (_mediaId) => {
showClose.value = false
mediaDetail({ mediaId: _mediaId }).then(res => {
detailForm.value = res.data
handleChangeDept(res.data.dataScopeDeptName)
if (detailForm.value.mediaFile && detailForm.value.mediaFile.length > 0) {
if (approvalDocumentRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 1)
approvalDocumentRef.value.setFileInfo(fileList)
}
if (exclusiveLicenseFileRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 2)
exclusiveLicenseFileRef.value.setFileInfo(fileList)
}
if (mediaLicenseFileRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 3)
mediaLicenseFileRef.value.setFileInfo(fileList)
}
if (mediaOwnershipRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 4)
mediaOwnershipRef.value.setFileInfo(fileList)
}
if (onceMediaPhotoRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 5)
onceMediaPhotoRef.value.setFileInfo(fileList)
}
if (mediaPicRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 6)
mediaPicRef.value.setFileInfo(fileList)
}
if (mediaVideoRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 7)
mediaVideoRef.value.setFileInfo(fileList)
}
if (stampedPublicationRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 8)
stampedPublicationRef.value.setFileInfo(fileList)
}
if (qualificationFileRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 9)
qualificationFileRef.value.setFileInfo(fileList)
}
if (mediaChainRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 10)
mediaChainRef.value.setFileInfo(fileList)
}
if (journalCataloguePhotoRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 11)
journalCataloguePhotoRef.value.setFileInfo(fileList)
}
if (mRProductionRequirementsRef.value) {
const fileList = detailForm.value.mediaFile.filter(item => item.fileType == 12)
mRProductionRequirementsRef.value.setFileInfo(fileList)
}
}
})
}
// \
defineExpose({
initForm
initForm,
linkGetMediaInfo
});
</script>
<style lang='scss'>
@ -656,7 +715,7 @@ defineExpose({
background: #D9DFE5;
}
.supplierNameLabel {
.mediaNameLabel {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 16px;

View File

@ -32,7 +32,7 @@
</el-col>
</el-row>
<el-table v-if="activeIndex == 0" v-loading="loading" :data="mediaLogList" height="calc(100vh - 310px)">
<el-table v-if="activeIndex == 0" v-loading="loading" :data="mediaLogList" min-height="calc(100vh - 310px)">
<el-table-column label="序号" align="center" width="80">
<template #default="scope">
{{ scope.$index + 1 }}

View File

@ -142,7 +142,7 @@
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="4周/面" align="center" prop="allAroundFace" width="120" />
<el-table-column label="成本单价" align="center" prop="allAroundFace" width="120" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />

View File

@ -22,7 +22,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" :data="noticeListData" height="calc(100vh - 306px)">
<el-table v-loading="loading" :data="noticeListData" min-height="calc(100vh - 306px)">
<el-table-column label="序号" align="center" width="80">
<template #default="scope">
{{ scope.$index + 1 }}

View File

@ -56,7 +56,7 @@
</el-col>
</el-row>
<el-table ref="operlogRef" v-loading="loading" :data="operlogList" height="calc(100vh - 368px)"
<el-table ref="operlogRef" v-loading="loading" :data="operlogList" min-height="calc(100vh - 368px)"
@selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="日志编号" align="center" prop="operId" />

View File

@ -109,7 +109,7 @@
<el-col :span="12">
<el-table ref="tableRef" v-loading="loading" :data="outdoorMediaList"
@selection-change="handleSelectionChange"
:height="unfoldFlag ? 'calc(100vh - 372px)' : 'calc(100vh - 338px)'">
:min-height="unfoldFlag ? 'calc(100vh - 372px)' : 'calc(100vh - 338px)'">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="实景图片" align="left" prop="mediaFileList" width="170">
<template #default="scope">

View File

@ -29,7 +29,7 @@
</el-row>
<el-table v-if="queryParams.type == 1" v-loading="loading" :data="pitchPriceList"
height="calc(100vh - 308px)">
min-height="calc(100vh - 308px)">
<el-table-column label="序号" align="center" width="80">
<template #default="scope">
{{ scope.$index + 1 }}

View File

@ -27,7 +27,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" :data="feedbackList" height="calc(100vh - 308px)">
<el-table v-loading="loading" :data="feedbackList" min-height="calc(100vh - 308px)">
<el-table-column label="序号" align="center" width="80">
<template #default="scope">
{{ scope.$index + 1 }}

View File

@ -134,7 +134,7 @@
</el-row>
<el-table v-loading="loading" :data="supplierList"
:height="unfoldFlag ? 'calc(100vh - 342px)' : 'calc(100vh - 308px)'">
:min-height="unfoldFlag ? 'calc(100vh - 342px)' : 'calc(100vh - 308px)'">
<el-table-column label="序号" align="center" width="80">
<template #default="scope">
{{ scope.$index + 1 }}

View File

@ -256,20 +256,27 @@
</el-row>
</el-collapse-item>
<el-collapse-item title="媒体信息" name="8">
<el-table :data="detailForm.supplierList">
<el-table-column label="媒体名称" align="left" prop="medioName" width="360">
<el-table :data="supplierMediaList">
<el-table-column label="媒体名称" align="left" prop="mediaName">
<template #default="scope">
<span class="supplierNameLabel" @click="handleOpenMedio">{{ scope.row.medioName
}}</span>
<span class="supplierNameLabel" @click="handleOpenMedio(scope.row.id)">{{
scope.row.mediaName
}}</span>
</template>
</el-table-column>
<el-table-column label="媒体编号" align="left" prop="medioCode" />
<el-table-column label="媒体类型" align="left" prop="medioType" />
<el-table-column label="媒体分类" align="left" prop="medioClass" />
<el-table-column label="状态" align="left" prop="medioStatus">
<el-table-column label="媒体编号" align="left" prop="mediaCode" />
<el-table-column label="媒体类型" align="left" prop="mediaTypeStr" />
<el-table-column label="媒体大类" align="left" prop="mediaCategoryStr" />
<el-table-column label="状态" align="left" prop="state">
<template #default="scope">
<el-badge is-dot class="mybadge"></el-badge>
<el-text class="myMedioStatus">生效中</el-text>
<template v-if="scope.row.state == 1">
<el-badge is-dot class="mybadge"></el-badge>
<el-text class="myMedioStatus">生效中</el-text>
</template>
<template v-if="scope.row.state == 2">
<el-badge is-dot class="mybadge2"></el-badge>
<el-text class="myMedioStatus2">已作废</el-text>
</template>
</template>
</el-table-column>
</el-table>
@ -282,8 +289,11 @@
import { onMounted, defineEmits, ref } from 'vue'
import { Close } from '@element-plus/icons-vue'
import { getBusSupplier } from "@/api/supplier"
import { mediaPageList } from "@/api/mediaLibrary"
import supplierDetailFile from '../../components/FileUpload/supplierDetailFile.vue';
import { useRouter } from 'vue-router'
const router = useRouter()
const emit = defineEmits(['handleShowList']);
const detailForm = ref({})
const activeNames = ref(['1', '2', '3', '4'])
@ -294,15 +304,28 @@ const businessLicenseList = ref([])
const otherFileList = ref([])
const mediaRightsList = ref([])
const showClose = ref(true)
//
const supplierMediaList = ref([])
const handleClose = () => {
emit('handleShowList')
}
const handleChange = (val) => {
activeNames.value = val
}
const handleOpenMedio = () => {
const handleOpenMedio = (mediaId) => {
router.push('/mediaLibrary/detailPage/' + mediaId)
}
/** 查询供应商媒体信息列表 */
const getMediaPageList = (supplierId) => {
mediaPageList({
belongSupplierId: supplierId, pageIndex: 1,
pageSize: 1000,
}).then(res => {
supplierMediaList.value = res.data.rows
})
}
//
const getSupplierInfo = (_supplierId) => {
showClose.value = true
@ -317,6 +340,7 @@ const getSupplierInfo = (_supplierId) => {
mediaRightsRef.value?.setFileInfo(mediaRightsList.value)
}
})
getMediaPageList(_supplierId)
}
//
const linkGetSupplierInfo = (_supplierId) => {
@ -332,6 +356,7 @@ const linkGetSupplierInfo = (_supplierId) => {
mediaRightsRef.value?.setFileInfo(mediaRightsList.value)
}
})
getMediaPageList(_supplierId)
}
// \
defineExpose({
@ -391,4 +416,18 @@ defineExpose({
font-size: 16px;
color: #126601;
}
.mybadge2 .el-badge__content.is-dot {
width: 6px;
height: 6px;
background-color: #eb8a0b;
margin-right: 10px;
}
.myMedioStatus2 {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 16px;
color: #eb8a0b;
}
</style>

View File

@ -14,7 +14,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" ref="tableRef" height="calc(100vh - 244px)" :data="regionTreeList" row-key="id"
<el-table v-loading="loading" ref="tableRef" min-height="calc(100vh - 244px)" :data="regionTreeList" row-key="id"
lazy :load="loadChildren" @expand-change="handleExpandChange"
:tree-props="{ children: 'childList', hasChildren: 'hasChildren' }">
<el-table-column prop="name" label="区域名称"></el-table-column>

View File

@ -52,7 +52,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" :data="businessAreaList" height="calc(100vh - 368px)">
<el-table v-loading="loading" :data="businessAreaList" min-height="calc(100vh - 368px)">
<el-table-column label="省/直辖市" align="center" prop="provinceName" />
<el-table-column label="地级市/区" align="center" prop="cityName" />
<el-table-column label="区/县" align="center" prop="countyName" />

View File

@ -34,7 +34,7 @@
</el-col>
</el-row>
<el-table v-if="refreshTable" v-loading="loading" height="calc(100vh - 318px)" :data="deptList"
<el-table v-if="refreshTable" v-loading="loading" min-height="calc(100vh - 318px)" :data="deptList"
row-key="deptId" :default-expand-all="isExpandAll"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
<el-table-column prop="deptName" label="部门名称"></el-table-column>

View File

@ -46,7 +46,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" :data="dataList" height="calc(100vh - 368px)"
<el-table v-loading="loading" :data="dataList" min-height="calc(100vh - 368px)"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="字典编码" width="100" align="center" prop="dictCode" />

View File

@ -51,7 +51,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" :data="typeList" height="calc(100vh - 368px)"
<el-table v-loading="loading" :data="typeList" min-height="calc(100vh - 368px)"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="字典编号" width="100" align="center" prop="dictId" />

View File

@ -14,7 +14,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" ref="tableRef" height="calc(100vh - 244px)" :data="mediaTypeTreeList"
<el-table v-loading="loading" ref="tableRef" min-height="calc(100vh - 244px)" :data="mediaTypeTreeList"
row-key="id" lazy :load="loadChildren" @expand-change="handleExpandChange"
:tree-props="{ children: 'childList', hasChildren: 'hasChildren' }">
<el-table-column prop="name" label="类型名称"></el-table-column>

View File

@ -36,7 +36,7 @@
</el-col>
</el-row>
<el-table v-if="refreshTable" v-loading="loading" height="calc(100vh - 318px)" :data="menuList"
<el-table v-if="refreshTable" v-loading="loading" min-height="calc(100vh - 318px)" :data="menuList"
row-key="menuId" :default-expand-all="isExpandAll"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
<el-table-column prop="menuName" label="菜单名称" :show-overflow-tooltip="true" width="230"></el-table-column>

View File

@ -44,7 +44,7 @@
</el-row>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange"
height="calc(100vh - 368px)">
min-height="calc(100vh - 368px)">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="岗位编号" align="center" prop="postId" />
<el-table-column label="岗位编码" align="center" prop="postCode" />

View File

@ -23,7 +23,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" :data="templateList" height="calc(100vh - 306px)">
<el-table v-loading="loading" :data="templateList" min-height="calc(100vh - 306px)">
<el-table-column label="模板名称" align="center" prop="templateName" />
<el-table-column label="模板类型" align="center" prop="type">
<template #default="scope">

View File

@ -35,7 +35,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" :data="userList" height="calc(100vh - 368px)"
<el-table v-loading="loading" :data="userList" min-height="calc(100vh - 368px)"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户登录名" prop="userName" :show-overflow-tooltip="true" />

View File

@ -48,7 +48,7 @@
</el-row>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="roleList" height="calc(100vh - 368px)"
<el-table v-loading="loading" :data="roleList" min-height="calc(100vh - 368px)"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="角色编号" prop="roleId" />

View File

@ -31,7 +31,7 @@
</el-form>
<h4 class="form-header h4">角色信息</h4>
<el-table v-loading="loading" height="calc(100vh - 450px)" :row-key="getRowKey" @row-click="clickRow" ref="roleRef"
<el-table v-loading="loading" min-height="calc(100vh - 450px)" :row-key="getRowKey" @row-click="clickRow" ref="roleRef"
@selection-change="handleSelectionChange" :data="roles.slice((pageNum - 1) * pageSize, pageNum * pageSize)">
<el-table-column label="序号" width="70" type="index" align="center">
<template #default="scope">

View File

@ -55,7 +55,7 @@
</el-col>
</el-row>
<el-table v-loading="loading" height="calc(100vh - 368px)" :data="userList"
<el-table v-loading="loading" min-height="calc(100vh - 368px)" :data="userList"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" />
<!-- <el-table-column label="用户编号" align="center" key="userId" prop="userId" /> -->

View File

@ -1,6 +1,7 @@
import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
import postcsspxtorem from 'postcss-pxtorem'
const baseUrl = 'http://43.143.229.145:9002/prod-api' // 后端接口
const analysisUrl = 'http://43.143.229.145:9002/ppt-analysis-api'
@ -71,6 +72,25 @@ export default defineConfig(({ mode, command }) => {
css: {
postcss: {
plugins: [
postcsspxtorem({
rootValue: 192, // 设计稿宽度/10
propList: ['*'], // 需要转换的属性列表,*表示所有
unitPrecision: 2, // 默认值: 5 // 作用: rem值的小数位数
exclude: /node_modules/i,
selectorBlackList: [], // 忽略的选择器
replace: true, // 作用: 替换包含rem的规则而不是添加回退
mediaQuery: false, // 作用: 是否在媒体查询中转换px
minPixelValue: 1.5, // 最小转换值
// 作用: 设置要替换的最小像素值
// 示例:
// minPixelValue: 2 - 只有大于等于2px的值才会被转换
// minPixelValue: 1.5 - 1.5px以上的值都会被转换
landscape: false,
landscapeUnit: 'rem', // 默认值: 'vw'
// 作用: 横屏模式使用的单位
landscapeWidth: 568 // 默认值: 568
// 作用: 横屏模式的宽度
}),
{
postcssPlugin: 'internal:charset-removal',
AtRule: {