赫艾前端
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.

1261 lines
48 KiB

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