zhongxiaoyu vor 2 Jahren
Ursprung
Commit
83f2fe67d3

+ 10 - 0
src/components/minheader/index.vue

@@ -20,6 +20,11 @@
         <Search @clear="clear" @search="search" />
         <!-- <el-button type="danger" size="default" class="br L12">搜索</el-button> -->
       </template>
+      <template v-if="isMeasure">
+        <el-button size="default" plain class="btn-white br" @click="addBbut()"
+          >测试</el-button
+        >
+      </template>
       <template v-if="isPreser">
         <el-button
           type="danger"
@@ -71,6 +76,11 @@ const props = defineProps({
     type: Boolean,
     default: false,
   },
+  //是否显示测试
+  isMeasure: {
+    type: Boolean,
+    default: false,
+  },
 });
 //搜索内容
 const input = ref("");

+ 47 - 1
src/router/routes/routes-file-four.ts

@@ -15,6 +15,14 @@ const HomeRoutes = {
       component: () =>
         import("@/views/systemSettings/securityPolicy/index.vue"),
     },
+    {
+      path: "/systemSettings/securityPolicyedit",
+      name: "SecurityPolicyedit",
+      hidden: true,
+      meta: { title: "安全策略编辑", elSvgIcon: "Fold", icon: "table" },
+      component: () =>
+        import("@/views/systemSettings/securityPolicy/securityPolicyedit.vue"),
+    },
     {
       path: "/systemSettings/warningSet",
       name: "WarningSet",
@@ -47,12 +55,42 @@ const HomeRoutes = {
       meta: { title: "查询模板", elSvgIcon: "Fold", icon: "table" },
       component: () => import("@/views/systemSettings/queryTemplate/index.vue"),
     },
+    {
+      path: "/systemSettings/queryTemplateAdd",
+      name: "QueryTemplateAdd",
+      hidden: true,
+      meta: { title: "新增查询模板", elSvgIcon: "Fold", icon: "table" },
+      component: () =>
+        import("@/views/systemSettings/queryTemplate/queryTemplateAdd.vue"),
+    },
+    {
+      path: "/systemSettings/queryTemplateColumn",
+      name: "QueryTemplateColumn",
+      hidden: true,
+      meta: { title: "查询模板设置", elSvgIcon: "Fold", icon: "table" },
+      component: () =>
+        import("@/views/systemSettings/queryTemplate/queryTemplateColumn.vue"),
+    },
     {
       path: "/systemSettings/sourceservice",
       name: "Sourceservice",
-      meta: { title: "数据源服务", elSvgIcon: "Fold", icon: "table" },
+      meta: { title: "源数据管理", elSvgIcon: "Fold", icon: "table" },
       component: () => import("@/views/systemSettings/sourceservice/index.vue"),
     },
+    {
+      path: "/systemSettings/sourceserviceEdit",
+      name: "SourceserviceEdit",
+      hidden: true,
+      meta: { title: "编辑源数据管理", elSvgIcon: "Fold", icon: "table" },
+      component: () =>
+        import("@/views/systemSettings/sourceserviceEdit/index.vue"),
+    },
+    {
+      path: "/systemSettings/sourceTube",
+      name: "SourceTube",
+      meta: { title: "数据源服务", elSvgIcon: "Fold", icon: "table" },
+      component: () => import("@/views/systemSettings/sourceTube/index.vue"),
+    },
     {
       path: "/systemSettings/protocolManagement",
       name: "ProtocolManagement",
@@ -66,6 +104,14 @@ const HomeRoutes = {
       meta: { title: "数据结构管理", elSvgIcon: "Fold", icon: "table" },
       component: () => import("@/views/systemSettings/datastructure/index.vue"),
     },
+    {
+      path: "/systemSettings/datastructureTerm",
+      name: "DatastructureTerm",
+      hidden: true,
+      meta: { title: "数据项", elSvgIcon: "Fold", icon: "table" },
+      component: () =>
+        import("@/views/systemSettings/datastructure/datastructureTerm.vue"),
+    },
     {
       path: "/systemSettings/messageTemplate",
       name: "MessageTemplate",

+ 76 - 4
src/router/routes/routes-file-six.ts

@@ -8,16 +8,88 @@ const HomeRoutes = {
   //using el svg icon, the elSvgIcon first when at the same time using elSvgIcon and icon
   meta: { title: "综合可视化", elSvgIcon: "Fold" },
   children: [
+    {
+      path: "/baggageManagement/departure/station",
+      name: "InternalDeparture",
+      meta: { title: "国内出港", elSvgIcon: "Fold", icon: "table" },
+      component: () => import("@/views/baggageManagement/departure/station/index.vue"),
+      children: [
+        {
+          path: "/baggageManagement/departure/station",
+          name: "DepartureStation",
+          meta: { title: "国内出港航站视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/station/index.vue"),
+        },
+        {
+          path: "/baggageManagement/departure/flight",
+          name: "DepartureFlight",
+          meta: { title: "国内出港航班视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/flight/index.vue"),
+        },
+        {
+          path: "/baggageManagement/departure/waybill",
+          name: "DepartureWaybill",
+          meta: { title: "国内出港运单视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/waybill/index.vue"),
+        },
+        {
+          path: "/baggageManagement/departure/goods",
+          name: "DepartureGoods",
+          meta: { title: "国内出港行李视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/goods/index.vue"),
+        }
+      ]
+    },
     {
       path: "/baggageManagement/departure",
-      name: "Departure",
-      meta: { title: "出港相关", elSvgIcon: "Fold", icon: "table" },
-      component: () => import("@/views/baggageManagement/departure/index.vue"),
+      name: "DepartureC",
+      meta: { title: "国际出港", elSvgIcon: "Fold", icon: "table" },
+      component: () => import("@/views/baggageManagement/departureC/index.vue"),
+    },
+    {
+      path: "/baggageManagement/Arrival/station",
+      name: "InternalArrival",
+      meta: { title: "国内进港", elSvgIcon: "Fold", icon: "table" },
+      component: () => import("@/views/baggageManagement/departure/station/index.vue"),
+      children: [
+        {
+          path: "/baggageManagement/arrival/station",
+          name: "ArrivalStation",
+          meta: { title: "国内进港航站视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/station/index.vue"),
+        },
+        {
+          path: "/baggageManagement/arrival/flight",
+          name: "ArrivalFlight",
+          meta: { title: "国内进港航班视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/flight/index.vue"),
+        },
+        {
+          path: "/baggageManagement/arrival/waybill",
+          name: "ArrivalWaybill",
+          meta: { title: "国内进港运单视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/waybill/index.vue"),
+        },
+        {
+          path: "/baggageManagement/arrival/goods",
+          name: "ArrivalGoods",
+          meta: { title: "国内进港行李视图", elSvgIcon: "Fold", icon: "table" },
+          component: () =>
+            import("@/views/baggageManagement/departure/goods/index.vue"),
+        }
+      ]
     },
     {
       path: "/baggageManagement/arrival",
       name: "Arrival",
-      meta: { title: "进港相关", elSvgIcon: "Fold", icon: "table" },
+      meta: { title: "国际进港", elSvgIcon: "Fold", icon: "table" },
       component: () => import("@/views/baggageManagement/arrival/index.vue"),
     },
     {

+ 0 - 1
src/views/BasicsData/airportCompany/index.vue

@@ -37,7 +37,6 @@
               </el-col>
               <el-col>
                 <el-form-item label="上级公司" size="default">
-                  <!-- <el-input v-model="tableForm.china" /> -->
                   <el-select
                     style="width: 100%"
                     v-model="tableForm.china"

+ 11 - 0
src/views/baggageManagement/departure/flight/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <div></div>
+</template>
+<script lang="ts">
+import { defineComponent } from "vue";
+
+export default defineComponent({
+  setup() {},
+});
+</script>
+<style lang="scss" scoped></style>

+ 11 - 0
src/views/baggageManagement/departure/goods/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <div></div>
+</template>
+<script lang="ts">
+import { defineComponent } from "vue";
+
+export default defineComponent({
+  setup() {},
+});
+</script>
+<style lang="scss" scoped></style>

+ 11 - 0
src/views/baggageManagement/departure/station/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <div></div>
+</template>
+<script lang="ts">
+import { defineComponent } from "vue";
+
+export default defineComponent({
+  setup() {},
+});
+</script>
+<style lang="scss" scoped></style>

+ 11 - 0
src/views/baggageManagement/departure/waybill/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <div></div>
+</template>
+<script lang="ts">
+import { defineComponent } from "vue";
+
+export default defineComponent({
+  setup() {},
+});
+</script>
+<style lang="scss" scoped></style>

+ 353 - 0
src/views/systemSettings/datastructure/datastructureTerm.vue

@@ -0,0 +1,353 @@
+<template>
+  <div class="airportInfo scroll-y">
+    <div class="wrap">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">数据项</div>
+          </div>
+        </template></Minheader
+      >
+      <div class="app-containers">
+        <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        />
+      </div>
+      <Dialog
+        width="800px"
+        :flag="flag"
+        :type="type"
+        :msgTitle="msgTitle"
+        @resetForm="resetForm"
+        @delRest="delRest"
+      >
+        <div class="diacont">
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col :span="12">
+                <el-form-item label="数据项名称" size="default">
+                  <el-input
+                    v-model="tableForm.name"
+                    placeholder="请输入数据项名称"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="数据项类型" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.china"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="输出标识符" size="default">
+                  <el-input
+                    v-model="tableForm.englin"
+                    placeholder="请输入输出标识符"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="描述" size="default">
+                  <el-input v-model="tableForm.two" placeholder="请输入描述" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="唯一项" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.three"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="必填项" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="多条拆分" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text1"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="取值表达式" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.text2"
+                    placeholder="请输入取值表达式"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="实时计算表达式" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.text3"
+                    placeholder="请输入实时计算表达式"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="计算结果标识符" size="default">
+                  <el-input
+                    v-model="tableForm.text4"
+                    placeholder="请输入计算结果标识符"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="计算参数" size="default">
+                  <el-input
+                    v-model="tableForm.text5"
+                    placeholder="请输入计算参数"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="计算数据源" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text6"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </Dialog>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import DataTable from "@/components/tableTemp/index.vue";
+import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增数据项"); //弹窗标题
+const tableColsCopys = reactive<Object>({}); //弹窗
+const tableOptionser = ref<Array>([]); //弹窗下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+  text1: "",
+  text2: "",
+  text3: "",
+  text4: "",
+  text5: "",
+  text6: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+    text: "测试",
+    text1: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+    text: "测试",
+    text1: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+    text: "测试",
+    text1: "测试",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "项名称", key: "name" },
+    { label: "输出标识符", key: "china" },
+    { label: "数据类型", key: "englin" },
+    { label: "唯一项", key: "two" },
+    { label: "必填项", key: "three" },
+    { label: "拆分项", key: "text" },
+    { label: "计算数据源", key: "text1" },
+  ],
+  listLoading: true,
+});
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增数据项";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+  tableForm.text1 = "";
+  tableForm.text2 = "";
+  tableForm.text3 = "";
+  tableForm.text4 = "";
+  tableForm.text5 = "";
+  tableForm.text6 = "";
+};
+//编辑
+// 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) {
+    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;
+    tableForm.text1 = index.text1;
+    tableForm.text2 = index.text2;
+    tableForm.text3 = index.text3;
+    tableForm.text4 = index.text4;
+    tableForm.text5 = index.text5;
+    tableForm.text6 = index.text6;
+  } 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;
+};
+</script>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 110px;
+}
+.app-containers {
+  height: calc(100vh - 180px);
+}
+</style>

