Browse Source

11月14日 库存扣减更新

XMLWAN 3 years ago
parent
commit
0108b5fd1b

+ 24 - 0
src/api/supply.js View File

@@ -111,3 +111,27 @@ export function getPurchaseOrderInfo(id, ids, params) {
111 111
     params: params
112 112
   })
113 113
 }
114
+
115
+export function getGoodOrderList(id, params) {
116
+  return request({
117
+    url: '/api/supply/getgoodorderlist?id=' + id,
118
+    method: 'get',
119
+    params: params
120
+  })
121
+}
122
+
123
+export function getReturnOrder(id, params) {
124
+  return request({
125
+    url: '/api/supply/getreturnorder?id=' + id,
126
+    method: 'get',
127
+    params: params
128
+  })
129
+}
130
+
131
+export function getGoodOrderCountList(id, warehousing_id, params) {
132
+  return request({
133
+    url: '/api/supply/getgoodordercountlist?id=' + id + '&warehousing_id=' + warehousing_id,
134
+    method: 'get',
135
+    params: params
136
+  })
137
+}

+ 2 - 2
src/views/layout/Layout.vue View File

@@ -16,10 +16,10 @@
16 16
           <i class="iconfont icon-computer_fill navIcon"></i>
17 17
           <p>透析管理</p>
18 18
         </div>
19
-        <!-- <div v-if="caigouShow" :class="index == 5 ? 'navOne navActive' : 'navOne'" @click="clickActive(5,'采购管理')">
19
+        <div v-if="caigouShow" :class="index == 5 ? 'navOne navActive' : 'navOne'" @click="clickActive(5,'采购管理')">
20 20
           <i class="iconfont icon-kccx navIcon"></i>
21 21
           <p>采购管理</p>
22
-        </div> -->
22
+        </div>
23 23
         <div v-if="kucunShow" :class="index == 3 ? 'navOne navActive' : 'navOne'" @click="clickActive(3,'库房管理')">
24 24
           <i class="iconfont icon-kccx navIcon"></i>
25 25
           <p>库房管理</p>

+ 3 - 4
src/xt_pages/supply/components/addGoodOrder.vue View File

@@ -183,8 +183,7 @@
183 183
     </el-table-column>
184 184
     <el-table-column label="生产厂家" align="center" width="200px">
185 185
         <template slot-scope="scope">
186
-        <!-- <el-input v-model="scope.row.supply_manufacturer" style="width:160px" :disabled="true"></el-input> -->
187
-         <el-select size="small" v-model="scope.row.supply_manufacturer" filterable placeholder="请选择厂商" :disabled="disabled">
186
+         <el-select size="small" v-model="scope.row.supply_manufacturer" filterable placeholder="请选择厂家" :disabled="true">
188 187
                 <el-option
189 188
                   v-for="(option, index) in manufactuerList"
190 189
                   :key="index"
@@ -198,13 +197,13 @@
198 197
 
199 198
     <el-table-column label="批准文号" align="center" width="200px">
200 199
         <template slot-scope="scope">
201
-        <el-input v-model="scope.row.supply_license_number" style="width:160px" :disabled="disabled"></el-input>
200
+        <el-input v-model="scope.row.supply_license_number" style="width:160px" :disabled="true"></el-input>
202 201
         </template>
203 202
     </el-table-column>
204 203
 
205 204
      <el-table-column label="关联采购订单号" align="center" width="200px">
206 205
         <template slot-scope="scope">
207
-        <el-input v-model="scope.row.order_number" style="width:160px" :disabled="disabled"></el-input>
206
+        <el-input v-model="scope.row.order_number" style="width:160px" :disabled="true"></el-input>
208 207
         </template>
209 208
     </el-table-column>
210 209
 

+ 100 - 5
src/xt_pages/supply/components/editGoodOrder.vue View File

@@ -49,7 +49,7 @@
49 49
     </div>
50 50
     <div>
51 51
         <el-button size="small" type="primary" @click="updateGoodOrder">修改</el-button>
52
-        <el-button size="small" type="primary"  @click="checkPurchaseOrder">审核</el-button>
52
+        <el-button size="small" type="primary"  @click="checkGoodOrder">审核</el-button>
53 53
 
54 54
        
55 55
     </div>
@@ -182,8 +182,7 @@
182 182
     </el-table-column>
