<template> <div class="bill-details"> <div class="frame"> <!-- 公司名称 --> <autocomplete class="mr20" :params="parameter.params" :config="configAutocomplete" /> <!-- 总公司名称 --> <autocomplete class="mr20" :params="parameter.params" :config="configAutocompleteSec" /> <el-select v-model="parameter.params.accountState" placeholder="账户状态" clearable > <el-option v-for="(item, index) in accountStateEnum" :key="index" :label="item.label" :value="item.value" /> </el-select> <el-select v-model="parameter.params.companyNature" placeholder="企业性质" clearable > <el-option v-for="(item, index) in companyNatureEnum" :key="index" :label="item.label" :value="item.value" /> </el-select> <!-- 业务负责人 --> <autocomplete :params="parameter.params" :config="configAutocompleteBusinessLeader" /> <div class="buttons"> <el-button icon="el-icon-search" @click="search">查询</el-button> <el-button icon="el-icon-refresh" @click="reset">重置</el-button> </div> </div> <div class="table"> <div class="operation"> <el-button @click="accountTypeHandler(0)">禁用</el-button> <el-button @click="accountTypeHandler(1)">启用</el-button> <el-button @click="accountTypeHandler(-1)">冻结</el-button> </div> <el-table v-if="tableHeight" ref="multipleTable" :height="tableHeight" :data="tableData" style="width: 100%" > > <el-table-column type="selection" width="55" /> <el-table-column prop="companyName" label="公司名称" minWidth="300"> <template slot-scope="{ row }"> <span style="padding-left: 8px">{{ row.companyName }}</span> <br /> <span style="padding-left: 8px" >业务负责人:{{ row.businessLeader }}</span > </template> </el-table-column> <el-table-column label="企业性质" minWidth="120"> <template slot-scope="{ row }"> {{ companyNatureEnum.find((item) => item.value === row.companyNature) .label }} </template> </el-table-column> <el-table-column prop="totalBalance" label="公司企业总余额" minWidth="120" /> <el-table-column label="司机油卡余额" minWidth="130"> <template slot-scope="{ row }"> <span>外:{{ row.outCountBalance }}</span> <br /> <span>自:{{ row.inCountBalance }}</span> </template> </el-table-column> <el-table-column prop="balance" label="账户总余额" minWidth="120" /> <el-table-column prop="rechargeBalance" label="充值余额" minWidth="120" /> <el-table-column prop="chargeRechargeBalance" label="赊销充值余额" minWidth="120" /> <el-table-column prop="rechargeRebateBalance" label="充值返利余额" minWidth="120" /> <el-table-column prop="consumeRebateBalance" label="消费返利余额" minWidth="120" /> <el-table-column prop="totalChargeAmount" label="赊销待还" minWidth="120" /> <el-table-column prop="createTime" label="创建时间" minWidth="200" /> <el-table-column fixed="right" label="操作" width="150px"> <template slot-scope="{ row }"> <span class="el-dropdown-link" @click="detail(row)">详情</span> <el-dropdown> <el-button type="text"> 更多<i class="el-icon-arrow-down el-icon--right" /> </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item @click.native="toRecharge(row.id)"> <el-button :size="$store.getters.size" type="text"> <svg-icon icon-class="iconicon-" /> 充值 </el-button> </el-dropdown-item> </el-dropdown-menu> </el-dropdown> </template> </el-table-column> </el-table> <!-- 分页 --> <pagination :parameter="parameter" @searchAgain="getByPage" /> </div> <!-- 添加充值 --> <recharge :controlWindows="controlWindows" @closeWindow="closeDialog" /> </div> </template> <script> import serve from "api/financialCenter/accountManagement.js"; import commonServe from "api/common.js"; import recharge from "./components/recharge.vue"; import autocomplete from "components/autocomplete/index.vue"; import pagination from "components/pagination/index.vue"; import generalDetails from "components/generalDetails/index.vue"; export default { components: { recharge, pagination, autocomplete, generalDetails, }, data() { return { oilCompanyAccount: {}, controlWindows: { detail: false, recharge: false, // 充值弹窗 }, tableDataSec: [], tableHeight: 0, tableData: [], multipleSelection: [], // 选择表格数据集合 configAutocomplete: { serveTarget: commonServe.getRefineryCompanyList, autocompleteKey: "name", labelKey: "name", valueKey: "id", placeholder: "企业名称", querykey: "companyId", }, configAutocompleteSec: { serveTarget: commonServe.getRefineryCompanyList, autocompleteKey: "name", labelKey: "name", valueKey: "id", placeholder: "总公司名称", querykey: "name", }, configAutocompleteBusinessLeader: { serveTarget: commonServe.liekQuery, autocompleteKey: "", labelKey: "nickName", valueKey: "id", placeholder: "业务负责人", querykey: "businessLeader", }, parameter: { currentPage: 1, pageSize: 10, total: 0, params: {}, }, accountStateEnum: [ { label: "禁用", value: 0, }, { label: "启用", value: 1, }, { label: "冻结", value: -1, }, ], companyNatureEnum: [ { label: "零售客户", value: 0, }, { label: "外请客户", value: 1, }, { label: "渠道客户", value: 2, }, { label: "存量客户", value: 3, }, { label: "批发客户", value: 4, }, { label: "LNG客户", value: 5, }, { label: "推广业务", value: 6, }, ], }; }, created() { this.getByPage(); }, updated() { this.$nextTick(() => { this.$refs.multipleTable && this.$refs.multipleTable.doLayout(); }); }, mounted() { this.$nextTick(() => { this.heightHandle(); }); window.addEventListener( "resize", this.$utils.debounce(this.heightHandle, 500) ); }, methods: { search() { this.parameter.currentPage = 1; this.getByPage(); }, //table list getByPage() { serve.getByPage(this.parameter).then((res) => { this.tableData = res.data.list; this.parameter.total = res.data.totalCount; }); }, //修改账户状态 accountTypeHandler(type) { //0:禁用 1:启用 -1:冻结 if (!this.multipleSelection || this.multipleSelection.length < 1) { this.$message.error("请选择需要操作的数据"); return; } this.multipleSelection.forEach((item) => { item.accountState = type; }); serve.updateAccountState(this.multipleSelection).then((res) => { if (res.code === 20000) { this.$message.success(res.msg); } this.getByPage(); }); }, detail(row) { //TODO }, toRecharge(id) { // 跳转到充值 serve.get(id).then((res) => { this.oilCompanyAccount = res.data; this.controlWindows.recharge = true; }); }, //重置 reset() { this.parameter = { currentPage: 1, pageSize: 10, total: 0, params: {}, }; }, closeDialog() { this.controlWindows.recharge = false; }, // table height heightHandle() { let bodyHeight = document.body.clientHeight; let frameHeight = this.obtainElement(".frame").clientHeight; let operationHeight = this.obtainElement(".operation").clientHeight; let paginationHeight = this.obtainElement(".el-pagination").clientHeight; this.tableHeight = bodyHeight - frameHeight - operationHeight - paginationHeight - 145; }, obtainElement(className) { return document.documentElement.querySelector(className); }, }, }; </script> <style lang="scss" scoped> .bill-details { .frame { margin: 20px; padding: 20px; border-radius: 6px; border: 1px solid #e3e3e5; background: #fff; .el-input, .el-select { width: 183px; height: 40px; } .el-autocomplete + .el-input, .el-input + .el-autocomplete, .el-autocomplete + .el-select, .el-input + .el-input, .el-input + .el-select, .el-select + .el-select, .el-select + .el-input { margin-right: 20px; margin-bottom: 15px; } .mr20 { margin-right: 20px; } .buttons { text-align: right; } } .table { overflow: hidden; margin: 0 20px; padding-bottom: 20px; background: #fff; border-radius: 6px; border: 1px solid #e3e3e5; > .operation { box-sizing: content-box; padding: 15px; } .gray { color: #999; span { color: #333; } } .el-table { margin-bottom: 20px; border-radius: 10px 10px 0px 0px; } .el-dropdown-link { margin-right: 10px; cursor: pointer; color: #409eff; &.special { margin-right: 0; } } .el-icon-arrow-down { font-size: 12px; } } .ft14 { font-size: 14px; } } </style>