You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
6.0 KiB
178 lines
6.0 KiB
<template> |
|
<el-drawer title="充值圈回" direction="ltr" size="40%" :visible.sync="controlWindows.rechargeTurn" @opened="openDrawer" :before-close="closeWindow"> |
|
<div class="recharge-turn"> |
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
|
<el-form-item label="炼厂名称" prop="refineryId"> |
|
<autocomplete ref="autocomplete" :params="form" :config="configAutocomplete" @change="changeRefineryId" /> |
|
</el-form-item> |
|
<el-form-item label="炼厂账户" prop="refineryAccountId"> |
|
<el-select v-model="form.refineryAccountId" placeholder="请选择"> |
|
<el-option v-for="item in refineryAccountList" :key="item.id" :label="item.accountName" :value="item.id"> </el-option> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item v-if="form.refineryAccountId && form.transactionType === 'TURN'"> |
|
<el-descriptions title="炼厂账户信息" :column="1" border> |
|
<el-descriptions-item> |
|
<template slot="label"> |
|
<i class="el-icon-office-building"></i> |
|
炼厂账户 |
|
</template> |
|
{{ refineryAccountInfo.accountName }}</el-descriptions-item |
|
> |
|
<el-descriptions-item> |
|
<template slot="label"> |
|
<i class="el-icon-bank-card"></i> |
|
账户余额 |
|
</template> |
|
{{ refineryAccountInfo.balance }} |
|
</el-descriptions-item> |
|
</el-descriptions> |
|
</el-form-item> |
|
<el-form-item label="油批中心账户" prop="refineryCenterAccountId"> |
|
<autocomplete :params="form" :config="accountNameAutocomplete" /> |
|
</el-form-item> |
|
<el-form-item label="交易类型" prop="transactionType"> |
|
<el-select v-model="form.transactionType" placeholder="请选择"> |
|
<el-option label="充值" value="RECHARGE"> </el-option> |
|
<el-option label="圈回" value="TURN"> </el-option> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item label="交易金额" prop="transactionAmount"> |
|
<el-input v-checkNum v-model="form.transactionAmount" placeholder="请输入"></el-input> |
|
</el-form-item> |
|
</el-form> |
|
</div> |
|
<div class="buttons"> |
|
<el-button @click="closeWindow">取消 </el-button> |
|
<el-button @click="submit">确定</el-button> |
|
</div> |
|
</el-drawer> |
|
</template> |
|
|
|
<script> |
|
import refineryInfoServe from 'api/refineryInfo.js' |
|
import serve from '@/api/refineryAccount/rechargeManagement.js' |
|
import commonServe from '@/api/common.js' |
|
|
|
import autocomplete from 'components/autocomplete/index.vue' |
|
export default { |
|
components: { |
|
autocomplete |
|
}, |
|
props: { |
|
controlWindows: Object |
|
}, |
|
data() { |
|
let validatorRefineryId = (rule, value, callback) => { |
|
if (this.form.refineryId) callback() |
|
else callback('请选择炼厂') |
|
} |
|
|
|
let validatorRefineryCenterAccountId = (rule, value, callback) => { |
|
if (this.form.refineryCenterAccountId) callback() |
|
else callback('请选择油批中心账户') |
|
} |
|
let validatorTransactionAmount = (rule, value, callback) => { |
|
if (!value) return callback('请输入交易金额或交易金额不可为0') |
|
if (this.form.transactionType === 'TURN' && +value > +this.refineryAccountInfo.balance) return callback('交易金额不可高于账户余额') |
|
callback() |
|
} |
|
return { |
|
form: { refineryAccountId: '', refineryCenterAccountId: '' }, |
|
refineryAccountList: [], |
|
refineryList: [], |
|
configAutocomplete: { |
|
serveTarget: refineryInfoServe.findByEntity, |
|
autocompleteKey: 'refineryName', |
|
labelKey: 'refineryName', |
|
valueKey: 'id', |
|
placeholder: '炼厂名称', |
|
querykey: 'refineryId' |
|
}, |
|
accountNameAutocomplete: { |
|
serveTarget: commonServe.findByEntity, |
|
autocompleteKey: 'accountName', |
|
labelKey: 'accountName', |
|
valueKey: 'id', |
|
placeholder: '油批中心账户', |
|
querykey: 'refineryCenterAccountId' |
|
}, |
|
rules: { |
|
refineryId: [{ required: true, validator: validatorRefineryId, trigger: 'change' }], |
|
refineryAccountId: [{ required: true, message: '请选择炼厂账户', trigger: 'blur' }], |
|
transactionType: [{ required: true, message: '请选择交易类型', trigger: 'change' }], |
|
transactionAmount: [{ required: true, validator: validatorTransactionAmount, trigger: 'change' }], |
|
refineryCenterAccountId: [{ required: true, validator: validatorRefineryCenterAccountId, trigger: 'change' }] |
|
} |
|
} |
|
}, |
|
computed: { |
|
refineryAccountInfo() { |
|
return this.refineryAccountList.find(item => item.id == this.form.refineryAccountId) || {} |
|
} |
|
}, |
|
methods: { |
|
openDrawer() {}, |
|
changeRefineryId(val) { |
|
this.form.refineryAccountId = '' |
|
this.refineryAccountList = [] |
|
if (val) { |
|
serve.getByList({ refineryId: val }).then(res => { |
|
this.refineryAccountList = res.data |
|
}) |
|
} |
|
}, |
|
submit() { |
|
this.$refs['form'].validate(valid => { |
|
if (valid) { |
|
serve.save(this.form).then(res => { |
|
if (res.code === 20000) { |
|
this.$message.success(res.msg) |
|
this.closeWindow() |
|
} |
|
}) |
|
} |
|
}) |
|
}, |
|
closeWindow() { |
|
this.$emit('closeWindow') |
|
this.form = { refineryAccountId: '' } |
|
this.$nextTick(() => { |
|
this.$refs.autocomplete.list = [] |
|
this.refineryAccountList = [] |
|
this.$refs.form.clearValidate() |
|
this.controlWindows.rechargeTurn = false |
|
}) |
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
.recharge-turn { |
|
padding: 20px; |
|
.el-input, |
|
.el-select, |
|
.el-textarea, |
|
.el-autocomplete, |
|
.el-descriptions { |
|
width: 300px; |
|
} |
|
} |
|
.buttons { |
|
position: absolute; |
|
left: 0; |
|
bottom: 0; |
|
padding-right: 40px; |
|
width: 100%; |
|
height: 80px; |
|
line-height: 80px; |
|
text-align: right; |
|
border-top: 1px solid #f2f3f5; |
|
.el-button { |
|
text-align: right; |
|
font-size: 14px; |
|
border-radius: 5px; |
|
} |
|
} |
|
</style>
|
|
|