wenhongquan 3 years ago
parent
commit
5db978655d

+ 1 - 0
package.json

@@ -28,6 +28,7 @@
         "lodash": "^4.17.21",
         "moment": "^2.29.3",
         "nprogress": "0.2.0",
+        "vant": "^3.5.1",
         "vue": "3.2.31",
         "vue-cropper": "1.0.3",
         "vue-router": "4.0.14",

+ 313 - 274
src/assets/styles/ruoyi.scss

@@ -1,274 +1,313 @@
- /**
- * 通用css样式布局处理
- * Copyright (c) 2019 ruoyi
- */
-
- /** 基础通用 **/
-.pt5 {
-	padding-top: 5px;
-}
-.pr5 {
-	padding-right: 5px;
-}
-.pb5 {
-	padding-bottom: 5px;
-}
-.mt5 {
-	margin-top: 5px;
-}
-.mr5 {
-	margin-right: 5px;
-}
-.mb5 {
-	margin-bottom: 5px;
-}
-.mb8 {
-	margin-bottom: 8px;
-}
-.ml5 {
-	margin-left: 5px;
-}
-.mt10 {
-	margin-top: 10px;
-}
-.mr10 {
-	margin-right: 10px;
-}
-.mb10 {
-	margin-bottom: 10px;
-}
-.ml10 {
-	margin-left: 10px;
-}
-.mt20 {
-	margin-top: 20px;
-}
-.mr20 {
-	margin-right: 20px;
-}
-.mb20 {
-	margin-bottom: 20px;
-}
-.ml20 {
-	margin-left: 20px;
-}
-
-.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
-	font-family: inherit;
-	font-weight: 500;
-	line-height: 1.1;
-	color: inherit;
-}
-
-.el-dialog:not(.is-fullscreen) {
-	margin-top: 6vh !important;
-}
-
-.el-dialog.scrollbar .el-dialog__body {
-    overflow: auto;
-	overflow-x: hidden;
-	max-height: 70vh;
-	padding: 10px 20px 0;
-}
-
-.el-table {
-	.el-table__header-wrapper, .el-table__fixed-header-wrapper {
-		th {
-			word-break: break-word;
-			background-color: #f8f8f9 !important;
-			color: #515a6e;
-			height: 40px !important;
-			font-size: 13px;
-		}
-	}
-	.el-table__body-wrapper {
-		.el-button [class*="el-icon-"] + span {
-			margin-left: 1px;
-		}
-	}
-}
-
-/** 表单布局 **/
-.form-header {
-    font-size:15px;
-	color:#6379bb;
-	border-bottom:1px solid #ddd;
-	margin:8px 10px 25px 10px;
-	padding-bottom:5px
-}
-
-/** 表格布局 **/
-.pagination-container {
-	// position: relative;
-	height: 25px;
-	margin-bottom: 10px;
-	margin-top: 15px;
-	padding: 10px 20px !important;
-}
-
-/* tree border */
-.tree-border {
-    margin-top: 5px;
-    border: 1px solid #e5e6e7;
-    background: #FFFFFF none;
-    border-radius:4px;
-    width: 100%;
-}
-
-.pagination-container .el-pagination {
-	right: 0;
-	position: absolute;
-}
-
-@media ( max-width : 768px) {
-  .pagination-container .el-pagination > .el-pagination__jump {
-    display: none !important;
-  }
-  .pagination-container .el-pagination > .el-pagination__sizes {
-    display: none !important;
-  }
-}
-
-.el-table .fixed-width .el-button--small {
-	padding-left: 0;
-	padding-right: 0;
-	width: inherit;
-}
-
-/** 表格更多操作下拉样式 */
-.el-table .el-dropdown-link {
-	cursor: pointer;
-	color: #409EFF;
-	margin-left: 10px;
-}
-
-.el-table .el-dropdown, .el-icon-arrow-down {
-	font-size: 12px;
-}
-
-.el-tree-node__content > .el-checkbox {
-	margin-right: 8px;
-}
-
-.list-group-striped > .list-group-item {
-	border-left: 0;
-	border-right: 0;
-	border-radius: 0;
-	padding-left: 0;
-	padding-right: 0;
-}
-
-.list-group {
-	padding-left: 0px;
-	list-style: none;
-}
-
-.list-group-item {
-	border-bottom: 1px solid #e7eaec;
-	border-top: 1px solid #e7eaec;
-	margin-bottom: -1px;
-	padding: 11px 0px;
-	font-size: 13px;
-}
-
-.pull-right {
-	float: right !important;
-}
-
-.el-card__header {
-	padding: 14px 15px 7px !important;
-	min-height: 40px;
-}
-
-.el-card__body {
-	padding: 15px 20px 20px 20px !important;
-}
-
-.card-box {
-	padding-right: 15px;
-	padding-left: 15px;
-	margin-bottom: 10px;
-}
-
-/* button color */
-.el-button--cyan.is-active,
-.el-button--cyan:active {
-  background: #20B2AA;
-  border-color: #20B2AA;
-  color: #FFFFFF;
-}
-
-.el-button--cyan:focus,
-.el-button--cyan:hover {
-  background: #48D1CC;
-  border-color: #48D1CC;
-  color: #FFFFFF;
-}
-
-.el-button--cyan {
-  background-color: #20B2AA;
-  border-color: #20B2AA;
-  color: #FFFFFF;
-}
-
-/* text color */
-.text-navy {
-	color: #1ab394;
-}
-
-.text-primary {
-	color: inherit;
-}
-
-.text-success {
-	color: #1c84c6;
-}
-
-.text-info {
-	color: #23c6c8;
-}
-
-.text-warning {
-	color: #f8ac59;
-}
-
-.text-danger {
-	color: #ed5565;
-}
-
-.text-muted {
-	color: #888888;
-}
-
-/* image */
-.img-circle {
-	border-radius: 50%;
-}
-
-.img-lg {
-	width: 120px;
-	height: 120px;
-}
-
-.avatar-upload-preview {
-	position: absolute;
-	top: 50%;
-	transform: translate(50%, -50%);
-	width: 200px;
-	height: 200px;
-	border-radius: 50%;
-	box-shadow: 0 0 4px #ccc;
-	overflow: hidden;
-}
-
-/* 拖拽列样式 */
-.sortable-ghost{
-	opacity: .8;
-	color: #fff!important;
-	background: #42b983!important;
-}
-
-/* 表格右侧工具栏样式 */
-.top-right-btn {
-	margin-left: auto;
-}
+ /**
+ * 通用css样式布局处理
+ * Copyright (c) 2019 ruoyi
+ */
+ /** 基础通用 **/
+ 
+ .pt5 {
+     padding-top: 5px;
+ }
+ 
+ .pr5 {
+     padding-right: 5px;
+ }
+ 
+ .pb5 {
+     padding-bottom: 5px;
+ }
+ 
+ .mt5 {
+     margin-top: 5px;
+ }
+ 
+ .mr5 {
+     margin-right: 5px;
+ }
+ 
+ .mb5 {
+     margin-bottom: 5px;
+ }
+ 
+ .mb8 {
+     margin-bottom: 8px;
+ }
+ 
+ .ml5 {
+     margin-left: 5px;
+ }
+ 
+ .mt10 {
+     margin-top: 10px;
+ }
+ 
+ .mr10 {
+     margin-right: 10px;
+ }
+ 
+ .mb10 {
+     margin-bottom: 10px;
+ }
+ 
+ .ml10 {
+     margin-left: 10px;
+ }
+ 
+ .mt20 {
+     margin-top: 20px;
+ }
+ 
+ .mr20 {
+     margin-right: 20px;
+ }
+ 
+ .mb20 {
+     margin-bottom: 20px;
+ }
+ 
+ .ml20 {
+     margin-left: 20px;
+ }
+ 
+ .h1,
+ .h2,
+ .h3,
+ .h4,
+ .h5,
+ .h6,
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+     font-family: inherit;
+     font-weight: 500;
+     line-height: 1.1;
+     color: inherit;
+ }
+ 
+ .el-dialog:not(.is-fullscreen) {
+     margin-top: 6vh !important;
+ }
+ 
+ .el-dialog.scrollbar .el-dialog__body {
+     overflow: auto;
+     overflow-x: hidden;
+     max-height: 70vh;
+     padding: 10px 20px 0;
+ }
+ 
+ .el-table {
+     .el-table__header-wrapper,
+     .el-table__fixed-header-wrapper {
+         th {
+             word-break: break-word;
+             background-color: #f8f8f9 !important;
+             color: #515a6e;
+             height: 40px !important;
+             font-size: 13px;
+         }
+     }
+     .el-table__body-wrapper {
+         .el-button [class*="el-icon-"]+span {
+             margin-left: 1px;
+         }
+     }
+ }
+ /** 表单布局 **/
+ 
+ .form-header {
+     font-size: 15px;
+     color: #6379bb;
+     border-bottom: 1px solid #ddd;
+     margin: 8px 10px 25px 10px;
+     padding-bottom: 5px
+ }
+ /** 表格布局 **/
+ 
+ .pagination-container {
+     // position: relative;
+     height: 25px;
+     margin-bottom: 10px;
+     margin-top: 15px;
+     padding: 10px 20px !important;
+ }
+ /* tree border */
+ 
+ .tree-border {
+     margin-top: 5px;
+     border: 1px solid #e5e6e7;
+     background: #FFFFFF none;
+     border-radius: 4px;
+     width: 100%;
+ }
+ 
+ .pagination-container .el-pagination {
+     right: 0;
+     position: absolute;
+ }
+ 
+ @media ( max-width: 768px) {
+     .pagination-container .el-pagination>.el-pagination__jump {
+         display: none !important;
+     }
+     .pagination-container .el-pagination>.el-pagination__sizes {
+         display: none !important;
+     }
+ }
+ 
+ .el-table .fixed-width .el-button--small {
+     padding-left: 0;
+     padding-right: 0;
+     width: inherit;
+ }
+ /** 表格更多操作下拉样式 */
+ 
+ .el-table .el-dropdown-link {
+     cursor: pointer;
+     color: #409EFF;
+     margin-left: 10px;
+ }
+ 
+ .el-table .el-dropdown,
+ .el-icon-arrow-down {
+     font-size: 12px;
+ }
+ 
+ .el-tree-node__content>.el-checkbox {
+     margin-right: 8px;
+ }
+ 
+ .list-group-striped>.list-group-item {
+     border-left: 0;
+     border-right: 0;
+     border-radius: 0;
+     padding-left: 0;
+     padding-right: 0;
+ }
+ 
+ .list-group {
+     padding-left: 0px;
+     list-style: none;
+ }
+ 
+ .list-group-item {
+     border-bottom: 1px solid #e7eaec;
+     border-top: 1px solid #e7eaec;
+     margin-bottom: -1px;
+     padding: 11px 0px;
+     font-size: 13px;
+ }
+ 
+ .pull-right {
+     float: right !important;
+ }
+ 
+ .el-card__header {
+     padding: 14px 15px 7px !important;
+     min-height: 40px;
+ }
+ 
+ .el-card__body {
+     padding: 15px 20px 20px 20px !important;
+ }
+ 
+ .card-box {
+     padding-right: 15px;
+     padding-left: 15px;
+     margin-bottom: 10px;
+ }
+ /* button color */
+ 
+ .el-button--cyan.is-active,
+ .el-button--cyan:active {
+     background: #20B2AA;
+     border-color: #20B2AA;
+     color: #FFFFFF;
+ }
+ 
+ .el-button--cyan:focus,
+ .el-button--cyan:hover {
+     background: #48D1CC;
+     border-color: #48D1CC;
+     color: #FFFFFF;
+ }
+ 
+ .el-button--cyan {
+     background-color: #20B2AA;
+     border-color: #20B2AA;
+     color: #FFFFFF;
+ }
+ /* text color */
+ 
+ .text-navy {
+     color: #1ab394;
+ }
+ 
+ .text-primary {
+     color: inherit;
+ }
+ 
+ .text-success {
+     color: #1c84c6;
+ }
+ 
+ .text-info {
+     color: #23c6c8;
+ }
+ 
+ .text-warning {
+     color: #f8ac59;
+ }
+ 
+ .text-danger {
+     color: #ed5565;
+ }
+ 
+ .text-muted {
+     color: #888888;
+ }
+ /* image */
+ 
+ .img-circle {
+     border-radius: 50%;
+ }
+ 
+ .img-lg {
+     width: 120px;
+     height: 120px;
+ }
+ 
+ .avatar-upload-preview {
+     position: absolute;
+     top: 50%;
+     transform: translate(50%, -50%);
+     width: 200px;
+     height: 200px;
+     border-radius: 50%;
+     box-shadow: 0 0 4px #ccc;
+     overflow: hidden;
+ }
+ /* 拖拽列样式 */
+ 
+ .sortable-ghost {
+     opacity: .8;
+     color: #fff!important;
+     background: #42b983!important;
+ }
+ /* 表格右侧工具栏样式 */
+ 
+ .top-right-btn {
+     margin-left: auto;
+ }
+ 
+ :root:root {
+     --van-blue: #1777ff;
+     --van-nav-bar-background-color: var(--van-blue);
+     --van-nav-bar-icon-color: #fff;
+     --van-nav-bar-text-color: #fff;
+     --van-nav-bar-title-text-color: #fff;
+     --van-dropdown-menu-title-active-text-color: var(--van-blue);
+     // --van-dropdown-menu-title-text-color: var(--van-blue);
+     --van-dropdown-menu-option-active-color: var(--van-blue);
+ }

