index.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  1. <template>
  2. <div class="airportInfo scroll-y">
  3. <div class="wrap">
  4. <Minheader
  5. :is-auth="true"
  6. :is-statuser="true"
  7. powerData="alert_alarm_settings_add_button"
  8. @addForm="addForm"
  9. @searchForms="searchForms"
  10. >
  11. <template #header>
  12. <div class="status flex-wrap">
  13. <div class="manageTitle">预警告警维护</div>
  14. </div>
  15. </template>
  16. </Minheader>
  17. <div class="app-containers">
  18. <DataTable
  19. :tableHeader="tableCols"
  20. :tableData="tableData"
  21. :tableBtnGroup="tableBtnGroup"
  22. :tableProperty="{ rowKey: 'ID' }"
  23. @btnClick="btnClick"
  24. />
  25. </div>
  26. <Dialog
  27. width="600px"
  28. :flag="flag"
  29. :type="type"
  30. :msgTitle="msgTitle"
  31. :delName="delName"
  32. @resetForm="resetForm"
  33. @delRest="delRest"
  34. @submitForm="submitForm"
  35. @delRemove="delRemove"
  36. >
  37. <div class="diacont">
  38. <el-form :model="tableForm" :rules="formRules" ref="warningSetForm">
  39. <el-row :gutter="24">
  40. <!-- <el-col :span="12">
  41. <el-form-item label="策略名称" size="default">
  42. <el-input
  43. v-model="tableForm.name"
  44. placeholder="请输入策略名称"
  45. />
  46. </el-form-item>
  47. </el-col> -->
  48. <el-col :span="12">
  49. <el-form-item
  50. label="航司二字码"
  51. size="default"
  52. prop="IATACode"
  53. :rules="formRules.isNotNull"
  54. >
  55. <el-select
  56. style="width: 100%"
  57. v-model="tableForm.IATACode"
  58. class="input-shadow"
  59. filterable
  60. allow-create
  61. default-first-option
  62. clearable
  63. placeholder="请选择航司二字码"
  64. >
  65. <el-option
  66. v-for="item in iaCodeArr"
  67. :key="item.airlineCompanyID"
  68. :label="item.ITATCode"
  69. :value="item.ITATCode"
  70. >
  71. </el-option>
  72. </el-select>
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="12">
  76. <el-form-item label="起飞机场" size="default">
  77. <el-select
  78. style="width: 100%"
  79. v-model="tableForm.departmentAirport"
  80. class="input-shadow"
  81. filterable
  82. allow-create
  83. default-first-option
  84. clearable
  85. placeholder="请选择起飞机场"
  86. >
  87. <el-option
  88. v-for="item in tableOptionser"
  89. :key="item.airportID"
  90. :label="item.IATACode"
  91. :value="item.IATACode"
  92. >
  93. </el-option>
  94. </el-select>
  95. </el-form-item>
  96. </el-col>
  97. <el-col :span="12">
  98. <el-form-item label="降落机场" size="default">
  99. <el-select
  100. style="width: 100%"
  101. v-model="tableForm.landingAirport"
  102. class="input-shadow"
  103. filterable
  104. allow-create
  105. default-first-option
  106. clearable
  107. placeholder="请选择降落机场"
  108. >
  109. <el-option
  110. v-for="item in tableOptionser"
  111. :key="item.airportID"
  112. :label="item.IATACode"
  113. :value="item.IATACode"
  114. >
  115. </el-option>
  116. </el-select>
  117. </el-form-item>
  118. </el-col>
  119. <el-col>
  120. <el-form-item
  121. label="航班号"
  122. size="default"
  123. prop="flightNo"
  124. :rules="formRules.isNotNull"
  125. >
  126. <el-input
  127. v-model="tableForm.flightNo"
  128. placeholder="请输入航班号"
  129. />
  130. </el-form-item>
  131. </el-col>
  132. <el-col :span="12">
  133. <el-form-item
  134. label="生效时间"
  135. size="default"
  136. prop="startDate"
  137. :rules="formRules.isNotNull"
  138. >
  139. <el-date-picker
  140. v-model="tableForm.startDate"
  141. :rows="1"
  142. type="date"
  143. format="YYYY-MM-DD"
  144. value-format="YYYY-MM-DD"
  145. placeholder="选择日期时间"
  146. >
  147. </el-date-picker>
  148. </el-form-item>
  149. </el-col>
  150. <el-col :span="12">
  151. <el-form-item
  152. label="失效时间"
  153. size="default"
  154. prop="endDate"
  155. :rules="formRules.isNotNull"
  156. >
  157. <el-date-picker
  158. format="YYYY-MM-DD"
  159. value-format="YYYY-MM-DD"
  160. v-model="tableForm.endDate"
  161. :rows="1"
  162. type="date"
  163. placeholder="选择日期时间"
  164. >
  165. </el-date-picker>
  166. </el-form-item>
  167. </el-col>
  168. <!-- <el-col>
  169. <el-form-item label="备注" size="default">
  170. <el-input
  171. type="textarea"
  172. v-model="tableForm.text"
  173. placeholder="请输入备注"
  174. />
  175. </el-form-item>
  176. </el-col> -->
  177. </el-row>
  178. </el-form>
  179. </div>
  180. </Dialog>
  181. </div>
  182. </div>
  183. </template>
  184. <script setup lang="ts">
  185. import DataTable from "@/components/tableTemp/index.vue";
  186. import Minheader from "@/components/minheader/index.vue";
  187. import Dialog from "@/components/dialog/index.vue";
  188. import {
  189. Query,
  190. GeneralDataReception,
  191. htQuery,
  192. dataToChange,
  193. } from "@/api/webApi";
  194. import { ElMessage } from "element-plus";
  195. import { onMounted } from "vue";
  196. const formRules = useElement().formRules;
  197. const page = ref<number>(0); //分页参数
  198. const dataContent = ref<object>({});
  199. const noMore = ref<boolean>(false);
  200. const rowTitle = ref<string>("");
  201. const tableCols = ref<any>([]); //表头数据
  202. const iaCodeArr = ref<any>([]); //航司二字码
  203. const serviceId = ref<string | any>("");
  204. const tableObj = ref({}); //增删改数据缓存
  205. const router = useRouter();
  206. const flag = ref<boolean>(false); //弹窗开关
  207. const type = ref<string>(""); //判断是否删除
  208. const msgTitle = ref<string>("新增告警预警维护"); //弹窗标题
  209. const tableColsCopys = reactive<Object>({}); //弹窗\
  210. const tableOptionser = ref<any>([]); //弹窗下拉
  211. const submitID = ref<string | any>("");
  212. const delName = ref<string>("");
  213. const listqueryTemplateID = ref<string | any>("");
  214. const tableForm = reactive<any>({
  215. IATACode: null,
  216. departmentAirport: null,
  217. landingAirport: null,
  218. flightNo: null,
  219. startDate: null,
  220. endDate: null,
  221. // alarmSceneId: "",
  222. // event: "",
  223. }); //弹窗内容
  224. //列表
  225. const tableData = ref<any>([]);
  226. //表头
  227. const state = reactive({
  228. list: [
  229. { label: "名称", key: "name" },
  230. { label: "中文简称", key: "china" },
  231. { label: "英文简称", key: "englin" },
  232. { label: "航司二字码", key: "two" },
  233. { label: "航司三字码", key: "three" },
  234. { label: "备注", key: "text" },
  235. ],
  236. listLoading: true,
  237. });
  238. const tableBtnGroup = ref([
  239. {
  240. name: "编辑",
  241. className: "editBtn",
  242. param: 2,
  243. is: "edit_alert_alarm_settings_button",
  244. },
  245. {
  246. name: "删除",
  247. className: "delBtn",
  248. param: 3,
  249. is: "delete_alert_alarm_settings_button",
  250. },
  251. ]);
  252. //获取弹框-下拉数据
  253. const getSelectData = async (id: number, name?: string) => {
  254. const { code, returnData } = await Query({
  255. id,
  256. dataContent: name ? [name] : name === null ? [null] : [],
  257. });
  258. if (code == 0) {
  259. tableOptionser.value = returnData.listValues;
  260. } else {
  261. tableOptionser.value = [];
  262. }
  263. };
  264. //新增
  265. const addForm = () => {
  266. msgTitle.value = "新增告警预警策略";
  267. flag.value = true;
  268. type.value = "";
  269. // tableForm.event = 1;
  270. };
  271. //取消
  272. const resetForm = () => {
  273. flag.value = false;
  274. tableForm.IATACode = "";
  275. tableForm.departmentAirport = "";
  276. tableForm.landingAirport = "";
  277. tableForm.flightNo = "";
  278. tableForm.startDate = "";
  279. tableForm.endDate = "";
  280. // tableForm.event = "";
  281. delName.value = "";
  282. };
  283. //编辑
  284. // const editDialog = (data) => {
  285. // msgTitle.value = "编辑航司信息维护";
  286. // flag.value = true;
  287. // type.value = "";
  288. // tableForm.name = data.name;
  289. // tableForm.china = data.china;
  290. // tableForm.englin = data.englin;
  291. // tableForm.two = data.two;
  292. // tableForm.three = data.three;
  293. // tableForm.text = data.text;
  294. // };
  295. //编辑-删除
  296. const btnClick = (row, index, param) => {
  297. if (param === 2) {
  298. router.push({
  299. path: "/BasicsData/warningEdit",
  300. query: {
  301. alarmSceneId: index.alarmSceneId,
  302. submitID: submitID.value,
  303. listqueryTemplateID: listqueryTemplateID.value,
  304. },
  305. });
  306. } else if (param === 3) {
  307. msgTitle.value = "删除告警预警维护";
  308. flag.value = true;
  309. type.value = "del";
  310. // tableForm.event = 3;
  311. delName.value = index.flightNo;
  312. tableForm.alarmSceneId = index.alarmSceneId;
  313. tableForm.IATACode = index.IATACode;
  314. tableForm.departmentAirport = index.departmentAirport;
  315. tableForm.landingAirport = index.landingAirport;
  316. tableForm.flightNo = index.flightNo;
  317. tableForm.startDate = index.startDate;
  318. tableForm.endDate = index.endDate;
  319. } else if (param === 4) {
  320. }
  321. };
  322. //删除
  323. const eleDialog = () => {
  324. msgTitle.value = "删除告警预警维护";
  325. flag.value = true;
  326. type.value = "del";
  327. };
  328. const delRemove = () => {
  329. // tableForm.event = 3;
  330. generalDataReception(tableForm, 3);
  331. };
  332. //删除
  333. const delRest = () => {
  334. flag.value = false;
  335. };
  336. //获取表格数据
  337. const getQuery = async (data?) => {
  338. try {
  339. const columnSet = [
  340. {
  341. queryTemplateColumnSetID: 290,
  342. queryTemplateID: 13,
  343. columnName: "alarmStrategyID",
  344. columnLabel: "策略编号",
  345. columnDescribe: "策略编号",
  346. needSort: 0,
  347. needFilters: 1,
  348. needShow: 0,
  349. needGroup: 0,
  350. dataType: "int",
  351. listqueryTemplateID: null,
  352. needCount: null,
  353. orderNumber: null,
  354. needSearch: null,
  355. },
  356. {
  357. queryTemplateColumnSetID: 291,
  358. queryTemplateID: 13,
  359. columnName: "IATACode",
  360. columnLabel: "航司二字码",
  361. columnDescribe: "航司二字码",
  362. needSort: 0,
  363. needFilters: 1,
  364. needShow: 1,
  365. needGroup: 0,
  366. dataType: "varchar",
  367. listqueryTemplateID: null,
  368. needCount: null,
  369. orderNumber: null,
  370. needSearch: null,
  371. },
  372. {
  373. queryTemplateColumnSetID: 292,
  374. queryTemplateID: 13,
  375. columnName: "flightNo",
  376. columnLabel: "航班号",
  377. columnDescribe: "航班号",
  378. needSort: 0,
  379. needFilters: 1,
  380. needShow: 1,
  381. needGroup: 0,
  382. dataType: "int",
  383. listqueryTemplateID: 1803423,
  384. needCount: null,
  385. orderNumber: null,
  386. needSearch: null,
  387. },
  388. {
  389. queryTemplateColumnSetID: 293,
  390. queryTemplateID: 13,
  391. columnName: "departmentAirport",
  392. columnLabel: "起飞机场",
  393. columnDescribe: "起飞机场",
  394. needSort: 0,
  395. needFilters: 1,
  396. needShow: 1,
  397. needGroup: 0,
  398. dataType: "number",
  399. listqueryTemplateID: null,
  400. needCount: null,
  401. orderNumber: null,
  402. needSearch: null,
  403. },
  404. {
  405. queryTemplateColumnSetID: 294,
  406. queryTemplateID: 13,
  407. columnName: "landingAirport",
  408. columnLabel: "降落机场",
  409. columnDescribe: "降落机场",
  410. needSort: 0,
  411. needFilters: 1,
  412. needShow: 1,
  413. needGroup: 0,
  414. dataType: "number",
  415. listqueryTemplateID: null,
  416. needCount: null,
  417. orderNumber: null,
  418. needSearch: null,
  419. },
  420. {
  421. queryTemplateColumnSetID: 295,
  422. queryTemplateID: 13,
  423. columnName: "startDate",
  424. columnLabel: "生效时间",
  425. columnDescribe: "生效时间",
  426. needSort: 0,
  427. needFilters: 1,
  428. needShow: 1,
  429. needGroup: 0,
  430. dataType: "varchar",
  431. listqueryTemplateID: 1803424,
  432. needCount: null,
  433. orderNumber: null,
  434. needSearch: null,
  435. },
  436. {
  437. queryTemplateColumnSetID: 296,
  438. queryTemplateID: 13,
  439. columnName: "endDate",
  440. columnLabel: "失效时间",
  441. columnDescribe: "失效时间",
  442. needSort: 0,
  443. needFilters: 1,
  444. needShow: 1,
  445. needGroup: 0,
  446. dataType: "varchar",
  447. listqueryTemplateID: 1803425,
  448. needCount: null,
  449. orderNumber: null,
  450. needSearch: null,
  451. },
  452. ];
  453. const { code, returnData } = await Query({
  454. id: DATACONTENT_ID.sysServiceCjId,
  455. needPage: ++page.value,
  456. dataContent: data ? [data] : [],
  457. });
  458. if (code === "0") {
  459. // console.log(returnData);
  460. if (returnData.length === 0) {
  461. page.value--;
  462. noMore.value = true;
  463. }
  464. tableData.value.push(...returnData);
  465. tableCols.value = columnSet;
  466. console.log(tableData);
  467. // const titleColumn = returnData.columnSet.find(
  468. // (item) => item.needShow === 1
  469. // );
  470. // if (titleColumn) {
  471. // rowTitle.value = titleColumn.columnName;
  472. // }
  473. // submitID.value = returnData.submitID;
  474. // tableData.value.push(...returnData);
  475. // console.log(tableData);
  476. // tableCols.value = returnData.columnSet;
  477. // returnData.columnSet.forEach((item) => {
  478. // if (item.listqueryTemplateID && item.columnName === "landingAirport") {
  479. // listqueryTemplateID.value = item.listqueryTemplateID;
  480. // // getSelectData(item.listqueryTemplateID);
  481. // }
  482. // });
  483. // tableCols.value.forEach((element) => {
  484. // element.label = element.columnLabel;
  485. // element.key = element.columnName;
  486. // });
  487. serviceId.value = DATACONTENT_ID.sysServiceCjIds;
  488. } else {
  489. page.value--;
  490. }
  491. } catch (error) {
  492. page.value--;
  493. }
  494. };
  495. //确认提交
  496. const warningSetForm: any = ref(null);
  497. const submitForm = () => {
  498. warningSetForm.value.validate((valid: any) => {
  499. if (valid) {
  500. generalDataReception(tableForm, 1);
  501. } else {
  502. return false;
  503. }
  504. });
  505. };
  506. const resetTable = () => {
  507. page.value = 0;
  508. noMore.value = false;
  509. tableData.value = [];
  510. };
  511. //新增-编辑-删除
  512. const generalDataReception = async (data, event) => {
  513. try {
  514. data = {
  515. ...data,
  516. };
  517. const { code } = await dataToChange(serviceId.value, data, event);
  518. if (code == 0) {
  519. ElMessage.success(`操作成功`);
  520. // this.$message.success("操作成功");
  521. resetTable();
  522. getQuery();
  523. resetForm();
  524. flag.value = false;
  525. // rmFlag.value = false;
  526. tableObj.value = {};
  527. // this.$router.go(0);
  528. } else {
  529. ElMessage.error(`操作失败`);
  530. // this.$message.error("操作失败");
  531. // this.flag = false;
  532. // this.rmFlag = false;
  533. tableObj.value = {};
  534. resetForm();
  535. }
  536. } catch (error) {
  537. flag.value = false;
  538. // rmFlag.value = false;
  539. tableObj.value = {};
  540. resetForm();
  541. }
  542. };
  543. //清除
  544. const searchForms = (data) => {
  545. page.value = 0;
  546. tableData.value = [];
  547. getQuery(data);
  548. };
  549. //获取航司二字码
  550. const getIaCode = async () => {
  551. const result = await htQuery(DATACONTENT_ID.sysServiceHsId);
  552. iaCodeArr.value = result;
  553. };
  554. //获取机场
  555. const getAirpot = async () => {
  556. const result = await htQuery(DATACONTENT_ID.sysServiceHzId);
  557. tableOptionser.value = result;
  558. };
  559. onMounted(() => {
  560. getIaCode();
  561. getAirpot();
  562. });
  563. // getQuery();
  564. </script>
  565. <style lang="scss" scoped>
  566. ::v-deep .el-form-item__label {
  567. width: 100px;
  568. }
  569. </style>