<template> <div class="eibs-tab"> <c-col :span="8" class="col-left"> <el-form-item label="汇率币种"> <c-select v-model="model.cur" style="height:30px;" placeholder="请选择汇率币种" dbCode="CURTXT" :isShowKeyAndLabel="true" /> </el-form-item> </c-col> <c-col :span="16" class="col-center"> <el-form-item label="更新时间" style="width: 100%"> <c-col :span="11"> <c-date-time-picker v-model="model.begdat" :picker-options="startDatePicker2" style="width: 100%" placeholder="请选择开始日期" /> </c-col> <c-col :span="2" style="text-align: center"> <label style="display: inline-block; width: 100%">--</label> </c-col> <c-col :span="11"> <c-date-time-picker v-model="model.enddat" picker-options="endDatePicker2" style="width: 100%" placeholder="请选择截止日期" /> </c-col> </el-form-item> </c-col> <c-col :span="24"> <span style="float: left"> <el-button type="primary" ref="xrtInsertBtn" size="small" v-if="isShowAddBtn" @click="xrtAdd">新增</el-button> </span> <span style="float: right"> <el-button size="small" @click="handleReset">重置</el-button> <el-button type="primary" icon="el-icon-search" size="small" :loading="searchLoading" @click="onSearch()">查询 </el-button> <el-button type="primary" icon="el-icon-search" size="small" :loading="searchLoadingRimo" @click="onSearchRimo()">日末牌价 </el-button> </span> </c-col> <c-col :span="24"> <c-paging-table :data="xrtData" :columns="xrtColumns" :pageNumber="model.pageNum" :pageSize="model.pageSize" :total="model.total" v-on:queryFunc="queryFunc" :border="true" @sort-change="sortChange" sortable="custom"> <c-table-column fixed="right" prop="op" label="操作" width="250px"> <template slot-scope="{ scope }"> <c-button style="margin-left: 5px" size="small" type="info" ref="xrtDisplayBtn" @click="xrtDisplay(scope.row)">详情</c-button> <c-button style="margin-left: 5px" size="small" type="primary" v-if="isShowUpdBtn" ref="xrtUpdateBtn" @click="xrtEdit(scope.row)">修改</c-button> <c-button size="small" style="margin-left: 5px" type="danger" v-if="isShowDelBtn" ref="xrtDeleteBtn" @click="xrtDelete(scope.row)">删除</c-button> </template> </c-table-column> </c-paging-table> </c-col> <el-dialog :title="dialogNam[xrttyp]" :visible.sync="dialogAdd" :modal-append-to-body="true" :close-on-click-modal="false" center modal="true"> <el-form :model="form" ref="modelForm" label-suffix=":" :rules="rules" :disabled="isDisabled"> <c-col :span="24"> <c-col :span="12"> <el-form-item label="币种" :label-width="formLabelWidth" prop="cur"> <c-select v-model="form.cur" autocomplete="off" placeholder="请选择币种" dbCode="CURTXT" :disabled="xrttyp == 'edit'" :isShowKeyAndLabel="true"></c-select> </el-form-item> </c-col> <c-col :span="12"> <el-form-item label="生效日期" :label-width="formLabelWidth" prop="begdat"> <c-date-picker type="date" v-model="form.begdat" value-format="yyyy-MM-dd" :picker-options="startDatePicker" style="width: 100%" placeholder="请选择生效日期" :disabled="xrttyp == 'edit'"></c-date-picker> </el-form-item> </c-col> </c-col> <c-col :span="24"> <c-col :span="12"> <el-form-item label="现汇买入价" :label-width="formLabelWidth" prop="buyrat"> <c-input type="number" v-model="form.buyrat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入现汇买入价"></c-input> </el-form-item> </c-col> <c-col :span="12"> <el-form-item label="现汇卖出价" :label-width="formLabelWidth" prop="selrat"> <c-input type="number" v-model="form.selrat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入现汇卖出价"></c-input> </el-form-item> </c-col> </c-col> <c-col :span="24"> <c-col :span="12"> <el-form-item label="现钞买入价" :label-width="formLabelWidth" prop="buy1rat"> <c-input type="number" v-model="form.buy1rat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入现钞买入价"></c-input> </el-form-item> </c-col> <c-col :span="12"> <el-form-item label="现钞卖出价" :label-width="formLabelWidth" prop="sel1rat"> <c-input type="number" v-model="form.sel1rat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入现钞卖出价"></c-input> </el-form-item> </c-col> </c-col> <c-col :span="24"> <c-col :span="12"> <el-form-item label="买入参考汇率" :label-width="formLabelWidth" prop="rebrat"> <c-input type="number" v-model="form.rebrat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入买入参考汇率"></c-input> </el-form-item> </c-col> <c-col :span="12"> <el-form-item label="卖出参考汇率" :label-width="formLabelWidth" prop="resrat"> <c-input type="number" v-model="form.resrat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入卖出参考汇率"></c-input> </el-form-item> </c-col> </c-col> <c-col :span="24"> <c-col :span="12"> <el-form-item label="中间价" :label-width="formLabelWidth" prop="midrat"> <c-input type="number" v-model="form.midrat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入中间价"></c-input> </el-form-item> </c-col> <c-col :span="12"> <el-form-item label="报表折算价" :label-width="formLabelWidth" prop="ibrrat"> <c-input type="number" v-model="form.ibrrat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入报表折算价"></c-input> </el-form-item> </c-col> </c-col> <c-col :span="24"> <c-col :span="12"> <el-form-item label="指定买价" :label-width="formLabelWidth" prop="ttrrat"> <c-input type="number" v-model="form.ttrrat" :precision="6" :step="0.000001" autocomplete="off" placeholder="请输入指定买价"></c-input> </el-form-item> </c-col> <c-col :span="12"> <el-form-item label="票据买断汇率" :label-width="formLabelWidth" prop="odrrat"> <c-input type="number" v-model="form.odrrat" :precision="6" :step="0.000001" autocomplete="off" min="0" placeholder="请输入票据买断汇率"></c-input> </el-form-item> </c-col> </c-col> <c-col :span="24"> <c-col :span="12"> <el-form-item label="更新时间" :label-width="formLabelWidth" v-if="xrttyp == 'edit'" prop="xrttim"> <el-input v-model="form.xrttim" autocomplete="off" placeholder="请输入更新时间" :disabled="true"></el-input> </el-form-item> </c-col> <c-col :span="12"> <el-form-item label="失效日期" :label-width="formLabelWidth" v-if="xrttyp == 'edit'" prop="enddat"> <c-date-picker type="date" v-model="form.enddat" value-format="yyyy-MM-dd" :picker-options="endDatePicker" style="width: 100%" placeholder="请选择失效日期" :disabled="true"></c-date-picker> </el-form-item> </c-col> </c-col> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="commitAdd" v-if="xrttyp == 'add'">提 交</el-button> <el-button type="primary" @click="commitEdit" v-if="xrttyp == 'edit'">提 交</el-button> <el-button @click="dialogAdd = false" v-if="xrttyp != 'info'">取 消</el-button> <el-button @click="dialogAdd = false" v-if="xrttyp == 'info'">返 回</el-button> </div> </el-dialog> </div> </template> <script> import Utils from "~/utils"; import { queryByPage, deleteById, edit, add, queryById } from "~/service/manage/xrt.js"; import Xrt, { Pattern } from "./Xrt.js"; import commonFunctions from "~/mixin/commonFunctions.js"; import { localeData } from 'moment'; export default { mixins: [commonFunctions], name: "", props: ["model"], inject: [], data() { return { rules: Pattern, xrtData: [], xrtColumns: [ { label: '币种', prop: 'cur', width: '100' }, { label: '币种名称', prop: 'curnam', width: '140' }, { label: '更新时间', prop: 'xrttim', width: '240' }, { label: '生效日期', prop: 'begdat', width: '140' }, { label: '失效日期', prop: 'enddat', width: '140' }, { label: '现汇买入价', prop: 'buyrat', width: '160' }, { label: '中间价', prop: 'midrat', width: '120' }, { label: '现汇卖出价', prop: 'selrat', width: '160' }, { label: '指定买价', prop: 'ttrrat', width: '160' }, { label: '票据买断汇率', prop: 'odrrat', width: '180' }, { label: '卖出参考汇率', prop: 'resrat', width: '180' }, { label: '买入参考汇率', prop: 'rebrat', width: '180' }, { label: '报表折算价', prop: 'ibrrat', width: '160' }, { label: '现钞卖出价', prop: 'sel1rat', width: '160' }, { label: '现钞买入价', prop: 'buy1rat', width: '160' }, ], dialogNam: { 'add': '牌价信息新增', 'edit': '牌价信息编辑', 'info': '牌价信息查看', }, isDisabled: false, searchLoading: false, searchLoadingRimo: false, isShowAddBtn: false, isShowUpdBtn: false, isShowDelBtn: false, dialogAdd: false, form: new Xrt().data, xrttyp: "", formLabelWidth: "160px", startDatePicker: this.beginDate(), endDatePicker: this.processDate(), startDatePicker2: this.beginDate2(), endDatePicker2: this.processDate2(), }; }, computed: { }, activated() { const { update } = this.$route.params if (update) { this.onInfXrtSearch() } }, created() { let today=new Date(); let month = today.getMonth() < 9 ? "0" + (today.getMonth() + 1) : (today.getMonth() + 1) let day = today.getDate() <= 9 ? "0" + today.getDate() : today.getDate() let today1=today.getFullYear().toString()+'-'+month+'-'+day this.model.begdat=today1+' 00:00:00' this.model.enddat=today1+' 23:59:59' //this.model.enddat = '2299-12-31 23:59:59'; //this.onSearch(); }, mounted() { this.getHiddenButtonVue(); }, methods: { //全量排序 sortChange(obj) { let order = obj.order === 'descending' ? 'desc' : 'asc'; let prop = obj.prop; let column = ""; switch (prop) { case 'cur': column = "cur"; break; case 'begdat': column = "begdat"; break; case 'enddat': column = "enddat"; break; case 'buyrat': column = "buyrat"; break; case 'midrat': column = "midrat"; break; case 'selrat': column = "selrat"; break; case 'ttrrat': column = "ttrrat"; break; case 'odrrat': column = "odrrat"; break; case 'resrat': column = "resrat"; break; case 'rebrat': column = "rebrat"; break; case 'ibrrat': column = "ibrrat"; break; case 'sel1rat': column = "sel1rat"; break; case 'buy1rat': column = "buy1rat"; break; case 'xrttim': column = "xrttim"; break; } let orderObj = { order: order, column: column } this.model.orderStr = orderObj.order; this.model.columnStr = orderObj.column; this.onInfXrtSearch() }, getHiddenButtonVue() { const loading = this.loading(); this.$buttonControlService.hiddenBtnList() .then((res) => { // 【新增】按钮 let hasInsert = res.some((item) => { return item.ITEMID === 'xrtInsertBtn'; }) if (hasInsert) { this.isShowAddBtn = false; } else { this.isShowAddBtn = true; } // 【修改】按钮 let hasUpdate = res.some((item) => { return item.ITEMID === 'xrtUpdateBtn'; }) if (hasUpdate) { this.isShowUpdBtn = false; } else { this.isShowUpdBtn = true; } // 【删除】按钮 let hasDelete = res.some((item) => { return item.ITEMID === 'xrtDeleteBtn'; }) if (hasDelete) { this.isShowDelBtn = false; } else { this.isShowDelBtn = true; } loading.close(); }) }, getNowDate() { const timeOne = new Date() const year = timeOne.getFullYear() let month = timeOne.getMonth() + 1 let day = timeOne.getDate() month = month < 10 ? '0' + month : month day = day < 10 ? '0' + day : day const NOW_MONTHS_AGO = `${year}-${month}-${day}` return NOW_MONTHS_AGO }, beginDate() { const self = this return { disabledDate(time) { if (self.form.enddat) { //如果结束时间不为空,则小于结束时间 return new Date(self.form.enddat).getTime() - 86400000 < time.getTime() } else { // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天 } } } }, beginDate2() { const self = this return { disabledDate(time) { if (self.model.enddat) { //如果结束时间不为空,则小于结束时间 return new Date(self.model.enddat).getTime() - 86400000 < time.getTime() } else { // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天 } } } }, processDate() { const self = this return { disabledDate(time) { if (self.form.begdat) { //如果开始时间不为空,则结束时间大于开始时间 return new Date(self.form.begdat).getTime() - 86400000 > time.getTime() } else { // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天 } } } }, processDate2() { const self = this return { disabledDate(time) { if (self.model.begdat) { //如果开始时间不为空,则结束时间大于开始时间 return new Date(self.model.begdat).getTime() > time.getTime() } else { // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天 } } } }, handleReset() { let today=new Date(); let today1=today.getFullYear().toString()+'-'+(today.getMonth()+1)+'-'+today.getDate() this.model.begdat=today1+' 00:00:00' this.model.enddat=today1+' 23:59:59' this.model.cur = ""; //this.model.begdat = null; //this.model.enddat = "2299-12-31"; this.model.orderStr = null; this.model.columnStr = null; }, onSearch() { this.model.pageNum = 1; this.model.pageSize = PageSize; this.onInfXrtSearch(); }, onSearchRimo() { this.model.pageNum = 1; this.model.pageSize = PageSize; this.onInfXrtSearchRimo(); }, onInfXrtSearch() { this.searchLoading = true; delete this.model.isModify; delete this.model.modifySet; queryByPage(this.model).then(res => { if (res.respCode == SUCCESS) { const list = res.data.list this.xrtData = list this.model.pageNum = res.data.pageNumber this.model.pageSize = res.data.pageSize this.model.total = res.data.total this.searchLoading = false; } else { this.searchLoading = false; } }) }, onInfXrtSearchRimo() { this.searchLoadingRimo = true; delete this.model.isModify; delete this.model.modifySet; let model=this.model; model.cur=""; queryByPage(model).then(res => { if (res.respCode == SUCCESS) { const list = res.data.list this.xrtData = list console.log("this.xrtData---",this.xrtData) this.model.pageNum = res.data.pageNumber this.model.pageSize = res.data.pageSize this.model.total = res.data.total this.searchLoadingRimo = false; } else { this.searchLoadingRimo = false; } }) }, queryFunc(pageNumber, pageSize) { this.model.pageNum = pageNumber this.model.pageSize = pageSize this.onInfXrtSearch() }, xrtAdd() { this.dialogAdd = true; this.xrttyp = "add"; this.isDisabled = false; this.form = new Xrt().data; }, xrtDisplay(row) { this.dialogAdd = true; this.xrttyp = "info"; this.isDisabled = true; queryById(row).then((res) => { if (res.respCode == SUCCESS) { if (res.data.inr) { this.form = res.data; } else { this.$notify.error("牌价信息不存在") } } }); }, xrtEdit(row) { const loading = this.loading(); this.xrttyp = "edit"; queryById(row).then((res) => { if (res.respCode == SUCCESS) { this.dialogAdd = true; this.isDisabled = false; if (res.data.inr) { this.form = res.data; loading.close(); } else { this.$notify.error("牌价信息不存在") loading.close(); } } }); }, xrtDelete(row) { this.$confirm("是否确认删除?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }) .then(() => { deleteById(row) .then((res) => { if (res.respCode == SUCCESS) { this.$notify.success("删除成功!"); this.onInfXrtSearch(); } else { this.$notify.error("删除失败!"); } }) .catch((err) => { this.$notify.error("删除失败!"); }); }) .catch(() => { this.$message({ type: "info", message: "已取消删除", }); }); }, commitAdd() { this.$refs.modelForm.validate((validated) => { if (validated) { this.dialogAdd = false; const loading = this.loading(); delete this.form.isModify; delete this.form.modifySet; add(this.form) .then((res) => { if (res.respCode == "AAAAAA") { this.$notify.success(res.respMsg); loading.close(); this.onInfXrtSearch(); } else { this.$notify.error(res.respMsg); loading.close(); } }) .catch((err) => { this.$notify.error("添加失败!"); loading.close(); }); } else { this.$notify.error({ title: '失败', message: '请检查必输项!' }); } }); }, commitEdit() { this.$refs.modelForm.validate((validated) => { if (validated) { this.dialogAdd = false; const loading = this.loading(); delete this.form.isModify; delete this.form.modifySet; // if (this.form.begdat == this.form.enddat) { // this.$notify.error("生效时间不能等于失效时间!"); // } else { edit(this.form) .then((res) => { if (res.respCode == SUCCESS) { this.$notify.success("修改成功!"); loading.close(); this.onInfXrtSearch(); } else { this.$notify.error("修改失败!"); loading.close(); } }) .catch((err) => { this.$notify.error("修改失败!"); loading.close(); }); // } } else { this.$notify.error({ title: '失败', message: '请检查必输项!' }); } }); }, }, }; </script> <style scoped> .table-button-item-list { padding: 0; margin: 0; } .table-button-item-list li { list-style: none; padding: 5px 0; text-align: center; color: #606266; cursor: pointer; } </style>