<template>
	<div class="routing">
		<el-dialog v-dialogDrag width="60%" title="ReRouting" v-if="visiable" :visible.sync="visiable" :append-to-body="true" :modal-append-to-body="false" :before-close="handleClose" destroy-on-close>
			<div align="right" v-if="branch!=='1000'">
        <span slot="footer" class="dialog-footer">
          <el-button class="flex-item"  height="75px;" width="32px;" type="primary" @click="sendUp"> Snd.H.O </el-button>
        </span>
      </div>
      <el-form ref="reroutingForm" style="margin-top:20px;" label-width="120px" :model="formData" :rules="polrulesReRouting">
				<el-row>
					<c-col :span="24">
						<c-col :span="12">
							<el-form-item label="文件路径">
								<c-input v-model="formData.filepath" disabled></c-input>
							</el-form-item>
						</c-col>
						<c-col :span="10">
							<el-form-item label="文件名称">
								<c-input v-model="formData.filename" disabled></c-input>
							</el-form-item>
						</c-col>
						<c-col :span="2" style="padding-left:10px" min-width="100%" align="center" >
              <div class="flex-container">
							<el-button class="flex-item" type="primary" :disabled="!formData.filename"  @click="showReMsg">查看</el-button>
              </div>
						</c-col>
					</c-col>
				</el-row>
				<el-row>
					<c-col :span="24">
						<c-col :span="12">
							<el-form-item label="报文描述">
								<c-input v-model="formData.msgtxt" disabled></c-input>
							</el-form-item>
						</c-col>
						<c-col :span="12">
							<el-form-item label="交易状态">
								<c-input v-model="formData.status" disabled></c-input>
							</el-form-item>
						</c-col>
					</c-col>
				</el-row>
				<el-row>
					<c-col :span="24">
						<c-col :span="12">
							<el-form-item label="交易码" prop="inifrm">
                	<c-select v-model="formData.inifrm" disabled  style="width: 100%" placeholder="请选择交易码" clearable>
								<el-option v-for="item in inifrmList" :key="item.cod" :label="item.cod+'-'+item.codName" :value="item.cod">
									</el-option>
                	</c-select>
							</el-form-item>
						</c-col>
					</c-col>
				</el-row>
				<el-row>
					<c-col :span="24">

						<c-col :span="12">
							<el-form-item label="业务参考号" prop="ownref">
								<c-input v-model="formData.ownref" disabled placeholder="请输入业务参考号"></c-input>
							</el-form-item>
						</c-col>
						<c-col :span="12">
							<el-form-item label="业务描述">
								<c-input v-model="formData.bustxt" placeholder="请输入业务描述" disabled></c-input>
							</el-form-item>
						</c-col>
					</c-col>
				</el-row>
				<el-row>
					<c-col :span="24">
						<c-col :span="12">
							<el-form-item label="经办柜员" prop="usrcon">
								<c-select v-model="formData.usrcon" @blur="loadUser" style="width: 100%" placeholder="请选择经办柜员" clearable>
									<el-option v-for="(item,index) in userList"  :key="item.extkey+index" :label="item.extkey+'-'+item.nam" :value="item.extkey">
									</el-option>
								</c-select>
							</el-form-item>
						</c-col>
						<c-col :span="12">
							<el-form-item label="虚拟机构" prop="wrkbch">
								<c-select v-model="formData.wrkbch"  :disabled="roletypeName==='单证中心'?false:true"   @change="bchChange"   style="width: 100%" placeholder="请选择业务机构" clearable>
									<el-option v-for="item in bchtypList" :key="item.inr" :label="item.branch+'-'+item.bchname" :value="item.inr">
									</el-option>
								</c-select>
							</el-form-item>
						</c-col>
					</c-col>
				</el-row>
				<el-row>
					<c-col :span="24">
						<el-form-item label="备注">
							<c-input type="textarea" :rows="2" placeholder="请输入备注" v-model="formData.remark"></c-input>
						</el-form-item>
					</c-col>
				</el-row>
				<el-row>
					<c-col :span="24">
						<c-col :span="12">
							<el-form-item label="处理人">
								<c-input v-model="formData.handleUsr" disabled></c-input>
							</el-form-item>
						</c-col>
						<c-col :span="12">
							<el-form-item label="处理时间">
								<c-date-picker type="datetime" :default-value="formData.handleTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" v-model="formData.handleTime" disabled></c-date-picker>
							</el-form-item>
						</c-col>
					</c-col>
				</el-row>
			</el-form>
      <div align="center">
        <span slot="footer" class="dialog-footer">
          <el-button type="primary" @click="submit">保 存</el-button>
          <el-button type="primary" @click="handleClose">退 出</el-button>
        </span>
      </div>
		</el-dialog>
	</div>
