addGongYi.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <template>
  2. <!-- 新增工艺资料弹窗 -->
  3. <el-dialog v-model="visible" :before-close="()=> visible = false" style="width: 70%;margin: 8px auto" :title="'新增工艺资料'" destroy-on-close>
  4. <el-form>
  5. <div>
  6. <el-form-item label="印件编号:" class="mab" prop="keyOrder">
  7. <el-select v-model="form.yjno" id="印件编号" @keydown="add_gyzlent($event, '质量隐患', '印件编号', '工序编号')" @change="changeHandle">
  8. <el-option v-for="item in yjList"
  9. :label="item.name" :value="item.no"
  10. />
  11. </el-select>
  12. </el-form-item>
  13. <div style="display: flex; gap: 0px;">
  14. <el-form-item label="工序编号:" class="mab" prop="keyOrder">
  15. <el-input v-model="form['工序']" id="工序编号" @keydown="add_gyzlent($event, '印件编号', '工序编号', '重点工序')" style="width: 100px;"/>
  16. </el-form-item>
  17. <el-form-item label="重点工序:" class="mab" prop="keyOrder" label-width=" 90">
  18. <el-select v-model="form['重点工序']" id="重点工序" @keydown="add_gyzlent($event, '', '重点工序', '开数')" style="width: 140px;">
  19. <el-option value=""></el-option>
  20. <el-option value="重点工序">重点工序</el-option>
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="备选工序:" class="mab" prop="isBanciSelected" label-width=" 90">
  24. <el-checkbox v-model="form['备选工序']"></el-checkbox>
  25. </el-form-item>
  26. <el-form-item label="加工开数:" class="mab" prop="keyOrder" label-width=" 125">
  27. <el-input v-model="form['开数']" style="width: 100px;" id="开数" @keydown="add_gyzlent($event, '重点工序 ', '开数', '联数')" />
  28. </el-form-item>
  29. <el-form-item label="加工联数:" class="mab" prop="keyOrder" label-width=" 80">
  30. <el-input v-model="form['联数']" style="width: 100px;" id="联数" @keydown="add_gyzlent($event, '开数', '联数', '车间名称')" />
  31. </el-form-item>
  32. </div>
  33. <div style="display: flex; gap: 0px;">
  34. <el-form-item label="车间名称:" class="mab" prop="keyOrder">
  35. <el-tree-select
  36. v-model="form['车间名称']"
  37. :data="cjList"
  38. :render-after-expand="false"
  39. @change="selectHandle"
  40. id="车间名称" @keydown="add_gyzlent($event, '联数', '车间名称', '工序名称')"
  41. style="width: 240px"
  42. >
  43. </el-tree-select>
  44. </el-form-item>
  45. <el-form-item label="工艺名称:" class="mab" prop="keyOrder" label-width=" 90">
  46. <el-input disabled v-model="form['工艺名称']" style="width: 140px;"/>
  47. </el-form-item>
  48. <el-form-item label="工序名称:" class="mab" prop="keyOrder" label-width=" 90">
  49. <el-input v-model="form['工序名称']" style="width: 300px;" id="工序名称" @keydown="add_gyzlent($event, '车间名称', '工序名称', '设备编号')" />
  50. </el-form-item>
  51. <el-form-item label="计损色数" class="mab" prop="keyOrder" label-width=" 80">
  52. <el-input disabled v-model="form['计损色数']" style="width: 90px;"/>
  53. </el-form-item>
  54. </div>
  55. <el-form-item label="设备编号:" class="mab" prop="remark">
  56. <el-select v-model="form['设备编号']" multiple
  57. id="设备编号" @keydown="add_gyzlent($event, '工序名称', '设备编号', '工序损耗')"
  58. style="flex: 1; height: auto;">
  59. <el-option
  60. @keydown.tab.prevent="sbbhclick"
  61. @click="sbbhclick"
  62. v-for="(item, index) in gdzl_MachineList_address"
  63. :key="index"
  64. :label="item.split('-->')[0].trim()"
  65. :value="item.split('-->')[0].trim()">
  66. {{ item }}
  67. </el-option>
  68. </el-select>
  69. </el-form-item>
  70. <el-form-item label="工序损耗:" class="mab" prop="keyOrder" >
  71. <el-input v-model="form['shdh']" style="width: 10%;" id="工序损耗" @keydown="add_gyzlent($event, '设备编号', '工序损耗', '装版工时')"/>
  72. <el-input disabled v-model="form['工序损耗名称']" style="width: 88.7%;margin-left: 10px"/>
  73. </el-form-item>
  74. <div style="display: flex; gap: 0px;">
  75. <el-form-item label="损耗系数:" class="mab" prop="keyOrder">
  76. <el-input disabled v-model="form['损耗系数']" style="flex: 1;" />
  77. </el-form-item>
  78. <el-form-item label="难度系数" class="mab" prop="keyOrder">
  79. <el-input disabled v-model="form['难度系数']" style="flex: 1;" />
  80. </el-form-item>
  81. <el-form-item label="装版工时:" class="mab" prop="keyOrder">
  82. <el-input v-model="form['装版工时']" style="flex: 1;" id="装版工时" @keydown="add_gyzlent($event, '工序损耗', '装版工时', '排产小时产能')"/>
  83. </el-form-item>
  84. <el-form-item label="排产小时产能:" class="mab" prop="keyOrder" label-width=" 120px">
  85. <el-input v-model="form['小时产能']" style="flex: 1;" id="排产小时产能" @keydown="add_gyzlent($event, '装版工时', '排产小时产能', '备注')"/>
  86. </el-form-item>
  87. <el-form-item label="印刷方式" class="mab" prop="keyOrder">
  88. <el-input disabled v-model="form['印刷方式']" style="flex: 1;"/>
  89. </el-form-item>
  90. <el-form-item label="版距" class="mab" prop="keyOrder">
  91. <el-input disabled v-model="form['版距']" style="flex: 1;"/>
  92. </el-form-item>
  93. </div>
  94. <el-form-item label="工序备注:" class="mab" prop="remark">
  95. <el-input type="textarea" resize="none" v-model="form['备注']" rows="3" clearable style="flex: 1;resize: none" id="备注" @keydown="add_gyzlent($event, '排产小时产能', '备注', '质量要求')"/>
  96. </el-form-item>
  97. <el-form-item label="质量要求:" class="mab" prop="remark">
  98. <el-input type="textarea" resize="none" v-model="form['质量要求']" rows="2" clearable style="flex: 1;resize: both;" id="质量要求" @keydown="add_gyzlent($event, '备注', '质量要求', '质量隐患')"/>
  99. </el-form-item>
  100. <el-form-item label="质量隐患:" class="mab" prop="remark">
  101. <el-input type="textarea" resize="none" v-model="form['质量隐患']" rows="2" clearable style="flex: 1;" id="质量隐患" @keydown="add_gyzlent($event, '质量要求', '质量隐患', '印件编号')"/>
  102. </el-form-item>
  103. </div>
  104. </el-form>
  105. <template #footer>
  106. <div class="dialog-footer" style="text-align: right;top: auto">
  107. <el-button @click="add_gdgycloseDialog">取 消</el-button>
  108. <el-button type="primary" @click="add_gdgyenterDialog">确 定</el-button>
  109. </div>
  110. </template>
  111. </el-dialog>
  112. </template>
  113. <script setup>
  114. import {ref, reactive} from 'vue'
  115. import {gdzl_MachineList, PrintDetailList, getDepartName, capacityList} from "@/api/yunyin/yunying";
  116. const form = reactive({})
  117. const visible = ref(false)
  118. const id = ref()
  119. const gxList = ref([])
  120. const yjList = ref()
  121. const cjList = ref([
  122. {
  123. label: '标准工艺',
  124. value: '标准工艺',
  125. children: []
  126. }
  127. ])
  128. const gdzl_MachineList_address = ref()
  129. //新增工艺资料弹窗 键盘 input框跳转
  130. const add_gyzlent = (event,id1,id2,id3) => {
  131. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  132. if(id3!=''){
  133. document.getElementById(id3).focus()
  134. }
  135. } else if (event.keyCode === 38) { // 向上箭头
  136. if(id1!=''){
  137. document.getElementById(id1).focus()
  138. }
  139. }else if (event.keyCode === 8) { // 删除箭头
  140. if(id1!='' && document.getElementById(id2).value==''){
  141. document.getElementById(id1).focus()
  142. }
  143. // console.log(document.getElementById(id2).value)
  144. }else if (event.keyCode === 37) { // 向左箭头
  145. if(id1!='' && document.getElementById(id2).selectionStart==0){
  146. document.getElementById(id1).focus()
  147. }
  148. }else if (event.keyCode === 39) { // 向右箭头
  149. if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  150. document.getElementById(id3).focus()
  151. }
  152. }
  153. }
  154. const open = async (gdbh, gxlist) => {
  155. id.value = gdbh
  156. const res = await PrintDetailList({workOrder: id.value})
  157. const chejian = await getDepartName()
  158. cjList.value = [
  159. {
  160. label: '标准工艺',
  161. value: '标准工艺',
  162. children: []
  163. }
  164. ]
  165. initChejian(chejian.data['标准工艺'])
  166. yjList.value = res.data
  167. gxList.value = gxlist
  168. visible.value = true
  169. }
  170. const selectHandle = async (value)=>{
  171. function findParentInTree(tree, targetValue) {
  172. for (let node of tree) {
  173. // 如果找到了目标值,返回当前节点作为上级
  174. if (node.value === targetValue) {
  175. return node;
  176. }
  177. // 如果当前节点有子节点,递归地在子节点中查找
  178. if (node.children && node.children.length > 0) {
  179. let parent = findParentInTree(node.children, targetValue);
  180. if (parent) return parent
  181. }
  182. }
  183. // 如果没有找到目标值或其上级,返回null
  184. return null;
  185. }
  186. const node = findParentInTree(cjList.value, value)
  187. form['车间名称'] = node.parent
  188. form['工艺名称'] = node.label
  189. form['设备编号'] = []
  190. //通过车间名称查询机台
  191. const MachineList_jitai = await gdzl_MachineList({address:node.parent});
  192. gdzl_MachineList_address.value = MachineList_jitai.data;
  193. }
  194. const initChejian = (data) => {
  195. Object.keys(data).map( (name, index)=>{
  196. const tmp = {
  197. label: name, value: name, children: []
  198. }
  199. data[name].map(item => {
  200. tmp.children.push({
  201. label: item, value: item,parent: name,
  202. })
  203. })
  204. cjList.value[0].children.push(tmp)
  205. })
  206. }
  207. const changeHandle = (v) => {
  208. const no = '0' + v
  209. let list = gxList.value.map(item => {
  210. const yj = item.split('-')[0]
  211. if (yj === no) return Number(item.split('-')[1])
  212. })
  213. form['工序'] = (list.sort((a, b) => b-a)[0] + 1)
  214. }
  215. const sbbhclick = () => {
  216. _capacityList();
  217. }
  218. const _capacityList = async () => {
  219. if(gdgyformData['设备编号'] === ''){
  220. return false;
  221. }else{
  222. _capacityListsbbh.value = gdgyformData['设备编号'].join(' ');
  223. const editProductedit_machine = await capacityList({machine:_capacityListsbbh.value});
  224. gdgyformData['小时产能'] = editProductedit_machine.data;
  225. }
  226. };
  227. // //默认弹窗关闭
  228. // const add_gdgydialogFormVisible = ref(false)
  229. // const add_gdgyformData = reactive({});
  230. // //清空对象的属性值
  231. // const gdgy_clearFormData = () => {
  232. // Object.keys(add_gdgyformData).forEach(key => {
  233. // add_gdgyformData[key] = '';
  234. // });
  235. // };
  236. // //新增工艺资料弹窗
  237. // const addgdgy_onclick = () => {
  238. // if(_Gd_gdbh.value == null){
  239. // cgugdlist.value = false;
  240. // ElMessage({
  241. // type: 'warning',
  242. // message: '请选择具体的工单后,再操作此功能'
  243. // })
  244. // }else{
  245. // let gongxu = gytableData.value.map(item => {
  246. // return item['印件-工序']
  247. // })
  248. // addGongYiRef.value.open(_Gd_gdbh.value, gongxu)
  249. // }
  250. // }
  251. // //新增工艺资料确定
  252. // const add_gdgyenterDialog = async () => {
  253. // console.log(add_gdgyformData)
  254. // // const formattedData = {
  255. // // Yj_Gdbh: _Gd_gdbh.value,
  256. // // yj_Yjno: add_gdgyformData['yjno'],
  257. // // yj_Yjdh: add_gdgyformData['yjdh'],
  258. // // };
  259. // // console.log(formattedData)
  260. // // const ProcessDetailAdd_add = await ProcessDetailAdd(formattedData);
  261. // // console.log(ProcessDetailAdd_add)
  262. // // add_gdgydialogFormVisible.value = false
  263. // }
  264. // //新增工艺资料取消
  265. // const add_gdgycloseDialog = () => {
  266. // add_gdgydialogFormVisible.value = false
  267. // }
  268. defineExpose({ open })
  269. </script>
  270. <style scoped>
  271. </style>