<template> <div> <c-col v-if="!noRef" :span="24"> <c-form-item :label="`${argadr.title}参考号`" :prop="`${argadr.grp}.${argadr.rol}.pts.ref`" > <c-input :disabled="disabledRef" v-model="model[argadr.grp][argadr.rol].pts.ref" :placeholder="'请输入' + argadr.title + '参考号'"></c-input> </c-form-item> </c-col> <c-col :span="24"> <el-form-item :label="`${argadr.title}${!editExtLabel ? 'ID' : ''}`" :prop="`${argadr.grp}.${argadr.rol}.pts.extkey`" style="width: 100%" > <c-fullbox> <c-input v-model="model[argadr.grp][argadr.rol].pts.extkey" placeholder="请输入" maxlength="16" :disabled="disabledExtkey" @keyup.enter.native="showPtapDialog(`${argadr.grp}.${argadr.rol}.pts.extkey`)" > </c-input> <template slot="footer"> <c-button style="margin:0 10px 0 10px;padding: 0 12px;" size="small" type="primary" icon="el-icon-search" :disabled="disabledExtkey" @click="onSeainf(`${argadr.grp}.${argadr.rol}.pts.extkey`)" > </c-button> <c-button style="margin:0 0" size="small" type="primary" :disabled="disabledExtkey" @click="onAplpDet" > {{ $t('buttons.details') }} </c-button> </template> </c-fullbox> </el-form-item> </c-col> <template v-if="!onlySearch"> <c-col v-if="isAdrblk|| !haveAdrLabel" :span="24"> <el-form-item :label="isAdrblk? '地址名称' : ''" :prop="`${argadr.grp}.${argadr.rol}.pts.adrblk`" > <c-input type="textarea" :rows="4" v-model="model[argadr.grp][argadr.rol].pts.adrblk" maxlength="150" show-word-limit placeholder="请输入地址名称" :disabled="disabled||model[argadr.grp][argadr.rol].pts.extkey!=''?true:false" ></c-input> </el-form-item> </c-col> <!-- 显示名称和地址字段 --> <template v-else> <c-col :span="24"> <el-form-item :label="`${argadr.title}名称`" :prop="`${argadr.grp}.${argadr.rol}.namelc`" > <c-input type="textarea" v-model="model[argadr.grp][argadr.rol].namelc" :placeholder="'请输入' + argadr.title + '名称'" :disabled="disabled" :rows="2" maxlength="35" show-word-limit > </c-input> </el-form-item> </c-col> <c-col :span="24"> <el-form-item :label="`${argadr.title}地址`" :prop="`${argadr.grp}.${argadr.rol}.adrelc`" > <c-input type="textarea" :rows="2" v-model="model[argadr.grp][argadr.rol].adrelc" :placeholder="'请输入' + argadr.title + '地址'" :disabled="disabled" maxlength="35" show-word-limit ></c-input> </el-form-item> </c-col> </template> </template> <!-- 弹窗 --> <el-dialog width="80%" :title="dialogTitle" :visible.sync="dialogTableVisible" > <div v-if="!loading && tableList.length === 0">暂无数据</div> <div v-else> <el-table id='tableRef' max-height="300px" v-loading="loading" :data="tableList" @row-dblclick="dbClickRow" :before-close="beforeClose" > <el-table-column v-for="(item,key) in tableColumn" :key="key" :prop="item.prop" :render-header="renderheader" :label="item.label" > </el-table-column> </el-table> <el-pagination layout="prev, pager, next, jumper" :total="total" :page-size="pageSize" :current-page="currentPage" @current-change="currentChange" > </el-pagination> </div> </el-dialog> </div> </template> <script> import { columnMap } from "./ptapColumn.js"; import { getPtaTableDtat, getPtsptaByInr } from "~/service/business/common"; // 机构信息模块 export default { inject: ["root"], props: { model: { type: Object, default: undefined }, argadr: { type: Object, default: function() { return { title: "", //角色名称 rol: "", //角色 grp: "" //所属模块 }; } }, ptytyp: { //决定弹框的表头 type: String }, bchinr: { type: String }, disabled: { //地址名称是否灰显 type: Boolean, default: false }, disabledRef: { //ref是否灰显 (true:参考号处灰显) type: Boolean, default: false }, disabledExtkey: { //extkey是否灰显(true:申请人处灰显) type: Boolean, default: false }, isAdrblk: { //false:申请人参考号/申请人/申请人名称/申请人地址 true:申请人参考号/申请人/地址名称 type: Boolean, default: true }, onlySearch: { //是否只展示extkey(true:textarea不显示) type: Boolean, default: false }, noRef: { //true:参考号不显示 type: Boolean, default: false }, editExtLabel: { //自定义ID label(false:申请人id) type: Boolean, default: true }, haveAdrLabel: { //false:textarea无lable type: Boolean, default: true } }, data() { return { dialogTitle: "", // 弹框标题 dialogTableVisible: false, // 控制弹框的展示和隐藏 loading: true, total: 0, currentPage: 1, pageSizes: [5, 10, 20, 30, 40, 50, 100], pageSize: 5, tableList: [], inputValue: "", tableColumn: [] }; }, watch: {}, methods: { // 表头 头部换行,以 / 作为换行标志 renderheader(h, { column, $index }) { return h("span", {}, [ h("span", {}, column.label.split("/")[0]), h("br"), h("span", {}, column.label.split("/")[1]) ]); }, onSeainf(data) { this.$emit("onSeainf", data); }, onAplpDet() { this.$emit("onAplpDet"); }, showPtapDialog(key) { const value = this.model[this.argadr.grp][this.argadr.rol].pts.extkey; // 设置弹框标题 this.dialogTitle = `${this.argadr.title}详情`; this.dialogTableVisible = true; // 分层取值 this.getTableData(value); }, currentChange(num) { this.currentPage = num; this.getTableData(); }, // 获取弹框内的table数据 getTableData(value) { this.loading = true; this.tableList = []; this.currentPage = 1; this.pageSize = 10; this.total = 0; // 获取table的表格数据 let params = { ptytyp: this.ptytyp, extkey: value || "", bchinr: this.bchinr, pageNum: this.currentPage, pageSize: this.pageSize }; getPtaTableDtat(params, this.moduleRouter()).then(res => { if (res.respCode == SUCCESS) { if (Array.isArray(res.data.list)) { this.loading = false; //接口掉完变成false this.total = res.data.total; this.tableList = res.data.list && res.data.list.map(it => ({ ...it, // 添加新key将Party Number和Address Number换行 // 返回值有大量空格,无意义,需去掉 partyNumberAndAdressNumber: `${ it.ptaptyextkey ? it.ptaptyextkey.replace(/\s*/g, "") : "" }\n${it.ptaobjkey ? it.ptaobjkey.replace(/\s*/g, "") : ""}`, bchbranchAndBchbchname: `${ it.bchbranch ? it.bchbranch.replace(/\s*/g, "") : "" }\n${it.bchbchname ? it.bchbchname.replace(/\s*/g, "") : ""}`, adrnam1AndPtanam1: `${ it.adrnam1 ? it.adrnam1.replace(/\s*/g, "") : "" }\n${it.ptanam1 ? it.ptanam1.replace(/\s*/g, "") : ""}`, adradr1AndAdrstr1: `${ it.adradr1 ? it.adradr1.replace(/\s*/g, "") : "" }\n${it.adrstr1 ? it.adrstr1.replace(/\s*/g, "") : ""}`, adrstr2Andadrloccty: `${ it.adrstr2 ? it.adrstr2.replace(/\s*/g, "") : "" }\n${it.adrloccty ? it.adrloccty.replace(/\s*/g, "") : ""}`, adrloczipAndadrloctxt: `${ it.adrloczip ? it.adrloczip.replace(/\s*/g, "") : "" }\n${it.adrloctxt ? it.adrloctxt.replace(/\s*/g, "") : ""}` })); this.currentPage = res.data.offset; this.pageSize = res.data.limit; this.tableColumn = JSON.parse( JSON.stringify(columnMap[this.ptytyp]) ); } } }); }, async dbClickRow(row, column, event) { let params = { inr: row.ptainr }; const response = await getPtsptaByInr(params, this.moduleRouter()); if (response.respCode == SUCCESS) { // 回填数据 this.model[this.argadr.grp][this.argadr.rol].pts.extkey = row.ptainr; this.model[this.argadr.grp][this.argadr.rol].pts.adrblk = response.data.adrnam1; this.model[this.argadr.grp][this.argadr.rol].pts.rol = this.argadr.rol.toUpperCase(); if(!this.isAdrblk && this.haveAdrLabel){ this.model[this.argadr.grp][this.argadr.rol].pts.namelc = response.data.nam; // this.model[this.argadr.grp][this.argadr.rol].pts.ptainr = response.data.ptaobjinr; this.model[this.argadr.grp][this.argadr.rol].pts.adrelc = response.data.adrelc; } } this.dialogTableVisible = false; }, beforeClose(done) { this.dialogTableVisible = false; this.currentPage = 1; done(); } }, created: function() {} }; </script> <style scope> .el-dialog__body { min-height: 120%; } .el-table .cell { white-space: pre-wrap; } </style>