浏览代码

新增数据建模设置聚合权限

yukai 2 年之前
父节点
当前提交
67eab8eca7
共有 3 个文件被更改,包括 270 次插入262 次删除
  1. 0 1
      src/api/datahub/index.ts
  2. 30 41
      src/views/system/datahub/modeling/component/juhe.vue
  3. 240 220
      src/views/system/datahub/modeling/index.vue

+ 0 - 1
src/api/datahub/index.ts

@@ -51,7 +51,6 @@ export default {
       aggregate_from: (id: number) => get('/source/template/aggregate_from', { id }),
       relation: (data: object) => post('/source/template/relation', data),
       aggregate: (data: object) => post('/source/template/aggregate', data),
-      
    } ,
 
    tnode:{

+ 30 - 41
src/views/system/datahub/modeling/component/juhe.vue

@@ -2,25 +2,22 @@
 	<div class="system-edit-dic-container">
 		<el-dialog title="设置聚合" v-model="isShowDialog" width="769px">
 			<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
-		
 				<el-form-item label="分组节点" prop="GroupNodeKey">
-						<el-select v-model="ruleForm.GroupNodeKey" filterable placeholder="请选择分组节点"  class="w100">
-							<el-option v-for="item in sourceData" :key="item.id" :label="item.name" :value="item.key">
-								<span style="float: left">{{ item.name }}</span>
-								<span style="float: right; font-size: 13px">{{ item.key }}</span>
-							</el-option>
-						</el-select>
-					</el-form-item>
-
+					<el-select v-model="ruleForm.GroupNodeKey" filterable placeholder="请选择分组节点" class="w100">
+						<el-option v-for="item in sourceData" :key="item.id" :label="item.name" :value="item.key">
+							<span style="float: left">{{ item.name }}</span>
+							<span style="float: right; font-size: 13px">{{ item.key }}</span>
+						</el-option>
+					</el-select>
+				</el-form-item>
 
 				<el-form-item label="时间窗口节点" prop="TimeNodeKey">
-			
-					<el-select v-model="ruleForm.TimeNodeKey" filterable placeholder="请选择时间窗口节点"  class="w100">
-							<el-option v-for="item in sourceData" :key="item.id" :label="item.name" :value="item.key">
-								<span style="float: left">{{ item.name }}</span>
-								<span style="float: right; font-size: 13px">{{ item.key }}</span>
-							</el-option>
-						</el-select>
+					<el-select v-model="ruleForm.TimeNodeKey" filterable placeholder="请选择时间窗口节点" class="w100">
+						<el-option v-for="item in sourceData" :key="item.id" :label="item.name" :value="item.key">
+							<span style="float: left">{{ item.name }}</span>
+							<span style="float: right; font-size: 13px">{{ item.key }}</span>
+						</el-option>
+					</el-select>
 				</el-form-item>
 
 				<el-form-item label="时间值" prop="Duration">
@@ -29,7 +26,6 @@
 						<el-option v-for="item in unitData" :key="item.value" :label="item.label" :value="item.value" />
 					</el-select>
 				</el-form-item>
-				
 			</el-form>
 			<template #footer>
 				<span class="dialog-footer">
@@ -38,7 +34,6 @@
 				</span>
 			</template>
 		</el-dialog>
-
 	</div>
 </template>
 
@@ -58,7 +53,7 @@ interface DicState {
 	isShowDialog: boolean;
 	ruleForm: RuleFormState;
 	rules: {};
-	unitData:[];
+	unitData: [];
 }
 
 export default defineComponent({
@@ -69,7 +64,7 @@ export default defineComponent({
 
 		const state = reactive<DicState>({
 			isShowDialog: false,
-			sourceData:[],
+			sourceData: [],
 			unitData: [
 				{
 					label: '秒',
@@ -106,19 +101,17 @@ export default defineComponent({
 		// 打开弹窗
 		const openDialog = (row: RuleFormState | null) => {
 			resetForm();
-			
-			
+
 			if (row) {
-				state.ruleForm.id=row.id;
+				state.ruleForm.id = row.id;
 				api.template.aggregate_from(row.id).then((res: any) => {
-					api.node.getList({sourceId:res.id}).then((res: any) => {
-						state.sourceData=res.list
-						state.ruleForm.GroupNodeKey=row.groupNodeKey;
-						state.ruleForm.TimeNodeKey=row.timeNodeKey;
-						state.ruleForm.Duration=row.duration;
-						state.ruleForm.TimeUnit=row.timeUnit;
-					})
-								
+					api.node.getList({ sourceId: res.id }).then((res: any) => {
+						state.sourceData = res.list;
+						state.ruleForm.GroupNodeKey = row.groupNodeKey;
+						state.ruleForm.TimeNodeKey = row.timeNodeKey;
+						state.ruleForm.Duration = row.duration;
+						state.ruleForm.TimeUnit = row.timeUnit;
+					});
 				});
 			}
 			state.isShowDialog = true;
@@ -133,9 +126,6 @@ export default defineComponent({
 			};
 		};
 
-
-
-
 		// 关闭弹窗
 		const closeDialog = () => {
 			state.isShowDialog = false;
@@ -150,16 +140,15 @@ export default defineComponent({
 			if (!formWrap) return;
 			formWrap.validate((valid: boolean) => {
 				if (valid) {
-
-						api.template.aggregate(state.ruleForm).then(() => {
-							ElMessage.success('设置成功');
-							closeDialog(); // 关闭弹窗
-							emit('typeList');
-						});
+					api.template.aggregate(state.ruleForm).then(() => {
+						ElMessage.success('设置成功');
+						closeDialog(); // 关闭弹窗
+						emit('typeList');
+					});
 				}
 			});
 		};
-	
+
 		return {
 			openDialog,
 			closeDialog,

+ 240 - 220
src/views/system/datahub/modeling/index.vue

@@ -1,87 +1,106 @@
 <template>
-  <div class="system-dic-container">
-    <el-card shadow="hover">
-      <div class="system-user-search mb15">
-        <el-form :model="tableData.param" ref="queryRef" :inline="true">
-          <!-- <el-form-item label="模型标识" prop="key">
+	<div class="system-dic-container">
+		<el-card shadow="hover">
+			<div class="system-user-search mb15">
+				<el-form :model="tableData.param" ref="queryRef" :inline="true">
+					<!-- <el-form-item label="模型标识" prop="key">
             <el-input v-model="tableData.param.key" placeholder="请输入模型标识" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
           </el-form-item> -->
-          <el-form-item label="模型名称" prop="name">
-            <el-input v-model="tableData.param.name" placeholder="请输入模型名称" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
-          </el-form-item>
-          <el-form-item label="模型类型" prop="type">
-            <el-select v-model="tableData.param.type"  placeholder="请选择模型类型" class="w100" >
-						<el-option v-for="item in datahub_model_type" :key="item.value" :label="item.label" :value="item.value" />
-					</el-select>
-          </el-form-item>
-          <el-form-item>
-            <el-button size="default" type="primary" class="ml10" @click="typeList">
-              <el-icon>
-                <ele-Search />
-              </el-icon>
-              查询
-            </el-button>
-            <el-button size="default" @click="resetQuery(queryRef)">
-              <el-icon>
-                <ele-Refresh />
-              </el-icon>
-              重置
-            </el-button>
-            <el-button size="default" type="success" class="ml10" @click="onOpenAdd" v-auth="'add'">
-              <el-icon>
-                <ele-FolderAdd />
-              </el-icon>
-              新增模型
-            </el-button>
-            <el-button size="default" type="danger" class="ml10" @click="onRowDel()" v-auth="'del'">
-              <el-icon>
-                <ele-Delete />
-              </el-icon>
-              删除
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-      <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
-        <el-table-column type="selection" width="55" align="center" />
-        <el-table-column label="ID" align="center" prop="id" width="80" v-col="'id'" />
-       <!-- <el-table-column label="模型标识" prop="key" :show-overflow-tooltip="true" v-col="'key'"/> -->
-        <el-table-column label="模型名称" prop="name" :show-overflow-tooltip="true" v-col="'name'" />
-        <el-table-column label="类型" prop="typeName" :show-overflow-tooltip="true" v-col="'typeName'" />
+					<el-form-item label="模型名称" prop="name">
+						<el-input
+							v-model="tableData.param.name"
+							placeholder="请输入模型名称"
+							clearable
+							size="default"
+							style="width: 240px"
+							@keyup.enter.native="typeList"
+						/>
+					</el-form-item>
+					<el-form-item label="模型类型" prop="type">
+						<el-select v-model="tableData.param.type" placeholder="请选择模型类型" class="w100">
+							<el-option v-for="item in datahub_model_type" :key="item.value" :label="item.label" :value="item.value" />
+						</el-select>
+					</el-form-item>
+					<el-form-item>
+						<el-button size="default" type="primary" class="ml10" @click="typeList">
+							<el-icon>
+								<ele-Search />
+							</el-icon>
+							查询
+						</el-button>
+						<el-button size="default" @click="resetQuery(queryRef)">
+							<el-icon>
+								<ele-Refresh />
+							</el-icon>
+							重置
+						</el-button>
+						<el-button size="default" type="success" class="ml10" @click="onOpenAdd" v-auth="'add'">
+							<el-icon>
+								<ele-FolderAdd />
+							</el-icon>
+							新增模型
+						</el-button>
+						<el-button size="default" type="danger" class="ml10" @click="onRowDel()" v-auth="'del'">
+							<el-icon>
+								<ele-Delete />
+							</el-icon>
+							删除
+						</el-button>
+					</el-form-item>
+				</el-form>
+			</div>
+			<el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
+				<el-table-column type="selection" width="55" align="center" />
+				<el-table-column label="ID" align="center" prop="id" width="80" v-col="'id'" />
+				<!-- <el-table-column label="模型标识" prop="key" :show-overflow-tooltip="true" v-col="'key'"/> -->
+				<el-table-column label="模型名称" prop="name" :show-overflow-tooltip="true" v-col="'name'" />
+				<el-table-column label="类型" prop="typeName" :show-overflow-tooltip="true" v-col="'typeName'" />
 
-        <el-table-column label="描述" prop="desc" :show-overflow-tooltip="true" v-col="'desc'" />
-        <el-table-column prop="status" label="状态" width="100" align="center" v-col="'status'">
-          <template #default="scope">
-            <el-tag type="success" size="small" v-if="scope.row.status==1">已发布</el-tag>
-            <el-tag type="info" size="small" v-else>未发布</el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column prop="createdAt" label="创建时间" width="200" align="center" v-col="'createdAt'"></el-table-column>
+				<el-table-column label="描述" prop="desc" :show-overflow-tooltip="true" v-col="'desc'" />
+				<el-table-column prop="status" label="状态" width="100" align="center" v-col="'status'">
+					<template #default="scope">
+						<el-tag type="success" size="small" v-if="scope.row.status == 1">已发布</el-tag>
+						<el-tag type="info" size="small" v-else>未发布</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column prop="createdAt" label="创建时间" width="200" align="center" v-col="'createdAt'"></el-table-column>
 
-        <el-table-column label="操作" width="280" align="center" fixed="right">
-          <template #default="scope">
-            <router-link :to="'/config/datahub/modeling/' + scope.row.id" class="link-type" style="padding-right: 12px; font-size: 12px; color: #409eff" v-auth="'detail'">
-              <span>字段管理</span>
-            </router-link>
-            <el-button size="small" text type="success" @click="onOpenRecord(scope.row)" v-if="scope.row.status==1" v-auth="'record'">数据记录</el-button>
-            <el-button size="small" text type="danger" @click="onOpenJuhe(scope.row)" v-auth="'record'">聚合设置</el-button>
-            <el-button size="small" text type="warning" @click="onOpenEdit(scope.row)" v-if="scope.row.status==0" v-auth="'edit'">修改</el-button>
-            <el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-if="scope.row.status==0" v-auth="'del'">删除</el-button>
-            <el-button size="small" text type="primary" @click="copy(scope.row)" v-auth="'copy'">复制</el-button>
-
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination v-show="tableData.total > 0" :total="tableData.total" v-model:page="tableData.param.pageNum" v-model:limit="tableData.param.pageSize" @pagination="typeList" />
-    </el-card>
-    <EditDic ref="editDicRef" @typeList="typeList" />
-    <Detail ref="detailRef" />
-    <Juhe ref="juheRef" />
-  </div>
+				<el-table-column label="操作" width="280" align="center" fixed="right">
+					<template #default="scope">
+						<router-link
+							:to="'/config/datahub/modeling/' + scope.row.id"
+							class="link-type"
+							style="padding-right: 12px; font-size: 12px; color: #409eff"
+							v-auth="'detail'"
+						>
+							<span>字段管理</span>
+						</router-link>
+						<el-button size="small" text type="success" @click="onOpenRecord(scope.row)" v-if="scope.row.status == 1" v-auth="'record'"
+							>数据记录</el-button
+						>
+						<el-button size="small" text type="danger" @click="onOpenJuhe(scope.row)" v-auth="'juhe'">聚合设置</el-button>
+						<el-button size="small" text type="warning" @click="onOpenEdit(scope.row)" v-if="scope.row.status == 0" v-auth="'edit'">修改</el-button>
+						<el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-if="scope.row.status == 0" v-auth="'del'">删除</el-button>
+						<el-button size="small" text type="primary" @click="copy(scope.row)" v-auth="'copy'">复制</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination
+				v-show="tableData.total > 0"
+				:total="tableData.total"
+				v-model:page="tableData.param.pageNum"
+				v-model:limit="tableData.param.pageSize"
+				@pagination="typeList"
+			/>
+		</el-card>
+		<EditDic ref="editDicRef" @typeList="typeList" />
+		<Detail ref="detailRef" />
+		<Juhe ref="juheRef" />
+	</div>
 </template>
 
 <script lang="ts">
-import { toRefs, reactive, onMounted, ref, defineComponent,getCurrentInstance } from 'vue';
+import { toRefs, reactive, onMounted, ref, defineComponent, getCurrentInstance } from 'vue';
 import { ElMessageBox, ElMessage, FormInstance } from 'element-plus';
 import EditDic from './component/edit.vue';
 import Detail from './component/detail.vue';
@@ -90,159 +109,160 @@ import api from '/@/api/datahub';
 
 // 定义接口来定义对象的类型
 interface TableDataRow {
-  id: number;
-  name: string;
-  key: string;
+	id: number;
+	name: string;
+	key: string;
 
-  createBy: string;
+	createBy: string;
 }
 interface TableDataState {
-  ids: number[];
-  tableData: {
-    data: Array<TableDataRow>;
-    total: number;
-    loading: boolean;
-    param: {
-      pageNum: number;
-      pageSize: number;
-      name: string;
-      key: string;
-      type: string;
-    };
-  };
+	ids: number[];
+	tableData: {
+		data: Array<TableDataRow>;
+		total: number;
+		loading: boolean;
+		param: {
+			pageNum: number;
+			pageSize: number;
+			name: string;
+			key: string;
+			type: string;
+		};
+	};
 }
 
 export default defineComponent({
-  name: 'sourcelist',
-  components: { EditDic, Detail,Juhe },
-  setup() {
-    const addDicRef = ref();
-    const editDicRef = ref();
-    const juheRef = ref();
-    const detailRef = ref();
-    const queryRef = ref();
-    const { proxy } = getCurrentInstance() as any;
-
-const { datahub_model_type } = proxy.useDict('datahub_model_type');
-    const state = reactive<TableDataState>({
-      tableData: {
-        data: [],
-        total: 0,
-        loading: false,
-        param: {
-          pageNum: 1,
-          pageSize: 10,
-          name: '',
-          key: '',
-          type: '',
-        },
-      },
-    });
-    // 初始化表格数据
-    const initTableData = () => {
-      typeList();
-    };
-    const typeList = () => {
-      state.tableData.loading = true;
-      api.template.getList(state.tableData.param).then((res: any) => {
-        state.tableData.data = res.list;
-        state.tableData.total = res.Total;
-      }).finally(() => (state.tableData.loading = false));
-    };
-    // 打开新增菜单弹窗
-    const onOpenAdd = (row?: TableDataRow) => {
-      editDicRef.value.openDialog(row?.id);
-    };
-    // 打开修改模型弹窗
-    const onOpenEdit = (row: TableDataRow) => {
-      editDicRef.value.openDialog({ ...row });
-    };
-    //打开数据记录
-    const onOpenRecord = (row: TableDataRow) => {
-      detailRef.value.openDialog(row);
-    };
-    //聚合设置
-    const onOpenJuhe = (row: TableDataRow) => {
-      juheRef.value.openDialog(row);
-    };
-    const onRowDel = (row?: TableDataRow) => {
-      let msg = '你确定要删除所选数据?';
-      let ids: number[] = [];
-      if (row) {
-        msg = `此操作将永久删除模型:“${row.name}”,是否继续?`;
-        ids = [row.id];
-      } else {
-        ids = state.ids;
-      }
-      if (ids.length === 0) {
-        ElMessage.error('请选择要删除的数据。');
-        return;
-      }
-      ElMessageBox.confirm(msg, '提示', {
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-        .then(() => {
-          api.template.delete(ids).then(() => {
-            ElMessage.success('删除成功');
-            typeList();
-          });
-        })
-        .catch(() => { });
-    };
-
-    //复制数据
-    const copy = (row: TableDataRow) => {
-      ElMessageBox.confirm("确定要复制该数据吗?", '提示', {
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-        .then(() => {
+	name: 'sourcelist',
+	components: { EditDic, Detail, Juhe },
+	setup() {
+		const addDicRef = ref();
+		const editDicRef = ref();
+		const juheRef = ref();
+		const detailRef = ref();
+		const queryRef = ref();
+		const { proxy } = getCurrentInstance() as any;
 
-          api.template.copy({ id: row.id }).then(() => {
-            ElMessage.success('复制成功');
-            typeList();
-          });
-        })
-        .catch(() => { });
-    }
+		const { datahub_model_type } = proxy.useDict('datahub_model_type');
+		const state = reactive<TableDataState>({
+			tableData: {
+				data: [],
+				total: 0,
+				loading: false,
+				param: {
+					pageNum: 1,
+					pageSize: 10,
+					name: '',
+					key: '',
+					type: '',
+				},
+			},
+		});
+		// 初始化表格数据
+		const initTableData = () => {
+			typeList();
+		};
+		const typeList = () => {
+			state.tableData.loading = true;
+			api.template
+				.getList(state.tableData.param)
+				.then((res: any) => {
+					state.tableData.data = res.list;
+					state.tableData.total = res.Total;
+				})
+				.finally(() => (state.tableData.loading = false));
+		};
+		// 打开新增菜单弹窗
+		const onOpenAdd = (row?: TableDataRow) => {
+			editDicRef.value.openDialog(row?.id);
+		};
+		// 打开修改模型弹窗
+		const onOpenEdit = (row: TableDataRow) => {
+			editDicRef.value.openDialog({ ...row });
+		};
+		//打开数据记录
+		const onOpenRecord = (row: TableDataRow) => {
+			detailRef.value.openDialog(row);
+		};
+		//聚合设置
+		const onOpenJuhe = (row: TableDataRow) => {
+			juheRef.value.openDialog(row);
+		};
+		const onRowDel = (row?: TableDataRow) => {
+			let msg = '你确定要删除所选数据?';
+			let ids: number[] = [];
+			if (row) {
+				msg = `此操作将永久删除模型:“${row.name}”,是否继续?`;
+				ids = [row.id];
+			} else {
+				ids = state.ids;
+			}
+			if (ids.length === 0) {
+				ElMessage.error('请选择要删除的数据。');
+				return;
+			}
+			ElMessageBox.confirm(msg, '提示', {
+				confirmButtonText: '确认',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					api.template.delete(ids).then(() => {
+						ElMessage.success('删除成功');
+						typeList();
+					});
+				})
+				.catch(() => {});
+		};
 
+		//复制数据
+		const copy = (row: TableDataRow) => {
+			ElMessageBox.confirm('确定要复制该数据吗?', '提示', {
+				confirmButtonText: '确认',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					api.template.copy({ id: row.id }).then(() => {
+						ElMessage.success('复制成功');
+						typeList();
+					});
+				})
+				.catch(() => {});
+		};
 
-    // 页面加载时
-    onMounted(() => {
-      initTableData();
-    });
-    /** 重置按钮操作 */
-    const resetQuery = (formEl: FormInstance | undefined) => {
-      if (!formEl) return;
-      formEl.resetFields();
-      typeList();
-    };
-    // 多选框选中数据
-    const handleSelectionChange = (selection: TableDataRow[]) => {
-      state.ids = selection.map((item) => item.id);
-    };
+		// 页面加载时
+		onMounted(() => {
+			initTableData();
+		});
+		/** 重置按钮操作 */
+		const resetQuery = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			formEl.resetFields();
+			typeList();
+		};
+		// 多选框选中数据
+		const handleSelectionChange = (selection: TableDataRow[]) => {
+			state.ids = selection.map((item) => item.id);
+		};
 
-    return {
-      addDicRef,
-      editDicRef,
-      detailRef,
-      juheRef,
-      queryRef,
-      onOpenRecord,
-      onOpenJuhe,
-      datahub_model_type,
-      onOpenAdd,
-      onOpenEdit,
-      onRowDel,
-      copy,
-      typeList,
-      resetQuery,
-      handleSelectionChange,
-      ...toRefs(state),
-    };
-  },
+		return {
+			addDicRef,
+			editDicRef,
+			detailRef,
+			juheRef,
+			queryRef,
+			onOpenRecord,
+			onOpenJuhe,
+			datahub_model_type,
+			onOpenAdd,
+			onOpenEdit,
+			onRowDel,
+			copy,
+			typeList,
+			resetQuery,
+			handleSelectionChange,
+			...toRefs(state),
+		};
+	},
 });
 </script>