+ 212 - 7
src/views/systemSettings/datastructure/index.vue

@@ -1,11 +1,216 @@
 <template>
-  <div></div>
+  <div class="airportInfo scroll-y">
+    <div class="wrap">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">数据结构</div>
+          </div>
+        </template></Minheader
+      >
+      <div class="app-containers">
+        <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        />
+      </div>
+      <Dialog
+        width="600px"
+        :flag="flag"
+        :type="type"
+        :msgTitle="msgTitle"
+        @resetForm="resetForm"
+        @delRest="delRest"
+      >
+        <div class="diacont">
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col>
+                <el-form-item label="结构名称" size="default">
+                  <el-input
+                    v-model="tableForm.name"
+                    placeholder="请输入结构名称"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="数据格式" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.china"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="事件标识" size="default">
+                  <el-input
+                    v-model="tableForm.englin"
+                    placeholder="请输入事件标识"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="描述" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.two"
+                    placeholder="请输入备注"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </Dialog>
+    </div>
+  </div>
 </template>
-<script lang="ts">
-import { defineComponent } from "vue";
-
-export default defineComponent({
-  setup() {},
+<script setup lang="ts">
+import DataTable from "@/components/tableTemp/index.vue";
+import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const router = useRouter();
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增数据结构"); //弹窗标题
+const tableColsCopys = reactive<Object>({}); //弹窗\
+const tableOptionser = ref<Array>([]); //弹窗下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+  time: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "结构名称", key: "name" },
+    { label: "数据格式", key: "china" },
+    { label: "事件标识", key: "englin" },
+    { label: "描述", key: "two" },
+  ],
+  listLoading: true,
 });
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "数据项",
+    className: "editBtn",
+    param: 4,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增数据结构";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+};
+//编辑
+// 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) {
+    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;
+    // tableForm.text1 = index.text1;
+    // tableForm.text2 = index.text2;
+  } else if (param === 3) {
+    msgTitle.value = "删除数据结构";
+    flag.value = true;
+    type.value = "del";
+  } else if (param === 4) {
+    router.push({ path: "/systemSettings/datastructureTerm" });
+  }
+};
+//删除
+const eleDialog = () => {
+  msgTitle.value = "删除数据结构";
+  flag.value = true;
+  type.value = "del";
+};
+//删除
+const delRest = () => {
+  flag.value = false;
+};
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 90px;
+}
+</style>

