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

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