3列弹出框

This commit is contained in:
sjl
2024-12-05 16:23:20 +08:00
parent 0494822ff4
commit 11c32ed360
10 changed files with 138 additions and 459 deletions

View File

@@ -1,12 +1,8 @@
<template>
<el-dialog v-model='dialogVisible' :title='dialogTitle' v-bind="dialogBig" @close="close">
<el-form :model='formContent' ref='dialogFormRef' :rules='rules'>
<el-form :model='formContent' ref='dialogFormRef' :rules='rules' label-width="auto" class="form-three">
<el-divider>基础数据</el-divider>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='数据模型' :label-width='140' prop='dataType'>
<el-form-item label='数据模型' prop='dataType'>
<el-select v-model="formContent.dataType" clearable placeholder="请选择数据模型">
<el-option
v-for="item in dictStore.getDictData('Cs_Data_Type')"
@@ -16,14 +12,10 @@
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='指标名称' :label-width='140' prop='name'>
<el-form-item label='指标名称' prop='name'>
<el-input v-model='formContent.name' placeholder='请输入指标名称' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='相别' :label-width='140' prop='phase'>
<el-form-item label='相别' prop='phase'>
<el-select v-model="formContent.phase" clearable placeholder="请选择相别">
<el-option
v-for="item in dictStore.getDictData('phase')"
@@ -33,33 +25,19 @@
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='显示名称' :label-width='140' prop='showName'>
<el-form-item label='显示名称' prop='showName'>
<el-input v-model='formContent.showName' placeholder='请输入显示名称' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='别名' :label-width='140' prop='otherName'>
<el-form-item label='别名' prop='otherName'>
<el-input v-model='formContent.otherName' placeholder='请输入别名' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='单位' :label-width='140' prop='unit'>
<el-form-item label='单位' prop='unit'>
<el-select v-model="formContent.unit" clearable placeholder="请选择单位">
<el-option v-for="item in dictStore.getDictData('Unit_Type')" :key="item.id" :label="item.name"
:value="item.code"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='指标数据类型' :label-width='140' prop='type'>
<el-form-item label='指标数据类型' prop='type'>
<el-select v-model="formContent.type" clearable placeholder="请选择指标数据类型">
<el-option
:label="'Number'"
@@ -75,22 +53,18 @@
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='次数' :label-width='140'>
<el-row :gutter="20">
<el-col :span="11">
<el-input v-model="formContent.harmStart" placeholder="起始次数" autocomplete="off"/>
</el-col>
<el-col :span="2">-</el-col>
<el-col :span="11">
<el-input v-model="formContent.harmEnd" placeholder="结束次数" autocomplete="off"/>
</el-col>
</el-row>
<el-form-item label='次数'>
<el-row :gutter="10">
<el-col :span="11">
<el-input v-model="formContent.harmStart" placeholder="起始次数" autocomplete="off" width="100px" />
</el-col>
<el-col :span="2" style="text-align: center;"></el-col>
<el-col :span="11">
<el-input v-model="formContent.harmEnd" placeholder="结束次数" autocomplete="off" width="100px"/>
</el-col>
</el-row>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='数据统计类型' :label-width='140' prop='statMethod'>
<el-form-item label='数据统计类型' prop='statMethod'>
<el-select v-model="selectedStatMethods" multiple placeholder="请选择数据统计类型">
<el-option
v-for="item in dictStore.getDictData('Stat_Method')"
@@ -100,17 +74,11 @@
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='系统类别' :label-width='140' prop='systemType'>
<el-form-item label='系统类别' prop='systemType'>
<el-input v-model='formContent.systemType' placeholder='请输入系统类别' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='报表数据来源' :label-width='140' prop='resourcesId'>
<el-form-item label='报表数据来源' prop='resourcesId'>
<el-select v-model="formContent.resourcesId" clearable placeholder="请选择报表数据来源">
<el-option
v-for="item in dictStore.getDictData('Data_Day')"
@@ -120,9 +88,7 @@
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='数据表表名' :label-width='140' prop='classId'>
<el-form-item label='数据表表名' prop='classId'>
<el-select v-model="formContent.classId" clearable placeholder="请选择数据表表名">
<el-option
v-for="item in dictStore.getDictData('Data')"
@@ -132,22 +98,13 @@
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='限值字段名称' :label-width='140' prop='limitName'>
<el-form-item label='限值字段名称' prop='limitName'>
<el-input v-model='formContent.limitName' placeholder='请输入限值字段名称' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='限值表名' :label-width='140' prop='limitTable'>
<el-form-item label='限值表名' prop='limitTable'>
<el-input v-model='formContent.limitTable' placeholder='请输入限值表名' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='超标判断方式' :label-width='140' prop='formula'>
<el-form-item label='超标判断方式' prop='formula'>
<el-select v-model="formContent.formula" clearable placeholder="请选择超标判断方式">
<el-option
v-for="item in dictStore.getDictData('Limit_Value_Judgment')"
@@ -157,102 +114,58 @@
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label='排序' :label-width='140'>
<el-input-number v-model='formContent.sort' :min='1' :max='999'/>
<el-form-item label='排序' >
<el-input-number v-model='formContent.sort' :min='1' :max='999' style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-divider>拓展数据</el-divider>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='参数缺省值' :label-width='140' prop='defaultValue'>
<el-form-item label='参数缺省值' prop='defaultValue'>
<el-input v-model='formContent.defaultValue' placeholder='请输入参数缺省值' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='事件类别' :label-width='140' prop='eventType'>
<el-form-item label='事件类别' prop='eventType'>
<el-input v-model='formContent.eventType' placeholder='请输入事件类别' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='设置最大值' :label-width='140' prop='maxNum'>
<el-form-item label='设置最大值' prop='maxNum'>
<el-input-number v-model='formContent.maxNum' controls-position="right" style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='设置最小值' :label-width='140' prop='minNum'>
<el-form-item label='设置最小值' prop='minNum'>
<el-input-number v-model='formContent.minNum' controls-position="right" style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='枚举序列' :label-width='140' prop='setValue'>
<el-form-item label='枚举序列' prop='setValue'>
<el-input v-model='formContent.setValue' placeholder='请输入枚举序列' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='字符串长度上限' :label-width='140' prop='strlen'>
<el-form-item label='字符串长度上限' prop='strlen'>
<el-input-number v-model='formContent.strlen' controls-position="right" style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label='上送规则' :label-width='140' prop='tranRule'>
<el-form-item label='上送规则' prop='tranRule'>
<el-input v-model='formContent.tranRule' placeholder='请输入上送规则' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='当前值' :label-width='140' prop='curSts'>
<el-form-item label='当前值' prop='curSts'>
<el-input v-model='formContent.curSts' placeholder='请输入当前值' autocomplete='off'/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label='二次值转一次值公式' :label-width='140' prop='primaryFormula'>
<el-form-item label='二次值转一次值公式' prop='primaryFormula'>
<el-input v-model='formContent.primaryFormula' placeholder='请输入公式' autocomplete='off'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="是否可远程控制" :label-width="140">
<el-form-item label="是否可远程控制" >
<el-radio-group v-model="formContent.ctlSts">
<el-radio label="是" :value="1"></el-radio>
<el-radio label="否" :value="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否存储" :label-width="140">
<el-form-item label="是否存储" >
<el-radio-group v-model="formContent.storeFlag">
<el-radio label="是" :value="1"></el-radio>
<el-radio label="否" :value="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="数据是否上送" :label-width="140">
<el-form-item label="数据是否上送" >
<el-radio-group v-model="formContent.tranFlag">
<el-radio label="是" :value="1"></el-radio>
<el-radio label="否" :value="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class='dialog-footer'>
<el-button @click='close()'>取消</el-button>
@@ -270,7 +183,6 @@ import {ElMessage, type FormItemRule} from 'element-plus'
import {addDictPq, updateDictPq} from '@/api/system/dictionary/dictPq'
import {computed, reactive, type Ref, ref} from 'vue';
import {useDictStore} from '@/stores/modules/dict'
import selectCheckBox from "@/views/system/dictionary/dictPq/components/selectCheckBox.vue";
const dictStore = useDictStore()
const selectedStatMethods = ref<string[]>([])
// 定义弹出组件元信息

