From 694b5b181d8d1db968fbfc485dde52e2bc9770df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B2=E4=B9=88=E4=BA=86?= Date: Wed, 17 Jan 2024 14:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=93=E6=89=91=E5=9B=BE=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/cs-device-boot/topologyTemplate.ts | 37 ++++++ src/api/cs-system-boot/appinfo.ts | 13 ++- src/components/wangEditor/index.vue | 36 +++++- src/layouts/admin/index.vue | 2 +- src/main.ts | 6 +- src/styles/element.scss | 121 +++++++++++--------- src/utils/common.ts | 2 +- src/views/govern/alarm/Device.vue | 2 +- src/views/govern/alarm/Steady.vue | 2 +- src/views/govern/alarm/Transient.vue | 2 +- src/views/govern/device/control/index.vue | 4 +- src/views/govern/device/manage/index.vue | 2 +- src/views/govern/manage/gplot/index.vue | 106 +++++++++++++++++ src/views/govern/manage/gplot/popupEdit.vue | 103 +++++++++++++++++ src/views/govern/setting/app/index.vue | 36 ++++-- 15 files changed, 395 insertions(+), 79 deletions(-) create mode 100644 src/api/cs-device-boot/topologyTemplate.ts create mode 100644 src/views/govern/manage/gplot/index.vue create mode 100644 src/views/govern/manage/gplot/popupEdit.vue diff --git a/src/api/cs-device-boot/topologyTemplate.ts b/src/api/cs-device-boot/topologyTemplate.ts new file mode 100644 index 0000000..286dded --- /dev/null +++ b/src/api/cs-device-boot/topologyTemplate.ts @@ -0,0 +1,37 @@ +import createAxios from '@/utils/request' +// 上传拓扑图 +export const uploadTopo = file => { + let form = new FormData() + form.append('file', file) + return createAxios({ + url: '/cs-device-boot/topologyTemplate/uploadImage', + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data' + }, + data: form + }) +} + + +// 查询拓扑图模板 +export const getTopoTemplate = () => { + return createAxios({ + url: '/cs-device-boot/topologyTemplate/queryImage', + method: 'POST' + }) +} + +//删除拓扑图模板 +export const deleteTopoTemplate = id => { + let form = new FormData() + form.append('id', id) + return createAxios({ + url: '/cs-device-boot/topologyTemplate/deleteImage', + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: form + }) +} \ No newline at end of file diff --git a/src/api/cs-system-boot/appinfo.ts b/src/api/cs-system-boot/appinfo.ts index 493d506..77b953c 100644 --- a/src/api/cs-system-boot/appinfo.ts +++ b/src/api/cs-system-boot/appinfo.ts @@ -4,7 +4,6 @@ import createAxios from '@/utils/request' * 查询app个人中心信息详情 * @param id */ - export const queryAppInfo = (type: string) => { let form = new FormData() form.append('type', type) @@ -17,3 +16,15 @@ export const queryAppInfo = (type: string) => { data: form }) } + + +/** + * 新增app基础信息 + **/ +export const addAppInfo = (data: { type: string, content: string }) => { + return createAxios({ + url: '/cs-system-boot/appinfo/addAppInfo', + method: 'post', + data: data + }) +} diff --git a/src/components/wangEditor/index.vue b/src/components/wangEditor/index.vue index 7c7fcb0..b9eb053 100644 --- a/src/components/wangEditor/index.vue +++ b/src/components/wangEditor/index.vue @@ -1,17 +1,17 @@ @@ -33,8 +33,32 @@ onMounted(() => { }, 1500) }) -const toolbarConfig = {} -const editorConfig = { placeholder: '请输入内容...' } +const toolbarConfig = { + excludeKeys: ['fullScreen', 'emotion'] +} +let sever = '/cs-harmonic-boot/csconfiguration/uploadImage' +// 本地加api +if (process.env.NODE_ENV === 'development') { + sever = '/api' + sever +} +const editorConfig = { + placeholder: '请输入内容...', + MENU_CONF: { + uploadImage: { + server: sever, + fieldName: 'file', + compress: true, + uploadFileName: 'file', + withCredentials: true, + headers: {}, + timeout: 0, + customInsert: (insertImg, result, editor) => { + const url = result.data.url + insertImg(url) + } + } + } +} // 组件销毁时,也及时销毁编辑器 onBeforeUnmount(() => { diff --git a/src/layouts/admin/index.vue b/src/layouts/admin/index.vue index 5eb3d9d..2e2cb09 100644 --- a/src/layouts/admin/index.vue +++ b/src/layouts/admin/index.vue @@ -98,7 +98,7 @@ const init = async () => { icon: 'el-icon-List', menu_type: 'tab', url: '', - component: '/src/views/govern/setting/app/index.vue', + component: '/src/views/govern/manage/gplot/index.vue', keepalive: 'auth/role', extend: 'none', children: [] diff --git a/src/main.ts b/src/main.ts index d60335b..98d56bd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,13 +13,17 @@ import 'element-plus/theme-chalk/display.css' import '@fortawesome/fontawesome-free/css/all.css' import '@/styles/index.scss' import '@/assets/font/iconfont.css' +import { ElDialog } from 'element-plus' window.XEUtils = XEUtils + + const app = createApp(App) app.use(router) app.use(pinia) -app.use(ElementPlus) +app.use(ElementPlus); +(app._context.components.ElDialog as typeof ElDialog).props.closeOnClickModal.default = false app.use(VXETable) registerIcons(app) // icons diff --git a/src/styles/element.scss b/src/styles/element.scss index f1f869e..e6d37de 100644 --- a/src/styles/element.scss +++ b/src/styles/element.scss @@ -1,100 +1,119 @@ /* 修复 Chrome 浏览器输入框内选中字符行高异常的bug-s */ .el-input .el-input__inner { - height: 30px; - line-height: calc(var(--el-input-height, 40px) - 4px); + height: 30px; + line-height: calc(var(--el-input-height, 40px) - 4px); } + /* 修复 Chrome 浏览器输入框内选中字符行高异常的bug-e */ .datetime-picker { - height: 32px; - padding-top: 0; - padding-bottom: 0; + height: 32px; + padding-top: 0; + padding-bottom: 0; } + .el-divider__text.is-center { - transform: translateX(-50%) translateY(-62%); + transform: translateX(-50%) translateY(-62%); } .el-menu { - user-select: none; - .el-menu-item:hover, - .el-sub-menu__title:hover { - background-color: var(--el-menu-hover-color) !important; - color: var(--el-menu-active-color) !important; - .icon { - color: var(--el-menu-active-color) !important; - } + user-select: none; + + .el-menu-item:hover, + .el-sub-menu__title:hover { + background-color: var(--el-menu-hover-color) !important; + color: var(--el-menu-active-color) !important; + + .icon { + color: var(--el-menu-active-color) !important; } + } } .el-dialog__header { - background: var(--el-color-primary); - margin-right: 0; - .el-dialog__headerbtn { - .el-icon { - color: var(--el-color-white); - } - } - .el-dialog__title { - color: var(--el-color-white); + background: var(--el-color-primary); + margin-right: 0; + + .el-dialog__headerbtn { + .el-icon { + color: var(--el-color-white); } + } + + .el-dialog__title { + color: var(--el-color-white); + } } .el-table { - --el-table-border-color: var(--ba-border-color); + --el-table-border-color: var(--ba-border-color); } .el-card { - border: none; + border: none; } + .el-card__header { - border-bottom: 1px solid var(--el-border-color-extra-light); + border-bottom: 1px solid var(--el-border-color-extra-light); } + .el-textarea__inner { - padding: 5px 11px; + padding: 5px 11px; } .el-dialog__body { - padding: 10px; + padding: 10px; } /* dialog滚动条-s */ .el-overlay-dialog, .el-tabs__content, .ba-scroll-style { - scrollbar-width: none; - &::-webkit-scrollbar { - width: 5px; - height: 5px; - } - &::-webkit-scrollbar-thumb { - background: #eaeaea; - border-radius: var(--el-border-radius-base); - box-shadow: none; - -webkit-box-shadow: none; - } - &:hover { - &::-webkit-scrollbar-thumb:hover { - background: #c8c9cc; - } + scrollbar-width: none; + + &::-webkit-scrollbar { + width: 5px; + height: 5px; + } + + &::-webkit-scrollbar-thumb { + background: #eaeaea; + border-radius: var(--el-border-radius-base); + box-shadow: none; + -webkit-box-shadow: none; + } + + &:hover { + &::-webkit-scrollbar-thumb:hover { + background: #c8c9cc; } + } } + /* dialog滚动条-e */ /* 小屏设备 el-radio-group 样式优化-s */ .ba-input-item-radio { - margin-bottom: 10px; - .el-radio-group { - .el-radio { - margin-bottom: 8px; - } + margin-bottom: 10px; + + .el-radio-group { + .el-radio { + margin-bottom: 8px; } + } } + /* 小屏设备 el-radio-group 样式调整-e */ .el-tabs--card > .el-tabs__header .el-tabs__item.is-active { - background: var(--el-color-primary); - color: var(--el-color-white); + background: var(--el-color-primary); + color: var(--el-color-white); } + .el-tabs__header { - margin-bottom: 10px; + margin-bottom: 0; } + +.el-form--inline .el-form-item { + margin-bottom: 10px; +} \ No newline at end of file diff --git a/src/utils/common.ts b/src/utils/common.ts index 10effa2..cc44f3a 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -53,7 +53,7 @@ export const getCurrentRoutePath = () => { * @param domain 指定域名 */ export const fullUrl = (relativeUrl: string, domain = '') => { - return domain + relativeUrl + return domain + '/api/system-boot/image/toStream?bgImage=' + relativeUrl } /** diff --git a/src/views/govern/alarm/Device.vue b/src/views/govern/alarm/Device.vue index 19edfa8..54760a1 100644 --- a/src/views/govern/alarm/Device.vue +++ b/src/views/govern/alarm/Device.vue @@ -104,7 +104,7 @@ onMounted(() => { tableStore.index() }) setTimeout(() => { - tableStore.table.height = mainHeight(190).height as any + tableStore.table.height = mainHeight(180).height as any }, 0) const addMenu = () => {} diff --git a/src/views/govern/alarm/Steady.vue b/src/views/govern/alarm/Steady.vue index e4e3a09..f4d0430 100644 --- a/src/views/govern/alarm/Steady.vue +++ b/src/views/govern/alarm/Steady.vue @@ -103,7 +103,7 @@ onMounted(() => { tableStore.index() }) setTimeout(() => { - tableStore.table.height = mainHeight(190).height as any + tableStore.table.height = mainHeight(180).height as any }, 0) const addMenu = () => {} diff --git a/src/views/govern/alarm/Transient.vue b/src/views/govern/alarm/Transient.vue index 14d6462..4a2ad06 100644 --- a/src/views/govern/alarm/Transient.vue +++ b/src/views/govern/alarm/Transient.vue @@ -219,7 +219,7 @@ onMounted(() => { }) const bxecharts = mainHeight(175).height as any setTimeout(() => { - tableStore.table.height = mainHeight(190).height as any + tableStore.table.height = mainHeight(180).height as any }, 0) const addMenu = () => {} diff --git a/src/views/govern/device/control/index.vue b/src/views/govern/device/control/index.vue index 2e3edf9..aff0552 100644 --- a/src/views/govern/device/control/index.vue +++ b/src/views/govern/device/control/index.vue @@ -31,7 +31,7 @@ v-for="(item, index) in deviceData.dataSetList" :key="index" > - + ([]) -const tableHeight = mainHeight(320).height +const tableHeight = mainHeight(310).height const mangePopup = ref() const datePickerRef = ref() const formInline = reactive({ diff --git a/src/views/govern/device/manage/index.vue b/src/views/govern/device/manage/index.vue index bfdfee0..302632d 100644 --- a/src/views/govern/device/manage/index.vue +++ b/src/views/govern/device/manage/index.vue @@ -82,7 +82,7 @@ const dataSet = ref('') const devTypeOptions = ref([]) const devModelOptions = ref([]) const tableData = ref([]) -const tableHeight = mainHeight(225).height +const tableHeight = mainHeight(215).height const mangePopup = ref() const nodeClick = (e: anyObj) => { if (e.level == 2) { diff --git a/src/views/govern/manage/gplot/index.vue b/src/views/govern/manage/gplot/index.vue new file mode 100644 index 0000000..f048212 --- /dev/null +++ b/src/views/govern/manage/gplot/index.vue @@ -0,0 +1,106 @@ + + diff --git a/src/views/govern/manage/gplot/popupEdit.vue b/src/views/govern/manage/gplot/popupEdit.vue new file mode 100644 index 0000000..4a5a4aa --- /dev/null +++ b/src/views/govern/manage/gplot/popupEdit.vue @@ -0,0 +1,103 @@ + + diff --git a/src/views/govern/setting/app/index.vue b/src/views/govern/setting/app/index.vue index 54eb6e8..706f48e 100644 --- a/src/views/govern/setting/app/index.vue +++ b/src/views/govern/setting/app/index.vue @@ -7,22 +7,23 @@ -
+
保存
- +