我们解决了一个逻辑上的问题:

1.医院向供货商下单,如果供货商一时不能提供足够的数量,应该怎么办。

2.科室库向中心库提交申请,如果中心库库存不满足申请的数量,应该怎么办。

经过一番讨论,对于第一个问题,后端的负责人表示,应该有一个功能,允许供货商分批次配送,每次配送都会修改订单,将所需数量下调(具体数量等于原本需要的量-已配送的量)。而我认为不应该对订单发生修改,否则会引起商业上的问题(既然开了修改的口子,就有可能发生取消订单,转移订单等现象,进而导致损失信任)。最终我们取了一个折衷但是比较合理的方案:允许供货商分批次配送,每次配送后会显示已配送的数量和未配送的数量,直至完全完成订单。

对于第二个问题,我们一致认为,科室库不应该能够申请超出库存的数量,也就是说当科室库提交申请时会进行检查,如果超出库存则将提示“库存不足”的字样。

供货商页面显示的操作按钮代码:

<el-table-column label="操作" width="220" align="center">
          <template slot-scope="scope">
            <el-button
              size="mini"
              type="primary"
              @click="handleViewOrder(scope.$index, scope.row)"
              v-show="scope.row.orderStatus!=0"
            >查看
            </el-button>
            <el-button
              size="mini"
              type="primary"
              @click="handlePlaceOrder(scope.$index, scope.row)"
              v-show="(scope.row.orderStatus==1 || scope.row.orderStatus==2) && (roleId == 1 || roleId == 5)"
            >配货
            </el-button>
            <el-button
              size="mini"
              type="primary"
              icon="el-icon-edit"
              @click="handleViewOrder(scope.$index, scope.row)"
              v-show="scope.row.orderStatus==0">编辑
            </el-button>
            <el-button
              size="mini"
              type="danger"
              v-show="scope.row.orderStatus==0"
              @click="handleDeleteOrder(scope.$index, scope.row)">删除
            </el-button>
            <el-button
              size="mini"
              type="danger"
              v-show="(roleId == 2 || roleId == 6 || roleId == 1) && (scope.row.orderStatus==1)"
              @click="handleRevoke(scope.$index, scope.row)">撤销
            </el-button>
            <el-button
              size="mini"
              type="danger"
              v-show="(roleId == 2 || roleId == 6 || roleId == 1) && (scope.row.orderStatus==1 || scope.row.orderStatus==2|| scope.row.orderStatus==5)"
              @click="handleClose(scope.$index, scope.row)">关闭
            </el-button>
          </template>
        </el-table-column>
      </el-table>

点击“配货”按钮后执行的方法:

handlePlaceOrder(index, row) {this.$router.push({path: '/oms/preInBillAdd',query: {orderNo: row.orderNo, supplierShortName: row.supplierShortName, createBy: row.createBy}})},

然后是上述方法调用的方法,由于我们采用的代码结构,中间还有不少方法,在此我就不放了。只放一个最终配货的方法。