+ 9 - 0
src/layout/index.vue

@@ -29,6 +29,8 @@ import { useWindowSize } from '@vueuse/core'
 import Sidebar from './components/Sidebar/index.vue'
 import { AppMain, Navbar, Settings, TagsView } from './components'
 import defaultSettings from '@/settings'
+import { watch } from 'vue-demi';
+import router from '../router';
 
 const store = useStore();
 const theme = computed(() => store.state.settings.theme);
@@ -45,6 +47,13 @@ const classObj = computed(() => ({
     mobile: device.value === 'mobile'
 }))
 
+watch(() => device.value, () => {
+  if (device.value === 'mobile') {
+    router.replace("/mb")
+  }
+
+})
+
 const { width, height } = useWindowSize();
 const WIDTH = 992; // refer to Bootstrap's responsive design
 

+ 72 - 0
src/layoutmb/index.vue

@@ -0,0 +1,72 @@
+<template>
+    <div  class="app-wrapper" :style="{ '--current-color': theme }">
+
+        <app-main />
+
+
+
+
+    </div>
+</template>
+
+<script setup>
+import { useWindowSize } from '@vueuse/core'
+import { AppMain } from '@/layout/components'
+
+
+const store = useStore();
+const theme = computed(() => store.state.settings.theme);
+
+const { width, height } = useWindowSize();
+const WIDTH = 992; // refer to Bootstrap's responsive design
+
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/mixin.scss";
+@import "@/assets/styles/variables.module.scss";
+body{
+  background: #eef2f8;
+}
+.app-wrapper {
+    @include clearfix;
+    position: relative;
+    height: 100%;
+    width: 100%;
+    &.mobile.openSidebar {
+        position: fixed;
+        top: 0;
+    }
+}
+
+.drawer-bg {
+    background: #000;
+    opacity: 0.3;
+    width: 100%;
+    top: 0;
+    height: 100%;
+    position: absolute;
+    z-index: 999;
+}
+
+.fixed-header {
+    position: fixed;
+    top: 0;
+    right: 0;
+    z-index: 9;
+    width: calc(100% - #{$base-sidebar-width});
+    transition: width 0.28s;
+}
+
+.hideSidebar .fixed-header {
+    width: calc(100% - 54px);
+}
+
+.sidebarHide .fixed-header {
+    width: 100%;
+}
+
+.mobile .fixed-header {
+    width: 100%;
+}
+</style>

+ 84 - 80
src/main.js

@@ -1,80 +1,84 @@
-import { createApp } from 'vue'
-
-import Cookies from 'js-cookie'
-
-import ElementPlus from 'element-plus'
-import locale from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
-
-import '@/assets/styles/index.scss' // global css
-
-import App from './App'
-import store from './store'
-import router from './router'
-import directive from './directive' // directive
-
-
-// 注册指令
-import plugins from './plugins' // plugins
-import { download } from '@/utils/request'
-
-// svg图标
-import 'virtual:svg-icons-register'
-import SvgIcon from '@/components/SvgIcon'
-import elementIcons from '@/components/SvgIcon/svgicon'
-
-import './permission' // permission control
-
-import { useDict } from '@/utils/dict'
-import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel } from '@/utils/ruoyi'
-
-// 分页组件
-import Pagination from '@/components/Pagination'
-// 自定义表格工具组件
-import RightToolbar from '@/components/RightToolbar'
-// 文件上传组件
-import FileUpload from "@/components/FileUpload"
-// 图片上传组件
-import ImageUpload from "@/components/ImageUpload"
-// 图片预览组件
-import ImagePreview from "@/components/ImagePreview"
-// 自定义树选择组件
-import TreeSelect from '@/components/TreeSelect'
-// 字典标签组件
-import DictTag from '@/components/DictTag'
-
-const app = createApp(App)
-
-// 全局方法挂载
-app.config.globalProperties.useDict = useDict
-app.config.globalProperties.download = download
-app.config.globalProperties.parseTime = parseTime
-app.config.globalProperties.resetForm = resetForm
-app.config.globalProperties.handleTree = handleTree
-app.config.globalProperties.addDateRange = addDateRange
-app.config.globalProperties.selectDictLabel = selectDictLabel
-
-// 全局组件挂载
-app.component('DictTag', DictTag)
-app.component('Pagination', Pagination)
-app.component('TreeSelect', TreeSelect)
-app.component('FileUpload', FileUpload)
-app.component('ImageUpload', ImageUpload)
-app.component('ImagePreview', ImagePreview)
-app.component('RightToolbar', RightToolbar)
-
-app.use(router)
-app.use(store)
-app.use(plugins)
-app.use(elementIcons)
-app.component('svg-icon', SvgIcon)
-
-directive(app)
-
-// 使用element-plus 并且设置全局的大小
-app.use(ElementPlus, {
-  locale: locale,
-  // 支持 large、default、small
-  size: Cookies.get('size') || 'default'
-})
-
-app.mount('#app')
+import { createApp } from 'vue'
+
+import Cookies from 'js-cookie'
+
+import ElementPlus from 'element-plus'
+import locale from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
+
+import '@/assets/styles/index.scss' // global css
+
+import App from './App'
+import store from './store'
+import router from './router'
+import directive from './directive' // directive
+
+
+// 注册指令
+import plugins from './plugins' // plugins
+import { download } from '@/utils/request'
+
+// svg图标
+import 'virtual:svg-icons-register'
+import SvgIcon from '@/components/SvgIcon'
+import elementIcons from '@/components/SvgIcon/svgicon'
+
+import './permission' // permission control
+
+import { useDict } from '@/utils/dict'
+import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel } from '@/utils/ruoyi'
+
+// 分页组件
+import Pagination from '@/components/Pagination'
+// 自定义表格工具组件
+import RightToolbar from '@/components/RightToolbar'
+// 文件上传组件
+import FileUpload from "@/components/FileUpload"
+// 图片上传组件
+import ImageUpload from "@/components/ImageUpload"
+// 图片预览组件
+import ImagePreview from "@/components/ImagePreview"
+// 自定义树选择组件
+import TreeSelect from '@/components/TreeSelect'
+// 字典标签组件
+import DictTag from '@/components/DictTag'
+
+import Vant from "vant";
+import "vant/lib/index.css";
+
+const app = createApp(App)
+
+// 全局方法挂载
+app.config.globalProperties.useDict = useDict
+app.config.globalProperties.download = download
+app.config.globalProperties.parseTime = parseTime
+app.config.globalProperties.resetForm = resetForm
+app.config.globalProperties.handleTree = handleTree
+app.config.globalProperties.addDateRange = addDateRange
+app.config.globalProperties.selectDictLabel = selectDictLabel
+
+// 全局组件挂载
+app.component('DictTag', DictTag)
+app.component('Pagination', Pagination)
+app.component('TreeSelect', TreeSelect)
+app.component('FileUpload', FileUpload)
+app.component('ImageUpload', ImageUpload)
+app.component('ImagePreview', ImagePreview)
+app.component('RightToolbar', RightToolbar)
+
+app.use(router)
+app.use(store)
+app.use(plugins)
+app.use(elementIcons)
+app.use(Vant)
+app.component('svg-icon', SvgIcon)
+
+directive(app)
+
+// 使用element-plus 并且设置全局的大小
+app.use(ElementPlus, {
+    locale: locale,
+    // 支持 large、default、small
+    size: Cookies.get('size') || 'default'
+})
+
+app.mount('#app')