183 183
     <el-table-column label="生产厂家" align="center" width="200px">
184 184
         <template slot-scope="scope">
185
-        <!-- <el-input v-model="scope.row.supply_manufacturer" style="width:160px" :disabled="true"></el-input> -->
186
-         <el-select size="small" v-model="scope.row.supply_manufacturer" filterable placeholder="请选择厂商" :disabled="disabled">
185
+         <el-select size="small" v-model="scope.row.supply_manufacturer" filterable placeholder="请选择厂家" :disabled="true">
187 186
                 <el-option
188 187
                   v-for="(option, index) in manufactuerList"
189 188
                   :key="index"
@@ -197,7 +196,7 @@
197 196
 
198 197
     <el-table-column label="批准文号" align="center" width="200px">
199 198
         <template slot-scope="scope">
200
-        <el-input v-model="scope.row.supply_license_number" style="width:160px" :disabled="disabled"></el-input>
199
+        <el-input v-model="scope.row.supply_license_number" style="width:160px" :disabled="true"></el-input>
201 200
         </template>
202 201
     </el-table-column>
203 202
 
@@ -267,7 +266,7 @@
267 266
 <script>
268 267
 import BreadCrumb from "@/xt_pages/components/bread-crumb";
269 268
 import {uParseTime } from '@/utils/tools'
270
-import {getInitOrder,checkPurchaseOrder,getGoodOrderDetail,updateGoodOrder} from "@/api/supply"
269
+import {getInitOrder,checkPurchaseOrder,getGoodOrderDetail,updateGoodOrder,getGoodOrderCountList} from "@/api/supply"
271 270
 export default {
272 271
 name: "addPurchaseOrder",
273 272
 components: {
@@ -689,6 +688,102 @@ getTimes(time) {
689 688
          })
690 689
         }
691 690
     })
691
+  },
692
+  checkGoodOrder(){
693
+    var id = this.$route.query.id
694
+    var warehousing_id = this.$route.query.warehousing_id
695
+    getGoodOrderCountList(id,warehousing_id).then(response=>{
696
+      if(response.data.state == 1){
697
+        this.$message.success("审核成功!")
698
+        var purcaseOrder = response.data.data.purcaseOrder
699
+        console.log("采购订单",purcaseOrder)
700
+        
701
+        var goodOrder = response.data.data.goodOrder
702
+        console.log("采购单",goodOrder)
703
+        var drugList = response.data.data.drugList
704
+        console.log("druglist23323223",drugList)
705
+        var is_warehouse = 0
706
+        for(let i=0;i<purcaseOrder.length;i++){
707
+          for(let j=0;j<drugList.length;j++){
708
+             if(purcaseOrder[i].is_source == 1){
709
+               if(purcaseOrder[i].supply_unit == drugList[j].max_unit){
710
+                  purcaseOrder[i].count = purcaseOrder[i].count * drugList[j].min_number
711
+               }
712
+             }
713
+          }
714
+        }
715
+
716
+        for(let i=0;i<goodOrder.length;i++){
717
+          for(let j=0;j<drugList.length;j++){
718
+            if(goodOrder[i].is_source == 1){
719
+              if(goodOrder[i].supply_unit == drugList[j].max_unit){
720
+                 goodOrder[i].count = goodOrder[i].count * drugList[j].min_number
721
+              }
722
+            }
723
+          }
724
+        }
725
+        
726
+        let objInfo = {}
727
+        if (goodOrder.length >0){
728
+          goodOrder.forEach((item,index)=>{
729
+            let { project_id } = item
730
+            if(!objInfo[project_id]){
731
+              objInfo[project_id] = {
732
+                project_id,
733
+                child:[],
734
+                count:0,
735
+              }
736
+            }
737
+          })
738
+          let newArr = Object.values(objInfo);
739
+        
740
+          for(let i=0;i<goodOrder.length;i++){
741
+            for(let j=0;j<newArr.length;j++){
742
+              if(goodOrder[i].project_id == newArr[j].project_id){
743
+                newArr[j].child.push(goodOrder[i])
744
+              }
745
+            }
746
+          }
747
+          console.log("newAr2332232323",newArr)
748
+        
749
+          for(let i=0;i<newArr.length;i++){
750
+           for(let j=0;j<newArr[i].child.length;j++){
751
+             newArr[i].count += newArr[i].child[j].count
752
+           }
753
+          }
754
+
755
+          var arr = []
756
+          var total = 0
757
+          var str = ""
758
+         
759
+          //如果采购单有数据,则需要比较数量
760
+          if(newArr.length > 0){
761
+            for(let i=0;i<purcaseOrder.length;i++){
762
+              for(let j=0;j<newArr.length;j++){
763
+                if(purcaseOrder[i].project_id == newArr[j].project_id){
764
+                    //根据商品ID比较数量大小,把数量不足的商品ID储存,表示采购单的数量未满足采购订单的数据,部分入库
765
+                    if(purcaseOrder[i].count > newArr[j].count){
766
+                      arr.push(purcaseOrder[i].project_id)
767
+                    }
768
+                }
769
+              } 
770
+            }
771
+            //如果total的长度等于 采购单的长度,怎表示该采购订单已经全部生成,全部入库
772
+          
773
+            if(arr.length == 0){
774
+              this.$message.error("该订单已全部生成采购单,请知悉!")
775
+              return
776
+            }
777
+            
778
+
779
+            if(total!=goodOrder.length){
780
+              str = arr.join(",")
781
+              this.$router.push({path:"/good/order/add?id="+id+"&ids="+str})
782
+            }
783
+          }
784
+        }
785
+      }
786
+    })
692 787
   }