+ 163 - 7
src/views/systemSettings/messageTemplate/index.vue

@@ -1,11 +1,167 @@
 <template>
-  <div></div>
+  <div class="airportInfo scroll-y">
+    <div class="wrap">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">消息模板</div>
+          </div>
+        </template></Minheader
+      >
+      <div class="app-containers">
+        <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        />
+      </div>
+      <Dialog
+        :flag="flag"
+        :type="type"
+        :msgTitle="msgTitle"
+        @resetForm="resetForm"
+        @delRest="delRest"
+      >
+        <div class="diacont">
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col>
+                <el-form-item label="名称" size="default">
+                  <el-input v-model="tableForm.name" placeholder="请输入名称" />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="描述" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.china"
+                    placeholder="请输入描述"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </Dialog>
+    </div>
+  </div>
 </template>
-<script lang="ts">
-import { defineComponent } from "vue";
-
-export default defineComponent({
-  setup() {},
+<script setup lang="ts">
+import DataTable from "@/components/tableTemp/index.vue";
+import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增消息模板"); //弹窗标题
+const tableColsCopys = reactive<Object>({}); //弹窗
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "中国国际航空",
+    china: "国航",
+  },
+  {
+    name: "中国国际航空",
+    china: "国航",
+  },
+  {
+    name: "中国国际航空",
+    china: "国航",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "名称", key: "name" },
+    { label: "描述", key: "china" },
+  ],
+  listLoading: true,
 });
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增消息模板";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+};
+//编辑
+// 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) {
+    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;
+};
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 50px;
+}
+.app-containers {
+  height: calc(100vh - 180px);
+}
+</style>

+ 124 - 5
src/views/systemSettings/queryTemplate/index.vue

@@ -1,19 +1,138 @@
 <template>
-  <div class="airportInfo">
+  <div class="airportInfo scroll-y">
     <div class="wrap">
-      <Minheader :is-auth="true" :is-statuser="true">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
         <template #header>
           <div class="status flex-wrap">
             <div class="manageTitle">查询模板</div>
           </div>
         </template></Minheader
       >
-      <DataTable />
+      <div class="app-containers">
+        <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        />
+      </div>
     </div>
   </div>
 </template>
 <script setup lang="ts">
-import DataTable from "@/views/table/index.vue";
+import DataTable from "@/components/tableTemp/index.vue";
 import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const router = useRouter();
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增查询模板"); //弹窗标题
+const tableColsCopys = reactive<Object>({}); //弹窗
+const tableOptionser = ref<Array>([]); //弹窗下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "查询模板名称", key: "name" },
+    { label: "查询模板协议", key: "china" },
+    { label: "查询模板描述", key: "englin" },
+  ],
+  listLoading: true,
+});
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  router.push({ path: "/systemSettings/queryTemplateAdd" });
+  // msgTitle.value = "新增查询模板";
+  // flag.value = true;
+  // type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+};
+//编辑
+// 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/queryTemplateColumn" });
+  } 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;
+};
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 100px;
+}
+.app-containers {
+  height: calc(100vh - 180px);
+}
+</style>

+ 109 - 0
src/views/systemSettings/queryTemplate/queryTemplateAdd.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class="airportInfo scroll-y">
+    <Minheader
+      :is-statuser="true"
+      :is-Preser="true"
+      :is-Measure="true"
+      @preserForm="preserForm"
+    >
+      <template #header>
+        <div class="status flex-wrap">
+          <div class="manageTitle">新增查询模板</div>
+        </div>
+      </template></Minheader
+    >
+    <div class="app-container">
+      <el-form :model="tableForm">
+        <el-row :gutter="24">
+          <el-col :span="5">
+            <el-form-item label="查询模板名称" size="default">
+              <el-input
+                v-model="tableForm.name"
+                placeholder="请输入查询模板名称"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="5">
+            <el-form-item label="查询协议" size="default">
+              <el-select
+                style="width: 100%"
+                v-model="tableForm.china"
+                class="input-shadow"
+                filterable
+                default-first-option
+                clearable
+                placeholder="请选择查询协议"
+              >
+                <el-option
+                  v-for="item in tableOptionser"
+                  :key="item.v ? item.v : item.planDepartureApt"
+                  :label="item.k ? item.k : item.planDepartureApt"
+                  :value="item.v ? item.v : item.planDepartureApt"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="14">
+            <el-form-item label="查询模板描述" size="default">
+              <el-input
+                v-model="tableForm.englin"
+                placeholder="请输入查询模板描述"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col>
+            <el-form-item label="查询配置" size="default">
+              <el-input
+                :autosize="{ minRows: 4, maxRows: 4 }"
+                type="textarea"
+                v-model="tableForm.two"
+                placeholder="请输入查询配置"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col>
+            <el-form-item label="查询语句" size="default">
+              <el-input
+                :autosize="{ minRows: 24, maxRows: 24 }"
+                type="textarea"
+                v-model="tableForm.three"
+                placeholder="请输入查询语句"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import Minheader from "@/components/minheader/index.vue";
+const router = useRouter();
+const tableOptionser = ref<Array>([]); //下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //内容
+//保存
+const preserForm = () => {
+  router.push({ path: "/systemSettings/queryTemplate" });
+};
+</script>
+
+<style lang="scss" scoped>
+.airportInfo {
+  padding: 24px;
+  height: 100%;
+  background: #ffffff;
+  border-radius: 4px;
+}
+::v-deep .el-form-item__label {
+  width: 110px;
+}
+</style>

