赫艾前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1413 lines
54 KiB

3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
2 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
4 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
2 years ago
3 years ago
4 years ago
4 years ago
2 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
4 years ago
2 years ago
3 years ago
3 years ago
4 years ago
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" label-width="100px" >
  4. <el-form-item :label="'工厂编码'">
  5. <el-input v-model="searchData.site" style="width: 130px"></el-input>
  6. </el-form-item>
  7. <el-form-item :label="'生产订单号'">
  8. <el-input v-model="searchData.orderNo" style="width: 130px"></el-input>
  9. </el-form-item>
  10. <el-form-item :label="'派工单号'">
  11. <el-input v-model="searchData.seqNo" type="number" style="width: 120px"></el-input>
  12. </el-form-item>
  13. <el-form-item >
  14. <span slot="label" style="" @click="getBaseList(24)"><a herf="#">加工中心编码</a></span>
  15. <el-input v-model="searchData.sWorkCenterNo" style="width: 120px"></el-input>
  16. </el-form-item>
  17. <el-form-item >
  18. <span slot="label" style="" @click="getBaseList(5)"><a herf="#">产品编码</a></span>
  19. <el-input v-model="searchData.partNo" style="width: 120px"></el-input>
  20. </el-form-item>
  21. <el-form-item :label="'规格型号'">
  22. <el-input v-model="searchData.partDesc" style="width: 120px"></el-input>
  23. </el-form-item>
  24. <el-form-item :label="'派工单类型'">
  25. <el-select v-model="searchData.scheduleType" style="width: 120px">
  26. <el-option label="全部" value=""></el-option>
  27. <el-option label="生产订单派工单" value="生产订单派工单"></el-option>
  28. <el-option label="日计划派工单" value="日计划派工单"></el-option>
  29. </el-select>
  30. </el-form-item>
  31. <el-form-item :label="'派工单是否关闭'">
  32. <el-select v-model="searchData.reportFlag" style="width: 120px">
  33. <el-option label="全部" value=""></el-option>
  34. <el-option label="是" value="closedFlag='Y'"></el-option>
  35. <el-option label="否" value="closedFlag='N'"></el-option>
  36. </el-select>
  37. </el-form-item>
  38. </el-form>
  39. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  40. <el-form-item :label="'派工日期:'">
  41. <el-date-picker
  42. style="width: 130px"
  43. v-model="searchData.startDate"
  44. value-format="yyyy-MM-dd"
  45. placeholder="选择日期">
  46. </el-date-picker>
  47. </el-form-item>
  48. <el-form-item :label="'至: '">
  49. <el-date-picker
  50. style="width: 130px"
  51. v-model="searchData.endDate"
  52. type="date"
  53. value-format="yyyy-MM-dd"
  54. placeholder="选择日期">
  55. </el-date-picker>
  56. </el-form-item>
  57. <el-form-item >
  58. <span slot="label" style="" @click="getBaseList(26,3)"><a herf="#">操作员姓名</a></span>
  59. <el-input v-model="searchData.operatorName" style="width: 120px"></el-input>
  60. </el-form-item>
  61. <el-form-item >
  62. <span slot="label" style="" @click="getBaseList(88)"><a herf="#">机台ID</a></span>
  63. <el-input v-model="searchData.sResourceID" style="width: 120px"></el-input>
  64. </el-form-item>
  65. <el-form-item :label="'班次'">
  66. <el-select v-model="searchData.sShiftNo" style="width: 120px">
  67. <el-option label="全部" value=""></el-option>
  68. <el-option label="白班" value="白班"></el-option>
  69. <el-option label="晚班" value="晚班"></el-option>
  70. </el-select>
  71. </el-form-item>
  72. <el-form-item :label="' '">
  73. <el-button @click="search()" style="margin-left: 0px;margin-top:0px" type="primary">查询</el-button>
  74. <download-excel
  75. :fields="exportDataStandard"
  76. :data="tableData"
  77. type="xlsx"
  78. :name="exportName"
  79. :header="exportHeader"
  80. :footer="exportFooter"
  81. :defaultValue="exportDefaultValue"
  82. :fetch="createExportData"
  83. :before-generate="startDownload"
  84. :before-finish="finishDownload"
  85. worksheet="导出信息"
  86. class="el-button el-button--primary el-button--medium">
  87. {{'导出'}}
  88. </download-excel>
  89. </el-form-item>
  90. </el-form>
  91. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  92. <el-form-item :label="' '">
  93. <el-button @click="openStart()" style="margin-left: 0px;margin-top:0px" type="primary">派工单开始</el-button>
  94. <el-button @click="openScan()" style="margin-left: 0px;margin-top:0px" type="primary">派工单报工</el-button>
  95. <el-button @click="stopScan()" style="margin-left: 0px;margin-top:0px" type="primary">派工单异常暂停 </el-button>
  96. <el-button @click="continueScan()" style="margin-left: 0px;margin-top:0px" type="primary">派工单异常继续</el-button>
  97. <download-excel
  98. :fields="exportDataStandard"
  99. :data="tableData"
  100. type="xlsx"
  101. :name="exportName"
  102. :header="exportHeader"
  103. :footer="exportFooter"
  104. :defaultValue="exportDefaultValue"
  105. :fetch="createExportData"
  106. :before-generate="startDownload"
  107. :before-finish="finishDownload"
  108. worksheet="导出信息"
  109. class="el-button el-button--primary el-button--medium">
  110. {{'导出'}}
  111. </download-excel>
  112. </el-form-item>
  113. </el-form>
  114. <el-table
  115. :height="height"
  116. :data="tableData"
  117. border
  118. style="width: 100%">
  119. <el-table-column
  120. prop=""
  121. header-align="center"
  122. align="center"
  123. min-width="100"
  124. label="操作">
  125. <template slot-scope="scope" class="foo_container">
  126. <a type="text" size="small" @click="initReportModal(scope.row)">报工</a>
  127. <a type="text" size="small" @click="SOPModal2(scope.row)">查看SOP</a>
  128. </template>
  129. </el-table-column>
  130. <el-table-column
  131. prop="site"
  132. header-align="center"
  133. align="left"
  134. min-width="60"
  135. label="工厂编码">
  136. </el-table-column>
  137. <el-table-column
  138. prop="seqNo"
  139. header-align="center"
  140. align="left"
  141. min-width="70"
  142. label="派工单号">
  143. </el-table-column>
  144. <el-table-column
  145. prop="orderNo"
  146. header-align="center"
  147. align="left"
  148. min-width="100"
  149. label="生产订单号">
  150. </el-table-column>
  151. <el-table-column
  152. prop="sScheduledDate"
  153. header-align="center"
  154. align="left"
  155. min-width="80"
  156. label="派工日期">
  157. </el-table-column>
  158. <el-table-column
  159. prop="operatorName"
  160. header-align="center"
  161. align="left"
  162. min-width="80"
  163. label="操作员姓名">
  164. </el-table-column>
  165. <el-table-column
  166. prop="partNo"
  167. header-align="center"
  168. align="left"
  169. min-width="80"
  170. label="产品编码">
  171. </el-table-column>
  172. <el-table-column
  173. prop="partDesc"
  174. header-align="center"
  175. align="left"
  176. min-width="200"
  177. label="产品名称">
  178. </el-table-column>
  179. <el-table-column
  180. prop="scheduleType"
  181. header-align="center"
  182. align="left"
  183. min-width="100"
  184. label="派工单类型">
  185. </el-table-column>
  186. <el-table-column
  187. prop="itemNo"
  188. header-align="center"
  189. align="left"
  190. min-width="70"
  191. label="工序号">
  192. </el-table-column>
  193. <el-table-column
  194. prop="itemDesc"
  195. header-align="center"
  196. align="left"
  197. min-width="160"
  198. label="工序名称">
  199. </el-table-column>
  200. <el-table-column
  201. prop="qtyRequired"
  202. header-align="center"
  203. align="right"
  204. min-width="80"
  205. label="派工数量">
  206. </el-table-column>
  207. <el-table-column
  208. prop="jobType"
  209. header-align="center"
  210. align="center"
  211. min-width="70"
  212. label="派工类型">
  213. </el-table-column>
  214. <el-table-column
  215. prop="weight"
  216. header-align="center"
  217. align="right"
  218. min-width="80"
  219. label="参考重量">
  220. </el-table-column>
  221. <el-table-column
  222. prop="qtyReported"
  223. header-align="center"
  224. align="right"
  225. min-width="80"
  226. label="报工数量">
  227. </el-table-column>
  228. <el-table-column
  229. prop="qtyApprove"
  230. header-align="center"
  231. align="right"
  232. min-width="80"
  233. label="合格数量">
  234. </el-table-column>
  235. <el-table-column
  236. prop="timeRequired"
  237. header-align="center"
  238. align="right"
  239. min-width="80"
  240. label="需求时间">
  241. </el-table-column>
  242. <el-table-column
  243. prop="sResourceID"
  244. header-align="center"
  245. align="left"
  246. min-width="70"
  247. label="机台ID">
  248. </el-table-column>
  249. <el-table-column
  250. prop="sShiftNo"
  251. header-align="center"
  252. align="left"
  253. min-width="70"
  254. label="班次">
  255. </el-table-column>
  256. <el-table-column
  257. prop="sWorkCenterNo"
  258. header-align="center"
  259. align="left"
  260. min-width="100"
  261. label="加工中心编码">
  262. </el-table-column>
  263. <el-table-column
  264. prop="previousSeqNo"
  265. header-align="center"
  266. align="center"
  267. min-width="80"
  268. label="上道派工单">
  269. </el-table-column>
  270. <el-table-column
  271. prop="previousBatchNo"
  272. header-align="center"
  273. align="center"
  274. min-width="120"
  275. label="发料批号">
  276. </el-table-column>
  277. <el-table-column
  278. prop="materSeqNo"
  279. header-align="center"
  280. align="center"
  281. min-width="80"
  282. label="发料派工单">
  283. </el-table-column>
  284. </el-table>
  285. <el-dialog title="扫描派工单" :close-on-click-modal="false" v-drag :visible.sync="scanModalFlag" width="215px" >
  286. <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>
  287. <el-form-item :label="'派工单号:'">
  288. <el-input v-model="scanSeqNo" ref="input" type="number" style="width: 130px;" @keyup.enter.native="searchSeqNo()"></el-input>
  289. </el-form-item>
  290. </el-form>
  291. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  292. <el-button type="primary" @click="searchSeqNo()">搜索</el-button>
  293. <el-button type="primary" @click="scanModalFlag = false">取消</el-button>
  294. </el-footer>
  295. </el-dialog>
  296. <el-dialog title="开始派工单" :close-on-click-modal="false" v-drag :visible.sync="startModalFlag" width="215px">
  297. <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>
  298. <el-form-item :label="'派工单号:'">
  299. <el-input v-model="scanSeqNo" ref="start" type="number" style="width: 130px;" ></el-input>
  300. </el-form-item>
  301. <el-form-item label="工位:" >
  302. <el-select v-model="tvId" style="width: 130px">
  303. <el-option label="无" value="" ></el-option>
  304. <el-option
  305. v-for="(item,index) in tvList"
  306. :key="index"
  307. :label="item.tvId+'-'+item.workStation"
  308. :value="item.tvId"
  309. >
  310. </el-option>
  311. </el-select>
  312. </el-form-item>
  313. <el-form-item :label="'上道派工单:'">
  314. <el-input v-model="previousSeqNo" type="number" style="width: 130px;" ></el-input>
  315. </el-form-item>
  316. </el-form>
  317. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  318. <el-button type="primary" @click="startSeqNo()">开始</el-button>
  319. <el-button type="primary" @click="startModalFlag = false">取消</el-button>
  320. </el-footer>
  321. </el-dialog>
  322. <!-- <el-dialog title="派工单暂停" :close-on-click-modal="false" v-drag :visible.sync="stopModalFlag" width="215px">-->
  323. <!-- <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>-->
  324. <!-- <el-form-item :label="'派工单号:'">-->
  325. <!-- <el-input v-model="scanSeqNo" ref="stop" type="number" style="width: 130px;" @keyup.enter.native="stopWork()"></el-input>-->
  326. <!-- </el-form-item>-->
  327. <!-- </el-form>-->
  328. <!-- <el-footer style="height:40px;margin-top: 20px;text-align:center">-->
  329. <!-- <el-button type="primary" @click="stopWork()">开始</el-button>-->
  330. <!-- <el-button type="primary" @click="stopModalFlag = false">关闭</el-button>-->
  331. <!-- </el-footer>-->
  332. <!-- </el-dialog>-->
  333. <el-dialog title="派工单暂停" :close-on-click-modal="false" v-drag :visible.sync="stopModalFlag" width="620px" >
  334. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  335. <el-form-item :label="'派工单号:'">
  336. <el-input v-model="stopData.seqNo" ref="stop" type="number" @keyup.enter.native="seqNoCheck()" style="width: 85px"></el-input>
  337. </el-form-item>
  338. <el-form-item :label="'生产订单:'">
  339. <el-input v-model="stopData.orderNo" disabled style="width: 100px"></el-input>
  340. </el-form-item>
  341. <el-form-item :label="'机台:'">
  342. <el-input v-model="stopData.resourceDesc" disabled style="width: 100px"></el-input>
  343. </el-form-item>
  344. <el-form-item :label="'班次:'">
  345. <el-input v-model="stopData.shiftNo" disabled style="width: 100px"></el-input>
  346. </el-form-item>
  347. <el-form-item :label="'异常原因:'">
  348. <el-select v-model="stopData.abnormalCode" style="width: 120px">
  349. <el-option
  350. v-for="(item,index) in abnormalList"
  351. :key="index"
  352. :label="item.abnormalDesc"
  353. :value="item.abnormalCode"
  354. >
  355. </el-option>
  356. </el-select>
  357. </el-form-item>
  358. </el-form>
  359. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  360. <el-form-item label="异常情况描述">
  361. <el-input v-model="stopData.abnormalRemark" type="textarea" :rows="3" resize='none' style="width: 562px"></el-input>
  362. </el-form-item>
  363. </el-form>
  364. <el-footer style="height:30px;margin-top: 50px;text-align:center">
  365. <el-button type="primary" @click="stopWork()" >保存</el-button>
  366. <el-button type="primary" @click="stopModalFlag = false">取消</el-button>
  367. </el-footer>
  368. </el-dialog>
  369. <el-dialog title="派工单继续" :close-on-click-modal="false" v-drag :visible.sync="continueModalFlag" width="215px">
  370. <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>
  371. <el-form-item :label="'派工单号:'">
  372. <el-input v-model="scanSeqNo" ref="continue" type="number" style="width: 130px;" @keyup.enter.native="continueWork()"></el-input>
  373. </el-form-item>
  374. </el-form>
  375. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  376. <el-button type="primary" @click="continueWork()">开始</el-button>
  377. <el-button type="primary" @click="continueModalFlag = false">取消</el-button>
  378. </el-footer>
  379. </el-dialog>
  380. <el-dialog class="big" @close="closeDialog" :close-on-click-modal="false" :close-on-press-escape="false" v-drag title="报告信息" :visible.sync="setUp.reviewFlag" width="615px">
  381. <el-form :inline="true" label-position="top">
  382. <el-form-item label="派工单号">
  383. <el-input style="width: 130px;" :disabled="setUp.disabled" onkeyup="this.value = this.value.toUpperCase()" v-model="saveHeaderData.seqNo"></el-input>
  384. </el-form-item>
  385. <el-form-item label="产品编码">
  386. <el-input style="width: 130px;" :disabled="setUp.disabled" v-model="saveHeaderData.partNo"></el-input>
  387. </el-form-item>
  388. <el-form-item label="产品名称/规格型号">
  389. <el-input style="width: 275px;" :disabled="setUp.disabled" v-model="saveHeaderData.partDescription"></el-input>
  390. </el-form-item>
  391. </el-form>
  392. <el-form :inline="true" label-position="top">
  393. <el-form-item label="工序号">
  394. <el-input style="width: 130px;" :disabled="setUp.disabled" v-model="saveHeaderData.itemNo"></el-input>
  395. </el-form-item>
  396. <el-form-item label="工序名称">
  397. <el-input style="width: 130px;" :disabled="setUp.disabled" v-model="saveHeaderData.operationDesc"></el-input>
  398. </el-form-item>
  399. <el-form-item label="加工中心编码">
  400. <el-input style="width: 130px;" :disabled="setUp.disabled" v-model="saveHeaderData.workCenterNo"></el-input>
  401. </el-form-item>
  402. <el-form-item label="加工中心名称">
  403. <el-input style="width: 130px;" :disabled="setUp.disabled" v-model="saveHeaderData.workCenterDesc"></el-input>
  404. </el-form-item>
  405. </el-form>
  406. <el-form :inline="true" label-position="top">
  407. <el-form-item>
  408. <span slot="label" style="" @click="getBaseList(26 ,1)"><a herf="#">操作员</a></span>
  409. <el-input style="width: 130px;" v-model="saveHeaderData.operatorId"></el-input>
  410. </el-form-item>
  411. <el-form-item label="操作员姓名">
  412. <el-input style="width: 130px;" v-model="saveHeaderData.operatorName"></el-input>
  413. </el-form-item>
  414. <el-form-item label="生产日期">
  415. <el-date-picker
  416. style="width: 130px"
  417. v-model="saveHeaderData.planStartTime"
  418. type="date"
  419. value-format="yyyy-MM-dd"
  420. format = "yyyy-MM-dd"
  421. placeholder="选择日期">
  422. </el-date-picker>
  423. </el-form-item>
  424. <el-form-item label="报告日期">
  425. <el-date-picker
  426. style="width: 130px"
  427. v-model="saveHeaderData.planFinishTime"
  428. type="date"
  429. value-format="yyyy-MM-dd"
  430. format = "yyyy-MM-dd"
  431. placeholder="选择日期">
  432. </el-date-picker>
  433. </el-form-item>
  434. </el-form>
  435. <el-form :inline="true" label-position="top">
  436. <!-- <el-form-item label="本工序报工数">-->
  437. <el-form-item label="本订单已报工数">
  438. <el-input style="width: 130px;" :disabled="setUp.disabled" v-model="qty1"></el-input>
  439. </el-form-item>
  440. <el-form-item label="上工序报工数">
  441. <el-input style="width: 130px;" :disabled="setUp.disabled" v-model="qty2"></el-input>
  442. </el-form-item>
  443. <el-form-item label="单位重量">
  444. <el-input style="width: 130px;" disabled v-model="qty3"></el-input>
  445. </el-form-item>
  446. <el-form-item label="本派工单数量">
  447. <el-input style="width: 130px;" disabled v-model="saveHeaderData.qtyRequire"></el-input>
  448. </el-form-item>
  449. </el-form>
  450. <el-form :inline="true" label-position="top">
  451. <el-form-item label="合格数量">
  452. <el-input type="number" style="width: 178px;" :disabled="approveFlag" class="input_reight" v-model="saveHeaderData.qtyApprove" @blur="qtyApproveBlur()"></el-input>
  453. </el-form-item>
  454. <el-form-item label="不合格/缺失数量" >
  455. <el-input type="number" class="input_left" style="width: 178px;" v-model="saveHeaderData.qtyUnApprove" @blur="qtyReportedBlur()"></el-input>
  456. </el-form-item>
  457. <el-form-item label="生产模数" >
  458. <el-input type="number" style="width: 178px;" v-model="moQty" @blur="moQtyBlur()"></el-input>
  459. </el-form-item>
  460. </el-form>
  461. <el-form :inline="true" label-position="top">
  462. <el-form-item label="带框合格重量(KG)">
  463. <el-input type="number" style="width: 178px;" class="input_reight" :disabled="factorFlag" v-model="KGApprove" @blur="KGApproveBlur()"></el-input>
  464. </el-form-item>
  465. <el-form-item label="不合格/缺失重量(KG)">
  466. <el-input type="number" class="input_left" style="width: 178px;" :disabled="factorFlag" v-model="KGReported" @blur="KGReportedBlur()"></el-input>
  467. </el-form-item>
  468. <el-form-item label="模具孔数">
  469. <el-input type="number" class="input_left" style="width: 178px;" disabled v-model="cavity" ></el-input>
  470. </el-form-item>
  471. <!-- <el-form-item label="返工重量(KG)" >-->
  472. <!-- <el-input type="number" style="width: 178px;" v-model="KGRework" :disabled="factorFlag" @blur="KGReworkBlur()"></el-input>-->
  473. <!-- </el-form-item>-->
  474. </el-form>
  475. <el-form :inline="true" label-position="top">
  476. <el-form-item label="框重(KG)">
  477. <el-input type="number" class="input_left" style="width: 178px;" :disabled="factorFlag" v-model="saveHeaderData.boxWeight" @blur="boxWeightBlur()"></el-input>
  478. </el-form-item>
  479. <el-form-item label="废边重量(G)">
  480. <el-input style="width: 178px;" v-model="saveHeaderData.wasteWeight"></el-input>
  481. </el-form-item>
  482. <el-form-item label="理论数量">
  483. <el-input type="number" class="input_left" style="width: 178px;" disabled v-model="saveHeaderData.liLunQty" ></el-input>
  484. </el-form-item>
  485. </el-form>
  486. <fieldset class="customer-fieldset" style="width: 597px;margin-left: -3px;">
  487. <legend class="customer-legend">不良处理</legend>
  488. <!-- <el-form :inline="true" label-position="top">-->
  489. <!-- <el-form-item>-->
  490. <!-- <span slot="label" style="" @click="getBaseList(26 ,2)"><a herf="#">操作员</a></span>-->
  491. <!-- <el-input style="width: 178px;" v-model="saveHeaderData.operatorId2"></el-input>-->
  492. <!-- </el-form-item>-->
  493. <!-- <el-form-item label="操作员姓名">-->
  494. <!-- <el-input style="width: 178px;" v-model="saveHeaderData.operatorIdName2"></el-input>-->
  495. <!-- </el-form-item>-->
  496. <!-- <el-form-item label="报废原因">-->
  497. <!-- <el-input style="width: 178px;" v-model="saveHeaderData.scrapReason"></el-input>-->
  498. <!-- </el-form-item>-->
  499. <!-- </el-form>-->
  500. <el-form :inline="true" label-position="top">
  501. <el-form-item label="处理方式">
  502. <el-select v-model="saveHeaderData.badCodeNo" style="width: 120px"
  503. placeholder="请选择">
  504. <el-option label="无" value=""></el-option>
  505. <el-option v-for="item in badCodeList " :key="index" :label="item.defectDesc"
  506. :value="item.defectCode">
  507. </el-option>
  508. </el-select>
  509. </el-form-item>
  510. <el-form-item label="备注">
  511. <el-input style="width: 440px;" v-model="saveHeaderData.badRemark"></el-input>
  512. </el-form-item>
  513. </el-form>
  514. </fieldset>
  515. <el-form :inline="true" label-position="top">
  516. <el-form-item label="准备时间">
  517. <el-input type="number" style="width: 178px;text-align: right;" v-model="saveHeaderData.preparationTime" ></el-input> <!--oninput ="value=value.replace(/[^0-9.]/g,'')"-->
  518. <!-- <el-input-number style="width: 178px;text-align: right;" v-model="saveHeaderData.preparationTime" size="medium" :min="0" :controls="false"></el-input-number>-->
  519. </el-form-item>
  520. <el-form-item label="制造时间">
  521. <el-input type="number" style="width: 178px;" disabled v-model="saveHeaderData.manufacturingTime"></el-input> <!--oninput ="value=value.replace(/[^0-9.]/g,'')"-->
  522. <!-- <el-input-number style="width: 178px;text-align: right;" v-model="saveHeaderData.manufacturingTime" size="medium" :min="0" :controls="false"></el-input-number>-->
  523. </el-form-item>
  524. <el-form-item label="打印检验标签数" label-width="0px">
  525. <el-input type="number" style="width: 178px;" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')" v-model="saveHeaderData.printQty"></el-input> <!--oninput ="value=value.replace(/[^0-9.]/g,'')"-->
  526. <!-- :min="0" 最小值 :controls="false" 隐藏减价按钮 -->
  527. <!-- <el-input-number style="width: 178px;text-align: right;" v-model="saveHeaderData.cleaningTime" size="medium" :min="0" :controls="false"></el-input-number>-->
  528. </el-form-item>
  529. </el-form>
  530. <el-form :inline="true" label-position="top">
  531. <el-form-item label="备注">
  532. <el-input style="width: 560px;" v-model="saveHeaderData.remark"></el-input>
  533. </el-form-item>
  534. </el-form>
  535. <span slot="footer" class="dialog-footer">
  536. <el-button @click="SOPModal()" type="primary">查看SOP</el-button>
  537. <el-button @click="setUp.reviewFlag = false">取消</el-button>
  538. <el-button type="primary" :disabled="setUp.saveButton" @click="saveReport()">确定</el-button>
  539. </span>
  540. </el-dialog>
  541. <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-drag title="查看SOP" :visible.sync="sopFlag" width="80%">
  542. <el-row>
  543. <el-col :span="8">
  544. <div style="margin-top: 2%">
  545. <h5 style="margin-left: 0px;font-size: 20px">产品图片</h5>
  546. <el-form inline="true" style="margin-top: -5px;margin-left: 0px" label-position="top">
  547. <el-form-item :label="'工厂编号:'">
  548. <el-input v-model="sopData.site" readonly style="width: 120px"></el-input>
  549. </el-form-item>
  550. <el-form-item :label="'产品编码:'" style="margin-left: 20px">
  551. <el-input v-model="sopData.partNo" readonly style="width: 120px"></el-input>
  552. </el-form-item>
  553. </el-form>
  554. <el-form inline="true" style="margin-top: 20px;margin-left: 0px" label-position="top">
  555. <el-form-item :label="'产品名称/规格型号:'" style="font-size: 20px">
  556. <el-input v-model="partDescription" readonly style="width: 374px"></el-input>
  557. </el-form-item>
  558. </el-form>
  559. <el-form inline="true" style="margin-top: 20px;margin-left: 0px" label-position="top">
  560. <el-form-item :label="fileTitle">
  561. <el-input v-model="fileName" style="width: 374px" readonly></el-input>
  562. </el-form-item>
  563. </el-form>
  564. <el-form inline="true" style="margin-top: 20px;margin-left: 20px" label-position="top">
  565. <el-form-item :label="' '">
  566. <el-button @click="lastPicture()" type="primary">上一张</el-button>
  567. </el-form-item>
  568. <el-form-item :label="' '">
  569. <el-button @click="nextPicture()" type="primary">下一张</el-button>
  570. </el-form-item>
  571. <el-form-item :label="' '">
  572. <el-button @click="sopFlag=false" type="primary">取消</el-button>
  573. </el-form-item>
  574. </el-form>
  575. </div>
  576. </el-col>
  577. <el-col :span="16">
  578. <div id="padPhoto" style="text-align: center;vertical-align:middle;" >
  579. <iframe :src="photoUrl" frameborder="0" width="100%" :height="height2"></iframe>
  580. </div>
  581. </el-col>
  582. </el-row>
  583. </el-dialog>
  584. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  585. </div>
  586. </template>
  587. <script>
  588. import {
  589. printTransNoLabel,
  590. } from "@/views/modules/print/print_transNo_label.js"
  591. import {
  592. getSOScheduleRoutingData
  593. , saveGenerateReportForSchedule,
  594. searchReportedQty,
  595. searchSeqNo,
  596. startSeqNo,
  597. stopWork,
  598. continueWork,
  599. getTvList,
  600. getBadCodeList,
  601. } from '@/api/production/generateReport.js'
  602. import Chooselist from '@/views/modules/common/Chooselist'
  603. import {
  604. getPhotoAddressData
  605. } from '@/api/pad.js'
  606. import {
  607. getAbnormalCodeList,
  608. getShopOrderData,
  609. } from "@/api/abnormal.js"
  610. export default {
  611. name: 'generateReport',
  612. components: {
  613. Chooselist
  614. },
  615. data () {
  616. return {
  617. cavity:'',
  618. setUp: {
  619. reviewFlag: false,
  620. saveButton: false,
  621. readonlyFlag: false,
  622. disabled: false
  623. },
  624. factorFlag:false,
  625. KGReported:'',
  626. KGApprove:'',
  627. KGRework:'',
  628. approveFlag:false,
  629. abnormalList:[],
  630. moQty:'',
  631. tvList:[],
  632. tvId:'',
  633. badCodeList:'',
  634. saveHeaderData: {
  635. badCodeNo:'',
  636. badRemark:'',
  637. wasteWeight:0,
  638. printQty:'',
  639. boxWeight:0,
  640. qtyRequire:'',
  641. qtyUnApprove:'',
  642. site: '',
  643. seqNo: '',
  644. itemNo: '',
  645. partNo: '',
  646. partDescription: '',
  647. operationDesc: '',
  648. workCenterNo: '',
  649. workCenterDesc: '',
  650. operatorId: '',
  651. operatorName: '',
  652. planStartTime: '',
  653. planFinishTime: '',
  654. qtyReported: 0,
  655. qtyApprove: 0,
  656. qtyRework: 0,
  657. operatorId2: '',
  658. operatorIdName2: '',
  659. scrapReason: '',
  660. preparationTime: 0,
  661. manufacturingTime: 0,
  662. cleaningTime: 0,
  663. shutdownReason: '',
  664. remark: '',
  665. orderRef1:'',
  666. scheduleType:'',
  667. userId:'',
  668. liLunQty:'',
  669. reportWeight:'',
  670. approveWeight:'',
  671. moldQty:'',
  672. },
  673. scanSeqNo:'',
  674. previousSeqNo:'',
  675. stopModalFlag:false,
  676. continueModalFlag:false,
  677. qty1:'',
  678. qty2:'',
  679. qty3:'',
  680. sopFlag:false,
  681. site: '',
  682. operatorType: 0,
  683. // 导出 start
  684. exportData: [],
  685. exportDataStandard: {
  686. '派工单号': 'seqNo',
  687. '关联单号': 'orderNo',
  688. '关联单号类型': 'scheduleType',
  689. '工序号': 'itemNo',
  690. '工序名称': 'itemDesc',
  691. '派工数量': 'qtyRequired',
  692. '报工数量': 'qtyReported',
  693. '合格数量': 'qtyApprove',
  694. '需求时间': 'timeRequired',
  695. '派工日期': 'sScheduledDate',
  696. '操作员姓名': 'operatorName',
  697. '产品编码': 'partNo',
  698. '产品名称': 'partDesc',
  699. '机台ID': 'sResourceID',
  700. '班次': 'sShiftNo',
  701. '加工中心': 'sWorkCenterNo',
  702. '派工类型': 'jobType',
  703. },
  704. exportName: '派工单列表' + this.getStrDate(),
  705. exportHeader: ['派工单列表'],
  706. exportFooter: [],
  707. exportDefaultValue: '这一行这一列没有数据',
  708. // 导出 end
  709. height: 200,
  710. tableData: [],
  711. date1: '',
  712. searchData: {
  713. seqNo:'',
  714. userId:this.$store.state.user.name,
  715. orderNo: '',
  716. sWorkCenterNo: '',
  717. partNo: '',
  718. site: '',
  719. partDesc:'',
  720. scheduleType:'',
  721. reportFlag:"closedFlag='N'",
  722. startDate:'',
  723. endDate:'',
  724. operatorName:'',
  725. sResourceID:'',
  726. sShiftNo:'',
  727. },
  728. photoUrl:'',
  729. sopData:{
  730. site:'',
  731. partNo:'',
  732. },
  733. currentRow:'',
  734. scanModalFlag:false,
  735. partDescription:'',
  736. fileTitle:'',
  737. fileName:'',
  738. num:1,
  739. currentData:'',
  740. photoDatas:[],
  741. uploadImg:[],
  742. showviewer: false,
  743. url: '',
  744. height2:600,
  745. tagNo2:'',
  746. startModalFlag:false,
  747. stopData:{
  748. site:'',
  749. seqNo:'',
  750. orderNo:'',
  751. shiftNo:'',
  752. resourceDesc:'',
  753. feedbackBy:this.$store.state.user.name,
  754. abnormalCode:'',
  755. abnormalRemark:'',
  756. },
  757. }
  758. },
  759. mounted () {
  760. this.$nextTick(() => {
  761. this.height = window.innerHeight - 210
  762. this.height2 = window.innerHeight -100
  763. })
  764. },
  765. methods: {
  766. getAllAbnormalItem(){
  767. getAbnormalCodeList().then(({data}) => {
  768. this.abnormalList = data.rows;
  769. })
  770. },
  771. saveReport () {
  772. this.saveHeaderData.qtyReported=Number(this.saveHeaderData.qtyUnApprove)+Number(this.saveHeaderData.qtyApprove);
  773. if (this.saveHeaderData.qtyUnApprove == null || this.saveHeaderData.qtyUnApprove < 0) {
  774. this.$alert('不合格数量错误!', '错误信息', {
  775. confirmButtonText: '确定'
  776. })
  777. return
  778. }
  779. if (this.saveHeaderData.qtyApprove == null || this.saveHeaderData.qtyApprove < 0) {
  780. this.$alert('合格数量错误!', '错误信息', {
  781. confirmButtonText: '确定'
  782. })
  783. return
  784. }
  785. if (this.saveHeaderData.qtyRework == null || this.saveHeaderData.qtyRework <0) {
  786. this.$alert('返工数量错误!', '错误信息', {
  787. confirmButtonText: '确定'
  788. })
  789. return
  790. }
  791. if (this.saveHeaderData.preparationTime == null || this.saveHeaderData.preparationTime < 0) {
  792. this.$alert('准备时间错误!', '错误信息', {
  793. confirmButtonText: '确定'
  794. })
  795. return
  796. }
  797. if (this.saveHeaderData.manufacturingTime == null || this.saveHeaderData.manufacturingTime < 0) {
  798. this.$alert('制造时间错误!', '错误信息', {
  799. confirmButtonText: '确定'
  800. })
  801. return
  802. }
  803. if (this.saveHeaderData.cleaningTime == null || this.saveHeaderData.cleaningTime < 0) {
  804. this.$alert('清理时间错误!', '错误信息', {
  805. confirmButtonText: '确定'
  806. })
  807. return
  808. }
  809. if (this.saveHeaderData.planStartTime == null || this.saveHeaderData.planStartTime === '') {
  810. this.$alert('请选择生产日期!', '错误信息', {
  811. confirmButtonText: '确定'
  812. })
  813. return
  814. }
  815. if (this.saveHeaderData.planFinishTime == null || this.saveHeaderData.planFinishTime === '') {
  816. this.$alert('请选择报告日期!', '错误信息', {
  817. confirmButtonText: '确定'
  818. })
  819. return
  820. }
  821. if (this.saveHeaderData.boxWeight == null || this.saveHeaderData.boxWeight === '') {
  822. this.$alert('请输入框重!', '错误信息', {
  823. confirmButtonText: '确定'
  824. })
  825. return
  826. }
  827. if(this.saveHeaderData.printQty>30){
  828. this.$alert('打印标签数最多为30张!', '错误信息', {
  829. confirmButtonText: '确定'
  830. })
  831. return
  832. }
  833. if(this.moQty==null||this.moQty==''){
  834. this.saveHeaderData.moldQty=0
  835. }else {
  836. this.saveHeaderData.moldQty=this.moQty
  837. }
  838. let boxWeightKG=0
  839. if(this.saveHeaderData.boxWeight!=null&&this.saveHeaderData.boxWeight!=''){
  840. boxWeightKG=this.saveHeaderData.boxWeight
  841. }
  842. if(this.KGApprove!=null&&this.KGApprove!=''&&this.KGApprove>=0){
  843. this.saveHeaderData.approveWeight=Number(this.KGApprove)-boxWeightKG
  844. if(this.KGReported!=null&&this.KGReported!=''){
  845. this.KGReported=0
  846. }
  847. this.saveHeaderData.reportWeight=Number(this.KGApprove)-boxWeightKG+Number(this.KGReported)
  848. }
  849. this.setUp.saveButton=true;
  850. saveGenerateReportForSchedule(this.saveHeaderData).then(({data}) => {
  851. if (data.code == 0) {
  852. this.$message.success(data.msg)
  853. this.setUp.reviewFlag = false
  854. this.search()
  855. let inList=[];
  856. if(data.transData!=null){
  857. inList.push(data.transData)
  858. }
  859. if(this.saveHeaderData.printQty>0){
  860. for (let i = 0; i <this.saveHeaderData.printQty ; i++) {
  861. inList.push(this.currentRow)
  862. }
  863. }
  864. if(inList.length>0){
  865. printTransNoLabel(inList);
  866. }
  867. } else {
  868. this.setUp.saveButton=false;
  869. this.$alert(data.msg, '错误', {
  870. confirmButtonText: '确定'
  871. })
  872. }
  873. })
  874. },
  875. // 获取基础数据列表S
  876. getBaseList (val, type) {
  877. this.tagNo = val
  878. this.tagNo2 = type
  879. this.$nextTick(() => {
  880. let strVal = ''
  881. if (val === 24) {
  882. strVal = this.searchData.sWorkCenterNo
  883. }
  884. if (val === 5) {
  885. strVal = this.searchData.partNo
  886. }
  887. if (val === 26) {
  888. if(type==1) {
  889. strVal = this.saveHeaderData.operatorId
  890. }else if(type==2){
  891. strVal = this.saveHeaderData.operatorId2
  892. }else {
  893. strVal = this.searchData.operatorName
  894. }
  895. }
  896. if (val === 88) {
  897. strVal = this.searchData.sResourceID
  898. }
  899. this.$refs.baseList.init(val, strVal)
  900. })
  901. },
  902. /* 列表方法的回调 */
  903. getBaseData (val) {
  904. if (this.tagNo === 24) {
  905. this.searchData.sWorkCenterNo = val.WorkCenterNo
  906. } else if (this.tagNo === 5) {
  907. this.searchData.partNo = val.PartNo
  908. }
  909. if (this.tagNo === 26) {
  910. if(this.tagNo2==1) {
  911. this.saveHeaderData.operatorId = val.OperatorID
  912. this.saveHeaderData.operatorName = val.OperatorName
  913. }else if(this.tagNo2==2){
  914. this.saveHeaderData.operatorId2 = val.OperatorID
  915. this.saveHeaderData.operatorIdName2 = val.OperatorName
  916. }else {
  917. this.searchData.operatorName = val.OperatorName
  918. }
  919. }
  920. if (this.tagNo === 88) {
  921. this.searchData.sResourceID = val.ResourceID
  922. }
  923. },
  924. initReportModal (row) {
  925. this.scanSeqNo=row.seqNo
  926. this.searchSeqNo()
  927. },
  928. closeDialog () {
  929. Object.assign(this.$data.saveHeaderData, this.$options.data.call(this).saveHeaderData)
  930. },
  931. search () {
  932. getSOScheduleRoutingData(this.searchData).then(({data}) => {
  933. this.tableData = data.rows
  934. })
  935. },
  936. createExportData () {
  937. return this.tableData
  938. },
  939. startDownload () {
  940. // this.exportData = this.dataList
  941. },
  942. finishDownload () {
  943. },
  944. getStrDate () {
  945. let dd = new Date()
  946. let Y = dd.getFullYear()
  947. let M = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1)// 获取当前月份的日期,不足10补0
  948. let D = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate()// 获取当前几号,不足10补0
  949. let H = dd.getHours() < 10 ? '0' + dd.getHours() : dd.getHours()
  950. let MM = dd.getMinutes() < 10 ? '0' + dd.getMinutes() : dd.getMinutes()
  951. let S = dd.getSeconds() < 10 ? '0' + dd.getSeconds() : dd.getSeconds()
  952. return Y + M + D + H + MM + S
  953. },
  954. SOPModal(){
  955. this.sopData.partNo = this.saveHeaderData.partNo;
  956. this.sopData.site= this.saveHeaderData.site;
  957. this.partDescription= this.saveHeaderData.partDescription;
  958. // var div1=document.getElementById("padPhoto");
  959. // div1.style.cssText= "height:"+this.height2+"px;";
  960. this.getPhoto();
  961. this.sopFlag=true;
  962. },
  963. SOPModal2(row){
  964. this.sopData.partNo = row.partNo;
  965. this.sopData.site= row.site;
  966. this.partDescription= row.partDesc;
  967. // var div1=document.getElementById("padPhoto");
  968. // div1.style.cssText= "height:"+this.height2+"px;";
  969. this.getPhoto();
  970. this.sopFlag=true;
  971. },
  972. getPhoto(){
  973. getPhotoAddressData(this.sopData).then(({data}) => {
  974. this.photoDatas = data.rows;
  975. if(this.photoDatas.length==0){
  976. this.fileTitle="文件名 ("+0+"/"+0+")";
  977. this.$alert('该物料没有上传图片!', '错误', {
  978. confirmButtonText: '确定'
  979. })
  980. return false;
  981. }
  982. this.fileName=this.photoDatas[this.num-1].attaFileNameDb;
  983. this.fileTitle="文件名 ("+this.num+"/"+this.photoDatas.length+")";
  984. this.photoUrl=this.$store.state.user.padSopUrl+this.photoDatas[this.num-1].attaFileNameDb;
  985. // this.photoUrl='http://192.168.1.83:81/upload/'+this.photoDatas[this.num-1].attaFileNameDb;
  986. })
  987. },
  988. nextPicture(){
  989. if(this.photoDatas.length==0){
  990. this.fileTitle="文件名 ("+0+"/"+0+")";
  991. this.$alert('该物料没有上传图片!', '错误', {
  992. confirmButtonText: '确定'
  993. })
  994. return false;
  995. }
  996. if(this.num==this.photoDatas.length){
  997. this.num=1;
  998. }else{
  999. this.num=this.num+1;
  1000. }
  1001. this.fileName=this.photoDatas[this.num-1].attaFileNameDb;
  1002. this.fileTitle="文件名 ("+this.num+"/"+this.photoDatas.length+")";
  1003. this.photoUrl=this.$store.state.user.padSopUrl+this.photoDatas[this.num-1].attaFileNameDb;
  1004. // this.photoUrl='http://192.168.1.83:81/upload/'+this.photoDatas[this.num-1].attaFileNameDb;
  1005. },
  1006. lastPicture(){
  1007. if(this.photoDatas.length==0){
  1008. this.fileTitle="文件名 ("+0+"/"+0+")";
  1009. this.fileName='';
  1010. this.photoUrl='';
  1011. this.$alert('该物料没有上传图片!', '错误', {
  1012. confirmButtonText: '确定'
  1013. })
  1014. return false;
  1015. }
  1016. if(this.num==1){
  1017. this.num=this.photoDatas.length;
  1018. }else{
  1019. this.num=this.num-1;
  1020. }
  1021. this.fileName=this.photoDatas[this.num-1].attaFileNameDb;
  1022. this.fileTitle="文件名 ("+this.num+"/"+this.photoDatas.length+")";
  1023. this.photoUrl=this.$store.state.user.padSopUrl+this.photoDatas[this.num-1].attaFileNameDb;
  1024. // this.photoUrl='http://192.168.1.83:81/upload/'+this.photoDatas[this.num-1].attaFileNameDb;
  1025. },
  1026. openScan(){
  1027. this.scanSeqNo='';
  1028. this.scanModalFlag=true;
  1029. this.$nextTick(() => { this.$refs.input.focus();})
  1030. },
  1031. openStart(){
  1032. this.scanSeqNo='';
  1033. this.tvId='';
  1034. this.previousSeqNo='';
  1035. this.startModalFlag=true;
  1036. this.$nextTick(() => { this.$refs.start.focus();})
  1037. },
  1038. seqNoCheck(){
  1039. let inData={
  1040. seqNo:this.stopData.seqNo
  1041. }
  1042. getShopOrderData(inData).then(({data}) => {
  1043. let rows=data.rows;
  1044. if(rows.length==0){
  1045. this.stopData.seqNo='',
  1046. this.stopData.shiftNo='',
  1047. this.stopData.site='',
  1048. this.stopData.resourceDesc='',
  1049. this.stopData.orderNo='',
  1050. this.$alert('该派工单不存在!', '错误', {
  1051. confirmButtonText: '确定'
  1052. })
  1053. this.$nextTick(() => { this.$refs.stop.focus();})
  1054. return false
  1055. }else {
  1056. this.stopData.shiftNo=data.rows[0].sShiftNo
  1057. this.stopData.site=data.rows[0].site
  1058. this.stopData.resourceDesc=data.rows[0].resourceDesc
  1059. this.stopData.orderNo=data.rows[0].orderNo
  1060. }
  1061. })
  1062. },
  1063. stopScan(){
  1064. this.getAllAbnormalItem();
  1065. this.stopData.seqNo='',
  1066. this.stopData.shiftNo='',
  1067. this.stopData.site='',
  1068. this.stopData.resourceDesc='',
  1069. this.stopData.orderNo='',
  1070. this.stopData.abnormalRemark='',
  1071. this.stopData.abnormalCode='',
  1072. this.stopModalFlag=true;
  1073. this.$nextTick(() => { this.$refs.stop.focus();})
  1074. },
  1075. continueScan(){
  1076. this.scanSeqNo='';
  1077. this.continueModalFlag=true;
  1078. this.$nextTick(() => { this.$refs.continue.focus();})
  1079. },
  1080. searchSeqNo(){
  1081. if(this.scanSeqNo==''){
  1082. this.$alert("请扫描派工单!",'错误', {
  1083. confirmButtonText: '确定'
  1084. })
  1085. return false;
  1086. }
  1087. let inData={
  1088. userId:this.$store.state.user.name,
  1089. seqNo:this.scanSeqNo
  1090. }
  1091. searchSeqNo(inData).then(({data}) => {
  1092. if (data.code == 0) {
  1093. if(data.row==null){
  1094. this.scanSeqNo=''
  1095. this.$alert("派工单不存在!",'错误', {
  1096. confirmButtonText: '确定'
  1097. })
  1098. return false;
  1099. }
  1100. let currentData = data.row;
  1101. if(currentData.closedFlag=='Y'){
  1102. this.scanSeqNo=''
  1103. this.$alert("该派工单已关闭!",'错误', {
  1104. confirmButtonText: '确定'
  1105. })
  1106. return false;
  1107. }
  1108. this.KGReported=0
  1109. this.KGApprove=0
  1110. this.KGRework=0
  1111. this.saveHeaderData.qtyApprove=0
  1112. this.saveHeaderData.qtyUnApprove=0
  1113. this.saveHeaderData.badCodeNo=''
  1114. this.saveHeaderData.badRemark= ''
  1115. this.saveHeaderData.qtyRework=0
  1116. this.saveHeaderData.moldQty=0
  1117. this.saveHeaderData.reportWeight=0
  1118. this.saveHeaderData.approveWeight=0
  1119. this.saveHeaderData.site = currentData.site;
  1120. this.saveHeaderData.seqNo = currentData.seqNo;
  1121. this.saveHeaderData.itemNo = currentData.itemNo;
  1122. this.saveHeaderData.operationDesc = currentData.itemDesc;
  1123. this.saveHeaderData.partNo = currentData.partNo;
  1124. this.saveHeaderData.partDescription = currentData.partSpec;
  1125. this.saveHeaderData.workCenterNo = currentData.sWorkCenterNo;
  1126. this.saveHeaderData.workCenterDesc = currentData.workCenterDesc;
  1127. this.saveHeaderData.orderRef1=currentData.orderRef1;
  1128. this.saveHeaderData.orderNo=currentData.orderNo;
  1129. this.saveHeaderData.scheduleType=currentData.scheduleType;
  1130. this.saveHeaderData.operatorId=currentData.operatorId;
  1131. this.saveHeaderData.operatorName=currentData.operatorName;
  1132. this.saveHeaderData.qtyRequire=currentData.qtyRequired;
  1133. this.saveHeaderData.userId=this.$store.state.user.name;
  1134. this.saveHeaderData.boxWeight=0;
  1135. this.saveHeaderData.printQty=0;
  1136. this.saveHeaderData.wasteWeight=0;
  1137. this.qty1='';
  1138. this.qty2 ='';
  1139. this.moQty ='';
  1140. this.liLunQty ='';
  1141. this.saveHeaderData.planStartTime = this.dayjs(new Date()).format('YYYY-MM-DD 00:00:00')
  1142. this.saveHeaderData.planFinishTime = this.dayjs(new Date()).format('YYYY-MM-DD 00:00:00')
  1143. searchReportedQty(this.saveHeaderData).then(({data}) => {
  1144. if(data.code===0) {
  1145. this.cavity= data.row.cavity
  1146. this.qty1 = data.row.qtyReported;
  1147. this.qty2 = data.row.lastApproveQty;
  1148. this.saveHeaderData.manufacturingTime = data.row.timeReported;
  1149. if (data.row.weightFactor == 0) {
  1150. this.qty3 = "erp未维护数据"
  1151. this.KGReported = ''
  1152. this.KGApprove = ''
  1153. this.KGRework = ''
  1154. this.factorFlag = true;
  1155. } else {
  1156. this.qty3 = data.row.weightFactor
  1157. this.factorFlag = false;
  1158. }
  1159. }else {
  1160. this.$alert(data.msg, '错误', {
  1161. confirmButtonText: '确定'
  1162. })
  1163. return false;
  1164. }
  1165. })
  1166. this.approveFlag=false;
  1167. this.scanModalFlag=false;
  1168. this.setUp.reviewFlag = true;
  1169. this.setUp.saveButton=false;
  1170. this.setUp.disabled = true;
  1171. getSOScheduleRoutingData(inData).then(({data}) => {
  1172. if( data.rows){
  1173. if(data.rows.length>0){
  1174. data.rows[0].weight= Number(data.rows[0].weight.toFixed(2))
  1175. data.rows[0].type='jianyan'
  1176. this.currentRow=data.rows[0]
  1177. }
  1178. }
  1179. })
  1180. } else {
  1181. this.scanSeqNo=''
  1182. this.$alert(data.msg, '错误', {
  1183. confirmButtonText: '确定'
  1184. })
  1185. }
  1186. })
  1187. },
  1188. qtyReportedBlur(){
  1189. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.saveHeaderData.qtyUnApprove!=''){
  1190. this.KGReported=(this.saveHeaderData.qtyUnApprove*this.qty3).toFixed(1)
  1191. }
  1192. if(this.saveHeaderData.qtyUnApprove==''){
  1193. this.KGReported=''
  1194. }
  1195. },
  1196. moQtyBlur(){
  1197. if(this.cavity&&this.cavity!=0&&this.cavity!='erp未维护数据'&&this.moQty!=''){
  1198. this.saveHeaderData.liLunQty=(this.cavity*this.moQty).toFixed(1)
  1199. }
  1200. },
  1201. qtyApproveBlur(){
  1202. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.saveHeaderData.qtyApprove!=''){
  1203. if(this.saveHeaderData.boxWeight!=null&&this.saveHeaderData.boxWeight!='') {
  1204. this.KGApprove = (this.saveHeaderData.qtyApprove * this.qty3+Number(this.saveHeaderData.boxWeight)).toFixed(1)
  1205. }else {
  1206. this.KGApprove = (this.saveHeaderData.qtyApprove * this.qty3).toFixed(1)
  1207. }
  1208. this.factorFlag=true
  1209. }
  1210. if(this.saveHeaderData.qtyApprove==''){
  1211. this.KGApprove=''
  1212. }
  1213. },
  1214. boxWeightBlur(){
  1215. if(this.saveHeaderData.boxWeight==null||this.saveHeaderData.boxWeight==''){
  1216. this.saveHeaderData.boxWeight=0
  1217. }
  1218. if(this.approveFlag){
  1219. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.KGApprove!=''){
  1220. this.saveHeaderData.qtyApprove=((this.KGApprove-this.saveHeaderData.boxWeight)/this.qty3).toFixed(0)
  1221. }
  1222. }else {
  1223. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.saveHeaderData.qtyApprove!=''){
  1224. this.KGApprove = (this.saveHeaderData.qtyApprove * this.qty3+Number(this.saveHeaderData.boxWeight)).toFixed(1)
  1225. }
  1226. }
  1227. },
  1228. KGApproveBlur(){
  1229. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.KGApprove!=''){
  1230. if(this.saveHeaderData.boxWeight!=null&&this.saveHeaderData.boxWeight!=''){
  1231. this.saveHeaderData.qtyApprove=((this.KGApprove-this.saveHeaderData.boxWeight)/this.qty3).toFixed(0)
  1232. }else {
  1233. this.saveHeaderData.qtyApprove=(this.KGApprove/this.qty3).toFixed(0)
  1234. }
  1235. this.approveFlag=true;
  1236. }
  1237. if(this.KGApprove==''){
  1238. this.saveHeaderData.qtyApprove=''
  1239. this.approveFlag=false;
  1240. }
  1241. },
  1242. qtyReworkBlur(){
  1243. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.saveHeaderData.qtyRework!=''){
  1244. this.KGRework=(this.saveHeaderData.qtyRework*this.qty3).toFixed(1)
  1245. }
  1246. if(this.saveHeaderData.qtyRework==''){
  1247. this.KGRework=''
  1248. }
  1249. },
  1250. KGReportedBlur(){
  1251. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.KGReported!=''){
  1252. this.saveHeaderData.qtyUnApprove=(this.KGReported/this.qty3).toFixed(0)
  1253. }
  1254. if(this.KGReported==''){
  1255. this.saveHeaderData.qtyUnApprove=''
  1256. }
  1257. },
  1258. KGReworkBlur(){
  1259. if(this.qty3&&this.qty3!=0&&this.qty3!='erp未维护数据'&&this.KGRework!=''){
  1260. this.saveHeaderData.qtyRework=(this.KGRework/this.qty3).toFixed(0)
  1261. }
  1262. if(this.KGRework==''){
  1263. this.saveHeaderData.qtyRework=''
  1264. }
  1265. },
  1266. startSeqNo(){
  1267. let inData={
  1268. username:this.$store.state.user.name,
  1269. seqNo:this.scanSeqNo,
  1270. previousSeqNo:this.previousSeqNo,
  1271. tvId:this.tvId,
  1272. }
  1273. startSeqNo(inData).then(({data}) => {
  1274. if (data && data.code === 0) {
  1275. this.scanSeqNo='';
  1276. this.previousSeqNo='';
  1277. this.startModalFlag=false;
  1278. this.$message({
  1279. message: '操作成功',
  1280. type: 'success',
  1281. duration: 1500,
  1282. onClose: () => {
  1283. }
  1284. })
  1285. } else {
  1286. this.scanSeqNo='';
  1287. this.previousSeqNo='';
  1288. this.$alert(data.msg, '错误', {
  1289. confirmButtonText: '确定'
  1290. })
  1291. }
  1292. })
  1293. },
  1294. stopWork(){
  1295. if( this.stopData.seqNo==null||this.stopData.seqNo==''){
  1296. this.$alert("请输入派工单号", '错误', {
  1297. confirmButtonText: '确定'
  1298. })
  1299. return false;
  1300. }
  1301. if( this.stopData.abnormalCode==null||this.stopData.abnormalCode==''){
  1302. this.$alert("请选择异常原因", '错误', {
  1303. confirmButtonText: '确定'
  1304. })
  1305. return false;
  1306. }
  1307. if( this.stopData.abnormalRemark==null||this.stopData.abnormalRemark==''){
  1308. this.$alert("请输入描述", '错误', {
  1309. confirmButtonText: '确定'
  1310. })
  1311. return false;
  1312. }
  1313. // let inData={
  1314. // username:this.$store.state.user.name,
  1315. // seqNo:this.scanSeqNo
  1316. // }
  1317. stopWork(this.stopData).then(({data}) => {
  1318. if (data && data.code === 0) {
  1319. this.stopModalFlag=false;
  1320. this.$message({
  1321. message: '派工单已暂停',
  1322. type: 'success',
  1323. duration: 1500,
  1324. onClose: () => {
  1325. }
  1326. })
  1327. } else {
  1328. this.scanSeqNo='';
  1329. this.$alert(data.msg, '错误', {
  1330. confirmButtonText: '确定'
  1331. })
  1332. }
  1333. })
  1334. },
  1335. continueWork(){
  1336. let inData={
  1337. username:this.$store.state.user.name,
  1338. seqNo:this.scanSeqNo
  1339. }
  1340. continueWork(inData).then(({data}) => {
  1341. if (data && data.code === 0) {
  1342. this.scanSeqNo='';
  1343. this.continueModalFlag=false;
  1344. this.$message({
  1345. message: '派工单已继续',
  1346. type: 'success',
  1347. duration: 1500,
  1348. onClose: () => {
  1349. }
  1350. })
  1351. } else {
  1352. this.scanSeqNo='';
  1353. this.$alert(data.msg, '错误', {
  1354. confirmButtonText: '确定'
  1355. })
  1356. }
  1357. })
  1358. },
  1359. searchAllTV(){
  1360. getTvList().then(({data}) => {
  1361. this.tvList = data.rows;
  1362. })
  1363. },
  1364. getBadCodeList(){
  1365. getBadCodeList().then(({data}) => {
  1366. this.badCodeList = data.rows;
  1367. })
  1368. },
  1369. },
  1370. created () {
  1371. this.getBadCodeList();
  1372. this.searchAllTV();
  1373. }
  1374. }
  1375. </script>
  1376. <style scoped>
  1377. .input_left{
  1378. text-align: left;
  1379. }
  1380. .input_reight{
  1381. text-align: right;
  1382. }
  1383. /deep/ input::-webkit-inner-spin-button {
  1384. -webkit-appearance: none !important;
  1385. }
  1386. input[type='number'] {
  1387. -moz-appearance: textfield !important;
  1388. }
  1389. .big /deep/ .el-form-item__label {
  1390. font-size: 17px;
  1391. }
  1392. .big /deep/ .el-input__inner {
  1393. height: 22px !important;
  1394. font-size: 17px;
  1395. }
  1396. .big /deep/ .el-dialog__title {
  1397. font-size: 17px;
  1398. font-weight: bold;
  1399. }
  1400. </style>