index.vue 15 KB

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