commit
This commit is contained in:
+140
-116
@@ -439,6 +439,11 @@ layout("/layouts/platform_h5.html"){
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-cell v-if="getProjectTipByProject(formData.reimburseProject)">
|
||||
<template #title>
|
||||
<span style="color: #ee0a24; text-align: left;">报销提示:{{getProjectTipByProject(formData.reimburseProject)}}</span>
|
||||
</template>
|
||||
</van-cell>
|
||||
<van-popup position="bottom" round v-model:show="showReimburseProjectPicker">
|
||||
<van-picker :columns="reimburseProjectColumns" @cancel="closePopup('showReimburseProjectPicker')"
|
||||
@confirm="onReimburseProjectConfirm" show-toolbar></van-picker>
|
||||
@@ -528,120 +533,6 @@ layout("/layouts/platform_h5.html"){
|
||||
-->
|
||||
|
||||
</van-cell-group>
|
||||
<van-cell-group class="form-section">
|
||||
<div class="payment-section">
|
||||
<div class="payment-toolbar">
|
||||
<span>支付信息</span>
|
||||
<van-button native-type="button" size="small" type="primary" icon="plus" @click="addPaymentInfo">新增</van-button>
|
||||
</div>
|
||||
<div class="invoice-tip" v-if="!paymentInfoRows.length">请至少维护一条支付信息。</div>
|
||||
<van-swipe
|
||||
ref="paymentSwipe"
|
||||
class="payment-swipe"
|
||||
:loop="false"
|
||||
:show-indicators="false"
|
||||
@change="handlePaymentSwipeChange"
|
||||
v-if="paymentInfoRows.length">
|
||||
<van-swipe-item v-for="(item, index) in paymentInfoRows" :key="index">
|
||||
<div class="payment-detail-item">
|
||||
<div class="payment-detail-title">
|
||||
<div class="payment-title-left">
|
||||
<span>支付信息{{index + 1}}</span>
|
||||
<span class="payment-index-text">{{index + 1}} / {{paymentInfoRows.length}}</span>
|
||||
</div>
|
||||
<van-tag v-if="item.paymentWayName" type="primary">{{item.paymentWayName}}</van-tag>
|
||||
</div>
|
||||
<van-field
|
||||
v-model="item.paymentWayName"
|
||||
label="支付方式"
|
||||
readonly
|
||||
placeholder="请选择支付方式"
|
||||
@click="openPaymentWayPicker(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="金额"
|
||||
v-model="item.money"
|
||||
placeholder="请输入金额"
|
||||
type="number"
|
||||
required
|
||||
></van-field>
|
||||
<template v-if="isPrivatePayment(item)">
|
||||
<van-field
|
||||
v-model="item.payerName"
|
||||
label="付款人"
|
||||
readonly
|
||||
placeholder="请选择付款人"
|
||||
@click="openPayerSelect(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="户名"
|
||||
v-model="item.bankUserName"
|
||||
placeholder="请输入户名"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="开户行"
|
||||
v-model="item.bankOfDeposit"
|
||||
placeholder="请输入开户行"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="银行卡号"
|
||||
v-model="item.bankCardNumber"
|
||||
placeholder="请输入银行卡号"
|
||||
required
|
||||
></van-field>
|
||||
</template>
|
||||
<div class="payment-detail-actions">
|
||||
<div class="payment-nav-buttons">
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex > 0}" @click="showPrevPayment">
|
||||
<van-icon name="arrow-left"></van-icon>
|
||||
</span>
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex < paymentInfoRows.length - 1}" @click="showNextPayment">
|
||||
<van-icon name="arrow"></van-icon>
|
||||
</span>
|
||||
</div>
|
||||
<van-button class="payment-delete-btn" native-type="button" size="small" plain type="danger" icon="delete-o" @click="deletePaymentInfo(index)">删除</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</van-swipe-item>
|
||||
</van-swipe>
|
||||
<div class="payment-dots" v-if="paymentInfoRows.length > 1">
|
||||
<span class="payment-dot" :class="{active: index === currentPaymentIndex}" v-for="(item, index) in paymentInfoRows"></span>
|
||||
</div>
|
||||
</div>
|
||||
<van-popup position="bottom" round v-model:show="showPaymentWayPicker">
|
||||
<van-picker :columns="paymentWayColumns" @cancel="closePopup('showPaymentWayPicker')"
|
||||
@confirm="onPaymentWayConfirm" show-toolbar></van-picker>
|
||||
</van-popup>
|
||||
<van-action-sheet v-model="payerSelectShow" title="付款人" class="height100">
|
||||
<van-search
|
||||
v-model="payerSearchKeyword"
|
||||
:show-action="false"
|
||||
:reverse-color="false"
|
||||
input-align="left"
|
||||
placeholder="请输入工号或姓名选择付款人"
|
||||
@input="payerRemoteMethod"
|
||||
@clear="payerRemoteMethod"
|
||||
shape="round"
|
||||
></van-search>
|
||||
<div class="van-action-sheet__content mt5" v-if="payerOptions && payerOptions.length>0">
|
||||
<template v-for="item in payerOptions">
|
||||
<van-button native-type="button" @click="payerUserChange(item)"
|
||||
class="van-action-sheet__item van-hairline--bottom">
|
||||
<span class="van-action-sheet__name">{{item.userName}}({{item.loginName}})</span>
|
||||
</van-button>
|
||||
</template>
|
||||
</div>
|
||||
<van-empty description="暂无数据" v-else></van-empty>
|
||||
</van-action-sheet>
|
||||
</van-cell-group>
|
||||
<van-cell-group :title="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1' ? '慰问信息' : '活动信息'" class="form-section">
|
||||
|
||||
<template v-if="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">
|
||||
@@ -921,6 +812,120 @@ layout("/layouts/platform_h5.html"){
|
||||
</template>
|
||||
</van-field>
|
||||
</van-cell-group>
|
||||
<van-cell-group class="form-section">
|
||||
<div class="payment-section">
|
||||
<div class="payment-toolbar">
|
||||
<span>支付信息</span>
|
||||
<van-button native-type="button" size="small" type="primary" icon="plus" @click="addPaymentInfo">新增</van-button>
|
||||
</div>
|
||||
<div class="invoice-tip" v-if="!paymentInfoRows.length">请至少维护一条支付信息。</div>
|
||||
<van-swipe
|
||||
ref="paymentSwipe"
|
||||
class="payment-swipe"
|
||||
:loop="false"
|
||||
:show-indicators="false"
|
||||
@change="handlePaymentSwipeChange"
|
||||
v-if="paymentInfoRows.length">
|
||||
<van-swipe-item v-for="(item, index) in paymentInfoRows" :key="index">
|
||||
<div class="payment-detail-item">
|
||||
<div class="payment-detail-title">
|
||||
<div class="payment-title-left">
|
||||
<span>支付信息{{index + 1}}</span>
|
||||
<span class="payment-index-text">{{index + 1}} / {{paymentInfoRows.length}}</span>
|
||||
</div>
|
||||
<van-tag v-if="item.paymentWayName" type="primary">{{item.paymentWayName}}</van-tag>
|
||||
</div>
|
||||
<van-field
|
||||
v-model="item.paymentWayName"
|
||||
label="支付方式"
|
||||
readonly
|
||||
placeholder="请选择支付方式"
|
||||
@click="openPaymentWayPicker(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="金额"
|
||||
v-model="item.money"
|
||||
placeholder="请输入金额"
|
||||
type="number"
|
||||
required
|
||||
></van-field>
|
||||
<template v-if="isPrivatePayment(item)">
|
||||
<van-field
|
||||
v-model="item.payerName"
|
||||
label="付款人"
|
||||
readonly
|
||||
placeholder="请选择付款人"
|
||||
@click="openPayerSelect(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="户名"
|
||||
v-model="item.bankUserName"
|
||||
placeholder="请输入户名"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="开户行"
|
||||
v-model="item.bankOfDeposit"
|
||||
placeholder="请输入开户行"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="银行卡号"
|
||||
v-model="item.bankCardNumber"
|
||||
placeholder="请输入银行卡号"
|
||||
required
|
||||
></van-field>
|
||||
</template>
|
||||
<div class="payment-detail-actions">
|
||||
<div class="payment-nav-buttons">
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex > 0}" @click="showPrevPayment">
|
||||
<van-icon name="arrow-left"></van-icon>
|
||||
</span>
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex < paymentInfoRows.length - 1}" @click="showNextPayment">
|
||||
<van-icon name="arrow"></van-icon>
|
||||
</span>
|
||||
</div>
|
||||
<van-button class="payment-delete-btn" native-type="button" size="small" plain type="danger" icon="delete-o" @click="deletePaymentInfo(index)">删除</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</van-swipe-item>
|
||||
</van-swipe>
|
||||
<div class="payment-dots" v-if="paymentInfoRows.length > 1">
|
||||
<span class="payment-dot" :class="{active: index === currentPaymentIndex}" v-for="(item, index) in paymentInfoRows"></span>
|
||||
</div>
|
||||
</div>
|
||||
<van-popup position="bottom" round v-model:show="showPaymentWayPicker">
|
||||
<van-picker :columns="paymentWayColumns" @cancel="closePopup('showPaymentWayPicker')"
|
||||
@confirm="onPaymentWayConfirm" show-toolbar></van-picker>
|
||||
</van-popup>
|
||||
<van-action-sheet v-model="payerSelectShow" title="付款人" class="height100">
|
||||
<van-search
|
||||
v-model="payerSearchKeyword"
|
||||
:show-action="false"
|
||||
:reverse-color="false"
|
||||
input-align="left"
|
||||
placeholder="请输入工号或姓名选择付款人"
|
||||
@input="payerRemoteMethod"
|
||||
@clear="payerRemoteMethod"
|
||||
shape="round"
|
||||
></van-search>
|
||||
<div class="van-action-sheet__content mt5" v-if="payerOptions && payerOptions.length>0">
|
||||
<template v-for="item in payerOptions">
|
||||
<van-button native-type="button" @click="payerUserChange(item)"
|
||||
class="van-action-sheet__item van-hairline--bottom">
|
||||
<span class="van-action-sheet__name">{{item.userName}}({{item.loginName}})</span>
|
||||
</van-button>
|
||||
</template>
|
||||
</div>
|
||||
<van-empty description="暂无数据" v-else></van-empty>
|
||||
</van-action-sheet>
|
||||
</van-cell-group>
|
||||
<van-cell-group title="电子发票" class="form-section" v-if="formData.reimburseProject">
|
||||
<van-field label="报销金额"
|
||||
v-model="formData.money"
|
||||
@@ -1186,6 +1191,7 @@ layout("/layouts/platform_h5.html"){
|
||||
clubOptions: [],
|
||||
condolenceOptions: [],
|
||||
typeOptions: [],
|
||||
descOptions: [],
|
||||
// 添加报销项目原始数据列表
|
||||
reimburseProjectList: [],
|
||||
// 添加日期选择器相关变量
|
||||
@@ -2025,7 +2031,7 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
this.$dialog.confirm({
|
||||
title: "温馨提示",
|
||||
message: "您确定要提交吗?"
|
||||
message: "您确定要提交吗?审核通过后可前往pc端我的报销打印!"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/unionReimburse/apply/submit", { data: JSON.stringify(this.buildSubmitFormData(paymentDetails)) })
|
||||
.then(res => {
|
||||
@@ -2064,7 +2070,7 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
this.$dialog.confirm({
|
||||
title: "温馨提示",
|
||||
message: "您确定要提交吗?"
|
||||
message: "您确定要提交吗?审核通过后可前往pc端我的报销打印!"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/unionReimburse/apply/submitAgain", {
|
||||
data: JSON.stringify(this.buildSubmitFormData(paymentDetails)),
|
||||
@@ -2195,6 +2201,23 @@ layout("/layouts/platform_h5.html"){
|
||||
const matchedFundSource = this.reimburseFundSourceColumns.find(item => item.value === code)
|
||||
return matchedFundSource ? matchedFundSource.text : ""
|
||||
},
|
||||
// 查询管理端配置的报销项目提示。
|
||||
queryProjectDesc() {
|
||||
return this.$axios.post("/platform/unionReimburse/desc/queryFileDesc")
|
||||
.then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.$set(this, "descOptions", resp.data || [])
|
||||
}
|
||||
})
|
||||
},
|
||||
// 根据当前选择的报销项目获取管理端配置的提示内容。
|
||||
getProjectTipByProject(projectCode) {
|
||||
if (!this.descOptions || !Array.isArray(this.descOptions)) {
|
||||
return ""
|
||||
}
|
||||
const project = this.descOptions.find(item => item.reimburseProject === projectCode)
|
||||
return project ? project.projectTip : ""
|
||||
},
|
||||
async initDictOptions() {
|
||||
// 报销类别
|
||||
const reimburseTypeData = await this.$businessTool.getDictOptions("UNION_REIMBURSE_TYPE")
|
||||
@@ -2558,6 +2581,7 @@ layout("/layouts/platform_h5.html"){
|
||||
|
||||
async created() {
|
||||
await this.initDictOptions()
|
||||
await this.queryProjectDesc()
|
||||
await this.queryCondolenceType()
|
||||
await this.queryClubs()
|
||||
await this.init()
|
||||
|
||||
Reference in New Issue
Block a user