Jelajahi Sumber

添加补贴字段,报销人可多选

huangguoce 1 bulan lalu
induk
melakukan
db0f5c80b6

+ 200 - 63
src/views/common/reimbursement/ReimbursementComponent.vue

@@ -70,14 +70,14 @@
                             </template>
                         </vxe-column>
                         <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title"
-                            width="90" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
+                            width="150" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
                             <template #edit="scope">
                                 <el-input v-model="scope.row.userName"
                                     @focus="userPullListForm(scope.$rowIndex)"></el-input>
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title"
-                            width="100">
+                            width="170">
                             <template #edit="scope">
                                 <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                             </template>
@@ -120,6 +120,15 @@
                                         @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                                 </template>
                             </vxe-table-column>
+                            <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120"
+                                show-overflow="title"
+                                :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                                <template #edit="scope">
+                                    <el-input maxlength="15" v-model="scope.row.subsidy"
+                                        @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                        @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                                </template>
+                            </vxe-table-column>
                             <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                                 :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                                 <template #header="{ column }">
@@ -205,14 +214,14 @@
                             </template>
                         </vxe-column>
                         <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title"
-                            :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]" width="90">
+                            :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]" width="150">
                             <template #edit="scope">
                                 <el-input v-model="scope.row.userName"
                                     @focus="userPullListForm(scope.$rowIndex)"></el-input>
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title"
-                            width="100">
+                            width="170">
                             <template #edit="scope">
                                 <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                             </template>
@@ -255,6 +264,15 @@
                                         @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                                 </template>
                             </vxe-table-column>
+                            <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120"
+                                show-overflow="title"
+                                :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                                <template #edit="scope">
+                                    <el-input maxlength="15" v-model="scope.row.subsidy"
+                                        @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                        @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                                </template>
+                            </vxe-table-column>
                             <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                                 :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                                 <template #header="{ column }">
@@ -340,7 +358,7 @@
                             </template>
                         </vxe-column>
                         <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title"
-                            width="90" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
+                            width="150" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
                             <template #edit="scope">
                                 <el-input v-model="scope.row.userName"
                                     @focus="userPullListForm(scope.$rowIndex)"></el-input>
@@ -348,7 +366,7 @@
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title"
-                            width="100">
+                            width="170">
                             <template #edit="scope">
                                 <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                             </template>
@@ -385,6 +403,15 @@
                                         @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                                 </template>
                             </vxe-table-column>
+                            <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120"
+                                show-overflow="title"
+                                :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                                <template #edit="scope">
+                                    <el-input maxlength="15" v-model="scope.row.subsidy"
+                                        @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                        @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                                </template>
+                            </vxe-table-column>
                             <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                                 :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                                 <template #header="{ column }">
@@ -456,7 +483,7 @@
                     style="margin-left: 5em" highlight-current-row
                     :edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
                     :edit-rules="validRules">
-                    <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" width="90"
+                    <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" width="150"
                         :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
                         <template #edit="scope">
                             <el-input v-model="scope.row.userName"
@@ -464,7 +491,7 @@
                             <!--              <UserSelectV2 :limit='1' :userName="scope.row.userName" @getValue='(value, label) => {scope.row.userName = label}'></UserSelectV2>-->
                         </template>
                     </vxe-table-column>
-                    <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title" width="100">
+                    <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title" width="170">
                         <template #edit="scope">
                             <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                         </template>
@@ -500,6 +527,14 @@
                                     @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                             </template>
                         </vxe-table-column>
+                        <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120" show-overflow="title"
+                            :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                            <template #edit="scope">
+                                <el-input maxlength="15" v-model="scope.row.subsidy"
+                                    @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                    @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                            </template>
+                        </vxe-table-column>
                         <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                             :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                             <template #header="{ column }">
@@ -584,14 +619,14 @@
                             </template>
                         </vxe-column>
                         <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title"
-                            width="90" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
+                            width="150" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
                             <template #edit="scope">
                                 <el-input v-model="scope.row.userName"
                                     @focus="userPullListForm(scope.$rowIndex)"></el-input>
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title"
-                            width="100">
+                            width="170">
                             <template #edit="scope">
                                 <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                             </template>
@@ -635,6 +670,15 @@
                                         @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                                 </template>
                             </vxe-table-column>
+                            <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120"
+                                show-overflow="title"
+                                :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                                <template #edit="scope">
+                                    <el-input maxlength="15" v-model="scope.row.subsidy"
+                                        @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                        @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                                </template>
+                            </vxe-table-column>
                             <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                                 :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                                 <template #header="{ column }">
