提交 dc76e4ab authored 作者: pengxiaohui's avatar pengxiaohui

update: 优化表单交互

上级 66c83595
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> --> </el-form-item> -->
<el-form-item class="form-item-border" label="开票人类型" prop="taxpayer_type"> <el-form-item class="form-item-border" label="开票人类型" prop="taxpayer_type">
<el-radio-group v-model="form.taxpayer_type"> <el-radio-group v-model="form.taxpayer_type" @change="handleTypeChange">
<el-radio label="2">企业</el-radio> <el-radio label="2">企业</el-radio>
<el-radio label="3">非营利性单位</el-radio> <el-radio label="3">非营利性单位</el-radio>
<el-radio label="1">个人</el-radio> <el-radio label="1">个人</el-radio>
...@@ -73,6 +73,21 @@ ...@@ -73,6 +73,21 @@
</el-form> </el-form>
</template> </template>
<script> <script>
const defaultForm = {
invoice_type: '',
taxpayer_name: '',
taxpayer_identifier: '',
remarks: '',
recipient_email: '',
recipient_address: '',
recipient_name: '',
recipient_mobile: '',
follower: '',
taxpayer_address: '',
taxpayer_mobile: '',
taxpayer_bank_name: '',
taxpayer_bank_account: ''
}
export default { export default {
props: { props: {
history: { history: {
...@@ -84,23 +99,7 @@ export default { ...@@ -84,23 +99,7 @@ export default {
}, },
data() { data() {
return { return {
form: { form: Object.assign({ taxpayer_type: '2' }, defaultForm),
// type: 1,
taxpayer_type: '2',
invoice_type: '',
taxpayer_name: '',
taxpayer_identifier: '',
remarks: '',
recipient_email: '',
recipient_address: '',
recipient_name: '',
recipient_mobile: '',
follower: '',
taxpayer_address: '',
taxpayer_mobile: '',
taxpayer_bank_name: '',
taxpayer_bank_account: ''
},
rules: { rules: {
// type: { required: true, message: '请选择开票类型', trigger: 'change' }, // type: { required: true, message: '请选择开票类型', trigger: 'change' },
taxpayer_type: { required: true, message: '请选择开票人类型', trigger: 'change' }, taxpayer_type: { required: true, message: '请选择开票人类型', trigger: 'change' },
...@@ -127,6 +126,12 @@ export default { ...@@ -127,6 +126,12 @@ export default {
} }
}, },
methods: { methods: {
handleTypeChange(val) {
this.form = Object.assign({ taxpayer_type: val }, defaultForm)
window.setTimeout(() => {
this.$refs.ruleForm.clearValidate()
}, 1)
},
handleSubmit() { handleSubmit() {
this.$refs.ruleForm.validate((valid) => { this.$refs.ruleForm.validate((valid) => {
if (valid) { if (valid) {
......
<template> <template>
<div class="invoice-container"> <div class="invoice-container">
<van-tabs v-model="form.taxpayer_type" type="card" color="#3276fc" sticky> <van-tabs v-model="form.taxpayer_type" type="card" color="#3276fc" sticky @change="handleTabChange">
<van-tab name="2" title="企业"></van-tab> <van-tab name="2" title="企业"></van-tab>
<van-tab name="1" title="个人"></van-tab> <van-tab name="1" title="个人"></van-tab>
<van-tab name="3" title="非营利性单位"></van-tab> <van-tab name="3" title="非营利性单位"></van-tab>
</van-tabs> </van-tabs>
<van-form :show-error="false" @submit="fetchCreateInvoice"> <van-form :show-error="false" ref="vanForm" @submit="fetchCreateInvoice">
<div class="form-group"> <div class="form-group">
<h5>发票信息</h5> <h5>发票信息</h5>
<van-field readonly clickable name="picker" :value="invoice_type_label" label="发票类型" placeholder="请选择发票类型" @click="showPicker = true" :rules="[{ required: true, message: '请选择发票类型', trigger: 'onChange' }]" required /> <van-field readonly clickable name="picker" :value="invoice_type_label" label="发票类型" placeholder="请选择发票类型" @click="showPicker = true" :rules="[{ required: true, message: '请选择发票类型', trigger: 'onChange' }]" required />
...@@ -52,27 +52,28 @@ ...@@ -52,27 +52,28 @@
<script> <script>
import HistoryInvoiceList from '../../components/HistoryInvoiceList.vue' import HistoryInvoiceList from '../../components/HistoryInvoiceList.vue'
import { createInvoice } from '../../api' import { createInvoice } from '../../api'
import { Toast } from 'vant'
const defaultForm = {
invoice_type: '',
taxpayer_name: '',
taxpayer_identifier: '',
remarks: '',
recipient_email: '',
recipient_address: '',
recipient_name: '',
recipient_mobile: '',
follower: '',
taxpayer_address: '',
taxpayer_mobile: '',
taxpayer_bank_name: '',
taxpayer_bank_account: ''
}
export default { export default {
components: { HistoryInvoiceList }, components: { HistoryInvoiceList },
data() { data() {
return { return {
invoice_type_label: '', invoice_type_label: '',
form: { form: Object.assign({ taxpayer_type: 2 }, defaultForm),
taxpayer_type: '2',
invoice_type: '',
taxpayer_name: '',
taxpayer_identifier: '',
remarks: '',
recipient_email: '',
recipient_address: '',
recipient_name: '',
recipient_mobile: '',
follower: '',
taxpayer_address: '',
taxpayer_mobile: '',
taxpayer_bank_name: '',
taxpayer_bank_account: ''
},
showPicker: false, showPicker: false,
showPopup: false showPopup: false
} }
...@@ -95,11 +96,26 @@ export default { ...@@ -95,11 +96,26 @@ export default {
} }
}, },
methods: { methods: {
handleTabChange(val) {
this.form = Object.assign({ taxpayer_type: val }, defaultForm)
this.setInvoiceType()
},
onConfirm(val) { onConfirm(val) {
this.invoice_type_label = val.label this.invoice_type_label = val.label
this.form.invoice_type = val.value this.form.invoice_type = val.value
this.showPicker = false this.showPicker = false
}, },
setInvoiceType(val) {
const item = this.invoiceTypeList.find(item => item.value === val)
if (item) {
this.invoice_type_label = item.label
} else {
this.invoice_type_label = ''
window.setTimeout(() => {
this.$refs.vanForm.resetValidation()
}, 1)
}
},
handleHistory() { handleHistory() {
this.showPopup = true this.showPopup = true
}, },
...@@ -108,8 +124,7 @@ export default { ...@@ -108,8 +124,7 @@ export default {
this.form[key] = val[key] this.form[key] = val[key]
}) })
if (this.form.invoice_type) { if (this.form.invoice_type) {
const item = this.invoiceTypeList.find(item => item.value === this.form.invoice_type) this.setInvoiceType(this.form.invoice_type)
this.invoice_type_label = item.label
} }
this.showPopup = false this.showPopup = false
}, },
...@@ -117,13 +132,15 @@ export default { ...@@ -117,13 +132,15 @@ export default {
const params = Object.assign({}, this.form) const params = Object.assign({}, this.form)
params.id = this.id params.id = this.id
createInvoice(params).then(res => { createInvoice(params).then(res => {
console.log(res)
if (res.code === 0) { if (res.code === 0) {
this.$message.success('开具发票成功') Toast.success('开具发票成功')
} else { } else {
this.$message.error(res.message || '开具发票失败') // this.$message.error(res.message || '开具发票失败')
Toast.fail(res.message || '开具发票失败')
} }
}).catch(() => { }).catch(() => {
this.$message.error('开具发票失败') Toast.fail('开具发票失败')
}) })
} }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template v-slot:table-operate="{ row }"> <template v-slot:table-operate="{ row }">
<el-button v-if="['2', '6'].includes(row.invoice_status)" type="text" @click="handleInvoice(row)" size="mini">开具发票</el-button> <el-button v-if="['1', '2', '6'].includes(row.invoice_status)" type="text" @click="handleInvoice(row)" size="mini">开具发票</el-button>
<el-button type="text" @click="handleInvoiceQR(row)" size="mini">开票二维码</el-button> <el-button type="text" @click="handleInvoiceQR(row)" size="mini">开票二维码</el-button>
</template> </template>
</app-list> </app-list>
......
...@@ -32,9 +32,9 @@ httpRequest.interceptors.request.use( ...@@ -32,9 +32,9 @@ httpRequest.interceptors.request.use(
httpRequest.interceptors.response.use( httpRequest.interceptors.response.use(
function (response) { function (response) {
const { data } = response const { data } = response
if (data.code) { // if (data.code) {
return Promise.reject(data) // return Promise.reject(data)
} // }
return data return data
}, },
function (error) { function (error) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论