全局添加输入框空格校验

This commit is contained in:
GGJ
2024-12-25 10:53:07 +08:00
parent 90efcc4ad2
commit aed771578a
98 changed files with 703 additions and 904 deletions

View File

@@ -6,10 +6,10 @@
</el-row> </el-row>
<el-row class="ba-array-item" v-for="(item, idx) in state.value" :gutter="10" :key="idx"> <el-row class="ba-array-item" v-for="(item, idx) in state.value" :gutter="10" :key="idx">
<el-col :span="10"> <el-col :span="10">
<el-input maxlength="32" show-word-limit v-model="item.key"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="item.key"></el-input>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
<el-input maxlength="32" show-word-limit v-model="item.value"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="item.value"></el-input>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-button @click="onDelArrayItem(idx)" size="small" icon="el-icon-Delete" circle /> <el-button @click="onDelArrayItem(idx)" size="small" icon="el-icon-Delete" circle />

View File

@@ -37,7 +37,7 @@
</transition> </transition>
</div> </div>
<template #reference> <template #reference>
<el-input maxlength="32" show-word-limit v-model='state.inputValue' :size='size' :disabled='disabled' <el-input maxlength="32" show-word-limit v-model.trim='state.inputValue' :size='size' :disabled='disabled'
placeholder='搜索图标' ref='selectorInput' @focus='onInputFocus' @blur='onInputBlur' placeholder='搜索图标' ref='selectorInput' @focus='onInputFocus' @blur='onInputBlur'
:class="'size-' + size"> :class="'size-' + size">
<template #prepend> <template #prepend>

View File

