const formRef = ref<InstanceType<typeof ElTable>>();报错

博客提及Vue报错内容及对应的解决办法,虽未给出具体信息,但核心围绕Vue报错问题的处理。

上报错内容:

TS2344: Type '{ version: string; install: (app: App<any>, options?: Partial<ConfigProviderProps> | undefined) => vo
id; }' does not satisfy the constraint 'abstract new (...args: any) => any'.
  Type '{ version: string; install: (app: App<any>, options?: Partial<ConfigProviderProps> | undefined) => void; }'
 provides no match for the signature 'new (...args: any): any'.

问题解决:

import ElTable,   {ElMessageBox, FormInstance} from "element-plus";

改成

import  {ElTable, ElMessageBox, FormInstance} from "element-plus";
<template> <div class="content-box"> <div class="card filter"> <el-button type="primary" class="add-btn" @click="openDrawer('add', '新增非标准资产', [])">新增非标准资产</el-button> <el-input v-model="filterText" class="filterTextInput" placeholder="请输入" clearable /> <div class="list-box"> <template v-if="filteredTreeData.length"> <div :class="['item', { active: activeTypeItem.id === item.id }]" v-for="item in filteredTreeData" :key="item.id" @click="handleItemClick(item)"> <div>{{item.name}}</div> <div class="right-opearte"> <span @click.stop="openDrawer('edit','编辑数据字典', item)"><i class="el-icon-edit"></i>编辑</span> <span @click.stop="handleDelType(item)"><i class="el-icon-delete"></i>删除</span> </div> </div> </template> </div> </div> <div class="descriptions-box"> <div style="height:100%" v-if="Object.keys(activeTypeItem).length"> <div class="box-tip card"> <el-button type="primary" class="add-btn" @click="openDrawer('childAdd', '新增字段', [])">新增字段</el-button> </div> <ProTable ref="proTable" :columns="columns" :request-api="getTableList" :init-param="initParam" :data-callback="dataCallback" :pagination="false"> <template #operation="scope"> <el-button type="primary" link @click="openDrawer('childEdit','编辑字段', scope.row)">编辑</el-button> <el-button v-if="scope.row.status == 'enabled'" type="primary" style="color:#FF0000" link @click="changeStatus(scope.row)">禁用</el-button> <el-button v-if="scope.row.status == 'disabled'" type="primary" style="color:#49C625" link @click="changeStatus(scope.row)">启用</el-button> <el-button type="primary" link @click="deleteAccount(scope.row)">删除</el-button> </template> </ProTable> </div> <div class="card empty" v-else> <el-empty description="请先选择非标准资产"></el-empty> </div> </div> <!-- 新增非标准字段 --> <addNewFields ref="dialogAddNewFields" /> </div> </template> <script setup lang="ts" name="standardProductFieldManage"> import { ref, reactive,onMounted ,watch} from "vue"; import { ElTree, FormInstance, FormRules, ElMessage } from "element-plus"; import { Supplier } from "@/api/interface"; import { ProTableInstance, ColumnProps } from "@/components/ProTable/interface"; import ProTable from "@/components/ProTable/index.vue"; import addNewFields from "@/views/system/standardProductFieldManage/addNewFields.vue"; import { nonstandardList, editNonstandard, editNonstandardClild, deleteNonstandard ,nonstandardClildList} from '@/api/modules/public'; import { da } from "element-plus/es/locale"; import { useHandleData } from "@/hooks/useHandleData"; // 初始化参数 const pageData = reactive({}) const treeData = ref<any[]>([]); const filteredTreeData = ref<any[]>([]); const activeTypeItem = ref<Record<string, any>>({}); const treeRef = ref<InstanceType<typeof ElTree>>(); const filterText = ref(""); // ProTable 实例 const proTable = ref<ProTableInstance>(); const initParam = reactive({assetNonStandardId:''}); watch( () => filterText.value, (val) => { if (!val) { filteredTreeData.value = treeData.value; } else { const keyword = val.toLowerCase(); filteredTreeData.value = treeData.value.filter(item => item.name?.toLowerCase().includes(keyword) ); } }, { immediate: true } ); onMounted(async () => { getTreeList() }) // 左侧树、 const getTreeList = async () => { const data = await nonstandardList({}); treeData.value = data || []; filteredTreeData.value = data || [] } // 点击左侧,更新右侧列表 const handleItemClick = async (data: any) => { activeTypeItem.value = data; // proTable.value!.pageable.pageNum = 1; initParam.assetNonStandardId = data.id; } // 调用列表接口 const getTableList = async () => { const formData = { assetNonStandardId: activeTypeItem.value.id }; const response = await nonstandardClildList(formData); return { data: Array.isArray(response.data) ? response.data : { nonstandardList:[response.data] }, }; } // 返回列表数据,回显到table上 const dataCallback = (data: any) => { console.log('Array.isArray(data)',data) const deep = data.nonstandardList[0]; const lll = [ { code:'111111', id:'23' } ] return { data: lll, total: deep.totalCount || 0, pageNum: deep.pageCount || 1, pageSize: deep.pageSize || 10 } // return Array.isArray(data) ? data : [data]; // return { // dataListlist: data[0].dataList, // total: data[0].totalCount, // pageNum: data[0].pageNum, // pageSize: data[0].pageSize // } } // const dataCallback = (data: any) => { // console.log('data',data) // return data // } // 表格配置项 const columns = reactive<ColumnProps<Supplier.pageList>[]>([ { prop: "fieldName", label: "单位名称", }, ]) // 调用列表接口 // const getTableList = async () => { // console.log('activeTypeItem.value',activeTypeItem.value) // const formData = { // assetNonStandardId: activeTypeItem.value.id // }; // const response = await nonstandardClildList(formData); // console.log('response',response) // } // const getTableList = (params: any) => { // return nonstandardClildList(params); // } // // 返回列表数据,回显到table上 // const dataCallback = (data: any) => { // console.log('data',data) // return data // } // const refreshTable = () => { // // proTable.value!.pageable.pageNum = 1; // // proTable.value?.refreshData(); // }; // 新增,编辑 const dialogAddNewFields = ref<InstanceType<typeof addNewFields> | null>(null); const openDrawer = async (type: string, title: string, row: any) => { console.log('activeTypeItem.value',activeTypeItem.value) const params = { type: type, title: title, isView: false, row: {...row}, activeTypeItem:{...activeTypeItem.value}, api: type == 'add' || type == 'edit' ? editNonstandard : editNonstandardClild, getTableListData: getTreeList } dialogAddNewFields.value?.acceptParams(params); } // 删除资产 const handleDelType = async (params) => { await useHandleData(deleteNonstandard, { id: params.id }, `确认删除`); getTreeList() } // 修改状态 const changeStatus = async (row: Supplier.pageList) => { } // 删除 const deleteAccount = async (row: Supplier.pageList) => { } </script> <style scoped lang="scss"> @use "@/styles/treeIndex.scss"; .list-box { height: calc(100% - 95px); margin-top: 10px; overflow: auto; } .item { display: flex; justify-content: space-between; padding: 5px 10px; font-size: 14px; color: #606266; cursor: pointer; border-radius: 4px; &.active { background: #e6f5f3 !important; } &:hover { background: rgb(245 247 250); } span { margin-left: 10px; cursor: pointer; i { margin-right: 3px; } &:first-of-type { color: #009688; } &:last-of-type { color: #f56c6c; } } } .empty { width: 100%; height: 100%; .el-empty { transform: translate(0, 50%); } } </style> 报错如何解决useTable.ts:64 [Vue warn]: Invalid prop: type check failed for prop "data". Expected Array, got Object at <ElTable ref="tableRef" data= {data: Array(1), total: 1, pageNum: 1, pageSize: 20}data: [{…}]pageNum: 1pageSize: 20total: 1[[Prototype]]: Object border=true ... > at <ProTable ref="proTable" columns= [{…}] request-api=fn<getTableList> ... > at <StandardProductFieldManage onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< Proxy(Object) {__v_skip: true} > > at </system/standardProductFieldManage key="/system/standardProductFieldManage" > at <KeepAlive include= (2) ['/system/supplier', '/home/index'] > at <BaseTransition mode="out-in" appear=true persisted=false ... > at <Transition appear="" name="fade-transform" mode="out-in" > at <RouterView> at <ElMain> at <Index> at <ElContainer> at <ElContainer class="layout" > at <LayoutVertical> at <Layout onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< Proxy(Object) {__v_skip: true} > > at <RouterView> at <ElConfigProvider size="default" button= {autoInsertSpace: false} > at <App> warn$1 @ chunk-UQWBJQZ5.js?v=58f10a0a:2116 validateProp @ chunk-UQWBJQZ5.js?v=58f10a0a:6468 validateProps @ chunk-UQWBJQZ5.js?v=58f10a0a:6440 updateProps @ chunk-UQWBJQZ5.js?v=58f10a0a:6237 updateComponentPreRender @ chunk-UQWBJQZ5.js?v=58f10a0a:7545 componentUpdateFn @ chunk-UQWBJQZ5.js?v=58f10a0a:7467 run @ chunk-UQWBJQZ5.js?v=58f10a0a:481 updateComponent @ chunk-UQWBJQZ5.js?v=58f10a0a:7342 processComponent @ chunk-UQWBJQZ5.js?v=58f10a0a:7277 patch @ chunk-UQWBJQZ5.js?v=58f10a0a:6782 patchBlockChildren @ chunk-UQWBJQZ5.js?v=58f10a0a:7136 processFragment @ chunk-UQWBJQZ5.js?v=58f10a0a:7214 patch @ chunk-UQWBJQZ5.js?v=58f10a0a:6756 componentUpdateFn @ chunk-UQWBJQZ5.js?v=58f10a0a:7490 run @ chunk-UQWBJQZ5.js?v=58f10a0a:481 runIfDirty @ chunk-UQWBJQZ5.js?v=58f10a0a:519 callWithErrorHandling @ chunk-UQWBJQZ5.js?v=58f10a0a:2263 flushJobs @ chunk-UQWBJQZ5.js?v=58f10a0a:2471 Promise.then queueFlush @ chunk-UQWBJQZ5.js?v=58f10a0a:2385 queueJob @ chunk-UQWBJQZ5.js?v=58f10a0a:2380 effect2.scheduler @ chunk-UQWBJQZ5.js?v=58f10a0a:7532 trigger @ chunk-UQWBJQZ5.js?v=58f10a0a:509 endBatch @ chunk-UQWBJQZ5.js?v=58f10a0a:567 trigger @ chunk-UQWBJQZ5.js?v=58f10a0a:954 set @ chunk-UQWBJQZ5.js?v=58f10a0a:1235 getTableList @ useTable.ts:64 await in getTableList (anonymous) @ index.vue:184 (anonymous) @ chunk-UQWBJQZ5.js?v=58f10a0a:4901 callWithErrorHandling @ chunk-UQWBJQZ5.js?v=58f10a0a:2263 callWithAsyncErrorHandling @ chunk-UQWBJQZ5.js?v=58f10a0a:2270 hook.__weh.hook.__weh @ chunk-UQWBJQZ5.js?v=58f10a0a:4881 flushPostFlushCbs @ chunk-UQWBJQZ5.js?v=58f10a0a:2448 flushJobs @ chunk-UQWBJQZ5.js?v=58f10a0a:2490 Promise.then queueFlush @ chunk-UQWBJQZ5.js?v=58f10a0a:2385 queueJob @ chunk-UQWBJQZ5.js?v=58f10a0a:2380 effect2.scheduler @ chunk-UQWBJQZ5.js?v=58f10a0a:7532 trigger @ chunk-UQWBJQZ5.js?v=58f10a0a:509 endBatch @ chunk-UQWBJQZ5.js?v=58f10a0a:567 notify @ chunk-UQWBJQZ5.js?v=58f10a0a:827 trigger @ chunk-UQWBJQZ5.js?v=58f10a0a:801 set value @ chunk-UQWBJQZ5.js?v=58f10a0a:1673 handleItemClick @ index.vue:97 onClick @ index.vue:9 callWithErrorHandling @ chunk-UQWBJQZ5.js?v=58f10a0a:2263 callWithAsyncErrorHandling @ chunk-UQWBJQZ5.js?v=58f10a0a:2270 invoker @ chunk-UQWBJQZ5.js?v=58f10a0a:11202 useTable.ts:64 [Vue warn]: Unhandled error during execution of app errorHandler at <ElTable ref="tableRef" data= {data: Array(1), total: 1, pageNum: 1, pageSize: 20} border=true ... > at <ProTable ref="proTable" columns= [{…}] request-api=fn<getTableList> ... > at <StandardProductFieldManage onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< Proxy(Object) {__v_skip: true} > > at </system/standardProductFieldManage key="/system/standardProductFieldManage" > at <KeepAlive include= (2) ['/system/supplier', '/home/index'] > at <BaseTransition mode="out-in" appear=true persisted=false ... > at <Transition appear="" name="fade-transform" mode="out-in" > at <RouterView> at <ElMain> at <Index> at <ElContainer> at <ElContainer class="layout" > at <LayoutVertical> at <Layout onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< Proxy(Object) {__v_skip: true} > > at <RouterView> at <ElConfigProvider size="default" button= {autoInsertSpace: false} > at <App>
08-01
<template> <el-drawer v-model="drawerVisible" title="列设置" size="450px" :close-on-click-modal="false"> <div class="table-main"> <el-table :data="tableData" border row-key="prop"> <el-table-column prop="label" label="列名" align="center" /> <el-table-column prop="isShow" label="显示" align="center"> <template #default="{ row }"> <el-switch v-model="row.isShow" @change="handleColumnChange(row)" /> </template> </el-table-column> <el-table-column v-slot="scope" prop="sortable" align="center" label="排序"> <el-switch v-model="scope.row.sortable"></el-switch> </el-table-column> </el-table> </div> </el-drawer> </template> <script setup lang="ts"> import { ref } from 'vue'; import { ColumnProps } from "@/components/ProTable/interface"; const props = defineProps<{ colSetting: ColumnProps[] }>(); const emit = defineEmits(['update:colSetting']); const drawerVisible = ref(false); const tableData = ref<ColumnProps[]>([]); const openColSetting = (columns: ColumnProps[]) => { tableData.value = [...columns]; drawerVisible.value = true; }; const handleColumnChange = (changedColumn: ColumnProps) => { emit('update:colSetting', tableData.value); }; defineExpose({ openColSetting }); </script><template> <div class="content-box"> <div class="card filter"> <el-button type="primary" class="add-btn" @click="openDrawer('add', '新增非标准资产', [])">新增非标准资产</el-button> <el-input v-model="filterText" class="filterTextInput" placeholder="请输入" clearable /> <div class="list-box"> <template v-if="filteredTreeData.length"> <div :class="['item', { active: activeTypeItem.id === item.id }]" v-for="item in filteredTreeData" :key="item.id" @click="handleItemClick(item)"> <div>{{item.name}}</div> <div class="right-opearte"> <span @click.stop="openDrawer('edit','编辑数据字典', item)"><i class="el-icon-edit"></i>编辑</span> <span @click.stop="handleDelType(item)"><i class="el-icon-delete"></i>删除</span> </div> </div> </template> </div> </div> <div class="descriptions-box"> <div style="height:100%;width:100%" v-if="Object.keys(activeTypeItem).length"> <div class="box-tip card"> <el-button type="primary" class="add-btn" @click="openDrawer('childAdd', '新增字段', [])">新增字段</el-button> </div> <div class="table-main card" style="height: calc(100% - 65px);"> <div class="table-header"> <div v-if="toolButton" class="header-button-ri"> <slot name="toolButton"> <el-button :icon="Refresh" circle @click="refreshData" /> <el-button :icon="Operation" circle @click="openColSetting" /> </slot> </div> </div> <el-table :data="tableData" ref="tableRef" border style="width: 100%" :header-cell-style="{ background: '#f5f7fa', color: '#606266', textAlign: 'center' }"> <template v-for="col in tableColumns.filter(c => c.isShow)" :key="col.prop"> <el-table-column v-if="col.prop !== 'operation'" :prop="col.prop" :label="col.label" align="center" :sortable="col.sortable ? 'custom' : false" @sort-change="handleSortChange" /> <el-table-column v-else label="操作" align="center" fixed="right"> <template #default="scope"> <el-button type="primary" link @click="openDrawer('childEdit','编辑字段', scope.row)">编辑</el-button> <el-button v-if="scope.row.status == '1'" type="primary" style="color:#FF0000" link @click="changeStatus(scope.row,0)">禁用</el-button> <el-button v-if="scope.row.status == '0'" type="primary" style="color:#49C625" link @click="changeStatus(scope.row,1)">启用</el-button> <el-button type="primary" link @click="deleteAccount(scope.row)">删除</el-button> </template> </el-table-column> </template> </el-table> <!-- <el-table :data="tableData" ref="tableRef" border style="width: 100%" :header-cell-style="{ background: '#f5f7fa', color: '#606266', textAlign: 'center' }"> <template v-for="col in tableColumns.filter(c => c.isShow)" :key="col.prop"> <el-table-column v-if="col.prop !== 'operation'" :prop="col.prop" :label="col.label" align="center" /> <el-table-column v-else label="操作" align="center"> <template #default="scope"> <el-button type="primary" link @click="openDrawer('childEdit','编辑字段', scope.row)">编辑</el-button> <el-button v-if="scope.row.status == '1'" type="primary" style="color:#FF0000" link @click="changeStatus(scope.row,0)">禁用</el-button> <el-button v-if="scope.row.status == '0'" type="primary" style="color:#49C625" link @click="changeStatus(scope.row,1)">启用</el-button> <el-button type="primary" link @click="deleteAccount(scope.row)">删除</el-button> </template> </el-table-column> </template> </el-table> --> <!-- <el-table :data="tableData" ref="tableRef" border style="width: 100%" :header-cell-style="{ background: '#f5f7fa', color: '#606266', textAlign: 'center' }"> <el-table-column prop="fieldName" label="字段名称" align="center"/> <el-table-column prop="isRequire" label="必填项" align="center" /> <el-table-column prop="sort" label="排序" align="center"/> <el-table-column prop="status" label="状态" align="center"> <template #default="scope"> <ElTag :type="scope.row.status == 1 ? 'success' : 'danger'">{{scope.row.status == 1 ? '启用' :'禁用'}}</ElTag> </template> </el-table-column> <el-table-column label="操作" align="center"> <template #default="scope"> <el-button type="primary" link @click="openDrawer('childEdit','编辑字段', scope.row)">编辑</el-button> <el-button v-if="scope.row.status == '1'" type="primary" style="color:#FF0000" link @click="changeStatus(scope.row,0)">禁用</el-button> <el-button v-if="scope.row.status == '0'" type="primary" style="color:#49C625" link @click="changeStatus(scope.row,1)">启用</el-button> <el-button type="primary" link @click="deleteAccount(scope.row)">删除</el-button> </template> </el-table-column> <template #empty> <div class="table-empty"> <slot name="empty"> <img src="@/assets/images/notData.png" alt="notData" /> <div>暂无数据</div> </slot> </div> </template> </el-table> --> <Pagination v-if="tableData.length > 0" :pageable="pagination" :handle-size-change="handleSizeChange" :handle-current-change="handleCurrentChange" /> </div> </div> <div class="card empty" v-else> <el-empty description="请先选择非标准资产"></el-empty> </div> </div> <!-- 新增非标准字段 --> <addNewFields ref="dialogAddNewFields" /> <!-- 列设置 --> <ColSetting v-if="toolButton" ref="colRef" v-model:col-setting="colSetting" /> </div> </template> <script setup lang="ts" name="standardProductFieldManage"> import { ref, reactive,onMounted ,watch} from "vue"; import { ElTree,ElTable, FormInstance, FormRules, ElMessage,ElTag } from "element-plus"; import { Supplier } from "@/api/interface"; import Pagination from "@/components/ProTable/components/Pagination.vue"; import { ProTableInstance, ColumnProps,TypeProps } from "@/components/ProTable/interface"; import { Refresh, Operation, Search } from "@element-plus/icons-vue"; // import ColSetting from "@/components/ProTable/components/ColSetting.vue"; import ColSetting from './ColSetting.vue' import addNewFields from "@/views/system/standardProductFieldManage/addNewFields.vue"; import { nonstandardList, editNonstandard, editNonstandardClild, deleteNonstandard ,nonstandardClildList,statusNonstandardClild,deleteNonstandardClild} from '@/api/modules/public'; import { da } from "element-plus/es/locale"; import { useHandleData } from "@/hooks/useHandleData"; // 初始化参数 const treeData = ref<any[]>([]); const filteredTreeData = ref<any[]>([]); const activeTypeItem = ref<Record<string, any>>({}); const filterText = ref(""); const toolButton = ref(true) // 右侧表格数据 const tableData = ref<any[]>([]); const tableRef = ref<InstanceType<typeof ElTable>>(); // 获取表格实例 const pagination = ref({ pageNum: 1, pageSize: 10, total: 0, }); watch( () => filterText.value, (val) => { if (!val) { filteredTreeData.value = treeData.value; } else { const keyword = val.toLowerCase(); filteredTreeData.value = treeData.value.filter(item => item.name?.toLowerCase().includes(keyword) ); } }, { immediate: true } ); onMounted(async () => { getTreeList() }) // 左侧树、 const getTreeList = async () => { const data = await nonstandardList({}); treeData.value = data || []; filteredTreeData.value = data || [] // 编辑数据后,右侧数据更新 if (Object.keys(activeTypeItem.value).length > 0) { getTableList() } } // 点击左侧,更新右侧列表 const handleItemClick = async (data: any) => { activeTypeItem.value = data; getTableList() } const handleSizeChange = (size) => { pagination.value.pageSize = size; getTableList(); }; const handleCurrentChange = (currentPage) => { pagination.value.pageNum = currentPage; getTableList(); } // 刷新 const refreshData = () => { pagination.value.pageNum = 1 getTableList(); } // 接收 columns 并设置 const tableColumns = ref<ColumnProps[]>([ { prop: "fieldName", label: "字段名称", isShow: true, sortable: false }, { prop: "isRequire", label: "必填项", isShow: true, sortable: false }, { prop: "sort", label: "排序", isShow: true, sortable: false }, { prop: "status", label: "状态", isShow: true, sortable: false }, { prop: "operation", label: "操作", isShow: true, sortable: false } ]); const colRef = ref(); // 修改 colSetting 的初始化方式 const colSetting = ref<ColumnProps[]>([]); // 修改 openColSetting 方法 const openColSetting = () => { colRef.value.openColSetting(tableColumns.value); }; // 处理排序逻辑 const handleSortChange = ({ prop, order }) => { if (order) { tableData.value.sort((a, b) => { if (order === 'ascending') { return a[prop] > b[prop] ? 1 : -1; } else { return a[prop] < b[prop] ? 1 : -1; } }); } else { // 恢复默认排序 getTableList(); } }; // 调用列表接口 const getTableList = async () => { const formData = { assetNonStandardId: activeTypeItem.value.id, pageNum: pagination.value.pageNum, pageSize: pagination.value.pageSize, }; const { code, msg, data } = await nonstandardClildList(formData) if(code == 0) { tableData.value = data.dataList; pagination.value.total = data.totalCount; } else { ElMessage.error(msg); } } // 新增,编辑 const dialogAddNewFields = ref<InstanceType<typeof addNewFields> | null>(null); const openDrawer = async (type: string, title: string, row: any) => { console.log('activeTypeItem.value',activeTypeItem.value) const params = { type: type, title: title, isView: false, row: {...row}, activeTypeItem:{...activeTypeItem.value}, api: type == 'add' || type == 'edit' ? editNonstandard : editNonstandardClild, getTableListData: getTreeList } dialogAddNewFields.value?.acceptParams(params); } // 删除资产 const handleDelType = async (params) => { await useHandleData(deleteNonstandard, { id: params.id }, `确认删除`); getTreeList() } // 修改状态 const changeStatus = async (row: Supplier.pageList,type:string) => { await useHandleData(statusNonstandardClild, { id: row.id, status: type }, `确定${type == 1 ? '启用' : '禁用'}`); getTreeList(); } // 删除 const deleteAccount = async (row: Supplier.pageList) => { await useHandleData(deleteNonstandardClild, { id: row.id }, `确认删除`); getTreeList() } </script> <style scoped lang="scss"> @use "@/styles/treeIndex.scss"; .list-box { height: calc(100% - 95px); margin-top: 10px; overflow: auto; } .item { display: flex; justify-content: space-between; padding: 5px 10px; font-size: 14px; color: #606266; cursor: pointer; border-radius: 4px; &.active { background: #e6f5f3 !important; } &:hover { background: rgb(245 247 250); } span { margin-left: 10px; cursor: pointer; i { margin-right: 3px; } &:first-of-type { color: #009688; } &:last-of-type { color: #f56c6c; } } } .empty { width: 100%; height: 100%; .el-empty { transform: translate(0, 50%); } } .descriptions-box{ width: calc(100% - 430px); } .bindUserRight_bottom{ display: flex; justify-content: flex-end; margin-top: 20px; } </style> 列表如何排序
最新发布
08-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值