+ 408 - 0
src/views/systemSettings/queryTemplate/queryTemplateColumn.vue

@@ -0,0 +1,408 @@
+<template>
+  <div class="airportInfo scroll-y">
+    <div class="wrap">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">查询项设置</div>
+          </div>
+        </template></Minheader
+      >
+      <div class="app-containers">
+        <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        />
+      </div>
+      <Dialog
+        width="734px"
+        :flag="flag"
+        :type="type"
+        :msgTitle="msgTitle"
+        @resetForm="resetForm"
+        @delRest="delRest"
+      >
+        <div class="diacont">
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col :span="12">
+                <el-form-item label="名称" size="default">
+                  <el-input v-model="tableForm.name" placeholder="请输入名称" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="标签" size="default">
+                  <el-input
+                    v-model="tableForm.china"
+                    placeholder="请输入标签"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="描述" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.englin"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="排序" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.two"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="过滤" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.three"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="显示" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="数据类型" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text1"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="分组" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text2"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="下拉" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text3"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="合计" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text4"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="字段排序" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.text5"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </Dialog>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import DataTable from "@/components/tableTemp/index.vue";
+import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增查询项"); //弹窗标题
+const tableColsCopys = reactive<Object>({}); //弹窗
+const tableOptionser = ref<Array>([]); //弹窗下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+  text1: "",
+  text2: "",
+  text3: "",
+  text4: "",
+  text5: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+    text: "测试",
+    text1: "测试",
+    text2: "测试",
+    text3: "测试",
+    text4: "测试",
+    text5: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+    text: "测试",
+    text1: "测试",
+    text2: "测试",
+    text3: "测试",
+    text4: "测试",
+    text5: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+    text: "测试",
+    text1: "测试",
+    text2: "测试",
+    text3: "测试",
+    text4: "测试",
+    text5: "测试",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "名称", key: "name" },
+    { label: "标签", key: "china" },
+    { label: "描述", key: "englin" },
+    { label: "排序", key: "two" },
+    { label: "过滤", key: "three" },
+    { label: "显示", key: "text" },
+    { label: "分组", key: "text1" },
+    { label: "下拉", key: "text2" },
+    { label: "数据类型", key: "text3" },
+    { label: "字段排位", key: "text4" },
+    { label: "合计", key: "text5" },
+  ],
+  listLoading: true,
+});
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增查询项";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+  tableForm.text1 = "";
+  tableForm.text2 = "";
+  tableForm.text3 = "";
+  tableForm.text4 = "";
+  tableForm.text5 = "";
+};
+//编辑
+// 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) {
+    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;
+    tableForm.text1 = index.text1;
+    tableForm.text2 = index.text2;
+    tableForm.text3 = index.text3;
+    tableForm.text4 = index.text4;
+    tableForm.text5 = index.text5;
+  } 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;
+};
+</script>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 100px;
+}
+.app-containers {
+  height: calc(100vh - 180px);
+}
+</style>

+ 637 - 7
src/views/systemSettings/securityPolicy/index.vue

@@ -1,11 +1,641 @@
 <template>
-  <div></div>
+  <div class="airportInfo scroll-y">
+    <div class="wrap">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">登录策略</div>
+          </div>
+        </template></Minheader
+      >
+      <div class="app-containers">
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          :row-style="rowStyle"
+          :row-class-name="tableRowClassName"
+          :cell-class-name="cellClassName"
+          :row-key="
+            props.tableProperty.rowKey
+              ? props.tableProperty.rowKey
+              : tablePropertyDefault.rowKey
+          "
+          :height="
+            props.tableProperty.height
+              ? props.tableProperty.height
+              : tablePropertyDefault.height
+          "
+          :max-height="
+            props.tableProperty.maxHeight
+              ? props.tableProperty.maxHeight
+              : tablePropertyDefault.maxHeight
+          "
+          :stripe="
+            props.tableProperty.stripe
+              ? props.tableProperty.stripe
+              : tablePropertyDefault.stripe
+          "
+          :border="
+            props.tableProperty.border
+              ? props.tableProperty.border
+              : tablePropertyDefault.border
+          "
+          :highlight-current-row="
+            props.tableProperty.highlightCurrentRow
+              ? props.tableProperty.highlightCurrentRow
+              : tablePropertyDefault.highlightCurrentRow
+          "
+          :header-cell-class-name="
+            props.tableProperty.headerRowClassName
+              ? props.tableProperty.headerRowClassName
+              : tablePropertyDefault.headerRowClassName
+          "
+          :tooltip-effect="
+            props.tableProperty.tooltipEffect
+              ? props.tableProperty.tooltipEffect
+              : tablePropertyDefault.tooltipEffect
+          "
+          :show-summary="
+            props.tableProperty.showSummary
+              ? props.tableProperty.showSummary
+              : tablePropertyDefault.showSummary
+          "
+        >
+          <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>
+          <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>
+          <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
+            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
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <!-- <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        /> -->
+      </div>
+      <Dialog
+        width="628px"
+        :flag="flag"
+        :type="type"
+        :msgTitle="msgTitle"
+        @resetForm="resetForm"
+        @delRest="delRest"
+      >
+        <div class="diacont">
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col>
+                <el-form-item label="策略名称" 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>
+              </el-col>
+              <el-col>
+                <el-form-item label="有效时间" size="default">
+                  <el-time-select
+                    v-model="tableForm.two"
+                    :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="{
+                      start: '08:30',
+                      step: '00:15',
+                      end: '18:30',
+                    }"
+                    placeholder="选择时间"
+                  >
+                  </el-time-select>
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="黑名单" size="default">
+                  <div class="father_box">
+                    <!-- 生成的标签 -->
+                    <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>
+                    <!-- 输入框 -->
+                    <el-input
+                      style="width: 100%"
+                      placeholder="请输入黑名单"
+                      v-model="currentval"
+                      @keyup.enter="addTags"
+                      @keyup.delete="deleteTags"
+                      class="inputTag"
+                      ref="inputTag"
+                      type="text"
+                    />
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="白名单" size="default">
+                  <div class="father_box">
+                    <!-- 生成的标签 -->
+                    <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>
+                    <!-- 输入框 -->
+                    <el-input
+                      style="width: 100%"
+                      placeholder="请输入白名单"
+                      v-model="currentvals"
+                      @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-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </Dialog>
+    </div>
+  </div>
 </template>