</template>
<script>
import Api from "~/service/Api";
import moment from "moment";
export default {
  name: "reroutingDialog",
  props: {
    isShowReRouting: {
      type: Boolean,
      default: false
    },
    modelInfo: {
      type: Object,
      default: () => {}
    }
  },
  data() {
    return {
      branch:JSON.parse(window.sessionStorage.currentOrg).departmentNumber,
      roletypeName: JSON.parse(window.sessionStorage.curRole).name,
      formData: {
        filepath: "",
        filename: "",
        bustxt: "",
        msgtxt: "",
        ownref: "",
        status: "",
        inifrm: "",
        inifrmname: "",
        usrcon: "",
        wrkbch: "",
        remark: "",
        handleUsr: window.sessionStorage.userName,
        handleTime: new Date()
      },
      polrulesReRouting: {
        // ownref: [{ required: true, message: "必填", trigger: "blur" }],
        // inifrm: [{ required: true, message: "必填", trigger: "blur" }],
        usrcon: JSON.parse(window.sessionStorage.curRole).name!=="保函复核"?[]:
                [{ required: true, message: "必填", trigger: "blur" }],
        wrkbch: [{ required: true, message: "必填", trigger: "blur" }]
      },
      queinr: "",
      queinrList:[],
      multipleSelectionObj:[],
      channel:"",
      smhinr: "",
      inifrmList: [],
      bchtypList: [],
      userList: [],
      visiable: false,
      loadingFlag: false,
      tableColumn: [
        {
          label: "工号",
          prop: "extkey",
          width: "100px"
        },
        {
          label: "名称",
          prop: "nam",
          width: "200px"
        },
        {
          label: "机构",
          prop: "bchname"
        }
      ],
      tableList: []
    };
  },
  watch: {
    isShowReRouting(newVal) {
      if (newVal) {
        (this.visiable = true),
          (this.queinr = this.modelInfo ? this.modelInfo.queinr : ""),
          (this.queinrList = this.modelInfo ? this.modelInfo.queinrList : []),
          (this.multipleSelectionObj = this.modelInfo ? this.modelInfo.multipleSelectionObj : []),
          this.getBranchList();
        this.getUserList();
        this.getFrameList();
        this.init();
      }
    }
  },
  computed: {
    isDisable() {
      if (
        this.formData.status === "pending" ||
        this.formData.status === "correct"
      ) {
        return true;
      }
      return false;
    },
     isInifrmDisable(){
      	if (this.channel==='EJS'||this.channel==='YPT') {
          return true;
        }
        return false;
    },
  },
  methods: {
    bchChange(){
       this.formData.usrcon="";
       this.getUserList();
    },
     loadUser(){
        //this.getUserList();
    },
     async getFrameList() {
      this.loadingFlag = true;
      let param={};
      if(this.formData.wrkbch){
        param.usrcon=this.formData.wrkbch
      }
      let res = await Api.post("/public/quesel/getReCodeList",param);
      if (res.respCode == SUCCESS) {
        this.inifrmList = res.data.list;
      }
      this.loadingFlag = false;
    },
    // 机构列表
    async getBranchList() {
      this.loadingFlag = true;
      let res = await Api.post("/public/quesel/getActBranchList");
      if (res.respCode == SUCCESS) {
        this.bchtypList = res.data.list;
      }
      this.loadingFlag = false;
    },

    //柜员列表
    async getUserList() {
      this.loadingFlag = true;
      let param={};
      if(this.formData.wrkbch){
        param.usrcon=this.formData.wrkbch
      }
      let res = await Api.post("/public/quesel/getActUserList",param);
      if (res.respCode == SUCCESS) {
        this.userList = res.data.list;
      }
      this.loadingFlag = false;
    },

    async init() {
      this.smhinr = "";
      this.formData.usrcon = "";
      this.formData.remark = "";
      let params = {
        queinr: this.queinr
      };
      let res = await Api.post("/public/quesel/initRouting", params);
      if (res.respCode == SUCCESS) {
        this.formData.bustxt = res.data.spt.objnam;
        this.formData.status = res.data.que.status;
        this.formData.ownref = res.data.que.objref.trim();
        this.formData.inifrm = res.data.que.frm;
        this.formData.wrkbch = res.data.que.bchkeyinr;
        this.channel=res.data.que.channel;
        if (res.data.smh) {
          this.smhinr = res.data.smh.inr;
          this.formData.filepath = res.data.smh.docpth;
          this.formData.filename =
            res.data.smh.docfil + "." + res.data.smh.docfxt;
          this.formData.msgtxt = res.data.smh.extkey;
        }
      }
    },

    async submit() {
       let checkSuccess=true;
       if(!this.formData.usrcon){
         for(let i=0;i<this.multipleSelectionObj.length;i++){
            if("-pending-correct-".indexOf(this.multipleSelectionObj[i].status)>0){
               checkSuccess=false;
               break;
            }
         }
       }
      if(!checkSuccess){
          this.$alert('选中业务中包含有暂存,已退回业务时,经办柜员不能为空!', '提示', {
		          confirmButtonText: '确定',
		          callback: action => {

		          }
		     });
         return;
      }

      let confirmtxt=`您确定ReRouting此${this.queinrList.length}笔交易给${this.formData.usrcon}?`;
      if(!this.formData.usrcon){
          confirmtxt=`您确定ReRouting该笔交易?`;
      }
      this.$refs.reroutingForm.validate(valid => {
        if (valid) {
          this.$confirm(
            confirmtxt,
            "提示",
            {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            }
          ).then(async () => {
            let params = {};
            params.queinr = this.queinr;
            params.queinrList=this.queinrList;
            switch (this.formData.status) {
              case "incoming":
                params.ownref = this.formData.ownref;
                params.inifrm = this.formData.inifrm;
                params.usrcon = this.formData.usrcon;
                params.bchkeyinr = this.formData.wrkbch;
                params.remark = this.formData.remark;
                break;
              case "new":
              case "assigned":
                params.usrcon = this.formData.usrcon;
                params.bchkeyinr = this.formData.wrkbch;
                params.remark = this.formData.remark;
                params.status="assigned";
                break;
              default:
                params.usrcon = this.formData.usrcon;
                params.bchkeyinr = this.formData.wrkbch;
                params.remark = this.formData.remark;
                break;
            }

             if(this.roletypeName==="单证中心"){
                  let res = await Api.post("/public/sptrou/reRouting", params);
                  if (res.respCode == SUCCESS) {
                        this.$notify({
                          title: "成功",
                          message: "ReRouting成功",
                          type: "success"
                      });
                    this.$parent.searchUnAssign();
                    this.handleClose();
                  }
              }else{
                  let res = await Api.post("/public/sptrou/reRoutingAssignList", params);
                  if (res.respCode == SUCCESS) {
                    this.$notify({
                      title: "成功",
                      message: "Rerouting分配成功",
                      type: "success"
                    });
                    this.$parent.searchUnAssign();
                    this.handleClose();
                  }
              }
          });
        }
      });
    },

    handleClose () {
			this.visiable = false
			this.$emit('closeDialog')
		},

    async sendUp() {
          this.$confirm(
            `您确定将该笔业务ReRouting给总行?`,
            "提示",
            {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            }
          ).then(async () => {
            let params = {};
            params.queinr = this.queinr;
            params.sendUpper = true;
            params.inifrm=this.formData.inifrm;
            let res = await Api.post("/public/sptrou/reRouting", params);
            if (res.respCode == SUCCESS) {
              this.$notify({
                title: "成功",
                message: "ReRouting总行成功",
                type: "success"
              });
              this.visiable = false;
              this.$emit("refresh");
            }
          });
    },
    handleClose() {
      this.visiable = false;
      this.$emit("closeDialog");
    },
    showReMsg() {
      // this.$emit('showmsg');
      this.$parent.showMsg();
    }
  }
};
</script>
<style lang="less" scoped>
::v-deep .routing .el-dialog__body {
  height: calc(100% - 60px) !important;
  overflow: hidden !important;
}
.flex-container {
  display: flex;
}

.flex-item {
  flex-grow: 1;
}
</style>