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

417 lines
12 KiB

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