Kaynağa Gözat

发票拖拽排序,发票一键确认

huangguoce 1 ay önce
ebeveyn
işleme
b87eef0fd3

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2117 - 2088
src/views/ccpm/reimbursement/info/InfoUpdateForm.vue


+ 2 - 2
src/views/ccpm/reimbursement/info/NewInfoUpdateForm.vue

@@ -11,7 +11,7 @@
 				@submit.native.prevent>
 
 				<el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-				<div v-if="isAdmin">
+				<!-- <div v-if="isAdmin">
 					<el-row>
 						<el-col :span="12">
 							<el-form-item label="报销项" prop="reimbursementType"
@@ -25,7 +25,7 @@
 							</el-form-item>
 						</el-col>
 					</el-row>
-				</div>
+				</div> -->
 				<el-row :gutter="26">
 					<el-col :span="12">
 						<el-form-item label="经办人" prop="userName">

+ 36 - 6
src/views/common/NewDigitalInvoiceUploadComponent.vue

@@ -18,13 +18,8 @@
 					上传报销的数电发票xml文件</span>
 			</template>
 		</el-upload>
-		<!-- <el-button v-if="this.allStatus && this.isConfirm" type="primary" size="default" style="margin-left: 10px;"
-				@click="allSelect('0')">全部取消</el-button>
-			<el-button v-if="!this.allStatus && this.isConfirm" type="primary" size="default" style="margin-left: 10px;"
-				@click="allSelect('1')">全部确认</el-button> -->
 		<!-- </el-divider> -->
-
-		<div style="height: calc(100% - 80px);margin-top: -20px">
+		<div style="height: calc(100% - 80px);">
 			<!-- 进度条 -->
 			<el-progress style="margin-left: 5em" v-if="progressFlag" :percentage="loadProgress"></el-progress>
 			<el-table :row-class-name="tableRowClassName" ref="uploadTable" v-loading="loading" :key="tableKey"
@@ -166,6 +161,8 @@ import OSSSerivce, {
 } from '@/api/sys/OSSService'
 // import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
 import moment from 'moment'
+import Sortable from 'sortablejs';
+
 export default {
 	data() {
 		return {
@@ -408,6 +405,38 @@ export default {
 					this.showDivider = true
 				}
 			}
+			// 如果是综合管理部主任,可以拖拽发票顺序
+			if (this.isConfirm == 1) {
+				const tbody = this.$refs.uploadTable.$el.querySelector('.el-table__body-wrapper tbody');
+				Sortable.create(tbody, {
+					group: 'shared',
+					animation: 150,
+					ghostClass: 'sortable-ghost', //拖拽样式
+					easing: 'cubic-bezier(1, 0, 0, 1)',
+					onStart: (item) => {
+						console.log(item);
+					},
+					// 结束拖动事件
+					onEnd: (item) => {
+						this.setNodeSort(item.oldIndex, item.newIndex)
+					},
+				})
+			}
+		},
+		setNodeSort(oldIndex, newIndex) {
+			// 使用arr复制一份表格数组数据
+			const arr = this.dataListNew;
+			const currentRow = arr.splice(oldIndex, 1)[0]
+			arr.splice(newIndex, 0, currentRow)
+			// 原数组置空
+			this.dataListNew = [];
+			this.$nextTick(async () => {
+				this.dataListNew = arr;
+				this.dataListNew.forEach((item, index) => {
+					item.sort = index + 1
+				});
+				this.$emit("handleUploadSuccess", JSON.parse(JSON.stringify(this.dataListNew)), this.uniqueId)
+			});
 		},
 		async httpRequest(file) {
 			await httpRequest(file, fileNameInvoice(file), this.directory, this.maxValue)
@@ -855,6 +884,7 @@ export default {
 			// this.$refs.upload.handleRemove(this.dataListNew[index])
 			this.dataListNew.splice(index, 1)
 
+
 			this.dataList = this.dataListNew
 			// if (this.commonJS.isNotEmpty(row.id)) {
 			// 	this.ossService.deleteMsgById(row.id)

+ 88 - 5
src/views/common/reimbursement/ReimbursementComponent.vue

@@ -43,6 +43,12 @@
                     @click="insertEvent('detail')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <el-col :span="24">
@@ -91,7 +97,7 @@
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}" show-overflow="title"
-                            min-width="180">
+                            width="180">
                             <template #edit="scope">
                                 <el-input :readonly="true" v-model="scope.row.reportNumber"></el-input>
                             </template>
@@ -172,6 +178,12 @@
                     @click="insertEvent('detail')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <el-col :span="24">
@@ -220,7 +232,7 @@
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}" show-overflow="title"
-                            min-width="180">
+                            width="180">
                             <template v-slot:edit="scope">
                                 <el-input :readonly="true" v-model="scope.row.reportNumber"
                                     @focus="openReportNoPageFormCwProject(scope.$rowIndex, scope.row)"></el-input>
@@ -301,6 +313,12 @@
                     @click="insertEvent('detail')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <el-col :span="24">
@@ -425,6 +443,12 @@
                     @click="insertEvent('contract_detail')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <vxe-table border show-footer show-overflow :footer-method="footerMethod" ref="detailTableContract"
@@ -453,7 +477,7 @@
                         </template>
                     </vxe-table-column>
                     <vxe-table-column field="contractName" title="报销合同" :edit-render="{}" show-overflow="title"
-                        min-width="180" :rules="[{ required: true, message: '请选择报销合同', trigger: 'blur' }]">
+                        width="100" :rules="[{ required: true, message: '请选择报销合同', trigger: 'blur' }]">
                         <template #edit="scope">
                             <el-input v-model="scope.row.contractName"
                                 @focus="openContractForm(scope.$rowIndex, scope.row)"></el-input>
@@ -532,6 +556,12 @@
                     @click="insertEvent('report_detail')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <el-col :span="24">
@@ -580,7 +610,7 @@
                             </template>
                         </vxe-table-column>
                         <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}" show-overflow="title"