@@ -720,7 +764,7 @@
                             </template>
                         </vxe-column>
                         <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title"
-                            width="90" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
+                            width="150" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
                             <template #edit="scope">
                                 <el-input v-model="scope.row.userName"
                                     @focus="userPullListForm3(scope.$rowIndex)"></el-input>
@@ -728,7 +772,7 @@
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title"
-                            width="100">
+                            width="170">
                             <template #edit="scope">
                                 <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                             </template>
@@ -764,6 +808,15 @@
                                         @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                                 </template>
                             </vxe-table-column>
+                            <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120"
+                                show-overflow="title"
+                                :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                                <template #edit="scope">
+                                    <el-input maxlength="15" v-model="scope.row.subsidy"
+                                        @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                        @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                                </template>
+                            </vxe-table-column>
                             <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                                 :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                                 <template #header="{ column }">
@@ -851,7 +904,7 @@
                             </template>
                         </vxe-column>
                         <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title"
-                            width="90" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
+                            width="150" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
                             <template #edit="scope">
                                 <el-input v-model="scope.row.userName"
                                     @focus="userPullListForm4(scope.$rowIndex)"></el-input>
@@ -859,7 +912,7 @@
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title"
-                            width="100">
+                            width="170">
                             <template #edit="scope">
                                 <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                             </template>
@@ -896,6 +949,15 @@
                                         @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                                 </template>
                             </vxe-table-column>
+                            <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120"
+                                show-overflow="title"
+                                :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                                <template #edit="scope">
+                                    <el-input maxlength="15" v-model="scope.row.subsidy"
+                                        @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                        @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                                </template>
+                            </vxe-table-column>
                             <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                                 :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                                 <template #header="{ column }">
@@ -1010,6 +1072,14 @@
                                     @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                             </template>
                         </vxe-table-column>
+                        <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120" show-overflow="title"
+                            :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                            <template #edit="scope">
+                                <el-input maxlength="15" v-model="scope.row.subsidy"
+                                    @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                    @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                            </template>
+                        </vxe-table-column>
                         <vxe-table-column field="numberCount" title="汇总" show-overflow="title"
                             :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                             <template #header="{ column }">
@@ -1094,7 +1164,7 @@
                             </template>
                         </vxe-column>
                         <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title"
-                            width="90" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
+                            width="150" :rules="[{ required: true, message: '请选择报销人', trigger: 'blur' }]">
                             <template #edit="scope">
                                 <el-input v-model="scope.row.userName"
                                     @focus="userPullListForm8(scope.$rowIndex)"></el-input>
@@ -1102,7 +1172,7 @@
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title"
-                            width="100">
+                            width="170">
                             <template #edit="scope">
                                 <el-input :disabled='true' v-model="scope.row.deptName"></el-input>
                             </template>
@@ -1158,6 +1228,15 @@
                                         @blur="handleOrdinaryNumberInput(scope.row, 2)"></el-input>
                                 </template>
                             </vxe-table-column>
+                            <vxe-table-column field="subsidy" title="补贴" :edit-render="{}" width="120"
+                                show-overflow="title"
+                                :rules="[{ required: true, message: '请输入subsidy', trigger: 'blur' }]">
+                                <template #edit="scope">
+                                    <el-input maxlength="15" v-model="scope.row.subsidy"
+                                        @input="handleOrdinaryNumberInput(scope.row, 3)"
+                                        @blur="handleOrdinaryNumberInput(scope.row, 3)"></el-input>
+                                </template>
+                            </vxe-table-column>
                             <vxe-table-column field="numberCount" title="汇总" show-overflow="title" width="120"
                                 :rules="[{ required: true, message: '请输入费用汇总', trigger: 'blur' }]">
                                 <template #header="{ column }">
@@ -1328,7 +1407,7 @@ import CwReimbursementTypePullForm from '@/views/zs/reimbursement/info/CwReimbur
 
 // 会计
 import CwReimbursementTypePullFormCw from '@/views/cw/reimbursementApproval/info/CwReimbursementTypePullForm'
-import UserPullForm from '@/views/finance/invoice/UserPullForm'
+import UserPullForm from '@/views/finance/invoice/UserPullMultipleForm'
 import CommonApi from '@/api/cw/common/CommonApi'
 import WorkContractChooseCom from '@/views/cw/projectRecords/WorkContractChooseCom'
 import processService from '@/api/flowable/processService'