693 788
 },
694 789
 created(){

+ 136 - 33
src/xt_pages/supply/components/editPurchaseOrder.vue View File

@@ -48,11 +48,11 @@
48 48
 
49 49
     </div>
50 50
     <div>
51
-        <el-button size="small" type="primary" @click="toAdd">生成购货单</el-button>
51
+        <el-button size="small" type="primary" @click="toAdd" v-show="showOne">生成购货单</el-button>
52 52
         <el-button size="small" type="primary" @click="updatePurchaseOrder">修改</el-button>
53 53
         <el-button size="small" type="primary" @click="toPrint">打印</el-button>
54
-        <el-button size="small" type="primary" v-if="is_check == 2" @click="checkPurchaseOrder">审核</el-button>
55
-        <el-button size="small" type="primary" v-if="is_check == 1" @click="checkPurchaseOrder">反审核</el-button>
54
+        <el-button size="small" type="primary" v-if="is_check == 2" @click="checkPurchaseOrder" v-show="showTwo">审核</el-button>
55
+        <el-button size="small" type="primary" v-if="is_check == 1" @click="checkReturnOrder" v-show="showThree">反审核</el-button>
56 56
        
57 57
     </div>
58 58
     </div>
@@ -209,24 +209,27 @@
209 209
     </div>
210 210
 </div>
211 211
 
212
-  <!-- <el-dialog
213
-  title="提示"
212
+  <el-dialog
213
+  title="系统提示"
214 214
   :visible.sync="dialogVisible"
215
-  width="30%"
216
-  :before-close="handleClose">
217
-  <span>这是一段信息</span>
215
+  width="30%">
216
+  <span>
217
+    购货订单{{number}}已有以下关联数据,不能反审核
218
+    <div v-for="(item,index) in orderList" :key="index">
219
+        <li>购货单{{item.good_number}}</li> <a @click="toClick(item.id)">点击查看</a>
220
+    </div>
221
+  </span>
218 222
   <span slot="footer" class="dialog-footer">
219 223
     <el-button @click="dialogVisible = false">取 消</el-button>
220
-    <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
221 224
   </span>
222
-  </el-dialog> -->
225
+  </el-dialog>
223 226
 </div>
224 227
 </template>
225 228
 
226 229
 <script>
227 230
 import BreadCrumb from "@/xt_pages/components/bread-crumb";
228 231
 import {uParseTime } from '@/utils/tools'
229
-import {getInitOrder,updatePurchaseOrder,checkPurchaseOrder,getPurchaseOrderDetail,getAllOrderCountList} from "@/api/supply"
232
+import {getInitOrder,updatePurchaseOrder,checkPurchaseOrder,getPurchaseOrderDetail,getAllOrderCountList,getGoodOrderList,getReturnOrder} from "@/api/supply"
230 233
 export default {
231 234
 name: "addPurchaseOrder",
232 235
 components: {
@@ -284,6 +287,10 @@ return {
284 287
    is_check:0,
285 288
    dialogVisible:false,
286 289
    total_price:0,
290
+   showOne:true,
291
+   showTwo:true,
292
+   showThree:false,
293
+   orderList:[],
287 294
   };
288 295
 },
289 296
 methods:{
@@ -554,6 +561,9 @@ getTimes(time) {
554 561
           var info = response.data.data.info
555 562
           this.disabled = true
556 563
           this.$message.success("审核成功!")
564
+          this.showOne = true
565
+          this.showTwo = false
566
+          this.showThree = true
557 567
           this.getPurchaseOrderDetail()
558 568
         } 
559 569
      })
@@ -575,9 +585,15 @@ getTimes(time) {
575 585
         var orderInfo = response.data.data.orderInfo
576 586
         if(info.is_check == 2){
577 587
            this.disabled = false
588
+           this.showOne = false
589
+           this.showTwo = true
590
+           this.showThree = false
578 591
         }
579 592
         if(info.is_check == 1){
580 593
            this.disabled = true
594
+           this.showOne = true
595
+           this.showTwo = false
596
+           this.showThree = true
581 597
         }
582 598
         console.log("drugli323322332",this.drugList)
583 599
         var drugList = response.data.data.baseList
@@ -627,42 +643,95 @@ getTimes(time) {
627 643
       if(response.data.state == 1){
628 644
         var purcaseOrder = response.data.data.purcaseOrder
629 645
         console.log("采购订单",purcaseOrder)
646
+        
630 647
         var goodOrder = response.data.data.goodOrder
631 648
         console.log("采购单",goodOrder)
632
-        var arr = []
633
-        var total = 0
634
-        var str = ""
649
+        var drugList = response.data.data.drugList
650
+        console.log("druglist23323223",drugList)
651
+        var ids =""
635 652
         // 如果采购单没有数据,则代表改订单第一次生成采购订单数据
636 653
         if(goodOrder.length == 0){
637
-          this.$router.push({path:"/good/order/add?id="+id+"&ids="+str})
654
+          this.$router.push({path:"/good/order/add?id="+id+"&ids="+ids})
655
+        } 
656
+        for(let i=0;i<purcaseOrder.length;i++){
657
+          for(let j=0;j<drugList.length;j++){
658
+             if(purcaseOrder[i].is_source == 1){
659
+               if(purcaseOrder[i].supply_unit == drugList[j].max_unit){
660
+                  purcaseOrder[i].count = purcaseOrder[i].count * drugList[j].min_number
661
+               }
662
+             }
663
+          }
638 664
         }
639
-        //如果采购单有数据,则需要比较数量
640
-        if(goodOrder.length > 0){
641
-          for(let i=0;i<purcaseOrder.length;i++){
642
-            for(let j=0;j<goodOrder.length;j++){
643
-              if(purcaseOrder[i].project_id == goodOrder[j].project_id){
644
-                  //根据商品ID比较数量大小,把数量不足的商品ID储存,表示采购单的数量未满足采购订单的数据,可以继续生成采购单
645
-                  if(purcaseOrder[i].count > goodOrder[j].count){
646
-                     arr.push(purcaseOrder[i].project_id)
647
-                  }
648 665
 
666
+        for(let i=0;i<goodOrder.length;i++){
667
+          for(let j=0;j<drugList.length;j++){
668
+            if(goodOrder[i].is_source == 1){
669
+              if(goodOrder[i].supply_unit == drugList[j].max_unit){
670
+                 goodOrder[i].count = goodOrder[i].count * drugList[j].min_number
649 671
               }
650 672
             }
651 673
           }
652
-          //如果total的长度等于 采购单的长度,怎表示该采购订单已经全部生成
653
-         
654
-          if(arr.length == 0){
655
-            this.$message.error("该订单已全部生成采购单,请知悉!")
674
+        }
675
+        
676
+        let objInfo = {}
677
+        if (goodOrder.length >0){
678
+          goodOrder.forEach((item,index)=>{
679
+            let { project_id } = item
680
+            if(!objInfo[project_id]){
681
+              objInfo[project_id] = {
682
+                project_id,
683
+                child:[],
684
+                count:0,
685
+              }
686
+            }
687
+          })
688
+          let newArr = Object.values(objInfo);
689
+        
690
+          for(let i=0;i<goodOrder.length;i++){
691
+            for(let j=0;j<newArr.length;j++){
692
+              if(goodOrder[i].project_id == newArr[j].project_id){
693
+                newArr[j].child.push(goodOrder[i])
694
+              }
695
+            }
656 696
           }
697
+          console.log("newAr2332232323",newArr)
698
+        
699
+          for(let i=0;i<newArr.length;i++){
700
+           for(let j=0;j<newArr[i].child.length;j++){
701
+             newArr[i].count += newArr[i].child[j].count
702
+           }
703
+          }
704
+
705
+          var arr = []
706
+          var total = 0
707
+          var str = ""
708
+         
709
+          //如果采购单有数据,则需要比较数量
710
+          if(newArr.length > 0){
711
+            for(let i=0;i<purcaseOrder.length;i++){
712
+              for(let j=0;j<newArr.length;j++){
713
+                if(purcaseOrder[i].project_id == newArr[j].project_id){
714
+                    //根据商品ID比较数量大小,把数量不足的商品ID储存,表示采购单的数量未满足采购订单的数据,可以继续生成采购单
715
+                    if(purcaseOrder[i].count > newArr[j].count){
716
+                      arr.push(purcaseOrder[i].project_id)
717
+                    }
718
+                }
719
+              }
720
+            }
721
+            //如果total的长度等于 采购单的长度,怎表示该采购订单已经全部生成
657 722
           
723
+            if(arr.length == 0){
724
+              this.$message.error("该订单已全部生成采购单,请知悉!")
725
+              return
726
+            }
727
+            
658 728
 
659
-          if(total!=goodOrder.length){
660
-             str = arr.join(",")
661
-            this.$router.push({path:"/good/order/add?id="+id+"&ids="+str})
729
+            if(total!=goodOrder.length){
730
+              str = arr.join(",")
731
+              this.$router.push({path:"/good/order/add?id="+id+"&ids="+str})
732
+            }
662 733
           }
663 734
         }
664
-       
665
-       
666 735
       }
667 736
     })
668 737
     
@@ -671,6 +740,40 @@ getTimes(time) {
671 740
     if(this.rate_of_concession >0){
672 741
      this.discount_amount = (this.rate_of_concession/100*this.total_price).toFixed(2)
673 742
     } 
743
+  },
744
+  checkReturnOrder(){
745
+    var id = this.$route.query.id
746
+    //获取购货订单号
747
+    getGoodOrderList(id).then(response=>{
748
+      if(response.data.state == 1){
749
+        var list = response.data.data.list
750
+        this.orderList = list
751
+        //如果长度大于0,有购货单不能反审核
752
+        if(list.length >0){
753
+          this.dialogVisible = true
754
+        }
755
+        if(list.length == 0){
756
+          this.getReturnOrder()
757
+          this.showOne = false
758
+          this.showTwo = true
759
+          this.showThree = false
760
+        }
761
+      }
762
+    })
763
+  },
764
+  getReturnOrder(){
765
+     var id = this.$route.query.id
766
+    getReturnOrder(id).then(response=>{
767
+      if(response.data.state == 1){
768
+        var msg = response.data.data.msg
769
+        this.disabled = false
770
+        this.$message.success("反审核成功!")
771
+        this.getPurchaseOrderDetail()
772
+      }
773
+    })
774
+  },
775
+  toClick(id){
776
+    this.$router.push("/good/order/edit?id="+id)
674 777
   }
675 778
 },
676 779
 created(){

+ 4 - 3
src/xt_pages/supply/goodOrderQuery.vue View File

@@ -142,7 +142,7 @@
142 142
                 icon="el-icon-edit-outline"
143 143
                 size="small"
144 144
                 type="primary"
145
-                @click="toClick(scope.row.id)"
145
+                @click="toClick(scope.row)"
146 146
               >编辑
147 147
               </el-button>
148 148
               <el-button
@@ -315,8 +315,9 @@ export default {
315 315
        }
316 316
        return count
317 317
      },
318
-     toClick(id){
319
-       this.$router.push({path:"/good/order/edit?id="+id})
318
+     toClick(val){
319
+       console.log("val3232232323",val)
320
+       this.$router.push({path:"/good/order/edit?id="+val.id+"&warehousing_id="+val.warehousing_id})
320 321
      }
321 322
   },
322 323
   created() {