| | |
| | | "private": true, |
| | | "version": "0.0.0", |
| | | "type": "module", |
| | | "main": "index.js", |
| | | "license": "MIT", |
| | | "scripts": { |
| | | "dev": "vite", |
| | |
| | | <script setup lang="ts"> |
| | | import { ref } from 'vue'; |
| | | import Header from './layout/Header.vue'; |
| | | import TreeMenu from './components/TreeMenu.vue'; |
| | | import { ref } from "vue"; |
| | | import Header from "./layout/Header.vue"; |
| | | import TreeMenu from "./components/TreeMenu.vue"; |
| | | import { ElConfigProvider } from "element-plus"; |
| | | import zhCn from "element-plus/es/locale/lang/zh-cn"; |
| | | |
| | | const menuItem = ref('/') |
| | | const menuItem = ref("/"); |
| | | |
| | | const handMenu = (key: string) => { |
| | | menuItem.value = key; |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="common-layout"> |
| | | <el-container> |
| | | <el-config-provider :locale="zhCn"> |
| | | <el-container class="common-layout"> |
| | | <el-header height="60px"> |
| | | <Header @selectMenu="handMenu"/> |
| | | <Header @selectMenu="handMenu" /> |
| | | </el-header> |
| | | <el-container> |
| | | <el-aside width="240px"> |
| | | <TreeMenu :menuItem="menuItem"/> |
| | | <TreeMenu :menuItem="menuItem" /> |
| | | </el-aside> |
| | | <el-main> |
| | | <RouterView /> |
| | | </el-main> |
| | | </el-container> |
| | | </el-container> |
| | | </div> |
| | | </el-config-provider> |
| | | </template> |
| | | |
| | | <style lang="less"> |
| | | .common-layout { |
| | | height: 100vh; |
| | | .el-container { |
| | | height: 100%; |
| | | } |
| | | .el-header { |
| | | background-color: #fff; |
| | | color: #333; |
| | | line-height: 60px; |
| | | border-bottom: 1px solid #eee; |
| | | } |
| | | .el-aside { |
| | | background-color: #fff; |
| | | border-right: 1px solid #eee; |
| | | } |
| | | .el-main { |
| | | background-color: #f5f7fa; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | import { createApp } from 'vue' |
| | | import App from './App.vue' |
| | | import { createApp } from "vue"; |
| | | import App from "./App.vue"; |
| | | // 完整引入 Element Plus |
| | | import ElementPlus from 'element-plus' |
| | | import 'element-plus/dist/index.css' |
| | | import * as ElementPlusIconsVue from '@element-plus/icons-vue' |
| | | import router from './router' |
| | | import './styles/global.less' |
| | | import ElementPlus from "element-plus"; |
| | | import * as ElementPlusIconsVue from "@element-plus/icons-vue"; |
| | | import router from "./router"; |
| | | import "./styles/global.less"; |
| | | |
| | | const app = createApp(App) |
| | | |
| | | |
| | | const app = createApp(App); |
| | | |
| | | // 注册所有图标 |
| | | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { |
| | | app.component(key, component) |
| | | app.component(key, component); |
| | | } |
| | | |
| | | // 使用 Element Plus |
| | | app.use(ElementPlus) |
| | | app.use(router) |
| | | app.mount('#app') |
| | | app.use(ElementPlus); |
| | | |
| | | app.use(router); |
| | | app.mount("#app"); |
| | |
| | | |
| | | /* 引入 Element Plus 的基础样式 */ |
| | | |
| | | |
| | | .common-layout { |
| | | width: 100%; |
| | | height: 100%; |
| | | height: 100% |
| | | } |
| | | |
| | | .el-container { |
| | | width: 100%; |
| | | height: 100%; |
| | | .common-layout .el-container { |
| | | height: calc(100% - 60px); |
| | | } |
| | | |
| | | .el-header { |
| | |
| | | border |
| | | style="width: 100%" |
| | | @selection-change="handleSelectionChange" |
| | | class="landerTable" |
| | | > |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column prop="index" label="序号" width="70" /> |
| | |
| | | <el-table-column prop="address" label="Address" /> |
| | | </el-table> |
| | | </div> |
| | | <div class="lander-pagination-block"> |
| | | <el-pagination |
| | | v-model:current-page="currentPage" |
| | | :page-size="pageSize" |
| | | :size="size" |
| | | :background="background" |
| | | layout="total, prev, pager, next" |
| | | :total="100" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { ref } from "vue"; |
| | | import { Plus } from "@element-plus/icons-vue"; |
| | | import type { TableInstance } from "element-plus"; |
| | | import type { ComponentSize, TableInstance } from "element-plus"; |
| | | |
| | | // 搜索 |
| | | const input4 = ref(""); |
| | | |
| | | // 表格 |
| | | const multipleTableRef = ref<TableInstance>(); |
| | | const multipleSelection = ref<any[]>([]); |
| | | |
| | | // 分页 |
| | | const currentPage = ref(4); |
| | | const pageSize = ref(20); |
| | | const size = ref<ComponentSize>("default"); |
| | | const background = ref(true); |
| | | |
| | | const tableData = [ |
| | | { |
| | |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | |
| | | |
| | | ]; |
| | | |
| | | const handleCurrentChange = (val: number) => { |
| | | console.log(`current page: ${val}`); |
| | | }; |
| | | |
| | | const handleSelectionChange = (val: []) => { |
| | | console.log(val); |
| | | multipleSelection.value = val; |
| | | }; |
| | | </script> |
| | |
| | | <style lang="less" scoped> |
| | | .landerBox { |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | .landerTopBox { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 10px; |
| | | align-items: center; |
| | | height: 50px; |
| | | padding: 0 10px; |
| | | box-sizing: border-box; |
| | | } |
| | | .landerContentBox { |
| | | width: 100%; |
| | | max-height: calc(100% - 120px); |
| | | .landerTable { |
| | | height: 750px; |
| | | } |
| | | } |
| | | .lander-pagination-block { |
| | | height: 60px; |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | padding: 0 20px; |
| | | background-color: #fff; |
| | | |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="kinematic"> |
| | | <h2>巡视器模型库</h2> |
| | | <div class="roverBox"> |
| | | <div class="roverTopBox"> |
| | | <el-button :icon="Plus">新建</el-button> |
| | | <el-input |
| | | v-model="input4" |
| | | style="width: 300px" |
| | | placeholder="请输入关键字搜索" |
| | | > |
| | | <template #suffix> |
| | | <el-icon class="el-input__icon"><search /></el-icon> |
| | | </template> |
| | | </el-input> |
| | | </div> |
| | | <div class="roverContentBox"> |
| | | <el-table |
| | | ref="multipleTableRef" |
| | | :data="tableData" |
| | | row-key="id" |
| | | border |
| | | style="width: 100%" |
| | | @selection-change="handleSelectionChange" |
| | | class="roverTable" |
| | | > |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column prop="index" label="序号" width="70" /> |
| | | <el-table-column prop="date" label="Date" width="180" /> |
| | | <el-table-column prop="name" label="Name" width="180" /> |
| | | <el-table-column prop="address" label="Address" /> |
| | | </el-table> |
| | | </div> |
| | | <div class="rover-pagination-block"> |
| | | <el-pagination |
| | | v-model:current-page="currentPage" |
| | | :page-size="pageSize" |
| | | :size="size" |
| | | :background="background" |
| | | layout="total, prev, pager, next" |
| | | :total="100" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { ref } from "vue"; |
| | | import { Plus } from "@element-plus/icons-vue"; |
| | | import type { ComponentSize, TableInstance } from "element-plus"; |
| | | |
| | | // 搜索 |
| | | const input4 = ref(""); |
| | | |
| | | // 表格 |
| | | const multipleTableRef = ref<TableInstance>(); |
| | | const multipleSelection = ref<any[]>([]); |
| | | |
| | | // 分页 |
| | | const currentPage = ref(4); |
| | | const pageSize = ref(100); |
| | | const size = ref<ComponentSize>("default"); |
| | | const background = ref(true); |
| | | |
| | | const tableData = [ |
| | | { |
| | | id: 1, |
| | | date: "2016-05-03", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 2, |
| | | date: "2016-05-02", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 3, |
| | | date: "2016-05-04", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 4, |
| | | date: "2016-05-01", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 5, |
| | | date: "2016-05-08", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 6, |
| | | date: "2016-05-06", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | { |
| | | id: 7, |
| | | date: "2016-05-07", |
| | | name: "Tom", |
| | | address: "No. 189, Grove St, Los Angeles", |
| | | }, |
| | | ]; |
| | | |
| | | const handleCurrentChange = (val: number) => { |
| | | console.log(`current page: ${val}`); |
| | | }; |
| | | |
| | | const handleSelectionChange = (val: []) => { |
| | | multipleSelection.value = val; |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .kinematic { |
| | | padding: 20px; |
| | | .roverBox { |
| | | width: 100%; |
| | | height: 100%; |
| | | .roverTopBox { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 50px; |
| | | padding: 0 10px; |
| | | box-sizing: border-box; |
| | | } |
| | | .roverContentBox { |
| | | max-height: calc(100% - 120px); |
| | | |
| | | .roverTable { |
| | | height: 750px; |
| | | } |
| | | } |
| | | .rover-pagination-block { |
| | | height: 60px; |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | background-color: #fff; |
| | | padding: 0 10px; |
| | | box-sizing: border-box; |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <template> |
| | | <div class="kinematic"> |
| | | <div class="modelContainer"> |
| | | <RouterView /> |
| | | </div> |
| | | </template> |
| | |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .modelContainer { |
| | | width: 100%; |
| | | height: 100%; |
| | | background-color: #fff; |
| | | } |
| | | </style> |