-                            min-width="180">
+                            width="180">
                             <template v-slot:edit="scope">
                                 <el-input :readonly="true" v-model="scope.row.reportNumber"
                                     @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>
@@ -662,6 +692,12 @@
                     @click="insertEvent('report_detail')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <el-col :span="24">
@@ -786,6 +822,12 @@
                     @click="insertEvent('others')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <el-col :span="24">
@@ -910,6 +952,12 @@
                     :disabled="method === 'view' || this.formReadOnly" @click="insertEvent('procured')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <vxe-table border show-footer show-overflow :footer-method="footerMethod" ref="detailTableProcured"
@@ -1015,6 +1063,12 @@
                     @click="insertEvent('zs_project_detail')" plain>
                     新增报销单
                 </el-button>
+                <el-form inline :disabled="false" style="display: inline-block;">
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('0')">全部取消</el-button>
+                    <el-button v-if="this.isConfirm == 1" type="primary" size="default" style="margin-left: 10px;"
+                        @click="allSelect('1')">全部确认</el-button>
+                </el-form>
             </el-divider>
             <el-row :gutter="15">
                 <el-col :span="24">
@@ -1279,6 +1333,7 @@ import WorkContractChooseCom from '@/views/cw/projectRecords/WorkContractChooseC
 import processService from '@/api/flowable/processService'
 import userService from '@/api/sys/UserService'
 import ProgramPageForm from '@/views/finance/invoice/ProgramPageForm'
