zhaoke 1 жил өмнө
parent
commit
c82665ce31

+ 12 - 1
public/config.js

@@ -87,6 +87,8 @@ var NEW_DATACONTENT_ID = [
   13, //预警报警场景维护
   15, //预警报警策略维护
   18,
+  131, //登录策略管理
+  132, //账号登录策略授权
   54001,
   54002,
   54003,
@@ -191,6 +193,9 @@ var DATACONTENT_ID = {
   /***-----应用管理------***/
   appTableId: 39, //应用管理
 
+  /***-----登录策略------***/
+  loginPolicyId: 131, //登录策略
+
   /***-----数据查询------***/
   airportCode: 51063, // 数据查询-航班-航站列表
   flightDataQuery: 51000, //数据查询-航班-表格
@@ -207,6 +212,7 @@ var DATACONTENT_ID = {
   accountTableId: 54004, //账号管理-首页-列表
   accountRoleId: 54027, //账号管理-根据id查角色
   accountDetailsId: 54028, //账号管理-根据id查详情
+  accountStrategy: 132, //账号管理-登录策略-列表
 
   /***-----账号组管理------***/
   accountGroupTableId: 54005, //账号组管理-首页-列表
@@ -492,10 +498,15 @@ var SERVICE_ID = {
   /***-----账号组管理------***/
   accountGroupScId: 8015, //账号管理-增删改
 
+  /***-----登录策略------***/
+  loginPolicyScId: 10131, //账号管理-增删改
+
   /***-----角色管理------***/
   roleMsgId: 14, //角色管理-增删改
   roleMsgTreeId: 65060, //角色管理-权限树-增删改
   roleMsgAuthId: 65061, //角色管理-权限树规则-增删改
+  rolePolicyId: 10132, //账号管理-登录策略-删除
+  rolePolicyAddId: 10133, //账号管理-登录策略-删除
 
   /***-----系统设置------***/
   sysProtoTabId: 1, //系统设置-协议管理-表格-增删改
@@ -519,4 +530,4 @@ var SERVICE_ID = {
   /***-----离港管理------***/
   departureScId: 8011, //发送报警预警日志信息
 }
-var NEW_SERVICE_ID = [55001, 65015, 65024, 65002, 65026, 65060, 65061, 65001, 65005, 65008, 65004, 65007, 65009, 65010, 65011, 65013, 65014, 65024, 64015, 65016, 65017, 65018, 65019, 65020, 65021];
+var NEW_SERVICE_ID = [55001, 65015, 65024, 65002, 65026, 65060, 65061, 65001, 65005, 65008, 65004, 65007, 65009, 65010, 65011, 65013, 65014, 65024, 64015, 65016, 65017, 65018, 65019, 65020, 65021, 10131, 10132, 10133];

+ 1 - 1
src/router/routes/routes-file-two.ts

@@ -80,7 +80,7 @@ const HomeRoutes = {
     {
       path: '/userManagement/securityPolicy',
       name: 'SecurityPolicy',
-      meta: { title: '登录策略', roles: ['login_strategy_page'] },
+      meta: { title: '登录策略' },
       component: () =>
         import('@/views/systemSettings/securityPolicy/index.vue'),
     },

+ 19 - 103
src/views/BasicsData/airlineCompany/index.vue

@@ -1,12 +1,7 @@
 <template>
   <div class="airportInfo scroll-y">
     <div class="wrap">
-      <Minheader
-        :is-auth="true"
-        :is-statuser="true"
-        powerData="new_airlines_button"
-        @addForm="addForm"
-      >
+      <Minheader :is-auth="true" :is-statuser="true" powerData="new_airlines_button" @addForm="addForm">
         <template #header>
           <div class="status flex-wrap">
             <div class="manageTitle">航司信息维护</div>
@@ -14,129 +9,50 @@
         </template>
       </Minheader>
       <div class="app-containers">
-        <DataTable
-          :tableHeader="tableCols"
-          :tableData="tableData"
-          :tableBtnGroup="tableBtnGroup"
-          :tableProperty="{ rowKey: 'ID' }"
-          @btnClick="btnClick"
-        />
+        <DataTable :tableHeader="tableCols" :tableData="tableData" :tableBtnGroup="tableBtnGroup" :tableProperty="{ rowKey: 'ID' }" @btnClick="btnClick" />
       </div>
-      <Dialog
-        :flag="flag"
-        :type="type"
-        :msgTitle="msgTitle"
-        :delName="tableForm.fullName"
-        @resetForm="resetForm"
-        @delRest="delRest"
-        @submitForm="submitForm"
-        @delRemove="delRemove"
-      >
+      <Dialog :flag="flag" :type="type" :msgTitle="msgTitle" :delName="tableForm.fullName" @resetForm="resetForm" @delRest="delRest" @submitForm="submitForm" @delRemove="delRemove">
         <div class="diacont">
-          <el-form
-            :model="tableForm"
-            :rules="formRules"
-            ref="airlineCompanyForm"
-          >
+          <el-form :model="tableForm" :rules="formRules" ref="airlineCompanyForm">
             <el-row :gutter="24">
               <el-col>
-                <el-form-item
-                  label="航司ID"
-                  size="default"
-                  prop="airlineCompanyID"
-                  :rules="formRules.isNotNull"
-                >
-                  <el-input
-                    v-model="tableForm.airlineCompanyID"
-                    placeholder="请输入航司ID"
-                  />
+                <el-form-item label="航司ID" size="default" prop="airlineCompanyID" :rules="formRules.isNotNull">
+                  <el-input v-model="tableForm.airlineCompanyID" placeholder="请输入航司ID" />
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item
-                  label="中文名称"
-                  size="default"
-                  prop="fullName"
-                  :rules="formRules.isNotNull"
-                >
-                  <el-input
-                    v-model="tableForm.fullName"
-                    placeholder="请输入中文名称"
-                  />
+                <el-form-item label="中文名称" size="default" prop="fullName" :rules="formRules.isNotNull">
+                  <el-input v-model="tableForm.fullName" placeholder="请输入中文名称" />
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item
-                  label="中文简称"
-                  size="default"
-                  prop="abbreviation"
-                  :rules="formRules.isNotNull"
-                >
-                  <el-input
-                    v-model="tableForm.abbreviation"
-                    placeholder="请输入中文简称"
-                  />
+                <el-form-item label="中文简称" size="default" prop="abbreviation" :rules="formRules.isNotNull">
+                  <el-input v-model="tableForm.abbreviation" placeholder="请输入中文简称" />
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item
-                  label="英文全称"
-                  size="default"
-                  prop="englishFullName"
-                  :rules="formRules.isNotNull"
-                >
-                  <el-input
-                    v-model="tableForm.englishFullName"
-                    placeholder="请输入英文全称"
-                  />
+                <el-form-item label="英文全称" size="default" prop="englishFullName" :rules="formRules.isNotNull">
+                  <el-input v-model="tableForm.englishFullName" placeholder="请输入英文全称" />
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item
-                  label="英文简称"
-                  prop="englishAbbreviation"
-                  size="default"
-                  :rules="formRules.isNotNull"
-                >
-                  <el-input
-                    v-model="tableForm.englishAbbreviation"
-                    placeholder="请输入英文简称"
-                  />
+                <el-form-item label="英文简称" prop="englishAbbreviation" size="default" :rules="formRules.isNotNull">
+                  <el-input v-model="tableForm.englishAbbreviation" placeholder="请输入英文简称" />
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item
-                  label="航司二字码"
-                  size="default"
-                  prop="ITATCode"
-                  :rules="formRules.isNotNull"
-                >
-                  <el-input
-                    v-model="tableForm.ITATCode"
-                    placeholder="请输入航司二字码"
-                  />
+                <el-form-item label="航司二字码" size="default" prop="ITATCode" :rules="formRules.isNotNull">
+                  <el-input v-model="tableForm.ITATCode" placeholder="请输入航司二字码" />
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item
-                  label="航司三字码"
-                  size="default"
-                  prop="ICAOCode"
-                  :rules="formRules.isNotNull"
-                >
-                  <el-input
-                    v-model="tableForm.ICAOCode"
-                    placeholder="请输入航司三字码"
-                  />
+                <el-form-item label="航司三字码" size="default" prop="ICAOCode" :rules="formRules.isNotNull">
+                  <el-input v-model="tableForm.ICAOCode" placeholder="请输入航司三字码" />
                 </el-form-item>
               </el-col>
               <el-col>
                 <el-form-item label="备注" size="default">
-                  <el-input
-                    type="textarea"
-                    v-model="tableForm.remarks"
-                    placeholder="请输入备注"
-                  />
+                  <el-input type="textarea" v-model="tableForm.remarks" placeholder="请输入备注" />
                 </el-form-item>
               </el-col>
             </el-row>

+ 2 - 2
src/views/statisticalanalysis/dataException/func/index.js

@@ -1,9 +1,9 @@
 
 export function setSortMsg (name) {
   const sortMap = {
-    '国内出港': ['有预配载,无交接复核、机下交接、装机、关闭舱门数据。', '有预配载,有核单数据,无安检节点数据。或者,有预配载,有机下交接数据、装机、关闭舱门的其中一项,无交接复核数据。', '有预配载,交接复核时间大于机下交接时间。', '有预配载,机下交接时间等于装机完成时间。'],
+    '国内出港': ['有预配载,无机下交接、装机、关闭舱门数据。', '有预配载,有加货数据,无安检节点数据。或者,有预配载,有机下交接数据、装机、关闭舱门的其中一项,无交接复核数据。', '有预配载,交接复核时间大于机下交接时间。', '有预配载,机下交接时间等于装机完成时间。'],
     '国内进港': ['/', '有理货,无卸机、库区到达、货站交接的其中一项。', '有理货,卸机时间大于库区到达时间。', '有理货,卸机时间等于库区到达时间。'],
-    '国际出港': ['有实配,无交接复核、机下交接、装机、关闭舱门数据。', '有实配和机下交接数据,无交接复核数据。', '有实配,交接复核时间大于机下交接时间', '有实配,机下交接时间等于装机完成时间'],
+    '国际出港': ['有实配,无机下交接、装机、关闭舱门数据。', '有实配和机下交接数据,无交接复核数据。', '有实配,交接复核时间大于机下交接时间', '有实配,机下交接时间等于装机完成时间'],
     '国际进港': ['/', '有有理货,无卸机、货站交接的其中一项。', '/', '有理货,卸机完成时间等于货站交接时间。']
   }
   return sortMap[name]

+ 6 - 6
src/views/statisticalanalysis/dataException/views/detail.vue

@@ -250,7 +250,7 @@ export default {
           let datas = []
           if (fttp && !flighttype) {
             if (fttp !== '全部') {
-              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class?.includes(fttp))
             } else {
               datas = this.tableList.filter(item => item.flight_all_no == flightno)
             }
@@ -263,9 +263,9 @@ export default {
           }
           else if (fttp && flighttype) {
             if (fttp !== '全部' && flighttype !== '全部') {
-              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.second_department == flighttype && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.second_department == flighttype && item.index_class?.includes(fttp))
             } else if (fttp !== '全部' && flighttype === '全部') {
-              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class?.includes(fttp))
             } else if (fttp === '全部' && flighttype !== '全部') {
               datas = this.tableList.filter(item => item.flight_all_no == flightno && item.second_department == flighttype)
             } else {
@@ -280,7 +280,7 @@ export default {
           if (fttp && !flighttype) {
             let datas = []
             if (fttp !== '全部') {
-              datas = this.tableList.filter(item => item.index_class == fttp)
+              datas = this.tableList.filter(item => item.index_class?.includes(fttp))
             } else {
               datas = this.tableList
             }
@@ -296,9 +296,9 @@ export default {
           } else if (fttp && flighttype) {
             let datas = []
             if (fttp !== '全部' && flighttype !== '全部') {
-              datas = this.tableList.filter(item => item.second_department == flighttype && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.second_department == flighttype && item.index_class?.includes(fttp))
             } else if (fttp !== '全部' && flighttype === '全部') {
-              datas = this.tableList.filter(item => item.index_class == fttp)
+              datas = this.tableList.filter(item => item.index_class?.includes(fttp))
             } else if (fttp === '全部' && flighttype !== '全部') {
               datas = this.tableList.filter(item => item.second_department == flighttype)
             } else {

+ 6 - 6
src/views/statisticalanalysis/dataException/views/detailWay.vue

@@ -250,7 +250,7 @@ export default {
           let datas = []
           if (fttp && !flighttype) {
             if (fttp !== '全部') {
-              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class?.includes(fttp))
             } else {
               datas = this.tableList.filter(item => item.flight_all_no == flightno)
             }
@@ -263,9 +263,9 @@ export default {
           }
           else if (fttp && flighttype) {
             if (fttp !== '全部' && flighttype !== '全部') {
-              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.second_department == flighttype && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.second_department == flighttype && item.index_class?.includes(fttp))
             } else if (fttp !== '全部' && flighttype === '全部') {
-              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.flight_all_no == flightno && item.index_class?.includes(fttp))
             } else if (fttp === '全部' && flighttype !== '全部') {
               datas = this.tableList.filter(item => item.flight_all_no == flightno && item.second_department == flighttype)
             } else {
@@ -280,7 +280,7 @@ export default {
           if (fttp && !flighttype) {
             let datas = []
             if (fttp !== '全部') {
-              datas = this.tableList.filter(item => item.index_class == fttp)
+              datas = this.tableList.filter(item => item.index_class?.includes(fttp))
             } else {
               datas = this.tableList
             }
@@ -296,9 +296,9 @@ export default {
           } else if (fttp && flighttype) {
             let datas = []
             if (fttp !== '全部' && flighttype !== '全部') {
-              datas = this.tableList.filter(item => item.second_department == flighttype && item.index_class == fttp)
+              datas = this.tableList.filter(item => item.second_department == flighttype && item.index_class?.includes(fttp))
             } else if (fttp !== '全部' && flighttype === '全部') {
-              datas = this.tableList.filter(item => item.index_class == fttp)
+              datas = this.tableList.filter(item => item.index_class?.includes(fttp))
             } else if (fttp === '全部' && flighttype !== '全部') {
               datas = this.tableList.filter(item => item.second_department == flighttype)
             } else {

+ 152 - 96
src/views/systemSettings/securityPolicy/index.vue

@@ -1,7 +1,8 @@
 <template>
   <div class="airportInfo scroll-y">
     <div class="wrap">
-      <Minheader :is-auth="true" :is-statuser="true" powerData="new_login_policy_button" @addForm="addForm">
+      <!-- powerData="new_login_policy_button" -->
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
         <template #header>
           <div class="status flex-wrap">
             <div class="manageTitle">登录策略</div>
@@ -48,16 +49,16 @@
           ">
           <el-table-column prop="name" label="名称" class="infinite-list-item" />
           <el-table-column label="有效日期" class="infinite-list-item">
-            <el-table-column prop="china" label="开始日期" class="infinite-list-item" />
-            <el-table-column prop="englin" label="结束日期" class="infinite-list-item" />
+            <el-table-column prop="begindate" label="开始日期" class="infinite-list-item" />
+            <el-table-column prop="enddate" label="结束日期" class="infinite-list-item" />
           </el-table-column>
           <el-table-column label="有效时间" class="infinite-list-item">
-            <el-table-column prop="china" label="开始时间" class="infinite-list-item" />
-            <el-table-column prop="englin" label="结束时间" class="infinite-list-item" />
+            <el-table-column prop="begintime" label="开始时间" class="infinite-list-item" />
+            <el-table-column prop="endtime" label="结束时间" class="infinite-list-item" />
           </el-table-column>
-          <el-table-column prop="name" label="黑名单" class="infinite-list-item" />
-          <el-table-column prop="name" label="白名单" class="infinite-list-item" />
-          <el-table-column prop="name" label="描述" class="infinite-list-item" />
+          <el-table-column prop="black" label="黑名单" class="infinite-list-item" />
+          <el-table-column prop="white" label="白名单" class="infinite-list-item" />
+          <el-table-column prop="remark" label="描述" class="infinite-list-item" />
           <el-table-column v-if="tableBtnGroup.length" label="操作" :align="props.tableColumnProperty.align">
             <template #default="scope">
               <el-button v-for="(btn, index) in tableBtnGroup" :key="index" size="small" @click="handleClick(scope.$index, scope.row, btn.param)" :class="btn.className">{{ btn.name }}</el-button>
@@ -72,32 +73,36 @@
           @btnClick="btnClick"
         /> -->
       </div>
-      <Dialog width="628px" :flag="flag" :type="type" :msgTitle="msgTitle" @resetForm="resetForm" @delRest="delRest">
+      <Dialog width="628px" :flag="flag" :type="type" :msgTitle="msgTitle" :delName="tableForm.name" @submit-form="submitForm" @resetForm="resetForm" @delRest="delRest" @delRemove="delRemove">
         <div class="diacont">
-          <el-form :model="tableForm">
+          <el-form ref="securityPolicyForm" :rules="formRules" :model="tableForm">
             <el-row :gutter="24">
               <el-col>
-                <el-form-item label="策略名称" size="default">
+                <el-form-item label="策略名称" prop="name" :rules="formRules.isNotNull" size="default">
                   <el-input v-model="tableForm.name" placeholder="请输入策略名称" />
                 </el-form-item>
               </el-col>
               <el-col>
-                <el-form-item label="有效日期" size="default">
-                  <el-date-picker v-model="tableForm.china" type="date" placeholder="选择日期">
-                  </el-date-picker>
-                  <el-date-picker style="margin-left: 40px" v-model="tableForm.englin" type="date" placeholder="选择日期">
-                  </el-date-picker>
-                </el-form-item>
+                <div class="flex">
+                  <el-form-item label="有效日期" prop="begindate" :rules="formRules.isNotNull" size="default">
+                    <el-date-picker v-model="tableForm.begindate" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" placeholder="选择日期">
+                    </el-date-picker>
+                  </el-form-item>
+                  <el-form-item prop="enddate" :rules="formRules.isNotNull" size="default">
+                    <el-date-picker style="margin-left: 40px" format="YYYY-MM-DD" value-format="YYYY-MM-DD" v-model="tableForm.enddate" type="date" placeholder="选择日期">
+                    </el-date-picker>
+                  </el-form-item>
+                </div>
               </el-col>
               <el-col>
                 <el-form-item label="有效时间" size="default">
-                  <el-time-select v-model="tableForm.two" :picker-options="{
+                  <el-time-select v-model="tableForm.begintime" :picker-options="{
                       start: '08:30',
                       step: '00:15',
                       end: '18:30',
                     }" placeholder="选择时间">
                   </el-time-select>
-                  <el-time-select style="margin-left: 8px" v-model="tableForm.three" :picker-options="{
+                  <el-time-select style="margin-left: 40px" v-model="tableForm.endtime" :picker-options="{
                       start: '08:30',
                       step: '00:15',
                       end: '18:30',
@@ -109,12 +114,12 @@
                 <el-form-item label="黑名单" size="default">
                   <div class="father_box">
                     <!-- 生成的标签 -->
-                    <div v-for="(item, index) in TagsAll" :key="index" class="spanbox">
+                    <!-- <div v-for="(item, index) in TagsAll" :key="index" class="spanbox">
                       <span class="tagspan">{{ item }}</span>
                       <i class="span_close" @click="removeTag(index, item)"></i>
-                    </div>
+                    </div> -->
                     <!-- 输入框 -->
-                    <el-input style="width: 100%; border: none" placeholder="请输入黑名单" v-model="currentval" @keyup.enter="addTags" @keyup.delete="deleteTags" class="inputTag" ref="inputTag" type="text" />
+                    <el-input style="width: 100%; border: none" placeholder="请输入黑名单" v-model="tableForm.black" @keyup.enter="addTags" @keyup.delete="deleteTags" class="inputTag" ref="inputTag" type="text" />
                   </div>
                 </el-form-item>
               </el-col>
@@ -122,18 +127,18 @@
                 <el-form-item label="白名单" size="default">
                   <div class="father_box">
                     <!-- 生成的标签 -->
-                    <div v-for="(item, index) in TagsAlls" :key="index" class="spanbox">
+                    <!-- <div v-for="(item, index) in TagsAlls" :key="index" class="spanbox">
                       <span class="tagspan">{{ item }}</span>
                       <i class="span_close" @click="removeTags(index, item)"></i>
-                    </div>
+                    </div> -->
                     <!-- 输入框 -->
-                    <el-input style="width: 100%" placeholder="请输入白名单" v-model="currentvals" @keyup.enter="addTagss" @keyup.delete="deleteTagss" class="inputTag" ref="inputTag" type="text" />
+                    <el-input style="width: 100%" placeholder="请输入白名单" v-model="tableForm.white" @keyup.enter="addTagss" @keyup.delete="deleteTagss" class="inputTag" ref="inputTag" type="text" />
                   </div>
                 </el-form-item>
               </el-col>
               <el-col>
                 <el-form-item label="描述" size="default">
-                  <el-input type="textarea" v-model="tableForm.text" placeholder="请输入描述" />
+                  <el-input type="textarea" v-model="tableForm.remark" placeholder="请输入描述" />
                 </el-form-item>
               </el-col>
             </el-row>
@@ -147,6 +152,11 @@
 import DataTable from "@/components/tableTemp/index.vue";
 import Minheader from "@/components/minheader/index.vue";
 import Dialog from "@/components/dialog/index.vue";
+import { onMounted } from "vue";
+import { GeneralDataReception, Query } from "@/api/webApi";
+import { ElMessage } from "element-plus";
+const formRules = useElement().formRules;
+
 const router = useRouter();
 const props = defineProps({
   //表格参数
@@ -191,33 +201,30 @@ const tablePropertyDefault = {
   showSummary: false,
   rowKey: "",
 };
-const flag = ref<Boolean>(false); //弹窗开关
-const type = ref<String>(""); //判断是否删除
-const TagsAll = ref<Array>([]);
-const currentval = ref<String>("");
-const TagsAlls = ref<Array>([]);
-const currentvals = ref<String>("");
-const msgTitle = ref<String>("新增登录策略"); //弹窗标题
-const tableColsCopys = reactive<Object>({}); //弹窗
+const flag = ref<boolean>(false); //弹窗开关
+const type = ref<string>(""); //判断是否删除
+const TagsAll = ref<any>([]);
+const serviceId = ref<number | null>(null);
+const currentval = ref<string>("");
+const TagsAlls = ref<any>([]);
+const currentvals = ref<string>("");
+const msgTitle = ref<string>("新增登录策略"); //弹窗标题
+const tableColsCopys = reactive<any>({}); //弹窗
 const tableForm = reactive({
   name: "",
-  china: "",
-  englin: "",
-  two: "",
-  three: "",
-  text: "",
+  begindate: "",
+  enddate: "",
+  begintime: "",
+  endtime: "",
+  black: "",
+  white: "",
+  remark: "",
+  event: <number | string>"",
+  id: <number | string>"",
+  IDKey: "id",
 }); //弹窗内容
 //列表
-const tableData = ref([
-  {
-    name: "中国国际航空",
-    china: "国航",
-    englin: "AIRCHINA",
-    two: "CA",
-    three: "CCA",
-    text: "CA国航",
-  },
-]);
+const tableData = ref<any>([]);
 //表头
 const state = reactive({
   list: [
@@ -244,74 +251,107 @@ const tableBtnGroup = ref([
     is: "login_policy_deletion_button",
   },
 ]);
+const btnAuthMap = [
+  ,
+  "new_login_policy_button",
+  "login_policy_edit_button",
+  "login_policy_deletion_button",
+];
+//新增-编辑-删除
+const generalDataReception = async (data: any) => {
+  try {
+    const ndata = { ...data };
+    const { event }: { event: any } = ndata;
+    if (event == 1) {
+      delete ndata.id;
+    }
+    const { code } = await GeneralDataReception({
+      serviceId: SERVICE_ID.loginPolicyScId,
+      dataContent: JSON.stringify(ndata),
+      btnAuth: btnAuthMap[ndata.event],
+    });
+    if (code == 0) {
+      ElMessage.success(`操作成功`);
+      // this.$message.success("操作成功");
+      resetTable();
+      getQuery();
+      resetForm();
+      flag.value = false;
+    } else {
+      flag.value = false;
+      ElMessage.error(`操作失败`);
+      resetForm();
+    }
+  } catch (error) {
+    flag.value = false;
+    resetForm();
+  }
+};
+const resetTable = () => {
+  tableData.value = [];
+};
 //新增
 const addForm = () => {
   msgTitle.value = "新增登录策略";
+  for (const key in tableForm) {
+    if (Object.prototype.hasOwnProperty.call(tableForm, key)) {
+      if (key != "IDKey") {
+        tableForm[key] = "";
+      }
+    }
+  }
+  tableForm.event = 1;
   flag.value = true;
   type.value = "";
 };
+//确认提交
+const securityPolicyForm: any = ref(null);
+const submitForm = () => {
+  securityPolicyForm.value.validate((valid: any) => {
+    if (valid) {
+      generalDataReception(tableForm);
+    } else {
+      return false;
+    }
+  });
+};
 //取消
 const resetForm = () => {
+  securityPolicyForm.value?.resetFields();
   flag.value = false;
-  tableForm.name = "";
-  tableForm.china = "";
-  tableForm.englin = "";
-  tableForm.two = "";
-  tableForm.three = "";
-  tableForm.text = "";
   TagsAll.value = [];
   TagsAlls.value = [];
 };
-//编辑
-// const editDialog = (data) => {
-//   msgTitle.value = "编辑航司信息维护";
-//   flag.value = true;
-//   type.value = "";
-//   tableForm.name = data.name;
-//   tableForm.china = data.china;
-//   tableForm.englin = data.englin;
-//   tableForm.two = data.two;
-//   tableForm.three = data.three;
-//   tableForm.text = data.text;
-// };
-//编辑-删除
-const btnClick = (row, index, param) => {
-  if (param === 2) {
-    router.push({ path: "/systemSettings/securityPolicyedit" });
-    // msgTitle.value = "编辑登录策略";
-    // flag.value = true;
-    // type.value = "";
-    // tableForm.name = index.name;
-    // tableForm.china = index.china;
-    // tableForm.englin = index.englin;
-    // tableForm.two = index.two;
-    // tableForm.three = index.three;
-    // tableForm.text = index.text;
-  } else if (param === 3) {
-    msgTitle.value = "删除航司信息维护";
-    flag.value = true;
-    type.value = "del";
-  } else if (param === 4) {
-  }
-};
-//删除
-const eleDialog = () => {
-  msgTitle.value = "删除登录策略";
-  flag.value = true;
-  type.value = "del";
-};
 //删除
 const delRest = () => {
   flag.value = false;
 };
+const delRemove = () => {
+  tableForm.event = 3;
+  generalDataReception(tableForm);
+};
 //按钮点击index为当前行序号 row 为当前行 param按钮类型判断参数由父组件传过来
-const handleClick = (index: number, row: Object, param: number) => {
+const handleClick = (index: number, row: any, param: number) => {
   if (param === 2) {
-    router.push({ path: "/systemSettings/securityPolicyedit" });
+    msgTitle.value = "修改登录策略";
+    flag.value = true;
+    type.value = "";
+    for (const key in tableForm) {
+      if (Object.prototype.hasOwnProperty.call(row, key)) {
+        tableForm[key] = row[key];
+      }
+    }
+    tableForm.event = 2;
+    // router.push({ path: "/systemSettings/securityPolicyedit" });
   } else if (param === 3) {
     msgTitle.value = "删除航司信息维护";
     flag.value = true;
     type.value = "del";
+    for (const key in tableForm) {
+      if (Object.prototype.hasOwnProperty.call(row, key)) {
+        tableForm[key] = row[key];
+      }
+    }
   }
 };
 //行公共样式
@@ -324,7 +364,7 @@ const rowStyle = (row: Object, rowIndex: number) => {
   return styleJson;
 };
 //表格行class样式 可通过父组件直接传class名称修改当前行样式
-const tableRowClassName = (row: Object, rowIndex: number) => {
+const tableRowClassName = (row: any, rowIndex: number) => {
   if (row.row.rowClass) {
     return row.row.rowClass;
   }
@@ -370,6 +410,22 @@ const deleteTagss = () => {
 defineExpose({
   cellClass,
 });
+//获取列表数据
+const getQuery = async () => {
+  const res = await Query({
+    id: DATACONTENT_ID.loginPolicyId,
+    dataContent: [],
+  });
+  if (res.code == 0) {
+    const { returnData } = res;
+    tableData.value = returnData;
+  } else {
+    ElMessage.error(res.message);
+  }
+};
+onMounted(() => {
+  getQuery();
+});
 </script>
 <style lang="scss" scoped>
 ::v-deep .el-form-item__label {

+ 103 - 13
src/views/userManagement/account/auth.vue

@@ -21,25 +21,25 @@
             </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>
-              <el-checkbox-group v-model="checkboxGroup" size="default">
+              <el-checkbox-group v-model="checkboxGroup" @change="strategyChange" size="default">
                 <el-row :gutter="16">
-                  <el-col :span="8" v-for="item in groupData" :key="item.id">
+                  <el-col :span="8" v-for="item in strategyData" :key="item.id">
                     <div class="strategy-content-list">
-                      <el-checkbox class="ck" :title="item.label" :label="item.value">
-                        {{ item.label }}
+                      <el-checkbox class="ck" :title="item.name" :label="item.id">
+                        {{ item.name }}
                       </el-checkbox>
-                      <el-button style="margin-top:8px" size="default" type="primary" link>查看</el-button>
+                      <!-- <el-button style="margin-top:8px" size="default" type="primary" link>查看</el-button> -->
                     </div>
                   </el-col>
                 </el-row>
               </el-checkbox-group>
             </el-scrollbar>
           </div>
-        </div> -->
+        </div>
       </div>
       <div class="box auth-list">
         <div class="manageTitle">角色</div>
@@ -154,12 +154,14 @@ const ruleNewForm = ref<any>({
   query_col_conditon: "",
   query_row_condition: "",
 });
-const checkboxGroup = ref([1, 2]);
+const checkboxGroup = ref<any>([]);
 const roleGroup = ref<any>([]);
 const groupData = ref<any>([]);
 const roleData = ref<any>([]);
+const strategyData = ref<any>([]);
 const pageNum = ref(1);
 const checkedKeys = ref<any>([]);
+const strateKeys = ref<any>([]);
 const roleIndex = ref(null);
 const editDialogVisible = ref(false);
 const editDialogTitle = ref("查看规则");
@@ -177,6 +179,38 @@ const getAccountInfo = async () => {
     ElMessage.error(res.message);
   }
 };
+// 获取登录策略
+const getStrategyData = async () => {
+  const res = await Query({
+    id: DATACONTENT_ID.loginPolicyId,
+    dataContent: [],
+  });
+  if (res.code == 0) {
+    const { returnData } = res;
+    strategyData.value = returnData;
+  } else {
+    ElMessage.error(res.message);
+  }
+};
+// 获取已有登录策略
+const hasStrategyData = async () => {
+  const res: any = await Query({
+    id: DATACONTENT_ID.accountStrategy,
+    dataContent: [{ userid: role_id }],
+    event: "0",
+  });
+  if (res.code == 0 && res.returnData.length) {
+    const { returnData }: { returnData: any } = res;
+    const nwords: any = [];
+    returnData.map((i) => {
+      nwords.push(i.logintacid);
+    });
+    checkboxGroup.value = [...nwords];
+    strateKeys.value.push([...nwords]);
+  } else {
+    ElMessage.error(res.message);
+  }
+};
 //获取列表
 const getRoleData = async () => {
   const result = await Query({
@@ -223,6 +257,24 @@ const checkChange = (arr) => {
   }
 };
 
+const strategyChange = (arr) => {
+  strateKeys.value.push(arr);
+  const data1 = strateKeys.value[strateKeys.value.length - 1]; //最后一条数据
+  const data2 = strateKeys.value[strateKeys.value.length - 2]; //倒数第二条数据
+  console.log(strateKeys.value);
+  console.log(data1);
+  console.log(data2);
+  if (strateKeys.value?.length < 2) {
+    strategyBoxTs(data1, [], "add");
+  } else {
+    if (data1.length > data2.length) {
+      strategyBoxTs(data1, data2, "add");
+    } else {
+      strategyBoxTs(data1, data2, "del");
+    }
+  }
+};
+
 //当前点击的角色
 const handleClick = (item, index) => {
   roleIndex.value = index;
@@ -278,6 +330,43 @@ const checksBoxTs = async (datas, arr, type) => {
     ElMessage.error("未选中数据");
   }
 };
+//登录策略-提交当前取消数据
+const strategyBoxTs = async (datas, arr, type) => {
+  let res = <any>null;
+  if (datas?.length && arr?.length) {
+    res = [...datas, ...arr].filter(
+      (item) => !(datas.some((p) => item == p) && arr.some((c) => item == c))
+    );
+  } else {
+    if (datas?.length && !arr?.length) {
+      res = [...datas];
+    } else {
+      res = [...arr];
+    }
+  }
+  if (res && res.length) {
+    const obj = <any>{
+      logintacid: res[res.length - 1],
+      userid: role_id,
+    };
+    if (type == "add") {
+      obj.event = 1;
+    } else {
+      obj.event = 3;
+    }
+    const result = await GeneralDataReception({
+      serviceId: SERVICE_ID.rolePolicyAddId,
+      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;
 };
@@ -287,6 +376,8 @@ const resetForm = () => {
 };
 onBeforeMount(() => {
   getAccountInfo();
+  getStrategyData();
+  hasStrategyData();
   getRoleData();
   roleDetails();
 });
@@ -304,12 +395,11 @@ onBeforeMount(() => {
       margin-right: 0;
     }
     .strategy-top {
-      // height: 310px;
-      height: 100%;
+      height: 310px;
+    }
+    .strategy-bottom {
+      height: calc(100% - 335px);
     }
-    // .strategy-bottom {
-    //   height: calc(100% - 335px);
-    // }
     .strategy {
       margin-top: 24px;
       &-content {