Sfoglia il codice sorgente

报销等相关功能调整

user5 1 anno fa
parent
commit
998a9cfe60
46 ha cambiato i file con 3910 aggiunte e 1151 eliminazioni
  1. 2 2
      src/api/cw/projectRecords/ProjectRecordsService.js
  2. 15 0
      src/api/cw/reimbursementApproval/ReimbursementApprovalService.js
  3. 20 5
      src/api/sys/OSSService.js
  4. 15 0
      src/api/sys/ReimbursementService.js
  5. 15 0
      src/api/zs/reimbursement/ReimbursementService.js
  6. 1 1
      src/utils/validateXG.js
  7. 585 0
      src/views/common/InvoiceReimbursementUpLoadComponent.vue
  8. 57 47
      src/views/common/UpLoadComponent.vue
  9. 54 40
      src/views/common/UpLoadComponentCcpm.vue
  10. 54 42
      src/views/common/UpLoadComponentV2.1.vue
  11. 54 40
      src/views/common/UpLoadComponentV2.vue
  12. 54 42
      src/views/common/UpLoadComponentV3.1.vue
  13. 54 40
      src/views/common/UpLoadComponentV3.vue
  14. 28 16
      src/views/cw/invoice/InvoiceForm.vue
  15. 137 94
      src/views/cw/invoice/InvoiceFormTask.vue
  16. 27 27
      src/views/cw/projectRecords/ProjectRecordsForm.vue
  17. 3 2
      src/views/cw/projectRecords/ProjectRecordsList.vue
  18. 19 0
      src/views/cw/projectReportArchive/ProjectReportArchiveForm.vue
  19. 10 3
      src/views/cw/projectReportArchive/ProjectReportArchiveTaskForm.vue
  20. 198 59
      src/views/cw/reimbursementApproval/info/InfoForm.vue
  21. 51 5
      src/views/cw/reimbursementApproval/info/InfoList.vue
  22. 615 152
      src/views/cw/reimbursementApproval/info/ReimbursementForm.vue
  23. 10 10
      src/views/cw/reportManagement/ReportManagementForm.vue
  24. 15 15
      src/views/cw/workClientInfo/WorkClientForm.vue
  25. 1 1
      src/views/cw/workContract/ContractFileForm.vue
  26. 1 1
      src/views/cw/workContract/ContractFilePaperForm.vue
  27. 23 21
      src/views/cw/workContract/ContractNameForm.vue
  28. 3 1
      src/views/dashboard/widgets/components/MyNoticePageList.vue
  29. 30 14
      src/views/finance/invoice/InvoiceForm.vue
  30. 56 48
      src/views/finance/invoice/InvoiceFormTask.vue
  31. 3 1
      src/views/flowable/task/NoticePageList.vue
  32. 9 0
      src/views/flowable/task/TaskForm.vue
  33. 3 1
      src/views/home/components/MyNoticePageList2.vue
  34. 2 2
      src/views/materialManagement/file/MaterialManagementV2.vue
  35. 7 7
      src/views/program/registered/ProjectForm.vue
  36. 4 4
      src/views/program/registered/ProofreadBrowseFormComponent.vue
  37. 16 16
      src/views/program/registered/ProofreadFormComponent.vue
  38. 187 59
      src/views/reimbursement/info/InfoForm.vue
  39. 48 2
      src/views/reimbursement/info/InfoList.vue
  40. 576 117
      src/views/reimbursement/info/ReimbursementForm.vue
  41. 10 10
      src/views/workClient/WorkClientForm.vue
  42. 7 7
      src/views/zs/reimbursement/info/CwProgramPageForm.vue
  43. 3 3
      src/views/zs/reimbursement/info/CwReimbursementTypePullForm.vue
  44. 198 59
      src/views/zs/reimbursement/info/InfoForm.vue
  45. 49 2
      src/views/zs/reimbursement/info/InfoList.vue
  46. 581 133
      src/views/zs/reimbursement/info/ReimbursementForm.vue

+ 2 - 2
src/api/cw/projectRecords/ProjectRecordsService.js

@@ -100,10 +100,10 @@ export default {
 		})
 	},
 
-	getReportByProjectId:function (id) {
+	getReportByProjectId:function (id,projectId) {
 		return request({
 			url:prefix + "/cwProjectRecords/getReportByProjectId",
-			params:{id:id}
+			params:{id:id,projectId:projectId}
 		})
 
 	}

+ 15 - 0
src/api/cw/reimbursementApproval/ReimbursementApprovalService.js

@@ -74,6 +74,14 @@ export default class ReimbursementApprovalService {
       responseType: 'blob'
     })
   }
+	exportInvoiceReimbursementFile (params) {
+    return request({
+      url: prefix + '/reimbursementApproval/info/exportInvoiceReimbursementFile',
+      method: 'get',
+      params: params,
+      responseType: 'blob'
+    })
+  }
   queryByProIds (ids) {
     return request({
       url: prefix + '/reimbursementApproval/info/queryByProIds',
@@ -81,4 +89,11 @@ export default class ReimbursementApprovalService {
       params: {ids: ids}
     })
   }
+  getEffectiveDataByInvoiceNumber (invoiceNumber,id) {
+	return request({
+		url: prefix + '/reimbursementApproval/info/getEffectiveDataByInvoiceNumber',
+		method: 'get',
+		params: {invoiceNumber: invoiceNumber,id:id}
+	})
+  }
 }

+ 20 - 5
src/api/sys/OSSService.js

@@ -54,13 +54,28 @@ export default class OSSSerive {
       params: {file: url}
     })
   }
