workshop.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <template>
  2. <div class="leftcon">
  3. <el-form ref="form" :model="form" label-width="100px" :inline="true">
  4. <el-form-item label="车间">
  5. <el-select v-model="form.workShop" placeholder="请选择车间" @change="handleselect">
  6. <el-option
  7. v-for="item in this.workShopOptions"
  8. :key="item.value"
  9. :label="item.label"
  10. :value="item.value"
  11. >
  12. </el-option>
  13. </el-select>
  14. <!-- <el-select-->
  15. <!-- v-model="form.workShop"-->
  16. <!-- v-bind="$attrs"-->
  17. <!-- multiple-->
  18. <!-- style="width: 100%"-->
  19. <!-- placeholder="请选择线路"-->
  20. <!-- @change="handleSelect"-->
  21. <!-- >-->
  22. <!-- <div style="padding: 0 20px; line-height: 34px">-->
  23. <!-- <el-checkbox-->
  24. <!-- v-model="checkAll"-->
  25. <!-- :indeterminate="isIndeterminate"-->
  26. <!-- @change="handleCheckAllChange"-->
  27. <!-- >全选</el-checkbox-->
  28. <!-- >-->
  29. <!-- </div>-->
  30. <!-- <el-checkbox-group v-model="form.workShop">-->
  31. <!-- <el-option-->
  32. <!-- v-for="item in this.workShopOptions"-->
  33. <!-- :key="item.value"-->
  34. <!-- :label="item.label"-->
  35. <!-- :value="item.value"-->
  36. <!-- >-->
  37. <!-- <el-checkbox style="pointer-events: none" :label="item.value">-->
  38. <!-- {{ item.label }}-->
  39. <!-- </el-checkbox>-->
  40. <!-- </el-option>-->
  41. <!-- </el-checkbox-group>-->
  42. <!-- </el-select>-->
  43. </el-form-item>
  44. <el-form-item label="生产线">
  45. <el-select v-model="form.producLine" placeholder="请选择生产线" @change="handleselectProductLine">
  46. <el-option
  47. v-for="item in this.producLineOptions"
  48. :key="item.value"
  49. :label="item.label"
  50. :value="item.value"
  51. >
  52. </el-option>
  53. </el-select>
  54. </el-form-item>
  55. </el-form>
  56. </div>
  57. </template>
  58. <script>
  59. import { listAllWorkshop } from '@/api/mes/md/workshop'
  60. import {getIsWorkareaList} from "@/api/mes/wa/workarea"
  61. import {selectIsSopById} from "@/api/mes/sop/sopindex"
  62. export default {
  63. props:{
  64. jobProps:{
  65. type:Array,
  66. default:()=>[]
  67. }
  68. },
  69. data() {
  70. return {
  71. form: {
  72. checkAll: false,
  73. isIndeterminate: false,
  74. workShop: [],
  75. producLine: "",
  76. },
  77. workShopOptions: [
  78. { label: "士力架包装车间1号", value: "1" },
  79. { label: "士力架包装车间2号", value: "2" },
  80. { label: "士力架包装车间3号", value: "3" },
  81. { label: "士力架包装车间4号", value: "4" },
  82. ],
  83. producLineOptions: [
  84. ],
  85. };
  86. },
  87. watch: {
  88. jobProps: {
  89. handler(newVal, oldVal) {
  90. console.log('jobProps 发生变化', newVal, oldVal);
  91. // 在这里处理 jobProps 变化后的逻辑
  92. this.form.workShop=newVal[0].workshopId
  93. this.form.producLine=newVal[0].workareaId
  94. this.handleselect(newVal[0].workshopId)
  95. this.handleselectProductLine(newVal[0].workareaId)
  96. // 这里是为了拿到sop模板里默认的隔离点选中的数据
  97. selectIsSopById(newVal[0].sopId).then(res => {
  98. console.log(res,'sop')
  99. const selectSopPoints=res.data.pointDetailVOList.map((item)=>{
  100. return item.pointId
  101. })
  102. console.log(selectSopPoints,'sop_selectePoints')
  103. })
  104. },
  105. immediate: true // 立即执行一次,确保在组件初始化时也能捕获到 jobProps 的值
  106. }
  107. },
  108. mounted() {
  109. this.getworkshopList()
  110. },
  111. methods: {
  112. // 获取车间列表
  113. getworkshopList(){
  114. listAllWorkshop().then(response => {
  115. this.workShopOptions = response.data.map((item) => {
  116. return {
  117. label:item.workshopName,
  118. value:item.workshopId,
  119. key:item.workshopCode
  120. }
  121. });
  122. })
  123. },
  124. // 单选车间下拉
  125. handleselect(value){
  126. // console.log(value,'我触发了车间下拉');
  127. getIsWorkareaList(value).then(response => {
  128. this.producLineOptions = response.data.map((item) => {
  129. return {
  130. label:item.workareaName,
  131. value:item.workareaId,
  132. key:item.workareaCode,
  133. map:item.map
  134. }
  135. })
  136. })
  137. },
  138. // 生产线下拉
  139. handleselectProductLine(val){
  140. // console.log(val,'生产线下拉')
  141. // 利用组件逆传递 selectProductLine方法传递数据给兄弟组件
  142. const selectedOption=this.producLineOptions.filter((item)=>{
  143. return item.value === val
  144. })
  145. const selectworkShop=this.workShopOptions.filter((item)=>{
  146. return item.value === this.form.workShop
  147. })
  148. // console.log(selectworkShop,selectedOption,'workshop-components')
  149. // 触发自定义事件,传递 selectedOption[0] 数据给父组件
  150. this.$emit('product-line-selected', selectedOption[0]);
  151. this.$emit('work-shop-selected',selectworkShop[0])
  152. },
  153. // 多选车间下拉框选择事件
  154. // handleSelect(value) {
  155. // console.log(value, "value");
  156. // const checkedCount = value.length;
  157. // this.checkAll = checkedCount === this.workShopOptions.length;
  158. // this.isIndeterminate =
  159. // checkedCount > 0 && checkedCount < this.workShopOptions.length;
  160. // const data = value.map((item) => {
  161. // return item;
  162. // });
  163. // this.form.workShop = value.length > 0 ? data : [];
  164. //
  165. // console.log(this.form.workShop, " form.workShop");
  166. // },
  167. // 全选事件
  168. handleCheckAllChange(val) {
  169. const data = this.workShopOptions.map((item) => {
  170. return item.value;
  171. });
  172. this.form.workShop = val ? data : [];
  173. this.isIndeterminate = false;
  174. },
  175. },
  176. };
  177. </script>
  178. <style scoped lang='scss'>
  179. .leftcon {
  180. width: 100%;
  181. height: 100%;
  182. // background-color: rgba(229, 229, 229, 1);
  183. background: url("../../assets/images/sopbgimg.png") no-repeat;
  184. background-size: 100% 100%;
  185. // box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.4);
  186. padding: 3% 4%;
  187. }
  188. </style>