apply-bills-list.vue 17.5 KB
<template>
    <div class="container resource close-left-menu">
        <div class="pop-banner clearfix">
            <div class="operate-btns" v-show='trmedplan.billstate=="A01"'>
                <a class="fbtn fb-save" @click='save'>保存</a>
                <a class="fbtn fb-submit" @click='submit'>提交</a>
            </div>
            <div class="operate-btns" v-show='trmedplan.billstate=="A02"'>
                <a class="fbtn fb-del" @click='recall'>撤回</a>
            </div>
            <!-- <span class="view-title"></span> -->
            <h3 class="current-module">申领单明细</h3>
        </div>
        <!--purchase-month-plan start-->
        <div class="purchase-month-plan">
            <div class="pd-form mb-20">
                <div class="group-row group-row-3">
                    <div class="form-group form-label">
                        <label for="cn1" class="label">单据单号</label>
                        <div class="control">
                            <input type="text" id="cn1" readonly v-model="trmedplan.billno" class="inp4"> </div>
                    </div>
                    <div class="form-group form-label">
                        <label for="cn2" class="label">执行状态</label>
                        <div class="control">
                            <input type="text" id="cn2" readonly :value="trmedplan.billstate | applyState" class="inp4"> </div>
                    </div>
                    <div class="form-group form-label">
                        <label for="cn3" class="label">制单人</label>
                        <div class="control">
                            <input type="text" id="cn3" readonly v-model="trmedplan.operatername" class="inp3"> </div>
                    </div>
                </div>
                <div class="group-row group-row-3">
                    <div class="form-group form-label">
                        <label for="cn4" class="label">申领日期</label>
                        <div class="control">
                            <input type="text" id="cn4" readonly :value="trmedplan.inputdate | getYMD" class="inp4"> </div>
                    </div>
                    <div class="form-group form-label">
                        <label for="cn5" class="label">申领库房</label>
                        <div class="control">
                            <input type="text" id="cn5" readonly v-model="trmedplan.depotname" class="inp4">
                        </div>
                    </div>
                    <div class="form-group form-label">
                        <label for="cn6" class="label">申领科室</label>
                        <div class="control">
                            <input type="text" id="cn6" readonly v-model="trmedplan.meddeptname" class="inp4">
                        </div>
                    </div>
                </div>
                <div class="form-group form-label">
                    <label for="cn9" class="label">备    注</label>
                    <div class="control">
                        <textarea id="cn9" rows="2" readonly v-model="trmedplan.memo" class="inp2"></textarea>
                    </div>
                </div>
            </div>
            <!-- 已保存列表处理 -->
            <table class="itable itable-thead-13px itable-td-long-text" v-if='trmedplan.billstate=="A01"'>
                <thead id="t_header">
                <tr>
                    <th class="w50">序号</th>
                    <th class="w260 t-left">
                        <div class="p-lr-10">商品</div>
                    </th>
                    <th class="w120">生产厂商</th>
                    <th class="w120">商品编码</th>
                    <th class="w120">注册证号</th>
                    <th class="w120">规格</th>
                    <th class="w70">单位</th>
                    <th class="w70">最小单位</th>
                    <th class="w100">申领数量</th>
                    <th class="w120">操作</th>
                </tr>
                </thead>
                <tbody>
                <tr v-for='item in goodList' track-by="$index">
                    <td>
                        <div>{{$index+1}}</div>
                    </td>
                    <td class="t-left pr10">{{item.goodsname}}</td>
                    <td class="t-left pr10">{{item.producer}}</td>
                    <td class="t-left pr10">{{item.goodscode}}</td>
                    <td class="t-left pr10">{{item.registkey}}</td>
                    <td>{{item.goodsspec}}</td>
                    <td>{{item.unit}}</td>
                    <td>{{item.minunit}}</td>
                    <td><input type="text" style='width:50px;' v-model="item.applyqty"></td>
                    <td>
                        <a href="javascript:;" class="btn button-red" @click='remove($index)'>删除</a>
                    </td>
                </tr>
                <tr>
                    <td>
                        <div></div>
                    </td>
                    <td class="t-left">
                        <div class="control w260 h-30 fl">
                            <input id="cn1" type="text" maxlength="50" v-rule v-model="medname" title='请输入商品名称' @click='state=true'>
                            <div class="select-template" id="searchMore" v-show='state'>
                                <div class="div-select before-none" style="width:100%;">
                                    <ul  style="z-index:3;top:0px;width:300%; margin-top: 0px;">
                                        <li class="div-select-item pl10 hover-none" style='line-height:20px;height:auto;'>
                                            <table class="itable itable-thead-13px itable-td-long-text">
                                                <thead id="t_header">
                                                </thead>
                                                <tbody>
                                                <tr v-for="item in goodsList" @click='goodsData(item)' track-by="$index">
                                                    <td class="t-left w260">
                                                        {{item.goodsname}}
                                                    </td>
                                                    <td class="t-left w120">{{item.producer}}</td>
                                                    <td class="t-left pr10 w120">{{item.goodscode}}</td>
                                                    <td class="t-left w120">{{item.registkey}}</td>

                                                    <td class="t-left w120">{{item.goodsspec}} </td>
                                                </tr>
                                                </tbody>
                                            </table>
                                        </li>
                                        <li class="div-select-item pl10" v-show="goodsList.length==0 || goodsList == undefined">
                                            <span style="width:100%;">未查询到结果!</span>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
                </tbody>
            </table>
            <table class="itable itable-thead-13px itable-td-long-text" v-else>
                <thead id="t_header">
                <tr>
                    <th class="w50">序号</th>
                    <th class="w260 t-left">
                        <div class="p-lr-10">商品</div>
                    </th>
                    <th class="w120">生产厂商</th>
                    <th class="w120">商品编码</th>
                    <th class="w120">注册证号</th>
                    <th class="w120">规格</th>
                    <th class="w70">单位</th>
                    <!-- <th class="w70">最小单位</th> -->
                    <th class="w100">申领数量</th>
                </tr>
                </thead>
                <tbody>
                <tr v-for='item in goodList' track-by="$index">
                    <td>
                        <div>{{$index+1}}</div>
                    </td>
                    <td class="t-left pr10">{{item.goodsname}}</td>
                    <td class="t-left pr10">{{item.producer}}</td>
                    <td class="t-left pr10">{{item.goodscode}}</td>
                    <td class="t-left pr10">{{item.registkey}}</td>
                    <td>{{item.goodsspec}}</td>
                    <td>{{item.unit}}</td>
                    <!-- <td>{{item.minunit}}</td> -->
                    <td>{{item.applyqty}}</td>
                </tr>
                </tbody>
            </table>
        </div>
        <div class="modal" v-if='modelFlag'>
            <div class="container resource">
                <div class="audit-detail" style="margin:200px auto;">
                    <span class="close-win" @click='close'></span>
                    <div class="fheader no-bottom" style="margin-left:100px;">
                        <h4 class="fh-book no-icon">{{storename}}申领单【{{billno}}】已提交成功!</h4>
                    </div>
                    <div class="pd-form">
                        <a href="javascript:void(0);" class="button-green btn"  style='margin:30px 0 0 200px;' @click='init'>继续制定申领单</a>
                    </div>
                </div>
            </div>
        </div>
        <!--purchase-month-plan end-->
    </div>
