|
|
@ -78,7 +78,7 @@
|
|
|
|
<div class="left">
|
|
|
|
<div class="left">
|
|
|
|
<div class="left-top">
|
|
|
|
<div class="left-top">
|
|
|
|
<div class="left-top-item" style="padding-right: 100px">
|
|
|
|
<div class="left-top-item" style="padding-right: 100px">
|
|
|
|
<editCompent ref="editCompentRef" label="发票币别:">
|
|
|
|
<editCompent :showEdit="false" ref="editCompentRef" label="发票币别:">
|
|
|
|
<template #text>
|
|
|
|
<template #text>
|
|
|
|
<span> {{ form.currency }}</span>
|
|
|
|
<span> {{ form.currency }}</span>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
@ -222,17 +222,61 @@
|
|
|
|
{{ taxUnitPriceTotal }}</span>
|
|
|
|
{{ taxUnitPriceTotal }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="padding:5px 20px;display: flex;height: 140px">
|
|
|
|
<div style="padding:5px 20px;display: flex;height: 140px">
|
|
|
|
<div style="width: 80%;">
|
|
|
|
<div style="width: 80%;display: flex;">
|
|
|
|
<editCompent ref="editCompentRef" label="备注:">
|
|
|
|
<div class="label" style="margin-right: 15px">备注</div>
|
|
|
|
|
|
|
|
<div style="flex:1">
|
|
|
|
|
|
|
|
<div style="font-size: 12px">
|
|
|
|
|
|
|
|
<editCompent :textLabel="true" label="购买方地址电话:" ref="editCompentRef">
|
|
|
|
|
|
|
|
<template #text>
|
|
|
|
|
|
|
|
<span> {{ form.customerAddressTel }}</span>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template #content>
|
|
|
|
|
|
|
|
<a-select size="small" v-model:value="form.customerAddressTel"
|
|
|
|
|
|
|
|
style="width: 90%">
|
|
|
|
|
|
|
|
<a-select-option :key="index"
|
|
|
|
|
|
|
|
v-for="(item, index) in invoiceHeadersList"
|
|
|
|
|
|
|
|
:value="item.addressTel">{{ item.addressTel }}</a-select-option>
|
|
|
|
|
|
|
|
</a-select>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
</editCompent>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div style="font-size: 12px;display: flex">
|
|
|
|
|
|
|
|
<editCompent :textLabel="true" label="购买方开户行/账号:" ref="editCompentRef">
|
|
|
|
|
|
|
|
<template #text>
|
|
|
|
|
|
|
|
<span> {{ form.customerBankName }}</span>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template #content>
|
|
|
|
|
|
|
|
<a-select size="small" @change="handleSelectAccount"
|
|
|
|
|
|
|
|
v-model:value="form.customerBankName" style="width: 90%">
|
|
|
|
|
|
|
|
<a-select-option :key="index" v-for="(item, index) in accountList"
|
|
|
|
|
|
|
|
:value="item.bankName">{{ item.bankName }}</a-select-option>
|
|
|
|
|
|
|
|
</a-select>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
</editCompent>
|
|
|
|
|
|
|
|
<editCompent :showLabel="false" ref="editCompentRef">
|
|
|
|
|
|
|
|
<template #text>
|
|
|
|
|
|
|
|
<span> {{ form.customerAccount }}</span>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template #content>
|
|
|
|
|
|
|
|
<a-select size="small" @change="handleSelectAccount1"
|
|
|
|
|
|
|
|
v-model:value="form.customerAccount" style="width: 90%">
|
|
|
|
|
|
|
|
<a-select-option :key="index" v-for="(item, index) in accountList"
|
|
|
|
|
|
|
|
:value="item.account">{{ item.account }}</a-select-option>
|
|
|
|
|
|
|
|
</a-select>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
</editCompent>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<editCompent :showLabel="false" ref="editCompentRef">
|
|
|
|
<template #text>
|
|
|
|
<template #text>
|
|
|
|
<span> {{ form.note }}</span>
|
|
|
|
<span> {{ form.note }}</span>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template #content>
|
|
|
|
<template #content>
|
|
|
|
<a-textarea :auto-size="{ minRows: 6, maxRows: 8 }" v-model:value="form.note"
|
|
|
|
<a-textarea :auto-size="{ minRows: 3, maxRows: 3 }"
|
|
|
|
size="small"></a-textarea>
|
|
|
|
v-model:value="form.note" size="small"></a-textarea>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</editCompent>
|
|
|
|
</editCompent>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<a-button type="link">
|
|
|
|
<a-button type="link">
|
|
|
|
<i class="icon-a-17Btuichu iconfont"></i> 提取备注</a-button>
|
|
|
|
<i class="icon-a-17Btuichu iconfont"></i> 提取备注</a-button>
|
|
|
@ -288,7 +332,18 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="right">
|
|
|
|
<div class="right">
|
|
|
|
<BasicForm @register="registerForm">
|
|
|
|
<BasicForm @register="registerForm">
|
|
|
|
|
|
|
|
<template #email="{ model, field }">
|
|
|
|
|
|
|
|
<a-input v-model:value="model.email" size="small"
|
|
|
|
|
|
|
|
style="width: 50%;margin-right: 20px"></a-input>
|
|
|
|
|
|
|
|
<a-switch checked-children="开" un-checked-children="关" size="small"
|
|
|
|
|
|
|
|
v-model:checked="model.emailFlag" />
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template #cellPhoneNO="{ model, field }">
|
|
|
|
|
|
|
|
<a-input v-model:value="model.cellPhoneNO" size="small"
|
|
|
|
|
|
|
|
style="width: 50%;margin-right: 20px"></a-input>
|
|
|
|
|
|
|
|
<a-switch checked-children="开" un-checked-children="关" size="small"
|
|
|
|
|
|
|
|
v-model:checked="model.cellPhoneNOFlag" />
|
|
|
|
|
|
|
|
</template>
|
|
|
|
</BasicForm>
|
|
|
|
</BasicForm>
|
|
|
|
<BasicTable @register="registerTable">
|
|
|
|
<BasicTable @register="registerTable">
|
|
|
|
|
|
|
|
|
|
|
@ -296,7 +351,8 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</a-spin>
|
|
|
|
</a-spin>
|
|
|
|
<applyInvoice @updateListFreeLeft="updateListFreeLeft" @updateList="handleUpdate" @updateListFree="updateListFree" ref="applyInvoiceRef"></applyInvoice>
|
|
|
|
<applyInvoice @updateListFreeLeft="updateListFreeLeft" @updateList="handleUpdate"
|
|
|
|
|
|
|
|
@updateListFree="updateListFree" ref="applyInvoiceRef"></applyInvoice>
|
|
|
|
<a-modal width="1400px" @cancel="feeFlag = false" :visible="feeFlag" title="费用明细" :footer="null">
|
|
|
|
<a-modal width="1400px" @cancel="feeFlag = false" :visible="feeFlag" title="费用明细" :footer="null">
|
|
|
|
<BasicTable @register="registerTableFee">
|
|
|
|
<BasicTable @register="registerTableFee">
|
|
|
|
<template v-slot:bodyCell="{ column, record }">
|
|
|
|
<template v-slot:bodyCell="{ column, record }">
|
|
|
@ -324,7 +380,7 @@ import { DownOutlined } from '@ant-design/icons-vue'
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
GetInvoiceCodeList, GetUserListAll, DeleteInvoiceDetail,
|
|
|
|
GetInvoiceCodeList, GetUserListAll, DeleteInvoiceDetail,
|
|
|
|
GeneralInvoiceSave, GeneralInvoiceGet, FreeInvoiceSave,
|
|
|
|
GeneralInvoiceSave, GeneralInvoiceGet, FreeInvoiceSave,
|
|
|
|
GeneralInvoiceGetList, GeneralInvoiceInitiate
|
|
|
|
GeneralInvoiceGetList, GeneralInvoiceInitiate, GetClientBankList
|
|
|
|
} from '../api'
|
|
|
|
} from '../api'
|
|
|
|
import { useMessage } from '/@/hooks/web/useMessage'
|
|
|
|
import { useMessage } from '/@/hooks/web/useMessage'
|
|
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
|
@ -375,28 +431,10 @@ const detailForm = [
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
label: '系统客户',
|
|
|
|
label: '系统客户',
|
|
|
|
field: 'autualCustomerName1',
|
|
|
|
field: 'customerName',
|
|
|
|
component: 'ApiSelect',
|
|
|
|
component: 'Input',
|
|
|
|
dynamicDisabled: false,
|
|
|
|
dynamicDisabled: true,
|
|
|
|
colProps: { span: 12 },
|
|
|
|
colProps: { span: 12 },
|
|
|
|
componentProps: () => {
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
|
|
api: () => {
|
|
|
|
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
|
|
|
|
GetControllerClientList().then((res) => {
|
|
|
|
|
|
|
|
resolve(res)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
immediate: false,
|
|
|
|
|
|
|
|
labelField: 'shortName',
|
|
|
|
|
|
|
|
valueField: 'shortName',
|
|
|
|
|
|
|
|
resultField: 'data',
|
|
|
|
|
|
|
|
filterOption: (input: string, option: any) => {
|
|
|
|
|
|
|
|
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
label: '代开客户',
|
|
|
|
label: '代开客户',
|
|
|
@ -463,16 +501,30 @@ const detailForm = [
|
|
|
|
span: 24,
|
|
|
|
span: 24,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
field: 'cellPhoneNOFlag',
|
|
|
|
|
|
|
|
component: 'Input',
|
|
|
|
|
|
|
|
show: false,
|
|
|
|
|
|
|
|
colProps: { span: 24 },
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
field: 'emailFlag',
|
|
|
|
|
|
|
|
show: false,
|
|
|
|
|
|
|
|
component: 'Input',
|
|
|
|
|
|
|
|
colProps: { span: 24 },
|
|
|
|
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
field: 'email',
|
|
|
|
field: 'email',
|
|
|
|
label: '邮箱',
|
|
|
|
label: '邮箱',
|
|
|
|
component: 'InputNumber',
|
|
|
|
component: 'Input',
|
|
|
|
|
|
|
|
slot: 'email',
|
|
|
|
colProps: { span: 24 },
|
|
|
|
colProps: { span: 24 },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
field: 'cellPhoneNO',
|
|
|
|
field: 'cellPhoneNO',
|
|
|
|
label: '手机',
|
|
|
|
label: '手机',
|
|
|
|
component: 'InputNumber',
|
|
|
|
component: 'Input',
|
|
|
|
|
|
|
|
slot: 'cellPhoneNO',
|
|
|
|
colProps: { span: 24 },
|
|
|
|
colProps: { span: 24 },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -583,6 +635,22 @@ const applyInvoiceRef = ref(null) as any
|
|
|
|
function open() {
|
|
|
|
function open() {
|
|
|
|
applyInvoiceRef.value.init()
|
|
|
|
applyInvoiceRef.value.init()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function handleSelectAccount(val) {
|
|
|
|
|
|
|
|
accountList.value.forEach(item => {
|
|
|
|
|
|
|
|
if (item.bankName == val) {
|
|
|
|
|
|
|
|
form.value.customerAddressTel = ''
|
|
|
|
|
|
|
|
invoiceHeadersList.value = item.invoiceHeaders
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function handleSelectAccount1(val) {
|
|
|
|
|
|
|
|
accountList.value.forEach(item => {
|
|
|
|
|
|
|
|
if (item.account == val) {
|
|
|
|
|
|
|
|
form.value.customerAddressTel = ''
|
|
|
|
|
|
|
|
invoiceHeadersList.value = item.invoiceHeaders
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
function handleIssue() {
|
|
|
|
function handleIssue() {
|
|
|
|
const data = {
|
|
|
|
const data = {
|
|
|
|
ids: [route.query.id]
|
|
|
|
ids: [route.query.id]
|
|
|
@ -611,9 +679,7 @@ const form = ref({
|
|
|
|
const currencyList = ref([]) as any
|
|
|
|
const currencyList = ref([]) as any
|
|
|
|
const customerList = ref([]) as any
|
|
|
|
const customerList = ref([]) as any
|
|
|
|
onMounted(() => {
|
|
|
|
onMounted(() => {
|
|
|
|
GetFeeCurrencySelectList().then(res => {
|
|
|
|
|
|
|
|
currencyList.value = res.data
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
GetClientListByCode().then(res => {
|
|
|
|
GetClientListByCode().then(res => {
|
|
|
|
customerList.value = res.data
|
|
|
|
customerList.value = res.data
|
|
|
|
})
|
|
|
|
})
|
|
|
@ -639,7 +705,15 @@ function handleSave() {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
invoiceDetails: list.value,
|
|
|
|
invoiceDetails: list.value,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
data.invoice.pushModeValues = []
|
|
|
|
|
|
|
|
if (data.invoice.emailFlag) {
|
|
|
|
|
|
|
|
data.invoice.pushModeValues.push(1)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (data.invoice.cellPhoneNOFlag) {
|
|
|
|
|
|
|
|
data.invoice.pushModeValues.push(2)
|
|
|
|
|
|
|
|
}
|
|
|
|
loading.value = true
|
|
|
|
loading.value = true
|
|
|
|
|
|
|
|
if (route.query.type == 'apply') {
|
|
|
|
GeneralInvoiceSave(data).then(res => {
|
|
|
|
GeneralInvoiceSave(data).then(res => {
|
|
|
|
if (res.succeeded) {
|
|
|
|
if (res.succeeded) {
|
|
|
|
getDetail()
|
|
|
|
getDetail()
|
|
|
@ -650,6 +724,19 @@ function handleSave() {
|
|
|
|
loading.value = false
|
|
|
|
loading.value = false
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (route.query.type == 'free') {
|
|
|
|
|
|
|
|
FreeInvoiceSave(data).then(res => {
|
|
|
|
|
|
|
|
if (res.succeeded) {
|
|
|
|
|
|
|
|
getDetail()
|
|
|
|
|
|
|
|
createMessage.success('保存成功')
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
loading.value = false
|
|
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
|
|
|
loading.value = false
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
function getDetail() {
|
|
|
|
function getDetail() {
|
|
|
|
loading.value = true
|
|
|
|
loading.value = true
|
|
|
|
GeneralInvoiceGet({ id: route.query.id }).then(res => {
|
|
|
|
GeneralInvoiceGet({ id: route.query.id }).then(res => {
|
|
|
@ -662,6 +749,22 @@ function getDetail() {
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
res.data.isSettledName = '否'
|
|
|
|
res.data.isSettledName = '否'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (res.data.invoiceNO) {
|
|
|
|
|
|
|
|
res.data.status = '已开票'
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
res.data.status = '未开票'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
res.data.emailFlag = false
|
|
|
|
|
|
|
|
res.data.cellPhoneNOFlag = false
|
|
|
|
|
|
|
|
res.data.pushModeValues.forEach(item => {
|
|
|
|
|
|
|
|
if (item == 1) {
|
|
|
|
|
|
|
|
res.data.emailFlag = true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item == 2) {
|
|
|
|
|
|
|
|
res.data.cellPhoneNOFlag = true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
getCustomerInfo(res.data.customerId)
|
|
|
|
setTableData(res.data.applications)
|
|
|
|
setTableData(res.data.applications)
|
|
|
|
setFieldsValue(res.data)
|
|
|
|
setFieldsValue(res.data)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -899,6 +1002,38 @@ function handleSearchUser(val) {
|
|
|
|
UserList.value = res.data
|
|
|
|
UserList.value = res.data
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const invoiceHeadersList = ref([]) as any
|
|
|
|
|
|
|
|
const accountList = ref([]) as any
|
|
|
|
|
|
|
|
function getCustomerInfo(id) {
|
|
|
|
|
|
|
|
const queryStr = [
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
FieldName: 'ClientId',
|
|
|
|
|
|
|
|
FieldValue: id,
|
|
|
|
|
|
|
|
ConditionalType: '0',
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
const data = {
|
|
|
|
|
|
|
|
pageCondition: {
|
|
|
|
|
|
|
|
pageIndex: 1,
|
|
|
|
|
|
|
|
pageSize: 20,
|
|
|
|
|
|
|
|
sortConditions: [],
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
queryCondition: JSON.stringify(queryStr),
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
accountList.value = []
|
|
|
|
|
|
|
|
GetClientBankList(data).then((res) => {
|
|
|
|
|
|
|
|
if (form.value.customerAccount) {
|
|
|
|
|
|
|
|
res.data.forEach((item) => {
|
|
|
|
|
|
|
|
if (item.account == form.value.customerAccount) {
|
|
|
|
|
|
|
|
invoiceHeadersList.value = item.invoiceHeaders
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item.currency == 'RMB') {
|
|
|
|
|
|
|
|
accountList.value.push(item)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
function onClick({ key }) {
|
|
|
|
function onClick({ key }) {
|
|
|
|
form.value.categoryCode = key
|
|
|
|
form.value.categoryCode = key
|
|
|
|
CategoryData.forEach((item) => {
|
|
|
|
CategoryData.forEach((item) => {
|
|
|
@ -937,7 +1072,6 @@ const allCheck = ref(false)
|
|
|
|
// 部分勾选
|
|
|
|
// 部分勾选
|
|
|
|
const someCheck = ref(false)
|
|
|
|
const someCheck = ref(false)
|
|
|
|
import { feeUnitDict } from '/@/hooks/dict/index'
|
|
|
|
import { feeUnitDict } from '/@/hooks/dict/index'
|
|
|
|
import { t } from 'vxe-table'
|
|
|
|
|
|
|
|
const unitDict = ref([]) as any
|
|
|
|
const unitDict = ref([]) as any
|
|
|
|
// 定义表格所有列
|
|
|
|
// 定义表格所有列
|
|
|
|
const columns = [
|
|
|
|
const columns = [
|
|
|
@ -1236,6 +1370,16 @@ watchEffect(() => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.label {
|
|
|
|
|
|
|
|
margin-right: 5px;
|
|
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
|
|
color: rgba(158, 83, 9, 1);
|
|
|
|
|
|
|
|
flex-shrink: 1;
|
|
|
|
|
|
|
|
display: inline-block;
|
|
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
|
|
min-width: 27px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.SvgImg {
|
|
|
|
.SvgImg {
|
|
|
|
width: 16px;
|
|
|
|
width: 16px;
|
|
|
|
cursor: pointer;
|
|
|
|
cursor: pointer;
|
|
|
|