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

614 lines
20 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
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
  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-select v-model="searchData.toTypeFlag" style="width: 120px">
  12. <el-option label="全部" value=""></el-option>
  13. <el-option label="混炼胶入库" value="混炼胶入库"></el-option>
  14. <el-option label="硫化检验单" value="硫化检验单"></el-option>
  15. <el-option label="进料检验" value="进料检验"></el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item :label="'是否检验'">
  19. <el-select v-model="searchData.inspectedFlag" style="width: 120px">
  20. <el-option label="全部" value=""></el-option>
  21. <el-option label="是" value="Y"></el-option>
  22. <el-option label="否" value="N"></el-option>
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item :label="'是否检验通过'">
  26. <el-select v-model="searchData.needReceiveFlag" style="width: 120px">
  27. <el-option label="全部" value=""></el-option>
  28. <el-option label="是" value="Y"></el-option>
  29. <el-option label="否" value="N"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. </el-form>
  33. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  34. <el-form-item :label="'派工日期:'">
  35. <el-date-picker
  36. style="width: 130px"
  37. v-model="searchData.startDate"
  38. value-format="yyyy-MM-dd"
  39. placeholder="选择日期">
  40. </el-date-picker>
  41. </el-form-item>
  42. <el-form-item :label="'至: '">
  43. <el-date-picker
  44. style="width: 130px"
  45. v-model="searchData.endDate"
  46. type="date"
  47. value-format="yyyy-MM-dd"
  48. placeholder="选择日期">
  49. </el-date-picker>
  50. </el-form-item>
  51. <el-form-item >
  52. <span slot="label" style="" @click="getBaseList(5)"><a herf="#">产品编码</a></span>
  53. <el-input v-model="searchData.partNo" style="width: 120px"></el-input>
  54. </el-form-item>
  55. <el-form-item >
  56. <span slot="label" style="" @click="getBaseList(24)"><a herf="#">加工中心编码</a></span>
  57. <el-input v-model="searchData.workCenterNo" style="width: 120px"></el-input>
  58. </el-form-item>
  59. <el-form-item >
  60. <span slot="label" style="" @click="getBaseList(26)"><a herf="#">操作员姓名</a></span>
  61. <el-input v-model="searchData.operatorName" style="width: 120px"></el-input>
  62. </el-form-item>
  63. <el-form-item :label="' '">
  64. <el-button @click="search()" style="margin-left: 0px;margin-top:0px" type="primary">查询</el-button>
  65. <!-- <download-excel-->
  66. <!-- :fields="exportDataStandard"-->
  67. <!-- :data="tableData"-->
  68. <!-- type="xlsx"-->
  69. <!-- :name="exportName"-->
  70. <!-- :header="exportHeader"-->
  71. <!-- :footer="exportFooter"-->
  72. <!-- :defaultValue="exportDefaultValue"-->
  73. <!-- :fetch="createExportData"-->
  74. <!-- :before-generate="startDownload"-->
  75. <!-- :before-finish="finishDownload"-->
  76. <!-- worksheet="导出信息"-->
  77. <!-- class="el-button el-button&#45;&#45;primary el-button&#45;&#45;medium">-->
  78. <!-- {{'导出'}}-->
  79. <!-- </download-excel>-->
  80. </el-form-item>
  81. </el-form>
  82. <el-table
  83. :height="height"
  84. :data="tableData"
  85. border
  86. style="width: 100%">
  87. <el-table-column
  88. prop=""
  89. header-align="center"
  90. align="center"
  91. min-width="180"
  92. fixed="left"
  93. label="操作">
  94. <template slot-scope="scope" class="foo_container">
  95. <a v-if="scope.row.inspectedFlag=='N'" type="text" size="small" @click="inspectModal(scope.row)">检验</a>
  96. <a v-if="scope.row.inspectedFlag=='Y'" type="text" size="small" @click="toPrint(scope.row)">补打结果</a>
  97. <a v-if="scope.row.inspectedFlag=='Y'" type="text" size="small" @click="cancelInspectResult(scope.row)">取消检验结果</a>
  98. <a v-if="scope.row.toTypeFlag=='混炼胶入库'" type="text" size="small" @click="detailModal(scope.row)">混炼明细</a>
  99. <a v-if="scope.row.toTypeFlagDb=='I'&&scope.row.inspectedFlag=='N'" type="text" size="small" @click="cancelInspect(scope.row)">删除检验单</a>
  100. </template>
  101. </el-table-column>
  102. <el-table-column
  103. prop="site"
  104. header-align="center"
  105. align="left"
  106. min-width="70"
  107. label="工厂编码">
  108. </el-table-column>
  109. <el-table-column
  110. prop="transNo"
  111. header-align="center"
  112. align="left"
  113. min-width="130"
  114. label="检验单号">
  115. </el-table-column>
  116. <el-table-column
  117. prop="transDate"
  118. header-align="center"
  119. align="left"
  120. min-width="130"
  121. label="生成日期">
  122. </el-table-column>
  123. <el-table-column
  124. prop="shiftNo"
  125. header-align="center"
  126. align="left"
  127. min-width="60"
  128. label="班次">
  129. </el-table-column>
  130. <el-table-column
  131. prop="orderNo"
  132. header-align="center"
  133. align="left"
  134. min-width="100"
  135. label="生产订单号">
  136. </el-table-column>
  137. <el-table-column
  138. prop="inspectedFlag"
  139. header-align="center"
  140. align="left"
  141. min-width="70"
  142. label="是否检验">
  143. </el-table-column>
  144. <el-table-column
  145. prop="inspectResult"
  146. header-align="center"
  147. align="left"
  148. min-width="70"
  149. label="检验结果">
  150. </el-table-column>
  151. <el-table-column
  152. prop="toTypeFlag"
  153. header-align="center"
  154. align="left"
  155. min-width="120"
  156. label="检验单类型">
  157. </el-table-column>
  158. <el-table-column
  159. prop="needReceiveFlag"
  160. header-align="center"
  161. align="left"
  162. min-width="70"
  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="partDescSpec"
  174. header-align="center"
  175. align="left"
  176. min-width="160"
  177. label="物料名称规格">
  178. </el-table-column>
  179. <el-table-column
  180. prop="workCenterDesc"
  181. header-align="center"
  182. align="left"
  183. min-width="100"
  184. label="加工中心">
  185. </el-table-column>
  186. <el-table-column
  187. prop="operatorName"
  188. header-align="center"
  189. align="left"
  190. min-width="70"
  191. label="操作员">
  192. </el-table-column>
  193. <el-table-column
  194. prop="inspectRemark"
  195. header-align="center"
  196. align="left"
  197. min-width="150"
  198. label="检验备注">
  199. </el-table-column>
  200. <el-table-column
  201. prop="transQty"
  202. header-align="center"
  203. align="left"
  204. min-width="160"
  205. label="派工单数量">
  206. </el-table-column>
  207. <el-table-column
  208. prop="seqNo"
  209. header-align="center"
  210. align="left"
  211. min-width="60"
  212. label="派工单号">
  213. </el-table-column>
  214. </el-table>
  215. <el-dialog title="录入检验结果" :close-on-click-modal="false" v-drag :visible.sync="inspectFlag" width="480px">
  216. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;" @submit.native.prevent>
  217. <el-form-item :label="'检验单号:'">
  218. <el-input v-model="inspectData.transNo" disabled style="width: 130px"></el-input>
  219. </el-form-item>
  220. <el-form-item :label="'生产订单号:'">
  221. <el-input v-model="inspectData.orderNo" disabled style="width: 130px"></el-input>
  222. </el-form-item>
  223. <el-form-item :label="'物料编码:'">
  224. <el-input v-model="inspectData.partNo" disabled style="width: 130px" ></el-input>
  225. </el-form-item>
  226. </el-form>
  227. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  228. <el-form-item :label="'规格/型号:'">
  229. <el-input v-model="inspectData.partDescSpec" disabled style="width: 417px;" ></el-input>
  230. </el-form-item>
  231. </el-form>
  232. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;" @submit.native.prevent>
  233. <el-form-item :label="'检验结果:'">
  234. <el-select v-model="inspectData.inspectResult" style="width: 120px">
  235. <el-option label="合格" value="合格"></el-option>
  236. <el-option label="不合格" value="不合格"></el-option>
  237. <el-option label="让步接收" value="让步接收"></el-option>
  238. </el-select>
  239. </el-form-item>
  240. <el-form-item label="检验备注">
  241. <el-input type="textarea" style="width: 282px" v-model="inspectData.inspectRemark"></el-input>
  242. </el-form-item>
  243. </el-form>
  244. <el-footer style="height:40px;margin-top: 30px;text-align:center">
  245. <el-button type="primary" @click="inspectSave()">保存</el-button>
  246. <el-button type="primary" @click="inspectFlag = false">关闭</el-button>
  247. </el-footer>
  248. </el-dialog>
  249. <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-drag title="周计划清单" :visible.sync="detailFlag" width="600px">
  250. <el-table
  251. height="300"
  252. :data="detailList"
  253. border
  254. style="width: 100%">
  255. <el-table-column
  256. prop="taskNo"
  257. header-align="center"
  258. align="left"
  259. min-width="80"
  260. label="混炼任务单号">
  261. </el-table-column>
  262. <el-table-column
  263. prop="orderNo"
  264. header-align="center"
  265. align="left"
  266. min-width="70"
  267. label="周计划号">
  268. </el-table-column>
  269. <el-table-column
  270. prop="partDesc"
  271. header-align="center"
  272. align="left"
  273. min-width="100"
  274. label="混炼胶名称">
  275. </el-table-column>
  276. <el-table-column
  277. prop="orderQty"
  278. header-align="center"
  279. align="right"
  280. min-width="70"
  281. label="周计划数量">
  282. </el-table-column>
  283. <el-table-column
  284. prop="hunlianQty"
  285. header-align="center"
  286. align="right"
  287. min-width="70"
  288. label="混炼胶数量">
  289. </el-table-column>
  290. <el-table-column
  291. prop="orderDate"
  292. header-align="center"
  293. align="left"
  294. min-width="100"
  295. label="周计划日期">
  296. </el-table-column>
  297. </el-table>
  298. <span slot="footer" class="dialog-footer">
  299. <el-button @click="detailFlag = false" type="primary">关闭</el-button>
  300. </span>
  301. </el-dialog>
  302. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  303. </div>
  304. </template>
  305. <script>
  306. import {
  307. getHunlianTaskData,getHunlianTaskDetailData
  308. } from "@/api/production.js"
  309. import {
  310. getInspectData,
  311. inspectSave,
  312. inspectPrint,
  313. cancelInspect,
  314. cancelInspectResult,
  315. } from '@/api/production/inspect.js'
  316. import Chooselist from '@/views/modules/common/Chooselist'
  317. import {
  318. printInspectLabel,
  319. } from "@/views/modules/print/print_inspect_label.js"
  320. export default {
  321. name: 'soscheduleRouting',
  322. components: {
  323. Chooselist
  324. },
  325. data () {
  326. return {
  327. detailList:[],
  328. detailFlag:false,
  329. // 导出 start
  330. exportData: [],
  331. exportDataStandard: {
  332. '派工单号': 'seqNo',
  333. '关联单号': 'orderNo',
  334. '关联单号类型': 'scheduleType',
  335. '工序号': 'itemNo',
  336. '工序名称': 'itemDesc',
  337. '派工数量': 'qtyRequired',
  338. '报工数量': 'qtyReported',
  339. '合格数量': 'qtyApprove',
  340. '需求时间': 'timeRequired',
  341. '派工日期': 'sScheduledDate',
  342. '操作员姓名': 'operatorName',
  343. '产品编码': 'partNo',
  344. '产品名称': 'partDesc',
  345. '机台ID': 'sResourceID',
  346. '班次': 'sShiftNo',
  347. '加工中心': 'sWorkCenterNo',
  348. },
  349. exportName: '派工单列表' + this.getStrDate(),
  350. exportHeader: ['派工单列表'],
  351. exportFooter: [],
  352. exportDefaultValue: '这一行这一列没有数据',
  353. // 导出 end
  354. height: 200,
  355. tableData: [],
  356. searchData: {
  357. orderNo: '',
  358. workCenterNo: '',
  359. partNo: '',
  360. site: '',
  361. toTypeFlag:'',
  362. inspectedFlag:'',
  363. needReceiveFlag:'N',
  364. endDate:'',
  365. startDate:'',
  366. operatorName:'',
  367. },
  368. height2:600,
  369. inspectData:{
  370. transNo:'',
  371. orderNo:'',
  372. partNo:'',
  373. partDescSpec:'',
  374. site:'',
  375. toTypeFlag:'',
  376. toTypeFlagDb:'',
  377. inspectResult:'',
  378. inspectRemark:'',
  379. operatorName:'',
  380. seqNo:'',
  381. },
  382. inspectFlag:false,
  383. }
  384. },
  385. mounted () {
  386. this.$nextTick(() => {
  387. this.height = window.innerHeight - 210
  388. this.height2 = window.innerHeight -100
  389. })
  390. },
  391. methods: {
  392. detailModal(row){
  393. let inData={
  394. site:row.site,
  395. taskNo:row.orderNo,
  396. }
  397. getHunlianTaskDetailData(inData).then(({data}) => {
  398. this.detailList = data.rows;
  399. })
  400. this.detailFlag=true;
  401. },
  402. // 获取基础数据列表S
  403. getBaseList (val, type) {
  404. this.tagNo = val
  405. this.$nextTick(() => {
  406. let strVal = ''
  407. if (val === 24) {
  408. strVal = this.searchData.workCenterNo
  409. }
  410. if (val === 5) {
  411. strVal = this.searchData.partNo
  412. }
  413. if (val === 26) {
  414. strVal = this.searchData.operatorName
  415. }
  416. if (val === 88) {
  417. strVal = this.searchData.sResourceID
  418. }
  419. this.$refs.baseList.init(val, strVal)
  420. })
  421. },
  422. /* 列表方法的回调 */
  423. getBaseData (val) {
  424. if (this.tagNo === 24) {
  425. this.searchData.workCenterNo = val.WorkCenterNo
  426. } else if (this.tagNo === 5) {
  427. this.searchData.partNo = val.PartNo
  428. }
  429. if (this.tagNo === 26) {
  430. this.searchData.operatorName = val.OperatorName
  431. }
  432. if (this.tagNo === 88) {
  433. this.searchData.sResourceID = val.ResourceID
  434. }
  435. },
  436. search () {
  437. getInspectData(this.searchData).then(({data}) => {
  438. this.tableData = data.rows
  439. })
  440. },
  441. inspectModal(row){
  442. this.inspectData.transNo=row.transNo;
  443. this.inspectData.orderNo=row.orderNo;
  444. this.inspectData.partNo=row.partNo;
  445. this.inspectData.partDescSpec=row.partDescSpec;
  446. this.inspectData.site=row.site;
  447. this.inspectData.toTypeFlag=row.toTypeFlag;
  448. this.inspectData.toTypeFlagDb=row.toTypeFlagDb;
  449. this.inspectData.transDate=row.transDate;
  450. this.inspectData.transQty=row.transQty;
  451. this.inspectData.operatorName=row.operatorName;
  452. this.inspectData.inspectResult= JSON.parse(JSON.stringify(row.inspectResult));
  453. this.inspectData.inspectRemark= JSON.parse(JSON.stringify(row.inspectRemark));
  454. this.inspectData.seqNo=row.seqNo;
  455. this.inspectFlag=true;
  456. },
  457. inspectSave(){
  458. if(this.inspectData.inspectResult==''||this.inspectData.inspectResult==null){
  459. this.$alert('请选择检验结果!', '错误', {
  460. confirmButtonText: '确定'
  461. })
  462. return false
  463. }
  464. inspectSave(this.inspectData).then(({data}) => {
  465. if (data && data.code === 0) {
  466. this.search ();
  467. let printData=data.row
  468. printData.userId=this.$store.state.user.name
  469. if(printData.toTypeFlagDb!='I'){
  470. printData.seqNo=printData.orderNo
  471. }
  472. let array=[];
  473. array.push(printData)
  474. printInspectLabel(array)
  475. this.inspectFlag=false
  476. this.$message({
  477. message: '操作成功',
  478. type: 'success',
  479. duration: 1500,
  480. onClose: () => {
  481. }
  482. })
  483. }else {
  484. this.$alert(data.msg, '错误', {
  485. confirmButtonText: '确定'
  486. })
  487. }
  488. })
  489. },
  490. cancelInspectResult(row){
  491. this.$confirm(`是否取消检验结果?`, '提示', {
  492. confirmButtonText: '确定',
  493. cancelButtonText: '取消',
  494. type: 'warning'
  495. }).then(() => {
  496. cancelInspectResult(row).then(({data}) => {
  497. if (data && data.code === 0) {
  498. this.search ();
  499. this.$message({
  500. message: '操作成功',
  501. type: 'success',
  502. duration: 1500,
  503. onClose: () => {
  504. }
  505. })
  506. }else {
  507. this.$alert(data.msg, '错误', {
  508. confirmButtonText: '确定'
  509. })
  510. }
  511. })
  512. }).catch(() => {
  513. })
  514. },
  515. cancelInspect(row){
  516. this.$confirm(`是否删除这条检验单?`, '提示', {
  517. confirmButtonText: '确定',
  518. cancelButtonText: '取消',
  519. type: 'warning'
  520. }).then(() => {
  521. cancelInspect(row).then(({data}) => {
  522. if (data && data.code === 0) {
  523. this.search ();
  524. this.$message({
  525. message: '操作成功',
  526. type: 'success',
  527. duration: 1500,
  528. onClose: () => {
  529. }
  530. })
  531. }else {
  532. this.$alert(data.msg, '错误', {
  533. confirmButtonText: '确定'
  534. })
  535. }
  536. })
  537. }).catch(() => {
  538. })
  539. },
  540. toPrint(row){
  541. inspectPrint(row).then(({data}) => {
  542. if (data && data.code === 0) {
  543. let printData=data.row
  544. printData.userId=this.$store.state.user.name
  545. if(printData.toTypeFlagDb!='I'){
  546. printData.seqNo=printData.orderNo
  547. }
  548. if(row.toTypeFlag=='硫化检验单(重复)'){
  549. printData.type='(变更)'
  550. }else {
  551. printData.type=''
  552. }
  553. let array=[];
  554. array.push(printData)
  555. printInspectLabel(array)
  556. }else {
  557. this.$alert(data.msg, '错误', {
  558. confirmButtonText: '确定'
  559. })
  560. }
  561. })
  562. },
  563. createExportData () {
  564. return this.tableData
  565. },
  566. startDownload () {
  567. // this.exportData = this.dataList
  568. },
  569. finishDownload () {
  570. },
  571. getStrDate () {
  572. let dd = new Date()
  573. let Y = dd.getFullYear()
  574. let M = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1)// 获取当前月份的日期,不足10补0
  575. let D = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate()// 获取当前几号,不足10补0
  576. let H = dd.getHours() < 10 ? '0' + dd.getHours() : dd.getHours()
  577. let MM = dd.getMinutes() < 10 ? '0' + dd.getMinutes() : dd.getMinutes()
  578. let S = dd.getSeconds() < 10 ? '0' + dd.getSeconds() : dd.getSeconds()
  579. return Y + M + D + H + MM + S
  580. },
  581. },
  582. created () {
  583. }
  584. }
  585. </script>
  586. <style scoped>
  587. .input_left{
  588. text-align: left;
  589. }
  590. .input_reight{
  591. text-align: right;
  592. }
  593. /deep/ input::-webkit-inner-spin-button {
  594. -webkit-appearance: none !important;
  595. }
  596. input[type='number'] {
  597. -moz-appearance: textfield !important;
  598. }
  599. </style>