選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

index.vue 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. <template>
  2. <div>
  3. <crud-template
  4. class="as-weight"
  5. :ref="(el) => (crudRef = el)"
  6. :home-data="field"
  7. @btnSearch="btnSearch"
  8. @refreshLeft="refreshLeft"
  9. :tableData="tableData"
  10. @CurrentChange="handleCurrentChange"
  11. @pageSizeChange="
  12. (val) => {
  13. field.paging.currentPage = 1
  14. field.paging.pageSize = val
  15. getList()
  16. }
  17. "
  18. >
  19. <template #search>
  20. <el-select
  21. clearable
  22. v-model="searchForm.messageClientId"
  23. placeholder="请选择客户端"
  24. style="width: 200px"
  25. >
  26. <el-option
  27. v-for="item in messageClientData"
  28. :key="item.id"
  29. :label="item.name"
  30. :value="item.id"
  31. />
  32. </el-select>
  33. <el-cascader :options="options" placeholder="请选择消息类型" clearable v-model="optionsValue" style="width: 200px"/>
  34. <el-select
  35. clearable
  36. v-model="searchForm.sendResult"
  37. placeholder="请选择状态"
  38. style="width: 200px"
  39. >
  40. <el-option
  41. v-for="item in MESSAGE_RESULT"
  42. :key="item.value"
  43. :label="item.label"
  44. :value="item.value"
  45. />
  46. </el-select>
  47. </template>
  48. </crud-template>
  49. </div>
  50. </template>
  51. <!-- 信息告警日志 -->
  52. <script lang="ts" setup>
  53. // @ts-ignore crudFrom模板
  54. import CrudTemplate from '@/crud/index.vue'
  55. import { ref, onMounted, computed } from 'vue'
  56. import { ElMessage, ElMessageBox, genFileId } from 'element-plus'
  57. // 请求函数
  58. // @ts-ignore
  59. import BaseService from '@/utils/baseService'
  60. //crud配置
  61. import crudConfig from './crudConfig'
  62. // 拿到配置
  63. const { field } = crudConfig()
  64. onMounted(() => {
  65. getoptionsList()
  66. getList()
  67. getmessageClientData()
  68. })
  69. //整个crud虚拟dom
  70. const crudRef = ref()
  71. // 获取数据,查询条件
  72. const searchForm = ref({
  73. sendResult: '',
  74. messageClientId: '',
  75. messageType: '',
  76. messageChannel: '',
  77. })
  78. const tableData = ref([])
  79. // 搜索按钮
  80. function btnSearch() {
  81. field.value.paging.currentPage = 1
  82. getList()
  83. }
  84. // 搜索重置
  85. function refreshLeft() {
  86. field.value.paging.currentPage = 1
  87. optionsValue.value = []
  88. searchForm.value = {
  89. sendResult: '',
  90. messageClientId: '',
  91. messageType: '',
  92. messageChannel: '',
  93. }
  94. tableData.value = []
  95. getList()
  96. }
  97. // 处理请求参数
  98. const handleParams = () => {
  99. if(optionsValue.value.length>0){
  100. searchForm.value.messageType = optionsValue.value[0]
  101. searchForm.value.messageChannel = optionsValue.value[1]
  102. }
  103. let data: any = {
  104. pageNo: field.value.paging.currentPage,
  105. pageSize: field.value.paging.pageSize,
  106. ...searchForm.value,
  107. }
  108. let params: any = {}
  109. for (let key in data) {
  110. if (data[key] || data[key] === 0) {
  111. params[key] = data[key]
  112. }
  113. }
  114. return params
  115. }
  116. // @ts-ignore
  117. import $storeinitData from '@/store/initData' //引入tab vuex
  118. // 消息类型
  119. const MESSAGE_TYPE = computed(() => {
  120. return $storeinitData.state.dictData['MESSAGE_TYPE'] || []
  121. })
  122. // 是否发送成功
  123. const MESSAGE_RESULT = computed(() => {
  124. return $storeinitData.state.dictData['MESSAGE_RESULT'] || []
  125. })
  126. // 消息渠道
  127. const MESSAGE_CHANNEL = computed(() => {
  128. return $storeinitData.state.dictData['MESSAGE_CHANNEL'] || []
  129. })
  130. // 获取数据
  131. function getList() {
  132. const params = handleParams()
  133. crudRef.value.tableLoding = true //表格loading效果
  134. BaseService.post('/msgw/messagealarm/logpage', params).then(
  135. (res: any) => {
  136. crudRef.value.tableLoding = false
  137. if (res && res.statusCode === 0) {
  138. let bizContent = res.data
  139. let data = bizContent.data || []
  140. console.log(data)
  141. data.forEach((element) => {
  142. element.messageTypeName = MESSAGE_TYPE.value.find(
  143. (item) => item.value == element.messageType
  144. )?.label
  145. element.sendResultName = MESSAGE_RESULT.value.find(
  146. (item) => item.value == element.sendResult
  147. )?.label
  148. element.messageChannelName = MESSAGE_CHANNEL.value.find(
  149. (item) => item.value == element.messageChannel
  150. )?.label
  151. })
  152. tableData.value = data
  153. field.value.paging.total = bizContent.totalCount
  154. } else {
  155. ElMessage.error(res.message)
  156. }
  157. }
  158. )
  159. }
  160. // 处理当前页数
  161. function handleCurrentChange(val: number) {
  162. field.value.paging.currentPage = val
  163. getList()
  164. }
  165. const messageClientData = ref<any>([])
  166. // 获取客户端数据
  167. function getmessageClientData() {
  168. BaseService.post('/msgw/clientconfig/list').then((res: any) => {
  169. if (res && res.statusCode === 0) {
  170. let bizContent = res.data
  171. let data = bizContent.data || []
  172. messageClientData.value = data
  173. } else {
  174. ElMessage.error(res.message)
  175. }
  176. })
  177. }
  178. const options = ref<any>([])
  179. const optionsValue = ref<any>([])
  180. // 获取通道列表
  181. function getoptionsList() {
  182. BaseService.post('/msgw/clientconfig/messagetypechanneltree').then((res: any) => {
  183. if (res && res.statusCode === 0) {
  184. let bizContent = res.data
  185. let data = bizContent.data || []
  186. options.value = data
  187. } else {
  188. ElMessage.error(res.message)
  189. }
  190. })
  191. }
  192. const isDisabled = ref(true)
  193. const MessageChannelList = ref<any>([])
  194. function handleTypeChange(val) {
  195. console.log(val)
  196. if (val) {
  197. getChannelList(val)
  198. } else {
  199. MessageChannelList.value = []
  200. isDisabled.value = true
  201. searchForm.value.messageChannel = ''
  202. }
  203. }
  204. function getChannelList(messageType) {
  205. BaseService.post('/msgw/clientconfig/messagetypelist', {
  206. messageType,
  207. }).then((res: any) => {
  208. if (res && res.statusCode === 0) {
  209. const data = JSON.parse(res.bizContent).data.map((ele) => {
  210. return MESSAGE_CHANNEL.value.find((item) => item.value == ele)
  211. })
  212. searchForm.value.messageChannel = JSON.parse(res.bizContent).data[0]
  213. MessageChannelList.value = data
  214. isDisabled.value = false
  215. } else {
  216. ElMessage.error(res.message)
  217. }
  218. })
  219. }
  220. </script>