@@ -2,57 +2,28 @@
<div class="w100"> <div class="w100">
<!-- el-select 的远程下拉只在有搜索词时才会加载数据显示出 option 列表 --> <!-- el-select 的远程下拉只在有搜索词时才会加载数据显示出 option 列表 -->
<!-- 使用 el-popover 在无数据/无搜索词时显示一个无数据的提醒 --> <!-- 使用 el-popover 在无数据/无搜索词时显示一个无数据的提醒 -->
<el-popover <el-popover width="100%" placement="bottom" popper-class="remote-select-popper"
width="100%"
placement="bottom"
popper-class="remote-select-popper"
:visible="state.focusStatus && !state.loading && !state.keyword && !state.options.length" :visible="state.focusStatus && !state.loading && !state.keyword && !state.options.length"
:teleported="false" :teleported="false" :content="$t('utils.No data')">
:content="$t('utils.No data')"
>
<template #reference> <template #reference>
<el-select <el-select ref="selectRef" class="w100" @focus="onFocus" @blur="onBlur"
ref="selectRef" :loading="state.loading || state.accidentBlur" :filterable="true" :remote="true" clearable
class="w100" remote-show-suffix :remote-method="onLogKeyword" v-model.trim="state.value" @change="onChangeSelect"
@focus="onFocus" :multiple="multiple" :key="state.selectKey" @clear="onClear" @visible-change="onVisibleChange"
@blur="onBlur" v-bind="$attrs">
:loading="state.loading || state.accidentBlur" <el-option class="remote-select-option" v-for="item in state.options" :label="item[field]"
:filterable="true" :value="item[state.primaryKey].toString()" :key="item[state.primaryKey]">
:remote="true"
clearable
remote-show-suffix
:remote-method="onLogKeyword"
v-model="state.value"
@change="onChangeSelect"
:multiple="multiple"
:key="state.selectKey"
@clear="onClear"
@visible-change="onVisibleChange"
v-bind="$attrs"
>
<el-option
class="remote-select-option"
v-for="item in state.options"
:label="item[field]"
:value="item[state.primaryKey].toString()"
:key="item[state.primaryKey]"
>
<el-tooltip placement="right" effect="light" v-if="!isEmpty(tooltipParams)"> <el-tooltip placement="right" effect="light" v-if="!isEmpty(tooltipParams)">
<template #content> <template #content>
<p v-for="(tooltipParam, key) in tooltipParams" :key="key">{{ key }}: {{ item[tooltipParam] }}</p> <p v-for="(tooltipParam, key) in tooltipParams" :key="key">{{ key }}: {{
item[tooltipParam] }}</p>
</template> </template>
<div>{{ item[field] }}</div> <div>{{ item[field] }}</div>
</el-tooltip> </el-tooltip>
</el-option> </el-option>
<el-pagination <el-pagination v-if="state.total" :currentPage="state.currentPage" :page-size="state.pageSize"
v-if="state.total" class="select-pagination" layout="->, prev, next" :total="state.total"
:currentPage="state.currentPage" @current-change="onSelectCurrentPageChange" />
:page-size="state.pageSize"
class="select-pagination"
layout="->, prev, next"
:total="state.total"
@current-change="onSelectCurrentPageChange"
/>
</el-select> </el-select>
</template> </template>
</el-popover> </el-popover>
@@ -304,6 +275,7 @@ defineExpose({
:deep(.remote-select-popper) { :deep(.remote-select-popper) {
text-align: center; text-align: center;
} }
.remote-select-option { .remote-select-option {
white-space: pre; white-space: pre;
} }

View File

@@ -1,10 +1,11 @@
<template> <template>
<div style="width: 540px"> <div style="width: 540px">
<el-select v-model="interval" style="min-width: 90px; width: 90px; margin-right: 10px" @change="timeChange"> <el-select v-model.trim="interval" style="min-width: 90px; width: 90px; margin-right: 10px"
@change="timeChange">
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
<el-date-picker v-model="timeValue" type="daterange" :disabled="disabledPicker" <el-date-picker v-model.trim="timeValue" type="daterange" :disabled="disabledPicker"
style="width: 220px; margin-right: 10px" unlink-panels :clearable="false" range-separator="" style="width: 220px; margin-right: 10px" unlink-panels :clearable="false" range-separator=""
start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD" :shortcuts="shortcuts" /> start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD" :shortcuts="shortcuts" />
<el-button :disabled="backDisabled" type="primary" :icon="DArrowLeft" @click="preClick"></el-button> <el-button :disabled="backDisabled" type="primary" :icon="DArrowLeft" @click="preClick"></el-button>

View File

@@ -9,7 +9,7 @@
</el-form-item> </el-form-item>
<el-form-item label="区域" v-if="area"> <el-form-item label="区域" v-if="area">
<Area ref="areaRef" v-model="tableStore.table.params.deptIndex" /> <Area ref="areaRef" v-model.trim="tableStore.table.params.deptIndex" />
</el-form-item> </el-form-item>
<slot name="select"></slot> <slot name="select"></slot>
</el-form> </el-form>
@@ -20,7 +20,7 @@
</el-button> </el-button>
<el-button @click="onComSearch" v-if="showSearch" type="primary" :icon="Search">查询</el-button> <el-button @click="onComSearch" v-if="showSearch" type="primary" :icon="Search">查询</el-button>
<el-button @click="onResetForm" v-if="showSearch && showReset" :icon="RefreshLeft">重置</el-button> <el-button @click="onResetForm" v-if="showSearch && showReset" :icon="RefreshLeft">重置</el-button>
</template> </template>
<slot name="operation"></slot> <slot name="operation"></slot>
</div> </div>
<el-form :style="showSelect && showUnfoldButton ? headerFormSecondStyleOpen : headerFormSecondStyleClose" <el-form :style="showSelect && showUnfoldButton ? headerFormSecondStyleOpen : headerFormSecondStyleClose"
@@ -123,6 +123,7 @@ const computedSearchRow = () => {
// 获取第一行放了几个表单 // 获取第一行放了几个表单
const elFormItem = headerForm.value.$el.querySelectorAll('.el-form-item') const elFormItem = headerForm.value.$el.querySelectorAll('.el-form-item')
// 把第一行放不下的复制一份放到headerFormSecond.value.$el // 把第一行放不下的复制一份放到headerFormSecond.value.$el
let width = 0 let width = 0
for (let i = 0; i < elFormItem.length; i++) { for (let i = 0; i < elFormItem.length; i++) {
@@ -130,6 +131,7 @@ const computedSearchRow = () => {
if (width > headerForm.value.$el.offsetWidth) { if (width > headerForm.value.$el.offsetWidth) {
headerFormSecond.value.$el.appendChild(elFormItem[i]) headerFormSecond.value.$el.appendChild(elFormItem[i])
} }
} }
// 判断是否需要折叠 // 判断是否需要折叠

View File

@@ -1,15 +1,14 @@
<!-- 设备管理使用折叠面板渲染多个tree --> <!-- 设备管理使用折叠面板渲染多个tree -->
<template> <template>
<div :style="{ width: menuCollapse ? '40px' : props.width }" <div :style="{ width: menuCollapse ? '40px' : props.width }" style="display: flex; overflow: hidden">
style="display: flex; overflow: hidden">
<Icon v-show="menuCollapse" @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'" <Icon v-show="menuCollapse" @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'"
:class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 mt20 menu-collapse" :class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 mt20 menu-collapse"
style="cursor: pointer" /> style="cursor: pointer" />
<div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1 }"> <div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1 }">
<div style="display: flex; align-items: center" class="mb10"> <div style="display: flex; align-items: center" class="mb10">
<!-- <el-form-item> --> <!-- <el-form-item> -->
<el-input maxlength="32" show-word-limit v-model="filterText" autocomplete="off" placeholder="请输入内容" <el-input maxlength="32" show-word-limit v-model.trim="filterText" autocomplete="off"
clearable> placeholder="请输入内容" clearable>
<template #prefix> <template #prefix>
<Icon name="el-icon-Search" style="font-size: 16px" /> <Icon name="el-icon-Search" style="font-size: 16px" />
</template> </template>
@@ -19,7 +18,8 @@
:class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 menu-collapse" :class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 menu-collapse"
style="cursor: pointer" v-if="props.canExpand" /> style="cursor: pointer" v-if="props.canExpand" />
</div> </div>
<el-collapse :accordion="true" v-model="activeName" style="flex: 1; height: 100%" @change="changeDevice"> <el-collapse :accordion="true" v-model.trim="activeName" style="flex: 1; height: 100%"
@change="changeDevice">
<el-collapse-item title="治理设备" name="0" v-if="zlDeviceData.length != 0"> <el-collapse-item title="治理设备" name="0" v-if="zlDeviceData.length != 0">
<el-tree <el-tree
:style="{ height: bxsDeviceData.length != 0 ? 'calc(100vh - 300px)' : 'calc(100vh - 238px)' }" :style="{ height: bxsDeviceData.length != 0 ? 'calc(100vh - 300px)' : 'calc(100vh - 238px)' }"

View File

@@ -4,7 +4,7 @@
<div class="cn-tree"> <div class="cn-tree">
<div style="display: flex; align-items: center" class="mb10"> <div style="display: flex; align-items: center" class="mb10">
<el-input maxlength="32" show-word-limit v-model="filterText" placeholder="请输入内容" clearable> <el-input maxlength="32" show-word-limit v-model.trim="filterText" placeholder="请输入内容" clearable>
<template #prefix> <template #prefix>
<Icon name="el-icon-Search" style="font-size: 16px" /> <Icon name="el-icon-Search" style="font-size: 16px" />
</template> </template>

View File

@@ -5,7 +5,7 @@
style='cursor: pointer' /> style='cursor: pointer' />
<div class='cn-tree' :style='{ opacity: menuCollapse ? 0 : 1 }'> <div class='cn-tree' :style='{ opacity: menuCollapse ? 0 : 1 }'>
<div style='display: flex; align-items: center' class='mb10'> <div style='display: flex; align-items: center' class='mb10'>
<el-input maxlength="32" show-word-limit v-model='filterText' placeholder='请输入内容' clearable> <el-input maxlength="32" show-word-limit v-model.trim='filterText' placeholder='请输入内容' clearable>
<template #prefix> <template #prefix>
<Icon name='el-icon-Search' style='font-size: 16px' /> <Icon name='el-icon-Search' style='font-size: 16px' />
</template> </template>

View File

@@ -1,13 +1,12 @@
<!-- 设备监控使用折叠面板渲染多个tree --> <!-- 设备监控使用折叠面板渲染多个tree -->
<template> <template>
<div :style="{ width: menuCollapse ? '40px' : props.width }" <div :style="{ width: menuCollapse ? '40px' : props.width }" style="display: flex; overflow: hidden">
style="display: flex; overflow: hidden">
<Icon v-show="menuCollapse" @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'" <Icon v-show="menuCollapse" @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'"
:class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 mt20 menu-collapse" style="cursor: pointer" :class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 mt20 menu-collapse" style="cursor: pointer"
v-if="route.path != '/admin/govern/reportCore/statistics/index'" /> v-if="route.path != '/admin/govern/reportCore/statistics/index'" />
<div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1, display: menuCollapse ? 'none' : '' }"> <div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1, display: menuCollapse ? 'none' : '' }">
<div style="display: flex; align-items: center" class="mb10"> <div style="display: flex; align-items: center" class="mb10">
<el-input maxlength="32" show-word-limit v-model="filterText" placeholder="请输入内容" clearable> <el-input maxlength="32" show-word-limit v-model.trim="filterText" placeholder="请输入内容" clearable>
<template #prefix> <template #prefix>
<Icon name="el-icon-Search" style="font-size: 16px" /> <Icon name="el-icon-Search" style="font-size: 16px" />
</template> </template>
@@ -17,7 +16,8 @@
style="cursor: pointer" style="cursor: pointer"
v-if="props.canExpand && route.path != '/admin/govern/reportCore/statistics/index'" /> v-if="props.canExpand && route.path != '/admin/govern/reportCore/statistics/index'" />
</div> </div>
<el-collapse :accordion="true" v-model="activeName" style="flex: 1; height: 100%" @change="changeDevice"> <el-collapse :accordion="true" v-model.trim="activeName" style="flex: 1; height: 100%"
@change="changeDevice">
<el-collapse-item title="治理设备" name="0" v-if="zlDeviceData.length != 0"> <el-collapse-item title="治理设备" name="0" v-if="zlDeviceData.length != 0">
<el-tree <el-tree
:style="{ height: bxsDeviceData.length != 0 ? 'calc(100vh - 300px)' : 'calc(100vh - 238px)' }" :style="{ height: bxsDeviceData.length != 0 ? 'calc(100vh - 300px)' : 'calc(100vh - 238px)' }"

View File

@@ -1,24 +1,24 @@
<template> <template>
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title"> <el-dialog draggable class="cn-operate-dialog" v-model.trim="dialogVisible" :title="title">
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" class="form-two"> <el-form :inline="false" :model="form" label-width="120px" class="form-two">
<el-form-item label="用户名称:"> <el-form-item label="用户名称:">
<el-input v-model="form.name" :disabled="true"></el-input> <el-input v-model.trim="form.name" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="登录名称:" class="top"> <el-form-item label="登录名称:" class="top">
<el-input v-model="form.loginName" :disabled="true"></el-input> <el-input v-model.trim="form.loginName" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="归属部门名称:" class="top"> <el-form-item label="归属部门名称:" class="top">
<el-input v-model="form.deptName" :disabled="true"></el-input> <el-input v-model.trim="form.deptName" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="拥有的角色:" class="top"> <el-form-item label="拥有的角色:" class="top">
<el-input v-model="form.role" :disabled="true"></el-input> <el-input v-model.trim="form.role" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="电话号码:" class="top"> <el-form-item label="电话号码:" class="top">
<el-input v-model="form.phone" :disabled="true"></el-input> <el-input v-model.trim="form.phone" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="电子邮箱:" class="top"> <el-form-item label="电子邮箱:" class="top">
<el-input v-model="form.email" :disabled="true"></el-input> <el-input v-model.trim="form.email" :disabled="true"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>

View File

@@ -1,18 +1,15 @@
<template> <template>
<el-dialog draggable width="500px" v-model="dialogVisible" :title="title"> <el-dialog draggable width="500px" v-model.trim="dialogVisible" :title="title">
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" class="form-one" ref="formRef"> <el-form :inline="false" :model="form" label-width="120px" :rules="rules" class="form-one" ref="formRef">
<el-form-item label="校验密码:" prop="password"> <el-form-item label="校验密码:" prop="password">
<el-input v-model="form.password" type="password" <el-input v-model.trim="form.password" type="password" placeholder="请输入校验密码" show-password />
placeholder="请输入校验密码" show-password />
</el-form-item> </el-form-item>
<el-form-item label="新密码:" prop="newPwd" > <el-form-item label="新密码:" prop="newPwd">
<el-input v-model="form.newPwd" type="password" placeholder="请输入新密码" <el-input v-model.trim="form.newPwd" type="password" placeholder="请输入新密码" show-password />
show-password />
</el-form-item> </el-form-item>
<el-form-item label="确认密码:" prop="confirmPwd" > <el-form-item label="确认密码:" prop="confirmPwd">
<el-input v-model="form.confirmPwd" type="password" <el-input v-model.trim="form.confirmPwd" type="password" placeholder="请输入确认密码" show-password />
placeholder="请输入确认密码" show-password />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>

View File

@@ -195,15 +195,13 @@ const clear = () => {
</script> </script>
<template> <template>
<div <div :class="prefixCls"
:class="prefixCls"
class="fixed right-0 top-[45%] h-40px w-40px cursor-pointer bg-[var(--el-color-primary)] text-center leading-40px" class="fixed right-0 top-[45%] h-40px w-40px cursor-pointer bg-[var(--el-color-primary)] text-center leading-40px"
@click="drawer = true" @click="drawer = true">
>
<Icon color="#fff" icon="ep:setting" /> <Icon color="#fff" icon="ep:setting" />
</div> </div>
<ElDrawer v-model="drawer" :z-index="4000" direction="rtl" size="350px"> <ElDrawer v-model.trim="drawer" :z-index="4000" direction="rtl" size="350px">
<template #header> <template #header>
<span class="text-16px font-700">{{ t('setting.projectSetting') }}</span> <span class="text-16px font-700">{{ t('setting.projectSetting') }}</span>
</template> </template>
@@ -219,28 +217,22 @@ const clear = () => {
<!-- 系统主题 --> <!-- 系统主题 -->
<ElDivider>{{ t('setting.systemTheme') }}</ElDivider> <ElDivider>{{ t('setting.systemTheme') }}</ElDivider>
<ColorRadioPicker <ColorRadioPicker v-model.trim="systemTheme"
v-model="systemTheme"
:schema="['#409eff', '#009688', '#536dfe', '#ff5c93', '#ee4f12', '#0096c7', '#9c27b0', '#ff9800']" :schema="['#409eff', '#009688', '#536dfe', '#ff5c93', '#ee4f12', '#0096c7', '#9c27b0', '#ff9800']"
@change="setSystemTheme" @change="setSystemTheme" />
/>
<!-- 头部主题 --> <!-- 头部主题 -->
<ElDivider>{{ t('setting.headerTheme') }}</ElDivider> <ElDivider>{{ t('setting.headerTheme') }}</ElDivider>
<ColorRadioPicker <ColorRadioPicker v-model.trim="headerTheme"
v-model="headerTheme"
:schema="['#fff', '#151515', '#5172dc', '#e74c3c', '#24292e', '#394664', '#009688', '#383f45']" :schema="['#fff', '#151515', '#5172dc', '#e74c3c', '#24292e', '#394664', '#009688', '#383f45']"
@change="setHeaderTheme" @change="setHeaderTheme" />
/>
<!-- 菜单主题 --> <!-- 菜单主题 -->
<template v-if="layout !== 'top'"> <template v-if="layout !== 'top'">
<ElDivider>{{ t('setting.menuTheme') }}</ElDivider> <ElDivider>{{ t('setting.menuTheme') }}</ElDivider>
<ColorRadioPicker <ColorRadioPicker v-model.trim="menuTheme"
v-model="menuTheme"
:schema="['#fff', '#001529', '#212121', '#273352', '#191b24', '#383f45', '#001628', '#344058']" :schema="['#fff', '#001529', '#212121', '#273352', '#191b24', '#383f45', '#001628', '#344058']"
@change="setMenuTheme" @change="setMenuTheme" />
/>
</template> </template>
</div> </div>

View File

@@ -143,82 +143,82 @@ watch(
<div :class="prefixCls"> <div :class="prefixCls">
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.breadcrumb') }}</span> <span class="text-14px">{{ t('setting.breadcrumb') }}</span>
<ElSwitch v-model="breadcrumb" @change="breadcrumbChange" /> <ElSwitch v-model.trim="breadcrumb" @change="breadcrumbChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.breadcrumbIcon') }}</span> <span class="text-14px">{{ t('setting.breadcrumbIcon') }}</span>
<ElSwitch v-model="breadcrumbIcon" @change="breadcrumbIconChange" /> <ElSwitch v-model.trim="breadcrumbIcon" @change="breadcrumbIconChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.hamburgerIcon') }}</span> <span class="text-14px">{{ t('setting.hamburgerIcon') }}</span>
<ElSwitch v-model="hamburger" @change="hamburgerChange" /> <ElSwitch v-model.trim="hamburger" @change="hamburgerChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.screenfullIcon') }}</span> <span class="text-14px">{{ t('setting.screenfullIcon') }}</span>
<ElSwitch v-model="screenfull" @change="screenfullChange" /> <ElSwitch v-model.trim="screenfull" @change="screenfullChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.sizeIcon') }}</span> <span class="text-14px">{{ t('setting.sizeIcon') }}</span>
<ElSwitch v-model="size" @change="sizeChange" /> <ElSwitch v-model.trim="size" @change="sizeChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.localeIcon') }}</span> <span class="text-14px">{{ t('setting.localeIcon') }}</span>
<ElSwitch v-model="locale" @change="localeChange" /> <ElSwitch v-model.trim="locale" @change="localeChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.messageIcon') }}</span> <span class="text-14px">{{ t('setting.messageIcon') }}</span>
<ElSwitch v-model="message" @change="messageChange" /> <ElSwitch v-model.trim="message" @change="messageChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.tagsView') }}</span> <span class="text-14px">{{ t('setting.tagsView') }}</span>
<ElSwitch v-model="tagsView" @change="tagsViewChange" /> <ElSwitch v-model.trim="tagsView" @change="tagsViewChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.tagsViewIcon') }}</span> <span class="text-14px">{{ t('setting.tagsViewIcon') }}</span>
<ElSwitch v-model="tagsViewIcon" @change="tagsViewIconChange" /> <ElSwitch v-model.trim="tagsViewIcon" @change="tagsViewIconChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.logo') }}</span> <span class="text-14px">{{ t('setting.logo') }}</span>
<ElSwitch v-model="logo" @change="logoChange" /> <ElSwitch v-model.trim="logo" @change="logoChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.uniqueOpened') }}</span> <span class="text-14px">{{ t('setting.uniqueOpened') }}</span>
<ElSwitch v-model="uniqueOpened" @change="uniqueOpenedChange" /> <ElSwitch v-model.trim="uniqueOpened" @change="uniqueOpenedChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.fixedHeader') }}</span> <span class="text-14px">{{ t('setting.fixedHeader') }}</span>
<ElSwitch v-model="fixedHeader" @change="fixedHeaderChange" /> <ElSwitch v-model.trim="fixedHeader" @change="fixedHeaderChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.footer') }}</span> <span class="text-14px">{{ t('setting.footer') }}</span>
<ElSwitch v-model="footer" @change="footerChange" /> <ElSwitch v-model.trim="footer" @change="footerChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.greyMode') }}</span> <span class="text-14px">{{ t('setting.greyMode') }}</span>
<ElSwitch v-model="greyMode" @change="greyModeChange" /> <ElSwitch v-model.trim="greyMode" @change="greyModeChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('setting.fixedMenu') }}</span> <span class="text-14px">{{ t('setting.fixedMenu') }}</span>
<ElSwitch v-model="fixedMenu" @change="fixedMenuChange" /> <ElSwitch v-model.trim="fixedMenu" @change="fixedMenuChange" />
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="text-14px">{{ t('watermark.watermark') }}</span> <span class="text-14px">{{ t('watermark.watermark') }}</span>
<ElInput v-model="water" class="right-1 w-20" @change="setWater()" /> <ElInput v-model.trim="water" class="right-1 w-20" @change="setWater()" />
</div> </div>
</div> </div>
</template> </template>

View File

@@ -28,17 +28,8 @@ const themeChange = (val: boolean) => {
</script> </script>
<template> <template>
<ElSwitch <ElSwitch v-model.trim="isDark" :active-color="blackColor" :active-icon="Sun" :border-color="blackColor"
v-model="isDark" :class="prefixCls" :inactive-color="blackColor" :inactive-icon="CrescentMoon" inline-prompt @change="themeChange" />
:active-color="blackColor"
:active-icon="Sun"
:border-color="blackColor"
:class="prefixCls"
:inactive-color="blackColor"
:inactive-icon="CrescentMoon"
inline-prompt
@change="themeChange"
/>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-switch__core .el-switch__inner .is-icon) { :deep(.el-switch__core .el-switch__inner .is-icon) {

View File

@@ -46,7 +46,7 @@ const loginOut = async () => {
await userStore.loginOut() await userStore.loginOut()
tagsViewStore.delAllViews() tagsViewStore.delAllViews()
replace('/login?redirect=/index') replace('/login?redirect=/index')
} catch {} } catch { }
} }
const toProfile = async () => { const toProfile = async () => {
push('/user/profile') push('/user/profile')
@@ -86,7 +86,7 @@ const toDocument = () => {
</template> </template>
</ElDropdown> </ElDropdown>
<LockDialog v-if="dialogVisible" v-model="dialogVisible" /> <LockDialog v-if="dialogVisible" v-model.trim="dialogVisible" />
<teleport to="body"> <teleport to="body">
<transition name="fade-bottom" mode="out-in"> <transition name="fade-bottom" mode="out-in">

View File

@@ -60,7 +60,7 @@ const handleLock = async () => {
</script> </script>
<template> <template>
<Dialog v-model="dialogVisible" width="500px" max-height="170px" :class="prefixCls" :title="dialogTitle"> <Dialog v-model.trim="dialogVisible" width="500px" max-height="170px" :class="prefixCls" :title="dialogTitle">
<div class="flex flex-col items-center"> <div class="flex flex-col items-center">
<img :src="avatar" alt="" class="w-70px h-70px rounded-[50%]" /> <img :src="avatar" alt="" class="w-70px h-70px rounded-[50%]" />
<span class="text-14px my-10px text-[var(--top-header-text-color)]"> <span class="text-14px my-10px text-[var(--top-header-text-color)]">
@@ -69,7 +69,7 @@ const handleLock = async () => {
</div> </div>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px"> <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
<el-form-item :label="t('lock.lockPassword')" prop="password"> <el-form-item :label="t('lock.lockPassword')" prop="password">
<el-input maxlength="32" show-word-limit type="password" v-model="formData.password" <el-input maxlength="32" show-word-limit type="password" v-model.trim="formData.password"
:placeholder="'请输入' + t('lock.lockPassword')" clearable show-password /> :placeholder="'请输入' + t('lock.lockPassword')" clearable show-password />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -50,7 +50,7 @@ async function unLock() {
// 返回登录 // 返回登录
async function goLogin() { async function goLogin() {
await userStore.loginOut().catch(() => {}) await userStore.loginOut().catch(() => { })
// 登出后清理 // 登出后清理
deleteUserCache() // 清空用户缓存 deleteUserCache() // 清空用户缓存
tagsViewStore.delAllViews() tagsViewStore.delAllViews()
@@ -66,12 +66,9 @@ function handleShowForm(show = false) {
<template> <template>
<div :class="prefixCls" class="fixed inset-0 flex h-screen w-screen bg-black items-center justify-center"> <div :class="prefixCls" class="fixed inset-0 flex h-screen w-screen bg-black items-center justify-center">
<div <div :class="`${prefixCls}__unlock`"
:class="`${prefixCls}__unlock`"
class="absolute top-0 left-1/2 flex pt-5 h-16 items-center justify-center sm:text-md xl:text-xl text-white flex-col cursor-pointer transform translate-x-1/2" class="absolute top-0 left-1/2 flex pt-5 h-16 items-center justify-center sm:text-md xl:text-xl text-white flex-col cursor-pointer transform translate-x-1/2"
@click="handleShowForm(false)" @click="handleShowForm(false)" v-show="showDate">
v-show="showDate"
>
<Icon icon="ep:lock" /> <Icon icon="ep:lock" />
<span>{{ t('lock.unlock') }}</span> <span>{{ t('lock.unlock') }}</span>
</div> </div>
@@ -96,29 +93,18 @@ function handleShowForm(show = false) {
{{ userName }} {{ userName }}
</span> </span>
</div> </div>
<ElInput type="password" :placeholder="t('lock.placeholder')" class="enter-x" v-model="password" /> <ElInput type="password" :placeholder="t('lock.placeholder')" class="enter-x"
v-model.trim="password" />
<span :class="`text-14px ${prefixCls}-entry__err-msg enter-x`" v-if="errMsg"> <span :class="`text-14px ${prefixCls}-entry__err-msg enter-x`" v-if="errMsg">
{{ t('lock.message') }} {{ t('lock.message') }}
</span> </span>
<div :class="`${prefixCls}-entry__footer enter-x`"> <div :class="`${prefixCls}-entry__footer enter-x`">
<ElButton <ElButton type="primary" size="small" class="mt-2 mr-2 enter-x" link :disabled="loading"
type="primary" @click="handleShowForm(true)">
size="small"
class="mt-2 mr-2 enter-x"
link
:disabled="loading"
@click="handleShowForm(true)"
>
{{ t('common.back') }} {{ t('common.back') }}
</ElButton> </ElButton>
<ElButton <ElButton type="primary" size="small" class="mt-2 mr-2 enter-x" link :disabled="loading"
type="primary" @click="goLogin">
size="small"
class="mt-2 mr-2 enter-x"
link
:disabled="loading"
@click="goLogin"
>
{{ t('lock.backToLogin') }} {{ t('lock.backToLogin') }}
</ElButton> </ElButton>
<ElButton type="primary" class="mt-2" size="small" link @click="unLock()" :disabled="loading"> <ElButton type="primary" class="mt-2" size="small" link @click="unLock()" :disabled="loading">
@@ -193,6 +179,7 @@ $error-color: #ed6f6f;
font-size: 90px; font-size: 90px;
} }
} }
@media screen and (min-width: $screen-lg) { @media screen and (min-width: $screen-lg) {
span:not(.meridiem) { span:not(.meridiem) {
font-size: 220px; font-size: 220px;
@@ -204,6 +191,7 @@ $error-color: #ed6f6f;
font-size: 260px; font-size: 260px;
} }
} }
@media screen and (min-width: $screen-2xl) { @media screen and (min-width: $screen-2xl) {
span:not(.meridiem) { span:not(.meridiem) {
font-size: 320px; font-size: 320px;

View File

@@ -1,15 +1,15 @@
<template> <template>
<el-dialog width="600px" v-model='dialogVisible' :title='title'> <el-dialog width="600px" v-model.trim='dialogVisible' :title='title'>
<el-scrollbar> <el-scrollbar>
<el-form :inline='false' :model='form' label-width='auto' class="form-one" :rules='rules' ref='formRef'> <el-form :inline='false' :model='form' label-width='auto' class="form-one" :rules='rules' ref='formRef'>
<el-form-item label='角色名称'> <el-form-item label='角色名称'>
<el-input maxlength="32" show-word-limit v-model='form.name' placeholder='请输入菜单名称' /> <el-input maxlength="32" show-word-limit v-model.trim='form.name' placeholder='请输入菜单名称' />
</el-form-item> </el-form-item>
<el-form-item label='角色编码'> <el-form-item label='角色编码'>
<el-input maxlength="32" show-word-limit v-model='form.code' placeholder='请输入菜单名称' /> <el-input maxlength="32" show-word-limit v-model.trim='form.code' placeholder='请输入菜单名称' />
</el-form-item> </el-form-item>
<el-form-item label='角色描述'> <el-form-item label='角色描述'>
<el-input maxlength="300" show-word-limit v-model='form.remark' :rows='2' type='textarea' <el-input maxlength="300" show-word-limit v-model.trim='form.remark' :rows='2' type='textarea'
placeholder='请输入描述' /> placeholder='请输入描述' />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,43 +1,49 @@
const dataProcessing = (arr: any[]) => { const dataProcessing = (arr: any[]) => {
return arr return arr
.filter(item => typeof item === 'number' || (typeof item === 'string' && !isNaN(parseFloat(item)))) .filter(item => typeof item == 'number' || (typeof item == 'string' && !isNaN(parseFloat(item))))
.map(item => (typeof item === 'number' ? item : parseFloat(item))) .map(item => (typeof item == 'number' ? item : parseFloat(item)))
} }
// 处理y轴最大最小值 // 处理y轴最大最小值
export const yMethod = (arr: any) => { export const yMethod = (arr: any) => {
let numList = dataProcessing(arr) const numList = dataProcessing(arr);
let maxValue = 0 const maxValue = Math.max(...numList);
let minValue = 0 const minValue = Math.min(...numList);
let max = 0
let min = 0 const calculateBoundary = (value: number, base: number) => {
maxValue = Math.max(...numList) return Math[value > 0? 'ceil' : 'floor'](value / base) * base;
minValue = Math.min(...numList) };
let max: number;
let min: number;
if (maxValue > 1000 || minValue < -1000) { if (maxValue > 1000 || minValue < -1000) {
max = Math.ceil(maxValue / 100) * 100 max = calculateBoundary(maxValue, 100);
if (minValue == 0) { min = minValue == 0? 0 : calculateBoundary(minValue, 100);
min = 0 } else if (maxValue < 60 && minValue > 40) {
} else { max = 60;
min = Math.floor(minValue / 100) * 100 min = 40;
} else if (maxValue == minValue) {
if (maxValue < 10 && minValue > 0) {
max = calculateBoundary(maxValue, 10);
min = calculateBoundary(minValue, 10);
} else if (maxValue!== 0 && minValue!== 0) {
max = calculateBoundary(maxValue / 10 + 1, 10);
min = calculateBoundary(minValue / 10 - 1, 10);
} }
} else if (maxValue == minValue && maxValue < 10 && minValue > 0) {
max = Math.ceil(maxValue / 10) * 10
min = Math.floor(minValue / 10) * 10
} else if (maxValue == minValue && maxValue != 0 && minValue != 0) {
max = Math.ceil(maxValue / 10 + 1) * 10
min = Math.floor(minValue / 10 - 1) * 10
} else { } else {
max = Math.ceil(maxValue / 10) * 10 max = calculateBoundary(maxValue, 10);
min = Math.floor(minValue / 10) * 10 min = calculateBoundary(minValue, 10);
} }
if (maxValue > 0 && maxValue < 1) { if (maxValue > 0 && maxValue < 1) {
max = 1 max = 1;
} else if (max == 0 && minValue > -1 && minValue < 0) {
min = -1
} }
return [min, max] if (max == 0 && minValue > -1 && minValue < 0) {
} min = -1;
}
return [min, max];
};
/** /**
* title['A相','B相',] * title['A相','B相',]

View File

@@ -2,8 +2,8 @@
<div> <div>
<div class="custom-table-header"> <div class="custom-table-header">
<div class="title">接口权限列表</div> <div class="title">接口权限列表</div>
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" style="width: 240px" <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="请输入菜单名称" class="ml10" clearable @input="search" /> style="width: 240px" placeholder="请输入菜单名称" class="ml10" clearable @input="search" />
<el-button :icon="Plus" type="primary" @click="addMenu" class="ml10" :disabled="!props.id">新增</el-button> <el-button :icon="Plus" type="primary" @click="addMenu" class="ml10" :disabled="!props.id">新增</el-button>
</div> </div>
<Table ref="tableRef" /> <Table ref="tableRef" />

View File

@@ -2,8 +2,8 @@
<div> <div>
<div class="custom-table-header"> <div class="custom-table-header">
<div class="title">菜单列表</div> <div class="title">菜单列表</div>
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" style="width: 310px" <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="请输入菜单名称" class="ml10" clearable @input="search" /> style="width: 310px" placeholder="请输入菜单名称" class="ml10" clearable @input="search" />
<el-button :icon="Plus" type="primary" @click="addMenu" class="ml10">新增</el-button> <el-button :icon="Plus" type="primary" @click="addMenu" class="ml10">新增</el-button>
</div> </div>
<Table @currentChange="currentChange" /> <Table @currentChange="currentChange" />

View File

@@ -1,27 +1,27 @@
<template> <template>
<el-dialog width="700px" v-model="dialogVisible" :title="title"> <el-dialog width="700px" v-model.trim="dialogVisible" :title="title">
<el-scrollbar> <el-scrollbar>
<el-form :mode="form" :inline="false" :model="form" label-width="120px" :rules="rules" class="form-one"> <el-form :mode="form" :inline="false" :model="form" label-width="120px" :rules="rules" class="form-one">
<el-form-item prop="name" label="接口/按钮名称"> <el-form-item prop="name" label="接口/按钮名称">
<el-input maxlength="32" show-word-limit v-model="form.name" placeholder="请输入接口名称" /> <el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入接口名称" />
</el-form-item> </el-form-item>
<el-form-item prop="code" label="接口/按钮标识"> <el-form-item prop="code" label="接口/按钮标识">
<el-input maxlength="32" show-word-limit v-model="form.code" placeholder="请输入英文接口标识" /> <el-input maxlength="32" show-word-limit v-model.trim="form.code" placeholder="请输入英文接口标识" />
</el-form-item> </el-form-item>
<el-form-item prop="path" label="接口路径"> <el-form-item prop="path" label="接口路径">
<el-input maxlength="32" show-word-limit v-model="form.path" placeholder="请输入接口路径" /> <el-input maxlength="32" show-word-limit v-model.trim="form.path" placeholder="请输入接口路径" />
</el-form-item> </el-form-item>
<el-form-item prop="type" label="接口类型"> <el-form-item prop="type" label="接口类型">
<el-radio-group v-model="form.type"> <el-radio-group v-model.trim="form.type">
<el-radio :label="1">普通接口</el-radio> <el-radio :label="1">普通接口</el-radio>
<el-radio :label="2">公用接口</el-radio> <el-radio :label="2">公用接口</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item prop="sort" label="排序"> <el-form-item prop="sort" label="排序">
<el-input maxlength="32" show-word-limit-number v-model="form.sort" :min="0" /> <el-input maxlength="32" show-word-limit-number v-model.trim="form.sort" :min="0" />
</el-form-item> </el-form-item>
<el-form-item prop="remark" label="接口/按钮描述"> <el-form-item prop="remark" label="接口/按钮描述">
<el-input maxlength="300" show-word-limit v-model="form.remark" :rows="2" type="textarea" <el-input maxlength="300" show-word-limit v-model.trim="form.remark" :rows="2" type="textarea"
placeholder="请输入描述" /> placeholder="请输入描述" />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,29 +1,28 @@
<template> <template>
<el-dialog class="cn-operate-dialog" width="700px" v-model="dialogVisible" :title="title"> <el-dialog class="cn-operate-dialog" width="700px" v-model.trim="dialogVisible" :title="title">
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="auto" class="form-one"> <el-form :inline="false" :model="form" label-width="auto" class="form-one">
<el-form-item label="上级菜单"> <el-form-item label="上级菜单">
<el-cascader v-model="form.pid" :options="tableStore.table.data" :props="cascaderProps" <el-cascader v-model.trim="form.pid" :options="tableStore.table.data" :props="cascaderProps"
style="width: 100%" /> style="width: 100%" />
</el-form-item> </el-form-item>
<el-form-item label="菜单名称"> <el-form-item label="菜单名称">
<el-input maxlength="32" show-word-limit v-model="form.name" placeholder="请输入菜单名称" /> <el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入菜单名称" />
</el-form-item> </el-form-item>
<el-form-item label="图标"> <el-form-item label="图标">
<IconSelector v-model="form.icon" placeholder="请选择图标" /> <IconSelector v-model.trim="form.icon" placeholder="请选择图标" />
</el-form-item> </el-form-item>
<el-form-item label="菜单路由"> <el-form-item label="菜单路由">
<el-input v-model="form.path" placeholder="请输入菜单名称" /> <el-input v-model.trim="form.path" placeholder="请输入菜单名称" />
</el-form-item> </el-form-item>
<el-form-item label="组件路径"> <el-form-item label="组件路径">
<el-input v-model="form.routeName" <el-input v-model.trim="form.routeName" placeholder="请输入组件路径,如/src/views/dashboard/index.vue" />
placeholder="请输入组件路径,如/src/views/dashboard/index.vue" />
</el-form-item> </el-form-item>
<el-form-item label="排序"> <el-form-item label="排序">
<el-input maxlength="32" show-word-limit-number v-model="form.sort" :min="0" /> <el-input maxlength="32" show-word-limit-number v-model.trim="form.sort" :min="0" />
</el-form-item> </el-form-item>
<el-form-item label="菜单描述"> <el-form-item label="菜单描述">
<el-input maxlength="300" show-word-limit v-model="form.remark" :rows="2" type="textarea" <el-input maxlength="300" show-word-limit v-model.trim="form.remark" :rows="2" type="textarea"
placeholder="请输入描述" /> placeholder="请输入描述" />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,14 +1,14 @@
<template> <template>
<el-dialog class="cn-operate-dialog" width="700px" v-model="dialogVisible" :title="title"> <el-dialog class="cn-operate-dialog" width="700px" v-model.trim="dialogVisible" :title="title">
<el-form :inline="false" :model="form" label-width="auto" class="form-one" :rules="rules"> <el-form :inline="false" :model="form" label-width="auto" class="form-one" :rules="rules">
<el-form-item label="角色名称"> <el-form-item label="角色名称">
<el-input maxlength="32" show-word-limit v-model="form.name" placeholder="请输入菜单名称" /> <el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入菜单名称" />
</el-form-item> </el-form-item>
<el-form-item label="角色编码"> <el-form-item label="角色编码">
<el-input maxlength="32" show-word-limit v-model="form.code" placeholder="请输入菜单名称" /> <el-input maxlength="32" show-word-limit v-model.trim="form.code" placeholder="请输入菜单名称" />
</el-form-item> </el-form-item>
<el-form-item label="角色描述"> <el-form-item label="角色描述">
<el-input maxlength="300" show-word-limit v-model="form.remark" :rows="2" type="textarea" <el-input maxlength="300" show-word-limit v-model.trim="form.remark" :rows="2" type="textarea"
placeholder="请输入描述" /> placeholder="请输入描述" />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -3,20 +3,20 @@
<TableHeader> <TableHeader>
<template v-slot:select> <template v-slot:select>
<el-form-item label="用户状态"> <el-form-item label="用户状态">
<el-select v-model="tableStore.table.params.searchState" placeholder="选择用户状态"> <el-select v-model.trim="tableStore.table.params.searchState" placeholder="选择用户状态">
<el-option v-for="(item, index) in userState" :label="item.label" :key="index" <el-option v-for="(item, index) in userState" :label="item.label" :key="index"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="用户类型:"> <el-form-item label="用户类型:">
<el-select v-model="tableStore.table.params.casualUser" placeholder="选择用户类型"> <el-select v-model.trim="tableStore.table.params.casualUser" placeholder="选择用户类型">
<el-option v-for="(item, index) in casualUser" :label="item.label" :key="index" <el-option v-for="(item, index) in casualUser" :label="item.label" :key="index"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关键词:"> <el-form-item label="关键词:">
<el-input maxlength="32" show-word-limit style="width: 240px" <el-input maxlength="32" show-word-limit style="width: 240px"
v-model="tableStore.table.params.searchValue" clearable placeholder="仅根据用户名/登录名" /> v-model.trim="tableStore.table.params.searchValue" clearable placeholder="仅根据用户名/登录名" />
</el-form-item> </el-form-item>
</template> </template>
<template v-slot:operation> <template v-slot:operation>

View File

@@ -1,73 +1,73 @@
<template> <template>
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title"> <el-dialog class="cn-operate-dialog" v-model.trim="dialogVisible" :title="title">
<el-form :model="form" label-width="auto" class="form-two" :rules="rules"> <el-form :model="form" label-width="auto" class="form-two" :rules="rules">
<el-form-item label="用户名" prop="name"> <el-form-item label="用户名" prop="name">
<el-input maxlength="32" show-word-limit v-model="form.name" placeholder="请输入昵称" /> <el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入昵称" />
</el-form-item> </el-form-item>
<el-form-item label="登录名" prop="loginName"> <el-form-item label="登录名" prop="loginName">
<el-input maxlength="32" show-word-limit v-model="form.loginName" placeholder="请输入登录名" /> <el-input maxlength="32" show-word-limit v-model.trim="form.loginName" placeholder="请输入登录名" />
</el-form-item> </el-form-item>
<el-form-item label="默认密码" prop="password" v-if="title === '新增用户'"> <el-form-item label="默认密码" prop="password" v-if="title === '新增用户'">
<el-input maxlength="32" show-word-limit v-model="form.password" placeholder="请输入密码" disabled /> <el-input maxlength="32" show-word-limit v-model.trim="form.password" placeholder="请输入密码" disabled />
</el-form-item> </el-form-item>
<el-form-item label="权限类型" prop="type"> <el-form-item label="权限类型" prop="type">
<el-select v-model="form.type" @change="changeValue" disabled placeholder="请选择权限类型"> <el-select v-model.trim="form.type" @change="changeValue" disabled placeholder="请选择权限类型">
<el-option v-for="(item, index) in UserTypeOption" :label="item.label" :value="item.value" <el-option v-for="(item, index) in UserTypeOption" :label="item.label" :value="item.value"
:key="index"></el-option> :key="index"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="用户类型" prop="casualUser"> <el-form-item label="用户类型" prop="casualUser">
<el-select v-model="form.casualUser" placeholder="请选择权限类型"> <el-select v-model.trim="form.casualUser" placeholder="请选择权限类型">
<el-option v-for="(item, index) in TypeOptions" :label="item.label" :value="item.value" <el-option v-for="(item, index) in TypeOptions" :label="item.label" :value="item.value"
:key="index"></el-option> :key="index"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="所属部门" prop="deptId"> <el-form-item label="所属部门" prop="deptId">
<Area v-model="form.deptId" /> <Area v-model.trim="form.deptId" />
</el-form-item> </el-form-item>
<el-form-item label="角色" prop="role"> <el-form-item label="角色" prop="role">
<el-select v-model="form.role" placeholder="请选择角色" multiple collapse-tags> <el-select v-model.trim="form.role" placeholder="请选择角色" multiple collapse-tags>
<el-option v-for="(item, index) in roleOptions" :label="item.label" :value="item.value" <el-option v-for="(item, index) in roleOptions" :label="item.label" :value="item.value"
:key="index"></el-option> :key="index"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="手机号" prop="phone"> <el-form-item label="手机号" prop="phone">
<el-input maxlength="32" show-word-limit v-model="form.phone" placeholder="请输入手机号" /> <el-input maxlength="32" show-word-limit v-model.trim="form.phone" placeholder="请输入手机号" />
</el-form-item> </el-form-item>
<el-form-item label="邮箱" prop="email"> <el-form-item label="邮箱" prop="email">
<el-input maxlength="32" show-word-limit v-model="form.email" placeholder="请输入描述" /> <el-input maxlength="32" show-word-limit v-model.trim="form.email" placeholder="请输入描述" />
</el-form-item> </el-form-item>
<el-form-item label="时间段" prop="limitTime"> <el-form-item label="时间段" prop="limitTime">
<el-slider v-model="form.limitTime" style="width: 95%" range show-stops :max="24" /> <el-slider v-model.trim="form.limitTime" style="width: 95%" range show-stops :max="24" />
</el-form-item> </el-form-item>
<el-form-item label="起始IP" prop="limitIpStart"> <el-form-item label="起始IP" prop="limitIpStart">
<el-input maxlength="32" show-word-limit v-model="form.limitIpStart" placeholder="请输入描述" /> <el-input maxlength="32" show-word-limit v-model.trim="form.limitIpStart" placeholder="请输入描述" />
</el-form-item> </el-form-item>
<el-form-item label="结束IP" prop="limitIpEnd"> <el-form-item label="结束IP" prop="limitIpEnd">
<el-input maxlength="32" show-word-limit v-model="form.limitIpEnd" placeholder="请输入描述" /> <el-input maxlength="32" show-word-limit v-model.trim="form.limitIpEnd" placeholder="请输入描述" />
</el-form-item> </el-form-item>
<el-form-item label="短信通知" prop="smsNotice"> <el-form-item label="短信通知" prop="smsNotice">
<el-radio-group v-model="form.smsNotice" style="width: 200px"> <el-radio-group v-model.trim="form.smsNotice" style="width: 200px">
<el-radio-button :label="0"></el-radio-button> <el-radio-button :label="0"></el-radio-button>
<el-radio-button :label="1"></el-radio-button> <el-radio-button :label="1"></el-radio-button>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="邮件通知" prop="emailNotice"> <el-form-item label="邮件通知" prop="emailNotice">
<el-radio-group v-model="form.emailNotice" style="width: 200px"> <el-radio-group v-model.trim="form.emailNotice" style="width: 200px">
<el-radio-button :label="0"></el-radio-button> <el-radio-button :label="0"></el-radio-button>
<el-radio-button :label="1"></el-radio-button> <el-radio-button :label="1"></el-radio-button>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="用户ID"> <el-form-item label="用户ID">
<div style="display: flex; width: 100%"> <div style="display: flex; width: 100%">
<el-radio-group v-model="useId"> <el-radio-group v-model.trim="useId">
<el-radio-button :label="1"></el-radio-button> <el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="0"></el-radio-button> <el-radio-button :label="0"></el-radio-button>
</el-radio-group> </el-radio-group>
<el-input maxlength="32" show-word-limit :disabled="title !== '新增用户'" v-model="form.id" <el-input maxlength="32" show-word-limit :disabled="title !== '新增用户'" v-model.trim="form.id"
placeholder="请输入用户id" v-if="useId" style="flex: 1;" class="ml10"></el-input> placeholder="请输入用户id" v-if="useId" style="flex: 1;" class="ml10"></el-input>
</div> </div>
</el-form-item> </el-form-item>

View File

@@ -1,13 +1,13 @@
<template> <template>
<el-dialog width=500px v-model="dialogVisible" title="修改密码"> <el-dialog width=500px v-model.trim="dialogVisible" title="修改密码">
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" class="form-one" :rules="rules" ref="formRef"> <el-form :inline="false" :model="form" label-width="120px" class="form-one" :rules="rules" ref="formRef">
<el-form-item label="新密码" prop="newPwd"> <el-form-item label="新密码" prop="newPwd">
<el-input maxlength="32" show-word-limit v-model="form.newPwd" type="password" placeholder="请输入新密码" <el-input maxlength="32" show-word-limit v-model.trim="form.newPwd" type="password"
show-password /> placeholder="请输入新密码" show-password />
</el-form-item> </el-form-item>
<el-form-item label="确认密码" prop="confirmPwd"> <el-form-item label="确认密码" prop="confirmPwd">
<el-input maxlength="32" show-word-limit v-model="form.confirmPwd" type="password" <el-input maxlength="32" show-word-limit v-model.trim="form.confirmPwd" type="password"
placeholder="请输入确认密码" show-password /> placeholder="请输入确认密码" show-password />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,11 +1,13 @@
<template> <template>
<div class="default-main"> <div class="default-main">
<TableHeader date-picker area></TableHeader> <TableHeader date-picker area></TableHeader>
<el-tabs v-model="activeName" type="border-card" v-loading="tableStore.table.loading"> <el-tabs v-model.trim="activeName" type="border-card" v-loading="tableStore.table.loading">
<el-tab-pane label="图形" name="1"> <el-tab-pane label="图形" name="1">
<Echart :list="list" ref="echarts" /> <Echart :list="list" ref="echarts" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="表格" name="2"><Tableabove ref="table" /></el-tab-pane> <el-tab-pane label="表格" name="2">
<Tableabove ref="table" />
</el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
@@ -58,6 +60,7 @@ const layout = mainHeight(123) as any
width: 100%; width: 100%;
height: 500px; height: 500px;
} }
::v-deep(.el-tabs__content) { ::v-deep(.el-tabs__content) {
height: v-bind('layout.height'); height: v-bind('layout.height');
overflow-y: auto; overflow-y: auto;

View File

@@ -13,7 +13,7 @@
></el-cascader> ></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="级别"> <el-form-item label="级别">
<el-select v-model="tableStore.table.params.level" placeholder="请选择级别" clearable> <el-select v-model.trim="tableStore.table.params.level" placeholder="请选择级别" clearable>
<el-option <el-option
v-for="item in rankOptions" v-for="item in rankOptions"
:key="item.value" :key="item.value"
@@ -25,7 +25,7 @@
</template> --> </template> -->
<template #select> <template #select>
<el-form-item label="设备名称"> <el-form-item label="设备名称">
<el-input maxlength="32" clearable show-word-limit v-model="tableStore.table.params.searchValue" <el-input maxlength="32" clearable show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="请输入设备名称" /> placeholder="请输入设备名称" />
</el-form-item> </el-form-item>
</template> </template>

View File

@@ -2,13 +2,13 @@
<TableHeader datePicker ref="refheader"> <TableHeader datePicker ref="refheader">
<template v-slot:select> <template v-slot:select>
<el-form-item label="数据来源"> <el-form-item label="数据来源">
<el-cascader v-model="tableStore.table.params.cascader" placeholder="请选择数据来源" @change="sourceChange" <el-cascader v-model.trim="tableStore.table.params.cascader" placeholder="请选择数据来源"
:options="deviceTreeOptions" :show-all-levels="false" :props="{ checkStrictly: true }" @change="sourceChange" :options="deviceTreeOptions" :show-all-levels="false"
clearable></el-cascader> :props="{ checkStrictly: true }" clearable></el-cascader>
<!-- <el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" placeholder="请输入设备名称" /> --> <!-- <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue" placeholder="请输入设备名称" /> -->
</el-form-item> </el-form-item>
<el-form-item label="级别"> <el-form-item label="级别">
<el-select v-model="tableStore.table.params.level" placeholder="请选择级别" clearable> <el-select v-model.trim="tableStore.table.params.level" placeholder="请选择级别" clearable>
<el-option v-for="item in rankOptions" :key="item.value" :label="item.label" <el-option v-for="item in rankOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
@@ -77,7 +77,7 @@ const tableStore = new TableStore({
title: '事件描述', field: 'showName', title: '事件描述', field: 'showName',
}, },
{ {
title: '级别', field: 'level',formatter: (row: any) => { title: '级别', field: 'level', formatter: (row: any) => {
return row.cellValue == 1 ? '1级' : row.cellValue == 2 ? '2级' : row.cellValue == 3 ? '3级' : '/' return row.cellValue == 1 ? '1级' : row.cellValue == 2 ? '2级' : row.cellValue == 3 ? '3级' : '/'
} }

View File

@@ -2,13 +2,13 @@
<TableHeader datePicker ref="refheader"> <TableHeader datePicker ref="refheader">
<template v-slot:select> <template v-slot:select>
<el-form-item label="数据来源"> <el-form-item label="数据来源">
<el-cascader v-model="tableStore.table.params.cascader" placeholder="请选择数据来源" @change="sourceChange" <el-cascader v-model.trim="tableStore.table.params.cascader" placeholder="请选择数据来源"
:options="deviceTreeOptions" :show-all-levels="false" :props="{ checkStrictly: true }" @change="sourceChange" :options="deviceTreeOptions" :show-all-levels="false"
clearable></el-cascader> :props="{ checkStrictly: true }" clearable></el-cascader>
<!-- <el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" placeholder="请输入设备名称" /> --> <!-- <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue" placeholder="请输入设备名称" /> -->
</el-form-item> </el-form-item>
<!-- <el-form-item label="级别"> <!-- <el-form-item label="级别">
<el-select v-model="tableStore.table.params.level" placeholder="请选择级别" clearable> <el-select v-model.trim="tableStore.table.params.level" placeholder="请选择级别" clearable>
<el-option <el-option
v-for="item in rankOptions" v-for="item in rankOptions"
:key="item.value" :key="item.value"

View File

@@ -3,13 +3,13 @@
<TableHeader datePicker> <TableHeader datePicker>
<template v-slot:select> <template v-slot:select>
<el-form-item label="数据来源"> <el-form-item label="数据来源">
<el-cascader placeholder="请选择数据来源" @change="sourceChange" v-model="tableStore.table.params.cascader" <el-cascader placeholder="请选择数据来源" @change="sourceChange"
:options="deviceTreeOptions" :show-all-levels="false" :props="{ checkStrictly: true }" v-model.trim="tableStore.table.params.cascader" :options="deviceTreeOptions"
clearable></el-cascader> :show-all-levels="false" :props="{ checkStrictly: true }" clearable></el-cascader>
<!-- <el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" placeholder="请输入设备名称" /> --> <!-- <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue" placeholder="请输入设备名称" /> -->
</el-form-item> </el-form-item>
<!-- <el-form-item label="级别"> <!-- <el-form-item label="级别">
<el-select v-model="tableStore.table.params.level" placeholder="请选择级别" clearable> <el-select v-model.trim="tableStore.table.params.level" placeholder="请选择级别" clearable>
<el-option v-for="item in rankOptions" :key="item.value" :label="item.label" <el-option v-for="item in rankOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
@@ -27,7 +27,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<div v-if="view2" style="display: flex"> <div v-if="view2" style="display: flex">
<el-radio-group v-model="value" @change="changeView"> <el-radio-group v-model.trim="value" @change="changeView">
<el-radio-button label="一次值" :value="1" /> <el-radio-button label="一次值" :value="1" />
<el-radio-button label="二次值" :value="2" /> <el-radio-button label="二次值" :value="2" />
@@ -41,7 +41,7 @@
</el-button> </el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-tabs v-if="view2" v-model="bxactiveName" @tab-click="bxhandleClick"> <el-tabs v-if="view2" v-model.trim="bxactiveName" @tab-click="bxhandleClick">
<el-tab-pane label="瞬时波形" name="ssbx" class="boxbx pt10 pb10" <el-tab-pane label="瞬时波形" name="ssbx" class="boxbx pt10 pb10"
:style="'height:' + bxecharts + ';overflow-y: scroll;'"> :style="'height:' + bxecharts + ';overflow-y: scroll;'">
<shushiboxi v-if="bxactiveName == 'ssbx' && showBoxi" :value="value" :boxoList="boxoList" :wp="wp"> <shushiboxi v-if="bxactiveName == 'ssbx' && showBoxi" :value="value" :boxoList="boxoList" :wp="wp">

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="default-main"> <div class="default-main">
<el-tabs v-model="activeName" type="border-card" class="demo-tabs"> <el-tabs v-model.trim="activeName" type="border-card" class="demo-tabs">
<el-tab-pane label="设备告警" name="1"> <el-tab-pane label="设备告警" name="1">
<Device v-if="activeName == '1'" :deviceTree="deviceTree" /> <Device v-if="activeName == '1'" :deviceTree="deviceTree" />
</el-tab-pane> </el-tab-pane>
@@ -44,8 +44,8 @@ getDeviceTree().then(res => {
}) })
deviceTree.value = res.data deviceTree.value = res.data
}) })
onMounted(() => {}) onMounted(() => { })
const addMenu = () => {} const addMenu = () => { }
</script> </script>
<style></style> <style></style>

View File

@@ -7,13 +7,13 @@
<DatePicker ref="datePickerRef"></DatePicker> <DatePicker ref="datePickerRef"></DatePicker>
</el-form-item> </el-form-item>
<el-form-item label="统计指标:"> <el-form-item label="统计指标:">
<el-select v-model="formInline.statisticalId" filterable placeholder="请选择"> <el-select v-model.trim="formInline.statisticalId" filterable placeholder="请选择">
<el-option v-for="item in zblist" :key="item.value" :label="item.label" <el-option v-for="item in zblist" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="值类型:"> <el-form-item label="值类型:">
<el-select v-model="formInline.valueType" filterable placeholder="请选择"> <el-select v-model.trim="formInline.valueType" filterable placeholder="请选择">
<el-option v-for="item in typelist" :key="item.value" :label="item.label" <el-option v-for="item in typelist" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>

View File

@@ -11,7 +11,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<div v-if="view2" style="display: flex"> <div v-if="view2" style="display: flex">
<el-radio-group v-model="value" @change="changeView"> <el-radio-group v-model.trim="value" @change="changeView">
<el-radio-button label="一次值" :value="1" /> <el-radio-button label="一次值" :value="1" />
<el-radio-button label="二次值" :value="2" /> <el-radio-button label="二次值" :value="2" />
@@ -26,7 +26,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-tabs v-if="view2" class="default-main" v-model="bxactiveName" @tab-click="bxhandleClick"> <el-tabs v-if="view2" class="default-main" v-model.trim="bxactiveName" @tab-click="bxhandleClick">
<el-tab-pane label="瞬时波形" name="ssbx" class="boxbx pt10 pb10" <el-tab-pane label="瞬时波形" name="ssbx" class="boxbx pt10 pb10"
:style="'height:' + bxecharts + ';overflow-y: scroll;'"> :style="'height:' + bxecharts + ';overflow-y: scroll;'">
<shushiboxi v-if="bxactiveName == 'ssbx' && showBoxi" :value="value" :boxoList="boxoList" :wp="wp"> <shushiboxi v-if="bxactiveName == 'ssbx' && showBoxi" :value="value" :boxoList="boxoList" :wp="wp">

View File

@@ -1,6 +1,7 @@
<!-- 补召日志 --> <!-- 补召日志 -->
<template> <template>
<el-dialog modal-class="analysisList" v-model="dialogVisible" title="补召日志" width="70%" draggable @closed="close"> <el-dialog modal-class="analysisList" v-model.trim="dialogVisible" title="补召日志" width="70%" draggable
@closed="close">
<TableHeader date-picker :showReset="false"> <TableHeader date-picker :showReset="false">
<template #operation> <template #operation>
<el-button type="primary" icon="el-icon-Connection" @click="handleImport"> <el-button type="primary" icon="el-icon-Connection" @click="handleImport">
@@ -140,10 +141,10 @@ const handleaddDevice = () => {
push({ push({
path: '/supplementaryRecruitment', path: '/supplementaryRecruitment',
query: { query: {
activeName: '0', activeName: '0',
id: lineId.value, id: lineId.value,
ndid: deviceData.value?.ndid, ndid: deviceData.value?.ndid,
} }
}) })
} }
@@ -154,10 +155,10 @@ const handleImport = () => {
push({ push({
path: '/supplementaryRecruitment', path: '/supplementaryRecruitment',
query: { query: {
activeName: '1', activeName: '1',
lineId: lineId.value, lineId: lineId.value,
deviceId: deviceId.value, deviceId: deviceId.value,
} }
}) })
} }

View File

@@ -1,6 +1,6 @@
<!-- 解析列表 --> <!-- 解析列表 -->
<template> <template>
<el-dialog v-model="dialogVisible" title="详情" width="70%" draggable @closed="close"> <el-dialog v-model.trim="dialogVisible" title="详情" width="70%" draggable @closed="close">
<div :style="tableHeight"> <div :style="tableHeight">
<vxe-table border auto-resize height="auto" :data="tableData" v-bind="defaultAttribute"> <vxe-table border auto-resize height="auto" :data="tableData" v-bind="defaultAttribute">
<vxe-column field="name" align="center" title="文件名称"></vxe-column> <vxe-column field="name" align="center" title="文件名称"></vxe-column>
@@ -36,9 +36,11 @@ const tableStore: any = new TableStore({
showPage: false, showPage: false,
column: [ column: [
{ width: '60', type: 'checkbox', fixed: 'left' }, { width: '60', type: 'checkbox', fixed: 'left' },
{ title: '序号', width: 80,formatter: (row: any) => { {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1 title: '序号', width: 80, formatter: (row: any) => {
} }, return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'name', title: '文件名称', minWidth: 170 }, { field: 'name', title: '文件名称', minWidth: 170 },
{ field: 'createTime', title: '导入时间', minWidth: 170 }, { field: 'createTime', title: '导入时间', minWidth: 170 },
{ field: 'allCount', title: '数据总数(条)', minWidth: 170 }, { field: 'allCount', title: '数据总数(条)', minWidth: 170 },

View File

@@ -6,13 +6,13 @@
<DatePicker ref="datePickerRef"></DatePicker> <DatePicker ref="datePickerRef"></DatePicker>
</el-form-item> </el-form-item>
<el-form-item label="值类型"> <el-form-item label="值类型">
<el-select v-model="form.dataLevel" :disabled="props.dataLevel == 'Primary'"> <el-select v-model.trim="form.dataLevel" :disabled="props.dataLevel == 'Primary'">
<el-option value="Primary" label="一次值"></el-option> <el-option value="Primary" label="一次值"></el-option>
<el-option value="Secondary" label="二次值"></el-option> <el-option value="Secondary" label="二次值"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据类型" label-width="80px"> <el-form-item label="数据类型" label-width="80px">
<el-select v-model="form.statMethod" placeholder="请选择数据类型"> <el-select v-model.trim="form.statMethod" placeholder="请选择数据类型">
<el-option v-for="item in typeOptions" :key="item.id" :label="item.name" <el-option v-for="item in typeOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>

View File

@@ -31,7 +31,7 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="接线方式" width="160"> <el-descriptions-item label="接线方式" width="160">
{{ devData.conType == 0 ? '星型接线' : devData.conType == 1 ? '角型接线' : devData.conType == 2 ? 'V型接线' : {{ devData.conType == 0 ? '星型接线' : devData.conType == 1 ? '角型接线' : devData.conType == 2 ? 'V型接线' :
'/' }} '/' }}
</el-descriptions-item> </el-descriptions-item>
<!-- <el-descriptions-item label="安装位置" width="160"> <!-- <el-descriptions-item label="安装位置" width="160">
@@ -66,7 +66,7 @@
{{ devData.time ? devData.time : '/' }} {{ devData.time ? devData.time : '/' }}
</el-descriptions-item> --> </el-descriptions-item> -->
</el-descriptions> </el-descriptions>
<el-tabs v-model="dataSet" type="border-card" class="device-control-box-card" @tab-click="handleClick"> <el-tabs v-model.trim="dataSet" type="border-card" class="device-control-box-card" @tab-click="handleClick">
<el-tab-pane lazy :label="item.name" :name="item.id" v-for="(item, index) in deviceData.dataSetList" <el-tab-pane lazy :label="item.name" :name="item.id" v-for="(item, index) in deviceData.dataSetList"
:key="index"> :key="index">
<template #label> <template #label>
@@ -110,19 +110,19 @@
<DatePicker ref="datePickerRef"></DatePicker> <DatePicker ref="datePickerRef"></DatePicker>
</el-form-item> </el-form-item>
<el-form-item label="数据类型" v-if="!dataSet.includes('_')"> <el-form-item label="数据类型" v-if="!dataSet.includes('_')">
<el-select v-model="formInline.targetType" @change="handleTargetTypeChange"> <el-select v-model.trim="formInline.targetType" @change="handleTargetTypeChange">
<el-option v-for="item in queryList" :key="item.id" :label="item.name" <el-option v-for="item in queryList" :key="item.id" :label="item.name"
:value="item.id" /> :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="!dataSet.includes('_items')"> <el-form-item v-if="!dataSet.includes('_items')">
<!-- <el-select style="min-width: 120px !important" v-model="formInline.dataLevel" <!-- <el-select style="min-width: 120px !important" v-model.trim="formInline.dataLevel"
:disabled="dataLevel == 'Primary' && deviceType == '0'"> :disabled="dataLevel == 'Primary' && deviceType == '0'">
<el-option value="Primary" label="一次值"></el-option> <el-option value="Primary" label="一次值"></el-option>
<el-option value="Secondary" label="二次值"></el-option> <el-option value="Secondary" label="二次值"></el-option>
</el-select> --> </el-select> -->
<el-radio-group v-model="formInline.dataLevel" @change="handleClick"> <el-radio-group v-model.trim="formInline.dataLevel" @change="handleClick">
<el-radio-button label="一次值" value="Primary" /> <el-radio-button label="一次值" value="Primary" />
<el-radio-button label="二次值" value="Secondary" /> <el-radio-button label="二次值" value="Secondary" />
@@ -130,21 +130,21 @@
</el-form-item> </el-form-item>
<el-form-item label="谐波次数" v-show="oddAndEvenFlag && !dataSet.includes('_')"> <el-form-item label="谐波次数" v-show="oddAndEvenFlag && !dataSet.includes('_')">
<el-select v-model="oddAndEven" style="min-width: 120px !important"> <el-select v-model.trim="oddAndEven" style="min-width: 120px !important">
<el-option v-for="item in oddAndEvenList" :key="item.value" :label="item.label" <el-option v-for="item in oddAndEvenList" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据来源" v-if="dataSet.includes('_items')"> <el-form-item label="数据来源" v-if="dataSet.includes('_items')">
<el-select v-model="formInline.dataSource" placeholder="请选择数据来源" clearable> <el-select v-model.trim="formInline.dataSource" placeholder="请选择数据来源" clearable>
<el-option v-for="item in dataSourceList" :key="item.id" :label="item.name" <el-option v-for="item in dataSourceList" :key="item.id" :label="item.name"
:value="item.id" /> :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关键字" v-if="!dataSet.includes('_')"> <el-form-item label="关键字" v-if="!dataSet.includes('_')" >
<el-input maxlength="32" show-word-limit v-model="searchValue" autocomplete="off" clearable <el-input maxlength="32" show-word-limit v-model.trim="searchValue" autocomplete="off"
@input="handleSearch" placeholder="请输入关键词"></el-input> clearable @input="handleSearch" placeholder="请输入关键词" style="width: 180px !important"></el-input>
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>

View File

@@ -1,6 +1,6 @@
<!-- 离线数据导入 --> <!-- 离线数据导入 -->
<template> <template>
<!-- <el-dialog v-model="dialogVisible" title="文件列表" width="70%" :destroy-on-close="true" draggable @closed="close"> --> <!-- <el-dialog v-model.trim="dialogVisible" title="文件列表" width="70%" :destroy-on-close="true" draggable @closed="close"> -->
<!-- 上传文件列表 --> <!-- 上传文件列表 -->
<div class=" "> <div class=" ">
<!-- <div class="offline_data_btn"> <!-- <div class="offline_data_btn">
@@ -78,7 +78,7 @@ import { ref } from 'vue'
import TableHeader from '@/components/table/header/index.vue' import TableHeader from '@/components/table/header/index.vue'
import { uploadOffLineDataFile } from '@/api/cs-device-boot/EquipmentDelivery.ts' import { uploadOffLineDataFile } from '@/api/cs-device-boot/EquipmentDelivery.ts'
import { defaultAttribute } from '@/components/table/defaultAttribute' import { defaultAttribute } from '@/components/table/defaultAttribute'
import {Back} from '@element-plus/icons-vue' import { Back } from '@element-plus/icons-vue'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
const { go } = useRouter() // 路由 const { go } = useRouter() // 路由

View File

@@ -5,7 +5,7 @@
<DatePicker ref="datePickerRef"></DatePicker> <DatePicker ref="datePickerRef"></DatePicker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-checkbox-group style="width: 150px" v-model="checkList"> <el-checkbox-group style="width: 150px" v-model.trim="checkList">
<el-checkbox label="稳态" :value="0" /> <el-checkbox label="稳态" :value="0" />
<el-checkbox label="暂态" :value="1" /> <el-checkbox label="暂态" :value="1" />
</el-checkbox-group> </el-checkbox-group>
@@ -36,7 +36,7 @@
<div class="finish" v-if="row.status == 100"> <div class="finish" v-if="row.status == 100">
<SuccessFilled style="width: 16px;" /><span class="ml5">补召完成</span> <SuccessFilled style="width: 16px;" /><span class="ml5">补召完成</span>
</div> </div>
<el-progress v-model="row.status" v-else :class="row.status == 100 ? 'progress' : ''" <el-progress v-model.trim="row.status" v-else :class="row.status == 100 ? 'progress' : ''"
:format="format" :stroke-width="10" striped :percentage="row.status" :duration="30" :format="format" :stroke-width="10" striped :percentage="row.status" :duration="30"
striped-flow /> striped-flow />

View File

@@ -4,27 +4,28 @@
<TableHeader> <TableHeader>
<template v-slot:select> <template v-slot:select>
<el-form-item label="设备类型"> <el-form-item label="设备类型">
<!-- <el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> --> <!-- <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> -->
<el-select v-model="tableStore.table.params.devType" clearable @change="devTypeChange" <el-select v-model.trim="tableStore.table.params.devType" clearable @change="devTypeChange"
placeholder="请选择设备类型"> placeholder="请选择设备类型">
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号"> <el-form-item label="设备型号">
<el-select v-model="tableStore.table.params.devModel" filterable clearable placeholder="请选择设备型号"> <el-select v-model.trim="tableStore.table.params.devModel" filterable clearable
placeholder="请选择设备型号">
<el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议"> <el-form-item label="通讯协议">
<el-select v-model="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议"> <el-select v-model.trim="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议">
<el-option label="MQTT" value="mqtt"></el-option> <el-option label="MQTT" value="mqtt"></el-option>
<el-option label="CLD" value="cloud"></el-option> <el-option label="CLD" value="cloud"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择状态"> <el-select v-model.trim="tableStore.table.params.status" clearable placeholder="请选择状态">
<el-option label="未注册" :value="1"></el-option> <el-option label="未注册" :value="1"></el-option>
<el-option label="注册" :value="2"></el-option> <el-option label="注册" :value="2"></el-option>
<el-option label="接入" :value="3"></el-option> <el-option label="接入" :value="3"></el-option>
@@ -44,38 +45,38 @@
</TableHeader> </TableHeader>
<Table ref="tableRef"></Table> <Table ref="tableRef"></Table>
<el-dialog :title="dialogTitle" v-model="dialogFormVisible" :close-on-click-modal="false" <el-dialog :title="dialogTitle" v-model.trim="dialogFormVisible" :close-on-click-modal="false"
:before-close="resetForm" draggable width="40%"> :before-close="resetForm" draggable width="40%">
<el-form :model="form" label-width="120px" :rules="rules" ref="ruleFormRef"> <el-form :model="form" label-width="120px" :rules="rules" ref="ruleFormRef">
<el-form-item label="设备名称:" prop="name"> <el-form-item label="设备名称:" prop="name">
<el-input maxlength="32" show-word-limit v-model="form.name" autocomplete="off" clearable <el-input maxlength="32" show-word-limit v-model.trim="form.name" autocomplete="off" clearable
placeholder="请输入(项目名称+设备名称)"></el-input> placeholder="请输入(项目名称+设备名称)"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="网络设备ID:" prop="ndid" class="top"> <el-form-item label="网络设备ID:" prop="ndid" class="top">
<el-input maxlength="32" show-word-limit v-model="form.ndid" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.ndid" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备类型:" prop="devType" class="top"> <el-form-item label="设备类型:" prop="devType" class="top">
<el-select v-model="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable> <el-select v-model.trim="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable>
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号:" prop="devModel" class="top"> <el-form-item label="设备型号:" prop="devModel" class="top">
<el-select v-model="form.devModel" filterable placeholder="请选择" clearable> <el-select v-model.trim="form.devModel" filterable placeholder="请选择" clearable>
<el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议:" prop="devAccessMethod" class="top"> <el-form-item label="通讯协议:" prop="devAccessMethod" class="top">
<el-select v-model="form.devAccessMethod" placeholder="请选择" clearable> <el-select v-model.trim="form.devAccessMethod" placeholder="请选择" clearable>
<el-option label="MQTT" value="MQTT"></el-option> <el-option label="MQTT" value="MQTT"></el-option>
<el-option label="CLD" value="cloud"></el-option> <el-option label="CLD" value="cloud"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="合同号:" prop="cntractNo" class="top"> <el-form-item label="合同号:" prop="cntractNo" class="top">
<el-input maxlength="32" show-word-limit v-model="form.cntractNo" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.cntractNo" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -4,7 +4,7 @@
<div class="harmonic_select" v-if="!loading"> <div class="harmonic_select" v-if="!loading">
<el-form :model="searchForm" id="history_select"> <el-form :model="searchForm" id="history_select">
<el-form-item label="稳态指标"> <el-form-item label="稳态指标">
<el-select multiple collapse-tags collapse-tags-tooltip v-model="searchForm.index" <el-select multiple collapse-tags collapse-tags-tooltip v-model.trim="searchForm.index"
placeholder="请选择统计指标" :multiple-limit="3" value-key="id"> placeholder="请选择统计指标" :multiple-limit="3" value-key="id">
<el-option v-for="(item, index) in indexOptions" :label="item.name" :key="index" <el-option v-for="(item, index) in indexOptions" :label="item.name" :key="index"
:value="item"></el-option> :value="item"></el-option>

View File

@@ -3,11 +3,11 @@
<div class="realtrend" v-loading="loading"> <div class="realtrend" v-loading="loading">
<div class="select" v-if="!loading"> <div class="select" v-if="!loading">
<div class="mr10">谐波次数 </div> <div class="mr10">谐波次数 </div>
<el-select v-model="selectValue" style="width: 100px" @change="selectChange"> <el-select v-model.trim="selectValue" style="width: 100px" @change="selectChange">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
<el-tabs type="border-card" v-if="tabsList.length != 0" v-model="activeName" @tab-click="handleClick"> <el-tabs type="border-card" v-if="tabsList.length != 0" v-model.trim="activeName" @tab-click="handleClick">
<el-tab-pane v-for="(item, index) in tabsList" :label="item.groupName" :name="index" :key="index"> <el-tab-pane v-for="(item, index) in tabsList" :label="item.groupName" :name="index" :key="index">
<div> <div>
<div class="realtrend_top"> <div class="realtrend_top">
@@ -31,7 +31,7 @@
<div class="thead_left"> <div class="thead_left">
<p style=" font-weight: 700; background-color: #F3F6F9;">次数()</p> <p style=" font-weight: 700; background-color: #F3F6F9;">次数()</p>
<p>{{ item.groupName }}{{ item.unit ? '(' + item.unit + ')' : '' }}</p> <p>{{ item.groupName }}{{ item.unit ? '(' + item.unit + ')' : '' }}</p>
<p>国标限值{{ item.unit ? '(' + item.unit + ')' : '' }}</p> <!-- <p>国标限值{{ item.unit ? '(' + item.unit + ')' : '' }}</p> -->
</div> </div>
<div class="thead_right"> <div class="thead_right">
<div class="right_cell" v-for="(value, key, index) in tableData" :key="index"> <div class="right_cell" v-for="(value, key, index) in tableData" :key="index">
@@ -50,7 +50,7 @@
{{ value }} {{ value }}
</span> </span>
</p> </p>
<p> <!-- <p>
<span v-if=" <span v-if="
String(key).includes('data') && String(key).includes('data') &&
String(key) != 'dataLevel' && String(key) != 'dataLevel' &&
@@ -58,7 +58,7 @@
"> ">
{{ gbData[index]?.value || '/' }} {{ gbData[index]?.value || '/' }}
</span> </span>
</p> </p> -->
</div> </div>
</div> </div>
@@ -223,12 +223,13 @@ const init = () => {
trendData.map((item: any) => { trendData.map((item: any) => {
return item.value return item.value
}), }),
gbData.value.map((item: any) => { // gbData.value.map((item: any) => {
return item.value // return item.value
}), // }),
] ]
let legendList = [tabsList.value[activeName.value]?.groupName, '国标限值',] let legendList = [tabsList.value[activeName.value]?.groupName, ]
// let legendList = [tabsList.value[activeName.value]?.groupName, '国标限值',]
// echartsData.value.legend.data = legendList // echartsData.value.legend.data = legendList
list.map((item: any, index: any) => { list.map((item: any, index: any) => {
echartsData.value.series.push({ echartsData.value.series.push({
@@ -312,8 +313,8 @@ const setRealTrendData = (val: any) => {
emit('changeTrendType', activeName.value) emit('changeTrendType', activeName.value)
} }
} }
const selectChange=(val:any)=>{ const selectChange = (val: any) => {
loading.value=true loading.value = true
// setTimeout(() => { // setTimeout(() => {
// loading.value=false // loading.value=false
// },3000) // },3000)
@@ -417,7 +418,8 @@ defineExpose({ open, setRealTrendData, setOverLimitData })
display: flex; display: flex;
border: 2px solid #eee; border: 2px solid #eee;
cursor: pointer; cursor: pointer;
font-size: 13px; font-size: 13px;
.thead_left { .thead_left {
width: 150px; width: 150px;
height: 100%; height: 100%;
@@ -426,7 +428,7 @@ font-size: 13px;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
line-height: 50px; line-height: 50px;
padding-bottom: 5px; padding-bottom: 5px;
p { p {
@@ -497,7 +499,7 @@ font-size: 13px;
.charts { .charts {
width: 100%; width: 100%;
margin-top: 10px; margin-top: 10px;
height: calc(100vh - 560px); height: calc(100vh - 535px);
} }
} }

View File

@@ -3,7 +3,7 @@
<div class="home"> <div class="home">
<div class="home_header"> <div class="home_header">
<!-- <el-form-item label="值类型选择"> <!-- <el-form-item label="值类型选择">
<el-select @change="changeView" v-model="value" placeholder="请选择值类型"> <el-select @change="changeView" v-model.trim="value" placeholder="请选择值类型">
<el-option <el-option
v-for="(item, index) in options" v-for="(item, index) in options"
:key="index" :key="index"
@@ -12,16 +12,18 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-radio-group v-model="value" @change="changeView">
<el-radio-group v-model.trim="theTypeOfValue" @change="changeView">
<el-radio-button label="一次值" :value="1" /> <el-radio-button label="一次值" :value="1" />
<el-radio-button label="二次值" :value="2" /> <el-radio-button label="二次值" :value="2" />
</el-radio-group> </el-radio-group>
<el-form-item label="">
<el-button @click="handleBack" :icon="Back">返回</el-button> <el-button @click="handleBack" :icon="Back">返回</el-button>
</el-form-item>
</div> </div>
<el-tabs class="home_body" type="border-card" v-model="activeName" @tab-click="handleClick"> <el-tabs class="home_body" type="border-card" v-model.trim="activeName1" @tab-click="handleClick"
v-loading="loading">
<el-tab-pane label="瞬时波形" name="ssbx" :style="'height:' + bxecharts + ';overflow-y: scroll;'"> <el-tab-pane label="瞬时波形" name="ssbx" :style="'height:' + bxecharts + ';overflow-y: scroll;'">
<shushiboxi v-if="isWp && wp && activeName == 'ssbx' && showBoxi" :value="value" :boxoList="boxoList" <shushiboxi v-if="isWp && wp && activeName == 'ssbx' && showBoxi" :value="value" :boxoList="boxoList"
@@ -51,6 +53,7 @@ const searchForm = ref({
}) })
const emit = defineEmits(['handleHideCharts']) const emit = defineEmits(['handleHideCharts'])
const parentHeight = ref(0) const parentHeight = ref(0)
const loading = ref(false)
const tableList: any = ref([]) const tableList: any = ref([])
for (let i = 0; i < 300; i++) { for (let i = 0; i < 300; i++) {
tableList.value.push({ tableList.value.push({
@@ -87,19 +90,12 @@ const echartsData1: any = ref([]),
const view = ref(true) const view = ref(true)
const view2 = ref(false) const view2 = ref(false)
const showBoxi = ref(true) const showBoxi = ref(true)
const activeName1 = ref('ssbx')
const activeName = ref('ssbx') const activeName = ref('ssbx')
const wp = ref({}) const wp = ref({})
const theTypeOfValue = ref(1)
const value = ref(1) const value = ref(1)
const options = ref([
{
value: 1,
label: '一次值'
},
{
value: 2,
label: '二次值'
}
])
const isWp = ref(false) const isWp = ref(false)
const boxoList: any = ref([]) const boxoList: any = ref([])
@@ -112,29 +108,35 @@ const getWpData = (val: any, list: any) => {
} }
const changeView = () => { const changeView = () => {
showBoxi.value = false showBoxi.value = false
loading.value = true
setTimeout(() => { setTimeout(() => {
value.value = theTypeOfValue.value
showBoxi.value = true showBoxi.value = true
}, 0) }, 500)
setTimeout(() => {
loading.value = false
}, 1500)
} }
const bxecharts: any = ref(mainHeight(190).height as any) const bxecharts: any = ref(mainHeight(190).height as any)
const handleClick = (tab: any, event: any) => { const handleClick = (tab: any, event: any) => {
// activeName.value = tab.index loading.value = true
if (tab.name == 'ssbx') { setTimeout(() => {
activeName.value = 'ssbx' activeName.value = tab.paneName
} else if (tab.name == 'rmsbx') { }, 500)
activeName.value = 'rmsbx' setTimeout(() => {
} loading.value = false
}, 1500)
} }
const handleBack = () => { const handleBack = () => {
emit('handleHideCharts') emit('handleHideCharts')
} }
const setHeight = (h: any,vh: any) => { const setHeight = (h: any, vh: any) => {
parentHeight.value = h parentHeight.value = h
setTimeout(() => { setTimeout(() => {
bxecharts.value = mainHeight(vh).height bxecharts.value = mainHeight(vh).height
},100) }, 100)
} }
onMounted(() => { }) onMounted(() => { })
defineExpose({ getWpData, setHeight }) defineExpose({ getWpData, setHeight })

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="view" v-loading="loading"> <div class="view" v-loading="loading">
<el-collapse v-model="activeNames"> <el-collapse v-model.trim="activeNames">
<el-collapse-item title="基础数据" name="1"> <el-collapse-item title="基础数据" name="1">
<div class="view_top"> <div class="view_top">
<!-- 左侧仪表盘 --> <!-- 左侧仪表盘 -->
@@ -784,10 +784,12 @@ onMounted(() => {
.vxe-table--render-default .vxe-header--column:not(.col--ellipsis) { .vxe-table--render-default .vxe-header--column:not(.col--ellipsis) {
padding: 5px !important; padding: 5px !important;
} }
.vxe-table--body-wrapper{
.vxe-table--body-wrapper {
min-height: 32px !important; min-height: 32px !important;
} }
} }
::v-deep .el-collapse-item__header { ::v-deep .el-collapse-item__header {
font-size: 16px !important; font-size: 16px !important;
font-weight: 800 !important; font-weight: 800 !important;

View File

@@ -15,10 +15,6 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<!-- <el-select style="min-width: 120px !important" v-model="searchForm.dataLevel">
<el-option value="Primary" label="一次值"></el-option>
<el-option value="Secondary" label="二次值"></el-option>
</el-select> -->
<el-radio-group v-model="searchForm.dataLevel" @change="init()"> <el-radio-group v-model="searchForm.dataLevel" @change="init()">
<el-radio-button label="一次值" value="Primary" /> <el-radio-button label="一次值" value="Primary" />
<el-radio-button label="二次值" value="Secondary" /> <el-radio-button label="二次值" value="Secondary" />
@@ -33,14 +29,16 @@
<el-option value="cp95" label="cp95"></el-option> <el-option value="cp95" label="cp95"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item>
<el-form-item class="history_count" v-for="(item, index) in countData" :key="index" <div class="history_count" v-for="(item, index) in countData" :key="index"
:label="item.name.includes('次数') ? item.name : item.name + '谐波次数'" v-show="item.countOptions.length != 0">
v-show="item.countOptions.length != 0"> <span class="mr12">{{item.name.includes('次数') ? item.name : item.name + '谐波次数'}}</span>
<el-select v-model="item.count" @change="onCountChange($event, index)" placeholder="请选择谐波次数" <el-select v-model="item.count" @change="onCountChange($event, index)" placeholder="请选择谐波次数"
style="width: 100px"> style="width: 100px" class="mr20">
<el-option v-for="vv in item.countOptions" :key="vv" :label="vv" :value="vv"></el-option> <el-option v-for="vv in item.countOptions" :key="vv" :label="vv"
</el-select> :value="vv"></el-option>
</el-select>
</div>
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>
@@ -344,7 +342,6 @@ const init = async () => {
color: ['#FFCC00', '#009900', '#CC0000', ...color], color: ['#FFCC00', '#009900', '#CC0000', ...color],
xAxis: { xAxis: {
type: 'time', type: 'time',
name:'时间',
axisLabel: { axisLabel: {
formatter: { formatter: {
day: '{MM}-{dd}', day: '{MM}-{dd}',

View File

@@ -29,8 +29,8 @@
</vxe-table> </vxe-table>
</div> </div>
</div> </div>
<el-dialog v-model="dialogVisible" title="添加工程" class="cn-operate-dialog" :close-on-click-modal="false"> <el-dialog v-model.trim="dialogVisible" title="添加工程" class="cn-operate-dialog" :close-on-click-modal="false">
<el-input maxlength="32" show-word-limit v-model="filterText" icon="el-icon-Search" placeholder="请输入内容" <el-input maxlength="32" show-word-limit v-model.trim="filterText" icon="el-icon-Search" placeholder="请输入内容"
clearable style="margin-bottom: 10px"> clearable style="margin-bottom: 10px">
<template #prefix> <template #prefix>
<Icon name="el-icon-Search" style="font-size: 16px" /> <Icon name="el-icon-Search" style="font-size: 16px" />

View File

@@ -21,7 +21,7 @@
<div class="filter" v-if="activePathList.length != 0"> <div class="filter" v-if="activePathList.length != 0">
<el-input maxlength="32" show-word-limit style="width: 200px; height: 32px" placeholder="请输入文件或文件夹名称" <el-input maxlength="32" show-word-limit style="width: 200px; height: 32px" placeholder="请输入文件或文件夹名称"
clearable v-model="filterText" type="text"></el-input> clearable v-model.trim="filterText" type="text"></el-input>
<el-button type="primary" @click="handleSearch" :icon="Search">搜索</el-button> <el-button type="primary" @click="handleSearch" :icon="Search">搜索</el-button>
<!-- <el-button @click="handleRefresh" :icon="Refresh">重置</el-button> --> <!-- <el-button @click="handleRefresh" :icon="Refresh">重置</el-button> -->
<el-upload v-if="activePath != '/'" action="" :auto-upload="false" :show-file-list="false" :on-change="(file: any, fileList: any) => { <el-upload v-if="activePath != '/'" action="" :auto-upload="false" :show-file-list="false" :on-change="(file: any, fileList: any) => {
@@ -126,7 +126,7 @@
<!-- <el-empty v-if="dirList.length === 0" /> --> <!-- <el-empty v-if="dirList.length === 0" /> -->
</div> </div>
<popup ref="fileRef"></popup> <popup ref="fileRef"></popup>
<el-dialog v-model="addDeviceDirOpen" :destroy-on-close="true" title="新建文件夹目录" width="500" @closed="close"> <el-dialog v-model.trim="addDeviceDirOpen" :destroy-on-close="true" title="新建文件夹目录" width="500" @closed="close">
<el-form ref="formRef" :model="form" <el-form ref="formRef" :model="form"
:rules="{ path: [{ required: true, message: '请输入文件夹名称', trigger: 'blur' }] }"> :rules="{ path: [{ required: true, message: '请输入文件夹名称', trigger: 'blur' }] }">
<el-form-item label="文件夹名称" prop="path"> <el-form-item label="文件夹名称" prop="path">

View File

@@ -1,7 +1,7 @@
<!-- 设备文件下载 --> <!-- 设备文件下载 -->
<template> <template>
<div :class="downLoading ? 'all_disabled' : ''"> <div :class="downLoading ? 'all_disabled' : ''">
<el-dialog v-model="dialogVisible" title="文件信息" width="50%" @closed="handleClose"> <el-dialog v-model.trim="dialogVisible" title="文件信息" width="50%" @closed="handleClose">
<div v-loading="loading"> <div v-loading="loading">
<div class="download_progress" <div class="download_progress"
v-if="mqttFileName.includes(fileNameInfoMation) && status != 0 && status != 100"> v-if="mqttFileName.includes(fileNameInfoMation) && status != 0 && status != 100">

View File

@@ -47,7 +47,7 @@
{{ deviceData.appCheck }} {{ deviceData.appCheck }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-tabs v-model="dataSet" type="border-card" class="device-manage-box-card" @tab-click="handleClick"> <el-tabs v-model.trim="dataSet" type="border-card" class="device-manage-box-card" @tab-click="handleClick">
<el-tab-pane lazy :label="item.name" :name="item.id" v-for="(item, index) in deviceData.dataSetList" <el-tab-pane lazy :label="item.name" :name="item.id" v-for="(item, index) in deviceData.dataSetList"
:key="index"></el-tab-pane> :key="index"></el-tab-pane>
<div :style="{ height: tableHeight }" v-loading="tableLoading"> <div :style="{ height: tableHeight }" v-loading="tableLoading">
@@ -207,19 +207,19 @@ const handleRestartDevice = () => {
inputType: 'text', inputType: 'text',
beforeClose: (action, instance, done) => { beforeClose: (action, instance, done) => {
if (action === 'confirm') { if (action === 'confirm') {
if (instance.inputValue == null) { if (instance.inputValue == null) {
return ElMessage.warning('请输入密码') return ElMessage.warning('请输入密码')
} else if (instance.inputValue?.length > 32) { } else if (instance.inputValue?.length > 32) {
return ElMessage.warning('密码长度不能超过32位,当前密码长度为' + instance.inputValue.length) return ElMessage.warning('密码长度不能超过32位,当前密码长度为' + instance.inputValue.length)
} else { } else {
done(); done();
} }
} else { } else {
done(); done();
} }
} }
}) })
.then(({ value }) => { .then(({ value }) => {
if (!value) { if (!value) {

View File

@@ -1,5 +1,5 @@
<template> <template>
<el-dialog class="cn-operate-dialog device-manage-popup" v-model="dialogVisible" title="设备模版分组"> <el-dialog class="cn-operate-dialog device-manage-popup" v-model.trim="dialogVisible" title="设备模版分组">
<el-descriptions class="mb10" :column="3" border> <el-descriptions class="mb10" :column="3" border>
<el-descriptions-item label="名称"> <el-descriptions-item label="名称">
{{ popupData.deviceData.name }} {{ popupData.deviceData.name }}
@@ -11,7 +11,7 @@
<el-descriptions :title="'数据集名称: ' + popupData.dataSetName" size="small" :column="2" border> <el-descriptions :title="'数据集名称: ' + popupData.dataSetName" size="small" :column="2" border>
<template #extra> <template #extra>
<div v-if="newGroupVisible" style="display: flex; align-items: center"> <div v-if="newGroupVisible" style="display: flex; align-items: center">
<el-input maxlength="32" show-word-limit v-model="groupName" autocomplete="off" clearable <el-input maxlength="32" show-word-limit v-model.trim="groupName" autocomplete="off" clearable
placeholder="请输入分组名称"></el-input> placeholder="请输入分组名称"></el-input>
<el-button class="ml10" ctype="primary" size="small" @click="newGroupVisible = false">取消</el-button> <el-button class="ml10" ctype="primary" size="small" @click="newGroupVisible = false">取消</el-button>
<el-button class="ml10" type="primary" size="small" @click="addNewGroup">完成</el-button> <el-button class="ml10" type="primary" size="small" @click="addNewGroup">完成</el-button>
@@ -35,7 +35,7 @@
<Icon name="el-icon-Delete"></Icon> <Icon name="el-icon-Delete"></Icon>
</template> </template>
</el-popconfirm> </el-popconfirm>
<el-checkbox v-model="data.isShow" @click.stop.native="" class="ml5"></el-checkbox> <el-checkbox v-model.trim="data.isShow" @click.stop.native="" class="ml5"></el-checkbox>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -1,47 +1,47 @@
<template> <template>
<el-dialog v-model="dialogVisible" :title="title" draggable <el-dialog v-model.trim="dialogVisible" :title="title" draggable
:style="{ width: popupType == 0 || popupType == 1 ? '500px' : '1100px' }"> :style="{ width: popupType == 0 || popupType == 1 ? '500px' : '1100px' }">
<!-- 新增方案数据 --> <!-- 新增方案数据 -->
<el-form :model="form" scroll-to-error label-width="140px" :rules="rules1" ref="ruleFormRef1" class="form-one" <el-form :model="form" scroll-to-error label-width="140px" :rules="rules1" ref="ruleFormRef1" class="form-one"
v-if="popupType == 0 || popupType == 1"> v-if="popupType == 0 || popupType == 1">
<el-form-item label="方案名称:" prop="itemName"> <el-form-item label="方案名称:" prop="itemName">
<el-input maxlength="32" show-word-limit v-model="form.itemName" placeholder="请输入方案名称" /> <el-input maxlength="32" show-word-limit v-model.trim="form.itemName" placeholder="请输入方案名称" />
</el-form-item> </el-form-item>
<el-form-item label="方案描述:" prop="describe"> <el-form-item label="方案描述:" prop="describe">
<el-input maxlength="300" show-word-limit type="textarea" v-model="form.describe" <el-input maxlength="300" show-word-limit type="textarea" v-model.trim="form.describe"
placeholder="请输入方案描述" /> placeholder="请输入方案描述" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 测试项信息&数据绑定页面 --> <!-- 测试项信息&数据绑定页面 -->
<el-tabs type="border-card" v-model="activeName" v-if="popupType != 0 && popupType != 1"> <el-tabs type="border-card" v-model.trim="activeName" v-if="popupType != 0 && popupType != 1">
<el-tab-pane label="测试项信息" :name="0" v-if="openType == 'tree'"> <el-tab-pane label="测试项信息" :name="0" v-if="openType == 'tree'">
<el-form :model="form1" ref="ruleFormRef2" scroll-to-error class="form-two" label-width="140px" <el-form :model="form1" ref="ruleFormRef2" scroll-to-error class="form-two" label-width="140px"
:rules="rules2"> :rules="rules2">
<el-form-item label="测试项名称:" prop="itemName"> <el-form-item label="测试项名称:" prop="itemName">
<el-input maxlength="32" show-word-limit v-model="form1.itemName" placeholder="请输入测试项名称" /> <el-input maxlength="32" show-word-limit v-model.trim="form1.itemName" placeholder="请输入测试项名称" />
</el-form-item> </el-form-item>
<el-form-item label="测量间隔:" prop="statisticalInterval"> <el-form-item label="测量间隔:" prop="statisticalInterval">
<el-select v-model="form1.statisticalInterval" placeholder="请选择测量间隔" clearable <el-select v-model.trim="form1.statisticalInterval" placeholder="请选择测量间隔" clearable
style="width: 100%"> style="width: 100%">
<el-option v-for="(item, index) in statisticalIntervalList" :key="index" :label="item.name" <el-option v-for="(item, index) in statisticalIntervalList" :key="index" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="电压等级:" prop="voltageLevel"> <el-form-item label="电压等级:" prop="voltageLevel">
<el-select v-model="form1.voltageLevel" placeholder="请选择电压等级" clearable style="width: 100%" <el-select v-model.trim="form1.voltageLevel" placeholder="请选择电压等级" clearable style="width: 100%"
@change="changeVoltageLevel"> @change="changeVoltageLevel">
<el-option v-for="(item, index) in voltageLevelList" :key="index" :label="item.name" <el-option v-for="(item, index) in voltageLevelList" :key="index" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="接线方式:" prop="volConType"> <el-form-item label="接线方式:" prop="volConType">
<el-select v-model="form1.volConType" placeholder="请选择接线方式" clearable style="width: 100%"> <el-select v-model.trim="form1.volConType" placeholder="请选择接线方式" clearable style="width: 100%">
<el-option v-for="(item, index) in volConTypeList" :key="index" :label="item.name" <el-option v-for="(item, index) in volConTypeList" :key="index" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="最小短路容量:" prop="capacitySscmin"> <el-form-item label="最小短路容量:" prop="capacitySscmin">
<el-input maxlength="32" show-word-limit v-model="form1.capacitySscmin" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input maxlength="32" show-word-limit v-model.trim="form1.capacitySscmin" oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete="off" placeholder="请选择最小短路容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete="off" placeholder="请选择最小短路容量">
<template #append>MVA</template> <template #append>MVA</template>
@@ -49,7 +49,8 @@
</el-form-item> </el-form-item>
<el-form-item label="用户协议容量:" prop="capacitySi"> <el-form-item label="用户协议容量:" prop="capacitySi">
<el-input maxlength="32" show-word-limit v-model="form1.capacitySi" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input maxlength="32" show-word-limit v-model.trim="form1.capacitySi" autocomplete="off"
oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入用户协议容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入用户协议容量">
<template #append>MVA</template> <template #append>MVA</template>
@@ -57,7 +58,7 @@
</el-form-item> </el-form-item>
<el-form-item label="基准短路容量:" prop="capacitySscb"> <el-form-item label="基准短路容量:" prop="capacitySscb">
<el-input maxlength="32" show-word-limit v-model="form1.capacitySscb" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input maxlength="32" show-word-limit v-model.trim="form1.capacitySscb" oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入基准短路容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入基准短路容量">
<template #append>MVA</template> <template #append>MVA</template>
@@ -65,26 +66,26 @@
</el-form-item> </el-form-item>
<el-form-item label="供电设备容量:" prop="capacitySt"> <el-form-item label="供电设备容量:" prop="capacitySt">
<el-input maxlength="32" show-word-limit v-model="form1.capacitySt" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input maxlength="32" show-word-limit v-model.trim="form1.capacitySt" oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入供电设备容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入供电设备容量">
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="PT变比" prop="pt"> <el-form-item label="PT变比" prop="pt">
<el-input maxlength="32" show-word-limit style="width: 48%" v-model="form1.pt" <el-input maxlength="32" show-word-limit style="width: 48%" v-model.trim="form1.pt"
autocomplete="off" placeholder="请输入PT变比" oninput="value=value.replace(/[^0-9.]/g,'')" /> autocomplete="off" placeholder="请输入PT变比" oninput="value=value.replace(/[^0-9.]/g,'')" />
<el-input maxlength="32" show-word-limit style="width: 48%" v-model="form1.pt1" <el-input maxlength="32" show-word-limit style="width: 48%" v-model.trim="form1.pt1"
autocomplete="off" placeholder="请输入PT变比" oninput="value=value.replace(/[^0-9.]/g,'')" /> autocomplete="off" placeholder="请输入PT变比" oninput="value=value.replace(/[^0-9.]/g,'')" />
</el-form-item> </el-form-item>
<el-form-item label="CT变比" prop="ct"> <el-form-item label="CT变比" prop="ct">
<el-input maxlength="32" show-word-limit v-model="form1.ct" style="width: 48%" <el-input maxlength="32" show-word-limit v-model.trim="form1.ct" style="width: 48%"
autocomplete="off" oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" /> autocomplete="off" oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" />
<el-input maxlength="32" show-word-limit v-model="form1.ct1" style="width: 48%" <el-input maxlength="32" show-word-limit v-model.trim="form1.ct1" style="width: 48%"
autocomplete="off" oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" /> autocomplete="off" oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" />
</el-form-item> </el-form-item>
<el-form-item label="监测位置:" prop="location" style="width: 100%"> <el-form-item label="监测位置:" prop="location" style="width: 100%">
<el-input maxlength="300" show-word-limit type="textarea" v-model="form1.location" <el-input maxlength="300" show-word-limit type="textarea" v-model.trim="form1.location"
placeholder="请输入监测位置" /> placeholder="请输入监测位置" />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,13 +1,12 @@
<template> <template>
<div> <div>
<div :style="{ width: menuCollapse ? '40px' : '280px' }" <div :style="{ width: menuCollapse ? '40px' : '280px' }" style=" overflow: hidden; height: 100%">
style=" overflow: hidden; height: 100%">
<Icon v-show="menuCollapse" @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'" <Icon v-show="menuCollapse" @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'"
:class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 mt20 menu-collapse" :class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 mt20 menu-collapse"
style="cursor: pointer" /> style="cursor: pointer" />
<div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1, display: menuCollapse ? 'none' : '' }"> <div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1, display: menuCollapse ? 'none' : '' }">
<div style="display: flex; align-items: center" class="mb10"> <div style="display: flex; align-items: center" class="mb10">
<el-input maxlength="32" show-word-limit v-model="filterText" placeholder="请输入内容" clearable> <el-input maxlength="32" show-word-limit v-model.trim="filterText" placeholder="请输入内容" clearable>
<template #prefix> <template #prefix>
<Icon name="el-icon-Search" style="font-size: 16px" /> <Icon name="el-icon-Search" style="font-size: 16px" />
</template> </template>
@@ -271,10 +270,10 @@ const edit = async (node: Node, data: any) => {
.catch(e => { }) .catch(e => { })
} }
/** 删除树节点 */ /** 删除树节点 */
const del =async (node: Node, data: any) => { const del = async (node: Node, data: any) => {
let titleList = '' let titleList = ''
planId.value = data.id planId.value = data.id
await getDeviceList({ await getDeviceList({
id: data.id, id: data.id,
isTrueFlag: 1 isTrueFlag: 1
}).then(res => { }).then(res => {

View File

@@ -4,8 +4,8 @@
<div class="SelectBox"> <div class="SelectBox">
<div class="boxTitle" @click="clickAllSelect">未绑定数据</div> <div class="boxTitle" @click="clickAllSelect">未绑定数据</div>
<div class="boxCenter"> <div class="boxCenter">
<el-input maxlength="32" show-word-limit v-model="filterText" :suffix-icon="Search" style="width: 100%" <el-input maxlength="32" show-word-limit v-model.trim="filterText" :suffix-icon="Search"
placeholder="请输入搜索内容" clearable></el-input> style="width: 100%" placeholder="请输入搜索内容" clearable></el-input>
<el-tree ref="leftTree" default-expand-all :data="leftData" :props="defaultProps" show-checkbox <el-tree ref="leftTree" default-expand-all :data="leftData" :props="defaultProps" show-checkbox
node-key="id" :filter-node-method="filterNode"> node-key="id" :filter-node-method="filterNode">
<template #default="{ node, data }"> <template #default="{ node, data }">
@@ -36,8 +36,8 @@
<div class="SelectBox"> <div class="SelectBox">
<div class="boxTitle" @click="clickCancelAllSelect">已绑定数据</div> <div class="boxTitle" @click="clickCancelAllSelect">已绑定数据</div>
<div class="boxCenter"> <div class="boxCenter">
<el-input maxlength="32" show-word-limit v-model="filterText1" :suffix-icon="Search" style="width: 100%" <el-input maxlength="32" show-word-limit v-model.trim="filterText1" :suffix-icon="Search"
placeholder="请输入搜索内容" clearable></el-input> style="width: 100%" placeholder="请输入搜索内容" clearable></el-input>
<el-tree ref="rightTree" default-expand-all :data="rightData" :props="defaultProps" show-checkbox <el-tree ref="rightTree" default-expand-all :data="rightData" :props="defaultProps" show-checkbox
node-key="id" :filter-node-method="filterNode"> node-key="id" :filter-node-method="filterNode">
<template #default="{ node, data }"> <template #default="{ node, data }">
@@ -198,8 +198,8 @@ export default {
} }
}, },
// 过滤父节点 / 子节点 (如果输入的参数是父节点且能匹配则返回该节点以及其下的所有子节点如果参数是子节点则返回该节点的父节点。name是中文字符enName是英文字符. // 过滤父节点 / 子节点 (如果输入的参数是父节点且能匹配则返回该节点以及其下的所有子节点如果参数是子节点则返回该节点的父节点。name是中文字符enName是英文字符.
chooseNode(value, data, node) { chooseNode(value, data, node) {
if (data.name.indexOf(value) !== -1) { if (data.name.indexOf(value) !== -1) {
return true return true

View File

@@ -16,13 +16,13 @@
{{ deviceData.describe ? deviceData.describe : '/' }} {{ deviceData.describe ? deviceData.describe : '/' }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-collapse v-model="activeColName" @change="handleChange" accordion> <el-collapse v-model.trim="activeColName" @change="handleChange" accordion>
<el-collapse-item title="测试项信息" name="0"> <el-collapse-item title="测试项信息" name="0">
<div class="monitor_info" v-if="deviceData.records && deviceData.records.length != 0"> <div class="monitor_info" v-if="deviceData.records && deviceData.records.length != 0">
<!-- <div class="history_title"> <!-- <div class="history_title">
<p>测试项信息</p> <p>测试项信息</p>
</div> --> </div> -->
<el-tabs v-model="activeName" type="border-card" @tab-change="handleClickTabs"> <el-tabs v-model.trim="activeName" type="border-card" @tab-change="handleClickTabs">
<el-tab-pane v-for="(item, index) in deviceData?.records" :label="item.itemName" <el-tab-pane v-for="(item, index) in deviceData?.records" :label="item.itemName"
:name="item.id" :key="index"> :name="item.id" :key="index">
<template #label> <template #label>
@@ -102,7 +102,7 @@
<div v-if="JSON.stringify(echartsData) != '{}' && deviceData?.records?.length != 0"> <div v-if="JSON.stringify(echartsData) != '{}' && deviceData?.records?.length != 0">
<!-- <h3 class="mt10 mb10">历史趋势</h3> --> <!-- <h3 class="mt10 mb10">历史趋势</h3> -->
<el-tabs v-model="childTab" type="border-card" class="mt10"> <el-tabs v-model.trim="childTab" type="border-card" class="mt10">
<el-tab-pane label="历史趋势" name="0"> <el-tab-pane label="历史趋势" name="0">
<div class="history_trend" v-if="titleList != '(未绑定数据)'"> <div class="history_trend" v-if="titleList != '(未绑定数据)'">
<div class="history_header" ref="headerRef"> <div class="history_header" ref="headerRef">
@@ -111,43 +111,43 @@
<template v-slot:select :key="num"> <template v-slot:select :key="num">
<el-form-item for="-" label="统计指标"> <el-form-item for="-" label="统计指标">
<el-select style="min-width: 200px" collapse-tags collapse-tags-tooltip <el-select style="min-width: 200px" collapse-tags collapse-tags-tooltip
v-model="searchForm.index" placeholder="请选择统计指标" v-model.trim="searchForm.index" placeholder="请选择统计指标"
@change="onIndexChange($event)" multiple :multiple-limit="3"> @change="onIndexChange($event)" multiple :multiple-limit="3">
<el-option v-for="item in indexOptions" :key="item.id" <el-option v-for="item in indexOptions" :key="item.id"
:label="item.name" :value="item.id"></el-option> :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<!-- <el-select style="width: 12px !important" v-model="searchForm.dataLevel"> <!-- <el-select style="width: 12px !important" v-model.trim="searchForm.dataLevel">
<el-option value="Primary" label="一次值"></el-option> <el-option value="Primary" label="一次值"></el-option>
<el-option value="Secondary" label="二次值"></el-option> <el-option value="Secondary" label="二次值"></el-option>
</el-select> --> </el-select> -->
<el-radio-group v-model="searchForm.dataLevel" @change="init(true)"> <el-radio-group v-model.trim="searchForm.dataLevel" @change="init(true)">
<el-radio-button label="一次值" value="Primary" /> <el-radio-button label="一次值" value="Primary" />
<el-radio-button label="二次值" value="Secondary" /> <el-radio-button label="二次值" value="Secondary" />
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item for="-" label="统计类型" label-width="80px"> <el-form-item for="-" label="统计类型" label-width="80px">
<el-select style="width: 120px" v-model="searchForm.type" <el-select style="width: 120px" v-model.trim="searchForm.type"
placeholder="请选择值类型"> placeholder="请选择值类型">
<el-option v-for="item in typeOptions" :key="item.id" :label="item.name" <el-option v-for="item in typeOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item>
<el-form-item for="-" v-for="(item, index) in countData" :key="index" <div for="-" v-for="(item, index) in countData" :key="index"
:label="item.name.includes('次数') ? item.name : item.name.includes('幅值') ? item.name.slice(0, -2) + '次数' : item.name + '谐波次数'"
v-show="item.countOptions.length != 0"> v-show="item.countOptions.length != 0">
<span class="mr12">{{item.name.includes('次数') ? item.name : item.name.includes('幅值') ? item.name.slice(0, -2) + '次数' : item.name + '谐波次数'}}</span>
<el-select v-model="item.count" collapse-tags collapse-tags-tooltip <el-select v-model.trim="item.count" class="mr20" collapse-tags collapse-tags-tooltip
placeholder="请选择谐波次数" style="width: 120px"> placeholder="请选择谐波次数" style="width: 120px">
<el-option v-for="vv in item.countOptions" :key="vv" :label="vv" <el-option v-for="vv in item.countOptions" :key="vv" :label="vv"
:value="vv"></el-option> :value="vv"></el-option>
</el-select> </el-select>
</div>
</el-form-item> </el-form-item>
</template> </template>
<template v-slot:operation> <template v-slot:operation>
<!-- <el-button type="primary" icon="el-icon-Download" @click="handleExport"> <!-- <el-button type="primary" icon="el-icon-Download" @click="handleExport">
@@ -170,7 +170,7 @@
<el-empty :style="EcharHeight" v-else description="未绑定数据" /> <el-empty :style="EcharHeight" v-else description="未绑定数据" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="暂态数据" name="1"> <el-tab-pane label="暂态数据" name="1">
<transient :activeName='activeName' ref="transientRef" :activeColName="activeColName"/> <transient :activeName='activeName' ref="transientRef" :activeColName="activeColName" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>

View File

@@ -3,7 +3,7 @@
<TableHeader datePicker> <TableHeader datePicker>
<template v-slot:select> <template v-slot:select>
<el-form-item label="设备名称"> <el-form-item label="设备名称">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="请输入设备名称" /> placeholder="请输入设备名称" />
</el-form-item> </el-form-item>
</template> </template>

View File

@@ -3,21 +3,21 @@
<TableHeader> <TableHeader>
<template #select> <template #select>
<el-form-item label="数据分类"> <el-form-item label="数据分类">
<el-select v-model="tableStore.table.params.dataType" multiple filterable collapse-tags clearable <el-select v-model.trim="tableStore.table.params.dataType" multiple filterable collapse-tags
placeholder="请选择数据分类"> clearable placeholder="请选择数据分类">
<el-option v-for="item in DataTypeSelect" :key="item.id" :label="item.name" <el-option v-for="item in DataTypeSelect" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据存储"> <el-form-item label="数据存储">
<el-select v-model="tableStore.table.params.classId" multiple filterable collapse-tags clearable <el-select v-model.trim="tableStore.table.params.classId" multiple filterable collapse-tags
placeholder="请选择数据存储"> clearable placeholder="请选择数据存储">
<el-option v-for="item in DataSelect" :key="item.id" :label="item.name" <el-option v-for="item in DataSelect" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="过滤筛选"> <el-form-item label="过滤筛选">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="数据名称、别名、名称" clearable></el-input> placeholder="数据名称、别名、名称" clearable></el-input>
</el-form-item> </el-form-item>
</template> </template>

View File

@@ -1,78 +1,78 @@
<template> <template>
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title"> <el-dialog class="cn-operate-dialog" v-model.trim="dialogVisible" :title="title">
<el-scrollbar> <el-scrollbar>
<div style="padding-left: 50px"> <div style="padding-left: 50px">
<el-divider content-position="center">基础数据</el-divider> <el-divider content-position="center">基础数据</el-divider>
</div> </div>
<el-form :model="form" label-width="140px" ref="formRef" class="form-two" :rules="rules"> <el-form :model="form" label-width="140px" ref="formRef" class="form-two" :rules="rules">
<el-form-item label="数据分类:" prop="dataType"> <el-form-item label="数据分类:" prop="dataType">
<el-select v-model="form.dataType" filterable clearable placeholder="请选择数据分类"> <el-select v-model.trim="form.dataType" filterable clearable placeholder="请选择数据分类">
<el-option v-for="item in DataTypeSelect" :key="item.id" :label="item.name" <el-option v-for="item in DataTypeSelect" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据名称:" prop="name"> <el-form-item label="数据名称:" prop="name">
<el-input maxlength="32" show-word-limit v-model="form.name" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.name" autocomplete="off"
placeholder="请输入数据名称"></el-input> placeholder="请输入数据名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="别名:" prop="otherName"> <el-form-item label="别名:" prop="otherName">
<el-input maxlength="32" show-word-limit v-model="form.otherName" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.otherName" autocomplete="off"
placeholder="请输入别名"></el-input> placeholder="请输入别名"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="展示名称:" prop="showName"> <el-form-item label="展示名称:" prop="showName">
<el-input maxlength="32" show-word-limit v-model="form.showName" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.showName" autocomplete="off"
placeholder="请输入展示名称"></el-input> placeholder="请输入展示名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="相别:" prop="phase"> <el-form-item label="相别:" prop="phase">
<el-select v-model="form.phase" filterable clearable placeholder="请选择相别"> <el-select v-model.trim="form.phase" filterable clearable placeholder="请选择相别">
<el-option v-for="item in phaseSelect" :key="item.id" :label="item.name" <el-option v-for="item in phaseSelect" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="单位:" prop="unit"> <el-form-item label="单位:" prop="unit">
<el-input maxlength="32" show-word-limit v-model="form.unit" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.unit" autocomplete="off"
placeholder="请输入单位"></el-input> placeholder="请输入单位"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="基础数据类型:" prop="type"> <el-form-item label="基础数据类型:" prop="type">
<el-input maxlength="32" show-word-limit v-model="form.type" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.type" autocomplete="off"
placeholder="请输入基础数据类型"></el-input> placeholder="请输入基础数据类型"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="开始结束次数:" prop="harmStart"> <el-form-item label="开始结束次数:" prop="harmStart">
<el-slider v-model="form.harm" range show-stops :max="50" style="width: 95%" /> <el-slider v-model.trim="form.harm" range show-stops :max="50" style="width: 95%" />
</el-form-item> </el-form-item>
<el-form-item label="统计方法:" prop="statMethod"> <el-form-item label="统计方法:" prop="statMethod">
<el-select v-model="form.statMethod" multiple collapse-tags collapse-tags-tooltip filterable <el-select v-model.trim="form.statMethod" multiple collapse-tags collapse-tags-tooltip filterable
clearable placeholder="请选择统计方法"> clearable placeholder="请选择统计方法">
<el-option v-for="item in StatMethodSelect" :key="item.id" :label="item.name" <el-option v-for="item in StatMethodSelect" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据存储:" prop="classId"> <el-form-item label="数据存储:" prop="classId">
<el-select v-model="form.classId" filterable clearable placeholder="请选择数据存储"> <el-select v-model.trim="form.classId" filterable clearable placeholder="请选择数据存储">
<el-option v-for="item in DataSelect" :key="item.code" :label="item.name" <el-option v-for="item in DataSelect" :key="item.code" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报表数据来源:" prop="resourcesId"> <el-form-item label="报表数据来源:" prop="resourcesId">
<el-select v-model="form.resourcesId" filterable clearable placeholder="请选择报表数据来源"> <el-select v-model.trim="form.resourcesId" filterable clearable placeholder="请选择报表数据来源">
<el-option v-for="item in ResourcesIdSelect" :key="item.code" :label="item.name" <el-option v-for="item in ResourcesIdSelect" :key="item.code" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="序号:" prop="sort"> <el-form-item label="序号:" prop="sort">
<el-input maxlength="32" show-word-limit type="number" v-model="form.sort" autocomplete="off" <el-input maxlength="32" show-word-limit type="number" v-model.trim="form.sort" autocomplete="off"
placeholder="请输入序号"></el-input> placeholder="请输入序号"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="限值名称:" prop="limitName"> <el-form-item label="限值名称:" prop="limitName">
<el-input maxlength="32" show-word-limit type="text" v-model="form.limitName" autocomplete="off" <el-input maxlength="32" show-word-limit type="text" v-model.trim="form.limitName"
placeholder="请输入限值名称"></el-input> autocomplete="off" placeholder="请输入限值名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="限值表名:" prop="limitTable"> <el-form-item label="限值表名:" prop="limitTable">
<el-input maxlength="32" show-word-limit type="text" v-model="form.limitTable" autocomplete="off" <el-input maxlength="32" show-word-limit type="text" v-model.trim="form.limitTable"
placeholder="请输入限值表名"></el-input> autocomplete="off" placeholder="请输入限值表名"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="超标判断方式:" prop="formula"> <el-form-item label="超标判断方式:" prop="formula">
<el-select v-model="form.formula" filterable clearable placeholder="请选择超标判断方式"> <el-select v-model.trim="form.formula" filterable clearable placeholder="请选择超标判断方式">
<el-option v-for="item in FormulaSelect" :key="item.code" :label="item.name" <el-option v-for="item in FormulaSelect" :key="item.code" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
@@ -83,53 +83,53 @@
</div> </div>
<el-form class="form-two" :model="form" label-width="140px" ref="formRef2" :rules="rules"> <el-form class="form-two" :model="form" label-width="140px" ref="formRef2" :rules="rules">
<el-form-item label="参数缺省值:" prop="defaultValue"> <el-form-item label="参数缺省值:" prop="defaultValue">
<el-input maxlength="32" show-word-limit v-model="form.defaultValue" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.defaultValue" autocomplete="off"
placeholder="请输入参数缺省值"></el-input> placeholder="请输入参数缺省值"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="事件类别:" prop="eventType"> <el-form-item label="事件类别:" prop="eventType">
<el-input maxlength="32" show-word-limit v-model="form.eventType" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.eventType" autocomplete="off"
placeholder="请输入事件类别"></el-input> placeholder="请输入事件类别"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设置最大值:" prop="maxNum"> <el-form-item label="设置最大值:" prop="maxNum">
<el-input maxlength="32" show-word-limit type="number" v-model="form.maxNum" autocomplete="off" <el-input maxlength="32" show-word-limit type="number" v-model.trim="form.maxNum" autocomplete="off"
placeholder="请输入设置最大值"></el-input> placeholder="请输入设置最大值"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设置最小值:" prop="minNum"> <el-form-item label="设置最小值:" prop="minNum">
<el-input maxlength="32" show-word-limit type="number" v-model="form.minNum" autocomplete="off" <el-input maxlength="32" show-word-limit type="number" v-model.trim="form.minNum" autocomplete="off"
placeholder="请输入设置最小值"></el-input> placeholder="请输入设置最小值"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="枚举序列:" prop="setValue"> <el-form-item label="枚举序列:" prop="setValue">
<el-input maxlength="32" show-word-limit v-model="form.setValue" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.setValue" autocomplete="off"
placeholder="请输入枚举序列"></el-input> placeholder="请输入枚举序列"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="字符串长度上限:" prop="strlen"> <el-form-item label="字符串长度上限:" prop="strlen">
<el-input maxlength="32" show-word-limit type="number" v-model="form.strlen" autocomplete="off" <el-input maxlength="32" show-word-limit type="number" v-model.trim="form.strlen" autocomplete="off"
placeholder="请输入字符串长度上限"></el-input> placeholder="请输入字符串长度上限"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="上送规则:" prop="tranRule"> <el-form-item label="上送规则:" prop="tranRule">
<el-input maxlength="32" show-word-limit v-model="form.tranRule" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.tranRule" autocomplete="off"
placeholder="请输入上送规则"></el-input> placeholder="请输入上送规则"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否可远程控制:" prop="ctlSts"> <el-form-item label="是否可远程控制:" prop="ctlSts">
<el-radio v-model="form.ctlSts" :label="1"></el-radio> <el-radio v-model.trim="form.ctlSts" :label="1"></el-radio>
<el-radio v-model="form.ctlSts" :label="0"></el-radio> <el-radio v-model.trim="form.ctlSts" :label="0"></el-radio>
</el-form-item> </el-form-item>
<el-form-item label="是否需遥控校验:" prop="curSts"> <el-form-item label="是否需遥控校验:" prop="curSts">
<el-radio v-model="form.curSts" :label="1"></el-radio> <el-radio v-model.trim="form.curSts" :label="1"></el-radio>
<el-radio v-model="form.curSts" :label="0"></el-radio> <el-radio v-model.trim="form.curSts" :label="0"></el-radio>
</el-form-item> </el-form-item>
<el-form-item label="是否存储:" prop="storeFlag"> <el-form-item label="是否存储:" prop="storeFlag">
<el-radio v-model="form.storeFlag" :label="1"></el-radio> <el-radio v-model.trim="form.storeFlag" :label="1"></el-radio>
<el-radio v-model="form.storeFlag" :label="0"></el-radio> <el-radio v-model.trim="form.storeFlag" :label="0"></el-radio>
</el-form-item> </el-form-item>
<el-form-item label="是否加密:" prop="storeFlag"> <el-form-item label="是否加密:" prop="storeFlag">
<el-radio v-model="form.storeFlag" :label="1"></el-radio> <el-radio v-model.trim="form.storeFlag" :label="1"></el-radio>
<el-radio v-model="form.storeFlag" :label="0"></el-radio> <el-radio v-model.trim="form.storeFlag" :label="0"></el-radio>
</el-form-item> </el-form-item>
<el-form-item label="数据是否上送:" prop="tranFlag"> <el-form-item label="数据是否上送:" prop="tranFlag">
<el-radio v-model="form.tranFlag" :label="1"></el-radio> <el-radio v-model.trim="form.tranFlag" :label="1"></el-radio>
<el-radio v-model="form.tranFlag" :label="0"></el-radio> <el-radio v-model.trim="form.tranFlag" :label="0"></el-radio>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>

View File

@@ -1,41 +1,41 @@
<template> <template>
<el-dialog class="cn-operate-dialog" width="800px" v-model="dialogVisible" :title="title"> <el-dialog class="cn-operate-dialog" width="800px" v-model.trim="dialogVisible" :title="title">
<el-form class="form-two" :model="form" label-width="120px" ref="formRef" :rules="rules"> <el-form class="form-two" :model="form" label-width="120px" ref="formRef" :rules="rules">
<el-form-item label="装置类型:" prop="type"> <el-form-item label="装置类型:" prop="type">
<el-select v-model="form.type" filterable placeholder="请选择" @change="typeChange"> <el-select v-model.trim="form.type" filterable placeholder="请选择" @change="typeChange">
<el-option v-for="item in TypeOptions" :key="item.id" :label="item.name" <el-option v-for="item in TypeOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="装置型号:" prop="devType"> <el-form-item label="装置型号:" prop="devType">
<el-select v-model="form.devType" placeholder="请选择" filterable @change="devTypeChange"> <el-select v-model.trim="form.devType" placeholder="请选择" filterable @change="devTypeChange">
<el-option v-for="item in DevTypeOptions" :key="item.id" :label="item.name" <el-option v-for="item in DevTypeOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="版本号:" prop="versionNo"> <el-form-item label="版本号:" prop="versionNo">
<el-input maxlength="32" show-word-limit v-model="form.versionNo" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.versionNo" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="版本类型:" prop="versionType"> <el-form-item label="版本类型:" prop="versionType">
<el-input maxlength="32" show-word-limit v-model="form.versionType" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.versionType" autocomplete="off"
placeholder="填写特殊类型(不填默认通用类型)"></el-input> placeholder="填写特殊类型(不填默认通用类型)"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="版本协议:" prop="versionAgreement"> <el-form-item label="版本协议:" prop="versionAgreement">
<el-input maxlength="32" show-word-limit v-model="form.versionAgreement" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.versionAgreement" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="版本日期:" prop="versionDate"> <el-form-item label="版本日期:" prop="versionDate">
<el-date-picker v-model="form.versionDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期时间" <el-date-picker v-model.trim="form.versionDate" type="date" value-format="yyyy-MM-dd"
style="width: 100%"></el-date-picker> placeholder="选择日期时间" style="width: 100%"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="描述:" prop="description"> <el-form-item label="描述:" prop="description">
<el-input maxlength="32" show-word-limit v-model="form.description" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.description" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="CRC校验:" prop="crcInfo"> <el-form-item label="CRC校验:" prop="crcInfo">
<el-input maxlength="32" show-word-limit v-model="form.crcInfo" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.crcInfo" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -3,11 +3,11 @@
<TableHeader ref="tableHeaderRef"> <TableHeader ref="tableHeaderRef">
<template #select> <template #select>
<el-form-item label="模版名称"> <el-form-item label="模版名称">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.name" clearable <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.name" clearable
placeholder="请输入名称"></el-input> placeholder="请输入名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="装置型号"> <el-form-item label="装置型号">
<el-select v-model="tableStore.table.params.devType" placeholder="请选择" clearable> <el-select v-model.trim="tableStore.table.params.devType" placeholder="请选择" clearable>
<el-option v-for="item in DevTypeOptions" :key="item.id" :label="item.name" <el-option v-for="item in DevTypeOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>

View File

@@ -3,17 +3,9 @@
<TableHeader ref="tableHeaderRef"> <TableHeader ref="tableHeaderRef">
<template #select> <template #select>
<el-form-item label="装置型号:"> <el-form-item label="装置型号:">
<el-select <el-select v-model.trim="tableStore.table.params.devType" placeholder="请选择" clearable>
v-model="tableStore.table.params.devType" <el-option v-for="item in DevTypeOptions" :key="item.id" :label="item.name"
placeholder="请选择" :value="item.id"></el-option>
clearable
>
<el-option
v-for="item in DevTypeOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>

View File

@@ -3,27 +3,28 @@
<TableHeader> <TableHeader>
<template v-slot:select> <template v-slot:select>
<el-form-item label="设备类型"> <el-form-item label="设备类型">
<!-- <el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> --> <!-- <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> -->
<el-select v-model="tableStore.table.params.devType" clearable @change="devTypeChange" <el-select v-model.trim="tableStore.table.params.devType" clearable @change="devTypeChange"
placeholder="请选择设备类型"> placeholder="请选择设备类型">
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号"> <el-form-item label="设备型号">
<el-select v-model="tableStore.table.params.devModel" filterable clearable placeholder="请选择设备型号"> <el-select v-model.trim="tableStore.table.params.devModel" filterable clearable
placeholder="请选择设备型号">
<el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议"> <el-form-item label="通讯协议">
<el-select v-model="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议"> <el-select v-model.trim="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议">
<el-option label="MQTT" value="MQTT"></el-option> <el-option label="MQTT" value="MQTT"></el-option>
<el-option label="CLD" value="CLD"></el-option> <el-option label="CLD" value="CLD"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="状态"> <!-- <el-form-item label="状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择状态"> <el-select v-model.trim="tableStore.table.params.status" clearable placeholder="请选择状态">
<el-option label="未注册" :value="1"></el-option> <el-option label="未注册" :value="1"></el-option>
<el-option label="注册" :value="2"></el-option> <el-option label="注册" :value="2"></el-option>
<el-option label="接入" :value="3"></el-option> <el-option label="接入" :value="3"></el-option>
@@ -43,7 +44,7 @@
</TableHeader> </TableHeader>
<Table ref="tableRef"></Table> <Table ref="tableRef"></Table>
<el-dialog :title="dialogTitle" v-model="dialogFormVisible" :close-on-click-modal="false" <el-dialog :title="dialogTitle" v-model.trim="dialogFormVisible" :close-on-click-modal="false"
:before-close="resetForm" draggable width="800px"> :before-close="resetForm" draggable width="800px">
<el-form :model="form" label-width="auto" :rules="rules" ref="ruleFormRef" class="form-two"> <el-form :model="form" label-width="auto" :rules="rules" ref="ruleFormRef" class="form-two">
<el-form-item label="设备名称:" prop="name"> <el-form-item label="设备名称:" prop="name">
@@ -55,19 +56,19 @@
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备类型:" prop="devType" class="top"> <el-form-item label="设备类型:" prop="devType" class="top">
<el-select v-model="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable> <el-select v-model.trim="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable>
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号:" prop="devModel" class="top"> <el-form-item label="设备型号:" prop="devModel" class="top">
<el-select v-model="form.devModel" filterable placeholder="请选择" clearable> <el-select v-model.trim="form.devModel" filterable placeholder="请选择" clearable>
<el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议:" prop="devAccessMethod" class="top"> <el-form-item label="通讯协议:" prop="devAccessMethod" class="top">
<el-select v-model="form.devAccessMethod" placeholder="请选择" clearable> <el-select v-model.trim="form.devAccessMethod" placeholder="请选择" clearable>
<el-option label="MQTT" value="MQTT"></el-option> <el-option label="MQTT" value="MQTT"></el-option>
<el-option label="CLD" value="CLD"></el-option> <el-option label="CLD" value="CLD"></el-option>
</el-select> </el-select>
@@ -77,7 +78,7 @@
</el-form-item> </el-form-item>
<!-- <el-form-item label="合同号:" prop="cntractNo" class="top"> <!-- <el-form-item label="合同号:" prop="cntractNo" class="top">
<el-input maxlength="32" show-word-limit v-model="form.cntractNo" autocomplete="off" placeholder="请输入"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="form.cntractNo" autocomplete="off" placeholder="请输入"></el-input>
</el-form-item> --> </el-form-item> -->
</el-form> </el-form>
<template #footer> <template #footer>
@@ -395,7 +396,7 @@ const tableStore = new TableStore({
// }, // },
//便携式设备手动接入 //便携式设备手动接入
{ {
title: '接5入', title: '接入',
type: 'primary', type: 'primary',
icon: 'el-icon-Grid', icon: 'el-icon-Grid',
render: 'basicButton', render: 'basicButton',
@@ -403,7 +404,7 @@ const tableStore = new TableStore({
return ( return (
(row.devType != '8b45cf6b7f5266e777d07c166ad5fa77' && (row.devType != '8b45cf6b7f5266e777d07c166ad5fa77' &&
row.devModel != 'a0d4da4b5c17b2172362a3f5a27bf217') || row.devModel != 'a0d4da4b5c17b2172362a3f5a27bf217') ||
row.status != '5' row.status != '6'
) )
}, },
click: row => { click: row => {
@@ -425,7 +426,7 @@ const tableStore = new TableStore({
} }
}, },
{ {
title: '接3入', title: '接入',
type: 'primary', type: 'primary',
icon: 'el-icon-Grid', icon: 'el-icon-Grid',
render: 'basicButton', render: 'basicButton',
@@ -433,7 +434,7 @@ const tableStore = new TableStore({
return ( return (
(row.devType != '8b45cf6b7f5266e777d07c166ad5fa77' && (row.devType != '8b45cf6b7f5266e777d07c166ad5fa77' &&
row.devModel != 'a0d4da4b5c17b2172362a3f5a27bf217') || row.devModel != 'a0d4da4b5c17b2172362a3f5a27bf217') ||
row.status != '3' row.status != '5'
) )
}, },
click: row => { click: row => {

View File

@@ -3,8 +3,8 @@
<TableHeader datePicker> <TableHeader datePicker>
<template v-slot:select> <template v-slot:select>
<el-form-item label="关键词"> <el-form-item label="关键词">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" clearable <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="请输入关键词" /> clearable placeholder="请输入关键词" />
</el-form-item> </el-form-item>
</template> </template>
</TableHeader> </TableHeader>

View File

@@ -1,55 +1,29 @@
<template> <template>
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" title="编辑拓扑图信息"> <el-dialog class="cn-operate-dialog" v-model.trim="dialogVisible" title="编辑拓扑图信息">
<el-form :label-width="140"> <el-form :label-width="140">
<el-form-item label="拓扑图:" style="height: auto !important"> <el-form-item label="拓扑图:" style="height: auto !important">
<div class="gplot-content"> <div class="gplot-content">
<VueDraggableResizable <VueDraggableResizable class-name-draggable="gplot-content-item"
class-name-draggable="gplot-content-item" class-name-active="gplot-content-item-active" :active="editorIndex == index" :resizable="false"
class-name-active="gplot-content-item-active" :parent="true" :x="item.left" :y="item.top" :w="item.width" :h="item.height"
:active="editorIndex == index" @dragStart="editorIndex = index" @dragging="resize" v-for="(item, index) in pointList"
:resizable="false" :key="index" :isResizable="false">
:parent="true" <div class="text" style="line-height: 20px; white-space: nowrap"
:x="item.left" :style="{ color: item.name === '监测点' ? 'red' : 'black' }">
:y="item.top"
:w="item.width"
:h="item.height"
@dragStart="editorIndex = index"
@dragging="resize"
v-for="(item, index) in pointList"
:key="index"
:isResizable="false"
>
<div
class="text"
style="line-height: 20px; white-space: nowrap"
:style="{ color: item.name === '监测点' ? 'red' : 'black' }"
>
{{ item.name }} {{ item.name }}
</div> </div>
</VueDraggableResizable> </VueDraggableResizable>
<img <img :src="imgUrl" class="gplot-content"
:src="imgUrl" style="border: 1px solid #dcdfe6; position: unset; user-select: none" draggable="false" />
class="gplot-content"
style="border: 1px solid #dcdfe6; position: unset; user-select: none"
draggable="false"
/>
<div>注意监测点不要移出圈</div> <div>注意监测点不要移出圈</div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="监测点位置:" v-if="editorIndex > -1"> <el-form-item label="监测点位置:" v-if="editorIndex > -1">
<div style="display: flex"> <div style="display: flex">
<el-select <el-select v-model.trim="pointList[editorIndex].position" placeholder="请选择" style="flex: 1"
v-model="pointList[editorIndex].position" @change="positionChange">
placeholder="请选择" <el-option v-for="item in linePosition" :key="item.id" :label="item.name"
style="flex: 1" :value="item.id"></el-option>
@change="positionChange"
>
<el-option
v-for="item in linePosition"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
<el-button class="ml20" type="danger" @click="deletePoint" icon="el-icon-Delete">删除</el-button> <el-button class="ml20" type="danger" @click="deletePoint" icon="el-icon-Delete">删除</el-button>
</div> </div>

View File

@@ -1,19 +1,19 @@
<template> <template>
<el-dialog draggable :title="title" v-model="dialogVisible" width="500px" :before-close="handleClose" <el-dialog draggable :title="title" v-model.trim="dialogVisible" width="500px" :before-close="handleClose"
:close-on-click-modal="false"> :close-on-click-modal="false">
<el-form ref="formRef" :rules="rules" :model="form" label-width="90px" class="form"> <el-form ref="formRef" :rules="rules" :model="form" label-width="90px" class="form">
<el-form-item label="项目名称:" prop="name"> <el-form-item label="项目名称:" prop="name">
<el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入项目名称"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入项目名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="工程项目:" class="top" prop="projectIds"> <el-form-item label="工程项目:" class="top" prop="projectIds">
<el-tree-select v-model="form.projectIds" default-expand-all show-checkbox node-key="id" <el-tree-select v-model.trim="form.projectIds" default-expand-all show-checkbox node-key="id"
:props="defaultProps" multiple :data="Engineering" collapse-tags style="width: 100%" /> :props="defaultProps" multiple :data="Engineering" collapse-tags style="width: 100%" />
<!-- <el-cascader v-model="form.projectIds" :options="Engineering" :props="defaultProps" <!-- <el-cascader v-model.trim="form.projectIds" :options="Engineering" :props="defaultProps"
:show-all-levels="false" collapse-tags collapse-tags-tooltip clearable style="width: 100%;"/> --> :show-all-levels="false" collapse-tags collapse-tags-tooltip clearable style="width: 100%;"/> -->
</el-form-item> </el-form-item>
<el-form-item label="项目排序:" prop="orderBy"> <el-form-item label="项目排序:" prop="orderBy">
<el-input maxlength="32" show-word-limit-number v-model="form.orderBy" :min="0" :step="1" step-strictly <el-input maxlength="32" show-word-limit-number v-model.trim="form.orderBy" :min="0" :step="1"
style="width: 100%" /> step-strictly style="width: 100%" />
</el-form-item> </el-form-item>
<el-form-item label="备注:" class="top"> <el-form-item label="备注:" class="top">

View File

@@ -3,7 +3,7 @@
<TableHeader> <TableHeader>
<template v-slot:select> <template v-slot:select>
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="请输入项目名称"></el-input> placeholder="请输入项目名称"></el-input>
</el-form-item> </el-form-item>
</template> </template>

View File

@@ -10,7 +10,7 @@
<TableHeader ref="TableHeaderRef" datePicker> <TableHeader ref="TableHeaderRef" datePicker>
<template v-slot:select> <template v-slot:select>
<el-form-item label="模板策略"> <el-form-item label="模板策略">
<el-select v-model="Template" @change="changetype" placeholder="请选择模版" value-key="id"> <el-select v-model.trim="Template" @change="changetype" placeholder="请选择模版" value-key="id">
<el-option v-for="item in templatePolicy" :key="item.id" :label="item.name" <el-option v-for="item in templatePolicy" :key="item.id" :label="item.name"
:value="item"></el-option> :value="item"></el-option>
</el-select> </el-select>

View File

@@ -6,11 +6,11 @@
@Policy="stencil"> @Policy="stencil">
</pointTreeWx> </pointTreeWx>
</pane> </pane>
<pane :size="(100-size)" style="background: #fff" :style="height"> <pane :size="(100 - size)" style="background: #fff" :style="height">
<TableHeader ref="TableHeaderRef" :showReset="false"> <TableHeader ref="TableHeaderRef" :showReset="false">
<template v-slot:select> <template v-slot:select>
<el-form-item label="模板策略"> <el-form-item label="模板策略">
<el-select v-model="Template" @change="changetype" placeholder="请选择模版" value-key="id"> <el-select v-model.trim="Template" @change="changetype" placeholder="请选择模版" value-key="id">
<el-option v-for="item in templatePolicy" :key="item.id" :label="item.name" <el-option v-for="item in templatePolicy" :key="item.id" :label="item.name"
:value="item"></el-option> :value="item"></el-option>
</el-select> </el-select>

View File

@@ -1,68 +1,36 @@
<template> <template>
<el-tabs v-model="activeName" class="demo-tabs"> <el-tabs v-model.trim="activeName" class="demo-tabs">
<el-tab-pane label="数据单位" name="0"> <el-tab-pane label="数据单位" name="0">
绑定数据单位: 绑定数据单位:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderUnit" placeholder="请选择数据单位" v-model.trim="value"
:popper-append-to-body="false" :options="options1" filterable @change="handleChange" :props="{
ref="cascaderUnit"
placeholder="请选择数据单位"
v-model="value"
:options="options1"
filterable
@change="handleChange"
:props="{
value: 'code', value: 'code',
label: 'name' label: 'name'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="数据指标" name="1"> <el-tab-pane label="数据指标" name="1">
绑定数据指标: 绑定数据指标:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderUnit" placeholder="请选择数据指标" v-model.trim="value"
:popper-append-to-body="false" :options="options2" filterable @change="handleChange" :props="{
ref="cascaderUnit"
placeholder="请选择数据指标"
v-model="value"
:options="options2"
filterable
@change="handleChange"
:props="{
value: 'name', value: 'name',
label: 'showName' label: 'showName'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="合格率判定" name="2"> <el-tab-pane label="合格率判定" name="2">
绑定合格率判定: 绑定合格率判定:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderhgl" placeholder="请选择数据合格率" v-model.trim="value"
:popper-append-to-body="false" :options="options3" filterable @change="handleChange" :props="{
ref="cascaderhgl"
placeholder="请选择数据合格率"
v-model="value"
:options="options3"
filterable
@change="handleChange"
:props="{
value: 'name', value: 'name',
label: 'showName' label: 'showName'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="监测点台账指标" name="3"> <el-tab-pane label="监测点台账指标" name="3">
绑定数据指标: 绑定数据指标:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderjcd" placeholder="请选择监测点台账" v-model.trim="value"
:popper-append-to-body="false" :options="options4" filterable @change="handleChange" :props="{
ref="cascaderjcd"
placeholder="请选择监测点台账"
v-model="value"
:options="options4"
filterable
@change="handleChange"
:props="{
value: 'name', value: 'name',
label: 'showName' label: 'showName'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</template> </template>
@@ -99,7 +67,7 @@ terminalChooseTree().then(res => {
options4.value = res.data options4.value = res.data
}) })
onMounted(() => {}) onMounted(() => { })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-tab-pane) { :deep(.el-tab-pane) {

View File

@@ -1,24 +1,13 @@
<template> <template>
<el-dialog draggable v-model="dialogVisible" title="模板绑定" width="500px" :before-close="handleClose"> <el-dialog draggable v-model.trim="dialogVisible" title="模板绑定" width="500px" :before-close="handleClose">
<el-tree <el-tree default-expand-all show-checkbox node-key="id" :data="dataTree" :expand-on-click-node="false"
default-expand-all ref="tree" style="height: 440px; overflow-y: auto">
show-checkbox
node-key="id"
:data="dataTree"
:expand-on-click-node="false"
ref="tree"
style="height: 440px; overflow-y: auto"
>
<template #default="{ node, data }"> <template #default="{ node, data }">
<span class="custom-tree-node"> <span class="custom-tree-node">
<span>{{ data.name }}</span> <span>{{ data.name }}</span>
<span> <span>
<el-switch <el-switch v-model.trim="data.activation" active-value="1" inactive-value="0"
v-model="data.activation" :active-text="data.activation == 1 ? '激活 ' : '未激活'" />
active-value="1"
inactive-value="0"
:active-text="data.activation == 1 ? '激活 ' : '未激活'"
/>
</span> </span>
</span> </span>
</template> </template>

View File

@@ -1,23 +1,23 @@
<template> <template>
<el-dialog draggable :title="title" v-model="formVisible" width="30%" :before-close="closeDialog"> <el-dialog draggable :title="title" v-model.trim="formVisible" width="30%" :before-close="closeDialog">
<el-form :model="formdata" label-width="100px" :rules="rules" ref="ruleForm"> <el-form :model="formdata" label-width="100px" :rules="rules" ref="ruleForm">
<el-form-item label="模板名称:" prop="name"> <el-form-item label="模板名称:" prop="name">
<el-input maxlength="32" show-word-limit placeholder="模板名称" v-model="formdata.name" <el-input maxlength="32" show-word-limit placeholder="模板名称" v-model.trim="formdata.name"
style="width: 100%"></el-input> style="width: 100%"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="部门:" prop="deptId"> <el-form-item label="部门:" prop="deptId">
<Area v-model="formdata.deptId" style="width: 100%" collapse-tags <Area v-model.trim="formdata.deptId" style="width: 100%" collapse-tags
:props="{ multiple: true, label: 'name', value: 'id', emitPath: false }" /> :props="{ multiple: true, label: 'name', value: 'id', emitPath: false }" />
</el-form-item> </el-form-item>
<el-form-item label="模板类型:" prop="reportType"> <el-form-item label="模板类型:" prop="reportType">
<el-select style="width: 100%" v-model="formdata.reportType" placeholder="请选择模板类型"> <el-select style="width: 100%" v-model.trim="formdata.reportType" placeholder="请选择模板类型">
<el-option v-for="item in classificationData" :key="item.id" :label="item.label" <el-option v-for="item in classificationData" :key="item.id" :label="item.label"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报表类型:" prop="reportForm"> <el-form-item label="报表类型:" prop="reportForm">
<el-select style="width: 100%" v-model="formdata.reportForm" placeholder="请选择报表类型"> <el-select style="width: 100%" v-model.trim="formdata.reportForm" placeholder="请选择报表类型">
<el-option v-for="item in reportFormList" :key="item.value" :label="item.label" <el-option v-for="item in reportFormList" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>

View File

@@ -1,16 +1,16 @@
<template> <template>
<div class='default-main'> <div class='default-main'>
<el-tabs v-model='activeName' type='border-card' @tab-click='init'> <el-tabs v-model.trim='activeName' type='border-card' @tab-click='init'>
<el-tab-pane label='用户协议' name='User_Agreement'></el-tab-pane> <el-tab-pane label='用户协议' name='User_Agreement'></el-tab-pane>
<el-tab-pane label='个人信息保护政策' name='Personal_Infor_Protect'></el-tab-pane> <el-tab-pane label='个人信息保护政策' name='Personal_Infor_Protect'></el-tab-pane>
<el-tab-pane label='系统介绍' name='introduction'></el-tab-pane> <el-tab-pane label='系统介绍' name='introduction'></el-tab-pane>
<el-tab-pane label='使用手册' name='User_Manual'></el-tab-pane> <el-tab-pane label='使用手册' name='User_Manual'></el-tab-pane>
<el-tab-pane label='公司介绍' name='Company_Profile'></el-tab-pane> <el-tab-pane label='公司介绍' name='Company_Profile'></el-tab-pane>
<div class='agreement' :style='{height:height}'> <div class='agreement' :style='{ height: height }'>
<div style='margin-top: 5px; right: 10px; position: absolute; z-index: 9999999'> <div style='margin-top: 5px; right: 10px; position: absolute; z-index: 9999999'>
<el-button type='primary' @click='submit' icon='el-icon-Checked'>保存</el-button> <el-button type='primary' @click='submit' icon='el-icon-Checked'>保存</el-button>
</div> </div>
<WangEditor v-model='html' style='border-top: none' /> <WangEditor v-model.trim='html' style='border-top: none' />
</div> </div>
</el-tabs> </el-tabs>
</div> </div>
@@ -45,7 +45,7 @@ const init = () => {
nextTick(() => { nextTick(() => {
dic.forEach((item: BasicDictData) => { dic.forEach((item: BasicDictData) => {
if (item.code == activeName.value) { if (item.code == activeName.value) {
id.value = item.id id.value = item.id
} }

View File

@@ -1,24 +1,24 @@
<template> <template>
<el-dialog width="500px" v-model="dialogVisible" :title="title"> <el-dialog width="500px" v-model.trim="dialogVisible" :title="title">
<el-form :model="form" class="form-one" label-width="auto"> <el-form :model="form" class="form-one" label-width="auto">
<el-form-item label="名称"> <el-form-item label="名称">
<el-input maxlength="32" show-word-limit v-model="form.name" placeholder="请输入名称" /> <el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入名称" />
</el-form-item> </el-form-item>
<el-form-item label="编码"> <el-form-item label="编码">
<el-input maxlength="32" show-word-limit v-model="form.code" placeholder="请输入编码" /> <el-input maxlength="32" show-word-limit v-model.trim="form.code" placeholder="请输入编码" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="类型"> <!-- <el-form-item label="类型">
<el-select v-model="form.type" placeholder="请选择类型"> <el-select v-model.trim="form.type" placeholder="请选择类型">
<el-option v-for="item in options" :key="item.value" :label="item.name" :value="item.value" /> <el-option v-for="item in options" :key="item.value" :label="item.name" :value="item.value" />
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="备注"> <el-form-item label="备注">
<el-input maxlength="32" show-word-limit v-model="form.remark" placeholder="请输入备注" /> <el-input maxlength="32" show-word-limit v-model.trim="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
<el-form-item label="排序"> <el-form-item label="排序">
<el-input maxlength="32" show-word-limit-number v-model="form.sort" :min="0" /> <el-input maxlength="32" show-word-limit-number v-model.trim="form.sort" :min="0" />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,18 +1,18 @@
<template> <template>
<el-dialog class="cn-operate-dialog statistical-type-binding" v-model="dialogVisible" title="绑定指标" <el-dialog class="cn-operate-dialog statistical-type-binding" v-model.trim="dialogVisible" title="绑定指标"
style="width: 1200px" @closed="close"> style="width: 1200px" @closed="close">
<el-scrollbar style="padding-right: 0"> <el-scrollbar style="padding-right: 0">
<div class="box"> <div class="box">
<div class="box-left"> <div class="box-left">
<el-input maxlength="32" show-word-limit v-model="searchKey" size="small" placeholder="请输入搜索内容" <el-input maxlength="32" show-word-limit v-model.trim="searchKey" size="small" placeholder="请输入搜索内容"
:suffix-icon="Search" @input="filterTree" style="margin-bottom: 10px"></el-input> :suffix-icon="Search" @input="filterTree" style="margin-bottom: 10px"></el-input>
<el-cascader-panel v-model="fromDataValue" :props="{ <el-cascader-panel v-model.trim="fromDataValue" :props="{
multiple: true multiple: true
}" :options="fromData"></el-cascader-panel> }" :options="fromData"></el-cascader-panel>
</div> </div>
<div class="box-center"> <div class="box-center">
<el-button type="primary" icon="el-icon-Plus" @click="newGroup">新建分组</el-button> <el-button type="primary" icon="el-icon-Plus" @click="newGroup">新建分组</el-button>
<el-popover v-model="popoverVisible" placement="right" width="400" trigger="click" <el-popover v-model.trim="popoverVisible" placement="right" width="400" trigger="click"
popper-style="width:auto"> popper-style="width:auto">
<div class="statistical-type-binding-button-group"> <div class="statistical-type-binding-button-group">
<el-button type="primary" style="margin-left: 0" v-for="item in toData" <el-button type="primary" style="margin-left: 0" v-for="item in toData"
@@ -33,9 +33,10 @@
</el-button> </el-button>
</div> </div>
<div class="box-right"> <div class="box-right">
<el-input maxlength="32" show-word-limit v-model="searchKey1" size="small" placeholder="请输入搜索内容" <el-input maxlength="32" show-word-limit v-model.trim="searchKey1" size="small"
:suffix-icon="Search" @input="filterTree1" style="margin-bottom: 10px"></el-input> placeholder="请输入搜索内容" :suffix-icon="Search" @input="filterTree1"
<el-cascader-panel v-model="toDataValue" :props="{ style="margin-bottom: 10px"></el-input>
<el-cascader-panel v-model.trim="toDataValue" :props="{
multiple: true, multiple: true,
checkStrictly: true, checkStrictly: true,
expandTrigger: 'click' expandTrigger: 'click'

View File

@@ -3,27 +3,27 @@
<TableHeader> <TableHeader>
<template #select> <template #select>
<el-form-item label="设备类型"> <el-form-item label="设备类型">
<!-- <el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> --> <!-- <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> -->
<el-select v-model="tableStore.table.params.devType" clearable @change="devTypeChange" <el-select v-model.trim="tableStore.table.params.devType" clearable @change="devTypeChange"
placeholder="请选择设备类型"> placeholder="请选择设备类型">
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号"> <el-form-item label="设备型号">
<el-select v-model="tableStore.table.params.devModel" clearable placeholder="请选择设备型号"> <el-select v-model.trim="tableStore.table.params.devModel" clearable placeholder="请选择设备型号">
<el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议"> <el-form-item label="通讯协议">
<el-select v-model="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议"> <el-select v-model.trim="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议">
<el-option label="MQTT" value="mqtt"></el-option> <el-option label="MQTT" value="mqtt"></el-option>
<el-option label="CLD" value="cloud"></el-option> <el-option label="CLD" value="cloud"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择状态"> <el-select v-model.trim="tableStore.table.params.status" clearable placeholder="请选择状态">
<el-option label="未注册" :value="1"></el-option> <el-option label="未注册" :value="1"></el-option>
<el-option label="注册" :value="2"></el-option> <el-option label="注册" :value="2"></el-option>
<el-option label="接入" :value="3"></el-option> <el-option label="接入" :value="3"></el-option>
@@ -43,38 +43,38 @@
</TableHeader> </TableHeader>
<Table ref="tableRef"></Table> <Table ref="tableRef"></Table>
<el-dialog :title="dialogTitle" v-model="dialogFormVisible" :close-on-click-modal="false" <el-dialog :title="dialogTitle" v-model.trim="dialogFormVisible" :close-on-click-modal="false"
:before-close="resetForm" draggable width="40%"> :before-close="resetForm" draggable width="40%">
<el-form :model="form" label-width="120px" :rules="rules" ref="ruleFormRef"> <el-form :model="form" label-width="120px" :rules="rules" ref="ruleFormRef">
<el-form-item label="设备名称:" prop="name"> <el-form-item label="设备名称:" prop="name">
<el-input maxlength="32" show-word-limit v-model="form.name" autocomplete="off" clearable <el-input maxlength="32" show-word-limit v-model.trim="form.name" autocomplete="off" clearable
placeholder="请输入(项目名称+设备名称)"></el-input> placeholder="请输入(项目名称+设备名称)"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="网络设备ID:" prop="ndid" class="top"> <el-form-item label="网络设备ID:" prop="ndid" class="top">
<el-input maxlength="32" show-word-limit v-model="form.ndid" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.ndid" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备类型:" prop="devType" class="top"> <el-form-item label="设备类型:" prop="devType" class="top">
<el-select v-model="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable> <el-select v-model.trim="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable>
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号:" prop="devModel" class="top"> <el-form-item label="设备型号:" prop="devModel" class="top">
<el-select v-model="form.devModel" filterable placeholder="请选择" clearable> <el-select v-model.trim="form.devModel" filterable placeholder="请选择" clearable>
<el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议:" prop="devAccessMethod" class="top"> <el-form-item label="通讯协议:" prop="devAccessMethod" class="top">
<el-select v-model="form.devAccessMethod" placeholder="请选择" clearable> <el-select v-model.trim="form.devAccessMethod" placeholder="请选择" clearable>
<el-option label="MQTT" value="MQTT"></el-option> <el-option label="MQTT" value="MQTT"></el-option>
<el-option label="CLD" value="cloud"></el-option> <el-option label="CLD" value="cloud"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="合同号:" prop="cntractNo" class="top"> <el-form-item label="合同号:" prop="cntractNo" class="top">
<el-input maxlength="32" show-word-limit v-model="form.cntractNo" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.cntractNo" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -3,27 +3,28 @@
<TableHeader> <TableHeader>
<template #select> <template #select>
<el-form-item label="设备类型"> <el-form-item label="设备类型">
<!-- <el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> --> <!-- <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> -->
<el-select v-model="tableStore.table.params.devType" clearable @change="devTypeChange" <el-select v-model.trim="tableStore.table.params.devType" clearable @change="devTypeChange"
placeholder="请选择设备类型"> placeholder="请选择设备类型">
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号"> <el-form-item label="设备型号">
<el-select v-model="tableStore.table.params.devModel" filterable clearable placeholder="请选择设备型号"> <el-select v-model.trim="tableStore.table.params.devModel" filterable clearable
placeholder="请选择设备型号">
<el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in devModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议"> <el-form-item label="通讯协议">
<el-select v-model="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议"> <el-select v-model.trim="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议">
<el-option label="MQTT" value="mqtt"></el-option> <el-option label="MQTT" value="mqtt"></el-option>
<el-option label="CLD" value="cloud"></el-option> <el-option label="CLD" value="cloud"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择状态"> <el-select v-model.trim="tableStore.table.params.status" clearable placeholder="请选择状态">
<el-option label="未注册" :value="1"></el-option> <el-option label="未注册" :value="1"></el-option>
<el-option label="注册" :value="2"></el-option> <el-option label="注册" :value="2"></el-option>
<el-option label="接入" :value="3"></el-option> <el-option label="接入" :value="3"></el-option>
@@ -43,38 +44,38 @@
</TableHeader> </TableHeader>
<Table ref="tableRef"></Table> <Table ref="tableRef"></Table>
<el-dialog :title="dialogTitle" v-model="dialogFormVisible" :close-on-click-modal="false" <el-dialog :title="dialogTitle" v-model.trim="dialogFormVisible" :close-on-click-modal="false"
:before-close="resetForm" draggable width="40%"> :before-close="resetForm" draggable width="40%">
<el-form :model="form" label-width="120px" :rules="rules" ref="ruleFormRef"> <el-form :model="form" label-width="120px" :rules="rules" ref="ruleFormRef">
<el-form-item label="设备名称:" prop="name"> <el-form-item label="设备名称:" prop="name">
<el-input maxlength="32" show-word-limit v-model="form.name" autocomplete="off" clearable <el-input maxlength="32" show-word-limit v-model.trim="form.name" autocomplete="off" clearable
placeholder="请输入(项目名称+设备名称)"></el-input> placeholder="请输入(项目名称+设备名称)"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="网络设备ID:" prop="ndid" class="top"> <el-form-item label="网络设备ID:" prop="ndid" class="top">
<el-input maxlength="32" show-word-limit v-model="form.ndid" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.ndid" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备类型:" prop="devType" class="top"> <el-form-item label="设备类型:" prop="devType" class="top">
<el-select v-model="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable> <el-select v-model.trim="form.devType" placeholder="请选择" @change="formDevTypeChange" clearable>
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label" <el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="设备型号:" prop="devModel" class="top"> <el-form-item label="设备型号:" prop="devModel" class="top">
<el-select v-model="form.devModel" filterable placeholder="请选择" clearable> <el-select v-model.trim="form.devModel" filterable placeholder="请选择" clearable>
<el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label" <el-option v-for="item in formDevModelOptionsFilter" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯协议:" prop="devAccessMethod" class="top"> <el-form-item label="通讯协议:" prop="devAccessMethod" class="top">
<el-select v-model="form.devAccessMethod" placeholder="请选择" clearable> <el-select v-model.trim="form.devAccessMethod" placeholder="请选择" clearable>
<el-option label="MQTT" value="MQTT"></el-option> <el-option label="MQTT" value="MQTT"></el-option>
<el-option label="CLD" value="cloud"></el-option> <el-option label="CLD" value="cloud"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="合同号:" prop="cntractNo" class="top"> <el-form-item label="合同号:" prop="cntractNo" class="top">
<el-input maxlength="32" show-word-limit v-model="form.cntractNo" autocomplete="off" <el-input maxlength="32" show-word-limit v-model.trim="form.cntractNo" autocomplete="off"
placeholder="请输入"></el-input> placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,43 +1,29 @@
<template> <template>
<div class="flex" style="margin: 15px 0"> <div class="flex" style="margin: 15px 0">
<span style="width: 100px; margin-top: 3px">电压等级:</span> <span style="width: 100px; margin-top: 3px">电压等级:</span>
<el-checkbox <el-checkbox :indeterminate="isIndeterminate" v-model.trim="checkAll" @change="handleCheckAllChange"
:indeterminate="isIndeterminate" style="margin-right: 28px">
v-model="checkAll"
@change="handleCheckAllChange"
style="margin-right: 28px"
>
全选 全选
</el-checkbox> </el-checkbox>
<el-checkbox-group <el-checkbox-group v-model.trim="checkedVoltage" @change="handleCheckedVoltageChange"
v-model="checkedVoltage" style="height: 72px; overflow-y: auto">
@change="handleCheckedVoltageChange"
style="height: 72px; overflow-y: auto"
>
<el-checkbox v-for="(item, index) in grade" :label="item" :key="index">{{ item.name }}</el-checkbox> <el-checkbox v-for="(item, index) in grade" :label="item" :key="index">{{ item.name }}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
<div class="flex" style="margin: 15px 0"> <div class="flex" style="margin: 15px 0">
<span style="width: 100px; margin-top: 3px">干扰源类型:</span> <span style="width: 100px; margin-top: 3px">干扰源类型:</span>
<el-checkbox <el-checkbox :indeterminate="isIndeterminate1" v-model.trim="checkAll1" @change="handleCheckAllChange1"
:indeterminate="isIndeterminate1" style="margin-right: 28px">
v-model="checkAll1"
@change="handleCheckAllChange1"
style="margin-right: 28px"
>
全选 全选
</el-checkbox> </el-checkbox>
<el-checkbox-group <el-checkbox-group v-model.trim="checkedSource" @change="handleCheckedSourceChange"
v-model="checkedSource" style="height: 72px; overflow-y: auto">
@change="handleCheckedSourceChange"
style="height: 72px; overflow-y: auto"
>
<el-checkbox v-for="(item, index) in type" :label="item" :key="index">{{ item.name }}</el-checkbox> <el-checkbox v-for="(item, index) in type" :label="item" :key="index">{{ item.name }}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
<div class="flex" style="margin: 15px 0"> <div class="flex" style="margin: 15px 0">
<span style="width: 100px; line-height: 32px">兼容曲线:</span> <span style="width: 100px; line-height: 32px">兼容曲线:</span>
<el-radio-group v-model="radio" @change="radioChange"> <el-radio-group v-model.trim="radio" @change="radioChange">
<el-radio label="ITIC">ITIC</el-radio> <el-radio label="ITIC">ITIC</el-radio>
<el-radio label="F47">F47</el-radio> <el-radio label="F47">F47</el-radio>
</el-radio-group> </el-radio-group>
@@ -470,9 +456,11 @@ const layout = mainHeight(390) as any
.flex { .flex {
display: flex; display: flex;
} }
.bars_w { .bars_w {
height: calc(v-bind('layout.height')); height: calc(v-bind('layout.height'));
} }
.dw { .dw {
position: absolute; position: absolute;
top: 210px; top: 210px;

View File

@@ -3,15 +3,11 @@
<TableHeader area ref="header"> <TableHeader area ref="header">
<template v-slot:select> <template v-slot:select>
<!-- <el-form-item label="区域"> <!-- <el-form-item label="区域">
<Area ref="area" v-model="tableStore.table.params.deptIndex" /> <Area ref="area" v-model.trim="tableStore.table.params.deptIndex" />
</el-form-item> --> </el-form-item> -->
<el-form-item label="统计类型"> <el-form-item label="统计类型">
<el-select <el-select v-model.trim="tableStore.table.params.statisticalType" value-key="id"
v-model="tableStore.table.params.statisticalType" placeholder="请选择统计类型" size="large">
value-key="id"
placeholder="请选择统计类型"
size="large"
>
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item" /> <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -20,34 +16,24 @@
<div v-loading="tableStore.table.loading" class="pr10"> <div v-loading="tableStore.table.loading" class="pr10">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<MyEchartMap <MyEchartMap ref="EchartMap" :options="echartMapList" class="map" @eliminate="eliminate"
ref="EchartMap" @getRegionByRegion="getRegionByRegion" />
:options="echartMapList"
class="map"
@eliminate="eliminate"
@getRegionByRegion="getRegionByRegion"
/>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<my-echart class="tall" :options="echartList" /> <my-echart class="tall" :options="echartList" />
<div class="tall"> <div class="tall">
<vxe-table height="auto" auto-resize :data="distributionData" v-bind="defaultAttribute"> <vxe-table height="auto" auto-resize :data="distributionData" v-bind="defaultAttribute">
> >
<vxe-column <vxe-column field="qy" :title="titleA == '电压等级'
field="qy" ? '电压等级'
:title=" : titleA == '终端厂家'
titleA == '电压等级'
? '电压等级'
: titleA == '终端厂家'
? '终端厂家' ? '终端厂家'
: titleA == '干扰源类型' : titleA == '干扰源类型'
? '干扰源类型' ? '干扰源类型'
: titleA == '电网拓扑' : titleA == '电网拓扑'
? '区域' ? '区域'
: '' : ''
" " show-overflow-tooltip></vxe-column>
show-overflow-tooltip
></vxe-column>
<vxe-column field="jcd" title="监测点数(个数)"></vxe-column> <vxe-column field="jcd" title="监测点数(个数)"></vxe-column>
<vxe-column field="zc" title="通讯正常(个数)" sortable></vxe-column> <vxe-column field="zc" title="通讯正常(个数)" sortable></vxe-column>
<vxe-column field="zd" title="通讯中断(个数)" sortable></vxe-column> <vxe-column field="zd" title="通讯中断(个数)" sortable></vxe-column>
@@ -74,7 +60,7 @@ defineOptions({
const EchartMap = ref() const EchartMap = ref()
const dictData = useDictData() const dictData = useDictData()
const options = dictData.getBasicData('Statistical_Type', ['Report_Type']) const options = dictData.getBasicData('Statistical_Type', ['Report_Type'])
const echartMapList:any = ref({}) const echartMapList: any = ref({})
const echartList = ref({}) const echartList = ref({})
const titleA = ref('') const titleA = ref('')
const header = ref() const header = ref()
@@ -153,7 +139,7 @@ const map = (res: any) => {
series: [] series: []
} }
} }
let mapList:any = [[], [], []] let mapList: any = [[], [], []]
if (res.substationDetailVOList != null) { if (res.substationDetailVOList != null) {
res.substationDetailVOList.forEach((item: any) => { res.substationDetailVOList.forEach((item: any) => {
if (item.color == 'green') { if (item.color == 'green') {
@@ -163,7 +149,7 @@ const map = (res: any) => {
} }
}) })
} }
mapList.forEach((item:any, ind:number) => { mapList.forEach((item: any, ind: number) => {
echartMapList.value.options.series.push({ echartMapList.value.options.series.push({
type: 'scatter', type: 'scatter',
mapName: 'china', mapName: 'china',
@@ -238,12 +224,12 @@ const histogram = (res: any) => {
titleA.value == '电压等级' titleA.value == '电压等级'
? '电压等级' ? '电压等级'
: titleA.value == '终端厂家' : titleA.value == '终端厂家'
? '终端厂家' ? '终端厂家'
: titleA.value == '干扰源类型' : titleA.value == '干扰源类型'
? '干扰源类型' ? '干扰源类型'
: titleA.value == '电网拓扑' : titleA.value == '电网拓扑'
? header.value.areaRef.areaName ? header.value.areaRef.areaName
: '' // 给X轴加单位 : '' // 给X轴加单位
}, },
tooltip: { tooltip: {
formatter: function (params: any) { formatter: function (params: any) {
@@ -262,12 +248,12 @@ const histogram = (res: any) => {
titleA.value == '电压等级' titleA.value == '电压等级'
? '(电压\n等级)' ? '(电压\n等级)'
: titleA.value == '终端厂家' : titleA.value == '终端厂家'
? '(终端\n厂家)' ? '(终端\n厂家)'
: titleA.value == '干扰源类型' : titleA.value == '干扰源类型'
? '(干扰\n源类型)' ? '(干扰\n源类型)'
: titleA.value == '电网拓扑' : titleA.value == '电网拓扑'
? '(区域)' ? '(区域)'
: '', // 给X轴加单位 : '', // 给X轴加单位
data: distributionData.value.map((item: any) => item.qy) data: distributionData.value.map((item: any) => item.qy)
}, },
yAxis: { yAxis: {
@@ -310,6 +296,7 @@ const layout1 = mainHeight(93) as any
.map { .map {
height: v-bind('layout.height'); height: v-bind('layout.height');
} }
.tall { .tall {
height: calc(v-bind('layout1.height') / 2); height: calc(v-bind('layout1.height') / 2);
} }

View File

@@ -1,13 +1,15 @@
<template> <template>
<div class="default-main"> <div class="default-main">
<TableHeader date-picker area> <TableHeader date-picker area>
</TableHeader> </TableHeader>
<el-tabs v-model="activeName" type="border-card" v-loading="tableStore.table.loading"> <el-tabs v-model.trim="activeName" type="border-card" v-loading="tableStore.table.loading">
<el-tab-pane label="图形" name="1"> <el-tab-pane label="图形" name="1">
<Echart :list="list" ref="echarts" /> <Echart :list="list" ref="echarts" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="表格" name="2"><Tableabove ref="table" /></el-tab-pane> <el-tab-pane label="表格" name="2">
<Tableabove ref="table" />
</el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
@@ -61,6 +63,7 @@ const layout = mainHeight(123) as any
width: 100%; width: 100%;
height: 500px; height: 500px;
} }
::v-deep(.el-tabs__content) { ::v-deep(.el-tabs__content) {
height: v-bind('layout.height'); height: v-bind('layout.height');
overflow-y: auto; overflow-y: auto;

View File

@@ -3,7 +3,8 @@
<TableHeader date-picker area> <TableHeader date-picker area>
<template v-slot:select></template> <template v-slot:select></template>
</TableHeader> </TableHeader>
<el-tabs v-model="activeName" type="border-card" @tab-click="handleClick" v-loading="tableStore.table.loading"> <el-tabs v-model.trim="activeName" type="border-card" @tab-click="handleClick"
v-loading="tableStore.table.loading">
<el-tab-pane label="暂降原因及类型统计" name="1"> <el-tab-pane label="暂降原因及类型统计" name="1">
<TypeStatistics ref="Statistics" /> <TypeStatistics ref="Statistics" />
</el-tab-pane> </el-tab-pane>
@@ -72,6 +73,7 @@ const layout = mainHeight(123) as any
width: 100%; width: 100%;
height: 500px; height: 500px;
} }
::v-deep(.el-tabs__content) { ::v-deep(.el-tabs__content) {
height: v-bind('layout.height'); height: v-bind('layout.height');
overflow-y: auto; overflow-y: auto;

View File

@@ -3,12 +3,12 @@
<TableHeader date-picker> <TableHeader date-picker>
<template v-slot:select> <template v-slot:select>
<!-- <el-form-item label="用户名"> <!-- <el-form-item label="用户名">
<el-select v-model="value" class="m-2" placeholder="Select" size="large"> <el-select v-model.trim="value" class="m-2" placeholder="Select" size="large">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="操作类型"> <el-form-item label="操作类型">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.loginName" placeholder="Please input" /> <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.loginName" placeholder="Please input" />
</el-form-item> --> </el-form-item> -->
</template> </template>
<template v-slot:operation> <template v-slot:operation>

View File

@@ -4,7 +4,7 @@
<template v-slot:select> <template v-slot:select>
<el-form-item label="终端状态"> <el-form-item label="终端状态">
<el-select multiple clearable collapse-tags v-model="tableStore.table.params.runFlag" <el-select multiple clearable collapse-tags v-model.trim="tableStore.table.params.runFlag"
placeholder="请选择"> placeholder="请选择">
<el-option label="投运" value="0" /> <el-option label="投运" value="0" />
<el-option label="热备用" value="1" /> <el-option label="热备用" value="1" />
@@ -12,20 +12,20 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯状态"> <el-form-item label="通讯状态">
<el-select multiple clearable collapse-tags v-model="tableStore.table.params.comFlag" <el-select multiple clearable collapse-tags v-model.trim="tableStore.table.params.comFlag"
placeholder="请选择"> placeholder="请选择">
<el-option label="正常" value="1" /> <el-option label="正常" value="1" />
<el-option label="中断" value="0" /> <el-option label="中断" value="0" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="厂家"> <el-form-item label="厂家">
<el-select multiple clearable collapse-tags v-model="manufacturerForm" placeholder="请选择" <el-select multiple clearable collapse-tags v-model.trim="manufacturerForm" placeholder="请选择"
@change="onManufacturerChange"> @change="onManufacturerChange">
<el-option v-for="item in manufacturer" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in manufacturer" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="筛选数据"> <el-form-item label="筛选数据">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="根据变电站,终端编号,型号或网络参数查询" /> placeholder="根据变电站,终端编号,型号或网络参数查询" />
</el-form-item> </el-form-item>
</template> </template>

View File

@@ -3,27 +3,27 @@
<TableHeader date-picker area> <TableHeader date-picker area>
<template v-slot:select> <template v-slot:select>
<el-form-item label="干扰源类型"> <el-form-item label="干扰源类型">
<el-select multiple clearable collapse-tags v-model="interferenceSourceForm" placeholder="请选择" <el-select multiple clearable collapse-tags v-model.trim="interferenceSourceForm" placeholder="请选择"
@change="onLoadTypeChange"> @change="onLoadTypeChange">
<el-option v-for="item in interferenceSource" :key="item.id" :label="item.name" <el-option v-for="item in interferenceSource" :key="item.id" :label="item.name"
:value="item.id" /> :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="电压等级"> <el-form-item label="电压等级">
<el-select multiple clearable collapse-tags v-model="scaleForm" placeholder="请选择" <el-select multiple clearable collapse-tags v-model.trim="scaleForm" placeholder="请选择"
@change="onScaleChange"> @change="onScaleChange">
<el-option v-for="item in level" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in level" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="通讯状态"> <el-form-item label="通讯状态">
<el-select multiple clearable collapse-tags v-model="tableStore.table.params.comFlag" <el-select multiple clearable collapse-tags v-model.trim="tableStore.table.params.comFlag"
placeholder="请选择"> placeholder="请选择">
<el-option label="正常" value="1" /> <el-option label="正常" value="1" />
<el-option label="中断" value="0" /> <el-option label="中断" value="0" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="筛选数据"> <el-form-item label="筛选数据">
<el-input maxlength="32" show-word-limit v-model="tableStore.table.params.searchValue" <el-input maxlength="32" show-word-limit v-model.trim="tableStore.table.params.searchValue"
placeholder="根据变电站,终端编号,型号或网络参数查询" /> placeholder="根据变电站,终端编号,型号或网络参数查询" />
</el-form-item> </el-form-item>
</template> </template>

View File

@@ -1,9 +1,9 @@
<template> <template>
<div class="default-main"> <div class="default-main">
<TableHeader date-picker > <TableHeader date-picker>
<template v-slot:select> <template v-slot:select>
<el-form-item label="区域"> <el-form-item label="区域">
<Area v-model="tableStore.table.params.deptIndex" /> <Area v-model.trim="tableStore.table.params.deptIndex" />
</el-form-item> </el-form-item>
</template> </template>
</TableHeader> </TableHeader>
@@ -32,13 +32,11 @@
</span> </span>
<span style="color: #daa520"> <span style="color: #daa520">
<span class="smallBlock" style="background: #daa520"></span> <span class="smallBlock" style="background: #daa520"></span>
{{ '60 %≤在线率 < 90 %' }} {{ '60 %≤在线率 < 90 %' }} </span>
</span> <span style="color: #cc0000">
<span style="color: #cc0000"> <span class="smallBlock" style="background: #cc0000"></span>
<span class="smallBlock" style="background: #cc0000"></span> {{ '在线率 < 60 %' }} </span>
{{ '在线率 < 60 %' }} </span>
</span>
</span>
</div> </div>
<div class="statistics-main" v-loading="tableStore.table.loading"> <div class="statistics-main" v-loading="tableStore.table.loading">
<template v-if="!tableStore.table.loading"> <template v-if="!tableStore.table.loading">
@@ -46,12 +44,8 @@
<my-echart :options="areaStatistics" /> <my-echart :options="areaStatistics" />
</div> </div>
<div> <div>
<vxe-table <vxe-table height="auto" auto-resize :data="tableStore.table.data.area.areaInfo"
height="auto" v-bind="defaultAttribute">
auto-resize
:data="tableStore.table.data.area.areaInfo"
v-bind="defaultAttribute"
>
<vxe-column field="areaName" title="区域"></vxe-column> <vxe-column field="areaName" title="区域"></vxe-column>
<vxe-column field="numberOfTerminals" title="终端个数" width="80"></vxe-column> <vxe-column field="numberOfTerminals" title="终端个数" width="80"></vxe-column>
<vxe-column field="normal" title="投运" width="80"></vxe-column> <vxe-column field="normal" title="投运" width="80"></vxe-column>
@@ -68,12 +62,8 @@
<my-echart :options="factoryStatistics" /> <my-echart :options="factoryStatistics" />
</div> </div>
<div> <div>
<vxe-table <vxe-table height="auto" auto-resize :data="tableStore.table.data.factory.areaInfo"
height="auto" v-bind="defaultAttribute">
auto-resize
:data="tableStore.table.data.factory.areaInfo"
v-bind="defaultAttribute"
>
<vxe-column field="areaName" title="厂家"></vxe-column> <vxe-column field="areaName" title="厂家"></vxe-column>
<vxe-column field="numberOfTerminals" title="终端个数" width="80"></vxe-column> <vxe-column field="numberOfTerminals" title="终端个数" width="80"></vxe-column>
<vxe-column field="normal" title="投运" width="80"></vxe-column> <vxe-column field="normal" title="投运" width="80"></vxe-column>
@@ -125,7 +115,7 @@ const tableStore = new TableStore({
) )
}, },
tooltip: { tooltip: {
formatter: function (params:any) { formatter: function (params: any) {
var tips = '' var tips = ''
tips += params[0].name + '</br/>' tips += params[0].name + '</br/>'
for (var i = 0; i < params.length; i++) { for (var i = 0; i < params.length; i++) {
@@ -411,6 +401,6 @@ const layout = mainHeight(104) as any
grid-template-columns: 1fr 600px; grid-template-columns: 1fr 600px;
grid-template-rows: 1fr 1fr; grid-template-rows: 1fr 1fr;
grid-gap: 10px; grid-gap: 10px;
} }
</style> </style>

View File

@@ -11,7 +11,7 @@
</el-form-item> </el-form-item>
<el-form-item label="过滤筛选"> <el-form-item label="过滤筛选">
<el-input maxlength="32" show-word-limit style="width: 240px" <el-input maxlength="32" show-word-limit style="width: 240px"
v-model="tableStore.table.params.searchValue" clearable placeholder="请输入名称或编码筛选" /> v-model.trim="tableStore.table.params.searchValue" clearable placeholder="请输入名称或编码筛选" />
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>

View File

@@ -4,7 +4,7 @@
<template #select> <template #select>
<el-form-item label="过滤筛选"> <el-form-item label="过滤筛选">
<el-input maxlength="32" show-word-limit style="width: 240px" <el-input maxlength="32" show-word-limit style="width: 240px"
v-model="tableStore.table.params.searchValue" clearable placeholder="请输入名称或编码筛选" /> v-model.trim="tableStore.table.params.searchValue" clearable placeholder="请输入名称或编码筛选" />
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>

View File

@@ -1,24 +1,25 @@
<template> <template>
<el-dialog width="600px" v-model='dialogVisible' :title='title'> <el-dialog width="600px" v-model.trim='dialogVisible' :title='title'>
<el-scrollbar> <el-scrollbar>
<el-form :inline='false' :model='form' label-width='auto' class="form-one" :rules='rules' ref='formRef'> <el-form :inline='false' :model='form' label-width='auto' class="form-one" :rules='rules' ref='formRef'>
<el-form-item label='名称:' class='top' prop='name'> <el-form-item label='名称:' class='top' prop='name'>
<el-input maxlength="32" show-word-limit v-model='form.name' placeholder='请输入名称'></el-input> <el-input maxlength="32" show-word-limit v-model.trim='form.name' placeholder='请输入名称'></el-input>
</el-form-item> </el-form-item>
<el-form-item label='计算值:' class='top'> <el-form-item label='计算值:' class='top'>
<el-input maxlength="32" show-word-limit v-model='form.value' placeholder="请输入计算值"></el-input> <el-input maxlength="32" show-word-limit v-model.trim='form.value' placeholder="请输入计算值"></el-input>
</el-form-item> </el-form-item>
<el-form-item class='top' label='对应算法:' prop='algoDescribe' v-if='form.openDescribe == 1'> <el-form-item class='top' label='对应算法:' prop='algoDescribe' v-if='form.openDescribe == 1'>
<el-input maxlength="32" show-word-limit v-model='form.algoDescribe' placeholder='请输入数字'></el-input> <el-input maxlength="32" show-word-limit v-model.trim='form.algoDescribe'
placeholder='请输入数字'></el-input>
</el-form-item> </el-form-item>
<el-form-item class='top' label='编码:' prop='code'> <el-form-item class='top' label='编码:' prop='code'>
<el-input maxlength="32" show-word-limit v-model='form.code'></el-input> <el-input maxlength="32" show-word-limit v-model.trim='form.code'></el-input>
</el-form-item> </el-form-item>
<el-form-item label='排序:' prop='sort' class='top'> <el-form-item label='排序:' prop='sort' class='top'>
<el-input maxlength="32" show-word-limit-number v-model='form.sort' :min='0' /> <el-input maxlength="32" show-word-limit-number v-model.trim='form.sort' :min='0' />
</el-form-item> </el-form-item>
<el-form-item v-if='form.openLevel === 1' label='事件等级:'> <el-form-item v-if='form.openLevel === 1' label='事件等级:'>
<el-select v-model='form.level' placeholder='选择开启等级'> <el-select v-model.trim='form.level' placeholder='选择开启等级'>
<el-option v-for='item in EventOpenLevel' :key='item.value' :label='item.label' <el-option v-for='item in EventOpenLevel' :key='item.value' :label='item.label'
:value='item.value'> :value='item.value'>
</el-option> </el-option>

View File

@@ -1,32 +1,32 @@
<template> <template>
<el-dialog width='600px' v-model='dialogVisible' :title='title'> <el-dialog width='600px' v-model.trim='dialogVisible' :title='title'>
<el-scrollbar> <el-scrollbar>
<el-form :inline='false' :model='form' label-width='auto' class="form-one" :rules='rules' ref='formRef'> <el-form :inline='false' :model='form' label-width='auto' class="form-one" :rules='rules' ref='formRef'>
<el-form-item label='名称' prop='name'> <el-form-item label='名称' prop='name'>
<el-input maxlength="32" show-word-limit v-model='form.name' placeholder="请输入字典名称"></el-input> <el-input maxlength="32" show-word-limit v-model.trim='form.name' placeholder="请输入字典名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label='编码' class='top' prop='code'> <el-form-item label='编码' class='top' prop='code'>
<el-input maxlength="32" show-word-limit v-model='form.code' placeholder="请输入字典编码"></el-input> <el-input maxlength="32" show-word-limit v-model.trim='form.code' placeholder="请输入字典编码"></el-input>
</el-form-item> </el-form-item>
<el-form-item label='排序' class='top' prop='sort'> <el-form-item label='排序' class='top' prop='sort'>
<el-input maxlength="32" show-word-limit-number v-model="form.sort" :min="0" /> <el-input maxlength="32" show-word-limit-number v-model.trim="form.sort" :min="0" />
</el-form-item> </el-form-item>
<el-form-item label='开启等级' class='top'> <el-form-item label='开启等级' class='top'>
<el-select v-model='form.openLevel' placeholder='选择开启等级'> <el-select v-model.trim='form.openLevel' placeholder='选择开启等级'>
<el-option v-for='item in OpenLevel' :key='item.value' :label='item.label' :value='item.value'> <el-option v-for='item in OpenLevel' :key='item.value' :label='item.label' :value='item.value'>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='开启算法' class='top'> <el-form-item label='开启算法' class='top'>
<el-select v-model='form.openDescribe' placeholder='选择开启算法'> <el-select v-model.trim='form.openDescribe' placeholder='选择开启算法'>
<el-option v-for='item in OpenDescribe' :key='item.value' :label='item.label' <el-option v-for='item in OpenDescribe' :key='item.value' :label='item.label'
:value='item.value'> :value='item.value'>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='字典描述' class='top'> <el-form-item label='字典描述' class='top'>
<el-input maxlength="300" show-word-limit v-model='form.remark' placeholder='请输入字典描述' <el-input maxlength="300" show-word-limit v-model.trim='form.remark' placeholder='请输入字典描述'
type='textarea' :rows='2'></el-input> type='textarea' :rows='2'></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -1,18 +1,19 @@
<template> <template>
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title"> <el-dialog class="cn-operate-dialog" v-model.trim="dialogVisible" :title="title">
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" :rules="rules"> <el-form :inline="false" :model="form" label-width="120px" :rules="rules">
<el-form-item label="字典名称:" prop="name"> <el-form-item label="字典名称:" prop="name">
<el-input maxlength="32" show-word-limit v-model="form.name" placeholder="请输入字典名称"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入字典名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="序号:" prop="sort" class="top"> <el-form-item label="序号:" prop="sort" class="top">
<el-input maxlength="32" show-word-limit v-model="form.sort" placeholder="请输入序号"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="form.sort" placeholder="请输入序号"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="编码:" prop="code" class="top"> <el-form-item label="编码:" prop="code" class="top">
<el-input maxlength="32" show-word-limit v-model="form.code" placeholder="请输入字典编码"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="form.code" placeholder="请输入字典编码"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="描述:" class="top"> <el-form-item label="描述:" class="top">
<el-input maxlength="32" show-word-limit v-model="form.remark" placeholder="请输入字典描述"></el-input> <el-input maxlength="32" show-word-limit v-model.trim="form.remark"
placeholder="请输入字典描述"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>

View File

@@ -4,7 +4,7 @@
<template #select> <template #select>
<el-radio-group v-model="tableStore.table.params.versionType" @change="tableStore.index()"> <el-radio-group v-model.trim="tableStore.table.params.versionType" @change="tableStore.index()">
<el-radio-button label="web" value="WEB" /> <el-radio-button label="web" value="WEB" />
<el-radio-button label="app" value="APP" /> <el-radio-button label="app" value="APP" />
@@ -15,25 +15,25 @@
</template> </template>
</TableHeader> </TableHeader>
<Table ref="tableRef" /> <Table ref="tableRef" />
<el-dialog width="600px" v-model="dialogVisible" title="新增版本"> <el-dialog width="600px" v-model.trim="dialogVisible" title="新增版本">
<el-form :inline="false" :model="form" label-width="auto" class="form-one"> <el-form :inline="false" :model="form" label-width="auto" class="form-one">
<el-form-item label="版本号"> <el-form-item label="版本号">
<el-input maxlength="32" show-word-limit v-model="form.appVersion" placeholder="请输入版本号" /> <el-input maxlength="32" show-word-limit v-model.trim="form.appVersion" placeholder="请输入版本号" />
</el-form-item> </el-form-item>
<el-form-item label="整改内容"> <el-form-item label="整改内容">
<el-input maxlength="300" type="textarea" show-word-limit v-model="form.content" <el-input maxlength="300" type="textarea" show-word-limit v-model.trim="form.content"
placeholder="请输入整改内容" /> placeholder="请输入整改内容" />
</el-form-item> </el-form-item>
<el-form-item label="发布类型"> <el-form-item label="发布类型">
<el-select v-model="form.sev" placeholder="请选择发布类型"> <el-select v-model.trim="form.sev" placeholder="请选择发布类型">
<el-option label="优化" :value="0" /> <el-option label="优化" :value="0" />
<el-option label="bug调整" :value="1" /> <el-option label="bug调整" :value="1" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="版本类型"> <el-form-item label="版本类型">
<el-select v-model="form.versionType" placeholder="please select your zone"> <el-select v-model.trim="form.versionType" placeholder="please select your zone">
<el-option label="web" value="WEB" /> <el-option label="web" value="WEB" />
<el-option label="app" value="APP" /> <el-option label="app" value="APP" />
</el-select> </el-select>
@@ -76,16 +76,18 @@ const tableStore = new TableStore({
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1 return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
} }
}, },
{ title: '版本号', field: 'versionName', width: '150' },
{ title: '创建时间', field: 'createTime', width: '220' }, { title: '创建时间', field: 'createTime', width: '220' },
{ title: '整改内容', field: 'content' },
{ {
title: '发布类型', field: 'sev', formatter: (row,) => { title: '发布类型', field: 'sev', formatter: (row,) => {
return row.cellValue == 0 ? '优化' : 'bug调整' return row.cellValue == 0 ? '优化' : 'bug调整'
}, },
width: '150' width: '150'
}, },
{ title: '整改内容', field: 'content' },
{ title: '版本号', field: 'versionName', width: '150' },
], ],
@@ -107,14 +109,14 @@ const submit = () => {
ElMessage.success('新增成功') ElMessage.success('新增成功')
tableStore.index() tableStore.index()
dialogVisible.value = false dialogVisible.value = false
router.go(0) router.go(0)
}) })
} }
const addMenu = () => { const addMenu = () => {
dialogVisible.value = true dialogVisible.value = true
form.value.appVersion =tableStore.table.data[0].versionName|| '' form.value.appVersion = tableStore.table.data[0].versionName || ''
form.value.content = '' form.value.content = ''
form.value.sev = tableStore.table.data[0].sev ||0 form.value.sev = tableStore.table.data[0].sev || 0
form.value.versionType = tableStore.table.data[0].versionType || 'WEB' form.value.versionType = tableStore.table.data[0].versionType || 'WEB'
} }

View File

@@ -1,68 +1,36 @@
<template> <template>
<el-tabs v-model="activeName" class="demo-tabs"> <el-tabs v-model.trim="activeName" class="demo-tabs">
<el-tab-pane label="数据单位" name="0"> <el-tab-pane label="数据单位" name="0">
绑定数据单位: 绑定数据单位:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderUnit" placeholder="请选择数据单位" v-model.trim="value"
:popper-append-to-body="false" :options="options1" filterable @change="handleChange" :props="{
ref="cascaderUnit"
placeholder="请选择数据单位"
v-model="value"
:options="options1"
filterable
@change="handleChange"
:props="{
value: 'code', value: 'code',
label: 'name' label: 'name'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="数据指标" name="1"> <el-tab-pane label="数据指标" name="1">
绑定数据指标: 绑定数据指标:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderUnit" placeholder="请选择数据指标" v-model.trim="value"
:popper-append-to-body="false" :options="options2" filterable @change="handleChange" :props="{
ref="cascaderUnit"
placeholder="请选择数据指标"
v-model="value"
:options="options2"
filterable
@change="handleChange"
:props="{
value: 'name', value: 'name',
label: 'showName' label: 'showName'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="合格率判定" name="2"> <el-tab-pane label="合格率判定" name="2">
绑定合格率判定: 绑定合格率判定:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderhgl" placeholder="请选择数据合格率" v-model.trim="value"
:popper-append-to-body="false" :options="options3" filterable @change="handleChange" :props="{
ref="cascaderhgl"
placeholder="请选择数据合格率"
v-model="value"
:options="options3"
filterable
@change="handleChange"
:props="{
value: 'name', value: 'name',
label: 'showName' label: 'showName'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="监测点台账指标" name="3"> <el-tab-pane label="监测点台账指标" name="3">
绑定数据指标: 绑定数据指标:
<el-cascader <el-cascader :popper-append-to-body="false" ref="cascaderjcd" placeholder="请选择监测点台账" v-model.trim="value"
:popper-append-to-body="false" :options="options4" filterable @change="handleChange" :props="{
ref="cascaderjcd"
placeholder="请选择监测点台账"
v-model="value"
:options="options4"
filterable
@change="handleChange"
:props="{
value: 'name', value: 'name',
label: 'showName' label: 'showName'
}" }"></el-cascader>
></el-cascader>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</template> </template>
@@ -99,7 +67,7 @@ terminalChooseTree().then(res => {
options4.value = res.data options4.value = res.data
}) })
onMounted(() => {}) onMounted(() => { })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-tab-pane) { :deep(.el-tab-pane) {

View File

@@ -1,24 +1,13 @@
<template> <template>
<el-dialog draggable v-model="dialogVisible" title="模板绑定" width="500px" :before-close="handleClose"> <el-dialog draggable v-model.trim="dialogVisible" title="模板绑定" width="500px" :before-close="handleClose">
<el-tree <el-tree default-expand-all show-checkbox node-key="id" :data="dataTree" :expand-on-click-node="false"
default-expand-all ref="tree" style="height: 440px; overflow-y: auto">
show-checkbox
node-key="id"
:data="dataTree"
:expand-on-click-node="false"
ref="tree"
style="height: 440px; overflow-y: auto"
>
<template #default="{ node, data }"> <template #default="{ node, data }">
<span class="custom-tree-node"> <span class="custom-tree-node">
<span>{{ data.name }}</span> <span>{{ data.name }}</span>
<span> <span>
<el-switch <el-switch v-model.trim="data.activation" active-value="1" inactive-value="0"
v-model="data.activation" :active-text="data.activation == 1 ? '激活 ' : '未激活'" />
active-value="1"
inactive-value="0"
:active-text="data.activation == 1 ? '激活 ' : '未激活'"
/>
</span> </span>
</span> </span>
</template> </template>

View File

@@ -1,23 +1,23 @@
<template> <template>
<el-dialog draggable :title="title" v-model="formVisible" width="30%" :before-close="closeDialog"> <el-dialog draggable :title="title" v-model.trim="formVisible" width="30%" :before-close="closeDialog">
<el-form :model="formdata" label-width="100px" :rules="rules" ref="ruleForm"> <el-form :model="formdata" label-width="100px" :rules="rules" ref="ruleForm">
<el-form-item label="模板名称:" prop="name"> <el-form-item label="模板名称:" prop="name">
<el-input maxlength="32" show-word-limit placeholder="模板名称" v-model="formdata.name" <el-input maxlength="32" show-word-limit placeholder="模板名称" v-model.trim="formdata.name"
style="width: 100%"></el-input> style="width: 100%"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="部门:" prop="deptId"> <el-form-item label="部门:" prop="deptId">
<Area v-model="formdata.deptId" style="width: 100%" collapse-tags <Area v-model.trim="formdata.deptId" style="width: 100%" collapse-tags
:props="{ multiple: true, label: 'name', value: 'id', emitPath: false }" /> :props="{ multiple: true, label: 'name', value: 'id', emitPath: false }" />
</el-form-item> </el-form-item>
<el-form-item label="模板类型:" prop="reportType"> <el-form-item label="模板类型:" prop="reportType">
<el-select style="width: 100%" v-model="formdata.reportType" placeholder="请选择模板类型"> <el-select style="width: 100%" v-model.trim="formdata.reportType" placeholder="请选择模板类型">
<el-option v-for="item in classificationData" :key="item.id" :label="item.label" <el-option v-for="item in classificationData" :key="item.id" :label="item.label"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报表类型:" prop="reportForm"> <el-form-item label="报表类型:" prop="reportForm">
<el-select style="width: 100%" v-model="formdata.reportForm" placeholder="请选择报表类型"> <el-select style="width: 100%" v-model.trim="formdata.reportForm" placeholder="请选择报表类型">
<el-option v-for="item in reportFormList" :key="item.value" :label="item.label" <el-option v-for="item in reportFormList" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>

View File

@@ -1,13 +1,13 @@
<template> <template>
<el-dialog draggable v-model="dialogVisible" :title="title" :before-close="Cancel"> <el-dialog draggable v-model.trim="dialogVisible" :title="title" :before-close="Cancel">
<el-form :inline="false" :model="configStore" label-width="auto"> <el-form :inline="false" :model="configStore" label-width="auto">
<el-divider border-style="dashed">全局</el-divider> <el-divider border-style="dashed">全局</el-divider>
<div class="layout-config-global form-two"> <div class="layout-config-global form-two">
<el-form-item label="组件主名称"> <el-form-item label="组件主名称">
<el-input v-model="configStore.name" placeholder="请输入主题名称" /> <el-input v-model.trim="configStore.name" placeholder="请输入主题名称" />
</el-form-item> </el-form-item>
<el-form-item label="后台页面切换动画"> <el-form-item label="后台页面切换动画">
<el-select v-model="configStore.mainAnimation"> <el-select v-model.trim="configStore.mainAnimation">
<el-option label="slide-right" value="slide-right"></el-option> <el-option label="slide-right" value="slide-right"></el-option>
<el-option label="slide-left" value="slide-left"></el-option> <el-option label="slide-left" value="slide-left"></el-option>
<el-option label="el-fade-in-linear" value="el-fade-in-linear"></el-option> <el-option label="el-fade-in-linear" value="el-fade-in-linear"></el-option>
@@ -18,68 +18,54 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="组件主题色"> <el-form-item label="组件主题色">
<el-color-picker v-model="configStore.elementUiPrimary[0]" /> <el-color-picker v-model.trim="configStore.elementUiPrimary[0]" />
</el-form-item> </el-form-item>
<el-form-item label="表格标题栏背景颜色"> <el-form-item label="表格标题栏背景颜色">
<el-color-picker v-model="configStore.tableHeaderBackground[0]" /> <el-color-picker v-model.trim="configStore.tableHeaderBackground[0]" />
</el-form-item> </el-form-item>
<el-form-item label="表格标题栏文字颜色"> <el-form-item label="表格标题栏文字颜色">
<el-color-picker v-model="configStore.tableHeaderColor[0]" /> <el-color-picker v-model.trim="configStore.tableHeaderColor[0]" />
</el-form-item> </el-form-item>
<el-form-item label="表格激活栏颜色"> <el-form-item label="表格激活栏颜色">
<el-color-picker v-model="configStore.tableCurrent[0]" /> <el-color-picker v-model.trim="configStore.tableCurrent[0]" />
</el-form-item> </el-form-item>
<el-form-item label="组件主描述"> <el-form-item label="组件主描述">
<el-input <el-input v-model.trim="configStore.remark" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea"
v-model="configStore.remark" placeholder="请输入描述" />
:autosize="{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入描述"
/>
</el-form-item> </el-form-item>
</div> </div>
<el-divider border-style="dashed">侧边栏</el-divider> <el-divider border-style="dashed">侧边栏</el-divider>
<div class="layout-config-aside form-two"> <div class="layout-config-aside form-two">
<el-form-item label="侧边菜单栏背景色"> <el-form-item label="侧边菜单栏背景色">
<el-color-picker v-model="configStore.menuBackground[0]" /> <el-color-picker v-model.trim="configStore.menuBackground[0]" />
</el-form-item> </el-form-item>
<el-form-item label="侧边菜单文字颜色"> <el-form-item label="侧边菜单文字颜色">
<el-color-picker v-model="configStore.menuColor[0]" /> <el-color-picker v-model.trim="configStore.menuColor[0]" />
</el-form-item> </el-form-item>
<el-form-item label="侧边菜单激活项背景色"> <el-form-item label="侧边菜单激活项背景色">
<el-color-picker v-model="configStore.menuActiveBackground[0]" /> <el-color-picker v-model.trim="configStore.menuActiveBackground[0]" />
</el-form-item> </el-form-item>
<el-form-item label="侧边菜单激活项文字色"> <el-form-item label="侧边菜单激活项文字色">
<el-color-picker v-model="configStore.menuActiveColor[0]" /> <el-color-picker v-model.trim="configStore.menuActiveColor[0]" />
</el-form-item> </el-form-item>
<el-form-item label="侧边菜单顶栏背景色"> <el-form-item label="侧边菜单顶栏背景色">
<el-color-picker v-model="configStore.menuTopBarBackground[0]" /> <el-color-picker v-model.trim="configStore.menuTopBarBackground[0]" />
</el-form-item> </el-form-item>
</div> </div>
<el-divider border-style="dashed">顶栏</el-divider> <el-divider border-style="dashed">顶栏</el-divider>
<div class="layout-config-aside form-two"> <div class="layout-config-aside form-two">
<el-form-item label="顶栏背景色"> <el-form-item label="顶栏背景色">
<el-color-picker v-model="configStore.headerBarBackground[0]" /> <el-color-picker v-model.trim="configStore.headerBarBackground[0]" />
</el-form-item> </el-form-item>
<el-form-item label="顶栏文字色"> <el-form-item label="顶栏文字色">
<el-color-picker v-model="configStore.headerBarTabColor[0]" /> <el-color-picker v-model.trim="configStore.headerBarTabColor[0]" />
</el-form-item> </el-form-item>
<el-form-item label="顶栏logo"> <el-form-item label="顶栏logo">
<el-image <el-image style="height: 50px" :src="logoFile.url" :preview-src-list="[logoFile.url]"
style="height: 50px" v-if="logoFile.url" class="mr10"></el-image>
:src="logoFile.url" <el-upload action="" :show-file-list="false" :auto-upload="false" accept=".png,.jpg"
:preview-src-list="[logoFile.url]" :on-change="chooseImage">
v-if="logoFile.url"
class="mr10"
></el-image>
<el-upload
action=""
:show-file-list="false"
:auto-upload="false"
accept=".png,.jpg"
:on-change="chooseImage"
>
<el-button type="primary">上传图片</el-button> <el-button type="primary">上传图片</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@@ -203,7 +189,7 @@ const onSubmit = () => {
addTheme(form).then(res => { addTheme(form).then(res => {
ElMessage.success('新增成功') ElMessage.success('新增成功')
Cancel() Cancel()
}) })
} }
if (title.value == '修改主题') { if (title.value == '修改主题') {
@@ -215,7 +201,7 @@ const onSubmit = () => {
} }
// 取消 // 取消
const Cancel = () => { const Cancel = () => {
// dialogVisible.value = false // dialogVisible.value = false
emit('Cancels') emit('Cancels')
setTimeout(() => { setTimeout(() => {

View File

@@ -12,7 +12,7 @@
</div> </div>
<el-form :rules="rules" ref="formRef" size="large" class="login-form form-one" :model="form"> <el-form :rules="rules" ref="formRef" size="large" class="login-form form-one" :model="form">
<el-form-item prop="username"> <el-form-item prop="username">
<el-input ref="usernameRef" v-model="form.username" type="text" clearable placeholder="用户名" <el-input ref="usernameRef" v-model.trim="form.username" type="text" clearable placeholder="用户名"
autocomplete="off"> autocomplete="off">
<template #prefix> <template #prefix>
<span class="iconfont icon-yonghu" style="color: var(--el-color-primary)"></span> <span class="iconfont icon-yonghu" style="color: var(--el-color-primary)"></span>
@@ -21,7 +21,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
<el-input ref="passwordRef" v-model="form.password" type="password" clearable placeholder="密码" <el-input ref="passwordRef" v-model.trim="form.password" type="password" clearable placeholder="密码"
autocomplete="off"> autocomplete="off">
<template #prefix> <template #prefix>
<!-- <Icon name="local-password" style="color: var(--el-color-primary); font-size: 16px" /> --> <!-- <Icon name="local-password" style="color: var(--el-color-primary); font-size: 16px" /> -->

View File

@@ -14,7 +14,7 @@
<el-form @keyup.enter='onSubmit()' ref='formRef' size='large' :model='form'> <el-form @keyup.enter='onSubmit()' ref='formRef' size='large' :model='form'>
<el-form-item prop='username'> <el-form-item prop='username'>
<el-input maxlength="32" show-word-limit ref='usernameRef' type='text' clearable <el-input maxlength="32" show-word-limit ref='usernameRef' type='text' clearable
v-model='form.username' placeholder='请输入账号'> v-model.trim='form.username' placeholder='请输入账号'>
<template #prefix> <template #prefix>
<Icon name='fa fa-user' class='form-item-icon' size='16' <Icon name='fa fa-user' class='form-item-icon' size='16'
color='var(--el-input-icon-color)' /> color='var(--el-input-icon-color)' />
@@ -22,7 +22,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop='password'> <el-form-item prop='password'>
<el-input maxlength="32" show-word-limit ref='passwordRef' v-model='form.password' <el-input maxlength="32" show-word-limit ref='passwordRef' v-model.trim='form.password'
type='password' placeholder='请输入密码' show-password> type='password' placeholder='请输入密码' show-password>
<template #prefix> <template #prefix>
<Icon name='fa fa-unlock-alt' class='form-item-icon' size='16' <Icon name='fa fa-unlock-alt' class='form-item-icon' size='16'

View File

@@ -1,14 +1,12 @@
<template> <template>
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title"> <el-dialog class="cn-operate-dialog" v-model.trim="dialogVisible" :title="title">
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef"> <el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
<el-form-item label="新密码:" prop="newPwd" style="margin-top: 20px"> <el-form-item label="新密码:" prop="newPwd" style="margin-top: 20px">
<el-input v-model="form.newPwd" type="password" placeholder="请输入新密码" <el-input v-model.trim="form.newPwd" type="password" placeholder="请输入新密码" show-password />
show-password />
</el-form-item> </el-form-item>
<el-form-item label="确认密码:" prop="confirmPwd" style="margin-top: 20px"> <el-form-item label="确认密码:" prop="confirmPwd" style="margin-top: 20px">
<el-input v-model="form.confirmPwd" type="password" <el-input v-model.trim="form.confirmPwd" type="password" placeholder="请输入确认密码" show-password />
placeholder="请输入确认密码" show-password />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>