handleHistory.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <template>
  2. <a-modal
  3. v-model:visible="modeVisible"
  4. class="custom-class"
  5. :title="typeData.title"
  6. placement="right"
  7. width="1800px"
  8. :closable="false"
  9. @ok="submit"
  10. >
  11. <div class="switch" v-if="typeData.title == '上传日志'">
  12. <div class="item">
  13. <a-radio-group
  14. v-model:value="analysis"
  15. :style="{ marginBottom: '8px' }"
  16. >
  17. <a-radio-button :value="true">译文</a-radio-button>
  18. <a-radio-button :value="false">原文</a-radio-button>
  19. </a-radio-group>
  20. </div>
  21. </div>
  22. <normalTable
  23. :is-select="false"
  24. v-if="modeVisible"
  25. :loadOverHandle="false"
  26. rowKey="w_areaid"
  27. ref="list"
  28. size="small"
  29. :param="param"
  30. :columns="utils.TBLayout(typeData.Table)"
  31. >
  32. <template #tb_cell="{ data }">
  33. <div v-if="data.column.dataIndex == 'issend'">
  34. {{ data.record.issend == 0 ? "未发送" : "已发送" }}
  35. </div>
  36. <div v-else-if="data.column.dataIndex == 'content'">
  37. <div
  38. v-if="typeData.title == '上传日志'"
  39. style="width: 1000px; white-space: normal"
  40. >
  41. {{ analysis ? data.record.analysis : data.record.content }}
  42. </div>
  43. <div style="width: 200px; display: flex; flex-wrap: wrap" v-else>
  44. <a-tag v-for="item in data.record.content"
  45. >{{ item.title }} : {{ item.value }}</a-tag
  46. >
  47. </div>
  48. </div>
  49. <div v-else-if="data.column.dataIndex == 'isreceive'">
  50. {{ data.record.isreceive ? "已接收" : "未接收" }}
  51. </div>
  52. <div v-else-if="data.column.dataIndex == 'invalid'">
  53. {{ data.record.isreceive ? "已失效" : "未失效" }}
  54. </div>
  55. </template>
  56. </normalTable>
  57. <template #footer>
  58. <a-button key="back" @click="clearCmd" v-if="typeData.title == '操作队列'"
  59. >清空队列</a-button
  60. >
  61. <a-button key="submit" type="primary" @click="modeVisible = false"
  62. >确定</a-button
  63. >
  64. </template>
  65. </a-modal>
  66. </template>
  67. <script setup>
  68. import normalTable from "@/template/normalTable/index.vue";
  69. import { ref, defineProps, defineEmits, computed, watch, inject } from "vue";
  70. import Api from "@/api/api";
  71. import utils from "@/utils/utils";
  72. import { useRouter } from "vue-router";
  73. import { Modal } from "ant-design-vue";
  74. let analysis = ref(true);
  75. let router = useRouter();
  76. let emit = defineEmits([""]);
  77. let props = defineProps({});
  78. let modeVisible = ref(false);
  79. let detailFun = inject("detailFun");
  80. let type = ref(0);
  81. let param = ref({
  82. id: 20230701132202,
  83. content: {
  84. w_deviceid: router.currentRoute.value.query.id,
  85. type: 0,
  86. pageNumber: 1,
  87. pageSize: 10,
  88. },
  89. });
  90. let list = ref();
  91. let clearCmd = () => {
  92. Modal.confirm({
  93. title: "确定清空当前所有操作队列吗?",
  94. async onOk() {
  95. let res = await Api.requested({
  96. id: 20231128145402,
  97. content: {
  98. w_deviceid: router.currentRoute.value.query.id,
  99. },
  100. });
  101. utils.message(res, "操作成功", () => {
  102. detailFun();
  103. list.value.listData();
  104. });
  105. },
  106. onCancel() {},
  107. });
  108. };
  109. watch(
  110. () => modeVisible.value,
  111. (val) => {
  112. if (!val) param.value.content.pageNumber = 1;
  113. }
  114. );
  115. let typeData = computed(() => {
  116. let data = {};
  117. switch (type.value) {
  118. case 0:
  119. data = {
  120. title: "操作记录",
  121. Table: "historyTable",
  122. };
  123. break;
  124. case 1:
  125. data = {
  126. title: "上传日志",
  127. Table: "uploadHistory",
  128. };
  129. break;
  130. default:
  131. data = {
  132. title: "操作队列",
  133. Table: "handleQueue",
  134. };
  135. break;
  136. }
  137. return data;
  138. });
  139. let listData = () => {
  140. list.value.listData();
  141. };
  142. defineExpose({
  143. type,
  144. param,
  145. modeVisible,
  146. listData,
  147. });
  148. </script>
  149. <style scoped>
  150. .switch {
  151. position: relative;
  152. }
  153. .item {
  154. position: absolute;
  155. top: -84rem;
  156. left: 100rem;
  157. z-index: 1;
  158. }
  159. </style>