approach.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <template>
  2. <div class="hc-page-layout-box">
  3. <div class="hc-layout-left-box menu" :style="'width:' + leftWidth + 'px;'">
  4. <div class="hc-menu-header-box">
  5. <div class="text-xl font-bold name">设备分类</div>
  6. <el-button type="primary" hc-btn _icon size="small">
  7. <HcIcon name="add"/>
  8. </el-button>
  9. </div>
  10. <div class="hc-menu-contents-box">
  11. <el-scrollbar>
  12. <HcMenuSimple :datas="menus" :keys="menuKey" :menus="contextMenu" @change="menuChange" @menuTap="contextMenuClick"/>
  13. </el-scrollbar>
  14. </div>
  15. <!--左右拖动-->
  16. <div class="horizontal-drag-line" @mousedown="onmousedown"/>
  17. </div>
  18. <div class="hc-page-content-box">
  19. <HcCard>
  20. <template #header>
  21. <HcTooltip keys="tentative_detect_outside_add">
  22. <el-button type="primary" hc-btn>
  23. <HcIcon name="add-circle"/>
  24. <span>新增</span>
  25. </el-button>
  26. </HcTooltip>
  27. <HcTooltip keys="tentative_detect_outside_edit">
  28. <el-button hc-btn>
  29. <HcIcon name="edit"/>
  30. <span>编辑</span>
  31. </el-button>
  32. </HcTooltip>
  33. <HcTooltip keys="tentative_detect_outside_del">
  34. <el-button hc-btn>
  35. <HcIcon name="delete-bin-2"/>
  36. <span>删除</span>
  37. </el-button>
  38. </HcTooltip>
  39. <HcTooltip keys="tentative_material_approach_printer">
  40. <el-button hc-btn>
  41. <HcIcon name="printer"/>
  42. <span>打印</span>
  43. </el-button>
  44. </HcTooltip>
  45. <HcTooltip keys="tentative_material_approach_import">
  46. <el-button hc-btn>
  47. <HcIcon name="folder-upload"/>
  48. <span>导入</span>
  49. </el-button>
  50. </HcTooltip>
  51. </template>
  52. <template #search>
  53. <div class="w-32">
  54. <el-select v-model="searchForm.type" placeholder="是否需要效验" clearable>
  55. <el-option label="是" value="1"/>
  56. <el-option label="否" value="2"/>
  57. </el-select>
  58. </div>
  59. <div class="w-32 ml-2">
  60. <el-select v-model="searchForm.state" placeholder="状态" clearable>
  61. <el-option label="启用中" value="1"/>
  62. <el-option label="已停用" value="2"/>
  63. </el-select>
  64. </div>
  65. <div class="w-64 ml-2">
  66. <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate"/>
  67. </div>
  68. <div class="w-72 ml-2">
  69. <el-input v-model="searchForm.queryValue" placeholder="请输入设备名称\设备型号查询" clearable @keyup="keyUpEvent"/>
  70. </div>
  71. <div class="ml-2">
  72. <el-button type="primary" @click="searchClick">
  73. <HcIcon name="search-2"/>
  74. <span>搜索</span>
  75. </el-button>
  76. </div>
  77. </template>
  78. <HcTable ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck @selection-change="tableSelection"/>
  79. <template #action>
  80. <HcPages :pages="searchForm" @change="pageChange"/>
  81. </template>
  82. </HcCard>
  83. </div>
  84. </div>
  85. </template>
  86. <script setup>
  87. import {ref, onMounted, watch} from "vue";
  88. import {useAppStore} from "~src/store";
  89. import {HcIsButton} from "~src/plugins/IsButtons";
  90. import {getArrValue, getIndex} from "vue-utils-plus"
  91. //初始变量
  92. const useAppState = useAppStore()
  93. const projectId = ref(useAppState.getProjectId);
  94. const contractId = ref(useAppState.getContractId);
  95. const isCollapse = ref(useAppState.getCollapse)
  96. //监听
  97. watch(() => [
  98. useAppState.getCollapse
  99. ], ([Collapse]) => {
  100. isCollapse.value = Collapse
  101. })
  102. //渲染完成
  103. onMounted(() => {
  104. setContextMenu()
  105. })
  106. //左侧菜单
  107. const menuKey = ref('all')
  108. const menuItem = ref({})
  109. const menus = ref([
  110. {key: 'all', label: '全部'},
  111. {key: 'key1', label: '力学室'},
  112. {key: 'key2', label: '集料室'},
  113. {key: 'key3', label: '水土室'},
  114. {key: 'key4', label: '水泥室'},
  115. ]);
  116. //菜单被点击
  117. const menuChange = (item) => {
  118. menuItem.value = item
  119. menuKey.value = item?.key
  120. }
  121. //菜单的右键菜单
  122. const contextMenu = ref([])
  123. const setContextMenu = () => {
  124. let newArr = [];
  125. if (HcIsButton('wbs_tree_edit')) {
  126. newArr.push({icon: 'draft', label: '编辑分类', key: "edit"})
  127. }
  128. if (HcIsButton('wbs_tree_del')) {
  129. newArr.push({icon: 'delete-bin', label: '删除分类', key: "del"})
  130. }
  131. contextMenu.value = newArr
  132. }
  133. //菜单的右键菜单被点击
  134. const contextMenuClick = () => {
  135. }
  136. //搜索表单
  137. const searchForm = ref({
  138. type: null, state: null, betweenTime: null, queryValue: null,
  139. current: 1, size: 20, total: 0
  140. })
  141. //日期时间被选择
  142. const betweenTime = ref(null)
  143. const betweenTimeUpdate = ({arr,query}) => {
  144. betweenTime.value = arr
  145. searchForm.value.betweenTime = query
  146. }
  147. //回车搜索
  148. const keyUpEvent = (e) => {
  149. if (e.key === "Enter") {
  150. searchForm.value.current = 1;
  151. getTableData()
  152. }
  153. }
  154. //搜索
  155. const searchClick = () => {
  156. searchForm.value.current = 1;
  157. getTableData()
  158. }
  159. //分页被点击
  160. const pageChange = ({current, size}) => {
  161. searchForm.value.current = current
  162. searchForm.value.size = size
  163. getTableData()
  164. }
  165. //表格数据
  166. const tableRef = ref(null)
  167. const tableColumn = ref([
  168. {key:'key1', name: '设备名称'},
  169. {key:'key2', name: '设备分类'},
  170. {key:'key3', name: '设备编号'},
  171. {key:'key4', name: '设备型号'},
  172. {key:'key5', name: '生产厂家'},
  173. {key:'key6', name: '出厂日期'},
  174. {key:'key7', name: '出厂编号'},
  175. {key:'key8', name: '进场日期'},
  176. {key:'key9', name: '测量范围'},
  177. {key:'key10', name: '精准度'},
  178. {key:'key11', name: '校准周期(月)'},
  179. {key:'key12', name: '最近效验时间'},
  180. {key:'key13', name: '状态'},
  181. {key:'key14', name: '是否需要效验'},
  182. {key:'key15', name: '设备采集编号'},
  183. {key:'key16', name: '设备管理人员'},
  184. {key:'key17', name: '备注'},
  185. ])
  186. const tableLoading = ref(false)
  187. const tableData = ref([])
  188. //获取数据
  189. const getTableData = () => {
  190. }
  191. //多选
  192. const tableCheckedKeys = ref([]);
  193. const tableSelection = (rows) => {
  194. tableCheckedKeys.value = rows.filter((item) => {
  195. return (item??'') !== '';
  196. })
  197. }
  198. //左右拖动,改变树形结构宽度
  199. const leftWidth = ref(240);
  200. const onmousedown = () => {
  201. const leftNum = isCollapse.value ? 142 : 272
  202. document.onmousemove = (ve) => {
  203. let diffVal = ve.clientX - leftNum;
  204. if(diffVal >= 220 && diffVal <= 400) {
  205. leftWidth.value = diffVal;
  206. }
  207. }
  208. document.onmouseup = () => {
  209. document.onmousemove = null;
  210. document.onmouseup = null;
  211. }
  212. }
  213. </script>
  214. <style lang="scss" scoped>
  215. </style>
  216. <style lang="scss">
  217. </style>