-<script lang="ts">
-import { defineComponent } from "vue";
-
-export default defineComponent({
-  setup() {},
+<script setup lang="ts">
+import DataTable from "@/components/tableTemp/index.vue";
+import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const router = useRouter();
+const props = defineProps({
+  //表格参数
+  tableProperty: {
+    type: Object,
+    default: {
+      height: "100%",
+      maxHeight: "100%",
+      stripe: true,
+      border: true,
+      highlightCurrentRow: false,
+      rowClassName: "rowClass",
+      headerRowClassName: "headerRowClass",
+      tooltipEffect: "light",
+      showSummary: false,
+      rowKey: "",
+    },
+  },
+  //公共表头参数
+  tableColumnProperty: {
+    type: Object,
+    default: {
+      width: "",
+      fixed: "",
+      sortable: false,
+      showOverflowTooltip: false,
+      align: "center",
+      headerAlign: "",
+    },
+  },
+});
+//表格参数
+const tablePropertyDefault = {
+  height: "100%",
+  maxHeight: "100%",
+  stripe: true,
+  border: true,
+  highlightCurrentRow: false,
+  rowClassName: "rowClass",
+  headerRowClassName: "headerRowClass",
+  tooltipEffect: "light",
+  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 tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "中国国际航空",
+    china: "国航",
+    englin: "AIRCHINA",
+    two: "CA",
+    three: "CCA",
+    text: "CA国航",
+  },
+  {
+    name: "中国国际航空",
+    china: "国航",
+    englin: "AIRCHINA",
+    two: "CA",
+    three: "CCA",
+    text: "CA国航",
+  },
+  {
+    name: "中国国际航空",
+    china: "国航",
+    englin: "AIRCHINA",
+    two: "CA",
+    three: "CCA",
+    text: "CA国航",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "名称", key: "name" },
+    { label: "有效日期", key: "china" },
+    { label: "有效时间", key: "englin" },
+    { label: "黑名单", key: "two" },
+    { label: "白名单", key: "three" },
+    { label: "描述", key: "text" },
+  ],
+  listLoading: true,
+});
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增登录策略";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  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;
+};
+//按钮点击index为当前行序号 row 为当前行 param按钮类型判断参数由父组件传过来
+const handleClick = (index: number, row: Object, param: number) => {
+  if (param === 2) {
+    router.push({ path: "/systemSettings/securityPolicyedit" });
+  } else if (param === 3) {
+    msgTitle.value = "删除航司信息维护";
+    flag.value = true;
+    type.value = "del";
+  }
+};
+//行公共样式
+const rowStyle = (row: Object, rowIndex: number) => {
+  let styleJson: Object = {
+    height: "50px",
+    fontSize: "14px",
+    color: "#101116",
+  };
+  return styleJson;
+};
+//表格行class样式 可通过父组件直接传class名称修改当前行样式
+const tableRowClassName = (row: Object, rowIndex: number) => {
+  if (row.row.rowClass) {
+    return row.row.rowClass;
+  }
+  return "";
+};
+//向父组件传参 btnClick:点击按钮后    load  触发下拉加载   cellClass 修改某一行class的触发条件
+const emit = defineEmits(["btnClick", "load", "cellClass"]);
+//给某一格加class
+const cellClass = ref("");
+const cellClassName = (row: Object) => {
+  emit("cellClass", row);
+  return cellClass.value;
+};
+const removeTag = (index) => {
+  TagsAll.value.splice(index, 1);
+};
+const addTags = () => {
+  if (currentval) {
+    TagsAll.value.push(currentval.value);
+    currentval.value = "";
+  }
+};
+const deleteTags = () => {
+  TagsAlls.value.pop();
+};
+const removeTags = (index) => {
+  TagsAlls.value.splice(index, 1);
+};
+const addTagss = () => {
+  if (currentvals) {
+    TagsAlls.value.push(currentvals.value);
+    currentvals.value = "";
+  }
+};
+const deleteTagss = () => {
+  TagsAlls.value.pop();
+};
+// const inputStyle = () => {
+//   let style = {};
+//   style.width = `${inputLength}px`;
+//   return style;
+// };
+defineExpose({
+  cellClass,
 });
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 100px;
+}
+.app-containers {
+  height: calc(100vh - 180px);
+}
+.infinite-list {
+  height: 300px;
+  padding: 0;
+  margin: 0;
+  list-style: none;
+}
+.infinite-list .infinite-list-item {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 50px;
+  background: var(--el-color-primary-light-9);
+  margin: 10px;
+  color: var(--el-color-primary);
+}
+.infinite-list .infinite-list-item + .list-item {
+  margin-top: 10px;
+}
+::v-deep.el-table .rowClass {
+  height: 40px;
+  font-size: 14px;
+  color: #101116;
+}
+::v-deep.el-table .headerRowClass {
+  height: 40px;
+  background: #ffffff;
+  font-size: 14px;
+  font-weight: bold;
+  color: #101116;
+}
+::v-deep.el-table .editBtn {
+  background: #ffffff;
+  border: 1px solid #f79ec6;
+  box-shadow: 0px 3px 3px 0px rgba(0, 0, 0, 0.06);
+  border-radius: 4px;
+  font-size: 12px;
+  font-weight: 400;
+  color: #ac014d;
+}
+
+::v-deep.el-table .delBtn {
+  background: #eb2f3b;
+  box-shadow: 0px 3px 3px 0px rgba(0, 0, 0, 0.06);
+  border-radius: 4px;
+  font-size: 12px;
+  font-weight: 400;
+  color: #ffffff;
+  border: none;
+}
+::v-deep.el-table--striped
+  .el-table__body
+  tr.el-table__row--striped
+  td.el-table__cell {
+  background-color: #f0f3f7;
+}
+::v-deep.el-table thead.is-group th.el-table__cell {
+  background: #fff;
+}
+.father_box {
+  width: 100%;
+  /* width: 300px; */
+  box-sizing: border-box;
+  background-color: white;
+  border: 1px solid #dcdee2;
+  border-radius: 4px;
+  font-size: 12px;
+  text-align: left;
+  padding-left: 5px;
+  word-wrap: break-word;
+  overflow: hidden;
+}
+/* 标签 */
+.spanbox {
+  display: inline-block;
+  font-size: 14px;
+  margin: 0px 4px 0px 0;
+  // background-color: rgb(229, 229, 229);
+  border: 1px solid #e8eaec;
+  border-radius: 3px;
+}
+.tagspan {
+  height: 24px;
+  line-height: 22px;
+  max-width: 99%;
+  position: relative;
+  display: inline-block;
+  padding-left: 8px;
+  color: #495060;
+  font-size: 14px;
+  cursor: pointer;
+  opacity: 1;
+  vertical-align: middle;
+  overflow: hidden;
+  transition: 0.25s linear;
+  color: rgb(26, 26, 26);
+  font-weight: 600;
+}
+.span_close {
+  padding: 0 4px 0 4px;
+  opacity: 1;
+  -webkit-filter: none;
+  filter: none;
+  color: rgb(26, 26, 26);
+  font-weight: 600;
+}
+.span_close:after {
+  content: "\00D7";
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  /* line-height: 27px; */
+  transition: 0.3s, color 0s;
+}
+/* input */
+.inputTag {
+  font-size: 16px;
+  border: none;
+  box-shadow: none;
+  outline: none;
+  background-color: transparent;
+  padding: 0;
+  width: auto;
+  min-width: 250px;
+  vertical-align: top;
+  height: 32px;
+  color: #495060;
+  line-height: 32px;
+}
+</style>

