CheckLockAndPending.vue 4.68 KB
<template>
    <div class="dialog-wrap">
      <el-dialog v-dialogDrag v-if="sptVisible" :visible.sync="sptVisible" :title="'当前业务存在以下待处理数据'" :append-to-body="true">
        <el-table :data="dealSptData" style="width:100%" size="small" :border="true">
          <el-table-column label="数据状态" prop="sta" align="left" min-width="80px">
            <template slot-scope="scope">
              <c-select-value-to-label v-model="scope.row.sta" dbCode="SPTSTA" disabled>
              </c-select-value-to-label>
            </template>
          </el-table-column>
          <el-table-column label="操作时间" prop="dattim" align="left" min-width="100px">
          </el-table-column>
          <el-table-column label="交易名称" prop="txt" align="left" min-width="100px">
          </el-table-column>
          <el-table-column label="交易码" prop="frm" align="left" min-width="100px">
          </el-table-column>
          <el-table-column label="描述" prop="objnam" align="left" min-width="200px">
          </el-table-column>
          <el-table-column label="操作人" prop="usr" align="left" min-width="80px">
          </el-table-column>
        </el-table>
        <div slot="footer">
          <el-button @click="sptVisible = false">取消</el-button>
          <el-button type="primary" @click="$goRoute && $goRoute()">继续</el-button>
        </div>
      </el-dialog>
  </div>
</template>
<script>
import Api from "~/service/Api";
import commonProcess from "~/mixin/commonProcess";
import _ from "~/utils/Lodash"

export default {
  props: {
    
  },
  components: {},
  mixins: [commonProcess], // 里面包含了Default、Check等的公共处理
  data() {
    return {
      sptVisible:false,
      dealSptData:[],
    };
  },
  methods: {
    changeDialog(isVisable) {
        this.$emit("changeBtn", isVisable);
    },

    getCodelabel(value, codenam) {
          const codeobj = this.codes[codenam].find(obj => obj.value === value)
          return codeobj ? codeobj.label : value;
      },
  
    async checkLockAndPending(obj){
      const params = {
        objInr: obj.objinr,
        objType:obj.objtyp,
        trnName: obj.trnName.toLowerCase(),
      };
      const rtnmsg = await Api.post(`/${this.moduleRouter()}/lock/isAccessible`, params);
        if (rtnmsg.respCode != SUCCESS) {
        let msg = '该笔业务数据已被锁定!'
        if (rtnmsg.data && rtnmsg.data.usrId) {
          msg = this.convertLockMsg(rtnmsg,msg)
        }
        this.changeDialog(false);
        this.$notify.error({ title: '错误', message: msg });
        return false;
      }
      let sptData = []
      if (obj.objinr) {
        let rtnmsg = await Api.post(`/${this.moduleRouter()}/lock/checkPending`,{
        objinr: obj.objinr,
        objtyp:obj.objtyp,
        transName: obj.trnName.toLowerCase(),
      })
        if (rtnmsg.data) {
          if (rtnmsg.data.penSptList && rtnmsg.data.penSptList.length) {
            //依次提示
            sptData = [...sptData, ...rtnmsg.data.penSptList]
          }
          if (rtnmsg.data.ameSptList && rtnmsg.data.ameSptList.length) {
            sptData = [...sptData, ...rtnmsg.data.ameSptList]
          }
          if (rtnmsg.data.canSptList && rtnmsg.data.canSptList.length) {
            sptData = [...sptData, ...rtnmsg.data.canSptList]
          }
        }
      }
      //去重
      let tempObj = {}
      sptData = sptData.filter(spt => {
        if (tempObj[spt.inr]) {
          return false
        } else {
          tempObj[spt.inr] = 'X'
          return true
        }
      })
      if (sptData.length) {
        this.dealSptData = sptData
        this.sptVisible = true
        this.changeDialog(false);
        //传递一个临时跳转函数
        this.$goRoute = () => {
          this.sptVisible = false
           let params = {}
            if(obj.trnName.toLowerCase() == 'jstopn'){
              params = {
                path: "/business/" + obj.trnName.toLowerCase(),
              }
            }else{
              params = {
                path: "/business/" + obj.trnName.toLowerCase(),
                 query: { inr: obj.objinr,pntinr: obj.pntinr,pnttyp:obj.pnttyp,ledinr:obj.ledinr }
              }
            }
          this.routerPush(params);
          this.$goRoute = null;
        }
        return false;
      }
    return true;
    }
  },

  
  mounted() {
  },
};
</script>
<style>
.btn-group-wrap {
  max-height: 250px;
  width: 100%;
  overflow-y: auto;
  display: block;
  align-items: flex-start;
  justify-content: flex-start;
  flex-wrap: wrap;
}


.btn-item {
  margin: 5px 5px 5px 7px ;
  float:left;
  border-radius: 5px;
  width:260px;
  height:40px;
}
.el-card__header{
  background-color:lightgray
}
</style>