+
+	disposeXmlFile (data) {
+    return request({
+      url: prefix + '/oss/file/disposeXmlFile',
+      method: 'post',
+	  data: data
+    })
+  }
+	downLoadFileDisposeXmlFile (url) {
+    return request({
+      url: prefix + '/oss/file/downLoadFileDisposeXmlFile',
+      method: 'post',
+		params: {file: url}
+    })
+  }
 }
 
 export const client = new OSS({
   region: 'oss-cn-hangzhou', // oss地址
   accessKeyId: 'LTAI5tQDWoM9c1WyJNPs86rX', // 通过阿里云控制台创建的AccessKey ID。
   accessKeySecret: '84dDIx4edT1n78KUOqqSmDZ35pchJv', // 通过阿里云控制台创建的AccessKey Secret。
-  bucket: 'xgxm-test', // 仓库名字
+	bucket: 'xgxm-test', // 仓库名字
 	// bucket: 'xg-pg', // 仓库名字
   useFetch: true, // 支持上传大于100KB的文件
   secure: false // 返回的url为https
@@ -135,13 +150,12 @@ export function beforeAvatarUpload (file, fileList, maxValue) {
 }
 
 export function exnameFix (file, isShow, names) {
-  // console.log('格式校验')
   const tmpcnt = file.name.lastIndexOf('.')
   const exname = file.name.substring(tmpcnt + 1) // 获取后缀名
   if (names.indexOf(exname) < 0) {
     if (isShow === '1') {
 		ElMessage({
-			message: '不支持的格式!',
+			message: '不支持的格式。文件仅支持 ' + names + '格式!',
 			type: 'error',
 		})
     }
@@ -171,6 +185,7 @@ export async function httpRequest (file, name, type, maxValue) { // 阿里云OSS
   await client.multipartUpload(fileName, file.file, {
 	  // eslint-disable-next-line no-unused-vars
     progress: await function (p, checkpoint) {
+    	console.log(3231221131)
       file.onProgress({percent: Math.floor(p * 100)}) // 触发el-upload组件的onProgress方法
     }
     // mime: type,
@@ -182,7 +197,7 @@ export async function httpRequest (file, name, type, maxValue) { // 阿里云OSS
     }
 	  // eslint-disable-next-line handle-callback-err,no-unused-vars
   }).catch(function (err) {
-    // console.log(err)
+    console.log('上传失败',err)
     file.onError('上传失败') // 触发el-upload组件的onError方法,此方法会移除文件列表
   })
 }
@@ -213,7 +228,7 @@ export async function openWindowOnUrl (row) {
   await getTemporaryByUrl(row.url).then((data) => {
     rowUrl = data
   })
-  if (suffix === 'pdf') {
+  if (suffix === 'pdf' || suffix === 'xml') {
     window.open('https://view.xdocin.com/xdoc?_xdoc=' + encodeURIComponent(rowUrl), '_blank')
   } else if (suffix === 'rar' || suffix === 'zip' || suffix === 'jar' || suffix === '7z') {
     window.open('https://view.xdocin.com/xdoc?_xdoc=' + encodeURIComponent(rowUrl), '_blank')

+ 15 - 0
src/api/sys/ReimbursementService.js

@@ -59,6 +59,14 @@ export default class ReimbursementService {
       responseType: 'blob'
     })
   }
+	exportInvoiceReimbursementFile (params) {
+    return request({
+      url: prefix + '/reimbursement/info/exportInvoiceReimbursementFile',
+      method: 'get',
+      params: params,
+      responseType: 'blob'
+    })
+  }
   queryByProIds (ids) {
     return request({
       url: prefix + '/reimbursement/info/queryByProIds',
@@ -66,4 +74,11 @@ export default class ReimbursementService {
       params: {ids: ids}
     })
   }
+	getEffectiveDataByInvoiceNumber (invoiceNumber,id) {
+		return request({
+			url: prefix + '/reimbursement/info/getEffectiveDataByInvoiceNumber',
+			method: 'get',
+			params: {invoiceNumber: invoiceNumber,id:id}
+		})
+	}
 }

+ 15 - 0
src/api/zs/reimbursement/ReimbursementService.js

@@ -73,4 +73,19 @@ export default class ReimbursementService {
       responseType: 'blob'
     })
   }
+	exportInvoiceReimbursementFile (params) {
+		return request({
+			url: prefix + '/zsReimbursement/info/exportInvoiceReimbursementFile',
+			method: 'get',
+			params: params,
+			responseType: 'blob'
+		})
+	}
+  getEffectiveDataByInvoiceNumber (invoiceNumber,id) {
+	return request({
+		url: prefix + '/zsReimbursement/info/getEffectiveDataByInvoiceNumber',
+		method: 'get',
+		params: {invoiceNumber: invoiceNumber,id:id}
+	})
+  }
 }

+ 1 - 1
src/utils/validateXG.js

@@ -36,7 +36,7 @@ export function isPhoneOrMobile (str) {
  */
 export function isBankNumber (str) {
   // const bankNumber = /^([1-9]{1})(\d{15}|\d{18})$/
-  const bankNumber = /^[1-9]\d{0,25}$/
+  const bankNumber = /^[0-9 ]{0,25}$/
   return bankNumber.test(str)
 }
 

+ 585 - 0
src/views/common/InvoiceReimbursementUpLoadComponent.vue

@@ -0,0 +1,585 @@
+<!--文件上传组件-->
+<template>
+  <div :key="uploadKey">
+    <el-divider v-if="showDivider" content-position="left"><i class="el-icon-document"></i><span style="color: red;border-top: 20px">* </span> {{dividerName}} </el-divider>
+    <el-upload ref="upload" style="display: inline-block; :show-header='status'" action=""
+               :limit="999" :http-request="httpRequest"
+               multiple
+               :on-exceed="(files, fileList) =>{
+                      $message.warning(`当前限制选择 999 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
+                     }"
+               :show-file-list="false"
+               :on-change="changes"
+               :on-progress="uploadVideoProcess"
+               :file-list="fileList">
+		<template v-if="auth==='view'&&uploadFlag===false" #tip>
+			<el-button :loading="loading" type="primary" size="default" :disabled="true"> 点击上传 </el-button>
+		</template>
+		<template v-else #trigger>
+			<el-button :loading="loading" type="primary" size="default"> 点击上传 </el-button> <span style="margin-left: 20px;font-size:14px;font-weight:normal;color:red;" type="primary"> 上传报销的电子发票xml文件</span>
+		</template>
+    </el-upload>
+    <div style="height: calc(100% - 80px);margin-top: 10px">
+      <!-- 进度条 -->
+      <el-progress style="margin-left: 5em" v-if="progressFlag" :percentage="loadProgress"></el-progress>
+      <el-table
+        ref="uploadTable"
+        v-loading="loading"
+        :key="tableKey"
+        :data="dataListNew">
+        <el-table-column type="seq" width="40"></el-table-column>
+        <el-table-column label="文件名称" prop="name" align="center">
+          <template #default="scope">
+            <div v-if="ifName(scope.row) === true">
+              <el-image
+                style="width: 30px; height: 30px;padding-top: 4px;"
+                :src="scope.row.lsUrl"
+                :preview-src-list="[scope.row.lsUrl]"
+				:preview-teleported="true"
+              ></el-image>
+            </div>
+            <div v-else>
+              <el-link  type="primary" :underline="false" @click="showFile(scope.row)">{{scope.row.name}}</el-link>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="创建人" prop="createBy.name" align="center"></el-table-column>
+        <el-table-column label="创建时间" prop="createTime" align="center"></el-table-column>
+        <el-table-column label="文件大小" prop="size" align="center">
+          <template #default="scope">
+            {{getSize(scope.row.size)}}
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" width="200px" fixed="right" align="center">
+          <template  #default="scope">
+            <el-button text type="primary" key="01" icon="el-icon-download" size="small" @click="toHref(scope.row)" >下载</el-button>
+            <el-button text type="primary" key="02" icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+<!--            <el-button v-if="createBy===scope.row.createBy.name" type="text"  icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false">删除2</el-button>-->
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+<!--    <el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="[url]" :zIndex=9999></el-image-viewer>-->
+  </div>
+</template>
+
+<script>
+  // eslint-disable-next-line no-unused-vars
+  import OSSSerivce, {
+    httpRequest,
+    // eslint-disable-next-line no-unused-vars
+    handleRemove,
+    fileName,
+    // eslint-disable-next-line no-unused-vars
+    beforeAvatarUpload,
+	  exnameFix,
+    // eslint-disable-next-line no-unused-vars
+    openWindowOnUrl,
+    // eslint-disable-next-line no-unused-vars
+    toHref
+  } from '@/api/sys/OSSService'
+  // import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
+  import moment from 'moment'
+  export default {
+    data () {
+      return {
+		  uploadKey: '',
+        progressFlag: false,
+        loadProgress: 0,
+        fileList: [],
+        dataList: [],
+        dataListNew: [],
+        url: '',
+        showViewer: false,
+        ossService: null,
+        auth: '',
+        directory: 'public',
+        maxValue: 300,
+        tableKey: '',
+        fileLoading: true,
+        dividerName: '',
+        uploadFlag: false,
+        delFlag: false,
+        createBy: '',
+        showDivider: true,
+        loading: false,
+        dataListLength: ''
+      }
+    },
+    watch: {
+    },
+    created () {
+      this.ossService = new OSSSerivce()
+    },
+    components: {
+      // ElImageViewer
+    },
+    mounted () {
+      window.onPreview = this.onPreview
+    },
+    methods: {
+      /**
+       * dividerName: 组件中divider的名称赋值
+       * showDivider: ‘附件‘Divider是否展示
+       *     注:值为空时,默认值为true
+       *    showDivider=false时 ‘附件‘Divider隐藏
+       **/
+      setDividerName (dividerName, showDivider) {
+        if (this.commonJS.isNotEmpty(dividerName)) {
+          this.dividerName = dividerName
+        }
+        if (this.commonJS.isNotEmpty(showDivider)) {
+          if (showDivider === false) {
+            this.showDivider = false
+          } else {
+            this.showDivider = true
+          }
+        } else {
+          this.showDivider = true
+        }
+      },
+      /**
+       * 文件上传组件初始化
+       * @param auth
+       *    auth的值为"view"时,不可上传/编辑文件
+       *    auth为其他值时,可上传/编辑文件
+       * @param fileList  要显示到文件上传列表中的文件。
+       *    注:文件必须要有url属性并且文件的url属性值必须是在oss中的路径值
+       *    例:'/attachment-file/xxx/xxx/2022/9/08/xxx.jpg'
+       * @param directory  要存放到oss的哪个文件夹下。
+       *    注:值为空时,默认存放到"public"文件夹
+       * @param maxValue  上传文件允许的最大值,单位:MB
+       *    注:值为空时,默认值为300MB
+       * @param dividerName  组件中divider的名称
+       *    注:值为空时,默认值为‘附件’
+       * @param uploadFlag  ‘上传文件’按钮是否禁用
+       *    注:值为空时,默认值为false
+       *    auth=view&&uploadFlag=false时 ‘上传文件’按钮禁用
+       * @param delFlag  ‘删除’按钮是否禁用
+       *    注:值为空时,默认值为false
+       *    auth=view&&delFlag=false时 ‘删除’按钮禁用
+       * @param showDivider  ‘附件‘Divider是否展示
+       *    注:值为空时,默认值为true
+       *    showDivider=false时 ‘附件‘Divider隐藏
+       */
+      async newUpload (auth, fileList, directory, maxValue, dividerName, uploadFlag, delFlag, showDivider) {
+        await this.fileLoadingFalse()
+        if (this.commonJS.isEmpty(fileList)) {
+			fileList = []
+          this.fileLoading = true
+        } else {
+          this.dataListLength = fileList.length
+        }
+        if (this.commonJS.isEmpty(dividerName)) {
+          this.dividerName = '附件'
+        } else {
+          this.dividerName = dividerName
+        }
+        if (directory !== undefined && directory !== null && directory !== '' && directory !== {}) {
+          this.directory = directory
+        } else {
+          this.directory = 'public'
+        }
+        if (maxValue !== undefined && maxValue !== null && maxValue !== '' && maxValue !== 0) {
+          this.maxValue = maxValue
+        } else {
+          this.maxValue = 300
+        }
+        this.auth = auth
+        if (this.commonJS.isEmpty(uploadFlag)) {
+          this.uploadFlag = false
+        } else {
+          if (uploadFlag !== true && uploadFlag !== false) {
+            this.uploadFlag = false
+          } else {
+            this.uploadFlag = uploadFlag
+          }
+        }
+        if (this.commonJS.isEmpty(delFlag)) {
+          this.delFlag = false
+        } else {
+          if (delFlag !== true && delFlag !== false) {
+            this.delFlag = false
+            this.createBy = delFlag
+          } else {
+            this.delFlag = delFlag
+          }
+        }
+        for await (let item of fileList) {
+          await this.ossService.getFileSizeByUrl(item.url).then((data) => {
+            item.lsUrl = data.url
+            item.size = data.size
+            this.dataList.push(item)
+            this.dataListNew.push(item)
+            if (this.dataListNew.length === fileList.length) {
+              this.fileLoading = true
+            }
+          })
+        }
+        // this.dataList = JSON.parse(JSON.stringify(fileList))
+        // this.dataListNew = JSON.parse(JSON.stringify(fileList))
+        if (this.commonJS.isEmpty(showDivider)) {
+          this.showDivider = true
+        } else {
+          if (showDivider === false) {
+            this.showDivider = false
+          } else {
+            this.showDivider = true
+          }
+        }
+      },
+      async httpRequest (file) {
+        await httpRequest(file, fileName(file), this.directory, this.maxValue)
+      },
+      uploadVideoProcess (event, file, fileList) {
+      	var reimbursementType = ''
+      	var parentHierarchy = 0
+      	if(this.$parent.inputForm) {
+			reimbursementType = this.$parent.inputForm.reimbursementType
+			parentHierarchy = 1
+		}else if(this.$parent.$parent.inputForm) {
+			reimbursementType = this.$parent.$parent.inputForm.reimbursementType
+			parentHierarchy = 2
+		}
+        this.progressFlag = true // 显示进度条
+        this.loadProgress = parseInt(event.percent) // 动态获取文件上传进度
+        if (this.loadProgress >= 100) {
+          this.loadProgress = 100
+			if("1" === reimbursementType){
+				var fileName = file.raw.name;
+
+				const spliceLength2 = fileName.lastIndexOf(".");
+				var fileNameSuffix = fileName.slice(spliceLength2 + 1);
+				if(fileNameSuffix === "xml" ) {
+					//对上传的xml文件信息进行处理并通过后端接口进行解析返回到父页面进行调整
+					const formBody = new FormData()
+					formBody.append('file', file.raw)
+					this.ossService.disposeXmlFile(formBody).then((data) => {
+						if(parentHierarchy === 1){
+							this.$parent.invoiceReimbursementDisposeData(data,file)
+						}else if (parentHierarchy ===2){
+							this.$parent.$parent.invoiceReimbursementDisposeData(data,file)
+						}
+					})
+				}
+
+			}
+          setTimeout(() => {
+            this.progressFlag = false
+          }, 1000) // 一秒后关闭进度条
+        }
+      },
+      getSize (value) {
+        if (this.commonJS.isEmpty(value)) {
+          return '0 B'
+        } else {
+          let val = parseInt(value)
+          if (this.commonJS.isEmpty(val)) {
+            return '0 B'
+          }
+          if (isNaN(val)) {
+            return '0 B'
+          }
+          if (val === 0) {
+            return '0 B'
+          }
+          let k = 1024
+          let sizes = ['B', 'KB', 'MB', 'GB', 'PB', 'TB', 'EB', 'ZB', 'YB']
+          let i = Math.floor(Math.log(val) / Math.log(k))
+			let result = val / Math.pow(k, i);
+			let kb = parseFloat(result.toPrecision(3));
+          return kb + '' + sizes[i]
+        }
+      },
+      async changes (file, fileList) {
+        // if (file.status !== 'ready') {
+        //   return
+        // }
+        if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+          this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+          return
+        }
+        if (!exnameFix(file, '1', 'xml')) {
+          //this.$message.error('文件仅支持 xml 格式!')
+          return
+        }
+        this.dataListNew = []
+        this.dataList.forEach((item) => {
+          this.dataListNew.push(item)
+        })
+		  var fileListNames = []
+		  for (let fileItem of this.fileList) {
+			  fileListNames.push(fileItem.name)
+		  }
+        for (let item of fileList) {
+			if(fileListNames.length === 0 || fileListNames.indexOf(item.name) === -1){
+				this.fileList.push(item)
+			}
+
+		  item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+		  item.createBy = {
+			id: '',
+			name: ''
+		  }
+		  item.createBy.id = this.$store.state.user.id
+		  item.createBy.name = this.$store.state.user.name
+			var count = 0;
+			for (let fileDataItem of this.dataListNew) {
+				if(fileDataItem.name === item.name){
+					count ++;
+				}
+			}
+			if(count === 0){
+				this.dataListNew.push(item)
+			}
+        }
+		  /*var fileListNewNames = []
+		  for (let fileItem of this.fileList) {
+			  fileListNewNames.push(fileItem.name)
+		  }
+		  for(let i = 0; i < fileList.length; i++) {
+			  let item = fileList[i]
+
+			  if (fileListNewNames.indexOf(item.name) > -1) {
+				  var count=0;
+				  for (let itemName of fileListNewNames) {
+					  if(itemName === item.name){
+						  count ++;
+					  }
+				  }
+				  if(count>0 && file.name === item.name){
+					  this.deleteFileinfo(file,i,fileList)
+				  }
+			  }
+		  }*/
+        for (let item of this.dataListNew) {
+          if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+            item.url = item.raw.url
+            if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+            	this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+                item.lsUrl = data
+              })
+            }
+          }
+        }
+      },
+      showFile (row) {
+        openWindowOnUrl(row)
+      },
+      onPreview (url) {
+        this.url = url
+        this.showViewer = true
+      },
+      // 关闭查看器
+      closeViewer () {
+        this.url = ''
+        this.showViewer = false
+      },
+      toHref (row) {
+        toHref(row)
+      },
+      async deleteById (row, index,fileList) {
+	  	// this.$refs.upload.handleRemove(this.dataListNew[index])
+        await this.dataListNew.splice(index, 1)
+		await this.dataList.splice(index, 1)
+		  if (this.commonJS.isNotEmpty(row.id)) {
+			  this.ossService.deleteMsgById(row.id)
+		  }
+		var newFileList = [];
+		for (var i = 0; i < fileList.length; i++) {
+		  if (fileList[i].name !== row.name) {
+			  newFileList.push(fileList[i])
+		  }
+		}
+		  this.fileList = newFileList;
+
+		var reimbursementType = ''
+		  var parentHierarchy = 0
+		  if(this.$parent.inputForm) {
+			  reimbursementType = this.$parent.inputForm.reimbursementType
+			  parentHierarchy = 1
+		  }else if(this.$parent.$parent.inputForm) {
+			  reimbursementType = this.$parent.$parent.inputForm.reimbursementType
+			  parentHierarchy = 2
+		  }
+		  if("1" === reimbursementType){
+			  var fileName = ''
+			  if(null === row.raw || undefined === row.raw){
+				  fileName = row.name;
+			  }else{
+				  fileName = row.raw.name;
+			  }
+
+			  const spliceLength2 = fileName.lastIndexOf(".");
+			  var fileNameSuffix = fileName.slice(spliceLength2 + 1);
+			  if(fileNameSuffix === "xml" ) {
+				  //对上传的xml文件信息进行处理并通过后端接口进行解析返回到父页面进行调整
+				  const formBody = new FormData()
+				  if(null === row.raw || undefined === row.raw){
+					  this.ossService.downLoadFileDisposeXmlFile(row.url).then((data) => {
+						  if(parentHierarchy === 1){
+							  this.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }else if (parentHierarchy ===2){
+							  this.$parent.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }
+					  })
+				  }else{
+					  formBody.append('file', row.raw)
+					  this.ossService.disposeXmlFile(formBody).then((data) => {
+						  if(parentHierarchy === 1){
+							  this.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }else if (parentHierarchy ===2){
+							  this.$parent.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }
+					  })
+				  }
+			  }
+
+		  }
+      },
+      async parentDeleteById (row) {
+		  var index = null;
+		  for (var j = 0; j < this.dataListNew.length; j++) {
+			  if (this.dataListNew[j].name === row.name) {
+				  index = j;
+			  }
+		  }
+        await this.dataListNew.splice(index, 1)
+		await this.dataList.splice(index, 1)
+		  if (this.commonJS.isNotEmpty(row.id)) {
+			  this.ossService.deleteMsgById(row.id)
+		  }
+		var newFileList = [];
+		for (var i = 0; i < this.fileList.length; i++) {
+		  if (this.fileList[i].name !== row.name) {
+			  newFileList.push(this.fileList[i])
+		  }
+		}
+		  this.fileList = newFileList;
+
+		var reimbursementType = ''
+		  var parentHierarchy = 0
+		  if(this.$parent.inputForm) {
+			  reimbursementType = this.$parent.inputForm.reimbursementType
+			  parentHierarchy = 1
+		  }else if(this.$parent.$parent.inputForm) {
+			  reimbursementType = this.$parent.$parent.inputForm.reimbursementType
+			  parentHierarchy = 2
+		  }
+		  if("1" === reimbursementType){
+			  var fileName = ''
+		  	if(null === row.raw || undefined === row.raw){
+				fileName = row.name;
+			}else{
+				fileName = row.raw.name;
+			}
+
+			  const spliceLength2 = fileName.lastIndexOf(".");
+			  var fileNameSuffix = fileName.slice(spliceLength2 + 1);
+			  if(fileNameSuffix === "xml" ) {
+				  //对上传的xml文件信息进行处理并通过后端接口进行解析返回到父页面进行调整
+				  const formBody = new FormData()
+				  if(null === row.raw || undefined === row.raw){
+					  this.ossService.downLoadFileDisposeXmlFile(row.url).then((data) => {
+						  if(parentHierarchy === 1){
+							  this.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }else if (parentHierarchy ===2){
+							  this.$parent.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }
+					  })
+				  }else{
+					  formBody.append('file', row.raw)
+					  this.ossService.disposeXmlFile(formBody).then((data) => {
+						  if(parentHierarchy === 1){
+							  this.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }else if (parentHierarchy ===2){
+							  this.$parent.$parent.deleteInvoiceReimbursementDisposeData(data)
+						  }
+					  })
+				  }
+			  }
+
+		  }
+      },
+		async deleteFileinfo (row) {
+			var index = null;
+			for (var j = 0; j < this.dataListNew.length; j++) {
+				if (this.dataListNew[j].name === row.name) {
+					index = j;
+				}
+			}
+			await this.dataListNew.splice(index, 1)
+			await this.dataList.splice(index, 1)
+			var newFileList = [];
+			for (var i = 0; i < this.fileList.length; i++) {
+				if (this.fileList[i].name !== row.name) {
+					newFileList.push(this.fileList[i])
+				}
+			}
+			this.fileList = newFileList;
+		},
+      /**
+       * 关闭dialog时使用  清除el-upload中上传的文件
+       */
+      clearUpload () {
+        this.$refs.upload.clearFiles()
+        this.dataList = []
+        this.dataListNew = []
+        this.createBy = ''
+      },
+      /**
+       * 获取当前文件列表中的文件数据
+       */
+      getDataList () {
+        return this.dataListNew
+      },
+      /**
+       * 判断进度条是否结束,附件是否加载完成
+       * @returns {boolean}
+       */
+      checkProgress () {
+        if (this.progressFlag === true) {
+          this.$message.warning('请等待附件上传完成再进行操作')
+          return true
+        }
+        if (this.fileLoading === false) {
+          this.$message.warning('请等待附件加载完成再进行操作')
+          if (this.dataListLength === this.dataListNew.length) {
+            this.fileLoading = true
+          }
+          return true
+        }
+        return false
+      },
+      ifName (row) {
+        if (this.commonJS.isEmpty(row.name)) {
+          row.name = '---'
+          return false
+        }
+        let suffix = row.name.substring(row.name.lastIndexOf('.') + 1)
+        if (suffix === 'jpg' || suffix === 'png' || suffix === 'gif' || suffix === 'bmp' || suffix === 'jpeg') {
+          return true
+        } else {
+          return false
+        }
+      },
+      fileLoadingFalse () {
+        this.fileLoading = false
+      },
+      // 开启/关闭页面的加载中状态
+      changeLoading (loading) {
+        if (this.commonJS.isNotEmpty(loading)) {
+          this.loading = loading
+        } else {
+          this.loading = false
+        }
+      }
+    }
+  }
+</script>
+<style>
+  .el-divider__text {
+    font-size: 16px;
+    font-weight: bold;
+  }
+</style>

+ 57 - 47
src/views/common/UpLoadComponent.vue

@@ -53,7 +53,7 @@
         <el-table-column label="操作" width="200px" fixed="right" align="center">
           <template  #default="scope">
             <el-button text type="primary" key="01" icon="el-icon-download" size="small" @click="toHref(scope.row)" >下载</el-button>
-            <el-button text type="primary" key="02" icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+            <el-button text type="primary" key="02" icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
 <!--            <el-button v-if="createBy===scope.row.createBy.name" type="text"  icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false">删除2</el-button>-->
           </template>
         </el-table-column>
@@ -261,41 +261,46 @@
           return kb + '' + sizes[i]
         }
       },
-      async changes (file, fileList) {
-        // if (file.status !== 'ready') {
-        //   return
-        // }
-        if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
-          this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
-          return
-        }
-        this.dataListNew = []
-        this.dataList.forEach((item) => {
-          this.dataListNew.push(item)
-        })
-        for (let item of fileList) {
-          item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
-          item.createBy = {
-            id: '',
-            name: ''
-          }
-          item.createBy.id = this.$store.state.user.id
-          item.createBy.name = this.$store.state.user.name
-          this.dataListNew.push(item)
-        }
-        for await (let item of this.dataListNew) {
-          if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
-            item.url = item.raw.url
-            if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
-              await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
-                item.lsUrl = data
-              })
-            }
-          }
-        }
-        this.tableKey = Math.random()
-        this.uploadKey = Math.random()
-      },
+		async changes (file, fileList) {
+			// if (file.status !== 'ready') {
+			//   return
+			// }
+			if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+				this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+				return
+			}
+			this.dataListNew = []
+			this.dataList.forEach((item) => {
+				this.dataListNew.push(item)
+			})
+			var fileListNames = []
+			for (let fileItem of this.fileList) {
+				fileListNames.push(fileItem.name)
+			}
+			for (let item of fileList) {
+				if(fileListNames.length === 0 || fileListNames.indexOf(item.name) === -1){
+					this.fileList.push(item)
+				}
+				item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				item.createBy = {
+					id: '',
+					name: ''
+				}
+				item.createBy.id = this.$store.state.user.id
+				item.createBy.name = this.$store.state.user.name
+				this.dataListNew.push(item)
+			}
+			for (let item of this.dataListNew) {
+				if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+					item.url = item.raw.url
+					if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+						this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+							item.lsUrl = data
+						})
+					}
+				}
+			}
+		},
       showFile (row) {
       	console.log('row', row)
         openWindowOnUrl(row)
@@ -312,17 +317,22 @@
       toHref (row) {
         toHref(row)
       },
-      async deleteById (row, index) {
-      	console.log('row', row)
-	  	// this.$refs.upload.handleRemove(this.dataListNew[index])
-        await this.dataListNew.splice(index, 1)
-		await this.dataList.splice(index, 1)
-		  if (this.commonJS.isNotEmpty(row.id)) {
-			  this.ossService.deleteMsgById(row.id)
-		  }
-		this.tableKey = Math.random()
-		this.uploadKey = Math.random()
-      },
+		async deleteById (row, index,fileList) {
+			// this.$refs.upload.handleRemove(this.dataListNew[index])
+			await this.dataListNew.splice(index, 1)
+			await this.dataList.splice(index, 1)
+			if (this.commonJS.isNotEmpty(row.id)) {
+				this.ossService.deleteMsgById(row.id)
+			}
+			var newFileList = [];
+			for (var i = 0; i < fileList.length; i++) {
+				if (fileList[i].name !== row.name) {
+					newFileList.push(fileList[i])
+				}
+			}
+			this.fileList = newFileList;
+
+		},
       /**
        * 关闭dialog时使用  清除el-upload中上传的文件
        */

+ 54 - 40
src/views/common/UpLoadComponentCcpm.vue

@@ -52,7 +52,7 @@
         <el-table-column label="操作" width="200px" fixed="right" align="center">
           <template  scope="scope">
             <el-button type="text"  icon="el-icon-edit" size="small" @click="toHref(scope.row)" :disabled="false">下载</el-button>
-            <el-button type="text"  icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+            <el-button type="text"  icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
 <!--            <el-button v-if="createBy===scope.row.createBy.name" type="text"  icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false">删除2</el-button>-->
           </template>
         </el-table-column>
@@ -258,40 +258,46 @@
           return (val / Math.pow(k, i)).toPrecision(3) + '' + sizes[i]
         }
       },
-      async changes (file, fileList) {
-        // if (file.status !== 'ready') {
-        //   return
-        // }
-        if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
-          this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
-          return
-        }
-        this.dataListNew = []
-        this.dataList.forEach((item) => {
-          this.dataListNew.push(item)
-        })
-        for (let item of fileList) {
-          item.createDate = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
-          item.createBy = {
-            id: '',
-            name: ''
-          }
-          item.createBy.id = this.$store.state.user.id
-          item.createBy.name = this.$store.state.user.name
-          this.dataListNew.push(item)
-        }
-        for await (let item of this.dataListNew) {
-          if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
-            item.url = item.raw.url
-            if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
-              await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
-                item.lsUrl = data.data
-              })
-            }
-          }
-        }
-        this.tableKey = Math.random()
-      },
+		async changes (file, fileList) {
+			// if (file.status !== 'ready') {
+			//   return
+			// }
+			if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+				this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+				return
+			}
+			this.dataListNew = []
+			this.dataList.forEach((item) => {
+				this.dataListNew.push(item)
+			})
+			var fileListNames = []
+			for (let fileItem of this.fileList) {
+				fileListNames.push(fileItem.name)
+			}
+			for (let item of fileList) {
+				if(fileListNames.length === 0 || fileListNames.indexOf(item.name) === -1){
+					this.fileList.push(item)
+				}
+				item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				item.createBy = {
+					id: '',
+					name: ''
+				}
+				item.createBy.id = this.$store.state.user.id
+				item.createBy.name = this.$store.state.user.name
+				this.dataListNew.push(item)
+			}
+			for (let item of this.dataListNew) {
+				if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+					item.url = item.raw.url
+					if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+						this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+							item.lsUrl = data
+						})
+					}
+				}
+			}
+		},
       showFile (row) {
         openWindowOnUrl(row)
       },
@@ -307,11 +313,19 @@
       toHref (row) {
         toHref(row)
       },
-      async deleteById (row, index) {
-		  await this.dataListNew.splice(index, 1)
-		  await this.dataList.splice(index, 1)
-		  this.tableKey = Math.random()
-      },
+		async deleteById (row, index,fileList) {
+			// this.$refs.upload.handleRemove(this.dataListNew[index])
+			await this.dataListNew.splice(index, 1)
+			await this.dataList.splice(index, 1)
+			var newFileList = [];
+			for (var i = 0; i < fileList.length; i++) {
+				if (fileList[i].name !== row.name) {
+					newFileList.push(fileList[i])
+				}
+			}
+			this.fileList = newFileList;
+
+		},
       /**
        * 关闭dialog时使用  清除el-upload中上传的文件
        */

+ 54 - 42
src/views/common/UpLoadComponentV2.1.vue

@@ -99,7 +99,7 @@
         <el-table-column label="操作" width="200px" fixed="right" align="center">
           <template  #default="scope">
             <el-button text type="primary"  icon="el-icon-edit" @click="toHref(scope.row)" :disabled="false">下载</el-button>
-            <el-button text type="primary"  icon="el-icon-delete"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+            <el-button text type="primary"  icon="el-icon-delete"  @click="deleteById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
             <!--<el-button text type="primary" icon="el-icon-edit"
                      @click="handleUpdate(scope.row, scope.$index)"
             >{{ scope.row.btn || "修改" }}</el-button>-->
@@ -479,41 +479,46 @@
           return (val / Math.pow(k, i)).toPrecision(3) + '' + sizes[i]
         }
       },
-      async changes (file, fileList) {
-        // if (file.status !== 'ready') {
-        //   return
-        // }
-        if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
-          this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
-          return
-        }
-        this.dataListNew = []
-        this.dataList.forEach((item) => {
-          this.dataListNew.push(item)
-        })
-        for (let item of fileList) {
-          item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
-          item.createBy = {
-            id: '',
-            name: ''
-          }
-          item.createBy.id = this.$store.state.user.id
-          item.createBy.name = this.$store.state.user.name
-          this.dataListNew.push(item)
-        }
-        for await (let item of this.dataListNew) {
-          if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
-            item.url = item.raw.url
-            if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
-              await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
-                item.lsUrl = data
-              })
-            }
-          }
-        }
-        this.tableKey = Math.random()
-		  this.uploadKey = Math.random()
-      },
+		async changes (file, fileList) {
+			// if (file.status !== 'ready') {
+			//   return
+			// }
+			if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+				this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+				return
+			}
+			this.dataListNew = []
+			this.dataList.forEach((item) => {
+				this.dataListNew.push(item)
+			})
+			var fileListNames = []
+			for (let fileItem of this.fileList) {
+				fileListNames.push(fileItem.name)
+			}
+			for (let item of fileList) {
+				if(fileListNames.length === 0 || fileListNames.indexOf(item.name) === -1){
+					this.fileList.push(item)
+				}
+				item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				item.createBy = {
+					id: '',
+					name: ''
+				}
+				item.createBy.id = this.$store.state.user.id
+				item.createBy.name = this.$store.state.user.name
+				this.dataListNew.push(item)
+			}
+			for (let item of this.dataListNew) {
+				if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+					item.url = item.raw.url
+					if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+						this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+							item.lsUrl = data
+						})
+					}
+				}
+			}
+		},
       showFile (row) {
         openWindowOnUrl(row)
       },
@@ -529,12 +534,19 @@
       toHref (row) {
         toHref(row)
       },
-      async deleteById (row, index) {
-		  await this.dataListNew.splice(index, 1)
-		  await this.dataList.splice(index, 1)
-		  this.tableKey = Math.random()
-		  this.uploadKey = Math.random()
-      },
+		async deleteById (row, index,fileList) {
+			// this.$refs.upload.handleRemove(this.dataListNew[index])
+			await this.dataListNew.splice(index, 1)
+			await this.dataList.splice(index, 1)
+			var newFileList = [];
+			for (var i = 0; i < fileList.length; i++) {
+				if (fileList[i].name !== row.name) {
+					newFileList.push(fileList[i])
+				}
+			}
+			this.fileList = newFileList;
+
+		},
       /**
        * 关闭dialog时使用  清除el-upload中上传的文件
        */

+ 54 - 40
src/views/common/UpLoadComponentV2.vue

@@ -84,7 +84,7 @@
         <el-table-column label="操作" width="200px" fixed="right" align="center">
           <template  #default="scope">
             <el-button text type="primary"  icon="el-icon-edit" size="small" @click="toHref(scope.row)" :disabled="false">下载</el-button>
-            <el-button text type="primary" icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+            <el-button text type="primary" icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
             <!--<el-button size="small" type="text" icon="el-icon-edit"
                      @click="handleUpdate(scope.row, scope.$index)"
             >{{ scope.row.btn || "修改" }}</el-button>-->
@@ -445,40 +445,46 @@
           return (val / Math.pow(k, i)).toPrecision(3) + '' + sizes[i]
         }
       },
-      async changes (file, fileList) {
-        // if (file.status !== 'ready') {
-        //   return
-        // }
-        if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
-          this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
-          return
-        }
-        this.dataListNew = []
-        this.dataList.forEach((item) => {
-          this.dataListNew.push(item)
-        })
-        for (let item of fileList) {
-          item.createDate = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
-          item.createBy = {
-            id: '',
-            name: ''
-          }
-          item.createBy.id = this.$store.state.user.id
-          item.createBy.name = this.$store.state.user.name
-          this.dataListNew.push(item)
-        }
-        for await (let item of this.dataListNew) {
-          if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
-            item.url = item.raw.url
-            if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
-              await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
-                item.lsUrl = data
-              })
-            }
-          }
-        }
-        this.tableKey = Math.random()
-      },
+		async changes (file, fileList) {
+			// if (file.status !== 'ready') {
+			//   return
+			// }
+			if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+				this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+				return
+			}
+			this.dataListNew = []
+			this.dataList.forEach((item) => {
+				this.dataListNew.push(item)
+			})
+			var fileListNames = []
+			for (let fileItem of this.fileList) {
+				fileListNames.push(fileItem.name)
+			}
+			for (let item of fileList) {
+				if(fileListNames.length === 0 || fileListNames.indexOf(item.name) === -1){
+					this.fileList.push(item)
+				}
+				item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				item.createBy = {
+					id: '',
+					name: ''
+				}
+				item.createBy.id = this.$store.state.user.id
+				item.createBy.name = this.$store.state.user.name
+				this.dataListNew.push(item)
+			}
+			for (let item of this.dataListNew) {
+				if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+					item.url = item.raw.url
+					if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+						this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+							item.lsUrl = data
+						})
+					}
+				}
+			}
+		},
       showFile (row) {
         openWindowOnUrl(row)
       },
@@ -494,11 +500,19 @@
       toHref (row) {
         toHref(row)
       },
-      async deleteById (row, index) {
-		  await this.dataListNew.splice(index, 1)
-		  await this.dataList.splice(index, 1)
-		  this.tableKey = Math.random()
-      },
+		async deleteById (row, index,fileList) {
+			// this.$refs.upload.handleRemove(this.dataListNew[index])
+			await this.dataListNew.splice(index, 1)
+			await this.dataList.splice(index, 1)
+			var newFileList = [];
+			for (var i = 0; i < fileList.length; i++) {
+				if (fileList[i].name !== row.name) {
+					newFileList.push(fileList[i])
+				}
+			}
+			this.fileList = newFileList;
+
+		},
       /**
        * 关闭dialog时使用  清除el-upload中上传的文件
        */

+ 54 - 42
src/views/common/UpLoadComponentV3.1.vue

@@ -78,7 +78,7 @@
         <el-table-column label="操作" width="200px" fixed="right" align="center">
           <template  #default="scope">
             <el-button text type="primary"  icon="el-icon-edit"  @click="toHref(scope.row)" :disabled="false">下载</el-button>
-            <el-button text type="primary"  icon="el-icon-delete"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+            <el-button text type="primary"  icon="el-icon-delete"  @click="deleteById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
             <!--<el-button type="text" icon="el-icon-edit"
                      @click="handleUpdate(scope.row, scope.$index)"
             >{{ scope.row.btn || "修改" }}</el-button>-->
@@ -376,41 +376,46 @@
           return (val / Math.pow(k, i)).toPrecision(3) + '' + sizes[i]
         }
       },
-      async changes (file, fileList) {
-        // if (file.status !== 'ready') {
-        //   return
-        // }
-        if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
-          this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
-          return
-        }
-        this.dataListNew = []
-        this.dataList.forEach((item) => {
-          this.dataListNew.push(item)
-        })
-        for (let item of fileList) {
-          item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
-          item.createBy = {
-            id: '',
-            name: ''
-          }
-          item.createBy.id = this.$store.state.user.id
-          item.createBy.name = this.$store.state.user.name
-          this.dataListNew.push(item)
-        }
-        for await (let item of this.dataListNew) {
-          if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
-            item.url = item.raw.url
-            if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
-              await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
-                item.lsUrl = data
-              })
-            }
-          }
-        }
-        this.tableKey = Math.random()
-		  this.uploadKey = Math.random()
-      },
+		async changes (file, fileList) {
+			// if (file.status !== 'ready') {
+			//   return
+			// }
+			if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+				this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+				return
+			}
+			this.dataListNew = []
+			this.dataList.forEach((item) => {
+				this.dataListNew.push(item)
+			})
+			var fileListNames = []
+			for (let fileItem of this.fileList) {
+				fileListNames.push(fileItem.name)
+			}
+			for (let item of fileList) {
+				if(fileListNames.length === 0 || fileListNames.indexOf(item.name) === -1){
+					this.fileList.push(item)
+				}
+				item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				item.createBy = {
+					id: '',
+					name: ''
+				}
+				item.createBy.id = this.$store.state.user.id
+				item.createBy.name = this.$store.state.user.name
+				this.dataListNew.push(item)
+			}
+			for (let item of this.dataListNew) {
+				if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+					item.url = item.raw.url
+					if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+						this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+							item.lsUrl = data
+						})
+					}
+				}
+			}
+		},
       showFile (row) {
         openWindowOnUrl(row)
       },
@@ -426,12 +431,19 @@
       toHref (row) {
         toHref(row)
       },
-      async deleteById (row, index) {
-		  await this.dataListNew.splice(index, 1)
-		  await this.dataList.splice(index, 1)
-		  this.tableKey = Math.random()
-		  this.uploadKey = Math.random()
-      },
+		async deleteById (row, index,fileList) {
+			// this.$refs.upload.handleRemove(this.dataListNew[index])
+			await this.dataListNew.splice(index, 1)
+			await this.dataList.splice(index, 1)
+			var newFileList = [];
+			for (var i = 0; i < fileList.length; i++) {
+				if (fileList[i].name !== row.name) {
+					newFileList.push(fileList[i])
+				}
+			}
+			this.fileList = newFileList;
+
+		},
       /**
        * 关闭dialog时使用  清除el-upload中上传的文件
        */

+ 54 - 40
src/views/common/UpLoadComponentV3.vue

@@ -73,7 +73,7 @@
         <el-table-column label="操作" width="200px" fixed="right" align="center">
           <template  scope="scope">
             <el-button type="text"  icon="el-icon-edit" size="small" @click="toHref(scope.row)" :disabled="false">下载</el-button>
-            <el-button type="text"  icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+            <el-button type="text"  icon="el-icon-delete" size="small"  @click="deleteById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
             <!--<el-button size="small" type="text" icon="el-icon-edit"
                      @click="handleUpdate(scope.row, scope.$index)"
             >{{ scope.row.btn || "修改" }}</el-button>-->
@@ -370,40 +370,46 @@
           return (val / Math.pow(k, i)).toPrecision(3) + '' + sizes[i]
         }
       },
-      async changes (file, fileList) {
-        // if (file.status !== 'ready') {
-        //   return
-        // }
-        if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
-          this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
-          return
-        }
-        this.dataListNew = []
-        this.dataList.forEach((item) => {
-          this.dataListNew.push(item)
-        })
-        for (let item of fileList) {
-          item.createDate = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
-          item.createBy = {
-            id: '',
-            name: ''
-          }
-          item.createBy.id = this.$store.state.user.id
-          item.createBy.name = this.$store.state.user.name
-          this.dataListNew.push(item)
-        }
-        for await (let item of this.dataListNew) {
-          if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
-            item.url = item.raw.url
-            if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
-              await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
-                item.lsUrl = data.data
-              })
-            }
-          }
-        }
-        this.tableKey = Math.random()
-      },
+		async changes (file, fileList) {
+			// if (file.status !== 'ready') {
+			//   return
+			// }
+			if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+				this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+				return
+			}
+			this.dataListNew = []
+			this.dataList.forEach((item) => {
+				this.dataListNew.push(item)
+			})
+			var fileListNames = []
+			for (let fileItem of this.fileList) {
+				fileListNames.push(fileItem.name)
+			}
+			for (let item of fileList) {
+				if(fileListNames.length === 0 || fileListNames.indexOf(item.name) === -1){
+					this.fileList.push(item)
+				}
+				item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				item.createBy = {
+					id: '',
+					name: ''
+				}
+				item.createBy.id = this.$store.state.user.id
+				item.createBy.name = this.$store.state.user.name
+				this.dataListNew.push(item)
+			}
+			for (let item of this.dataListNew) {
+				if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+					item.url = item.raw.url
+					if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+						this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+							item.lsUrl = data
+						})
+					}
+				}
+			}
+		},
       showFile (row) {
         openWindowOnUrl(row)
       },
@@ -419,11 +425,19 @@
       toHref (row) {
         toHref(row)
       },
-      async deleteById (row, index) {
-		  await this.dataListNew.splice(index, 1)
-		  await this.dataList.splice(index, 1)
-		  this.tableKey = Math.random()
-      },
+		async deleteById (row, index,fileList) {
+			// this.$refs.upload.handleRemove(this.dataListNew[index])
+			await this.dataListNew.splice(index, 1)
+			await this.dataList.splice(index, 1)
+			var newFileList = [];
+			for (var i = 0; i < fileList.length; i++) {
+				if (fileList[i].name !== row.name) {
+					newFileList.push(fileList[i])
+				}
+			}
+			this.fileList = newFileList;
+
+		},
       /**
        * 关闭dialog时使用  清除el-upload中上传的文件
        */

+ 28 - 16
src/views/cw/invoice/InvoiceForm.vue

@@ -33,31 +33,31 @@
 				  highlight-current-row
 				  :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true, icon: '-'}"
 			  >
-				  <vxe-table-column field="programName" title="项目名称" :edit-render="{}">
+				  <vxe-table-column field="programName" title="项目名称" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input @focus="openProgramPageForm(scope.$rowIndex)" placeholder="请填写项目名称"  :readonly="true" v-model="scope.row.programName"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="contractName" title="合同名称" :edit-render="{}">
+				  <vxe-table-column field="contractName" title="合同名称" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input @focus="openContractForm()" placeholder="请填写合同名称"  :readonly="true" v-model="scope.row.contractName"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="programNo" title="项目编号" :edit-render="{}">
+				  <vxe-table-column field="programNo" title="项目编号" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input :readonly="true"  placeholder="请填写项目编号" v-model="scope.row.programNo"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="reportNo" title="报告号" :edit-render="{}">
+				  <vxe-table-column field="reportNo" title="报告号" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input :readonly="true"  v-model="scope.row.reportNo" placeholder="请填写报告号"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column   field="account" align="center" title="发票金额(元)" :edit-render="{}">
+				  <vxe-table-column   field="account" align="center" title="发票金额(元)" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input
 
-							  v-on:input="scope.row.account=scope.row.account.replace(/[^\d.]/g,'')
+							  v-on:input="scope.row.account=scope.row.account.replace(/[^\d.-]/g,'')
 							  .replace(/^\./g,'')
 							  .replace(/\.{2,}/g,'.')
 							  .replace('.','$#$').replace(/\./g,'').replace('$#$','.')
@@ -313,6 +313,8 @@
               <el-input :disabled="true" v-model="inputForm.billingPeople" placeholder="请选择开票人" clearable></el-input>
             </el-form-item>
           </el-col>
+		</el-row>
+		<el-row :gutter="15">
             <el-col :span="12">
               <el-form-item label="开票时间" prop="billingDate"
                             :rules="[
@@ -367,6 +369,16 @@
                 @getValue="(value) => {inputForm.billingPeopleReal=value}"/>
             </el-form-item>
           </el-col>
+			<el-col :span="12">
+				<el-form-item label="接收邮箱" prop="actualDrawerEmailAddress"
+							  :rules="[
+							/*{required: true, message:'邮箱不能为空', trigger:'blur'},
+							{required: true, message:'邮箱不能为空', trigger:'change'}*/
+               ]">
+					<el-input v-model="inputForm.actualDrawerEmailAddress" placeholder="请输入接收邮箱" show-word-limit @blur="checkEmail" maxlength="50"></el-input>
+					<el-button  type="primary" style="position: absolute;right: 0px;" @click="openDia">完善邮箱</el-button>
+				</el-form-item>
+			</el-col>
           <el-col :span="12">
             <el-form-item label="对账人" prop="reconciliationPeople"
                           :rules="[
@@ -472,12 +484,12 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 				>
-					<vxe-table-column field="code" title="发票代码" :edit-render="{}">
+					<vxe-table-column field="code" title="发票代码" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input v-model="scope.row.code" placeholder="请填写发票代码"/>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="number" title="发票号" :edit-render="{}">
+					<vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input
 								oninput ="value=value.replace(/\D|^/g,'')"
@@ -489,7 +501,7 @@
 							</el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="account" title="开票金额(元)" :edit-render="{}">
+					<vxe-table-column field="account" title="开票金额(元)" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input-number
 								@blur="checkAccount(scope.row,scope.$rowIndex)"
@@ -506,7 +518,7 @@
 							</el-input-number>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="rate" title="税率(%)" :edit-render="{}">
+					<vxe-table-column field="rate" title="税率(%)" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input-number
 								@blur="checkRate(scope.row, scope.$rowIndex)"
@@ -522,17 +534,17 @@
 							</el-input-number>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="amount" title="金额" :edit-render="{}">
+					<vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input :readonly="true" v-model="scope.row.amount" placeholder="请填写金额"/>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="tax" title="税额" :edit-render="{}">
+					<vxe-table-column field="tax" title="税额" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input :readonly="true" v-model="scope.row.tax" placeholder="请填写税额"/>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="allAmount" title="累计登记金额" :edit-render="{}">
+					<vxe-table-column field="allAmount" title="累计登记金额" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input-number
 								v-model="scope.row.allAmount"
@@ -584,12 +596,12 @@
 				  :key="detailKey2"
 				  :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 			  >
-				  <vxe-table-column field="remittanceUnit" title="汇款单位" :edit-render="{}">
+				  <vxe-table-column field="remittanceUnit" title="汇款单位" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input v-model="scope.row.remittanceUnit" placeholder="请填写汇款单位"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="remittanceAmount" title="汇款金额(元)" :edit-render="{}">
+				  <vxe-table-column field="remittanceAmount" title="汇款金额(元)" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input-number
 							  v-model="scope.row.remittanceAmount"
@@ -604,7 +616,7 @@
 						  </el-input-number>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="remittanceDate" title="汇款时间" :edit-render="{}">
+				  <vxe-table-column field="remittanceDate" title="汇款时间" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input v-model="scope.row.remittanceDate" type="date" transfer placeholder="请填写汇款时间"/>
 					  </template>

+ 137 - 94
src/views/cw/invoice/InvoiceFormTask.vue

@@ -50,10 +50,9 @@
 				<vxe-table-column   field="account" align="center"   title="发票金额(元)" :edit-render="{}">
 					<template v-slot:edit="scope">
 						<el-input
-							v-on:input="scope.row.account=scope.row.account.replace(/[^\d.]/g,'')
+							v-on:input="scope.row.account=scope.row.account.replace(/[^-0-9.]/g,'')
 							  .replace(/^\./g,'')
 							  .replace(/\.{2,}/g,'.')
-							  .replace('.','$#$').replace(/\./g,'').replace('$#$','.')
 							  .replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
 							v-model="scope.row.account"
 							controls-position="right"
@@ -296,7 +295,7 @@
             </el-input>
           </el-form-item>
         </el-col >
-		  <el-col :span="12" v-if="(this.inputForm.programId==null || this.inputForm.programId == ''?!isShow:isShow) && status === 'audit'">
+		  <el-col :span="12" v-if="(this.commonJS.isNotEmpty(this.bj1)) && status === 'audit'">
 			  <el-form-item label="报备类型" prop="reportType"
 							:rules="[]"
 			  >
@@ -310,7 +309,7 @@
 				  </el-select>
 			  </el-form-item>
 		  </el-col>
-		  <el-col :span="12" v-if="(this.inputForm.programId==null || this.inputForm.programId == ''?!isShow:isShow) && status !== 'audit'">
+		  <el-col :span="12" v-if="(this.commonJS.isNotEmpty(this.bj1)) && status !== 'audit'">
 			  <el-form-item label="报备类型" prop="reportType"
 							:rules="[{required: true, message:'报备类型不能为空', trigger:'blur'}]"
 			  >
@@ -346,109 +345,146 @@
           <el-form-item label="开票人" prop="billingPeople"
                         :rules="[
                ]">
-            <el-input :disabled="true" v-model="inputForm.billingPeople" placeholder="请选择开票人" clearable></el-input>
-          </el-form-item>
-        </el-col>
-<!--        <el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="status !== 'audit'"-->
-<!--                 label-width="160px" @submit.native.prevent>-->
-<!--        </el-form>-->
-		  <el-col v-if="status === 'audit'" :span="12" >
-			  <el-form-item label="开票时间" prop="billingDate"
-							:rules="[
-                         {required: true, message:'开票时间不能为空', trigger:'blur'}
-                 ]">
-				  <el-date-picker
-					  v-model="inputForm.billingDate"
-					  type="date"
-					  value-format="YYYY-MM-DD"
-					  placeholder="选择开票时间"
-					  style="width:100%"
-					  placement="bottom-start"
-					  clearable>
-				  </el-date-picker>
+				  <el-input :disabled="true" v-model="inputForm.billingPeople" placeholder="请选择开票人" clearable></el-input>
 			  </el-form-item>
 		  </el-col>
-		  <el-col v-if="status !== 'audit'" :span="12" >
-			  <el-form-item label="开票时间" prop="billingDate"
-							:rules="[
+
+		  <el-form v-if="status === 'audit' || status === 'taskFormDetail'" :disabled="status === 'taskFormDetail'" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+				   label-width="160px" @submit.native.prevent>
+			  <el-row :gutter="15">
+			  <el-col :span="12" >
+				  <el-form-item label="开票时间" prop="billingDate"
+								:rules="[
+                         {required: true, message:'开票时间不能为空', trigger:'blur'}
                  ]">
-				  <el-date-picker
-					  v-model="inputForm.billingDate"
-					  type="date"
-					  value-format="YYYY-MM-DD"
-					  placeholder="选择开票时间"
-					  style="width:100%"
-					  placement="bottom-start"
-					  clearable>
-				  </el-date-picker>
-			  </el-form-item>
-		  </el-col>
-		  <el-col :span="12">
-			  <el-form-item label="领票时间" prop="collectDate"
-							:rules="[
+					  <el-date-picker
+						  v-model="inputForm.billingDate"
+						  type="date"
+						  value-format="YYYY-MM-DD"
+						  placeholder="选择开票时间"
+						  style="width:100%"
+						  placement="bottom-start"
+						  clearable>
+					  </el-date-picker>
+				  </el-form-item>
+			  </el-col>
+			  <el-col :span="12">
+				  <el-form-item label="领票时间" prop="collectDate"
+								:rules="[
                  ]">
-				  <el-date-picker
-					  v-model="inputForm.collectDate"
-					  type="date"
-					  value-format="YYYY-MM-DD"
-					  placeholder="选择领票时间"
-					  style="width:100%"
-					  placement="bottom-start"
-					  clearable>
-				  </el-date-picker>
-			  </el-form-item>
-		  </el-col>
+					  <el-date-picker
+						  v-model="inputForm.collectDate"
+						  type="date"
+						  value-format="YYYY-MM-DD"
+						  placeholder="选择领票时间"
+						  style="width:100%"
+						  placement="bottom-start"
+						  clearable>
+					  </el-date-picker>
+				  </el-form-item>
+			  </el-col>
+		  	</el-row>
+		  </el-form>
+
         <el-col :span="12">
-          <el-form-item label="实际开票人" prop="billingPeopleReal"
-                        :rules="[
+			<el-col v-if="status === 'audit'?true:false">
+				<el-form-item label="实际开票人" prop="billingPeopleReal"
+							  :rules="[
                         {required: true, message:'实际开票人不能为空', trigger:'blur'},
                         {required: true, message:'实际开票人不能为空', trigger:'change'}
                ]">
-            <SelectUserTree
-              ref="companyTree"
-              :props="{
+					<SelectUserTree
+						ref="companyTree"
+						:props="{
                 value: 'id',             // ID字段名
                 label: 'name',         // 显示名称
                 children: 'children'    // 子级字段名
               }"
-              :url="`/system-server/sys/user/treeFinanceOffice?type=2`"
-              :value="inputForm.billingPeopleReal"
-              :clearable="true"
-              :accordion="true"
-			  size="default"
-              @getValue="(value) => {inputForm.billingPeopleReal=value}"/>
-          </el-form-item>
+						:url="`/system-server/sys/user/treeUserDataAllOffice?type=2`"
+						:value="inputForm.billingPeopleReal"
+						:clearable="true"
+						:accordion="true"
+						size="default"
+						@getValue="(value) => {inputForm.billingPeopleReal=value}"/>
+				</el-form-item>
+			</el-col>
+			<el-col v-else>
+				  <el-form-item label="实际开票人" prop="billingPeopleReal"
+								:rules="[
+								{required: true, message:'实际开票人不能为空', trigger:'blur'},
+								{required: true, message:'实际开票人不能为空', trigger:'change'}
+					   ]">
+					<SelectUserTree
+					  ref="companyTree"
+					  :props="{
+						value: 'id',             // ID字段名
+						label: 'name',         // 显示名称
+						children: 'children'    // 子级字段名
+					  }"
+					  :url="`/system-server/sys/user/treeFinanceOffice?type=2`"
+					  :value="inputForm.billingPeopleReal"
+					  :clearable="true"
+					  :accordion="true"
+					  size="default"
+					  @getValue="(value) => {inputForm.billingPeopleReal=value}"/>
+				  </el-form-item>
+			</el-col>
         </el-col>
 		  <el-col :span="12">
 			  <el-form-item label="接收邮箱" prop="actualDrawerEmailAddress"
 							:rules="[
-							{required: true, message:'邮箱不能为空', trigger:'blur'},
-							{required: true, message:'邮箱不能为空', trigger:'change'}
+							/*{required: true, message:'邮箱不能为空', trigger:'blur'},
+							{required: true, message:'邮箱不能为空', trigger:'change'}*/
                ]">
 				  <el-input v-model="inputForm.actualDrawerEmailAddress" placeholder="请输入接收邮箱" show-word-limit @blur="checkEmail" maxlength="50"></el-input>
 				  <el-button  type="primary" style="position: absolute;right: 0px;" @click="openDia">完善邮箱</el-button>
 			  </el-form-item>
 		  </el-col>
         <el-col :span="12">
-          <el-form-item label="对账人" prop="reconciliationPeople"
-                        :rules="[
+			<el-col v-if="status === 'audit'?true:false">
+				<el-form-item label="对账人" prop="reconciliationPeople"
+							  :rules="[
                         {required: true, message:'对账人不能为空', trigger:'blur'},
                         {required: true, message:'对账人不能为空', trigger:'change'}
                ]">
-            <SelectUserTree
-              ref="companyTree"
-              :props="{
+					<SelectUserTree
+						ref="companyTree"
+						:props="{
                 value: 'id',             // ID字段名
                 label: 'name',         // 显示名称
                 children: 'children'    // 子级字段名
               }"
-              :url="`/system-server/sys/user/treeFinanceOffice?type=2`"
-              :value="inputForm.reconciliationPeople"
-              :clearable="true"
-              :accordion="true"
-			  size="default"
-              @getValue="(value) => {inputForm.reconciliationPeople=value}"/>
-          </el-form-item>
+						:url="`/system-server/sys/user/treeUserDataAllOffice?type=2`"
+						:value="inputForm.reconciliationPeople"
+						:clearable="true"
+						:accordion="true"
+						size="default"
+						@getValue="(value) => {inputForm.reconciliationPeople=value}"/>
+				</el-form-item>
+			</el-col>
+
+			<el-col v-else>
+				<el-form-item label="对账人" prop="reconciliationPeople"
+							  :rules="[
+                        {required: true, message:'对账人不能为空', trigger:'blur'},
+                        {required: true, message:'对账人不能为空', trigger:'change'}
+               ]">
+					<SelectUserTree
+						ref="companyTree"
+						:props="{
+                value: 'id',             // ID字段名
+                label: 'name',         // 显示名称
+                children: 'children'    // 子级字段名
+              }"
+						:url="`/system-server/sys/user/treeFinanceOffice?type=2`"
+						:value="inputForm.reconciliationPeople"
+						:clearable="true"
+						:accordion="true"
+						size="default"
+						@getValue="(value) => {inputForm.reconciliationPeople=value}"/>
+				</el-form-item>
+			</el-col>
+
         </el-col>
         <el-col :span="12">
           <el-form-item label="对账地区" prop="reconciliationArea"
@@ -770,12 +806,14 @@
 					  {required: true, message: '请填写发票金额'}
 				  ]
 			  },
+			  bj1: '',
 			  title: '',
 			  method: '',
 			  visible: false,
 			  loading: false,
 			  dialogFormVisible: false,
 			  inputForm: {
+				  checkType: '',
 				  programId: '',
 				  accountTotal: '',//发票汇总金额
 				  id: '',
@@ -803,8 +841,8 @@
 				  billingPeopleId: this.$store.state.user.id,
 				  billingDate: '',
 				  collectDate: '',
-				  billingPeopleReal: this.$store.state.user.id,
-				  reconciliationPeople: this.$store.state.user.id,
+				  billingPeopleReal: '',
+				  reconciliationPeople: '',
 				  reconciliationArea: '',
 				  remarks: '',
 				  name: '',
@@ -885,9 +923,11 @@
 			  this.keyWatch = keyWatch
 		  },
 		  init(method, id) {
+			  this.bj1 = ''
 			  this.importVisible = false
 			  this.method = method
 			  this.inputForm = {
+				  checkType: '',
 				  accountTotal: '',//发票汇总金额
 				  id: '',
 				  financeInvoiceBaseDTOList: [],
@@ -914,8 +954,8 @@
 				  billingPeopleId: this.$store.state.user.id,
 				  billingDate: '',
 				  collectDate: '',
-				  billingPeopleReal: this.$store.state.user.id,
-				  reconciliationPeople: this.$store.state.user.id,
+				  billingPeopleReal: '',
+				  reconciliationPeople: '',
 				  reconciliationArea: '',
 				  remarks: '',
 				  name: '',
@@ -962,10 +1002,8 @@
 					  this.inputForm = this.recover(this.inputForm, data)
 					  if (this.commonJS.isEmpty(this.inputForm.actualDrawerEmailAddress)) {
 						  this.inputForm.actualDrawerEmailAddress = this.userEmail
-						  console.log('123121', this.inputForm.actualDrawerEmailAddress)
 					  }
 					  this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
-					  console.log('this.inputForm', this.inputForm)
 					  if (!this.commonJS.isEmpty(this.inputForm.billingWorkplaceRealId)) {
 						  this.bankList = []
 						  workClientService.queryById(this.inputForm.billingWorkplaceRealId).then((data) => {
@@ -990,7 +1028,7 @@
 					  if (this.commonJS.isEmpty(this.inputForm.receivablesType)) {
 						  this.inputForm.receivablesType = '2'
 					  }
-					  if (this.commonJS.isEmpty(this.inputForm.billingPeople)) {
+					  if (this.status === 'audit') {
 						  this.inputForm.billingPeople = this.$store.state.user.name
 					  }
 					  if (this.commonJS.isEmpty(this.inputForm.billingPeopleId)) {
@@ -1000,6 +1038,7 @@
 					  if (this.commonJS.isEmpty(this.inputForm.billingPeopleReal)) {
 						  this.inputForm.billingPeopleReal = this.$store.state.user.id
 					  }
+					  console.log('reconciliationPeople', this.inputForm.reconciliationPeople)
 					  if (this.commonJS.isEmpty(this.inputForm.reconciliationPeople)) {
 						  this.inputForm.reconciliationPeople = this.$store.state.user.id
 					  }
@@ -1012,28 +1051,29 @@
 					  if (this.commonJS.isEmpty(this.inputForm.financeInvoiceReceivablesDTOList) || this.inputForm.financeInvoiceReceivablesDTOList.length === 0) {
 						  this.inputForm.financeInvoiceReceivablesDTOList = []
 					  }
+					  if (this.commonJS.isEmpty(this.inputForm.checkType) || this.inputForm.checkType === '0') {
+						  // 是否多张开票  默认为 0 否
+						  this.bj1 = 'bj1'
+					  }
 					  if (this.commonJS.isEmpty(this.inputForm.isMultiple) && this.status !== 'taskFormDetail') {
 						  // 是否多张开票  默认为 0 否
 						  this.inputForm.isMultiple = '0'
 					  }
 					  if (this.status === 'audit' || this.status === 'taskFormDetail') {
 						  method = 'view'
+						  if (this.status === 'audit'){
+							  this.inputForm.billingDate = this.moment(new Date()).format('YYYY-MM-DD')
+						  }
 					  }
-
-					  // if (this.status === 'audit') {
-					  //   if (this.commonJS.isEmpty(this.inputForm.billingDate)) {
-					  //     this.inputForm.billingDate = this.moment(new Date()).format('YYYY-MM-DD')
-					  //   }
-					  // }
-					  if (this.commonJS.isEmpty(this.inputForm.billingDate)) {
+					  /*if (this.commonJS.isEmpty(this.inputForm.billingDate)) {
 						  this.inputForm.billingDate = this.moment(new Date()).format('YYYY-MM-DD')
-					  }
+					  }*/
 					  if (!this.commonJS.isEmpty(this.status) && this.status === 'audit' && (this.commonJS.isEmpty(this.inputForm.financeInvoiceDetailDTOList) || this.inputForm.financeInvoiceDetailDTOList.length === 0)) {
 						  this.inputForm.financeInvoiceDetailDTOList = []
 						  let i = this.inputForm.financeInvoiceBaseDTOList.length
 						  let sun = 0
 						  for (let j = 0; j < i; j++) {
-							  sun += parseFloat(this.inputForm.financeInvoiceBaseDTOList[j].account)
+						  	sun = (100*sun + 100* this.inputForm.financeInvoiceBaseDTOList[j].account)/100
 						  }
 						  console.log(sun)
 						  this.inputForm.financeInvoiceDetailDTOList.push({
@@ -1266,6 +1306,7 @@
 			  })
 		  },
 		  close() {
+			  this.bj1 = ''
 			  this.$refs.uploadComponent.clearUpload()
 			  this.$refs.inputForm.resetFields()
 			  this.inputForm = {
@@ -1381,6 +1422,7 @@
 					  r.reportNo = item.reportNo
 					  r.reportType = item.reportType
 					  this.inputForm.financeInvoiceBaseDTOList[this.programRow] = r
+					  this.bj1 = rows.bj1
 				  } else {
 					  let r = {
 						  programName: item.projectName,
@@ -1393,6 +1435,7 @@
 					  }
 					  this.$refs.baseTable.insertAt(r)
 					  this.inputForm.financeInvoiceBaseDTOList.push(r)
+					  this.bj1 = rows.bj1
 					  this.baseKey = Math.random()
 				  }
 			  })

+ 27 - 27
src/views/cw/projectRecords/ProjectRecordsForm.vue

@@ -269,8 +269,8 @@
 							  keep-source
 							  highlight-current-row
 						  >
-							  <vxe-table-column align="center" field="name" title="客户名称" :edit-render="{}"></vxe-table-column>
-							  <vxe-table-column align="center" field="no" title="客户编号" :edit-render="{}"></vxe-table-column>
+							  <vxe-table-column align="center" field="name" title="客户名称" :edit-render="{}" show-overflow="title"></vxe-table-column>
+							  <vxe-table-column align="center" field="no" title="客户编号" :edit-render="{}" show-overflow="title"></vxe-table-column>
 							  <vxe-table-column align="center" title="操作" width="100">
 								  <template #default="scope">
 									  <el-button type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'client')">删除</el-button>
@@ -305,7 +305,7 @@
 							  :edit-rules="validContactRules"
 							  :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-'}"
 						  >
-							  <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}">
+							  <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.name" placeholder="姓名" clearable></el-input>
 								  </template>
@@ -322,37 +322,37 @@
 									  </vxe-select>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}">
+							  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.officeId" placeholder="部门" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column  align="center" field="position" title="职务" :edit-render="{}">
+							  <vxe-table-column  align="center" field="position" title="职务" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.position" placeholder="职务" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}">
+							  <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.contactFirst" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式1" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}">
+							  <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.contactSecond" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式2" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}">
+							  <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.fax" placeholder="传真" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}">
+							  <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.email" @change="$forceUpdate()" @blur="blurEmail(scope.$rowIndex)" placeholder="邮箱" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}">
+							  <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input maxlength="500" v-model="scope.row.remarks" placeholder="备注" clearable></el-input>
 								  </template>
@@ -380,10 +380,10 @@
                     style=""
                     highlight-current-row
                   >
-                    <vxe-table-column min-width="218" align="center" field="name" title="姓名"></vxe-table-column>
-                    <vxe-table-column min-width="218" align="center" field="officeName" title="部门"></vxe-table-column>
-                    <vxe-table-column min-width="218" align="center" field="roleName" title="角色"></vxe-table-column>
-                    <vxe-table-column min-width="218" align="center" field="mobile" title="手机号"></vxe-table-column>
+                    <vxe-table-column min-width="218" align="center" field="name" title="姓名" show-overflow="title"></vxe-table-column>
+                    <vxe-table-column min-width="218" align="center" field="officeName" title="部门" show-overflow="title"></vxe-table-column>
+                    <vxe-table-column min-width="218" align="center" field="roleName" title="角色" show-overflow="title"></vxe-table-column>
+                    <vxe-table-column min-width="218" align="center" field="mobile" title="手机号" show-overflow="title"></vxe-table-column>
                     <vxe-table-column min-width="218" align="center" field="status" title="状态">
                       <template #default="scope">
                         <span v-if="scope.row.status === '0'" style="color: #67C23A">正常</span>
@@ -434,21 +434,21 @@
               :data="reportList"
               :checkbox-config="{}">
               <vxe-column type="seq" width="60" title="序号"></vxe-column>
-              <vxe-column min-width="200" title="报告文号" align="center" field="reportNo">
+              <vxe-column min-width="200" title="报告文号" align="center" field="reportNo" show-overflow="title">
                 <template #default="scope">
                   <el-link  type="primary" :underline="false" @click="viewReport(scope.row.id)">{{scope.row.reportNo}}</el-link>
                 </template>
               </vxe-column>
-              <vxe-column min-width="200" title="项目名称" align="center" field="projectName">
+              <vxe-column min-width="200" title="项目名称" align="center" field="projectName" show-overflow="title">
                 <template #default="scope">
                   <el-link  type="primary" :underline="false" @click="viewProject(scope.row.projectId)">{{scope.row.projectName}}</el-link>
                 </template>
               </vxe-column>
-              <vxe-column min-width="200" title="项目编号" align="center" field="projectNumber"></vxe-column>
-              <vxe-column min-width="150" title="所属部门" align="center" field="officeName"></vxe-column>
-              <vxe-column min-width="150" title="项目经理" align="center" field="projectMasterName"></vxe-column>
-              <vxe-column min-width="120" title="报告创建人" align="center" field="createName"></vxe-column>
-              <vxe-column min-width="180" title="报告创建时间" align="center" field="createDate"></vxe-column>
+              <vxe-column min-width="200" title="项目编号" align="center" field="projectNumber" show-overflow="title"></vxe-column>
+              <vxe-column min-width="150" title="所属部门" align="center" field="officeName" show-overflow="title"></vxe-column>
+              <vxe-column min-width="150" title="项目经理" align="center" field="projectMasterName" show-overflow="title"></vxe-column>
+              <vxe-column min-width="120" title="报告创建人" align="center" field="createName" show-overflow="title"></vxe-column>
+              <vxe-column min-width="180" title="报告创建时间" align="center" field="createDate" show-overflow="title"></vxe-column>
             </vxe-table>
           </el-tab-pane>
           <el-tab-pane label="关联发票" name="invoice">
@@ -479,20 +479,20 @@
               :data="invoiceList"
               :checkbox-config="{}">
               <vxe-column type="seq" width="60" title="序号"></vxe-column>
-              <vxe-column min-width="150" title="发票申请编号" align="center" field="no">
+              <vxe-column min-width="150" title="发票申请编号" align="center" field="no" show-overflow="title">
                 <template #default="scope">
                   <el-link  type="primary" :underline="false" @click="viewInvoice(false, scope.row.id)">{{scope.row.no}}</el-link>
                 </template>
               </vxe-column>
-              <vxe-column min-width="150" title="发票号" align="center" field="number"></vxe-column>
-              <vxe-column min-width="150" title="实际开票单位" align="center" field="billingWorkplaceReal"></vxe-column>
-              <vxe-column min-width="150" title="开票金额(元)" align="center" field="accountDetail"></vxe-column>
-              <vxe-column min-width="120" title="开票内容" align="center" field="billingContent">
+              <vxe-column min-width="150" title="发票号" align="center" field="number" show-overflow="title"></vxe-column>
+              <vxe-column min-width="150" title="实际开票单位" align="center" field="billingWorkplaceReal" show-overflow="title"></vxe-column>
+              <vxe-column min-width="150" title="开票金额(元)" align="center" field="accountDetail" show-overflow="title"></vxe-column>
+              <vxe-column min-width="120" title="开票内容" align="center" field="billingContent" show-overflow="title">
                 <template #default="scope">
                   {{$dictUtils.getDictLabel('invoice_billing_content', scope.row.billingContent, '-')}}
                 </template>
               </vxe-column>
-              <vxe-column min-width="110" fixed="right" align="center" title="是否收款" field="receivablesStatus">
+              <vxe-column min-width="110" fixed="right" align="center" title="是否收款" field="receivablesStatus" show-overflow="title">
                 <template #default="scope">
                   {{scope.row.receivablesStatus === '1'?'已收款':'未收款'}}
                 </template>

+ 3 - 2
src/views/cw/projectRecords/ProjectRecordsList.vue

@@ -122,10 +122,10 @@
           <vxe-column min-width="160" align="center" title="创建时间" field="createTime"></vxe-column>
           <vxe-column title="操作" width="150px" fixed="right" align="center">
             <template  #default="scope">
-              <el-button v-if="hasPermission('cwProjectRecords:edit')&&scope.row.reportReview !== '1'&&(scope.row.createBy.id === $store.state.user.id||isAdmin||haveProjectIds.includes(scope.row.id))" text type="primary"  size="small" @click="edit(scope.row.id)">修改</el-button>
+              <el-button v-if="hasPermission('cwProjectRecords:edit')&&(scope.row.reportReview !== '1' || isAdmin)&&(scope.row.createBy.id === $store.state.user.id || isAdmin || haveProjectIds.includes(scope.row.id))" text type="primary"  size="small" @click="edit(scope.row.id)">修改</el-button>
 <!--              <el-button v-else-if="hasPermission('cwProjectRecords:edit')&&isAdmin" type="text"  size="small" @click="edit(scope.row.id)">修改</el-button>-->
 <!--              <el-button v-if="hasPermission('cwProjectRecords:edit')&&scope.row.createBy.id === $store.state.user.id&&scope.row.status==='2'" type="text"  size="small" @click="reback(scope.row)">撤回</el-button>-->
-              <el-button v-if="hasPermission('cwProjectRecords:del')&&scope.row.reportReview !== '1'&&(scope.row.createBy.id === $store.state.user.id||isAdmin||haveProjectIds.includes(scope.row.id))" text type="primary"   size="small" @click="del(scope.row.id)">删除</el-button>
+              <el-button v-if="hasPermission('cwProjectRecords:del')&&(scope.row.reportReview !== '1' || isAdmin)&&(scope.row.createBy.id === $store.state.user.id || isAdmin || haveProjectIds.includes(scope.row.id))" text type="primary"   size="small" @click="del(scope.row.id)">删除</el-button>
 <!--              <el-button v-else-if="hasPermission('cwProjectRecords:del')&&isAdmin&&(scope.row.status==='1'||scope.row.status==='3' ||scope.row.status==='5')" type="text"   size="small" @click="del(scope.row.id)">删除</el-button>-->
             </template>
           </vxe-column>
@@ -260,6 +260,7 @@
       // 查询当前用户是否是管理员用户
       checkIsAdmin () {
         userService.is().then((data) => {
+        	console.log(data)
           this.isAdmin = data
         })
       },

+ 19 - 0
src/views/cw/projectReportArchive/ProjectReportArchiveForm.vue

@@ -130,6 +130,17 @@
 						  </el-input-number>
 					  </el-form-item>
 				  </el-col>
+
+				  <el-col :span="12" v-if="isShow">
+					  <el-form-item label="关联报告" prop="connectReport"
+									:rules="[
+                                {required: true, message:'关联报告不能为空', trigger:'blur'},
+                                {required: true, message:'关联报告不能为空', trigger:'change'}
+                   ]">
+						  <el-input :readonly="true" v-model="inputForm.connectReport" placeholder="请填写关联报告" clearable>
+						  </el-input>
+					  </el-form-item>
+				  </el-col>
                 <el-col :span="12">
                   <el-form-item label="档案年度" prop="year"
                                 :rules="[
@@ -325,6 +336,7 @@
           reportNum: '',
           papersNum: '',
 		  auditMoney:'',
+			connectReport:'',
           year: '',
           number: '',
           isNumber: '',
@@ -365,6 +377,7 @@
         keyWatch: '',
         activeName: 'files',
         tableKeyReport: '',
+		  isShow:false,
         visible: false
       }
     },
@@ -431,6 +444,7 @@
           reportNum: '',
           papersNum: '',
 		  auditMoney:'',
+			connectReport:'',
           year: '',
           number: '',
           isNumber: '',
@@ -474,6 +488,7 @@
           this.$refs.inputForm.resetFields()
           this.loading = true
           this.projectReportArchiveService.queryById(this.inputForm.id).then((data) => {
+			  this.isShow = false
             this.$refs.uploadComponent.clearUpload()
             this.inputForm = this.recover(this.inputForm, data)
             this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
@@ -498,6 +513,9 @@
             if (this.formReadOnly) {
               this.method = 'view'
             }
+			  if (this.inputForm.auditMoney === '0' || this.inputForm.auditMoney === '0.00') {
+				  this.isShow = true
+			  }
             this.$refs.uploadComponent.newUpload(this.method, this.inputForm.workAttachmentDtoList, 'cw_project_archive', null, null, null, null, false)
             this.loading = false
           })
@@ -639,6 +657,7 @@
           reportNum: '',
           papersNum: '',
 			auditMoney:'',
+			connectReport:'',
           year: '',
           number: '',
           isNumber: '',

+ 10 - 3
src/views/cw/projectReportArchive/ProjectReportArchiveTaskForm.vue

@@ -487,6 +487,7 @@
             contractId: ''
           },
 		  connectReport:'',
+			connectReportId:'',
           auditedUnitsName: '',
           fileNumber: '',
           reportDate: '',
@@ -671,6 +672,10 @@
             if (this.status === 'audit' || this.status === 'taskFormDetail') {
               this.method = 'view'
             }
+            if (this.inputForm.auditMoney === '0') {
+              this.isShow = true
+				console.log('connectReport',this.inputForm.connectReport)
+            }
             this.$refs.uploadComponent.newUpload(this.method, this.inputForm.workAttachmentDtoList, 'cw_project_archive', null, null, null, null, false)
             this.loading = false
           })
@@ -1086,9 +1091,10 @@
 			this.selectRecord = this.$refs.auditData.getCheckboxRecords()
 			this.searchForm.totalAudit=this.countTotal(this.selectRecord, 'account')
 		},
-		getReportByProjectId(id){
+		getReportByProjectId(id,projectId){
 			this.loading=true
-			ProjectRecordsService.getReportByProjectId(id).then(data=>{
+			ProjectRecordsService.getReportByProjectId(id,projectId).then(data=>{
+				console.log(data)
 				this.reportData=data
 				this.loading=false
 			})
@@ -1096,7 +1102,7 @@
 		openReport(){
       		this.reportVisible=true
 			this.$nextTick(()=>{
-				this.getReportByProjectId(this.inputForm.projectId)
+				this.getReportByProjectId(this.inputForm.id,this.inputForm.projectId)
 			})
 		},
 
@@ -1112,6 +1118,7 @@
 			}
 			this.reportVisible = false
 			this.inputForm.connectReport=row.reportNo
+			this.inputForm.connectReportId=row.reportId
 		},
 		closeTable(){
 			this.$refs.searchForm.resetFields()

+ 198 - 59
src/views/cw/reimbursementApproval/info/InfoForm.vue

@@ -13,6 +13,17 @@
                label-width="100px" @submit.native.prevent>
 
         <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
+		  <el-row >
+			  <el-col :span="12">
+				  <el-form-item label="报销项" prop="reimbursementType" :disabled="status === 'audit' || status === 'taskFormDetail'"
+								:rules="[
+                        {required: true, message:'报销项不能为空', trigger:'blur'}
+               ]">
+					  <el-radio v-model="inputForm.reimbursementType" v-for="item in $dictUtils.getDictList('reimbursement_type')" :label="item.value" style="margin-right: 20px">
+						  {{item.label}}</el-radio>
+				  </el-form-item>
+			  </el-col>
+		  </el-row>
         <el-row :gutter="26">
           <el-col :span="12">
             <el-form-item label="经办人" prop="userName">
@@ -91,15 +102,15 @@
 					keep-source
 					highlight-current-row
 				>
-					<vxe-table-column field="purchaserAgent" title="采购人" :edit-render="{}" :rules="[{required: true, message:'请选择采购人', trigger:'blur'}]"></vxe-table-column>
-					<vxe-table-column field="procurementOffice" title="采购部门" :edit-render="{}"></vxe-table-column>
-					<vxe-table-column field="procurementType" title="采购类型" :edit-render="{}" :rules="[{required: true, message:'请选择采购类型', trigger:'blur'}]"></vxe-table-column>
-					<vxe-table-column field="tradeName" title="商品名称" :edit-render="{}" :rules="[{required: true, message:'请填写商品名称', trigger:'blur'}]"></vxe-table-column>
-					<vxe-table-column field="tradePrice" title="商品单价(元)" :edit-render="{}" :rules="[{required: true, message:'请输入商品单价', trigger:'blur'}]"></vxe-table-column>
-					<vxe-table-column field="tradeNumber" title="商品数量" :edit-render="{}"></vxe-table-column>
-					<vxe-table-column field="priceSum" title="商品总价" :edit-render="{}"></vxe-table-column>
-					<vxe-table-column field="company" title="单位" :edit-render="{}"></vxe-table-column>
-					<vxe-table-column field="remarks" title="备注" :edit-render="{}"></vxe-table-column>
+					<vxe-table-column field="purchaserAgent" title="采购人" :edit-render="{}" :rules="[{required: true, message:'请选择采购人', trigger:'blur'}]" show-overflow="title"></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 type="primary" :disabled="false" @click="seeFileInfo(scope.$rowIndex)">文件详情</el-button>
@@ -131,23 +142,23 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 				>
-					<vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.userName" @focus="userPullListForm(scope.$rowIndex)"></el-input>
 							<!--              <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="{}">
+					<vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.typeName" @focus="typePullForm(scope.$rowIndex)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+					<vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.projectName" @focus="openProgramPageForm(scope.$rowIndex, scope.row)"></el-input>
 						</template>
@@ -157,22 +168,22 @@
 					<!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					<!--              </template>-->
 					<!--            </vxe-table-column>-->
-					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					<vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="content" title="内容" :edit-render="{}">
+					<vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.content" ></el-input>
 						</template>
@@ -209,23 +220,23 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 				>
-					<vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.userName" @focus="userPullListForm2(scope.$rowIndex)"></el-input>
 							<!--              <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="{}">
+					<vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.typeName" @focus="typePullForm2(scope.$rowIndex)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="contractName" title="报销合同" :edit-render="{}" :rules="[{required: true, message:'请选择报销合同', trigger:'blur'}]">
+					<vxe-table-column field="contractName" title="报销合同" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销合同', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.contractName" @focus="openContractForm(scope.$rowIndex, scope.row)"></el-input>
 						</template>
@@ -235,22 +246,22 @@
 					<!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					<!--              </template>-->
 					<!--            </vxe-table-column>-->
-					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					<vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="content" title="内容" :edit-render="{}">
+					<vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.content" ></el-input>
 						</template>
@@ -287,48 +298,48 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 				>
-					<vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.userName" @focus="userPullListForm3(scope.$rowIndex)"></el-input>
 							<!--              <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="{}">
+					<vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.typeName" @focus="typePullForm3(scope.$rowIndex)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+					<vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.projectName" @focus="openProgramPageForm3(scope.$rowIndex, scope.row)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="reportNumber" title="报告号" :edit-render="{}">
+					<vxe-table-column field="reportNumber" title="报告号" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					<vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="content" title="内容" :edit-render="{}">
+					<vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.content" ></el-input>
 						</template>
@@ -365,23 +376,23 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 				>
-					<vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.userName" @focus="userPullListForm4(scope.$rowIndex)"></el-input>
 							<!--              <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="{}">
+					<vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.typeName" @focus="typePullForm4(scope.$rowIndex)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="projectName" title="报销详情" :edit-render="{}" :rules="[{required: true, message:'请田小娥报销详情', trigger:'blur'}]">
+					<vxe-table-column field="projectName" title="报销详情" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请田小娥报销详情', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.projectName" @focus="openProgramPageForm4(scope.$rowIndex, scope.row)"></el-input>
 						</template>
@@ -391,22 +402,22 @@
 					<!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					<!--              </template>-->
 					<!--            </vxe-table-column>-->
-					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					<vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="content" title="内容" :edit-render="{}">
+					<vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.content" ></el-input>
 						</template>
@@ -443,23 +454,23 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 				>
-					<vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.userName" @focus="userPullListForm5(scope.$rowIndex)"></el-input>
 							<!--              <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="{}">
+					<vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+					<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.typeName" @focus="typePullForm5(scope.$rowIndex)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="projectName" title="报销详情" :edit-render="{}" :rules="[{required: true, message:'请填写报销详情', trigger:'blur'}]">
+					<vxe-table-column field="projectName" title="报销详情" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请填写报销详情', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input v-model="scope.row.projectName" @focus="openProgramPageForm5(scope.$rowIndex, scope.row)"></el-input>
 						</template>
@@ -469,22 +480,22 @@
 					<!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					<!--              </template>-->
 					<!--            </vxe-table-column>-->
-					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					<vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						<template #default="scope">
 							<el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					<vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					<vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="content" title="内容" :edit-render="{}">
+					<vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						<template #default="scope">
 							<el-input v-model="scope.row.content" ></el-input>
 						</template>
@@ -499,6 +510,7 @@
           </el-row>
         </div>
 
+		  <div v-if="inputForm.reimbursementType === '0'">
         <el-divider content-position="left"><i class="el-icon-document"></i>
           专用发票信息
           <el-button style="margin-left: 20px" type="primary" size="small" :disabled="method==='view'" @click="insertEvent('amount')" plain>
@@ -518,27 +530,27 @@
 				  highlight-current-row
 				  :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 			  >
-				  <vxe-table-column field="code" title="发票代码" :edit-render="{}">
+				  <vxe-table-column field="code" title="发票代码" :edit-render="{}" show-overflow="title">
 					  <template #default="scope">
 						  <el-input v-model="scope.row.code" ></el-input>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="number" title="发票号" :edit-render="{}">
+				  <vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
 					  <template #default="scope">
 						  <el-input v-model="scope.row.number" ></el-input>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="amount" title="金额" :edit-render="{}">
+				  <vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
 					  <template #default="scope">
 						  <el-input v-model="scope.row.amount" ></el-input>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="taxAmount" title="税额" :edit-render="{}">
+				  <vxe-table-column field="taxAmount" title="税额" :edit-render="{}" show-overflow="title">
 					  <template #default="scope">
 						  <el-input v-model="scope.row.taxAmount" ></el-input>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="count" title="价税合计" :edit-render="{}">
+				  <vxe-table-column field="count" title="价税合计" :edit-render="{}" show-overflow="title">
 					  <template #default="scope">
 						  <el-input v-model="scope.row.count" ></el-input>
 					  </template>
@@ -551,10 +563,97 @@
 			  </vxe-table>
 		  </el-col>
         </el-row>
+		  </div>
+		  <div v-if="inputForm.reimbursementType === '1'">
+			  <el-divider content-position="left"><i class="el-icon-document"></i>
+				  <span style="color: red;border-top: 20px">* </span>电子发票信息
+				  <!--<el-button style="margin-left: 20px" type="primary" :disabled="method==='view' || status === 'audit' || status === 'taskFormDetail' " size="default" @click="insertEvent('invoiceReimbursement')" plain>
+					  新增
+				  </el-button>-->
+			  </el-divider>
+			  <el-row  :gutter="15" >
+				  <el-col :span="24">
+					  <vxe-table
+						  border
+						  show-footer
+						  show-overflow
+						  ref="invoiceReimbursementTable"
+						  class="vxe-table-element"
+						  :data="inputForm.invoiceReimbursements"
+						  style="margin-left: 5em"
+						  @cell-click=""
+						  :key="invoiceReimbursementKey"
+						  @edit-closed=""
+						  highlight-current-row
+						  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+						  :edit-rules="invoiceReimbursementRules"
+					  >
+						  <vxe-table-column  field="invoiceType" title="发票类型" show-overflow="title" :edit-render="{name: '$select', options: $dictUtils.getDictList('invoice_reimbursement_type')}">
+							  <template v-slot:edit="scope">
+								  <vxe-select :disabled="true" v-model="scope.row.invoiceType" placeholder="请选择发票类型" clearable style="width: 100%;" transfer>
+									  <vxe-option
+										  v-for="item in $dictUtils.getDictList('invoice_reimbursement_type')"
+										  :key="item.value"
+										  :label="item.label"
+										  :value="item.value">
+									  </vxe-option>
+								  </vxe-select>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceProjectName" title="发票项目名" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="50" readonly="true" v-model="scope.row.invoiceProjectName" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input oninput ="value=value.replace(/\D|^/g,'')" readonly="true" maxlength="30" @change="isExict(scope.row)" v-model="scope.row.number" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceDate" title="开票日期" :edit-render="{}" show-overflow="title">
+							  <template v-slot:edit="scope">
+								  <vxe-input v-model="scope.row.invoiceDate" readonly="true" type="datetime" transfer placeholder="请选择日期"></vxe-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceUnit" title="开票单位" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="50" readonly="true" v-model="scope.row.invoiceUnit" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="15" readonly="true" v-model="scope.row.amount" @input="scope.row.amount = twoDecimalPlaces(scope.row.amount)" @change="countAmount(scope.row)"></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="taxAmount" title="税额" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="15" readonly="true" v-model="scope.row.taxAmount" @input="scope.row.taxAmount = twoDecimalPlaces(scope.row.taxAmount)" @change="countAmount(scope.row)"></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="count" title="价税合计" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input disabled="true" v-model="scope.row.count" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="remarks" title="备注" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="250" v-model="scope.row.remarks" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <!--<vxe-table-column title="操作" width="100">
+							  <template #default="scope">
+								  <el-button size="default" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'invoiceReimbursement')">删除</el-button>
+							  </template>
+						  </vxe-table-column>-->
+					  </vxe-table>
+				  </el-col>
+			  </el-row>
+		  </div>
 
-        <!-- 附件 -->
-        <UpLoadComponent ref="uploadComponent"></UpLoadComponent>
       </el-form>
+		<!-- 附件 -->
+		<InvoiceReimbursementUpLoadComponent ref="invoiceReimbursementUpLoadComponent" v-show="'1' === this.inputForm.reimbursementType"></InvoiceReimbursementUpLoadComponent>
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<template #footer>
 			<span class="dialog-footer">
 			  <el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
@@ -569,6 +668,7 @@
 <script>
   import ReimbursementApprovalService from '@/api/cw/reimbursementApproval/ReimbursementApprovalService'
   import UpLoadComponent from '@/views/common/UpLoadComponent'
+  import InvoiceReimbursementUpLoadComponent from '@/views/common/InvoiceReimbursementUpLoadComponent'
   import XEUtils from 'xe-utils'
   // import MaterialManagementService from '@/api/materialManagement/MaterialManagementService'
   // import MaterialManagementDialog from '../../../materialManagement/file/MaterialManagementDialog'
@@ -580,6 +680,7 @@
         visible: false,
         loading: false,
         inputForm: {
+			reimbursementType: '0',
           userName: '',
           no: '',
           department: '',
@@ -590,6 +691,8 @@
           detailInfoReports: [],
           detailInfoOthers: [],
           detailInfoProcured: [],
+			invoiceReimbursements: [],
+			invoiceReimbursementFiles: [], // 电子发票附件信息
           amountInfos: [],
           files: [], // 附件信息
           sourceType: '',
@@ -597,7 +700,10 @@
           purchaseNo: '',
           tradeTotalPrice: '',
           purchaseId: '',
-          departmentName: ''
+			procDefId: '',
+			procDefKey: '',
+			formTitle: '',
+			departmentName: ''
         }
       }
     },
@@ -608,6 +714,7 @@
       // this.materialManagementService = new MaterialManagementService()
     },
     components: {
+		InvoiceReimbursementUpLoadComponent,
       UpLoadComponent,
       // MaterialManagementDialog
     },
@@ -615,6 +722,7 @@
       init (method, id) {
         this.method = method
         this.inputForm = {
+			reimbursementType: '0',
           userName: '',
           no: '',
           department: '',
@@ -622,6 +730,8 @@
           remarks: '',
           detailInfos: [],
           amountInfos: [],
+			invoiceReimbursements: [],
+			invoiceReimbursementFiles: [], // 电子发票附件信息
           files: [], // 附件信息
           detailInfoContracts: [],
           detailInfoReports: [],
@@ -654,7 +764,36 @@
             this.$refs.inputForm.resetFields()
             this.reimbursementApprovalService.findById(this.inputForm.id).then((data) => {
               this.inputForm = this.recover(this.inputForm, data)
-              this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'reimbursement')
+				this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+				this.$refs.uploadComponent.clearUpload()
+				this.$refs.invoiceReimbursementUpLoadComponent.clearUpload()
+				if (this.status === 'audit' || this.status === 'taskFormDetail') {
+					method = 'view'
+				}
+				if (this.commonJS.isEmpty(this.inputForm.department)) {
+					this.inputForm.department = this.$store.state.user.office.id
+					this.inputForm.departmentName = this.$store.state.user.office.name
+				}
+				if (this.commonJS.isEmpty(this.inputForm.userId)) {
+					this.inputForm.userId = this.$store.state.user.id
+				}
+				if (this.commonJS.isEmpty(this.inputForm.userName)) {
+					this.inputForm.userName = this.$store.state.user.name
+				}
+				if (this.commonJS.isEmpty(this.inputForm.reimDate)) {
+					this.inputForm.reimDate = new Date()
+				}
+				if (this.commonJS.isEmpty(this.inputForm.invoiceReimbursementFiles)) {
+					this.inputForm.invoiceReimbursementFiles = []
+				}
+				if (this.commonJS.isEmpty(this.inputForm.files)) {
+					this.inputForm.files = []
+				}
+				if (this.commonJS.isEmpty(this.inputForm.reimbursementType)) {
+					this.inputForm.reimbursementType = '0'
+				}
+				this.$refs.invoiceReimbursementUpLoadComponent.newUpload(method, this.inputForm.invoiceReimbursementFiles, 'reimbursement',300,'电子发票附件')
+				this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'reimbursement')
               this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
               if (this.commonJS.isNotEmpty(this.inputForm.purchaseId)) {
                 this.startPur(this.inputForm.purchaseId)

+ 51 - 5
src/views/cw/reimbursementApproval/info/InfoList.vue

@@ -25,8 +25,18 @@
       <el-form-item v-if="showHideItem" label="报销人" prop="reimBy">
         <UserSelect :limit='1' :modelValue="searchForm.reimBy" @update:modelValue='(value, label) => {searchForm.reimBy = value}'></UserSelect>
       </el-form-item>
+		<el-form-item v-if="showHideItem" label="报销项" prop="reimbursementType">
+			<el-select v-model="searchForm.reimbursementType" placeholder="请选择" style="width:100%;" clearable>
+				<el-option
+					v-for="item in $dictUtils.getDictList('reimbursement_type')"
+					:key="item.value"
+					:label="item.label"
+					:value="item.value">
+				</el-option>
+			</el-select>
+		</el-form-item>
       <el-form-item v-if="showHideItem" label="报销状态" prop="type">
-        <el-select v-model="searchForm.type" placeholder="请选择" style="width:100%;">
+        <el-select v-model="searchForm.type" placeholder="请选择" style="width:100%;" clearable>
           <el-option
             v-for="item in $dictUtils.getDictList('status')"
             :key="item.value"
@@ -51,7 +61,7 @@
           @getValue="(value,label) => {searchForm.department=label}"/>
       </el-form-item>
       <el-form-item v-if="showHideItem" label="报销类型" prop="sourceType">
-        <el-select v-model="searchForm.sourceType" placeholder="请选择报销类型">
+        <el-select v-model="searchForm.sourceType" placeholder="请选择报销类型" clearable>
           <el-option
             v-for="item in $dictUtils.getDictList('cw_reimbursement_source_type')"
             :key="item.value"
@@ -68,7 +78,7 @@
                   label: 'name',         // 显示名称
                   children: 'children'    // 子级字段名
                 }"
-          url="/finance-server/reimbursementApproval/type/treeData1?type=last"
+          url="/public-modules-server/reimbursementApproval/type/treeData1?type=last"
           :value="searchForm.remiType"
           :clearable="true"
           :accordion="true"
@@ -97,7 +107,8 @@
         <template #buttons>
           <el-button v-if="hasPermission('cw:reimbursement:info:add')" type="primary" icon="el-icon-plus" @click="add()">新建</el-button>
           <el-button v-if="hasPermission('cw:reimbursement:info:del')" type="danger"  icon="el-icon-delete" @click="del()" :disabled="$refs.infoTable && $refs.infoTable.getCheckboxRecords().length === 0" plain>删除</el-button>
-        </template>
+			<el-button type="warning" icon="el-icon-download" @click="exportInvoiceReimbursementFile()" plain>电子发票报销</el-button>
+		</template>
 		  <template #tools>
 			  <vxe-button
 				  text
@@ -141,6 +152,11 @@
               <span v-else>{{scope.row.no}}</span>
             </template>
           </vxe-column>
+			<vxe-column width="130" title="报销项" field="reimbursementType" align="center">
+				<template #default="scope">
+					{{$dictUtils.getDictLabel('reimbursement_type', scope.row.reimbursementType, '')}}
+				</template>
+			</vxe-column>
           <vxe-column min-width="130" title="报销类型" field="sourceType" align="center">
             <template #default="scope">
               {{$dictUtils.getDictLabel('cw_reimbursement_source_type', scope.row.sourceType, '')}}
@@ -428,6 +444,12 @@
             this.procDefKey = data.key
           }
         })
+		  processService.getByName('会计-报销审批-电子发票').then((data) => {
+			  if (!this.commonJS.isEmpty(data.id)) {
+				  this.processDefinitionIdInvoice = data.id
+				  this.procDefKeyInvoice = data.key
+			  }
+		  })
       },
       // 删除
       del (id) {
@@ -454,9 +476,16 @@
       // 流程详情
       detail (row) {
         if (!this.commonJS.isEmpty(row.type) && row.type !== '1') {
+			if (row.reimbursementType === '1') {
+				this.procDefId = this.processDefinitionIdInvoice
+			} else if (row.reimbursementType === '0') {
+				{
+					this.procDefId = this.processDefinitionId
+				}
+			}
           taskService.getTaskDef({
             procInsId: row.procInsId,
-            procDefId: row.processDefinitionId
+			  procDefId: this.procDefId
           }).then((data) => {
             this.$router.push({
               path: '/flowable/task/TaskFormDetail',
@@ -504,6 +533,23 @@
           }
         })
       },
+		// 下载文档
+		exportInvoiceReimbursementFile () {
+			this.loading = true
+			this.reimbursementApprovalService.exportInvoiceReimbursementFile({
+				'itemType': '1',
+				...this.searchForm
+			}).then((res) => {
+				// 将二进制流文件写入excel表,以下为重要步骤
+				this.$utils.downloadExcel(res, '会计-报销电子发票报销列表')
+				this.loading = false
+			}).catch(function (err) {
+				this.loading = false
+				if (err.response) {
+					console.log(err.response)
+				}
+			})
+		},
       // 当前页
       currentChangeHandle ({ currentPage, pageSize }) {
         this.tablePage.currentPage = currentPage

File diff suppressed because it is too large
+ 615 - 152
src/views/cw/reimbursementApproval/info/ReimbursementForm.vue


+ 10 - 10
src/views/cw/reportManagement/ReportManagementForm.vue

@@ -541,7 +541,7 @@
 						:key="tableKeyClient"
 						:edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 					>
-						<vxe-table-column field="typeName" title="复核的主要内容" :edit-render="{}">
+						<vxe-table-column field="typeName" title="复核的主要内容" :edit-render="{}" show-overflow="title">
 							<template #default="scope">
 								<el-input :disabled="true"  v-model="scope.row.typeName" ></el-input>
 							</template>
@@ -590,7 +590,7 @@
 						:key="tableKeyClient2"
 						:edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 					>
-						<vxe-table-column field="typeName" title="复核的主要内容" :edit-render="{}">
+						<vxe-table-column field="typeName" title="复核的主要内容" :edit-render="{}" show-overflow="title">
 							<template #default="scope">
 								<el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
 							</template>
@@ -639,7 +639,7 @@
 						:key="tableKeyClient3"
 						:edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 					>
-						<vxe-table-column field="typeName" title="复核的主要内容" :edit-render="{}">
+						<vxe-table-column field="typeName" title="复核的主要内容" :edit-render="{}" show-overflow="title">
 							<template #default="scope">
 								<el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
 							</template>
@@ -818,22 +818,22 @@
 							:edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: false}"
 						>
 							<vxe-table-column type="seq" align="center" width="80" title="序号"></vxe-table-column>
-							<vxe-table-column align="center" field="servedUnitName" title="被服务单位" :edit-render="{}">
+							<vxe-table-column align="center" field="servedUnitName" title="被服务单位" :edit-render="{}" show-overflow="title">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.servedUnitName" placeholder="被服务单位" clearable></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column align="center" field="servedUnitName" title="被服务单位" :edit-render="{}">
+							<vxe-table-column align="center" field="servedUnitName" title="被服务单位" :edit-render="{}" show-overflow="title">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.servedUnitName" placeholder="被服务单位" clearable></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column align="center" field="reportDate" title="报告日期" :edit-render="{}">
+							<vxe-table-column align="center" field="reportDate" title="报告日期" :edit-render="{}" show-overflow="title">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.reportDate" placeholder="报告日期" clearable></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column align="center" field="reportType" title="报告类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('cw_report_type')}">
+							<vxe-table-column align="center" field="reportType" title="报告类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('cw_report_type')}" show-overflow="title">
 								<template v-slot:edit="scope">
 									<el-select v-model="scope.row.reportType" placeholder="请选择报告类型" clearable style="width: 100%;">
 										<el-option
@@ -846,17 +846,17 @@
 									<!--                      <el-input v-model="scope.row.reportType" placeholder="报告类型" clearable></el-input>-->
 								</template>
 							</vxe-table-column>
-							<vxe-table-column align="center" field="reportNo" title="报告文号" :edit-render="{}">
+							<vxe-table-column align="center" field="reportNo" title="报告文号" :edit-render="{}" show-overflow="title">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.reportNo" placeholder="报告文号" clearable></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column align="center" field="sealType" title="盖章状态" :edit-render="{}">
+							<vxe-table-column align="center" field="sealType" title="盖章状态" :edit-render="{}" show-overflow="title">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.sealType" placeholder="盖章状态" clearable></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column align="center" field="documentStatus" title="单据状态" :edit-render="{}">
+							<vxe-table-column align="center" field="documentStatus" title="单据状态" :edit-render="{}" show-overflow="title">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.documentStatus" placeholder="单据状态" clearable></el-input>
 								</template>

+ 15 - 15
src/views/cw/workClientInfo/WorkClientForm.vue

@@ -537,12 +537,12 @@
 						  :edit-rules="inputForm.isUscCode === '1'?validBillingRules1:validBillingRules0"
 						  :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: false, icon: '-'}"
 					  >
-						  <vxe-table-column align="center" field="companyName" title="公司名称" :edit-render="{}">
+						  <vxe-table-column align="center" field="companyName" title="公司名称" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="{scope}">
 								  <el-input v-model="scope.row.companyName" placeholder="公司名称" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="isTaxpayerIdentificationNo" title="是否有纳税人识别号" :edit-render="{name: '$select', options: $dictUtils.getDictList('yes_no')}">
+						  <vxe-table-column align="center" field="isTaxpayerIdentificationNo" title="是否有纳税人识别号"  show-overflow="title" :edit-render="{name: '$select', options: $dictUtils.getDictList('yes_no')}">
 							  <template v-slot:edit="scope">
 								  <!--                        <vxe-select :disabled="formReadOnly" @change="changeTaxpayerIdentificationNo(scope.$rowIndex)" v-model="scope.row.isTaxpayerIdentificationNo" placeholder="是否有纳税人识别号" clearable style="width: 100%;" transfer>-->
 								  <vxe-select :disabled="true" v-model="scope.row.isTaxpayerIdentificationNo" placeholder="是否有纳税人识别号" clearable style="width: 100%;" transfer>
@@ -562,27 +562,27 @@
 								  <el-input :disabled="scope.row.isTaxpayerIdentificationNo !== '1'" v-model="scope.row.taxpayerIdentificationNo" placeholder="纳税人识别号" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="accountHolder" title="开户行" :edit-render="{}">
+						  <vxe-table-column align="center" field="accountHolder" title="开户行" :edit-render="{}"  show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.accountHolder" placeholder="开户行" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="account" title="银行账号" :edit-render="{}">
+						  <vxe-table-column align="center" field="account" title="银行账号" :edit-render="{}"  show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.account" oninput="value=value.replace(/[^\d]/g,'')" placeholder="银行账号" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="phone" title="电话" :edit-render="{}">
+						  <vxe-table-column align="center" field="phone" title="电话" :edit-render="{}"  show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.phone" oninput="value=value.replace(/[^\d]/g,'')" placeholder="电话" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="address" title="地址" :edit-render="{}">
+						  <vxe-table-column align="center" field="address" title="地址" :edit-render="{}"  show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.address" placeholder="地址" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" title="操作" width="100">
+						  <vxe-table-column align="center" title="操作" width="100"  show-overflow="title">
 							  <template #default="scope">
 								  <el-button type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'billing')">删除</el-button>
 							  </template>
@@ -613,7 +613,7 @@
 						  :edit-rules="validContactRules"
 						  :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: false, icon: '-'}"
 					  >
-						  <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}">
+						  <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.name" placeholder="姓名" clearable></el-input>
 							  </template>
@@ -630,37 +630,37 @@
 								  </vxe-select>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}">
+						  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.officeId" placeholder="部门" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="position" title="职务" :edit-render="{}">
+						  <vxe-table-column align="center" field="position" title="职务" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.position" placeholder="职务" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}">
+						  <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.contactFirst" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式1" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}">
+						  <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.contactSecond" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式2" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}">
+						  <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.fax" placeholder="传真" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}">
+						  <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input v-model="scope.row.email" @change="$forceUpdate()" @blur="blurEmail(scope.$rowIndex)" placeholder="邮箱" clearable></el-input>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}">
+						  <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}" show-overflow="title">
 							  <template v-slot:edit="scope">
 								  <el-input maxlength="500" v-model="scope.row.remarks" placeholder="备注" clearable></el-input>
 							  </template>

+ 1 - 1
src/views/cw/workContract/ContractFileForm.vue

@@ -730,7 +730,7 @@
       },
       // 送审
       startForm (callback) {
-        if (this.commonJS.isEmpty(this.inputForm.actualContractAmount)) {
+        if (this.commonJS.isEmpty(this.inputForm.actualContractAmount) && this.inputForm.contractAmountType === '1') {
           this.$message.error('请填写合同实际金额')
           throw new Error('请填写合同实际金额')
         } else if (this.$refs.archiveFile.checkProgress() || this.$refs.uploadFile.checkProgress()) {

+ 1 - 1
src/views/cw/workContract/ContractFilePaperForm.vue

@@ -796,7 +796,7 @@
       // 送审
       startFormTrue (callback) {
         this.loading = true
-        if (this.commonJS.isEmpty(this.inputForm.actualContractAmount)) {
+        if (this.commonJS.isEmpty(this.inputForm.actualContractAmount) && this.inputForm.contractAmountType === '1') {
           this.loading = false
           this.$message.error('请填写合同实际金额')
           throw new Error('请填写合同实际金额')

+ 23 - 21
src/views/cw/workContract/ContractNameForm.vue

@@ -348,16 +348,17 @@
             :data="projectList"
             :checkbox-config="{}">
             <vxe-column type="seq" width="60" title="序号"></vxe-column>
-            <vxe-column min-width="230" align="center" title="项目名称" field="projectName">
+            <!--<vxe-column min-width="230" align="center" title="项目名称" field="projectName" show-overflow="title">
               <template #default="scope">
                 <el-link  type="primary" :underline="false" v-if="hasPermission('cwProjectRecords:view')" @click="viewProject(scope.row.id)">{{scope.row.projectName}}</el-link>
                 <span v-else>{{scope.row.projectName}}</span>
               </template>
-            </vxe-column>
-            <vxe-column min-width="160" align="center" title="项目编号" field="projectNumber"></vxe-column>
-            <vxe-column min-width="160" align="center" title="项目经理" field="projectMasterName"></vxe-column>
-            <vxe-column min-width="160" align="center" title="创建人" field="createName"></vxe-column>
-            <vxe-column min-width="160" align="center" title="创建时间" field="createDate"></vxe-column>
+            </vxe-column>-->
+            <vxe-column min-width="230" align="center" title="项目名称" field="projectName" show-overflow="title"></vxe-column>
+            <vxe-column min-width="160" align="center" title="项目编号" field="projectNumber" show-overflow="title"></vxe-column>
+            <vxe-column min-width="160" align="center" title="项目经理" field="projectMasterName" show-overflow="title"></vxe-column>
+            <vxe-column min-width="160" align="center" title="创建人" field="createName" show-overflow="title"></vxe-column>
+            <vxe-column min-width="160" align="center" title="创建时间" field="createDate" show-overflow="title"></vxe-column>
           </vxe-table>
         </el-tab-pane>
         <el-tab-pane label="关联报告" name="report">
@@ -394,21 +395,22 @@
             :data="reportList"
             :checkbox-config="{}">
             <vxe-column type="seq" width="60" title="序号"></vxe-column>
-            <vxe-column min-width="200" title="报告文号" align="center" field="reportNo">
+            <vxe-column min-width="200" title="报告文号" align="center" field="reportNo" show-overflow="title">
               <template #default="scope">
                 <el-link  type="primary" :underline="false" @click="viewReport(scope.row.id)">{{scope.row.reportNo}}</el-link>
               </template>
             </vxe-column>
-            <vxe-column min-width="200" title="项目名称" align="center" field="projectName">
+            <!--<vxe-column min-width="200" title="项目名称" align="center" field="projectName" show-overflow="title">
               <template #default="scope">
                 <el-link  type="primary" :underline="false" @click="viewProject(scope.row.projectId)">{{scope.row.projectName}}</el-link>
               </template>
-            </vxe-column>
-            <vxe-column min-width="200" title="项目编号" align="center" field="projectNumber"></vxe-column>
-            <vxe-column min-width="150" title="所属部门" align="center" field="officeName"></vxe-column>
-            <vxe-column min-width="150" title="项目经理" align="center" field="projectMasterName"></vxe-column>
-            <vxe-column min-width="120" title="报告创建人" align="center" field="createName"></vxe-column>
-            <vxe-column min-width="180" title="报告创建时间" align="center" field="createDate"></vxe-column>
+            </vxe-column>-->
+            <vxe-column min-width="200" title="项目名称" align="center" field="projectName" show-overflow="title"></vxe-column>
+            <vxe-column min-width="200" title="项目编号" align="center" field="projectNumber" show-overflow="title"></vxe-column>
+            <vxe-column min-width="150" title="所属部门" align="center" field="officeName" show-overflow="title"></vxe-column>
+            <vxe-column min-width="150" title="项目经理" align="center" field="projectMasterName" show-overflow="title"></vxe-column>
+            <vxe-column min-width="120" title="报告创建人" align="center" field="createName" show-overflow="title"></vxe-column>
+            <vxe-column min-width="180" title="报告创建时间" align="center" field="createDate" show-overflow="title"></vxe-column>
           </vxe-table>
         </el-tab-pane>
         <el-tab-pane label="关联发票" name="invoice">
@@ -439,21 +441,21 @@
             :data="invoiceList"
             :checkbox-config="{}">
             <vxe-column type="seq" width="60" title="序号"></vxe-column>
-            <vxe-column min-width="150" title="发票申请编号" align="center" field="no">
+            <vxe-column min-width="150" title="发票申请编号" align="center" field="no" show-overflow="title">
               <template #default="scope">
                 <el-link  type="primary" :underline="false" @click="viewInvoice(false, scope.row.id)">{{scope.row.no}}</el-link>
               </template>
             </vxe-column>
-            <vxe-column min-width="150" title="发票号" align="center" field="number"></vxe-column>
-            <vxe-column min-width="150" title="实际开票单位" align="center" field="billingWorkplaceReal"></vxe-column>
-            <vxe-column min-width="150" title="开票金额(元)" align="center" field="accountDetail"></vxe-column>
-            <vxe-column min-width="150" title="开票总金额(元)" align="center" field="account"></vxe-column>
-            <vxe-column min-width="120" title="开票内容" align="center" field="billingContent">
+            <vxe-column min-width="150" title="发票号" align="center" field="number" show-overflow="title"></vxe-column>
+            <vxe-column min-width="150" title="实际开票单位" align="center" field="billingWorkplaceReal" show-overflow="title"></vxe-column>
+            <vxe-column min-width="150" title="开票金额(元)" align="center" field="accountDetail" show-overflow="title"></vxe-column>
+            <vxe-column min-width="150" title="开票总金额(元)" align="center" field="account" show-overflow="title"></vxe-column>
+            <vxe-column min-width="120" title="开票内容" align="center" field="billingContent" show-overflow="title">
               <template #default="scope">
                 {{$dictUtils.getDictLabel('invoice_billing_content', scope.row.billingContent, '-')}}
               </template>
             </vxe-column>
-            <vxe-column min-width="110" fixed="right" align="center" title="是否收款" field="receivablesStatus">
+            <vxe-column min-width="110" fixed="right" align="center" title="是否收款" field="receivablesStatus" show-overflow="title">
               <template #default="scope">
                 {{scope.row.receivablesStatus === '1'?'已收款':'未收款'}}
               </template>

+ 3 - 1
src/views/dashboard/widgets/components/MyNoticePageList.vue

@@ -164,7 +164,8 @@ export default {
 			}else {
 				this.inputForm = {
 					taskId: '',
-					noticeId: ''
+					noticeId: '',
+					taskName: ''
 				}
 				console.log('进来了+++', row.taskId)
 				taskService.getTaskDef({
@@ -173,6 +174,7 @@ export default {
 				}).then((data) => {
 					this.inputForm.taskId = row.taskId
 					this.inputForm.noticeId = row.noticeName
+					this.inputForm.taskName = row.taskName
 					noticeService.update(this.inputForm)
 					// this.$router.push({
 					// 	path: '/flowable/task/TaskForm',

+ 30 - 14
src/views/finance/invoice/InvoiceForm.vue

@@ -31,22 +31,22 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
 				>
-					<vxe-table-column field="programName" title="项目名称" :edit-render="{}">
+					<vxe-table-column field="programName" title="项目名称" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input @focus="openProgramPageForm(scope.$rowIndex)" placeholder="请填写项目名称" :readonly="true" v-model="scope.row.programName"/>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="contractName" title="合同名称" :edit-render="{}">
+					<vxe-table-column field="contractName" title="合同名称" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input @focus="openContractForm()" placeholder="请填写合同名称" :readonly="true" v-model="scope.row.contractName"/>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="programNo" title="项目编号" :edit-render="{}">
+					<vxe-table-column field="programNo" title="项目编号" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input :readonly="true" placeholder="请填写项目编号" v-model="scope.row.programNo"/>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="clientName" title="委托方" :edit-render="{}">
+					<vxe-table-column field="clientName" title="委托方" :edit-render="{}" show-overflow="title">
 						<template v-slot:edit="scope">
 							<el-input :readonly="true" placeholder="请填写委托方" v-model="scope.row.clientName"/>
 						</template>
@@ -288,6 +288,10 @@
               <el-input :disabled="true" v-model="inputForm.billingPeople" placeholder="请选择开票人" clearable></el-input>
             </el-form-item>
           </el-col>
+
+		</el-row>
+		  <el-row :gutter="15">
+
             <el-col :span="12">
               <el-form-item label="开票时间" prop="billingDate"
                             :rules="[
@@ -337,6 +341,18 @@
                 @getValue="(value) => {inputForm.billingPeopleReal=value}"/>
             </el-form-item>
           </el-col>
+
+			  <el-col :span="12">
+				  <el-form-item label="接收邮箱" prop="actualDrawerEmailAddress"
+								:rules="[
+							/*{required: true, message:'邮箱不能为空', trigger:'blur'},
+							{required: true, message:'邮箱不能为空', trigger:'change'}*/
+               ]">
+					  <el-input v-model="inputForm.actualDrawerEmailAddress" placeholder="请输入接收邮箱" show-word-limit @blur="checkEmail" maxlength="50"></el-input>
+					  <el-button  type="primary" style="position: absolute;right: 0px;" @click="openDia">完善邮箱</el-button>
+				  </el-form-item>
+			  </el-col>
+
           <el-col :span="12">
             <el-form-item label="对账人" prop="reconciliationPeople"
                           :rules="[
@@ -439,12 +455,12 @@
 					  highlight-current-row
 					  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
 				  >
-					  <vxe-table-column field="code" title="发票代码" :edit-render="{}">
+					  <vxe-table-column field="code" title="发票代码" :edit-render="{}" show-overflow="title">
 						  <template v-slot:edit="scope">
 							  <el-input v-model="scope.row.code" placeholder="请填写发票代码"/>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="number" title="发票号" :edit-render="{}">
+					  <vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
 						  <template v-slot:edit="scope">
 							  <el-input
 								  oninput ="value=value.replace(/\D|^/g,'')"
@@ -456,7 +472,7 @@
 							  </el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="account" title="开票金额(元)" :edit-render="{}">
+					  <vxe-table-column field="account" title="开票金额(元)" :edit-render="{}" show-overflow="title">
 						  <template v-slot:edit="scope">
 							  <el-input-number
 								  @blur="checkAccount(scope.row,scope.$rowIndex)"
@@ -473,7 +489,7 @@
 							  </el-input-number>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="rate" title="税率(%)" :edit-render="{}">
+					  <vxe-table-column field="rate" title="税率(%)" :edit-render="{}" show-overflow="title">
 						  <template v-slot:edit="scope">
 							  <el-input-number
 								  @blur="checkRate(scope.row, scope.$rowIndex)"
@@ -489,17 +505,17 @@
 							  </el-input-number>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="amount" title="金额" :edit-render="{}">
+					  <vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
 						  <template v-slot:edit="scope">
 							  <el-input :readonly="true" v-model="scope.row.amount" placeholder="请填写金额"/>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="tax" title="税额" :edit-render="{}">
+					  <vxe-table-column field="tax" title="税额" :edit-render="{}" show-overflow="title">
 						  <template v-slot:edit="scope">
 							  <el-input :readonly="true" v-model="scope.row.tax" placeholder="请填写税额"/>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="allAmount" title="累计登记金额" :edit-render="{}">
+					  <vxe-table-column field="allAmount" title="累计登记金额" :edit-render="{}" show-overflow="title">
 						  <template v-slot:edit="scope">
 							  <el-input-number
 								  v-model="scope.row.allAmount"
@@ -546,12 +562,12 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
 				>
-					<vxe-table-column field="remittanceUnit" title="汇款单位" :edit-render="{}">
+					<vxe-table-column field="remittanceUnit" title="汇款单位" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input v-model="scope.row.remittanceUnit" placeholder="请填写汇款单位"/>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="remittanceAmount" title="汇款金额(元)" :edit-render="{}">
+					<vxe-table-column field="remittanceAmount" title="汇款金额(元)" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input-number
 								v-model="scope.row.remittanceAmount"
@@ -566,7 +582,7 @@
 							</el-input-number>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="remittanceDate" title="汇款时间" :edit-render="{}">
+					<vxe-table-column field="remittanceDate" title="汇款时间" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input v-model="scope.row.remittanceDate" type="date" transfer placeholder="请填写汇款时间"/>
 						</template>

+ 56 - 48
src/views/finance/invoice/InvoiceFormTask.vue

@@ -24,22 +24,22 @@
 				  highlight-current-row
 				  :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 			  >
-				  <vxe-table-column field="programName" title="项目名称" :edit-render="{}">
+				  <vxe-table-column field="programName" title="项目名称" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input @focus="openProgramPageForm(scope.$rowIndex)" placeholder="请填写项目名称" :readonly="true" v-model="scope.row.programName"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="contractName" title="合同名称" :edit-render="{}">
+				  <vxe-table-column field="contractName" title="合同名称" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input @focus="openContractForm()" placeholder="请填写合同名称" :readonly="true" v-model="scope.row.contractName"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="programNo" title="项目编号" :edit-render="{}">
+				  <vxe-table-column field="programNo" title="项目编号" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input :readonly="true" placeholder="请填写项目编号" v-model="scope.row.programNo"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="clientName" title="委托方" :edit-render="{}">
+				  <vxe-table-column field="clientName" title="委托方" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input :readonly="true" placeholder="请填写委托方" v-model="scope.row.clientName"/>
 					  </template>
@@ -297,37 +297,45 @@
             <el-input :disabled="true" v-model="inputForm.billingPeople" placeholder="请选择开票人" clearable></el-input>
           </el-form-item>
         </el-col>
-	  	<el-col :span="12" >
-		  <el-form-item label="开票时间" prop="billingDate"
-						:rules="status === 'audit' ? [{required: true, message:'开票时间不能为空', trigger:'blur'}] : []">
-			  <el-date-picker
-				  :disabled="status !== 'audit'"
-				  v-model="inputForm.billingDate"
-				  type="date"
-				  value-format="YYYY-MM-DD"
-				  placeholder="选择开票时间"
-				  style="width:100%"
-				  placement="bottom-start"
-				  clearable>
-			  </el-date-picker>
-		  </el-form-item>
-	  </el-col>
-	  	<el-col :span="12">
-		  <el-form-item label="领票时间" prop="collectDate"
-						:rules="[
-			 ]">
-			  <el-date-picker
-				  :disabled="status !== 'audit'"
-				  v-model="inputForm.collectDate"
-				  type="date"
-				  value-format="YYYY-MM-DD"
-				  placeholder="选择领票时间"
-				  style="width:100%"
-				  placement="bottom-start"
-				  clearable>
-			  </el-date-picker>
-		  </el-form-item>
-	  </el-col>
+
+
+		  <el-form v-if="status === 'audit' || status === 'taskFormDetail'" :disabled="status === 'taskFormDetail'" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+				   label-width="160px" @submit.native.prevent>
+			  <el-row :gutter="15">
+				  <el-col :span="12" >
+					  <el-form-item label="开票时间" prop="billingDate"
+									:rules="[
+                         {required: true, message:'开票时间不能为空', trigger:'blur'}
+                 ]">
+						  <el-date-picker
+							  v-model="inputForm.billingDate"
+							  type="date"
+							  value-format="YYYY-MM-DD"
+							  placeholder="选择开票时间"
+							  style="width:100%"
+							  placement="bottom-start"
+							  clearable>
+						  </el-date-picker>
+					  </el-form-item>
+				  </el-col>
+				  <el-col :span="12">
+					  <el-form-item label="领票时间" prop="collectDate"
+									:rules="[
+                 ]">
+						  <el-date-picker
+							  v-model="inputForm.collectDate"
+							  type="date"
+							  value-format="YYYY-MM-DD"
+							  placeholder="选择领票时间"
+							  style="width:100%"
+							  placement="bottom-start"
+							  clearable>
+						  </el-date-picker>
+					  </el-form-item>
+				  </el-col>
+			  </el-row>
+		  </el-form>
+
         <el-col :span="12">
           <el-form-item label="实际开票人" prop="billingPeopleReal"
                         :rules="[
@@ -352,8 +360,8 @@
 		  <el-col :span="12">
 			  <el-form-item label="接收邮箱" prop="actualDrawerEmailAddress"
 							:rules="[
-							{required: true, message:'邮箱不能为空', trigger:'blur'},
-							{required: true, message:'邮箱不能为空', trigger:'change'}
+							/*{required: true, message:'邮箱不能为空', trigger:'blur'},
+							{required: true, message:'邮箱不能为空', trigger:'change'}*/
                ]">
 				  <el-input v-model="inputForm.actualDrawerEmailAddress" placeholder="请输入接收邮箱" show-word-limit @blur="checkEmail" maxlength="50"></el-input>
 				  <el-button  type="primary" style="position: absolute;right: 0px;" @click="openDia">完善邮箱</el-button>
@@ -474,12 +482,12 @@
 				  highlight-current-row
 				  :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true}"
 			  >
-				  <vxe-table-column field="code" title="发票代码" :edit-render="{}">
+				  <vxe-table-column field="code" title="发票代码" :edit-render="{}" show-overflow="title">
 					  <template #edit="scope">
 						  <el-input v-model="scope.row.code" placeholder="请填写发票代码"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="number" title="发票号" :edit-render="{}">
+				  <vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
 					  <template #edit="scope">
 						  <el-input
 							  oninput ="value=value.replace(/\D|^/g,'')"
@@ -491,7 +499,7 @@
 						  </el-input>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="account" title="开票金额(元)" :edit-render="{}">
+				  <vxe-table-column field="account" title="开票金额(元)" :edit-render="{}" show-overflow="title">
 					  <template #edit="scope">
 						  <el-input-number
 							  @blur="checkAccount(scope.row,scope.$rowIndex)"
@@ -507,7 +515,7 @@
 						  </el-input-number>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="rate" title="税率(%)" :edit-render="{}">
+				  <vxe-table-column field="rate" title="税率(%)" :edit-render="{}" show-overflow="title">
 					  <template #edit="scope">
 						  <el-input-number
 							  @blur="checkRate(scope.row, scope.$rowIndex)"
@@ -523,17 +531,17 @@
 						  </el-input-number>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="amount" title="金额" :edit-render="{}">
+				  <vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
 					  <template #edit="scope">
 						  <el-input :readonly="true" v-model="scope.row.amount" placeholder="请填写金额"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="tax" title="税额" :edit-render="{}">
+				  <vxe-table-column field="tax" title="税额" :edit-render="{}" show-overflow="title">
 					  <template #edit="scope">
 						  <el-input :readonly="true" v-model="scope.row.tax" placeholder="请填写税额"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="allAmount" title="累计登记金额" :edit-render="{}">
+				  <vxe-table-column field="allAmount" title="累计登记金额" :edit-render="{}" show-overflow="title">
 					  <template #edit="scope">
 						  <el-input-number
 							  v-model="scope.row.allAmount"
@@ -580,12 +588,12 @@
 				  highlight-current-row
 				  :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 			  >
-				  <vxe-table-column field="remittanceUnit" title="汇款单位" :edit-render="{}">
+				  <vxe-table-column field="remittanceUnit" title="汇款单位" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input v-model="scope.row.remittanceUnit" placeholder="请填写汇款单位"/>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="remittanceAmount" title="汇款金额(元)" :edit-render="{}">
+				  <vxe-table-column field="remittanceAmount" title="汇款金额(元)" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input-number
 							  v-model="scope.row.remittanceAmount"
@@ -600,7 +608,7 @@
 						  </el-input-number>
 					  </template>
 				  </vxe-table-column>
-				  <vxe-table-column field="remittanceDate" title="汇款时间" :edit-render="{}">
+				  <vxe-table-column field="remittanceDate" title="汇款时间" :edit-render="{}" show-overflow="title">
 					  <template v-slot:edit="scope">
 						  <el-input v-model="scope.row.remittanceDate" type="date" transfer placeholder="请填写汇款时间"/>
 					  </template>
@@ -908,7 +916,7 @@
             if (this.commonJS.isEmpty(this.inputForm.receivablesType)) {
               this.inputForm.receivablesType = '2'
             }
-            if (this.commonJS.isEmpty(this.inputForm.billingPeople)) {
+			  if (this.status === 'audit') {
               this.inputForm.billingPeople = this.$store.state.user.name
             }
             if (this.commonJS.isEmpty(this.inputForm.billingPeopleId)) {

+ 3 - 1
src/views/flowable/task/NoticePageList.vue

@@ -183,7 +183,8 @@
 		}else {
           this.inputForm = {
             taskId: '',
-            noticeId: ''
+            noticeId: '',
+		    taskName: ''
           }
           taskService.getTaskDef({
             procInsId: row.taskId,
@@ -191,6 +192,7 @@
           }).then((data) => {
             this.inputForm.taskId = row.taskId
             this.inputForm.noticeId = row.noticeName
+            this.inputForm.taskName = row.taskName
             noticeService.update(this.inputForm)
             this.$router.push({
               path: '/flowable/task/TaskFormDetail',

+ 9 - 0
src/views/flowable/task/TaskForm.vue

@@ -485,6 +485,7 @@ export default {
 				this.$refs.form.startForm(
 					(businessTable, businessId, inputForm,recordType) => {
 						vars = { ...vars, ...inputForm ,recordType}
+						console.log(vars)
 						if (inputForm.procDefId) {
 							this.procDefId = inputForm.procDefId
 						}
@@ -666,6 +667,7 @@ export default {
 		// Process_1670548572655 报告作废归档-苏州
 		// Process_1669700915383 合同登记纸质归档
 		// Process_1669271524486 报销审批
+		// Process_1669271524487 财务-报销审批-电子发票
 		// Process_1669275081328 发票申请
 		// Process_1669275380218 发票作废
 		// Process_1672738002595 发起通知
@@ -678,6 +680,7 @@ export default {
 		// Process_1666331430821 评估-报告签发审批
 		// Process_1666332258192 评估-项目登记归档
 		// Process_1665383385070 评估-报销申请
+		// Process_1665383385071 评估-报销申请-电子发票
 		// Process_1665628043339 评估-发票作废
 		// Process_1665458731435 评估-发票申请
 		// Process_1669961023358 物资管理-采购申请
@@ -686,6 +689,7 @@ export default {
 		// Process_1673514092406 物资管理-入库修改
 		// Process_1673600899831 物资管理-合同
 		// Process_1673924346231 中审-报销审批
+		// Process_1673924346232 中审-报销审批-电子发票
 		// Process_1667894339167 会计-合同登记
 		// Process_1678692643340 会计-项目报告归档-苏州分部
 		// Process_1683767097901 物资管理-领用退回申请
@@ -718,6 +722,7 @@ export default {
 				this.procDefId.includes('Process_1670548572655') ||
 				this.procDefId.includes('Process_1669700915383') ||
 				this.procDefId.includes('Process_1669271524486') ||
+				this.procDefId.includes('Process_1669271524487') ||
 				this.procDefId.includes('Process_1669275081328') ||
 				this.procDefId.includes('Process_1669275380218') ||
 				this.procDefId.includes('Process_1672738002595') ||
@@ -730,6 +735,7 @@ export default {
 				this.procDefId.includes('Process_1666331430821') ||
 				this.procDefId.includes('Process_1666332258192') ||
 				this.procDefId.includes('Process_1665383385070') ||
+				this.procDefId.includes('Process_1665383385071') ||
 				this.procDefId.includes('Process_1665628043339') ||
 				this.procDefId.includes('Process_1665458731435') ||
 				this.procDefId.includes('Process_1669961023358') ||
@@ -738,6 +744,7 @@ export default {
 				this.procDefId.includes('Process_1673514092406') ||
 				this.procDefId.includes('Process_1673600899831') ||
 				this.procDefId.includes('Process_1673924346231') ||
+				this.procDefId.includes('Process_1673924346232') ||
 				this.procDefId.includes('Process_1667894339167') ||
 				this.procDefId.includes('Process_1678692643340') ||
 				this.procDefId.includes('Process_1683767097901') ||
@@ -1051,6 +1058,8 @@ export default {
 							.then((data) => {
 								this.$message.success("提交成功");
 								useTabs.close();
+								console.log("进入审核通过环节")
+								console.log(this.title)
 								// 我的通知
 								let createDate = ''
 								this.myNotice(data, this.procDefId, this.title, vars.userName, createDate)

+ 3 - 1
src/views/home/components/MyNoticePageList2.vue

@@ -166,7 +166,8 @@ export default {
 			} else {
 				this.inputForm = {
 					taskId: '',
-					noticeId: ''
+					noticeId: '',
+					taskName: ''
 				}
 				console.log('进来了+++', row.taskId)
 				taskService.getTaskDef({
@@ -175,6 +176,7 @@ export default {
 				}).then((data) => {
 					this.inputForm.taskId = row.taskId
 					this.inputForm.noticeId = row.noticeName
+					this.inputForm.taskName = row.taskName
 					noticeService.update(this.inputForm)
 					// this.$router.push({
 					// 	path: '/flowable/task/TaskForm',

+ 2 - 2
src/views/materialManagement/file/MaterialManagementV2.vue

@@ -460,11 +460,11 @@
           item.createBy.name = this.$store.state.user.name
           this.dataListNew.push(item)
         }
-        for await (let item of this.dataListNew) {
+        for  (let item of this.dataListNew) {
           if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
             item.url = item.raw.url
             if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
-              await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+               this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
                 item.lsUrl = data
               })
             }

+ 7 - 7
src/views/program/registered/ProjectForm.vue

@@ -538,7 +538,7 @@
                     highlight-current-row
                     :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
                   >
-                    <vxe-table-column field="contacts" title="联系人" :edit-render="{}">
+                    <vxe-table-column field="contacts" title="联系人" :edit-render="{}" show-overflow="title">
                       <template v-slot:edit="scope">
                         <el-input :disabled="true" v-model="scope.row.contacts" ></el-input>
                       </template>
@@ -555,22 +555,22 @@
                         </vxe-select>
                       </template>
                     </vxe-table-column>
-                    <vxe-table-column field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}">
+                    <vxe-table-column field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
                       <template v-slot:edit="scope">
                         <el-input :disabled="true" v-model="scope.row.linkMobilePhoneFirst" ></el-input>
                       </template>
                     </vxe-table-column>
-                    <vxe-table-column field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}">
+                    <vxe-table-column field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}" show-overflow="title">
                       <template v-slot:edit="scope">
                         <el-input :disabled="true" v-model="scope.row.linkMobilePhoneSecoed" ></el-input>
                       </template>
                     </vxe-table-column>
-                    <vxe-table-column field="job" title="职位" :edit-render="{}">
+                    <vxe-table-column field="job" title="职位" :edit-render="{}" show-overflow="title">
                       <template v-slot:edit="scope">
                         <el-input v-model="scope.row.job" ></el-input>
                       </template>
                     </vxe-table-column>
-                    <vxe-table-column field="remarks" title="备注" :edit-render="{}">
+                    <vxe-table-column field="remarks" title="备注" :edit-render="{}" show-overflow="title">
                       <template v-slot:edit="scope">
                         <el-input v-model="scope.row.remarks" ></el-input>
                       </template>
@@ -607,12 +607,12 @@
                     highlight-current-row
                     :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
                   >
-                    <vxe-table-column field="name" title="姓名" :edit-render="{}">
+                    <vxe-table-column field="name" title="姓名" :edit-render="{}" show-overflow="title">
                       <template v-slot:edit="scope">
                         <el-input v-model="scope.row.name" ></el-input>
                       </template>
                     </vxe-table-column>
-                    <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}">
+                    <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}" show-overflow="title">
                       <template v-slot:edit="scope">
                         <vxe-input
                           :disabled="method==='view'"

+ 4 - 4
src/views/program/registered/ProofreadBrowseFormComponent.vue

@@ -59,7 +59,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -107,7 +107,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -155,7 +155,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -203,7 +203,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template v-slot:edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>

+ 16 - 16
src/views/program/registered/ProofreadFormComponent.vue

@@ -59,7 +59,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -98,7 +98,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>
@@ -124,7 +124,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -163,7 +163,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>
@@ -187,7 +187,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -226,7 +226,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>
@@ -250,7 +250,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -289,7 +289,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>
@@ -313,7 +313,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -352,7 +352,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>
@@ -376,7 +376,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -415,7 +415,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>
@@ -439,7 +439,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -478,7 +478,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>
@@ -502,7 +502,7 @@
             highlight-current-row
             :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true}"
           >
-            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}">
+            <vxe-table-column field="typeName" title="审核要点" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input :disabled="true" v-model="scope.row.typeName" ></el-input>
               </template>
@@ -541,7 +541,7 @@
                 </vxe-select>
               </template>
             </vxe-table-column>
-            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}">
+            <vxe-table-column width="350px" field="replyComments" title="回复意见" :edit-render="{}" show-overflow="title">
               <template #edit="scope">
                 <el-input v-model="scope.row.replyComments" ></el-input>
               </template>

+ 187 - 59
src/views/reimbursement/info/InfoForm.vue

@@ -12,6 +12,17 @@
                label-width="100px" @submit.native.prevent>
 
         <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
+		  <el-row >
+			  <el-col :span="12">
+				  <el-form-item label="报销项" prop="reimbursementType" :disabled="status === 'audit' || status === 'taskFormDetail'"
+								:rules="[
+                        {required: true, message:'报销项不能为空', trigger:'blur'}
+               ]">
+					  <el-radio v-model="inputForm.reimbursementType" v-for="item in $dictUtils.getDictList('reimbursement_type')" :label="item.value" style="margin-right: 20px">
+						  {{item.label}}</el-radio>
+				  </el-form-item>
+			  </el-col>
+		  </el-row>
         <el-row :gutter="26">
           <el-col :span="12">
             <el-form-item label="经办人" prop="userName">
@@ -95,15 +106,15 @@
 					  @edit-closed=""
 					  highlight-current-row
 				  >
-					  <vxe-table-column field="purchaserAgent" title="采购人" :edit-render="{}" :rules="[{required: true, message:'请选择采购人', trigger:'blur'}]"></vxe-table-column>
-					  <vxe-table-column field="procurementOffice" title="采购部门" :edit-render="{}"></vxe-table-column>
-					  <vxe-table-column field="procurementType" title="采购类型" :edit-render="{}" :rules="[{required: true, message:'请选择采购类型', trigger:'blur'}]"></vxe-table-column>
-					  <vxe-table-column field="tradeName" title="商品名称" :edit-render="{}" :rules="[{required: true, message:'请填写商品名称', trigger:'blur'}]"></vxe-table-column>
-					  <vxe-table-column field="tradePrice" title="商品单价(元)" :edit-render="{}" :rules="[{required: true, message:'请输入商品单价', trigger:'blur'}]"></vxe-table-column>
-					  <vxe-table-column field="tradeNumber" title="商品数量" :edit-render="{}"></vxe-table-column>
-					  <vxe-table-column field="priceSum" title="商品总价" :edit-render="{}"></vxe-table-column>
-					  <vxe-table-column field="company" title="单位" :edit-render="{}"></vxe-table-column>
-					  <vxe-table-column field="remarks" title="备注" :edit-render="{}"></vxe-table-column>
+					  <vxe-table-column field="purchaserAgent" 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>
@@ -139,13 +150,13 @@
 					  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 					  :edit-rules="validRules"
 				  >
-					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.userName" @focus="userPullListForm(scope.$rowIndex)"></el-input>
 							  <!--              <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="{}">
+					  <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						  </template>
@@ -155,34 +166,34 @@
 							  <el-input v-model="scope.row.typeName" @focus="typePullForm(scope.$rowIndex, scope.row.deptId)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.projectName" @focus="openProgramPageForm(scope.$rowIndex, scope.row)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}">
+					  <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 							  <el-input :readonly="true" v-model="scope.row.reportNumber"></el-input>
 
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					  <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="content" title="内容" :edit-render="{}">
+					  <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.content" ></el-input>
 						  </template>
@@ -222,13 +233,13 @@
 					  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 					  :edit-rules="validRules"
 				  >
-					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.userName" @focus="userPullListForm2(scope.$rowIndex)"></el-input>
 							  <!--              <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="{}">
+					  <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						  </template>
@@ -238,7 +249,7 @@
 							  <el-input v-model="scope.row.typeName" @focus="typePullForm2(scope.$rowIndex, scope.row.deptId)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="contractName" title="报销合同" :edit-render="{}" :rules="[{required: true, message:'请选择报销合同', trigger:'blur'}]">
+					  <vxe-table-column field="contractName" title="报销合同" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销合同', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.contractName" @focus="openContractForm(scope.$rowIndex, scope.row)"></el-input>
 						  </template>
@@ -248,22 +259,22 @@
 					  <!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					  <!--              </template>-->
 					  <!--            </vxe-table-column>-->
-					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					  <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="content" title="内容" :edit-render="{}">
+					  <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.content" ></el-input>
 						  </template>
@@ -303,13 +314,13 @@
 					  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 					  :edit-rules="validRules"
 				  >
-					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.userName" @focus="userPullListForm3(scope.$rowIndex)"></el-input>
 							  <!--              <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="{}">
+					  <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						  </template>
@@ -319,32 +330,32 @@
 							  <el-input v-model="scope.row.typeName" @focus="typePullForm3(scope.$rowIndex, scope.row.deptId)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.projectName" @focus="openProgramPageForm3(scope.$rowIndex, scope.row)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}">
+					  <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					  <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="content" title="内容" :edit-render="{}">
+					  <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.content" ></el-input>
 						  </template>
@@ -384,13 +395,13 @@
 					  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 					  :edit-rules="validRules"
 				  >
-					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.userName" @focus="userPullListForm4(scope.$rowIndex)"></el-input>
 							  <!--              <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="{}">
+					  <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						  </template>
@@ -400,7 +411,7 @@
 							  <el-input v-model="scope.row.typeName" @focus="typePullForm4(scope.$rowIndex, scope.row.deptId)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="projectName" title="报销详情" :edit-render="{}" :rules="[{required: true, message:'请填写报销详情', trigger:'blur'}]">
+					  <vxe-table-column field="projectName" title="报销详情" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请填写报销详情', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.projectName" @focus="openProgramPageForm4(scope.$rowIndex, scope.row)"></el-input>
 						  </template>
@@ -410,22 +421,22 @@
 					  <!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					  <!--              </template>-->
 					  <!--            </vxe-table-column>-->
-					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					  <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="content" title="内容" :edit-render="{}">
+					  <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.content" ></el-input>
 						  </template>
@@ -465,13 +476,13 @@
 					  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 					  :edit-rules="validRules"
 				  >
-					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.userName" @focus="userPullListForm5(scope.$rowIndex)"></el-input>
 							  <!--              <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="{}">
+					  <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						  </template>
@@ -481,7 +492,7 @@
 							  <el-input v-model="scope.row.typeName" @focus="typePullForm5(scope.$rowIndex, scope.row.deptId)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.projectName" @focus="openProgramPageForm5(scope.$rowIndex, scope.row)"></el-input>
 						  </template>
@@ -491,22 +502,22 @@
 					  <!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					  <!--              </template>-->
 					  <!--            </vxe-table-column>-->
-					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					  <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="content" title="内容" :edit-render="{}">
+					  <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.content" ></el-input>
 						  </template>
@@ -522,6 +533,7 @@
           </el-row>
         </div>
 
+		  <div v-if="inputForm.reimbursementType === '0'">
         <el-divider content-position="left"><i class="el-icon-document"></i>
           专用发票信息
           <el-button style="margin-left: 20px" type="primary" :disabled="method==='view' || status === 'audit' || status === 'taskFormDetail' " size="default" @click="insertEvent('amount')" plain>
@@ -543,27 +555,27 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 				>
-					<vxe-table-column field="code" title="发票代码" :edit-render="{}">
+					<vxe-table-column field="code" title="发票代码" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input oninput ="value=value.replace(/\D|^/g,'')" maxlength="20" v-model="scope.row.code" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="number" title="发票号" :edit-render="{}">
+					<vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input oninput ="value=value.replace(/\D|^/g,'')" maxlength="8" @change="isExict(scope.row)" v-model="scope.row.number" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="amount" title="金额" :edit-render="{}">
+					<vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input maxlength="15" v-model="scope.row.amount" @input="scope.row.amount = twoDecimalPlaces(scope.row.amount)" @change="countAmount(scope.row)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="taxAmount" title="税额" :edit-render="{}">
+					<vxe-table-column field="taxAmount" title="税额" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input maxlength="15" v-model="scope.row.taxAmount" @input="scope.row.taxAmount = twoDecimalPlaces(scope.row.taxAmount)" @change="countAmount(scope.row)"></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="count" title="价税合计" :edit-render="{}">
+					<vxe-table-column field="count" title="价税合计" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input disabled="true" v-model="scope.row.count" ></el-input>
 						</template>
@@ -577,10 +589,97 @@
 			</el-col>
 
         </el-row>
+		  </div>
+		  <div v-if="inputForm.reimbursementType === '1'">
+			  <el-divider content-position="left"><i class="el-icon-document"></i>
+				  <span style="color: red;border-top: 20px">* </span>电子发票信息
+				  <!--<el-button style="margin-left: 20px" type="primary" :disabled="method==='view' || status === 'audit' || status === 'taskFormDetail' " size="default" @click="insertEvent('invoiceReimbursement')" plain>
+					  新增
+				  </el-button>-->
+			  </el-divider>
+			  <el-row  :gutter="15" >
+				  <el-col :span="24">
+					  <vxe-table
+						  border
+						  show-footer
+						  show-overflow
+						  ref="invoiceReimbursementTable"
+						  class="vxe-table-element"
+						  :data="inputForm.invoiceReimbursements"
+						  style="margin-left: 5em"
+						  @cell-click=""
+						  :key="invoiceReimbursementKey"
+						  @edit-closed=""
+						  highlight-current-row
+						  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+						  :edit-rules="invoiceReimbursementRules"
+					  >
+						  <vxe-table-column  field="invoiceType" title="发票类型" show-overflow="title" :edit-render="{name: '$select', options: $dictUtils.getDictList('invoice_reimbursement_type')}">
+							  <template v-slot:edit="scope">
+								  <vxe-select :disabled="true" v-model="scope.row.invoiceType" placeholder="请选择发票类型" clearable style="width: 100%;" transfer>
+									  <vxe-option
+										  v-for="item in $dictUtils.getDictList('invoice_reimbursement_type')"
+										  :key="item.value"
+										  :label="item.label"
+										  :value="item.value">
+									  </vxe-option>
+								  </vxe-select>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceProjectName" title="发票项目名" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="50" readonly="true" v-model="scope.row.invoiceProjectName" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input oninput ="value=value.replace(/\D|^/g,'')" readonly="true" maxlength="30" @change="isExict(scope.row)" v-model="scope.row.number" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceDate" title="开票日期" :edit-render="{}" show-overflow="title">
+							  <template v-slot:edit="scope">
+								  <vxe-input v-model="scope.row.invoiceDate" readonly="true" type="datetime" transfer placeholder="请选择日期"></vxe-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceUnit" title="开票单位" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="50" readonly="true" v-model="scope.row.invoiceUnit" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="15" readonly="true" v-model="scope.row.amount" @input="scope.row.amount = twoDecimalPlaces(scope.row.amount)" @change="countAmount(scope.row)"></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="taxAmount" title="税额" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="15" readonly="true" v-model="scope.row.taxAmount" @input="scope.row.taxAmount = twoDecimalPlaces(scope.row.taxAmount)" @change="countAmount(scope.row)"></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="count" title="价税合计" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input disabled="true" v-model="scope.row.count" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="remarks" title="备注" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="250" v-model="scope.row.remarks" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <!--<vxe-table-column title="操作" width="100">
+							  <template #default="scope">
+								  <el-button size="default" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'invoiceReimbursement')">删除</el-button>
+							  </template>
+						  </vxe-table-column>-->
+					  </vxe-table>
+				  </el-col>
+			  </el-row>
+		  </div>
 
       </el-form>
-      <!-- 附件 -->
-      <UpLoadComponent ref="uploadComponent"></UpLoadComponent>
+		<!-- 附件 -->
+		<InvoiceReimbursementUpLoadComponent ref="invoiceReimbursementUpLoadComponent" v-show="'1' === this.inputForm.reimbursementType"></InvoiceReimbursementUpLoadComponent>
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<template #footer>
 			<span class="dialog-footer">
 			  <el-button size="default" @click="close()" icon="el-icon-circle-close">关闭</el-button>
@@ -594,6 +693,7 @@
 <script>
   import ReimbursementService from '@/api/sys/ReimbursementService'
   import UpLoadComponent from '@/views/common/UpLoadComponent'
+  import InvoiceReimbursementUpLoadComponent from '@/views/common/InvoiceReimbursementUpLoadComponent'
   import MaterialManagementService from '@/api/materialManagement/MaterialManagementService'
   import XEUtils from 'xe-utils'
   export default {
@@ -627,6 +727,7 @@
         visible: false,
         loading: false,
         inputForm: {
+			reimbursementType: '0',
           userId: '',
           userName: '',
           no: '',
@@ -639,6 +740,8 @@
           detailInfoOthers: [],
           detailInfoProcured: [],
           amountInfos: [],
+			invoiceReimbursements: [],
+			invoiceReimbursementFiles: [], // 电子发票附件信息
           files: [], // 附件信息
           procInsId: '',
           sourceType: '',
@@ -646,7 +749,10 @@
           purchaseNo: '',
           tradeTotalPrice: '',
           purchaseId: '',
-          departmentName: ''
+			procDefId: '',
+			procDefKey: '',
+			formTitle: '',
+			departmentName: ''
         },
         indexRow: '',
         detailKey: '',
@@ -655,9 +761,15 @@
         detailKeyOthers: '',
         detailKeyProcured: '',
         keyWatch: '',
-        amountKey: ''
+		  amountKey: '',
+		  invoiceReimbursementKey: ''
       }
     },
+	  provide() {
+		  return {
+			  getParentReimbursementType: this.getParentReimbursementType
+		  }
+	  },
     reimbursementService: null,
     materialManagementService: null,
     created () {
@@ -665,12 +777,17 @@
       this.materialManagementService = new MaterialManagementService()
     },
     components: {
+		InvoiceReimbursementUpLoadComponent,
       UpLoadComponent
     },
     methods: {
+		getParentReimbursementType() {
+			return this.inputForm.reimbursementType
+		},
       init (method, id) {
         this.method = method
         this.inputForm = {
+			reimbursementType: '0',
           userId: '',
           userName: '',
           no: '',
@@ -683,6 +800,8 @@
           detailInfoOthers: [],
           detailInfoProcured: [],
           amountInfos: [],
+			invoiceReimbursements: [],
+			invoiceReimbursementFiles: [], // 电子发票附件信息
           files: [], // 附件信息
           procInsId: '',
           sourceType: '',
@@ -714,6 +833,7 @@
               this.inputForm = this.recover(this.inputForm, data)
               this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
               this.$refs.uploadComponent.clearUpload()
+				this.$refs.invoiceReimbursementUpLoadComponent.clearUpload()
               if (this.status === 'audit' || this.status === 'taskFormDetail') {
                 method = 'view'
               }
@@ -730,10 +850,17 @@
               if (this.commonJS.isEmpty(this.inputForm.reimDate)) {
                 this.inputForm.reimDate = new Date()
               }
-              if (this.commonJS.isEmpty(this.inputForm.files)) {
-                this.inputForm.files = []
-              }
-              this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'reimbursement_ping_gu')
+				if (this.commonJS.isEmpty(this.inputForm.invoiceReimbursementFiles)) {
+					this.inputForm.invoiceReimbursementFiles = []
+				}
+				if (this.commonJS.isEmpty(this.inputForm.files)) {
+					this.inputForm.files = []
+				}
+				if (this.commonJS.isEmpty(this.inputForm.reimbursementType)) {
+					this.inputForm.reimbursementType = '0'
+				}
+				this.$refs.invoiceReimbursementUpLoadComponent.newUpload(method, this.inputForm.invoiceReimbursementFiles, 'reimbursement_ping_gu',300,'电子发票附件')
+				this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'reimbursement_ping_gu')
               if (this.commonJS.isNotEmpty(this.inputForm.purchaseId)) {
                 this.startPur(this.inputForm.purchaseId)
               }
@@ -770,6 +897,7 @@
         this.$refs.inputForm.resetFields()
         this.inputForm.detailInfos = []
         this.inputForm.amountInfos = []
+        this.inputForm.invoiceReimbursements = []
         this.$refs.uploadComponent.clearUpload()
         this.visible = false
       },

+ 48 - 2
src/views/reimbursement/info/InfoList.vue

@@ -26,8 +26,18 @@
       <el-form-item v-if="showHideItem" label="报销人" prop="reimBy">
         <UserSelect :limit='1' :modelValue="searchForm.reimBy" @update:modelValue='(value, label) => {searchForm.reimBy = label}'></UserSelect>
       </el-form-item>
+      <el-form-item v-if="showHideItem" label="报销项" prop="reimbursementType">
+        <el-select v-model="searchForm.reimbursementType" placeholder="请选择" style="width:100%;" clearable>
+          <el-option
+            v-for="item in $dictUtils.getDictList('reimbursement_type')"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item v-if="showHideItem" label="报销状态" prop="type">
-        <el-select v-model="searchForm.type" placeholder="请选择" style="width:100%;">
+        <el-select v-model="searchForm.type" placeholder="请选择" style="width:100%;" clearable>
           <el-option
             v-for="item in $dictUtils.getDictList('status')"
             :key="item.value"
@@ -89,6 +99,7 @@
         <template #buttons>
           <el-button v-if="hasPermission('reimbursement:info:add')" type="primary" icon="el-icon-plus" @click="add()">新建</el-button>
           <el-button v-if="hasPermission('reimbursement:info:del')" type="danger" icon="el-icon-delete" @click="del()" :disabled="$refs.infoTable && $refs.infoTable.getCheckboxRecords().length === 0" plain>删除</el-button>
+		  <el-button type="warning" icon="el-icon-download" @click="exportInvoiceReimbursementFile()" plain>电子发票报销</el-button>
         </template>
       </vxe-toolbar>
       <div class="jp-table-body">
@@ -124,6 +135,11 @@
               <span v-else>{{scope.row.no}}</span>
             </template>
           </vxe-column>
+			<vxe-column width="130" title="报销项" field="reimbursementType" align="center">
+				<template #default="scope">
+					{{$dictUtils.getDictLabel('reimbursement_type', scope.row.reimbursementType, '')}}
+				</template>
+			</vxe-column>
           <vxe-column width="130" title="报销类型" field="sourceType" align="center">
             <template #default="scope">
               {{$dictUtils.getDictLabel('pg_reimbursement_source_type', scope.row.sourceType, '')}}
@@ -423,6 +439,12 @@
             this.procDefKey = data.key
           }
         })
+        processService.getByName('评估-报销审批-电子发票').then((data) => {
+          if (!this.commonJS.isEmpty(data.id)) {
+            this.processDefinitionIdInvoice = data.id
+            this.procDefKeyInvoice = data.key
+          }
+        })
       },
       // 删除
       del (id) {
@@ -449,9 +471,16 @@
       // 流程详情
       detail (row) {
         if (!this.commonJS.isEmpty(row.type) && row.type !== '1') {
+			if (row.reimbursementType === '1') {
+				this.procDefId = this.processDefinitionIdInvoice
+			} else if (row.reimbursementType === '0') {
+				{
+					this.procDefId = this.processDefinitionId
+				}
+			}
           taskService.getTaskDef({
             procInsId: row.procInsId,
-            procDefId: row.processDefinitionId
+            procDefId: this.procDefId
           }).then((data) => {
             this.$router.push({
               path: '/flowable/task/TaskFormDetail',
@@ -498,6 +527,23 @@
           }
         })
       },
+      // 下载文档
+		exportInvoiceReimbursementFile () {
+        this.loading = true
+        this.reimbursementService.exportInvoiceReimbursementFile({
+          'itemType': '1',
+          ...this.searchForm
+        }).then((res) => {
+          // 将二进制流文件写入excel表,以下为重要步骤
+          this.$utils.downloadExcel(res, '评估-报销电子发票报销列表')
+          this.loading = false
+        }).catch(function (err) {
+          this.loading = false
+          if (err.response) {
+            console.log(err.response)
+          }
+        })
+      },
       // 当前页
       currentChangeHandle ({ currentPage, pageSize }) {
         this.tablePage.currentPage = currentPage

File diff suppressed because it is too large
+ 576 - 117
src/views/reimbursement/info/ReimbursementForm.vue


+ 10 - 10
src/views/workClient/WorkClientForm.vue

@@ -237,17 +237,17 @@
           :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '#'}"
         >
 
-          <vxe-table-column field="ourBank" title="开票银行" :edit-render="{}">
+          <vxe-table-column field="ourBank" title="开票银行" :edit-render="{}" show-overflow="title">
             <template #edit="scope" >
               <el-input maxlength="64" v-model="scope.row.ourBank" ></el-input>
             </template>
           </vxe-table-column>
-          <vxe-table-column field="bankNumber" title="开票账号" :edit-render="{}">
+          <vxe-table-column field="bankNumber" title="开票账号" :edit-render="{}" show-overflow="title">
             <template #edit="scope" >
               <el-input v-model="scope.row.bankNumber" @blur="checkBankNumber(scope.row)" maxlength="30"></el-input>
             </template>
           </vxe-table-column>
-          <vxe-table-column field="remarks" title="备注信息" :edit-render="{}">
+          <vxe-table-column field="remarks" title="备注信息" :edit-render="{}" show-overflow="title">
             <template #edit="scope" >
               <el-input maxlength="64" v-model="scope.row.remarks" ></el-input>
             </template>
@@ -281,37 +281,37 @@
           :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '#'}"
         >
 
-        <vxe-table-column field="name" title="联系人姓名" :edit-render="{}">
+        <vxe-table-column field="name" title="联系人姓名" :edit-render="{}" show-overflow="title">
           <template #edit="scope">
             <el-input maxlength="10" v-model="scope.row.name" ></el-input>
           </template>
         </vxe-table-column>
-        <vxe-table-column field="office" title="部门" :edit-render="{}">
+        <vxe-table-column field="office" title="部门" :edit-render="{}" show-overflow="title">
           <template #edit="scope">
             <el-input maxlength="10" v-model="scope.row.office" ></el-input>
           </template>
         </vxe-table-column>
-        <vxe-table-column field="position" title="职务" :edit-render="{}">
+        <vxe-table-column field="position" title="职务" :edit-render="{}" show-overflow="title">
           <template #edit="scope">
             <el-input maxlength="10" v-model="scope.row.position" ></el-input>
           </template>
         </vxe-table-column>
-        <vxe-table-column field="qq" title="QQ" :edit-render="{}">
+        <vxe-table-column field="qq" title="QQ" :edit-render="{}" show-overflow="title">
           <template #edit="scope">
             <el-input v-model="scope.row.qq" ></el-input>
           </template>
         </vxe-table-column>
-        <vxe-table-column field="linkPhone" title="联系方式1" :edit-render="{}">
+        <vxe-table-column field="linkPhone" title="联系方式1" :edit-render="{}" show-overflow="title">
           <template #edit="scope">
             <el-input v-model="scope.row.linkPhone"  maxlength="20"></el-input>
           </template>
         </vxe-table-column>
-        <vxe-table-column field="linkMobile" title="联系方式2" :edit-render="{}">
+        <vxe-table-column field="linkMobile" title="联系方式2" :edit-render="{}" show-overflow="title">
           <template #edit="scope">
             <el-input v-model="scope.row.linkMobile"  maxlength="20"></el-input>
           </template>
         </vxe-table-column>
-        <vxe-table-column field="email" title="E-mail" :edit-render="{}">
+        <vxe-table-column field="email" title="E-mail" :edit-render="{}" show-overflow="title">
           <template #edit="scope">
             <el-input v-model="scope.row.email"  maxlength="64"></el-input>
           </template>

+ 7 - 7
src/views/zs/reimbursement/info/CwProgramPageForm.vue

@@ -45,11 +45,11 @@
           :checkbox-config="{}">
           <vxe-column type="seq" width="60" title="序号"></vxe-column>
           <vxe-column type="checkbox" width="40px"></vxe-column>
-          <vxe-column min-width="230" align="center" title="项目名称" field="projectName"></vxe-column>
-          <vxe-column min-width="160" align="center" title="项目编号" field="projectNumber"></vxe-column>
-          <vxe-column min-width="160" align="center" title="合同名称" field="contractName"></vxe-column>
-          <vxe-column min-width="160" align="center" title="创建人" field="createBy.name"></vxe-column>
-          <vxe-column min-width="160" align="center" title="创建时间" field="createDate"></vxe-column>
+          <vxe-column min-width="230" align="center" title="项目名称" field="projectName" show-overflow="title"></vxe-column>
+          <vxe-column min-width="160" align="center" title="项目编号" field="projectNumber" show-overflow="title"></vxe-column>
+          <vxe-column min-width="160" align="center" title="合同名称" field="contractName" show-overflow="title"></vxe-column>
+          <vxe-column min-width="160" align="center" title="创建人" field="createBy.name" show-overflow="title"></vxe-column>
+          <vxe-column min-width="160" align="center" title="创建时间" field="createDate" show-overflow="title"></vxe-column>
 <!--          <vxe-column  title="项目名称" field="name"></vxe-column>-->
 <!--          <vxe-column width="200px" title="项目编号" field="no"></vxe-column>-->
 <!--          <vxe-column width="150px" title="登记人" field="createBy"></vxe-column>-->
@@ -80,8 +80,8 @@
       </div>
 		<template #footer>
 			<span class="dialog-footer">
-			  <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
-			  <el-button size="small" type="primary" v-if="method != 'view'" @click="getProgram()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+			  <el-button size="default" @click="close()" icon="el-icon-circle-close">关闭</el-button>
+			  <el-button size="default" type="primary" v-if="method != 'view'" @click="getProgram()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
 			</span>
 		</template>
 

+ 3 - 3
src/views/zs/reimbursement/info/CwReimbursementTypePullForm.vue

@@ -39,14 +39,14 @@
           :radio-config="{trigger: 'row'}">
           <vxe-column type="seq" width="60" title="序号"></vxe-column>
           <vxe-column type="radio" width="40" ></vxe-column>
-          <vxe-column title="报销内容名称" field="name" align="left" tree-node></vxe-column>
+          <vxe-column title="报销内容名称" field="name" align="left" tree-node show-overflow="title"></vxe-column>
           <vxe-column width="100" title="序号" field="sort"></vxe-column>
         </vxe-table>
       </div>
 		<template #footer>
 			<span class="dialog-footer">
-			  <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
-			  <el-button size="small" type="primary" v-if="method != 'view'" @click="getProgramForType" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+			  <el-button size="default" @click="close()" icon="el-icon-circle-close">关闭</el-button>
+			  <el-button size="default" type="primary" v-if="method != 'view'" @click="getProgramForType" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
 			</span>
 		</template>
     </el-dialog>

+ 198 - 59
src/views/zs/reimbursement/info/InfoForm.vue

@@ -12,6 +12,17 @@
                label-width="100px" @submit.native.prevent>
 
         <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
+		  <el-row >
+			  <el-col :span="12">
+				  <el-form-item label="报销项" prop="reimbursementType" :disabled="status === 'audit' || status === 'taskFormDetail'"
+								:rules="[
+                        {required: true, message:'报销项不能为空', trigger:'blur'}
+               ]">
+					  <el-radio v-model="inputForm.reimbursementType" v-for="item in $dictUtils.getDictList('reimbursement_type')" :label="item.value" style="margin-right: 20px">
+						  {{item.label}}</el-radio>
+				  </el-form-item>
+			  </el-col>
+		  </el-row>
         <el-row :gutter="26">
           <el-col :span="12">
             <el-form-item label="经办人" prop="userName">
@@ -88,15 +99,15 @@
               style="margin-left: 5em"
               highlight-current-row
             >
-              <vxe-table-column field="purchaser" title="采购人" :edit-render="{}" :rules="[{required: true, message:'请选择采购人', trigger:'blur'}]"></vxe-table-column>
-              <vxe-table-column field="procurementOffice" title="采购部门" :edit-render="{}"></vxe-table-column>
-              <vxe-table-column field="procurementType" title="采购类型" :edit-render="{}" :rules="[{required: true, message:'请选择采购类型', trigger:'blur'}]"></vxe-table-column>
-              <vxe-table-column field="tradeName" title="商品名称" :edit-render="{}" :rules="[{required: true, message:'请填写商品名称', trigger:'blur'}]"></vxe-table-column>
-              <vxe-table-column field="tradePrice" title="商品单价(元)" :edit-render="{}" :rules="[{required: true, message:'请输入商品单价', trigger:'blur'}]"></vxe-table-column>
-              <vxe-table-column field="tradeNumber" title="商品数量" :edit-render="{}"></vxe-table-column>
-              <vxe-table-column field="priceSum" title="商品总价" :edit-render="{}"></vxe-table-column>
-              <vxe-table-column field="company" title="单位" :edit-render="{}"></vxe-table-column>
-              <vxe-table-column field="remarks" title="备注" :edit-render="{}"></vxe-table-column>
+              <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="mini" type="primary" :disabled="false" @click="seeFileInfo(scope.$rowIndex)">文件详情</el-button>
@@ -127,23 +138,23 @@
               :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
               :edit-rules="validRules"
             >
-              <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+              <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.userName" @focus="userPullListForm(scope.$rowIndex)"></el-input>
                   <!--              <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="{}">
+              <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.typeName" @focus="typePullForm(scope.$rowIndex)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+              <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.projectName" @focus="openProgramPageForm(scope.$rowIndex, scope.row)"></el-input>
                 </template>
@@ -153,22 +164,22 @@
 <!--                              <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 <!--                            </template>-->
 <!--                          </vxe-table-column>-->
-              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+              <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="content" title="内容" :edit-render="{}">
+              <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.content" ></el-input>
                 </template>
@@ -205,23 +216,23 @@
               :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
               :edit-rules="validRules"
             >
-              <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+              <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.userName" @focus="userPullListForm2(scope.$rowIndex)"></el-input>
                   <!--              <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="{}">
+              <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.typeName" @focus="typePullForm2(scope.$rowIndex)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="contractName" title="报销合同" :edit-render="{}" :rules="[{required: true, message:'请选择报销合同', trigger:'blur'}]">
+              <vxe-table-column field="contractName" title="报销合同" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销合同', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.contractName" @focus="openContractForm(scope.$rowIndex, scope.row)"></el-input>
                 </template>
@@ -231,22 +242,22 @@
               <!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
               <!--              </template>-->
               <!--            </vxe-table-column>-->
-              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+              <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="content" title="内容" :edit-render="{}">
+              <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.content" ></el-input>
                 </template>
@@ -283,48 +294,48 @@
               :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
               :edit-rules="validRules"
             >
-              <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+              <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.userName" @focus="userPullListForm3(scope.$rowIndex)"></el-input>
                   <!--              <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="{}">
+              <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.typeName" @focus="typePullForm3(scope.$rowIndex)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+              <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.projectName" @focus="openProgramPageForm3(scope.$rowIndex, scope.row)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}">
+              <vxe-table-column field="reportNumber" title="报告号" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+              <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="content" title="内容" :edit-render="{}">
+              <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.content" ></el-input>
                 </template>
@@ -360,23 +371,23 @@
 					  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 					  :edit-rules="validRules"
 				  >
-					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+					  <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.userName" @focus="userPullListForm4(scope.$rowIndex)"></el-input>
 							  <!--              <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="{}">
+					  <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+					  <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.typeName" @focus="typePullForm4(scope.$rowIndex)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+					  <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.projectName" @focus="openProgramPageForm4(scope.$rowIndex, scope.row)"></el-input>
 						  </template>
@@ -386,22 +397,22 @@
 					  <!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
 					  <!--              </template>-->
 					  <!--            </vxe-table-column>-->
-					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+					  <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 						  <template #edit="scope">
 							  <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+					  <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+					  <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
 						  </template>
 					  </vxe-table-column>
-					  <vxe-table-column field="content" title="内容" :edit-render="{}">
+					  <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 						  <template #edit="scope">
 							  <el-input v-model="scope.row.content" ></el-input>
 						  </template>
@@ -440,23 +451,23 @@
               :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
               :edit-rules="validRules"
             >
-              <vxe-table-column field="userName" title="报销人" :edit-render="{}" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+              <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.userName" @focus="userPullListForm5(scope.$rowIndex)"></el-input>
                   <!--              <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="{}">
+              <vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+              <vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.typeName" @focus="typePullForm5(scope.$rowIndex)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+              <vxe-table-column field="projectName" title="报销项目" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input v-model="scope.row.projectName" @focus="openProgramPageForm5(scope.$rowIndex, scope.row)"></el-input>
                 </template>
@@ -466,22 +477,22 @@
               <!--                <el-input :readonly="true" v-model="scope.row.reportNumber" @focus="openReportNoPageForm(scope.$rowIndex, scope.row)"></el-input>-->
               <!--              </template>-->
               <!--            </vxe-table-column>-->
-              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
+              <vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
                 <template #edit="scope">
                   <el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}">
+              <vxe-table-column field="receiptNumber" title="收据张数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.receiptNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="days" title="出差天数" :edit-render="{}">
+              <vxe-table-column field="days" title="出差天数" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.days" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>
                 </template>
               </vxe-table-column>
-              <vxe-table-column field="content" title="内容" :edit-render="{}">
+              <vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
                 <template #edit="scope">
                   <el-input v-model="scope.row.content" ></el-input>
                 </template>
@@ -495,6 +506,7 @@
           </el-row>
         </div>
 
+		  <div v-if="inputForm.reimbursementType === '0'">
         <el-divider content-position="left"><i class="el-icon-document"></i>
           专用发票信息
           <el-button style="margin-left: 20px" type="primary" :disabled="method==='view'" size="mini" @click="insertEvent('amount')" plain>
@@ -513,27 +525,27 @@
 					highlight-current-row
 					:edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
 				>
-					<vxe-table-column field="code" title="发票代码" :edit-render="{}">
+					<vxe-table-column field="code" title="发票代码" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input v-model="scope.row.code" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="number" title="发票号" :edit-render="{}">
+					<vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input v-model="scope.row.number" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="amount" title="金额" :edit-render="{}">
+					<vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input v-model="scope.row.amount" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="taxAmount" title="税额" :edit-render="{}">
+					<vxe-table-column field="taxAmount" title="税额" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input v-model="scope.row.taxAmount" ></el-input>
 						</template>
 					</vxe-table-column>
-					<vxe-table-column field="count" title="价税合计" :edit-render="{}">
+					<vxe-table-column field="count" title="价税合计" :edit-render="{}" show-overflow="title">
 						<template #edit="scope">
 							<el-input v-model="scope.row.count" ></el-input>
 						</template>
@@ -548,10 +560,97 @@
 
 
         </el-row>
+		  </div>
+		  <div v-if="inputForm.reimbursementType === '1'">
+			  <el-divider content-position="left"><i class="el-icon-document"></i>
+				  <span style="color: red;border-top: 20px">* </span>电子发票信息
+				  <!--<el-button style="margin-left: 20px" type="primary" :disabled="method==='view' || status === 'audit' || status === 'taskFormDetail' " size="default" @click="insertEvent('invoiceReimbursement')" plain>
+					  新增
+				  </el-button>-->
+			  </el-divider>
+			  <el-row  :gutter="15" >
+				  <el-col :span="24">
+					  <vxe-table
+						  border
+						  show-footer
+						  show-overflow
+						  ref="invoiceReimbursementTable"
+						  class="vxe-table-element"
+						  :data="inputForm.invoiceReimbursements"
+						  style="margin-left: 5em"
+						  @cell-click=""
+						  :key="invoiceReimbursementKey"
+						  @edit-closed=""
+						  highlight-current-row
+						  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+						  :edit-rules="invoiceReimbursementRules"
+					  >
+						  <vxe-table-column  field="invoiceType" title="发票类型" show-overflow="title" :edit-render="{name: '$select', options: $dictUtils.getDictList('invoice_reimbursement_type')}">
+							  <template v-slot:edit="scope">
+								  <vxe-select :disabled="true" v-model="scope.row.invoiceType" placeholder="请选择发票类型" clearable style="width: 100%;" transfer>
+									  <vxe-option
+										  v-for="item in $dictUtils.getDictList('invoice_reimbursement_type')"
+										  :key="item.value"
+										  :label="item.label"
+										  :value="item.value">
+									  </vxe-option>
+								  </vxe-select>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceProjectName" title="发票项目名" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="50" readonly="true" v-model="scope.row.invoiceProjectName" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="number" title="发票号" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input oninput ="value=value.replace(/\D|^/g,'')" readonly="true" maxlength="30" @change="isExict(scope.row)" v-model="scope.row.number" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceDate" title="开票日期" :edit-render="{}" show-overflow="title">
+							  <template v-slot:edit="scope">
+								  <vxe-input v-model="scope.row.invoiceDate" readonly="true" type="datetime" transfer placeholder="请选择日期"></vxe-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="invoiceUnit" title="开票单位" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="50" readonly="true" v-model="scope.row.invoiceUnit" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="amount" title="金额" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="15" readonly="true" v-model="scope.row.amount" @input="scope.row.amount = twoDecimalPlaces(scope.row.amount)" @change="countAmount(scope.row)"></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="taxAmount" title="税额" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="15" readonly="true" v-model="scope.row.taxAmount" @input="scope.row.taxAmount = twoDecimalPlaces(scope.row.taxAmount)" @change="countAmount(scope.row)"></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="count" title="价税合计" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input disabled="true" v-model="scope.row.count" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <vxe-table-column field="remarks" title="备注" :edit-render="{}" show-overflow="title">
+							  <template #edit="scope">
+								  <el-input maxlength="250" v-model="scope.row.remarks" ></el-input>
+							  </template>
+						  </vxe-table-column>
+						  <!--<vxe-table-column title="操作" width="100">
+							  <template #default="scope">
+								  <el-button size="default" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'invoiceReimbursement')">删除</el-button>
+							  </template>
+						  </vxe-table-column>-->
+					  </vxe-table>
+				  </el-col>
+			  </el-row>
+		  </div>
 
-        <!-- 附件 -->
-        <UpLoadComponent ref="uploadComponent"></UpLoadComponent>
       </el-form>
+		<!-- 附件 -->
+		<InvoiceReimbursementUpLoadComponent ref="invoiceReimbursementUpLoadComponent" v-show="'1' === this.inputForm.reimbursementType"></InvoiceReimbursementUpLoadComponent>
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<template #footer>
 			 <span class="dialog-footer">
 			  <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
@@ -568,6 +667,7 @@
    // import ReimbursementService from '@/api/sys/ReimbursementService'
   import ReimbursementService from '@/api/zs/reimbursement/ReimbursementService'
   import UpLoadComponent from '@/views/common/UpLoadComponent'
+   import InvoiceReimbursementUpLoadComponent from '@/views/common/InvoiceReimbursementUpLoadComponent'
   import XEUtils from 'xe-utils'
   // import MaterialManagementService from '@/api/materialManagement/MaterialManagementService'
   // import MaterialManagementDialog from '../../../materialManagement/file/MaterialManagementDialog'
@@ -579,6 +679,7 @@
         visible: false,
         loading: false,
         inputForm: {
+			reimbursementType: '0',
           userName: '',
           no: '',
           department: '',
@@ -590,13 +691,18 @@
           detailInfoOthers: [],
           detailInfoProcured: [],
           amountInfos: [],
+			invoiceReimbursements: [],
+			invoiceReimbursementFiles: [], // 电子发票附件信息
           files: [], // 附件信息
           sourceType: '',
           preList: [],
           purchaseNo: '',
           tradeTotalPrice: '',
           purchaseId: '',
-          departmentName: ''
+			procDefId: '',
+			procDefKey: '',
+			formTitle: '',
+			departmentName: ''
         }
       }
     },
@@ -609,6 +715,7 @@
       // this.materialManagementService = new MaterialManagementService()
     },
     components: {
+		InvoiceReimbursementUpLoadComponent,
       UpLoadComponent,
       // MaterialManagementDialog
     },
@@ -618,6 +725,7 @@
       init (method, id) {
         this.method = method
         this.inputForm = {
+			reimbursementType: '0',
           userName: '',
           no: '',
           department: '',
@@ -625,6 +733,8 @@
           remarks: '',
           detailInfos: [],
           amountInfos: [],
+			invoiceReimbursements: [],
+			invoiceReimbursementFiles: [], // 电子发票附件信息
           files: [], // 附件信息
           detailInfoContracts: [],
           detailInfoReports: [],
@@ -657,7 +767,36 @@
             this.$refs.inputForm.resetFields()
             this.reimbursementService.findById(this.inputForm.id).then((data) => {
               this.inputForm = this.recover(this.inputForm, data)
-              this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'reimbursement')
+				this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+				this.$refs.uploadComponent.clearUpload()
+				this.$refs.invoiceReimbursementUpLoadComponent.clearUpload()
+				if (this.status === 'audit' || this.status === 'taskFormDetail') {
+					method = 'view'
+				}
+				if (this.commonJS.isEmpty(this.inputForm.department)) {
+					this.inputForm.department = this.$store.state.user.office.id
+					this.inputForm.departmentName = this.$store.state.user.office.name
+				}
+				if (this.commonJS.isEmpty(this.inputForm.userId)) {
+					this.inputForm.userId = this.$store.state.user.id
+				}
+				if (this.commonJS.isEmpty(this.inputForm.userName)) {
+					this.inputForm.userName = this.$store.state.user.name
+				}
+				if (this.commonJS.isEmpty(this.inputForm.reimDate)) {
+					this.inputForm.reimDate = new Date()
+				}
+				if (this.commonJS.isEmpty(this.inputForm.invoiceReimbursementFiles)) {
+					this.inputForm.invoiceReimbursementFiles = []
+				}
+				if (this.commonJS.isEmpty(this.inputForm.files)) {
+					this.inputForm.files = []
+				}
+				if (this.commonJS.isEmpty(this.inputForm.reimbursementType)) {
+					this.inputForm.reimbursementType = '0'
+				}
+				this.$refs.invoiceReimbursementUpLoadComponent.newUpload(method, this.inputForm.invoiceReimbursementFiles, 'reimbursement',300,'电子发票附件')
+				this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'reimbursement')
               this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
               if (this.commonJS.isNotEmpty(this.inputForm.purchaseId)) {
                 this.startPur(this.inputForm.purchaseId)

+ 49 - 2
src/views/zs/reimbursement/info/InfoList.vue

@@ -26,8 +26,18 @@
 		<el-form-item v-if="showHideItem" label="报销人" prop="reimBy">
 			<UserSelect :limit='1' :modelValue="searchForm.reimBy" @update:modelValue='(value, label) => {searchForm.reimBy = value}'></UserSelect>
 		</el-form-item>
+		<el-form-item v-if="showHideItem" label="报销项" prop="reimbursementType">
+			<el-select v-model="searchForm.reimbursementType" placeholder="请选择" style="width:100%;" clearable>
+				<el-option
+					v-for="item in $dictUtils.getDictList('reimbursement_type')"
+					:key="item.value"
+					:label="item.label"
+					:value="item.value">
+				</el-option>
+			</el-select>
+		</el-form-item>
 		<el-form-item v-if="showHideItem" label="报销状态" prop="type">
-			<el-select v-model="searchForm.type" placeholder="请选择" style="width:100%;">
+			<el-select v-model="searchForm.type" placeholder="请选择" style="width:100%;" clearable>
 				<el-option
 					v-for="item in $dictUtils.getDictList('status')"
 					:key="item.value"
@@ -98,6 +108,7 @@
         <template #buttons>
           <el-button v-if="hasPermission('zsReimbursement:info:add')" type="primary" icon="el-icon-plus" @click="add()">新建</el-button>
           <el-button v-if="hasPermission('zsReimbursement:info:del')" type="danger" icon="el-icon-delete" @click="del()" :disabled="$refs.infoTable && $refs.infoTable.getCheckboxRecords().length === 0" plain>删除</el-button>
+			<el-button type="warning" icon="el-icon-download" @click="exportInvoiceReimbursementFile()" plain>电子发票报销</el-button>
         </template>
       </vxe-toolbar>
       <div  class="jp-table-body">
@@ -133,6 +144,11 @@
               <span v-else>{{scope.row.no}}</span>
             </template>
           </vxe-column>
+			<vxe-column width="130" title="报销项" field="reimbursementType" align="center">
+				<template #default="scope">
+					{{$dictUtils.getDictLabel('reimbursement_type', scope.row.reimbursementType, '')}}
+				</template>
+			</vxe-column>
           <vxe-column width="130" title="报销类型" field="sourceType" align="center">
             <template #default="scope">
               {{$dictUtils.getDictLabel('cw_reimbursement_source_type', scope.row.sourceType, '')}}
@@ -440,6 +456,12 @@
             this.procDefKey = data.key
           }
         })
+		  processService.getByName('中审-报销审批-电子发票').then((data) => {
+			  if (!this.commonJS.isEmpty(data.id)) {
+				  this.processDefinitionIdInvoice = data.id
+				  this.procDefKeyInvoice = data.key
+			  }
+		  })
       },
       // 删除
       del (id) {
@@ -471,9 +493,16 @@
       // 流程详情
       detail (row) {
         if (!this.commonJS.isEmpty(row.type) && row.type !== '1') {
+			if (row.reimbursementType === '1') {
+				this.procDefId = this.processDefinitionIdInvoice
+			} else if (row.reimbursementType === '0') {
+				{
+					this.procDefId = this.processDefinitionId
+				}
+			}
           taskService.getTaskDef({
             procInsId: row.procInsId,
-            procDefId: row.processDefinitionId
+			  procDefId: this.procDefId
           }).then((data) => {
             this.$router.push({
               path: '/flowable/task/TaskFormDetail',
@@ -535,6 +564,24 @@
         //   }
         // })
       },
+
+		// 下载文档
+		exportInvoiceReimbursementFile () {
+			this.loading = true
+			this.reimbursementService.exportInvoiceReimbursementFile({
+				'itemType': '1',
+				...this.searchForm
+			}).then((res) => {
+				// 将二进制流文件写入excel表,以下为重要步骤
+				this.$utils.downloadExcel(res, '中审-报销电子发票报销列表')
+				this.loading = false
+			}).catch(function (err) {
+				this.loading = false
+				if (err.response) {
+					console.log(err.response)
+				}
+			})
+		},
       // 当前页
       currentChangeHandle ({ currentPage, pageSize }) {
         this.tablePage.currentPage = currentPage

File diff suppressed because it is too large
+ 581 - 133
src/views/zs/reimbursement/info/ReimbursementForm.vue