|
@@ -1,7 +1,8 @@
|
|
<template>
|
|
<template>
|
|
<div class="airportInfo scroll-y">
|
|
<div class="airportInfo scroll-y">
|
|
<div class="wrap">
|
|
<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>
|
|
<template #header>
|
|
<div class="status flex-wrap">
|
|
<div class="status flex-wrap">
|
|
<div class="manageTitle">登录策略</div>
|
|
<div class="manageTitle">登录策略</div>
|
|
@@ -48,16 +49,16 @@
|
|
">
|
|
">
|
|
<el-table-column prop="name" label="名称" class="infinite-list-item" />
|
|
<el-table-column prop="name" label="名称" class="infinite-list-item" />
|
|
<el-table-column 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>
|
|
<el-table-column 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="begintime" label="开始时间" class="infinite-list-item" />
|
|
|
|
+ <el-table-column prop="endtime" label="结束时间" class="infinite-list-item" />
|
|
</el-table-column>
|
|
</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">
|
|
<el-table-column v-if="tableBtnGroup.length" label="操作" :align="props.tableColumnProperty.align">
|
|
<template #default="scope">
|
|
<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>
|
|
<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"
|
|
@btnClick="btnClick"
|
|
/> -->
|
|
/> -->
|
|
</div>
|
|
</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">
|
|
<div class="diacont">
|
|
- <el-form :model="tableForm">
|
|
|
|
|
|
+ <el-form ref="securityPolicyForm" :rules="formRules" :model="tableForm">
|
|
<el-row :gutter="24">
|
|
<el-row :gutter="24">
|
|
<el-col>
|
|
<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-input v-model="tableForm.name" placeholder="请输入策略名称" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<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-col>
|
|
<el-col>
|
|
<el-form-item label="有效时间" size="default">
|
|
<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',
|
|
start: '08:30',
|
|
step: '00:15',
|
|
step: '00:15',
|
|
end: '18:30',
|
|
end: '18:30',
|
|
}" placeholder="选择时间">
|
|
}" placeholder="选择时间">
|
|
</el-time-select>
|
|
</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',
|
|
start: '08:30',
|
|
step: '00:15',
|
|
step: '00:15',
|
|
end: '18:30',
|
|
end: '18:30',
|
|
@@ -109,12 +114,12 @@
|
|
<el-form-item label="黑名单" size="default">
|
|
<el-form-item label="黑名单" size="default">
|
|
<div class="father_box">
|
|
<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>
|
|
<span class="tagspan">{{ item }}</span>
|
|
<i class="span_close" @click="removeTag(index, item)"></i>
|
|
<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>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
@@ -122,18 +127,18 @@
|
|
<el-form-item label="白名单" size="default">
|
|
<el-form-item label="白名单" size="default">
|
|
<div class="father_box">
|
|
<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>
|
|
<span class="tagspan">{{ item }}</span>
|
|
<i class="span_close" @click="removeTags(index, item)"></i>
|
|
<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>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col>
|
|
<el-col>
|
|
<el-form-item label="描述" size="default">
|
|
<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-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
</el-row>
|
|
</el-row>
|
|
@@ -147,6 +152,11 @@
|
|
import DataTable from "@/components/tableTemp/index.vue";
|
|
import DataTable from "@/components/tableTemp/index.vue";
|
|
import Minheader from "@/components/minheader/index.vue";
|
|
import Minheader from "@/components/minheader/index.vue";
|
|
import Dialog from "@/components/dialog/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 router = useRouter();
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
//表格参数
|
|
//表格参数
|
|
@@ -191,33 +201,30 @@ const tablePropertyDefault = {
|
|
showSummary: false,
|
|
showSummary: false,
|
|
rowKey: "",
|
|
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({
|
|
const tableForm = reactive({
|
|
name: "",
|
|
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({
|
|
const state = reactive({
|
|
list: [
|
|
list: [
|
|
@@ -244,74 +251,107 @@ const tableBtnGroup = ref([
|
|
is: "login_policy_deletion_button",
|
|
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 = () => {
|
|
const addForm = () => {
|
|
msgTitle.value = "新增登录策略";
|
|
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;
|
|
flag.value = true;
|
|
type.value = "";
|
|
type.value = "";
|
|
};
|
|
};
|
|
|
|
+//确认提交
|
|
|
|
+const securityPolicyForm: any = ref(null);
|
|
|
|
+const submitForm = () => {
|
|
|
|
+ securityPolicyForm.value.validate((valid: any) => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ generalDataReception(tableForm);
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+};
|
|
//取消
|
|
//取消
|
|
const resetForm = () => {
|
|
const resetForm = () => {
|
|
|
|
+ securityPolicyForm.value?.resetFields();
|
|
flag.value = false;
|
|
flag.value = false;
|
|
- tableForm.name = "";
|
|
|
|
- tableForm.china = "";
|
|
|
|
- tableForm.englin = "";
|
|
|
|
- tableForm.two = "";
|
|
|
|
- tableForm.three = "";
|
|
|
|
- tableForm.text = "";
|
|
|
|
TagsAll.value = [];
|
|
TagsAll.value = [];
|
|
TagsAlls.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 = () => {
|
|
const delRest = () => {
|
|
flag.value = false;
|
|
flag.value = false;
|
|
};
|
|
};
|
|
|
|
+const delRemove = () => {
|
|
|
|
+ tableForm.event = 3;
|
|
|
|
+ generalDataReception(tableForm);
|
|
|
|
+};
|
|
//按钮点击index为当前行序号 row 为当前行 param按钮类型判断参数由父组件传过来
|
|
//按钮点击index为当前行序号 row 为当前行 param按钮类型判断参数由父组件传过来
|
|
-const handleClick = (index: number, row: Object, param: number) => {
|
|
|
|
|
|
+const handleClick = (index: number, row: any, param: number) => {
|
|
if (param === 2) {
|
|
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) {
|
|
} else if (param === 3) {
|
|
msgTitle.value = "删除航司信息维护";
|
|
msgTitle.value = "删除航司信息维护";
|
|
flag.value = true;
|
|
flag.value = true;
|
|
type.value = "del";
|
|
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;
|
|
return styleJson;
|
|
};
|
|
};
|
|
//表格行class样式 可通过父组件直接传class名称修改当前行样式
|
|
//表格行class样式 可通过父组件直接传class名称修改当前行样式
|
|
-const tableRowClassName = (row: Object, rowIndex: number) => {
|
|
|
|
|
|
+const tableRowClassName = (row: any, rowIndex: number) => {
|
|
if (row.row.rowClass) {
|
|
if (row.row.rowClass) {
|
|
return row.row.rowClass;
|
|
return row.row.rowClass;
|
|
}
|
|
}
|
|
@@ -370,6 +410,22 @@ const deleteTagss = () => {
|
|
defineExpose({
|
|
defineExpose({
|
|
cellClass,
|
|
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>
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
::v-deep .el-form-item__label {
|
|
::v-deep .el-form-item__label {
|