Browse Source

11月14日 库存扣减更新

XMLWAN 3 years ago
parent
commit
0108b5fd1b

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

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

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

183
     </el-table-column>
183
     </el-table-column>
184
     <el-table-column label="生产厂家" align="center" width="200px">
184
     <el-table-column label="生产厂家" align="center" width="200px">
185
         <template slot-scope="scope">
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
                 <el-option
187
                 <el-option
189
                   v-for="(option, index) in manufactuerList"
188
                   v-for="(option, index) in manufactuerList"
190
                   :key="index"
189
                   :key="index"
198
 
197
 
199
     <el-table-column label="批准文号" align="center" width="200px">
198
     <el-table-column label="批准文号" align="center" width="200px">
200
         <template slot-scope="scope">
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
         </template>
201
         </template>
203
     </el-table-column>
202
     </el-table-column>
204
 
203
 
205
      <el-table-column label="关联采购订单号" align="center" width="200px">
204
      <el-table-column label="关联采购订单号" align="center" width="200px">
206
         <template slot-scope="scope">
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
         </template>
207
         </template>
209
     </el-table-column>
208
     </el-table-column>
210
 
209
 

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

49
     </div>
49
     </div>
50
     <div>
50
     <div>
51
         <el-button size="small" type="primary" @click="updateGoodOrder">修改</el-button>
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
     </div>
55
     </div>
182
     </el-table-column>
182
     </el-table-column>
183
     <el-table-column label="生产厂家" align="center" width="200px">
183
     <el-table-column label="生产厂家" align="center" width="200px">
184
         <template slot-scope="scope">
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
                 <el-option
186
                 <el-option
188
                   v-for="(option, index) in manufactuerList"
187
                   v-for="(option, index) in manufactuerList"
189
                   :key="index"
188
                   :key="index"
197
 
196
 
198
     <el-table-column label="批准文号" align="center" width="200px">
197
     <el-table-column label="批准文号" align="center" width="200px">
199
         <template slot-scope="scope">
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
         </template>
200
         </template>
202
     </el-table-column>
201
     </el-table-column>
203
 
202
 
267
 <script>
266
 <script>
268
 import BreadCrumb from "@/xt_pages/components/bread-crumb";
267
 import BreadCrumb from "@/xt_pages/components/bread-crumb";
269
 import {uParseTime } from '@/utils/tools'
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
 export default {
270
 export default {
272
 name: "addPurchaseOrder",
271
 name: "addPurchaseOrder",
273
 components: {
272
 components: {
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
 created(){
789
 created(){

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

48
 
48
 
49
     </div>
49
     </div>
50
     <div>
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
         <el-button size="small" type="primary" @click="updatePurchaseOrder">修改</el-button>
52
         <el-button size="small" type="primary" @click="updatePurchaseOrder">修改</el-button>
53
         <el-button size="small" type="primary" @click="toPrint">打印</el-button>
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
     </div>
57
     </div>
58
     </div>
58
     </div>
209
     </div>
209
     </div>
210
 </div>
210
 </div>
211
 
211
 
212
-  <!-- <el-dialog
213
-  title="提示"
212
+  <el-dialog
213
+  title="系统提示"
214
   :visible.sync="dialogVisible"
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
   <span slot="footer" class="dialog-footer">
222
   <span slot="footer" class="dialog-footer">
219
     <el-button @click="dialogVisible = false">取 消</el-button>
223
     <el-button @click="dialogVisible = false">取 消</el-button>
220
-    <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
221
   </span>
224
   </span>
222
-  </el-dialog> -->
225
+  </el-dialog>
223
 </div>
226
 </div>
224
 </template>
227
 </template>
225
 
228
 
226
 <script>
229
 <script>
227
 import BreadCrumb from "@/xt_pages/components/bread-crumb";
230
 import BreadCrumb from "@/xt_pages/components/bread-crumb";
228
 import {uParseTime } from '@/utils/tools'
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
 export default {
233
 export default {
231
 name: "addPurchaseOrder",
234
 name: "addPurchaseOrder",
232
 components: {
235
 components: {
284
    is_check:0,
287
    is_check:0,
285
    dialogVisible:false,
288
    dialogVisible:false,
286
    total_price:0,
289
    total_price:0,
290
+   showOne:true,
291
+   showTwo:true,
292
+   showThree:false,
293
+   orderList:[],
287
   };
294
   };
288
 },
295
 },
289
 methods:{
296
 methods:{
554
           var info = response.data.data.info
561
           var info = response.data.data.info
555
           this.disabled = true
562
           this.disabled = true
556
           this.$message.success("审核成功!")
563
           this.$message.success("审核成功!")
564
+          this.showOne = true
565
+          this.showTwo = false
566
+          this.showThree = true
557
           this.getPurchaseOrderDetail()
567
           this.getPurchaseOrderDetail()
558
         } 
568
         } 
559
      })
569
      })
575
         var orderInfo = response.data.data.orderInfo
585
         var orderInfo = response.data.data.orderInfo
576
         if(info.is_check == 2){
586
         if(info.is_check == 2){
577
            this.disabled = false
587
            this.disabled = false
588
+           this.showOne = false
589
+           this.showTwo = true
590
+           this.showThree = false
578
         }
591
         }
579
         if(info.is_check == 1){
592
         if(info.is_check == 1){
580
            this.disabled = true
593
            this.disabled = true
594
+           this.showOne = true
595
+           this.showTwo = false
596
+           this.showThree = true
581
         }
597
         }
582
         console.log("drugli323322332",this.drugList)
598
         console.log("drugli323322332",this.drugList)
583
         var drugList = response.data.data.baseList
599
         var drugList = response.data.data.baseList
627
       if(response.data.state == 1){
643
       if(response.data.state == 1){
628
         var purcaseOrder = response.data.data.purcaseOrder
644
         var purcaseOrder = response.data.data.purcaseOrder
629
         console.log("采购订单",purcaseOrder)
645
         console.log("采购订单",purcaseOrder)
646
+        
630
         var goodOrder = response.data.data.goodOrder
647
         var goodOrder = response.data.data.goodOrder
631
         console.log("采购单",goodOrder)
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
         if(goodOrder.length == 0){
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
     if(this.rate_of_concession >0){
740
     if(this.rate_of_concession >0){
672
      this.discount_amount = (this.rate_of_concession/100*this.total_price).toFixed(2)
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
 created(){
779
 created(){

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

142
                 icon="el-icon-edit-outline"
142
                 icon="el-icon-edit-outline"
143
                 size="small"
143
                 size="small"
144
                 type="primary"
144
                 type="primary"
145
-                @click="toClick(scope.row.id)"
145
+                @click="toClick(scope.row)"
146
               >编辑
146
               >编辑
147
               </el-button>
147
               </el-button>
148
               <el-button
148
               <el-button
315
        }
315
        }
316
        return count
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
   created() {
323
   created() {