This commit is contained in:
yyy 2025-02-07 14:06:43 +08:00
parent b08d79abe8
commit 21ef0251a6
15 changed files with 177 additions and 45 deletions

2
.env
View File

@ -1,5 +1,5 @@
# 标题 # 标题
VITE_APP_TITLE=芋道管理系统 VITE_APP_TITLE=RCS智能设备调度系统
# 项目本地运行端口号 # 项目本地运行端口号
VITE_PORT=80 VITE_PORT=80

View File

@ -65,13 +65,13 @@
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"[typescriptreact]": { "[typescriptreact]": {
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"[html]": { "[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"[css]": { "[css]": {
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"[less]": { "[less]": {
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -59,7 +59,7 @@ export default defineComponent({
<Backtop></Backtop> <Backtop></Backtop>
<Setting></Setting> {<Setting></Setting>}
</section> </section>
) )
} }

View File

@ -57,7 +57,7 @@ watch(
</script> </script>
<template> <template>
<div> <div :style="{ 'background-color': appStore.getTheme.topHeaderBgColor }">
<router-link <router-link
:class="[ :class="[
prefixCls, prefixCls,
@ -80,6 +80,7 @@ watch(
layout === 'topLeft' || layout === 'top' || layout === 'cutMenu' layout === 'topLeft' || layout === 'top' || layout === 'cutMenu'
} }
]" ]"
style="font-size: 14px"
> >
{{ title }} {{ title }}
</div> </div>

View File

@ -171,7 +171,8 @@ $prefix-cls: #{$namespace}-menu;
.#{$elNamespace}-menu { .#{$elNamespace}-menu {
.#{$elNamespace}-sub-menu__title, .#{$elNamespace}-sub-menu__title,
.#{$elNamespace}-menu-item:not(.is-active) { .#{$elNamespace}-menu-item:not(.is-active) {
background-color: var(--left-menu-bg-light-color) !important; // background-color: var(--left-menu-bg-light-color) !important;
background-color: #ffffff !important;
} }
} }
} }

View File

