浏览代码

Merge branch 'master' of http://120.26.64.82:3000/BFFE/SZYGM1.0

chenjun 2 年之前
父节点
当前提交
6ea9286c0d

+ 56 - 9
src/views/systemSettings/datastructure/datastructureTerm.vue

@@ -28,10 +28,19 @@
         @delRemove="delRemove"
       >
         <div class="diacont">
-          <el-form :model="tableForm">
+          <el-form
+            :model="tableForm"
+            :rules="formRules"
+            ref="datastructureTermForm"
+          >
             <el-row :gutter="24">
               <el-col :span="12">
-                <el-form-item label="数据项名称" size="default">
+                <el-form-item
+                  label="数据项名称"
+                  size="default"
+                  prop="ItemName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.ItemName"
                     placeholder="请输入数据项名称"
@@ -39,7 +48,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="数据项类型" size="default">
+                <el-form-item
+                  label="数据项类型"
+                  size="default"
+                  prop="dataType"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.dataType"
                     placeholder="请输入数据项类型"
@@ -64,7 +78,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="输出标识符" size="default">
+                <el-form-item
+                  label="输出标识符"
+                  size="default"
+                  prop="outputIdentifier"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.outputIdentifier"
                     placeholder="请输入输出标识符"
@@ -77,7 +96,12 @@
                 </el-form-item> -->
               </el-col>
               <el-col :span="8">
-                <el-form-item label="唯一项" size="default">
+                <el-form-item
+                  label="唯一项"
+                  size="default"
+                  prop="isKey"
+                  :rules="formRules.isNotNull"
+                >
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.isKey"
@@ -98,7 +122,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="必填项" size="default">
+                <el-form-item
+                  label="必填项"
+                  size="default"
+                  prop="isMust"
+                  :rules="formRules.isNotNull"
+                >
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.isMust"
@@ -119,7 +148,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="多条拆分" size="default">
+                <el-form-item
+                  label="多条拆分"
+                  size="default"
+                  prop="isSplite"
+                  :rules="formRules.isNotNull"
+                >
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.isSplite"
@@ -174,7 +208,12 @@
                 </el-form-item>
               </el-col> -->
               <el-col :span="12">
-                <el-form-item label="计算数据源" size="default">
+                <el-form-item
+                  label="计算数据源"
+                  size="default"
+                  prop="dataSourceName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.dataSourceName"
@@ -207,6 +246,7 @@ import Minheader from "@/components/minheader/index.vue";
 import Dialog from "@/components/dialog/index.vue";
 import { Query, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const router = useRouter();
 const route = useRoute();
 const page = ref<number>(0); //分页参数
@@ -382,8 +422,15 @@ const getQuery = async () => {
   }
 };
 //确认提交
