szh-new
sunzehua 3 months ago
parent 52544a6399
commit dbceaa0491

@ -41,7 +41,7 @@
<div class="bold">申请开票明细</div> <div class="bold">申请开票明细</div>
<div style="display: flex;"> <div style="display: flex;">
<div class="apply" :class="{ active: form.isYB }"> <div class="apply" :class="{ active: form.isYB }">
<a-checkbox v-model:checked="form.isYB" @change="handleChangeApply"> <a-checkbox :disabled="route.query.id ? true : false" v-model:checked="form.isYB" @change="handleChangeApply">
原币申请 原币申请
<span :class="{ rmb: item.currency == 'RMB', yb: item.currency != 'RMB' }" <span :class="{ rmb: item.currency == 'RMB', yb: item.currency != 'RMB' }"
v-for="(item, index) in amountArr" :key="index">{{ item.applyAmount }} v-for="(item, index) in amountArr" :key="index">{{ item.applyAmount }}
@ -50,7 +50,7 @@
</a-checkbox> </a-checkbox>
</div> </div>
<div class="apply" :class="{ active: form.isRMB }"> <div class="apply" :class="{ active: form.isRMB }">
<a-checkbox v-model:checked="form.isRMB" <a-checkbox :disabled="route.query.id ? true : false" v-model:checked="form.isRMB"
@change="handleChangeApply1">折算人民币申请</a-checkbox> @change="handleChangeApply1">折算人民币申请</a-checkbox>
<span class="rmb" v-if="totalRmb != 0">{{ totalRmb }} RMB</span> <span class="rmb" v-if="totalRmb != 0">{{ totalRmb }} RMB</span>
<span></span> <span></span>
@ -121,6 +121,8 @@ import { detailColumns, detailSearchFormSchema, businessTypeList } from '../colu
import { GetBizList, InvoiceApplicationGetFees, GetExchangeRate } from '../api.js' import { GetBizList, InvoiceApplicationGetFees, GetExchangeRate } from '../api.js'
import { useMessage } from '/@/hooks/web/useMessage' import { useMessage } from '/@/hooks/web/useMessage'
const { createMessage } = useMessage() const { createMessage } = useMessage()
import { useRoute } from 'vue-router'
const route = useRoute()
const open = ref(false) const open = ref(false)
const columns = [ const columns = [
{ {
@ -183,7 +185,7 @@ const columns = [
] ]
const queryData = ref({}) as any const queryData = ref({}) as any
const dataSource = ref([]) as any const dataSource = ref([]) as any
const [registerTable, { getForm, setSelectedRowKeys, getSelectRows, setProps, getRawDataSource }] = useTable({ const [registerTable, { getForm, setSelectedRowKeys, getSelectRows, setProps, getRawDataSource, setLoading }] = useTable({
api: async (p) => { api: async (p) => {
const res: API.DataResult = await GetBizList(p) const res: API.DataResult = await GetBizList(p)
return new Promise((resolve) => { return new Promise((resolve) => {
@ -234,7 +236,8 @@ const exchangeFlag = ref(false)
const loading = ref(false) const loading = ref(false)
const form = ref({ const form = ref({
isYB: true isYB: true,
isRMB:false
}) as any }) as any
function handleChangeApply(e) { function handleChangeApply(e) {
form.value.isRMB = !e.target.checked form.value.isRMB = !e.target.checked
@ -326,7 +329,7 @@ function handleClick(record, index) {
loading.value = false loading.value = false
}) })
} }
function init() { function init(data) {
open.value = true open.value = true
setTimeout(() => { setTimeout(() => {
setProps({ setProps({
@ -344,6 +347,14 @@ function init() {
customerId: customerIdP.value customerId: customerIdP.value
}) })
} }
if(data.isRMB){
form.value.isRMB = true
form.value.isYB = false
}
if(data.isYB){
form.value.isYB = true
form.value.isRMB = false
}
}, 500) }, 500)
} }
const rmbTotal = ref(0) const rmbTotal = ref(0)
@ -426,9 +437,18 @@ function mergeByCurrency(arr) {
} }
// //
function addDetailed() { function addDetailed() {
const arr = getSelectRows() ? getSelectRows() : [] const arrRight = getSelectRows() ? getSelectRows() : []
const arr1 = [] const arr1 = []
arr.forEach(item => { const firstCustomerId = arrRight[0].customerId;
const exchangarr = [] as any
setLoading(true)
for (let i = 1; i < arrRight.length; i++) {
if (arrRight[i].customerId !== firstCustomerId) {
createMessage.error('请选择同一客户')
throw new Error('customerId值不一致');
}
}
arrRight.forEach(item => {
if (item.customerId != customerIdP.value) { if (item.customerId != customerIdP.value) {
arr1.push(1) arr1.push(1)
} }
@ -437,20 +457,24 @@ function addDetailed() {
createMessage.error('请选择同一客户') createMessage.error('请选择同一客户')
return false return false
} }
const data = {} as any const queryDataStr = {} as any
if (queryData.value.feeType) { if (queryData.value.feeType) {
data.feeType = queryData.value.feeType queryDataStr.feeType = queryData.value.feeType
} }
if (queryData.value.currency) { if (queryData.value.currency) {
data.currency = queryData.value.currency queryDataStr.currency = queryData.value.currency
} }
if (queryData.value.feeName) { if (queryData.value.feeName) {
data.feeName = queryData.value.feeName queryDataStr.feeName = queryData.value.feeName
} }
if (queryData.value.FeeRange) { if (queryData.value.FeeRange) {
data.FeeRange = queryData.value.FeeRange queryDataStr.FeeRange = queryData.value.FeeRange
} }
const arrRight = getSelectRows() if (arrRight.length == 0) {
createMessage.error('请选择一条数据')
return false
}
if (arrRight.length > 0 && form.value.isRMB) { if (arrRight.length > 0 && form.value.isRMB) {
const data = [] as any const data = [] as any
arrRight.forEach(item => { arrRight.forEach(item => {
@ -459,14 +483,48 @@ function addDetailed() {
businessType: item.businessType businessType: item.businessType
}) })
}) })
InvoiceApplicationGetFees([data]).then(res => { InvoiceApplicationGetFees(data).then(res => {
if (res.succeeded) { if (res.succeeded) {
const arrByex = [] as any
res.data.items.forEach(item => {
if (item.currency != 'RMB' && item.currency != 'CNY') {
arrByex.push(item)
}
})
if (arrByex.length > 0) {
const promises = arrByex.map(item => {
return new Promise((resolve) => {
const data = {
currencyFrom: 'RMB',
currencyTo: item.currency,
feeType: item.feeType
}
GetExchangeRate(data).then(res => {
exchangarr.push(res.data)
resolve(true);
})
});
});
return Promise.all(promises).then(() => {
emits('addLeft', arrRight, queryDataStr, exchangarr,'isRMB')
open.value = false
setLoading(false)
});
} else {
emits('addLeft', arrRight, queryDataStr, [],'isRMB')
open.value = false
setLoading(false)
}
} }
}) })
} }
// emits('addLeft', arr, data)
// open.value = false if (arrRight.length > 0 && form.value.isYB) {
emits('addLeft', arrRight, queryDataStr, [],'isYB')
open.value = false
setLoading(false)
}
} }
const customerIdP = ref('') const customerIdP = ref('')
function changeCustIn(id) { function changeCustIn(id) {
@ -538,4 +596,16 @@ defineExpose({ init, changeCustIn })
font-weight: bold; font-weight: bold;
margin: 0 10px; margin: 0 10px;
} }
/deep/ .ant-checkbox-wrapper-checked .ant-checkbox-inner {
background-color: #257afa;
border-color: #257afa;
}
/deep/ .ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {
border-color: #f5f5f5;
}
/deep/ .ant-checkbox-wrapper-checked .ant-checkbox-disabled+span {
color: #257afa;
}
</style> </style>

@ -188,8 +188,8 @@ import { emit } from 'process'
function updateList(val, type) { function updateList(val, type) {
emits('updateListSave', val, type) emits('updateListSave', val, type)
} }
function addLeft(val,data) { function addLeft(val,data,exchang,type) {
emits('addLeftSave', val,data) emits('addLeftSave', val,data,exchang,type)
} }
const dsFile = ref('') const dsFile = ref('')
const route = useRoute() const route = useRoute()
@ -535,10 +535,12 @@ watchEffect(() => {
}) })
} }
}) })
const resData = ref({})
function init(data) { function init(data) {
list.value = data.invoiceDetails ? data.invoiceDetails : [] list.value = data.invoiceDetails ? data.invoiceDetails : []
hotTb.value.hotInstance.loadData(data.invoiceDetails ? data.invoiceDetails : []) hotTb.value.hotInstance.loadData(data.invoiceDetails ? data.invoiceDetails : [])
dataSource.value = data.details ? data.details : [] dataSource.value = data.details ? data.details : []
resData.value = data
} }
const taxUnitPriceTotal = ref(0) as any const taxUnitPriceTotal = ref(0) as any
@ -590,7 +592,7 @@ watch(
) )
const InvoiceDetailsRef = ref(null) as any const InvoiceDetailsRef = ref(null) as any
function open() { function open() {
InvoiceDetailsRef.value.init() InvoiceDetailsRef.value.init(resData.value)
} }
const selectedRowKeysDetial = ref([]) as any const selectedRowKeysDetial = ref([]) as any
const dataSource = ref([]) const dataSource = ref([])

