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

498 lines
15 KiB

2 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
11 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
11 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
11 months 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.orderNo" style="width: 120px"></el-input>
  6. </el-form-item>
  7. <el-form-item :label="'硫化日计划号:'">
  8. <el-input v-model="searchData.soTaskNo" style="width: 120px"></el-input>
  9. </el-form-item>
  10. <el-form-item :label="'硫化产品名称:'">
  11. <el-input v-model="searchData.partDescSpec" style="width: 120px"></el-input>
  12. </el-form-item>
  13. <el-form-item :label="' '">
  14. <el-button @click="search()" style="margin-left: 0px;margin-top: 0px" type="primary">查询</el-button>
  15. <el-button @click="getSum()" style="margin-left: 0px;margin-top: 0px" type="primary">合并任务单</el-button>
  16. </el-form-item>
  17. </el-form>
  18. <div class="search1">
  19. <el-table
  20. cell-style="cc"
  21. :height="height"
  22. :data="tableData"
  23. ref="wt_table"
  24. @selection-change="selectionChangeHandle"
  25. border
  26. :row-class-name="tableRowClassName"
  27. style="width: 100%;">
  28. <el-table-column
  29. type="selection"
  30. align="center"
  31. :selectable="selectFlag"
  32. width="30">
  33. </el-table-column>
  34. <el-table-column
  35. prop="site"
  36. header-align="center"
  37. align="left"
  38. min-width="40"
  39. style="font-size: 20px"
  40. label="工厂编码">
  41. </el-table-column>
  42. <el-table-column
  43. prop="erpStatus"
  44. header-align="center"
  45. align="left"
  46. min-width="40"
  47. style="font-size: 20px"
  48. label="erp状态">
  49. </el-table-column>
  50. <el-table-column
  51. prop="orderNo"
  52. header-align="center"
  53. align="left"
  54. min-width="65"
  55. label="硫化订单号">
  56. </el-table-column>
  57. <el-table-column
  58. prop="orderTypeDesc"
  59. header-align="center"
  60. align="left"
  61. min-width="60"
  62. label="订单类型">
  63. </el-table-column>
  64. <el-table-column
  65. prop="orderNoHunlian"
  66. header-align="center"
  67. align="left"
  68. min-width="65"
  69. label="周计划号">
  70. </el-table-column>
  71. <el-table-column
  72. prop="partDescSpec"
  73. header-align="center"
  74. align="left"
  75. min-width="120"
  76. label="硫化产品名称">
  77. </el-table-column>
  78. <el-table-column
  79. prop="componentPartNo"
  80. header-align="center"
  81. align="left"
  82. min-width="70"
  83. label="混炼物料编码">
  84. </el-table-column>
  85. <el-table-column
  86. prop="compPartDescSpec"
  87. header-align="center"
  88. align="left"
  89. min-width="120"
  90. label="混炼胶名称">
  91. </el-table-column>
  92. <el-table-column
  93. prop="qtyRequired"
  94. header-align="center"
  95. align="right"
  96. min-width="45"
  97. label="混炼胶用量">
  98. </el-table-column>
  99. <el-table-column
  100. prop="sjph1"
  101. header-align="center"
  102. align="center"
  103. min-width="50"
  104. label="生胶牌号1">
  105. </el-table-column>
  106. <el-table-column
  107. prop="inventory1"
  108. header-align="center"
  109. align="center"
  110. min-width="50"
  111. label="生胶牌号1库存量">
  112. </el-table-column>
  113. <el-table-column
  114. prop="sjphQtyReq1"
  115. header-align="center"
  116. align="right"
  117. min-width="45"
  118. label="生胶1用量">
  119. </el-table-column>
  120. <el-table-column
  121. prop="sjph2"
  122. header-align="center"
  123. align="center"
  124. min-width="50"
  125. label="生胶牌号2">
  126. </el-table-column>
  127. <el-table-column
  128. prop="inventory2"
  129. header-align="center"
  130. align="center"
  131. min-width="50"
  132. label="生胶牌号2库存量">
  133. </el-table-column>
  134. <el-table-column
  135. prop="sjphQtyReq2"
  136. header-align="center"
  137. align="right"
  138. min-width="45"
  139. label="生胶2用量">
  140. </el-table-column>
  141. <el-table-column
  142. prop="planStartDate"
  143. header-align="center"
  144. align="center"
  145. min-width="100"
  146. label="需求日期">
  147. </el-table-column>
  148. </el-table>
  149. </div>
  150. <el-dialog title="混炼任务合并" :close-on-click-modal="false" v-drag :visible.sync="sumFlag" width="700px">
  151. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  152. <el-form-item :label="'混炼物料编码:'">
  153. <el-input v-model="hunlianPartNo" readonly style="width: 130px"></el-input>
  154. </el-form-item>
  155. <el-form-item :label="'混炼产品名称:'">
  156. <el-input v-model="hunlianPartDesc" readonly style="width: 130px"></el-input>
  157. </el-form-item>
  158. <el-form-item :label="'仓库库存:'">
  159. <el-input v-model="hunlianOnHand" readonly style="width: 130px"></el-input>
  160. </el-form-item>
  161. </el-form>
  162. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  163. <el-form-item :label="'混炼胶用量:'">
  164. <el-input v-model="qty1" readonly style="width: 130px"></el-input>
  165. </el-form-item>
  166. <el-form-item :label="'生胶1用量:'">
  167. <el-input v-model="qty2" readonly style="width: 130px" ></el-input>
  168. </el-form-item>
  169. <el-form-item :label="'生胶2用量:'">
  170. <el-input v-model="qty3" readonly style="width: 130px" ></el-input>
  171. </el-form-item>
  172. </el-form>
  173. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  174. <el-form-item :label="'合并备注:'">
  175. <el-input v-model="remark" style="width: 670px"></el-input>
  176. </el-form-item>
  177. </el-form>
  178. <el-table
  179. height="200"
  180. :data="modalTableData"
  181. ref="tables"
  182. border
  183. style="width: 100%">
  184. <!-- <el-table-column-->
  185. <!-- prop="orderNo"-->
  186. <!-- header-align="center"-->
  187. <!-- align="left"-->
  188. <!-- min-width="60"-->
  189. <!-- label="生产订单号">-->
  190. <!-- </el-table-column>-->
  191. <el-table-column
  192. prop="orderNoHunlian"
  193. header-align="center"
  194. align="left"
  195. min-width="60"
  196. label="周计划号">
  197. </el-table-column>
  198. <el-table-column
  199. prop="qtyRequired"
  200. header-align="center"
  201. align="right"
  202. min-width="45"
  203. label="混炼胶用量">
  204. </el-table-column>
  205. <el-table-column
  206. prop="sjph1"
  207. header-align="center"
  208. align="center"
  209. min-width="50"
  210. label="生胶牌号1">
  211. </el-table-column>
  212. <el-table-column
  213. prop="sjphQtyReq1"
  214. header-align="center"
  215. align="right"
  216. min-width="45"
  217. label="生胶1用量">
  218. </el-table-column>
  219. <el-table-column
  220. prop="sjph2"
  221. header-align="center"
  222. align="center"
  223. min-width="50"
  224. label="生胶牌号2">
  225. </el-table-column>
  226. <el-table-column
  227. prop="sjphQtyReq2"
  228. header-align="center"
  229. align="right"
  230. min-width="45"
  231. label="生胶2用量">
  232. </el-table-column>
  233. <el-table-column
  234. prop="planStartDate"
  235. header-align="center"
  236. align="center"
  237. min-width="45"
  238. label="需求日期">
  239. </el-table-column>
  240. <el-table-column
  241. prop=""
  242. header-align="center"
  243. align="center"
  244. width="50"
  245. fixed="right"
  246. label="操作">
  247. <template slot-scope="scope" class="foo_container">
  248. <a type="text" size="small" @click="splitSchedulesTable(scope.$index)">删除</a>
  249. </template>
  250. </el-table-column>
  251. </el-table>
  252. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  253. <el-button type="primary" @click="saveNewPlan">合并</el-button>
  254. <el-button type="primary" @click="sumFlag = false">取消</el-button>
  255. </el-footer>
  256. </el-dialog>
  257. </div>
  258. </template>
  259. <script>
  260. import {
  261. productionBlankingSearch,
  262. getPartNoOnHand,
  263. saveHunlianTask,
  264. } from '@/api/production.js'
  265. export default {
  266. name: 'productionBlankingSearch',
  267. data () {
  268. return {
  269. sumFlag:false,
  270. pageIndex: 1,
  271. totalPage: 1,
  272. height: 200,
  273. tableData: [],
  274. searchData:{
  275. orderNo:'',
  276. partDescSpec:'',
  277. soTaskNo:'',
  278. },
  279. dataListSelections: [],
  280. qty1:0,
  281. qty2:0,
  282. qty3:0,
  283. hunlianPartDesc:'',
  284. modalTableData:[],
  285. hunlianPartNo:'',
  286. hunlianOnHand:'',
  287. remark:'',
  288. }
  289. },
  290. mounted () {
  291. this.$nextTick(() => {
  292. this.height = window.innerHeight - 180
  293. })
  294. // this.autoRoll()
  295. },
  296. methods: {
  297. splitSchedulesTable (index) {
  298. this.modalTableData.splice(index, 1)
  299. let modalTableData=this.modalTableData;
  300. this.qty1=0;
  301. this.qty2=0;
  302. this.qty3=0;
  303. for (let i = 0; i <modalTableData.length ; i++) {
  304. if(modalTableData[i].qtyRequired!=null){
  305. let num1=this.qty1+modalTableData[i].qtyRequired;
  306. this.qty1=num1;
  307. }
  308. if(modalTableData[i].sjphQtyReq1!=null){
  309. let num2=this.qty2+modalTableData[i].sjphQtyReq1;
  310. this.qty2=num2;
  311. }
  312. if(modalTableData[i].sjphQtyReq2!=null){
  313. let num3=this.qty3+modalTableData[i].sjphQtyReq2;
  314. this.qty3=num3;
  315. }
  316. }
  317. this.qty1=Number(this.qty1).toFixed(2);
  318. this.qty2=Number(this.qty2).toFixed(2);
  319. this.qty3=Number(this.qty3).toFixed(2);
  320. },
  321. selectFlag(row,index){
  322. if(row.orderNo==null||row.erp=='已取消'||row.finishedFlag=='2'||row.finishedFlag=='3'){
  323. return false;
  324. }else {
  325. return true;
  326. }
  327. },
  328. // 多选数据
  329. selectionChangeHandle (val) {
  330. this.dataListSelections = val
  331. },
  332. tableRowClassName ({row, rowIndex}) {
  333. // if (row.finishedFlag == '2') {
  334. // return 'success-row'
  335. // }
  336. // if (row.finishedFlag == '3') {
  337. // return 'false-row'
  338. // }
  339. // if (row.finishedFlag == '4') {
  340. // return 'yellow-row'
  341. // }
  342. if (row.orderTypeDesc==='加急订单'||row.orderTypeDesc==='变更订单') {
  343. return 'yellow-row'
  344. }
  345. return ''
  346. },
  347. search () {
  348. productionBlankingSearch(this.searchData).then(({data}) => {
  349. for (let i = 0; i <data.rows.length ; i++) {
  350. if(data.rows[i].site==null||data.rows[i].site==''){
  351. data.rows[i].componentPartNo=null;
  352. }
  353. }
  354. this.tableData = data.rows;
  355. })
  356. },
  357. getSum(){
  358. this.qty1=0;
  359. this.qty2=0;
  360. this.qty3=0;
  361. if(this.dataListSelections.length==0){
  362. this.$alert('未勾选订单!', '错误', {
  363. confirmButtonText: '确定'
  364. })
  365. return false
  366. }
  367. let dataList=this.dataListSelections;
  368. let flag=false;
  369. for (let i = 0; i <dataList.length ; i++) {
  370. if(dataList[i].site!=dataList[0].site||dataList[i].componentPartNo!=dataList[0].componentPartNo){
  371. flag=true;
  372. }
  373. }
  374. if(flag){
  375. this.$alert('勾选订单不是同一个工厂或者混炼物料!', '错误', {
  376. confirmButtonText: '确定'
  377. })
  378. return false
  379. }
  380. for (let i = 0; i <dataList.length ; i++) {
  381. if(dataList[i].qtyRequired!=null){
  382. let num1=this.qty1+dataList[i].qtyRequired;
  383. this.qty1=num1;
  384. }
  385. if(dataList[i].sjphQtyReq1!=null){
  386. let num2=this.qty2+dataList[i].sjphQtyReq1;
  387. this.qty2=num2;
  388. }
  389. if(dataList[i].sjphQtyReq2!=null){
  390. let num3=this.qty3+dataList[i].sjphQtyReq2;
  391. this.qty3=num3;
  392. }
  393. }
  394. this.getPartNoOnHand(dataList[0].site,dataList[0].componentPartNo);
  395. this.hunlianPartDesc=dataList[0].compPartDescSpec;
  396. this.hunlianPartNo=dataList[0].componentPartNo;
  397. this.qty1=Number(this.qty1).toFixed(2);
  398. this.qty2=Number(this.qty2).toFixed(2);
  399. this.qty3=Number(this.qty3).toFixed(2);
  400. this.modalTableData=JSON.parse(JSON.stringify(dataList))
  401. this.sumFlag=true;
  402. },
  403. getPartNoOnHand(site,partNo){
  404. let inData={
  405. site:site,
  406. partNo:partNo,
  407. }
  408. getPartNoOnHand(inData).then(({data}) => {
  409. if (data && data.code === 0) {
  410. if(data.row!=null){
  411. this.hunlianOnHand=data.row.qtyOnHand;
  412. }else {
  413. this.hunlianOnHand=0;
  414. }
  415. } else {
  416. this.$alert(data.msg, '错误', {
  417. confirmButtonText: '确定'
  418. })
  419. }
  420. })
  421. },
  422. saveNewPlan(){
  423. if(this.modalTableData.length==0){
  424. this.$alert("列表中不存在周计划!", '错误', {
  425. confirmButtonText: '确定'
  426. })
  427. return false;
  428. }
  429. let detailList=[];
  430. for (let i = 0; i <this.modalTableData.length; i++) {
  431. let data={
  432. site:this.modalTableData[i].site,
  433. orderNo:this.modalTableData[i].orderNoHunlian,
  434. orderRef1:this.modalTableData[i].orderNo,
  435. hunlianQty:this.modalTableData[i].qtyRequired,
  436. orderDate:this.modalTableData[i].planStartDate,
  437. hunlianPartNo:this.modalTableData[i].componentPartNo,
  438. }
  439. detailList.push(data);
  440. }
  441. let inData={
  442. site:this.modalTableData[0].site,
  443. taskQty:this.qty1,
  444. partNo:this.modalTableData[0].componentPartNo,
  445. remark:this.remark,
  446. createBy:this.$store.state.user.name,
  447. detailList:detailList
  448. }
  449. this.$confirm(`是否合并这些周计划?`, '提示', {
  450. confirmButtonText: '确定',
  451. cancelButtonText: '取消',
  452. type: 'warning'
  453. }).then(() => {
  454. saveHunlianTask(inData).then(({data}) => {
  455. if (data && data.code === 0) {
  456. this.search ();
  457. this.sumFlag = false;
  458. this.$message({
  459. message: '操作成功',
  460. type: 'success',
  461. duration: 1500,
  462. onClose: () => {
  463. }
  464. })
  465. } else {
  466. this.$alert(data.msg, '错误', {
  467. confirmButtonText: '确定'
  468. })
  469. }
  470. })
  471. }).catch(() => {
  472. })
  473. },
  474. }
  475. }
  476. </script>
  477. <style >
  478. .search1 .el-table .success-row {
  479. background: #1bb61b;
  480. }
  481. .search1 .el-table .false-row {
  482. /*background: #cbcb14;*/
  483. background: #db1212;
  484. }
  485. .search1 .el-table .yellow-row{
  486. background: #ffff00;
  487. }
  488. .search1 .el-table .cell {
  489. padding: 0px;
  490. }
  491. </style>