@@ -2090,50 +2169,122 @@ export default {
             this.$refs.userPullForm5.init()
         },
         getProgramForUser(rows) {
-            this.inputForm.detailInfos[this.indexRow].userId = rows[0].id
-            this.inputForm.detailInfos[this.indexRow].userName = rows[0].name
-            this.inputForm.detailInfos[this.indexRow].deptId = rows[0].parentId
-            this.inputForm.detailInfos[this.indexRow].deptName = rows[0].officeName
+            if (!rows || !rows.length) return
+
+            const target = this.inputForm.detailInfos[this.indexRow]
+            if (!target) return
+
+            target.userId = rows.map(item => item.id).join(',')
+            target.userName = rows.map(item => item.name).join(',')
+
+            // 去重 parentId
+            const uniqueDeptIds = [...new Set(rows.map(item => item.parentId))].join(',')
+            target.deptId = uniqueDeptIds
+
+            // 去重 officeName
+            const uniqueDeptNames = [...new Set(rows.map(item => item.officeName))].join(',')
+            target.deptName = uniqueDeptNames
+
             this.indexRow = ''
             this.$forceUpdate()
         },
         getProgramForUser2(rows) {
-            this.inputForm.detailInfoContracts[this.indexRow].userId = rows[0].id
-            this.inputForm.detailInfoContracts[this.indexRow].userName = rows[0].name
-            this.inputForm.detailInfoContracts[this.indexRow].deptId = rows[0].parentId
-            this.inputForm.detailInfoContracts[this.indexRow].deptName = rows[0].officeName
+            if (!rows || !rows.length) return
+
+            const target = this.inputForm.detailInfoContracts[this.indexRow]
+            if (!target) return
+
+            target.userId = rows.map(item => item.id).join(',')
+            target.userName = rows.map(item => item.name).join(',')
+
+            // 去重 parentId
+            const uniqueDeptIds = [...new Set(rows.map(item => item.parentId))].join(',')
+            target.deptId = uniqueDeptIds
+
+            // 去重 officeName
+            const uniqueDeptNames = [...new Set(rows.map(item => item.officeName))].join(',')
+            target.deptName = uniqueDeptNames
+
             this.indexRow = ''
             this.$forceUpdate()
         },
         getProgramForUser3(rows) {
-            this.inputForm.detailInfoReports[this.indexRow].userId = rows[0].id
-            this.inputForm.detailInfoReports[this.indexRow].userName = rows[0].name
-            this.inputForm.detailInfoReports[this.indexRow].deptId = rows[0].parentId
-            this.inputForm.detailInfoReports[this.indexRow].deptName = rows[0].officeName
+            if (!rows || !rows.length) return
+
+            const target = this.inputForm.detailInfoReports[this.indexRow]
+            if (!target) return
+
+            target.userId = rows.map(item => item.id).join(',')
+            target.userName = rows.map(item => item.name).join(',')
+
+            // 去重 parentId
+            const uniqueDeptIds = [...new Set(rows.map(item => item.parentId))].join(',')
+            target.deptId = uniqueDeptIds
+
+            // 去重 officeName
+            const uniqueDeptNames = [...new Set(rows.map(item => item.officeName))].join(',')
+            target.deptName = uniqueDeptNames
+
             this.indexRow = ''
             this.$forceUpdate()
         },
         getProgramForUser4(rows) {
-            this.inputForm.detailInfoOthers[this.indexRow].userId = rows[0].id
-            this.inputForm.detailInfoOthers[this.indexRow].userName = rows[0].name
-            this.inputForm.detailInfoOthers[this.indexRow].deptId = rows[0].parentId
-            this.inputForm.detailInfoOthers[this.indexRow].deptName = rows[0].officeName
+            if (!rows || !rows.length) return
+
+            const target = this.inputForm.detailInfoOthers[this.indexRow]
+            if (!target) return
+
+            target.userId = rows.map(item => item.id).join(',')
+            target.userName = rows.map(item => item.name).join(',')
+
+            // 去重 parentId
+            const uniqueDeptIds = [...new Set(rows.map(item => item.parentId))].join(',')
+            target.deptId = uniqueDeptIds
+
+            // 去重 officeName
+            const uniqueDeptNames = [...new Set(rows.map(item => item.officeName))].join(',')
+            target.deptName = uniqueDeptNames
+
             this.indexRow = ''
             this.$forceUpdate()
         },
         getProgramForUser5(rows) {
-            this.inputForm.detailInfoProcured[this.indexRow].userId = rows[0].id
-            this.inputForm.detailInfoProcured[this.indexRow].userName = rows[0].name
-            this.inputForm.detailInfoProcured[this.indexRow].deptId = rows[0].parentId
-            this.inputForm.detailInfoProcured[this.indexRow].deptName = rows[0].officeName
+            if (!rows || !rows.length) return
+
+            const target = this.inputForm.detailInfoProcured[this.indexRow]
+            if (!target) return
+
+            target.userId = rows.map(item => item.id).join(',')
+            target.userName = rows.map(item => item.name).join(',')
+
+            // 去重 parentId
+            const uniqueDeptIds = [...new Set(rows.map(item => item.parentId))].join(',')
+            target.deptId = uniqueDeptIds
+
+            // 去重 officeName
+            const uniqueDeptNames = [...new Set(rows.map(item => item.officeName))].join(',')
+            target.deptName = uniqueDeptNames
+
             this.indexRow = ''
             this.$forceUpdate()
         },
         getProgramForUser8(rows) {
-            this.inputForm.detailInfoProject[this.indexRow].userId = rows[0].id
-            this.inputForm.detailInfoProject[this.indexRow].userName = rows[0].name
-            this.inputForm.detailInfoProject[this.indexRow].deptId = rows[0].parentId
-            this.inputForm.detailInfoProject[this.indexRow].deptName = rows[0].officeName
+            if (!rows || !rows.length) return
+
+            const target = this.inputForm.detailInfoProject[this.indexRow]
+            if (!target) return
+
+            target.userId = rows.map(item => item.id).join(',')
+            target.userName = rows.map(item => item.name).join(',')
+
+            // 去重 parentId
+            const uniqueDeptIds = [...new Set(rows.map(item => item.parentId))].join(',')
+            target.deptId = uniqueDeptIds
+
+            // 去重 officeName
+            const uniqueDeptNames = [...new Set(rows.map(item => item.officeName))].join(',')
+            target.deptName = uniqueDeptNames
+
             this.indexRow = ''
             this.$forceUpdate()
         },