+const datastructureTermForm: any = ref(null);
 const submitForm = () => {
-  generalDataReception(tableForm);
+  datastructureTermForm.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
 };
 const resetTable = () => {
   page.value = 0;

+ 32 - 5
src/views/systemSettings/datastructure/index.vue

@@ -28,10 +28,19 @@
         @delRemove="delRemove"
       >
         <div class="diacont">
-          <el-form :model="tableForm">
+          <el-form
+            :model="tableForm"
+            :rules="formRules"
+            ref="datastructureForm"
+          >
             <el-row :gutter="24">
               <el-col>
-                <el-form-item label="结构名称" size="default">
+                <el-form-item
+                  label="结构名称"
+                  size="default"
+                  prop="structureName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.structureName"
                     placeholder="请输入结构名称"
@@ -39,7 +48,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="数据格式" size="default">
+                <el-form-item
+                  label="数据格式"
+                  size="default"
+                  prop="datatype"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.datatype"
                     placeholder="请输入数据格式"
@@ -64,7 +78,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="事件标识" size="default">
+                <el-form-item
+                  label="事件标识"
+                  size="default"
+                  prop="eventID"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.eventID"
                     placeholder="请输入事件标识"
@@ -93,6 +112,7 @@ import Minheader from "@/components/minheader/index.vue";
 import Dialog from "@/components/dialog/index.vue";
 import { Query, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const page = ref<number>(0); //分页参数
 const dataContent = ref<object>({});
 const noMore = ref<Boolean>(false);
@@ -253,8 +273,15 @@ const getQuery = async () => {
   }
 };
 //确认提交
+const datastructureForm: any = ref(null);
 const submitForm = () => {
-  generalDataReception(tableForm);
+  datastructureForm.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
 };
 const resetTable = () => {
   page.value = 0;

+ 26 - 4
src/views/systemSettings/messageTemplate/index.vue

@@ -27,10 +27,19 @@
         @delRemove="delRemove"
       >
         <div class="diacont">
-          <el-form :model="tableForm">
+          <el-form
+            :model="tableForm"
+            :rules="formRules"
+            ref="messageTemplateForm"
+          >
             <el-row :gutter="24">
               <el-col>
-                <el-form-item label="消息标题" size="default">
+                <el-form-item
+                  label="消息标题"
+                  size="default"
+                  prop="newsTitle"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.newsTitle"
                     placeholder="请输入名称"
@@ -38,7 +47,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="消息内容" size="default">
+                <el-form-item
+                  label="消息内容"
+                  size="default"
+                  prop="newContent"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     type="textarea"
                     v-model="tableForm.newContent"
@@ -59,6 +73,7 @@ import Minheader from "@/components/minheader/index.vue";
 import Dialog from "@/components/dialog/index.vue";
 import { Query, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const page = ref<number>(0); //分页参数
 const dataContent = ref<object>({});
 const noMore = ref<Boolean>(false);
@@ -196,8 +211,15 @@ const getQuery = async () => {
   }
 };
 //确认提交
+const messageTemplateForm: any = ref(null);
 const submitForm = () => {
-  generalDataReception(tableForm);
+  messageTemplateForm.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
 };
 const resetTable = () => {
   page.value = 0;

+ 45 - 8
src/views/systemSettings/protocolManagement/index.vue

@@ -28,10 +28,19 @@
         @delRemove="delRemove"
       >
         <div class="diacont">
-          <el-form :model="tableForm">
+          <el-form
+            :model="tableForm"
+            :rules="formRules"
+            ref="protocolManagement"
+          >
             <el-row :gutter="24">
               <el-col>
-                <el-form-item label="协议名称" size="default">
+                <el-form-item
+                  label="协议名称"
+                  size="default"
+                  prop="protocolName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.protocolName"
                     placeholder="请输入协议名称"
@@ -39,7 +48,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="类名" size="default">
+                <el-form-item
+                  label="类名"
+                  size="default"
+                  prop="className"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     type="textarea"
                     v-model="tableForm.className"
@@ -56,7 +70,12 @@
                 </el-form-item>
               </el-col> -->
               <el-col>
-                <el-form-item label="读方法名" size="default">
+                <el-form-item
+                  label="读方法名"
+                  size="default"
+                  prop="rmethodName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.rmethodName"
                     placeholder="请输入读方法名"
@@ -64,7 +83,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="写方法名" size="default">
+                <el-form-item
+                  label="写方法名"
+                  size="default"
+                  prop="smethodName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.smethodName"
                     placeholder="请输入写方法名"
@@ -72,7 +96,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="文件名及路径" size="default">
+                <el-form-item
+                  label="文件名及路径"
+                  size="default"
+                  prop="filePath"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     type="textarea"
                     v-model="tableForm.filePath"
@@ -93,6 +122,7 @@ import Minheader from "@/components/minheader/index.vue";
 import Dialog from "@/components/dialog/index.vue";
 import { Query, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const page = ref<number>(0); //分页参数
 const dataContent = ref<object>({});
 const noMore = ref<Boolean>(false);
@@ -237,8 +267,15 @@ const getQuery = async () => {
   }
 };
 //确认提交
+const protocolManagement: any = ref(null);
 const submitForm = () => {
-  generalDataReception(tableForm);
+  protocolManagement.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
 };
 const resetTable = () => {
   page.value = 0;
@@ -284,6 +321,6 @@ getQuery();
 </script>
 <style lang="scss" scoped>
 ::v-deep .el-form-item__label {
-  width: 100px;
+  width: 110px;
 }
 </style>

+ 45 - 8
src/views/systemSettings/queryTemplate/queryTemplateAdd.vue

@@ -13,10 +13,15 @@
       </template></Minheader
     >
     <div class="app-container">
-      <el-form :model="ruleForm">
+      <el-form :model="ruleForm" :rules="formRules" ref="queryTemplateAddForm">
         <el-row :gutter="24">
           <el-col :span="6">
-            <el-form-item label="查询模板名称" size="default">
+            <el-form-item
+              label="查询模板名称"
+              size="default"
+              prop="queryTemplateName"
+              :rules="formRules.isNotNull"
+            >
               <el-input
                 v-model="ruleForm.queryTemplateName"
                 placeholder="请输入查询模板名称"
@@ -24,7 +29,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="数据源" prop="dataSourceID" size="default">
+            <el-form-item
+              label="数据源"
+              prop="dataSourceID"
+              size="default"
+              :rules="formRules.isNotNull"
+            >
               <el-select
                 v-model="ruleForm.dataSourceID"
                 placeholder="请选择"
@@ -40,7 +50,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="服务名称" prop="submitID" size="default">
+            <el-form-item
+              label="服务名称"
+              prop="serviceID"
+              size="default"
+              :rules="formRules.isNotNull"
+            >
               <el-select
                 v-model="ruleForm.serviceID"
                 placeholder="请选择"
@@ -56,7 +71,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="每页显示" prop="pageRows" size="default">
+            <el-form-item
+              label="每页显示"
+              prop="pageRows"
+              size="default"
+              :rules="formRules.isNotNull"
+            >
               <el-input
                 v-model="ruleForm.pageRows"
                 size="medium"
@@ -75,7 +95,12 @@
             </el-form-item>
           </el-col>
           <el-col>
-            <el-form-item label="查询语句" size="default">
+            <el-form-item
+              label="查询语句"
+              size="default"
+              prop="queryTemplate"
+              :rules="formRules.isNotNull"
+            >
               <el-input
                 :autosize="{ minRows: 24, maxRows: 24 }"
                 type="textarea"
@@ -94,6 +119,7 @@
 import Minheader from "@/components/minheader/index.vue";
 import { Query, myQuery, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const router = useRouter();
 const asShOW = ref<boolean>(false);
 const dataSourceList = ref<Array>([]); //下拉
@@ -109,8 +135,19 @@ const ruleForm = reactive({
   serviceID: "",
   event: 1,
 }); //内容
+//确认提交
+const queryTemplateAddForm: any = ref(null);
+const preserForm = () => {
+  queryTemplateAddForm.value.validate((valid: any) => {
+    if (valid) {
+      preserFormer();
+    } else {
+      return false;
+    }
+  });
+};
 //保存
-const preserForm = async () => {
+const preserFormer = async () => {
   const params = {
     ...ruleForm,
     submitID: ruleForm.serviceID,
@@ -153,7 +190,7 @@ const getSelectOption = async (ID) => {
   }
 };
 const queryServiceList = async (ID) => {
-  const serviceLists = await getSelectOption(DATACONTENT_ID.sysServiceTabId);
+  const serviceLists = await getSelectOption(DATACONTENT_ID.sysServiceTable);
   serviceList.value = serviceLists.map((item) => {
     item[item.setlabel] = item.k;
     item[item.setvalue] = item.v;

+ 45 - 8
src/views/systemSettings/queryTemplate/queryTemplateEdit.vue

@@ -13,10 +13,15 @@
       </template></Minheader
     >
     <div class="app-container">
-      <el-form :model="ruleForm">
+      <el-form :model="ruleForm" :rules="formRules" ref="queryTemplateEditForm">
         <el-row :gutter="24">
           <el-col :span="6">
-            <el-form-item label="查询模板名称" size="default">
+            <el-form-item
+              label="查询模板名称"
+              size="default"
+              prop="queryTemplateName"
+              :rules="formRules.isNotNull"
+            >
               <el-input
                 v-model="ruleForm.queryTemplateName"
                 placeholder="请输入查询模板名称"
@@ -24,7 +29,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="数据源" prop="dataSourceID" size="default">
+            <el-form-item
+              label="数据源"
+              prop="dataSourceID"
+              size="default"
+              :rules="formRules.isNotNull"
+            >
               <el-select
                 v-model="ruleForm.dataSourceID"
                 placeholder="请选择"
@@ -40,7 +50,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="服务名称" prop="submitID" size="default">
+            <el-form-item
+              label="服务名称"
+              prop="serviceID"
+              size="default"
+              :rules="formRules.isNotNull"
+            >
               <el-select
                 v-model="ruleForm.serviceID"
                 placeholder="请选择"
@@ -56,7 +71,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="每页显示" prop="pageRows" size="default">
+            <el-form-item
+              label="每页显示"
+              prop="pageRows"
+              size="default"
+              :rules="formRules.isNotNull"
+            >
               <el-input
                 v-model="ruleForm.pageRows"
                 size="medium"
@@ -75,7 +95,12 @@
             </el-form-item>
           </el-col>
           <el-col>
-            <el-form-item label="查询语句" size="default">
+            <el-form-item
+              label="查询语句"
+              size="default"
+              prop="queryTemplate"
+              :rules="formRules.isNotNull"
+            >
               <el-input
                 :autosize="{ minRows: 24, maxRows: 24 }"
                 type="textarea"
@@ -94,6 +119,7 @@
 import Minheader from "@/components/minheader/index.vue";
 import { Query, myQuery, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const router = useRouter();
 const route = useRoute();
 const asShOW = ref<boolean>(false);
@@ -112,8 +138,19 @@ const ruleForm = reactive({
   event: 2,
 }); //内容
 queryTemplateID.value = route.query.queryTemplateID;
+//确认提交
+const queryTemplateEditForm: any = ref(null);
+const preserForm = () => {
+  queryTemplateEditForm.value.validate((valid: any) => {
+    if (valid) {
+      preserFormer();
+    } else {
+      return false;
+    }
+  });
+};
 //保存
-const preserForm = async () => {
+const preserFormer = async () => {
   const params = {
     ...ruleForm,
     submitID: ruleForm.serviceID,
@@ -156,7 +193,7 @@ const getSelectOption = async (ID) => {
   }
 };
 const queryServiceList = async (ID) => {
-  const serviceLists = await getSelectOption(DATACONTENT_ID.sysServiceTabId);
+  const serviceLists = await getSelectOption(DATACONTENT_ID.sysServiceTable);
   serviceList.value = serviceLists.map((item) => {
     item[item.setlabel] = item.k;
     item[item.setvalue] = item.v;

+ 28 - 5
src/views/systemSettings/sourceTube/index.vue

@@ -27,10 +27,15 @@
         @delRemove="delRemove"
       >
         <div class="diacont">
-          <el-form :model="tableForm">
+          <el-form :model="tableForm" :rules="formRules" ref="sourceTubeForm">
             <el-row :gutter="24">
               <el-col>
-                <el-form-item label="数据源名称" size="default">
+                <el-form-item
+                  label="数据源名称"
+                  size="default"
+                  prop="dataSourceName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.dataSourceName"
                     placeholder="请输入数据源名称"
@@ -38,7 +43,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="协议名称" size="default">
+                <el-form-item
+                  label="协议名称"
+                  size="default"
+                  prop="protocolName"
+                  :rules="formRules.isNotNull"
+                >
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.protocolName"
@@ -59,7 +69,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="连接参数" size="default">
+                <el-form-item
+                  label="连接参数"
+                  size="default"
+                  prop="connectConfig"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     :autosize="{ minRows: 10, maxRows: 10 }"
                     type="textarea"
@@ -81,6 +96,7 @@ import Minheader from "@/components/minheader/index.vue";
 import Dialog from "@/components/dialog/index.vue";
 import { Query, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const page = ref<number>(0); //分页参数
 const dataContent = ref<object>({});
 const noMore = ref<Boolean>(false);
@@ -228,8 +244,15 @@ const getQuery = async () => {
   }
 };
 //确认提交
+const sourceTubeForm: any = ref(null);
 const submitForm = () => {
-  generalDataReception(tableForm);
+  sourceTubeForm.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
 };
 const resetTable = () => {
   page.value = 0;

+ 58 - 10
src/views/systemSettings/warningEdit/index.vue

@@ -137,10 +137,15 @@
       @delRemove="delRemove"
     >
       <div class="diacont">
-        <el-form :model="tableForms">
+        <el-form :model="tableForms" :rules="formRules" ref="warningEditForm">
           <el-row :gutter="24">
             <el-col :span="12">
-              <el-form-item label="策略名称" size="default">
+              <el-form-item
+                label="策略名称"
+                size="default"
+                prop="StrategyName"
+                :rules="formRules.isNotNull"
+              >
                 <el-input
                   v-model="tableForms.StrategyName"
                   placeholder="请输入策略名称"
@@ -148,7 +153,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="计算依据" size="default">
+              <el-form-item
+                label="计算依据"
+                size="default"
+                prop="calculationBasis"
+                :rules="formRules.isNotNull"
+              >
                 <el-select
                   style="width: 100%"
                   v-model="tableForms.calculationBasis"
@@ -169,7 +179,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="预警时长" size="default">
+              <el-form-item
+                label="预警时长"
+                size="default"
+                prop="warningDuration"
+                :rules="formRules.isNotNull"
+              >
                 <el-input
                   v-model="tableForms.warningDuration"
                   placeholder="请输入预警时长"
@@ -177,7 +192,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="报警时长" size="default">
+              <el-form-item
+                label="报警时长"
+                size="default"
+                prop="alarmDuration"
+                :rules="formRules.isNotNull"
+              >
                 <el-input
                   v-model="tableForms.alarmDuration"
                   placeholder="请输入报警时长"
@@ -185,7 +205,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="开始节点" size="default">
+              <el-form-item
+                label="开始节点"
+                size="default"
+                prop="beginNode"
+                :rules="formRules.isNotNull"
+              >
                 <el-select
                   style="width: 100%"
                   v-model="tableForms.beginNode"
@@ -206,7 +231,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="开始位置" size="default">
+              <el-form-item
+                label="开始位置"
+                size="default"
+                prop="beginPosition"
+                :rules="formRules.isNotNull"
+              >
                 <el-select
                   style="width: 100%"
                   v-model="tableForms.beginPosition"
@@ -227,7 +257,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="结束节点" size="default">
+              <el-form-item
+                label="结束节点"
+                size="default"
+                prop="endNode"
+                :rules="formRules.isNotNull"
+              >
                 <el-select
                   style="width: 100%"
                   v-model="tableForms.endNode"
@@ -248,7 +283,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="结束位置" size="default">
+              <el-form-item
+                label="结束位置"
+                size="default"
+                prop="endPosition"
+                :rules="formRules.isNotNull"
+              >
                 <el-select
                   style="width: 100%"
                   v-model="tableForms.endPosition"
@@ -281,6 +321,7 @@ import DataTable from "@/components/tableTemp/index.vue";
 import Dialog from "@/components/dialog/index.vue";
 import { Query, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const router = useRouter();
 const route = useRoute();
 const page = ref<number>(0); //分页参数
@@ -481,8 +522,15 @@ const getQuery = async () => {
   }
 };
 //确认提交
+const warningEditForm: any = ref(null);
 const submitForm = () => {
-  generalDataReception(tableForms);
+  warningEditForm.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
 };
 const resetTable = () => {
   page.value = 0;

+ 47 - 9
src/views/systemSettings/warningSet/index.vue

@@ -33,7 +33,7 @@
         @delRemove="delRemove"
       >
         <div class="diacont">
-          <el-form :model="tableForm">
+          <el-form :model="tableForm" :rules="formRules" ref="warningSetForm">
             <el-row :gutter="24">
               <!-- <el-col :span="12">
                 <el-form-item label="策略名称" size="default">
@@ -44,7 +44,12 @@
                 </el-form-item>
               </el-col> -->
               <el-col :span="12">
-                <el-form-item label="航司二字码" size="default">
+                <el-form-item
+                  label="航司二字码"
+                  size="default"
+                  prop="IATACode"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.IATACode"
                     placeholder="请输入航司二字码"
@@ -52,7 +57,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="起飞机场" size="default">
+                <el-form-item
+                  label="起飞机场"
+                  size="default"
+                  prop="departmentAirport"
+                  :rules="formRules.isNotNull"
+                >
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.departmentAirport"
@@ -73,7 +83,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="降落机场" size="default">
+                <el-form-item
+                  label="降落机场"
+                  size="default"
+                  prop="landingAirport"
+                  :rules="formRules.isNotNull"
+                >
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.landingAirport"
@@ -94,7 +109,12 @@
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="航班号" size="default">
+                <el-form-item
+                  label="航班号"
+                  size="default"
+                  prop="flightNo"
+                  :rules="formRules.isNotNull"
+                >
                   <el-input
                     v-model="tableForm.flightNo"
                     placeholder="请输入航班号"
@@ -102,7 +122,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="生效时间" size="default">
+                <el-form-item
+                  label="生效时间"
+                  size="default"
+                  prop="startDate"
+                  :rules="formRules.isNotNull"
+                >
                   <el-date-picker
                     v-model="tableForm.startDate"
                     :rows="1"
@@ -115,7 +140,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="失效时间" size="default">
+                <el-form-item
+                  label="失效时间"
+                  size="default"
+                  prop="endDate"
+                  :rules="formRules.isNotNull"
+                >
                   <el-date-picker
                     format="YYYY-MM-DD HH:mm:ss"
                     value-format="YYYY-MM-DD HH:mm:ss"
@@ -149,6 +179,7 @@ import Minheader from "@/components/minheader/index.vue";
 import Dialog from "@/components/dialog/index.vue";
 import { Query, GeneralDataReception } from "@/api/webApi";
 import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
 const page = ref<number>(0); //分页参数
 const dataContent = ref<object>({});
 const noMore = ref<Boolean>(false);
@@ -317,8 +348,15 @@ const getQuery = async () => {
   }
 };
 //确认提交
+const warningSetForm: any = ref(null);
 const submitForm = () => {
-  generalDataReception(tableForm);
+  warningSetForm.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
 };
 const resetTable = () => {
   page.value = 0;
@@ -364,6 +402,6 @@ getQuery();
 </script>
 <style lang="scss" scoped>
 ::v-deep .el-form-item__label {
-  width: 90px;
+  width: 100px;
 }
 </style>

+ 236 - 74
src/views/userManagement/account/auth.vue

@@ -6,22 +6,22 @@
           <div class="manageTitle">账号信息</div>
           <div class="role-info-content t30">
             <el-form ref="ruleFormRef" :model="ruleForm" class="demo-ruleForm">
-              <el-form-item label="角色名称" prop="roleName">
-                <el-input disabled v-model="ruleForm.roleName" size="default" placeholder="请输入角色名称" />
+              <el-form-item label="角色名称" prop="user_name">
+                <el-input disabled v-model="ruleForm.user_name" size="default" placeholder="请输入角色名称" />
               </el-form-item>
-              <el-form-item label="角色描述" prop="roleDesc">
-                <el-input disabled v-model="ruleForm.roleDesc" size="default" type="textarea" :rows="3" placeholder="请输入角色描述" />
+              <el-form-item label="角色描述" prop="user_comment">
+                <el-input disabled v-model="ruleForm.user_comment" size="default" type="textarea" :rows="3" placeholder="请输入角色描述" />
               </el-form-item>
-              <el-form-item label="是否启用" prop="roleStatus">
-                <el-radio-group disabled v-model="ruleForm.roleStatus">
-                  <el-radio label="1">启用</el-radio>
-                  <el-radio label="2"> 禁用</el-radio>
+              <el-form-item label="是否启用" prop="user_status">
+                <el-radio-group disabled v-model="ruleForm.user_status">
+                  <el-radio :label="1">启用</el-radio>
+                  <el-radio :label="2"> 禁用</el-radio>
                 </el-radio-group>
               </el-form-item>
             </el-form>
           </div>
         </div>
-        <div class="box strategy-bottom strategy">
+        <!-- <div class="box strategy-bottom strategy">
           <div class="manageTitle">登录策略</div>
           <div class="strategy-content">
             <el-scrollbar>
@@ -39,31 +39,36 @@
               </el-checkbox-group>
             </el-scrollbar>
           </div>
-        </div>
+        </div> -->
       </div>
       <div class="box auth-list">
         <div class="manageTitle">角色</div>
         <div class="strategy auth-tree">
           <div class="strategy-content">
-            <el-scrollbar>
-              <el-checkbox-group v-model="roleGroup" size="default">
-                <el-row :gutter="16">
-                  <el-col :span="8" v-for="item in roleData" :key="item.id">
-                    <div class="strategy-content-list">
-                      <el-checkbox class="ck" :title="item.label" :label="item.value">
-                        {{ item.label }}
-                      </el-checkbox>
-                    </div>
-                  </el-col>
-                </el-row>
-              </el-checkbox-group>
-            </el-scrollbar>
+            <template v-if="roleData.length">
+              <el-scrollbar>
+                <el-checkbox-group @change="checkChange" v-model="roleGroup" size="default">
+                  <el-row :gutter="16">
+                    <el-col :span="8" v-for="(item,index) in roleData" :key="index">
+                      <div @click="handleClick(item,index)" :class="index == roleIndex ? 'active' : ''" class="strategy-content-list">
+                        <el-checkbox class="ck" :title="item.role_name" :label="item.role_id">
+                          {{ item.role_name }}
+                        </el-checkbox>
+                      </div>
+                    </el-col>
+                  </el-row>
+                </el-checkbox-group>
+              </el-scrollbar>
+            </template>
+            <template v-else>
+              <el-empty description="暂无数据" />
+            </template>
           </div>
         </div>
       </div>
       <div class="box auth-list">
         <div class="manageTitle">权限名称</div>
-        <div class="auth-name flex-wrap">
+        <div v-if="groupData.length" class="auth-name flex-wrap">
           <span class="auth-name-list"> <span class="icon icon-time"></span> 时效规则有</span>
           <span class="auth-name-list"> <span class="icon icon-date"></span> 数据规则有</span>
           <span class="auth-name-list"> <span class="icon icon-ic_display_edit"></span> 显示及编辑权限</span>
@@ -71,67 +76,219 @@
         </div>
         <div class="auth-box">
           <div class="strategy-content">
-            <el-scrollbar>
-              <el-row :gutter="16">
-                <el-col :span="8" v-for="item in roleData" :key="item.id">
-                  <div class="strategy-content-list">
-                    <div class="flex info">
-                      <div class="name">{{item.label}}</div>
-                      <el-button size="default" type="primary" link>查看</el-button>
-                    </div>
-                    <div class="auth-name flex-wrap">
-                      <span class="auth-name-list"> <span class="icon icon-time"></span></span>
-                      <span class="auth-name-list"> <span class="icon icon-date"></span></span>
-                      <span class="auth-name-list"> <span class="icon icon-ic_display_edit"></span></span>
-                      <span class="auth-name-list"> <span class="icon icon-ic_display"></span> </span>
+            <template v-if="groupData.length">
+              <el-scrollbar>
+                <el-row :gutter="16">
+                  <el-col :span="8" v-for="item in groupData" :key="item.id">
+                    <div class="strategy-content-list">
+                      <div class="flex info">
+                        <div class="name">{{item.auth_name}}</div>
+                        <el-button @click="handleCk(item)" size="default" type="primary" link>查看</el-button>
+                      </div>
+                      <div v-if="item.edit_col_condition ||
+                          item.delete_row_condition ||
+                          item.edit_row_condition ||
+                          item.new_col_condition ||
+                          item.query_col_conditon ||
+                          item.query_row_condition" class="auth-name flex-wrap">
+                        <span class="auth-name-list"> <span class="icon icon-time"></span></span>
+                        <span class="auth-name-list"> <span class="icon icon-date"></span></span>
+                        <span class="auth-name-list"> <span class="icon icon-ic_display_edit"></span></span>
+                        <span class="auth-name-list"> <span class="icon icon-ic_display"></span> </span>
+                      </div>
                     </div>
-                  </div>
-                </el-col>
-              </el-row>
-            </el-scrollbar>
+                  </el-col>
+                </el-row>
+              </el-scrollbar>
+            </template>
+            <template v-else>
+              <el-empty description="暂无数据" />
+            </template>
           </div>
         </div>
       </div>
     </div>
+    <!--新增/编辑-->
+    <Dialog :flag="editDialogVisible" :msgTitle="editDialogTitle" @submitForm="submitForm()" @resetForm="resetForm()" :show-flag="true">
+      <el-form ref="ruleFormRef" :model="ruleNewForm" label-width="110px" class="demo-ruleForm">
+        <el-form-item label="许可查询行">
+          <el-input size="default" disabled v-model="ruleNewForm.query_row_condition" placeholder="请输入内容"></el-input>
+        </el-form-item>
+        <el-form-item label="许可查询列">
+          <el-input size="default" disabled v-model="ruleNewForm.query_col_conditon" placeholder="请输入内容"></el-input>
+        </el-form-item>
+        <el-form-item label="许可删除行">
+          <el-input size="default" disabled v-model="ruleNewForm.delete_row_condition" placeholder="请输入内容"></el-input>
+        </el-form-item>
+        <el-form-item label="许可新增列">
+          <el-input size="default" disabled v-model="ruleNewForm.new_col_condition" placeholder="请输入内容"></el-input>
+        </el-form-item>
+        <el-form-item label="许可编辑行">
+          <el-input size="default" disabled v-model="ruleNewForm.edit_row_condition" placeholder="请输入内容"></el-input>
+        </el-form-item>
+        <el-form-item label="许可编辑列">
+          <el-input size="default" disabled v-model="ruleNewForm.edit_col_condition" placeholder="请输入内容"></el-input>
+        </el-form-item>
+      </el-form>
+    </Dialog>
   </div>
 </template>
 
 <script setup lang="ts">
 import { ref, reactive, onBeforeMount } from "vue";
-const ruleForm = reactive({
-  roleName: "11",
-  roleDesc: "22",
-  roleStatus: "2",
+import { GeneralDataReception, Query } from "@/api/dataIntegration";
+import { ElMessage } from "element-plus";
+import Dialog from "@/components/dialog/index.vue";
+const route = useRoute();
+const role_id = route.query.id;
+const ruleForm = ref<any>({
+  user_name: "",
+  user_comment: "",
+  user_status: "",
+});
+const ruleNewForm = ref<any>({
+  delete_row_condition: "",
+  edit_col_condition: "",
+  edit_row_condition: "",
+  new_col_condition: "",
+  query_col_conditon: "",
+  query_row_condition: "",
 });
 const checkboxGroup = ref([1, 2]);
-const roleGroup = ref([1, 2]);
-const groupData = [
-  {
-    label: "策略名称",
-    value: 1,
-    id: 1,
-  },
-];
-const roleData = [
-  {
-    label: "系统开发工程师",
-    value: 1,
-    id: 1,
-  },
-];
-onBeforeMount(() => {
-  for (let i = 0; i < 50; i++) {
-    groupData.push({
-      label: "策略名称",
-      value: i + 2,
-      id: i + 2,
+const roleGroup = ref<any>([]);
+const groupData = ref<any>([]);
+const roleData = ref<any>([]);
+const pageNum = ref(1);
+const checkedKeys = ref<any>([]);
+const roleIndex = ref(null);
+const editDialogVisible = ref(false);
+const editDialogTitle = ref("查看规则");
+// 获取当前账号信息
+const getAccountInfo = async () => {
+  const res = await Query({
+    id: DATACONTENT_ID.accountDetailsId,
+    dataContent: [role_id],
+  });
+  if (res.code == 0) {
+    const { listValues } = res.returnData;
+    const obj = listValues[0];
+    ruleForm.value = obj;
+  } else {
+    ElMessage.error(res.message);
+  }
+};
+//获取列表
+const getRoleData = async () => {
+  const result = await Query({
+    id: DATACONTENT_ID.roleTableNId,
+    needPage: pageNum.value,
+    dataContent: ["", sessionStorage.getItem("User_Id")],
+  });
+  if (result.code == 0) {
+    const datas = result.returnData.listValues;
+    roleData.value = datas;
+  } else {
+    ElMessage.error(result.message);
+  }
+};
+
+//角色明细
+const roleDetails = async () => {
+  const res = await Query({
+    id: DATACONTENT_ID.accountRoleId,
+    dataContent: [role_id],
+  });
+  if (res.code == 0) {
+    const { listValues } = res.returnData;
+    const datas: any = [];
+    listValues.forEach((item) => {
+      datas.push(item.role_id);
     });
-    roleData.push({
-      label: "系统开发工程师",
-      value: i + 2,
-      id: i + 2,
+    checkedKeys.value.push(datas);
+    roleGroup.value = datas;
+  } else {
+    ElMessage.error(res.message);
+  }
+};
+
+//当前选中角色
+const checkChange = (arr) => {
+  checkedKeys.value.push(arr);
+  const data1 = checkedKeys.value[checkedKeys.value.length - 1]; //最后一条数据
+  const data2 = checkedKeys.value[checkedKeys.value.length - 2]; //倒数第二条数据
+  if (data1.length > data2.length) {
+    checksBoxTs(data1, data2, "add");
+  } else {
+    checksBoxTs(data2, data1, "del");
+  }
+};
+
+//当前点击的角色
+const handleClick = (item, index) => {
+  roleIndex.value = index;
+  roleAuths(item.role_id);
+};
+
+//获取当前角色权限
+const roleAuths = async (id) => {
+  const res = await Query({
+    id: DATACONTENT_ID.roleAuthId,
+    dataContent: [id],
+  });
+  if (res.code == 0) {
+    groupData.value = res.returnData.listValues;
+  } else {
+    ElMessage.error(res.message);
+  }
+};
+
+//查看当前角色规则
+const handleCk = (item) => {
+  editDialogTitle.value = item.auth_name;
+  ruleNewForm.value = item;
+  editDialogVisible.value = true;
+};
+
+//提交当前取消数据
+const checksBoxTs = async (datas, arr, type) => {
+  const res = [...datas, ...arr].filter(
+    (item) => !(datas.some((p) => item == p) && arr.some((c) => item == c))
+  );
+
+  if (res && res.length) {
+    const obj = <any>{
+      role_id: res[res.length - 1],
+      user_id: role_id,
+    };
+    if (type == "add") {
+      obj.event = 1;
+    } else {
+      obj.event = 3;
+    }
+    const result = await GeneralDataReception({
+      serviceId: SERVICE_ID.roleScId,
+      dataContent: JSON.stringify(obj),
     });
+    if (result.code == 0) {
+      ElMessage.success(result.message);
+    } else {
+      ElMessage.error(result.message);
+    }
+  } else {
+    ElMessage.error("未选中数据");
   }
+};
+const submitForm = () => {
+  editDialogVisible.value = false;
+};
+
+const resetForm = () => {
+  editDialogVisible.value = false;
+};
+onBeforeMount(() => {
+  getAccountInfo();
+  getRoleData();
+  roleDetails();
 });
 </script>
 
@@ -147,11 +304,12 @@ onBeforeMount(() => {
       margin-right: 0;
     }
     .strategy-top {
-      height: 310px;
-    }
-    .strategy-bottom {
-      height: calc(100% - 335px);
+      // height: 310px;
+      height: 100%;
     }
+    // .strategy-bottom {
+    //   height: calc(100% - 335px);
+    // }
     .strategy {
       margin-top: 24px;
       &-content {
@@ -163,6 +321,7 @@ onBeforeMount(() => {
           box-shadow: 0px 3px 3px 0px rgba(0, 0, 0, 0.1);
           border-radius: 4px;
           margin-top: 16px;
+          border: 1px solid #f5f7fa;
           :deep .ck {
             display: flex;
             justify-content: space-between;
@@ -175,6 +334,9 @@ onBeforeMount(() => {
             }
           }
         }
+        .active {
+          border-color: #ac014d;
+        }
       }
     }
     .auth-tree {

+ 8 - 2
src/views/userManagement/account/index.vue

@@ -43,6 +43,7 @@ import { ref, reactive, onBeforeMount } from "vue";
 import { ElMessage, FormInstance, FormRules } from "element-plus";
 import Table from "@/components/tableTemp/index.vue";
 import Search from "@/components/search/index.vue";
+import Dialog from "@/components/dialog/index.vue";
 import { translateDataToTreeAll } from "@/utils/validate";
 import { GeneralDataReception, Query } from "@/api/dataIntegration";
 import * as _ from "lodash";
@@ -52,7 +53,7 @@ const router = useRouter();
 const ruleFormRef = ref<FormInstance>();
 const tableHeader = ref<any>([]);
 const tableData = ref<any>([]);
-const tableBtnGroup = [
+const tableBtnGroup = <any>[
   {
     name: "编辑",
     className: "editBtn",
@@ -206,7 +207,12 @@ const btnClick = (index, row, param) => {
     editDialogTitle.value = "编辑账号";
     ruleForm.value = _.cloneDeep(row);
   } else {
-    router.push("/userManagement/accountAuth");
+    router.push({
+      path: "/userManagement/accountAuth",
+      query: {
+        id: row.user_id,
+      },
+    });
   }
 };
 const delRest = () => {