@ -3,11 +3,11 @@
<a-spin :spinning="loading"> <a-spin :spinning="loading">
<div class="infoclientBox"> <div class="infoclientBox">
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<a-tooltip placement="top" :mouseEnterDelay="0.5"> <a-tooltip placement="top" :mouseEnterDelay="0.5" v-if="route.query.id">
<template #title> <template #title>
<span>新建</span> <span>新建</span>
</template> </template>
<span class="ds-action-svg-btn"> <span @click="handleNew" class="ds-action-svg-btn">
<img src="../../../../assets/svg/infoclient//xinjian.svg" class="SvgImg" /> <img src="../../../../assets/svg/infoclient//xinjian.svg" class="SvgImg" />
</span> </span>
</a-tooltip> </a-tooltip>
@ -39,7 +39,7 @@
<template #title> <template #title>
<span>撤销审核</span> <span>撤销审核</span>
</template> </template>
<span class="ds-action-svg-btn" @click="Withdraw"> <span class="ds-action-svg-btn" @click="handleWithdraw">
<img src="../../../../assets/svg/infoclient/chexiaotijiao.svg" class="SvgImg" /> <img src="../../../../assets/svg/infoclient/chexiaotijiao.svg" class="SvgImg" />
</span> </span>
</a-tooltip> </a-tooltip>
@ -97,7 +97,7 @@
</div> </div>
<div class="apply" :class="{ active: form.isRMB }"> <div class="apply" :class="{ active: form.isRMB }">
<a-checkbox :disabled="true" v-model:checked="form.isRMB">折算人民币申请</a-checkbox> <a-checkbox :disabled="true" v-model:checked="form.isRMB">折算人民币申请</a-checkbox>
<span class="rmb" v-if="totalRmb!=0" >{{ totalRmb }} RMB</span> <span class="rmb" v-if="totalRmb != 0">{{ totalRmb }} RMB</span>
<span></span> <span></span>
</div> </div>
</div> </div>
@ -181,10 +181,12 @@ import {
GetClientBankList, GetClientBankList,
GetOrgList, GetOrgList,
InvoiceApplicationBizSave, InvoiceApplicationBizSave,
GetClientInfo GetClientInfo,
ApplyAudit,
Withdraw
} from '../api' } from '../api'
import { useMessage } from '/@/hooks/web/useMessage' import { useMessage } from '/@/hooks/web/useMessage'
import { useRoute } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { import {
GetControllerClientList, GetControllerClientList,
GetCustomerServiceList, GetCustomerServiceList,
@ -196,6 +198,9 @@ import { useUserStore } from '/@/store/modules/user'
import { set } from 'nprogress' import { set } from 'nprogress'
import { isNamedTupleMember } from 'typescript' import { isNamedTupleMember } from 'typescript'
import { detailColumns } from '../columns' import { detailColumns } from '../columns'
import { get } from 'sortablejs'
import { useMultipleTabStore } from '/@/store/modules/multipleTab'
const tabStore = useMultipleTabStore()
const userStore = useUserStore() const userStore = useUserStore()
const go = useGo() const go = useGo()
const CategoryData = [ const CategoryData = [
@ -673,6 +678,7 @@ const linkageFormBottom = (e) => {
const feeTableRef = ref(null) as any const feeTableRef = ref(null) as any
const open = ref(false) const open = ref(false)
const nameFlag = ref(false) const nameFlag = ref(false)
const router = useRouter()
// invoiceDetails // invoiceDetails
async function handleSave() { async function handleSave() {
// const values = await validate() // const values = await validate()
@ -688,7 +694,11 @@ async function handleSave() {
.then((res) => { .then((res) => {
if (res.succeeded) { if (res.succeeded) {
createMessage.success('保存成功') createMessage.success('保存成功')
const { fullPath } = route //
tabStore.closeTabByKey(fullPath, router)
setTimeout(() => {
go(`/invoiceapplyDetail?id=${res.data.id}`) go(`/invoiceapplyDetail?id=${res.data.id}`)
}, 50)
} else { } else {
createMessage.error(res.message) createMessage.error(res.message)
} }
@ -745,12 +755,18 @@ function openTemp() {
}) })
}) })
} }
function handleChangeApply(e) { function handleApply() {
form.value.isRMB = !e.target.checked ApplyAudit({ ids: [route.query.id] }).then(res => {
if (res.succeeded) {
createMessage.success('操作成功')
getDetail()
}
})
} }
function handleChangeApply1(e) { function handleNew() {
form.value.isYB = !e.target.checked go(`/invoiceapplyDetail?type=add`)
} }
function init() { function init() {
if (id.value) { if (id.value) {
getDetail() getDetail()
@ -780,11 +796,20 @@ function init() {
} }
}) })
} }
function handleWithdraw() {
Withdraw({ ids: [route.query.id] }).then(res => {
if (res.succeeded) {
createMessage.success('操作成功')
getDetail()
}
})
}
function handleAddLabel(val) { function handleAddLabel(val) {
tempContent.value += '[' + val.displayName + ']' tempContent.value += '[' + val.displayName + ']'
} }
const details = ref([]) const details = ref([])
//
function getDetail() { function getDetail() {
InvoiceApplicationGet({ id: id.value }).then((res) => { InvoiceApplicationGet({ id: id.value }).then((res) => {
if (res.succeeded) { if (res.succeeded) {
@ -797,14 +822,19 @@ function getDetail() {
form.value.statusText = res.data.statusText form.value.statusText = res.data.statusText
form.value.applicationNO = res.data.applicationNO form.value.applicationNO = res.data.applicationNO
details.value = res.data.details details.value = res.data.details
feeTableRef.value.init(res.data) feeTableRef.value.changeCust(res.data.customerId)
amountArr.value = []
if (res.data.currency == 'RMB') { if (res.data.currency == 'RMB') {
form.value.isRMB = true form.value.isRMB = true
res.data.isRMB = true
res.data.isYB = false
res.data.summaryItems.forEach(item => { res.data.summaryItems.forEach(item => {
totalRmb.value += Number(item.amount) totalRmb.value += Number(item.amount)
}) })
} else { } else {
form.value.isYB = true form.value.isYB = true
res.data.isRMB = false
res.data.isYB = true
res.data.summaryItems.forEach(item => { res.data.summaryItems.forEach(item => {
amountArr.value.push({ amountArr.value.push({
currency: item.currency, currency: item.currency,
@ -812,6 +842,7 @@ function getDetail() {
}) })
}) })
} }
feeTableRef.value.init(res.data)
} }
}) })
} }
@ -933,7 +964,11 @@ function updateListSave(arr, type) {
.then((res) => { .then((res) => {
if (res.succeeded) { if (res.succeeded) {
createMessage.success('保存成功') createMessage.success('保存成功')
const { fullPath } = route //
tabStore.closeTabByKey(fullPath, router)
setTimeout(() => {
go(`/invoiceapplyDetail?id=${res.data.id}`) go(`/invoiceapplyDetail?id=${res.data.id}`)
}, 50)
} else { } else {
createMessage.error(res.message) createMessage.error(res.message)
} }
@ -947,7 +982,7 @@ function updateListSave(arr, type) {
} }
// //
function addLeftSave(arr,query) { function addLeftSave(arr, query, exchang, type) {
loading.value = true loading.value = true
changeCust(arr[0].customerId, arr[0].customerName).then(res => { changeCust(arr[0].customerId, arr[0].customerName).then(res => {
const itemList = [] as any const itemList = [] as any
@ -965,14 +1000,25 @@ function addLeftSave(arr,query) {
...form.value, ...form.value,
invoiceDetails: feeTableRef.value.list, invoiceDetails: feeTableRef.value.list,
}, },
exchanges: exchang,
items: itemList, items: itemList,
queryString: JSON.stringify(query) queryString: Object.keys(query).length != 0 ? JSON.stringify(query) : ''
}
if (type == 'isRMB') {
data.application.currency = 'RMB'
}
if (type == 'isYB') {
data.application.currency = ''
} }
InvoiceApplicationBizSave(data) InvoiceApplicationBizSave(data)
.then((res) => { .then((res) => {
if (res.succeeded) { if (res.succeeded) {
createMessage.success('保存成功') createMessage.success('保存成功')
const { fullPath } = route //
tabStore.closeTabByKey(fullPath, router)
setTimeout(() => {
go(`/invoiceapplyDetail?id=${res.data.id}`) go(`/invoiceapplyDetail?id=${res.data.id}`)
}, 50)
} else { } else {
createMessage.error(res.message) createMessage.error(res.message)
} }
@ -995,7 +1041,14 @@ function handleRender() {
id: id.value, id: id.value,
template: temp, template: temp,
} }
RenderTemplate(data).then((res) => { }) RenderTemplate(data).then((res) => {
if (res.succeeded) {
marksetFieldsValue({
note: res.data
})
nameFlag.value = false
}
})
} }
const tempName = ref('') const tempName = ref('')
const tempId = ref('') const tempId = ref('')

Loading…
Cancel
Save