+ 205 - 0
src/views/systemSettings/securityPolicy/securityPolicyedit.vue

@@ -0,0 +1,205 @@
+<template>
+  <div class="airportInfo">
+    <el-row :gutter="24">
+      <el-col :span="8">
+        <div class="dos">
+          <Minheader :is-Preser="true" :is-statuser="true">
+            <template #header>
+              <div class="status flex-wrap">
+                <div class="manageTitle">验证码策略</div>
+              </div>
+            </template></Minheader
+          >
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col :span="12">
+                <el-form-item label="验证码长度" size="default">
+                  <el-input
+                    v-model="tableForm.name"
+                    placeholder="请输入验证码长度"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="验证码类型" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.china"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select> </el-form-item
+              ></el-col>
+              <el-col :span="12">
+                <el-form-item label="大小写选择" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.englin"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select> </el-form-item
+              ></el-col>
+              <el-col :span="12">
+                <el-form-item label="是否开启" prop="roleStatus">
+                  <el-radio-group v-model="tableForm.two">
+                    <el-radio label="1">是</el-radio>
+                    <el-radio label="2"> 否</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col></el-row
+            ></el-form
+          >
+        </div>
+      </el-col>
+      <el-col :span="8">
+        <div class="dos">
+          <Minheader :is-Preser="true" :is-statuser="true">
+            <template #header>
+              <div class="status flex-wrap">
+                <div class="manageTitle">密码策略</div>
+              </div>
+            </template></Minheader
+          >
+          <el-form :model="tableForm1">
+            <el-row :gutter="24">
+              <el-col :span="12">
+                <el-form-item label="密码长度" size="default">
+                  <el-input
+                    v-model="tableForm1.name"
+                    placeholder="请输入密码长度"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="密码类型" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm1.china"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item> </el-col
+              ><el-col :span="12">
+                <el-form-item label="大小写选择" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm1.englin"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item> </el-col></el-row
+          ></el-form></div
+      ></el-col>
+      <el-col :span="8">
+        <div class="dos">
+          <Minheader :is-Preser="true" :is-statuser="true">
+            <template #header>
+              <div class="status flex-wrap">
+                <div class="manageTitle">多点登录</div>
+              </div>
+            </template></Minheader
+          >
+          <el-form :model="tableForm2">
+            <el-row :gutter="24">
+              <el-col :span="12">
+                <el-form-item label="是否开启" prop="roleStatus">
+                  <el-radio-group v-model="tableForm2.name">
+                    <el-radio label="1">是</el-radio>
+                    <el-radio label="2"> 否</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div></el-col
+      >
+    </el-row>
+  </div>
+</template>
+
+<script setup lang="ts">
+import Minheader from "@/components/minheader/index.vue";
+const tableOptionser = ref<Array>([]); //弹窗下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "1",
+  three: "",
+  text: "",
+}); //弹窗内容
+const tableForm1 = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //弹窗内容
+const tableForm2 = reactive({
+  name: "1",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //弹窗内容
+</script>
+
+<style lang="scss" scoped>
+.airportInfo {
+  height: 100%;
+  .dos {
+    width: 100%;
+    height: 240px;
+    background: #fafcff;
+    padding: 24px;
+  }
+}
+::v-deep .el-form-item__label {
+  width: 90px;
+}
+</style>

+ 196 - 0
src/views/systemSettings/sourceTube/index.vue

@@ -0,0 +1,196 @@
+<template>
+  <div class="airportInfo scroll-y">
+    <div class="wrap">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">数据源服务</div>
+          </div>
+        </template></Minheader
+      >
+      <div class="app-containers">
+        <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        />
+      </div>
+      <Dialog
+        :flag="flag"
+        :type="type"
+        :msgTitle="msgTitle"
+        @resetForm="resetForm"
+        @delRest="delRest"
+      >
+        <div class="diacont">
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col>
+                <el-form-item label="数据源名称" size="default">
+                  <el-input
+                    v-model="tableForm.name"
+                    placeholder="请输入数据源名称"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="协议名称" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.china"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="连接参数" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.englin"
+                    placeholder="请输入连接参数"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </Dialog>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import DataTable from "@/components/tableTemp/index.vue";
+import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增数据源服务"); //弹窗标题
+const tableColsCopys = reactive<Object>({}); //弹窗
+const tableOptionser = ref<Array>([]); //弹窗下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "源数据名称", key: "name" },
+    { label: "连接参数", key: "china" },
+    { label: "协议名称", key: "englin" },
+  ],
+  listLoading: true,
+});
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增数据源服务";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+};
+//编辑
+// 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) {
+    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;
+};
+</script>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 100px;
+}
+.app-containers {
+  height: calc(100vh - 180px);
+}
+</style>

