From fb16e99d60035949b870d0bed7f38b452458000a Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期四, 15 十月 2026 15:10:00 +0800
Subject: [PATCH] 修改了专家费校验和附件名字校验
---
src/views/project/fund/applyDetail/index.vue | 1952 ++++++++++++++++++++++++++--------------------------------
1 files changed, 883 insertions(+), 1,069 deletions(-)
diff --git a/src/views/project/fund/applyDetail/index.vue b/src/views/project/fund/applyDetail/index.vue
index 4d86eb7..640f424 100644
--- a/src/views/project/fund/applyDetail/index.vue
+++ b/src/views/project/fund/applyDetail/index.vue
@@ -7,45 +7,22 @@
<el-row>
<el-col :span="5">
<el-form-item label="鎶ラ攢鍗曞彿" prop="bh">
- <el-input
- v-model="form.bh"
- :disabled="true"
- placeholder="鎶ラ攢鍗曞彿"
- clearable
- />
+ <el-input v-model="form.bh" :disabled="true" placeholder="鎶ラ攢鍗曞彿" clearable />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="鐢宠鏃ユ湡" prop="applyTime">
- <el-date-picker
- clearable
- :disabled="true"
- style="width: 100%"
- v-model="form.applyTime"
- type="date"
- value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="鏃� 鏈�"
- >
+ <el-date-picker clearable :disabled="true" style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd HH:mm:ss" placeholder="鏃� 鏈�">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="缁忓姙浜�" prop="username">
- <el-select
- v-model="form.username"
- placeholder="鐢宠浜�"
- clearable
- filterable
- allow-create
- style="width: 100%"
- @change="getUserAccount"
- >
- <el-option
- v-for="dict in userlist"
- :key="dict.index"
- :label="dict.nickname"
- :value="dict.nickname"
- ></el-option>
+ <el-select v-model="form.username" placeholder="鐢宠浜�" clearable filterable allow-create style="width: 100%"
+ @change="getUserAccount">
+ <el-option v-for="dict in userlist" :key="dict.index" :label="dict.nickname"
+ :value="dict.nickname"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -72,41 +49,33 @@
</el-col>
<el-col :span="5" v-if="ismanager == true">
<el-form-item label="鐢宠閲戦" prop="pretaxcost">
- <el-input
- v-model="form.pretaxcost"
- placeholder="绋庡墠閲戦鍚堣"
- :disabled="true"
- />
+ <el-input v-model="form.pretaxcost" placeholder="绋庡墠閲戦鍚堣" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="鎵�灞炵粍鍒�" prop="deptmentname">
- <el-input
- v-model="form.deptmentname"
- placeholder="璇疯緭鍏ユ墍灞炵粍鍒�"
- clearable
- />
+ <el-input v-model="form.deptmentname" placeholder="璇疯緭鍏ユ墍灞炵粍鍒�" clearable />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="缁勯暱" prop="managername">
- <el-input
- v-model="form.managername"
- placeholder="璇疯緭鍏ョ粍闀�"
- clearable
- />
+ <el-input v-model="form.managername" placeholder="璇疯緭鍏ョ粍闀�" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row style="text-align: left">
<el-col :span="5">
<el-form-item label="鎹愮尞妗堜緥" prop="name">
- <el-input
- :disabled="true"
- v-model="form.donorname"
- placeholder="璇疯緭鍏ユ崘鐚�呭鍚�"
- />
+ <el-input :disabled="true" v-model="form.donorname" placeholder="璇疯緭鍏ユ崘鐚�呭鍚�" />
</el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <div style="margin-left: 10px;">
+ <dict-tag
+ :options="dict.type.sys_DonationStatus"
+ :value="form.invoicecount"
+ />
+ </div>
</el-col>
<el-col :span="10">
<el-form-item label="鐢宠璇存槑" prop="remark">
@@ -127,35 +96,20 @@
<el-row v-if="jurisdiction">
<!-- <el-alert title="褰撳墠涓烘煡鐪嬬姸鎬侊紝涓嶆敮鎸佷慨鏀瑰瓨鍌ㄣ��" type="warning">
</el-alert> -->
- <el-alert
- title="褰撳墠涓烘煡鐪嬬姸鎬侊紝涓嶆敮鎸佷慨鏀瑰瓨鍌ㄣ��"
- type="warning"
- show-icon
- >
+ <el-alert title="褰撳墠涓烘煡鐪嬬姸鎬侊紝涓嶆敮鎸佷慨鏀瑰瓨鍌ㄣ��" type="warning" show-icon>
</el-alert>
</el-row>
<el-row>
<el-col :span="3" v-if="businessType == '1'">
<div style="margin-bottom: 15px;">
- <el-button
- type="primary"
- icon="el-icon-download"
- size="small"
- @click.native.prevent="importFeeItems"
- >
+ <el-button type="primary" icon="el-icon-download" size="small" @click.native.prevent="importFeeItems">
鎵归噺瀵煎叆鏈嶅姟椤圭洰
</el-button>
</div>
</el-col>
<el-col :span="3" v-if="businessType == 2">
<div style="margin-bottom: 15px;">
- <el-button
- type="primary"
- icon="el-icon-download"
- size="small"
- @click="Batchentry"
- >鎵归噺褰曞叆涓撳</el-button
- >
+ <el-button type="primary" icon="el-icon-download" size="small" @click="Batchentry">鎵归噺褰曞叆涓撳</el-button>
</div>
</el-col>
<!-- <el-col
@@ -177,346 +131,155 @@
</el-col> -->
</el-row>
<el-row>
- <el-table
- :data="rbDetails"
- v-loading="loading"
- max-height="800"
- border
- highlight-current-row
- >
- <el-table-column
- prop="orderno"
- align="center"
- label="搴忓彿"
- width="88"
- >
+ <el-table :data="rbDetails" v-loading="loading" max-height="800" border highlight-current-row>
+ <el-table-column prop="orderno" align="center" label="搴忓彿" width="88">
<template slot-scope="scope">
<el-input v-model="scope.row.orderno" placeholder="搴忓彿" />
</template>
</el-table-column>
- <el-table-column
- prop="applytype"
- align="center"
- label="鏈嶅姟绫诲瀷"
- width="200"
- >
+ <el-table-column prop="applytype" align="center" label="鏈嶅姟绫诲瀷" width="200">
<template slot-scope="scope">
- <el-select
- v-model="scope.row.applytype"
- placeholder="璇烽�夋嫨鏈嶅姟绫诲瀷"
- @change="verifyFeeItemType(scope.row)"
- >
- <el-option
- v-for="dict in rowfeeItemTypes"
- :key="dict.index"
- :label="dict.label"
- :value="dict.value"
- ></el-option>
+ <el-select v-model="scope.row.applytype" placeholder="璇烽�夋嫨鏈嶅姟绫诲瀷" @change="verifyFeeItemType(scope.row)">
+ <el-option v-for="dict in rowfeeItemTypes" :key="dict.index" :label="dict.label"
+ :value="dict.value"></el-option>
</el-select>
</template>
</el-table-column>
- <el-table-column
- prop="itemid"
- align="center"
- label="鏈嶅姟椤圭洰"
- width="260"
- >
+ <el-table-column prop="itemid" align="center" label="鏈嶅姟椤圭洰" width="260">
<template slot-scope="scope">
- <el-select
- v-model="scope.row.itemid"
- placeholder="璇烽�夋嫨鏈嶅姟椤圭洰"
- filterable
- @change="verifyFeeItem(scope.row)"
- :filter-method="val => searchItemType(val, scope)"
- >
- <el-option
- v-for="dict in scope.row.itemlist"
- :key="dict.index"
- :label="dict.itemName"
- :value="dict.id"
- ></el-option>
+ <el-select v-model="scope.row.itemid" placeholder="璇烽�夋嫨鏈嶅姟椤圭洰" filterable
+ @change="verifyFeeItem(scope.row)" :filter-method="val => searchItemType(val, scope)">
+ <el-option v-for="dict in scope.row.itemlist" :key="dict.index" :label="dict.itemName"
+ :value="dict.id"></el-option>
</el-select>
</template>
</el-table-column>
- <el-table-column
- prop="servicesscope"
- align="center"
- label="鏈嶅姟璇存槑"
- v-if="businessType == '1'"
- width="180"
- >
+ <el-table-column prop="servicesscope" align="center" label="鏈嶅姟璇存槑" v-if="businessType == '1'" width="180">
<template slot-scope="scope">
- <el-select
- v-model="scope.row.servicesscope"
- placeholder="鏈嶅姟璇存槑"
- clearable
- allow-create
- @change="verifyFeeRemark(scope.row)"
- >
- <el-option
- v-for="dict in scope.row.rowfeeblocks"
- :key="dict.servicesscope"
- :label="dict.remark"
- :value="dict.servicesscope"
- ></el-option>
+ <el-select v-model="scope.row.servicesscope" placeholder="鏈嶅姟璇存槑" clearable allow-create
+ @change="verifyFeeRemark(scope.row)">
+ <el-option v-for="dict in scope.row.rowfeeblocks" :key="dict.servicesscope" :label="dict.remark"
+ :value="dict.servicesscope"></el-option>
</el-select>
</template>
</el-table-column>
- <el-table-column
- prop="price"
- align="center"
- label="鍗曚环"
- width="120"
- v-if="businessType == 4"
- >
+ <el-table-column prop="price" align="center" label="鍗曚环" width="120" v-if="businessType == 4">
<template slot-scope="scope">
- <el-input
- v-model="scope.row.price"
- placeholder="鍗曚环"
- @blur="
- val => {
- sumTotalFee(scope.row);
- }
- "
- />
+ <el-input v-model="scope.row.price" placeholder="鍗曚环" @blur="
+ val => {
+ sumTotalFee(scope.row);
+ }
+ " />
</template>
</el-table-column>
- <el-table-column
- prop="quantity"
- align="center"
- label="鏁伴噺"
- width="120"
- v-if="businessType == 4"
- >
+ <el-table-column prop="quantity" align="center" label="鏁伴噺" width="120" v-if="businessType == 4">
<template slot-scope="scope">
- <el-input
- v-model="scope.row.quantity"
- placeholder="鏁伴噺"
- @blur="
- val => {
- sumTotalFee(scope.row);
- }
- "
- />
+ <el-input v-model="scope.row.quantity" placeholder="鏁伴噺" @blur="
+ val => {
+ sumTotalFee(scope.row);
+ }
+ " />
</template>
</el-table-column>
- <el-table-column
- prop="amount"
- align="center"
- :label="amountlabel"
- width="120"
- >
+ <el-table-column prop="amount" align="center" :label="amountlabel" width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.amount" placeholder="閲戦" />
</template>
</el-table-column>
- <el-table-column
- prop="taxamount"
- align="center"
- label="鎵g◣閲戦"
- width="120"
- v-if="
- ismanager == true &&
- (businessType == '1' || businessType == '2')
- "
- >
+ <el-table-column prop="taxamount" align="center" label="鎵g◣閲戦" width="120" v-if="
+ ismanager == true &&
+ (businessType == '1' || businessType == '2')
+ ">
<template slot-scope="scope">
- <el-input
- v-model="scope.row.taxamount"
- placeholder="鎵g◣閲戦"
- />
+ <el-input v-model="scope.row.taxamount" placeholder="鎵g◣閲戦" />
</template>
</el-table-column>
- <el-table-column
- prop="taxedamount"
- align="center"
- label="绋庡悗閲戦"
- width="120"
- v-if="
- ismanager == true &&
- (businessType == '1' || businessType == '2')
- "
- >
+ <el-table-column prop="taxedamount" align="center" label="绋庡悗閲戦" width="120"
+ v-if="businessType == '1' || businessType == '2'">
<template slot-scope="scope">
- <el-input
- v-model="scope.row.taxedamount"
- placeholder="绋庡悗閲戦"
- />
+ <el-input v-model="scope.row.taxedamount" placeholder="绋庡悗閲戦" />
</template>
</el-table-column>
- <el-table-column
- prop="beneficiaryname"
- column-key="sdad"
- align="center"
- :label="beneficiarylabel"
- width="200"
- >
+ <el-table-column prop="beneficiaryname" column-key="sdad" align="center" :label="beneficiarylabel"
+ width="200">
<template slot-scope="scope">
- <el-button
- type="primary"
- plain
- @click="showSelectionDialog(scope, 'account')"
- >{{
- scope.row.beneficiaryname
- ? scope.row.beneficiaryname
- : "鐐瑰嚮閫夋嫨"
- }}</el-button
- >
+ <el-button type="primary" plain @click="showSelectionDialog(scope, 'account')">{{
+ scope.row.beneficiaryname
+ ? scope.row.beneficiaryname
+ : "鐐瑰嚮閫夋嫨"
+ }}</el-button>
</template>
</el-table-column>
- <el-table-column
- prop="unitno"
- align="center"
- label="涓撳鎵�鍦ㄥ崟浣�"
- width="250"
- v-if="businessType == '1' || businessType == '2'"
- >
+ <el-table-column prop="unitno" align="center" label="涓撳鎵�鍦ㄥ崟浣�" width="250"
+ v-if="businessType == '1' || businessType == '2'">
<template slot-scope="scope">
- <el-button
- type="primary"
- plain
- @click="showSelectionDialog(scope, 'workunit')"
- >{{
- scope.row.unitname ? scope.row.unitname : "鐐瑰嚮閫夋嫨"
- }}</el-button
- >
+ <el-button type="primary" plain @click="showSelectionDialog(scope, 'workunit')">{{
+ scope.row.unitname ? scope.row.unitname : "鐐瑰嚮閫夋嫨"
+ }}</el-button>
</template>
</el-table-column>
- <el-table-column
- prop="title"
- align="center"
- label="鑱岀О"
- width="120"
- v-if="businessType == '1' || businessType == '2'"
- >
+ <el-table-column prop="title" align="center" label="鑱岀О" width="120"
+ v-if="businessType == '1' || businessType == '2'">
<template slot-scope="scope">
<el-input v-model="scope.row.title" placeholder="鑱岀О" />
</template>
</el-table-column>
- <el-table-column
- prop="idcardno"
- align="center"
- label="韬唤璇佸彿"
- width="200"
- v-if="businessType == '1' || businessType == '2'"
- >
+ <el-table-column prop="idcardno" align="center" label="韬唤璇佸彿" width="200"
+ v-if="businessType == '1' || businessType == '2'">
<template slot-scope="scope">
<el-form-item label-width="0">
- <el-input
- :disabled="userprofile.nickName != '闄堟厱鍗�'"
- v-model.number="scope.row.idcardno"
- @input="tableParValueChange1(scope.row)"
- placeholder="韬唤璇佸彿"
- />
+ <el-input :disabled="userprofile.nickName != '闄堟厱鍗�' || scope.row.isunit == 1"
+ :placeholder="scope.row.isunit == 1 ? '鍗曚綅鏃犻渶濉啓' : '韬唤璇佸彿'"
+ v-model.number="scope.row.idcardno" @input="tableParValueChange1(scope.row)" />
</el-form-item>
</template>
</el-table-column>
- <el-table-column
- prop="depositbank"
- align="center"
- label="寮�鎴烽摱琛�"
- width="200"
- >
+ <el-table-column prop="depositbank" align="center" label="寮�鎴烽摱琛�" width="200">
<template slot-scope="scope">
- <el-input
- :disabled="userprofile.nickName != '闄堟厱鍗�'"
- v-model="scope.row.depositbank"
- placeholder="寮�鎴烽摱琛�"
- />
+ <el-input :disabled="userprofile.nickName != '闄堟厱鍗�'" v-model="scope.row.depositbank"
+ placeholder="寮�鎴烽摱琛�" />
</template>
</el-table-column>
- <el-table-column
- prop="bankcardno"
- align="center"
- label="閾惰甯愬彿"
- width="210"
- >
+ <el-table-column prop="bankcardno" align="center" label="閾惰甯愬彿" width="210">
<template slot-scope="scope">
- <el-input
- :disabled="userprofile.nickName != '闄堟厱鍗�'"
- v-model="scope.row.bankcardno"
- placeholder="閾惰甯愬彿"
- />
+ <el-input :disabled="userprofile.nickName != '闄堟厱鍗�'" v-model="scope.row.bankcardno" placeholder="閾惰甯愬彿" />
</template>
</el-table-column>
- <el-table-column
- prop="itemdescrisca"
- align="center"
- width="330"
- label="椤圭洰璇存槑"
- >
+ <el-table-column prop="itemdescrisca" align="center" width="330" label="椤圭洰璇存槑">
<template slot-scope="scope">
- <el-input
- type="textarea"
- :rows="2"
- v-model="scope.row.itemdescribe"
- placeholder="椤圭洰璇存槑"
- />
+ <el-input type="textarea" :rows="2" v-model="scope.row.itemdescribe" placeholder="椤圭洰璇存槑" />
</template>
</el-table-column>
- <el-table-column
- prop="remark"
- align="center"
- width="330"
- label="澶囨敞"
- v-show="ismanager == true"
- >
+ <el-table-column prop="remark" align="center" width="330" label="澶囨敞" v-show="ismanager == true">
<template slot-scope="scope">
- <el-input
- type="textarea"
- :rows="2"
- v-model="scope.row.remark"
- placeholder="澶囨敞"
- />
+ <el-input type="textarea" :rows="2" v-model="scope.row.remark" placeholder="澶囨敞" />
</template>
</el-table-column>
- <el-table-column
- fixed="right"
- align="center"
- label="鎿嶄綔"
- width="180"
- >
+ <el-table-column fixed="right" align="center" label="鎿嶄綔" width="180">
<template slot-scope="scope">
- <el-button
- type="text"
- size="mini"
- @click="addRow(scope.$index)"
- v-if="
+ <el-button type="text" size="mini" @click="addRow(scope.$index)" v-if="
+ operationType == 'add' ||
+ operationType == 'update' ||
+ operationType == 'check'
+ ">鏂板</el-button>
+ <el-button @click.native.prevent="
+ deleteRows(scope.row, scope.$index, rbDetails)
+ " type="text" size="small" v-if="
operationType == 'add' ||
- operationType == 'update' ||
- operationType == 'check'
- "
- >鏂板</el-button
- >
- <el-button
- @click.native.prevent="
- deleteRows(scope.row, scope.$index, rbDetails)
- "
- type="text"
- size="small"
- v-if="
- operationType == 'add' ||
- operationType == 'update' ||
- operationType == 'check'
- "
- >
+ operationType == 'update' ||
+ operationType == 'check'
+ ">
鍒犻櫎
</el-button>
- <el-button
- @click.native.prevent="
- Filepopup(scope.$index, rbDetails, scope.row)
- "
- type="text"
- size="small"
- v-if="
+ <el-button @click.native.prevent="
+ Filepopup(scope.$index, rbDetails, scope.row)
+ " type="text" size="small" v-if="
businessType == 2 ||
- businessType == 3 ||
- businessType == 4 ||
- businessType == 1
- "
- >绁ㄦ嵁</el-button
- >
+ businessType == 3 ||
+ businessType == 4 ||
+ businessType == 1
+ ">绁ㄦ嵁</el-button>
</template>
</el-table-column>
</el-table>
@@ -524,55 +287,20 @@
<el-row>
<el-col :span="12">
- <el-form-item
- label="璐圭敤鐢宠闄勪欢"
- align="left"
- prop="annexbankcard"
- v-if="businessType == 0"
- >
- <el-upload
- size="mini"
- class="upload-demo"
- :action="uploadFileUrl"
- :file-list="fileListto"
- :show-file-list="false"
- multiple
- drag
- :headers="headers"
- :on-success="
- (response, file, fileList) =>
- uploadSccess(response, file, fileList)
- "
- :on-preview="downFile"
- :disabled="operationType == 'detail'"
- :on-error="handleUploadError"
- :on-remove="remove"
- accept="image/*,.pdf"
- >
+ <el-form-item label="璐圭敤鐢宠闄勪欢" align="left" prop="annexbankcard" v-if="businessType == 0">
+ <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileListto"
+ :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
+ uploadSccess(response, file, fileList)
+ " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
+ :on-remove="remove" accept="image/*,.pdf">
<i class="el-icon-upload"></i>
<div class="el-upload__text">
灏嗙エ鎹嫋鍒版澶勶紝鎴�
- <em
- ><el-button
- :disabled="operationType == 'detail'"
- size="small"
- type="primary"
- >鐐瑰嚮涓婁紶</el-button
- ></em
- >
+ <em><el-button :disabled="operationType == 'detail'" size="small" type="primary">鐐瑰嚮涓婁紶</el-button></em>
</div>
</el-upload>
- <el-table
- :data="fileListto"
- @row-click="downFile"
- style="width: 100%"
- height="400"
- >
- <el-table-column
- prop="name"
- :show-overflow-tooltip="true"
- label="鍚嶇О"
- >
+ <el-table :data="fileListto" @row-click="downFile" style="width: 100%" height="400">
+ <el-table-column prop="name" :show-overflow-tooltip="true" label="鍚嶇О">
<template slot-scope="scope">
<i style="color:#409EFF" class=" el-icon-s-order" />{{
scope.row.name
@@ -580,80 +308,44 @@
</template>
</el-table-column>
- <el-table-column
- prop="name"
- width="180"
- :show-overflow-tooltip="true"
- label="鍔熻兘"
- >
+ <el-table-column prop="name" width="180" :show-overflow-tooltip="true" label="鍔熻兘">
<template slot-scope="scope">
- <el-button
- type="danger"
- size="mini"
- @click.native.prevent.stop="deletedowfile(scope.row)"
- >鍒犻櫎</el-button
- >
- <el-button
- type="primary"
- size="mini"
- @click.native.prevent.stop="moveupdowfile(scope.row)"
- >涓婄Щ</el-button
- >
+ <el-button type="danger" size="mini"
+ @click.native.prevent.stop="deletedowfile(scope.row)">鍒犻櫎</el-button>
+ <el-button type="primary" size="mini"
+ @click.native.prevent.stop="moveupdowfile(scope.row)">涓婄Щ</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-row>
- <el-row
- v-if="
- operationType == 'detail' ||
- operationType == 'check' ||
- operationType == 'update'
- "
- >
+ <el-row v-if="
+ operationType == 'detail' ||
+ operationType == 'check' ||
+ operationType == 'update'
+ ">
<el-table :data="fundflowList" border>
- <el-table-column
- label="瀹℃牳鏃ユ湡"
- align="center"
- width="160"
- prop="createTime"
- />
- <el-table-column
- label="瀹℃牳浜�"
- align="center"
- width="120"
- prop="checkusername"
- />
- <el-table-column
- label="瀹℃牳缁撴灉"
- align="center"
- width="200"
- prop="flowconclusion"
- >
+ <el-table-column label="瀹℃牳鏃ユ湡" align="center" width="160" prop="createTime" />
+ <el-table-column label="瀹℃牳浜�" align="center" width="120" prop="checkusername" />
+ <el-table-column label="瀹℃牳缁撴灉" align="center" width="200" prop="flowconclusion">
<template slot-scope="scope">
<span v-if="scope.row.flowconclusion == 1">閫氳繃</span>
<span v-if="scope.row.flowconclusion == 2">涓嶉�氳繃</span>
</template>
</el-table-column>
- <el-table-column
- label="瀹℃牳澶囨敞"
- align="center"
- prop="flowcontent"
- />
+ <el-table-column label="瀹℃牳澶囨敞" align="center" prop="flowcontent" />
</el-table>
</el-row>
- <el-row
- style="margin-top: 25px; margin-bottom: 5px"
- v-if="operationType == 'check' && userprofile.nickName == '闄堟厱鍗�'"
- >
+ <el-row style="margin-top: 25px; margin-bottom: 5px"
+ v-if="operationType == 'check' && userprofile.nickName == '闄堟厱鍗�'">
<el-col :span="12">
- <el-form-item label="棰勫鏉愭枡" prop="infoid">
+ <el-form-item label="棰勫鐘舵��" prop="infoid">
<el-radio-group v-model="form.checkstatus" align="left">
- <el-radio :label="1">寰呯敵璇锋潗鏂�</el-radio>
- <el-radio :label="2">瀹℃牳閫氳繃绛夊緟閭瘎绾歌川鏉愭枡</el-radio>
- <el-radio :label="3">宸叉敹鍒版姤閿�鏉愭枡</el-radio>
+ <el-radio :label="1">寰呭鏍�</el-radio>
+ <el-radio :label="2">棰勫閫氳繃绛夊緟绾歌川鏉愭枡</el-radio>
+ <el-radio :label="3">宸叉敹鍒扮焊璐ㄦ潗鏂�</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
@@ -667,10 +359,7 @@
</el-form-item>
</el-col>
</el-row>
- <el-row
- style="margin-top: 5px; margin-bottom: 5px"
- v-if="operationType == 'check'"
- >
+ <el-row style="margin-top: 5px; margin-bottom: 5px" v-if="operationType == 'check'">
<el-col :span="20">
<el-form-item label="瀹℃牳缁撴灉" align="left">
<el-radio-group v-model="checkObj.flowlevelone" align="left">
@@ -689,103 +378,46 @@
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
- <el-button
- type="primary"
- @click="submitForm"
- v-if="
- operationType == 'add' ||
- operationType == 'update' ||
- ismanager == true
- "
- >淇濆瓨</el-button
- >
- <el-button
- type="success"
- @click="handleup"
- v-if="operationType == 'add' || operationType == 'update'"
- >涓婃姤</el-button
- >
- <el-button
- type="primary"
- @click="checksubmit"
- v-if="operationType == 'check'"
- >鎻愪氦瀹℃牳</el-button
- >
+ <el-button type="primary" @click="submitForm" v-if="
+ operationType == 'add' ||
+ operationType == 'update' ||
+ ismanager == true
+ ">淇濆瓨</el-button>
+ <el-button type="success" @click="handleup"
+ v-if="operationType == 'add' || operationType == 'update'">涓婃姤</el-button>
+ <el-button type="primary" @click="checksubmit" v-if="operationType == 'check'">鎻愪氦瀹℃牳</el-button>
<el-button @click="cancel">鍏� 闂�</el-button>
</div>
</div>
- <el-dialog
- :visible.sync="showselectiondialog"
- :close-on-click-modal="false"
- :title="'璐︽埛淇℃伅/鍗曚綅淇℃伅閫夋嫨'"
- width="650px"
- style="text-align: center"
- v-loading="loading"
- >
- <el-form
- ref="accountselectform"
- :rules="dialogrules"
- :model="accountselectform"
- label-width="120px"
- >
+ <el-dialog :visible.sync="showselectiondialog" :close-on-click-modal="false" :title="'璐︽埛淇℃伅/鍗曚綅淇℃伅閫夋嫨'" width="650px"
+ style="text-align: center" v-loading="loading">
+ <el-form ref="accountselectform" :rules="dialogrules" :model="accountselectform" label-width="120px">
<el-row v-if="selectionType == 'workunit'">
<el-col :span="24">
- <el-form-item
- label="鍗曚綅鍚嶇О"
- prop="expertunitname"
- label-width="120px"
- >
- <el-select
- v-model="accountselectform.expertunitname"
- placeholder="鍗曚綅鍚嶇О"
- clearable
- filterable
- allow-create
- style="width: 100%"
- >
- <el-option
- v-for="(spec, index) in unitList"
- :key="index"
- :label="spec.organizationname"
- :value="spec.organizationname"
- ></el-option>
+ <el-form-item label="鍗曚綅鍚嶇О" prop="expertunitname" label-width="120px">
+ <el-select v-model="accountselectform.expertunitname" placeholder="鍗曚綅鍚嶇О" clearable filterable allow-create
+ style="width: 100%">
+ <el-option v-for="(spec, index) in unitList" :key="index" :label="spec.organizationname"
+ :value="spec.organizationname"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="selectionType == 'account'">
<el-col>
- <el-form-item
- label="璐︽埛鏉ユ簮"
- prop="accountfrom"
- class="left-align"
- >
+ <el-form-item label="璐︽埛鏉ユ簮" prop="accountfrom" class="left-align">
<el-radio-group v-model="accountfrom" style="margin-bottom: 0">
<el-radio label="1">浠庤处鎴峰簱</el-radio>
- <el-radio disabled label="2"
- >鏂板璐︽埛锛堟柊澧炰笓瀹惰处鎴峰悗闇�瑕佸鏍稿惎鐢ㄦ墠鑳戒娇鐢級</el-radio
- >
+ <el-radio label="2">鏂板璐︽埛锛堟柊澧炰笓瀹惰处鎴峰悗闇�瑕佸鏍稿惎鐢ㄦ墠鑳戒娇鐢級</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24" v-if="accountfrom == '1'">
<el-form-item label="璐︽埛鍚嶇О" prop="accountname">
- <el-select
- filterable
- allow-create
- ref="accountname"
- default-first-option
- v-model="accountselectform.accountname"
- placeholder="璇烽�夋嫨"
- style="width: 100%"
- >
- <el-option
- v-for="item in accountlist"
- :key="item.id"
- :label="item.userid"
- :value="item.id"
- >
+ <el-select filterable allow-create ref="accountname" default-first-option
+ v-model="accountselectform.accountname" placeholder="璇烽�夋嫨" style="width: 100%">
+ <el-option v-for="item in accountlist" :key="item.id" :label="item.userid" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@@ -794,11 +426,8 @@
<el-row v-if="selectionType == 'account' && accountfrom == '2'">
<el-col :span="24">
<el-form-item label="鏂板绫诲瀷" prop="usertype" class="left-align">
- <el-radio-group
- v-model="accountselectform.usertype"
- style="margin-bottom: 0"
- @change="userTypeChange(accountselectform.usertype)"
- >
+ <el-radio-group v-model="accountselectform.usertype" style="margin-bottom: 0"
+ @change="userTypeChange(accountselectform.usertype)">
<el-radio label="expert">涓撳璐︽埛</el-radio>
<el-radio label="org">鍗曚綅璐︽埛</el-radio>
<el-radio label="donor">鎹愮尞鑰呬翰灞炶处鎴�</el-radio>
@@ -806,163 +435,108 @@
</el-form-item>
</el-col>
</el-row>
+
<el-row v-if="selectionType == 'account' && accountfrom == '2'">
<el-col :span="24">
<el-form-item label="璐︽埛鍚嶇О" prop="username">
- <el-input
- v-model="accountselectform.username"
- placeholder="璇疯緭鍏ュ崟浣嶅悕绉帮紝鎴栦笓瀹跺鍚嶏紝鎴栧叾浠栬处鍙�"
- />
+ <el-input v-model="accountselectform.username" placeholder="璇疯緭鍏ュ崟浣嶅悕绉帮紝鎴栦笓瀹跺鍚嶏紝鎴栧叾浠栬处鍙�" />
</el-form-item>
</el-col>
</el-row>
- <el-row
- v-if="
- selectionType == 'account' &&
- accountfrom == '2' &&
- accountselectform.usertype != 'org'
- "
- >
+ <el-row v-if="
+ selectionType == 'account' &&
+ accountfrom == '2' &&
+ accountselectform.usertype == 'org'
+ ">
+ <el-col :span="24">
+ <el-form-item label="绋庡彿" prop="unitTaxNo">
+ <el-input v-model="accountselectform.unitTaxNo" placeholder="璇疯緭鍏ョ◣鍙�" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row v-if="
+ selectionType == 'account' &&
+ accountfrom == '2' &&
+ accountselectform.usertype != 'org'
+ ">
<el-col :span="12">
<el-form-item label="韬唤璇佸彿" prop="idcardno">
- <el-input
- v-model="accountselectform.idcardno"
- placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�"
- />
+ <el-input v-model="accountselectform.idcardno" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" @blur="handleIdCardBlur" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="accountselectform.usertype == 'expert'">
<el-form-item label="鑱岀О" prop="title">
- <el-select
- v-model="accountselectform.title"
- placeholder="璇烽�夋嫨浜哄憳鑱岀О"
- >
- <el-option
- v-for="dict in dict.type.sys_professionaltitle"
- :key="dict.value"
- :label="dict.label"
- :value="dict.label"
- ></el-option>
+ <el-select v-model="accountselectform.title" placeholder="璇烽�夋嫨浜哄憳鑱岀О">
+ <el-option v-for="dict in dict.type.sys_professionaltitle" :key="dict.value" :label="dict.label"
+ :value="dict.label"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
- <el-row
- v-if="
- selectionType == 'account' &&
- accountfrom == '2' &&
- accountselectform.usertype == 'expert'
- "
- >
+ <el-row v-if="
+ selectionType == 'account' &&
+ accountfrom == '2' &&
+ accountselectform.usertype == 'expert'
+ ">
<el-col>
<el-form-item label="鎵�鍦ㄥ崟浣�" prop="unitno">
- <el-select
- v-model="accountselectform.unitno"
- placeholder="鍗曚綅鍚嶇О"
- clearable
- filterable
- allow-create
- style="width: 100%"
- >
- <el-option
- v-for="(spec, index) in unitList"
- :key="index"
- :label="spec.organizationname"
- :value="spec.organizationid"
- ></el-option>
+ <el-select v-model="accountselectform.unitno" placeholder="鍗曚綅鍚嶇О" clearable filterable allow-create
+ style="width: 100%">
+ <el-option v-for="(spec, index) in unitList" :key="index" :label="spec.organizationname"
+ :value="spec.organizationid"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="鍗曚綅宸ュ彿" prop="personnelunitno">
- <el-input
- v-model="accountselectform.personnelunitno"
- placeholder="璇疯緭鍏ユ墍鍦ㄥ崟浣嶇殑宸ュ彿"
- />
+ <el-input v-model="accountselectform.personnelunitno" placeholder="璇疯緭鍏ユ墍鍦ㄥ崟浣嶇殑宸ュ彿" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="selectionType == 'account' && accountfrom == '2'">
- <el-col
- ><el-form-item label="寮�鎴烽摱琛�" prop="depositbank">
- <el-input
- v-model="accountselectform.depositbank"
- placeholder="璇疯緭鍏ュ紑鎴烽摱琛屽悕绉�"
- />
+ <el-col><el-form-item label="寮�鎴烽摱琛�" prop="depositbank">
+ <el-input v-model="accountselectform.depositbank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛屽悕绉�" />
</el-form-item>
</el-col>
- <el-col
- ><el-form-item label="閾惰鍗″彿" prop="bankcardno">
- <el-input
- v-model="accountselectform.bankcardno"
- placeholder="璇疯緭鍏ラ摱琛屽崱鍙�"
- />
+ <el-col><el-form-item label="閾惰鍗″彿" prop="bankcardno">
+ <el-input v-model="accountselectform.bankcardno" placeholder="璇疯緭鍏ラ摱琛屽崱鍙�" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="selectionType == 'account' && accountfrom == '2'">
<el-col>
<el-form-item label="鑱旂郴鍦板潃" prop="address">
- <el-input
- v-model="accountselectform.address"
- placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�"
- />
+ <el-input v-model="accountselectform.address" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="selectionType == 'account' && accountfrom == '2'">
<el-col>
<el-form-item label="鑱旂郴鐢佃瘽" prop="telephone">
- <el-input
- v-model="accountselectform.telephone"
- placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
- />
+ <el-input v-model="accountselectform.telephone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
- <el-button type="primary" @click="confirmSelectionDialog()"
- >纭� 瀹�</el-button
- >
+ <el-button type="primary" @click="confirmSelectionDialog()">纭� 瀹�</el-button>
<el-button @click="showselectiondialog = false">鍙� 娑�</el-button>
</span>
</el-dialog>
- <el-dialog
- v-dialogDrags
- :modal="false"
- :close-on-click-modal="false"
- :title="pdftitle"
- :visible.sync="pdfVisible"
- width="60%"
- >
+ <el-dialog v-dialogDrags :modal="false" :close-on-click-modal="false" :title="pdftitle" :visible.sync="pdfVisible"
+ width="60%">
<div style="margin-bottom: 10px;">
<el-table :data="tableDatatop" style="width: 100%">
- <el-table-column
- v-if="businessType == 4"
- prop="price"
- align="center"
- label="鍗曚环"
- >
+ <el-table-column v-if="businessType == 4" prop="price" align="center" label="鍗曚环">
</el-table-column>
- <el-table-column
- prop="quantity"
- align="center"
- label="鏁伴噺"
- v-if="businessType == 4"
- >
+ <el-table-column prop="quantity" align="center" label="鏁伴噺" v-if="businessType == 4">
</el-table-column>
<el-table-column prop="amount" align="center" :label="amountlabel">
</el-table-column>
- <el-table-column
- prop="taxedamount"
- align="center"
- label="绋庡悗閲戦"
- v-if="
- (this.ismanager == true) &
- (form.applytype == '1' || form.applytype == '2')
- "
- >
+ <el-table-column prop="taxedamount" align="center" label="绋庡悗閲戦" v-if="
+ (this.ismanager == true) &
+ (form.applytype == '1' || form.applytype == '2')
+ ">
</el-table-column>
<!-- <el-table-column
prop="beneficiaryname"
@@ -982,147 +556,69 @@
</el-table-column> -->
<el-table-column prop="" align="center" label="鍗曚綅/涓汉" width="250">
</el-table-column>
- <el-table-column
- prop="title"
- align="center"
- label="鑱岀О"
- width="120"
- v-if="form.applytype == '1' || form.applytype == '2'"
- >
+ <el-table-column prop="title" align="center" label="鑱岀О" width="120"
+ v-if="form.applytype == '1' || form.applytype == '2'">
</el-table-column>
- <el-table-column
- prop="idcardno"
- align="center"
- label="韬唤璇佸彿"
- width="200"
- v-if="form.applytype == '1' || form.applytype == '2'"
- >
+ <el-table-column prop="idcardno" align="center" label="韬唤璇佸彿" width="200"
+ v-if="form.applytype == '1' || form.applytype == '2'">
</el-table-column>
<el-table-column prop="depositbank" align="center" label="寮�鎴烽摱琛�">
</el-table-column>
- <el-table-column
- prop="bankcardno"
- align="center"
- label="閾惰甯愬彿"
- width="210"
- >
+ <el-table-column prop="bankcardno" align="center" label="閾惰甯愬彿" width="210">
</el-table-column>
</el-table>
</div>
- <el-alert
- title="鏂颁笂浼犳枃浠堕渶鍦ㄦ彁浜や繚瀛樺悗鎵嶅彲杩涜妗堜緥鍏宠仈锛屽惁鍒欒涓烘斁寮�"
- type="error"
- show-icon
- close-text="鐭ラ亾浜�"
- >
+ <el-alert title="鏂颁笂浼犳枃浠堕渶鍦ㄦ彁浜や繚瀛樺悗鎵嶅彲杩涜妗堜緥鍏宠仈锛屽惁鍒欒涓烘斁寮�" type="error" show-icon close-text="鐭ラ亾浜�">
</el-alert>
- <el-tabs
- style="margin-top: 20px;"
- v-model="activeName"
- type="border-card"
- @tab-click="handleClick"
- >
+ <el-tabs style="margin-top: 20px;" v-model="activeName" type="border-card" @tab-click="handleClick">
<el-tab-pane label="鏅�氶檮浠�" name="common">
<div class="pdfimg">
<div class="box-pdf">
<div>
- <el-upload
- size="mini"
- class="upload-demo"
- :action="uploadFileUrl"
- :file-list="fileListto"
- :show-file-list="false"
- multiple
- drag
- :headers="headers"
- :on-success="
- (response, file, fileList) =>
- uploadSccess(response, file, fileList)
- "
- :on-preview="downFile"
- :disabled="operationType == 'detail'"
- :on-error="handleUploadError"
- :on-remove="remove"
- accept="image/*,.pdf"
- >
+ <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileListto"
+ :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
+ uploadSccess(response, file, fileList)
+ " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
+ :on-remove="remove" accept="image/*,.pdf">
<i class="el-icon-upload"></i>
<div class="el-upload__text">
灏嗙エ鎹嫋鍒版澶勶紝鎴�
- <em
- ><el-button
- :disabled="operationType == 'detail'"
- size="small"
- type="primary"
- >鐐瑰嚮涓婁紶</el-button
- ></em
- >
+ <em><el-button :disabled="operationType == 'detail'" size="small"
+ type="primary">鐐瑰嚮涓婁紶</el-button></em>
</div>
</el-upload>
- <el-table
- :data="fileListto"
- @row-click="downFile"
- style="width: 100%"
- height="400"
- >
- <el-table-column
- prop="name"
- :show-overflow-tooltip="true"
- label="鍚嶇О"
- >
+ <el-table :data="fileListto" @row-click="downFile" style="width: 100%" height="400">
+ <el-table-column prop="name" :show-overflow-tooltip="true" label="鍚嶇О">
<template slot-scope="scope">
<i style="color:#409EFF" class=" el-icon-s-order" />
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
- <el-table-column
- prop="name"
- width="190"
- :show-overflow-tooltip="true"
- label="鍔熻兘"
- >
+ <el-table-column prop="name" width="190" :show-overflow-tooltip="true" label="鍔熻兘">
<template slot-scope="scope">
- <el-button
- type="danger"
- size="mini"
- @click.native.prevent.stop="deletedowfile(scope.row)"
- >鍒犻櫎</el-button
- >
- <el-button
- type="primary"
- size="mini"
- @click.native.prevent.stop="moveupdowfile(scope.row)"
- >涓婄Щ</el-button
- >
- <el-button
- type="success"
- size="mini"
- icon="el-icon-search"
- circle
- @click.native.prevent.stop="Downloadfile(scope.row)"
- ></el-button>
+ <el-button type="danger" size="mini"
+ @click.native.prevent.stop="deletedowfile(scope.row)">鍒犻櫎</el-button>
+ <el-button type="primary" size="mini"
+ @click.native.prevent.stop="moveupdowfile(scope.row)">涓婄Щ</el-button>
+ <el-button type="success" size="mini" icon="el-icon-search" circle
+ @click.native.prevent.stop="Downloadfile(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
- <div
- v-if="this.previewpdf && pdfimgsrcList.length"
- class="pdfimgmin"
- >
+ <div v-if="this.previewpdf && pdfimgsrcList.length" class="pdfimgmin">
<!-- <img :src="pdfimg" /> -->
- <el-image
- style="width: 95%; height: 90%"
- @error="handleImageError"
- @load="handleImageLoad"
- :src="pdfimg"
- :preview-src-list="pdfimgsrcList"
- >
+ <el-image ref="imagePreview" style="width: 95%; height: 90%" :src="pdfimg"
+ @click="handleImageClick(initialIndex)">
<!-- <div slot="error" class="image-slot">
- <i class="el-icon-picture-outline"></i>
- </div> -->
+ <i class="el-icon-picture-outline"></i>
+ </div> -->
</el-image>
+ <custom-image-viewer :url-list="pdfimgsrcList" :initial-index="currentIndex" :visible="viewerVisible"
+ @update:visible="viewerVisible = $event" @close="handleViewerClose" />
</div>
<div v-else class="pdfimgmins">{{ hintitle }}</div>
</div>
@@ -1131,103 +627,51 @@
<div class="pdfimg">
<div class="box-pdf">
<div>
- <el-upload
- size="mini"
- class="upload-demo"
- :action="uploadFileUrl"
- :file-list="invoicefileList"
- :show-file-list="false"
- multiple
- drag
- :headers="headers"
- :on-success="
- (response, file, fileList) =>
- uploadSccess(response, file, fileList)
- "
- :on-preview="downFile"
- :disabled="operationType == 'detail'"
- :on-error="handleUploadError"
- :on-remove="remove"
- accept="image/*,.pdf"
- >
+ <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="invoicefileList"
+ :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
+ uploadSccess(response, file, fileList)
+ " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
+ :on-remove="remove" accept="image/*,.pdf">
<i class="el-icon-upload"></i>
<div class="el-upload__text">
灏嗗彂绁ㄦ枃浠舵嫋鍒版澶勶紝鎴�
- <em
- ><el-button
- :disabled="operationType == 'detail'"
- size="small"
- type="primary"
- >鐐瑰嚮涓婁紶</el-button
- ></em
- >
+ <em><el-button :disabled="operationType == 'detail'" size="small"
+ type="primary">鐐瑰嚮涓婁紶</el-button></em>
</div>
</el-upload>
- <el-table
- :data="invoicefileListto"
- @row-click="downFile"
- style="width: 100%"
- height="400"
- >
- <el-table-column
- prop="name"
- :show-overflow-tooltip="true"
- label="鍚嶇О"
- >
+ <el-table :data="invoicefileListto" @row-click="downFile" style="width: 100%" height="400">
+ <el-table-column prop="name" :show-overflow-tooltip="true" label="鍚嶇О">
<template slot-scope="scope">
<i style="color:#409EFF" class=" el-icon-s-order" />
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
- <el-table-column
- prop="name"
- width="190"
- :show-overflow-tooltip="true"
- label="鍔熻兘"
- >
+ <el-table-column prop="name" width="190" :show-overflow-tooltip="true" label="鍔熻兘">
<template slot-scope="scope">
- <el-button
- type="primary"
- size="mini"
- @click.native.prevent.stop="deletedowfile(scope.row)"
- >鍒犻櫎</el-button
- >
- <el-button
- type="primary"
- size="mini"
- @click.native.prevent.stop="moveupdowfile(scope.row)"
- >涓婄Щ</el-button
- >
- <el-button
- type="success"
- size="mini"
- icon="el-icon-search"
- circle
- @click.native.prevent.stop="Downloadfile(scope.row)"
- ></el-button>
+ <el-button type="primary" size="mini"
+ @click.native.prevent.stop="deletedowfile(scope.row)">鍒犻櫎</el-button>
+ <el-button type="primary" size="mini"
+ @click.native.prevent.stop="moveupdowfile(scope.row)">涓婄Щ</el-button>
+ <el-button type="success" size="mini" icon="el-icon-search" circle
+ @click.native.prevent.stop="Downloadfile(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
- <div
- v-if="this.previewpdf && invoicepdfimgsrcList.length"
- class="pdfimgmin"
- >
+ <div v-if="this.previewpdf && invoicepdfimgsrcList.length" class="pdfimgmin">
<!-- <img :src="pdfimg" /> -->
- <el-image
- style="width: 95%; height: 90%"
- @error="handleImageError"
- @load="handleImageLoad"
- :src="invoicepdfimg"
- :preview-src-list="invoicepdfimgsrcList"
- >
+ <el-image style="width: 95%; height: 90%" :src="invoicepdfimg"
+ @click="invoicehandleImageClick(initialIndex)">
<!-- <div slot="error" class="image-slot">
- <i class="el-icon-picture-outline"></i>
- </div> -->
+ <i class="el-icon-picture-outline"></i>
+ </div> -->
</el-image>
+ <custom-image-viewer :url-list="invoicepdfimgsrcList" :initial-index="invoicecurrentIndex"
+ :visible="invoiceviewerVisible" @update:visible="invoiceviewerVisible = $event"
+ @close="invoicehandleViewerClose" />
</div>
<div v-else class="pdfimgmins">{{ hintitle }}</div>
</div>
@@ -1235,14 +679,10 @@
</el-tabs>
</el-dialog>
<el-dialog title="鎻愮ず" :visible.sync="Savereminder" width="30%">
- <el-alert
- :title="
- '鎮ㄥ凡娣诲姞' +
- totalquantity +
- '鏉℃暟鎹紝涓洪槻姝㈡暟鎹涪澶辨槸鍚︽彁浜や繚瀛樺啀缁х画娣诲姞銆�'
- "
- type="warning"
- >
+ <el-alert :title="'鎮ㄥ凡娣诲姞' +
+ totalquantity +
+ '鏉℃暟鎹紝涓洪槻姝㈡暟鎹涪澶辨槸鍚︽彁浜や繚瀛樺啀缁х画娣诲姞銆�'
+ " type="warning">
</el-alert>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="Savenow">纭� 瀹�</el-button>
@@ -1251,30 +691,19 @@
</el-dialog>
<!-- 鎵归噺閫夊彇 -->
- <el-dialog
- title="鎵归噺鐢熸垚鏄庣粏淇℃伅"
- :visible.sync="batchdialogVisible"
- width="30%"
- >
+ <el-dialog title="鎵归噺鐢熸垚鏄庣粏淇℃伅" :visible.sync="batchdialogVisible" width="35%">
+ <div style="margin-bottom: 12px">
+ <el-input v-model="personKeyword" clearable size="small" prefix-icon="el-icon-search"
+ placeholder="杈撳叆 濮撳悕 / 鍗曚綅 / 宸ュ彿 / 韬唤璇佸悗4浣� 绛涙煡" style="width: 330px" />
+ <span style="margin-left: 10px; color: #909399; font-size: 12px">鍏� {{ filteredCityOptions.length }} 浜�</span>
+ </div>
<div style="max-height: 300px; overflow-y: auto">
- <el-checkbox
- :indeterminate="isIndeterminate"
- v-model="checkAll"
- @change="handleCheckAllChange"
- >鍏ㄩ��</el-checkbox
- >
+ <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">鍏ㄩ�夛紙褰撳墠绛涙煡缁撴灉锛�</el-checkbox>
<div style="margin: 15px 0;"></div>
- <el-checkbox-group
- v-model="checkedCities"
- @change="handleCheckedCitiesChange"
- >
- <el-checkbox
- border
- v-for="city in cityOptions"
- :label="city"
- :key="city.reportNo"
- >{{ city.reportName }}</el-checkbox
- >
+ <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
+ <el-checkbox border v-for="city in filteredCityOptions" :label="city"
+ :key="city.reportNo + '_' + city.reportName">{{ city.reportName
+ }}{{ city.unitname ? " 路 " + city.unitname : "" }}</el-checkbox>
</el-checkbox-group>
</div>
@@ -1313,7 +742,9 @@
getdownloadBX,
addorupdateFund,
ManualCalculation,
- getdetailsByItemId
+ getdetailsByItemId,
+ validateExpertFee,
+ listbypower
} from "@/api/project/fund";
import {
@@ -1354,7 +785,7 @@
addExternalperson,
updateExternalperson,
exportExternalperson,
- getOnlyCode
+ getOnlyCode, getInfoByIDCardNo
} from "@/api/project/externalperson";
import { listItemexpense } from "@/api/project/itemexpense";
@@ -1363,12 +794,16 @@
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
import { getToken } from "@/utils/auth";
+import { moneySum, moneyMul, moneySub, moneyRound } from "@/utils/money";
+import { checkFileName, checkDetails } from "@/utils/fileNameCheck";
+import CustomImageViewer from "@/components/CustomImageViewer"; // 鏍规嵁浣犵殑璺緞璋冩暣
export default {
//import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
components: {
Li_area_select,
- OrgSelecter
+ OrgSelecter,
+ CustomImageViewer
},
name: "fundApply",
@@ -1384,19 +819,40 @@
//"sys_finsubject",
//"sys_financeitemtype",
//"sys_expensetype",
+ 'sys_DonationStatus',
"sys_recordstatus",
"sys_professionaltitle"
],
data() {
- var validatePass = (rule, value, callback) => {
+ // 鑷畾涔夎韩浠借瘉鍙锋牎楠屽櫒
+ const validateIdCard = (rule, value, callback) => {
+ // 1. 濡傛灉涓虹┖锛屼氦缁� required 瑙勫垯鍘诲鐞嗭紝杩欓噷鐩存帴鏀捐
+ if (!value) {
+ return callback();
+ }
const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/;
if (regex.test(value)) {
- callback();
} else {
callback(new Error("韬唤璇佸彿鐮佹牸寮忛敊璇�"));
}
+
+ // 2. 璋冪敤鍚庣鎺ュ彛杩涜閲嶅鎬ф牎楠�
+ getInfoByIDCardNo(value).then(res => {
+ // 鍋囪鍚庣杩斿洖鐨� res.data 鏄暟缁勶紝涓旈暱搴﹀ぇ浜�0琛ㄧず宸插瓨鍦�
+ if (res.data && res.data.length > 0) {
+ // 鏍¢獙涓嶉�氳繃锛屽皢閿欒淇℃伅浼犵粰 callback
+ callback(new Error("韬唤璇佸彿淇℃伅宸茶鐧昏锛岃妫�鏌ワ紒"));
+ } else {
+ // 鏍¢獙閫氳繃
+ callback();
+ }
+ }).catch(() => {
+ // 鎺ュ彛寮傚父鏃剁殑澶勭悊
+ callback(new Error("鏍¢獙韬唤璇佸彿鏃跺彂鐢熺綉缁滈敊璇�"));
+ });
};
+
//杩欓噷瀛樻斁鏁版嵁
return {
// 閬僵灞�
@@ -1435,6 +891,8 @@
// 缃戠粶璇锋眰澶�
Networkheader: null,
batchdialogVisible: false,
+ //鎵归噺褰曞叆寮规鐨勭瓫鏌ュ叧閿瓧
+ personKeyword: "",
itemlist: [],
cityOptions: [],
checkAll: false,
@@ -1448,11 +906,11 @@
baselisttages: [
{
id: 1,
- name: "鏉愭枡寰呭鏍�"
+ name: "寰呭鏍�"
},
{
id: 2,
- name: "瀹℃煡閫氳繃绛夊緟閭瘎绾歌川鏉愭枡"
+ name: "棰勫閫氳繃绛夊緟绾歌川鏉愭枡"
},
{
id: 3,
@@ -1515,10 +973,24 @@
username: [
{ required: true, message: "璇疯緭鍏ヨ处鎴峰悕绉�", trigger: "blur" }
],
+ unitTaxNo: [{ required: true, message: "璇疯緭鍏ョ◣鍙�", trigger: "blur" }],
idcardno: [
- { required: true, message: "璇疯緭鍏ヨ韩浠借处鍙�", trigger: "blur" }
+ {
+ // 璐︽埛绫诲瀷閫夋嫨"鍗曚綅鏈烘瀯"鏃朵笉闇�瑕佽韩浠借瘉鍙�
+ validator: (rule, value, callback) => {
+ if (this.hasUserType(this.accountselectform.usertype, "org")) {
+ return callback();
+ }
+ if (!value || !String(value).trim()) {
+ return callback(new Error("璇疯緭鍏ヨ韩浠借瘉鍙�"));
+ }
+ return callback();
+ },
+ trigger: "blur"
+ },
+ // 娣诲姞鑷畾涔夋牎楠岃鍒�
+ { validator: validateIdCard, trigger: 'blur' }
],
- //idcardno: [{ validator: validatePass, trigger: "blur" }],
depositbank: [
{ required: true, message: "璇疯緭鍏ュ紑鎴烽摱琛�", trigger: "change" }
],
@@ -1582,6 +1054,8 @@
flowconclusion: null,
fundid: null
},
+ // 杩炵画瀹℃壒锛氬緟瀹℃壒鍗曟嵁鍒楄〃
+ pendingList: [],
// 鏌ヨ鍙傛暟
queryParams: {
@@ -1658,6 +1132,11 @@
pdftitle: "",
pdfimg: "",
pdfimgsrcList: [],
+ currentIndex: 0, // 鍒濆绱㈠紩
+ invoicecurrentIndex: 0, // 鍒濆绱㈠紩
+ initialIndex: 0, // 鍒濆绱㈠紩
+ viewerVisible: false, // 鎺у埗棰勮缁勪欢鏄剧ず
+ invoiceviewerVisible: false, // 鎺у埗棰勮缁勪欢鏄剧ず
pdfVisible: false,
previewpdf: false,
hintitle: "璇蜂笂浼犳枃浠跺悗鏌ョ湅",
@@ -1670,18 +1149,27 @@
},
//鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康
- computed: {},
+ computed: {
+ //鎵归噺褰曞叆寮规锛氭寜鍏抽敭瀛楋紙濮撳悕/鍗曚綅/宸ュ彿/韬唤璇佸悗4浣嶏級绛涙煡鍚庣殑鍊欓�変汉
+ filteredCityOptions() {
+ const kw = (this.personKeyword || "").trim().toLowerCase();
+ if (!kw) {
+ return this.cityOptions;
+ }
+ return this.cityOptions.filter(item => this.personMatchKeyword(item, kw));
+ }
+ },
//鐩戞帶data涓殑鏁版嵁鍙樺寲
watch: {},
//鏂规硶闆嗗悎
methods: {
- bbaaccss(val) {},
+ bbaaccss(val) { },
// 娴忚鍣ㄩ〉闈㈠叧闂垨鍒锋柊鎻愮ず
beforeunloadHandler(e) {
if (
(JSON.stringify(this.form) == sessionStorage.getItem("apiform") &&
JSON.stringify(this.rbDetails) ==
- sessionStorage.getItem("apifunddetail")) ||
+ sessionStorage.getItem("apifunddetail")) ||
!sessionStorage.getItem("apifunddetail")
) {
} else {
@@ -1825,9 +1313,12 @@
this.businessType == "2" ||
this.businessType == "3"
) {
+ console.log(this.curCase,'this.curCase');
+
this.form.infoid = this.curCase.id;
this.form.donorname = this.curCase.name;
this.form.donorno = this.curCase.donorno;
+ this.form.invoicecount = this.curCase.recordstate;
}
//鍒濆鍖栨槑缁�
@@ -1930,6 +1421,14 @@
handleCheck() {
this.isopen = 0;
this.reset();
+ // 閲嶇疆瀹℃壒淇℃伅锛岄伩鍏嶄笂涓�鍗曠殑瀹℃壒缁撴灉甯﹀叆涓嬩竴鍗�
+ this.checkObj = {
+ flowlevelone: null,
+ flowconclusion: null,
+ fundid: null
+ };
+ // 杩炵画瀹℃壒锛氬姞杞藉綋鍓嶄笟鍔$被鍨嬩笅鐨勫緟瀹℃壒鍒楄〃
+ this.getPendingList();
getFund(this.curId).then(response => {
this.form = response.data;
@@ -1972,7 +1471,7 @@
handleDelete() {
this.$modal
.confirm("鏄惁纭鍒犻櫎璇ヨ褰曪紵")
- .then(function() {
+ .then(function () {
return delFund(this.curId);
})
.then(() => {
@@ -1985,7 +1484,7 @@
this.getfundList();
this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
})
- .catch(() => {});
+ .catch(() => { });
},
/** 涓婃姤鎸夐挳鎿嶄綔 */
@@ -1993,7 +1492,7 @@
if (
(JSON.stringify(this.form) == sessionStorage.getItem("apiform") &&
JSON.stringify(this.rbDetails) ==
- sessionStorage.getItem("apifunddetail")) ||
+ sessionStorage.getItem("apifunddetail")) ||
!sessionStorage.getItem("apifunddetail")
) {
} else {
@@ -2062,7 +1561,12 @@
return randomString;
},
/** 鎻愪氦鎸夐挳 */
- submitForm: debounce(function() {
+ submitForm: debounce(function () {
+ // 2026-10-15锛氫繚瀛樺墠闄勪欢鏂囦欢鍚嶈鑼冩牎楠岋紙浠呮柊澧炲崟鎹紱鑰佸崟鎹殑鍘嗗彶闄勪欢鐢卞悗绔寜"鍙牎楠屾湰娆″彉鏇�"鏀捐锛�
+ if (!this.checkDetailFileNames()) {
+ return;
+ }
+
if (!this.randomnumber) {
this.randomnumber = this.generateRandomString(9);
this.form.randomnumber = this.randomnumber;
@@ -2072,14 +1576,39 @@
if (valid) {
this.formData = this.form;
+ // 涓撳鍔冲姟璐逛笓鐢細9 鏉¤垂鐢ㄦ帶鍒惰鍒欐牎楠岋紙鏍¢獙涓嶉�氳繃涓嶅厑璁镐繚瀛橈級
+ if (this.businessType == "1") {
+ this.$modal.loading("姝e湪鏍¢獙涓撳鍔冲姟璐圭敤锛岃绋嶅�欙紒");
+ this.checkExpertFeeRules("淇濆瓨").then((allowed) => {
+ this.$modal.closeLoading();
+ if (allowed) {
+ this.doSubmitForm();
+ }
+ });
+ return;
+ }
+
+ this.doSubmitForm();
+ }
+ });
+ }, 500),
+
+ /**
+ * 淇濆瓨鐢宠鍗曠殑瀹為檯钀藉簱閫昏緫銆�
+ *
+ * 浠� submitForm 涓媶鍑猴紝渚夸簬鍦ㄤ笓瀹跺姵鍔¤垂瑙勫垯鏍¢獙閫氳繃鍚庡啀鎵ц锛�
+ * 鍏朵粬涓氬姟绫诲瀷鐢� submitForm 鐩存帴璋冪敤锛岃涓轰笌鎷嗗垎鍓嶄竴鑷淬��
+ */
+ doSubmitForm() {
+
//淇濆瓨鍓嶆牎楠屾暟鎹�
for (let k = 0; k < this.rbDetails.length; k++) {
let tempDetail = this.rbDetails[k];
if (tempDetail.itemid == null) {
this.$modal.msgWarning(
"鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
- (k + 1).toString() +
- "琛岀殑鏈嶅姟椤圭洰鏈�夋嫨锛岃鍏堥�夋嫨鏈嶅姟椤圭洰鍚庡啀鎻愪氦淇濆瓨锛�"
+ (k + 1).toString() +
+ "琛岀殑鏈嶅姟椤圭洰鏈�夋嫨锛岃鍏堥�夋嫨鏈嶅姟椤圭洰鍚庡啀鎻愪氦淇濆瓨锛�"
);
return;
}
@@ -2088,8 +1617,8 @@
if (tempDetail.servicesscope == null) {
this.$modal.msgWarning(
"鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
- (k + 1).toString() +
- "琛岀殑璐圭敤璇存槑鏈�夋嫨,璇烽�夋嫨璐圭敤璇存槑鍚庡啀鎻愪氦淇濆瓨锛�"
+ (k + 1).toString() +
+ "琛岀殑璐圭敤璇存槑鏈�夋嫨,璇烽�夋嫨璐圭敤璇存槑鍚庡啀鎻愪氦淇濆瓨锛�"
);
return;
}
@@ -2097,8 +1626,8 @@
if (tempDetail.beneficiaryno == null) {
this.$modal.msgWarning(
"鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
- (k + 1).toString() +
- "琛岀殑鏈嶅姟浜哄憳濮撳悕涓洪�夋嫨,璇烽�夋嫨浜哄憳鍚庡啀鎻愪氦淇濆瓨锛�"
+ (k + 1).toString() +
+ "琛岀殑鏈嶅姟浜哄憳濮撳悕涓洪�夋嫨,璇烽�夋嫨浜哄憳鍚庡啀鎻愪氦淇濆瓨锛�"
);
return;
}
@@ -2141,12 +1670,12 @@
let tempDetail = this.rbDetails[j];
if (
isNaN(parseFloat(tempDetail.amount)) ||
- parseFloat(tempDetail.amount) == 0
+ moneyRound(tempDetail.amount) == 0
) {
this.$modal.msgWarning(
"鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
- (j + 1).toString() +
- "琛岀殑閲戦鏈緭鍏ワ紝璇峰厛杈撳叆閲戦鍚庡啀鎻愪氦淇濆瓨锛�"
+ (j + 1).toString() +
+ "琛岀殑閲戦鏈緭鍏ワ紝璇峰厛杈撳叆閲戦鍚庡啀鎻愪氦淇濆瓨锛�"
);
return;
}
@@ -2156,18 +1685,18 @@
let tempDetail = this.rbDetails[j];
if (
isNaN(parseFloat(tempDetail.amount)) ||
- parseFloat(tempDetail.amount) == 0
+ moneyRound(tempDetail.amount) == 0
) {
this.$modal.msgWarning(
"鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
- (j + 1).toString() +
- "琛岀殑閲戦鏈緭鍏ワ紝璇峰厛杈撳叆閲戦鍚庡啀鎻愪氦淇濆瓨锛�"
+ (j + 1).toString() +
+ "琛岀殑閲戦鏈緭鍏ワ紝璇峰厛杈撳叆閲戦鍚庡啀鎻愪氦淇濆瓨锛�"
);
return;
}
if (
isNaN(parseFloat(tempDetail.taxamount)) ||
- parseFloat(tempDetail.taxamount) == 0
+ moneyRound(tempDetail.taxamount) == 0
) {
tempDetail.taxedamount = parseFloat(tempDetail.amount);
} else {
@@ -2269,9 +1798,84 @@
//鍏抽棴绐楀彛
this.loading = false;
// this.getfundList();
- }
+ },
+
+ /**
+ * 涓撳鍔冲姟璐� 9 鏉¤垂鐢ㄦ帶鍒惰鍒欐牎楠岋紙鎻愪氦鍓嶆嫤鎴級銆�
+ *
+ * 閫傜敤鑼冨洿锛歜usinessType === '1'锛堜笓瀹跺姵鍔¤垂鐢宠鍗曪級锛屼笌鍚庣 applytype === '1' 瀵瑰簲銆�
+ * 鍏朵粬涓氬姟绫诲瀷锛堜鸡鐞嗕笓瀹惰垂銆佸尰瀛︽垚鏈�佸姙鍏垂鐢級涓嶆牎楠岋紝鐩存帴鏀捐銆�
+ *
+ * 鏍¢獙鍙e緞锛堝悓涓�鎹愮尞妗堜緥 infoid 涓嬬疮璁★級鐢卞悗绔粺涓�瀹炵幇锛�
+ * errors 闃绘柇鍨嬶細鎻愮ず杩濆弽鐨勫叿浣撹鍒欙紝涓嶅厑璁哥户缁繚瀛�/瀹℃牳
+ * warnings 鎻愮ず鍨嬶細浠呮彁閱掔粡鍔炰汉澶勭悊锛堣鍒� 5銆�6锛夛紝闇�浜屾纭鍚庢墠缁х画
+ *
+ * @param {string} action 褰撳墠鍔ㄤ綔锛岀敤浜庢嫾鎺ユ彁绀烘枃妗堬紙濡傗�滀繚瀛樷�濃�滄彁浜ゅ鏍糕�濓級
+ * @returns {Promise<boolean>} true 鍏佽缁х画锛宖alse 闃绘缁х画
+ */
+ checkExpertFeeRules(action) {
+ if (this.businessType != "1") {
+ return Promise.resolve(true);
+ }
+ // 鍚庣鎸夈�屾渚嬪唴宸叉湁鍗曟嵁 + 鏈鎻愪氦鏄庣粏銆嶅悎骞惰绠楋紝纭繚灏氭湭钀藉簱鐨勬槑缁嗕篃鍙備笌鏍¢獙
+ const payload = Object.assign({}, this.form, {
+ applytype: this.form.applytype || "1",
+ serviceFunddetails: this.rbDetails,
});
- }, 500),
+ // 鎺掓煡鐢細鑳界洿鎺ヤ粠鎺у埗鍙扮湅鍒板埌搴曢�佷簡浠�涔堬紝浠ュ強鍚庣鍒ゅ畾浜嗕粈涔�
+ console.log("[涓撳璐规牎楠宂 鎻愪氦鏍¢獙", action, {
+ businessType: this.businessType,
+ applytype: payload.applytype,
+ infoid: payload.infoid,
+ fundId: payload.id,
+ 鏄庣粏: (this.rbDetails || []).map((d) => ({
+ itemid: d.itemid,
+ amount: d.amount,
+ taxedamount: d.taxedamount,
+ 鍦烘櫙: d.servicesscopename,
+ })),
+ });
+
+ return validateExpertFee(payload)
+ .then((res) => {
+ const errors = (res && res.errors) || [];
+ const warnings = (res && res.warnings) || [];
+ console.log("[涓撳璐规牎楠宂 鍚庣杩斿洖", { errors, warnings });
+
+ // 1) 闃绘柇鍨嬶細鍒楀嚭杩濆弽鐨勫叿浣撹鍒欙紝涓嶅厑璁哥户缁�
+ // 鐢ㄥ脊绐楄�岄潪杞绘彁绀猴細閿欒鍙兘鏈夊鏉★紝杞绘彁绀轰細鎸ゆ垚涓�琛屼笖寰堝揩娑堝け
+ if (errors.length > 0) {
+ this.$modal.alertError(
+ "涓撳鍔冲姟璐圭敤涓嶇鍚堜互涓嬭瀹氾紝鏃犳硶" +
+ action +
+ "锛歕n\n" +
+ errors.map((msg, i) => i + 1 + ". " + msg).join("\n\n")
+ );
+ return false;
+ }
+
+ // 2) 鎻愮ず鍨嬶細闇�缁忓姙浜虹‘璁ゅ悗鎵嶈兘缁х画锛堝綋鍓嶈鍒� 5銆�6 宸叉敼涓虹‖鎷︽埅锛屾鍒嗘敮淇濈暀澶囩敤锛�
+ if (warnings.length > 0) {
+ const confirmText =
+ "涓撳鍔冲姟璐圭敤瀛樺湪浠ヤ笅闂锛岃纭鏄惁缁х画" +
+ action +
+ "锛焅n\n" +
+ warnings.map((msg, i) => i + 1 + ". " + msg).join("\n\n");
+ return this.$modal
+ .confirm(confirmText)
+ .then(() => true)
+ .catch(() => false);
+ }
+
+ return true;
+ })
+ .catch((err) => {
+ // 鎺ュ彛寮傚父鏃舵寜鈥滀笉闃绘柇鈥濆鐞嗭紝閬垮厤鏍¢獙鏈嶅姟涓嶅彲鐢ㄥ鑷村畬鍏ㄦ棤娉曟姤閿�锛�
+ // 鍚庣 addOrUpdateNew / checkFund 浠嶆湁鍚屾牱鐨勭‖鎷︽埅鍏滃簳銆�
+ console.error("涓撳鍔冲姟璐硅鍒欐牎楠屾帴鍙h皟鐢ㄥけ璐�", err);
+ return true;
+ });
+ },
checksubmit() {
//妫�鏌ユ槸鍚︽敹鍒扮焊璐ㄦ潗鏂�
@@ -2303,8 +1907,79 @@
return;
}
- this.Savenow();
- console.log("淇濆瓨骞跺鎵�");
+ // 涓撳鍔冲姟璐逛笓鐢細9 鏉¤垂鐢ㄦ帶鍒惰鍒欐牎楠岋紙浠呭鏍搁�氳繃鏃舵嫤鎴級
+ const needExpertFeeCheck = this.checkObj.flowlevelone == 1;
+ const expertFeePromise = needExpertFeeCheck
+ ? this.checkExpertFeeRules("鎻愪氦瀹℃牳")
+ : Promise.resolve(true);
+
+ expertFeePromise.then((allowed) => {
+ if (!allowed) {
+ return;
+ }
+ this.Savenow();
+ console.log("淇濆瓨骞跺鎵�");
+ });
+ },
+
+ // 杩炵画瀹℃壒锛氳幏鍙栧綋鍓嶄笟鍔$被鍨嬩笅鐨勫緟瀹℃壒鍒楄〃
+ getPendingList() {
+ return listbypower({
+ pageNum: 1,
+ pageSize: 1000,
+ CHECKFLAG: 1,
+ APPLYTYPE: this.businessType
+ })
+ .then(res => {
+ this.pendingList = res.rows || [];
+ })
+ .catch(() => {
+ this.pendingList = [];
+ });
+ },
+
+ // 杩炵画瀹℃壒锛氬鎵瑰畬鎴愬悗璇㈤棶鏄惁缁х画瀹℃壒涓嬩竴鍗�
+ continueOrExit() {
+ // 閲嶆柊鎷夊彇寰呭鎵瑰垪琛紙褰撳墠鍗曟嵁宸插鎵瑰畬鎴愯绉诲嚭鍒楄〃锛�
+ this.getPendingList().then(() => {
+ const list = this.pendingList || [];
+ const next = list[0] || null;
+ if (next) {
+ this.$confirm("瀹℃壒宸插畬鎴愶紝鏄惁缁х画瀹℃壒涓嬩竴寮犲緟瀹℃壒鍗曟嵁锛�", "鎻愮ず", {
+ confirmButtonText: "缁х画瀹℃壒",
+ cancelButtonText: "杩斿洖鍒楄〃",
+ type: "info"
+ })
+ .then(() => {
+ // 鍦ㄥ綋鍓嶉〉闈㈢洿鎺ュ姞杞戒笅涓�寮犲緟瀹℃壒鍗曟嵁
+ this.curId = next.id;
+ this.handleCheck();
+ // 鍚屾鏇存柊鍦板潃鏍忥紝閬垮厤鍒锋柊鍚庡洖鍒颁笂涓�鍗�
+ this.$router
+ .replace({
+ path: this.$route.path,
+ query: {
+ id: next.id,
+ businessType: this.businessType,
+ operationType: "check"
+ }
+ })
+ .catch(() => {});
+ })
+ .catch(() => {
+ this.exitToPage();
+ });
+ } else {
+ this.$modal.msgSuccess("宸叉棤寰呭鎵瑰崟鎹紝杩斿洖鍒楄〃");
+ this.exitToPage();
+ }
+ });
+ },
+
+ // 杩斿洖鍒楄〃椤�
+ exitToPage() {
+ this.$store.dispatch("tagsView/delView", this.$route);
+ this.$router.go(-1);
},
// 鍙栨秷鎸夐挳
@@ -2322,7 +1997,8 @@
if (
this.userprofile.userName == "admin" ||
this.userprofile.userName == "053" ||
- this.userprofile.userName == "047"|| store.getters.rolesor[0].roleSort=='13'
+ this.userprofile.userName == "047" ||
+ store.getters.rolesor[0].roleSort == "13"
) {
this.ismanager = true;
} else {
@@ -2352,6 +2028,19 @@
});
},
+ /** 浜哄憳绫诲瀷锛堝鍊硷紝閫楀彿鍒嗛殧锛夋槸鍚﹀寘鍚寚瀹氱被鍨嬶紱org = 鍗曚綅鏈烘瀯 */
+ hasUserType(usertype, code) {
+ if (!usertype) {
+ return false;
+ }
+ return (
+ String(usertype)
+ .split(",")
+ .map(t => t.trim())
+ .indexOf(code) > -1
+ );
+ },
+ /** 鍙楃泭浜�/璐︽埛鏄惁涓�"鍗曚綅"锛堜汉鍛樼被鍨嬪惈 org锛� */
//鑾峰彇涓撳銆佸崟浣嶆満鏋勭殑璐︽埛鍒楄〃
getAccountList() {
listExternalperson().then(res => {
@@ -2360,7 +2049,7 @@
for (let j = 0; j < res.rows.length; j++) {
//鍗曚綅璐﹀彿鍒楄〃
if (res.rows[j].userstatus == "1") {
- if (res.rows[j].usertype == "org") {
+ if (this.hasUserType(res.rows[j].usertype, "org")) {
this.accountlist.push({
id: res.rows[j].id,
userno: res.rows[j].userno,
@@ -2371,6 +2060,7 @@
bankcardno: res.rows[j].bankcardno,
unitno: res.rows[j].unitno,
unitname: res.rows[j].unitname,
+ usertype: res.rows[j].usertype,
userid:
res.rows[j].username + "锛�" + res.rows[j].bankcardno + "锛�"
});
@@ -2385,6 +2075,7 @@
bankcardno: res.rows[j].bankcardno,
unitno: res.rows[j].unitno,
unitname: res.rows[j].unitname,
+ usertype: res.rows[j].usertype,
userid:
res.rows[j].username + "锛�" + res.rows[j].idcardno + "锛�"
});
@@ -2578,14 +2269,13 @@
//璁$畻涓◣锛歵ype(A:宸茬煡绋庡墠閲戦锛岃绠楃◣鍚庨噾棰濓紱B锛氬凡鐭ョ◣鍚庨噾棰濓紝璁$畻绋庡墠閲戦)
calculateTax(row, type) {
- let targetValue = 0;
for (let i = 0; i < this.rbDetails.length; i++) {
if (!this.rbDetails[i].amount) {
this.rbDetails[i].amount = 0;
}
- targetValue += parseFloat(this.rbDetails[i].amount); // 鍋囪姣忎釜瀵硅薄涓殑鐗瑰畾鍊煎瓨鍌ㄥ湪'specificValue'灞炴�т笅
}
- this.form.pretaxcost = targetValue;
+ // 鍚堣閲戦蹇呴』绮剧‘绱姞锛屽惁鍒欎細鍐欏叆 form.pretaxcost 骞惰惤搴�
+ this.form.pretaxcost = moneySum(this.rbDetails, "amount");
},
//瀵煎叆鎵�鏈夐」鐩�
@@ -2659,6 +2349,11 @@
},
// 鎺ュ彈鎻愰啋绔嬪埢淇濆瓨
Savenow() {
+ // 2026-10-15锛氫繚瀛樺墠闄勪欢鏂囦欢鍚嶈鑼冩牎楠岋紙浠呮柊澧炲崟鎹紱鑰佸崟鎹殑鍘嗗彶闄勪欢鐢卞悗绔寜"鍙牎楠屾湰娆″彉鏇�"鏀捐锛�
+ if (!this.checkDetailFileNames()) {
+ return;
+ }
+
if (!this.randomnumber) {
this.randomnumber = this.generateRandomString(9);
this.form.randomnumber = this.randomnumber;
@@ -2666,192 +2361,198 @@
this.Savereminder = false;
this.Reminderquantity = 0;
this.totalquantity = 0;
- this.$refs["form"].validate(valid => {
- if (valid) {
- this.formData = this.form;
- //淇濆瓨鍓嶆牎楠屾暟鎹�
- for (let k = 0; k < this.rbDetails.length; k++) {
- let tempDetail = this.rbDetails[k];
- if (tempDetail.itemid == null) {
- this.$modal.msgWarning(
- "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
+ // 涓撳鍔冲姟璐逛笓鐢細9 鏉¤垂鐢ㄦ帶鍒惰鍒欐牎楠岋紙鏍¢獙涓嶉�氳繃涓嶅厑璁歌惤搴擄級
+ this.checkExpertFeeRules("淇濆瓨").then((allowed) => {
+ if (!allowed) {
+ return;
+ }
+
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ this.formData = this.form;
+
+ //淇濆瓨鍓嶆牎楠屾暟鎹�
+ for (let k = 0; k < this.rbDetails.length; k++) {
+ let tempDetail = this.rbDetails[k];
+ if (tempDetail.itemid == null) {
+ this.$modal.msgWarning(
+ "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
(k + 1).toString() +
"琛岀殑鏈嶅姟椤圭洰鏈�夋嫨锛岃鍏堥�夋嫨鏈嶅姟椤圭洰鍚庡啀鎻愪氦淇濆瓨锛�"
- );
- return;
- }
+ );
+ return;
+ }
- if (this.businessType == "1") {
- if (tempDetail.servicesscope == null) {
- this.$modal.msgWarning(
- "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
+ if (this.businessType == "1") {
+ if (tempDetail.servicesscope == null) {
+ this.$modal.msgWarning(
+ "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
(k + 1).toString() +
"琛岀殑璐圭敤璇存槑鏈�夋嫨,璇烽�夋嫨璐圭敤璇存槑鍚庡啀鎻愪氦淇濆瓨锛�"
- );
- return;
- }
+ );
+ return;
+ }
- if (tempDetail.beneficiaryno == null) {
- this.$modal.msgWarning(
- "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
+ if (tempDetail.beneficiaryno == null) {
+ this.$modal.msgWarning(
+ "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
(k + 1).toString() +
"琛岀殑浜哄憳濮撳悕涓虹┖,璇烽�夋嫨浜哄憳鍚庡啀鎻愪氦淇濆瓨锛�"
- );
- return;
- }
- if (tempDetail.unitname == null) {
- this.$modal.msgWarning(
- "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
+ );
+ return;
+ }
+ if (tempDetail.unitname == null) {
+ this.$modal.msgWarning(
+ "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
(k + 1).toString() +
"琛岀殑涓撳鍗曚綅涓虹┖,璇烽�夋嫨鍗曚綅鍚庡啀鎻愪氦淇濆瓨锛�"
- );
- return;
+ );
+ return;
+ }
}
}
- }
- //澶勭悊鏄庣粏
- for (let i = 0; i < this.rbDetails.length; i++) {
- let tempDetail = this.rbDetails[i];
- //鑾峰彇鏈嶅姟椤圭洰鏄庣粏
- let tempitemlist = tempDetail.itemlist;
- let itemIndex = tempitemlist.findIndex(
- item => tempDetail.itemid == item.id
- );
- if (itemIndex > -1) {
- tempDetail.itemname = tempitemlist[itemIndex].itemName;
- tempDetail.itemid = tempitemlist[itemIndex].id;
- }
+ //澶勭悊鏄庣粏
+ for (let i = 0; i < this.rbDetails.length; i++) {
+ let tempDetail = this.rbDetails[i];
+ //鑾峰彇鏈嶅姟椤圭洰鏄庣粏
+ let tempitemlist = tempDetail.itemlist;
+ let itemIndex = tempitemlist.findIndex(
+ item => tempDetail.itemid == item.id
+ );
+ if (itemIndex > -1) {
+ tempDetail.itemname = tempitemlist[itemIndex].itemName;
+ tempDetail.itemid = tempitemlist[itemIndex].id;
+ }
- //鑾峰彇applytypename銆佹湇鍔¤垂鐢ㄥぇ绫�
- let applytypeIndex = this.rowfeeItemTypes.findIndex(
- item => tempDetail.applytype == item.value
- );
- if (applytypeIndex > -1) {
- tempDetail.applytypename = this.rowfeeItemTypes[
- applytypeIndex
- ].label;
- tempDetail.subjecttype = this.rowfeeItemTypes[
- applytypeIndex
- ].subjecttype;
- tempDetail.subjecttypename = this.rowfeeItemTypes[
- applytypeIndex
- ].subjecttypename;
+ //鑾峰彇applytypename銆佹湇鍔¤垂鐢ㄥぇ绫�
+ let applytypeIndex = this.rowfeeItemTypes.findIndex(
+ item => tempDetail.applytype == item.value
+ );
+ if (applytypeIndex > -1) {
+ tempDetail.applytypename = this.rowfeeItemTypes[
+ applytypeIndex
+ ].label;
+ tempDetail.subjecttype = this.rowfeeItemTypes[
+ applytypeIndex
+ ].subjecttype;
+ tempDetail.subjecttypename = this.rowfeeItemTypes[
+ applytypeIndex
+ ].subjecttypename;
+ }
+ this.rbDetails[i] = tempDetail;
}
- this.rbDetails[i] = tempDetail;
- }
- //璁$畻褰撳墠琛屾姤閿�鍐呭璐圭敤鍚堣锛岀◣鍓嶉噾棰濓紙amount锛夈�佹墸绋庨噾棰濓紙taxamount锛夈�佺◣鍚庨噾棰濓紙taxedamount锛�
- if (this.businessType == "2") {
- for (let j = 0; j < this.rbDetails.length; j++) {
- let tempDetail = this.rbDetails[j];
- if (
- isNaN(parseFloat(tempDetail.amount)) ||
- parseFloat(tempDetail.amount) == 0
- ) {
- this.$modal.msgWarning(
- "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
+ //璁$畻褰撳墠琛屾姤閿�鍐呭璐圭敤鍚堣锛岀◣鍓嶉噾棰濓紙amount锛夈�佹墸绋庨噾棰濓紙taxamount锛夈�佺◣鍚庨噾棰濓紙taxedamount锛�
+ if (this.businessType == "2") {
+ for (let j = 0; j < this.rbDetails.length; j++) {
+ let tempDetail = this.rbDetails[j];
+ if (
+ isNaN(parseFloat(tempDetail.amount)) ||
+ moneyRound(tempDetail.amount) == 0
+ ) {
+ this.$modal.msgWarning(
+ "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
(j + 1).toString() +
"琛岀殑閲戦鏈緭鍏ワ紝璇峰厛杈撳叆閲戦鍚庡啀鎻愪氦淇濆瓨锛�"
- );
- return;
+ );
+ return;
+ }
}
- }
- } else if (this.businessType == "3" || this.businessType == "4") {
- for (let j = 0; j < this.rbDetails.length; j++) {
- let tempDetail = this.rbDetails[j];
- if (
- isNaN(parseFloat(tempDetail.amount)) ||
- parseFloat(tempDetail.amount) == 0
- ) {
- this.$modal.msgWarning(
- "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
+ } else if (this.businessType == "3" || this.businessType == "4") {
+ for (let j = 0; j < this.rbDetails.length; j++) {
+ let tempDetail = this.rbDetails[j];
+ if (
+ isNaN(parseFloat(tempDetail.amount)) ||
+ moneyRound(tempDetail.amount) == 0
+ ) {
+ this.$modal.msgWarning(
+ "鏈嶅姟椤圭洰琛ㄤ腑锛岀" +
(j + 1).toString() +
"琛岀殑閲戦鏈緭鍏ワ紝璇峰厛杈撳叆閲戦鍚庡啀鎻愪氦淇濆瓨锛�"
- );
- return;
- }
- if (
- isNaN(parseFloat(tempDetail.taxamount)) ||
- parseFloat(tempDetail.taxamount) == 0
- ) {
- tempDetail.taxedamount = parseFloat(tempDetail.amount);
- } else {
- tempDetail.taxedamount =
- parseFloat(tempDetail.amount) +
- parseFloat(tempDetail.taxamount);
+ );
+ return;
+ }
+ if (
+ isNaN(parseFloat(tempDetail.taxamount)) ||
+ moneyRound(tempDetail.taxamount) == 0
+ ) {
+ tempDetail.taxedamount = parseFloat(tempDetail.amount);
+ } else {
+ tempDetail.taxedamount =
+ parseFloat(tempDetail.amount) +
+ parseFloat(tempDetail.taxamount);
+ }
}
}
- }
- //淇濆瓨鏁版嵁
- this.loading = true;
- this.form.serviceFunddetails = 0;
- this.rbDetails.map(item => {
- this.form.serviceFunddetails += item.amount;
- });
- this.form.serviceFunddetails = this.rbDetails;
+ //淇濆瓨鏁版嵁
+ this.loading = true;
+ this.form.serviceFunddetails = 0;
+ this.rbDetails.map(item => {
+ this.form.serviceFunddetails += item.amount;
+ });
+ this.form.serviceFunddetails = this.rbDetails;
- if (this.form.id != null) {
- } else {
- this.form.recordstatus = -1;
- }
-
- addorupdateFund(this.form).then(response => {
- if (response.code === 200) {
- this.$modal.msgSuccess("鐢宠鍗曚繚瀛樻垚鍔燂紒");
- // 闈炴彁閱掔姸鎬佷笅鎵ц瀹℃壒瑙e喅寮傛璋冪敤寤惰繜闂
- if (!this.Savereminder) {
- let checkFundObj = {
- // fundid: this.checkObj.fundid,
- fundid: this.curId,
- flowconclusion: this.checkObj.flowlevelone,
- flowcontent: this.checkObj.flowconclusion
- };
- this.$modal.loading("姝e湪鎻愪氦瀹℃牳锛岃绋嶅�欙紒");
- checkfund(checkFundObj).then(res => {
- if (res.code == 200) {
- //鍏抽棴绐楀彛
- this.$modal.closeLoading();
- this.$modal.msgSuccess("瀹℃牳瀹屾垚!");
- this.$store.dispatch("tagsView/delView", this.$route);
- this.$router.go(-1);
- } else {
- this.$modal.closeLoading();
-
- if (res.msg) {
- this.$modal.msgError("鎿嶄綔澶辫");
- } else {
- this.$modal.msgError(res.msg);
- }
- }
- });
- }
- this.Getnetworkheader();
- this.getroute();
- this.getAccountList();
- this.getUserList();
- this.getUserProfile();
+ if (this.form.id != null) {
} else {
- this.$modal.msgError("鐢宠鍗曚繚瀛樺け璐ワ細" + response.msg);
+ this.form.recordstatus = -1;
}
- });
- //鍏抽棴绐楀彛
- this.loading = false;
- // this.getfundList();
- }
+ addorupdateFund(this.form).then(response => {
+ if (response.code === 200) {
+ this.$modal.msgSuccess("鐢宠鍗曚繚瀛樻垚鍔燂紒");
+ // 闈炴彁閱掔姸鎬佷笅鎵ц瀹℃壒瑙e喅寮傛璋冪敤寤惰繜闂
+ if (!this.Savereminder) {
+ let checkFundObj = {
+ // fundid: this.checkObj.fundid,
+ fundid: this.curId,
+ flowconclusion: this.checkObj.flowlevelone,
+ flowcontent: this.checkObj.flowconclusion
+ };
+ this.$modal.loading("姝e湪鎻愪氦瀹℃牳锛岃绋嶅�欙紒");
+ checkfund(checkFundObj).then(res => {
+ if (res.code == 200) {
+ //鍏抽棴绐楀彛
+ this.$modal.closeLoading();
+ this.$modal.msgSuccess("瀹℃牳瀹屾垚!");
+ // 杩炵画瀹℃壒锛氳闂槸鍚︾户缁鎵逛笅涓�鍗�
+ this.continueOrExit();
+ } else {
+ this.$modal.closeLoading();
+
+ this.$modal.msgError(res.msg || "鎿嶄綔澶辫触");
+ }
+ });
+ }
+ this.Getnetworkheader();
+ this.getroute();
+ this.getAccountList();
+ this.getUserList();
+ this.getUserProfile();
+ } else {
+ this.$modal.msgError("鐢宠鍗曚繚瀛樺け璐ワ細" + response.msg);
+ }
+ });
+
+ //鍏抽棴绐楀彛
+ this.loading = false;
+ // this.getfundList();
+ }
+ });
});
},
handleCheckAllChange(val) {
- this.checkedCities = val ? this.cityOptions : [];
+ this.checkedCities = val ? this.filteredCityOptions.slice() : [];
this.isIndeterminate = false;
},
handleCheckedCitiesChange(value) {
let checkedCount = value.length;
- this.checkAll = checkedCount === this.cityOptions.length;
+ this.checkAll =
+ this.filteredCityOptions.length > 0 &&
+ checkedCount === this.filteredCityOptions.length;
this.isIndeterminate =
- checkedCount > 0 && checkedCount < this.cityOptions.length;
+ checkedCount > 0 && checkedCount < this.filteredCityOptions.length;
},
// 鎵嬪姩璁$畻
Manualcalculationfn() {
@@ -2887,19 +2588,57 @@
// 鎵归噺褰曞叆鐐瑰嚮
Batchentry() {
// ethical
+ this.personKeyword = "";
+ this.checkedCities = [];
+ this.checkAll = false;
+ this.isIndeterminate = false;
listReportname("ethical").then(res => {
this.cityOptions = res.data;
});
this.batchdialogVisible = true;
},
+ /** 鎵归噺褰曞叆寮规锛氬鍚�/鍗曚綅/宸ュ彿/韬唤璇佸悗4浣� 鍛戒腑鍒ゆ柇 */
+ personMatchKeyword(item, kw) {
+ const idcard = String(item.idcrad || "");
+ return (
+ String(item.reportName || "")
+ .toLowerCase()
+ .indexOf(kw) > -1 ||
+ String(item.unitname || "")
+ .toLowerCase()
+ .indexOf(kw) > -1 ||
+ String(item.reportNo || "")
+ .toLowerCase()
+ .indexOf(kw) > -1 ||
+ (idcard.length >= 4 && idcard.slice(-4).indexOf(kw) > -1)
+ );
+ },
// 纭褰曞叆
BatchentryFn() {
+ // 鏄庣粏涓凡鏈夌殑浜哄憳濮撳悕锛岀敤浜庨噸澶嶆彁閱�
+ const existed = {};
+ this.rbDetails.forEach(row => {
+ if (row.beneficiaryname) {
+ existed[String(row.beneficiaryname).trim()] = true;
+ }
+ });
+
+ const duplicated = [];
this.checkedCities.forEach(item => {
+ const nameKey = String(item.reportName || "").trim();
+ if (nameKey && existed[nameKey]) {
+ duplicated.push(item.reportName);
+ return;
+ }
+ if (nameKey) {
+ existed[nameKey] = true;
+ }
let rowData = {
orderno: null,
fundid: null,
beneficiaryname: item.reportName,
beneficiaryno: item.reportNo,
+ isunit: 0,
unitname: item.unitname,
unitno: null,
uintuserno: null,
@@ -2944,11 +2683,17 @@
this.rbDetails.push(rowData);
});
- for (let i = 0; i < this.checkedCities.length + 1; i++) {
+ for (let i = 0; i < this.rbDetails.length; i++) {
this.rbDetails[i].orderno = i + 1;
}
this.calculateTax();
this.batchdialogVisible = false;
+ this.checkedCities = [];
+ if (duplicated.length) {
+ this.$modal.msgWarning(
+ "浠ヤ笅浜哄憳鍦ㄦ槑缁嗕腑宸插瓨鍦紝宸茶烦杩囬噸澶嶆坊鍔狅細" + duplicated.join("銆�")
+ );
+ }
},
//鏂板涓�琛�
addRow(rowIndex) {
@@ -2958,6 +2703,7 @@
fundid: null,
beneficiaryname: null,
beneficiaryno: null,
+ isunit: 0,
unitname: null,
itemdescribe: null,
unitno: null,
@@ -3054,33 +2800,32 @@
});
//鍏ㄩ儴鍒犻櫎鍚庢坊鍔犱竴鏉℃柊琛�
},
- //璁$畻鎬婚噾棰�
+ //璁$畻鎬婚噾棰濓紙閲戦涓�寰嬭蛋绮剧‘杩愮畻锛岀姝� parseFloat 绱姞锛�
sumTotalFee(row) {
- let allSum = 0;
+ const detailsArr = [];
if (this.form.applytype != null) {
for (let i = 0; i < this.rbDetails.length; i++) {
+ const detail = this.rbDetails[i];
let totalFee = 0;
let taxFee = 0;
if (this.form.applytype == 1 || this.form.applytype == 2) {
- //璁$畻褰撳墠鎶ラ攢鍐呭璐圭敤鍚堣
- if (!isNaN(parseFloat(this.rbDetails[i].amount))) {
- totalFee += parseFloat(this.rbDetails[i].amount);
- taxFee += parseFloat(this.rbDetails[i].amount);
+ //璁$畻褰撳墠鎶ラ攢鍐呭璐圭敤鍚堣锛氱◣鍓� - 鎵g◣
+ if (!isNaN(parseFloat(detail.amount))) {
+ totalFee = moneySub(totalFee, -parseFloat(detail.amount));
+ taxFee = moneySub(taxFee, -parseFloat(detail.amount));
}
- if (!isNaN(parseFloat(this.rbDetails[i].taxamount))) {
- totalFee -= parseFloat(this.rbDetails[i].taxamount);
- taxFee -= parseFloat(this.rbDetails[i].taxamount);
+ if (!isNaN(parseFloat(detail.taxamount))) {
+ totalFee = moneySub(totalFee, detail.taxamount);
+ taxFee = moneySub(taxFee, detail.taxamount);
}
} else if (this.form.applytype == 3 || this.form.applytype == 4) {
//鍗曚环*鏁伴噺=绋庡墠閲戦
if (
- !isNaN(parseFloat(this.rbDetails[i].price)) &&
- !isNaN(parseFloat(this.rbDetails[i].quantity))
+ !isNaN(parseFloat(detail.price)) &&
+ !isNaN(parseFloat(detail.quantity))
) {
- totalFee +=
- parseFloat(this.rbDetails[i].price) *
- parseFloat(this.rbDetails[i].quantity);
- this.rbDetails[i].amount = totalFee;
+ totalFee = moneyMul(detail.price, detail.quantity);
+ detail.amount = totalFee;
}
}
@@ -3089,9 +2834,10 @@
// this.rbDetails[i].taxedamount = taxFee.toFixed(2);
// }
- allSum += totalFee;
+ detailsArr.push(totalFee);
}
}
+ const allSum = moneyRound(moneySum(detailsArr));
// this.form.amountrequested = allSum.toFixed(2);
// this.$forceUpdate();
},
@@ -3166,7 +2912,21 @@
// 鍥剧墖鍔犺浇鎴愬姛鏃舵墽琛岀殑鎿嶄綔
console.log("Image loaded successfully");
},
- handleUploadError() {},
+ handleImageClick(index) {
+ this.currentIndex = index;
+ this.viewerVisible = true;
+ },
+ invoicehandleImageClick(index) {
+ this.invoicecurrentIndex = index;
+ this.invoiceviewerVisible = true;
+ },
+ handleViewerClose() {
+ this.viewerVisible = false;
+ },
+ invoicehandleViewerClose() {
+ this.invoiceviewerVisible = false;
+ },
+ handleUploadError() { },
remove(file, fileList) {
const rbDetails = [...this.rbDetails];
if (this.activeName == "common") {
@@ -3178,7 +2938,43 @@
}
},
+ /**
+ * 2026-10-15锛氫笂浼犳椂鏍¢獙闄勪欢鏂囦欢鍚嶏紙涓氬姟瑕佹眰锛氫笉鍚堟牸绔嬪嵆鎻愮ず涓斾笉鍔犲叆鍒楄〃锛夈��
+ * 瑙勫垯涓庡悗绔� AttachmentNameValidator 鍚屽彛寰勶細蹇呴』鍚腑鏂� / 鍘绘帀鎵╁睍鍚嶅悗涓诲共 鈮�20 瀛� /
+ * 涓嶅惈绌烘牸鍙� / \ : * ? " < > | # % 绛夌壒娈婂瓧绗︺��
+ */
+ checkUploadFileName(file) {
+ const raw = file && file.raw ? file.raw.name : file && file.name;
+ const r = checkFileName(raw);
+ if (!r.ok) {
+ this.$modal.msgError(r.msg);
+ return false;
+ }
+ return true;
+ },
+
+ /**
+ * 2026-10-15锛氫繚瀛樺墠鏍¢獙鏁村崟鏄庣粏闄勪欢鏂囦欢鍚嶏紙鍚悓涓�琛屽唴閲嶅悕锛夈��
+ * 鍙e緞锛堜笟鍔$‘璁わ級锛氬彧鏍¢獙"鏈鍙樻洿"鐨勯檮浠垛�斺�旇�佸崟鎹噷宸插瓨鍦ㄧ殑涓嶅悎瑙勯檮浠跺悕涓嶈兘鎶婁繚瀛樺崱姝�
+ * 锛堝惁鍒欒�佸崟鎹敼涓�涓噾棰濋兘瀛樹笉杩涘幓锛夈�傚悗绔寜 id 璇绘棫璁板綍鏀捐鍘嗗彶闄勪欢锛涘墠绔嬁涓嶅埌"鍝簺鏄巻鍙�"
+ * 鐨勬潈濞佷俊鎭紝鍥犳**浠呮柊澧炲崟鎹�**鍋氫繚瀛樺墠鎷︽埅锛岀紪杈戣�佸崟鎹椂鏂板鐨勪笉鍚堣闄勪欢鐢卞悗绔簩娆℃牎楠屾嫤涓嬨��
+ */
+ checkDetailFileNames() {
+ if (this.form && this.form.id) {
+ return true;
+ }
+ const c = checkDetails(this.rbDetails);
+ if (!c.ok) {
+ this.$modal.msgError(c.msg);
+ return false;
+ }
+ return true;
+ },
+
uploadSccess(response, file, fileList) {
+ if (!this.checkUploadFileName(file)) {
+ return;
+ }
this.rbDetails;
const config = {
headers: { Authorization: "Bearer " + this.ICDtoken }
@@ -3568,8 +3364,8 @@
if (hasIdOne) {
this.$modal.msgWarning(
"鏈嶅姟椤圭洰琛ㄤ腑锛屼汉鍛樺悕绉帮細" +
- res.username +
- "閲嶅锛岃娉ㄦ剰鏍稿淇℃伅锛�"
+ res.username +
+ "閲嶅锛岃娉ㄦ剰鏍稿淇℃伅锛�"
);
}
this.rbDetails[tempIndex].beneficiaryno = res.userno;
@@ -3580,11 +3376,13 @@
this.rbDetails[tempIndex].phone = res.telephone;
if (res.usertype == "org") {
+ this.$set(this.rbDetails[tempIndex], "isunit", 1);
this.rbDetails[tempIndex].idcardno = "";
this.rbDetails[tempIndex].title = "";
this.rbDetails[tempIndex].unitno = "";
this.rbDetails[tempIndex].unitname = "";
} else {
+ this.$set(this.rbDetails[tempIndex], "isunit", 0);
this.rbDetails[tempIndex].idcardno = res.idcardno;
this.rbDetails[tempIndex].title = res.title;
this.rbDetails[tempIndex].unitno = parseInt(res.unitno);
@@ -3690,12 +3488,14 @@
this.rbDetails[tempIndex].bankcardno = res.bankcardno;
this.rbDetails[tempIndex].phone = res.telephone;
- if (res.usertype == "org") {
+ if (this.hasUserType(res.usertype, "org")) {
+ this.$set(this.rbDetails[tempIndex], "isunit", 1);
this.rbDetails[tempIndex].idcardno = "";
this.rbDetails[tempIndex].title = "";
this.rbDetails[tempIndex].unitno = "";
this.rbDetails[tempIndex].unitname = "";
} else {
+ this.$set(this.rbDetails[tempIndex], "isunit", 0);
this.rbDetails[tempIndex].idcardno = res.idcardno;
this.rbDetails[tempIndex].title = res.title;
this.rbDetails[tempIndex].unitno = parseInt(res.unitno);
@@ -3741,11 +3541,14 @@
return;
}
- if (regex.test(row.idcardno)) {
- row.error = "";
- } else {
- row.error = "韬唤璇佸彿鐮佹牸寮忛敊璇�";
- }
+ //韬唤璇侀噸澶嶉獙璇�
+ getInfoByIDCardNo(idcardno).then(res => {
+ if (res.data.length > 1) {
+ this.$modal.msgWarning("韬唤璇佸彿淇℃伅宸茶鐧昏锛岃妫�鏌ヨ韩浠借瘉鍙凤紒"
+ );
+ return;
+ }
+ });
},
//璐︽埛绫诲瀷閫夋嫨鍙樺寲
@@ -3760,6 +3563,12 @@
}
},
+ // 澶辩劍鏃舵墜鍔ㄨЕ鍙戞牎楠岋紙鍙�夛紝閫氬父閰嶇疆浜� trigger: 'blur' 鍚庝細鑷姩瑙﹀彂锛�
+ handleIdCardBlur() {
+ // 鎵嬪姩鏍¢獙鍗曚釜瀛楁锛岀‘淇濆け鐒︽椂绔嬪埢鐪嬪埌缁撴灉
+ this.$refs.showselectiondialog.validateField('idcardno');
+ },
+
//鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛�
created() {
//鑾峰彇璺敱鍙傛暟
@@ -3771,7 +3580,9 @@
//鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛�
mounted() {
- window.addEventListener("beforeunload", e => this.beforeunloadHandler(e));
+ // 瀛樹綇鍚屼竴涓紩鐢紝鍚﹀垯 removeEventListener 浼犳柊绠ご鍑芥暟鏃犳硶鐪熸绉婚櫎锛屼細娉勬紡鐩戝惉鍣�
+ this._beforeUnloadHandler = e => this.beforeunloadHandler(e);
+ window.addEventListener("beforeunload", this._beforeUnloadHandler);
this.getUserList();
let apiaccountselectform = this.accountselectform;
let apiform = this.form;
@@ -3781,15 +3592,18 @@
this.$destroy();
next();
},
- beforeCreate() {}, //鐢熷懡鍛ㄦ湡 - 鍒涘缓涔嬪墠
- beforeMount() {}, //鐢熷懡鍛ㄦ湡 - 鎸傝浇涔嬪墠
- beforeUpdate() {}, //鐢熷懡鍛ㄦ湡 - 鏇存柊涔嬪墠
- updated() {}, //鐢熷懡鍛ㄦ湡 - 鏇存柊涔嬪悗
- beforeDestroy() {}, //鐢熷懡鍛ㄦ湡 - 閿�姣佷箣鍓�
+ beforeCreate() { }, //鐢熷懡鍛ㄦ湡 - 鍒涘缓涔嬪墠
+ beforeMount() { }, //鐢熷懡鍛ㄦ湡 - 鎸傝浇涔嬪墠
+ beforeUpdate() { }, //鐢熷懡鍛ㄦ湡 - 鏇存柊涔嬪墠
+ updated() { }, //鐢熷懡鍛ㄦ湡 - 鏇存柊涔嬪悗
+ beforeDestroy() { }, //鐢熷懡鍛ㄦ湡 - 閿�姣佷箣鍓�
destroyed() {
- window.removeEventListener("beforeunload", e => this.beforeunloadFn(e));
+ if (this._beforeUnloadHandler) {
+ window.removeEventListener("beforeunload", this._beforeUnloadHandler);
+ this._beforeUnloadHandler = null;
+ }
}, //鐢熷懡鍛ㄦ湡 - 閿�姣佸畬鎴�
- activated() {} //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂
+ activated() { } //濡傛灉椤甸潰鏈塳eep-alive缂撳瓨鍔熻兘锛岃繖涓嚱鏁颁細瑙﹀彂
};
</script>
@@ -3872,7 +3686,7 @@
line-height: 25px;
}
-::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered {
+::v-deep .el-checkbox.is-bordered+.el-checkbox.is-bordered {
margin-left: 0 !important;
margin-bottom: 10px;
}
--
Gitblit v1.9.3