<template>
|
<div class="product">
|
<div class="borrower" v-for="(item, index) in borrowerArr" :key="index">
|
<p class="title">
|
<span></span>
|
基础合同信息
|
</p>
|
<el-form
|
:model="borrowerForm[index]"
|
:rules="rules"
|
ref="borrowerForm"
|
size="small"
|
inline
|
label-width="165px"
|
>
|
<div class="form">
|
<el-form-item
|
label="债务人"
|
v-if="borrowerArr[index].obligorname.visible"
|
prop="obligorname"
|
>
|
<el-input
|
v-model="borrowerForm[index].obligorname"
|
:disabled="!borrowerArr[index].obligorname.writeAble"
|
placeholder="请输入"
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="债权人"
|
v-if="borrowerArr[index].creditorname.visible"
|
prop="creditorname"
|
>
|
<el-input
|
v-model="borrowerForm[index].creditorname"
|
:disabled="!borrowerArr[index].creditorname.writeAble"
|
placeholder="请输入"
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="合同名称"
|
v-if="borrowerArr[index].contractname.visible"
|
prop="contractname"
|
>
|
<el-input
|
v-model="borrowerForm[index].contractname"
|
:disabled="!borrowerArr[index].contractname.writeAble"
|
placeholder="请输入"
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="合同编号"
|
v-if="borrowerArr[index].contractno.visible"
|
prop="contractno"
|
>
|
<el-input
|
v-model="borrowerForm[index].contractno"
|
:disabled="!borrowerArr[index].contractno.writeAble"
|
placeholder="请输入"
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="签署日期"
|
v-if="borrowerArr[index].signeddate.visible"
|
prop="signeddate"
|
>
|
<el-date-picker
|
v-model="borrowerForm[index].signeddate"
|
type="date"
|
format="yyyy/MM/dd"
|
value-format="yyyy/MM/dd"
|
placeholder="选择日期"
|
:disabled="!borrowerArr[index].signeddate.writeAble"
|
/>
|
</el-form-item>
|
<el-form-item
|
label="合同金额"
|
v-if="borrowerArr[index].contractamt.visible"
|
prop="contractamt"
|
>
|
<el-input
|
v-model="borrowerForm[index].contractamt"
|
:disabled="!borrowerArr[index].contractamt.writeAble"
|
placeholder="请输入"
|
></el-input>
|
</el-form-item>
|
</div>
|
<p class="title">
|
<span></span>
|
产值基本信息
|
</p>
|
<div class="form">
|
<el-form-item
|
label="产值批次总金额"
|
v-if="borrowerArr[index].valbatchamt.visible"
|
prop="valbatchamt"
|
>
|
<el-input
|
v-model="borrowerForm[index].valbatchamt"
|
:disabled="!borrowerArr[index].valbatchamt.writeAble"
|
></el-input>
|
</el-form-item>
|
</div>
|
</el-form>
|
<p class="title">
|
<span></span>
|
产值明细信息
|
</p>
|
<TableList
|
:pageInfo="pageInfo"
|
@doAction="doAction"
|
:isAutoIndex="true"
|
:isPaddingRight="false"
|
ref="tableRef"
|
:list="detailList"
|
:header="tableHeader"
|
:height="tableHeight"
|
:loading="loading"
|
></TableList>
|
</div>
|
<div class="btn">
|
<el-button
|
size="medium"
|
:loading="submitLoading"
|
type="primary"
|
@click="save()"
|
>保存</el-button
|
>
|
<el-button size="medium" plain @click="prevPage()">上一页</el-button>
|
<el-button
|
size="medium"
|
:loading="submitLoading"
|
type="primary"
|
@click="nextPage()"
|
>下一页</el-button
|
>
|
</div>
|
</div>
|
</template>
|
<script>
|
import { qryInvoiceInfoMap, addContractBaseInfo } from "@/api/product";
|
import common from "@/utils/common";
|
import TableList from "../../../../comprehensiveTransaction/components/TableList.vue";
|
import { qryInvoiceInfoDetailListHeader } from "@comprehensive/utils/tableHeaders";
|
export default {
|
data() {
|
return {
|
projectCompany: this.$store.state.product.projectCompany,
|
applyMenu: this.$store.state.product.applyMenu,
|
initialArr: [], //初始化数据
|
borrowerForm: [],
|
borrowerArr: [],
|
detailList: [],
|
rules: {},
|
tableHeader: [...qryInvoiceInfoDetailListHeader],
|
tableHeight: "560px",
|
loading: false,
|
submitLoading: false,
|
//页码
|
pageInfo: {
|
currentPage: 1,
|
pageSize: 10,
|
total: 0,
|
},
|
newWindow: null,
|
};
|
},
|
computed: {},
|
components: {
|
TableList,
|
},
|
async created() {
|
this.requestQryInvoiceInfoMap();
|
},
|
methods: {
|
//获取项目产值信息字段,值,权限
|
async requestQryInvoiceInfoMap() {
|
const resp = await qryInvoiceInfoMap({
|
projectSerialNo: this.projectCompany.serialno,
|
});
|
if (resp.result) {
|
this.getBorrowerData(resp.result);
|
}
|
},
|
|
// 处理数据,将数据重新排列
|
async getBorrowerData(result) {
|
// 初始化数据
|
this.borrowerArr = [];
|
this.borrowerForm = [];
|
this.initialArr = [];
|
//产值明细处理
|
if (result.detailList) {
|
this.detailList = result.detailList.reduce((pre, curr) => {
|
console.log("curr", curr);
|
let sortBtnDisable = false
|
if (!curr.ecmPageInfoList || curr.ecmPageInfoList.length == 0) {
|
sortBtnDisable = true
|
}
|
let sortButtons = [
|
{ label: "查看影像资料", disabled: sortBtnDisable},
|
];
|
pre.push({
|
...curr,
|
taxrate: `${curr.taxrate * 100}%`,
|
buttons: [...sortButtons],
|
});
|
return pre;
|
}, []);
|
this.pageInfo = {
|
currentPage: 1,
|
pageSize: result.detailList.length,
|
total: result.detailList.length,
|
};
|
}
|
|
this.borrowerArr.push(result);
|
this.borrowerArr.forEach(async (val, index) => {
|
// 取数组第一个作为校验规则
|
if (index == 0) {
|
for (const key in val) {
|
this.rules[key] = [];
|
// 自定义规则校验
|
switch (key) {
|
case "creditorname":
|
this.rules[key].push(common.validate("name"));
|
break;
|
}
|
// 必填校验
|
if (val[key].required) {
|
this.rules[key].push({
|
required: true,
|
message: `请输入${val[key].filedDescription}`,
|
trigger: "change",
|
});
|
}
|
}
|
}
|
|
// 将数据重新排列
|
const obj = {};
|
for (const key in val) {
|
obj[key] = val[key].value;
|
val[key].value = "";
|
}
|
this.borrowerForm.push(obj);
|
this.initialArr.push(Object.assign({}, obj));
|
});
|
},
|
async doAction(name, item, { label }) {
|
console.log("doAction", name, item, label);
|
if (label == "查看影像资料" && item.ecmPageInfoList) {
|
window.open(item.ecmPageInfoList[0].preurl);
|
}
|
},
|
// 显示图片列表
|
// showPhotoView(item) {
|
// console.log('showPhotoView',item)
|
// let { serialNo, objectType, newWindow } = this;
|
// // 根据路由模式判断路径分割方式
|
// const routeStr = location.href.includes("#") ? "#/" : "";
|
// let params = "";
|
// if (item) {
|
// const { imagelistcode = "", serialno = "", typeno = "" } = item;
|
// if (imagelistcode) {
|
// params = `typeno=${imagelistcode}`;
|
// } else {
|
// params = `typeno=${typeno}&serialno=${serialno}`;
|
// }
|
// }
|
// params = `businessno=${serialNo}&objecttype=${objectType}&${params}`;
|
// if (newWindow) {
|
// newWindow.close();
|
// }
|
// newWindow = window.open(
|
// `${location.origin}${process.env.VUE_APP_HOST_PATH}${routeStr}photoViewer?${params}`,
|
// "newwindow",
|
// "height=700px, width=800px, top=100px,left=400px, toolbar=no, menubar=no, scrollbars=yes, resizable=no,location=no, status=no"
|
// );
|
|
// this.newWindow = newWindow;
|
|
// // 若图片展示页面删除图片,则通知刷新列表图片
|
// this.getMessage();
|
// },
|
// 订阅预览页消息
|
// getMessage() {
|
// const { newWindow } = this;
|
// // 避免重复绑定
|
// this.removeMessage();
|
// this.isAddEvent = true;
|
// newWindow.addEventListener(
|
// "message",
|
// (info = {}) => {
|
// try {
|
// let { data } = info;
|
// data = data || {};
|
// // data可能为空字符串,对象,或字符串对象
|
// data = typeof data === "string" ? JSON.parse(data) : data;
|
// const { type } = data;
|
// // 如果在预览也删除图片,则刷新当前数据
|
// if (type === "deleteImg") {
|
// this.init();
|
// }
|
// } catch (e) {
|
// console.log(e);
|
// }
|
// },
|
// false
|
// );
|
// },
|
// removeMessage() {
|
// const { newWindow, getMessage } = this;
|
// if (newWindow) {
|
// newWindow.removeEventListener("message", getMessage, false);
|
// }
|
// },
|
async requestAddContractBaseInfo(callBack) {
|
this.submitLoading = true;
|
const resp = await addContractBaseInfo({
|
...this.borrowerForm[0],
|
projectserialno: this.projectCompany.serialno,
|
});
|
this.submitLoading = false;
|
if (resp.code == "00") {
|
callBack ? callBack() : "";
|
}
|
},
|
async save() {
|
if (!common.validateForm(this.$refs.borrowerForm).flag) return;
|
this.requestAddContractBaseInfo(() => {
|
this.$message.success("保存成功!");
|
});
|
},
|
prevPage() {
|
this.applyMenu.forEach((val, index) => {
|
if (val.tabname == "项目产值信息") {
|
common.workerTabInfo(
|
this.applyMenu[index - 1].tabname,
|
"CreditFlowPublic",
|
this
|
);
|
}
|
});
|
},
|
nextPage() {
|
if (!common.validateForm(this.$refs.borrowerForm).flag) return;
|
var _this = this;
|
this.requestAddContractBaseInfo(() => {
|
_this.$message.success("保存成功!");
|
_this.$parent.updateApplyTabTree("项目产值信息");
|
});
|
},
|
},
|
beforeRouteLeave(to, from, next) {
|
next();
|
},
|
};
|
</script>
|