<template>
	<div class="eContainer">
		<c-page title="待复核详情">
			<c-content :height="120">
				<div class="eibs-tab">
					<el-form :model="model" ref="modelForm" tokenKey="modelForm" :validate-on-rule-change="false" label-width="150px" size="small">
						<div>
							<c-content>
								<c-col :span="24" style="height: 24px">
									<el-form-item label="基本信息" class="messageLabel">
									</el-form-item>
								</c-col>
								<c-col :span="24" style="height: 10px; margin-bottom: 10px">
									<el-divider></el-divider>
								</c-col>
								<!-- ==================  基础信息  ============ -->
								<!-- ========================= Left ========================= -->
								<c-col :span="11">
									<c-col :span="24">
										<el-form-item label="业务编号">
											<c-input v-model="trn.ownref" maxlength="16" disabled></c-input>
										</el-form-item>
									</c-col>

									<c-col :span="24">
										<el-form-item label="交易代码">
											<c-input v-model="trn.inifrm" maxlength="6" disabled></c-input>
										</el-form-item>
									</c-col>

									<c-col :span="24">
										<el-form-item label="业务金额">
											<c-col :span="8">
												<c-select v-model="trn.reloricur" dbCode="curtxt" placeholder="" style="width: 98%" disabled>
												</c-select>
											</c-col>
											<c-col :span="16">
												<c-input-currency :currency="trn.reloricur" v-model="trn.reloriamt" style="width: 100%" disabled></c-input-currency>
											</c-col>
										</el-form-item>
									</c-col>

									<c-col :span="24">
										<el-form-item label="经办柜员">
											<c-input v-model="trn.usr" maxlength="8" disabled></c-input>
										</el-form-item>
									</c-col>
								</c-col>

								<!-- ========================= Right ========================= -->
								<c-col :span="11" :offset="1">
									<c-col :span="24">
										<el-form-item label="交易名称">
											<c-input v-model="trn.inifrmname" maxlength="6" disabled></c-input>
										</el-form-item>
									</c-col>

									<c-col :span="24">
										<el-form-item label="摘要信息">
											<c-input v-model="trn.objnam" maxlength="40" disabled placeholder="请输入"></c-input>
										</el-form-item>
									</c-col>

									<c-col :span="24">
										<el-form-item label="业务状态">
											<c-select v-model="trn.relflg" dbCode="relsta" style="width: 100%" disabled>
											</c-select>
										</el-form-item>
									</c-col>
									<c-col :span="24">
										<el-form-item label="创建时间">
											<c-input v-model="trn.inidattim" disabled placeholder="请输入时间戳"></c-input>
										</el-form-item>
									</c-col>
								</c-col>

								<!-- =====================document======================== -->
								<c-col :span="24" style="height: 24px">
									<el-form-item label="面函/报文" class="messageLabel">
									</el-form-item>
								</c-col>
								<c-col :span="24" style="height: 0px; margin-top: -5px">
									<el-divider></el-divider>
								</c-col>
								<c-col :span="24">
									<el-table :data="smhList.data" :columns="smhList.columns" :highlight-current-row="true" :paginationShow="false" style="width: 100%">
										<el-table-column label="序号" width="80px">
											<template slot-scope="scope">
												{{ scope.$index+1 }}
											</template>
										</el-table-column>
										<el-table-column show-overflow-tooltip v-for="(item, index) in smhList.columns" :label="item.label" :prop="item.prop" :key="index" :min-width="item.width">
										</el-table-column>
										<el-table-column label="操作" width="200px" align="left" fixed="right">
											<template slot-scope="scope">
												<c-button type="primary" size="small" @click="showMsg(scope.row)" style="margin-right: 10px">显示</c-button>
												<c-button v-if="getInrLength && tdTypeList.includes(scope.row.extkey)" type="primary" size="small" @click="sprintMsg(scope.row)" style="margin-right: 10px">打印</c-button>
											</template>
										</el-table-column>
									</el-table>
								</c-col>

								<div v-if="gleData.data && gleData.data.length>0">

									<!-- -------------------会计传票------------------- -->
									<c-col :span="24" style="height: 24px; margin-top: 20px">
										<el-form-item label="会计传票" class="messageLabel">
										</el-form-item>
									</c-col>
									<c-col :span="24" style="height: 0px; margin-top: -5px">
										<el-divider></el-divider>
									</c-col>
									<c-col :span="24">
										<el-table :data="bookData.data" :columns="bookData.columns" :highlight-current-row="true" :paginationShow="false" style="width: 100%">
											<el-table-column label="序号" width="80px">
												<template slot-scope="scope">
													{{ scope.$index+1 }}
												</template>
											</el-table-column>
											<el-table-column show-overflow-tooltip v-for="(item, index) in bookData.columns" :label="item.label" :prop="item.prop" :key="index" :min-width="item.width">
												<template slot-scope="scope">
													<span v-if="item.prop==='amt'">
														{{ moneyFormat(scope.row.amt, scope.row.cur) }}
													</span>
													<span v-else>
														{{ scope.row[item.prop] }}
													</span>
												</template>
											</el-table-column>
											<el-table-column label="操作" width="140px" fixed="right">
												<template slot-scope="scope">
													<c-button type="primary" size="small" @click="showPz(scope.row)" style="margin-right: 10px">显示</c-button>
												</template>
											</el-table-column>
										</el-table>
									</c-col>
								</div>

								<!-- -------------------盖章文件信息------------------- -->
								<div v-if="imgList.data && imgList.data.length>0">
									<c-col :span="24" style="height: 24px; margin-top: 20px">
										<el-form-item label="盖章文件信息" class="messageLabel">
										</el-form-item>
									</c-col>
									<c-col :span="24" style="height: 0px; margin-top: -5px">
										<el-divider></el-divider>
									</c-col>
									<c-col :span="24">
										<el-table :data="imgList.data" :columns="imgList.columns" :highlight-current-row="true" :paginationShow="false" style="width: 100%">
											<el-table-column label="序号" width="80px">
												<template slot-scope="scope">
													{{ scope.$index+1 }}
												</template>
											</el-table-column>
											<el-table-column show-overflow-tooltip v-for="(item, index) in imgList.columns" :label="item.label" :prop="item.prop" :key="index" :min-width="item.width">
												<template slot-scope="scope">
													<span v-if="item.prop==='filetype'">
														{{ getCodelabelFiltyp(scope.row, "filtyp")}}
													</span>
													<span v-else-if="item.prop==='sta'">
														{{ tranSta(scope.row.sta) }}
													</span>
													<span v-else>
														{{ scope.row[item.prop] }}
													</span>
												</template>
											</el-table-column>
											<el-table-column label="操作" width="140px" fixed="right">
												<template slot-scope="scope">
													<c-button type="primary" size="small" @click="showYptImg(scope.row)" style="margin-right: 10px">显示</c-button>
												</template>
											</el-table-column>
										</el-table>
									</c-col>
								</div>

								<!-- -------------------无纸化系统盖章文件信息------------------- -->
								<div v-if="imgvpbsList.data && imgvpbsList.data.length>0">
									<c-col :span="24" style="height: 24px; margin-top: 20px">
										<el-form-item label="无纸化盖章文件信息" class="messageLabel">
										</el-form-item>
									</c-col>
									<c-col :span="24" style="height: 0px; margin-top: -5px">
										<el-divider></el-divider>
									</c-col>
									<c-col :span="24">
										<el-table :data="imgvpbsList.data" :columns="imgvpbsList.columns" :paginationShow="false" style="width: 100%">
											<el-table-column label="序号" width="80px">
												<template slot-scope="scope">
													{{ scope.$index+1 }}
												</template>
											</el-table-column>
											<el-table-column show-overflow-tooltip v-for="(item, index) in imgvpbsList.columns" :label="item.label" :prop="item.prop" :key="index" :min-width="item.width">
												<template slot-scope="scope">
													<span v-if="item.prop==='filetype'">
														{{ getCodelabel(scope.row.filetype, "filtyp")}}
													</span>
													<span v-else-if="item.prop==='sta'">
														{{ tranSta(scope.row.sta) }}
													</span>
													<span v-else>
														{{ scope.row[item.prop] }}
													</span>
												</template>
											</el-table-column>
											<el-table-column label="操作" width="140px" fixed="right">
												<template slot-scope="scope">
													<c-button type="primary" size="small" @click="showWzhFile(scope.row)" style="margin-right: 10px">显示</c-button>
												</template>
											</el-table-column>
										</el-table>
									</c-col>
								</div>

							</c-content>
						</div>
					</el-form>
					<div class="btn-wrap">
						<c-button size="small" @click="exit" type="primary" style="margin-left: 10px">返回</c-button>
					</div>
				</div>
			</c-content>
		</c-page>

		<!-- 预览弹框 -->
		<message-view ref="msgView" :isHideToolbar="isViewPdfNoToolbar" @wzhPrtcntAdd="increImgvpbsCnt"></message-view>
	</div>