+ 227 - 5
src/views/systemSettings/sourceservice/index.vue

@@ -1,19 +1,241 @@
 <template>
-  <div class="airportInfo">
+  <div class="airportInfo scroll-y">
     <div class="wrap">
-      <Minheader :is-auth="true" :is-statuser="true">
+      <Minheader :is-auth="true" :is-statuser="true" @addForm="addForm">
         <template #header>
           <div class="status flex-wrap">
             <div class="manageTitle">源数据管理</div>
           </div>
         </template></Minheader
       >
-      <DataTable />
+      <div class="app-containers">
+        <DataTable
+          :tableHeader="state.list"
+          :tableData="tableData"
+          :tableBtnGroup="tableBtnGroup"
+          :tableProperty="{ rowKey: 'ID' }"
+          @btnClick="btnClick"
+        />
+      </div>
+      <Dialog
+        :flag="flag"
+        :type="type"
+        :msgTitle="msgTitle"
+        @resetForm="resetForm"
+        @delRest="delRest"
+      >
+        <div class="diacont">
+          <el-form :model="tableForm">
+            <el-row :gutter="24">
+              <el-col>
+                <el-form-item label="所属数据项" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.name"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="源数据名称" size="default">
+                  <el-input
+                    v-model="tableForm.china"
+                    placeholder="请输入源数据名称"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="数据格式" size="default">
+                  <el-select
+                    style="width: 100%"
+                    v-model="tableForm.englin"
+                    class="input-shadow"
+                    filterable
+                    default-first-option
+                    clearable
+                    placeholder="请选择数据格式"
+                  >
+                    <el-option
+                      v-for="item in tableOptionser"
+                      :key="item.v ? item.v : item.planDepartureApt"
+                      :label="item.k ? item.k : item.planDepartureApt"
+                      :value="item.v ? item.v : item.planDepartureApt"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="描述" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.two"
+                    placeholder="请输入描述"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="取值方法" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.three"
+                    placeholder="请输入取值方法"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col>
+                <el-form-item label="检测方法" size="default">
+                  <el-input
+                    type="textarea"
+                    v-model="tableForm.text"
+                    placeholder="请输入检测方法"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </Dialog>
     </div>
   </div>
 </template>
 <script setup lang="ts">
-import DataTable from "@/views/table/index.vue";
+import DataTable from "@/components/tableTemp/index.vue";
 import Minheader from "@/components/minheader/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const router = useRouter();
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增源数据管理"); //弹窗标题
+const tableColsCopys = reactive<Object>({}); //弹窗
+const tableOptionser = ref<Array>([]); //弹窗下拉
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+}); //弹窗内容
+//列表
+const tableData = ref([
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "源数据名称", key: "name" },
+    { label: "所属数据项", key: "china" },
+    { label: "数据格式", key: "englin" },
+    { label: "描述", key: "two" },
+  ],
+  listLoading: true,
+});
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增源数据管理";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+};
+//编辑
+// 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/sourceserviceEdit" });
+    // 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;
+};
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+::v-deep .el-form-item__label {
+  width: 100px;
+}
+.app-containers {
+  height: calc(100vh - 180px);
+}
+</style>

+ 371 - 0
src/views/systemSettings/sourceserviceEdit/index.vue