+import { set } from 'lodash'
 export default {
     props: {
         businessId: {
@@ -1625,6 +1680,7 @@ export default {
                 this.inputForm.detailInfoProcured.push(d)
                 this.detailKeyProcured = Math.random()
             }
+
         },
         insertInvoiceReimbursementEvent(type, value) {
             if (type === 'invoiceReimbursement') {
@@ -2581,7 +2637,9 @@ export default {
                 if (item.uniqueId == uniqueId) {
                     if (item.number) {
                         item.number = (parseFloat(item.number) - parseFloat(row.count)).toFixed(2)
-                        this.handleOrdinaryNumberInput(item, 1)
+                        console.log(item.number);
+
+                        // this.handleOrdinaryNumberInput(item, 1)
                     }
 
                 }
@@ -2691,6 +2749,8 @@ export default {
                         }
                     })
                     numberCount = numberCount.toFixed(2)
+                    console.log(numberCount);
+                    console.log(row.number);
                     if (Number(numberCount) > 0 && Number(row.number) > Number(numberCount)) {
 
                         row.number = 0
@@ -2741,6 +2801,29 @@ export default {
         },
         handleGetData() {
             return this.inputForm
+        },
+        // 发票的全部确认和全部取消
+        allSelect(status) {
+            this.handleTableInfo(this.inputForm.sourceType)
+            let isRefresh = false
+            this.inputForm.invoiceReimbursementFiles.forEach(item => {
+                if (item.confirmStatus != status) {
+                    isRefresh = true
+                }
+            })
+            if (isRefresh) {
+                this.tableRef.getRowExpandRecords().forEach(row => {
+                    this.tableRef.setRowExpand(row, false)
+                    setTimeout(() => {
+                        this.tableRef.setRowExpand(row, true)
+                    }, 150)
+                })
+                this.inputForm.invoiceReimbursementFiles.forEach(item => {
+                    item.confirmStatus = status
+                })
+
+            }
+
         }
     }
 }

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2066 - 2101
src/views/consultancy/reimbursement/info/InfoUpdateForm.vue


+ 2 - 2
src/views/consultancy/reimbursement/info/NewInfoForm.vue

@@ -7,7 +7,7 @@
         @submit.native.prevent>
 
         <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-        <el-row>
+        <!-- <el-row>
           <el-col :span="12">
             <el-form-item hidden label="报销项" prop="reimbursementType"
               :disabled="status === 'audit' || status === 'taskFormDetail'" :rules="[
@@ -19,7 +19,7 @@
                 {{ item.label }}</el-radio>
             </el-form-item>
           </el-col>
-        </el-row>
+        </el-row> -->
         <el-row :gutter="26">
           <el-col :span="12">
             <el-form-item label="经办人" prop="userName">

+ 2 - 2
src/views/consultancy/reimbursement/info/NewInfoUpdateForm.vue

@@ -10,7 +10,7 @@
         label-width="100px" @submit.native.prevent>
 
         <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-        <div v-if="isAdmin">
+        <!-- <div v-if="isAdmin">
           <el-row>
             <el-col :span="12">
               <el-form-item label="报销项" prop="reimbursementType"
@@ -24,7 +24,7 @@
               </el-form-item>
             </el-col>
           </el-row>
-        </div>
+        </div> -->
         <el-row :gutter="26">
           <el-col :span="12">
             <el-form-item label="经办人" prop="userName">

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2449 - 2419
src/views/cw/reimbursementApproval/info/InfoUpdateForm.vue


+ 2 - 2
src/views/cw/reimbursementApproval/info/NewInfoForm.vue

@@ -6,7 +6,7 @@
 				:disabled="method === 'view'" label-width="100px" @submit.native.prevent>
 
 				<el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-				<el-row>
+				<!-- <el-row>
 					<el-col :span="12">
 						<el-form-item hidden label="报销项" prop="reimbursementType"
 							:disabled="status === 'audit' || status === 'taskFormDetail'" :rules="[
@@ -18,7 +18,7 @@
 								{{ item.label }}</el-radio>
 						</el-form-item>
 					</el-col>
-				</el-row>
+				</el-row> -->
 				<el-row :gutter="26">
 					<el-col :span="12">
 						<el-form-item label="经办人" prop="userName">

+ 2 - 2
src/views/cw/reimbursementApproval/info/NewInfoUpdateForm.vue

@@ -11,7 +11,7 @@
 				@submit.native.prevent>
 
 				<el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-				<div v-if="isAdmin">
+				<!-- <div v-if="isAdmin">
 					<el-row>
 						<el-col :span="12">
 							<el-form-item label="报销项" prop="reimbursementType"
@@ -25,7 +25,7 @@
 							</el-form-item>
 						</el-col>
 					</el-row>
-				</div>
+				</div> -->
 				<el-row :gutter="26">
 					<el-col :span="12">
 						<el-form-item label="经办人" prop="userName">

+ 2 - 2
src/views/reimbursement/info/NewInfoUpdateForm.vue

@@ -11,7 +11,7 @@
 				@submit.native.prevent>
 
 				<el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-				<div v-if="isAdmin">
+				<!-- <div v-if="isAdmin">
 					<el-row>
 						<el-col :span="12">
 							<el-form-item label="报销项" prop="reimbursementType"
@@ -25,7 +25,7 @@
 							</el-form-item>
 						</el-col>
 					</el-row>
-				</div>
+				</div> -->
 				<el-row>
 					<el-col :span="12">
 						<el-form-item label="经办人" prop="userName">

+ 2 - 2
src/views/zs/reimbursement/info/NewInfoForm.vue

@@ -7,7 +7,7 @@
         @submit.native.prevent>
 
         <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-        <el-row>
+        <!-- <el-row>
           <el-col :span="12">
             <el-form-item hidden label="报销项" prop="reimbursementType"
               :disabled="status === 'audit' || status === 'taskFormDetail'" :rules="[
@@ -19,7 +19,7 @@
                 {{ item.label }}</el-radio>
             </el-form-item>
           </el-col>
-        </el-row>
+        </el-row> -->
         <el-row :gutter="26">
           <el-col :span="12">
             <el-form-item label="经办人" prop="userName">

+ 6 - 45
src/views/zs/reimbursement/info/NewInfoUpdateForm.vue

@@ -10,7 +10,7 @@
         label-width="100px" @submit.native.prevent>
 
         <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
-        <div v-if="isAdmin">
+        <!-- <div v-if="isAdmin">
           <el-row>
             <el-col :span="12">
               <el-form-item label="报销项" prop="reimbursementType"
@@ -24,7 +24,7 @@
               </el-form-item>
             </el-col>
           </el-row>
-        </div>
+        </div> -->
         <el-row :gutter="26">
           <el-col :span="12">
             <el-form-item label="经办人" prop="userName">
@@ -55,21 +55,12 @@
             ]">
               <el-select v-model="inputForm.sourceType" @change="changeSourceType" placeholder="请选择报销类型"
                 style="width:100%;">
-                <el-option v-for="item in $dictUtils.getDictList('zs_reimbursement_source_type')" :key="item.value"
+                <el-option v-for="item in $dictUtils.getDictList('zs_cw_reimbursement_source_type')" :key="item.value"
                   :label="item.label" :value="item.value">
                 </el-option>
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12" v-if="inputForm.sourceType === '5'">
-            <el-form-item label="采购编号" prop="purchaseNo" :rules="[{ required: true, message: '采购编号不能为空', trigger: 'blur' },
-            { required: true, message: '采购编号不能为空', trigger: 'change' }]">
-              <el-input size="medium" :readonly="true" @focus="openPurForm()" v-model="inputForm.purchaseNo"
-                placeholder="请选择采购编号">
-                <el-button size="default" slot="append" icon="el-icon-search" @click="openPurForm()"></el-button>
-              </el-input>
-            </el-form-item>
-          </el-col>
           <el-col :span="24">
             <el-form-item label="备注" prop="remarks">
               <el-input v-model="inputForm.remarks" type="textarea" :rows="5" maxlength="500" placeholder="请输入简介"