+ 37 - 1
src/router/index.js

@@ -1,5 +1,6 @@
 import { createWebHistory, createRouter } from 'vue-router'
 import Layout from '@/layout'
+import Layoutmb from "@/layoutmb";
 
 /**
  * Note: 路由配置项
@@ -132,6 +133,41 @@ export const constantRoutes = [{
         ],
     },
     {
+        path: "/mb",
+        component: Layoutmb,
+        hidden: true,
+        redirect: "/mb/home",
+        children: [{
+                path: "home",
+                component: () =>
+                    import ("@/views/mb/home/index"),
+                name: "mbhome",
+                meta: { title: "首页", icon: "user" },
+            },
+            {
+                path: "maintain",
+                component: () =>
+                    import ("@/views/mb/maintain/index"),
+                name: "mbmaintain",
+                meta: { title: "养护计划", icon: "user" },
+            },
+            {
+                path: "detection",
+                component: () =>
+                    import ("@/views/mb/detection/index"),
+                name: "mbdetection",
+                meta: { title: "检测计划", icon: "user" },
+            },
+            {
+                path: "task",
+                component: () =>
+                    import ("@/views/mb/task/index"),
+                name: "mbtask",
+                meta: { title: "工单", icon: "user" },
+            },
+        ],
+    },
+    {
         path: "/user",
         component: Layout,
         hidden: true,
@@ -218,4 +254,4 @@ const router = createRouter({
     },
 });
 
-export default router;
+export default router;

+ 24 - 0
src/views/mb/detection/index.vue

@@ -0,0 +1,24 @@
+<template>
+  <div>
+     <van-nav-bar
+  title="检测计划"
+  left-text="返回"
+  left-arrow
+  @click-left="onClickLeft"
+/>
+
+  </div>
+</template>
+<script lang="ts" setup>
+import router from "../../../router"
+
+
+const onClickLeft = () => {
+  router.back();
+}
+
+</script>
+
+<style>
+
+</style>

+ 76 - 0
src/views/mb/home/index.vue

@@ -0,0 +1,76 @@
+<template>
+  <div class="mbhome">
+     <div class="headerpic">
+        <img src="http://gimg1.baidu.com/searchbox_feed/app=2001&g=4n&n=0&q=85&refer=http%3A%2F%2Fwww.baidu.com&size=f9999_10000&src=http%3A%2F%2Fcontentcms-bj.cdn.bcebos.com%2Fcmspic%2F2630adecb9edc231a9d7a583aecbd7be.jpeg%3Fx-bce-process%3Dimage%2Fcrop%2Cx_0%2Cy_0%2Cw_1242%2Ch_699?sec=0&t=36e419603fa30a788071b99471e4b65a"/>
+     </div>
+     <div class="body">
+       <div class="an">
+        <van-button round type="primary" @click="gotopage('task')"><van-icon name="phone" />热线工单</van-button>
+        <div class="tip">110</div>
+       </div>
+       <div class="an">
+        <van-button round type="primary" @click="gotopage('detection')"><van-icon name="underway" />检测计划</van-button>
+        <div class="tip">110</div>
+       </div>
+       <div class="an">
+        <van-button round type="primary" @click="gotopage('maintain')"><van-icon name="points" />养护计划</van-button>
+        <div class="tip">110</div>
+       </div>
+     </div>
+
+
+  </div>
+</template>
+<script  setup>
+import router from "../../../router"
+
+
+const gotopage = (name) => {
+  router.push(`/mb/${name}`)
+
+}
+
+
+</script>
+
+<style lang="scss">
+.mbhome{
+  .headerpic{
+    img{
+      width:100vw;
+      object-fit: contain;
+    }
+  }
+  .body{
+    .an{
+      width:100%;
+      text-align: center;
+      margin-top: 60px;
+      position: relative;
+      .van-button{
+        width:80%;
+        .van-icon{
+          margin-right: 10px;
+        }
+      }
+      .tip{
+        background: #E91437;
+        color: #fff;
+        min-width:20px;
+        height: 20px;
+        font-size: 10px;
+        border-radius: 10px;
+        line-height: 18px;
+        border:1px solid #fff;
+        position: absolute;
+        top:-6px;
+        padding-left: 5px;
+        padding-right: 5px;
+        right:10vw;
+      }
+    }
+  }
+
+}
+
+</style>

+ 24 - 0
src/views/mb/maintain/index.vue

@@ -0,0 +1,24 @@
+<template>
+  <div>
+     <van-nav-bar
+  title="养护计划"
+  left-text="返回"
+  left-arrow
+  @click-left="onClickLeft"
+/>
+
+  </div>
+</template>
+<script lang="ts" setup>
+import router from "../../../router"
+
+
+const onClickLeft = () => {
+  router.back();
+}
+
+</script>
+
+<style>
+
+</style>

+ 24 - 0
src/views/mb/task/index.vue

@@ -0,0 +1,24 @@
+<template>
+  <div>
+     <van-nav-bar
+  title="热线工单"
+  left-text="返回"
+  left-arrow
+  @click-left="onClickLeft"
+/>
+
+  </div>
+</template>
+<script lang="ts" setup>
+import router from "../../../router"
+
+
+const onClickLeft = () => {
+  router.back();
+}
+
+</script>
+
+<style>
+
+</style>