@@ -0,0 +1,371 @@
+<template>
+  <div class="airportInfo">
+    <div class="headerBox">
+      <Minheader :is-Preser="true" :is-statuser="true">
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">编辑源数据信息</div>
+          </div>
+        </template></Minheader
+      >
+      <div class="diacont">
+        <el-form :model="tableForm" class="w100 fw">
+          <div class="outersurface pd30">
+            <el-form-item label="源数据名称" size="default">
+              <el-input
+                v-model="tableForm.name"
+                placeholder="请输入源数据名称"
+              />
+            </el-form-item>
+          </div>
+          <div class="outersurface pd30">
+            <el-form-item label="数据格式" size="default">
+              <el-select
+                style="width: 100%"
+                v-model="tableForm.china"
+                class="input-shadow"
+                filterable
+                default-first-option
+                clearable
+                placeholder="请选择数据格式"
+              >
+                <el-option
+                  v-for="item in tableOptionser"
+                  :key="item.v ? item.v : item.planDepartureApt"
+                  :label="item.k ? item.k : item.planDepartureApt"
+                  :value="item.v ? item.v : item.planDepartureApt"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="outersurface50">
+            <el-form-item label="描述" size="default">
+              <el-input v-model="tableForm.englin" placeholder="请输入描述" />
+            </el-form-item>
+          </div>
+          <div class="outersurface50 pd30">
+            <el-form-item label="取值方法" size="default">
+              <el-input v-model="tableForm.two" placeholder="请输入取值方法" />
+            </el-form-item>
+          </div>
+          <div class="outersurface50">
+            <el-form-item label="检测方法" size="default">
+              <el-input
+                v-model="tableForm.three"
+                placeholder="请输入检测方法"
+              />
+            </el-form-item>
+          </div>
+        </el-form>
+      </div>
+    </div>
+    <div class="centerBox">
+      <Minheader
+        :is-auth="true"
+        :is-statuser="true"
+        :is-Search="true"
+        @addForm="addForm"
+        style="margin-top: 20px"
+      >
+        <template #header>
+          <div class="status flex-wrap">
+            <div class="manageTitle">数据项信息</div>
+          </div>
+        </template></Minheader
+      >
+    </div>
+    <div class="containers scroll-y">
+      <DataTable
+        :tableHeader="state.list"
+        :tableData="tableData"
+        :tableBtnGroup="tableBtnGroup"
+        :tableProperty="{ rowKey: 'ID' }"
+        @btnClick="btnClick"
+      />
+    </div>
+    <Dialog
+      width="748px"
+      :flag="flag"
+      :type="type"
+      :msgTitle="msgTitle"
+      @resetForm="resetForm"
+      @delRest="delRest"
+    >
+      <div class="diacont">
+        <el-form :model="tableForms">
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item label="策略名称" size="default">
+                <el-input
+                  v-model="tableForms.name"
+                  placeholder="请输入策略名称"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="数据类型" size="default">
+                <el-select
+                  style="width: 100%"
+                  v-model="tableForms.china"
+                  class="input-shadow"
+                  filterable
+                  default-first-option
+                  clearable
+                  placeholder="请选择数据类型"
+                >
+                  <el-option
+                    v-for="item in tableOptionser"
+                    :key="item.v ? item.v : item.planDepartureApt"
+                    :label="item.k ? item.k : item.planDepartureApt"
+                    :value="item.v ? item.v : item.planDepartureApt"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="取值方法" size="default">
+                <el-select
+                  style="width: 100%"
+                  v-model="tableForms.two"
+                  class="input-shadow"
+                  filterable
+                  default-first-option
+                  clearable
+                  placeholder="请选择取值方法"
+                >
+                  <el-option
+                    v-for="item in tableOptionser"
+                    :key="item.v ? item.v : item.planDepartureApt"
+                    :label="item.k ? item.k : item.planDepartureApt"
+                    :value="item.v ? item.v : item.planDepartureApt"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="输出标识符" size="default">
+                <el-input
+                  v-model="tableForms.two"
+                  placeholder="请输入输出标识符"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col>
+              <el-form-item label="输出标识符" size="default">
+                <el-input
+                  type="textarea"
+                  v-model="tableForms.three"
+                  placeholder="请输入输出标识符"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col>
+              <el-form-item label="数据项描述" size="default">
+                <el-input
+                  v-model="tableForms.text"
+                  placeholder="请输入数据项描述"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="多条拆分" prop="roleStatus">
+                <el-radio-group v-model="tableForms.radio1">
+                  <el-radio label="1">是</el-radio>
+                  <el-radio label="2"> 否</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="是否必填" prop="roleStatus">
+                <el-radio-group v-model="tableForms.radio2">
+                  <el-radio label="1">是</el-radio>
+                  <el-radio label="2"> 否</el-radio>
+                </el-radio-group>
+              </el-form-item></el-col
+            >
+            <el-col :span="12">
+              <el-form-item label="是否唯一" prop="roleStatus">
+                <el-radio-group v-model="tableForms.radio3">
+                  <el-radio label="1">是</el-radio>
+                  <el-radio label="2"> 否</el-radio>
+                </el-radio-group>
+              </el-form-item></el-col
+            >
+          </el-row>
+        </el-form>
+      </div>
+    </Dialog>
+  </div>
+</template>
+
+<script setup lang="ts">
+import Minheader from "@/components/minheader/index.vue";
+import DataTable from "@/components/tableTemp/index.vue";
+import Dialog from "@/components/dialog/index.vue";
+const tableForm = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  text: "",
+  time: "",
+}); //报警预警场景
+const tableForms = reactive({
+  name: "",
+  china: "",
+  englin: "",
+  two: "",
+  three: "",
+  radio1: "1",
+  radio2: "1",
+  radio3: "1",
+}); //弹窗内容
+const tableOptionser = ref<Array>([]); //下拉
+const flag = ref<Boolean>(false); //弹窗开关
+const type = ref<String>(""); //判断是否删除
+const msgTitle = ref<String>("新增报警预警策略"); //弹窗标题
+//列表
+const tableData = ref([
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+  },
+  {
+    name: "测试",
+    china: "测试",
+    englin: "测试",
+    two: "测试",
+    three: "测试",
+  },
+]);
+//表头
+const state = reactive({
+  list: [
+    { label: "数据项名称", key: "name" },
+    { label: "源数据编号", key: "china" },
+    { label: "数据类型", key: "englin" },
+    { label: "数据项描述", key: "two" },
+    { label: "取值方法", key: "three" },
+    { label: "取值表达式", key: "text" },
+    { label: "输出标识符", key: "text1" },
+    { label: "多条拆分", key: "radio1" },
+    { label: "是否必填", key: "radio2" },
+    { label: "是否唯一", key: "radio3" },
+  ],
+  listLoading: true,
+});
+const tableBtnGroup = ref([
+  {
+    name: "编辑",
+    className: "editBtn",
+    param: 2,
+  },
+  {
+    name: "删除",
+    className: "delBtn",
+    param: 3,
+  },
+]);
+//新增
+const addForm = () => {
+  msgTitle.value = "新增报警预警策略";
+  flag.value = true;
+  type.value = "";
+};
+//取消
+const resetForm = () => {
+  flag.value = false;
+  tableForm.name = "";
+  tableForm.china = "";
+  tableForm.englin = "";
+  tableForm.two = "";
+  tableForm.three = "";
+  tableForm.text = "";
+};
+//删除
+const delRest = () => {
+  flag.value = false;
+};
+//编辑-删除
+const btnClick = (row, index, param) => {
+  if (param === 2) {
+    msgTitle.value = "编辑报警预警策略";
+    flag.value = true;
+    type.value = "";
+    tableForms.name = index.name;
+    tableForms.china = index.china;
+    tableForms.englin = index.englin;
+    tableForms.two = index.two;
+    tableForms.three = index.three;
+    tableForms.text = index.text;
+    tableForms.text1 = index.text1;
+    tableForms.text2 = index.text2;
+  } else if (param === 3) {
+    msgTitle.value = "删除报警预警策略";
+    flag.value = true;
+    type.value = "del";
+  } else if (param === 4) {
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.airportInfo {
+  .headerBox {
+    width: 100%;
+    min-height: 200px;
+    background: #ffffff;
+    border-radius: 4px;
+    padding: 24px;
+    .diacont {
+      width: 100%;
+      padding: 0;
+      .w100 {
+        width: 100%;
+      }
+      .fw {
+        display: flex;
+        flex-wrap: wrap;
+      }
+      .outersurface {
+        width: 25%;
+      }
+      .outersurface50 {
+        width: 50%;
+      }
+      .pd30 {
+        padding: 0 30px 0 0;
+      }
+      .outertwowid {
+        width: 40%;
+      }
+      .outerthreewid {
+        width: 60%;
+      }
+    }
+  }
+  .centerBox {
+    padding: 0 24px;
+  }
+  .containers {
+    height: 540px;
+  }
+}
+::v-deep .el-form-item__label {
+  width: 90px;
+}
+</style>