@@ -2723,7 +2874,7 @@ export default {
                 } else {
                     row.number = 0
                 }
-                let count = parseFloat(Number(row.number || 0) + Number(row.ordinaryNumber || 0)).toFixed(2)
+                let count = parseFloat(Number(row.number || 0) + Number(row.ordinaryNumber || 0) + Number(row.subsidy || 0)).toFixed(2)
                 if (!isNaN(count)) {
                     row.numberCount = count
                     this.handleTableInfo(this.inputForm.sourceType)
@@ -2736,16 +2887,20 @@ export default {
             let value = 0
             if (index == 1) {
                 value = row.number
-            } else {
+            } else if (index == 2) {
                 value = row.ordinaryNumber
+            } else if (index == 3) {
+                value = row.subsidy
             }
             const regex = /^(?:[1-9]\d*|0)?(?:\.\d{0,2})?$/;
             // 如果是非数字,直接删除
             if (!regex.test(value)) {
                 if (index == 1) {
                     row.number = 0
-                } else {
+                } else if (index == 2) {
                     row.ordinaryNumber = 0
+                } else if (index == 3) {
+                    row.subsidy = 0
                 }
                 this.$message.warning('确保输入数字格式且小数点后只能输入两位')
                 return;
@@ -2766,7 +2921,7 @@ export default {
                     }
                 }
 
-                let count = parseFloat(Number(row.number || 0) + Number(row.ordinaryNumber || 0)).toFixed(2)
+                let count = parseFloat(Number(row.number || 0) + Number(row.ordinaryNumber || 0) + Number(row.subsidy || 0)).toFixed(2)
                 if (!isNaN(count)) {
 
                     row.numberCount = count
@@ -2776,24 +2931,6 @@ export default {
 
             }
         },
-        handleNumberInput(row, index) {
-            let value = 0
-            if (index == 1) {
-                value = row.number
-            } else {
-                value = row.ordinaryNumber
-            }
-            const regex = /^(?:[1-9]\d*|0)?(?:\.\d{0,2})?$/;
-            // 如果是非数字,直接删除
-            if (!regex.test(value)) {
-                row.ordinaryNumber = value.slice(0, -1);
-                return;
-            }
-            row.numberCount = parseFloat(Number(row.number || 0) + Number(row.ordinaryNumber || 0)).toFixed(2)
-            this.handleTableInfo(this.inputForm.sourceType)
-            this.tableRef.updateFooter(this.tableData)
-
-        },
         handleReceiptNumberInput(row) {
             if (this.commonJS.isNotEmpty(row.receiptNumber)) {
                 row.receiptNumber = String(row.receiptNumber).replace(/\D|^0/g, '')

+ 135 - 0
src/views/finance/invoice/UserPullMultipleForm.vue

@@ -0,0 +1,135 @@
+<template>
+  <div>
+    <el-dialog :title="title" :close-on-click-modal="false" draggable width="500px" height="500px" @close="close"
+      append-to-body v-model="visible">
+      <div style="height: calc(100% - 80px);">
+        <el-form :inline="true" class="query-form" ref="searchForm" :model="searchForm"
+          @keyup.enter.native="refreshList()" @submit.native.prevent>
+          <!-- 搜索框-->
+          <el-form-item label="" prop="name">
+            <el-input v-model="searchForm.name" placeholder="请输入用户名称" clearable></el-input>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" @click="list()" icon="el-icon-search">查询</el-button>
+            <el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
+          </el-form-item>
+        </el-form>
+        <vxe-table border="inner" auto-resize resizable height="300px" :loading="loading" size="small" ref="userTable"
+          show-header-overflow show-overflow highlight-hover-row :menu-config="{}" :sort-config="{ remote: true }"
+          :data="dataList" :row-config="{ isCurrent: true }" :radio-config="{ trigger: 'row' }"
+          :tree-config="{ transform: true, rowField: 'id', parentField: 'parentId', expandAll: true }" :checkbox-config="{
+            showHeader: false,
+            visibleMethod({ row }) {
+              return row.isUser;
+            }
+          }">
+          <!--          <vxe-column type="seq" width="60" title="序号"></vxe-column>-->
+          <vxe-column type="checkbox" width="50"></vxe-column>
+
+          <vxe-column title="姓名" min-width="180" field="name" align="left" tree-node></vxe-column>
+        </vxe-table>
+      </div>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+          <el-button type="primary" v-if="method != 'view'" @click="getProgramForUser()" icon="el-icon-circle-check"
+            v-noMoreClick>确定</el-button>
+        </span>
+      </template>
+
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import ReimbursementService from '@/api/sys/ReimbursementService'
+export default {
+  data() {
+    return {
+      title: '',
+      method: '',
+      visible: false,
+      loading: false,
+      dataList: [],
+      searchForm: {
+        name: ''
+      }
+    }
+  },
+  reimbursementService: null,
+  created() {
+    this.reimbursementService = new ReimbursementService()
+  },
+  components: {
+  },
+  methods: {
+    init() {
+      this.title = '人员选择'
+      this.visible = true
+      this.list()
+    },
+    // 表单提交
+    getProgramForUser() {
+      let rows = []
+      if (this.commonJS.isEmpty(this.$refs.userTable.getCheckboxRecords())) {
+        this.$message.error('请选择一条数据')
+        return
+      }
+      // if (this.$refs.userTable.getCheckboxRecords().length > 1) {
+      //   this.$message.error('最多选择一条数据')
+      //   return
+      // }
+      let users = this.$refs.userTable.getCheckboxRecords()
+      //判断rows中每一项的isUser属性是否为true
+      let isUserFlag = true
+      users.forEach(item => {
+        if (!item.isUser) {
+          isUserFlag = false
+        }
+      })
+      if (!isUserFlag) {
+        this.$message.error('请选择子集数据')
+        return
+      }
+      rows = this.$refs.userTable.getCheckboxRecords()
+      this.close()
+      this.$emit('getProgramForUser', rows)
+    },
+    list() {
+      this.loading = true
+      this.reimbursementService.userTree(this.searchForm.name).then((data) => {
+        this.dataList = data
+        this.loading = false
+        this.$nextTick(() => {
+          this.$refs.userTable.setAllTreeExpand(true)
+        })
+      })
+    },
+    // 当前页
+    currentChangeHandle({ currentPage, pageSize }) {
+      this.tablePage.currentPage = currentPage
+      this.tablePage.pageSize = pageSize
+      this.list()
+    },
+    resetSearch() {
+      this.$refs.searchForm.resetFields()
+      this.list()
+    },
+    close() {
+      this.detail = ''
+      this.visible = false
+    }
+  }
+}
+</script>
+<style>
+.messageZindex {
+  z-index: 9999 !important;
+}
+</style>
+<style scoped>
+/deep/ .el-dialog__body {
+  padding-top: 0px;
+}
+</style>