ConditionQuery.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <div class="flex items-center query-head">
  3. <el-space alignment="center" :size="50">
  4. <div>
  5. <el-select v-model="queryType" placeholder="选择类型" class="type-select">
  6. <el-option v-for="item in queryTypeSelect" :key="item.value" :label="item.label" :value="item.value" />
  7. </el-select>
  8. <el-input
  9. :style="{ width: '180px' }"
  10. v-model="queryTypeContent"
  11. clearable
  12. placeholder="请输入查找内容"
  13. :disabled="!Boolean(queryType)"
  14. />
  15. </div>
  16. <div>
  17. <span>添加方式:</span>
  18. <el-select v-model="querySourceType" placeholder="请选择添加方式" class="protocal-select">
  19. <el-option v-for="item in cameraAddType" :key="item.value" :label="item.label" :value="AddType[item.value]" />
  20. </el-select>
  21. </div>
  22. <div>
  23. <span>工位:</span>
  24. <el-cascader
  25. class="protocal-select"
  26. v-model="tempWorkSpaces"
  27. :options="workspaceInfo"
  28. :props="locationProp"
  29. clearable
  30. collapse-tags
  31. :show-all-levels="false"
  32. popper-class="special-cascader"
  33. placeholder="请选择工位"
  34. @change="handleCascaderChange"
  35. />
  36. </div>
  37. <div>
  38. <span>联网状态:</span>
  39. <el-select v-model="networkingState" placeholder="请选择添加方式" class="simple-select">
  40. <el-option :value="-1" label="全部" />
  41. <el-option :value="0" label="已联网" />
  42. <el-option :value="1" label="未联网" />
  43. </el-select>
  44. </div>
  45. <div>
  46. <span>进入平台:</span>
  47. <el-select v-model="integrationState" placeholder="请选择添加方式" class="simple-select">
  48. <el-option :value="-1" label="全部" />
  49. <el-option :value="0" label="是" />
  50. <el-option :value="1" label="否" />
  51. </el-select>
  52. </div>
  53. <div>
  54. <span>鹰眼追踪:</span>
  55. <el-select v-model="openEagle" placeholder="请选择添加方式" class="simple-select">
  56. <el-option :value="-1" label="全部" />
  57. <el-option :value="1" label="是" />
  58. <el-option :value="0" label="否" />
  59. </el-select>
  60. </div>
  61. </el-space>
  62. <div class="flex-1 flex justify-end">
  63. <el-button type="primary" @click="getCameraItems"> 查询 </el-button>
  64. <el-button @click="resetSearch"> 重置 </el-button>
  65. </div>
  66. </div>
  67. </template>
  68. <script setup lang="ts">
  69. import { onMounted, ref } from 'vue';
  70. import { storeToRefs } from 'pinia';
  71. import { queryTypeSelect, cameraAddType, AddType } from '@/types/camera/constant';
  72. import useCameraOverview from '../stores/useCameraOverview';
  73. import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
  74. const treeWorkspaceInfo = useTreeWorkspaceInfo();
  75. const { workspaceInfo, getWorkspaceFromTreeInfo, getWorkspaceIdFromTreeNode } = treeWorkspaceInfo;
  76. const cameraOverview = useCameraOverview();
  77. const {
  78. queryType,
  79. queryTypeContent,
  80. querySourceType,
  81. queryWorkSpaces,
  82. integrationState,
  83. networkingState,
  84. openEagle,
  85. } = storeToRefs(cameraOverview);
  86. const { getCameraItems, reset } = cameraOverview;
  87. const tempWorkSpaces = ref([]);
  88. const locationProp = { multiple: true, expandTrigger: 'hover' as const }; // 级联选择器(打开多选)
  89. const handleCascaderChange = () => {
  90. const tempArr = [] as number[];
  91. queryWorkSpaces.value = [];
  92. if (tempWorkSpaces.value.length !== 0) {
  93. tempWorkSpaces.value.forEach((item) => {
  94. const workspaceId = getWorkspaceIdFromTreeNode(item[2]);
  95. tempArr.push(Number(workspaceId));
  96. });
  97. queryWorkSpaces.value = tempArr;
  98. }
  99. };
  100. // 重置查询条件
  101. const resetSearch = () => {
  102. tempWorkSpaces.value = [];
  103. queryType.value = '';
  104. queryTypeContent.value = '';
  105. querySourceType.value = '';
  106. queryWorkSpaces.value = [];
  107. integrationState.value = -1;
  108. networkingState.value = -1;
  109. openEagle.value = -1;
  110. reset();
  111. getCameraItems();
  112. };
  113. onMounted(() => {
  114. getWorkspaceFromTreeInfo();
  115. });
  116. </script>
  117. <style scoped>
  118. .type-select {
  119. width: 100px;
  120. }
  121. .protocal-select {
  122. width: 160px;
  123. }
  124. .simple-select {
  125. width: 80px;
  126. }
  127. .query-head {
  128. padding: 24px 57px 18px 21px;
  129. }
  130. </style>