</template>
<script>
    module.exports={
        data: function(){
            return {
                search: {
                    pageSize: 50,
                    page: 1,
                    totalPages: 0,
                    total: 0,
                    search_EQ_guid: '',
                },
                trmedplan:{
                    trmeddeptapply:{}
                },
                guid:'',
                goodList:[],
                HospitalDeptApplyVO:{},
                modelFlag:false,
                storename:'',
                billno:''
            };
        },
        methods: {

            getData: function(){
                var self = this;
                self.$set('goodList',[]);
                self.$set('trmedplan',[]);

                Ajax.post('/billType/findApplyDetailByStaff',{'guid':self.guid})
                    .then(function (response){
                        var res=response.data.data;

                        if(response.data.errorCode == 0){
                            self.$set('trmedplan',res.trmeddeptapply);
                            self.$set('goodList',res.trmeddeptapplydetailList)
                        }else{
                            self.MessageBox({
                                title:'提示',message:data.message,type:'alert'})
                        }
                    })
            },
            remove:function(index){
                var self = this;
                self.goodList.splice(index,1);
            },
            // 查询的数据结果出来
            goodsData:function(data){
                var self = this;
                var state=false;

                if(self.goodList==0){
                    self.goodList.splice(self.goodList.length,1,data);
                }else{
                    for(var a=0;a<self.goodList.length;a++){
                        if(self.goodList[a].goodsguid==data.goodsguid){

                            self.MessageBox({ title:'提示',message:'该商品已存在',type:'alert' });
                            state=true;
                        }

                    }
                    if(!state){
                        self.goodList.splice(self.goodList.length,1,data);
                    }
                }

                self.$set('state',false)
                self.medname='';
                self.$set('goodsList',[]);
            },
            // 商品名称搜索
            mednameGet:function(){
                var self = this;
                if(self.medname==''){
                    return;
                }
                Ajax.post('/billType/findStockGoodsByStore',{'storeguid':self.trmedplan.depotguid,'goodsinfo':self.medname})
                    .then(function (response){
                        var data = response.data;
                        if(data.errorCode == 0){
                            self.$set('goodsList',response.data.data)
                        }else{
                            self.MessageBox({ title:'提示',message:data.message,type:'alert' })
                        }
                    })

            },
            // 保存
            save:function(){
                var self = this;
                var VO = self.HospitalDeptApplyVO;

                // 申领数量校验
                if(self.goodList.length<=0){
                    self.MessageBox({ title:'提示',message:'请选择需要申领的商品!',type:'alert' })
                    return;
                }else{
                    for(var a=0;a<self.goodList.length;a++){
                        if(!self.goodList[a].applyqty || self.goodList[a].applyqty<=0){
                            self.MessageBox({ title:'提示',message:'请正确填写申领数量',type:'alert' })
                        }
                    }
                }

                VO.trmeddeptapply=self.trmedplan;
                VO.trmeddeptapplydetailList=self.goodList;
                VO.trmeddeptapply.depotguid=self.trmedplan.depotguid;
                VO.trmeddeptapply.meddeptguid=self.trmedplan.meddeptguid;
                VO.trmeddeptapply.depotname=self.trmedplan.depotname;
                VO.trmeddeptapply.meddeptname=self.trmedplan.meddeptname;
                VO.trmeddeptapply.inputdate=self.trmedplan.applydate;

                Ajax.post('/billType/saveDeptApply',VO)
                    .then(function (response){
                        var res = response.data.data;
                        if(response.data.errorCode == 0){
                            self.MessageBox({ title:'提示',message:'保存成功!',type:'alert' })
                            self.$set('trmedplan',res.trmeddeptapply);
                            self.$set('goodList',res.trmeddeptapplydetailList);
                        }else{
                            self.MessageBox({ title:'提示',message:response.data.message,type:'alert' })
                        }
                    })


            },
            // 提交
            submit:function(){
                var self = this;
                var VO = self.HospitalDeptApplyVO;

                // 申领数量校验
                if(self.goodList.length<=0){
                    self.MessageBox({ title:'提示',message:'请选择需要申领的商品!',type:'alert' })
                    return;
                }else{
                    for(var a=0;a<self.goodList.length;a++){
                        if(!self.goodList[a].applyqty || self.goodList[a].applyqty<=0){
                            self.MessageBox({ title:'提示',message:'请正确填写的申领数量',type:'alert' })
                        }
                    }
                }

                VO.trmeddeptapply=self.trmedplan;
                VO.trmeddeptapplydetailList=self.goodList;
                VO.trmeddeptapply.depotguid=self.trmedplan.depotguid;
                VO.trmeddeptapply.meddeptguid=self.trmedplan.meddeptguid;
                VO.trmeddeptapply.depotname=self.trmedplan.depotname;
                VO.trmeddeptapply.meddeptname=self.trmedplan.meddeptname;
                VO.trmeddeptapply.inputdate=self.trmedplan.applydate;
                Ajax.post('/billType/commitDeptApply',VO)
                    .then(function (response){
                        var res = response.data.data;
                        if(response.data.errorCode == 0){
                            self.modelFlag=true;
                            self.billno=response.data.data.billno;
                            self.storename=response.data.data.storename;
                        }else{
                            self.MessageBox({ title:'提示',message:response.data.message,type:'alert' })
                        }
                    })
            },
            init:function(){

                this.getData();
                this.modelFlag=false;
                this.billno='';
                this.storename='';
                this.$set('goodList',[]);
                this.$router.go({ 'path': '/createApplyBills' });
            },
            close:function(){
                var self =this;

                self.modelFlag=false;
                self.$router.go({ 'path': '/applyBills' });
            },
            // 撤回
            recall:function(){
                var self = this;

                Ajax.post('/billType/revokeApplyDetail',{'guid':self.guid})
                    .then(function (response){
                        var res=response.data.data;

                        self.MessageBox({ title:'提示',message:'撤回成功!',type:'alert' })
                        self.getData();

                    })
            }
        },

        route:{
            activate : function(){
                this.guid= this.$route.params.guid;
                this.getData();

            }
        },
        watch:{
            'medname':function(){
                var self = this;
                self.mednameGet();
            },
        }
    };
</script>