sieve.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  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 name">自定义筛孔类型</div>
  6. <HcTooltip keys="tentative_parameter_sieve_menu_add">
  7. <el-button type="primary" hc-btn _icon size="small" @click="addEditNodeFormModalClick">
  8. <HcIcon name="add"/>
  9. </el-button>
  10. </HcTooltip>
  11. </div>
  12. <div class="hc-menu-contents-box">
  13. <el-scrollbar>
  14. <HcMenuSimple :datas="menus" :keys="menuKey" :menus="contextMenu" @change="menuChange" @menuTap="contextMenuClick"/>
  15. </el-scrollbar>
  16. </div>
  17. <!--左右拖动-->
  18. <div class="horizontal-drag-line" @mousedown="onmousedown"/>
  19. </div>
  20. <div class="hc-page-content-box">
  21. <HcCard>
  22. <template #header>
  23. <div class="w-72">
  24. <el-input v-model="searchForm.queryValue" placeholder="请输入容器编号查询" clearable @keyup="keyUpEvent" size="large"/>
  25. </div>
  26. <div class="ml-2">
  27. <el-button type="primary" @click="searchClick" size="large">
  28. <HcIcon name="search-2"/>
  29. <span>搜索</span>
  30. </el-button>
  31. </div>
  32. </template>
  33. <template #extra>
  34. <HcTooltip keys="tentative_parameter_sieve_add">
  35. <el-button type="primary" hc-btn @click="addFormModalClick">
  36. <HcIcon name="add-circle"/>
  37. <span>新增</span>
  38. </el-button>
  39. </HcTooltip>
  40. <HcTooltip keys="tentative_parameter_sieve_edit">
  41. <el-button hc-btn @click="editFormModalClick">
  42. <HcIcon name="edit"/>
  43. <span>编辑</span>
  44. </el-button>
  45. </HcTooltip>
  46. <HcTooltip keys="tentative_parameter_sieve_del">
  47. <el-button hc-btn @click="delNodeModalClick">
  48. <HcIcon name="delete-bin-2"/>
  49. <span>删除</span>
  50. </el-button>
  51. </HcTooltip>
  52. </template>
  53. <HcTable ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck @selection-change="tableSelection"/>
  54. <template #action>
  55. <HcPages :pages="searchForm" @change="pageChange"/>
  56. </template>
  57. </HcCard>
  58. </div>
  59. <!--新增/编辑 节点-->
  60. <HcDialog :show="addEditNodeFormModal" title="新增/编辑 类型" widths="30rem" :loading="addEditNodeFormLoading" @close="addEditNodeFormModalClose" @save="addEditNodeFormModalSave">
  61. <el-form :model="addEditNodeFormModel" label-width="auto" label-position="top" size="large">
  62. <el-form-item label="类型名称">
  63. <el-input v-model="addEditNodeFormModel.key1" placeholder="请输入类型名称"/>
  64. </el-form-item>
  65. </el-form>
  66. </HcDialog>
  67. <!--新增/编辑-->
  68. <HcDialog :show="addEditFormModal" title="新增/编辑 筛孔尺寸信息" widths="30rem" :loading="addEditFormLoading" @close="addEditFormModalClose" @save="addEditFormClick">
  69. <el-form ref="addEditFormRef" :model="addEditFormModel" :rules="addEditFormRules" label-width="auto" size="large">
  70. <el-form-item label="筛孔尺寸" prop="key1">
  71. <el-input v-model="addEditFormModel.key1"/>
  72. </el-form-item>
  73. <el-form-item label="下限" prop="key1">
  74. <el-input v-model="addEditFormModel.key2"/>
  75. </el-form-item>
  76. <el-form-item label="上限" prop="key1">
  77. <el-input v-model="addEditFormModel.key3"/>
  78. </el-form-item>
  79. <el-form-item label="标准" prop="key1">
  80. <el-input v-model="addEditFormModel.key4"/>
  81. </el-form-item>
  82. <el-form-item label="限制区界限最大" prop="key1">
  83. <el-input v-model="addEditFormModel.key5"/>
  84. </el-form-item>
  85. <el-form-item label="限制区界限最小" prop="key1">
  86. <el-input v-model="addEditFormModel.key6"/>
  87. </el-form-item>
  88. <el-form-item label="控制点界限最大" prop="key1">
  89. <el-input v-model="addEditFormModel.key7"/>
  90. </el-form-item>
  91. <el-form-item label="控制点界限最小" prop="key1">
  92. <el-input v-model="addEditFormModel.key8"/>
  93. </el-form-item>
  94. </el-form>
  95. </HcDialog>
  96. </div>
  97. </template>
  98. <script setup>
  99. import {ref, onMounted, watch} from "vue";
  100. import {useAppStore} from "~src/store";
  101. import {HcIsButton} from "~src/plugins/IsButtons";
  102. import {getArrValue, getIndex} from "vue-utils-plus"
  103. //初始变量
  104. const useAppState = useAppStore()
  105. const projectId = ref(useAppState.getProjectId);
  106. const contractId = ref(useAppState.getContractId);
  107. const isCollapse = ref(useAppState.getCollapse)
  108. //监听
  109. watch(() => [
  110. useAppState.getCollapse
  111. ], ([Collapse]) => {
  112. isCollapse.value = Collapse
  113. })
  114. //渲染完成
  115. onMounted(() => {
  116. setContextMenu()
  117. })
  118. //左侧菜单
  119. const menuKey = ref('key1')
  120. const menuItem = ref({})
  121. const menus = ref([
  122. {key: 'key1', label: 'xxx类型名称1'},
  123. {key: 'key2', label: 'xxx类型名称2'},
  124. {key: 'key3', label: 'xxx类型名称3'},
  125. {key: 'key4', label: 'xxx类型名称4'}
  126. ]);
  127. //菜单被点击
  128. const menuChange = (item) => {
  129. menuItem.value = item
  130. menuKey.value = item?.key
  131. }
  132. //菜单的右键菜单
  133. const contextMenu = ref([])
  134. const setContextMenu = () => {
  135. let newArr = [];
  136. if (HcIsButton('tentative_parameter_sieve_menu_edit')) {
  137. newArr.push({icon: 'draft', label: '编辑分类', key: "edit"})
  138. }
  139. if (HcIsButton('tentative_parameter_sieve_menu_del')) {
  140. newArr.push({icon: 'delete-bin', label: '删除分类', key: "del"})
  141. }
  142. contextMenu.value = newArr
  143. }
  144. //菜单的右键菜单被点击
  145. const contextMenuItem = ref({})
  146. const contextMenuClick = ({key, item}) => {
  147. contextMenuItem.value = item
  148. if (key === 'edit') {
  149. addEditNodeFormModal.value = true
  150. } else if (key === 'del') {
  151. delNodeModalClick()
  152. }
  153. }
  154. //搜索表单
  155. const searchForm = ref({
  156. queryValue: null, current: 1, size: 20, total: 0
  157. })
  158. //日期时间被选择
  159. const betweenTime = ref(null)
  160. const betweenTimeUpdate = ({arr,query}) => {
  161. betweenTime.value = arr
  162. searchForm.value.betweenTime = query
  163. }
  164. //回车搜索
  165. const keyUpEvent = (e) => {
  166. if (e.key === "Enter") {
  167. searchForm.value.current = 1;
  168. getTableData()
  169. }
  170. }
  171. //搜索
  172. const searchClick = () => {
  173. searchForm.value.current = 1;
  174. getTableData()
  175. }
  176. //分页被点击
  177. const pageChange = ({current, size}) => {
  178. searchForm.value.current = current
  179. searchForm.value.size = size
  180. getTableData()
  181. }
  182. //表格数据
  183. const tableRef = ref(null)
  184. const tableColumn = ref([
  185. {key:'key1', name: '筛孔尺寸'},
  186. {key:'key2', name: '下限'},
  187. {key:'key3', name: '上限'},
  188. {key:'key4', name: '标准'},
  189. {key:'key5', name: '限制区最大'},
  190. {key:'key6', name: '限制区最小'},
  191. {key:'key7', name: '控制点最大'},
  192. {key:'key8', name: '控制点最小'},
  193. ])
  194. const tableLoading = ref(false)
  195. const tableData = ref([])
  196. //获取数据
  197. const getTableData = () => {
  198. }
  199. //多选
  200. const tableCheckedKeys = ref([]);
  201. const tableSelection = (rows) => {
  202. tableCheckedKeys.value = rows.filter((item) => {
  203. return (item??'') !== '';
  204. })
  205. }
  206. //新增/编辑 分类
  207. const addEditNodeFormModal = ref(false)
  208. const addEditNodeFormModel = ref({key1: ''})
  209. const addEditNodeFormModalClick = () => {
  210. addEditNodeFormModal.value = true
  211. }
  212. //保存节点信息
  213. const addEditNodeFormLoading = ref(false)
  214. const addEditNodeFormModalSave = () => {
  215. addEditNodeFormModal.value = false
  216. }
  217. //关闭分类编辑弹窗
  218. const addEditNodeFormModalClose = () => {
  219. addEditNodeFormModal.value = false
  220. }
  221. //删除分类
  222. const delNodeModalClick = () => {
  223. window?.$messageBox?.alert('请谨慎考虑后,确认是否需要删除?', '删除提醒', {
  224. showCancelButton: true,
  225. confirmButtonText: '确认删除',
  226. cancelButtonText: '取消',
  227. type: 'warning',
  228. callback: (action) => {
  229. if (action === 'confirm') {
  230. //removeContractTreeNode()
  231. }
  232. }
  233. })
  234. }
  235. //新增/编辑
  236. const addEditFormModal = ref(false)
  237. const addFormModalClick = () => {
  238. addEditFormModal.value = true
  239. }
  240. const editFormModalClick = () => {
  241. addEditFormModal.value = true
  242. }
  243. const addEditFormModalClose = () => {
  244. addEditFormModal.value = false
  245. }
  246. //新增/编辑 表单
  247. const addEditFormRef = ref(null)
  248. const addEditFormModel = ref({})
  249. const addEditFormRules = {
  250. key1111: {
  251. required: true,
  252. trigger: 'blur',
  253. message: "请输入"
  254. },
  255. key2111: {
  256. required: true,
  257. trigger: 'blur',
  258. message: "请选择"
  259. },
  260. }
  261. //新增/编辑 保存
  262. const addEditFormLoading = ref(false)
  263. const addEditFormClick = () => {
  264. }
  265. //左右拖动,改变树形结构宽度
  266. const leftWidth = ref(240);
  267. const onmousedown = () => {
  268. const leftNum = isCollapse.value ? 142 : 272
  269. document.onmousemove = (ve) => {
  270. let diffVal = ve.clientX - leftNum;
  271. if(diffVal >= 220 && diffVal <= 400) {
  272. leftWidth.value = diffVal;
  273. }
  274. }
  275. document.onmouseup = () => {
  276. document.onmousemove = null;
  277. document.onmouseup = null;
  278. }
  279. }
  280. </script>
  281. <style lang="scss" scoped>
  282. .hc-import-modal-table-box {
  283. position: relative;
  284. height: calc(100% - 228px);
  285. margin-top: 25px;
  286. }
  287. </style>