</template>
    
<script>
import Trnrel from "../model";
import Api from "~/service/Api";
import event from "../event";
import commonFunctions from "~/mixin/commonFunctions.js";
import MessageView from "~/components/business/docpan/views/MessageView";
import { log } from "util";
import { display } from "~/service/business/file";
import moment from "moment";

export default {
  provide() {
    return {
      root: this
    };
  },
  name: "TrnrelPrint",
  mixins: [event, commonFunctions],
  components: { MessageView },
  data() {
    return {
      model: new Trnrel().data,
      parentsVisiable: false,
      parentsInfo: {
        trninr: "",
        inifrm: "",
        sdhflg: ""
      },
      trn: {},
      gleData: {
        columns: [
          { label: "账号", prop: "act", width: "210px" },
          { label: "借/贷", prop: "dbtcdt", width: "60px" },
          { label: "币种", prop: "cur", width: "110px" },
          { label: "金额", prop: "amt", width: "210px" },
          { label: "牌价类型", prop: "status", width: "110px" },
          { label: "牌价", prop: "rat", width: "210px" },
          { label: "客户编号", prop: "cliextkey", width: "110px" },
          { label: "收入", prop: "income" }
        ],
        data: []
      },
      bookData: {
        columns: [
          { label: "传票类型", prop: "pzName", width: "140px" },
          { label: "账号", prop: "ptyAct", width: "160px" },
          { label: "科目", prop: "trmcod", width: "110px" },
          { label: "币种", prop: "cur", width: "110px" },
          { label: "金额", prop: "amt", width: "140px" },
          { label: "创建日期", prop: "createDt", width: "160px" },
          { label: "摘要", prop: "gleRemark", width: "260px" }
        ],
        data: []
      },
      imgList: {
        columns: [
          { label: "流水号", prop: "ftynum", width: "160px" },
          { label: "mftcusid", prop: "mftcusid", width: "120px" },
          { label: "文件类型", prop: "filetype", width: "180px" },
          { label: "安心签编号", prop: "axqno", width: "180px" },
          { label: "文件名称", prop: "filename", width: "210px" },
          { label: "签章文件名称", prop: "sighfilenam", width: "210px" },
          { label: "状态", prop: "sta", width: "90px" },
          { label: "描述", prop: "rstext", width: "120px" }
        ],
        data: []
      },
      imgvpbsList: {
        columns: [
          { label: "报文标识号", prop: "ftynum", width: "160px" },
          { label: "文件类型", prop: "filetype", width: "110px" },
          { label: "影像批次号", prop: "docid", width: "320px" },
          { label: "签章文件名称", prop: "sighfilenam", width: "210px" },
          { label: "状态", prop: "sta", width: "90px" },
          { label: "描述", prop: "rstext", width: "110px" },
          { label: "打印次数", prop: "prtcnt", width: "80px" }
        ],
        data: []
      },
      smhList: {
        columns: [
          { label: "角色", prop: "name", width: "110px" },
          { label: "描述", prop: "extkey", width: "210px" },
          { label: "介质", prop: "cortyp", width: "110px" },
          { label: "报文格式", prop: "docsnf", width: "110px" },
          { label: "传送方式", prop: "apf" }
        ],
        data: []
      },
      trsList: {
        columns: [
          { label: "类型", prop: "sigidx", width: "110px" },
          { label: "用户", prop: "nam", width: "160px" },
          { label: "工号", prop: "usr", width: "180px" },
          { label: "日期/时间", prop: "dattim" }
        ],
        data: []
      },
      wfeList: {
        columns: [
          { label: "服务", prop: "wfssub", width: "110px" },
          { label: "名称", prop: "srv", width: "110px" },
          { label: "交易状态", prop: "sta", width: "110px" },
          { label: "最新更新", prop: "dattim", width: "180px" },
          { label: "重试", prop: "rtycnt", width: "110px" },
          // {label: "目标时间",prop: "tardattim",width:"180px" },
          { label: "备注1", prop: "txt", width: "310px" },
          { label: "备注2", prop: "txt2" }
        ],
        data: []
      },
      dbCodes: {
        srvtxt: [],
        filtyp: [],
        gnztyp: []
      },
      flg: [],
      atptxt: "",
      relstaEN: "",
      usgtxt: "",
      activities: [],
			suppress: "",
			// 套打打印类型
			tdTypeList: ['对外付款/承兑通知书', '境内付款/承兑通知书', '境内收入申报单', '境外汇款申请书', '涉外收入申报单', '境内汇款申请书', '出口收汇核销信息申报表(境外收入)'],
      isViewPdfNoToolbar:false,
      showingMsg:{
        msgtyp:String,
        msgPriKey:String,
      },
    };
  },
  mounted() {
    this.getdbCode("srvtxt", "", "srvtxt");
    this.getdbCode("filtyp", "", "filtyp");
    this.getdbCode("gnztyp", "", "gnztyp");
  },
  created() {
    this.loadData();
	},
	computed: {
		getInrLength () {
			if (this.$route.query.inr && this.$route.query.inr.length == 8) {
				return true;
			} else {
				return false
			}
		}
	},
  methods: {
    closeDialog() {
      this.parentsVisiable = false;
    },
    async getdbCode(codeType, uil, codeNam) {
      let params = {
        codeType: codeType,
        uil: uil ? uil : "EN"
      };
      let rtnmsg = await Api.post("/manager/dic/listDicInfo", params);
      if (rtnmsg.respCode === SUCCESS) {
        let srvtxt = rtnmsg.data.map(item => ({
          value: item.codeValue,
          label: item.codeName
        }));
        this.dbCodes[codeNam] = srvtxt;
      }
    },
    async showMsg(row) {
      this.isViewPdfNoToolbar=false;
      this.showingMsg.msgtyp="";
      this.showingMsg.msgPriKey="";
      this.$refs.msgView.fileViewDispaly(-1, { smhinr: row.inr });
    },
    async sprintMsg(row) {
      this.isViewPdfNoToolbar=false;
      this.showingMsg.msgtyp="";
      this.showingMsg.msgPriKey="";
      this.$refs.msgView.fileViewDispaly(-1, { smhinr: row.inr, print: true });
    },
    async showPz(row) {
      this.isViewPdfNoToolbar=false;
      this.showingMsg.msgtyp="";
      this.showingMsg.msgPriKey="";
      this.$refs.msgView.showPz(row);
    },
    async showYptImg(row) {
      this.isViewPdfNoToolbar=false;
      this.showingMsg.msgtyp="";
      this.showingMsg.msgPriKey="";
      this.$refs.msgView.showYptImg(row);
    },
    async showWzhFile(row) {
      this.isViewPdfNoToolbar=true;
      this.showingMsg.msgtyp="imgvpbs";
      this.showingMsg.msgPriKey=row.ftynum;
      this.$refs.msgView.showWzhFile(row);
    },
    async increImgvpbsCnt(){
      if(this.showingMsg.msgtyp!="imgvpbs") {
        return;
      }
      let res = await Api.post(`/public/quesel/imgvpbsPrtCntInc`, this.showingMsg.msgPriKey);
      if (res.respCode == SUCCESS) {
        if (res.data == -1) return;
        this.imgvpbsList.data.forEach((item, index)=>{
          if (item.ftynum == this.showingMsg.msgPriKey){
            return this.imgvpbsList.data[index].prtcnt = res.data;
          }
        });
      }
    },
    async handleDisplay() {
      let inr = this.$route.query.inr;
      let inifrm = this.$route.query.inifrm;
      let inidattim = this.$route.query.inidattim;
      let businessType = "TRN";
      const loading = this.loading("快照数据加载中");
      // 历史快照
      if (
        inr.length == 8 &&
        moment(inidattim).format("YYYY") <= new Date().getFullYear()
      ) {
        this.routerPush({
          path: "/business/HistoryRecord",
          query: {
            businessInr: inr,
            businessType: businessType
          }
        });
      } else if (inr.length == 16) {
        this.routerPush({
          path: `/display/${inifrm}`,
          query: {
            businessInr: inr,
            businessType: businessType
          }
        });
      }
    },
    async loadData() {
      let params = {
        trninr: this.$route.query.inr
      };
      const loading = this.loading();
      const rtnmsg = await Api.post("/public/quesel/getDetailInfo", params);
      if (rtnmsg.respCode == SUCCESS) {
        this.trn = rtnmsg.data.trn;
        this.parentsInfo.trninr = rtnmsg.data.othtrninr;
        this.parentsInfo.inifrm = rtnmsg.data.othinifrm;
        this.parentsInfo.sdhflg = rtnmsg.data.sdhflg;
        rtnmsg.data.gleList.forEach(item => {
          item.status = "Stored";
        });
        this.gleData.data = rtnmsg.data.gleList;
        this.bookData.data = rtnmsg.data.gleBookList;
        if (rtnmsg.data.smhList) {
          rtnmsg.data.smhList.forEach(item => {
            let oldextkey = item.extkey;
            item.name = item.nam.substring(0, 3);
            item.extkey = item.nam.substring(4);
            switch (item.cortyp) {
              case "LET":
                item.apf = "Letter";
                item.docsnf = "simple letter";
                break;
              case "SWT":
                item.apf = "Letter";
                item.docsnf = "";
                break;
              case "ERX":
                item.apf = "E-Trade";
                item.docsnf = "ERX";
                break;
            }
            if (item.dir === "<") {
              item.name = "";
            }
            if (!item.extkey) {
              item.extkey = oldextkey;
            }
          });
        }
        this.smhList.data = rtnmsg.data.smhList;
        this.trsList.data = rtnmsg.data.trsList;
        this.wfeList.data = rtnmsg.data.wfeList;
        this.imgList.data = rtnmsg.data.imgList;
        this.imgvpbsList.data = rtnmsg.data.imgvpbsList;
      }
      loading.close();
    },
    getCodelabel(value, codenam) {
      const codeobj = this.dbCodes[codenam].find(obj => obj.value === value);
      return codeobj ? codeobj.label : value;
    },
    getCodelabelFiltyp(row, codenam) {
      let objtyp = this.$route.query.inifrm
        ? this.$route.query.inifrm.substring(0, 3)
        : "";
      if ("-nit-nct-git-gct-hit-net-get-".indexOf(objtyp) >= 0) {
        const codeobj = this.dbCodes[codenam].find(
          obj => obj.value === row.filetype
        );
        return codeobj ? codeobj.label : row.filetype;
      } else if ("-dit-bdt-det-bft-bpt-trt-dft-".indexOf(objtyp) >= 0) {
        codenam = "gnztyp";
        const codeobj = this.dbCodes[codenam].find(
          obj => obj.value === row.title
        );
        return codeobj ? codeobj.label : row.title;
      } else {
        //贾老师规定文件类型 为银行面函
        return "银行面函";
      }
    },
    tranSta(val) {
      let valtxt = "";
      switch (val) {
        case "F":
          valtxt = "已完成";
          break;
        case "W":
          valtxt = "待处理";
          break;
      }
      return valtxt;
    },
    formatter(val) {
      let label;
      let wfetrssta = [
        { label: "Done", value: "D" },
        { label: "发布", value: "1" },
        { label: "Cancel", value: "C" },
        { label: "Error", value: "E" },
        { label: "Open", value: "O" },
        { label: "建立", value: "6" },
        { label: "Waiting", value: "W" },
        { label: "拒绝", value: "2" },
        { label: "有效", value: "A" },
        { label: "外部确认", value: "5" },
        { label: "Skip", value: "S" },
        { label: "需求修改", value: "3" },
        { label: "创建时签名", value: "4" },
        { label: "Retry", value: "R" }
      ];
      for (let i of wfetrssta) {
        if (i.value === val) {
          label = i.label;
          break;
        }
      }
      return label;
    },
    async handleDetail(index, row) {
      const params = {
        index: row.idx
      };
      let rtnmsg = await Api.post(
        `${this.requestPrefix}/executeDocpanDetail`,
        params
      );
      if (rtnmsg.respCode == SUCCESS) {
        this.title = row.pandsc;
        (this.centerDialogVisible = true), this.updateModel(rtnmsg.data);
        this.dialog = this.docpan.doceot[row.idx];
        this.index = row.idx;
      }
    },
    exit() {
      this.$store.commit("delTagsArry", this.$route.path);
      this.$router.back();
    },
    showRelInfo() {
      this.parentsVisiable = true;
    },
    async onNodeStatus(trninr) {
      this.$refs.nodeStatus.nodeStatusVisible = true;
      let params = {
        trninr: trninr
      };
      let res = await Api.post("/public/quesel/getAllOreList", params);
      if (res.respCode == SUCCESS) {
        this.activities = res.data;
      }
    }
  }
};
</script>
<style scoped lang="less">
.messageLabel {
  /deep/ .el-form-item__label {
    text-align: left;
    font-weight: bold;
    font-size: 15px;
    color: #1561e0;
    width: auto !important;
  }
}
#business_container {
  .eContainer {
    .c-page-container-div {
      .eibs-tab {
        /deep/ .el-form {
          height: calc(100% - 64px) !important;
        }
      }
    }
  }
}
.eibs-tab {
  /deep/ .el-divider--horizontal {
    margin-top: 10px;
  }
  /deep/ .el-form-item__label {
    text-align: left;
    font-weight: bold;
  }
  /deep/ .el-col {
    .el-divider--horizontal {
      margin-top: 5px;
    }
  }
  /deep/ .el-form {
    overflow: auto !important;
    margin-bottom: 0 !important;
    .el-form-item {
      margin-bottom: 10px;
    }
  }
  .btn-wrap {
    padding: 10px 0px;
    display: flex;
    justify-content: center;
    background: #fff;
    box-shadow: var(--box-shadow);
	}
	/deep/ .is-left {
		.cell {
			text-align: left;
		}
	}
}
.fot {
  position: fixed;
  bottom: 0;
  width: 100%;
  line-height: var(--footer-height);
  color: #fff;
}
</style>