dialog-selectEquipment.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <template>
  2. <dialog-base ref="baseDialog" title="请选择">
  3. <!-- <view class="equipment-container uni-row ">
  4. <view v-for="(item, index) in equiments" :class="{'item':true,'selected': isSelected(item)}" :key="index"
  5. @click="handleSelection(item)"><text class="label">{{item['equipmentDetailCode']}}</text></view>
  6. </view> -->
  7. <view>
  8. <uni-section title="工序" type="line">
  9. <uni-data-select v-model="selectedProcess" :localdata="processList" :clear="false"
  10. @change="handleProcessChange"></uni-data-select>
  11. </uni-section>
  12. </view>
  13. <view>
  14. <uni-section title="设备" type="line">
  15. <uni-data-select v-model="selectedEquiment" :localdata="equipmentList" :clear="false"
  16. @change="handleEquipmentChange"></uni-data-select>
  17. </uni-section>
  18. </view>
  19. <view class="add-btn-container uni-row">
  20. <button type="primary" class="btn" @click="handleStart">开始</button>
  21. </view>
  22. </dialog-base>
  23. </template>
  24. <script setup>
  25. import {
  26. ref
  27. } from 'vue'
  28. import {
  29. onLoad
  30. } from '@dcloudio/uni-app'
  31. import {
  32. getUserequipmentList
  33. } from '@/api/business/userEquipment/userEquipment.js'
  34. import {
  35. getUserInfo
  36. } from '@/api/login/index.js'
  37. import {
  38. saveDayWorkItem,
  39. getDayWorkItemList
  40. } from '@/api/business/dayWorkItem.js'
  41. import {
  42. store
  43. } from '@/store/index.js'
  44. import {
  45. timestampToTime
  46. } from '@/utils/common.js'
  47. const baseDialog = ref(null)
  48. const equiments = ref([]) // 接收设备列表信息
  49. const equipmentList = ref([])
  50. const emit = defineEmits(['handleAddDayWorkItem'])
  51. const userId = ref(null)
  52. const firstItem = ref(null);
  53. const sendReqParam = ref([])
  54. const processList = ref([])
  55. const selectedProcess = ref(null)
  56. const selectedEquiment = ref(null)
  57. onLoad(() => {
  58. userId.value = store.userInfo.userId || "";
  59. })
  60. function init() {
  61. let reqParam = {
  62. userId: userId.value,
  63. processId: store.dayworkInfo.currentProcess.id,
  64. }
  65. getUserequipmentList(reqParam).then(res => {
  66. if (res.code == 200) {
  67. equiments.value = res.rows
  68. getDayWorkItemList({
  69. userId: store.userInfo.userId,
  70. dayworkId: store.dayworkInfo.id,
  71. status: 1
  72. }).then(response => {
  73. // 过滤人员可选择的设备列表(选择之后不予展示)
  74. for (let i = 0; i < response.rows.length; i++) {
  75. for (let j = 0; j < equiments.value.length; j++) {
  76. if (response.rows[i].equipmentDetailId == equiments.value[j]
  77. .equipmentDetailId) {
  78. equiments.value.splice(j, 1);
  79. }
  80. }
  81. }
  82. console.log(equiments.value)
  83. baseDialog.value.open()
  84. })
  85. }
  86. })
  87. }
  88. function open(data) {
  89. firstItem.value = data;
  90. init();
  91. }
  92. function close() {
  93. baseDialog.value.close()
  94. }
  95. defineExpose({
  96. open
  97. })
  98. function handleProcessChange() {
  99. }
  100. function handleEquipmentChange() {
  101. }
  102. function handleSelection(item) {
  103. // const buttonIndex = selection.value.findIndex(selectedItem => selectedItem === item);
  104. // if (buttonIndex > -1) {
  105. // selection.value.splice(buttonIndex, 1); // 取消选中
  106. // } else {
  107. // selection.value.push(item); // 选中
  108. // }
  109. selection.value[0] = item;
  110. }
  111. function handleStart() {
  112. if (!selectedProcess.value || !selectedEquiment.value) {
  113. uni.showToast({
  114. icon: "none",
  115. title: "未选择工序或设备"
  116. })
  117. return;
  118. }
  119. close();
  120. if (firstItem.value) {
  121. sendReqParam.value.push(firstItem.value);
  122. sendReqParam.value[i].id = null;
  123. sendReqParam.value[i].processId = selectedProcess.value;
  124. sendReqParam.value[i].equipmentDetailId = selectedEquiment.value.equipmentDetailId;
  125. sendReqParam.value[i].equipmentDetailCode = selectedEquiment.value.equipmentDetailCode;
  126. sendReqParam.value[i].startTime = timestampToTime(new Date());
  127. sendReqParam.value[i].status = 1;
  128. emit('handleAddDayWorkItem', sendReqParam.value);
  129. selectedProcess.value = null;
  130. selectedEquiment.value = null;
  131. } else {
  132. console.log(selection.value);
  133. emit('handleAddDayWorkItem', selection.value);
  134. selectedProcess.value = null;
  135. selectedEquiment.value = null;
  136. }
  137. }
  138. </script>
  139. <style lang="scss">
  140. .dialog-body {
  141. .equipment-container {
  142. height: 300rpx;
  143. overflow: auto;
  144. flex-wrap: wrap;
  145. justify-content: flex-start;
  146. margin: 24rpx 0 0 7%;
  147. .item {
  148. width: 236rpx;
  149. height: 60rpx;
  150. text-align: center;
  151. line-height: 60rpx;
  152. border-radius: 6rpx;
  153. margin: 16rpx;
  154. flex: 0 0 40%;
  155. border: 1px solid #000000;
  156. }
  157. .selected {
  158. background-color: #1684fc;
  159. color: #FFF;
  160. }
  161. }
  162. .add-btn-container {
  163. margin-top: 32rpx;
  164. .btn {
  165. flex: 1;
  166. }
  167. }
  168. }
  169. </style>