@ -52,6 +52,7 @@ export default defineComponent({
'h-[var(--top-tool-height)] relative px-[var(--top-tool-p-x)] flex items-center justify-between', 'h-[var(--top-tool-height)] relative px-[var(--top-tool-p-x)] flex items-center justify-between',
'dark:bg-[var(--el-bg-color)]' 'dark:bg-[var(--el-bg-color)]'
]} ]}
style="height:60px"
> >
{layout.value !== 'top' ? ( {layout.value !== 'top' ? (
<div class="h-full flex items-center"> <div class="h-full flex items-center">

View File

@ -55,7 +55,8 @@ export const useRenderLayout = () => {
'w-[var(--left-menu-max-width)]': !appStore.getCollapse 'w-[var(--left-menu-max-width)]': !appStore.getCollapse
} }
]} ]}
style="transition: all var(--transition-time-02);" style="transition: all var(--transition-time-02);height:60px;display: flex;
align-items: center;"
></Logo> ></Logo>
) : undefined} ) : undefined}
<Menu class={[{ '!h-[calc(100%-var(--logo-height))]': logo.value }]}></Menu> <Menu class={[{ '!h-[calc(100%-var(--logo-height))]': logo.value }]}></Menu>
@ -106,9 +107,9 @@ export const useRenderLayout = () => {
]} ]}
></ToolHeader> ></ToolHeader>
{tagsView.value ? ( {/* {tagsView.value ? (
<TagsView class="layout-border__top layout-border__bottom"></TagsView> <TagsView class="layout-border__top layout-border__bottom"></TagsView>
) : undefined} ) : undefined} */}
</div> </div>
<AppView></AppView> <AppView></AppView>

View File

@ -20,7 +20,6 @@ import { setupElementPlus } from '@/plugins/elementPlus'
import { setupFormCreate } from '@/plugins/formCreate' import { setupFormCreate } from '@/plugins/formCreate'
// 引入全局样式 // 引入全局样式
import '@/styles/element/index.scss'
import '@/styles/index.scss' import '@/styles/index.scss'
// 引入动画 // 引入动画

View File

@ -47,7 +47,6 @@ export const useAppStore = defineStore('app', {
mobile: false, // 是否是移动端 mobile: false, // 是否是移动端
title: import.meta.env.VITE_APP_TITLE, // 标题 title: import.meta.env.VITE_APP_TITLE, // 标题
pageLoading: false, // 路由跳转loading pageLoading: false, // 路由跳转loading
breadcrumb: true, // 面包屑 breadcrumb: true, // 面包屑
breadcrumbIcon: true, // 面包屑图标 breadcrumbIcon: true, // 面包屑图标
collapse: false, // 折叠菜单 collapse: false, // 折叠菜单
@ -58,7 +57,7 @@ export const useAppStore = defineStore('app', {
size: true, // 尺寸图标 size: true, // 尺寸图标
locale: true, // 多语言图标 locale: true, // 多语言图标
message: true, // 消息图标 message: true, // 消息图标
tagsView: true, // 标签页 tagsView: false, // 标签页
tagsViewImmerse: false, // 标签页沉浸 tagsViewImmerse: false, // 标签页沉浸
tagsViewIcon: true, // 是否显示标签图标 tagsViewIcon: true, // 是否显示标签图标
logo: true, // logo logo: true, // logo
@ -66,39 +65,38 @@ export const useAppStore = defineStore('app', {
footer: true, // 显示页脚 footer: true, // 显示页脚
greyMode: false, // 是否开始灰色模式,用于特殊悼念日 greyMode: false, // 是否开始灰色模式,用于特殊悼念日
fixedMenu: wsCache.get('fixedMenu') || false, // 是否固定菜单 fixedMenu: wsCache.get('fixedMenu') || false, // 是否固定菜单
layout: wsCache.get(CACHE_KEY.LAYOUT) || 'classic', // layout布局 layout: wsCache.get(CACHE_KEY.LAYOUT) || 'classic', // layout布局
isDark: wsCache.get(CACHE_KEY.IS_DARK) || false, // 是否是暗黑模式 isDark: wsCache.get(CACHE_KEY.IS_DARK) || false, // 是否是暗黑模式
currentSize: wsCache.get('default') || 'default', // 组件尺寸 currentSize: wsCache.get('default') || 'default', // 组件尺寸
theme: wsCache.get(CACHE_KEY.THEME) || { theme: wsCache.get(CACHE_KEY.THEME) || {
// 主题色 // 主题色
elColorPrimary: '#409eff', elColorPrimary: '#00329F',
// 左侧菜单边框颜色 // 左侧菜单边框颜色
leftMenuBorderColor: 'inherit', leftMenuBorderColor: 'inherit',
// 左侧菜单背景颜色 // 左侧菜单背景颜色
leftMenuBgColor: '#001529', leftMenuBgColor: '#ffffff',
// 左侧菜单浅色背景颜色 // 左侧菜单浅色背景颜色
leftMenuBgLightColor: '#0f2438', leftMenuBgLightColor: '#0f2438',
// 左侧菜单选中背景颜色 // 左侧菜单选中背景颜色
leftMenuBgActiveColor: 'var(--el-color-primary)', leftMenuBgActiveColor: '#EBF1FF',
// 左侧菜单收起选中背景颜色 // 左侧菜单收起选中背景颜色
leftMenuCollapseBgActiveColor: 'var(--el-color-primary)', leftMenuCollapseBgActiveColor: '#EBF1FF',
// 左侧菜单字体颜色 // 左侧菜单字体颜色
leftMenuTextColor: '#bfcbd9', leftMenuTextColor: '#98A4BF',
// 左侧菜单选中字体颜色 // 左侧菜单选中字体颜色
leftMenuTextActiveColor: '#fff', leftMenuTextActiveColor: '#00329F',
// logo字体颜色 // logo字体颜色
logoTitleTextColor: '#fff', logoTitleTextColor: '#fff',
// logo边框颜色 // logo边框颜色
logoBorderColor: 'inherit', logoBorderColor: 'inherit',
// 头部背景颜色 // 头部背景颜色
topHeaderBgColor: '#fff', topHeaderBgColor: '#00329F',
// 头部字体颜色 // 头部字体颜色
topHeaderTextColor: 'inherit', topHeaderTextColor: '#ffffff',
// 头部悬停颜色 // 头部悬停颜色
topHeaderHoverColor: '#f6f6f6', topHeaderHoverColor: '#f6f6f6',
// 头部边框颜色 // 头部边框颜色
topToolBorderColor: '#eee' topToolBorderColor: '#E2E7F5'
} }
} }
}, },

View File

@ -1,8 +0,0 @@
// @forward 'element-plus/theme-chalk/src/common/var.scss' with (
// $colors: (
// 'primary': (
// 'base': #00329f
// )
// )
// );
// @use 'element-plus/theme-chalk/src/index.scss' as *;

View File

@ -1,13 +1,15 @@
:root { :root {
--el-color-primary: #00329f;
--login-bg-color: #293146; --login-bg-color: #293146;
--left-menu-max-width: 200px; --left-menu-max-width: 220px;
--left-menu-min-width: 64px; --left-menu-min-width: 64px;
--left-menu-bg-color: #001529; --left-menu-bg-color: #ffffff;
--left-menu-bg-light-color: #0f2438; --left-menu-bg-light-color: #ffffff;
--left-menu-bg-active-color: var(--el-color-primary); --left-menu-bg-active-color: var(--el-color-primary);
@ -35,7 +37,8 @@
--top-tool-p-x: 0; --top-tool-p-x: 0;
--tags-view-height: 35px; /* --tags-view-height: 35px; 开启面包屑时 */
--tags-view-height: 8px;
/* header start */ /* header start */
/* tab menu start */ /* tab menu start */

View File

@ -1,14 +1,104 @@
<template> <template>
<div> <div>
<ContentWrap> <ContentWrap>
<div> <div class="tool-list">
<el-button type="primary" @click="saveMap" :disabled="formLoading"> 保存 </el-button> <div class="tool-item">
<el-button type="primary" @click="backPreviousStep" :disabled="formLoading"> <Icon icon="ep:folder-add" :size="24" />
撤销 <div class="name"> 打开 </div>
</el-button>
<el-button type="primary" @click="backNextStep" :disabled="formLoading"> 重做 </el-button>
<el-button type="primary" @click="drawNodes" :disabled="formLoading"> 绘制节点 </el-button>
</div> </div>
<div class="tool-item" @click="saveMap">
<Icon icon="ep:folder-checked" :size="24" />
<div class="name"> 保存 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-opened" :size="24" />
<div class="name"> 另存为 </div>
</div>
<div class="line"></div>
<div class="tool-item">
<Icon icon="ep:position" :size="24" />
<div class="name"> 选择 </div>
</div>
<div class="tool-item">
<Icon icon="ep:rank" :size="24" />
<div class="name"> 移动 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 旋转 </div>
</div>
<div class="tool-item">
<Icon icon="ep:document" :size="24" />
<div class="name"> 复制 </div>
</div>
<div class="tool-item">
<Icon icon="ep:copy-document" :size="24" />
<div class="name"> 粘贴 </div>
</div>
<div class="tool-item">
<Icon icon="ep:delete" :size="24" />
<div class="name"> 删除 </div>
</div>
<div class="line"></div>
<div class="tool-item">
<Icon icon="ep:briefcase" :size="24" />
<div class="name"> 工具 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 线库 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 区域 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 文字 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 设备 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 车辆 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 测距 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 图层 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 标记 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 网格 </div>
</div>
<div class="line"></div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 放大 </div>
</div>
<div class="tool-item">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 缩小 </div>
</div>
<div class="tool-item" @click="backPreviousStep">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 撤回 </div>
</div>
<div class="tool-item" @click="backNextStep">
<Icon icon="ep:folder-add" :size="24" />
<div class="name"> 重做 </div>
</div>
</div>
<!-- <el-button type="primary" @click="drawNodes" :disabled="formLoading"> 绘制节点 </el-button> -->
</ContentWrap> </ContentWrap>
<div class="map-box" ref="imgWrap" @mousewheel.prevent="rollImg" style="overflow: hidden"> <div class="map-box" ref="imgWrap" @mousewheel.prevent="rollImg" style="overflow: hidden">
<div class="map-box-inner" ref="image" @mousedown.prevent="moveImg"> <div class="map-box-inner" ref="image" @mousedown.prevent="moveImg">
@ -312,4 +402,33 @@ onMounted(() => {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.tool-list {
display: flex;
align-items: center;
text-align: center;
.tool-item {
width: 50px;
}
.name {
font-family:
PingFangSC,
PingFang SC;
font-weight: 400;
font-size: 14px;
color: #0d162a;
line-height: 20px;
text-align: center;
font-style: normal;
}
.line {
margin: 0 14px;
width: 1px;
height: 47px;
border: 1px solid #cccccc;
}
}
</style> </style>

View File

@ -1,8 +1,8 @@
<template> <template>
<ContentWrap> <ContentWrap>
<el-button type="success" @click="createTask">新建任务</el-button> <el-button type="success" @click="createTask">新建任务</el-button>
<el-button type="danger" @click="emergencyStop">一键急停</el-button>
<el-button type="primary" @click="editMap">地图编辑</el-button> <el-button type="primary" @click="editMap">地图编辑</el-button>
<el-button type="danger" @click="emergencyStop">一键急停</el-button>
</ContentWrap> </ContentWrap>
<div class="main-content"> <div class="main-content">

View File

@ -73,7 +73,12 @@
prop="doMoveAll" prop="doMoveAll"
label-width="146" label-width="146"
> >
<el-switch v-model="formData.doMoveAll" :active-value="1" :inactive-value="0" /> <el-switch
v-model="formData.doMoveAll"
:active-value="1"
:inactive-value="0"
@change="doMoveAllChange"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -153,7 +158,7 @@
:rules="{ required: true, message: '任务类型不能为空', trigger: 'change' }" :rules="{ required: true, message: '任务类型不能为空', trigger: 'change' }"
> >
<el-select <el-select
:disabled="formData.doCycle == 1 && index == 0" :disabled="formData.doCycle == 1 || formData.doMoveAll == 1"
v-model="detailItem.taskType" v-model="detailItem.taskType"
placeholder="请选择" placeholder="请选择"
@change="taskTypeChange(detailItem, index)" @change="taskTypeChange(detailItem, index)"
@ -968,6 +973,15 @@ const taskTypeChange = (item, index) => {
} }
} }
//
const doMoveAllChange = (e) => {
if (e === 1) {
formData.value.taskDetailList.forEach((item) => {
item.taskType = 1
})
}
}
// //
const montageNumberChange = (currentValue: number, oldValue: number) => { const montageNumberChange = (currentValue: number, oldValue: number) => {
if (currentValue > oldValue) { if (currentValue > oldValue) {
@ -1007,8 +1021,11 @@ const doCycleChange = (e) => {
formData.value.cycleNumber = 0 formData.value.cycleNumber = 0
} else { } else {
formData.value.cycleNumber = 1 formData.value.cycleNumber = 1
formData.value.montageNumber = 1
formData.value.taskDetailList = formData.value.taskDetailList.slice(0, 1) formData.value.taskDetailList = formData.value.taskDetailList.slice(0, 1)
formData.value.taskDetailList[0].taskType = 1 formData.value.taskDetailList.forEach((item) => {
item.taskType = 1
})
} }
} }