@@ -78,38 +69,6 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <div v-if="inputForm.sourceType === '5'">
-          <el-divider content-position="left"><i class="el-icon-document"></i>
-            采购详情
-          </el-divider>
-          <el-row :gutter="15">
-            <vxe-table border show-footer show-overflow :footer-method="footerMethod555" ref="preTable"
-              class="vxe-table-element" :data="inputForm.preList" style="margin-left: 5em" highlight-current-row>
-              <vxe-table-column field="purchaser" title="采购人" :edit-render="{}" show-overflow="title"
-                :rules="[{ required: true, message: '请选择采购人', trigger: 'blur' }]"></vxe-table-column>
-              <vxe-table-column field="procurementOffice" title="采购部门" :edit-render="{}"
-                show-overflow="title"></vxe-table-column>
-              <vxe-table-column field="procurementType" title="采购类型" :edit-render="{}" show-overflow="title"
-                :rules="[{ required: true, message: '请选择采购类型', trigger: 'blur' }]"></vxe-table-column>
-              <vxe-table-column field="tradeName" title="商品名称" :edit-render="{}" show-overflow="title"
-                :rules="[{ required: true, message: '请填写商品名称', trigger: 'blur' }]"></vxe-table-column>
-              <vxe-table-column field="tradePrice" title="商品单价(元)" :edit-render="{}" show-overflow="title"
-                :rules="[{ required: true, message: '请输入商品单价', trigger: 'blur' }]"></vxe-table-column>
-              <vxe-table-column field="tradeNumber" title="商品数量" :edit-render="{}"
-                show-overflow="title"></vxe-table-column>
-              <vxe-table-column field="priceSum" title="商品总价" :edit-render="{}"
-                show-overflow="title"></vxe-table-column>
-              <vxe-table-column field="company" title="单位" :edit-render="{}" show-overflow="title"></vxe-table-column>
-              <vxe-table-column field="remarks" title="备注" :edit-render="{}" show-overflow="title"></vxe-table-column>
-              <vxe-table-column title="操作">
-                <template #default="scope">
-                  <el-button size="default" type="primary" :disabled="false"
-                    @click="seeFileInfo(scope.$rowIndex)">文件详情</el-button>
-                </template>
-              </vxe-table-column>
-            </vxe-table>
-          </el-row>
-        </div>
         <ReimbursementComponent ref="reimbursementComponent">
         </ReimbursementComponent>
 
@@ -1342,12 +1301,13 @@ export default {
       this.inputForm.detailInfoContracts[rowIndex].contractName = row.contractName
       this.$forceUpdate()
     },
-    changeSourceType() {
+    changeSourceType(value) {
       this.inputForm.detailInfos = []
       this.inputForm.detailInfoContracts = []
       this.inputForm.detailInfoReports = []
       this.inputForm.detailInfoOthers = []
       this.inputForm.detailInfoProcured = []
+      this.inputForm.detailInfoProject = []
       this.inputForm.purchaseNo = ''
       this.inputForm.preList = ''
       this.inputForm.purchaseId = ''
@@ -1356,6 +1316,7 @@ export default {
       this.detailKeyReport = Math.random()
       this.detailKeyOthers = Math.random()
       this.detailKeyProcured = Math.random()
+      this.detailKeyProject = Math.random()
       this.$refs.reimbursementComponent.inputForm.invoiceReimbursementFiles = []
       this.$refs.reimbursementComponent.inputForm.sourceType = value
     },