View File

@@ -1,121 +0,0 @@
<template>
<el-select
v-model="menusTitle"
multiple
collapse-tags
collapse-tags-tooltip
:placeholder="props.placeholder"
clearable
@clear="clearData"
:popper-append-to-body="false"
>
<!-- @change="changeSelectMenu" -->
<el-checkbox v-model="checkedAll" @change="selectAll">全选</el-checkbox>
<el-option
v-for="(item, index) in menuList"
:key="item[props.id]"
:value="item[props.id]"
>
<el-checkbox
:label="item[props.label]"
size="large"
@change="changeCheckBox(item, index)"
:checked="isChecked(item, index)"
v-model="checkBoxObj[index]"
/>
</el-option>
</el-select>
</template>
<script lang="ts" setup>
import { ref, reactive, defineProps, defineEmits } from "vue";
const props = defineProps({
list: { type: Array, required: true },
id: { type: String, required: true },
label: { type: String, required: true },
modelValue: { type: Array },
placeholder: { type: String, default: "选择" },
});
const emit = defineEmits(["update:modelValue"]);
const value = ref("");
const checkedAll = ref("false");
const menus = ref([]);
const menuList = props.list;
const checkBoxObj = ref({});
menuList.forEach((res, index) => {
checkBoxObj.value[index] = false;
});
const menusTitle = ref([]);
const changeSelectMenu = (val) => {};
const selectAll = (value) => {
menus.value = [];
menusTitle.value = [];
if (value) {
menuList.forEach((item, index) => {
menus.value.push(item[props.id]);
menusTitle.value.push(item[props.label]);
checkBoxObj.value[index] = true;
});
} else {
menus.value = [];
menusTitle.value = [];
menuList.forEach((item, index) => {
checkBoxObj.value[index] = false;
});
}
emit("update:modelValue", menus.value);
};
const isChecked = (item) => {
return menus.value.indexOf(item[props.id]) > -1;
};
const changeCheckBox = (item, index) => {
let i = menus.value.indexOf(item[props.id]);
if (i == -1) {
menus.value.push(item[props.id]);
menusTitle.value.push(item[props.label]);
} else {
menus.value.splice(i, 1);
menusTitle.value.splice(i, 1);
}
if (menus.value.length == menuList.length) {
checkedAll.value = true;
} else {
checkedAll.value = false;
}
emit("update:modelValue", menus.value);
};
const clearData = () => {
menus.value = [];
menusTitle.value = [];
emit("update:modelValue", menus.value);
checkedAll.value = false;
menuList.forEach((item, index) => {
checkBoxObj.value[index] = false;
});
};
</script>
<style lang="scss" scoped>
.el-select-dropdown {
.el-checkbox {
display: flex;
align-items: center;
padding-left: 20px;
width: 100%;
box-sizing: border-box;
}
.el-select-dropdown__item {
// background-color: red !important;
padding: 0;
display: flex;
align-items: center;
}
}
.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected::after{
display: none;
}
</style>