plm前端
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.

818 lines
29 KiB

1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
  1. <script>
  2. import {
  3. removeBatchTestSoRouting,
  4. saveTestSoRouting,
  5. selectTestSoRoutingList,
  6. updateTestSoRouting
  7. } from "../../../../api/test/testSoRouting";
  8. import {searchWorkCenter} from "../../../../api/part/workCenter";
  9. import {Decimal} from "decimal.js";
  10. export default {
  11. name:"testRoutingTable",
  12. props:{
  13. dataList:{
  14. type: Array,
  15. default:()=>[]
  16. },
  17. testNo:{
  18. type: String,
  19. request: true
  20. },
  21. columnList:{
  22. type: Array,
  23. default: ()=>[],
  24. },
  25. height:{
  26. type:[Number,String],
  27. default:300
  28. },
  29. disabled:{
  30. type: Boolean,
  31. default: false
  32. },
  33. },
  34. model:{
  35. prop:"dataList",
  36. event:"change",
  37. },
  38. data(){
  39. return{
  40. workCenter:{
  41. workCenterNo:undefined,
  42. workCenterDesc:undefined,
  43. workCenterType:undefined,
  44. },
  45. workCenterList:[],
  46. workCenterDialogFlag:false,
  47. saveStatus:true,
  48. saveFlag:false,
  49. testSoRoutingLabel:{
  50. itemNo:"工序号",
  51. itemDesc:"工序名称",
  52. workCenterNo:"加工中心",
  53. workCenterDesc:"加工中心名称",
  54. workCenterType:"加工中心类别",
  55. machSetupTime:"准备时间",
  56. factorUnit:'产出单位',
  57. machRunFactor:'单位产出量',
  58. efficiency:'效率',
  59. requiredTime:'需求时间(h)',
  60. requiredQty:'需求数量',
  61. reportedQty:'报告数量',
  62. approveQty:'合格数量',
  63. planStartTime:'计划开工时间',
  64. planFinishTime:'计划完工时间',
  65. },
  66. testSoRouting:{
  67. itemNo:10,
  68. itemDesc:undefined,
  69. site:this.$store.state.user.site,
  70. testNo:undefined,
  71. workCenterNo:undefined,
  72. workCenterDesc:undefined,
  73. workCenterType:undefined,
  74. machSetupTime:0,
  75. factorUnit:'单位/小时',
  76. machRunFactor:0,
  77. efficiency:100,
  78. requiredTime:0,
  79. requiredQty:0,
  80. reportedQty:0,
  81. approveQty:0,
  82. planStartTime:undefined,
  83. planFinishTime:undefined,
  84. remark:undefined,
  85. },
  86. testSoRoutingRule:{
  87. itemNo:[{required: true,message: ' ',trigger: ['change','blur']}],
  88. itemDesc:[{required: true,message: ' ',trigger: ['change','blur']}],
  89. workCenterNo:[{required: true,message: ' ',trigger: ['change','blur']}],
  90. workCenterDesc:[{required: true,message: ' ',trigger: ['change','blur']}],
  91. workCenterType:[{required: true,message: ' ',trigger: ['change','blur']}],
  92. machSetupTime:[{required: true,message: ' ',trigger: ['change','blur']}],
  93. factorUnit:[{required: true,message: ' ',trigger: ['change','blur']}],
  94. machRunFactor:[{required: true,message: ' ',trigger: ['change','blur']}],
  95. efficiency:[{required: true,message: ' ',trigger: ['change','blur']}],
  96. requiredTime:[{required: true,message: ' ',trigger: ['change','blur']}],
  97. requiredQty:[{required: true,message: ' ',trigger: ['change','blur']}],
  98. reportedQty:[{required: true,message: ' ',trigger: ['change','blur']}],
  99. approveQty:[{required: true,message: ' ',trigger: ['change','blur']}],
  100. planStartTime:[{required: true,message: ' ',trigger: ['change','blur']}],
  101. planFinishTime:[{required: true,message: ' ',trigger: ['change','blur']}],
  102. },
  103. selectionTestSoRoutingList:[],
  104. testSoRoutingColumnList:[
  105. {
  106. userId: this.$store.state.user.name,
  107. functionId: 102001,
  108. serialNumber: '102001Table3ItemNo',
  109. tableId: '102001Table3',
  110. tableName: '测试工艺路线',
  111. columnProp: 'itemNo',
  112. headerAlign: 'center',
  113. align: 'center',
  114. columnLabel: '工序号',
  115. columnHidden: false,
  116. columnImage: false,
  117. columnSortable: false,
  118. sortLv: 0,
  119. status: true,
  120. fixed: '',
  121. columnWidth: 100
  122. },{
  123. userId: this.$store.state.user.name,
  124. functionId: 102001,
  125. serialNumber: '102001Table3ItemDesc',
  126. tableId: '102001Table3',
  127. tableName: '测试工艺路线',
  128. columnProp: 'itemDesc',
  129. headerAlign: 'center',
  130. align: 'left',
  131. columnLabel: '工序描述',
  132. columnHidden: false,
  133. columnImage: false,
  134. columnSortable: false,
  135. sortLv: 0,
  136. status: true,
  137. fixed: '',
  138. columnWidth: 200
  139. },
  140. {
  141. userId: this.$store.state.user.name,
  142. functionId: 102001,
  143. serialNumber: '102001Table3WorkCenterNo',
  144. tableId: '102001Table3',
  145. tableName: '测试工艺路线',
  146. columnProp: 'workCenterNo',
  147. headerAlign: 'center',
  148. align: 'left',
  149. columnLabel: '加工中心',
  150. columnHidden: false,
  151. columnImage: false,
  152. columnSortable: false,
  153. sortLv: 0,
  154. status: true,
  155. fixed: '',
  156. columnWidth: 100
  157. },
  158. {
  159. userId: this.$store.state.user.name,
  160. functionId: 102001,
  161. serialNumber: '102001Table3WorkCenterDesc',
  162. tableId: '102001Table3',
  163. tableName: '测试工艺路线',
  164. columnProp: 'workCenterDesc',
  165. headerAlign: 'center',
  166. align: 'left',
  167. columnLabel: '加工中心名称',
  168. columnHidden: false,
  169. columnImage: false,
  170. columnSortable: false,
  171. sortLv: 0,
  172. status: true,
  173. fixed: '',
  174. columnWidth: 150
  175. },
  176. {
  177. userId: this.$store.state.user.name,
  178. functionId: 102001,
  179. serialNumber: '102001Table3WorkCenterType',
  180. tableId: '102001Table3',
  181. tableName: '测试工艺路线',
  182. columnProp: 'workCenterType',
  183. headerAlign: 'center',
  184. align: 'center',
  185. columnLabel: '加工中心类别',
  186. columnHidden: false,
  187. columnImage: false,
  188. columnSortable: false,
  189. sortLv: 0,
  190. status: true,
  191. fixed: '',
  192. columnWidth: 100
  193. },
  194. // {
  195. // userId: this.$store.state.user.name,
  196. // functionId: 102001,
  197. // serialNumber: '102001Table3MachSetupTime',
  198. // tableId: '102001Table3',
  199. // tableName: '测试工艺路线',
  200. // columnProp: 'machSetupTime',
  201. // headerAlign: 'center',
  202. // align: 'center',
  203. // columnLabel: '准备时间',
  204. // columnHidden: false,
  205. // columnImage: false,
  206. // columnSortable: false,
  207. // sortLv: 0,
  208. // status: true,
  209. // fixed: '',
  210. // columnWidth: 100
  211. // },
  212. // {
  213. // userId: this.$store.state.user.name,
  214. // functionId: 102001,
  215. // serialNumber: '102001Table3MachRunFactor',
  216. // tableId: '102001Table3',
  217. // tableName: '测试工艺路线',
  218. // columnProp: 'machRunFactor',
  219. // headerAlign: 'center',
  220. // align: 'center',
  221. // columnLabel: '单位产出量',
  222. // columnHidden: false,
  223. // columnImage: false,
  224. // columnSortable: false,
  225. // sortLv: 0,
  226. // status: true,
  227. // fixed: '',
  228. // columnWidth: 100
  229. // },
  230. // {
  231. // userId: this.$store.state.user.name,
  232. // functionId: 102001,
  233. // serialNumber: '102001Table3Efficiency',
  234. // tableId: '102001Table3',
  235. // tableName: '测试工艺路线',
  236. // columnProp: 'efficiency',
  237. // headerAlign: 'center',
  238. // align: 'center',
  239. // columnLabel: '效率%',
  240. // columnHidden: false,
  241. // columnImage: false,
  242. // columnSortable: false,
  243. // sortLv: 0,
  244. // status: true,
  245. // fixed: '',
  246. // columnWidth: 100
  247. // },
  248. // {
  249. // userId: this.$store.state.user.name,
  250. // functionId: 102001,
  251. // serialNumber: '102001Table3FactorUnit',
  252. // tableId: '102001Table3',
  253. // tableName: '测试工艺路线',
  254. // columnProp: 'factorUnit',
  255. // headerAlign: 'center',
  256. // align: 'center',
  257. // columnLabel: '产出单位',
  258. // columnHidden: false,
  259. // columnImage: false,
  260. // columnSortable: false,
  261. // sortLv: 0,
  262. // status: true,
  263. // fixed: '',
  264. // columnWidth: 100
  265. // },
  266. {
  267. userId: this.$store.state.user.name,
  268. functionId: 102001,
  269. serialNumber: '102001Table3RequiredTime',
  270. tableId: '102001Table3',
  271. tableName: '测试工艺路线',
  272. columnProp: 'requiredTime',
  273. headerAlign: 'center',
  274. align: 'center',
  275. columnLabel: '需求时间(h)',
  276. columnHidden: false,
  277. columnImage: false,
  278. columnSortable: false,
  279. sortLv: 0,
  280. status: true,
  281. fixed: '',
  282. columnWidth: 100
  283. },
  284. // {
  285. // userId: this.$store.state.user.name,
  286. // functionId: 102001,
  287. // serialNumber: '102001Table3RequiredQty',
  288. // tableId: '102001Table3',
  289. // tableName: '测试工艺路线',
  290. // columnProp: 'requiredQty',
  291. // headerAlign: 'center',
  292. // align: 'center',
  293. // columnLabel: '需求数量',
  294. // columnHidden: false,
  295. // columnImage: false,
  296. // columnSortable: false,
  297. // sortLv: 0,
  298. // status: true,
  299. // fixed: '',
  300. // columnWidth: 100
  301. // },
  302. // {
  303. // userId: this.$store.state.user.name,
  304. // functionId: 102001,
  305. // serialNumber: '102001Table3ReportedQty',
  306. // tableId: '102001Table3',
  307. // tableName: '测试工艺路线',
  308. // columnProp: 'reportedQty',
  309. // headerAlign: 'center',
  310. // align: 'center',
  311. // columnLabel: '报告数量',
  312. // columnHidden: false,
  313. // columnImage: false,
  314. // columnSortable: false,
  315. // sortLv: 0,
  316. // status: true,
  317. // fixed: '',
  318. // columnWidth: 100
  319. // },
  320. // {
  321. // userId: this.$store.state.user.name,
  322. // functionId: 102001,
  323. // serialNumber: '102001Table3ApproveQty',
  324. // tableId: '102001Table3',
  325. // tableName: '测试工艺路线',
  326. // columnProp: 'approveQty',
  327. // headerAlign: 'center',
  328. // align: 'center',
  329. // columnLabel: '合格数量',
  330. // columnHidden: false,
  331. // columnImage: false,
  332. // columnSortable: false,
  333. // sortLv: 0,
  334. // status: true,
  335. // fixed: '',
  336. // columnWidth: 100
  337. // },
  338. // {
  339. // userId: this.$store.state.user.name,
  340. // functionId: 102001,
  341. // serialNumber: '102001Table3PlanStartTime',
  342. // tableId: '102001Table3',
  343. // tableName: '测试工艺路线',
  344. // columnProp: 'planStartTime',
  345. // headerAlign: 'center',
  346. // align: 'center',
  347. // columnLabel: '计划开工时间',
  348. // columnHidden: false,
  349. // columnImage: false,
  350. // columnSortable: false,
  351. // sortLv: 0,
  352. // status: true,
  353. // fixed: '',
  354. // columnWidth: 100
  355. // },
  356. // {
  357. // userId: this.$store.state.user.name,
  358. // functionId: 102001,
  359. // serialNumber: '102001Table3PlanFinishTime',
  360. // tableId: '102001Table3',
  361. // tableName: '测试工艺路线',
  362. // columnProp: 'planFinishTime',
  363. // headerAlign: 'center',
  364. // align: 'center',
  365. // columnLabel: '计划完工时间',
  366. // columnHidden: false,
  367. // columnImage: false,
  368. // columnSortable: false,
  369. // sortLv: 0,
  370. // status: true,
  371. // fixed: '',
  372. // columnWidth: 100
  373. // },
  374. {
  375. userId: this.$store.state.user.name,
  376. functionId: 102001,
  377. serialNumber: '102001Table3Remark',
  378. tableId: '102001Table3',
  379. tableName: '测试工艺路线',
  380. columnProp: 'remark',
  381. headerAlign: 'center',
  382. align: 'left',
  383. columnLabel: '备注',
  384. columnHidden: false,
  385. columnImage: false,
  386. columnSortable: false,
  387. sortLv: 0,
  388. status: true,
  389. fixed: '',
  390. columnWidth: 140
  391. },
  392. ],
  393. }
  394. },
  395. created() {
  396. if (this.columnList.length !== 0){
  397. this.testSoRoutingColumnList = [...this.columnList]
  398. }
  399. },
  400. methods: {
  401. dblClickWorkCenterTable(row){
  402. this.testSoRouting.workCenterNo = row.workCenterNo
  403. this.testSoRouting.workCenterDesc = row.workCenterDesc
  404. this.testSoRouting.workCenterType = row.workCenterType
  405. this.workCenterDialogFlag = false
  406. },
  407. searchWorkCenter(flag){
  408. let params = {
  409. site:this.$store.state.user.site,
  410. workCenterNo:this.workCenter.workCenterNo,
  411. workCenterDesc:this.workCenter.workCenterDesc,
  412. workCenterType:this.workCenter.workCenterType,
  413. };
  414. this.workCenterList = []
  415. searchWorkCenter(params).then(({data})=>{
  416. if (data && data.code === 200){
  417. this.workCenterList = data.data;
  418. if (flag === true){
  419. if (this.workCenterList.length === 1 && this.workCenterList[0].workCenterNo === this.testSoRouting.workCenterNo){
  420. this.dblClickWorkCenterTable(this.workCenterList[0])
  421. }else {
  422. let workCenter = {
  423. workCenterNo:this.testSoRouting.workCenterNo,
  424. workCenterDesc:'',
  425. workCenterType:''
  426. }
  427. this.dblClickWorkCenterTable(workCenter)
  428. }
  429. }
  430. }
  431. })
  432. },
  433. saveTestSoRoutingBtn(row){
  434. if (row){
  435. this.saveStatus = false
  436. this.testSoRouting = {...row}
  437. }else {
  438. this.testSoRouting.testNo = this.testNo
  439. this.testSoRouting.planStartTime = new Date()
  440. this.testSoRouting.planFinishTime = new Date()
  441. }
  442. this.saveFlag = true;
  443. },
  444. closeWorkCenterDialog(){
  445. this.workCenter = {
  446. workCenterNo:undefined,
  447. workCenterDesc:undefined,
  448. workCenterType:undefined,
  449. }
  450. },
  451. closeTestSoRoutingDialog(){
  452. this.saveStatus = true;
  453. this.$refs.saveForm.resetFields();
  454. this.testSoRouting = {
  455. itemNo:10,
  456. itemDesc:undefined,
  457. site:this.$store.state.user.site,
  458. testNo: this.testNo,
  459. workCenterNo:undefined,
  460. workCenterDesc:undefined,
  461. workCenterType:undefined,
  462. machSetupTime:0,
  463. factorUnit:'单位/小时',
  464. machRunFactor:0,
  465. efficiency:100,
  466. requiredTime:0,
  467. requiredQty:0,
  468. reportedQty:0,
  469. approveQty:0,
  470. planStartTime:undefined,
  471. planFinishTime:undefined,
  472. remark:undefined,
  473. }
  474. },
  475. selectTestSoRoutingList(){
  476. let params = {
  477. site:this.$store.state.user.site,
  478. testNo: this.testNo,
  479. }
  480. selectTestSoRoutingList(params).then(({data})=>{
  481. if (data && data.code === 0){
  482. this.$emit("change",data.rows);
  483. this.$nextTick(()=>{
  484. this.testSoRouting = {
  485. itemNo:data.rows.length > 0?this.dataList[data.rows.length-1].itemNo +10:10,
  486. itemDesc:undefined,
  487. site:this.$store.state.user.site,
  488. testNo:this.testNo,
  489. workCenterNo:undefined,
  490. workCenterDesc:undefined,
  491. workCenterType:undefined,
  492. machSetupTime:0,
  493. factorUnit:'单位/小时',
  494. machRunFactor:0,
  495. efficiency:100,
  496. requiredTime:0,
  497. requiredQty:0,
  498. reportedQty:0,
  499. approveQty:0,
  500. planStartTime:this.dayjs(new Date(this.testSoRouting.planFinishTime)).format("YYYY-MM-DD HH:mm:ss"),
  501. planFinishTime:this.dayjs(new Date(this.testSoRouting.planFinishTime)).format("YYYY-MM-DD HH:mm:ss"),
  502. remark:undefined,
  503. }
  504. })
  505. }
  506. })
  507. },
  508. saveTestSoRouting(isClose){
  509. this.$refs.saveForm.validate((validate,objects)=>{
  510. if (validate){
  511. this.testSoRouting.planStartTime = this.dayjs(new Date(this.testSoRouting.planStartTime)).format("YYYY-MM-DD HH:mm:ss")
  512. this.testSoRouting.planFinishTime = this.dayjs(new Date(this.testSoRouting.planFinishTime)).format("YYYY-MM-DD HH:mm:ss")
  513. if (!this.saveStatus){
  514. // 修改
  515. updateTestSoRouting(this.testSoRouting).then(({data})=>{
  516. if (data && data.code === 0){
  517. this.selectTestSoRoutingList();
  518. this.$message.success(data.msg)
  519. this.saveFlag = false
  520. }else {
  521. this.$message.warning(data.msg)
  522. }
  523. }).catch((error)=>{
  524. this.$message.error(error)
  525. })
  526. }else {
  527. // 新增
  528. saveTestSoRouting(this.testSoRouting).then(({data})=>{
  529. if (data && data.code === 0){
  530. this.selectTestSoRoutingList();
  531. this.$message.success(data.msg)
  532. if (!isClose){
  533. this.saveFlag = false
  534. }
  535. }else {
  536. this.$message.warning(data.msg)
  537. }
  538. }).catch((error)=>{
  539. this.$message.error(error)
  540. })
  541. }
  542. }else {
  543. for (let key in objects) {
  544. this.$message.error(this.testSoRoutingLabel[key]+"不能为空")
  545. }
  546. }
  547. })
  548. },
  549. testSoRoutingClickRow(row,column){
  550. if (column.label !== '操作'){
  551. this.$refs.testSoRoutingTable.toggleRowSelection(row,true)
  552. }
  553. },
  554. selectionTestSoRouting(val){
  555. this.selectionTestSoRoutingList = val
  556. },
  557. removeTestSoRouting(){
  558. if (this.selectionTestSoRoutingList.length === 0){
  559. this.$message.warning("请选择要删除的工艺路线")
  560. return
  561. }
  562. this.$confirm('确定要删除该记录吗?', '提示', {
  563. confirmButtonText: '确定',
  564. cancelButtonText: '取消',
  565. type: 'warning'
  566. }).then(() => {
  567. removeBatchTestSoRouting(this.selectionTestSoRoutingList).then(({data}) => {
  568. if (data && data.code === 0) {
  569. this.selectTestSoRoutingList();
  570. this.$message.success(data.msg)
  571. } else {
  572. this.$message.warning(data.msg)
  573. }
  574. }).catch((error) => {
  575. this.$message.error(error)
  576. })
  577. }).catch(()=>{})
  578. },
  579. computeRequiredTime(){
  580. // 1、计算效率
  581. let total = new Decimal(this.testSoRouting.efficiency).div(new Decimal(100))
  582. // 2、计算单位生产时间
  583. let time = new Decimal(0);
  584. switch (this.testSoRouting.factorUnit){
  585. case "小时":
  586. time = new Decimal(this.testSoRouting.machRunFactor)
  587. break
  588. case "单位/小时":
  589. if (new Decimal(this.testSoRouting.machRunFactor).toNumber() !== 0){
  590. time = new Decimal(1).div(new Decimal(this.testSoRouting.machRunFactor))
  591. }
  592. break
  593. case "小时/单位":
  594. time = new Decimal(this.testSoRouting.machRunFactor).mul(new Decimal(1))
  595. break
  596. }
  597. total = total.mul(time)
  598. total = Decimal.add(new Decimal(this.testSoRouting.machSetupTime),total)
  599. this.testSoRouting.requiredTime = total;
  600. if (this.testSoRouting.requiredTime.toNumber !== 0){
  601. this.testSoRouting.requiredTime = new Decimal(total.toFixed(3,Decimal.ROUND_FLOOR)).toSignificantDigits().toNumber();
  602. }
  603. },
  604. openRouting(){
  605. if (this.saveStatus){
  606. this.testSoRouting.itemNo = this.dataList.length > 0?this.dataList[this.dataList.length-1].itemNo +10:10;
  607. }
  608. },
  609. changeWorkCenter(val){
  610. this.workCenter.workCenterNo = val
  611. this.searchWorkCenter(true)
  612. },
  613. openWorkCenterDialog(){
  614. this.workCenter.workCenterNo = this.testSoRouting.workCenterNo;
  615. this.searchWorkCenter()
  616. }
  617. },
  618. }
  619. </script>
  620. <template>
  621. <div>
  622. <div style="margin-bottom: 5px">
  623. <el-button type="primary" v-if="!disabled" @click="saveTestSoRoutingBtn()">新增</el-button>
  624. <el-button type="primary" v-if="!disabled" @click="removeTestSoRouting">删除</el-button>
  625. </div>
  626. <el-table
  627. :height="height" border
  628. :data="dataList"
  629. ref="testSoRoutingTable"
  630. @row-click="testSoRoutingClickRow"
  631. @selection-change="selectionTestSoRouting">
  632. <el-table-column
  633. type="selection"
  634. header-align="center"
  635. align="center"
  636. width="50">
  637. </el-table-column>
  638. <el-table-column
  639. v-for="(item,index) in testSoRoutingColumnList" :key="index"
  640. :sortable="item.columnSortable"
  641. :prop="item.columnProp"
  642. :header-align="item.headerAlign"
  643. :show-overflow-tooltip="item.showOverflowTooltip"
  644. :align="item.align"
  645. :fixed="item.fixed===''?false:item.fixed"
  646. :min-width="item.columnWidth"
  647. :label="item.columnLabel">
  648. <template slot-scope="scope">
  649. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  650. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  651. </template>
  652. </el-table-column>
  653. <el-table-column label="操作" align="center" fixed="right">
  654. <template slot-scope="{row,$index}">
  655. <a type="text" style="cursor:pointer;" v-if="!disabled" @click="saveTestSoRoutingBtn(row)">编辑</a>
  656. </template>
  657. </el-table-column>
  658. </el-table>
  659. <el-dialog :close-on-click-modal="false" :title="(saveStatus?'新增':'编辑')+'-工艺路线'" :visible.sync="saveFlag" @open="openRouting" v-drag append-to-body @close="closeTestSoRoutingDialog">
  660. <el-form :model="testSoRouting" label-position="top" ref="saveForm" :rules="testSoRoutingRule">
  661. <el-row :gutter="10">
  662. <el-col :span="8">
  663. <el-form-item label="工序号" prop="itemNo">
  664. <el-input-number style="width: 100%;margin-top: -5px;" :disabled="!saveStatus" :min="0" v-model="testSoRouting.itemNo" :controls="false"></el-input-number>
  665. </el-form-item>
  666. </el-col>
  667. <el-col :span="16">
  668. <el-form-item label="工序名称" prop="itemDesc">
  669. <el-input v-model="testSoRouting.itemDesc"></el-input>
  670. </el-form-item>
  671. </el-col>
  672. </el-row>
  673. <el-row :gutter="10">
  674. <el-col :span="8">
  675. <el-form-item label="加工中心" prop="workCenterNo">
  676. <span slot="label" style="cursor:pointer;" @click="workCenterDialogFlag = true"><a>加工中心</a></span>
  677. <el-input @change="changeWorkCenter" v-model="testSoRouting.workCenterNo"></el-input>
  678. </el-form-item>
  679. </el-col>
  680. <el-col :span="8">
  681. <el-form-item label="加工中心名称" prop="workCenterDesc">
  682. <el-input disabled v-model="testSoRouting.workCenterDesc"></el-input>
  683. </el-form-item>
  684. </el-col>
  685. <el-col :span="8">
  686. <el-form-item label="加工中心类别" prop="workCenterType">
  687. <el-input disabled v-model="testSoRouting.workCenterType"></el-input>
  688. </el-form-item>
  689. </el-col>
  690. <el-col :span="8" v-if="false">
  691. <el-form-item label="准备时间" prop="machSetupTime">
  692. <el-input-number @input="computeRequiredTime" style="width: 100%;margin-top: -5px;" :min="0" v-model="testSoRouting.machSetupTime" :controls="false"></el-input-number>
  693. </el-form-item>
  694. </el-col>
  695. <el-col :span="8" v-if="false">
  696. <el-form-item label="单位产出量" prop="machRunFactor">
  697. <el-input-number @input="computeRequiredTime" style="width: 100%;margin-top: -5px;" :min="0" v-model="testSoRouting.machRunFactor" :controls="false"></el-input-number>
  698. </el-form-item>
  699. </el-col>
  700. <el-col :span="8" v-if="false">
  701. <el-form-item label="效率%" prop="efficiency">
  702. <el-input-number @input="computeRequiredTime" style="width: 100%;margin-top: -5px;" :min="0" v-model="testSoRouting.efficiency" :controls="false"></el-input-number>
  703. </el-form-item>
  704. </el-col>
  705. <el-col :span="8" v-if="false">
  706. <el-form-item label="产出单位" prop="factorUnit">
  707. <el-select v-model="testSoRouting.factorUnit" @change="computeRequiredTime"
  708. style="width: 100%" placeholder="请选择" default-first-option>
  709. <el-option label="单位/小时" :value="'单位/小时'"></el-option>
  710. <el-option label="小时/单位" :value="'小时/单位'"></el-option>
  711. <el-option label="小时" :value="'小时'"></el-option>
  712. </el-select>
  713. </el-form-item>
  714. </el-col>
  715. </el-row>
  716. <el-row :gutter="10">
  717. <el-col :span="8">
  718. <el-form-item label="需求时间(h)" prop="requiredTime">
  719. <el-input-number style="width: 100%;margin-top: -5px;" :min="0" v-model="testSoRouting.requiredTime" :controls="false"></el-input-number>
  720. </el-form-item>
  721. </el-col>
  722. <el-col :span="8" v-if="false">
  723. <el-form-item label="需求数量" prop="requiredQty">
  724. <el-input-number style="width: 100%;margin-top: -5px;" :min="0" v-model="testSoRouting.requiredQty" :controls="false"></el-input-number>
  725. </el-form-item>
  726. </el-col>
  727. </el-row>
  728. <el-row :gutter="10" v-if="false">
  729. <el-col :span="8">
  730. <el-form-item label="报告数量" prop="reportedQty">
  731. <el-input-number style="width: 100%;margin-top: -5px;" :min="0" v-model="testSoRouting.reportedQty" :controls="false"></el-input-number>
  732. </el-form-item>
  733. </el-col>
  734. <el-col :span="8" v-if="false">
  735. <el-form-item label="合格数量" prop="approveQty">
  736. <el-input-number style="width: 100%;margin-top: -5px;" :min="0" v-model="testSoRouting.approveQty" :controls="false"></el-input-number>
  737. </el-form-item>
  738. </el-col>
  739. </el-row>
  740. <el-row :gutter="10">
  741. <el-col :span="8" v-if="false">
  742. <el-form-item label="计划开工时间" prop="planStartTime">
  743. <el-date-picker
  744. style="width: 100%"
  745. v-model="testSoRouting.planStartTime"
  746. type="datetime"
  747. placeholder="选择日期时间">
  748. </el-date-picker>
  749. </el-form-item>
  750. </el-col>
  751. <el-col :span="8" v-if="false">
  752. <el-form-item label="计划完工时间" prop="planFinishTime">
  753. <el-date-picker
  754. style="width: 100%"
  755. v-model="testSoRouting.planFinishTime"
  756. type="datetime"
  757. placeholder="选择日期时间">
  758. </el-date-picker>
  759. </el-form-item>
  760. </el-col>
  761. <el-col :span="24">
  762. <el-form-item label="备注" prop="remark" style="height: 90px">
  763. <el-input type="textarea" resize='none' :autosize="{ minRows: 3, maxRows: 3 }" v-model="testSoRouting.remark"></el-input>
  764. </el-form-item>
  765. </el-col>
  766. </el-row>
  767. </el-form>
  768. <span slot="footer" class="dialog-footer">
  769. <el-button v-if="saveStatus" type="primary" @click="saveTestSoRouting(true)"> </el-button>
  770. <el-button type="primary" @click="saveTestSoRouting(false)"> </el-button>
  771. <el-button @click="saveFlag = false"> </el-button>
  772. </span>
  773. </el-dialog>
  774. <el-dialog title="加工中心信息" v-drag @open="openWorkCenterDialog" :visible.sync="workCenterDialogFlag" width="40%" append-to-body @close="closeWorkCenterDialog">
  775. <el-form :model="workCenter" label-position="top">
  776. <el-row :gutter="10">
  777. <el-col :span="6">
  778. <el-form-item label="加工中心">
  779. <el-input v-model="workCenter.workCenterNo"></el-input>
  780. </el-form-item>
  781. </el-col>
  782. <el-col :span="8">
  783. <el-form-item label="加工中心名称">
  784. <el-input v-model="workCenter.workCenterDesc"></el-input>
  785. </el-form-item>
  786. </el-col>
  787. <el-col :span="6">
  788. <el-form-item label="加工中心类别">
  789. <el-input v-model="workCenter.workCenterType"></el-input>
  790. </el-form-item>
  791. </el-col>
  792. </el-row>
  793. <el-row :gutter="10">
  794. <el-col :span="6">
  795. <el-button type="primary" @click="searchWorkCenter">查询</el-button>
  796. </el-col>
  797. </el-row>
  798. </el-form>
  799. <el-table border height="200px" stripe
  800. :data="workCenterList" @row-dblclick="dblClickWorkCenterTable">
  801. <el-table-column label="加工中心" prop="workCenterNo"></el-table-column>
  802. <el-table-column label="加工中心名称" prop="workCenterDesc"></el-table-column>
  803. <el-table-column label="加工中心类别" prop="workCenterType"></el-table-column>
  804. </el-table>
  805. </el-dialog>
  806. </div>
  807. </template>
  808. <style scoped>
  809. .el-input-number /deep/ .el-input__inner{
  810. text-align: right;
  811. padding-right: 5px !important;
  812. }
  813. </style>