submitOrder(submitType) {this.$refs.form.validate(valid => {if (valid) {this.loadingbut = true;const arr = [];this.model.tableData.forEach(item => {const obj = {code: item.code,quantity: item.quantity,price: item.price,batchNo: item.batchNo,expireDate: item.expireDate,supplierId: item.supplierId,factory: item.factory,supplierShortName: item.supplierShortName}arr.push(obj);})const isRepeat = this.getNewList(arr);let flag = true;this.orderInfo.forEach(item => {isRepeat.forEach(item1 => {if (item.reagentId === parseInt(item1.code, 10) && item1.quantity > item.unsendNum) {flag = false;}})})//只有配货数量小于等于未发货数量时,才可以配货if (flag) {console.log('配货数量没问题!');let sendData = {billType: this.listQuery.billType,billStatus: this.listQuery.billStatus,preInBillMessList: arr,remark: this.listQuery.remark,billCreator: this.listQuery.billCreator,orderNo: this.$route.query.orderNo}createPreInBillItem(sendData).then(response => {if (response.data > 0) {this.loadingbut = false;this.$message({message: '提交成功',type: 'success',duration: 1000});this.$router.push("/oms/preInBill");}}).catch(error => {this.loadingbut = false;})} else {console.log('配货数量超出!');this.loadingbut = false;this.$message({message: '配货数量与订单不符!',type: 'warning'});}} else {console.log('参数验证不合法!');this.loadingbut = false;this.$message({message: '提交失败!',type: 'warning'});return false}})},

可见对配货数量也是有比较严格的限定条件。毕竟真要使用系统的话,就不能出逻辑上的问题才对。

山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(14)相关推荐

  1. 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(2)

    因为我主要负责前端的内容,因此本专栏主要记录前端页面的一些设计. 首先是前端逻辑的整理,按照一般流程,耗材的管理系统应该有两级库,即中心库和各个科室库.角色应当有管理员,中心库库管,科室库库管,供货商 ...

  2. 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(16)

    今天我们解决了一个困扰了我们很久的问题--isqr值的获取与使用. 功能的设想:通过isqr这个值来确定该耗材是否使用二维码管理,在新增耗材种类的时候加入该属性(选择是或否),并写入数据库,在显示库存 ...

  3. 山东大学项目实训小组一——基于深度学习的AI视频剪辑器“易剪”

    技术要点:图像处理 计算机视觉 深度学习 多媒体前端 一.项目研究背景: 随着短视频热潮的兴起,越来越多的人投入精力到了视频剪辑视频制作之中.然而利用现有的视频剪辑工具,剪辑一段视频是非常麻烦的,尤其 ...

  4. 基于java SpringBoot的医院门诊管理系统源码和论文

    医院门诊信息管理系统是一个基于Internet的应用系统,它是一个面对当前的医院门诊管理工作基本还处于手工和半信息自动化处理状态而应运而生的一个基于Internet的一个信息自动化的系统,整个系统从符 ...

  5. 山东大学项目实训——6月29日

    总结项目实训近两天的工作. 首先在第一天上午,参加项目实训开幕仪式,了解实训相关规定和内容.然后与李学庆老师见面,由他像我们讲解项目内容,介绍项目需求. 同时我主动提出担任项目组长. 通过与李学庆老师 ...

  6. 山东大学项目实训——地图圈系统——微信小程序(16)

    地图圈系统--微信小程序(16) 一.社区功能 二.项目代码 三.效果展示 一.社区功能 这次项目实训的社区功能是一个很大的模块,包括显示用户发布的文字及图片.用户选择的地点.发布的时间.点赞.评论等 ...

  7. <山东大学项目实训>——Unity开发植物大战僵尸(1)

    关于关卡场景中小推车的添加 割草机(Lawn Mower),又称小推车,是益智策略类塔防御战游戏<植物大战僵尸>系列中的一种道具.当僵尸走至屏幕最后一格并触碰时,会启动并碾压一整行的僵尸. ...

  8. 山东大学项目实训——简易微信小游戏(一)

    一.项目背景 微信小程序接触真实用户快,对用户反馈快速体现,是一个非常好的实践平台.同时就行业背景来看,人们对于无需安装打开即玩的休闲类小游戏的需求依然存在. 二.工作内容 开发绳套奶牛.大鱼吃小鱼. ...

  9. 山东大学项目实训(四)—— 微信小程序扫描web端二维码实现web端登录

    效果 点击登录后,显示二维码→打开"探古"(本项目)微信小程序,扫描二维码确认登录→web端登录成功 主要流程 因为本人主要负责web前端的开发,所以本文仅介绍web前端的实现方法 ...

最新文章

  1. 阿里最新论文解读:考虑时空域影响的点击率预估模型DSTN
  2. 用Python解析AndroidManifest.xml文件找MainActivity
  3. 梦境交互:做个现代灵媒,考虑一下?
  4. 师生对话:我们都曾是爱学习的孩子
  5. 文献记录(part94)--Clustering and outlier detection using isoperimetric number of trees
  6. android 判断是否是标点符号_Java 中文字符判断 中文标点符号判断
  7. 西部数码域名解析到阿里云_西部数码云主机好吗 稳定性如何
  8. Redhat 设置cntlm代理步骤
  9. numpy-np.Inf
  10. Prototype使用Form操作表单
  11. .net core2 发送电子邮件封装
  12. android ndk r10d.rar,[Android] 环境配置之Android Studio开发NDK
  13. Javascript面向对象编程与继承机制的设计思想(转)
  14. CCNA学习指南 无线技术
  15. 创造生命奇迹的幸存者
  16. RPL(9):RFC6550翻译(9)---安全机制
  17. TWaver GIS制作穹顶之下的雾霾地图
  18. 使用TreeMap实现ASCII排序
  19. java se  计算机专业技能-Java专项练习(选择题)(三)
  20. 算法总结:DFA(自动机)算法是什么,怎么用

热门文章

  1. dnf php的补丁放哪,dnf补丁放哪_dnf版本补丁放在哪里
  2. 火狐浏览器中历史记录、表签丢失后如何找回
  3. seo关键字_SEO最佳关键字研究技术
  4. linux系统一般用来干嘛
  5. 男人应该摒弃“处女情结”
  6. 5+API,AD广告组件
  7. 笔记本电脑无论插、拔耳机后都没有声音,解决方法
  8. 在QQ聊天中可以发的代码和说说代码(仅支持手机)
  9. 【干货】蚂蚁前端研发最佳实践
  10. 魔兽假设把mysql卸了_【原创】假设在有最后一次全库备份之后,你误删除了一张表,请使用备份+归档来将数据库...