| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- import repostCurd from '@/business/platform/form/utils/custom/joinCURD.js'
- export default {
- methods: {
- facilityData(page) {
- this.loadDataBySQL(page)
- },
- loadDataBySQL(page) {
- // 扫码扫到新数据,查询 并分页 回填展示
- let countSQL = `select count(*) as count from t_mjypb where jie_yang_zhuang_t = '待确认'`
- let str = (page-1)*10
- let fysql = `select ypb.*,sqb.fu_kuan_fang_shi_,sqb.fu_he_yuan_,sqb.ye_mian_zong_zhua,lian_xi_ren_ from t_mjypb ypb JOIN t_mjwtsqb sqb on ypb.wai_jian_ = sqb.id_ and ypb.jie_yang_zhuang_t = '待确认' order by yang_pin_bian_hao asc limit ${str},10`
- Promise.all([repostCurd('sql', countSQL), repostCurd('sql', fysql)]).then(([res1, res]) => {
- this.listData = []
- this.pageCount = res1.variables.data[0].count
- const { data } = res.variables || []
- if (data.length > 0) {
- data.forEach(item=>{
- item.jie_yang_shu_lian = 1
- item.jie_yang_zhuang_t = '已确认'
- this.listData.push(item)
- })
- console.log('Init Data',this.listData)
- }else{
- this.dontHaveSample();
- }
- })
- },
- dontHaveSample(){
- this.visable = false
- this.$message({
- message: '暂无样品待接收确认!',
- type: 'success'
- })
- this.closeDialog();
- },
- /* 列表失去焦点*/
- handleChange() {
- this.$refs.redarInput.focus(); //聚焦input
- },
- /* 关闭弹出列表框*/
- closeDialog() {
- this.remRedar()
- //回传关闭事件。隐藏当前组件。
- },
- handleClose() {
- this.handleChange()
- this.$confirm('确认关闭样品列表页面?').then(_ => {
- this.closeDialog();
- }).catch(_ => {});
- },
- handleLocationInfo(currentPosition, isLiuYang, positionDatas, positionIds, item, currentTime) {
- !positionIds.has(currentPosition) ? positionIds.add(currentPosition) : positionDatas.find(i => i.id_ === currentPosition).wei_zhi_zhuang_ta = '占用'
- if (positionDatas.find(i => i.id_ === currentPosition)!=undefined && positionDatas.find(i => i.id_ === currentPosition).wei_zhi_zhuang_ta === '空余') {
- let obj = {
- where: {
- id_: currentPosition
- },
- param: {
- wei_zhi_zhuang_ta: "占用",
- ru_ku_shi_jian_: currentTime,
- yang_pin_bian_hao: item.yang_pin_bian_hao,
- yang_pin_ming_che: item.yang_pin_ming_che,
- shi_fou_liu_yang_: isLiuYang
- }
- }
- let result = {
- name: 'emptyPosition',
- value: obj
- }
- return result
- } else { // 新增一条位置信息(修改它的样品编号,样品名称,入库时间,标识UUID)
- let sampleInfo = {
- yang_pin_bian_hao: item.yang_pin_bian_hao,
- yang_pin_ming_che: item.yang_pin_ming_che,
- ru_ku_shi_jian_: currentTime,
- biao_zhi_uuid_: item.biao_zhi_uuid_,
- shi_fou_liu_yang_: isLiuYang
- }
- let newPosition = this.generateNewPosition(positionDatas.find(i => i.id_ === currentPosition), sampleInfo)
- let result = {
- name: 'fullPosition',
- value: newPosition
- }
- return result
- }
- },
- // 根据旧位置数据生成新位置数据
- generateNewPosition(oldLocation, sampleInfo) {
- let temp = {
- fang_jian_lei_xin: oldLocation.fang_jian_lei_xin,
- qu_yu_: oldLocation.qu_yu_,
- huo_jia_lei_xing_: oldLocation.huo_jia_lei_xing_,
- huo_jia_hao_: oldLocation.huo_jia_hao_,
- gua_jia_hao_:oldLocation.gua_jia_hao_ || '',
- ceng_hao_: oldLocation.ceng_hao_,
- wei_zhi_bian_hao_: oldLocation.wei_zhi_bian_hao_,
- wei_zhi_zhuang_ta: oldLocation.wei_zhi_zhuang_ta,
- cun_fang_lei_xing: oldLocation.cun_fang_lei_xing,
- cun_chu_tiao_jian: oldLocation.cun_chu_tiao_jian,
- yang_pin_bian_hao: sampleInfo.yang_pin_bian_hao,
- yang_pin_ming_che: sampleInfo.yang_pin_ming_che,
- ru_ku_shi_jian_: sampleInfo.ru_ku_shi_jian_,
- shi_fou_liu_yang_: sampleInfo.shi_fou_liu_yang_,
- shou_yang_ri_qi_: sampleInfo.biao_zhi_uuid_,
- }
- return temp
- },
- submitData(type) {
- if (this.listData.length == 0) {
- this.$emit('callback', true)
- this.visable = false
- this.$message({
- message: '暂无样品待接收确认!',
- type: 'error'
- })
- this.closeDialog();
- } else {
- this.$confirm('请再次确认 [样品接收信息]').then(_ => {
- // 获取样品列表
- let ypInfoList = this.listData
- const currentTime = new Date(new Date().getTime() + 28800000).toJSON().slice(0, 16).replace('T', ' ')
- // 优化对象
- let positionArr = [] // 位置数组
- let positionIdSet = new Set() // 位置ID集合
- let ypdjbList = []
- let ypbList = []
- let ypbForeignKeyList = []
- let zsbIdList = []
- let taskList = []
- let allUUID = []
- // 1、确认样品数量,位置(数据校验)
- for(let item of ypInfoList){
- if(item.jie_yang_shu_lian > item.shou_yang_shu_lia){
- this.$message.error('操作失败,[' +item.yang_pin_ming_che + '] 接收确认数量不得大于收样数量。')
- return;
- }
- if(item.jie_yang_zhuang_t == '待确认'){
- this.$message.error('操作失败,[' + item.yang_pin_ming_che + '] 接收确认状态必须为已确认。')
- return;
- }
- if(item.shi_fou_liu_yang_ == "否" && (item.shou_yang_wei_zhi == null || item.shou_yang_wei_zhi == '') ){
- this.$message.error("收样存放位置不能为空!")
- return;
- }
- if(item.shi_fou_liu_yang_ == "是" && (item.liu_yang_wei_zhi_ == null || item.liu_yang_wei_zhi_ == '') ){
- this.$message.error("你要留样的话,存放位置不能为空哦!")
- return;
- }
- positionArr.push(item.shou_yang_wei_zhi,item.liu_yang_wei_zhi_)
- }
- // 2、整理样品位置信息
- let positionStr = positionArr.filter(i => i).join(',')
- var allPositionSql = `select * from t_mjypcfwz where find_in_set(id_,'${positionStr}')`// 搜集所有选择的位置信息
- repostCurd('sql', allPositionSql).then(res => {
- let { data } = res.variables || []
- // console.log(data)
- let handleResult = []
- this.emptyPosition = []
- this.fullPosition = []
- ypInfoList.forEach(item=>{
- allUUID.push(item.biao_zhi_uuid_)
- if(item.shou_yang_wei_zhi != undefined && item.shou_yang_wei_zhi){
- handleResult.push(this.handleLocationInfo(item.shou_yang_wei_zhi,'否',data,positionIdSet,item,currentTime))
- }
- if(item.liu_yang_wei_zhi_ != undefined && item.liu_yang_wei_zhi_){
- handleResult.push(this.handleLocationInfo(item.liu_yang_wei_zhi_,'是',data,positionIdSet,item,currentTime))
- }
- })
- let allUUIDStr = allUUID.filter(i => i).join(',')
- handleResult.forEach(item=>{
- item.name === 'emptyPosition' ? this.emptyPosition.push(item.value) : this.fullPosition.push(item.value)
- })
- console.log('sample_empty_position',this.emptyPosition)
- console.log('sample_full_position',this.fullPosition)
- if(this.emptyPosition.length > 0){
- let allParams = {
- tableName: 't_mjypcfwz',
- updList: this.emptyPosition
- }
- repostCurd('updatesByWhere',JSON.stringify(allParams))
- }
- repostCurd('add', '{"tableName":"t_mjypcfwz","paramWhere":' + JSON.stringify(this.fullPosition) + '}').then(res => {
- // 再次查询位置表,对比当前样品列表 替换初始值为占用的样品位置id
- let findPositionAgain = `select id_,shi_fou_liu_yang_,shou_yang_ri_qi_ from t_mjypcfwz where find_in_set(shou_yang_ri_qi_,'${allUUIDStr}')`
- repostCurd('sql', findPositionAgain).then(res => {
- const { data } = res.variables || []
- console.log('add_position_res',data)
- data.forEach(item=>{
- let ypIndex = ypInfoList.findIndex(i => i.biao_zhi_uuid_ === item.shou_yang_ri_qi_)
- if(ypIndex != -1){
- item.shi_fou_liu_yang_ === '否'?ypInfoList[ypIndex].shou_yang_wei_zhi = item.id_ : ypInfoList[ypIndex].liu_yang_wei_zhi_ = item.id_
- }
- })
- // 所有数据整理完毕 开始封装对象😊
- ypInfoList.forEach(item=>{
- // 3、整理样品登记表数据(更新样品登记表)
- let ypdjbObj = {
- where:{
- yang_pin_bian_hao:item.yang_pin_bian_hao
- },
- param:{
- shou_yang_wei_zhi:item.shou_yang_wei_zhi || '',
- liu_yang_wei_zhi_:item.liu_yang_wei_zhi_ || '',
- jie_yang_shu_lian:item.jie_yang_shu_lian,
- jie_yang_zhuang_t:"已确认"
- },
- }
- // 4、整理样品表数据(更新样品表)
- let ypbObj = {
- where:{
- id_:item.id_
- },
- param:{
- cun_fang_wei_zhi_:item.shou_yang_wei_zhi || '',
- liu_yang_cun_fang:item.liu_yang_wei_zhi_ || '',
- jie_yang_zhuang_t:"已确认"
- },
- }
- // 整理任务分配表数据
- let taskItem = {
- yang_pin_bian_hao: item.yang_pin_bian_hao, // 取对应的样品编号
- yang_pin_ming_che : item.yang_pin_ming_che, // 对应的样品名称
- yang_pin_dai_ci_ : item.dai_ci_ , // 对应的样品代次
- yang_pin_pi_hao_ : item.pi_hao_, // 对应的样品批号
- yang_pin_shu_lian : item.yang_pin_zong_shu, // 对应的样品数量
- bug_ri_qi_ : item.song_yang_ri_qi_, // 对应的送样日期
- cun_fang_wei_zhi_ : item.shou_yang_wei_zhi,
- wei_tuo_wai_jian_ : item.wai_jian_ , // 检测申请单id
- he_tong_wai_jian_ : item.he_tong_bian_hao_, //合同id
- song_yang_ri_qi_ : item.biao_zhi_uuid_, // 收样日期
- wei_tuo_ren_ : item.lian_xi_ren_ , // 委托人
- bao_gao_jian_ce_s : currentTime, // 检测时间
- zhan_shi_biao_wai : item.ye_mian_zong_zhua,
- zhuang_tai_ : "任务待分配" , // 状态
- yang_pin_bei_zhu_ : item.bei_zhu_, // 样品备注
- shi_fou_jia_ji_ : item.fu_kuan_fang_shi_ ,// 2023-2-24吴懿要加的
- wu_jun_shi_fou_ch : item.fu_he_yuan_ // 2023-3-6 王嘎嘎加
- }
- // ypbForeignKeyList.push('{"id_":"'+item.wai_jian_+'"}')
- // zsbIdList.push('{"shen_qing_id_":"' + item.ye_mian_zong_zhua + '"}')
- ypbForeignKeyList.push({id_:item.wai_jian_})
- zsbIdList.push({shen_qing_id_:item.ye_mian_zong_zhua})
- ypdjbList.push(ypdjbObj)
- ypbList.push(ypbObj)
- taskList.push(taskItem)
- })
- const ypbForeignKeyFilterList = [...new Set(ypbForeignKeyList)]
- const zsbIdFilterList = [...new Set(zsbIdList)] // 这步因上面存储的是对象,所以去重不了,后续优化
- console.log("样品外键List",ypbForeignKeyFilterList)
- console.log("展示表主键List",zsbIdFilterList)
- let ypdjbParams = {
- tableName: "t_mjypdjb",
- updList: ypdjbList
- }
-
- let ypbParams = {
- tableName: "t_mjypb",
- updList: ypbList
- }
-
-
- // 5、更新t_mjwtsqb -> "zhuang_tai_":"已完成" , "jian_ce_kai_shi_s"
- let up_Wtsqb_Obj = {
- tableName:"t_mjwtsqb",
- paramWhere:ypbForeignKeyFilterList,
- paramCond:{
- zhuang_tai_: "已完成",
- jian_ce_kai_shi_s:currentTime
- }
- }
- // 6、更新t_mjwtzsb -> "zhuang_tai_":"任务分配进行中" 需不需要再根据样品编号比对,因为此表同个单的id是一样的
- let up_zsb_Obj = {
- tableName:"t_mjwtzsb",
- paramWhere:zsbIdFilterList,
- paramCond:{
- zhuang_tai_: "任务分配进行中"
- }
- }
-
-
- // 7、添加 t_rwfpb 开启任务流程(遍历样品表开任务分配流程,一个样品对应多个检测时,循环开启)
- let add_task_Obj = {
- tableName: "t_rwfpb",
- paramWhere:taskList,
- defKey:"Process_04tgh24",
- formKey:"mjrwfp"
- }
- console.log("add_taskList",add_task_Obj)
- repostCurd('add', JSON.stringify(add_task_Obj)).then(res=>{
- console.log('up_委托单',up_Wtsqb_Obj)
- repostCurd('updates', JSON.stringify(up_Wtsqb_Obj)).then(res=>{
- console.log('up_展示表',up_zsb_Obj)
- repostCurd('updates', JSON.stringify(up_zsb_Obj))
- }).catch(error =>{
- console.log(error)
- this.handleAnySituation(true,"委托单数据修改失败!请勿关闭此页面,联系开发人员解决",'error')
- })
- console.log('up_ypb',ypbParams)
- repostCurd('updatesByWhere', JSON.stringify(ypbParams)).then(res=>{
- console.log('up_ypdjb',ypdjbParams)
- repostCurd('updatesByWhere', JSON.stringify(ypdjbParams)).then(re=>{
- this.handleAnySituation(true,"样品成功接收,正在开启任务分配!",'success')
- }).catch(error =>{
- console.log(error)
- this.handleAnySituation(true,"样品登记表数据添加失败!请勿关闭此页面,联系开发人员解决",'error')
- })
- })
- })
- })
- })
- })
- }).catch(_ => {});
- }
- },
- handleAnySituation(callBackBool,msg,type){
- this.$emit('callback', callBackBool)
- this.visable = false
- this.$message({
- message: msg,
- type: type
- })
- this.closeDialog();
- },
- /* 去除指定行数据 使用过滤器filter过滤指定行号数据 */
- deleteData(val) {
- this.listData = this.listData.filter((data) => {
- return data.id_ != val
- })
- },
- unique(arr) { // 可以去重对象的
- return arr.filter((item, index) => {
- return arr.indexOf(item, 0) === index;
- });
- },
- /* 关闭*/
- remRedar() {
- this.visible = false // 列表隐藏
- this.listData = [] // 清空列表数据
- this.redar = false // 扫码图标隐藏
- this.$emit('scanOff', false)
- }
- }
- }
|