<template> <div class="eibs-tab"> <el-table :data="model.recgrp.tgc" @selection-change="handleSelectionChange" ref="multipleTable" style="width: 100%"> <el-table-column :selectable="rowSelectable" type="selection" v-if="showSelection" width="55"></el-table-column> <el-table-column label="明细主键" prop="seqno" width="100"></el-table-column> <el-table-column :formatter="(row) => getCodeLabel(row.listopertype, 'opertype')" label="明细操作类型" prop="listopertype" width="150"></el-table-column> <el-table-column label="交易日" prop="tradedate" width="150"></el-table-column> <el-table-column label="远端买入(名义本金)币种" prop="disbuycurrency" width="150"></el-table-column> <el-table-column label="远端买入(名义本金)金额" prop="disbyamt" width="150"></el-table-column> <el-table-column label="远端卖出(名义本金)币种" prop="dissellcurrency" width="150"></el-table-column> <el-table-column label="远端卖出(名义本金)金额" prop="dissellamt" width="150"></el-table-column> <el-table-column label="近端交割日" prop="neardate" width="150"></el-table-column> <el-table-column label="近端交易价格" prop="nearprice" width="150"></el-table-column> <el-table-column label="远端交割日" prop="distaldate" width="150"></el-table-column> <el-table-column label="远端交易价格" prop="disprice" width="150"></el-table-column> <el-table-column :formatter="(row) => getCodeLabel(row.sta, 'rmbsta')" fixed="right" label="状态" prop="sta" v-if="showSta" width="100"></el-table-column> <el-table-column fixed="right" label="操作" v-if="showButton" width="150"> <template slot-scope="scope"> <el-button :disabled="isButtonDisabled(scope.row)" @click="handleEdit(scope.$index,scope.row)" size="mini">编辑 </el-button> <el-button :disabled="isButtonDisabled(scope.row)" @click="handleDelete(scope.$index)" size="mini"> 删除 </el-button> </template> </el-table-column> </el-table> <div style="margin-top: 20px" v-show="showButton"> <el-button :disabled="!isFlgChecked" @click="addRow" type="primary">添 加</el-button> <!-- <el-button @click="deleteSelectedRows" type="primary">删 除</el-button>--> </div> <el-dialog :before-close="cancel" :visible.sync="showDialog" center title="明细信息" v-dialogDrag v-if="showDialog"> <el-form :model="formData" :rules="rules" :validate-on-rule-change="false" label-width="150px" ref="formRef" style="width: 100%"> <!-- 第1行 --> <!-- <c-row> <c-col :span="8"> <el-form-item label="申报号码"> <c-input maxlength="24" placeholder="请输入申报号码"></c-input> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="明细操作类型" prop="recp.tgcpp.listopertype"> <c-input maxlength="24" placeholder="请输入明细操作类型" v-model="model.recp.tgcpp.listopertype"></c-input> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="序号"> <c-input placeholder="请输入序号"></c-input> </el-form-item> </c-col> </c-row> --> <!-- 第2行 --> <c-row> <c-col :span="8"> <el-form-item label="交易日" prop="tradedate"> <c-date-picker placeholder="请输入交易日" type="date" v-model="formData.tradedate"></c-date-picker> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="远端买入(名义本金)币种" prop="disbuycurrency"> <c-select-cur dbCode="curtxt" placeholder="请输入远端买入(名义本金)币种" v-model="formData.disbuycurrency"></c-select-cur> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="远端买入(名义本金)金额" prop="disbyamt"> <c-input-currency placeholder="请输入远端买入(名义本金)金额" v-model="formData.disbyamt"></c-input-currency> </el-form-item> </c-col> </c-row> <!-- 第3行 --> <c-row> <c-col :span="8"> <el-form-item label="远端卖出(名义本金)币种" prop="dissellcurrency"> <c-select-cur dbCode="curtxt" placeholder="请输入远端卖出(名义本金)币种" v-model="formData.dissellcurrency"></c-select-cur> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="远端卖出(名义本金)金额" prop="dissellamt"> <c-input-currency placeholder="请输入远端卖出(名义本金)金额" v-model="formData.dissellamt"></c-input-currency> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="近端交割日" prop="neardate"> <c-date-picker placeholder="请输入近端交割日" type="date" v-model="formData.neardate"></c-date-picker> </el-form-item> </c-col> </c-row> <!-- 第4行 --> <c-row> <c-col :span="8"> <el-form-item label="近端交易价格" prop="nearprice"> <c-input-currency :precision=8 maxlength="16" placeholder="请输入近端交易价格" v-model="formData.nearprice"></c-input-currency> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="远端交割日" prop="distaldate"> <c-date-picker placeholder="请输入远端交割日" type="date" v-model="formData.distaldate"></c-date-picker> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="远端交易价格" prop="disprice"> <c-input-currency :precision=8 maxlength="16" placeholder="请输入远端交易价格" v-model="formData.disprice"></c-input-currency> </el-form-item> </c-col> </c-row> <!-- 第5行 --> <!-- <c-row> <c-col :span="8"> <el-form-item label="预留字段11"> <c-input placeholder="请输入预留字段11"></c-input> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="预留字段12"> <c-input placeholder="请输入预留字段12"></c-input> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="预留字段13"> <c-input placeholder="请输入预留字段13"></c-input> </el-form-item> </c-col> </c-row> --> <!-- 第6行 --> <!-- <c-row> <c-col :span="8"> <el-form-item label="预留字段14"> <c-input placeholder="请输入预留字段14"></c-input> </el-form-item> </c-col> <c-col :span="8"> <el-form-item label="处理状态"> <c-select placeholder="请输入处理状态"></c-select> </el-form-item> </c-col> </c-row> --> </el-form> <span class="dialog-footer" slot="footer"> <el-button @click="saveRow" type="primary">保 存</el-button> <el-button @click="cancel" type="primary">取 消</el-button> </span> </el-dialog> </div> </template> <script> import event from "../event"; import moment from 'moment'; import commonMixin from "../../../../../../mixin/commonMixin"; import {checkRuleOfTGC} from "RcpmisRules" export default { props: ["model", "codes"], mixins: [commonMixin, event], data() { return { formData: { tradedate: '', // 交易日 .recp.tgcpp.tradedate disbuycurrency: '', // 远端买入(名义本金)币种 .recp.tgcpp.disbuycurrency disbuyamt: '', // 远端买入(名义本金)金额 .recp.tgcpp.disbuyamt dissellcurrency: '', // 远端卖出(名义本金)币种 .recp.tgcpp.dissellcurrency dissellamt: '', // 远端卖出(名义本金)金额 .recp.tgcpp.dissellamt neardate: '', // 近端交割日 .recp.tgcpp.neardate distaldate: '', // 远端交割日 .recp.tgcpp.distaldate nearprice: '', // 近端交易价格 .recp.tgcpp.nearprice disprice: '', // 远端交易价格 .recp.tgcpp.disprice }, }; }, computed: { rules() { let checks = checkRuleOfTGC().call({module:"TGCAME"}).call(this,this,moment) return checks // return { // disbuyamt: [ // {required: true, message: '必输项'} // ], // disbyamt: [ // {required: true, message: '必输项'} // ], // disbuycurrency: [ // {required: true, message: '必输项'}, // { // validator: (rule, value, callback) => { // if (this.formData.disbuycurrency == "CNY" && this.formData.dissellcurrency == "CNY") { // callback(new Error("买入币种和卖出币种不能同为人民币")); // } else if (this.formData.disbuycurrency == this.formData.dissellcurrency) { // callback(new Error("买入币种和卖出币种不能相同")); // } // callback(); // }, trigger: 'blur' // } // ], // disprice: [ // {required: true, message: '必输项'} // ], // dissellamt: [ // {required: true, message: '必输项'} // ], // neardate: [ // {required: true, message: '必输项'} // ], // dissellcurrency: [ // {required: true, message: '必输项'}, // { // validator: (rule, value, callback) => { // if (this.formData.dissellcurrency == "CNY" && this.formData.dissellcurrency == "CNY") { // callback(new Error("买入币种和卖出币种不能同为人民币")); // } else if (this.formData.disbuycurrency == this.formData.dissellcurrency) { // callback(new Error("买入币种和卖出币种不能相同")); // } // callback(); // }, trigger: 'blur' // } // ], // distaldate: [ // {required: true, message: '必输项'}, // { // validator: (rule, value, callback) => { // let rq = new Date(value); // let re = new Date(this.formData.neardate); // if (moment(rq).diff(moment(re), 'days') < 0) { // return callback(new Error("远端交易日需大于近端交易日!")) // } else { // callback(); // } // }, trigger: 'blur' // } // ], // nearprice: [ // {required: true, message: '必输项'} // ], // tradedate: [ // {required: true, message: '必输项'} // ] // } }, }, methods: { handleSelectionChange(selection) { this.selectedRows = selection; // 当前行被选中时,备份原始值并更新值 selection.forEach(row => { if (row.acp !== 'X') { row.backupValue = row.listopertype; if (row.backupValue === '2' || row.backupValue === '3' || row.sta === '8') { row.listopertype = '3'; } else { if (row.sta === 'D' || row.sta === 'G') { row.listopertype = row.backupValue; } else { row.listopertype = '1'; } } // 添加一个标记,表示当前行已被选中 row.acp = 'X'; } }); // 检查哪些行被取消选中,并恢复它们的原始值 this.model.recgrp.tgc.forEach(row => { if (!selection.includes(row) && row.acp === 'X') { row.listopertype = row.backupValue; // 清除选中标记 row.acp = ''; } }) }, addRow() { this.isEdit = false; let tgc = { seqno: this.model.recgrp.tgc.length + 1, // 明细主键 .recp.tgfpp.seqno listopertype: '1', tradedate: '', // 交易日 .recp.tgcpp.tradedate disbuycurrency: '', // 远端买入(名义本金)币种 .recp.tgcpp.disbuycurrency disbuyamt: '', // 远端买入(名义本金)金额 .recp.tgcpp.disbuyamt dissellcurrency: '', // 远端卖出(名义本金)币种 .recp.tgcpp.dissellcurrency dissellamt: '', // 远端卖出(名义本金)金额 .recp.tgcpp.dissellamt neardate: '', // 近端交割日 .recp.tgcpp.neardate distaldate: '', // 远端交割日 .recp.tgcpp.distaldate nearprice: '', // 近端交易价格 .recp.tgcpp.nearprice disprice: '', // 远端交易价格 .recp.tgcpp.disprice acp: 'X', }; this.index = this.model.recgrp.tgc.push(tgc) - 1; this.formData = this.model.recgrp.tgc[this.index]; // this.calcRmbbop().then((rtnmsg) => { // if (rtnmsg.respCode === SUCCESS) { // this.formData = this.model.recgrp.tgc[this.index]; // } // }); this.toggleShow(); }, saveRow() { this.$refs.formRef.validate((valid) => { if (valid) { this.$set(this.model.recgrp.tgc, this.index, {...this.formData}); this.$refs.formRef.resetFields(); this.toggleShow(); } else { // 前端校验失败 this.$notify({ title: '失败', message: '校验失败', type: 'error', }); return false; } }) }, cancel() { if (!this.isEdit) this.model.recgrp.tgc.splice(this.index, 1); this.toggleShow(); }, handleDelete(index) { this.model.recgrp.tgc.splice(index, 1); }, deleteSelectedRows() { if (this.selectedRows.length === 0) { this.$message.warning('请先选择要删除的数据行'); return; } this.selectedRows.forEach(row => { const index = this.model.recgrp.tek.indexOf(row); if (index !== -1) { this.model.recgrp.tek.splice(index, 1); } }); this.$message.success('成功删除选中行'); this.selectedRows = []; }, } }; </script> <style> </style>